create-strapi-app 5.30.0 → 5.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/create-strapi.js.map +1 -1
- package/dist/create-strapi.mjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/utils/check-install-path.js.map +1 -1
- package/dist/utils/check-install-path.mjs.map +1 -1
- package/dist/utils/check-requirements.js.map +1 -1
- package/dist/utils/check-requirements.mjs.map +1 -1
- package/dist/utils/database.js +1 -1
- package/dist/utils/database.js.map +1 -1
- package/dist/utils/database.mjs +1 -1
- package/dist/utils/database.mjs.map +1 -1
- package/dist/utils/engines.js +1 -1
- package/dist/utils/engines.js.map +1 -1
- package/dist/utils/engines.mjs +1 -1
- package/dist/utils/engines.mjs.map +1 -1
- package/dist/utils/get-package-manager-args.js.map +1 -1
- package/dist/utils/get-package-manager-args.mjs.map +1 -1
- package/dist/utils/install-id.js.map +1 -1
- package/dist/utils/install-id.mjs.map +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/logger.mjs.map +1 -1
- package/dist/utils/template.js.map +1 -1
- package/dist/utils/template.mjs.map +1 -1
- package/dist/utils/usage.js.map +1 -1
- package/dist/utils/usage.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-strapi.js","sources":["../src/create-strapi.ts"],"sourcesContent":["import { join } from 'node:path';\n\nimport chalk from 'chalk';\nimport execa from 'execa';\nimport fse from 'fs-extra';\n\nimport { createGrowthSsoTrial } from '@strapi/cloud-cli';\n\nimport { copyTemplate } from './utils/template';\nimport { tryGitInit } from './utils/git';\nimport { trackUsage } from './utils/usage';\nimport { createPackageJSON } from './utils/package-json';\nimport { generateDotEnv } from './utils/dot-env';\nimport { isStderrError } from './types';\n\nimport type { Scope } from './types';\nimport { logger } from './utils/logger';\nimport { gitIgnore } from './utils/gitignore';\nimport { getInstallArgs } from './utils/get-package-manager-args';\n\nasync function createStrapi(scope: Scope) {\n const { rootPath } = scope;\n try {\n await fse.ensureDir(rootPath);\n await createApp(scope);\n } catch (error) {\n await fse.remove(rootPath);\n\n throw error;\n }\n}\n\nasync function createApp(scope: Scope) {\n const {\n rootPath,\n useTypescript,\n useExample,\n installDependencies,\n isQuickstart,\n template,\n packageManager,\n gitInit,\n runApp,\n isABTestEnabled,\n } = scope;\n\n const shouldRunSeed = useExample && installDependencies;\n\n await trackUsage({ event: 'willCreateProject', scope });\n\n logger.title('Strapi', `Creating a new application at ${chalk.green(rootPath)}`);\n\n if (!isQuickstart) {\n await trackUsage({ event: 'didChooseCustomDatabase', scope });\n } else {\n await trackUsage({ event: 'didChooseQuickstart', scope });\n }\n\n if (!template) {\n let templateName = useExample ? 'example' : 'vanilla';\n\n if (!useTypescript) {\n templateName = `${templateName}-js`;\n }\n\n const internalTemplatePath = join(__dirname, '../templates', templateName);\n if (await fse.exists(internalTemplatePath)) {\n await fse.copy(internalTemplatePath, rootPath);\n }\n } else {\n try {\n logger.info(`${chalk.cyan('Installing template')} ${template}`);\n\n await copyTemplate(scope, rootPath);\n\n logger.success('Template copied successfully.');\n } catch (error) {\n if (error instanceof Error) {\n logger.fatal(`Template installation failed: ${error.message}`);\n }\n\n throw error;\n }\n\n if (!fse.existsSync(join(rootPath, 'package.json'))) {\n logger.fatal(`Missing ${chalk.bold('package.json')} in template`);\n }\n }\n\n await trackUsage({ event: 'didCopyProjectFiles', scope });\n\n try {\n await createPackageJSON(scope);\n\n await trackUsage({ event: 'didWritePackageJSON', scope });\n\n // ensure node_modules is created\n await fse.ensureDir(join(rootPath, 'node_modules'));\n\n // create config/database\n await fse.writeFile(join(rootPath, '.env'), generateDotEnv(scope));\n\n await trackUsage({ event: 'didCopyConfigurationFiles', scope });\n } catch (err) {\n await fse.remove(rootPath);\n throw err;\n }\n\n // Create and save a growth sso trial license\n if (scope.shouldCreateGrowthSsoTrial) {\n try {\n const data = await createGrowthSsoTrial({ strapiVersion: scope.strapiVersion });\n\n if (data?.license) {\n fse.writeFile(join(rootPath, 'license.txt'), data.license);\n logger.log('Your 30 days trial will be applied automatically to your project. Enjoy!');\n }\n } catch (error) {\n logger.error('Error while trying to create your trial. Please try again later.');\n }\n }\n\n if (installDependencies) {\n try {\n logger.title('deps', `Installing dependencies with ${chalk.cyan(packageManager)}`);\n\n await trackUsage({ event: 'willInstallProjectDependencies', scope });\n\n await runInstall(scope);\n\n await trackUsage({ event: 'didInstallProjectDependencies', scope });\n\n logger.success(`Dependencies installed`);\n } catch (error) {\n const stderr = isStderrError(error) ? error.stderr : '';\n\n await trackUsage({\n event: 'didNotInstallProjectDependencies',\n scope,\n error: stderr.slice(-1024),\n });\n\n logger.fatal([\n chalk.bold(\n 'Oh, it seems that you encountered an error while installing dependencies in your project'\n ),\n '',\n `Don't give up, your project was created correctly`,\n '',\n `Fix the issues mentioned in the installation errors and try to run the following command:`,\n '',\n `cd ${chalk.green(rootPath)} && ${chalk.cyan(packageManager)} install`,\n ]);\n }\n }\n\n await trackUsage({ event: 'didCreateProject', scope });\n\n // make sure a gitignore file is created regardless of the user using git or not\n if (!(await fse.exists(join(rootPath, '.gitignore')))) {\n await fse.writeFile(join(rootPath, '.gitignore'), gitIgnore);\n }\n\n // Init git\n if (gitInit) {\n logger.title('git', 'Initializing git repository.');\n\n await tryGitInit(rootPath);\n\n logger.success('Initialized a git repository.');\n }\n\n if (shouldRunSeed) {\n if (await fse.exists(join(rootPath, 'scripts/seed.js'))) {\n logger.title('Seed', 'Seeding your database with sample data');\n\n try {\n await execa(packageManager, ['run', 'seed:example'], {\n stdio: 'inherit',\n cwd: rootPath,\n });\n logger.success('Sample data added to your database');\n } catch (error) {\n logger.error('Failed to seed your database. Skipping');\n }\n }\n }\n\n const cmd = chalk.cyan(`${packageManager} run`);\n\n logger.title('Strapi', `Your application was created!`);\n\n logger.log([\n 'Available commands in your project:',\n '',\n 'Start Strapi in watch mode. (Changes in Strapi project files will trigger a server restart)',\n `${cmd} develop`,\n '',\n 'Start Strapi without watch mode.',\n `${cmd} start`,\n '',\n 'Build Strapi admin panel.',\n `${cmd} build`,\n '',\n 'Deploy Strapi project.',\n `${cmd} deploy`,\n '',\n ]);\n\n if (useExample) {\n logger.log(['Seed your database with sample data.', `${cmd} seed:example`, '']);\n }\n\n logger.log(['Display all available commands.', `${cmd} strapi\\n`]);\n\n if (installDependencies) {\n logger.log([\n 'To get started run',\n '',\n `${chalk.cyan('cd')} ${rootPath}`,\n !shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`,\n ]);\n } else {\n logger.log([\n 'To get started run',\n '',\n `${chalk.cyan('cd')} ${rootPath}`,\n `${chalk.cyan(packageManager)} install`,\n !shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`,\n ]);\n }\n\n if (runApp && installDependencies) {\n logger.title('Run', 'Running your Strapi application');\n\n try {\n await trackUsage({ event: 'willStartServer', scope });\n\n await execa(packageManager, ['run', 'develop'], {\n stdio: 'inherit',\n cwd: rootPath,\n env: {\n FORCE_COLOR: '1',\n },\n });\n } catch (error) {\n if (typeof error === 'string' || error instanceof Error) {\n await trackUsage({\n event: 'didNotStartServer',\n scope,\n error,\n });\n }\n\n logger.fatal('Failed to start your Strapi application');\n }\n }\n\n if (isABTestEnabled) {\n await trackUsage({ event: 'didEnableABTest', scope });\n }\n}\n\nasync function runInstall({ rootPath, packageManager }: Scope) {\n // include same cwd and env to ensure version check returns same version we use below\n const { envArgs, cmdArgs } = await getInstallArgs(packageManager, {\n cwd: rootPath,\n env: {\n ...process.env,\n NODE_ENV: 'development',\n },\n });\n\n const options: execa.Options = {\n cwd: rootPath,\n stdio: 'inherit',\n env: {\n ...process.env,\n ...envArgs,\n NODE_ENV: 'development',\n },\n };\n\n const proc = execa(packageManager, cmdArgs, options);\n\n return proc;\n}\n\nexport { createStrapi };\n"],"names":["createStrapi","scope","rootPath","fse","ensureDir","createApp","error","remove","useTypescript","useExample","installDependencies","isQuickstart","template","packageManager","gitInit","runApp","isABTestEnabled","shouldRunSeed","trackUsage","event","logger","title","chalk","green","templateName","internalTemplatePath","join","__dirname","exists","copy","info","cyan","copyTemplate","success","Error","fatal","message","existsSync","bold","createPackageJSON","writeFile","generateDotEnv","err","shouldCreateGrowthSsoTrial","data","createGrowthSsoTrial","strapiVersion","license","log","runInstall","stderr","isStderrError","slice","gitIgnore","tryGitInit","execa","stdio","cwd","cmd","env","FORCE_COLOR","envArgs","cmdArgs","getInstallArgs","process","NODE_ENV","options","proc"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create-strapi.js","sources":["../src/create-strapi.ts"],"sourcesContent":["import { join } from 'node:path';\n\nimport chalk from 'chalk';\nimport execa from 'execa';\nimport fse from 'fs-extra';\n\nimport { createGrowthSsoTrial } from '@strapi/cloud-cli';\n\nimport { copyTemplate } from './utils/template';\nimport { tryGitInit } from './utils/git';\nimport { trackUsage } from './utils/usage';\nimport { createPackageJSON } from './utils/package-json';\nimport { generateDotEnv } from './utils/dot-env';\nimport { isStderrError } from './types';\n\nimport type { Scope } from './types';\nimport { logger } from './utils/logger';\nimport { gitIgnore } from './utils/gitignore';\nimport { getInstallArgs } from './utils/get-package-manager-args';\n\nasync function createStrapi(scope: Scope) {\n const { rootPath } = scope;\n try {\n await fse.ensureDir(rootPath);\n await createApp(scope);\n } catch (error) {\n await fse.remove(rootPath);\n\n throw error;\n }\n}\n\nasync function createApp(scope: Scope) {\n const {\n rootPath,\n useTypescript,\n useExample,\n installDependencies,\n isQuickstart,\n template,\n packageManager,\n gitInit,\n runApp,\n isABTestEnabled,\n } = scope;\n\n const shouldRunSeed = useExample && installDependencies;\n\n await trackUsage({ event: 'willCreateProject', scope });\n\n logger.title('Strapi', `Creating a new application at ${chalk.green(rootPath)}`);\n\n if (!isQuickstart) {\n await trackUsage({ event: 'didChooseCustomDatabase', scope });\n } else {\n await trackUsage({ event: 'didChooseQuickstart', scope });\n }\n\n if (!template) {\n let templateName = useExample ? 'example' : 'vanilla';\n\n if (!useTypescript) {\n templateName = `${templateName}-js`;\n }\n\n const internalTemplatePath = join(__dirname, '../templates', templateName);\n if (await fse.exists(internalTemplatePath)) {\n await fse.copy(internalTemplatePath, rootPath);\n }\n } else {\n try {\n logger.info(`${chalk.cyan('Installing template')} ${template}`);\n\n await copyTemplate(scope, rootPath);\n\n logger.success('Template copied successfully.');\n } catch (error) {\n if (error instanceof Error) {\n logger.fatal(`Template installation failed: ${error.message}`);\n }\n\n throw error;\n }\n\n if (!fse.existsSync(join(rootPath, 'package.json'))) {\n logger.fatal(`Missing ${chalk.bold('package.json')} in template`);\n }\n }\n\n await trackUsage({ event: 'didCopyProjectFiles', scope });\n\n try {\n await createPackageJSON(scope);\n\n await trackUsage({ event: 'didWritePackageJSON', scope });\n\n // ensure node_modules is created\n await fse.ensureDir(join(rootPath, 'node_modules'));\n\n // create config/database\n await fse.writeFile(join(rootPath, '.env'), generateDotEnv(scope));\n\n await trackUsage({ event: 'didCopyConfigurationFiles', scope });\n } catch (err) {\n await fse.remove(rootPath);\n throw err;\n }\n\n // Create and save a growth sso trial license\n if (scope.shouldCreateGrowthSsoTrial) {\n try {\n const data = await createGrowthSsoTrial({ strapiVersion: scope.strapiVersion });\n\n if (data?.license) {\n fse.writeFile(join(rootPath, 'license.txt'), data.license);\n logger.log('Your 30 days trial will be applied automatically to your project. Enjoy!');\n }\n } catch (error) {\n logger.error('Error while trying to create your trial. Please try again later.');\n }\n }\n\n if (installDependencies) {\n try {\n logger.title('deps', `Installing dependencies with ${chalk.cyan(packageManager)}`);\n\n await trackUsage({ event: 'willInstallProjectDependencies', scope });\n\n await runInstall(scope);\n\n await trackUsage({ event: 'didInstallProjectDependencies', scope });\n\n logger.success(`Dependencies installed`);\n } catch (error) {\n const stderr = isStderrError(error) ? error.stderr : '';\n\n await trackUsage({\n event: 'didNotInstallProjectDependencies',\n scope,\n error: stderr.slice(-1024),\n });\n\n logger.fatal([\n chalk.bold(\n 'Oh, it seems that you encountered an error while installing dependencies in your project'\n ),\n '',\n `Don't give up, your project was created correctly`,\n '',\n `Fix the issues mentioned in the installation errors and try to run the following command:`,\n '',\n `cd ${chalk.green(rootPath)} && ${chalk.cyan(packageManager)} install`,\n ]);\n }\n }\n\n await trackUsage({ event: 'didCreateProject', scope });\n\n // make sure a gitignore file is created regardless of the user using git or not\n if (!(await fse.exists(join(rootPath, '.gitignore')))) {\n await fse.writeFile(join(rootPath, '.gitignore'), gitIgnore);\n }\n\n // Init git\n if (gitInit) {\n logger.title('git', 'Initializing git repository.');\n\n await tryGitInit(rootPath);\n\n logger.success('Initialized a git repository.');\n }\n\n if (shouldRunSeed) {\n if (await fse.exists(join(rootPath, 'scripts/seed.js'))) {\n logger.title('Seed', 'Seeding your database with sample data');\n\n try {\n await execa(packageManager, ['run', 'seed:example'], {\n stdio: 'inherit',\n cwd: rootPath,\n });\n logger.success('Sample data added to your database');\n } catch (error) {\n logger.error('Failed to seed your database. Skipping');\n }\n }\n }\n\n const cmd = chalk.cyan(`${packageManager} run`);\n\n logger.title('Strapi', `Your application was created!`);\n\n logger.log([\n 'Available commands in your project:',\n '',\n 'Start Strapi in watch mode. (Changes in Strapi project files will trigger a server restart)',\n `${cmd} develop`,\n '',\n 'Start Strapi without watch mode.',\n `${cmd} start`,\n '',\n 'Build Strapi admin panel.',\n `${cmd} build`,\n '',\n 'Deploy Strapi project.',\n `${cmd} deploy`,\n '',\n ]);\n\n if (useExample) {\n logger.log(['Seed your database with sample data.', `${cmd} seed:example`, '']);\n }\n\n logger.log(['Display all available commands.', `${cmd} strapi\\n`]);\n\n if (installDependencies) {\n logger.log([\n 'To get started run',\n '',\n `${chalk.cyan('cd')} ${rootPath}`,\n !shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`,\n ]);\n } else {\n logger.log([\n 'To get started run',\n '',\n `${chalk.cyan('cd')} ${rootPath}`,\n `${chalk.cyan(packageManager)} install`,\n !shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`,\n ]);\n }\n\n if (runApp && installDependencies) {\n logger.title('Run', 'Running your Strapi application');\n\n try {\n await trackUsage({ event: 'willStartServer', scope });\n\n await execa(packageManager, ['run', 'develop'], {\n stdio: 'inherit',\n cwd: rootPath,\n env: {\n FORCE_COLOR: '1',\n },\n });\n } catch (error) {\n if (typeof error === 'string' || error instanceof Error) {\n await trackUsage({\n event: 'didNotStartServer',\n scope,\n error,\n });\n }\n\n logger.fatal('Failed to start your Strapi application');\n }\n }\n\n if (isABTestEnabled) {\n await trackUsage({ event: 'didEnableABTest', scope });\n }\n}\n\nasync function runInstall({ rootPath, packageManager }: Scope) {\n // include same cwd and env to ensure version check returns same version we use below\n const { envArgs, cmdArgs } = await getInstallArgs(packageManager, {\n cwd: rootPath,\n env: {\n ...process.env,\n NODE_ENV: 'development',\n },\n });\n\n const options: execa.Options = {\n cwd: rootPath,\n stdio: 'inherit',\n env: {\n ...process.env,\n ...envArgs,\n NODE_ENV: 'development',\n },\n };\n\n const proc = execa(packageManager, cmdArgs, options);\n\n return proc;\n}\n\nexport { createStrapi };\n"],"names":["createStrapi","scope","rootPath","fse","ensureDir","createApp","error","remove","useTypescript","useExample","installDependencies","isQuickstart","template","packageManager","gitInit","runApp","isABTestEnabled","shouldRunSeed","trackUsage","event","logger","title","chalk","green","templateName","internalTemplatePath","join","__dirname","exists","copy","info","cyan","copyTemplate","success","Error","fatal","message","existsSync","bold","createPackageJSON","writeFile","generateDotEnv","err","shouldCreateGrowthSsoTrial","data","createGrowthSsoTrial","strapiVersion","license","log","runInstall","stderr","isStderrError","slice","gitIgnore","tryGitInit","execa","stdio","cwd","cmd","env","FORCE_COLOR","envArgs","cmdArgs","getInstallArgs","process","NODE_ENV","options","proc"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-strapi.mjs","sources":["../src/create-strapi.ts"],"sourcesContent":["import { join } from 'node:path';\n\nimport chalk from 'chalk';\nimport execa from 'execa';\nimport fse from 'fs-extra';\n\nimport { createGrowthSsoTrial } from '@strapi/cloud-cli';\n\nimport { copyTemplate } from './utils/template';\nimport { tryGitInit } from './utils/git';\nimport { trackUsage } from './utils/usage';\nimport { createPackageJSON } from './utils/package-json';\nimport { generateDotEnv } from './utils/dot-env';\nimport { isStderrError } from './types';\n\nimport type { Scope } from './types';\nimport { logger } from './utils/logger';\nimport { gitIgnore } from './utils/gitignore';\nimport { getInstallArgs } from './utils/get-package-manager-args';\n\nasync function createStrapi(scope: Scope) {\n const { rootPath } = scope;\n try {\n await fse.ensureDir(rootPath);\n await createApp(scope);\n } catch (error) {\n await fse.remove(rootPath);\n\n throw error;\n }\n}\n\nasync function createApp(scope: Scope) {\n const {\n rootPath,\n useTypescript,\n useExample,\n installDependencies,\n isQuickstart,\n template,\n packageManager,\n gitInit,\n runApp,\n isABTestEnabled,\n } = scope;\n\n const shouldRunSeed = useExample && installDependencies;\n\n await trackUsage({ event: 'willCreateProject', scope });\n\n logger.title('Strapi', `Creating a new application at ${chalk.green(rootPath)}`);\n\n if (!isQuickstart) {\n await trackUsage({ event: 'didChooseCustomDatabase', scope });\n } else {\n await trackUsage({ event: 'didChooseQuickstart', scope });\n }\n\n if (!template) {\n let templateName = useExample ? 'example' : 'vanilla';\n\n if (!useTypescript) {\n templateName = `${templateName}-js`;\n }\n\n const internalTemplatePath = join(__dirname, '../templates', templateName);\n if (await fse.exists(internalTemplatePath)) {\n await fse.copy(internalTemplatePath, rootPath);\n }\n } else {\n try {\n logger.info(`${chalk.cyan('Installing template')} ${template}`);\n\n await copyTemplate(scope, rootPath);\n\n logger.success('Template copied successfully.');\n } catch (error) {\n if (error instanceof Error) {\n logger.fatal(`Template installation failed: ${error.message}`);\n }\n\n throw error;\n }\n\n if (!fse.existsSync(join(rootPath, 'package.json'))) {\n logger.fatal(`Missing ${chalk.bold('package.json')} in template`);\n }\n }\n\n await trackUsage({ event: 'didCopyProjectFiles', scope });\n\n try {\n await createPackageJSON(scope);\n\n await trackUsage({ event: 'didWritePackageJSON', scope });\n\n // ensure node_modules is created\n await fse.ensureDir(join(rootPath, 'node_modules'));\n\n // create config/database\n await fse.writeFile(join(rootPath, '.env'), generateDotEnv(scope));\n\n await trackUsage({ event: 'didCopyConfigurationFiles', scope });\n } catch (err) {\n await fse.remove(rootPath);\n throw err;\n }\n\n // Create and save a growth sso trial license\n if (scope.shouldCreateGrowthSsoTrial) {\n try {\n const data = await createGrowthSsoTrial({ strapiVersion: scope.strapiVersion });\n\n if (data?.license) {\n fse.writeFile(join(rootPath, 'license.txt'), data.license);\n logger.log('Your 30 days trial will be applied automatically to your project. Enjoy!');\n }\n } catch (error) {\n logger.error('Error while trying to create your trial. Please try again later.');\n }\n }\n\n if (installDependencies) {\n try {\n logger.title('deps', `Installing dependencies with ${chalk.cyan(packageManager)}`);\n\n await trackUsage({ event: 'willInstallProjectDependencies', scope });\n\n await runInstall(scope);\n\n await trackUsage({ event: 'didInstallProjectDependencies', scope });\n\n logger.success(`Dependencies installed`);\n } catch (error) {\n const stderr = isStderrError(error) ? error.stderr : '';\n\n await trackUsage({\n event: 'didNotInstallProjectDependencies',\n scope,\n error: stderr.slice(-1024),\n });\n\n logger.fatal([\n chalk.bold(\n 'Oh, it seems that you encountered an error while installing dependencies in your project'\n ),\n '',\n `Don't give up, your project was created correctly`,\n '',\n `Fix the issues mentioned in the installation errors and try to run the following command:`,\n '',\n `cd ${chalk.green(rootPath)} && ${chalk.cyan(packageManager)} install`,\n ]);\n }\n }\n\n await trackUsage({ event: 'didCreateProject', scope });\n\n // make sure a gitignore file is created regardless of the user using git or not\n if (!(await fse.exists(join(rootPath, '.gitignore')))) {\n await fse.writeFile(join(rootPath, '.gitignore'), gitIgnore);\n }\n\n // Init git\n if (gitInit) {\n logger.title('git', 'Initializing git repository.');\n\n await tryGitInit(rootPath);\n\n logger.success('Initialized a git repository.');\n }\n\n if (shouldRunSeed) {\n if (await fse.exists(join(rootPath, 'scripts/seed.js'))) {\n logger.title('Seed', 'Seeding your database with sample data');\n\n try {\n await execa(packageManager, ['run', 'seed:example'], {\n stdio: 'inherit',\n cwd: rootPath,\n });\n logger.success('Sample data added to your database');\n } catch (error) {\n logger.error('Failed to seed your database. Skipping');\n }\n }\n }\n\n const cmd = chalk.cyan(`${packageManager} run`);\n\n logger.title('Strapi', `Your application was created!`);\n\n logger.log([\n 'Available commands in your project:',\n '',\n 'Start Strapi in watch mode. (Changes in Strapi project files will trigger a server restart)',\n `${cmd} develop`,\n '',\n 'Start Strapi without watch mode.',\n `${cmd} start`,\n '',\n 'Build Strapi admin panel.',\n `${cmd} build`,\n '',\n 'Deploy Strapi project.',\n `${cmd} deploy`,\n '',\n ]);\n\n if (useExample) {\n logger.log(['Seed your database with sample data.', `${cmd} seed:example`, '']);\n }\n\n logger.log(['Display all available commands.', `${cmd} strapi\\n`]);\n\n if (installDependencies) {\n logger.log([\n 'To get started run',\n '',\n `${chalk.cyan('cd')} ${rootPath}`,\n !shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`,\n ]);\n } else {\n logger.log([\n 'To get started run',\n '',\n `${chalk.cyan('cd')} ${rootPath}`,\n `${chalk.cyan(packageManager)} install`,\n !shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`,\n ]);\n }\n\n if (runApp && installDependencies) {\n logger.title('Run', 'Running your Strapi application');\n\n try {\n await trackUsage({ event: 'willStartServer', scope });\n\n await execa(packageManager, ['run', 'develop'], {\n stdio: 'inherit',\n cwd: rootPath,\n env: {\n FORCE_COLOR: '1',\n },\n });\n } catch (error) {\n if (typeof error === 'string' || error instanceof Error) {\n await trackUsage({\n event: 'didNotStartServer',\n scope,\n error,\n });\n }\n\n logger.fatal('Failed to start your Strapi application');\n }\n }\n\n if (isABTestEnabled) {\n await trackUsage({ event: 'didEnableABTest', scope });\n }\n}\n\nasync function runInstall({ rootPath, packageManager }: Scope) {\n // include same cwd and env to ensure version check returns same version we use below\n const { envArgs, cmdArgs } = await getInstallArgs(packageManager, {\n cwd: rootPath,\n env: {\n ...process.env,\n NODE_ENV: 'development',\n },\n });\n\n const options: execa.Options = {\n cwd: rootPath,\n stdio: 'inherit',\n env: {\n ...process.env,\n ...envArgs,\n NODE_ENV: 'development',\n },\n };\n\n const proc = execa(packageManager, cmdArgs, options);\n\n return proc;\n}\n\nexport { createStrapi };\n"],"names":["createStrapi","scope","rootPath","fse","ensureDir","createApp","error","remove","useTypescript","useExample","installDependencies","isQuickstart","template","packageManager","gitInit","runApp","isABTestEnabled","shouldRunSeed","trackUsage","event","logger","title","chalk","green","templateName","internalTemplatePath","join","__dirname","exists","copy","info","cyan","copyTemplate","success","Error","fatal","message","existsSync","bold","createPackageJSON","writeFile","generateDotEnv","err","shouldCreateGrowthSsoTrial","data","createGrowthSsoTrial","strapiVersion","license","log","runInstall","stderr","isStderrError","slice","gitIgnore","tryGitInit","execa","stdio","cwd","cmd","env","FORCE_COLOR","envArgs","cmdArgs","getInstallArgs","process","NODE_ENV","options","proc"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create-strapi.mjs","sources":["../src/create-strapi.ts"],"sourcesContent":["import { join } from 'node:path';\n\nimport chalk from 'chalk';\nimport execa from 'execa';\nimport fse from 'fs-extra';\n\nimport { createGrowthSsoTrial } from '@strapi/cloud-cli';\n\nimport { copyTemplate } from './utils/template';\nimport { tryGitInit } from './utils/git';\nimport { trackUsage } from './utils/usage';\nimport { createPackageJSON } from './utils/package-json';\nimport { generateDotEnv } from './utils/dot-env';\nimport { isStderrError } from './types';\n\nimport type { Scope } from './types';\nimport { logger } from './utils/logger';\nimport { gitIgnore } from './utils/gitignore';\nimport { getInstallArgs } from './utils/get-package-manager-args';\n\nasync function createStrapi(scope: Scope) {\n const { rootPath } = scope;\n try {\n await fse.ensureDir(rootPath);\n await createApp(scope);\n } catch (error) {\n await fse.remove(rootPath);\n\n throw error;\n }\n}\n\nasync function createApp(scope: Scope) {\n const {\n rootPath,\n useTypescript,\n useExample,\n installDependencies,\n isQuickstart,\n template,\n packageManager,\n gitInit,\n runApp,\n isABTestEnabled,\n } = scope;\n\n const shouldRunSeed = useExample && installDependencies;\n\n await trackUsage({ event: 'willCreateProject', scope });\n\n logger.title('Strapi', `Creating a new application at ${chalk.green(rootPath)}`);\n\n if (!isQuickstart) {\n await trackUsage({ event: 'didChooseCustomDatabase', scope });\n } else {\n await trackUsage({ event: 'didChooseQuickstart', scope });\n }\n\n if (!template) {\n let templateName = useExample ? 'example' : 'vanilla';\n\n if (!useTypescript) {\n templateName = `${templateName}-js`;\n }\n\n const internalTemplatePath = join(__dirname, '../templates', templateName);\n if (await fse.exists(internalTemplatePath)) {\n await fse.copy(internalTemplatePath, rootPath);\n }\n } else {\n try {\n logger.info(`${chalk.cyan('Installing template')} ${template}`);\n\n await copyTemplate(scope, rootPath);\n\n logger.success('Template copied successfully.');\n } catch (error) {\n if (error instanceof Error) {\n logger.fatal(`Template installation failed: ${error.message}`);\n }\n\n throw error;\n }\n\n if (!fse.existsSync(join(rootPath, 'package.json'))) {\n logger.fatal(`Missing ${chalk.bold('package.json')} in template`);\n }\n }\n\n await trackUsage({ event: 'didCopyProjectFiles', scope });\n\n try {\n await createPackageJSON(scope);\n\n await trackUsage({ event: 'didWritePackageJSON', scope });\n\n // ensure node_modules is created\n await fse.ensureDir(join(rootPath, 'node_modules'));\n\n // create config/database\n await fse.writeFile(join(rootPath, '.env'), generateDotEnv(scope));\n\n await trackUsage({ event: 'didCopyConfigurationFiles', scope });\n } catch (err) {\n await fse.remove(rootPath);\n throw err;\n }\n\n // Create and save a growth sso trial license\n if (scope.shouldCreateGrowthSsoTrial) {\n try {\n const data = await createGrowthSsoTrial({ strapiVersion: scope.strapiVersion });\n\n if (data?.license) {\n fse.writeFile(join(rootPath, 'license.txt'), data.license);\n logger.log('Your 30 days trial will be applied automatically to your project. Enjoy!');\n }\n } catch (error) {\n logger.error('Error while trying to create your trial. Please try again later.');\n }\n }\n\n if (installDependencies) {\n try {\n logger.title('deps', `Installing dependencies with ${chalk.cyan(packageManager)}`);\n\n await trackUsage({ event: 'willInstallProjectDependencies', scope });\n\n await runInstall(scope);\n\n await trackUsage({ event: 'didInstallProjectDependencies', scope });\n\n logger.success(`Dependencies installed`);\n } catch (error) {\n const stderr = isStderrError(error) ? error.stderr : '';\n\n await trackUsage({\n event: 'didNotInstallProjectDependencies',\n scope,\n error: stderr.slice(-1024),\n });\n\n logger.fatal([\n chalk.bold(\n 'Oh, it seems that you encountered an error while installing dependencies in your project'\n ),\n '',\n `Don't give up, your project was created correctly`,\n '',\n `Fix the issues mentioned in the installation errors and try to run the following command:`,\n '',\n `cd ${chalk.green(rootPath)} && ${chalk.cyan(packageManager)} install`,\n ]);\n }\n }\n\n await trackUsage({ event: 'didCreateProject', scope });\n\n // make sure a gitignore file is created regardless of the user using git or not\n if (!(await fse.exists(join(rootPath, '.gitignore')))) {\n await fse.writeFile(join(rootPath, '.gitignore'), gitIgnore);\n }\n\n // Init git\n if (gitInit) {\n logger.title('git', 'Initializing git repository.');\n\n await tryGitInit(rootPath);\n\n logger.success('Initialized a git repository.');\n }\n\n if (shouldRunSeed) {\n if (await fse.exists(join(rootPath, 'scripts/seed.js'))) {\n logger.title('Seed', 'Seeding your database with sample data');\n\n try {\n await execa(packageManager, ['run', 'seed:example'], {\n stdio: 'inherit',\n cwd: rootPath,\n });\n logger.success('Sample data added to your database');\n } catch (error) {\n logger.error('Failed to seed your database. Skipping');\n }\n }\n }\n\n const cmd = chalk.cyan(`${packageManager} run`);\n\n logger.title('Strapi', `Your application was created!`);\n\n logger.log([\n 'Available commands in your project:',\n '',\n 'Start Strapi in watch mode. (Changes in Strapi project files will trigger a server restart)',\n `${cmd} develop`,\n '',\n 'Start Strapi without watch mode.',\n `${cmd} start`,\n '',\n 'Build Strapi admin panel.',\n `${cmd} build`,\n '',\n 'Deploy Strapi project.',\n `${cmd} deploy`,\n '',\n ]);\n\n if (useExample) {\n logger.log(['Seed your database with sample data.', `${cmd} seed:example`, '']);\n }\n\n logger.log(['Display all available commands.', `${cmd} strapi\\n`]);\n\n if (installDependencies) {\n logger.log([\n 'To get started run',\n '',\n `${chalk.cyan('cd')} ${rootPath}`,\n !shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`,\n ]);\n } else {\n logger.log([\n 'To get started run',\n '',\n `${chalk.cyan('cd')} ${rootPath}`,\n `${chalk.cyan(packageManager)} install`,\n !shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`,\n ]);\n }\n\n if (runApp && installDependencies) {\n logger.title('Run', 'Running your Strapi application');\n\n try {\n await trackUsage({ event: 'willStartServer', scope });\n\n await execa(packageManager, ['run', 'develop'], {\n stdio: 'inherit',\n cwd: rootPath,\n env: {\n FORCE_COLOR: '1',\n },\n });\n } catch (error) {\n if (typeof error === 'string' || error instanceof Error) {\n await trackUsage({\n event: 'didNotStartServer',\n scope,\n error,\n });\n }\n\n logger.fatal('Failed to start your Strapi application');\n }\n }\n\n if (isABTestEnabled) {\n await trackUsage({ event: 'didEnableABTest', scope });\n }\n}\n\nasync function runInstall({ rootPath, packageManager }: Scope) {\n // include same cwd and env to ensure version check returns same version we use below\n const { envArgs, cmdArgs } = await getInstallArgs(packageManager, {\n cwd: rootPath,\n env: {\n ...process.env,\n NODE_ENV: 'development',\n },\n });\n\n const options: execa.Options = {\n cwd: rootPath,\n stdio: 'inherit',\n env: {\n ...process.env,\n ...envArgs,\n NODE_ENV: 'development',\n },\n };\n\n const proc = execa(packageManager, cmdArgs, options);\n\n return proc;\n}\n\nexport { createStrapi };\n"],"names":["createStrapi","scope","rootPath","fse","ensureDir","createApp","error","remove","useTypescript","useExample","installDependencies","isQuickstart","template","packageManager","gitInit","runApp","isABTestEnabled","shouldRunSeed","trackUsage","event","logger","title","chalk","green","templateName","internalTemplatePath","join","__dirname","exists","copy","info","cyan","copyTemplate","success","Error","fatal","message","existsSync","bold","createPackageJSON","writeFile","generateDotEnv","err","shouldCreateGrowthSsoTrial","data","createGrowthSsoTrial","strapiVersion","license","log","runInstall","stderr","isStderrError","slice","gitIgnore","tryGitInit","execa","stdio","cwd","cmd","env","FORCE_COLOR","envArgs","cmdArgs","getInstallArgs","process","NODE_ENV","options","proc"],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { join, basename } from 'node:path';\nimport os from 'node:os';\nimport chalk from 'chalk';\nimport commander from 'commander';\nimport crypto from 'crypto';\nimport fse from 'fs-extra';\n\nimport * as prompts from './prompts';\nimport { handleCloudLogin } from './cloud';\nimport { createStrapi } from './create-strapi';\nimport { checkNodeRequirements } from './utils/check-requirements';\nimport { checkInstallPath } from './utils/check-install-path';\nimport { installID } from './utils/install-id';\nimport { trackError } from './utils/usage';\nimport { addDatabaseDependencies, getDatabaseInfos } from './utils/database';\n\nimport type { Options, Scope } from './types';\nimport { logger } from './utils/logger';\n\nconst { version } = fse.readJSONSync(join(__dirname, '..', 'package.json'));\n\nconst command = new commander.Command('create-strapi-app')\n .version(version)\n .arguments('[directory]')\n .usage('[directory] [options]')\n .option('--quickstart', 'Quickstart app creation (deprecated)')\n .option('--no-run', 'Do not start the application after it is created.')\n\n // setup options\n .option('--ts, --typescript', 'Initialize the project with TypeScript (default)')\n .option('--js, --javascript', 'Initialize the project with Javascript')\n\n // Package manager options\n .option('--use-npm', 'Use npm as the project package manager')\n .option('--use-yarn', 'Use yarn as the project package manager')\n .option('--use-pnpm', 'Use pnpm as the project package manager')\n\n // dependencies options\n .option('--install', 'Install dependencies')\n .option('--no-install', 'Do not install dependencies')\n\n // Cloud options\n .option('--skip-cloud', 'Skip cloud login and project creation')\n\n // Example app\n .option('--example', 'Use an example app')\n .option('--no-example', 'Do not use an example app')\n\n // git options\n .option('--git-init', 'Initialize a git repository')\n .option('--no-git-init', 'Do no initialize a git repository')\n\n // Database options\n .option('--dbclient <dbclient>', 'Database client')\n .option('--dbhost <dbhost>', 'Database host')\n .option('--dbport <dbport>', 'Database port')\n .option('--dbname <dbname>', 'Database name')\n .option('--dbusername <dbusername>', 'Database username')\n .option('--dbpassword <dbpassword>', 'Database password')\n .option('--dbssl <dbssl>', 'Database SSL')\n .option('--dbfile <dbfile>', 'Database file path for sqlite')\n .option('--skip-db', 'Skip database configuration')\n\n .option('--template <template>', 'Specify a Strapi template')\n .option('--template-branch <templateBranch>', 'Specify a branch for the template')\n .option('--template-path <templatePath>', 'Specify a path to the template inside the repository')\n\n .description('create a new application');\n\nasync function run(args: string[]): Promise<void> {\n const options = command.parse(args).opts<Options>();\n const directory = command.args[0];\n\n logger.title(\n 'Strapi',\n `${chalk.green(chalk.bold(`v${version}`))} ${chalk.bold(\"🚀 Let's create your new project\")}\\n`\n );\n\n if (\n (options.javascript !== undefined || options.typescript !== undefined) &&\n options.template !== undefined\n ) {\n logger.fatal(\n `You cannot use ${chalk.bold('--javascript')} or ${chalk.bold('--typescript')} with ${chalk.bold('--template')}`\n );\n }\n\n if (options.javascript === true && options.typescript === true) {\n logger.fatal(\n `You cannot use both ${chalk.bold('--typescript')} (--ts) and ${chalk.bold('--javascript')} (--js) flags together`\n );\n }\n\n // Only prompt the example app option if there is no template option\n if (options.example === true && options.template !== undefined) {\n logger.fatal(`You cannot use ${chalk.bold('--example')} with ${chalk.bold('--template')}`);\n }\n\n if (options.template !== undefined && options.template.startsWith('-')) {\n logger.fatal(`Template name ${chalk.bold(`\"${options.template}\"`)} is invalid`);\n }\n\n if ([options.useNpm, options.usePnpm, options.useYarn].filter(Boolean).length > 1) {\n logger.fatal(\n `You cannot specify multiple package managers at the same time ${chalk.bold('(--use-npm, --use-pnpm, --use-yarn)')}`\n );\n }\n\n if (options.quickstart && !directory) {\n logger.fatal(\n `Please specify the ${chalk.bold('<directory>')} of your project when using ${chalk.bold('--quickstart')}`\n );\n }\n\n checkNodeRequirements();\n\n const appDirectory = directory || (await prompts.directory());\n\n const rootPath = await checkInstallPath(appDirectory);\n\n let shouldCreateGrowthSsoTrial = false;\n if (!options.skipCloud) {\n shouldCreateGrowthSsoTrial = await handleCloudLogin();\n }\n\n const tmpPath = join(os.tmpdir(), `strapi${crypto.randomBytes(6).toString('hex')}`);\n\n const randomUUID = crypto.randomUUID();\n const uuid = (process.env.STRAPI_UUID_PREFIX || '') + randomUUID;\n const installId = installID(uuid);\n\n const scope: Scope = {\n rootPath,\n name: basename(rootPath),\n packageManager: getPkgManager(options),\n database: await getDatabaseInfos(options),\n template: options.template,\n templateBranch: options.templateBranch,\n templatePath: options.templatePath,\n isQuickstart: options.quickstart,\n useExample: false,\n runApp: options.quickstart === true && options.run !== false,\n strapiVersion: version,\n packageJsonStrapi: {\n template: options.template,\n },\n uuid,\n docker: process.env.DOCKER === 'true',\n installId,\n tmpPath,\n gitInit: true,\n devDependencies: {},\n dependencies: {\n '@strapi/strapi': version,\n '@strapi/plugin-users-permissions': version,\n '@strapi/plugin-cloud': version,\n // third party\n react: '^18.0.0',\n 'react-dom': '^18.0.0',\n 'react-router-dom': '^6.0.0',\n 'styled-components': '^6.0.0',\n },\n shouldCreateGrowthSsoTrial,\n isABTestEnabled: false,\n };\n\n if (options.template !== undefined) {\n scope.useExample = false;\n } else if (options.example === true) {\n scope.useExample = true;\n } else if (options.example === false || options.quickstart === true) {\n scope.useExample = false;\n } else {\n scope.useExample = await prompts.example();\n }\n\n if (options.javascript === true) {\n scope.useTypescript = false;\n } else if (options.typescript === true || options.quickstart) {\n scope.useTypescript = true;\n } else if (!options.template) {\n scope.useTypescript = await prompts.typescript();\n }\n\n if (options.install === true || options.quickstart) {\n scope.installDependencies = true;\n } else if (options.install === false) {\n scope.installDependencies = false;\n } else {\n scope.installDependencies = await prompts.installDependencies(scope.packageManager);\n }\n\n if (scope.useTypescript) {\n scope.devDependencies = {\n ...scope.devDependencies,\n typescript: '^5',\n '@types/node': '^20',\n '@types/react': '^18',\n '@types/react-dom': '^18',\n };\n }\n\n if (options.gitInit === true || options.quickstart) {\n scope.gitInit = true;\n } else if (options.gitInit === false) {\n scope.gitInit = false;\n } else {\n scope.gitInit = await prompts.gitInit();\n }\n\n scope.isABTestEnabled = await prompts.enableABTests();\n\n addDatabaseDependencies(scope);\n\n try {\n await createStrapi(scope);\n } catch (error: unknown) {\n if (!(error instanceof Error)) {\n throw error;\n }\n\n await trackError({ scope, error });\n\n logger.fatal(error.message);\n }\n}\n\nfunction getPkgManager(options: Options) {\n if (options.useNpm === true) {\n return 'npm';\n }\n\n if (options.usePnpm === true) {\n return 'pnpm';\n }\n\n if (options.useYarn === true) {\n return 'yarn';\n }\n\n const userAgent = process.env.npm_config_user_agent || '';\n\n if (userAgent.startsWith('yarn')) {\n return 'yarn';\n }\n\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm';\n }\n\n return 'npm';\n}\n\nexport { run, createStrapi };\nexport type { Scope };\n"],"names":["version","fse","readJSONSync","join","__dirname","command","commander","Command","arguments","usage","option","description","run","args","options","parse","opts","directory","logger","title","chalk","green","bold","javascript","undefined","typescript","template","fatal","example","startsWith","useNpm","usePnpm","useYarn","filter","Boolean","length","quickstart","checkNodeRequirements","appDirectory","prompts","rootPath","checkInstallPath","shouldCreateGrowthSsoTrial","skipCloud","handleCloudLogin","tmpPath","os","tmpdir","crypto","randomBytes","toString","randomUUID","uuid","process","env","STRAPI_UUID_PREFIX","installId","installID","scope","name","basename","packageManager","getPkgManager","database","getDatabaseInfos","templateBranch","templatePath","isQuickstart","useExample","runApp","strapiVersion","packageJsonStrapi","docker","DOCKER","gitInit","devDependencies","dependencies","react","isABTestEnabled","useTypescript","install","installDependencies","addDatabaseDependencies","createStrapi","error","Error","trackError","message","userAgent","npm_config_user_agent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { join, basename } from 'node:path';\nimport os from 'node:os';\nimport chalk from 'chalk';\nimport commander from 'commander';\nimport crypto from 'crypto';\nimport fse from 'fs-extra';\n\nimport * as prompts from './prompts';\nimport { handleCloudLogin } from './cloud';\nimport { createStrapi } from './create-strapi';\nimport { checkNodeRequirements } from './utils/check-requirements';\nimport { checkInstallPath } from './utils/check-install-path';\nimport { installID } from './utils/install-id';\nimport { trackError } from './utils/usage';\nimport { addDatabaseDependencies, getDatabaseInfos } from './utils/database';\n\nimport type { Options, Scope } from './types';\nimport { logger } from './utils/logger';\n\nconst { version } = fse.readJSONSync(join(__dirname, '..', 'package.json'));\n\nconst command = new commander.Command('create-strapi-app')\n .version(version)\n .arguments('[directory]')\n .usage('[directory] [options]')\n .option('--quickstart', 'Quickstart app creation (deprecated)')\n .option('--no-run', 'Do not start the application after it is created.')\n\n // setup options\n .option('--ts, --typescript', 'Initialize the project with TypeScript (default)')\n .option('--js, --javascript', 'Initialize the project with Javascript')\n\n // Package manager options\n .option('--use-npm', 'Use npm as the project package manager')\n .option('--use-yarn', 'Use yarn as the project package manager')\n .option('--use-pnpm', 'Use pnpm as the project package manager')\n\n // dependencies options\n .option('--install', 'Install dependencies')\n .option('--no-install', 'Do not install dependencies')\n\n // Cloud options\n .option('--skip-cloud', 'Skip cloud login and project creation')\n\n // Example app\n .option('--example', 'Use an example app')\n .option('--no-example', 'Do not use an example app')\n\n // git options\n .option('--git-init', 'Initialize a git repository')\n .option('--no-git-init', 'Do no initialize a git repository')\n\n // Database options\n .option('--dbclient <dbclient>', 'Database client')\n .option('--dbhost <dbhost>', 'Database host')\n .option('--dbport <dbport>', 'Database port')\n .option('--dbname <dbname>', 'Database name')\n .option('--dbusername <dbusername>', 'Database username')\n .option('--dbpassword <dbpassword>', 'Database password')\n .option('--dbssl <dbssl>', 'Database SSL')\n .option('--dbfile <dbfile>', 'Database file path for sqlite')\n .option('--skip-db', 'Skip database configuration')\n\n .option('--template <template>', 'Specify a Strapi template')\n .option('--template-branch <templateBranch>', 'Specify a branch for the template')\n .option('--template-path <templatePath>', 'Specify a path to the template inside the repository')\n\n .description('create a new application');\n\nasync function run(args: string[]): Promise<void> {\n const options = command.parse(args).opts<Options>();\n const directory = command.args[0];\n\n logger.title(\n 'Strapi',\n `${chalk.green(chalk.bold(`v${version}`))} ${chalk.bold(\"🚀 Let's create your new project\")}\\n`\n );\n\n if (\n (options.javascript !== undefined || options.typescript !== undefined) &&\n options.template !== undefined\n ) {\n logger.fatal(\n `You cannot use ${chalk.bold('--javascript')} or ${chalk.bold('--typescript')} with ${chalk.bold('--template')}`\n );\n }\n\n if (options.javascript === true && options.typescript === true) {\n logger.fatal(\n `You cannot use both ${chalk.bold('--typescript')} (--ts) and ${chalk.bold('--javascript')} (--js) flags together`\n );\n }\n\n // Only prompt the example app option if there is no template option\n if (options.example === true && options.template !== undefined) {\n logger.fatal(`You cannot use ${chalk.bold('--example')} with ${chalk.bold('--template')}`);\n }\n\n if (options.template !== undefined && options.template.startsWith('-')) {\n logger.fatal(`Template name ${chalk.bold(`\"${options.template}\"`)} is invalid`);\n }\n\n if ([options.useNpm, options.usePnpm, options.useYarn].filter(Boolean).length > 1) {\n logger.fatal(\n `You cannot specify multiple package managers at the same time ${chalk.bold('(--use-npm, --use-pnpm, --use-yarn)')}`\n );\n }\n\n if (options.quickstart && !directory) {\n logger.fatal(\n `Please specify the ${chalk.bold('<directory>')} of your project when using ${chalk.bold('--quickstart')}`\n );\n }\n\n checkNodeRequirements();\n\n const appDirectory = directory || (await prompts.directory());\n\n const rootPath = await checkInstallPath(appDirectory);\n\n let shouldCreateGrowthSsoTrial = false;\n if (!options.skipCloud) {\n shouldCreateGrowthSsoTrial = await handleCloudLogin();\n }\n\n const tmpPath = join(os.tmpdir(), `strapi${crypto.randomBytes(6).toString('hex')}`);\n\n const randomUUID = crypto.randomUUID();\n const uuid = (process.env.STRAPI_UUID_PREFIX || '') + randomUUID;\n const installId = installID(uuid);\n\n const scope: Scope = {\n rootPath,\n name: basename(rootPath),\n packageManager: getPkgManager(options),\n database: await getDatabaseInfos(options),\n template: options.template,\n templateBranch: options.templateBranch,\n templatePath: options.templatePath,\n isQuickstart: options.quickstart,\n useExample: false,\n runApp: options.quickstart === true && options.run !== false,\n strapiVersion: version,\n packageJsonStrapi: {\n template: options.template,\n },\n uuid,\n docker: process.env.DOCKER === 'true',\n installId,\n tmpPath,\n gitInit: true,\n devDependencies: {},\n dependencies: {\n '@strapi/strapi': version,\n '@strapi/plugin-users-permissions': version,\n '@strapi/plugin-cloud': version,\n // third party\n react: '^18.0.0',\n 'react-dom': '^18.0.0',\n 'react-router-dom': '^6.0.0',\n 'styled-components': '^6.0.0',\n },\n shouldCreateGrowthSsoTrial,\n isABTestEnabled: false,\n };\n\n if (options.template !== undefined) {\n scope.useExample = false;\n } else if (options.example === true) {\n scope.useExample = true;\n } else if (options.example === false || options.quickstart === true) {\n scope.useExample = false;\n } else {\n scope.useExample = await prompts.example();\n }\n\n if (options.javascript === true) {\n scope.useTypescript = false;\n } else if (options.typescript === true || options.quickstart) {\n scope.useTypescript = true;\n } else if (!options.template) {\n scope.useTypescript = await prompts.typescript();\n }\n\n if (options.install === true || options.quickstart) {\n scope.installDependencies = true;\n } else if (options.install === false) {\n scope.installDependencies = false;\n } else {\n scope.installDependencies = await prompts.installDependencies(scope.packageManager);\n }\n\n if (scope.useTypescript) {\n scope.devDependencies = {\n ...scope.devDependencies,\n typescript: '^5',\n '@types/node': '^20',\n '@types/react': '^18',\n '@types/react-dom': '^18',\n };\n }\n\n if (options.gitInit === true || options.quickstart) {\n scope.gitInit = true;\n } else if (options.gitInit === false) {\n scope.gitInit = false;\n } else {\n scope.gitInit = await prompts.gitInit();\n }\n\n scope.isABTestEnabled = await prompts.enableABTests();\n\n addDatabaseDependencies(scope);\n\n try {\n await createStrapi(scope);\n } catch (error: unknown) {\n if (!(error instanceof Error)) {\n throw error;\n }\n\n await trackError({ scope, error });\n\n logger.fatal(error.message);\n }\n}\n\nfunction getPkgManager(options: Options) {\n if (options.useNpm === true) {\n return 'npm';\n }\n\n if (options.usePnpm === true) {\n return 'pnpm';\n }\n\n if (options.useYarn === true) {\n return 'yarn';\n }\n\n const userAgent = process.env.npm_config_user_agent || '';\n\n if (userAgent.startsWith('yarn')) {\n return 'yarn';\n }\n\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm';\n }\n\n return 'npm';\n}\n\nexport { run, createStrapi };\nexport type { Scope };\n"],"names":["version","fse","readJSONSync","join","__dirname","command","commander","Command","arguments","usage","option","description","run","args","options","parse","opts","directory","logger","title","chalk","green","bold","javascript","undefined","typescript","template","fatal","example","startsWith","useNpm","usePnpm","useYarn","filter","Boolean","length","quickstart","checkNodeRequirements","appDirectory","prompts","rootPath","checkInstallPath","shouldCreateGrowthSsoTrial","skipCloud","handleCloudLogin","tmpPath","os","tmpdir","crypto","randomBytes","toString","randomUUID","uuid","process","env","STRAPI_UUID_PREFIX","installId","installID","scope","name","basename","packageManager","getPkgManager","database","getDatabaseInfos","templateBranch","templatePath","isQuickstart","useExample","runApp","strapiVersion","packageJsonStrapi","docker","DOCKER","gitInit","devDependencies","dependencies","react","isABTestEnabled","useTypescript","install","installDependencies","addDatabaseDependencies","createStrapi","error","Error","trackError","message","userAgent","npm_config_user_agent"],"mappings":"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"}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { join, basename } from 'node:path';\nimport os from 'node:os';\nimport chalk from 'chalk';\nimport commander from 'commander';\nimport crypto from 'crypto';\nimport fse from 'fs-extra';\n\nimport * as prompts from './prompts';\nimport { handleCloudLogin } from './cloud';\nimport { createStrapi } from './create-strapi';\nimport { checkNodeRequirements } from './utils/check-requirements';\nimport { checkInstallPath } from './utils/check-install-path';\nimport { installID } from './utils/install-id';\nimport { trackError } from './utils/usage';\nimport { addDatabaseDependencies, getDatabaseInfos } from './utils/database';\n\nimport type { Options, Scope } from './types';\nimport { logger } from './utils/logger';\n\nconst { version } = fse.readJSONSync(join(__dirname, '..', 'package.json'));\n\nconst command = new commander.Command('create-strapi-app')\n .version(version)\n .arguments('[directory]')\n .usage('[directory] [options]')\n .option('--quickstart', 'Quickstart app creation (deprecated)')\n .option('--no-run', 'Do not start the application after it is created.')\n\n // setup options\n .option('--ts, --typescript', 'Initialize the project with TypeScript (default)')\n .option('--js, --javascript', 'Initialize the project with Javascript')\n\n // Package manager options\n .option('--use-npm', 'Use npm as the project package manager')\n .option('--use-yarn', 'Use yarn as the project package manager')\n .option('--use-pnpm', 'Use pnpm as the project package manager')\n\n // dependencies options\n .option('--install', 'Install dependencies')\n .option('--no-install', 'Do not install dependencies')\n\n // Cloud options\n .option('--skip-cloud', 'Skip cloud login and project creation')\n\n // Example app\n .option('--example', 'Use an example app')\n .option('--no-example', 'Do not use an example app')\n\n // git options\n .option('--git-init', 'Initialize a git repository')\n .option('--no-git-init', 'Do no initialize a git repository')\n\n // Database options\n .option('--dbclient <dbclient>', 'Database client')\n .option('--dbhost <dbhost>', 'Database host')\n .option('--dbport <dbport>', 'Database port')\n .option('--dbname <dbname>', 'Database name')\n .option('--dbusername <dbusername>', 'Database username')\n .option('--dbpassword <dbpassword>', 'Database password')\n .option('--dbssl <dbssl>', 'Database SSL')\n .option('--dbfile <dbfile>', 'Database file path for sqlite')\n .option('--skip-db', 'Skip database configuration')\n\n .option('--template <template>', 'Specify a Strapi template')\n .option('--template-branch <templateBranch>', 'Specify a branch for the template')\n .option('--template-path <templatePath>', 'Specify a path to the template inside the repository')\n\n .description('create a new application');\n\nasync function run(args: string[]): Promise<void> {\n const options = command.parse(args).opts<Options>();\n const directory = command.args[0];\n\n logger.title(\n 'Strapi',\n `${chalk.green(chalk.bold(`v${version}`))} ${chalk.bold(\"🚀 Let's create your new project\")}\\n`\n );\n\n if (\n (options.javascript !== undefined || options.typescript !== undefined) &&\n options.template !== undefined\n ) {\n logger.fatal(\n `You cannot use ${chalk.bold('--javascript')} or ${chalk.bold('--typescript')} with ${chalk.bold('--template')}`\n );\n }\n\n if (options.javascript === true && options.typescript === true) {\n logger.fatal(\n `You cannot use both ${chalk.bold('--typescript')} (--ts) and ${chalk.bold('--javascript')} (--js) flags together`\n );\n }\n\n // Only prompt the example app option if there is no template option\n if (options.example === true && options.template !== undefined) {\n logger.fatal(`You cannot use ${chalk.bold('--example')} with ${chalk.bold('--template')}`);\n }\n\n if (options.template !== undefined && options.template.startsWith('-')) {\n logger.fatal(`Template name ${chalk.bold(`\"${options.template}\"`)} is invalid`);\n }\n\n if ([options.useNpm, options.usePnpm, options.useYarn].filter(Boolean).length > 1) {\n logger.fatal(\n `You cannot specify multiple package managers at the same time ${chalk.bold('(--use-npm, --use-pnpm, --use-yarn)')}`\n );\n }\n\n if (options.quickstart && !directory) {\n logger.fatal(\n `Please specify the ${chalk.bold('<directory>')} of your project when using ${chalk.bold('--quickstart')}`\n );\n }\n\n checkNodeRequirements();\n\n const appDirectory = directory || (await prompts.directory());\n\n const rootPath = await checkInstallPath(appDirectory);\n\n let shouldCreateGrowthSsoTrial = false;\n if (!options.skipCloud) {\n shouldCreateGrowthSsoTrial = await handleCloudLogin();\n }\n\n const tmpPath = join(os.tmpdir(), `strapi${crypto.randomBytes(6).toString('hex')}`);\n\n const randomUUID = crypto.randomUUID();\n const uuid = (process.env.STRAPI_UUID_PREFIX || '') + randomUUID;\n const installId = installID(uuid);\n\n const scope: Scope = {\n rootPath,\n name: basename(rootPath),\n packageManager: getPkgManager(options),\n database: await getDatabaseInfos(options),\n template: options.template,\n templateBranch: options.templateBranch,\n templatePath: options.templatePath,\n isQuickstart: options.quickstart,\n useExample: false,\n runApp: options.quickstart === true && options.run !== false,\n strapiVersion: version,\n packageJsonStrapi: {\n template: options.template,\n },\n uuid,\n docker: process.env.DOCKER === 'true',\n installId,\n tmpPath,\n gitInit: true,\n devDependencies: {},\n dependencies: {\n '@strapi/strapi': version,\n '@strapi/plugin-users-permissions': version,\n '@strapi/plugin-cloud': version,\n // third party\n react: '^18.0.0',\n 'react-dom': '^18.0.0',\n 'react-router-dom': '^6.0.0',\n 'styled-components': '^6.0.0',\n },\n shouldCreateGrowthSsoTrial,\n isABTestEnabled: false,\n };\n\n if (options.template !== undefined) {\n scope.useExample = false;\n } else if (options.example === true) {\n scope.useExample = true;\n } else if (options.example === false || options.quickstart === true) {\n scope.useExample = false;\n } else {\n scope.useExample = await prompts.example();\n }\n\n if (options.javascript === true) {\n scope.useTypescript = false;\n } else if (options.typescript === true || options.quickstart) {\n scope.useTypescript = true;\n } else if (!options.template) {\n scope.useTypescript = await prompts.typescript();\n }\n\n if (options.install === true || options.quickstart) {\n scope.installDependencies = true;\n } else if (options.install === false) {\n scope.installDependencies = false;\n } else {\n scope.installDependencies = await prompts.installDependencies(scope.packageManager);\n }\n\n if (scope.useTypescript) {\n scope.devDependencies = {\n ...scope.devDependencies,\n typescript: '^5',\n '@types/node': '^20',\n '@types/react': '^18',\n '@types/react-dom': '^18',\n };\n }\n\n if (options.gitInit === true || options.quickstart) {\n scope.gitInit = true;\n } else if (options.gitInit === false) {\n scope.gitInit = false;\n } else {\n scope.gitInit = await prompts.gitInit();\n }\n\n scope.isABTestEnabled = await prompts.enableABTests();\n\n addDatabaseDependencies(scope);\n\n try {\n await createStrapi(scope);\n } catch (error: unknown) {\n if (!(error instanceof Error)) {\n throw error;\n }\n\n await trackError({ scope, error });\n\n logger.fatal(error.message);\n }\n}\n\nfunction getPkgManager(options: Options) {\n if (options.useNpm === true) {\n return 'npm';\n }\n\n if (options.usePnpm === true) {\n return 'pnpm';\n }\n\n if (options.useYarn === true) {\n return 'yarn';\n }\n\n const userAgent = process.env.npm_config_user_agent || '';\n\n if (userAgent.startsWith('yarn')) {\n return 'yarn';\n }\n\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm';\n }\n\n return 'npm';\n}\n\nexport { run, createStrapi };\nexport type { Scope };\n"],"names":["version","fse","readJSONSync","join","__dirname","command","commander","Command","arguments","usage","option","description","run","args","options","parse","opts","directory","logger","title","chalk","green","bold","javascript","undefined","typescript","template","fatal","example","startsWith","useNpm","usePnpm","useYarn","filter","Boolean","length","quickstart","checkNodeRequirements","appDirectory","prompts","rootPath","checkInstallPath","shouldCreateGrowthSsoTrial","skipCloud","handleCloudLogin","tmpPath","os","tmpdir","crypto","randomBytes","toString","randomUUID","uuid","process","env","STRAPI_UUID_PREFIX","installId","installID","scope","name","basename","packageManager","getPkgManager","database","getDatabaseInfos","templateBranch","templatePath","isQuickstart","useExample","runApp","strapiVersion","packageJsonStrapi","docker","DOCKER","gitInit","devDependencies","dependencies","react","isABTestEnabled","useTypescript","install","installDependencies","addDatabaseDependencies","createStrapi","error","Error","trackError","message","userAgent","npm_config_user_agent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { join, basename } from 'node:path';\nimport os from 'node:os';\nimport chalk from 'chalk';\nimport commander from 'commander';\nimport crypto from 'crypto';\nimport fse from 'fs-extra';\n\nimport * as prompts from './prompts';\nimport { handleCloudLogin } from './cloud';\nimport { createStrapi } from './create-strapi';\nimport { checkNodeRequirements } from './utils/check-requirements';\nimport { checkInstallPath } from './utils/check-install-path';\nimport { installID } from './utils/install-id';\nimport { trackError } from './utils/usage';\nimport { addDatabaseDependencies, getDatabaseInfos } from './utils/database';\n\nimport type { Options, Scope } from './types';\nimport { logger } from './utils/logger';\n\nconst { version } = fse.readJSONSync(join(__dirname, '..', 'package.json'));\n\nconst command = new commander.Command('create-strapi-app')\n .version(version)\n .arguments('[directory]')\n .usage('[directory] [options]')\n .option('--quickstart', 'Quickstart app creation (deprecated)')\n .option('--no-run', 'Do not start the application after it is created.')\n\n // setup options\n .option('--ts, --typescript', 'Initialize the project with TypeScript (default)')\n .option('--js, --javascript', 'Initialize the project with Javascript')\n\n // Package manager options\n .option('--use-npm', 'Use npm as the project package manager')\n .option('--use-yarn', 'Use yarn as the project package manager')\n .option('--use-pnpm', 'Use pnpm as the project package manager')\n\n // dependencies options\n .option('--install', 'Install dependencies')\n .option('--no-install', 'Do not install dependencies')\n\n // Cloud options\n .option('--skip-cloud', 'Skip cloud login and project creation')\n\n // Example app\n .option('--example', 'Use an example app')\n .option('--no-example', 'Do not use an example app')\n\n // git options\n .option('--git-init', 'Initialize a git repository')\n .option('--no-git-init', 'Do no initialize a git repository')\n\n // Database options\n .option('--dbclient <dbclient>', 'Database client')\n .option('--dbhost <dbhost>', 'Database host')\n .option('--dbport <dbport>', 'Database port')\n .option('--dbname <dbname>', 'Database name')\n .option('--dbusername <dbusername>', 'Database username')\n .option('--dbpassword <dbpassword>', 'Database password')\n .option('--dbssl <dbssl>', 'Database SSL')\n .option('--dbfile <dbfile>', 'Database file path for sqlite')\n .option('--skip-db', 'Skip database configuration')\n\n .option('--template <template>', 'Specify a Strapi template')\n .option('--template-branch <templateBranch>', 'Specify a branch for the template')\n .option('--template-path <templatePath>', 'Specify a path to the template inside the repository')\n\n .description('create a new application');\n\nasync function run(args: string[]): Promise<void> {\n const options = command.parse(args).opts<Options>();\n const directory = command.args[0];\n\n logger.title(\n 'Strapi',\n `${chalk.green(chalk.bold(`v${version}`))} ${chalk.bold(\"🚀 Let's create your new project\")}\\n`\n );\n\n if (\n (options.javascript !== undefined || options.typescript !== undefined) &&\n options.template !== undefined\n ) {\n logger.fatal(\n `You cannot use ${chalk.bold('--javascript')} or ${chalk.bold('--typescript')} with ${chalk.bold('--template')}`\n );\n }\n\n if (options.javascript === true && options.typescript === true) {\n logger.fatal(\n `You cannot use both ${chalk.bold('--typescript')} (--ts) and ${chalk.bold('--javascript')} (--js) flags together`\n );\n }\n\n // Only prompt the example app option if there is no template option\n if (options.example === true && options.template !== undefined) {\n logger.fatal(`You cannot use ${chalk.bold('--example')} with ${chalk.bold('--template')}`);\n }\n\n if (options.template !== undefined && options.template.startsWith('-')) {\n logger.fatal(`Template name ${chalk.bold(`\"${options.template}\"`)} is invalid`);\n }\n\n if ([options.useNpm, options.usePnpm, options.useYarn].filter(Boolean).length > 1) {\n logger.fatal(\n `You cannot specify multiple package managers at the same time ${chalk.bold('(--use-npm, --use-pnpm, --use-yarn)')}`\n );\n }\n\n if (options.quickstart && !directory) {\n logger.fatal(\n `Please specify the ${chalk.bold('<directory>')} of your project when using ${chalk.bold('--quickstart')}`\n );\n }\n\n checkNodeRequirements();\n\n const appDirectory = directory || (await prompts.directory());\n\n const rootPath = await checkInstallPath(appDirectory);\n\n let shouldCreateGrowthSsoTrial = false;\n if (!options.skipCloud) {\n shouldCreateGrowthSsoTrial = await handleCloudLogin();\n }\n\n const tmpPath = join(os.tmpdir(), `strapi${crypto.randomBytes(6).toString('hex')}`);\n\n const randomUUID = crypto.randomUUID();\n const uuid = (process.env.STRAPI_UUID_PREFIX || '') + randomUUID;\n const installId = installID(uuid);\n\n const scope: Scope = {\n rootPath,\n name: basename(rootPath),\n packageManager: getPkgManager(options),\n database: await getDatabaseInfos(options),\n template: options.template,\n templateBranch: options.templateBranch,\n templatePath: options.templatePath,\n isQuickstart: options.quickstart,\n useExample: false,\n runApp: options.quickstart === true && options.run !== false,\n strapiVersion: version,\n packageJsonStrapi: {\n template: options.template,\n },\n uuid,\n docker: process.env.DOCKER === 'true',\n installId,\n tmpPath,\n gitInit: true,\n devDependencies: {},\n dependencies: {\n '@strapi/strapi': version,\n '@strapi/plugin-users-permissions': version,\n '@strapi/plugin-cloud': version,\n // third party\n react: '^18.0.0',\n 'react-dom': '^18.0.0',\n 'react-router-dom': '^6.0.0',\n 'styled-components': '^6.0.0',\n },\n shouldCreateGrowthSsoTrial,\n isABTestEnabled: false,\n };\n\n if (options.template !== undefined) {\n scope.useExample = false;\n } else if (options.example === true) {\n scope.useExample = true;\n } else if (options.example === false || options.quickstart === true) {\n scope.useExample = false;\n } else {\n scope.useExample = await prompts.example();\n }\n\n if (options.javascript === true) {\n scope.useTypescript = false;\n } else if (options.typescript === true || options.quickstart) {\n scope.useTypescript = true;\n } else if (!options.template) {\n scope.useTypescript = await prompts.typescript();\n }\n\n if (options.install === true || options.quickstart) {\n scope.installDependencies = true;\n } else if (options.install === false) {\n scope.installDependencies = false;\n } else {\n scope.installDependencies = await prompts.installDependencies(scope.packageManager);\n }\n\n if (scope.useTypescript) {\n scope.devDependencies = {\n ...scope.devDependencies,\n typescript: '^5',\n '@types/node': '^20',\n '@types/react': '^18',\n '@types/react-dom': '^18',\n };\n }\n\n if (options.gitInit === true || options.quickstart) {\n scope.gitInit = true;\n } else if (options.gitInit === false) {\n scope.gitInit = false;\n } else {\n scope.gitInit = await prompts.gitInit();\n }\n\n scope.isABTestEnabled = await prompts.enableABTests();\n\n addDatabaseDependencies(scope);\n\n try {\n await createStrapi(scope);\n } catch (error: unknown) {\n if (!(error instanceof Error)) {\n throw error;\n }\n\n await trackError({ scope, error });\n\n logger.fatal(error.message);\n }\n}\n\nfunction getPkgManager(options: Options) {\n if (options.useNpm === true) {\n return 'npm';\n }\n\n if (options.usePnpm === true) {\n return 'pnpm';\n }\n\n if (options.useYarn === true) {\n return 'yarn';\n }\n\n const userAgent = process.env.npm_config_user_agent || '';\n\n if (userAgent.startsWith('yarn')) {\n return 'yarn';\n }\n\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm';\n }\n\n return 'npm';\n}\n\nexport { run, createStrapi };\nexport type { Scope };\n"],"names":["version","fse","readJSONSync","join","__dirname","command","commander","Command","arguments","usage","option","description","run","args","options","parse","opts","directory","logger","title","chalk","green","bold","javascript","undefined","typescript","template","fatal","example","startsWith","useNpm","usePnpm","useYarn","filter","Boolean","length","quickstart","checkNodeRequirements","appDirectory","prompts","rootPath","checkInstallPath","shouldCreateGrowthSsoTrial","skipCloud","handleCloudLogin","tmpPath","os","tmpdir","crypto","randomBytes","toString","randomUUID","uuid","process","env","STRAPI_UUID_PREFIX","installId","installID","scope","name","basename","packageManager","getPkgManager","database","getDatabaseInfos","templateBranch","templatePath","isQuickstart","useExample","runApp","strapiVersion","packageJsonStrapi","docker","DOCKER","gitInit","devDependencies","dependencies","react","isABTestEnabled","useTypescript","install","installDependencies","addDatabaseDependencies","createStrapi","error","Error","trackError","message","userAgent","npm_config_user_agent"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-install-path.js","sources":["../../src/utils/check-install-path.ts"],"sourcesContent":["import { resolve } from 'node:path';\nimport chalk from 'chalk';\nimport fse from 'fs-extra';\nimport { logger } from './logger';\n\n// Checks if the an empty directory exists at rootPath\nexport async function checkInstallPath(directory: string): Promise<string> {\n const rootPath = resolve(directory);\n\n if (await fse.pathExists(rootPath)) {\n const stat = await fse.stat(rootPath);\n\n if (!stat.isDirectory()) {\n logger.fatal(\n `${chalk.green(\n rootPath\n )} is not a directory. Make sure to create a Strapi application in an empty directory.`\n );\n }\n\n const files = await fse.readdir(rootPath);\n if (files.length > 1) {\n logger.fatal([\n 'You can only create a Strapi app in an empty directory',\n `Make sure ${chalk.green(rootPath)} is empty.`,\n ]);\n }\n }\n\n return rootPath;\n}\n"],"names":["checkInstallPath","directory","rootPath","resolve","fse","pathExists","stat","isDirectory","logger","fatal","chalk","green","files","readdir","length"],"mappings":";;;;;;;AAKA;AACO,eAAeA,iBAAiBC,SAAiB,EAAA;AACtD,IAAA,MAAMC,WAAWC,YAAQF,CAAAA,SAAAA,CAAAA;AAEzB,IAAA,IAAI,MAAMG,GAAAA,CAAIC,UAAU,CAACH,QAAW,CAAA,EAAA;AAClC,QAAA,MAAMI,IAAO,GAAA,MAAMF,GAAIE,CAAAA,IAAI,CAACJ,QAAAA,CAAAA;QAE5B,IAAI,CAACI,IAAKC,CAAAA,WAAW,EAAI,EAAA;YACvBC,aAAOC,CAAAA,KAAK,CACV,
|
|
1
|
+
{"version":3,"file":"check-install-path.js","sources":["../../src/utils/check-install-path.ts"],"sourcesContent":["import { resolve } from 'node:path';\nimport chalk from 'chalk';\nimport fse from 'fs-extra';\nimport { logger } from './logger';\n\n// Checks if the an empty directory exists at rootPath\nexport async function checkInstallPath(directory: string): Promise<string> {\n const rootPath = resolve(directory);\n\n if (await fse.pathExists(rootPath)) {\n const stat = await fse.stat(rootPath);\n\n if (!stat.isDirectory()) {\n logger.fatal(\n `${chalk.green(\n rootPath\n )} is not a directory. Make sure to create a Strapi application in an empty directory.`\n );\n }\n\n const files = await fse.readdir(rootPath);\n if (files.length > 1) {\n logger.fatal([\n 'You can only create a Strapi app in an empty directory',\n `Make sure ${chalk.green(rootPath)} is empty.`,\n ]);\n }\n }\n\n return rootPath;\n}\n"],"names":["checkInstallPath","directory","rootPath","resolve","fse","pathExists","stat","isDirectory","logger","fatal","chalk","green","files","readdir","length"],"mappings":";;;;;;;AAKA;AACO,eAAeA,iBAAiBC,SAAiB,EAAA;AACtD,IAAA,MAAMC,WAAWC,YAAQF,CAAAA,SAAAA,CAAAA;AAEzB,IAAA,IAAI,MAAMG,GAAAA,CAAIC,UAAU,CAACH,QAAW,CAAA,EAAA;AAClC,QAAA,MAAMI,IAAO,GAAA,MAAMF,GAAIE,CAAAA,IAAI,CAACJ,QAAAA,CAAAA;QAE5B,IAAI,CAACI,IAAKC,CAAAA,WAAW,EAAI,EAAA;YACvBC,aAAOC,CAAAA,KAAK,CACV,CAAGC,EAAAA,KAAAA,CAAMC,KAAK,CACZT,QAAAA,CAAAA,CACA,oFAAoF,CAAC,CAAA;AAE3F;AAEA,QAAA,MAAMU,KAAQ,GAAA,MAAMR,GAAIS,CAAAA,OAAO,CAACX,QAAAA,CAAAA;QAChC,IAAIU,KAAAA,CAAME,MAAM,GAAG,CAAG,EAAA;AACpBN,YAAAA,aAAAA,CAAOC,KAAK,CAAC;AACX,gBAAA,wDAAA;AACA,gBAAA,CAAC,UAAU,EAAEC,KAAAA,CAAMC,KAAK,CAACT,QAAAA,CAAAA,CAAU,UAAU;AAC9C,aAAA,CAAA;AACH;AACF;IAEA,OAAOA,QAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-install-path.mjs","sources":["../../src/utils/check-install-path.ts"],"sourcesContent":["import { resolve } from 'node:path';\nimport chalk from 'chalk';\nimport fse from 'fs-extra';\nimport { logger } from './logger';\n\n// Checks if the an empty directory exists at rootPath\nexport async function checkInstallPath(directory: string): Promise<string> {\n const rootPath = resolve(directory);\n\n if (await fse.pathExists(rootPath)) {\n const stat = await fse.stat(rootPath);\n\n if (!stat.isDirectory()) {\n logger.fatal(\n `${chalk.green(\n rootPath\n )} is not a directory. Make sure to create a Strapi application in an empty directory.`\n );\n }\n\n const files = await fse.readdir(rootPath);\n if (files.length > 1) {\n logger.fatal([\n 'You can only create a Strapi app in an empty directory',\n `Make sure ${chalk.green(rootPath)} is empty.`,\n ]);\n }\n }\n\n return rootPath;\n}\n"],"names":["checkInstallPath","directory","rootPath","resolve","fse","pathExists","stat","isDirectory","logger","fatal","chalk","green","files","readdir","length"],"mappings":";;;;;AAKA;AACO,eAAeA,iBAAiBC,SAAiB,EAAA;AACtD,IAAA,MAAMC,WAAWC,OAAQF,CAAAA,SAAAA,CAAAA;AAEzB,IAAA,IAAI,MAAMG,GAAAA,CAAIC,UAAU,CAACH,QAAW,CAAA,EAAA;AAClC,QAAA,MAAMI,IAAO,GAAA,MAAMF,GAAIE,CAAAA,IAAI,CAACJ,QAAAA,CAAAA;QAE5B,IAAI,CAACI,IAAKC,CAAAA,WAAW,EAAI,EAAA;YACvBC,MAAOC,CAAAA,KAAK,CACV,
|
|
1
|
+
{"version":3,"file":"check-install-path.mjs","sources":["../../src/utils/check-install-path.ts"],"sourcesContent":["import { resolve } from 'node:path';\nimport chalk from 'chalk';\nimport fse from 'fs-extra';\nimport { logger } from './logger';\n\n// Checks if the an empty directory exists at rootPath\nexport async function checkInstallPath(directory: string): Promise<string> {\n const rootPath = resolve(directory);\n\n if (await fse.pathExists(rootPath)) {\n const stat = await fse.stat(rootPath);\n\n if (!stat.isDirectory()) {\n logger.fatal(\n `${chalk.green(\n rootPath\n )} is not a directory. Make sure to create a Strapi application in an empty directory.`\n );\n }\n\n const files = await fse.readdir(rootPath);\n if (files.length > 1) {\n logger.fatal([\n 'You can only create a Strapi app in an empty directory',\n `Make sure ${chalk.green(rootPath)} is empty.`,\n ]);\n }\n }\n\n return rootPath;\n}\n"],"names":["checkInstallPath","directory","rootPath","resolve","fse","pathExists","stat","isDirectory","logger","fatal","chalk","green","files","readdir","length"],"mappings":";;;;;AAKA;AACO,eAAeA,iBAAiBC,SAAiB,EAAA;AACtD,IAAA,MAAMC,WAAWC,OAAQF,CAAAA,SAAAA,CAAAA;AAEzB,IAAA,IAAI,MAAMG,GAAAA,CAAIC,UAAU,CAACH,QAAW,CAAA,EAAA;AAClC,QAAA,MAAMI,IAAO,GAAA,MAAMF,GAAIE,CAAAA,IAAI,CAACJ,QAAAA,CAAAA;QAE5B,IAAI,CAACI,IAAKC,CAAAA,WAAW,EAAI,EAAA;YACvBC,MAAOC,CAAAA,KAAK,CACV,CAAGC,EAAAA,KAAAA,CAAMC,KAAK,CACZT,QAAAA,CAAAA,CACA,oFAAoF,CAAC,CAAA;AAE3F;AAEA,QAAA,MAAMU,KAAQ,GAAA,MAAMR,GAAIS,CAAAA,OAAO,CAACX,QAAAA,CAAAA;QAChC,IAAIU,KAAAA,CAAME,MAAM,GAAG,CAAG,EAAA;AACpBN,YAAAA,MAAAA,CAAOC,KAAK,CAAC;AACX,gBAAA,wDAAA;AACA,gBAAA,CAAC,UAAU,EAAEC,KAAAA,CAAMC,KAAK,CAACT,QAAAA,CAAAA,CAAU,UAAU;AAC9C,aAAA,CAAA;AACH;AACF;IAEA,OAAOA,QAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-requirements.js","sources":["../../src/utils/check-requirements.ts"],"sourcesContent":["import chalk from 'chalk';\nimport semver from 'semver';\n\nimport { engines } from './engines';\nimport { logger } from './logger';\n\nexport function checkNodeRequirements() {\n const currentNodeVersion = process.versions.node;\n\n // error if the node version isn't supported\n if (!semver.satisfies(currentNodeVersion, engines.node)) {\n logger.fatal([\n chalk.red(`You are running ${chalk.bold(`Node.js ${currentNodeVersion}`)}`),\n `Strapi requires ${chalk.bold(chalk.green(`Node.js ${engines.node}`))}`,\n 'Please make sure to use the right version of Node.',\n ]);\n }\n\n // warn if not using a LTS version\n else if (semver.major(currentNodeVersion) % 2 !== 0) {\n logger.warn([\n chalk.yellow(`You are running ${chalk.bold(`Node.js ${currentNodeVersion}`)}`),\n `Strapi only supports ${chalk.bold(chalk.green('LTS versions of Node.js'))}, other versions may not be compatible.`,\n ]);\n }\n}\n"],"names":["checkNodeRequirements","currentNodeVersion","process","versions","node","semver","satisfies","engines","logger","fatal","chalk","red","bold","green","major","warn","yellow"],"mappings":";;;;;;;AAMO,SAASA,qBAAAA,GAAAA;AACd,IAAA,MAAMC,kBAAqBC,GAAAA,OAAAA,CAAQC,QAAQ,CAACC,IAAI;;AAGhD,IAAA,IAAI,CAACC,MAAOC,CAAAA,SAAS,CAACL,kBAAoBM,EAAAA,eAAAA,CAAQH,IAAI,CAAG,EAAA;AACvDI,QAAAA,aAAAA,CAAOC,KAAK,CAAC;AACXC,YAAAA,KAAAA,CAAMC,GAAG,CAAC,CAAC,gBAAgB,EAAED,
|
|
1
|
+
{"version":3,"file":"check-requirements.js","sources":["../../src/utils/check-requirements.ts"],"sourcesContent":["import chalk from 'chalk';\nimport semver from 'semver';\n\nimport { engines } from './engines';\nimport { logger } from './logger';\n\nexport function checkNodeRequirements() {\n const currentNodeVersion = process.versions.node;\n\n // error if the node version isn't supported\n if (!semver.satisfies(currentNodeVersion, engines.node)) {\n logger.fatal([\n chalk.red(`You are running ${chalk.bold(`Node.js ${currentNodeVersion}`)}`),\n `Strapi requires ${chalk.bold(chalk.green(`Node.js ${engines.node}`))}`,\n 'Please make sure to use the right version of Node.',\n ]);\n }\n\n // warn if not using a LTS version\n else if (semver.major(currentNodeVersion) % 2 !== 0) {\n logger.warn([\n chalk.yellow(`You are running ${chalk.bold(`Node.js ${currentNodeVersion}`)}`),\n `Strapi only supports ${chalk.bold(chalk.green('LTS versions of Node.js'))}, other versions may not be compatible.`,\n ]);\n }\n}\n"],"names":["checkNodeRequirements","currentNodeVersion","process","versions","node","semver","satisfies","engines","logger","fatal","chalk","red","bold","green","major","warn","yellow"],"mappings":";;;;;;;AAMO,SAASA,qBAAAA,GAAAA;AACd,IAAA,MAAMC,kBAAqBC,GAAAA,OAAAA,CAAQC,QAAQ,CAACC,IAAI;;AAGhD,IAAA,IAAI,CAACC,MAAOC,CAAAA,SAAS,CAACL,kBAAoBM,EAAAA,eAAAA,CAAQH,IAAI,CAAG,EAAA;AACvDI,QAAAA,aAAAA,CAAOC,KAAK,CAAC;AACXC,YAAAA,KAAAA,CAAMC,GAAG,CAAC,CAAC,gBAAgB,EAAED,KAAAA,CAAME,IAAI,CAAC,CAAC,QAAQ,EAAEX,kBAAAA,CAAAA,CAAoB,CAAG,CAAA,CAAA,CAAA;AAC1E,YAAA,CAAC,gBAAgB,EAAES,KAAME,CAAAA,IAAI,CAACF,KAAMG,CAAAA,KAAK,CAAC,CAAC,QAAQ,EAAEN,eAAQH,CAAAA,IAAI,EAAE,CAAI,CAAA,CAAA,CAAA;AACvE,YAAA;AACD,SAAA,CAAA;AACH,KAAA,MAGK,IAAIC,MAAOS,CAAAA,KAAK,CAACb,kBAAAA,CAAAA,GAAsB,MAAM,CAAG,EAAA;AACnDO,QAAAA,aAAAA,CAAOO,IAAI,CAAC;AACVL,YAAAA,KAAAA,CAAMM,MAAM,CAAC,CAAC,gBAAgB,EAAEN,KAAAA,CAAME,IAAI,CAAC,CAAC,QAAQ,EAAEX,kBAAAA,CAAAA,CAAoB,CAAG,CAAA,CAAA,CAAA;YAC7E,CAAC,qBAAqB,EAAES,KAAAA,CAAME,IAAI,CAACF,MAAMG,KAAK,CAAC,yBAA4B,CAAA,CAAA,CAAA,uCAAuC;AACnH,SAAA,CAAA;AACH;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-requirements.mjs","sources":["../../src/utils/check-requirements.ts"],"sourcesContent":["import chalk from 'chalk';\nimport semver from 'semver';\n\nimport { engines } from './engines';\nimport { logger } from './logger';\n\nexport function checkNodeRequirements() {\n const currentNodeVersion = process.versions.node;\n\n // error if the node version isn't supported\n if (!semver.satisfies(currentNodeVersion, engines.node)) {\n logger.fatal([\n chalk.red(`You are running ${chalk.bold(`Node.js ${currentNodeVersion}`)}`),\n `Strapi requires ${chalk.bold(chalk.green(`Node.js ${engines.node}`))}`,\n 'Please make sure to use the right version of Node.',\n ]);\n }\n\n // warn if not using a LTS version\n else if (semver.major(currentNodeVersion) % 2 !== 0) {\n logger.warn([\n chalk.yellow(`You are running ${chalk.bold(`Node.js ${currentNodeVersion}`)}`),\n `Strapi only supports ${chalk.bold(chalk.green('LTS versions of Node.js'))}, other versions may not be compatible.`,\n ]);\n }\n}\n"],"names":["checkNodeRequirements","currentNodeVersion","process","versions","node","semver","satisfies","engines","logger","fatal","chalk","red","bold","green","major","warn","yellow"],"mappings":";;;;;AAMO,SAASA,qBAAAA,GAAAA;AACd,IAAA,MAAMC,kBAAqBC,GAAAA,OAAAA,CAAQC,QAAQ,CAACC,IAAI;;AAGhD,IAAA,IAAI,CAACC,MAAOC,CAAAA,SAAS,CAACL,kBAAoBM,EAAAA,OAAAA,CAAQH,IAAI,CAAG,EAAA;AACvDI,QAAAA,MAAAA,CAAOC,KAAK,CAAC;AACXC,YAAAA,KAAAA,CAAMC,GAAG,CAAC,CAAC,gBAAgB,EAAED,
|
|
1
|
+
{"version":3,"file":"check-requirements.mjs","sources":["../../src/utils/check-requirements.ts"],"sourcesContent":["import chalk from 'chalk';\nimport semver from 'semver';\n\nimport { engines } from './engines';\nimport { logger } from './logger';\n\nexport function checkNodeRequirements() {\n const currentNodeVersion = process.versions.node;\n\n // error if the node version isn't supported\n if (!semver.satisfies(currentNodeVersion, engines.node)) {\n logger.fatal([\n chalk.red(`You are running ${chalk.bold(`Node.js ${currentNodeVersion}`)}`),\n `Strapi requires ${chalk.bold(chalk.green(`Node.js ${engines.node}`))}`,\n 'Please make sure to use the right version of Node.',\n ]);\n }\n\n // warn if not using a LTS version\n else if (semver.major(currentNodeVersion) % 2 !== 0) {\n logger.warn([\n chalk.yellow(`You are running ${chalk.bold(`Node.js ${currentNodeVersion}`)}`),\n `Strapi only supports ${chalk.bold(chalk.green('LTS versions of Node.js'))}, other versions may not be compatible.`,\n ]);\n }\n}\n"],"names":["checkNodeRequirements","currentNodeVersion","process","versions","node","semver","satisfies","engines","logger","fatal","chalk","red","bold","green","major","warn","yellow"],"mappings":";;;;;AAMO,SAASA,qBAAAA,GAAAA;AACd,IAAA,MAAMC,kBAAqBC,GAAAA,OAAAA,CAAQC,QAAQ,CAACC,IAAI;;AAGhD,IAAA,IAAI,CAACC,MAAOC,CAAAA,SAAS,CAACL,kBAAoBM,EAAAA,OAAAA,CAAQH,IAAI,CAAG,EAAA;AACvDI,QAAAA,MAAAA,CAAOC,KAAK,CAAC;AACXC,YAAAA,KAAAA,CAAMC,GAAG,CAAC,CAAC,gBAAgB,EAAED,KAAAA,CAAME,IAAI,CAAC,CAAC,QAAQ,EAAEX,kBAAAA,CAAAA,CAAoB,CAAG,CAAA,CAAA,CAAA;AAC1E,YAAA,CAAC,gBAAgB,EAAES,KAAME,CAAAA,IAAI,CAACF,KAAMG,CAAAA,KAAK,CAAC,CAAC,QAAQ,EAAEN,OAAQH,CAAAA,IAAI,EAAE,CAAI,CAAA,CAAA,CAAA;AACvE,YAAA;AACD,SAAA,CAAA;AACH,KAAA,MAGK,IAAIC,MAAOS,CAAAA,KAAK,CAACb,kBAAAA,CAAAA,GAAsB,MAAM,CAAG,EAAA;AACnDO,QAAAA,MAAAA,CAAOO,IAAI,CAAC;AACVL,YAAAA,KAAAA,CAAMM,MAAM,CAAC,CAAC,gBAAgB,EAAEN,KAAAA,CAAME,IAAI,CAAC,CAAC,QAAQ,EAAEX,kBAAAA,CAAAA,CAAoB,CAAG,CAAA,CAAA,CAAA;YAC7E,CAAC,qBAAqB,EAAES,KAAAA,CAAME,IAAI,CAACF,MAAMG,KAAK,CAAC,yBAA4B,CAAA,CAAA,CAAA,uCAAuC;AACnH,SAAA,CAAA;AACH;AACF;;;;"}
|
package/dist/utils/database.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sources":["../../src/utils/database.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport type { Question } from 'inquirer';\n\nimport type { Scope, Options, DBClient, DBConfig } from '../types';\nimport { logger } from './logger';\n\nconst DBOptions = ['dbclient', 'dbhost', 'dbport', 'dbname', 'dbusername', 'dbpassword'];\n\nconst VALID_CLIENTS = ['sqlite', 'mysql', 'postgres'] as const;\n\nconst DEFAULT_CONFIG: DBConfig = {\n client: 'sqlite',\n connection: {\n filename: '.tmp/data.db',\n },\n};\n\nasync function dbPrompt() {\n const { useDefault } = await inquirer.prompt<{ useDefault: boolean }>([\n {\n type: 'confirm',\n name: 'useDefault',\n message: 'Do you want to use the default database (sqlite) ?',\n default: true,\n },\n ]);\n\n if (useDefault) {\n return DEFAULT_CONFIG;\n }\n\n const { client } = await inquirer.prompt<{ client: DBClient }>([\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({ client }));\n\n const responses = await inquirer.prompt(questions);\n\n return {\n client,\n connection: responses,\n };\n}\n\nexport async function getDatabaseInfos(options: Options): Promise<DBConfig> {\n if (options.skipDb) {\n return DEFAULT_CONFIG;\n }\n\n if (options.dbclient && !VALID_CLIENTS.includes(options.dbclient)) {\n logger.fatal(\n `Invalid --dbclient: ${options.dbclient}, expected one of ${VALID_CLIENTS.join(', ')}`\n );\n }\n\n const matchingArgs = DBOptions.filter((key) => key in options);\n const missingArgs = DBOptions.filter((key) => !(key in options));\n\n if (\n matchingArgs.length > 0 &&\n matchingArgs.length !== DBOptions.length &&\n options.dbclient !== 'sqlite'\n ) {\n logger.fatal(`Required database arguments are missing: ${missingArgs.join(', ')}.`);\n }\n\n const hasDBOptions = DBOptions.some((key) => key in options);\n\n if (!hasDBOptions) {\n if (options.quickstart) {\n return DEFAULT_CONFIG;\n }\n\n return dbPrompt();\n }\n\n if (!options.dbclient) {\n return logger.fatal('Please specify the database client');\n }\n\n const database: DBConfig = {\n client: options.dbclient,\n connection: {\n host: options.dbhost,\n port: options.dbport,\n database: options.dbname,\n username: options.dbusername,\n password: options.dbpassword,\n filename: options.dbfile,\n },\n };\n\n if (options.dbssl !== undefined) {\n database.connection.ssl = options.dbssl === 'true';\n }\n\n return database;\n}\n\nconst sqlClientModule = {\n mysql: { mysql2: '3.9.8' },\n postgres: { pg: '8.8.0' },\n sqlite: { 'better-sqlite3': '
|
|
1
|
+
{"version":3,"file":"database.js","sources":["../../src/utils/database.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport type { Question } from 'inquirer';\n\nimport type { Scope, Options, DBClient, DBConfig } from '../types';\nimport { logger } from './logger';\n\nconst DBOptions = ['dbclient', 'dbhost', 'dbport', 'dbname', 'dbusername', 'dbpassword'];\n\nconst VALID_CLIENTS = ['sqlite', 'mysql', 'postgres'] as const;\n\nconst DEFAULT_CONFIG: DBConfig = {\n client: 'sqlite',\n connection: {\n filename: '.tmp/data.db',\n },\n};\n\nasync function dbPrompt() {\n const { useDefault } = await inquirer.prompt<{ useDefault: boolean }>([\n {\n type: 'confirm',\n name: 'useDefault',\n message: 'Do you want to use the default database (sqlite) ?',\n default: true,\n },\n ]);\n\n if (useDefault) {\n return DEFAULT_CONFIG;\n }\n\n const { client } = await inquirer.prompt<{ client: DBClient }>([\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({ client }));\n\n const responses = await inquirer.prompt(questions);\n\n return {\n client,\n connection: responses,\n };\n}\n\nexport async function getDatabaseInfos(options: Options): Promise<DBConfig> {\n if (options.skipDb) {\n return DEFAULT_CONFIG;\n }\n\n if (options.dbclient && !VALID_CLIENTS.includes(options.dbclient)) {\n logger.fatal(\n `Invalid --dbclient: ${options.dbclient}, expected one of ${VALID_CLIENTS.join(', ')}`\n );\n }\n\n const matchingArgs = DBOptions.filter((key) => key in options);\n const missingArgs = DBOptions.filter((key) => !(key in options));\n\n if (\n matchingArgs.length > 0 &&\n matchingArgs.length !== DBOptions.length &&\n options.dbclient !== 'sqlite'\n ) {\n logger.fatal(`Required database arguments are missing: ${missingArgs.join(', ')}.`);\n }\n\n const hasDBOptions = DBOptions.some((key) => key in options);\n\n if (!hasDBOptions) {\n if (options.quickstart) {\n return DEFAULT_CONFIG;\n }\n\n return dbPrompt();\n }\n\n if (!options.dbclient) {\n return logger.fatal('Please specify the database client');\n }\n\n const database: DBConfig = {\n client: options.dbclient,\n connection: {\n host: options.dbhost,\n port: options.dbport,\n database: options.dbname,\n username: options.dbusername,\n password: options.dbpassword,\n filename: options.dbfile,\n },\n };\n\n if (options.dbssl !== undefined) {\n database.connection.ssl = options.dbssl === 'true';\n }\n\n return database;\n}\n\nconst sqlClientModule = {\n mysql: { mysql2: '3.9.8' },\n postgres: { pg: '8.8.0' },\n sqlite: { 'better-sqlite3': '12.4.1' },\n};\n\nexport function addDatabaseDependencies(scope: Scope) {\n scope.dependencies = {\n ...scope.dependencies,\n ...sqlClientModule[scope.database.client],\n };\n}\n\ninterface QuestionFactory {\n (options: { client: DBClient }): Question;\n}\n\nconst DEFAULT_PORTS = {\n postgres: 5432,\n mysql: 3306,\n sqlite: undefined,\n};\n\nconst database: QuestionFactory = () => ({\n type: 'input',\n name: 'database',\n message: 'Database name:',\n default: 'strapi',\n validate(value: string) {\n if (value.includes('.')) {\n return `The database name can't contain a \".\"`;\n }\n\n return true;\n },\n});\n\nconst host: QuestionFactory = () => ({\n type: 'input',\n name: 'host',\n message: 'Host:',\n default: '127.0.0.1',\n});\n\nconst port: QuestionFactory = ({ client }) => ({\n type: 'input',\n name: 'port',\n message: 'Port:',\n default: DEFAULT_PORTS[client],\n});\n\nconst username: QuestionFactory = () => ({\n type: 'input',\n name: 'username',\n message: 'Username:',\n});\n\nconst password: QuestionFactory = () => ({\n type: 'password',\n name: 'password',\n message: 'Password:',\n mask: '*',\n});\n\nconst ssl: QuestionFactory = () => ({\n type: 'confirm',\n name: 'ssl',\n message: 'Enable SSL connection:',\n default: false,\n});\n\nconst filename: QuestionFactory = () => ({\n type: 'input',\n name: 'filename',\n message: 'Filename:',\n default: '.tmp/data.db',\n});\n\nconst dbQuestions = {\n sqlite: [filename],\n postgres: [database, host, port, username, password, ssl],\n mysql: [database, host, port, username, password, ssl],\n};\n"],"names":["DBOptions","VALID_CLIENTS","DEFAULT_CONFIG","client","connection","filename","dbPrompt","useDefault","inquirer","prompt","type","name","message","default","choices","questions","dbQuestions","map","q","responses","getDatabaseInfos","options","skipDb","dbclient","includes","logger","fatal","join","matchingArgs","filter","key","missingArgs","length","hasDBOptions","some","quickstart","database","host","dbhost","port","dbport","dbname","username","dbusername","password","dbpassword","dbfile","dbssl","undefined","ssl","sqlClientModule","mysql","mysql2","postgres","pg","sqlite","addDatabaseDependencies","scope","dependencies","DEFAULT_PORTS","validate","value","mask"],"mappings":";;;;;AAMA,MAAMA,SAAY,GAAA;AAAC,IAAA,UAAA;AAAY,IAAA,QAAA;AAAU,IAAA,QAAA;AAAU,IAAA,QAAA;AAAU,IAAA,YAAA;AAAc,IAAA;AAAa,CAAA;AAExF,MAAMC,aAAgB,GAAA;AAAC,IAAA,QAAA;AAAU,IAAA,OAAA;AAAS,IAAA;AAAW,CAAA;AAErD,MAAMC,cAA2B,GAAA;IAC/BC,MAAQ,EAAA,QAAA;IACRC,UAAY,EAAA;QACVC,QAAU,EAAA;AACZ;AACF,CAAA;AAEA,eAAeC,QAAAA,GAAAA;AACb,IAAA,MAAM,EAAEC,UAAU,EAAE,GAAG,MAAMC,QAAAA,CAASC,MAAM,CAA0B;AACpE,QAAA;YACEC,IAAM,EAAA,SAAA;YACNC,IAAM,EAAA,YAAA;YACNC,OAAS,EAAA,oDAAA;YACTC,OAAS,EAAA;AACX;AACD,KAAA,CAAA;AAED,IAAA,IAAIN,UAAY,EAAA;QACd,OAAOL,cAAAA;AACT;AAEA,IAAA,MAAM,EAAEC,MAAM,EAAE,GAAG,MAAMK,QAAAA,CAASC,MAAM,CAAuB;AAC7D,QAAA;YACEC,IAAM,EAAA,MAAA;YACNC,IAAM,EAAA,QAAA;YACNC,OAAS,EAAA,qCAAA;YACTE,OAAS,EAAA;AAAC,gBAAA,QAAA;AAAU,gBAAA,UAAA;AAAY,gBAAA;AAAQ,aAAA;YACxCD,OAAS,EAAA;AACX;AACD,KAAA,CAAA;IAED,MAAME,SAAAA,GAAYC,WAAW,CAACb,MAAAA,CAAO,CAACc,GAAG,CAAC,CAACC,CAAAA,GAAMA,CAAE,CAAA;AAAEf,YAAAA;AAAO,SAAA,CAAA,CAAA;AAE5D,IAAA,MAAMgB,SAAY,GAAA,MAAMX,QAASC,CAAAA,MAAM,CAACM,SAAAA,CAAAA;IAExC,OAAO;AACLZ,QAAAA,MAAAA;QACAC,UAAYe,EAAAA;AACd,KAAA;AACF;AAEO,eAAeC,iBAAiBC,OAAgB,EAAA;IACrD,IAAIA,OAAAA,CAAQC,MAAM,EAAE;QAClB,OAAOpB,cAAAA;AACT;IAEA,IAAImB,OAAAA,CAAQE,QAAQ,IAAI,CAACtB,cAAcuB,QAAQ,CAACH,OAAQE,CAAAA,QAAQ,CAAG,EAAA;AACjEE,QAAAA,aAAAA,CAAOC,KAAK,CACV,CAAC,oBAAoB,EAAEL,OAAAA,CAAQE,QAAQ,CAAC,kBAAkB,EAAEtB,aAAc0B,CAAAA,IAAI,CAAC,IAAO,CAAA,CAAA,CAAA,CAAA;AAE1F;AAEA,IAAA,MAAMC,eAAe5B,SAAU6B,CAAAA,MAAM,CAAC,CAACC,MAAQA,GAAOT,IAAAA,OAAAA,CAAAA;IACtD,MAAMU,WAAAA,GAAc/B,UAAU6B,MAAM,CAAC,CAACC,GAAQ,GAAA,EAAEA,GAAAA,IAAOT,OAAM,CAAA,CAAA;AAE7D,IAAA,IACEO,YAAaI,CAAAA,MAAM,GAAG,CAAA,IACtBJ,YAAaI,CAAAA,MAAM,KAAKhC,SAAAA,CAAUgC,MAAM,IACxCX,OAAQE,CAAAA,QAAQ,KAAK,QACrB,EAAA;QACAE,aAAOC,CAAAA,KAAK,CAAC,CAAC,yCAAyC,EAAEK,YAAYJ,IAAI,CAAC,IAAM,CAAA,CAAA,CAAC,CAAC,CAAA;AACpF;AAEA,IAAA,MAAMM,eAAejC,SAAUkC,CAAAA,IAAI,CAAC,CAACJ,MAAQA,GAAOT,IAAAA,OAAAA,CAAAA;AAEpD,IAAA,IAAI,CAACY,YAAc,EAAA;QACjB,IAAIZ,OAAAA,CAAQc,UAAU,EAAE;YACtB,OAAOjC,cAAAA;AACT;QAEA,OAAOI,QAAAA,EAAAA;AACT;IAEA,IAAI,CAACe,OAAQE,CAAAA,QAAQ,EAAE;QACrB,OAAOE,aAAAA,CAAOC,KAAK,CAAC,oCAAA,CAAA;AACtB;AAEA,IAAA,MAAMU,QAAqB,GAAA;AACzBjC,QAAAA,MAAAA,EAAQkB,QAAQE,QAAQ;QACxBnB,UAAY,EAAA;AACViC,YAAAA,IAAAA,EAAMhB,QAAQiB,MAAM;AACpBC,YAAAA,IAAAA,EAAMlB,QAAQmB,MAAM;AACpBJ,YAAAA,QAAAA,EAAUf,QAAQoB,MAAM;AACxBC,YAAAA,QAAAA,EAAUrB,QAAQsB,UAAU;AAC5BC,YAAAA,QAAAA,EAAUvB,QAAQwB,UAAU;AAC5BxC,YAAAA,QAAAA,EAAUgB,QAAQyB;AACpB;AACF,KAAA;IAEA,IAAIzB,OAAAA,CAAQ0B,KAAK,KAAKC,SAAW,EAAA;AAC/BZ,QAAAA,QAAAA,CAAShC,UAAU,CAAC6C,GAAG,GAAG5B,OAAAA,CAAQ0B,KAAK,KAAK,MAAA;AAC9C;IAEA,OAAOX,QAAAA;AACT;AAEA,MAAMc,eAAkB,GAAA;IACtBC,KAAO,EAAA;QAAEC,MAAQ,EAAA;AAAQ,KAAA;IACzBC,QAAU,EAAA;QAAEC,EAAI,EAAA;AAAQ,KAAA;IACxBC,MAAQ,EAAA;QAAE,gBAAkB,EAAA;AAAS;AACvC,CAAA;AAEO,SAASC,wBAAwBC,KAAY,EAAA;AAClDA,IAAAA,KAAAA,CAAMC,YAAY,GAAG;AACnB,QAAA,GAAGD,MAAMC,YAAY;AACrB,QAAA,GAAGR,eAAe,CAACO,KAAAA,CAAMrB,QAAQ,CAACjC,MAAM;AAC1C,KAAA;AACF;AAMA,MAAMwD,aAAgB,GAAA;IACpBN,QAAU,EAAA,IAAA;IACVF,KAAO,EAAA,IAAA;IACPI,MAAQP,EAAAA;AACV,CAAA;AAEA,MAAMZ,QAAAA,GAA4B,KAAO;QACvC1B,IAAM,EAAA,OAAA;QACNC,IAAM,EAAA,UAAA;QACNC,OAAS,EAAA,gBAAA;QACTC,OAAS,EAAA,QAAA;AACT+C,QAAAA,QAAAA,CAAAA,CAASC,KAAa,EAAA;YACpB,IAAIA,KAAAA,CAAMrC,QAAQ,CAAC,GAAM,CAAA,EAAA;gBACvB,OAAO,CAAC,qCAAqC,CAAC;AAChD;YAEA,OAAO,IAAA;AACT;KACF,CAAA;AAEA,MAAMa,IAAAA,GAAwB,KAAO;QACnC3B,IAAM,EAAA,OAAA;QACNC,IAAM,EAAA,MAAA;QACNC,OAAS,EAAA,OAAA;QACTC,OAAS,EAAA;KACX,CAAA;AAEA,MAAM0B,OAAwB,CAAC,EAAEpC,MAAM,EAAE,IAAM;QAC7CO,IAAM,EAAA,OAAA;QACNC,IAAM,EAAA,MAAA;QACNC,OAAS,EAAA,OAAA;QACTC,OAAS8C,EAAAA,aAAa,CAACxD,MAAO;KAChC,CAAA;AAEA,MAAMuC,QAAAA,GAA4B,KAAO;QACvChC,IAAM,EAAA,OAAA;QACNC,IAAM,EAAA,UAAA;QACNC,OAAS,EAAA;KACX,CAAA;AAEA,MAAMgC,QAAAA,GAA4B,KAAO;QACvClC,IAAM,EAAA,UAAA;QACNC,IAAM,EAAA,UAAA;QACNC,OAAS,EAAA,WAAA;QACTkD,IAAM,EAAA;KACR,CAAA;AAEA,MAAMb,GAAAA,GAAuB,KAAO;QAClCvC,IAAM,EAAA,SAAA;QACNC,IAAM,EAAA,KAAA;QACNC,OAAS,EAAA,wBAAA;QACTC,OAAS,EAAA;KACX,CAAA;AAEA,MAAMR,QAAAA,GAA4B,KAAO;QACvCK,IAAM,EAAA,OAAA;QACNC,IAAM,EAAA,UAAA;QACNC,OAAS,EAAA,WAAA;QACTC,OAAS,EAAA;KACX,CAAA;AAEA,MAAMG,WAAc,GAAA;IAClBuC,MAAQ,EAAA;AAAClD,QAAAA;AAAS,KAAA;IAClBgD,QAAU,EAAA;AAACjB,QAAAA,QAAAA;AAAUC,QAAAA,IAAAA;AAAME,QAAAA,IAAAA;AAAMG,QAAAA,QAAAA;AAAUE,QAAAA,QAAAA;AAAUK,QAAAA;AAAI,KAAA;IACzDE,KAAO,EAAA;AAACf,QAAAA,QAAAA;AAAUC,QAAAA,IAAAA;AAAME,QAAAA,IAAAA;AAAMG,QAAAA,QAAAA;AAAUE,QAAAA,QAAAA;AAAUK,QAAAA;AAAI;AACxD,CAAA;;;;;"}
|
package/dist/utils/database.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.mjs","sources":["../../src/utils/database.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport type { Question } from 'inquirer';\n\nimport type { Scope, Options, DBClient, DBConfig } from '../types';\nimport { logger } from './logger';\n\nconst DBOptions = ['dbclient', 'dbhost', 'dbport', 'dbname', 'dbusername', 'dbpassword'];\n\nconst VALID_CLIENTS = ['sqlite', 'mysql', 'postgres'] as const;\n\nconst DEFAULT_CONFIG: DBConfig = {\n client: 'sqlite',\n connection: {\n filename: '.tmp/data.db',\n },\n};\n\nasync function dbPrompt() {\n const { useDefault } = await inquirer.prompt<{ useDefault: boolean }>([\n {\n type: 'confirm',\n name: 'useDefault',\n message: 'Do you want to use the default database (sqlite) ?',\n default: true,\n },\n ]);\n\n if (useDefault) {\n return DEFAULT_CONFIG;\n }\n\n const { client } = await inquirer.prompt<{ client: DBClient }>([\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({ client }));\n\n const responses = await inquirer.prompt(questions);\n\n return {\n client,\n connection: responses,\n };\n}\n\nexport async function getDatabaseInfos(options: Options): Promise<DBConfig> {\n if (options.skipDb) {\n return DEFAULT_CONFIG;\n }\n\n if (options.dbclient && !VALID_CLIENTS.includes(options.dbclient)) {\n logger.fatal(\n `Invalid --dbclient: ${options.dbclient}, expected one of ${VALID_CLIENTS.join(', ')}`\n );\n }\n\n const matchingArgs = DBOptions.filter((key) => key in options);\n const missingArgs = DBOptions.filter((key) => !(key in options));\n\n if (\n matchingArgs.length > 0 &&\n matchingArgs.length !== DBOptions.length &&\n options.dbclient !== 'sqlite'\n ) {\n logger.fatal(`Required database arguments are missing: ${missingArgs.join(', ')}.`);\n }\n\n const hasDBOptions = DBOptions.some((key) => key in options);\n\n if (!hasDBOptions) {\n if (options.quickstart) {\n return DEFAULT_CONFIG;\n }\n\n return dbPrompt();\n }\n\n if (!options.dbclient) {\n return logger.fatal('Please specify the database client');\n }\n\n const database: DBConfig = {\n client: options.dbclient,\n connection: {\n host: options.dbhost,\n port: options.dbport,\n database: options.dbname,\n username: options.dbusername,\n password: options.dbpassword,\n filename: options.dbfile,\n },\n };\n\n if (options.dbssl !== undefined) {\n database.connection.ssl = options.dbssl === 'true';\n }\n\n return database;\n}\n\nconst sqlClientModule = {\n mysql: { mysql2: '3.9.8' },\n postgres: { pg: '8.8.0' },\n sqlite: { 'better-sqlite3': '
|
|
1
|
+
{"version":3,"file":"database.mjs","sources":["../../src/utils/database.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport type { Question } from 'inquirer';\n\nimport type { Scope, Options, DBClient, DBConfig } from '../types';\nimport { logger } from './logger';\n\nconst DBOptions = ['dbclient', 'dbhost', 'dbport', 'dbname', 'dbusername', 'dbpassword'];\n\nconst VALID_CLIENTS = ['sqlite', 'mysql', 'postgres'] as const;\n\nconst DEFAULT_CONFIG: DBConfig = {\n client: 'sqlite',\n connection: {\n filename: '.tmp/data.db',\n },\n};\n\nasync function dbPrompt() {\n const { useDefault } = await inquirer.prompt<{ useDefault: boolean }>([\n {\n type: 'confirm',\n name: 'useDefault',\n message: 'Do you want to use the default database (sqlite) ?',\n default: true,\n },\n ]);\n\n if (useDefault) {\n return DEFAULT_CONFIG;\n }\n\n const { client } = await inquirer.prompt<{ client: DBClient }>([\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({ client }));\n\n const responses = await inquirer.prompt(questions);\n\n return {\n client,\n connection: responses,\n };\n}\n\nexport async function getDatabaseInfos(options: Options): Promise<DBConfig> {\n if (options.skipDb) {\n return DEFAULT_CONFIG;\n }\n\n if (options.dbclient && !VALID_CLIENTS.includes(options.dbclient)) {\n logger.fatal(\n `Invalid --dbclient: ${options.dbclient}, expected one of ${VALID_CLIENTS.join(', ')}`\n );\n }\n\n const matchingArgs = DBOptions.filter((key) => key in options);\n const missingArgs = DBOptions.filter((key) => !(key in options));\n\n if (\n matchingArgs.length > 0 &&\n matchingArgs.length !== DBOptions.length &&\n options.dbclient !== 'sqlite'\n ) {\n logger.fatal(`Required database arguments are missing: ${missingArgs.join(', ')}.`);\n }\n\n const hasDBOptions = DBOptions.some((key) => key in options);\n\n if (!hasDBOptions) {\n if (options.quickstart) {\n return DEFAULT_CONFIG;\n }\n\n return dbPrompt();\n }\n\n if (!options.dbclient) {\n return logger.fatal('Please specify the database client');\n }\n\n const database: DBConfig = {\n client: options.dbclient,\n connection: {\n host: options.dbhost,\n port: options.dbport,\n database: options.dbname,\n username: options.dbusername,\n password: options.dbpassword,\n filename: options.dbfile,\n },\n };\n\n if (options.dbssl !== undefined) {\n database.connection.ssl = options.dbssl === 'true';\n }\n\n return database;\n}\n\nconst sqlClientModule = {\n mysql: { mysql2: '3.9.8' },\n postgres: { pg: '8.8.0' },\n sqlite: { 'better-sqlite3': '12.4.1' },\n};\n\nexport function addDatabaseDependencies(scope: Scope) {\n scope.dependencies = {\n ...scope.dependencies,\n ...sqlClientModule[scope.database.client],\n };\n}\n\ninterface QuestionFactory {\n (options: { client: DBClient }): Question;\n}\n\nconst DEFAULT_PORTS = {\n postgres: 5432,\n mysql: 3306,\n sqlite: undefined,\n};\n\nconst database: QuestionFactory = () => ({\n type: 'input',\n name: 'database',\n message: 'Database name:',\n default: 'strapi',\n validate(value: string) {\n if (value.includes('.')) {\n return `The database name can't contain a \".\"`;\n }\n\n return true;\n },\n});\n\nconst host: QuestionFactory = () => ({\n type: 'input',\n name: 'host',\n message: 'Host:',\n default: '127.0.0.1',\n});\n\nconst port: QuestionFactory = ({ client }) => ({\n type: 'input',\n name: 'port',\n message: 'Port:',\n default: DEFAULT_PORTS[client],\n});\n\nconst username: QuestionFactory = () => ({\n type: 'input',\n name: 'username',\n message: 'Username:',\n});\n\nconst password: QuestionFactory = () => ({\n type: 'password',\n name: 'password',\n message: 'Password:',\n mask: '*',\n});\n\nconst ssl: QuestionFactory = () => ({\n type: 'confirm',\n name: 'ssl',\n message: 'Enable SSL connection:',\n default: false,\n});\n\nconst filename: QuestionFactory = () => ({\n type: 'input',\n name: 'filename',\n message: 'Filename:',\n default: '.tmp/data.db',\n});\n\nconst dbQuestions = {\n sqlite: [filename],\n postgres: [database, host, port, username, password, ssl],\n mysql: [database, host, port, username, password, ssl],\n};\n"],"names":["DBOptions","VALID_CLIENTS","DEFAULT_CONFIG","client","connection","filename","dbPrompt","useDefault","inquirer","prompt","type","name","message","default","choices","questions","dbQuestions","map","q","responses","getDatabaseInfos","options","skipDb","dbclient","includes","logger","fatal","join","matchingArgs","filter","key","missingArgs","length","hasDBOptions","some","quickstart","database","host","dbhost","port","dbport","dbname","username","dbusername","password","dbpassword","dbfile","dbssl","undefined","ssl","sqlClientModule","mysql","mysql2","postgres","pg","sqlite","addDatabaseDependencies","scope","dependencies","DEFAULT_PORTS","validate","value","mask"],"mappings":"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"}
|
package/dist/utils/engines.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engines.js","sources":["../../src/utils/engines.ts"],"sourcesContent":["export const engines = {\n node: '>=
|
|
1
|
+
{"version":3,"file":"engines.js","sources":["../../src/utils/engines.ts"],"sourcesContent":["export const engines = {\n node: '>=20.0.0 <=24.x.x',\n npm: '>=6.0.0',\n};\n"],"names":["engines","node","npm"],"mappings":";;MAAaA,OAAU,GAAA;IACrBC,IAAM,EAAA,mBAAA;IACNC,GAAK,EAAA;AACP;;;;"}
|
package/dist/utils/engines.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engines.mjs","sources":["../../src/utils/engines.ts"],"sourcesContent":["export const engines = {\n node: '>=
|
|
1
|
+
{"version":3,"file":"engines.mjs","sources":["../../src/utils/engines.ts"],"sourcesContent":["export const engines = {\n node: '>=20.0.0 <=24.x.x',\n npm: '>=6.0.0',\n};\n"],"names":["engines","node","npm"],"mappings":"MAAaA,OAAU,GAAA;IACrBC,IAAM,EAAA,mBAAA;IACNC,GAAK,EAAA;AACP;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-package-manager-args.js","sources":["../../src/utils/get-package-manager-args.ts"],"sourcesContent":["import execa from 'execa';\nimport semver from 'semver';\n\nconst installArguments = ['install'];\n\ntype VersionedArgumentsMap = {\n [key: string]: string[]; // Maps semver ranges to argument arrays\n};\n\ntype VersionedEnvMap = {\n [key: string]: Record<string, string>; // Maps semver ranges to environment variables\n};\n\n// Set command line options for specific package managers, with full semver ranges\nconst installArgumentsMap: {\n [key: string]: VersionedArgumentsMap;\n} = {\n npm: {\n '*': ['--legacy-peer-deps'],\n },\n yarn: {\n '<4': ['--network-timeout', '1000000'],\n '*': [],\n },\n pnpm: {\n '*': [],\n },\n};\n\n// Set environment variables for specific package managers, with full semver ranges\nconst installEnvMap: {\n [key: string]: VersionedEnvMap;\n} = {\n yarn: {\n '>=4': { YARN_HTTP_TIMEOUT: '1000000' },\n '*': {},\n },\n npm: {\n '*': {},\n },\n pnpm: {\n '*': {},\n },\n};\n\n/**\n * Retrieves the version of the specified package manager.\n *\n * Executes the package manager's `--version` command to determine its version.\n *\n * @param packageManager - The name of the package manager (e.g., 'npm', 'yarn', 'pnpm').\n * @param options - Optional execution options to pass to `execa`.\n * @returns A promise that resolves to the trimmed version string of the package manager.\n *\n * @throws Will throw an error if the package manager's version cannot be determined.\n */\nexport const getPackageManagerVersion = async (\n packageManager: string,\n options?: execa.Options\n): Promise<string> => {\n try {\n const { stdout } = await execa(packageManager, ['--version'], options);\n return stdout.trim();\n } catch (err) {\n throw new Error(`Error detecting ${packageManager} version: ${err}`);\n }\n};\n\n/**\n * Merges all matching semver ranges using a custom merge function.\n *\n * Iterates over the `versionMap`, checking if the provided `version` satisfies each semver range.\n * If it does, the corresponding value is merged using the provided `mergeFn`.\n * The merging starts with the value associated with the wildcard '*' key.\n *\n * @param version - The package manager version to check against the ranges.\n * @param versionMap - A map of semver ranges to corresponding values (arguments or environment variables).\n * @param mergeFn - A function that defines how to merge two values (accumulated and current).\n * @returns The merged result of all matching ranges.\n */\nfunction mergeMatchingVersionRanges<T>(\n version: string,\n versionMap: { [key: string]: T },\n mergeFn: (acc: T, curr: T) => T\n): T {\n return Object.keys(versionMap).reduce((acc, range) => {\n if (semver.satisfies(version, range) || range === '*') {\n return mergeFn(acc, versionMap[range]);\n }\n return acc;\n }, versionMap['*']); // Start with the wildcard entry\n}\n\nfunction mergeArguments(acc: string[], curr: string[]): string[] {\n return [...acc, ...curr];\n}\n\nfunction mergeEnvVars(\n acc: Record<string, string>,\n curr: Record<string, string>\n): Record<string, string> {\n return { ...acc, ...curr };\n}\n\n/**\n * Retrieves the install arguments and environment variables for a given package manager.\n *\n * This function determines the correct command line arguments and environment variables\n * based on the package manager's version. It uses predefined semver ranges to match\n * the package manager's version and merges all applicable settings.\n *\n * The arguments and environment variables are sourced from:\n * - `installArgumentsMap` for command line arguments.\n * - `installEnvMap` for environment variables.\n *\n * The function ensures that all matching semver ranges are considered and merged appropriately.\n * It always includes the base `installArguments` (e.g., `['install']`) and applies any additional\n * arguments or environment variables as defined by the matched version ranges.\n *\n * @param packageManager - The name of the package manager (e.g., 'npm', 'yarn', 'pnpm').\n * @param options - Optional execution options to pass to `execa`.\n * @returns An object containing:\n * - `cmdArgs`: The full array of install arguments for the given package manager and version.\n * - `envArgs`: The merged environment variables applicable to the package manager and version.\n *\n * @throws Will throw an error if the package manager version cannot be determined.\n */\nexport const getInstallArgs = async (packageManager: string, options?: execa.Options) => {\n const packageManagerVersion = await getPackageManagerVersion(packageManager, options);\n\n // Get environment variables\n const envMap = installEnvMap[packageManager];\n const envArgs = packageManagerVersion\n ? mergeMatchingVersionRanges(packageManagerVersion, envMap, mergeEnvVars)\n : envMap['*'];\n\n // Get install arguments\n const argsMap = installArgumentsMap[packageManager];\n const cmdArgs = packageManagerVersion\n ? mergeMatchingVersionRanges(packageManagerVersion, argsMap, mergeArguments)\n : argsMap['*'];\n\n return { envArgs, cmdArgs: [...installArguments, ...cmdArgs], version: packageManagerVersion };\n};\n"],"names":["installArguments","installArgumentsMap","npm","yarn","pnpm","installEnvMap","YARN_HTTP_TIMEOUT","getPackageManagerVersion","packageManager","options","stdout","execa","trim","err","Error","mergeMatchingVersionRanges","version","versionMap","mergeFn","Object","keys","reduce","acc","range","semver","satisfies","mergeArguments","curr","mergeEnvVars","getInstallArgs","packageManagerVersion","envMap","envArgs","argsMap","cmdArgs"],"mappings":";;;;;AAGA,MAAMA,gBAAmB,GAAA;AAAC,IAAA;AAAU,CAAA;AAUpC;AACA,MAAMC,mBAEF,GAAA;IACFC,GAAK,EAAA;QACH,GAAK,EAAA;AAAC,YAAA;AAAqB;AAC7B,KAAA;IACAC,IAAM,EAAA;QACJ,IAAM,EAAA;AAAC,YAAA,mBAAA;AAAqB,YAAA;AAAU,SAAA;AACtC,QAAA,GAAA,EAAK;AACP,KAAA;IACAC,IAAM,EAAA;AACJ,QAAA,GAAA,EAAK;AACP;AACF,CAAA;AAEA;AACA,MAAMC,aAEF,GAAA;IACFF,IAAM,EAAA;QACJ,KAAO,EAAA;YAAEG,iBAAmB,EAAA;AAAU,SAAA;AACtC,QAAA,GAAA,EAAK;AACP,KAAA;IACAJ,GAAK,EAAA;AACH,QAAA,GAAA,EAAK;AACP,KAAA;IACAE,IAAM,EAAA;AACJ,QAAA,GAAA,EAAK;AACP;AACF,CAAA;AAEA;;;;;;;;;;AAUC,IACM,MAAMG,wBAA2B,GAAA,OACtCC,cACAC,EAAAA,OAAAA,GAAAA;IAEA,IAAI;AACF,QAAA,MAAM,EAAEC,MAAM,EAAE,GAAG,MAAMC,MAAMH,cAAgB,EAAA;AAAC,YAAA;SAAY,EAAEC,OAAAA,CAAAA;AAC9D,QAAA,OAAOC,OAAOE,IAAI,EAAA;AACpB,KAAA,CAAE,OAAOC,GAAK,EAAA;QACZ,MAAM,IAAIC,MAAM,CAAC,gBAAgB,EAAEN,cAAe,CAAA,UAAU,EAAEK,
|
|
1
|
+
{"version":3,"file":"get-package-manager-args.js","sources":["../../src/utils/get-package-manager-args.ts"],"sourcesContent":["import execa from 'execa';\nimport semver from 'semver';\n\nconst installArguments = ['install'];\n\ntype VersionedArgumentsMap = {\n [key: string]: string[]; // Maps semver ranges to argument arrays\n};\n\ntype VersionedEnvMap = {\n [key: string]: Record<string, string>; // Maps semver ranges to environment variables\n};\n\n// Set command line options for specific package managers, with full semver ranges\nconst installArgumentsMap: {\n [key: string]: VersionedArgumentsMap;\n} = {\n npm: {\n '*': ['--legacy-peer-deps'],\n },\n yarn: {\n '<4': ['--network-timeout', '1000000'],\n '*': [],\n },\n pnpm: {\n '*': [],\n },\n};\n\n// Set environment variables for specific package managers, with full semver ranges\nconst installEnvMap: {\n [key: string]: VersionedEnvMap;\n} = {\n yarn: {\n '>=4': { YARN_HTTP_TIMEOUT: '1000000' },\n '*': {},\n },\n npm: {\n '*': {},\n },\n pnpm: {\n '*': {},\n },\n};\n\n/**\n * Retrieves the version of the specified package manager.\n *\n * Executes the package manager's `--version` command to determine its version.\n *\n * @param packageManager - The name of the package manager (e.g., 'npm', 'yarn', 'pnpm').\n * @param options - Optional execution options to pass to `execa`.\n * @returns A promise that resolves to the trimmed version string of the package manager.\n *\n * @throws Will throw an error if the package manager's version cannot be determined.\n */\nexport const getPackageManagerVersion = async (\n packageManager: string,\n options?: execa.Options\n): Promise<string> => {\n try {\n const { stdout } = await execa(packageManager, ['--version'], options);\n return stdout.trim();\n } catch (err) {\n throw new Error(`Error detecting ${packageManager} version: ${err}`);\n }\n};\n\n/**\n * Merges all matching semver ranges using a custom merge function.\n *\n * Iterates over the `versionMap`, checking if the provided `version` satisfies each semver range.\n * If it does, the corresponding value is merged using the provided `mergeFn`.\n * The merging starts with the value associated with the wildcard '*' key.\n *\n * @param version - The package manager version to check against the ranges.\n * @param versionMap - A map of semver ranges to corresponding values (arguments or environment variables).\n * @param mergeFn - A function that defines how to merge two values (accumulated and current).\n * @returns The merged result of all matching ranges.\n */\nfunction mergeMatchingVersionRanges<T>(\n version: string,\n versionMap: { [key: string]: T },\n mergeFn: (acc: T, curr: T) => T\n): T {\n return Object.keys(versionMap).reduce((acc, range) => {\n if (semver.satisfies(version, range) || range === '*') {\n return mergeFn(acc, versionMap[range]);\n }\n return acc;\n }, versionMap['*']); // Start with the wildcard entry\n}\n\nfunction mergeArguments(acc: string[], curr: string[]): string[] {\n return [...acc, ...curr];\n}\n\nfunction mergeEnvVars(\n acc: Record<string, string>,\n curr: Record<string, string>\n): Record<string, string> {\n return { ...acc, ...curr };\n}\n\n/**\n * Retrieves the install arguments and environment variables for a given package manager.\n *\n * This function determines the correct command line arguments and environment variables\n * based on the package manager's version. It uses predefined semver ranges to match\n * the package manager's version and merges all applicable settings.\n *\n * The arguments and environment variables are sourced from:\n * - `installArgumentsMap` for command line arguments.\n * - `installEnvMap` for environment variables.\n *\n * The function ensures that all matching semver ranges are considered and merged appropriately.\n * It always includes the base `installArguments` (e.g., `['install']`) and applies any additional\n * arguments or environment variables as defined by the matched version ranges.\n *\n * @param packageManager - The name of the package manager (e.g., 'npm', 'yarn', 'pnpm').\n * @param options - Optional execution options to pass to `execa`.\n * @returns An object containing:\n * - `cmdArgs`: The full array of install arguments for the given package manager and version.\n * - `envArgs`: The merged environment variables applicable to the package manager and version.\n *\n * @throws Will throw an error if the package manager version cannot be determined.\n */\nexport const getInstallArgs = async (packageManager: string, options?: execa.Options) => {\n const packageManagerVersion = await getPackageManagerVersion(packageManager, options);\n\n // Get environment variables\n const envMap = installEnvMap[packageManager];\n const envArgs = packageManagerVersion\n ? mergeMatchingVersionRanges(packageManagerVersion, envMap, mergeEnvVars)\n : envMap['*'];\n\n // Get install arguments\n const argsMap = installArgumentsMap[packageManager];\n const cmdArgs = packageManagerVersion\n ? mergeMatchingVersionRanges(packageManagerVersion, argsMap, mergeArguments)\n : argsMap['*'];\n\n return { envArgs, cmdArgs: [...installArguments, ...cmdArgs], version: packageManagerVersion };\n};\n"],"names":["installArguments","installArgumentsMap","npm","yarn","pnpm","installEnvMap","YARN_HTTP_TIMEOUT","getPackageManagerVersion","packageManager","options","stdout","execa","trim","err","Error","mergeMatchingVersionRanges","version","versionMap","mergeFn","Object","keys","reduce","acc","range","semver","satisfies","mergeArguments","curr","mergeEnvVars","getInstallArgs","packageManagerVersion","envMap","envArgs","argsMap","cmdArgs"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-package-manager-args.mjs","sources":["../../src/utils/get-package-manager-args.ts"],"sourcesContent":["import execa from 'execa';\nimport semver from 'semver';\n\nconst installArguments = ['install'];\n\ntype VersionedArgumentsMap = {\n [key: string]: string[]; // Maps semver ranges to argument arrays\n};\n\ntype VersionedEnvMap = {\n [key: string]: Record<string, string>; // Maps semver ranges to environment variables\n};\n\n// Set command line options for specific package managers, with full semver ranges\nconst installArgumentsMap: {\n [key: string]: VersionedArgumentsMap;\n} = {\n npm: {\n '*': ['--legacy-peer-deps'],\n },\n yarn: {\n '<4': ['--network-timeout', '1000000'],\n '*': [],\n },\n pnpm: {\n '*': [],\n },\n};\n\n// Set environment variables for specific package managers, with full semver ranges\nconst installEnvMap: {\n [key: string]: VersionedEnvMap;\n} = {\n yarn: {\n '>=4': { YARN_HTTP_TIMEOUT: '1000000' },\n '*': {},\n },\n npm: {\n '*': {},\n },\n pnpm: {\n '*': {},\n },\n};\n\n/**\n * Retrieves the version of the specified package manager.\n *\n * Executes the package manager's `--version` command to determine its version.\n *\n * @param packageManager - The name of the package manager (e.g., 'npm', 'yarn', 'pnpm').\n * @param options - Optional execution options to pass to `execa`.\n * @returns A promise that resolves to the trimmed version string of the package manager.\n *\n * @throws Will throw an error if the package manager's version cannot be determined.\n */\nexport const getPackageManagerVersion = async (\n packageManager: string,\n options?: execa.Options\n): Promise<string> => {\n try {\n const { stdout } = await execa(packageManager, ['--version'], options);\n return stdout.trim();\n } catch (err) {\n throw new Error(`Error detecting ${packageManager} version: ${err}`);\n }\n};\n\n/**\n * Merges all matching semver ranges using a custom merge function.\n *\n * Iterates over the `versionMap`, checking if the provided `version` satisfies each semver range.\n * If it does, the corresponding value is merged using the provided `mergeFn`.\n * The merging starts with the value associated with the wildcard '*' key.\n *\n * @param version - The package manager version to check against the ranges.\n * @param versionMap - A map of semver ranges to corresponding values (arguments or environment variables).\n * @param mergeFn - A function that defines how to merge two values (accumulated and current).\n * @returns The merged result of all matching ranges.\n */\nfunction mergeMatchingVersionRanges<T>(\n version: string,\n versionMap: { [key: string]: T },\n mergeFn: (acc: T, curr: T) => T\n): T {\n return Object.keys(versionMap).reduce((acc, range) => {\n if (semver.satisfies(version, range) || range === '*') {\n return mergeFn(acc, versionMap[range]);\n }\n return acc;\n }, versionMap['*']); // Start with the wildcard entry\n}\n\nfunction mergeArguments(acc: string[], curr: string[]): string[] {\n return [...acc, ...curr];\n}\n\nfunction mergeEnvVars(\n acc: Record<string, string>,\n curr: Record<string, string>\n): Record<string, string> {\n return { ...acc, ...curr };\n}\n\n/**\n * Retrieves the install arguments and environment variables for a given package manager.\n *\n * This function determines the correct command line arguments and environment variables\n * based on the package manager's version. It uses predefined semver ranges to match\n * the package manager's version and merges all applicable settings.\n *\n * The arguments and environment variables are sourced from:\n * - `installArgumentsMap` for command line arguments.\n * - `installEnvMap` for environment variables.\n *\n * The function ensures that all matching semver ranges are considered and merged appropriately.\n * It always includes the base `installArguments` (e.g., `['install']`) and applies any additional\n * arguments or environment variables as defined by the matched version ranges.\n *\n * @param packageManager - The name of the package manager (e.g., 'npm', 'yarn', 'pnpm').\n * @param options - Optional execution options to pass to `execa`.\n * @returns An object containing:\n * - `cmdArgs`: The full array of install arguments for the given package manager and version.\n * - `envArgs`: The merged environment variables applicable to the package manager and version.\n *\n * @throws Will throw an error if the package manager version cannot be determined.\n */\nexport const getInstallArgs = async (packageManager: string, options?: execa.Options) => {\n const packageManagerVersion = await getPackageManagerVersion(packageManager, options);\n\n // Get environment variables\n const envMap = installEnvMap[packageManager];\n const envArgs = packageManagerVersion\n ? mergeMatchingVersionRanges(packageManagerVersion, envMap, mergeEnvVars)\n : envMap['*'];\n\n // Get install arguments\n const argsMap = installArgumentsMap[packageManager];\n const cmdArgs = packageManagerVersion\n ? mergeMatchingVersionRanges(packageManagerVersion, argsMap, mergeArguments)\n : argsMap['*'];\n\n return { envArgs, cmdArgs: [...installArguments, ...cmdArgs], version: packageManagerVersion };\n};\n"],"names":["installArguments","installArgumentsMap","npm","yarn","pnpm","installEnvMap","YARN_HTTP_TIMEOUT","getPackageManagerVersion","packageManager","options","stdout","execa","trim","err","Error","mergeMatchingVersionRanges","version","versionMap","mergeFn","Object","keys","reduce","acc","range","semver","satisfies","mergeArguments","curr","mergeEnvVars","getInstallArgs","packageManagerVersion","envMap","envArgs","argsMap","cmdArgs"],"mappings":";;;AAGA,MAAMA,gBAAmB,GAAA;AAAC,IAAA;AAAU,CAAA;AAUpC;AACA,MAAMC,mBAEF,GAAA;IACFC,GAAK,EAAA;QACH,GAAK,EAAA;AAAC,YAAA;AAAqB;AAC7B,KAAA;IACAC,IAAM,EAAA;QACJ,IAAM,EAAA;AAAC,YAAA,mBAAA;AAAqB,YAAA;AAAU,SAAA;AACtC,QAAA,GAAA,EAAK;AACP,KAAA;IACAC,IAAM,EAAA;AACJ,QAAA,GAAA,EAAK;AACP;AACF,CAAA;AAEA;AACA,MAAMC,aAEF,GAAA;IACFF,IAAM,EAAA;QACJ,KAAO,EAAA;YAAEG,iBAAmB,EAAA;AAAU,SAAA;AACtC,QAAA,GAAA,EAAK;AACP,KAAA;IACAJ,GAAK,EAAA;AACH,QAAA,GAAA,EAAK;AACP,KAAA;IACAE,IAAM,EAAA;AACJ,QAAA,GAAA,EAAK;AACP;AACF,CAAA;AAEA;;;;;;;;;;AAUC,IACM,MAAMG,wBAA2B,GAAA,OACtCC,cACAC,EAAAA,OAAAA,GAAAA;IAEA,IAAI;AACF,QAAA,MAAM,EAAEC,MAAM,EAAE,GAAG,MAAMC,MAAMH,cAAgB,EAAA;AAAC,YAAA;SAAY,EAAEC,OAAAA,CAAAA;AAC9D,QAAA,OAAOC,OAAOE,IAAI,EAAA;AACpB,KAAA,CAAE,OAAOC,GAAK,EAAA;QACZ,MAAM,IAAIC,MAAM,CAAC,gBAAgB,EAAEN,cAAe,CAAA,UAAU,EAAEK,
|
|
1
|
+
{"version":3,"file":"get-package-manager-args.mjs","sources":["../../src/utils/get-package-manager-args.ts"],"sourcesContent":["import execa from 'execa';\nimport semver from 'semver';\n\nconst installArguments = ['install'];\n\ntype VersionedArgumentsMap = {\n [key: string]: string[]; // Maps semver ranges to argument arrays\n};\n\ntype VersionedEnvMap = {\n [key: string]: Record<string, string>; // Maps semver ranges to environment variables\n};\n\n// Set command line options for specific package managers, with full semver ranges\nconst installArgumentsMap: {\n [key: string]: VersionedArgumentsMap;\n} = {\n npm: {\n '*': ['--legacy-peer-deps'],\n },\n yarn: {\n '<4': ['--network-timeout', '1000000'],\n '*': [],\n },\n pnpm: {\n '*': [],\n },\n};\n\n// Set environment variables for specific package managers, with full semver ranges\nconst installEnvMap: {\n [key: string]: VersionedEnvMap;\n} = {\n yarn: {\n '>=4': { YARN_HTTP_TIMEOUT: '1000000' },\n '*': {},\n },\n npm: {\n '*': {},\n },\n pnpm: {\n '*': {},\n },\n};\n\n/**\n * Retrieves the version of the specified package manager.\n *\n * Executes the package manager's `--version` command to determine its version.\n *\n * @param packageManager - The name of the package manager (e.g., 'npm', 'yarn', 'pnpm').\n * @param options - Optional execution options to pass to `execa`.\n * @returns A promise that resolves to the trimmed version string of the package manager.\n *\n * @throws Will throw an error if the package manager's version cannot be determined.\n */\nexport const getPackageManagerVersion = async (\n packageManager: string,\n options?: execa.Options\n): Promise<string> => {\n try {\n const { stdout } = await execa(packageManager, ['--version'], options);\n return stdout.trim();\n } catch (err) {\n throw new Error(`Error detecting ${packageManager} version: ${err}`);\n }\n};\n\n/**\n * Merges all matching semver ranges using a custom merge function.\n *\n * Iterates over the `versionMap`, checking if the provided `version` satisfies each semver range.\n * If it does, the corresponding value is merged using the provided `mergeFn`.\n * The merging starts with the value associated with the wildcard '*' key.\n *\n * @param version - The package manager version to check against the ranges.\n * @param versionMap - A map of semver ranges to corresponding values (arguments or environment variables).\n * @param mergeFn - A function that defines how to merge two values (accumulated and current).\n * @returns The merged result of all matching ranges.\n */\nfunction mergeMatchingVersionRanges<T>(\n version: string,\n versionMap: { [key: string]: T },\n mergeFn: (acc: T, curr: T) => T\n): T {\n return Object.keys(versionMap).reduce((acc, range) => {\n if (semver.satisfies(version, range) || range === '*') {\n return mergeFn(acc, versionMap[range]);\n }\n return acc;\n }, versionMap['*']); // Start with the wildcard entry\n}\n\nfunction mergeArguments(acc: string[], curr: string[]): string[] {\n return [...acc, ...curr];\n}\n\nfunction mergeEnvVars(\n acc: Record<string, string>,\n curr: Record<string, string>\n): Record<string, string> {\n return { ...acc, ...curr };\n}\n\n/**\n * Retrieves the install arguments and environment variables for a given package manager.\n *\n * This function determines the correct command line arguments and environment variables\n * based on the package manager's version. It uses predefined semver ranges to match\n * the package manager's version and merges all applicable settings.\n *\n * The arguments and environment variables are sourced from:\n * - `installArgumentsMap` for command line arguments.\n * - `installEnvMap` for environment variables.\n *\n * The function ensures that all matching semver ranges are considered and merged appropriately.\n * It always includes the base `installArguments` (e.g., `['install']`) and applies any additional\n * arguments or environment variables as defined by the matched version ranges.\n *\n * @param packageManager - The name of the package manager (e.g., 'npm', 'yarn', 'pnpm').\n * @param options - Optional execution options to pass to `execa`.\n * @returns An object containing:\n * - `cmdArgs`: The full array of install arguments for the given package manager and version.\n * - `envArgs`: The merged environment variables applicable to the package manager and version.\n *\n * @throws Will throw an error if the package manager version cannot be determined.\n */\nexport const getInstallArgs = async (packageManager: string, options?: execa.Options) => {\n const packageManagerVersion = await getPackageManagerVersion(packageManager, options);\n\n // Get environment variables\n const envMap = installEnvMap[packageManager];\n const envArgs = packageManagerVersion\n ? mergeMatchingVersionRanges(packageManagerVersion, envMap, mergeEnvVars)\n : envMap['*'];\n\n // Get install arguments\n const argsMap = installArgumentsMap[packageManager];\n const cmdArgs = packageManagerVersion\n ? mergeMatchingVersionRanges(packageManagerVersion, argsMap, mergeArguments)\n : argsMap['*'];\n\n return { envArgs, cmdArgs: [...installArguments, ...cmdArgs], version: packageManagerVersion };\n};\n"],"names":["installArguments","installArgumentsMap","npm","yarn","pnpm","installEnvMap","YARN_HTTP_TIMEOUT","getPackageManagerVersion","packageManager","options","stdout","execa","trim","err","Error","mergeMatchingVersionRanges","version","versionMap","mergeFn","Object","keys","reduce","acc","range","semver","satisfies","mergeArguments","curr","mergeEnvVars","getInstallArgs","packageManagerVersion","envMap","envArgs","argsMap","cmdArgs"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-id.js","sources":["../../src/utils/install-id.ts"],"sourcesContent":["import crypto from 'crypto';\nimport { machineIdSync } from 'node-machine-id';\n\nexport function installID(projectId?: string) {\n try {\n const machineId = machineIdSync();\n return projectId\n ? crypto.createHash('sha256').update(`${machineId}-${projectId}`).digest('hex')\n : crypto.randomUUID();\n } catch {\n return crypto.randomUUID();\n }\n}\n"],"names":["installID","projectId","machineId","machineIdSync","crypto","createHash","update","digest","randomUUID"],"mappings":";;;;;AAGO,SAASA,UAAUC,SAAkB,EAAA;IAC1C,IAAI;AACF,QAAA,MAAMC,SAAYC,GAAAA,2BAAAA,EAAAA;AAClB,QAAA,OAAOF,YACHG,MAAOC,CAAAA,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"install-id.js","sources":["../../src/utils/install-id.ts"],"sourcesContent":["import crypto from 'crypto';\nimport { machineIdSync } from 'node-machine-id';\n\nexport function installID(projectId?: string) {\n try {\n const machineId = machineIdSync();\n return projectId\n ? crypto.createHash('sha256').update(`${machineId}-${projectId}`).digest('hex')\n : crypto.randomUUID();\n } catch {\n return crypto.randomUUID();\n }\n}\n"],"names":["installID","projectId","machineId","machineIdSync","crypto","createHash","update","digest","randomUUID"],"mappings":";;;;;AAGO,SAASA,UAAUC,SAAkB,EAAA;IAC1C,IAAI;AACF,QAAA,MAAMC,SAAYC,GAAAA,2BAAAA,EAAAA;AAClB,QAAA,OAAOF,YACHG,MAAOC,CAAAA,UAAU,CAAC,QAAA,CAAA,CAAUC,MAAM,CAAC,CAAA,EAAGJ,SAAU,CAAA,CAAC,EAAED,SAAW,CAAA,CAAA,CAAA,CAAEM,MAAM,CAAC,KAAA,CAAA,GACvEH,OAAOI,UAAU,EAAA;AACvB,KAAA,CAAE,OAAM;AACN,QAAA,OAAOJ,OAAOI,UAAU,EAAA;AAC1B;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-id.mjs","sources":["../../src/utils/install-id.ts"],"sourcesContent":["import crypto from 'crypto';\nimport { machineIdSync } from 'node-machine-id';\n\nexport function installID(projectId?: string) {\n try {\n const machineId = machineIdSync();\n return projectId\n ? crypto.createHash('sha256').update(`${machineId}-${projectId}`).digest('hex')\n : crypto.randomUUID();\n } catch {\n return crypto.randomUUID();\n }\n}\n"],"names":["installID","projectId","machineId","machineIdSync","crypto","createHash","update","digest","randomUUID"],"mappings":";;;AAGO,SAASA,UAAUC,SAAkB,EAAA;IAC1C,IAAI;AACF,QAAA,MAAMC,SAAYC,GAAAA,aAAAA,EAAAA;AAClB,QAAA,OAAOF,YACHG,MAAOC,CAAAA,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"install-id.mjs","sources":["../../src/utils/install-id.ts"],"sourcesContent":["import crypto from 'crypto';\nimport { machineIdSync } from 'node-machine-id';\n\nexport function installID(projectId?: string) {\n try {\n const machineId = machineIdSync();\n return projectId\n ? crypto.createHash('sha256').update(`${machineId}-${projectId}`).digest('hex')\n : crypto.randomUUID();\n } catch {\n return crypto.randomUUID();\n }\n}\n"],"names":["installID","projectId","machineId","machineIdSync","crypto","createHash","update","digest","randomUUID"],"mappings":";;;AAGO,SAASA,UAAUC,SAAkB,EAAA;IAC1C,IAAI;AACF,QAAA,MAAMC,SAAYC,GAAAA,aAAAA,EAAAA;AAClB,QAAA,OAAOF,YACHG,MAAOC,CAAAA,UAAU,CAAC,QAAA,CAAA,CAAUC,MAAM,CAAC,CAAA,EAAGJ,SAAU,CAAA,CAAC,EAAED,SAAW,CAAA,CAAA,CAAA,CAAEM,MAAM,CAAC,KAAA,CAAA,GACvEH,OAAOI,UAAU,EAAA;AACvB,KAAA,CAAE,OAAM;AACN,QAAA,OAAOJ,OAAOI,UAAU,EAAA;AAC1B;AACF;;;;"}
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sources":["../../src/utils/logger.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { ChalkFunction } from 'chalk';\n\nconst MAX_PREFIX_LENGTH = 8;\n\nconst badge = (text: string, bgColor: ChalkFunction, textColor: ChalkFunction = chalk.black) => {\n const wrappedText = ` ${text} `;\n\n const repeat = Math.max(0, MAX_PREFIX_LENGTH - wrappedText.length);\n\n return ' '.repeat(repeat) + bgColor(textColor(wrappedText));\n};\n\nconst textIndent = (\n text: string | string[],\n indentFirst = true,\n indent: number = MAX_PREFIX_LENGTH + 2\n) => {\n const parts = Array.isArray(text) ? text : [text];\n\n return parts\n .map((part, i) => {\n if (i === 0 && !indentFirst) {\n return part;\n }\n\n return ' '.repeat(indent) + part;\n })\n .join('\\n');\n};\n\nexport const logger = {\n log(message: string | string[]): void {\n console.log(textIndent(message));\n },\n title(title: string, message: string): void {\n const prefix = badge(title, chalk.bgBlueBright);\n console.log(`\\n${prefix} ${message}`);\n },\n info(message: string): void {\n console.log(`${' '.repeat(7)}${chalk.cyan('●')} ${message}`);\n },\n success(message: string): void {\n console.log(`\\n${' '.repeat(7)}${chalk.green('✓')} ${chalk.green(message)}`);\n },\n fatal(message?: string | string[]): never {\n const prefix = badge('Error', chalk.bgRed);\n\n if (message) {\n console.error(`\\n${prefix} ${textIndent(message, false)}\\n`);\n }\n\n process.exit(1);\n },\n error(message: string | string[]): void {\n const prefix = badge('Error', chalk.bgRed);\n console.error(`\\n${prefix} ${textIndent(message, false)}\\n`);\n },\n warn(message: string | string[]): void {\n const prefix = badge('Warn', chalk.bgYellow);\n console.warn(`\\n${prefix} ${textIndent(message, false)}\\n`);\n },\n};\n"],"names":["MAX_PREFIX_LENGTH","badge","text","bgColor","textColor","chalk","black","wrappedText","repeat","Math","max","length","textIndent","indentFirst","indent","parts","Array","isArray","map","part","i","join","logger","log","message","console","title","prefix","bgBlueBright","info","cyan","success","green","fatal","bgRed","error","process","exit","warn","bgYellow"],"mappings":";;;;AAGA,MAAMA,iBAAoB,GAAA,CAAA;AAE1B,MAAMC,QAAQ,CAACC,IAAAA,EAAcC,OAAwBC,EAAAA,SAAAA,GAA2BC,MAAMC,KAAK,GAAA;AACzF,IAAA,MAAMC,cAAc,CAAC,CAAC,EAAEL,IAAAA,CAAK,CAAC,CAAC;AAE/B,IAAA,MAAMM,SAASC,IAAKC,CAAAA,GAAG,CAAC,CAAGV,EAAAA,iBAAAA,GAAoBO,YAAYI,MAAM,CAAA;AAEjE,IAAA,OAAO,GAAIH,CAAAA,MAAM,CAACA,MAAAA,CAAAA,GAAUL,QAAQC,SAAUG,CAAAA,WAAAA,CAAAA,CAAAA;AAChD,CAAA;AAEA,MAAMK,UAAAA,GAAa,CACjBV,IACAW,EAAAA,WAAAA,GAAc,IAAI,EAClBC,MAAAA,GAAiBd,oBAAoB,CAAC,GAAA;AAEtC,IAAA,MAAMe,KAAQC,GAAAA,KAAAA,CAAMC,OAAO,CAACf,QAAQA,IAAO,GAAA;AAACA,QAAAA;AAAK,KAAA;AAEjD,IAAA,OAAOa,KACJG,CAAAA,GAAG,CAAC,CAACC,IAAMC,EAAAA,CAAAA,GAAAA;QACV,IAAIA,CAAAA,KAAM,CAAK,IAAA,CAACP,WAAa,EAAA;YAC3B,OAAOM,IAAAA;AACT;QAEA,OAAO,GAAA,CAAIX,MAAM,CAACM,MAAUK,CAAAA,GAAAA,IAAAA;AAC9B,KAAA,CAAA,CACCE,IAAI,CAAC,IAAA,CAAA;AACV,CAAA;MAEaC,MAAS,GAAA;AACpBC,IAAAA,GAAAA,CAAAA,CAAIC,OAA0B,EAAA;QAC5BC,OAAQF,CAAAA,GAAG,CAACX,UAAWY,CAAAA,OAAAA,CAAAA,CAAAA;AACzB,KAAA;IACAE,KAAMA,CAAAA,CAAAA,KAAa,EAAEF,OAAe,EAAA;AAClC,QAAA,MAAMG,MAAS1B,GAAAA,KAAAA,CAAMyB,KAAOrB,EAAAA,KAAAA,CAAMuB,YAAY,CAAA;QAC9CH,OAAQF,CAAAA,GAAG,CAAC,CAAC,EAAE,EAAEI,MAAO,CAAA,EAAE,EAAEH,
|
|
1
|
+
{"version":3,"file":"logger.js","sources":["../../src/utils/logger.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { ChalkFunction } from 'chalk';\n\nconst MAX_PREFIX_LENGTH = 8;\n\nconst badge = (text: string, bgColor: ChalkFunction, textColor: ChalkFunction = chalk.black) => {\n const wrappedText = ` ${text} `;\n\n const repeat = Math.max(0, MAX_PREFIX_LENGTH - wrappedText.length);\n\n return ' '.repeat(repeat) + bgColor(textColor(wrappedText));\n};\n\nconst textIndent = (\n text: string | string[],\n indentFirst = true,\n indent: number = MAX_PREFIX_LENGTH + 2\n) => {\n const parts = Array.isArray(text) ? text : [text];\n\n return parts\n .map((part, i) => {\n if (i === 0 && !indentFirst) {\n return part;\n }\n\n return ' '.repeat(indent) + part;\n })\n .join('\\n');\n};\n\nexport const logger = {\n log(message: string | string[]): void {\n console.log(textIndent(message));\n },\n title(title: string, message: string): void {\n const prefix = badge(title, chalk.bgBlueBright);\n console.log(`\\n${prefix} ${message}`);\n },\n info(message: string): void {\n console.log(`${' '.repeat(7)}${chalk.cyan('●')} ${message}`);\n },\n success(message: string): void {\n console.log(`\\n${' '.repeat(7)}${chalk.green('✓')} ${chalk.green(message)}`);\n },\n fatal(message?: string | string[]): never {\n const prefix = badge('Error', chalk.bgRed);\n\n if (message) {\n console.error(`\\n${prefix} ${textIndent(message, false)}\\n`);\n }\n\n process.exit(1);\n },\n error(message: string | string[]): void {\n const prefix = badge('Error', chalk.bgRed);\n console.error(`\\n${prefix} ${textIndent(message, false)}\\n`);\n },\n warn(message: string | string[]): void {\n const prefix = badge('Warn', chalk.bgYellow);\n console.warn(`\\n${prefix} ${textIndent(message, false)}\\n`);\n },\n};\n"],"names":["MAX_PREFIX_LENGTH","badge","text","bgColor","textColor","chalk","black","wrappedText","repeat","Math","max","length","textIndent","indentFirst","indent","parts","Array","isArray","map","part","i","join","logger","log","message","console","title","prefix","bgBlueBright","info","cyan","success","green","fatal","bgRed","error","process","exit","warn","bgYellow"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.mjs","sources":["../../src/utils/logger.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { ChalkFunction } from 'chalk';\n\nconst MAX_PREFIX_LENGTH = 8;\n\nconst badge = (text: string, bgColor: ChalkFunction, textColor: ChalkFunction = chalk.black) => {\n const wrappedText = ` ${text} `;\n\n const repeat = Math.max(0, MAX_PREFIX_LENGTH - wrappedText.length);\n\n return ' '.repeat(repeat) + bgColor(textColor(wrappedText));\n};\n\nconst textIndent = (\n text: string | string[],\n indentFirst = true,\n indent: number = MAX_PREFIX_LENGTH + 2\n) => {\n const parts = Array.isArray(text) ? text : [text];\n\n return parts\n .map((part, i) => {\n if (i === 0 && !indentFirst) {\n return part;\n }\n\n return ' '.repeat(indent) + part;\n })\n .join('\\n');\n};\n\nexport const logger = {\n log(message: string | string[]): void {\n console.log(textIndent(message));\n },\n title(title: string, message: string): void {\n const prefix = badge(title, chalk.bgBlueBright);\n console.log(`\\n${prefix} ${message}`);\n },\n info(message: string): void {\n console.log(`${' '.repeat(7)}${chalk.cyan('●')} ${message}`);\n },\n success(message: string): void {\n console.log(`\\n${' '.repeat(7)}${chalk.green('✓')} ${chalk.green(message)}`);\n },\n fatal(message?: string | string[]): never {\n const prefix = badge('Error', chalk.bgRed);\n\n if (message) {\n console.error(`\\n${prefix} ${textIndent(message, false)}\\n`);\n }\n\n process.exit(1);\n },\n error(message: string | string[]): void {\n const prefix = badge('Error', chalk.bgRed);\n console.error(`\\n${prefix} ${textIndent(message, false)}\\n`);\n },\n warn(message: string | string[]): void {\n const prefix = badge('Warn', chalk.bgYellow);\n console.warn(`\\n${prefix} ${textIndent(message, false)}\\n`);\n },\n};\n"],"names":["MAX_PREFIX_LENGTH","badge","text","bgColor","textColor","chalk","black","wrappedText","repeat","Math","max","length","textIndent","indentFirst","indent","parts","Array","isArray","map","part","i","join","logger","log","message","console","title","prefix","bgBlueBright","info","cyan","success","green","fatal","bgRed","error","process","exit","warn","bgYellow"],"mappings":";;AAGA,MAAMA,iBAAoB,GAAA,CAAA;AAE1B,MAAMC,QAAQ,CAACC,IAAAA,EAAcC,OAAwBC,EAAAA,SAAAA,GAA2BC,MAAMC,KAAK,GAAA;AACzF,IAAA,MAAMC,cAAc,CAAC,CAAC,EAAEL,IAAAA,CAAK,CAAC,CAAC;AAE/B,IAAA,MAAMM,SAASC,IAAKC,CAAAA,GAAG,CAAC,CAAGV,EAAAA,iBAAAA,GAAoBO,YAAYI,MAAM,CAAA;AAEjE,IAAA,OAAO,GAAIH,CAAAA,MAAM,CAACA,MAAAA,CAAAA,GAAUL,QAAQC,SAAUG,CAAAA,WAAAA,CAAAA,CAAAA;AAChD,CAAA;AAEA,MAAMK,UAAAA,GAAa,CACjBV,IACAW,EAAAA,WAAAA,GAAc,IAAI,EAClBC,MAAAA,GAAiBd,oBAAoB,CAAC,GAAA;AAEtC,IAAA,MAAMe,KAAQC,GAAAA,KAAAA,CAAMC,OAAO,CAACf,QAAQA,IAAO,GAAA;AAACA,QAAAA;AAAK,KAAA;AAEjD,IAAA,OAAOa,KACJG,CAAAA,GAAG,CAAC,CAACC,IAAMC,EAAAA,CAAAA,GAAAA;QACV,IAAIA,CAAAA,KAAM,CAAK,IAAA,CAACP,WAAa,EAAA;YAC3B,OAAOM,IAAAA;AACT;QAEA,OAAO,GAAA,CAAIX,MAAM,CAACM,MAAUK,CAAAA,GAAAA,IAAAA;AAC9B,KAAA,CAAA,CACCE,IAAI,CAAC,IAAA,CAAA;AACV,CAAA;MAEaC,MAAS,GAAA;AACpBC,IAAAA,GAAAA,CAAAA,CAAIC,OAA0B,EAAA;QAC5BC,OAAQF,CAAAA,GAAG,CAACX,UAAWY,CAAAA,OAAAA,CAAAA,CAAAA;AACzB,KAAA;IACAE,KAAMA,CAAAA,CAAAA,KAAa,EAAEF,OAAe,EAAA;AAClC,QAAA,MAAMG,MAAS1B,GAAAA,KAAAA,CAAMyB,KAAOrB,EAAAA,KAAAA,CAAMuB,YAAY,CAAA;QAC9CH,OAAQF,CAAAA,GAAG,CAAC,CAAC,EAAE,EAAEI,MAAO,CAAA,EAAE,EAAEH,
|
|
1
|
+
{"version":3,"file":"logger.mjs","sources":["../../src/utils/logger.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { ChalkFunction } from 'chalk';\n\nconst MAX_PREFIX_LENGTH = 8;\n\nconst badge = (text: string, bgColor: ChalkFunction, textColor: ChalkFunction = chalk.black) => {\n const wrappedText = ` ${text} `;\n\n const repeat = Math.max(0, MAX_PREFIX_LENGTH - wrappedText.length);\n\n return ' '.repeat(repeat) + bgColor(textColor(wrappedText));\n};\n\nconst textIndent = (\n text: string | string[],\n indentFirst = true,\n indent: number = MAX_PREFIX_LENGTH + 2\n) => {\n const parts = Array.isArray(text) ? text : [text];\n\n return parts\n .map((part, i) => {\n if (i === 0 && !indentFirst) {\n return part;\n }\n\n return ' '.repeat(indent) + part;\n })\n .join('\\n');\n};\n\nexport const logger = {\n log(message: string | string[]): void {\n console.log(textIndent(message));\n },\n title(title: string, message: string): void {\n const prefix = badge(title, chalk.bgBlueBright);\n console.log(`\\n${prefix} ${message}`);\n },\n info(message: string): void {\n console.log(`${' '.repeat(7)}${chalk.cyan('●')} ${message}`);\n },\n success(message: string): void {\n console.log(`\\n${' '.repeat(7)}${chalk.green('✓')} ${chalk.green(message)}`);\n },\n fatal(message?: string | string[]): never {\n const prefix = badge('Error', chalk.bgRed);\n\n if (message) {\n console.error(`\\n${prefix} ${textIndent(message, false)}\\n`);\n }\n\n process.exit(1);\n },\n error(message: string | string[]): void {\n const prefix = badge('Error', chalk.bgRed);\n console.error(`\\n${prefix} ${textIndent(message, false)}\\n`);\n },\n warn(message: string | string[]): void {\n const prefix = badge('Warn', chalk.bgYellow);\n console.warn(`\\n${prefix} ${textIndent(message, false)}\\n`);\n },\n};\n"],"names":["MAX_PREFIX_LENGTH","badge","text","bgColor","textColor","chalk","black","wrappedText","repeat","Math","max","length","textIndent","indentFirst","indent","parts","Array","isArray","map","part","i","join","logger","log","message","console","title","prefix","bgBlueBright","info","cyan","success","green","fatal","bgRed","error","process","exit","warn","bgYellow"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sources":["../../src/utils/template.ts"],"sourcesContent":["import path from 'node:path';\nimport url from 'node:url';\nimport { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport * as tar from 'tar';\nimport retry from 'async-retry';\n\nimport fse from 'fs-extra';\nimport type { Scope } from '../types';\n\nconst stripTrailingSlash = (str: string) => {\n return str.endsWith('/') ? str.slice(0, -1) : str;\n};\n\n// Merge template with new project being created\nexport async function copyTemplate(scope: Scope, rootPath: string) {\n const { template } = scope;\n\n if (!template) {\n throw new Error('Missing template or example app option');\n }\n\n if (await isOfficialTemplate(template, scope.templateBranch)) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner: 'strapi',\n repo: 'strapi',\n branch: scope.templateBranch,\n subPath: `templates/${template}`,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isLocalTemplate(template)) {\n const filePath = template.startsWith('file://') ? url.fileURLToPath(template) : template;\n\n await fse.copy(filePath, rootPath);\n }\n\n if (isGithubShorthand(template)) {\n const [owner, repo, ...pathSegments] = template.split('/');\n const subPath = pathSegments.length ? pathSegments.join('/') : scope.templatePath;\n\n await retry(\n () => downloadGithubRepo(rootPath, { owner, repo, branch: scope.templateBranch, subPath }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isGithubRepo(template)) {\n const url = new URL(template);\n\n const [owner, repo, t, branch, ...pathSegments] = stripTrailingSlash(\n url.pathname.slice(1)\n ).split('/');\n\n if (t !== undefined && t !== 'tree') {\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n\n if (scope.templateBranch) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: scope.templateBranch,\n subPath: scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: decodeURIComponent(branch) ?? scope.templateBranch,\n subPath: pathSegments.length\n ? decodeURIComponent(pathSegments.join('/'))\n : scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n}\n\ntype RepoInfo = {\n owner: string;\n repo: string;\n branch?: string;\n subPath?: string | null;\n};\n\nasync function downloadGithubRepo(rootPath: string, { owner, repo, branch, subPath }: RepoInfo) {\n const filePath = subPath ? subPath.split('/').join(path.posix.sep) : null;\n\n let checkContentUrl = `https://api.github.com/repos/${owner}/${repo}/contents`;\n if (filePath) {\n checkContentUrl = `${checkContentUrl}/${filePath}`;\n }\n\n if (branch) {\n checkContentUrl = `${checkContentUrl}?ref=${branch}`;\n }\n\n const checkRes = await fetch(checkContentUrl, {\n method: 'HEAD',\n });\n\n if (checkRes.status !== 200) {\n throw new Error(\n `Could not find a template at https://github.com/${owner}/${repo}${branch ? ` on branch ${branch}` : ''}${filePath ? ` at path ${filePath}` : ''}`\n );\n }\n\n let url = `https://api.github.com/repos/${owner}/${repo}/tarball`;\n\n if (branch) {\n url = `${url}/${branch}`;\n }\n\n const res = await fetch(url);\n\n if (!res.body) {\n throw new Error(`Failed to download ${url}`);\n }\n\n await pipeline(\n // @ts-expect-error - Readable is not a valid source\n Readable.fromWeb(res.body),\n tar.x({\n cwd: rootPath,\n strip: filePath ? filePath.split('/').length + 1 : 1,\n filter(path) {\n if (filePath) {\n return path.split('/').slice(1).join('/').startsWith(filePath);\n }\n\n return true;\n },\n })\n );\n}\n\nfunction isLocalTemplate(template: string) {\n return (\n template.startsWith('file://') ||\n fse.existsSync(path.isAbsolute(template) ? template : path.resolve(process.cwd(), template))\n );\n}\n\nfunction isGithubShorthand(value: string) {\n if (isValidUrl(value)) {\n return false;\n }\n\n return /^[\\w-]+\\/[\\w-.]+(\\/[\\w-.]+)*$/.test(value);\n}\n\nfunction isGithubRepo(value: string) {\n try {\n const url = new URL(value);\n\n return url.origin === 'https://github.com';\n } catch {\n return false;\n }\n}\n\nfunction isValidUrl(value: string) {\n try {\n // eslint-disable-next-line no-new\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\nconst OFFICIAL_NAME_REGEX = /^[a-zA-Z]*$/;\n\nasync function isOfficialTemplate(template: string, branch: string | undefined) {\n if (isValidUrl(template) || !OFFICIAL_NAME_REGEX.test(template)) {\n return false;\n }\n\n const res = await fetch(\n `https://api.github.com/repos/strapi/strapi/contents/templates/${template}?${branch ? `ref=${branch}` : ''}`,\n { method: 'HEAD' }\n );\n\n return res.status === 200;\n}\n"],"names":["stripTrailingSlash","str","endsWith","slice","copyTemplate","scope","rootPath","template","Error","isOfficialTemplate","templateBranch","retry","downloadGithubRepo","owner","repo","branch","subPath","retries","onRetry","err","attempt","console","log","isLocalTemplate","filePath","startsWith","url","fileURLToPath","fse","copy","isGithubShorthand","pathSegments","split","length","join","templatePath","isGithubRepo","URL","t","pathname","undefined","decodeURIComponent","path","posix","sep","checkContentUrl","checkRes","fetch","method","status","res","body","pipeline","Readable","fromWeb","tar","x","cwd","strip","filter","existsSync","isAbsolute","resolve","process","value","isValidUrl","test","origin","OFFICIAL_NAME_REGEX"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"template.js","sources":["../../src/utils/template.ts"],"sourcesContent":["import path from 'node:path';\nimport url from 'node:url';\nimport { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport * as tar from 'tar';\nimport retry from 'async-retry';\n\nimport fse from 'fs-extra';\nimport type { Scope } from '../types';\n\nconst stripTrailingSlash = (str: string) => {\n return str.endsWith('/') ? str.slice(0, -1) : str;\n};\n\n// Merge template with new project being created\nexport async function copyTemplate(scope: Scope, rootPath: string) {\n const { template } = scope;\n\n if (!template) {\n throw new Error('Missing template or example app option');\n }\n\n if (await isOfficialTemplate(template, scope.templateBranch)) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner: 'strapi',\n repo: 'strapi',\n branch: scope.templateBranch,\n subPath: `templates/${template}`,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isLocalTemplate(template)) {\n const filePath = template.startsWith('file://') ? url.fileURLToPath(template) : template;\n\n await fse.copy(filePath, rootPath);\n }\n\n if (isGithubShorthand(template)) {\n const [owner, repo, ...pathSegments] = template.split('/');\n const subPath = pathSegments.length ? pathSegments.join('/') : scope.templatePath;\n\n await retry(\n () => downloadGithubRepo(rootPath, { owner, repo, branch: scope.templateBranch, subPath }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isGithubRepo(template)) {\n const url = new URL(template);\n\n const [owner, repo, t, branch, ...pathSegments] = stripTrailingSlash(\n url.pathname.slice(1)\n ).split('/');\n\n if (t !== undefined && t !== 'tree') {\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n\n if (scope.templateBranch) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: scope.templateBranch,\n subPath: scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: decodeURIComponent(branch) ?? scope.templateBranch,\n subPath: pathSegments.length\n ? decodeURIComponent(pathSegments.join('/'))\n : scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n}\n\ntype RepoInfo = {\n owner: string;\n repo: string;\n branch?: string;\n subPath?: string | null;\n};\n\nasync function downloadGithubRepo(rootPath: string, { owner, repo, branch, subPath }: RepoInfo) {\n const filePath = subPath ? subPath.split('/').join(path.posix.sep) : null;\n\n let checkContentUrl = `https://api.github.com/repos/${owner}/${repo}/contents`;\n if (filePath) {\n checkContentUrl = `${checkContentUrl}/${filePath}`;\n }\n\n if (branch) {\n checkContentUrl = `${checkContentUrl}?ref=${branch}`;\n }\n\n const checkRes = await fetch(checkContentUrl, {\n method: 'HEAD',\n });\n\n if (checkRes.status !== 200) {\n throw new Error(\n `Could not find a template at https://github.com/${owner}/${repo}${branch ? ` on branch ${branch}` : ''}${filePath ? ` at path ${filePath}` : ''}`\n );\n }\n\n let url = `https://api.github.com/repos/${owner}/${repo}/tarball`;\n\n if (branch) {\n url = `${url}/${branch}`;\n }\n\n const res = await fetch(url);\n\n if (!res.body) {\n throw new Error(`Failed to download ${url}`);\n }\n\n await pipeline(\n // @ts-expect-error - Readable is not a valid source\n Readable.fromWeb(res.body),\n tar.x({\n cwd: rootPath,\n strip: filePath ? filePath.split('/').length + 1 : 1,\n filter(path) {\n if (filePath) {\n return path.split('/').slice(1).join('/').startsWith(filePath);\n }\n\n return true;\n },\n })\n );\n}\n\nfunction isLocalTemplate(template: string) {\n return (\n template.startsWith('file://') ||\n fse.existsSync(path.isAbsolute(template) ? template : path.resolve(process.cwd(), template))\n );\n}\n\nfunction isGithubShorthand(value: string) {\n if (isValidUrl(value)) {\n return false;\n }\n\n return /^[\\w-]+\\/[\\w-.]+(\\/[\\w-.]+)*$/.test(value);\n}\n\nfunction isGithubRepo(value: string) {\n try {\n const url = new URL(value);\n\n return url.origin === 'https://github.com';\n } catch {\n return false;\n }\n}\n\nfunction isValidUrl(value: string) {\n try {\n // eslint-disable-next-line no-new\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\nconst OFFICIAL_NAME_REGEX = /^[a-zA-Z]*$/;\n\nasync function isOfficialTemplate(template: string, branch: string | undefined) {\n if (isValidUrl(template) || !OFFICIAL_NAME_REGEX.test(template)) {\n return false;\n }\n\n const res = await fetch(\n `https://api.github.com/repos/strapi/strapi/contents/templates/${template}?${branch ? `ref=${branch}` : ''}`,\n { method: 'HEAD' }\n );\n\n return res.status === 200;\n}\n"],"names":["stripTrailingSlash","str","endsWith","slice","copyTemplate","scope","rootPath","template","Error","isOfficialTemplate","templateBranch","retry","downloadGithubRepo","owner","repo","branch","subPath","retries","onRetry","err","attempt","console","log","isLocalTemplate","filePath","startsWith","url","fileURLToPath","fse","copy","isGithubShorthand","pathSegments","split","length","join","templatePath","isGithubRepo","URL","t","pathname","undefined","decodeURIComponent","path","posix","sep","checkContentUrl","checkRes","fetch","method","status","res","body","pipeline","Readable","fromWeb","tar","x","cwd","strip","filter","existsSync","isAbsolute","resolve","process","value","isValidUrl","test","origin","OFFICIAL_NAME_REGEX"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.mjs","sources":["../../src/utils/template.ts"],"sourcesContent":["import path from 'node:path';\nimport url from 'node:url';\nimport { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport * as tar from 'tar';\nimport retry from 'async-retry';\n\nimport fse from 'fs-extra';\nimport type { Scope } from '../types';\n\nconst stripTrailingSlash = (str: string) => {\n return str.endsWith('/') ? str.slice(0, -1) : str;\n};\n\n// Merge template with new project being created\nexport async function copyTemplate(scope: Scope, rootPath: string) {\n const { template } = scope;\n\n if (!template) {\n throw new Error('Missing template or example app option');\n }\n\n if (await isOfficialTemplate(template, scope.templateBranch)) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner: 'strapi',\n repo: 'strapi',\n branch: scope.templateBranch,\n subPath: `templates/${template}`,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isLocalTemplate(template)) {\n const filePath = template.startsWith('file://') ? url.fileURLToPath(template) : template;\n\n await fse.copy(filePath, rootPath);\n }\n\n if (isGithubShorthand(template)) {\n const [owner, repo, ...pathSegments] = template.split('/');\n const subPath = pathSegments.length ? pathSegments.join('/') : scope.templatePath;\n\n await retry(\n () => downloadGithubRepo(rootPath, { owner, repo, branch: scope.templateBranch, subPath }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isGithubRepo(template)) {\n const url = new URL(template);\n\n const [owner, repo, t, branch, ...pathSegments] = stripTrailingSlash(\n url.pathname.slice(1)\n ).split('/');\n\n if (t !== undefined && t !== 'tree') {\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n\n if (scope.templateBranch) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: scope.templateBranch,\n subPath: scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: decodeURIComponent(branch) ?? scope.templateBranch,\n subPath: pathSegments.length\n ? decodeURIComponent(pathSegments.join('/'))\n : scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n}\n\ntype RepoInfo = {\n owner: string;\n repo: string;\n branch?: string;\n subPath?: string | null;\n};\n\nasync function downloadGithubRepo(rootPath: string, { owner, repo, branch, subPath }: RepoInfo) {\n const filePath = subPath ? subPath.split('/').join(path.posix.sep) : null;\n\n let checkContentUrl = `https://api.github.com/repos/${owner}/${repo}/contents`;\n if (filePath) {\n checkContentUrl = `${checkContentUrl}/${filePath}`;\n }\n\n if (branch) {\n checkContentUrl = `${checkContentUrl}?ref=${branch}`;\n }\n\n const checkRes = await fetch(checkContentUrl, {\n method: 'HEAD',\n });\n\n if (checkRes.status !== 200) {\n throw new Error(\n `Could not find a template at https://github.com/${owner}/${repo}${branch ? ` on branch ${branch}` : ''}${filePath ? ` at path ${filePath}` : ''}`\n );\n }\n\n let url = `https://api.github.com/repos/${owner}/${repo}/tarball`;\n\n if (branch) {\n url = `${url}/${branch}`;\n }\n\n const res = await fetch(url);\n\n if (!res.body) {\n throw new Error(`Failed to download ${url}`);\n }\n\n await pipeline(\n // @ts-expect-error - Readable is not a valid source\n Readable.fromWeb(res.body),\n tar.x({\n cwd: rootPath,\n strip: filePath ? filePath.split('/').length + 1 : 1,\n filter(path) {\n if (filePath) {\n return path.split('/').slice(1).join('/').startsWith(filePath);\n }\n\n return true;\n },\n })\n );\n}\n\nfunction isLocalTemplate(template: string) {\n return (\n template.startsWith('file://') ||\n fse.existsSync(path.isAbsolute(template) ? template : path.resolve(process.cwd(), template))\n );\n}\n\nfunction isGithubShorthand(value: string) {\n if (isValidUrl(value)) {\n return false;\n }\n\n return /^[\\w-]+\\/[\\w-.]+(\\/[\\w-.]+)*$/.test(value);\n}\n\nfunction isGithubRepo(value: string) {\n try {\n const url = new URL(value);\n\n return url.origin === 'https://github.com';\n } catch {\n return false;\n }\n}\n\nfunction isValidUrl(value: string) {\n try {\n // eslint-disable-next-line no-new\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\nconst OFFICIAL_NAME_REGEX = /^[a-zA-Z]*$/;\n\nasync function isOfficialTemplate(template: string, branch: string | undefined) {\n if (isValidUrl(template) || !OFFICIAL_NAME_REGEX.test(template)) {\n return false;\n }\n\n const res = await fetch(\n `https://api.github.com/repos/strapi/strapi/contents/templates/${template}?${branch ? `ref=${branch}` : ''}`,\n { method: 'HEAD' }\n );\n\n return res.status === 200;\n}\n"],"names":["stripTrailingSlash","str","endsWith","slice","copyTemplate","scope","rootPath","template","Error","isOfficialTemplate","templateBranch","retry","downloadGithubRepo","owner","repo","branch","subPath","retries","onRetry","err","attempt","console","log","isLocalTemplate","filePath","startsWith","url","fileURLToPath","fse","copy","isGithubShorthand","pathSegments","split","length","join","templatePath","isGithubRepo","URL","t","pathname","undefined","decodeURIComponent","path","posix","sep","checkContentUrl","checkRes","fetch","method","status","res","body","pipeline","Readable","fromWeb","tar","x","cwd","strip","filter","existsSync","isAbsolute","resolve","process","value","isValidUrl","test","origin","OFFICIAL_NAME_REGEX"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"template.mjs","sources":["../../src/utils/template.ts"],"sourcesContent":["import path from 'node:path';\nimport url from 'node:url';\nimport { Readable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport * as tar from 'tar';\nimport retry from 'async-retry';\n\nimport fse from 'fs-extra';\nimport type { Scope } from '../types';\n\nconst stripTrailingSlash = (str: string) => {\n return str.endsWith('/') ? str.slice(0, -1) : str;\n};\n\n// Merge template with new project being created\nexport async function copyTemplate(scope: Scope, rootPath: string) {\n const { template } = scope;\n\n if (!template) {\n throw new Error('Missing template or example app option');\n }\n\n if (await isOfficialTemplate(template, scope.templateBranch)) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner: 'strapi',\n repo: 'strapi',\n branch: scope.templateBranch,\n subPath: `templates/${template}`,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isLocalTemplate(template)) {\n const filePath = template.startsWith('file://') ? url.fileURLToPath(template) : template;\n\n await fse.copy(filePath, rootPath);\n }\n\n if (isGithubShorthand(template)) {\n const [owner, repo, ...pathSegments] = template.split('/');\n const subPath = pathSegments.length ? pathSegments.join('/') : scope.templatePath;\n\n await retry(\n () => downloadGithubRepo(rootPath, { owner, repo, branch: scope.templateBranch, subPath }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n if (isGithubRepo(template)) {\n const url = new URL(template);\n\n const [owner, repo, t, branch, ...pathSegments] = stripTrailingSlash(\n url.pathname.slice(1)\n ).split('/');\n\n if (t !== undefined && t !== 'tree') {\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n\n if (scope.templateBranch) {\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: scope.templateBranch,\n subPath: scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n return;\n }\n\n await retry(\n () =>\n downloadGithubRepo(rootPath, {\n owner,\n repo,\n branch: decodeURIComponent(branch) ?? scope.templateBranch,\n subPath: pathSegments.length\n ? decodeURIComponent(pathSegments.join('/'))\n : scope.templatePath,\n }),\n {\n retries: 3,\n onRetry(err, attempt) {\n console.log(`Retrying to download the template. Attempt ${attempt}. Error: ${err}`);\n },\n }\n );\n\n throw new Error(`Invalid GitHub template URL: ${template}`);\n }\n}\n\ntype RepoInfo = {\n owner: string;\n repo: string;\n branch?: string;\n subPath?: string | null;\n};\n\nasync function downloadGithubRepo(rootPath: string, { owner, repo, branch, subPath }: RepoInfo) {\n const filePath = subPath ? subPath.split('/').join(path.posix.sep) : null;\n\n let checkContentUrl = `https://api.github.com/repos/${owner}/${repo}/contents`;\n if (filePath) {\n checkContentUrl = `${checkContentUrl}/${filePath}`;\n }\n\n if (branch) {\n checkContentUrl = `${checkContentUrl}?ref=${branch}`;\n }\n\n const checkRes = await fetch(checkContentUrl, {\n method: 'HEAD',\n });\n\n if (checkRes.status !== 200) {\n throw new Error(\n `Could not find a template at https://github.com/${owner}/${repo}${branch ? ` on branch ${branch}` : ''}${filePath ? ` at path ${filePath}` : ''}`\n );\n }\n\n let url = `https://api.github.com/repos/${owner}/${repo}/tarball`;\n\n if (branch) {\n url = `${url}/${branch}`;\n }\n\n const res = await fetch(url);\n\n if (!res.body) {\n throw new Error(`Failed to download ${url}`);\n }\n\n await pipeline(\n // @ts-expect-error - Readable is not a valid source\n Readable.fromWeb(res.body),\n tar.x({\n cwd: rootPath,\n strip: filePath ? filePath.split('/').length + 1 : 1,\n filter(path) {\n if (filePath) {\n return path.split('/').slice(1).join('/').startsWith(filePath);\n }\n\n return true;\n },\n })\n );\n}\n\nfunction isLocalTemplate(template: string) {\n return (\n template.startsWith('file://') ||\n fse.existsSync(path.isAbsolute(template) ? template : path.resolve(process.cwd(), template))\n );\n}\n\nfunction isGithubShorthand(value: string) {\n if (isValidUrl(value)) {\n return false;\n }\n\n return /^[\\w-]+\\/[\\w-.]+(\\/[\\w-.]+)*$/.test(value);\n}\n\nfunction isGithubRepo(value: string) {\n try {\n const url = new URL(value);\n\n return url.origin === 'https://github.com';\n } catch {\n return false;\n }\n}\n\nfunction isValidUrl(value: string) {\n try {\n // eslint-disable-next-line no-new\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\nconst OFFICIAL_NAME_REGEX = /^[a-zA-Z]*$/;\n\nasync function isOfficialTemplate(template: string, branch: string | undefined) {\n if (isValidUrl(template) || !OFFICIAL_NAME_REGEX.test(template)) {\n return false;\n }\n\n const res = await fetch(\n `https://api.github.com/repos/strapi/strapi/contents/templates/${template}?${branch ? `ref=${branch}` : ''}`,\n { method: 'HEAD' }\n );\n\n return res.status === 200;\n}\n"],"names":["stripTrailingSlash","str","endsWith","slice","copyTemplate","scope","rootPath","template","Error","isOfficialTemplate","templateBranch","retry","downloadGithubRepo","owner","repo","branch","subPath","retries","onRetry","err","attempt","console","log","isLocalTemplate","filePath","startsWith","url","fileURLToPath","fse","copy","isGithubShorthand","pathSegments","split","length","join","templatePath","isGithubRepo","URL","t","pathname","undefined","decodeURIComponent","path","posix","sep","checkContentUrl","checkRes","fetch","method","status","res","body","pipeline","Readable","fromWeb","tar","x","cwd","strip","filter","existsSync","isAbsolute","resolve","process","value","isValidUrl","test","origin","OFFICIAL_NAME_REGEX"],"mappings":"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"}
|
package/dist/utils/usage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sources":["../../src/utils/usage.ts"],"sourcesContent":["import os from 'os';\nimport _ from 'lodash';\n\nimport { Scope, StderrError } from '../types';\n\ntype TrackError = Error | string | StderrError;\n\n// Add properties from the package.json strapi key in the metadata\nfunction addPackageJsonStrapiMetadata(metadata: Record<string, unknown>, scope: Scope) {\n const { packageJsonStrapi = {} } = scope;\n\n return _.defaults(metadata, packageJsonStrapi);\n}\n\nconst boolToString = (value: boolean | undefined) => (value === true).toString();\n\nconst getProperties = (scope: Scope, error?: TrackError) => {\n const eventProperties = {\n error: typeof error === 'string' ? error : error && error.message,\n };\n\n const userProperties = {\n os: os.type(),\n osPlatform: os.platform(),\n osArch: os.arch(),\n osRelease: os.release(),\n nodeVersion: process.versions.node,\n };\n\n const groupProperties = {\n version: scope.strapiVersion,\n docker: scope.docker,\n useYarn: scope.packageManager === 'yarn',\n packageManager: scope.packageManager,\n /** @deprecated */\n useTypescriptOnServer: boolToString(scope.useTypescript),\n /** @deprecated */\n useTypescriptOnAdmin: boolToString(scope.useTypescript),\n useTypescript: boolToString(scope.useTypescript),\n isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud',\n aiLicenseKey: process.env.STRAPI_ADMIN_AI_LICENSE,\n noRun: boolToString(scope.runApp),\n projectId: scope.uuid,\n useExample: boolToString(scope.useExample),\n gitInit: boolToString(scope.gitInit),\n installDependencies: boolToString(scope.installDependencies),\n };\n\n return {\n eventProperties,\n userProperties,\n groupProperties: addPackageJsonStrapiMetadata(groupProperties, scope),\n };\n};\n\nfunction trackEvent(event: string, payload: Record<string, unknown>) {\n if (process.env.NODE_ENV === 'test') {\n return;\n }\n\n const analyticsUrl = process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io';\n\n try {\n return fetch(`${analyticsUrl}/api/v2/track`, {\n method: 'POST',\n body: JSON.stringify({\n event,\n ...payload,\n }),\n signal: AbortSignal.timeout(1000),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n }).catch(() => {});\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackError({ scope, error }: { scope: Scope; error?: TrackError }) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent('didNotCreateProject', {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackUsage({\n event,\n scope,\n error,\n}: {\n event: string;\n scope: Scope;\n error?: TrackError;\n}) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent(event, {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n"],"names":["addPackageJsonStrapiMetadata","metadata","scope","packageJsonStrapi","_","defaults","boolToString","value","toString","getProperties","error","eventProperties","message","userProperties","os","type","osPlatform","platform","osArch","arch","osRelease","release","nodeVersion","process","versions","node","groupProperties","version","strapiVersion","docker","useYarn","packageManager","useTypescriptOnServer","useTypescript","useTypescriptOnAdmin","isHostedOnStrapiCloud","env","STRAPI_HOSTING","aiLicenseKey","STRAPI_ADMIN_AI_LICENSE","noRun","runApp","projectId","uuid","useExample","gitInit","installDependencies","trackEvent","event","payload","NODE_ENV","analyticsUrl","STRAPI_ANALYTICS_URL","fetch","method","body","JSON","stringify","signal","AbortSignal","timeout","headers","catch","err","Promise","resolve","trackError","properties","deviceId","installId","trackUsage"],"mappings":";;;;;AAOA;AACA,SAASA,4BAAAA,CAA6BC,QAAiC,EAAEC,KAAY,EAAA;AACnF,IAAA,MAAM,EAAEC,iBAAAA,GAAoB,EAAE,EAAE,GAAGD,KAAAA;IAEnC,OAAOE,CAAAA,CAAEC,QAAQ,CAACJ,QAAUE,EAAAA,iBAAAA,CAAAA;AAC9B;AAEA,MAAMG,YAAAA,GAAe,CAACC,KAA+B,GAACA,CAAAA,KAAU,KAAA,IAAG,EAAGC,QAAQ,EAAA;AAE9E,MAAMC,aAAAA,GAAgB,CAACP,KAAcQ,EAAAA,KAAAA,GAAAA;AACnC,IAAA,MAAMC,eAAkB,GAAA;AACtBD,QAAAA,KAAAA,EAAO,OAAOA,KAAU,KAAA,QAAA,GAAWA,KAAQA,GAAAA,KAAAA,IAASA,MAAME;AAC5D,KAAA;AAEA,IAAA,MAAMC,cAAiB,GAAA;AACrBC,QAAAA,EAAAA,EAAIA,GAAGC,IAAI,EAAA;AACXC,QAAAA,UAAAA,EAAYF,GAAGG,QAAQ,EAAA;AACvBC,QAAAA,MAAAA,EAAQJ,GAAGK,IAAI,EAAA;AACfC,QAAAA,SAAAA,EAAWN,GAAGO,OAAO,EAAA;QACrBC,WAAaC,EAAAA,OAAAA,CAAQC,QAAQ,CAACC;AAChC,KAAA;AAEA,IAAA,MAAMC,eAAkB,GAAA;AACtBC,QAAAA,OAAAA,EAASzB,MAAM0B,aAAa;AAC5BC,QAAAA,MAAAA,EAAQ3B,MAAM2B,MAAM;QACpBC,OAAS5B,EAAAA,KAAAA,CAAM6B,cAAc,KAAK,MAAA;AAClCA,QAAAA,cAAAA,EAAgB7B,MAAM6B,cAAc;AACpC,2BACAC,qBAAAA,EAAuB1B,YAAaJ,CAAAA,KAAAA,CAAM+B,aAAa,CAAA;AACvD,2BACAC,oBAAAA,EAAsB5B,YAAaJ,CAAAA,KAAAA,CAAM+B,aAAa,CAAA;QACtDA,aAAe3B,EAAAA,YAAAA,CAAaJ,MAAM+B,aAAa,CAAA;AAC/CE,QAAAA,qBAAAA,EAAuBZ,OAAQa,CAAAA,GAAG,CAACC,cAAc,KAAK,cAAA;QACtDC,YAAcf,EAAAA,OAAAA,CAAQa,GAAG,CAACG,uBAAuB;QACjDC,KAAOlC,EAAAA,YAAAA,CAAaJ,MAAMuC,MAAM,CAAA;AAChCC,QAAAA,SAAAA,EAAWxC,MAAMyC,IAAI;QACrBC,UAAYtC,EAAAA,YAAAA,CAAaJ,MAAM0C,UAAU,CAAA;QACzCC,OAASvC,EAAAA,YAAAA,CAAaJ,MAAM2C,OAAO,CAAA;QACnCC,mBAAqBxC,EAAAA,YAAAA,CAAaJ,MAAM4C,mBAAmB;AAC7D,KAAA;IAEA,OAAO;AACLnC,QAAAA,eAAAA;AACAE,QAAAA,cAAAA;AACAa,QAAAA,eAAAA,EAAiB1B,6BAA6B0B,eAAiBxB,EAAAA,KAAAA;AACjE,KAAA;AACF,CAAA;AAEA,SAAS6C,UAAAA,CAAWC,KAAa,EAAEC,OAAgC,EAAA;AACjE,IAAA,IAAI1B,OAAQa,CAAAA,GAAG,CAACc,QAAQ,KAAK,MAAQ,EAAA;AACnC,QAAA;AACF;AAEA,IAAA,MAAMC,YAAe5B,GAAAA,OAAAA,CAAQa,GAAG,CAACgB,oBAAoB,IAAI,6BAAA;IAEzD,IAAI;AACF,QAAA,OAAOC,
|
|
1
|
+
{"version":3,"file":"usage.js","sources":["../../src/utils/usage.ts"],"sourcesContent":["import os from 'os';\nimport _ from 'lodash';\n\nimport { Scope, StderrError } from '../types';\n\ntype TrackError = Error | string | StderrError;\n\n// Add properties from the package.json strapi key in the metadata\nfunction addPackageJsonStrapiMetadata(metadata: Record<string, unknown>, scope: Scope) {\n const { packageJsonStrapi = {} } = scope;\n\n return _.defaults(metadata, packageJsonStrapi);\n}\n\nconst boolToString = (value: boolean | undefined) => (value === true).toString();\n\nconst getProperties = (scope: Scope, error?: TrackError) => {\n const eventProperties = {\n error: typeof error === 'string' ? error : error && error.message,\n };\n\n const userProperties = {\n os: os.type(),\n osPlatform: os.platform(),\n osArch: os.arch(),\n osRelease: os.release(),\n nodeVersion: process.versions.node,\n };\n\n const groupProperties = {\n version: scope.strapiVersion,\n docker: scope.docker,\n useYarn: scope.packageManager === 'yarn',\n packageManager: scope.packageManager,\n /** @deprecated */\n useTypescriptOnServer: boolToString(scope.useTypescript),\n /** @deprecated */\n useTypescriptOnAdmin: boolToString(scope.useTypescript),\n useTypescript: boolToString(scope.useTypescript),\n isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud',\n aiLicenseKey: process.env.STRAPI_ADMIN_AI_LICENSE,\n noRun: boolToString(scope.runApp),\n projectId: scope.uuid,\n useExample: boolToString(scope.useExample),\n gitInit: boolToString(scope.gitInit),\n installDependencies: boolToString(scope.installDependencies),\n };\n\n return {\n eventProperties,\n userProperties,\n groupProperties: addPackageJsonStrapiMetadata(groupProperties, scope),\n };\n};\n\nfunction trackEvent(event: string, payload: Record<string, unknown>) {\n if (process.env.NODE_ENV === 'test') {\n return;\n }\n\n const analyticsUrl = process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io';\n\n try {\n return fetch(`${analyticsUrl}/api/v2/track`, {\n method: 'POST',\n body: JSON.stringify({\n event,\n ...payload,\n }),\n signal: AbortSignal.timeout(1000),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n }).catch(() => {});\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackError({ scope, error }: { scope: Scope; error?: TrackError }) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent('didNotCreateProject', {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackUsage({\n event,\n scope,\n error,\n}: {\n event: string;\n scope: Scope;\n error?: TrackError;\n}) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent(event, {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n"],"names":["addPackageJsonStrapiMetadata","metadata","scope","packageJsonStrapi","_","defaults","boolToString","value","toString","getProperties","error","eventProperties","message","userProperties","os","type","osPlatform","platform","osArch","arch","osRelease","release","nodeVersion","process","versions","node","groupProperties","version","strapiVersion","docker","useYarn","packageManager","useTypescriptOnServer","useTypescript","useTypescriptOnAdmin","isHostedOnStrapiCloud","env","STRAPI_HOSTING","aiLicenseKey","STRAPI_ADMIN_AI_LICENSE","noRun","runApp","projectId","uuid","useExample","gitInit","installDependencies","trackEvent","event","payload","NODE_ENV","analyticsUrl","STRAPI_ANALYTICS_URL","fetch","method","body","JSON","stringify","signal","AbortSignal","timeout","headers","catch","err","Promise","resolve","trackError","properties","deviceId","installId","trackUsage"],"mappings":"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"}
|
package/dist/utils/usage.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.mjs","sources":["../../src/utils/usage.ts"],"sourcesContent":["import os from 'os';\nimport _ from 'lodash';\n\nimport { Scope, StderrError } from '../types';\n\ntype TrackError = Error | string | StderrError;\n\n// Add properties from the package.json strapi key in the metadata\nfunction addPackageJsonStrapiMetadata(metadata: Record<string, unknown>, scope: Scope) {\n const { packageJsonStrapi = {} } = scope;\n\n return _.defaults(metadata, packageJsonStrapi);\n}\n\nconst boolToString = (value: boolean | undefined) => (value === true).toString();\n\nconst getProperties = (scope: Scope, error?: TrackError) => {\n const eventProperties = {\n error: typeof error === 'string' ? error : error && error.message,\n };\n\n const userProperties = {\n os: os.type(),\n osPlatform: os.platform(),\n osArch: os.arch(),\n osRelease: os.release(),\n nodeVersion: process.versions.node,\n };\n\n const groupProperties = {\n version: scope.strapiVersion,\n docker: scope.docker,\n useYarn: scope.packageManager === 'yarn',\n packageManager: scope.packageManager,\n /** @deprecated */\n useTypescriptOnServer: boolToString(scope.useTypescript),\n /** @deprecated */\n useTypescriptOnAdmin: boolToString(scope.useTypescript),\n useTypescript: boolToString(scope.useTypescript),\n isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud',\n aiLicenseKey: process.env.STRAPI_ADMIN_AI_LICENSE,\n noRun: boolToString(scope.runApp),\n projectId: scope.uuid,\n useExample: boolToString(scope.useExample),\n gitInit: boolToString(scope.gitInit),\n installDependencies: boolToString(scope.installDependencies),\n };\n\n return {\n eventProperties,\n userProperties,\n groupProperties: addPackageJsonStrapiMetadata(groupProperties, scope),\n };\n};\n\nfunction trackEvent(event: string, payload: Record<string, unknown>) {\n if (process.env.NODE_ENV === 'test') {\n return;\n }\n\n const analyticsUrl = process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io';\n\n try {\n return fetch(`${analyticsUrl}/api/v2/track`, {\n method: 'POST',\n body: JSON.stringify({\n event,\n ...payload,\n }),\n signal: AbortSignal.timeout(1000),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n }).catch(() => {});\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackError({ scope, error }: { scope: Scope; error?: TrackError }) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent('didNotCreateProject', {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackUsage({\n event,\n scope,\n error,\n}: {\n event: string;\n scope: Scope;\n error?: TrackError;\n}) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent(event, {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n"],"names":["addPackageJsonStrapiMetadata","metadata","scope","packageJsonStrapi","_","defaults","boolToString","value","toString","getProperties","error","eventProperties","message","userProperties","os","type","osPlatform","platform","osArch","arch","osRelease","release","nodeVersion","process","versions","node","groupProperties","version","strapiVersion","docker","useYarn","packageManager","useTypescriptOnServer","useTypescript","useTypescriptOnAdmin","isHostedOnStrapiCloud","env","STRAPI_HOSTING","aiLicenseKey","STRAPI_ADMIN_AI_LICENSE","noRun","runApp","projectId","uuid","useExample","gitInit","installDependencies","trackEvent","event","payload","NODE_ENV","analyticsUrl","STRAPI_ANALYTICS_URL","fetch","method","body","JSON","stringify","signal","AbortSignal","timeout","headers","catch","err","Promise","resolve","trackError","properties","deviceId","installId","trackUsage"],"mappings":";;;AAOA;AACA,SAASA,4BAAAA,CAA6BC,QAAiC,EAAEC,KAAY,EAAA;AACnF,IAAA,MAAM,EAAEC,iBAAAA,GAAoB,EAAE,EAAE,GAAGD,KAAAA;IAEnC,OAAOE,CAAAA,CAAEC,QAAQ,CAACJ,QAAUE,EAAAA,iBAAAA,CAAAA;AAC9B;AAEA,MAAMG,YAAAA,GAAe,CAACC,KAA+B,GAACA,CAAAA,KAAU,KAAA,IAAG,EAAGC,QAAQ,EAAA;AAE9E,MAAMC,aAAAA,GAAgB,CAACP,KAAcQ,EAAAA,KAAAA,GAAAA;AACnC,IAAA,MAAMC,eAAkB,GAAA;AACtBD,QAAAA,KAAAA,EAAO,OAAOA,KAAU,KAAA,QAAA,GAAWA,KAAQA,GAAAA,KAAAA,IAASA,MAAME;AAC5D,KAAA;AAEA,IAAA,MAAMC,cAAiB,GAAA;AACrBC,QAAAA,EAAAA,EAAIA,GAAGC,IAAI,EAAA;AACXC,QAAAA,UAAAA,EAAYF,GAAGG,QAAQ,EAAA;AACvBC,QAAAA,MAAAA,EAAQJ,GAAGK,IAAI,EAAA;AACfC,QAAAA,SAAAA,EAAWN,GAAGO,OAAO,EAAA;QACrBC,WAAaC,EAAAA,OAAAA,CAAQC,QAAQ,CAACC;AAChC,KAAA;AAEA,IAAA,MAAMC,eAAkB,GAAA;AACtBC,QAAAA,OAAAA,EAASzB,MAAM0B,aAAa;AAC5BC,QAAAA,MAAAA,EAAQ3B,MAAM2B,MAAM;QACpBC,OAAS5B,EAAAA,KAAAA,CAAM6B,cAAc,KAAK,MAAA;AAClCA,QAAAA,cAAAA,EAAgB7B,MAAM6B,cAAc;AACpC,2BACAC,qBAAAA,EAAuB1B,YAAaJ,CAAAA,KAAAA,CAAM+B,aAAa,CAAA;AACvD,2BACAC,oBAAAA,EAAsB5B,YAAaJ,CAAAA,KAAAA,CAAM+B,aAAa,CAAA;QACtDA,aAAe3B,EAAAA,YAAAA,CAAaJ,MAAM+B,aAAa,CAAA;AAC/CE,QAAAA,qBAAAA,EAAuBZ,OAAQa,CAAAA,GAAG,CAACC,cAAc,KAAK,cAAA;QACtDC,YAAcf,EAAAA,OAAAA,CAAQa,GAAG,CAACG,uBAAuB;QACjDC,KAAOlC,EAAAA,YAAAA,CAAaJ,MAAMuC,MAAM,CAAA;AAChCC,QAAAA,SAAAA,EAAWxC,MAAMyC,IAAI;QACrBC,UAAYtC,EAAAA,YAAAA,CAAaJ,MAAM0C,UAAU,CAAA;QACzCC,OAASvC,EAAAA,YAAAA,CAAaJ,MAAM2C,OAAO,CAAA;QACnCC,mBAAqBxC,EAAAA,YAAAA,CAAaJ,MAAM4C,mBAAmB;AAC7D,KAAA;IAEA,OAAO;AACLnC,QAAAA,eAAAA;AACAE,QAAAA,cAAAA;AACAa,QAAAA,eAAAA,EAAiB1B,6BAA6B0B,eAAiBxB,EAAAA,KAAAA;AACjE,KAAA;AACF,CAAA;AAEA,SAAS6C,UAAAA,CAAWC,KAAa,EAAEC,OAAgC,EAAA;AACjE,IAAA,IAAI1B,OAAQa,CAAAA,GAAG,CAACc,QAAQ,KAAK,MAAQ,EAAA;AACnC,QAAA;AACF;AAEA,IAAA,MAAMC,YAAe5B,GAAAA,OAAAA,CAAQa,GAAG,CAACgB,oBAAoB,IAAI,6BAAA;IAEzD,IAAI;AACF,QAAA,OAAOC,
|
|
1
|
+
{"version":3,"file":"usage.mjs","sources":["../../src/utils/usage.ts"],"sourcesContent":["import os from 'os';\nimport _ from 'lodash';\n\nimport { Scope, StderrError } from '../types';\n\ntype TrackError = Error | string | StderrError;\n\n// Add properties from the package.json strapi key in the metadata\nfunction addPackageJsonStrapiMetadata(metadata: Record<string, unknown>, scope: Scope) {\n const { packageJsonStrapi = {} } = scope;\n\n return _.defaults(metadata, packageJsonStrapi);\n}\n\nconst boolToString = (value: boolean | undefined) => (value === true).toString();\n\nconst getProperties = (scope: Scope, error?: TrackError) => {\n const eventProperties = {\n error: typeof error === 'string' ? error : error && error.message,\n };\n\n const userProperties = {\n os: os.type(),\n osPlatform: os.platform(),\n osArch: os.arch(),\n osRelease: os.release(),\n nodeVersion: process.versions.node,\n };\n\n const groupProperties = {\n version: scope.strapiVersion,\n docker: scope.docker,\n useYarn: scope.packageManager === 'yarn',\n packageManager: scope.packageManager,\n /** @deprecated */\n useTypescriptOnServer: boolToString(scope.useTypescript),\n /** @deprecated */\n useTypescriptOnAdmin: boolToString(scope.useTypescript),\n useTypescript: boolToString(scope.useTypescript),\n isHostedOnStrapiCloud: process.env.STRAPI_HOSTING === 'strapi.cloud',\n aiLicenseKey: process.env.STRAPI_ADMIN_AI_LICENSE,\n noRun: boolToString(scope.runApp),\n projectId: scope.uuid,\n useExample: boolToString(scope.useExample),\n gitInit: boolToString(scope.gitInit),\n installDependencies: boolToString(scope.installDependencies),\n };\n\n return {\n eventProperties,\n userProperties,\n groupProperties: addPackageJsonStrapiMetadata(groupProperties, scope),\n };\n};\n\nfunction trackEvent(event: string, payload: Record<string, unknown>) {\n if (process.env.NODE_ENV === 'test') {\n return;\n }\n\n const analyticsUrl = process.env.STRAPI_ANALYTICS_URL || 'https://analytics.strapi.io';\n\n try {\n return fetch(`${analyticsUrl}/api/v2/track`, {\n method: 'POST',\n body: JSON.stringify({\n event,\n ...payload,\n }),\n signal: AbortSignal.timeout(1000),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n }).catch(() => {});\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackError({ scope, error }: { scope: Scope; error?: TrackError }) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent('didNotCreateProject', {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n\nexport async function trackUsage({\n event,\n scope,\n error,\n}: {\n event: string;\n scope: Scope;\n error?: TrackError;\n}) {\n const properties = getProperties(scope, error);\n\n try {\n return await trackEvent(event, {\n deviceId: scope.installId,\n ...properties,\n });\n } catch (err) {\n /** ignore errors */\n return Promise.resolve();\n }\n}\n"],"names":["addPackageJsonStrapiMetadata","metadata","scope","packageJsonStrapi","_","defaults","boolToString","value","toString","getProperties","error","eventProperties","message","userProperties","os","type","osPlatform","platform","osArch","arch","osRelease","release","nodeVersion","process","versions","node","groupProperties","version","strapiVersion","docker","useYarn","packageManager","useTypescriptOnServer","useTypescript","useTypescriptOnAdmin","isHostedOnStrapiCloud","env","STRAPI_HOSTING","aiLicenseKey","STRAPI_ADMIN_AI_LICENSE","noRun","runApp","projectId","uuid","useExample","gitInit","installDependencies","trackEvent","event","payload","NODE_ENV","analyticsUrl","STRAPI_ANALYTICS_URL","fetch","method","body","JSON","stringify","signal","AbortSignal","timeout","headers","catch","err","Promise","resolve","trackError","properties","deviceId","installId","trackUsage"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-strapi-app",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.31.0",
|
|
4
4
|
"description": "Generate a new Strapi application.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"create-strapi-app",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"watch": "run -T rollup -c -w"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@strapi/cloud-cli": "5.
|
|
53
|
+
"@strapi/cloud-cli": "5.31.0",
|
|
54
54
|
"async-retry": "1.3.3",
|
|
55
55
|
"chalk": "4.1.2",
|
|
56
56
|
"commander": "8.3.0",
|
|
@@ -69,11 +69,11 @@
|
|
|
69
69
|
"@types/async-retry": "^1",
|
|
70
70
|
"@types/fs-extra": "11.0.4",
|
|
71
71
|
"@types/inquirer": "8.2.5",
|
|
72
|
-
"eslint-config-custom": "5.
|
|
73
|
-
"tsconfig": "5.
|
|
72
|
+
"eslint-config-custom": "5.31.0",
|
|
73
|
+
"tsconfig": "5.31.0"
|
|
74
74
|
},
|
|
75
75
|
"engines": {
|
|
76
|
-
"node": ">=
|
|
76
|
+
"node": ">=20.0.0 <=24.x.x",
|
|
77
77
|
"npm": ">=6.0.0"
|
|
78
78
|
}
|
|
79
79
|
}
|