UNPKG

@strapi/generate-new

Version:

Generate a new Strapi application.

1 lines 3.95 kB
{"version":3,"file":"create-customized-project.mjs","sources":["../src/create-customized-project.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport { merge } from 'lodash';\n\nimport { trackUsage } from './utils/usage';\nimport defaultConfigs from './utils/db-configs';\nimport clientDependencies from './utils/db-client-dependencies';\nimport dbQuestions from './utils/db-questions';\nimport createProject from './create-project';\nimport type { Configuration, Scope } from './types';\n\nconst LANGUAGES = {\n javascript: 'JavaScript',\n typescript: 'TypeScript',\n};\n\nexport default async (scope: Scope) => {\n if (!scope.useTypescript) {\n const language = await askAboutLanguages();\n scope.useTypescript = language === LANGUAGES.typescript;\n }\n\n await trackUsage({ event: 'didChooseCustomDatabase', scope });\n\n const configuration = await askDbInfosAndTest(scope).catch((error) => {\n return trackUsage({ event: 'didNotConnectDatabase', scope, error }).then(() => {\n throw error;\n });\n });\n\n console.log();\n console.log('Creating a project with custom database options.');\n await trackUsage({ event: 'didConnectDatabase', scope });\n return createProject(scope, configuration);\n};\n\nasync function askDbInfosAndTest(scope: Scope) {\n const { client, connection } = await askDatabaseInfos(scope);\n\n return {\n client,\n connection,\n dependencies: {\n ...clientDependencies({ client }),\n ...scope.additionalsDependencies,\n },\n } as Configuration;\n}\n\nasync function askDatabaseInfos(scope: Scope) {\n const { client } = await inquirer.prompt<{ client: 'sqlite' | 'postgres' | 'mysql' }>([\n {\n type: 'list',\n name: 'client',\n message: 'Choose your default database client',\n choices: ['sqlite', 'postgres', 'mysql'],\n default: 'sqlite',\n },\n ]);\n\n const questions = dbQuestions[client].map((q) => q({ scope, client }));\n\n if (!questions) {\n return { client };\n }\n\n const responses = await inquirer.prompt(questions);\n\n const connection = merge({}, defaultConfigs[client] || {}, {\n client,\n connection: responses,\n });\n\n return {\n client,\n connection,\n };\n}\n\nasync function askAboutLanguages() {\n const { language } = await inquirer.prompt([\n {\n type: 'list',\n name: 'language',\n message: 'Choose your preferred language',\n choices: Object.values(LANGUAGES),\n default: LANGUAGES.javascript,\n },\n ]);\n\n return language;\n}\n"],"names":[],"mappings":";;;;;;;AAUA,MAAM,YAAY;AAAA,EAChB,YAAY;AAAA,EACZ,YAAY;AACd;AAEA,MAAe,0BAAA,OAAO,UAAiB;AACjC,MAAA,CAAC,MAAM,eAAe;AAClB,UAAA,WAAW,MAAM;AACjB,UAAA,gBAAgB,aAAa,UAAU;AAAA,EAC/C;AAEA,QAAM,WAAW,EAAE,OAAO,2BAA2B,MAAO,CAAA;AAE5D,QAAM,gBAAgB,MAAM,kBAAkB,KAAK,EAAE,MAAM,CAAC,UAAU;AAC7D,WAAA,WAAW,EAAE,OAAO,yBAAyB,OAAO,MAAO,CAAA,EAAE,KAAK,MAAM;AACvE,YAAA;AAAA,IAAA,CACP;AAAA,EAAA,CACF;AAED,UAAQ,IAAI;AACZ,UAAQ,IAAI,kDAAkD;AAC9D,QAAM,WAAW,EAAE,OAAO,sBAAsB,MAAO,CAAA;AAChD,SAAA,cAAc,OAAO,aAAa;AAC3C;AAEA,eAAe,kBAAkB,OAAc;AAC7C,QAAM,EAAE,QAAQ,WAAA,IAAe,MAAM,iBAAiB,KAAK;AAEpD,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA,cAAc;AAAA,MACZ,GAAG,mBAAmB,EAAE,QAAQ;AAAA,MAChC,GAAG,MAAM;AAAA,IACX;AAAA,EAAA;AAEJ;AAEA,eAAe,iBAAiB,OAAc;AAC5C,QAAM,EAAE,OAAA,IAAW,MAAM,SAAS,OAAoD;AAAA,IACpF;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,CAAC,UAAU,YAAY,OAAO;AAAA,MACvC,SAAS;AAAA,IACX;AAAA,EAAA,CACD;AAED,QAAM,YAAY,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,OAAO,CAAC,CAAC;AAErE,MAAI,CAAC,WAAW;AACd,WAAO,EAAE,OAAO;AAAA,EAClB;AAEA,QAAM,YAAY,MAAM,SAAS,OAAO,SAAS;AAE3C,QAAA,aAAa,MAAM,CAAA,GAAI,eAAe,MAAM,KAAK,IAAI;AAAA,IACzD;AAAA,IACA,YAAY;AAAA,EAAA,CACb;AAEM,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAe,oBAAoB;AACjC,QAAM,EAAE,SAAA,IAAa,MAAM,SAAS,OAAO;AAAA,IACzC;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,OAAO,OAAO,SAAS;AAAA,MAChC,SAAS,UAAU;AAAA,IACrB;AAAA,EAAA,CACD;AAEM,SAAA;AACT;"}