{"version":3,"file":"get-destination-prompts.mjs","sources":["../../../src/plops/prompts/get-destination-prompts.ts"],"sourcesContent":["import { join } from 'path';\nimport fs from 'fs-extra';\n\nexport default (action: string, basePath: string, { rootFolder = false } = {}) => {\n  return [\n    {\n      type: 'list',\n      name: 'destination',\n      message: `Where do you want to add this ${action}?`,\n      choices: [\n        ...(rootFolder\n          ? [\n              {\n                name: `Add ${action} to root of project`,\n                value: 'root',\n              },\n            ]\n          : [\n              {\n                name: `Add ${action} to new API`,\n                value: 'new',\n              },\n            ]),\n        { name: `Add ${action} to an existing API`, value: 'api' },\n        { name: `Add ${action} to an existing plugin`, value: 'plugin' },\n      ],\n    },\n    {\n      when: (answers: any) => answers.destination === 'api',\n      type: 'list',\n      message: 'Which API is this for?',\n      name: 'api',\n      async choices() {\n        const apiPath = join(basePath, 'api');\n        const exists = await fs.pathExists(apiPath);\n\n        if (!exists) {\n          throw Error('Couldn\\'t find an \"api\" directory');\n        }\n\n        const apiDir = await fs.readdir(apiPath, { withFileTypes: true });\n        const apiDirContent = apiDir.filter((fd) => fd.isDirectory());\n\n        if (apiDirContent.length === 0) {\n          throw Error('The \"api\" directory is empty');\n        }\n\n        return apiDirContent;\n      },\n    },\n    {\n      when: (answers: any) => answers.destination === 'plugin',\n      type: 'list',\n      message: 'Which plugin is this for?',\n      name: 'plugin',\n      async choices() {\n        const pluginsPath = join(basePath, 'plugins');\n        const exists = await fs.pathExists(pluginsPath);\n\n        if (!exists) {\n          throw Error('Couldn\\'t find a \"plugins\" directory');\n        }\n\n        const pluginsDir = await fs.readdir(pluginsPath);\n        const pluginsDirContent = pluginsDir.filter((api) =>\n          fs.lstatSync(join(pluginsPath, api)).isDirectory()\n        );\n\n        if (pluginsDirContent.length === 0) {\n          throw Error('The \"plugins\" directory is empty');\n        }\n\n        return pluginsDirContent;\n      },\n    },\n  ];\n};\n"],"names":["action","basePath","rootFolder","type","name","message","choices","value","when","answers","destination","apiPath","join","exists","fs","pathExists","Error","apiDir","readdir","withFileTypes","apiDirContent","filter","fd","isDirectory","length","pluginsPath","pluginsDir","pluginsDirContent","api","lstatSync"],"mappings":"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"}