@strapi/strapi 5.10.3 → 5.11.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.
Files changed (35) hide show
  1. package/dist/chunks/{aliases-Dgz_GzTu.js → aliases-CUCvuf35.js} +2 -2
  2. package/dist/chunks/{aliases-Dgz_GzTu.js.map → aliases-CUCvuf35.js.map} +1 -1
  3. package/dist/chunks/{aliases-COQuBE-a.mjs → aliases-DEcVJGyM.mjs} +2 -2
  4. package/dist/chunks/{aliases-COQuBE-a.mjs.map → aliases-DEcVJGyM.mjs.map} +1 -1
  5. package/dist/chunks/{build-BU2xrLNx.js → build-BdILbhJl.js} +4 -4
  6. package/dist/chunks/{build-BU2xrLNx.js.map → build-BdILbhJl.js.map} +1 -1
  7. package/dist/chunks/{build-C21nr7XO.js → build-CtJmeNVA.js} +4 -4
  8. package/dist/chunks/{build-C21nr7XO.js.map → build-CtJmeNVA.js.map} +1 -1
  9. package/dist/chunks/{build-BNinomwL.mjs → build-DX22_Xk-.mjs} +4 -4
  10. package/dist/chunks/{build-BNinomwL.mjs.map → build-DX22_Xk-.mjs.map} +1 -1
  11. package/dist/chunks/{build-aIqMGZ0Z.mjs → build-gD9rqI7P.mjs} +4 -4
  12. package/dist/chunks/{build-aIqMGZ0Z.mjs.map → build-gD9rqI7P.mjs.map} +1 -1
  13. package/dist/chunks/{config-BVBLAnGm.mjs → config-B7vdJrQV.mjs} +3 -3
  14. package/dist/chunks/{config-BVBLAnGm.mjs.map → config-B7vdJrQV.mjs.map} +1 -1
  15. package/dist/chunks/{config-Cm6Mq1QL.js → config-CiGVLyA8.js} +3 -3
  16. package/dist/chunks/{config-Cm6Mq1QL.js.map → config-CiGVLyA8.js.map} +1 -1
  17. package/dist/chunks/{config-DQYvtsC_.mjs → config-CwcaqkWk.mjs} +2 -2
  18. package/dist/chunks/{config-DQYvtsC_.mjs.map → config-CwcaqkWk.mjs.map} +1 -1
  19. package/dist/chunks/{config-BFMWGER0.js → config-vx7xxzK2.js} +2 -2
  20. package/dist/chunks/{config-BFMWGER0.js.map → config-vx7xxzK2.js.map} +1 -1
  21. package/dist/chunks/{index-Bxfzep52.mjs → index--KO67yy1.mjs} +8 -8
  22. package/dist/chunks/{index-Bxfzep52.mjs.map → index--KO67yy1.mjs.map} +1 -1
  23. package/dist/chunks/{index-DgH0C52K.js → index-B6a-6AJY.js} +8 -8
  24. package/dist/chunks/{index-DgH0C52K.js.map → index-B6a-6AJY.js.map} +1 -1
  25. package/dist/chunks/{watch-MAB-y3uk.js → watch-5yscCmUn.js} +4 -4
  26. package/dist/chunks/{watch-MAB-y3uk.js.map → watch-5yscCmUn.js.map} +1 -1
  27. package/dist/chunks/{watch-BDQuw8aa.mjs → watch-CNSuaMw6.mjs} +4 -4
  28. package/dist/chunks/{watch-BDQuw8aa.mjs.map → watch-CNSuaMw6.mjs.map} +1 -1
  29. package/dist/chunks/{watch-BXKhPzUU.js → watch-DTWWenI8.js} +4 -4
  30. package/dist/chunks/{watch-BXKhPzUU.js.map → watch-DTWWenI8.js.map} +1 -1
  31. package/dist/chunks/{watch-BIWNzSq3.mjs → watch-GFfg5oE3.mjs} +4 -4
  32. package/dist/chunks/{watch-BIWNzSq3.mjs.map → watch-GFfg5oE3.mjs.map} +1 -1
  33. package/dist/cli.js +1 -1
  34. package/dist/cli.mjs +1 -1
  35. package/package.json +22 -22
@@ -1 +1 @@
1
- {"version":3,"file":"index-Bxfzep52.mjs","sources":["../../src/cli/utils/helpers.ts","../../src/cli/commands/admin/create-user.ts","../../src/cli/commands/admin/reset-user-password.ts","../../src/cli/commands/components/list.ts","../../src/cli/commands/configuration/dump.ts","../../src/cli/commands/configuration/restore.ts","../../src/cli/commands/content-types/list.ts","../../src/cli/commands/controllers/list.ts","../../src/cli/commands/hooks/list.ts","../../src/cli/commands/middlewares/list.ts","../../src/cli/commands/policies/list.ts","../../src/cli/commands/routes/list.ts","../../src/cli/commands/services/list.ts","../../src/cli/utils/telemetry.ts","../../src/cli/commands/telemetry/disable.ts","../../src/cli/commands/telemetry/enable.ts","../../src/cli/commands/templates/generate.ts","../../src/cli/commands/ts/generate-types.ts","../../src/node/core/managers.ts","../../src/node/core/dependencies.ts","../../src/node/core/timer.ts","../../src/node/core/files.ts","../../src/node/core/env.ts","../../src/node/core/errors.ts","../../src/node/core/plugins.ts","../../src/node/core/admin-customisations.ts","../../src/node/create-build-context.ts","../../src/node/staticFiles.ts","../../src/node/build.ts","../../src/cli/commands/build.ts","../../src/cli/commands/console.ts","../../src/node/develop.ts","../../src/cli/commands/develop.ts","../../src/cli/commands/generate.ts","../../src/cli/commands/report.ts","../../src/cli/commands/start.ts","../../src/cli/commands/version.ts","../../src/cli/utils/commander.ts","../../src/cli/utils/data-transfer.ts","../../src/cli/commands/export/action.ts","../../src/cli/commands/export/command.ts","../../src/cli/commands/import/action.ts","../../src/cli/commands/import/command.ts","../../src/cli/commands/transfer/action.ts","../../src/cli/commands/transfer/command.ts","../../src/cli/commands/index.ts","../../src/cli/utils/logger.ts","../../src/cli/utils/tsconfig.ts","../../src/cli/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport chalk from 'chalk';\nimport { has, isString, isArray } from 'lodash/fp';\nimport { prompt } from 'inquirer';\nimport boxen from 'boxen';\nimport type { Command } from 'commander';\n\n/**\n * Helper functions for the Strapi CLI\n */\nconst bytesPerKb = 1024;\nconst sizes = ['B ', 'KB', 'MB', 'GB', 'TB', 'PB'];\n\n/**\n * Convert bytes to a human readable formatted string, for example \"1024\" becomes \"1KB\"\n */\nconst readableBytes = (bytes: number, decimals = 1, padStart = 0) => {\n if (!bytes) {\n return '0';\n }\n const i = Math.floor(Math.log(bytes) / Math.log(bytesPerKb));\n const result = `${parseFloat((bytes / bytesPerKb ** i).toFixed(decimals))} ${sizes[i].padStart(\n 2\n )}`;\n\n return result.padStart(padStart);\n};\n\ninterface ExitWithOptions {\n logger?: Console;\n prc?: NodeJS.Process;\n}\n\n/**\n *\n * Display message(s) to console and then call process.exit with code.\n * If code is zero, console.log and green text is used for messages, otherwise console.error and red text.\n *\n */\nconst exitWith = (code: number, message?: string | string[], options: ExitWithOptions = {}) => {\n const { logger = console, prc = process } = options;\n\n const log = (message: string) => {\n if (code === 0) {\n logger.log(chalk.green(message));\n } else {\n logger.error(chalk.red(message));\n }\n };\n\n if (isString(message)) {\n log(message);\n } else if (isArray(message)) {\n message.forEach((msg) => log(msg));\n }\n\n prc.exit(code);\n};\n\n/**\n * assert that a URL object has a protocol value\n *\n */\nconst assertUrlHasProtocol = (url: URL, protocol?: string | string[]) => {\n if (!url.protocol) {\n exitWith(1, `${url.toString()} does not have a protocol`);\n }\n\n // if just checking for the existence of a protocol, return\n if (!protocol) {\n return;\n }\n\n if (isString(protocol)) {\n if (protocol !== url.protocol) {\n exitWith(1, `${url.toString()} must have the protocol ${protocol}`);\n }\n return;\n }\n\n // assume an array\n if (!protocol.some((protocol) => url.protocol === protocol)) {\n return exitWith(\n 1,\n `${url.toString()} must have one of the following protocols: ${protocol.join(',')}`\n );\n }\n};\n\ntype ConditionCallback = (opts: Record<string, any>) => Promise<boolean>;\ntype IsMetCallback = (command: Command) => Promise<void>;\ntype IsNotMetCallback = (command: Command) => Promise<void>;\n\n/**\n * Passes commander options to conditionCallback(). If it returns true, call isMetCallback otherwise call isNotMetCallback\n */\nconst ifOptions = (\n conditionCallback: ConditionCallback,\n isMetCallback: IsMetCallback = async () => {},\n isNotMetCallback: IsNotMetCallback = async () => {}\n) => {\n return async (command: Command) => {\n const opts = command.opts();\n if (await conditionCallback(opts)) {\n await isMetCallback(command);\n } else {\n await isNotMetCallback(command);\n }\n };\n};\n\nconst assertCwdContainsStrapiProject = (name: string) => {\n const logErrorAndExit = () => {\n console.log(\n `You need to run ${chalk.yellow(\n `strapi ${name}`\n )} in a Strapi project. Make sure you are in the right directory.`\n );\n process.exit(1);\n };\n\n try {\n const pkgJSON = require(`${process.cwd()}/package.json`);\n if (\n !has('dependencies.@strapi/strapi', pkgJSON) &&\n !has('devDependencies.@strapi/strapi', pkgJSON)\n ) {\n logErrorAndExit();\n }\n } catch (err) {\n logErrorAndExit();\n }\n};\n\nconst runAction =\n (name: string, action: (...args: any[]) => Promise<void>) =>\n (...args: unknown[]) => {\n assertCwdContainsStrapiProject(name);\n\n Promise.resolve()\n .then(() => {\n return action(...args);\n })\n .catch((error) => {\n console.error(error);\n process.exit(1);\n });\n };\n\n/**\n * @description Notify users this is an experimental command and get them to approve first\n * this can be opted out by passing `yes` as a property of the args object.\n *\n * @example\n * ```ts\n * const { notifyExperimentalCommand } = require('../utils/helpers');\n *\n * const myCommand = async ({ force }) => {\n * await notifyExperimentalCommand('plugin:build', { force });\n * }\n * ```\n */\nconst notifyExperimentalCommand = async (name: string, { force }: { force?: boolean } = {}) => {\n console.log(\n boxen(\n `The ${chalk.bold(\n chalk.underline(name)\n )} command is considered experimental, use at your own risk.`,\n {\n title: 'Warning',\n padding: 1,\n margin: 1,\n align: 'center',\n borderColor: 'yellow',\n borderStyle: 'bold',\n }\n )\n );\n\n if (!force) {\n const { confirmed } = await prompt({\n type: 'confirm',\n name: 'confirmed',\n message: 'Do you want to continue?',\n });\n\n if (!confirmed) {\n process.exit(0);\n }\n }\n};\n\nexport {\n exitWith,\n assertUrlHasProtocol,\n ifOptions,\n readableBytes,\n runAction,\n assertCwdContainsStrapiProject,\n notifyExperimentalCommand,\n};\n","import { createCommand } from 'commander';\nimport { yup } from '@strapi/utils';\nimport _ from 'lodash';\nimport inquirer from 'inquirer';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport { runAction } from '../../utils/helpers';\nimport type { StrapiCommand } from '../../types';\n\ninterface CmdOptions {\n email?: string;\n password?: string;\n firstname?: string;\n lastname?: string;\n}\n\nconst emailValidator = yup.string().email('Invalid email address').lowercase();\n\nconst passwordValidator = yup\n .string()\n .min(8, 'Password must be at least 8 characters long')\n .matches(/[a-z]/, 'Password must contain at least one lowercase character')\n .matches(/[A-Z]/, 'Password must contain at least one uppercase character')\n .matches(/\\d/, 'Password must contain at least one number');\n\nconst adminCreateSchema = yup.object().shape({\n email: emailValidator,\n password: passwordValidator,\n firstname: yup.string().trim().required('First name is required'),\n lastname: yup.string(),\n});\n\ninterface Answers {\n email: string;\n password: string;\n firstname: string;\n lastname: string;\n confirm: boolean;\n}\n\n/**\n * It's not an observable, in reality this is\n * `ReadOnlyArray<inquirer.DistinctQuestion<Answers>>`\n * but then the logic of the validate function needs to change.\n */\n// eslint-disable-next-line rxjs/finnish\nconst promptQuestions: inquirer.QuestionCollection<Answers> = [\n {\n type: 'input',\n name: 'email',\n message: 'Admin email?',\n async validate(value: string) {\n const validEmail = await emailValidator.validate(value);\n return validEmail === value || validEmail;\n },\n },\n {\n type: 'password',\n name: 'password',\n message: 'Admin password?',\n async validate(value: string) {\n const validPassword = await passwordValidator.validate(value);\n return validPassword === value || validPassword;\n },\n },\n { type: 'input', name: 'firstname', message: 'First name?' },\n { type: 'input', name: 'lastname', message: 'Last name?' },\n {\n type: 'confirm',\n name: 'confirm',\n message: 'Do you really want to create a new admin?',\n },\n];\n\nasync function createAdmin({ email, password, firstname, lastname }: CmdOptions) {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n const user = await app.admin!.services.user.exists({ email });\n\n if (user) {\n console.error(`User with email \"${email}\" already exists`);\n process.exit(1);\n }\n\n const superAdminRole = await app.admin!.services.role.getSuperAdmin();\n\n await app.admin!.services.user.create({\n email,\n firstname,\n lastname,\n isActive: true,\n roles: [superAdminRole.id],\n ...(password && { password, registrationToken: null }),\n });\n\n console.log(`Successfully created new admin`);\n process.exit(0);\n}\n\n/**\n * Create new admin user\n */\nconst action = async (cmdOptions: CmdOptions = {}) => {\n let { email, password, firstname, lastname } = cmdOptions;\n\n if (\n _.isEmpty(email) &&\n _.isEmpty(password) &&\n _.isEmpty(firstname) &&\n _.isEmpty(lastname) &&\n process.stdin.isTTY\n ) {\n const inquiry = await inquirer.prompt(promptQuestions);\n\n if (!inquiry.confirm) {\n process.exit(0);\n }\n\n ({ email, password, firstname, lastname } = inquiry);\n }\n\n try {\n await adminCreateSchema.validate({ email, password, firstname, lastname });\n } catch (err) {\n if (err instanceof yup.ValidationError) {\n console.error(err.errors[0]);\n }\n\n process.exit(1);\n }\n\n return createAdmin({ email, password, firstname, lastname });\n};\n\n/**\n * `$ strapi admin:create-user`\n */\nconst command: StrapiCommand = () => {\n return createCommand('admin:create-user')\n .alias('admin:create')\n .description('Create a new admin')\n .option('-e, --email <email>', 'Email of the new admin')\n .option('-p, --password <password>', 'Password of the new admin')\n .option('-f, --firstname <first name>', 'First name of the new admin')\n .option('-l, --lastname <last name>', 'Last name of the new admin')\n .action(runAction('admin:create-user', action));\n};\n\nexport { action, command };\n","import _ from 'lodash';\nimport inquirer from 'inquirer';\nimport { createCommand } from 'commander';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\ninterface CmdOptions {\n email?: string;\n password?: string;\n}\n\ninterface Answers {\n email: string;\n password: string;\n confirm: boolean;\n}\n\nconst promptQuestions: ReadonlyArray<inquirer.DistinctQuestion<Answers>> = [\n { type: 'input', name: 'email', message: 'User email?' },\n { type: 'password', name: 'password', message: 'New password?' },\n {\n type: 'confirm',\n name: 'confirm',\n message: \"Do you really want to reset this user's password?\",\n },\n];\n\nasync function changePassword({ email, password }: CmdOptions) {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n await app.admin!.services.user.resetPasswordByEmail(email, password);\n\n console.log(`Successfully reset user's password`);\n process.exit(0);\n}\n\n/**\n * Reset user's password\n */\nconst action = async (cmdOptions: CmdOptions = {}) => {\n const { email, password } = cmdOptions;\n\n if (_.isEmpty(email) && _.isEmpty(password) && process.stdin.isTTY) {\n const inquiry = await inquirer.prompt(promptQuestions);\n\n if (!inquiry.confirm) {\n process.exit(0);\n }\n\n return changePassword(inquiry);\n }\n\n if (_.isEmpty(email) || _.isEmpty(password)) {\n console.error('Missing required options `email` or `password`');\n process.exit(1);\n }\n\n return changePassword({ email, password });\n};\n\n/**\n * `$ strapi admin:reset-user-password`\n */\nconst command: StrapiCommand = () => {\n return createCommand('admin:reset-user-password')\n .alias('admin:reset-password')\n .description(\"Reset an admin user's password\")\n .option('-e, --email <email>', 'The user email')\n .option('-p, --password <password>', 'New password for the user')\n .action(runAction('admin:reset-user-password', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = Object.keys(app.components);\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi components:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('components:list')\n .description('List all the application components')\n .action(runAction('components:list', action));\n};\n\nexport { action, command };\n","import fs from 'fs';\nimport { createCommand } from 'commander';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\ninterface CmdOptions {\n file?: string;\n pretty?: boolean;\n}\n\ninterface ExportItem {\n key: string;\n value: string;\n type: string;\n environment: string;\n tag: string;\n}\n\ninterface Output {\n write(str: string): void;\n end(): void;\n}\n\nconst CHUNK_SIZE = 100;\n\n/**\n * Will dump configurations to a file or stdout\n * @param {string} file filepath to use as output\n */\nconst action = async ({ file: filePath, pretty }: CmdOptions) => {\n const output: Output = filePath ? fs.createWriteStream(filePath) : process.stdout;\n\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n const count = await app.query('strapi::core-store').count();\n\n const exportData: ExportItem[] = [];\n\n const pageCount = Math.ceil(count / CHUNK_SIZE);\n\n for (let page = 0; page < pageCount; page += 1) {\n const results = await app\n .query('strapi::core-store')\n .findMany({ limit: CHUNK_SIZE, offset: page * CHUNK_SIZE, orderBy: 'key' });\n\n results\n .filter((result) => result.key.startsWith('plugin_'))\n .forEach((result) => {\n exportData.push({\n key: result.key,\n value: result.value,\n type: result.type,\n environment: result.environment,\n tag: result.tag,\n });\n });\n }\n\n const str = JSON.stringify(exportData, null, pretty ? 2 : undefined);\n\n output.write(str);\n output.write('\\n');\n output.end();\n\n // log success only when writting to file\n if (filePath) {\n console.log(`Successfully exported ${exportData.length} configuration entries`);\n }\n process.exit(0);\n};\n\n/**\n * `$ strapi configuration:dump`\n */\nconst command: StrapiCommand = () => {\n return createCommand('configuration:dump')\n .alias('config:dump')\n .description('Dump configurations of your application')\n .option('-f, --file <file>', 'Output file, default output is stdout')\n .option('-p, --pretty', 'Format the output JSON with indentation and line breaks', false)\n .action(runAction('configuration:dump', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport fs from 'fs';\nimport _ from 'lodash';\nimport { createStrapi, compileStrapi } from '@strapi/core';\nimport type { Database } from '@strapi/database';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\ntype Strategy = 'replace' | 'merge' | 'keep';\n\ninterface CmdOptions {\n file?: string;\n strategy?: Strategy;\n}\n\n/**\n * Will restore configurations. It reads from a file or stdin\n */\nconst action = async ({ file: filePath, strategy = 'replace' }: CmdOptions) => {\n const input = filePath ? fs.readFileSync(filePath) : await readStdin();\n\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n let dataToImport;\n try {\n dataToImport = JSON.parse(_.toString(input));\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(`Invalid input data: ${error.message}. Expected a valid JSON array.`);\n }\n\n throw error;\n }\n\n if (!Array.isArray(dataToImport)) {\n throw new Error(`Invalid input data. Expected a valid JSON array.`);\n }\n\n if (!app.db) {\n throw new Error('Cannot import configuration without a database connection.');\n }\n\n const importer = createImporter(app.db, strategy);\n\n for (const config of dataToImport) {\n await importer.import(config);\n }\n\n console.log(\n `Successfully imported configuration with ${strategy} strategy. Statistics: ${importer.printStatistics()}.`\n );\n\n process.exit(0);\n};\n\nconst readStdin = () => {\n const { stdin } = process;\n let result = '';\n\n if (stdin.isTTY) return Promise.resolve(result);\n\n return new Promise((resolve, reject) => {\n stdin.setEncoding('utf8');\n stdin.on('readable', () => {\n let chunk;\n // eslint-disable-next-line no-cond-assign\n while ((chunk = stdin.read())) {\n result += chunk;\n }\n });\n\n stdin.on('end', () => {\n resolve(result);\n });\n\n stdin.on('error', reject);\n });\n};\n\nconst createImporter = (db: Database, strategy?: Strategy) => {\n switch (strategy) {\n case 'replace':\n return createReplaceImporter(db);\n case 'merge':\n return createMergeImporter(db);\n case 'keep':\n return createKeepImporter(db);\n default:\n throw new Error(`No importer available for strategy \"${strategy}\"`);\n }\n};\n\n/**\n * Replace importer. Will replace the keys that already exist and create the new ones\n */\nconst createReplaceImporter = (db: Database) => {\n const stats = {\n created: 0,\n replaced: 0,\n };\n\n return {\n printStatistics() {\n return `${stats.created} created, ${stats.replaced} replaced`;\n },\n\n async import(conf: Record<string, unknown>) {\n const matching = await db.query('strapi::core-store').count({ where: { key: conf.key } });\n if (matching > 0) {\n stats.replaced += 1;\n await db.query('strapi::core-store').update({\n where: { key: conf.key },\n data: conf,\n });\n } else {\n stats.created += 1;\n await db.query('strapi::core-store').create({ data: conf });\n }\n },\n };\n};\n\n/**\n * Merge importer. Will merge the keys that already exist with their new value and create the new ones\n */\nconst createMergeImporter = (db: Database) => {\n const stats = {\n created: 0,\n merged: 0,\n };\n\n return {\n printStatistics() {\n return `${stats.created} created, ${stats.merged} merged`;\n },\n\n async import(conf: Record<string, unknown>) {\n const existingConf = await db\n .query('strapi::core-store')\n .findOne({ where: { key: conf.key } });\n\n if (existingConf) {\n stats.merged += 1;\n await db.query('strapi::core-store').update({\n where: { key: conf.key },\n data: _.merge(existingConf, conf),\n });\n } else {\n stats.created += 1;\n await db.query('strapi::core-store').create({ data: conf });\n }\n },\n };\n};\n\n/**\n * Merge importer. Will keep the keys that already exist without changing them and create the new ones\n */\nconst createKeepImporter = (db: Database) => {\n const stats = {\n created: 0,\n untouched: 0,\n };\n\n return {\n printStatistics() {\n return `${stats.created} created, ${stats.untouched} untouched`;\n },\n\n async import(conf: Record<string, unknown>) {\n const matching = await db.query('strapi::core-store').count({ where: { key: conf.key } });\n if (matching > 0) {\n stats.untouched += 1;\n // if configuration already exists do not overwrite it\n return;\n }\n\n stats.created += 1;\n await db.query('strapi::core-store').create({ data: conf });\n },\n };\n};\n\n/**\n * `$ strapi configuration:restore`\n */\nconst command: StrapiCommand = () => {\n return createCommand('configuration:restore')\n .alias('config:restore')\n .description('Restore configurations of your application')\n .option('-f, --file <file>', 'Input file, default input is stdin')\n .option('-s, --strategy <strategy>', 'Strategy name, one of: \"replace\", \"merge\", \"keep\"')\n .action(runAction('configuration:restore', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\n\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('content-types').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi content-types:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('content-types:list')\n .description('List all the application content-types')\n .action(runAction('content-types:list', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\n\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('controllers').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi controllers:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('controllers:list')\n .description('List all the application controllers')\n .action(runAction('controllers:list', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('hooks').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi hooks:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('hooks:list')\n .description('List all the application hooks')\n .action(runAction('hooks:list', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('middlewares').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi middlewares:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('middlewares:list')\n .description('List all the application middlewares')\n .action(runAction('middlewares:list', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('policies').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi policies:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('policies:list')\n .description('List all the application policies')\n .action(runAction('policies:list', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { toUpper } from 'lodash/fp';\n\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n const list = app.server.mount().listRoutes();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Method'), chalk.blue('Path')],\n colWidths: [20],\n });\n\n list\n .filter((route) => route.methods.length)\n .forEach((route) => {\n infoTable.push([route.methods.map(toUpper).join('|'), route.path]);\n });\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi routes:list``\n */\nconst command: StrapiCommand = () => {\n return createCommand('routes:list')\n .description('List all the application routes')\n .action(runAction('routes:list', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('services').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi services:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('services:list')\n .description('List all the application services')\n .action(runAction('services:list', action));\n};\n\nexport { action, command };\n","import { machineID } from '@strapi/utils';\n\nexport const sendEvent = async (event: string, uuid: string) => {\n try {\n await fetch('https://analytics.strapi.io/api/v2/track', {\n method: 'POST',\n body: JSON.stringify({\n event,\n deviceId: machineID(),\n groupProperties: { projectId: uuid },\n }),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n });\n } catch (e) {\n // ...\n }\n};\n","import { resolve } from 'path';\nimport fse from 'fs-extra';\nimport chalk from 'chalk';\nimport { createCommand } from 'commander';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\nimport { sendEvent } from '../../utils/telemetry';\n\nconst readPackageJSON = async (path: string) => {\n try {\n const packageObj = await fse.readJson(path);\n const uuid = packageObj.strapi ? packageObj.strapi.uuid : null;\n\n return { uuid, packageObj };\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n }\n }\n};\n\nconst writePackageJSON = async (path: string, file: object, spacing: number) => {\n try {\n await fse.writeJson(path, file, { spaces: spacing });\n return true;\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n }\n }\n};\n\nconst action = async () => {\n const packageJSONPath = resolve(process.cwd(), 'package.json');\n const exists = await fse.pathExists(packageJSONPath);\n\n if (!exists) {\n console.log(`${chalk.yellow('Warning')}: could not find package.json`);\n process.exit(0);\n }\n\n const { uuid, packageObj } = (await readPackageJSON(packageJSONPath)) ?? {};\n\n if ((packageObj.strapi && packageObj.strapi.telemetryDisabled) || !uuid) {\n console.log(`${chalk.yellow('Warning:')} telemetry is already disabled`);\n process.exit(0);\n }\n\n const updatedPackageJSON = {\n ...packageObj,\n strapi: {\n ...packageObj.strapi,\n telemetryDisabled: true,\n },\n };\n\n const write = await writePackageJSON(packageJSONPath, updatedPackageJSON, 2);\n\n if (!write) {\n console.log(\n `${chalk.yellow(\n 'Warning'\n )}: There has been an error, please set \"telemetryDisabled\": true in the \"strapi\" object of your package.json manually.`\n );\n process.exit(0);\n }\n\n await sendEvent('didOptOutTelemetry', uuid);\n console.log(`${chalk.green('Successfully opted out of Strapi telemetry')}`);\n process.exit(0);\n};\n\n/**\n * `$ strapi telemetry:disable`\n */\nconst command: StrapiCommand = () => {\n return createCommand('telemetry:disable')\n .description('Disable anonymous telemetry and metadata sending to Strapi analytics')\n .action(runAction('telemetry:disable', action));\n};\n\nexport { action, command };\n","import { resolve } from 'path';\nimport { randomUUID } from 'crypto';\nimport fse from 'fs-extra';\nimport chalk from 'chalk';\nimport { createCommand } from 'commander';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\nimport { sendEvent } from '../../utils/telemetry';\n\ntype PackageJson = {\n strapi?: {\n uuid?: string;\n telemetryDisabled?: boolean;\n };\n};\n\nconst readPackageJSON = async (path: string) => {\n try {\n const packageObj = await fse.readJson(path);\n return packageObj;\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n } else {\n throw err;\n }\n }\n};\n\nconst writePackageJSON = async (path: string, file: object, spacing: number) => {\n try {\n await fse.writeJson(path, file, { spaces: spacing });\n return true;\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n console.log(\n `${chalk.yellow(\n 'Warning'\n )}: There has been an error, please set \"telemetryDisabled\": false in the \"strapi\" object of your package.json manually.`\n );\n\n return false;\n }\n\n throw err;\n }\n};\n\nconst generateNewPackageJSON = (packageObj: PackageJson) => {\n if (!packageObj.strapi) {\n return {\n ...packageObj,\n strapi: {\n uuid: randomUUID(),\n telemetryDisabled: false,\n },\n };\n }\n return {\n ...packageObj,\n strapi: {\n ...packageObj.strapi,\n uuid: packageObj.strapi.uuid ? packageObj.strapi.uuid : randomUUID(),\n telemetryDisabled: false,\n },\n };\n};\n\nconst action = async () => {\n const packageJSONPath = resolve(process.cwd(), 'package.json');\n const exists = await fse.pathExists(packageJSONPath);\n\n if (!exists) {\n console.log(`${chalk.yellow('Warning')}: could not find package.json`);\n process.exit(0);\n }\n\n const packageObj = await readPackageJSON(packageJSONPath);\n\n if (packageObj.strapi && packageObj.strapi.uuid) {\n if (packageObj.strapi.telemetryDisabled === false) {\n console.log(`${chalk.yellow('Warning:')} telemetry is already enabled`);\n process.exit(0);\n }\n }\n\n const updatedPackageJSON = generateNewPackageJSON(packageObj);\n\n const write = await writePackageJSON(packageJSONPath, updatedPackageJSON, 2);\n\n if (!write) {\n process.exit(0);\n }\n\n await sendEvent('didOptInTelemetry', updatedPackageJSON.strapi.uuid);\n console.log(`${chalk.green('Successfully opted into and enabled Strapi telemetry')}`);\n process.exit(0);\n};\n\n/**\n * `$ strapi telemetry:enable`\n */\nconst command: StrapiCommand = () => {\n return createCommand('telemetry:enable')\n .description('Enable anonymous telemetry and metadata sending to Strapi analytics')\n .action(runAction('telemetry:enable', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\n\nimport type { StrapiCommand } from '../../types';\n\n/**\n *`$ strapi templates:generate <directory>`\n */\nconst command: StrapiCommand = () => {\n return createCommand('templates:generate <directory>')\n .description('(deprecated) Generate template from Strapi project')\n .action(() => {\n console.warn('This command is deprecated and will be removed in the next major release.');\n console.warn('You can now copy an existing app and use it as a template.');\n });\n};\n\nexport { command };\n","import { createCommand } from 'commander';\nimport tsUtils from '@strapi/typescript-utils';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\ninterface CmdOptions {\n debug?: boolean;\n silent?: boolean;\n verbose?: boolean;\n outDir?: string;\n}\n\nconst action = async ({ debug, silent, verbose, outDir }: CmdOptions) => {\n if ((debug || verbose) && silent) {\n console.error('Flags conflict: both silent and debug mode are enabled, exiting...');\n process.exit(1);\n }\n\n const appContext = await compileStrapi({ ignoreDiagnostics: true });\n const app = await createStrapi(appContext).register();\n\n await tsUtils.generators.generate({\n strapi: app,\n pwd: appContext.appDir,\n rootDir: outDir ?? undefined,\n logger: {\n silent,\n debug,\n },\n artifacts: { contentTypes: true, components: true },\n });\n\n await app.destroy();\n};\n\n/**\n * `$ strapi ts:generate-types`\n */\nconst command: StrapiCommand = () => {\n return createCommand('ts:generate-types')\n .description(`Generate TypeScript typings for your schemas`)\n .option('-d, --debug', `Run the generation with debug messages`, false)\n .option('-s, --silent', `Run the generation silently, without any output`, false)\n .option(\n '-o, --out-dir <outDir>',\n 'Specify a relative root directory in which the definitions will be generated. Changing this value might break types exposed by Strapi that relies on generated types.'\n )\n .action(runAction('ts:generate-types', action));\n};\n\nexport { action, command };\n","/**\n * @description Supports the following managers:\n * – npm\n * – yarn\n * – pnpm\n */\nconst getPackageManager = () => {\n // Yes, the env var is lowercase - it is set by the package managers themselves\n const agent = process.env.npm_config_user_agent || '';\n\n if (agent.includes('yarn')) {\n return 'yarn';\n }\n\n if (agent.includes('pnpm')) {\n return 'pnpm';\n }\n\n // Both yarn and pnpm does a `npm/?` thing, thus the slightly different match here\n // Theoretically not needed since we check for yarn/pnpm above, but in case other\n // package managers do the same thing, we'll (hopefully) catch them here.\n if (/^npm\\/\\d/.test(agent)) {\n return 'npm';\n }\n\n return undefined;\n};\n\nexport { getPackageManager };\n","import os from 'node:os';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport semver, { SemVer } from 'semver';\nimport resolveFrom from 'resolve-from';\nimport execa, { CommonOptions, ExecaReturnValue } from 'execa';\nimport readPkgUp, { PackageJson } from 'read-pkg-up';\nimport type { BuildOptions } from '../build';\nimport { getPackageManager } from './managers';\n\n/**\n * From V5 this will be imported from the package.json of `@strapi/strapi`.\n */\nconst PEER_DEPS = {\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\ninterface CheckRequiredDependenciesResult {\n didInstall: boolean;\n}\n\ninterface DepToInstall {\n name: string;\n wantedVersion: string;\n declaredVersion?: never;\n}\n\n/**\n * Checks the user's project that it has declared and installed the required dependencies\n * needed by the Strapi admin project. Whilst generally speaking most modules will be\n * declared by the actual packages there are some packages where you only really want one of\n * and thus they are declared as peer dependencies – react / styled-components / etc.\n *\n * If these deps are not installed or declared, then we prompt the user to correct this. In\n * V4 this is not a hard requirement, but in V5 it will be. Might as well get people started now.\n */\nconst checkRequiredDependencies = async ({\n cwd,\n logger,\n}: Pick<BuildOptions, 'cwd' | 'logger'>): Promise<CheckRequiredDependenciesResult> => {\n /**\n * This enables us to use experimental deps for libraries like\n * react or styled-components. This is useful for testing against.\n */\n if (process.env.USE_EXPERIMENTAL_DEPENDENCIES === 'true') {\n logger.warn('You are using experimental dependencies that may not be compatible with Strapi.');\n return { didInstall: false };\n }\n\n const pkg = await readPkgUp({ cwd });\n\n if (!pkg) {\n throw new Error(`Could not find package.json at path: ${cwd}`);\n }\n\n logger.debug('Loaded package.json:', os.EOL, pkg.packageJson);\n\n interface DepToReview {\n name: string;\n wantedVersion: string;\n declaredVersion: string;\n }\n\n /**\n * Run through each of the peer deps and figure out if they need to be\n * installed or they need their version checked against.\n */\n const { install, review } = Object.entries(PEER_DEPS).reduce<{\n install: DepToInstall[];\n review: DepToReview[];\n }>(\n (acc, [name, version]) => {\n if (!pkg.packageJson.dependencies) {\n throw new Error(`Could not find dependencies in package.json at path: ${cwd}`);\n }\n\n const declaredVersion = pkg.packageJson.dependencies[name];\n\n if (!declaredVersion) {\n acc.install.push({\n name,\n wantedVersion: version,\n });\n } else {\n acc.review.push({\n name,\n wantedVersion: version,\n declaredVersion,\n });\n }\n\n return acc;\n },\n {\n install: [],\n review: [],\n }\n );\n\n if (install.length > 0) {\n logger.info(\n 'The Strapi admin needs to install the following dependencies:',\n os.EOL,\n install.map(({ name, wantedVersion }) => ` - ${name}@${wantedVersion}`).join(os.EOL)\n );\n\n await installDependencies(install, {\n cwd,\n logger,\n });\n\n const [file, ...args] = process.argv;\n\n /**\n * Re-run the same command after installation e.g. strapi build because the yarn.lock might\n * not be the same and could break installations. It's not the best solution, but it works.\n */\n await execa(file, args, { cwd, stdio: 'inherit' });\n return { didInstall: true };\n }\n\n if (review.length) {\n const errors: string[] = [];\n\n for (const dep of review) {\n // The version specified in package.json could be incorrect, eg `foo`\n let minDeclaredVersion: SemVer | null = null;\n try {\n minDeclaredVersion = semver.minVersion(dep.declaredVersion);\n } catch (err) {\n // Intentional fall-through (variable will be left as null, throwing below)\n }\n\n if (!minDeclaredVersion) {\n errors.push(\n `The declared dependency, ${dep.name} has an invalid version in package.json: ${dep.declaredVersion}`\n );\n } else if (!semver.satisfies(minDeclaredVersion, dep.wantedVersion)) {\n /**\n * The delcared version should be semver compatible with our required version\n * of the dependency. If it's not, we should advise the user to change it.\n */\n logger.warn(\n [\n `Declared version of ${dep.name} (${minDeclaredVersion}) is not compatible with the version required by Strapi (${dep.wantedVersion}).`,\n 'You may experience issues, we recommend you change this.',\n ].join(os.EOL)\n );\n }\n\n const installedVersion = await getModuleVersion(dep.name, cwd);\n\n if (!installedVersion) {\n /**\n * TODO: when we know the packageManager we can advise the actual install command.\n */\n errors.push(\n `The declared dependency, ${dep.name} is not installed. You should install before re-running this command`\n );\n } else if (!semver.satisfies(installedVersion, dep.wantedVersion)) {\n logger.warn(\n [\n `Declared version of ${dep.name} (${installedVersion}) is not compatible with the version required by Strapi (${dep.wantedVersion}).`,\n 'You may experience issues, we recommend you change this.',\n ].join(os.EOL)\n );\n }\n }\n\n if (errors.length > 0 && process.env.NODE_ENV === 'development') {\n throw new Error(`${os.EOL}- ${errors.join(`${os.EOL}- `)}`);\n }\n }\n\n return { didInstall: false };\n};\n\nconst getModule = async (name: string, cwd: string): Promise<PackageJson | null> => {\n const modulePackagePath = resolveFrom.silent(cwd, path.join(name, 'package.json'));\n if (!modulePackagePath) {\n return null;\n }\n const file = await fs.readFile(modulePackagePath, 'utf8').then((res) => JSON.parse(res));\n\n return file;\n};\n\nconst getModuleVersion = async (name: string, cwd: string): Promise<string | null> => {\n const pkg = await getModule(name, cwd);\n\n return pkg?.version || null;\n};\n\nconst installDependencies = async (\n install: DepToInstall[],\n { cwd, logger }: Pick<BuildOptions, 'cwd' | 'logger'>\n) => {\n const packageManager = getPackageManager();\n\n if (!packageManager) {\n logger.error(\n 'Could not find a supported package manager, please install the dependencies manually.'\n );\n process.exit(1);\n }\n\n const execOptions: CommonOptions<'utf8'> = {\n encoding: 'utf8',\n cwd,\n stdio: 'inherit',\n };\n\n const packages = install.map(({ name, wantedVersion }) => `${name}@${wantedVersion}`);\n\n let result: ExecaReturnValue<string> | undefined;\n\n if (packageManager === 'npm') {\n const npmArgs = ['install', '--legacy-peer-deps', '--save', ...packages];\n logger.info(`Running 'npm ${npmArgs.join(' ')}'`);\n result = await execa('npm', npmArgs, execOptions);\n } else if (packageManager === 'yarn') {\n const yarnArgs = ['add', ...packages];\n logger.info(`Running 'yarn ${yarnArgs.join(' ')}'`);\n result = await execa('yarn', yarnArgs, execOptions);\n } else if (packageManager === 'pnpm') {\n const pnpmArgs = ['add', '--save-prod', ...packages];\n logger.info(`Running 'pnpm ${pnpmArgs.join(' ')}'`);\n result = await execa('pnpm', pnpmArgs, execOptions);\n }\n\n if (result?.exitCode || result?.failed) {\n throw new Error('Package installation failed');\n }\n};\n\nexport { checkRequiredDependencies, getModule };\nexport type { CheckRequiredDependenciesResult, PackageJson };\n","import { performance } from 'perf_hooks';\n\nexport interface TimeMeasurer {\n start: (name: string) => void;\n end: (name: string) => number;\n getTimings: () => Record<string, number>;\n}\n\nexport function getTimer(): TimeMeasurer {\n const timings: Record<string, number> = {};\n const startTimes: Record<string, number> = {};\n\n function start(name: string): void {\n if (typeof startTimes[name] !== 'undefined') {\n throw new Error(`Timer \"${name}\" already started, cannot overwrite`);\n }\n\n startTimes[name] = performance.now();\n }\n\n function end(name: string): number {\n if (typeof startTimes[name] === 'undefined') {\n throw new Error(`Timer \"${name}\" never started, cannot end`);\n }\n\n timings[name] = performance.now() - startTimes[name];\n return timings[name];\n }\n\n return { start, end, getTimings: () => timings };\n}\n\nexport const prettyTime = (timeInMs: number): string => {\n return `${Math.ceil(timeInMs)}ms`;\n};\n","import path from 'node:path';\nimport { access } from 'node:fs/promises';\nimport { register } from 'esbuild-register/dist/node';\n\n/**\n * @internal\n */\nconst pathExists = async (path: string) => {\n try {\n await access(path);\n return true;\n } catch (error) {\n return false;\n }\n};\n\n/**\n * @internal\n */\nconst loadFile = async (path: string): Promise<undefined | any> => {\n if (await pathExists(path)) {\n const esbuildOptions: Parameters<typeof register>[0] = {\n extensions: ['.js', '.mjs', '.ts'],\n };\n\n const { unregister } = register(esbuildOptions);\n\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(path);\n\n unregister();\n\n /**\n * handles esm or cjs exporting.\n */\n const file = mod?.default || mod || undefined;\n\n return file;\n }\n\n return undefined;\n};\n\n/**\n * @internal\n *\n * @description Converts a system path to a module path mainly for `Windows` systems.\n * where the path separator is `\\` instead of `/`, on linux systems the path separator\n * is identical to the module path separator.\n */\nconst convertSystemPathToModulePath = (sysPath: string) => {\n if (process.platform === 'win32') {\n return sysPath.split(path.sep).join(path.posix.sep);\n }\n\n return sysPath;\n};\n\n/**\n * @internal\n *\n * @description Converts a module path to a system path, again largely used for Windows systems.\n * The original use case was plugins where the resolve path was in module format but we want to\n * have it relative to the runtime directory.\n */\nconst convertModulePathToSystemPath = (modulePath: string) => {\n if (process.platform === 'win32') {\n return modulePath.split(path.posix.sep).join(path.sep);\n }\n\n return modulePath;\n};\n\nexport { pathExists, loadFile, convertSystemPathToModulePath, convertModulePathToSystemPath };\n","import path from 'node:path';\nimport dotenv from 'dotenv';\nimport { pathExists } from './files';\n\n/**\n * This is the base of _any_ env set for a strapi project,\n * to build a strapi admin panel we require these env variables.\n */\ninterface DefaultEnv {\n ADMIN_PATH: string;\n STRAPI_ADMIN_BACKEND_URL: string;\n STRAPI_TELEMETRY_DISABLED: string;\n}\n\n/**\n * @internal\n *\n * @description Load the .env file if it exists\n */\nconst loadEnv = async (cwd: string) => {\n const pathToEnv = path.resolve(cwd, '.env');\n\n if (await pathExists(pathToEnv)) {\n dotenv.config({ path: pathToEnv });\n }\n};\n\n/**\n * @internal\n *\n * @description Get all the environment variables that start with `STRAPI_ADMIN_`\n */\nconst getStrapiAdminEnvVars = (defaultEnv: DefaultEnv): Record<string, string> => {\n return Object.keys(process.env)\n .filter((key) => key.toUpperCase().startsWith('STRAPI_ADMIN_'))\n .reduce(\n (acc, key) => {\n acc[key] = process.env[key] as string;\n\n return acc;\n },\n defaultEnv as unknown as Record<string, string>\n );\n};\n\nexport { getStrapiAdminEnvVars, loadEnv };\n","import boxen from 'boxen';\nimport chalk from 'chalk';\nimport os from 'node:os';\nimport { errors } from '@strapi/utils';\n\nconst isError = (err: unknown): err is Error => err instanceof Error;\n\n/**\n * @description Handle unexpected errors. No, but really, your CLI should anticipate error cases.\n * If a user hits an error we don't expect, then we need to flag to them that this is not normal\n * and they should use the `--debug` flag to get more information (assuming you've implemented this\n * in your action).\n */\nconst handleUnexpectedError = (err: unknown) => {\n console.error(\n chalk.red(\n `[ERROR] `,\n 'There seems to be an unexpected error, try again with --debug for more information',\n os.EOL\n )\n );\n\n if (isError(err) && err.stack) {\n // eslint-disable-next-line no-console\n console.log(\n chalk.red(\n boxen(err.stack, {\n padding: 1,\n align: 'left',\n })\n )\n );\n }\n\n if (err instanceof errors.YupValidationError) {\n const message = [];\n const size = err.details.errors.length;\n\n for (const error of err.details.errors) {\n // No need to repeat the error message as it's the same as the err.message\n if (size === 1) {\n message.push(` value: ${error.value}`);\n continue;\n }\n\n message.push(\n [` [${error.name}]`, ` message: ${error.message}`, ` value: ${error.value}`].join(\n '\\n'\n )\n );\n }\n\n console.log(\n chalk.red(\n boxen(['Details:', message.join('\\n\\n')].join('\\n'), {\n padding: 1,\n align: 'left',\n })\n )\n );\n }\n\n process.exit(1);\n};\n\nexport { handleUnexpectedError, isError };\n","import os from 'node:os';\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport camelCase from 'lodash/camelCase';\nimport { env } from '@strapi/utils';\nimport { getModule, PackageJson } from './dependencies';\nimport { convertModulePathToSystemPath, convertSystemPathToModulePath, loadFile } from './files';\nimport type { BaseContext } from '../types';\nimport { isError } from './errors';\n\ninterface LocalPluginMeta {\n name: string;\n /**\n * camelCased version of the plugin name\n */\n importName: string;\n /**\n * The path to the plugin, relative to the app's root directory\n * in system format\n */\n path: string;\n /**\n * The path to the plugin, relative to the runtime directory\n * in module format (i.e. with forward slashes) because thats\n * where it should be used as an import\n */\n modulePath: string;\n type: 'local';\n}\n\ninterface ModulePluginMeta {\n name: string;\n /**\n * camelCased version of the plugin name\n */\n importName: string;\n /**\n * Modules don't have a path because we never resolve them to their node_modules\n * because we simply do not require it.\n */\n path?: never;\n /**\n * The path to the plugin, relative to the app's root directory\n * in module format (i.e. with forward slashes)\n */\n modulePath: string;\n type: 'module';\n}\n\ntype PluginMeta = LocalPluginMeta | ModulePluginMeta;\n\ninterface StrapiPlugin extends PackageJson {\n strapi: {\n description?: string;\n displayName?: string;\n kind: 'plugin';\n name?: string;\n required?: boolean;\n };\n}\n\nconst validatePackageHasStrapi = (\n pkg: PackageJson\n): pkg is PackageJson & { strapi: Record<string, unknown> } =>\n 'strapi' in pkg &&\n typeof pkg.strapi === 'object' &&\n !Array.isArray(pkg.strapi) &&\n pkg.strapi !== null;\n\nconst validatePackageIsPlugin = (pkg: PackageJson): pkg is StrapiPlugin =>\n validatePackageHasStrapi(pkg) && pkg.strapi.kind === 'plugin';\n\nconst getEnabledPlugins = async ({\n cwd,\n logger,\n runtimeDir,\n strapi,\n}: Pick<BaseContext, 'cwd' | 'logger' | 'strapi' | 'runtimeDir'>): Promise<\n Record<string, PluginMeta>\n> => {\n const plugins: Record<string, PluginMeta> = {};\n\n /**\n * This is the list of dependencies that are installed in the user's project.\n * It will include libraries like \"react\", so we need to collect the ones that\n * are plugins.\n */\n const deps = strapi.config.get('info.dependencies', {});\n\n logger.debug(\"Dependencies from user's project\", os.EOL, deps);\n\n for (const dep of Object.keys(deps)) {\n const pkg = await getModule(dep, cwd);\n\n if (pkg && validatePackageIsPlugin(pkg)) {\n const name = pkg.strapi.name || pkg.name;\n\n if (!name) {\n /**\n * Unlikely to happen, but you never know.\n */\n throw Error(\n \"You're trying to import a plugin that doesn't have a name – check the package.json of that plugin!\"\n );\n }\n\n plugins[name] = {\n name,\n importName: camelCase(name),\n type: 'module',\n modulePath: dep,\n };\n }\n }\n\n const userPluginsFile = await loadUserPluginsFile(strapi.dirs.app.config);\n\n logger.debug(\"User's plugins file\", os.EOL, userPluginsFile);\n\n for (const [userPluginName, userPluginConfig] of Object.entries(userPluginsFile)) {\n if (userPluginConfig.enabled && userPluginConfig.resolve) {\n const sysPath = convertModulePathToSystemPath(userPluginConfig.resolve);\n plugins[userPluginName] = {\n name: userPluginName,\n importName: camelCase(userPluginName),\n type: 'local',\n /**\n * User plugin paths are resolved from the entry point\n * of the app, because that's how you import them.\n */\n modulePath: convertSystemPathToModulePath(path.relative(runtimeDir, sysPath)),\n path: sysPath,\n };\n }\n }\n\n return plugins;\n};\n\nconst PLUGIN_CONFIGS = ['plugins.js', 'plugins.mjs', 'plugins.ts'];\n\ntype UserPluginConfigFile = Record<string, { enabled: boolean; resolve: string }>;\n\nconst loadUserPluginsFile = async (root: string): Promise<UserPluginConfigFile> => {\n for (const file of PLUGIN_CONFIGS) {\n const filePath = path.join(root, file);\n const configFile = await loadFile(filePath);\n\n if (configFile) {\n /**\n * Configs can be a function or they can be just an object!\n */\n return typeof configFile === 'function' ? configFile({ env }) : configFile;\n }\n }\n\n return {};\n};\n\nconst getMapOfPluginsWithAdmin = (plugins: Record<string, PluginMeta>) => {\n /**\n * This variable stores the import paths for plugins.\n * The keys are the module paths of the plugins, and the values are the paths\n * to the admin part of the plugins, which is either loaded from the\n * package.json exports or from the legacy strapi-admin.js file.\n */\n const pluginImportPaths: Record<string, string> = {};\n\n return Object.values(plugins)\n .filter((plugin) => {\n if (!plugin) {\n return false;\n }\n\n /**\n * There are two ways a plugin should be imported, either it's local to the strapi app,\n * or it's an actual npm module that's installed and resolved via node_modules.\n *\n * We first check if the plugin is local to the strapi app, using a regular `fs.existsSync` because\n * the pathToPlugin will be relative i.e. `/Users/my-name/strapi-app/src/plugins/my-plugin`.\n *\n * If the file doesn't exist well then it's probably a node_module, so instead we use `require.resolve`\n * which will resolve the path to the module in node_modules. If it fails with the specific code `MODULE_NOT_FOUND`\n * then it doesn't have an admin part to the package.\n */\n try {\n const localPluginPath = plugin.path;\n if (localPluginPath) {\n // Here we are loading a locally installed plugin\n const packageJsonPath = path.join(localPluginPath, 'package.json');\n\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));\n const localAdminPath = packageJson?.exports?.['./strapi-admin']?.import;\n\n if (localAdminPath) {\n pluginImportPaths[plugin.modulePath] = localAdminPath;\n return true;\n }\n }\n\n // Check if legacy admin file exists in local plugin\n if (fs.existsSync(path.join(localPluginPath, 'strapi-admin.js'))) {\n pluginImportPaths[plugin.modulePath] = 'strapi-admin';\n return true;\n }\n }\n\n // This plugin is a module, so we need to check if it has a strapi-admin export\n if (require.resolve(`${plugin.modulePath}/strapi-admin`)) {\n pluginImportPaths[plugin.modulePath] = 'strapi-admin';\n return true;\n }\n\n return false;\n } catch (err) {\n if (\n isError(err) &&\n 'code' in err &&\n (err.code === 'MODULE_NOT_FOUND' || err.code === 'ERR_PACKAGE_PATH_NOT_EXPORTED')\n ) {\n /**\n * the plugin does not contain FE code, so we\n * don't want to import it anyway\n */\n return false;\n }\n\n throw err;\n }\n })\n .map((plugin) => ({\n ...plugin,\n modulePath: `${plugin.modulePath}/${pluginImportPaths[plugin.modulePath]}`,\n }));\n};\n\nexport { getEnabledPlugins, getMapOfPluginsWithAdmin };\nexport type { PluginMeta, LocalPluginMeta, ModulePluginMeta };\n","import path from 'node:path';\nimport { convertSystemPathToModulePath, pathExists } from './files';\nimport type { BaseContext } from '../types';\n\nconst ADMIN_APP_FILES = ['app.js', 'app.mjs', 'app.ts', 'app.jsx', 'app.tsx'];\n\ninterface AdminCustomisations {\n config?: {\n locales?: string[];\n };\n bootstrap?: (...args: any[]) => any;\n}\n\ninterface AppFile {\n /**\n * The system path to the file\n */\n path: string;\n /**\n * The module path to the file i.e. how you would import it\n */\n modulePath: string;\n}\n\nconst loadUserAppFile = async ({\n runtimeDir,\n appDir,\n}: Pick<BaseContext, 'appDir' | 'runtimeDir'>): Promise<AppFile | undefined> => {\n for (const file of ADMIN_APP_FILES) {\n const filePath = path.join(appDir, 'src', 'admin', file);\n\n if (await pathExists(filePath)) {\n return {\n path: filePath,\n modulePath: convertSystemPathToModulePath(path.relative(runtimeDir, filePath)),\n };\n }\n }\n\n return undefined;\n};\n\nexport { loadUserAppFile };\nexport type { AdminCustomisations, AppFile };\n","import os from 'node:os';\nimport path from 'node:path';\nimport fs from 'node:fs/promises';\nimport browserslist from 'browserslist';\nimport { createStrapi } from '@strapi/core';\nimport type { Core, Modules } from '@strapi/types';\nimport type { Server } from 'node:http';\n\nimport type { CLIContext } from '../cli/types';\nimport { getStrapiAdminEnvVars, loadEnv } from './core/env';\n\nimport { PluginMeta, getEnabledPlugins, getMapOfPluginsWithAdmin } from './core/plugins';\nimport { AppFile, loadUserAppFile } from './core/admin-customisations';\nimport type { BaseContext } from './types';\n\ninterface BaseOptions {\n stats?: boolean;\n minify?: boolean;\n sourcemaps?: boolean;\n bundler?: 'webpack' | 'vite';\n open?: boolean;\n hmrServer?: Server;\n hmrClientPort?: number;\n}\n\ninterface BuildContext<TOptions = unknown> extends BaseContext {\n /**\n * The customisations defined by the user in their app.js file\n */\n customisations?: AppFile;\n /**\n * Features object with future flags\n */\n features?: Modules.Features.FeaturesService['config'];\n /**\n * The build options\n */\n options: BaseOptions & TOptions;\n /**\n * The plugins to be included in the JS bundle\n * incl. internal plugins, third party plugins & local plugins\n */\n plugins: PluginMeta[];\n}\n\ninterface CreateBuildContextArgs<TOptions = unknown> extends CLIContext {\n strapi?: Core.Strapi;\n options?: TOptions;\n}\n\nconst DEFAULT_BROWSERSLIST = [\n 'last 3 major versions',\n 'Firefox ESR',\n 'last 2 Opera versions',\n 'not dead',\n];\n\nconst createBuildContext = async <TOptions extends BaseOptions>({\n cwd,\n logger,\n tsconfig,\n strapi,\n options = {} as TOptions,\n}: CreateBuildContextArgs<TOptions>): Promise<BuildContext<TOptions>> => {\n /**\n * If you make a new strapi instance when one already exists,\n * you will overwrite the global and the app will _most likely_\n * crash and die.\n */\n const strapiInstance =\n strapi ??\n createStrapi({\n // Directories\n appDir: cwd,\n distDir: tsconfig?.config.options.outDir ?? '',\n // Options\n autoReload: true,\n serveAdminPanel: false,\n });\n\n const serverAbsoluteUrl = strapiInstance.config.get<string>('server.absoluteUrl');\n const adminAbsoluteUrl = strapiInstance.config.get<string>('admin.absoluteUrl');\n const adminPath = strapiInstance.config.get<string>('admin.path');\n\n // NOTE: Checks that both the server and admin will be served from the same origin (protocol, host, port)\n const sameOrigin = new URL(adminAbsoluteUrl).origin === new URL(serverAbsoluteUrl).origin;\n\n const adminPublicPath = new URL(adminAbsoluteUrl).pathname;\n const serverPublicPath = new URL(serverAbsoluteUrl).pathname;\n\n const appDir = strapiInstance.dirs.app.root;\n\n await loadEnv(cwd);\n\n const env = getStrapiAdminEnvVars({\n ADMIN_PATH: adminPublicPath,\n STRAPI_ADMIN_BACKEND_URL: sameOrigin ? serverPublicPath : serverAbsoluteUrl,\n STRAPI_TELEMETRY_DISABLED: String(strapiInstance.telemetry.isDisabled),\n });\n\n const envKeys = Object.keys(env);\n\n if (envKeys.length > 0) {\n logger.info(\n [\n 'Including the following ENV variables as part of the JS bundle:',\n ...envKeys.map((key) => ` - ${key}`),\n ].join(os.EOL)\n );\n }\n\n const distPath = path.join(strapiInstance.dirs.dist.root, 'build');\n const distDir = path.relative(cwd, distPath);\n\n /**\n * If the distPath already exists, clean it\n */\n try {\n logger.debug(`Cleaning dist folder: ${distPath}`);\n await fs.rm(distPath, { recursive: true, force: true });\n logger.debug('Cleaned dist folder');\n } catch {\n // do nothing, it will fail if the folder does not exist\n logger.debug('There was no dist folder to clean');\n }\n\n const runtimeDir = path.join(cwd, '.strapi', 'client');\n const entry = path.relative(cwd, path.join(runtimeDir, 'app.js'));\n\n const plugins = await getEnabledPlugins({ cwd, logger, runtimeDir, strapi: strapiInstance });\n\n logger.debug('Enabled plugins', os.EOL, plugins);\n\n const pluginsWithFront = getMapOfPluginsWithAdmin(plugins);\n\n logger.debug('Enabled plugins with FE', os.EOL, pluginsWithFront);\n\n const target = browserslist.loadConfig({ path: cwd }) ?? DEFAULT_BROWSERSLIST;\n\n const customisations = await loadUserAppFile({ appDir, runtimeDir });\n\n const features = strapiInstance.config.get('features', undefined);\n\n const { bundler = 'vite', ...restOptions } = options;\n\n const buildContext = {\n appDir,\n adminPath,\n basePath: adminPublicPath,\n bundler,\n customisations,\n cwd,\n distDir,\n distPath,\n entry,\n env,\n features,\n logger,\n options: restOptions as BaseOptions & TOptions,\n plugins: pluginsWithFront,\n runtimeDir,\n strapi: strapiInstance,\n target,\n tsconfig,\n } satisfies BuildContext<TOptions>;\n\n return buildContext;\n};\n\nexport { createBuildContext };\nexport type { BuildContext, CreateBuildContextArgs };\n","import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport outdent from 'outdent';\nimport { createElement } from 'react';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport { DefaultDocument } from '@strapi/admin/_internal';\n\nimport type { BuildContext } from './create-build-context';\n\nconst getEntryModule = (ctx: BuildContext): string => {\n const pluginsObject = ctx.plugins\n .map(({ name, importName }) => `'${name}': ${importName}`)\n .join(',\\n');\n\n const pluginsImport = ctx.plugins\n .map(({ importName, modulePath }) => `import ${importName} from '${modulePath}';`)\n .join('\\n');\n\n return outdent`\n /**\n * This file was automatically generated by Strapi.\n * Any modifications made will be discarded.\n */\n ${pluginsImport}\n import { renderAdmin } from \"@strapi/strapi/admin\"\n\n ${\n ctx.customisations?.modulePath\n ? `import customisations from '${ctx.customisations.modulePath}'`\n : ''\n }\n\n renderAdmin(\n document.getElementById(\"strapi\"),\n {\n ${ctx.customisations?.modulePath ? 'customisations,' : ''}\n ${ctx.features ? `features: ${JSON.stringify(ctx.features)},` : ''}\n plugins: {\n ${pluginsObject}\n }\n })\n `;\n};\n\ninterface GetDocumentHTMLArgs extends Pick<BuildContext, 'logger'> {\n props?: {\n entryPath?: string;\n };\n}\n\n/**\n * TODO: Here in the future we could add the ability\n * to load a user's Document component?\n */\nconst getDocumentHTML = ({ logger, props = {} }: GetDocumentHTMLArgs) => {\n const result = renderToStaticMarkup(createElement(DefaultDocument, props));\n logger.debug('Rendered the HTML');\n\n return outdent`<!DOCTYPE html>${result}`;\n};\n\nconst AUTO_GENERATED_WARNING = `\nThis file was automatically generated by Strapi.\nAny modifications made will be discarded.\n`.trim();\n\n/**\n * Because we now auto-generate the index.html file,\n * we should be clear that people _should not_ modify it.\n *\n * @internal\n */\nconst decorateHTMLWithAutoGeneratedWarning = (htmlTemplate: string): string =>\n htmlTemplate.replace(/<head/, `\\n<!--\\n${AUTO_GENERATED_WARNING}\\n-->\\n<head`);\n\nconst writeStaticClientFiles = async (ctx: BuildContext) => {\n const prettier = await import('prettier'); // ESM-only\n\n /**\n * For everything to work effectively we create a client folder in `.strapi` at the cwd level.\n * We then use the function we need to \"createAdmin\" as well as generate the Document index.html as well.\n *\n * All this links together an imaginary \"src/index\" that then allows vite to correctly build the admin panel.\n */\n\n await fs.mkdir(ctx.runtimeDir, { recursive: true });\n ctx.logger.debug('Created the runtime directory');\n\n const indexHtml = decorateHTMLWithAutoGeneratedWarning(\n await getDocumentHTML({\n logger: ctx.logger,\n props:\n ctx.bundler === 'vite'\n ? {\n entryPath: `/${ctx.entry}`,\n }\n : undefined,\n })\n );\n\n await fs.writeFile(\n path.join(ctx.runtimeDir, 'index.html'),\n await prettier.format(indexHtml, {\n parser: 'html',\n })\n );\n ctx.logger.debug('Wrote the index.html file');\n await fs.writeFile(\n path.join(ctx.runtimeDir, 'app.js'),\n await prettier.format(getEntryModule(ctx), {\n parser: 'babel',\n })\n );\n ctx.logger.debug('Wrote the app.js file');\n};\n\nexport { writeStaticClientFiles, getDocumentHTML };\n","import * as tsUtils from '@strapi/typescript-utils';\nimport type { CLIContext } from '../cli/types';\nimport { checkRequiredDependencies } from './core/dependencies';\nimport { getTimer, prettyTime } from './core/timer';\nimport { createBuildContext } from './create-build-context';\nimport { writeStaticClientFiles } from './staticFiles';\n\ninterface BuildOptions extends CLIContext {\n /**\n * Which bundler to use for building.\n *\n * @default webpack\n */\n bundler?: 'webpack' | 'vite';\n /**\n * Minify the output\n *\n * @default true\n */\n minify?: boolean;\n /**\n * Generate sourcemaps – useful for debugging bugs in the admin panel UI.\n */\n sourcemaps?: boolean;\n /**\n * Print stats for build\n */\n stats?: boolean;\n}\n\n/**\n * @example `$ strapi build`\n *\n * @description Builds the admin panel of the strapi application.\n */\nconst build = async ({ logger, cwd, tsconfig, ...options }: BuildOptions) => {\n const timer = getTimer();\n\n const { didInstall } = await checkRequiredDependencies({ cwd, logger }).catch((err) => {\n logger.error(err.message);\n process.exit(1);\n });\n\n if (didInstall) {\n return;\n }\n\n if (tsconfig?.config) {\n timer.start('compilingTS');\n const compilingTsSpinner = logger.spinner(`Compiling TS`).start();\n\n tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: false } });\n\n const compilingDuration = timer.end('compilingTS');\n compilingTsSpinner.text = `Compiling TS (${prettyTime(compilingDuration)})`;\n compilingTsSpinner.succeed();\n }\n\n timer.start('createBuildContext');\n const contextSpinner = logger.spinner(`Building build context`).start();\n console.log('');\n\n const ctx = await createBuildContext({\n cwd,\n logger,\n tsconfig,\n options,\n });\n\n const contextDuration = timer.end('createBuildContext');\n contextSpinner.text = `Building build context (${prettyTime(contextDuration)})`;\n contextSpinner.succeed();\n\n timer.start('buildAdmin');\n const buildingSpinner = logger.spinner(`Building admin panel`).start();\n console.log('');\n\n try {\n await writeStaticClientFiles(ctx);\n\n if (ctx.bundler === 'webpack') {\n const { build: buildWebpack } = await import('./webpack/build');\n await buildWebpack(ctx);\n } else if (ctx.bundler === 'vite') {\n const { build: buildVite } = await import('./vite/build');\n await buildVite(ctx);\n }\n\n const buildDuration = timer.end('buildAdmin');\n buildingSpinner.text = `Building admin panel (${prettyTime(buildDuration)})`;\n buildingSpinner.succeed();\n } catch (err) {\n buildingSpinner.fail();\n throw err;\n }\n};\n\nexport { build };\nexport type { BuildOptions };\n","import { createCommand } from 'commander';\nimport type { StrapiCommand } from '../types';\n\nimport { build as nodeBuild, BuildOptions } from '../../node/build';\nimport { handleUnexpectedError } from '../../node/core/errors';\n\ntype BuildCLIOptions = BuildOptions;\n\nconst action = async (options: BuildCLIOptions) => {\n try {\n if (options.bundler === 'webpack') {\n options.logger.warn(\n '[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.'\n );\n }\n\n await nodeBuild(options);\n } catch (err) {\n handleUnexpectedError(err);\n }\n};\n\n/**\n * `$ strapi build`\n */\nconst command: StrapiCommand = ({ ctx }) => {\n return createCommand('build')\n .option('--bundler [bundler]', 'Bundler to use (webpack or vite)', 'vite')\n .option('-d, --debug', 'Enable debugging mode with verbose logs', false)\n .option('--minify', 'Minify the output', true)\n .option('--silent', \"Don't log anything\", false)\n .option('--sourcemap', 'Produce sourcemaps', false)\n .option('--stats', 'Print build statistics to the console', false)\n .description('Build the strapi admin app')\n .action(async (options: BuildCLIOptions) => {\n return action({ ...options, ...ctx });\n });\n};\n\nexport { command };\n","import REPL from 'repl';\nimport { createCommand } from 'commander';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../types';\nimport { runAction } from '../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n app.start().then(() => {\n const repl = REPL.start(app.config.info.name + ' > ' || 'strapi > '); // eslint-disable-line prefer-template\n\n repl.on('exit', (err: Error) => {\n if (err) {\n app.log.error(err);\n process.exit(1);\n }\n\n app.server.destroy();\n process.exit(0);\n });\n });\n};\n\n/**\n * `$ strapi console`\n */\nconst command: StrapiCommand = () => {\n return createCommand('console')\n .description('Open the Strapi framework console')\n .action(runAction('console', action));\n};\n\nexport { action, command };\n","import * as tsUtils from '@strapi/typescript-utils';\nimport { strings } from '@strapi/utils';\nimport chokidar from 'chokidar';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport cluster from 'node:cluster';\nimport { createStrapi } from '@strapi/core';\n\nimport type { CLIContext } from '../cli/types';\nimport { checkRequiredDependencies } from './core/dependencies';\nimport { getTimer, prettyTime, type TimeMeasurer } from './core/timer';\nimport { createBuildContext } from './create-build-context';\nimport type { WebpackWatcher } from './webpack/watch';\nimport type { ViteWatcher } from './vite/watch';\n\nimport { writeStaticClientFiles } from './staticFiles';\n\ninterface DevelopOptions extends CLIContext {\n /**\n * Which bundler to use for building.\n *\n * @default webpack\n */\n bundler?: 'webpack' | 'vite';\n polling?: boolean;\n open?: boolean;\n watchAdmin?: boolean;\n}\n\n// This method removes all non-admin build files from the dist directory\nconst cleanupDistDirectory = async ({\n tsconfig,\n logger,\n timer,\n}: Pick<DevelopOptions, 'tsconfig' | 'logger'> & { timer: TimeMeasurer }) => {\n const distDir = tsconfig?.config?.options?.outDir;\n\n if (\n !distDir || // we don't have a dist dir\n (await fs\n .access(distDir)\n .then(() => false)\n .catch(() => true)) // it doesn't exist -- if it does but no access, that will be caught later\n ) {\n return;\n }\n\n const timerName = `cleaningDist${Date.now()}`;\n timer.start(timerName);\n const cleaningSpinner = logger.spinner(`Cleaning dist dir ${distDir}`).start();\n\n try {\n const dirContent = await fs.readdir(distDir);\n const validFilenames = dirContent\n // Ignore the admin build folder\n .filter((filename) => filename !== 'build');\n for (const filename of validFilenames) {\n await fs.rm(path.resolve(distDir, filename), { recursive: true });\n }\n } catch (err: unknown) {\n const generatingDuration = timer.end(timerName);\n cleaningSpinner.text = `Error cleaning dist dir: ${err} (${prettyTime(generatingDuration)})`;\n cleaningSpinner?.fail();\n return;\n }\n\n const generatingDuration = timer.end(timerName);\n cleaningSpinner.text = `Cleaning dist dir (${prettyTime(generatingDuration)})`;\n cleaningSpinner?.succeed();\n};\n\nconst develop = async ({\n cwd,\n polling,\n logger,\n tsconfig,\n watchAdmin,\n ...options\n}: DevelopOptions) => {\n const timer = getTimer();\n\n if (cluster.isPrimary) {\n const { didInstall } = await checkRequiredDependencies({ cwd, logger }).catch((err) => {\n logger.error(err.message);\n process.exit(1);\n });\n\n if (didInstall) {\n return;\n }\n\n if (tsconfig?.config) {\n // Build without diagnostics in case schemas have changed\n await cleanupDistDirectory({ tsconfig, logger, timer });\n await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: true } });\n }\n\n /**\n * IF we're not watching the admin we're going to build it, this makes\n * sure that at least the admin is built for users & they can interact\n * with the application.\n */\n if (!watchAdmin) {\n timer.start('createBuildContext');\n const contextSpinner = logger.spinner(`Building build context`).start();\n console.log('');\n\n const ctx = await createBuildContext({\n cwd,\n logger,\n tsconfig,\n options,\n });\n const contextDuration = timer.end('createBuildContext');\n contextSpinner.text = `Building build context (${prettyTime(contextDuration)})`;\n contextSpinner.succeed();\n\n timer.start('creatingAdmin');\n const adminSpinner = logger.spinner(`Creating admin`).start();\n\n await writeStaticClientFiles(ctx);\n\n if (ctx.bundler === 'webpack') {\n const { build: buildWebpack } = await import('./webpack/build');\n await buildWebpack(ctx);\n } else if (ctx.bundler === 'vite') {\n const { build: buildVite } = await import('./vite/build');\n await buildVite(ctx);\n }\n\n const adminDuration = timer.end('creatingAdmin');\n adminSpinner.text = `Creating admin (${prettyTime(adminDuration)})`;\n adminSpinner.succeed();\n }\n\n cluster.on('message', async (worker, message) => {\n switch (message) {\n case 'reload': {\n if (tsconfig?.config) {\n // Build without diagnostics in case schemas have changed\n await cleanupDistDirectory({ tsconfig, logger, timer });\n await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: true } });\n }\n logger.debug('cluster has the reload message, sending the worker kill message');\n worker.send('kill');\n break;\n }\n case 'killed': {\n logger.debug('cluster has the killed message, forking the cluster');\n cluster.fork();\n break;\n }\n case 'stop': {\n process.exit(1);\n break;\n }\n default:\n break;\n }\n });\n\n cluster.fork();\n }\n\n if (cluster.isWorker) {\n timer.start('loadStrapi');\n const loadStrapiSpinner = logger.spinner(`Loading Strapi`).start();\n\n const strapi = createStrapi({\n appDir: cwd,\n distDir: tsconfig?.config.options.outDir ?? '',\n autoReload: true,\n serveAdminPanel: !watchAdmin,\n });\n\n /**\n * If we're watching the admin panel then we're going to attach the watcher\n * as a strapi middleware.\n */\n let bundleWatcher: WebpackWatcher | ViteWatcher | undefined;\n\n const strapiInstance = await strapi.load();\n\n if (watchAdmin) {\n timer.start('createBuildContext');\n const contextSpinner = logger.spinner(`Building build context`).start();\n console.log('');\n\n const ctx = await createBuildContext({\n cwd,\n logger,\n strapi,\n tsconfig,\n options,\n });\n const contextDuration = timer.end('createBuildContext');\n contextSpinner.text = `Building build context (${prettyTime(contextDuration)})`;\n contextSpinner.succeed();\n\n timer.start('creatingAdmin');\n const adminSpinner = logger.spinner(`Creating admin`).start();\n\n await writeStaticClientFiles(ctx);\n\n if (ctx.bundler === 'webpack') {\n const { watch: watchWebpack } = await import('./webpack/watch');\n bundleWatcher = await watchWebpack(ctx);\n } else if (ctx.bundler === 'vite') {\n const { watch: watchVite } = await import('./vite/watch');\n bundleWatcher = await watchVite(ctx);\n }\n\n const adminDuration = timer.end('creatingAdmin');\n adminSpinner.text = `Creating admin (${prettyTime(adminDuration)})`;\n adminSpinner.succeed();\n }\n\n const loadStrapiDuration = timer.end('loadStrapi');\n loadStrapiSpinner.text = `Loading Strapi (${prettyTime(loadStrapiDuration)})`;\n loadStrapiSpinner.succeed();\n\n // For TS projects, type generation is a requirement for the develop command so that the server can restart\n // For JS projects, we respect the experimental autogenerate setting\n if (tsconfig?.config || strapi.config.get('typescript.autogenerate') !== false) {\n timer.start('generatingTS');\n const generatingTsSpinner = logger.spinner(`Generating types`).start();\n\n await tsUtils.generators.generate({\n strapi: strapiInstance,\n pwd: cwd,\n rootDir: undefined,\n logger: { silent: true, debug: false },\n artifacts: { contentTypes: true, components: true },\n });\n\n const generatingDuration = timer.end('generatingTS');\n generatingTsSpinner.text = `Generating types (${prettyTime(generatingDuration)})`;\n generatingTsSpinner.succeed();\n }\n\n if (tsconfig?.config) {\n timer.start('compilingTS');\n const compilingTsSpinner = logger.spinner(`Compiling TS`).start();\n\n await cleanupDistDirectory({ tsconfig, logger, timer });\n await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: false } });\n\n const compilingDuration = timer.end('compilingTS');\n compilingTsSpinner.text = `Compiling TS (${prettyTime(compilingDuration)})`;\n compilingTsSpinner.succeed();\n }\n\n const restart = async () => {\n if (strapiInstance.reload.isWatching && !strapiInstance.reload.isReloading) {\n strapiInstance.reload.isReloading = true;\n strapiInstance.reload();\n }\n };\n\n const watcher = chokidar\n .watch(cwd, {\n ignoreInitial: true,\n usePolling: polling,\n ignored: [\n /(^|[/\\\\])\\../, // dot files\n /tmp/,\n '**/src/admin/**',\n '**/src/plugins/**/admin/**',\n '**/dist/src/plugins/test/admin/**',\n '**/documentation',\n '**/documentation/**',\n '**/node_modules',\n '**/node_modules/**',\n '**/plugins.json',\n '**/build',\n '**/build/**',\n '**/log',\n '**/log/**',\n '**/logs',\n '**/logs/**',\n '**/*.log',\n '**/index.html',\n '**/public',\n '**/public/**',\n strapiInstance.dirs.static.public,\n strings.joinBy('/', strapiInstance.dirs.static.public, '**'),\n '**/*.db*',\n '**/exports/**',\n '**/dist/**',\n '**/*.d.ts',\n '**/.yalc/**',\n '**/yalc.lock',\n // TODO v6: watch only src folder by default, and flip this to watchIncludeFiles\n ...strapiInstance.config.get('admin.watchIgnoreFiles', []),\n ],\n })\n .on('add', (path) => {\n strapiInstance.log.info(`File created: ${path}`);\n restart();\n })\n .on('change', (path) => {\n strapiInstance.log.info(`File changed: ${path}`);\n restart();\n })\n .on('unlink', (path) => {\n strapiInstance.log.info(`File deleted: ${path}`);\n restart();\n });\n\n process.on('message', async (message) => {\n switch (message) {\n case 'kill': {\n logger.debug(\n 'child process has the kill message, destroying the strapi instance and sending the killed process message'\n );\n await watcher.close();\n\n await strapiInstance.destroy();\n\n if (bundleWatcher) {\n bundleWatcher.close();\n }\n process.send?.('killed');\n break;\n }\n default:\n break;\n }\n });\n\n strapiInstance.start();\n }\n};\n\nexport { develop };\nexport type { DevelopOptions };\n","import { createCommand } from 'commander';\nimport cluster from 'node:cluster';\nimport type { StrapiCommand } from '../types';\nimport { develop as nodeDevelop, DevelopOptions } from '../../node/develop';\nimport { handleUnexpectedError } from '../../node/core/errors';\n\ntype DevelopCLIOptions = DevelopOptions;\n\nconst action = async (options: DevelopCLIOptions) => {\n try {\n if (cluster.isPrimary) {\n if (options.bundler === 'webpack') {\n options.logger.warn(\n '[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.'\n );\n }\n }\n\n await nodeDevelop(options);\n } catch (err) {\n handleUnexpectedError(err);\n }\n};\n\n/**\n * `$ strapi develop`\n */\nconst command: StrapiCommand = ({ ctx }) => {\n return createCommand('develop')\n .alias('dev')\n .option('--bundler [bundler]', 'Bundler to use (webpack or vite)', 'vite')\n .option('-d, --debug', 'Enable debugging mode with verbose logs', false)\n .option('--silent', \"Don't log anything\", false)\n .option('--polling', 'Watch for file changes in network directories', false)\n .option('--watch-admin', 'Watch the admin panel for hot changes', true)\n .option('--no-watch-admin', 'Do not watch the admin panel for hot changes')\n .option('--open', 'Open the admin in your browser', true)\n .description('Start your Strapi application in development mode')\n .action(async (options: DevelopCLIOptions) => {\n return action({ ...options, ...ctx });\n });\n};\n\nexport { command };\n","import { createCommand } from 'commander';\nimport { assertCwdContainsStrapiProject } from '../utils/helpers';\nimport type { StrapiCommand } from '../types';\n\n/**\n * `$ strapi generate`\n */\nconst command: StrapiCommand = ({ argv }) => {\n return createCommand('generate')\n .description('Launch the interactive API generator')\n .action(() => {\n assertCwdContainsStrapiProject('generate');\n argv.splice(2, 1);\n\n // NOTE: this needs to be lazy loaded in order for plop to work correctly\n import('@strapi/generators').then((gen) => gen.runCLI());\n });\n};\n\nexport { command };\n","import { createCommand } from 'commander';\nimport { EOL } from 'os';\nimport { createStrapi, compileStrapi } from '@strapi/core';\nimport type { StrapiCommand } from '../types';\nimport { runAction } from '../utils/helpers';\n\ninterface CmdOptions {\n uuid: boolean;\n dependencies: boolean;\n all: boolean;\n}\n\nconst action = async ({ uuid, dependencies, all }: CmdOptions) => {\n const config = {\n reportUUID: Boolean(all || uuid),\n reportDependencies: Boolean(all || dependencies),\n };\n\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n let debugInfo = `Launched In: ${Date.now() - app.config.launchedAt} ms\nEnvironment: ${app.config.environment}\nOS: ${process.platform}-${process.arch}\nStrapi Version: ${app.config.info.strapi}\nNode/Yarn Version: ${process.env.npm_config_user_agent}\nEdition: ${app.EE ? 'Enterprise' : 'Community'}\nDatabase: ${app?.config?.database?.connection?.client ?? 'unknown'}`;\n\n if (config.reportUUID) {\n debugInfo += `${EOL}UUID: ${app.config.uuid}`;\n }\n\n if (config.reportDependencies) {\n debugInfo += `${EOL}Dependencies: ${JSON.stringify(app.config.info.dependencies, null, 2)}\nDev Dependencies: ${JSON.stringify(app.config.info.devDependencies, null, 2)}`;\n }\n\n console.log(debugInfo);\n\n await app.destroy();\n};\n\n/**\n * `$ strapi report`\n */\nconst command: StrapiCommand = () => {\n return createCommand('report')\n .description('Get system stats for debugging and submitting issues')\n .option('-u, --uuid', 'Include Project UUID')\n .option('-d, --dependencies', 'Include Project Dependencies')\n .option('--all', 'Include All Information')\n .action(runAction('report', action));\n};\n\nexport { command };\n","import { createCommand } from 'commander';\nimport fs from 'fs';\nimport tsUtils from '@strapi/typescript-utils';\nimport { createStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../types';\nimport { runAction } from '../utils/helpers';\n\nconst action = async () => {\n const appDir = process.cwd();\n\n const isTSProject = await tsUtils.isUsingTypeScript(appDir);\n\n const outDir = await tsUtils.resolveOutDir(appDir);\n const distDir = isTSProject ? outDir : appDir;\n\n const buildDirExists = fs.existsSync(outDir);\n if (isTSProject && !buildDirExists)\n throw new Error(\n `${outDir} directory not found. Please run the build command before starting your application`\n );\n\n createStrapi({ appDir, distDir }).start();\n};\n\n/**\n * `$ strapi start`\n */\nconst command: StrapiCommand = () => {\n return createCommand('start')\n .description('Start your Strapi application')\n .action(runAction('start', action));\n};\n\nexport { command };\n","import { createCommand } from 'commander';\nimport type { StrapiCommand } from '../types';\nimport { version } from '../../../package.json';\n\n/**\n * `$ strapi version`\n */\n\nconst command: StrapiCommand = () => {\n // load the Strapi package.json to get version and other information\n return createCommand('version')\n .description('Output the version of Strapi')\n .action(() => {\n process.stdout.write(`${version}\\n`);\n process.exit(0);\n });\n};\n\nexport { command };\n","/**\n * This file includes hooks to use for commander.hook and argParsers for commander.argParser\n */\n\nimport inquirer from 'inquirer';\nimport { Command, InvalidOptionArgumentError, Option } from 'commander';\nimport chalk from 'chalk';\nimport { isNaN } from 'lodash/fp';\nimport { exitWith } from './helpers';\n\n/**\n * argParser: Parse a comma-delimited string as an array\n */\nconst parseList = (value: string) => {\n try {\n return value.split(',').map((item) => item.trim()); // trim shouldn't be necessary but might help catch unexpected whitespace characters\n } catch (e) {\n exitWith(1, `Unrecognized input: ${value}`);\n }\n\n return [];\n};\n\n/**\n * Returns an argParser that returns a list\n */\nconst getParseListWithChoices = (choices: string[], errorMessage = 'Invalid options:') => {\n return (value: string) => {\n const list = parseList(value);\n const invalid = list.filter((item) => {\n return !choices.includes(item);\n });\n\n if (invalid.length > 0) {\n exitWith(1, `${errorMessage}: ${invalid.join(',')}`);\n }\n\n return list;\n };\n};\n\n/**\n * argParser: Parse a string as an integer\n */\nconst parseInteger = (value: string) => {\n // parseInt takes a string and a radix\n const parsedValue = parseInt(value, 10);\n if (isNaN(parsedValue)) {\n throw new InvalidOptionArgumentError(`Not an integer: ${value}`);\n }\n return parsedValue;\n};\n\n/**\n * argParser: Parse a string as a URL object\n */\nconst parseURL = (value: string) => {\n try {\n const url = new URL(value);\n if (!url.host) {\n throw new InvalidOptionArgumentError(`Could not parse url ${value}`);\n }\n\n return url;\n } catch (e) {\n throw new InvalidOptionArgumentError(`Could not parse url ${value}`);\n }\n};\n\n/**\n * hook: if encrypt==true and key not provided, prompt for it\n */\nconst promptEncryptionKey = async (thisCommand: Command) => {\n const opts = thisCommand.opts();\n\n if (!opts.encrypt && opts.key) {\n return exitWith(1, 'Key may not be present unless encryption is used');\n }\n\n // if encrypt==true but we have no key, prompt for it\n if (opts.encrypt && !(opts.key && opts.key.length > 0)) {\n try {\n const answers = await inquirer.prompt([\n {\n type: 'password',\n message: 'Please enter an encryption key',\n name: 'key',\n validate(key) {\n if (key.length > 0) return true;\n\n return 'Key must be present when using the encrypt option';\n },\n },\n ]);\n opts.key = answers.key;\n } catch (e) {\n return exitWith(1, 'Failed to get encryption key');\n }\n if (!opts.key) {\n return exitWith(1, 'Failed to get encryption key');\n }\n }\n};\n\n/**\n * hook: require a confirmation message to be accepted unless forceOption (-f,--force) is used\n */\nconst getCommanderConfirmMessage = (\n message: string,\n { failMessage }: { failMessage?: string } = {}\n) => {\n return async (command: Command) => {\n const confirmed = await confirmMessage(message, { force: command.opts().force });\n if (!confirmed) {\n exitWith(1, failMessage);\n }\n };\n};\n\nconst confirmMessage = async (message: string, { force }: { force?: boolean } = {}) => {\n // if we have a force option, respond yes\n if (force === true) {\n // attempt to mimic the inquirer prompt exactly\n console.log(`${chalk.green('?')} ${chalk.bold(message)} ${chalk.cyan('Yes')}`);\n return true;\n }\n\n const answers = await inquirer.prompt([\n {\n type: 'confirm',\n message,\n name: `confirm`,\n default: false,\n },\n ]);\n\n return answers.confirm;\n};\n\nconst forceOption = new Option(\n '--force',\n `Automatically answer \"yes\" to all prompts, including potentially destructive requests, and run non-interactively.`\n);\n\nexport {\n getParseListWithChoices,\n parseList,\n parseURL,\n parseInteger,\n promptEncryptionKey,\n getCommanderConfirmMessage,\n confirmMessage,\n forceOption,\n};\n","import chalk from 'chalk';\nimport Table from 'cli-table3';\nimport { Command, Option } from 'commander';\nimport { configs, createLogger, type winston, formats } from '@strapi/logger';\nimport { createStrapi, compileStrapi } from '@strapi/core';\nimport ora from 'ora';\nimport { merge } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\nimport { engine as engineDataTransfer, strapi as strapiDataTransfer } from '@strapi/data-transfer';\n\nimport { readableBytes, exitWith } from './helpers';\nimport { getParseListWithChoices, parseInteger, confirmMessage } from './commander';\n\nconst {\n errors: { TransferEngineInitializationError },\n} = engineDataTransfer;\n\nconst exitMessageText = (process: string, error = false) => {\n const processCapitalized = process[0].toUpperCase() + process.slice(1);\n\n if (!error) {\n return chalk.bold(\n chalk.green(`${processCapitalized} process has been completed successfully!`)\n );\n }\n\n return chalk.bold(chalk.red(`${processCapitalized} process failed.`));\n};\n\nconst pad = (n: number) => {\n return (n < 10 ? '0' : '') + String(n);\n};\n\nconst yyyymmddHHMMSS = () => {\n const date = new Date();\n\n return (\n date.getFullYear() +\n pad(date.getMonth() + 1) +\n pad(date.getDate()) +\n pad(date.getHours()) +\n pad(date.getMinutes()) +\n pad(date.getSeconds())\n );\n};\n\nconst getDefaultExportName = () => {\n return `export_${yyyymmddHHMMSS()}`;\n};\n\ntype ResultData = engineDataTransfer.ITransferResults<\n engineDataTransfer.ISourceProvider,\n engineDataTransfer.IDestinationProvider\n>['engine'];\n\nconst buildTransferTable = (resultData: ResultData) => {\n if (!resultData) {\n return;\n }\n\n // Build pretty table\n const table = new Table({\n head: ['Type', 'Count', 'Size'].map((text) => chalk.bold.blue(text)),\n });\n\n let totalBytes = 0;\n let totalItems = 0;\n (Object.keys(resultData) as engineDataTransfer.TransferStage[]).forEach((stage) => {\n const item = resultData[stage];\n\n if (!item) {\n return;\n }\n\n table.push([\n { hAlign: 'left', content: chalk.bold(stage) },\n { hAlign: 'right', content: item.count },\n { hAlign: 'right', content: `${readableBytes(item.bytes, 1, 11)} ` },\n ]);\n totalBytes += item.bytes;\n totalItems += item.count;\n\n if (item.aggregates) {\n (Object.keys(item.aggregates) as (keyof typeof item.aggregates)[])\n .sort()\n .forEach((subkey) => {\n if (!item.aggregates) {\n return;\n }\n\n const subitem = item.aggregates[subkey];\n\n table.push([\n { hAlign: 'left', content: `-- ${chalk.bold.grey(subkey)}` },\n { hAlign: 'right', content: chalk.grey(subitem.count) },\n { hAlign: 'right', content: chalk.grey(`(${readableBytes(subitem.bytes, 1, 11)})`) },\n ]);\n });\n }\n });\n table.push([\n { hAlign: 'left', content: chalk.bold.green('Total') },\n { hAlign: 'right', content: chalk.bold.green(totalItems) },\n { hAlign: 'right', content: `${chalk.bold.green(readableBytes(totalBytes, 1, 11))} ` },\n ]);\n\n return table;\n};\n\nconst DEFAULT_IGNORED_CONTENT_TYPES = [\n 'admin::permission',\n 'admin::user',\n 'admin::role',\n 'admin::api-token',\n 'admin::api-token-permission',\n 'admin::transfer-token',\n 'admin::transfer-token-permission',\n 'admin::audit-log',\n 'plugin::content-releases.release',\n 'plugin::content-releases.release-action',\n];\n\nconst abortTransfer = async ({\n engine,\n strapi,\n}: {\n engine: engineDataTransfer.TransferEngine;\n strapi: Core.Strapi;\n}) => {\n try {\n await engine.abortTransfer();\n await strapi.destroy();\n } catch (e) {\n // ignore because there's not much else we can do\n return false;\n }\n return true;\n};\n\nconst setSignalHandler = async (\n handler: (...args: unknown[]) => void,\n signals = ['SIGINT', 'SIGTERM', 'SIGQUIT']\n) => {\n signals.forEach((signal) => {\n // We specifically remove ALL listeners because we have to clear the one added in Strapi bootstrap that has a process.exit\n // TODO: Ideally Strapi bootstrap would not add that listener, and then this could be more flexible and add/remove only what it needs to\n process.removeAllListeners(signal);\n process.on(signal, handler);\n });\n};\n\nconst createStrapiInstance = async (opts: { logLevel?: string } = {}): Promise<Core.Strapi> => {\n try {\n const appContext = await compileStrapi();\n const app = createStrapi({ ...opts, ...appContext });\n\n app.log.level = opts.logLevel || 'error';\n return await app.load();\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === 'ECONNREFUSED') {\n throw new Error('Process failed. Check the database connection with your Strapi project.');\n }\n\n throw error;\n }\n};\n\nconst transferDataTypes = Object.keys(engineDataTransfer.TransferGroupPresets);\n\nconst throttleOption = new Option(\n '--throttle <delay after each entity>',\n `Add a delay in milliseconds between each transferred entity`\n)\n .argParser(parseInteger)\n .hideHelp(); // This option is not publicly documented\n\nconst excludeOption = new Option(\n '--exclude <comma-separated data types>',\n `Exclude data using comma-separated types. Available types: ${transferDataTypes.join(',')}`\n).argParser(getParseListWithChoices(transferDataTypes, 'Invalid options for \"exclude\"'));\n\nconst onlyOption = new Option(\n '--only <command-separated data types>',\n `Include only these types of data (plus schemas). Available types: ${transferDataTypes.join(',')}`\n).argParser(getParseListWithChoices(transferDataTypes, 'Invalid options for \"only\"'));\n\nconst validateExcludeOnly = (command: Command) => {\n const { exclude, only } = command.opts();\n if (!only || !exclude) {\n return;\n }\n\n const choicesInBoth = only.filter((n: string) => {\n return exclude.indexOf(n) !== -1;\n });\n if (choicesInBoth.length > 0) {\n exitWith(\n 1,\n `Data types may not be used in both \"exclude\" and \"only\" in the same command. Found in both: ${choicesInBoth.join(\n ','\n )}`\n );\n }\n};\n\nconst errorColors = {\n fatal: chalk.red,\n error: chalk.red,\n silly: chalk.yellow,\n} as const;\n\nconst formatDiagnostic = (\n operation: string,\n info?: boolean\n): Parameters<engineDataTransfer.TransferEngine['diagnostics']['onDiagnostic']>[0] => {\n // Create log file for all incoming diagnostics\n let logger: undefined | winston.Logger;\n const getLogger = () => {\n if (!logger) {\n logger = createLogger(\n configs.createOutputFileConfiguration(`${operation}_${Date.now()}.log`, {\n level: 'info',\n format: formats?.detailedLogs,\n })\n );\n }\n return logger;\n };\n\n // We don't want to write a log file until there is something to be logged\n\n return ({ details, kind }) => {\n try {\n if (kind === 'error') {\n const { message, severity = 'fatal' } = details;\n\n const colorizeError = errorColors[severity];\n const errorMessage = colorizeError(`[${severity.toUpperCase()}] ${message}`);\n\n getLogger().error(errorMessage);\n }\n if (kind === 'info' && info) {\n const { message, params, origin } = details;\n\n const msg = `[${origin ?? 'transfer'}] ${message}\\n${params ? JSON.stringify(params, null, 2) : ''}`;\n\n getLogger().info(msg);\n }\n if (kind === 'warning') {\n const { origin, message } = details;\n\n getLogger().warn(`(${origin ?? 'transfer'}) ${message}`);\n }\n } catch (err) {\n getLogger().error(err);\n }\n };\n};\n\ntype Loaders = {\n [key in engineDataTransfer.TransferStage]: ora.Ora;\n};\n\ntype Data = {\n [key in engineDataTransfer.TransferStage]?: {\n startTime?: number;\n endTime?: number;\n bytes?: number;\n count?: number;\n };\n};\n\nconst loadersFactory = (defaultLoaders: Loaders = {} as Loaders) => {\n const loaders = defaultLoaders;\n const updateLoader = (stage: engineDataTransfer.TransferStage, data: Data) => {\n if (!(stage in loaders)) {\n createLoader(stage);\n }\n\n const stageData = data[stage];\n const elapsedTime = stageData?.startTime\n ? (stageData?.endTime || Date.now()) - stageData.startTime\n : 0;\n const size = `size: ${readableBytes(stageData?.bytes ?? 0)}`;\n const elapsed = `elapsed: ${elapsedTime} ms`;\n const speed =\n elapsedTime > 0 ? `(${readableBytes(((stageData?.bytes ?? 0) * 1000) / elapsedTime)}/s)` : '';\n\n loaders[stage].text = `${stage}: ${stageData?.count ?? 0} transfered (${size}) (${elapsed}) ${\n !stageData?.endTime ? speed : ''\n }`;\n\n return loaders[stage];\n };\n\n const createLoader = (stage: engineDataTransfer.TransferStage) => {\n Object.assign(loaders, { [stage]: ora() });\n return loaders[stage];\n };\n\n const getLoader = (stage: engineDataTransfer.TransferStage) => {\n return loaders[stage];\n };\n\n return {\n updateLoader,\n createLoader,\n getLoader,\n };\n};\n\n/**\n * Get the telemetry data to be sent for a didDEITSProcess* event from an initialized transfer engine object\n */\nconst getTransferTelemetryPayload = (engine: engineDataTransfer.TransferEngine) => {\n return {\n eventProperties: {\n source: engine?.sourceProvider?.name,\n destination: engine?.destinationProvider?.name,\n },\n };\n};\n\n/**\n * Get a transfer engine schema diff handler that confirms with the user before bypassing a schema check\n */\nconst getDiffHandler = (\n engine: engineDataTransfer.TransferEngine,\n {\n force,\n action,\n }: {\n force?: boolean;\n action: string;\n }\n) => {\n return async (\n context: engineDataTransfer.SchemaDiffHandlerContext,\n next: (ctx: engineDataTransfer.SchemaDiffHandlerContext) => void\n ) => {\n // if we abort here, we need to actually exit the process because of conflict with inquirer prompt\n setSignalHandler(async () => {\n await abortTransfer({ engine, strapi: strapi as Core.Strapi });\n exitWith(1, exitMessageText(action, true));\n });\n\n let workflowsStatus;\n const source = 'Schema Integrity';\n\n Object.entries(context.diffs).forEach(([uid, diffs]) => {\n for (const diff of diffs) {\n const path = [uid].concat(diff.path).join('.');\n const endPath = diff.path[diff.path.length - 1];\n\n // Catch known features\n if (\n uid === 'plugin::review-workflows.workflow' ||\n uid === 'plugin::review-workflows.workflow-stage' ||\n endPath?.startsWith('strapi_stage') ||\n endPath?.startsWith('strapi_assignee')\n ) {\n workflowsStatus = diff.kind;\n }\n // handle generic cases\n else if (diff.kind === 'added') {\n engine.reportWarning(chalk.red(`${chalk.bold(path)} does not exist on source`), source);\n } else if (diff.kind === 'deleted') {\n engine.reportWarning(\n chalk.red(`${chalk.bold(path)} does not exist on destination`),\n source\n );\n } else if (diff.kind === 'modified') {\n engine.reportWarning(chalk.red(`${chalk.bold(path)} has a different data type`), source);\n }\n }\n });\n\n // output the known feature warnings\n if (workflowsStatus === 'added') {\n engine.reportWarning(chalk.red(`Review workflows feature does not exist on source`), source);\n } else if (workflowsStatus === 'deleted') {\n engine.reportWarning(\n chalk.red(`Review workflows feature does not exist on destination`),\n source\n );\n } else if (workflowsStatus === 'modified') {\n engine.panic(\n new TransferEngineInitializationError('Unresolved differences in schema [review workflows]')\n );\n }\n\n const confirmed = await confirmMessage(\n 'There are differences in schema between the source and destination, and the data listed above will be lost. Are you sure you want to continue?',\n {\n force,\n }\n );\n\n // reset handler back to normal\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n if (confirmed) {\n context.ignoredDiffs = merge(context.diffs, context.ignoredDiffs);\n }\n\n return next(context);\n };\n};\n\nconst getAssetsBackupHandler = (\n engine: engineDataTransfer.TransferEngine,\n {\n force,\n action,\n }: {\n force?: boolean;\n action: string;\n }\n) => {\n return async (\n context: engineDataTransfer.ErrorHandlerContext,\n next: (ctx: engineDataTransfer.ErrorHandlerContext) => void\n ) => {\n // if we abort here, we need to actually exit the process because of conflict with inquirer prompt\n setSignalHandler(async () => {\n await abortTransfer({ engine, strapi: strapi as Core.Strapi });\n exitWith(1, exitMessageText(action, true));\n });\n\n console.warn(\n 'The backup for the assets could not be created inside the public directory. Ensure Strapi has write permissions on the public directory.'\n );\n const confirmed = await confirmMessage(\n 'Do you want to continue without backing up your public/uploads files?',\n {\n force,\n }\n );\n\n if (confirmed) {\n context.ignore = true;\n }\n\n // reset handler back to normal\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n return next(context);\n };\n};\n\nconst shouldSkipStage = (\n opts: Partial<engineDataTransfer.ITransferEngineOptions>,\n dataKind: engineDataTransfer.TransferFilterPreset\n) => {\n if (opts.exclude?.includes(dataKind)) {\n return true;\n }\n if (opts.only) {\n return !opts.only.includes(dataKind);\n }\n\n return false;\n};\n\ntype RestoreConfig = NonNullable<\n strapiDataTransfer.providers.ILocalStrapiDestinationProviderOptions['restore']\n>;\n\n// Based on exclude/only from options, create the restore object to match\nconst parseRestoreFromOptions = (opts: Partial<engineDataTransfer.ITransferEngineOptions>) => {\n const entitiesOptions: RestoreConfig['entities'] = {\n exclude: DEFAULT_IGNORED_CONTENT_TYPES,\n include: undefined,\n };\n\n // if content is not included, send an empty array for include\n if ((opts.only && !opts.only.includes('content')) || opts.exclude?.includes('content')) {\n entitiesOptions.include = [];\n }\n\n const restoreConfig: strapiDataTransfer.providers.ILocalStrapiDestinationProviderOptions['restore'] =\n {\n entities: entitiesOptions,\n assets: !shouldSkipStage(opts, 'files'),\n configuration: {\n webhook: !shouldSkipStage(opts, 'config'),\n coreStore: !shouldSkipStage(opts, 'config'),\n },\n };\n\n return restoreConfig;\n};\n\nexport {\n loadersFactory,\n buildTransferTable,\n getDefaultExportName,\n getTransferTelemetryPayload,\n DEFAULT_IGNORED_CONTENT_TYPES,\n createStrapiInstance,\n excludeOption,\n exitMessageText,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n formatDiagnostic,\n abortTransfer,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n shouldSkipStage,\n parseRestoreFromOptions,\n};\n","import { isObject, isString, isFinite, toNumber } from 'lodash/fp';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\nimport type { Core } from '@strapi/types';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n getDefaultExportName,\n buildTransferTable,\n DEFAULT_IGNORED_CONTENT_TYPES,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst {\n providers: { createLocalFileDestinationProvider },\n} = fileDataTransfer;\nconst {\n providers: { createLocalStrapiSourceProvider },\n} = strapiDataTransfer;\n\nconst BYTES_IN_MB = 1024 * 1024;\n\ninterface CmdOptions {\n file?: string;\n encrypt?: boolean;\n verbose?: boolean;\n key?: string;\n compress?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n throttle?: number;\n maxSizeJsonl?: number;\n}\n\n/**\n * Export command.\n *\n * It transfers data from a local Strapi instance to a file\n *\n * @param {ExportCommandOptions} opts\n */\nexport default async (opts: CmdOptions) => {\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n const strapi = await createStrapiInstance();\n\n const source = createSourceProvider(strapi);\n const destination = createDestinationProvider(opts);\n\n const engine = engineDataTransfer.createTransferEngine(source, destination, {\n versionStrategy: 'ignore', // for an export to file, versionStrategy will always be skipped\n schemaStrategy: 'ignore', // for an export to file, schemaStrategy will always be skipped\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: {\n links: [\n {\n filter(link) {\n return (\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.left.type) &&\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.right.type)\n );\n },\n },\n ],\n entities: [\n {\n filter(entity) {\n return !DEFAULT_IGNORED_CONTENT_TYPES.includes(entity.type);\n },\n },\n ],\n },\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('export', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log(`Starting export...`);\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n let outFile: string;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n outFile = results.destination?.file?.path ?? '';\n const outFileExists = await fs.pathExists(outFile);\n if (!outFileExists) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export file not created \"${outFile}\"`\n );\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n console.log(`Export archive is in ${chalk.green(outFile)}`);\n exitWith(0, exitMessageText('export'));\n } catch {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('export', true));\n }\n};\n\n/**\n * It creates a local strapi destination provider\n */\nconst createSourceProvider = (strapi: Core.Strapi) => {\n return createLocalStrapiSourceProvider({\n async getStrapi() {\n return strapi;\n },\n });\n};\n\n/**\n * It creates a local file destination provider based on the given options\n */\nconst createDestinationProvider = (opts: CmdOptions) => {\n const { file, compress, encrypt, key, maxSizeJsonl } = opts;\n\n const filepath = isString(file) && file.length > 0 ? file : getDefaultExportName();\n\n const maxSizeJsonlInMb = isFinite(toNumber(maxSizeJsonl))\n ? toNumber(maxSizeJsonl) * BYTES_IN_MB\n : undefined;\n\n return createLocalFileDestinationProvider({\n file: {\n path: filepath,\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n encryption: {\n enabled: encrypt ?? false,\n key: encrypt ? key : undefined,\n },\n compression: {\n enabled: compress ?? false,\n },\n });\n};\n","import { createCommand, Option } from 'commander';\n\nimport {\n excludeOption,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n} from '../../utils/data-transfer';\nimport { promptEncryptionKey } from '../../utils/commander';\nimport action from './action';\n\n/**\n * `$ strapi export`\n */\nconst command = () => {\n return createCommand('export')\n .description('Export data from Strapi to file')\n .allowExcessArguments(false)\n .addOption(\n new Option('--no-encrypt', `Disables 'aes-128-ecb' encryption of the output file`).default(\n true\n )\n )\n .addOption(\n new Option('--no-compress', 'Disables gzip compression of output file').default(true)\n )\n .addOption(new Option('--verbose', 'Enable verbose logs'))\n .addOption(\n new Option(\n '-k, --key <string>',\n 'Provide encryption key in command instead of using the prompt'\n )\n )\n .addOption(\n new Option('-f, --file <file>', 'name to use for exported file (without extensions)')\n )\n .addOption(excludeOption)\n .addOption(onlyOption)\n .addOption(throttleOption)\n .hook('preAction', validateExcludeOnly)\n .hook('preAction', promptEncryptionKey)\n .action(action);\n};\n\nexport default command;\n","import type { Core } from '@strapi/types';\nimport { isObject } from 'lodash/fp';\nimport chalk from 'chalk';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n DEFAULT_IGNORED_CONTENT_TYPES,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n parseRestoreFromOptions,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst {\n providers: { createLocalFileSourceProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiDestinationProvider, DEFAULT_CONFLICT_STRATEGY },\n} = strapiDataTransfer;\n\nconst { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY } =\n engineDataTransfer;\n\ninterface CmdOptions {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n verbose?: boolean;\n key?: string;\n conflictStrategy?: 'restore';\n force?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n throttle?: number;\n}\n\ntype EngineOptions = Parameters<typeof createTransferEngine>[2];\n\n/**\n * Import command.\n *\n * It transfers data from a file to a local Strapi instance\n */\nexport default async (opts: CmdOptions) => {\n // validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse arguments');\n }\n\n /**\n * From strapi backup file\n */\n const sourceOptions = getLocalFileSourceOptions(opts);\n\n const source = createLocalFileSourceProvider(sourceOptions);\n\n /**\n * To local Strapi instance\n */\n const strapiInstance = await createStrapiInstance();\n\n /**\n * Configure and run the transfer engine\n */\n const engineOptions: EngineOptions = {\n versionStrategy: DEFAULT_VERSION_STRATEGY,\n schemaStrategy: DEFAULT_SCHEMA_STRATEGY,\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: {\n links: [\n {\n filter(link) {\n return (\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.left.type) &&\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.right.type)\n );\n },\n },\n ],\n entities: [\n {\n filter: (entity) => !DEFAULT_IGNORED_CONTENT_TYPES.includes(entity.type),\n },\n ],\n },\n };\n\n const destinationOptions = {\n async getStrapi() {\n return strapiInstance;\n },\n autoDestroy: false,\n strategy: opts.conflictStrategy || DEFAULT_CONFLICT_STRATEGY,\n restore: parseRestoreFromOptions(engineOptions),\n };\n\n const destination = createLocalStrapiDestinationProvider(destinationOptions);\n destination.onWarning = (message) => console.warn(`\\n${chalk.yellow('warn')}: ${message}`);\n\n const engine = createTransferEngine(source, destination, engineOptions);\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('import', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'import' }));\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log('Starting import...');\n await strapiInstance.telemetry.send(\n 'didDEITSProcessStart',\n getTransferTelemetryPayload(engine)\n );\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n results = await engine.transfer();\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapiInstance.telemetry.send(\n 'didDEITSProcessFinish',\n getTransferTelemetryPayload(engine)\n );\n await strapiInstance.destroy();\n\n exitWith(0, exitMessageText('import'));\n } catch (e) {\n await strapiInstance.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('import', true));\n }\n};\n\n/**\n * Infer local file source provider options based on a given filename\n */\nconst getLocalFileSourceOptions = (opts: {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n key?: string;\n}) => {\n const options: fileDataTransfer.providers.ILocalFileSourceProviderOptions = {\n file: { path: opts.file ?? '' },\n compression: { enabled: !!opts.decompress },\n encryption: { enabled: !!opts.decrypt, key: opts.key },\n };\n\n return options;\n};\n","import path from 'path';\nimport { createCommand, Option } from 'commander';\nimport inquirer from 'inquirer';\nimport {\n excludeOption,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n} from '../../utils/data-transfer';\nimport { getCommanderConfirmMessage, forceOption } from '../../utils/commander';\nimport { exitWith } from '../../utils/helpers';\nimport action from './action';\n\n/**\n * `$ strapi import`\n */\nconst command = () => {\n return (\n createCommand('import')\n .description('Import data from file to Strapi')\n .allowExcessArguments(false)\n .requiredOption(\n '-f, --file <file>',\n 'path and filename for the Strapi export file you want to import'\n )\n .addOption(\n new Option(\n '-k, --key <string>',\n 'Provide encryption key in command instead of using the prompt'\n )\n )\n .addOption(new Option('--verbose', 'Enable verbose logs'))\n .addOption(forceOption)\n .addOption(excludeOption)\n .addOption(onlyOption)\n .addOption(throttleOption)\n .hook('preAction', validateExcludeOnly)\n .hook('preAction', async (thisCommand) => {\n const opts = thisCommand.opts();\n const ext = path.extname(String(opts.file));\n\n // check extension to guess if we should prompt for key\n if (ext === '.enc') {\n if (!opts.key) {\n const answers = await inquirer.prompt([\n {\n type: 'password',\n message: 'Please enter your decryption key',\n name: 'key',\n },\n ]);\n if (!answers.key?.length) {\n exitWith(1, 'No key entered, aborting import.');\n }\n opts.key = answers.key;\n }\n }\n })\n // set decrypt and decompress options based on filename\n .hook('preAction', (thisCommand) => {\n const opts = thisCommand.opts();\n\n const { extname, parse } = path;\n\n let file = opts.file;\n\n if (extname(file) === '.enc') {\n file = parse(file).name; // trim the .enc extension\n thisCommand.opts().decrypt = true;\n } else {\n thisCommand.opts().decrypt = false;\n }\n\n if (extname(file) === '.gz') {\n file = parse(file).name; // trim the .gz extension\n thisCommand.opts().decompress = true;\n } else {\n thisCommand.opts().decompress = false;\n }\n\n if (extname(file) !== '.tar') {\n exitWith(\n 1,\n `The file '${opts.file}' does not appear to be a valid Strapi data file. It must have an extension ending in .tar[.gz][.enc]`\n );\n }\n })\n .hook(\n 'preAction',\n getCommanderConfirmMessage(\n 'The import will delete your existing data! Are you sure you want to proceed?',\n { failMessage: 'Import process aborted' }\n )\n )\n .action(action)\n );\n};\n\nexport default command;\n","import { isObject } from 'lodash/fp';\nimport { engine as engineDataTransfer, strapi as strapiDataTransfer } from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n DEFAULT_IGNORED_CONTENT_TYPES,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n parseRestoreFromOptions,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst { createTransferEngine } = engineDataTransfer;\nconst {\n providers: {\n createRemoteStrapiDestinationProvider,\n createLocalStrapiSourceProvider,\n createLocalStrapiDestinationProvider,\n createRemoteStrapiSourceProvider,\n },\n} = strapiDataTransfer;\n\ninterface CmdOptions {\n from?: URL;\n fromToken: string;\n to: URL;\n toToken: string;\n verbose?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n throttle?: number;\n force?: boolean;\n}\n/**\n * Transfer command.\n *\n * Transfers data between local Strapi and remote Strapi instances\n */\nexport default async (opts: CmdOptions) => {\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n if (!(opts.from || opts.to) || (opts.from && opts.to)) {\n exitWith(1, 'Exactly one source (from) or destination (to) option must be provided');\n }\n\n const strapi = await createStrapiInstance();\n let source;\n let destination;\n\n // if no URL provided, use local Strapi\n if (!opts.from) {\n source = createLocalStrapiSourceProvider({\n getStrapi: () => strapi,\n });\n }\n // if URL provided, set up a remote source provider\n else {\n if (!opts.fromToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n source = createRemoteStrapiSourceProvider({\n getStrapi: () => strapi,\n url: opts.from,\n auth: {\n type: 'token',\n token: opts.fromToken,\n },\n });\n }\n\n // if no URL provided, use local Strapi\n if (!opts.to) {\n destination = createLocalStrapiDestinationProvider({\n getStrapi: () => strapi,\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts),\n });\n }\n // if URL provided, set up a remote destination provider\n else {\n if (!opts.toToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n destination = createRemoteStrapiDestinationProvider({\n url: opts.to,\n auth: {\n type: 'token',\n token: opts.toToken,\n },\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts),\n });\n }\n\n if (!source || !destination) {\n exitWith(1, 'Could not create providers');\n }\n\n const engine = createTransferEngine(source, destination, {\n versionStrategy: 'exact',\n schemaStrategy: 'strict',\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: {\n links: [\n {\n filter(link) {\n return (\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.left.type) &&\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.right.type)\n );\n },\n },\n ],\n entities: [\n {\n filter(entity) {\n return !DEFAULT_IGNORED_CONTENT_TYPES.includes(entity.type);\n },\n },\n ],\n },\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('transfer', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'transfer' }));\n\n engine.addErrorHandler(\n 'ASSETS_DIRECTORY_ERR',\n getAssetsBackupHandler(engine, { force: opts.force, action: 'transfer' })\n );\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('stage::error', ({ stage, data }) => {\n updateLoader(stage, data).fail();\n });\n\n progress.on('transfer::start', async () => {\n console.log(`Starting transfer...`);\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: Awaited<ReturnType<typeof engine.transfer>>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n exitWith(0, exitMessageText('transfer'));\n } catch (e) {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('transfer', true));\n }\n};\n","import inquirer from 'inquirer';\nimport { createCommand, Option } from 'commander';\nimport { getCommanderConfirmMessage, forceOption, parseURL } from '../../utils/commander';\nimport { exitWith, assertUrlHasProtocol, ifOptions } from '../../utils/helpers';\nimport {\n excludeOption,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n} from '../../utils/data-transfer';\n\nimport action from './action';\n\n/**\n * `$ strapi transfer`\n */\nconst command = () => {\n return (\n createCommand('transfer')\n .description('Transfer data from one source to another')\n .allowExcessArguments(false)\n .addOption(\n new Option(\n '--from <sourceURL>',\n `URL of the remote Strapi instance to get data from`\n ).argParser(parseURL)\n )\n .addOption(new Option('--from-token <token>', `Transfer token for the remote Strapi source`))\n .addOption(\n new Option(\n '--to <destinationURL>',\n `URL of the remote Strapi instance to send data to`\n ).argParser(parseURL)\n )\n\n .addOption(\n new Option('--to-token <token>', `Transfer token for the remote Strapi destination`)\n )\n .addOption(new Option('--verbose', 'Enable verbose logs'))\n .addOption(forceOption)\n .addOption(excludeOption)\n .addOption(onlyOption)\n .addOption(throttleOption)\n .hook('preAction', validateExcludeOnly)\n .hook(\n 'preAction',\n ifOptions(\n (opts) => !(opts.from || opts.to) || (opts.from && opts.to),\n async () =>\n exitWith(\n 1,\n 'Exactly one remote source (from) or destination (to) option must be provided'\n )\n )\n )\n // If --from is used, validate the URL and token\n .hook(\n 'preAction',\n ifOptions(\n (opts) => opts.from,\n async (thisCommand) => {\n assertUrlHasProtocol(thisCommand.opts().from, ['https:', 'http:']);\n if (!thisCommand.opts().fromToken) {\n const answers = await inquirer.prompt([\n {\n type: 'password',\n message: 'Please enter your transfer token for the remote Strapi source',\n name: 'fromToken',\n },\n ]);\n if (!answers.fromToken?.length) {\n exitWith(1, 'No token provided for remote source, aborting transfer.');\n }\n thisCommand.opts().fromToken = answers.fromToken;\n }\n\n await getCommanderConfirmMessage(\n 'The transfer will delete all the local Strapi assets and its database. Are you sure you want to proceed?',\n { failMessage: 'Transfer process aborted' }\n )(thisCommand);\n }\n )\n )\n // If --to is used, validate the URL, token, and confirm restore\n .hook(\n 'preAction',\n ifOptions(\n (opts) => opts.to,\n async (thisCommand) => {\n assertUrlHasProtocol(thisCommand.opts().to, ['https:', 'http:']);\n if (!thisCommand.opts().toToken) {\n const answers = await inquirer.prompt([\n {\n type: 'password',\n message: 'Please enter your transfer token for the remote Strapi destination',\n name: 'toToken',\n },\n ]);\n if (!answers.toToken?.length) {\n exitWith(1, 'No token provided for remote destination, aborting transfer.');\n }\n thisCommand.opts().toToken = answers.toToken;\n }\n\n await getCommanderConfirmMessage(\n 'The transfer will delete existing data from the remote Strapi! Are you sure you want to proceed?',\n { failMessage: 'Transfer process aborted' }\n )(thisCommand);\n }\n )\n )\n .action(action)\n );\n};\n\nexport default command;\n","import { buildStrapiCloudCommands as cloudCommands } from '@strapi/cloud-cli';\n\nimport { command as createAdminUser } from './admin/create-user';\nimport { command as resetAdminUserPassword } from './admin/reset-user-password';\nimport { command as listComponents } from './components/list';\nimport { command as configurationDump } from './configuration/dump';\nimport { command as configurationRestore } from './configuration/restore';\nimport { command as listContentTypes } from './content-types/list';\nimport { command as listControllers } from './controllers/list';\nimport { command as listHooks } from './hooks/list';\nimport { command as listMiddlewares } from './middlewares/list';\nimport { command as listPolicies } from './policies/list';\nimport { command as listRoutes } from './routes/list';\nimport { command as listServices } from './services/list';\nimport { command as disableTelemetry } from './telemetry/disable';\nimport { command as enableTelemetry } from './telemetry/enable';\nimport { command as generateTemplates } from './templates/generate';\nimport { command as generateTsTypes } from './ts/generate-types';\nimport { command as buildCommand } from './build';\nimport { command as consoleCommand } from './console';\nimport { command as developCommand } from './develop';\nimport { command as generateCommand } from './generate';\nimport { command as reportCommand } from './report';\nimport { command as startCommand } from './start';\nimport { command as versionCommand } from './version';\nimport exportCommand from './export/command';\nimport importCommand from './import/command';\nimport transferCommand from './transfer/command';\n\nimport { StrapiCommand } from '../types';\n\nexport const commands: StrapiCommand[] = [\n createAdminUser,\n resetAdminUserPassword,\n listComponents,\n configurationDump,\n configurationRestore,\n consoleCommand,\n listContentTypes,\n listControllers,\n generateCommand,\n listHooks,\n listMiddlewares,\n listPolicies,\n reportCommand,\n listRoutes,\n listServices,\n startCommand,\n disableTelemetry,\n enableTelemetry,\n generateTemplates,\n generateTsTypes,\n versionCommand,\n buildCommand,\n developCommand,\n exportCommand,\n importCommand,\n transferCommand,\n /**\n * Cloud\n */\n cloudCommands,\n];\n","import chalk from 'chalk';\nimport ora, { Ora } from 'ora';\nimport * as cliProgress from 'cli-progress';\n\nexport interface LoggerOptions {\n silent?: boolean;\n debug?: boolean;\n timestamp?: boolean;\n}\n\nexport interface Logger {\n warnings: number;\n errors: number;\n debug: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n success: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n log: (...args: unknown[]) => void;\n spinner: (text: string) => Pick<ora.Ora, 'succeed' | 'fail' | 'start' | 'text' | 'isSpinning'>;\n progressBar: (\n totalSize: number,\n text: string\n ) => Pick<cliProgress.SingleBar, 'start' | 'stop' | 'update'>;\n}\n\nconst silentSpinner = {\n succeed() {\n return this;\n },\n fail() {\n return this;\n },\n start() {\n return this;\n },\n text: '',\n isSpinning: false,\n} as Ora;\n\nconst silentProgressBar = {\n start() {\n return this;\n },\n stop() {\n return this;\n },\n update() {\n return this;\n },\n} as unknown as cliProgress.SingleBar;\n\nconst createLogger = (options: LoggerOptions = {}): Logger => {\n const { silent = false, debug = false, timestamp = true } = options;\n\n const state = { errors: 0, warning: 0 };\n\n return {\n get warnings() {\n return state.warning;\n },\n\n get errors() {\n return state.errors;\n },\n\n debug(...args) {\n if (silent || !debug) {\n return;\n }\n\n console.log(\n chalk.cyan(`[DEBUG]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args\n );\n },\n\n info(...args) {\n if (silent) {\n return;\n }\n\n console.info(\n chalk.blue(`[INFO]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args\n );\n },\n\n log(...args) {\n if (silent) {\n return;\n }\n\n console.info(chalk.blue(`${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`), ...args);\n },\n\n success(...args) {\n if (silent) {\n return;\n }\n\n console.info(\n chalk.green(`[SUCCESS]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args\n );\n },\n\n warn(...args) {\n state.warning += 1;\n\n if (silent) {\n return;\n }\n\n console.warn(\n chalk.yellow(`[WARN]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args\n );\n },\n\n error(...args) {\n state.errors += 1;\n\n if (silent) {\n return;\n }\n\n console.error(\n chalk.red(`[ERROR]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args\n );\n },\n\n spinner(text: string) {\n if (silent) {\n return silentSpinner;\n }\n\n return ora(text);\n },\n\n progressBar(totalSize: number, text: string) {\n if (silent) {\n return silentProgressBar;\n }\n\n const progressBar = new cliProgress.SingleBar({\n format: `${text ? `${text} |` : ''}${chalk.green('{bar}')}| {percentage}%`,\n barCompleteChar: '\\u2588',\n barIncompleteChar: '\\u2591',\n hideCursor: true,\n forceRedraw: true,\n });\n\n progressBar.start(totalSize, 0);\n\n return progressBar;\n },\n };\n};\n\nexport { createLogger };\n","import os from 'os';\nimport ts from 'typescript';\nimport type { Logger } from './logger';\n\ninterface TsConfig {\n config: ts.ParsedCommandLine;\n path: string;\n}\n\n/**\n * @description Load a tsconfig.json file and return the parsed config.\n *\n * @internal\n */\nconst loadTsConfig = ({\n cwd,\n path,\n logger,\n}: {\n cwd: string;\n path: string;\n logger: Logger;\n}): TsConfig | undefined => {\n const configPath = ts.findConfigFile(cwd, ts.sys.fileExists, path);\n\n if (!configPath) {\n return undefined;\n }\n\n const configFile = ts.readConfigFile(configPath, ts.sys.readFile);\n\n const parsedConfig = ts.parseJsonConfigFileContent(configFile.config, ts.sys, cwd);\n\n logger.debug(`Loaded user TS config:`, os.EOL, parsedConfig);\n\n return {\n config: parsedConfig,\n path: configPath,\n };\n};\n\nexport { loadTsConfig };\nexport type { TsConfig };\n","import { Command } from 'commander';\n\nimport { commands as strapiCommands } from './commands';\n\nimport { createLogger } from './utils/logger';\nimport { loadTsConfig } from './utils/tsconfig';\nimport { CLIContext } from './types';\nimport { version } from '../../package.json';\n\nconst createCLI = async (argv: string[], command = new Command()) => {\n // Initial program setup\n command.storeOptionsAsProperties(false).allowUnknownOption(true);\n\n // Help command\n command.helpOption('-h, --help', 'Display help for command');\n command.addHelpCommand('help [command]', 'Display help for command');\n\n command.version(version, '-v, --version', 'Output the version number');\n\n const cwd = process.cwd();\n\n const hasDebug = argv.includes('--debug');\n const hasSilent = argv.includes('--silent');\n\n const logger = createLogger({ debug: hasDebug, silent: hasSilent, timestamp: false });\n\n const tsconfig = loadTsConfig({\n cwd,\n path: 'tsconfig.json',\n logger,\n });\n\n const ctx = {\n cwd,\n logger,\n tsconfig,\n } satisfies CLIContext;\n\n // Load all commands\n for (const commandFactory of strapiCommands) {\n try {\n const subCommand = await commandFactory({ command, argv, ctx });\n\n // Add this command to the Commander command object\n if (subCommand) {\n command.addCommand(subCommand);\n }\n } catch (e) {\n console.error(`Failed to load command`, e);\n }\n }\n\n // TODO v6: remove these deprecation notices\n const deprecatedCommands = [\n { name: 'plugin:init', message: 'Please use `npx @strapi/sdk-plugin init` instead.' },\n {\n name: 'plugin:verify',\n message: 'After migrating your plugin to v5, use `strapi-plugin verify`',\n },\n {\n name: 'plugin:watch',\n message: 'After migrating your plugin to v5, use `strapi-plugin watch`',\n },\n {\n name: 'plugin:watch:link',\n message: 'After migrating your plugin to v5, use `strapi-plugin watch:link`',\n },\n {\n name: 'plugin:build',\n message: 'After migrating your plugin to v5, use `strapi-plugin build`',\n },\n ];\n\n // Add hidden commands for deprecatedCommands that output a warning that the command has been removed.\n deprecatedCommands.forEach(({ name, message }) => {\n const deprecated = new Command(name)\n .command(name)\n .description('(deprecated)')\n .action(() => {\n console.warn(\n `The command ${name} has been deprecated. See the Strapi 5 migration guide for more information.`\n );\n if (message) {\n console.warn(message);\n }\n });\n command.addCommand(deprecated, { hidden: true });\n });\n return command;\n};\n\nconst runCLI = async (argv = process.argv, command = new Command()) => {\n const commands = await createCLI(argv, command);\n await commands.parseAsync(argv);\n};\n\nexport { runCLI, createCLI };\n"],"names":["bytesPerKb","sizes","readableBytes","bytes","decimals","padStart","i","Math","floor","log","result","parseFloat","toFixed","exitWith","code","message","options","logger","console","prc","process","chalk","green","error","red","isString","isArray","forEach","msg","exit","assertUrlHasProtocol","url","protocol","toString","some","join","ifOptions","conditionCallback","isMetCallback","isNotMetCallback","command","opts","assertCwdContainsStrapiProject","name","logErrorAndExit","yellow","pkgJSON","require","cwd","has","err","runAction","action","args","Promise","resolve","then","catch","emailValidator","yup","string","email","lowercase","passwordValidator","min","matches","adminCreateSchema","object","shape","password","firstname","trim","required","lastname","promptQuestions","type","validate","value","validEmail","validPassword","createAdmin","appContext","compileStrapi","app","createStrapi","load","user","admin","services","exists","superAdminRole","role","getSuperAdmin","create","isActive","roles","id","registrationToken","cmdOptions","_","isEmpty","stdin","isTTY","inquiry","inquirer","prompt","confirm","ValidationError","errors","createCommand","alias","description","option","changePassword","resetPasswordByEmail","register","list","Object","keys","components","infoTable","CLITable","head","blue","push","destroy","CHUNK_SIZE","file","filePath","pretty","output","fs","createWriteStream","stdout","count","query","exportData","pageCount","ceil","page","results","findMany","limit","offset","orderBy","filter","key","startsWith","environment","tag","str","JSON","stringify","undefined","write","end","length","strategy","input","readFileSync","readStdin","dataToImport","parse","Error","Array","db","importer","createImporter","config","import","printStatistics","reject","setEncoding","on","chunk","read","createReplaceImporter","createMergeImporter","createKeepImporter","stats","created","replaced","conf","matching","where","update","data","merged","existingConf","findOne","merge","untouched","get","server","mount","listRoutes","colWidths","route","methods","map","toUpper","path","sendEvent","event","uuid","fetch","method","body","deviceId","machineID","groupProperties","projectId","headers","e","readPackageJSON","packageObj","fse","readJson","strapi","writePackageJSON","spacing","writeJson","spaces","packageJSONPath","pathExists","telemetryDisabled","updatedPackageJSON","generateNewPackageJSON","randomUUID","warn","debug","silent","verbose","outDir","ignoreDiagnostics","tsUtils","generators","generate","pwd","appDir","rootDir","artifacts","contentTypes","getPackageManager","agent","env","npm_config_user_agent","includes","test","PEER_DEPS","react","checkRequiredDependencies","USE_EXPERIMENTAL_DEPENDENCIES","didInstall","pkg","readPkgUp","os","EOL","packageJson","install","review","entries","reduce","acc","version","dependencies","declaredVersion","wantedVersion","info","installDependencies","argv","execa","stdio","dep","minDeclaredVersion","semver","minVersion","satisfies","installedVersion","getModuleVersion","NODE_ENV","getModule","modulePackagePath","resolveFrom","readFile","res","packageManager","execOptions","encoding","packages","npmArgs","yarnArgs","pnpmArgs","exitCode","failed","getTimer","timings","startTimes","start","performance","now","getTimings","prettyTime","timeInMs","access","loadFile","esbuildOptions","extensions","unregister","mod","default","convertSystemPathToModulePath","sysPath","platform","split","sep","posix","convertModulePathToSystemPath","modulePath","loadEnv","pathToEnv","dotenv","getStrapiAdminEnvVars","defaultEnv","toUpperCase","isError","handleUnexpectedError","stack","boxen","padding","align","YupValidationError","size","details","validatePackageHasStrapi","validatePackageIsPlugin","kind","getEnabledPlugins","runtimeDir","plugins","deps","importName","camelCase","userPluginsFile","loadUserPluginsFile","dirs","userPluginName","userPluginConfig","enabled","relative","PLUGIN_CONFIGS","root","configFile","getMapOfPluginsWithAdmin","pluginImportPaths","values","plugin","localPluginPath","packageJsonPath","existsSync","localAdminPath","exports","ADMIN_APP_FILES","loadUserAppFile","DEFAULT_BROWSERSLIST","createBuildContext","tsconfig","strapiInstance","distDir","autoReload","serveAdminPanel","serverAbsoluteUrl","adminAbsoluteUrl","adminPath","sameOrigin","URL","origin","adminPublicPath","pathname","serverPublicPath","ADMIN_PATH","STRAPI_ADMIN_BACKEND_URL","STRAPI_TELEMETRY_DISABLED","String","telemetry","isDisabled","envKeys","distPath","dist","rm","recursive","force","entry","pluginsWithFront","target","browserslist","loadConfig","customisations","features","bundler","restOptions","buildContext","basePath","getEntryModule","ctx","pluginsObject","pluginsImport","outdent","getDocumentHTML","props","renderToStaticMarkup","createElement","DefaultDocument","AUTO_GENERATED_WARNING","decorateHTMLWithAutoGeneratedWarning","htmlTemplate","replace","writeStaticClientFiles","prettier","mkdir","indexHtml","entryPath","writeFile","format","parser","build","timer","compilingTsSpinner","spinner","compile","configOptions","compilingDuration","text","succeed","contextSpinner","contextDuration","buildingSpinner","buildWebpack","buildVite","buildDuration","fail","nodeBuild","repl","REPL","cleanupDistDirectory","timerName","Date","cleaningSpinner","dirContent","readdir","validFilenames","filename","generatingDuration","develop","polling","watchAdmin","cluster","isPrimary","adminSpinner","adminDuration","worker","send","fork","isWorker","loadStrapiSpinner","bundleWatcher","watch","watchWebpack","watchVite","loadStrapiDuration","generatingTsSpinner","restart","reload","isWatching","isReloading","watcher","chokidar","ignoreInitial","usePolling","ignored","static","public","strings","joinBy","close","nodeDevelop","splice","gen","runCLI","all","reportUUID","Boolean","reportDependencies","debugInfo","launchedAt","arch","EE","database","connection","client","devDependencies","isTSProject","isUsingTypeScript","resolveOutDir","buildDirExists","parseList","item","getParseListWithChoices","choices","errorMessage","invalid","parseInteger","parsedValue","parseInt","isNaN","InvalidOptionArgumentError","parseURL","host","promptEncryptionKey","thisCommand","encrypt","answers","getCommanderConfirmMessage","failMessage","confirmed","confirmMessage","bold","cyan","forceOption","Option","TransferEngineInitializationError","engineDataTransfer","exitMessageText","processCapitalized","slice","pad","n","yyyymmddHHMMSS","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getDefaultExportName","buildTransferTable","resultData","table","Table","totalBytes","totalItems","stage","hAlign","content","aggregates","sort","subkey","subitem","grey","DEFAULT_IGNORED_CONTENT_TYPES","abortTransfer","engine","setSignalHandler","handler","signals","signal","removeAllListeners","createStrapiInstance","level","logLevel","transferDataTypes","TransferGroupPresets","throttleOption","argParser","hideHelp","excludeOption","onlyOption","validateExcludeOnly","exclude","only","choicesInBoth","indexOf","errorColors","fatal","silly","formatDiagnostic","operation","getLogger","createLogger","configs","createOutputFileConfiguration","formats","detailedLogs","severity","colorizeError","params","loadersFactory","defaultLoaders","loaders","updateLoader","createLoader","stageData","elapsedTime","startTime","endTime","elapsed","speed","assign","ora","getLoader","getTransferTelemetryPayload","eventProperties","source","sourceProvider","destination","destinationProvider","getDiffHandler","context","next","workflowsStatus","diffs","uid","diff","concat","endPath","reportWarning","panic","ignoredDiffs","getAssetsBackupHandler","ignore","shouldSkipStage","dataKind","parseRestoreFromOptions","entitiesOptions","include","restoreConfig","entities","assets","configuration","webhook","coreStore","providers","createLocalFileDestinationProvider","fileDataTransfer","createLocalStrapiSourceProvider","strapiDataTransfer","BYTES_IN_MB","isObject","createSourceProvider","createDestinationProvider","createTransferEngine","versionStrategy","schemaStrategy","throttle","transforms","links","link","left","right","entity","diagnostics","onDiagnostic","progress","stream","outFile","transfer","outFileExists","TransferEngineTransferError","getStrapi","compress","maxSizeJsonl","filepath","maxSizeJsonlInMb","isFinite","toNumber","encryption","compression","allowExcessArguments","addOption","hook","createLocalFileSourceProvider","createLocalStrapiDestinationProvider","DEFAULT_CONFLICT_STRATEGY","DEFAULT_VERSION_STRATEGY","DEFAULT_SCHEMA_STRATEGY","sourceOptions","getLocalFileSourceOptions","engineOptions","destinationOptions","autoDestroy","conflictStrategy","restore","onWarning","onSchemaDiff","decompress","decrypt","requiredOption","ext","extname","createRemoteStrapiDestinationProvider","createRemoteStrapiSourceProvider","from","to","fromToken","auth","token","toToken","addErrorHandler","commands","createAdminUser","resetAdminUserPassword","listComponents","configurationDump","configurationRestore","consoleCommand","listContentTypes","listControllers","generateCommand","listHooks","listMiddlewares","listPolicies","reportCommand","listServices","startCommand","disableTelemetry","enableTelemetry","generateTemplates","generateTsTypes","versionCommand","buildCommand","developCommand","exportCommand","importCommand","transferCommand","cloudCommands","silentSpinner","isSpinning","silentProgressBar","stop","timestamp","state","warning","warnings","toISOString","success","progressBar","totalSize","cliProgress","SingleBar","barCompleteChar","barIncompleteChar","hideCursor","forceRedraw","loadTsConfig","configPath","ts","findConfigFile","sys","fileExists","readConfigFile","parsedConfig","parseJsonConfigFileContent","createCLI","Command","storeOptionsAsProperties","allowUnknownOption","helpOption","addHelpCommand","hasDebug","hasSilent","commandFactory","strapiCommands","subCommand","addCommand","deprecatedCommands","deprecated","hidden","parseAsync"],"mappings":"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"}
1
+ {"version":3,"file":"index--KO67yy1.mjs","sources":["../../src/cli/utils/helpers.ts","../../src/cli/commands/admin/create-user.ts","../../src/cli/commands/admin/reset-user-password.ts","../../src/cli/commands/components/list.ts","../../src/cli/commands/configuration/dump.ts","../../src/cli/commands/configuration/restore.ts","../../src/cli/commands/content-types/list.ts","../../src/cli/commands/controllers/list.ts","../../src/cli/commands/hooks/list.ts","../../src/cli/commands/middlewares/list.ts","../../src/cli/commands/policies/list.ts","../../src/cli/commands/routes/list.ts","../../src/cli/commands/services/list.ts","../../src/cli/utils/telemetry.ts","../../src/cli/commands/telemetry/disable.ts","../../src/cli/commands/telemetry/enable.ts","../../src/cli/commands/templates/generate.ts","../../src/cli/commands/ts/generate-types.ts","../../src/node/core/managers.ts","../../src/node/core/dependencies.ts","../../src/node/core/timer.ts","../../src/node/core/files.ts","../../src/node/core/env.ts","../../src/node/core/errors.ts","../../src/node/core/plugins.ts","../../src/node/core/admin-customisations.ts","../../src/node/create-build-context.ts","../../src/node/staticFiles.ts","../../src/node/build.ts","../../src/cli/commands/build.ts","../../src/cli/commands/console.ts","../../src/node/develop.ts","../../src/cli/commands/develop.ts","../../src/cli/commands/generate.ts","../../src/cli/commands/report.ts","../../src/cli/commands/start.ts","../../src/cli/commands/version.ts","../../src/cli/utils/commander.ts","../../src/cli/utils/data-transfer.ts","../../src/cli/commands/export/action.ts","../../src/cli/commands/export/command.ts","../../src/cli/commands/import/action.ts","../../src/cli/commands/import/command.ts","../../src/cli/commands/transfer/action.ts","../../src/cli/commands/transfer/command.ts","../../src/cli/commands/index.ts","../../src/cli/utils/logger.ts","../../src/cli/utils/tsconfig.ts","../../src/cli/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport chalk from 'chalk';\nimport { has, isString, isArray } from 'lodash/fp';\nimport { prompt } from 'inquirer';\nimport boxen from 'boxen';\nimport type { Command } from 'commander';\n\n/**\n * Helper functions for the Strapi CLI\n */\nconst bytesPerKb = 1024;\nconst sizes = ['B ', 'KB', 'MB', 'GB', 'TB', 'PB'];\n\n/**\n * Convert bytes to a human readable formatted string, for example \"1024\" becomes \"1KB\"\n */\nconst readableBytes = (bytes: number, decimals = 1, padStart = 0) => {\n if (!bytes) {\n return '0';\n }\n const i = Math.floor(Math.log(bytes) / Math.log(bytesPerKb));\n const result = `${parseFloat((bytes / bytesPerKb ** i).toFixed(decimals))} ${sizes[i].padStart(\n 2\n )}`;\n\n return result.padStart(padStart);\n};\n\ninterface ExitWithOptions {\n logger?: Console;\n prc?: NodeJS.Process;\n}\n\n/**\n *\n * Display message(s) to console and then call process.exit with code.\n * If code is zero, console.log and green text is used for messages, otherwise console.error and red text.\n *\n */\nconst exitWith = (code: number, message?: string | string[], options: ExitWithOptions = {}) => {\n const { logger = console, prc = process } = options;\n\n const log = (message: string) => {\n if (code === 0) {\n logger.log(chalk.green(message));\n } else {\n logger.error(chalk.red(message));\n }\n };\n\n if (isString(message)) {\n log(message);\n } else if (isArray(message)) {\n message.forEach((msg) => log(msg));\n }\n\n prc.exit(code);\n};\n\n/**\n * assert that a URL object has a protocol value\n *\n */\nconst assertUrlHasProtocol = (url: URL, protocol?: string | string[]) => {\n if (!url.protocol) {\n exitWith(1, `${url.toString()} does not have a protocol`);\n }\n\n // if just checking for the existence of a protocol, return\n if (!protocol) {\n return;\n }\n\n if (isString(protocol)) {\n if (protocol !== url.protocol) {\n exitWith(1, `${url.toString()} must have the protocol ${protocol}`);\n }\n return;\n }\n\n // assume an array\n if (!protocol.some((protocol) => url.protocol === protocol)) {\n return exitWith(\n 1,\n `${url.toString()} must have one of the following protocols: ${protocol.join(',')}`\n );\n }\n};\n\ntype ConditionCallback = (opts: Record<string, any>) => Promise<boolean>;\ntype IsMetCallback = (command: Command) => Promise<void>;\ntype IsNotMetCallback = (command: Command) => Promise<void>;\n\n/**\n * Passes commander options to conditionCallback(). If it returns true, call isMetCallback otherwise call isNotMetCallback\n */\nconst ifOptions = (\n conditionCallback: ConditionCallback,\n isMetCallback: IsMetCallback = async () => {},\n isNotMetCallback: IsNotMetCallback = async () => {}\n) => {\n return async (command: Command) => {\n const opts = command.opts();\n if (await conditionCallback(opts)) {\n await isMetCallback(command);\n } else {\n await isNotMetCallback(command);\n }\n };\n};\n\nconst assertCwdContainsStrapiProject = (name: string) => {\n const logErrorAndExit = () => {\n console.log(\n `You need to run ${chalk.yellow(\n `strapi ${name}`\n )} in a Strapi project. Make sure you are in the right directory.`\n );\n process.exit(1);\n };\n\n try {\n const pkgJSON = require(`${process.cwd()}/package.json`);\n if (\n !has('dependencies.@strapi/strapi', pkgJSON) &&\n !has('devDependencies.@strapi/strapi', pkgJSON)\n ) {\n logErrorAndExit();\n }\n } catch (err) {\n logErrorAndExit();\n }\n};\n\nconst runAction =\n (name: string, action: (...args: any[]) => Promise<void>) =>\n (...args: unknown[]) => {\n assertCwdContainsStrapiProject(name);\n\n Promise.resolve()\n .then(() => {\n return action(...args);\n })\n .catch((error) => {\n console.error(error);\n process.exit(1);\n });\n };\n\n/**\n * @description Notify users this is an experimental command and get them to approve first\n * this can be opted out by passing `yes` as a property of the args object.\n *\n * @example\n * ```ts\n * const { notifyExperimentalCommand } = require('../utils/helpers');\n *\n * const myCommand = async ({ force }) => {\n * await notifyExperimentalCommand('plugin:build', { force });\n * }\n * ```\n */\nconst notifyExperimentalCommand = async (name: string, { force }: { force?: boolean } = {}) => {\n console.log(\n boxen(\n `The ${chalk.bold(\n chalk.underline(name)\n )} command is considered experimental, use at your own risk.`,\n {\n title: 'Warning',\n padding: 1,\n margin: 1,\n align: 'center',\n borderColor: 'yellow',\n borderStyle: 'bold',\n }\n )\n );\n\n if (!force) {\n const { confirmed } = await prompt({\n type: 'confirm',\n name: 'confirmed',\n message: 'Do you want to continue?',\n });\n\n if (!confirmed) {\n process.exit(0);\n }\n }\n};\n\nexport {\n exitWith,\n assertUrlHasProtocol,\n ifOptions,\n readableBytes,\n runAction,\n assertCwdContainsStrapiProject,\n notifyExperimentalCommand,\n};\n","import { createCommand } from 'commander';\nimport { yup } from '@strapi/utils';\nimport _ from 'lodash';\nimport inquirer from 'inquirer';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport { runAction } from '../../utils/helpers';\nimport type { StrapiCommand } from '../../types';\n\ninterface CmdOptions {\n email?: string;\n password?: string;\n firstname?: string;\n lastname?: string;\n}\n\nconst emailValidator = yup.string().email('Invalid email address').lowercase();\n\nconst passwordValidator = yup\n .string()\n .min(8, 'Password must be at least 8 characters long')\n .matches(/[a-z]/, 'Password must contain at least one lowercase character')\n .matches(/[A-Z]/, 'Password must contain at least one uppercase character')\n .matches(/\\d/, 'Password must contain at least one number');\n\nconst adminCreateSchema = yup.object().shape({\n email: emailValidator,\n password: passwordValidator,\n firstname: yup.string().trim().required('First name is required'),\n lastname: yup.string(),\n});\n\ninterface Answers {\n email: string;\n password: string;\n firstname: string;\n lastname: string;\n confirm: boolean;\n}\n\n/**\n * It's not an observable, in reality this is\n * `ReadOnlyArray<inquirer.DistinctQuestion<Answers>>`\n * but then the logic of the validate function needs to change.\n */\n// eslint-disable-next-line rxjs/finnish\nconst promptQuestions: inquirer.QuestionCollection<Answers> = [\n {\n type: 'input',\n name: 'email',\n message: 'Admin email?',\n async validate(value: string) {\n const validEmail = await emailValidator.validate(value);\n return validEmail === value || validEmail;\n },\n },\n {\n type: 'password',\n name: 'password',\n message: 'Admin password?',\n async validate(value: string) {\n const validPassword = await passwordValidator.validate(value);\n return validPassword === value || validPassword;\n },\n },\n { type: 'input', name: 'firstname', message: 'First name?' },\n { type: 'input', name: 'lastname', message: 'Last name?' },\n {\n type: 'confirm',\n name: 'confirm',\n message: 'Do you really want to create a new admin?',\n },\n];\n\nasync function createAdmin({ email, password, firstname, lastname }: CmdOptions) {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n const user = await app.admin!.services.user.exists({ email });\n\n if (user) {\n console.error(`User with email \"${email}\" already exists`);\n process.exit(1);\n }\n\n const superAdminRole = await app.admin!.services.role.getSuperAdmin();\n\n await app.admin!.services.user.create({\n email,\n firstname,\n lastname,\n isActive: true,\n roles: [superAdminRole.id],\n ...(password && { password, registrationToken: null }),\n });\n\n console.log(`Successfully created new admin`);\n process.exit(0);\n}\n\n/**\n * Create new admin user\n */\nconst action = async (cmdOptions: CmdOptions = {}) => {\n let { email, password, firstname, lastname } = cmdOptions;\n\n if (\n _.isEmpty(email) &&\n _.isEmpty(password) &&\n _.isEmpty(firstname) &&\n _.isEmpty(lastname) &&\n process.stdin.isTTY\n ) {\n const inquiry = await inquirer.prompt(promptQuestions);\n\n if (!inquiry.confirm) {\n process.exit(0);\n }\n\n ({ email, password, firstname, lastname } = inquiry);\n }\n\n try {\n await adminCreateSchema.validate({ email, password, firstname, lastname });\n } catch (err) {\n if (err instanceof yup.ValidationError) {\n console.error(err.errors[0]);\n }\n\n process.exit(1);\n }\n\n return createAdmin({ email, password, firstname, lastname });\n};\n\n/**\n * `$ strapi admin:create-user`\n */\nconst command: StrapiCommand = () => {\n return createCommand('admin:create-user')\n .alias('admin:create')\n .description('Create a new admin')\n .option('-e, --email <email>', 'Email of the new admin')\n .option('-p, --password <password>', 'Password of the new admin')\n .option('-f, --firstname <first name>', 'First name of the new admin')\n .option('-l, --lastname <last name>', 'Last name of the new admin')\n .action(runAction('admin:create-user', action));\n};\n\nexport { action, command };\n","import _ from 'lodash';\nimport inquirer from 'inquirer';\nimport { createCommand } from 'commander';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\ninterface CmdOptions {\n email?: string;\n password?: string;\n}\n\ninterface Answers {\n email: string;\n password: string;\n confirm: boolean;\n}\n\nconst promptQuestions: ReadonlyArray<inquirer.DistinctQuestion<Answers>> = [\n { type: 'input', name: 'email', message: 'User email?' },\n { type: 'password', name: 'password', message: 'New password?' },\n {\n type: 'confirm',\n name: 'confirm',\n message: \"Do you really want to reset this user's password?\",\n },\n];\n\nasync function changePassword({ email, password }: CmdOptions) {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n await app.admin!.services.user.resetPasswordByEmail(email, password);\n\n console.log(`Successfully reset user's password`);\n process.exit(0);\n}\n\n/**\n * Reset user's password\n */\nconst action = async (cmdOptions: CmdOptions = {}) => {\n const { email, password } = cmdOptions;\n\n if (_.isEmpty(email) && _.isEmpty(password) && process.stdin.isTTY) {\n const inquiry = await inquirer.prompt(promptQuestions);\n\n if (!inquiry.confirm) {\n process.exit(0);\n }\n\n return changePassword(inquiry);\n }\n\n if (_.isEmpty(email) || _.isEmpty(password)) {\n console.error('Missing required options `email` or `password`');\n process.exit(1);\n }\n\n return changePassword({ email, password });\n};\n\n/**\n * `$ strapi admin:reset-user-password`\n */\nconst command: StrapiCommand = () => {\n return createCommand('admin:reset-user-password')\n .alias('admin:reset-password')\n .description(\"Reset an admin user's password\")\n .option('-e, --email <email>', 'The user email')\n .option('-p, --password <password>', 'New password for the user')\n .action(runAction('admin:reset-user-password', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = Object.keys(app.components);\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi components:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('components:list')\n .description('List all the application components')\n .action(runAction('components:list', action));\n};\n\nexport { action, command };\n","import fs from 'fs';\nimport { createCommand } from 'commander';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\ninterface CmdOptions {\n file?: string;\n pretty?: boolean;\n}\n\ninterface ExportItem {\n key: string;\n value: string;\n type: string;\n environment: string;\n tag: string;\n}\n\ninterface Output {\n write(str: string): void;\n end(): void;\n}\n\nconst CHUNK_SIZE = 100;\n\n/**\n * Will dump configurations to a file or stdout\n * @param {string} file filepath to use as output\n */\nconst action = async ({ file: filePath, pretty }: CmdOptions) => {\n const output: Output = filePath ? fs.createWriteStream(filePath) : process.stdout;\n\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n const count = await app.query('strapi::core-store').count();\n\n const exportData: ExportItem[] = [];\n\n const pageCount = Math.ceil(count / CHUNK_SIZE);\n\n for (let page = 0; page < pageCount; page += 1) {\n const results = await app\n .query('strapi::core-store')\n .findMany({ limit: CHUNK_SIZE, offset: page * CHUNK_SIZE, orderBy: 'key' });\n\n results\n .filter((result) => result.key.startsWith('plugin_'))\n .forEach((result) => {\n exportData.push({\n key: result.key,\n value: result.value,\n type: result.type,\n environment: result.environment,\n tag: result.tag,\n });\n });\n }\n\n const str = JSON.stringify(exportData, null, pretty ? 2 : undefined);\n\n output.write(str);\n output.write('\\n');\n output.end();\n\n // log success only when writting to file\n if (filePath) {\n console.log(`Successfully exported ${exportData.length} configuration entries`);\n }\n process.exit(0);\n};\n\n/**\n * `$ strapi configuration:dump`\n */\nconst command: StrapiCommand = () => {\n return createCommand('configuration:dump')\n .alias('config:dump')\n .description('Dump configurations of your application')\n .option('-f, --file <file>', 'Output file, default output is stdout')\n .option('-p, --pretty', 'Format the output JSON with indentation and line breaks', false)\n .action(runAction('configuration:dump', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport fs from 'fs';\nimport _ from 'lodash';\nimport { createStrapi, compileStrapi } from '@strapi/core';\nimport type { Database } from '@strapi/database';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\ntype Strategy = 'replace' | 'merge' | 'keep';\n\ninterface CmdOptions {\n file?: string;\n strategy?: Strategy;\n}\n\n/**\n * Will restore configurations. It reads from a file or stdin\n */\nconst action = async ({ file: filePath, strategy = 'replace' }: CmdOptions) => {\n const input = filePath ? fs.readFileSync(filePath) : await readStdin();\n\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n let dataToImport;\n try {\n dataToImport = JSON.parse(_.toString(input));\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(`Invalid input data: ${error.message}. Expected a valid JSON array.`);\n }\n\n throw error;\n }\n\n if (!Array.isArray(dataToImport)) {\n throw new Error(`Invalid input data. Expected a valid JSON array.`);\n }\n\n if (!app.db) {\n throw new Error('Cannot import configuration without a database connection.');\n }\n\n const importer = createImporter(app.db, strategy);\n\n for (const config of dataToImport) {\n await importer.import(config);\n }\n\n console.log(\n `Successfully imported configuration with ${strategy} strategy. Statistics: ${importer.printStatistics()}.`\n );\n\n process.exit(0);\n};\n\nconst readStdin = () => {\n const { stdin } = process;\n let result = '';\n\n if (stdin.isTTY) return Promise.resolve(result);\n\n return new Promise((resolve, reject) => {\n stdin.setEncoding('utf8');\n stdin.on('readable', () => {\n let chunk;\n // eslint-disable-next-line no-cond-assign\n while ((chunk = stdin.read())) {\n result += chunk;\n }\n });\n\n stdin.on('end', () => {\n resolve(result);\n });\n\n stdin.on('error', reject);\n });\n};\n\nconst createImporter = (db: Database, strategy?: Strategy) => {\n switch (strategy) {\n case 'replace':\n return createReplaceImporter(db);\n case 'merge':\n return createMergeImporter(db);\n case 'keep':\n return createKeepImporter(db);\n default:\n throw new Error(`No importer available for strategy \"${strategy}\"`);\n }\n};\n\n/**\n * Replace importer. Will replace the keys that already exist and create the new ones\n */\nconst createReplaceImporter = (db: Database) => {\n const stats = {\n created: 0,\n replaced: 0,\n };\n\n return {\n printStatistics() {\n return `${stats.created} created, ${stats.replaced} replaced`;\n },\n\n async import(conf: Record<string, unknown>) {\n const matching = await db.query('strapi::core-store').count({ where: { key: conf.key } });\n if (matching > 0) {\n stats.replaced += 1;\n await db.query('strapi::core-store').update({\n where: { key: conf.key },\n data: conf,\n });\n } else {\n stats.created += 1;\n await db.query('strapi::core-store').create({ data: conf });\n }\n },\n };\n};\n\n/**\n * Merge importer. Will merge the keys that already exist with their new value and create the new ones\n */\nconst createMergeImporter = (db: Database) => {\n const stats = {\n created: 0,\n merged: 0,\n };\n\n return {\n printStatistics() {\n return `${stats.created} created, ${stats.merged} merged`;\n },\n\n async import(conf: Record<string, unknown>) {\n const existingConf = await db\n .query('strapi::core-store')\n .findOne({ where: { key: conf.key } });\n\n if (existingConf) {\n stats.merged += 1;\n await db.query('strapi::core-store').update({\n where: { key: conf.key },\n data: _.merge(existingConf, conf),\n });\n } else {\n stats.created += 1;\n await db.query('strapi::core-store').create({ data: conf });\n }\n },\n };\n};\n\n/**\n * Merge importer. Will keep the keys that already exist without changing them and create the new ones\n */\nconst createKeepImporter = (db: Database) => {\n const stats = {\n created: 0,\n untouched: 0,\n };\n\n return {\n printStatistics() {\n return `${stats.created} created, ${stats.untouched} untouched`;\n },\n\n async import(conf: Record<string, unknown>) {\n const matching = await db.query('strapi::core-store').count({ where: { key: conf.key } });\n if (matching > 0) {\n stats.untouched += 1;\n // if configuration already exists do not overwrite it\n return;\n }\n\n stats.created += 1;\n await db.query('strapi::core-store').create({ data: conf });\n },\n };\n};\n\n/**\n * `$ strapi configuration:restore`\n */\nconst command: StrapiCommand = () => {\n return createCommand('configuration:restore')\n .alias('config:restore')\n .description('Restore configurations of your application')\n .option('-f, --file <file>', 'Input file, default input is stdin')\n .option('-s, --strategy <strategy>', 'Strategy name, one of: \"replace\", \"merge\", \"keep\"')\n .action(runAction('configuration:restore', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\n\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('content-types').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi content-types:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('content-types:list')\n .description('List all the application content-types')\n .action(runAction('content-types:list', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\n\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('controllers').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi controllers:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('controllers:list')\n .description('List all the application controllers')\n .action(runAction('controllers:list', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('hooks').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi hooks:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('hooks:list')\n .description('List all the application hooks')\n .action(runAction('hooks:list', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('middlewares').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi middlewares:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('middlewares:list')\n .description('List all the application middlewares')\n .action(runAction('middlewares:list', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('policies').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi policies:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('policies:list')\n .description('List all the application policies')\n .action(runAction('policies:list', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { toUpper } from 'lodash/fp';\n\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n const list = app.server.mount().listRoutes();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Method'), chalk.blue('Path')],\n colWidths: [20],\n });\n\n list\n .filter((route) => route.methods.length)\n .forEach((route) => {\n infoTable.push([route.methods.map(toUpper).join('|'), route.path]);\n });\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi routes:list``\n */\nconst command: StrapiCommand = () => {\n return createCommand('routes:list')\n .description('List all the application routes')\n .action(runAction('routes:list', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('services').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi services:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('services:list')\n .description('List all the application services')\n .action(runAction('services:list', action));\n};\n\nexport { action, command };\n","import { machineID } from '@strapi/utils';\n\nexport const sendEvent = async (event: string, uuid: string) => {\n try {\n await fetch('https://analytics.strapi.io/api/v2/track', {\n method: 'POST',\n body: JSON.stringify({\n event,\n deviceId: machineID(),\n groupProperties: { projectId: uuid },\n }),\n headers: {\n 'Content-Type': 'application/json',\n 'X-Strapi-Event': event,\n },\n });\n } catch (e) {\n // ...\n }\n};\n","import { resolve } from 'path';\nimport fse from 'fs-extra';\nimport chalk from 'chalk';\nimport { createCommand } from 'commander';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\nimport { sendEvent } from '../../utils/telemetry';\n\nconst readPackageJSON = async (path: string) => {\n try {\n const packageObj = await fse.readJson(path);\n const uuid = packageObj.strapi ? packageObj.strapi.uuid : null;\n\n return { uuid, packageObj };\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n }\n }\n};\n\nconst writePackageJSON = async (path: string, file: object, spacing: number) => {\n try {\n await fse.writeJson(path, file, { spaces: spacing });\n return true;\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n }\n }\n};\n\nconst action = async () => {\n const packageJSONPath = resolve(process.cwd(), 'package.json');\n const exists = await fse.pathExists(packageJSONPath);\n\n if (!exists) {\n console.log(`${chalk.yellow('Warning')}: could not find package.json`);\n process.exit(0);\n }\n\n const { uuid, packageObj } = (await readPackageJSON(packageJSONPath)) ?? {};\n\n if ((packageObj.strapi && packageObj.strapi.telemetryDisabled) || !uuid) {\n console.log(`${chalk.yellow('Warning:')} telemetry is already disabled`);\n process.exit(0);\n }\n\n const updatedPackageJSON = {\n ...packageObj,\n strapi: {\n ...packageObj.strapi,\n telemetryDisabled: true,\n },\n };\n\n const write = await writePackageJSON(packageJSONPath, updatedPackageJSON, 2);\n\n if (!write) {\n console.log(\n `${chalk.yellow(\n 'Warning'\n )}: There has been an error, please set \"telemetryDisabled\": true in the \"strapi\" object of your package.json manually.`\n );\n process.exit(0);\n }\n\n await sendEvent('didOptOutTelemetry', uuid);\n console.log(`${chalk.green('Successfully opted out of Strapi telemetry')}`);\n process.exit(0);\n};\n\n/**\n * `$ strapi telemetry:disable`\n */\nconst command: StrapiCommand = () => {\n return createCommand('telemetry:disable')\n .description('Disable anonymous telemetry and metadata sending to Strapi analytics')\n .action(runAction('telemetry:disable', action));\n};\n\nexport { action, command };\n","import { resolve } from 'path';\nimport { randomUUID } from 'crypto';\nimport fse from 'fs-extra';\nimport chalk from 'chalk';\nimport { createCommand } from 'commander';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\nimport { sendEvent } from '../../utils/telemetry';\n\ntype PackageJson = {\n strapi?: {\n uuid?: string;\n telemetryDisabled?: boolean;\n };\n};\n\nconst readPackageJSON = async (path: string) => {\n try {\n const packageObj = await fse.readJson(path);\n return packageObj;\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n } else {\n throw err;\n }\n }\n};\n\nconst writePackageJSON = async (path: string, file: object, spacing: number) => {\n try {\n await fse.writeJson(path, file, { spaces: spacing });\n return true;\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n console.log(\n `${chalk.yellow(\n 'Warning'\n )}: There has been an error, please set \"telemetryDisabled\": false in the \"strapi\" object of your package.json manually.`\n );\n\n return false;\n }\n\n throw err;\n }\n};\n\nconst generateNewPackageJSON = (packageObj: PackageJson) => {\n if (!packageObj.strapi) {\n return {\n ...packageObj,\n strapi: {\n uuid: randomUUID(),\n telemetryDisabled: false,\n },\n };\n }\n return {\n ...packageObj,\n strapi: {\n ...packageObj.strapi,\n uuid: packageObj.strapi.uuid ? packageObj.strapi.uuid : randomUUID(),\n telemetryDisabled: false,\n },\n };\n};\n\nconst action = async () => {\n const packageJSONPath = resolve(process.cwd(), 'package.json');\n const exists = await fse.pathExists(packageJSONPath);\n\n if (!exists) {\n console.log(`${chalk.yellow('Warning')}: could not find package.json`);\n process.exit(0);\n }\n\n const packageObj = await readPackageJSON(packageJSONPath);\n\n if (packageObj.strapi && packageObj.strapi.uuid) {\n if (packageObj.strapi.telemetryDisabled === false) {\n console.log(`${chalk.yellow('Warning:')} telemetry is already enabled`);\n process.exit(0);\n }\n }\n\n const updatedPackageJSON = generateNewPackageJSON(packageObj);\n\n const write = await writePackageJSON(packageJSONPath, updatedPackageJSON, 2);\n\n if (!write) {\n process.exit(0);\n }\n\n await sendEvent('didOptInTelemetry', updatedPackageJSON.strapi.uuid);\n console.log(`${chalk.green('Successfully opted into and enabled Strapi telemetry')}`);\n process.exit(0);\n};\n\n/**\n * `$ strapi telemetry:enable`\n */\nconst command: StrapiCommand = () => {\n return createCommand('telemetry:enable')\n .description('Enable anonymous telemetry and metadata sending to Strapi analytics')\n .action(runAction('telemetry:enable', action));\n};\n\nexport { action, command };\n","import { createCommand } from 'commander';\n\nimport type { StrapiCommand } from '../../types';\n\n/**\n *`$ strapi templates:generate <directory>`\n */\nconst command: StrapiCommand = () => {\n return createCommand('templates:generate <directory>')\n .description('(deprecated) Generate template from Strapi project')\n .action(() => {\n console.warn('This command is deprecated and will be removed in the next major release.');\n console.warn('You can now copy an existing app and use it as a template.');\n });\n};\n\nexport { command };\n","import { createCommand } from 'commander';\nimport tsUtils from '@strapi/typescript-utils';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\ninterface CmdOptions {\n debug?: boolean;\n silent?: boolean;\n verbose?: boolean;\n outDir?: string;\n}\n\nconst action = async ({ debug, silent, verbose, outDir }: CmdOptions) => {\n if ((debug || verbose) && silent) {\n console.error('Flags conflict: both silent and debug mode are enabled, exiting...');\n process.exit(1);\n }\n\n const appContext = await compileStrapi({ ignoreDiagnostics: true });\n const app = await createStrapi(appContext).register();\n\n await tsUtils.generators.generate({\n strapi: app,\n pwd: appContext.appDir,\n rootDir: outDir ?? undefined,\n logger: {\n silent,\n debug,\n },\n artifacts: { contentTypes: true, components: true },\n });\n\n await app.destroy();\n};\n\n/**\n * `$ strapi ts:generate-types`\n */\nconst command: StrapiCommand = () => {\n return createCommand('ts:generate-types')\n .description(`Generate TypeScript typings for your schemas`)\n .option('-d, --debug', `Run the generation with debug messages`, false)\n .option('-s, --silent', `Run the generation silently, without any output`, false)\n .option(\n '-o, --out-dir <outDir>',\n 'Specify a relative root directory in which the definitions will be generated. Changing this value might break types exposed by Strapi that relies on generated types.'\n )\n .action(runAction('ts:generate-types', action));\n};\n\nexport { action, command };\n","/**\n * @description Supports the following managers:\n * – npm\n * – yarn\n * – pnpm\n */\nconst getPackageManager = () => {\n // Yes, the env var is lowercase - it is set by the package managers themselves\n const agent = process.env.npm_config_user_agent || '';\n\n if (agent.includes('yarn')) {\n return 'yarn';\n }\n\n if (agent.includes('pnpm')) {\n return 'pnpm';\n }\n\n // Both yarn and pnpm does a `npm/?` thing, thus the slightly different match here\n // Theoretically not needed since we check for yarn/pnpm above, but in case other\n // package managers do the same thing, we'll (hopefully) catch them here.\n if (/^npm\\/\\d/.test(agent)) {\n return 'npm';\n }\n\n return undefined;\n};\n\nexport { getPackageManager };\n","import os from 'node:os';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport semver, { SemVer } from 'semver';\nimport resolveFrom from 'resolve-from';\nimport execa, { CommonOptions, ExecaReturnValue } from 'execa';\nimport readPkgUp, { PackageJson } from 'read-pkg-up';\nimport type { BuildOptions } from '../build';\nimport { getPackageManager } from './managers';\n\n/**\n * From V5 this will be imported from the package.json of `@strapi/strapi`.\n */\nconst PEER_DEPS = {\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\ninterface CheckRequiredDependenciesResult {\n didInstall: boolean;\n}\n\ninterface DepToInstall {\n name: string;\n wantedVersion: string;\n declaredVersion?: never;\n}\n\n/**\n * Checks the user's project that it has declared and installed the required dependencies\n * needed by the Strapi admin project. Whilst generally speaking most modules will be\n * declared by the actual packages there are some packages where you only really want one of\n * and thus they are declared as peer dependencies – react / styled-components / etc.\n *\n * If these deps are not installed or declared, then we prompt the user to correct this. In\n * V4 this is not a hard requirement, but in V5 it will be. Might as well get people started now.\n */\nconst checkRequiredDependencies = async ({\n cwd,\n logger,\n}: Pick<BuildOptions, 'cwd' | 'logger'>): Promise<CheckRequiredDependenciesResult> => {\n /**\n * This enables us to use experimental deps for libraries like\n * react or styled-components. This is useful for testing against.\n */\n if (process.env.USE_EXPERIMENTAL_DEPENDENCIES === 'true') {\n logger.warn('You are using experimental dependencies that may not be compatible with Strapi.');\n return { didInstall: false };\n }\n\n const pkg = await readPkgUp({ cwd });\n\n if (!pkg) {\n throw new Error(`Could not find package.json at path: ${cwd}`);\n }\n\n logger.debug('Loaded package.json:', os.EOL, pkg.packageJson);\n\n interface DepToReview {\n name: string;\n wantedVersion: string;\n declaredVersion: string;\n }\n\n /**\n * Run through each of the peer deps and figure out if they need to be\n * installed or they need their version checked against.\n */\n const { install, review } = Object.entries(PEER_DEPS).reduce<{\n install: DepToInstall[];\n review: DepToReview[];\n }>(\n (acc, [name, version]) => {\n if (!pkg.packageJson.dependencies) {\n throw new Error(`Could not find dependencies in package.json at path: ${cwd}`);\n }\n\n const declaredVersion = pkg.packageJson.dependencies[name];\n\n if (!declaredVersion) {\n acc.install.push({\n name,\n wantedVersion: version,\n });\n } else {\n acc.review.push({\n name,\n wantedVersion: version,\n declaredVersion,\n });\n }\n\n return acc;\n },\n {\n install: [],\n review: [],\n }\n );\n\n if (install.length > 0) {\n logger.info(\n 'The Strapi admin needs to install the following dependencies:',\n os.EOL,\n install.map(({ name, wantedVersion }) => ` - ${name}@${wantedVersion}`).join(os.EOL)\n );\n\n await installDependencies(install, {\n cwd,\n logger,\n });\n\n const [file, ...args] = process.argv;\n\n /**\n * Re-run the same command after installation e.g. strapi build because the yarn.lock might\n * not be the same and could break installations. It's not the best solution, but it works.\n */\n await execa(file, args, { cwd, stdio: 'inherit' });\n return { didInstall: true };\n }\n\n if (review.length) {\n const errors: string[] = [];\n\n for (const dep of review) {\n // The version specified in package.json could be incorrect, eg `foo`\n let minDeclaredVersion: SemVer | null = null;\n try {\n minDeclaredVersion = semver.minVersion(dep.declaredVersion);\n } catch (err) {\n // Intentional fall-through (variable will be left as null, throwing below)\n }\n\n if (!minDeclaredVersion) {\n errors.push(\n `The declared dependency, ${dep.name} has an invalid version in package.json: ${dep.declaredVersion}`\n );\n } else if (!semver.satisfies(minDeclaredVersion, dep.wantedVersion)) {\n /**\n * The delcared version should be semver compatible with our required version\n * of the dependency. If it's not, we should advise the user to change it.\n */\n logger.warn(\n [\n `Declared version of ${dep.name} (${minDeclaredVersion}) is not compatible with the version required by Strapi (${dep.wantedVersion}).`,\n 'You may experience issues, we recommend you change this.',\n ].join(os.EOL)\n );\n }\n\n const installedVersion = await getModuleVersion(dep.name, cwd);\n\n if (!installedVersion) {\n /**\n * TODO: when we know the packageManager we can advise the actual install command.\n */\n errors.push(\n `The declared dependency, ${dep.name} is not installed. You should install before re-running this command`\n );\n } else if (!semver.satisfies(installedVersion, dep.wantedVersion)) {\n logger.warn(\n [\n `Declared version of ${dep.name} (${installedVersion}) is not compatible with the version required by Strapi (${dep.wantedVersion}).`,\n 'You may experience issues, we recommend you change this.',\n ].join(os.EOL)\n );\n }\n }\n\n if (errors.length > 0 && process.env.NODE_ENV === 'development') {\n throw new Error(`${os.EOL}- ${errors.join(`${os.EOL}- `)}`);\n }\n }\n\n return { didInstall: false };\n};\n\nconst getModule = async (name: string, cwd: string): Promise<PackageJson | null> => {\n const modulePackagePath = resolveFrom.silent(cwd, path.join(name, 'package.json'));\n if (!modulePackagePath) {\n return null;\n }\n const file = await fs.readFile(modulePackagePath, 'utf8').then((res) => JSON.parse(res));\n\n return file;\n};\n\nconst getModuleVersion = async (name: string, cwd: string): Promise<string | null> => {\n const pkg = await getModule(name, cwd);\n\n return pkg?.version || null;\n};\n\nconst installDependencies = async (\n install: DepToInstall[],\n { cwd, logger }: Pick<BuildOptions, 'cwd' | 'logger'>\n) => {\n const packageManager = getPackageManager();\n\n if (!packageManager) {\n logger.error(\n 'Could not find a supported package manager, please install the dependencies manually.'\n );\n process.exit(1);\n }\n\n const execOptions: CommonOptions<'utf8'> = {\n encoding: 'utf8',\n cwd,\n stdio: 'inherit',\n };\n\n const packages = install.map(({ name, wantedVersion }) => `${name}@${wantedVersion}`);\n\n let result: ExecaReturnValue<string> | undefined;\n\n if (packageManager === 'npm') {\n const npmArgs = ['install', '--legacy-peer-deps', '--save', ...packages];\n logger.info(`Running 'npm ${npmArgs.join(' ')}'`);\n result = await execa('npm', npmArgs, execOptions);\n } else if (packageManager === 'yarn') {\n const yarnArgs = ['add', ...packages];\n logger.info(`Running 'yarn ${yarnArgs.join(' ')}'`);\n result = await execa('yarn', yarnArgs, execOptions);\n } else if (packageManager === 'pnpm') {\n const pnpmArgs = ['add', '--save-prod', ...packages];\n logger.info(`Running 'pnpm ${pnpmArgs.join(' ')}'`);\n result = await execa('pnpm', pnpmArgs, execOptions);\n }\n\n if (result?.exitCode || result?.failed) {\n throw new Error('Package installation failed');\n }\n};\n\nexport { checkRequiredDependencies, getModule };\nexport type { CheckRequiredDependenciesResult, PackageJson };\n","import { performance } from 'perf_hooks';\n\nexport interface TimeMeasurer {\n start: (name: string) => void;\n end: (name: string) => number;\n getTimings: () => Record<string, number>;\n}\n\nexport function getTimer(): TimeMeasurer {\n const timings: Record<string, number> = {};\n const startTimes: Record<string, number> = {};\n\n function start(name: string): void {\n if (typeof startTimes[name] !== 'undefined') {\n throw new Error(`Timer \"${name}\" already started, cannot overwrite`);\n }\n\n startTimes[name] = performance.now();\n }\n\n function end(name: string): number {\n if (typeof startTimes[name] === 'undefined') {\n throw new Error(`Timer \"${name}\" never started, cannot end`);\n }\n\n timings[name] = performance.now() - startTimes[name];\n return timings[name];\n }\n\n return { start, end, getTimings: () => timings };\n}\n\nexport const prettyTime = (timeInMs: number): string => {\n return `${Math.ceil(timeInMs)}ms`;\n};\n","import path from 'node:path';\nimport { access } from 'node:fs/promises';\nimport { register } from 'esbuild-register/dist/node';\n\n/**\n * @internal\n */\nconst pathExists = async (path: string) => {\n try {\n await access(path);\n return true;\n } catch (error) {\n return false;\n }\n};\n\n/**\n * @internal\n */\nconst loadFile = async (path: string): Promise<undefined | any> => {\n if (await pathExists(path)) {\n const esbuildOptions: Parameters<typeof register>[0] = {\n extensions: ['.js', '.mjs', '.ts'],\n };\n\n const { unregister } = register(esbuildOptions);\n\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(path);\n\n unregister();\n\n /**\n * handles esm or cjs exporting.\n */\n const file = mod?.default || mod || undefined;\n\n return file;\n }\n\n return undefined;\n};\n\n/**\n * @internal\n *\n * @description Converts a system path to a module path mainly for `Windows` systems.\n * where the path separator is `\\` instead of `/`, on linux systems the path separator\n * is identical to the module path separator.\n */\nconst convertSystemPathToModulePath = (sysPath: string) => {\n if (process.platform === 'win32') {\n return sysPath.split(path.sep).join(path.posix.sep);\n }\n\n return sysPath;\n};\n\n/**\n * @internal\n *\n * @description Converts a module path to a system path, again largely used for Windows systems.\n * The original use case was plugins where the resolve path was in module format but we want to\n * have it relative to the runtime directory.\n */\nconst convertModulePathToSystemPath = (modulePath: string) => {\n if (process.platform === 'win32') {\n return modulePath.split(path.posix.sep).join(path.sep);\n }\n\n return modulePath;\n};\n\nexport { pathExists, loadFile, convertSystemPathToModulePath, convertModulePathToSystemPath };\n","import path from 'node:path';\nimport dotenv from 'dotenv';\nimport { pathExists } from './files';\n\n/**\n * This is the base of _any_ env set for a strapi project,\n * to build a strapi admin panel we require these env variables.\n */\ninterface DefaultEnv {\n ADMIN_PATH: string;\n STRAPI_ADMIN_BACKEND_URL: string;\n STRAPI_TELEMETRY_DISABLED: string;\n}\n\n/**\n * @internal\n *\n * @description Load the .env file if it exists\n */\nconst loadEnv = async (cwd: string) => {\n const pathToEnv = path.resolve(cwd, '.env');\n\n if (await pathExists(pathToEnv)) {\n dotenv.config({ path: pathToEnv });\n }\n};\n\n/**\n * @internal\n *\n * @description Get all the environment variables that start with `STRAPI_ADMIN_`\n */\nconst getStrapiAdminEnvVars = (defaultEnv: DefaultEnv): Record<string, string> => {\n return Object.keys(process.env)\n .filter((key) => key.toUpperCase().startsWith('STRAPI_ADMIN_'))\n .reduce(\n (acc, key) => {\n acc[key] = process.env[key] as string;\n\n return acc;\n },\n defaultEnv as unknown as Record<string, string>\n );\n};\n\nexport { getStrapiAdminEnvVars, loadEnv };\n","import boxen from 'boxen';\nimport chalk from 'chalk';\nimport os from 'node:os';\nimport { errors } from '@strapi/utils';\n\nconst isError = (err: unknown): err is Error => err instanceof Error;\n\n/**\n * @description Handle unexpected errors. No, but really, your CLI should anticipate error cases.\n * If a user hits an error we don't expect, then we need to flag to them that this is not normal\n * and they should use the `--debug` flag to get more information (assuming you've implemented this\n * in your action).\n */\nconst handleUnexpectedError = (err: unknown) => {\n console.error(\n chalk.red(\n `[ERROR] `,\n 'There seems to be an unexpected error, try again with --debug for more information',\n os.EOL\n )\n );\n\n if (isError(err) && err.stack) {\n // eslint-disable-next-line no-console\n console.log(\n chalk.red(\n boxen(err.stack, {\n padding: 1,\n align: 'left',\n })\n )\n );\n }\n\n if (err instanceof errors.YupValidationError) {\n const message = [];\n const size = err.details.errors.length;\n\n for (const error of err.details.errors) {\n // No need to repeat the error message as it's the same as the err.message\n if (size === 1) {\n message.push(` value: ${error.value}`);\n continue;\n }\n\n message.push(\n [` [${error.name}]`, ` message: ${error.message}`, ` value: ${error.value}`].join(\n '\\n'\n )\n );\n }\n\n console.log(\n chalk.red(\n boxen(['Details:', message.join('\\n\\n')].join('\\n'), {\n padding: 1,\n align: 'left',\n })\n )\n );\n }\n\n process.exit(1);\n};\n\nexport { handleUnexpectedError, isError };\n","import os from 'node:os';\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport camelCase from 'lodash/camelCase';\nimport { env } from '@strapi/utils';\nimport { getModule, PackageJson } from './dependencies';\nimport { convertModulePathToSystemPath, convertSystemPathToModulePath, loadFile } from './files';\nimport type { BaseContext } from '../types';\nimport { isError } from './errors';\n\ninterface LocalPluginMeta {\n name: string;\n /**\n * camelCased version of the plugin name\n */\n importName: string;\n /**\n * The path to the plugin, relative to the app's root directory\n * in system format\n */\n path: string;\n /**\n * The path to the plugin, relative to the runtime directory\n * in module format (i.e. with forward slashes) because thats\n * where it should be used as an import\n */\n modulePath: string;\n type: 'local';\n}\n\ninterface ModulePluginMeta {\n name: string;\n /**\n * camelCased version of the plugin name\n */\n importName: string;\n /**\n * Modules don't have a path because we never resolve them to their node_modules\n * because we simply do not require it.\n */\n path?: never;\n /**\n * The path to the plugin, relative to the app's root directory\n * in module format (i.e. with forward slashes)\n */\n modulePath: string;\n type: 'module';\n}\n\ntype PluginMeta = LocalPluginMeta | ModulePluginMeta;\n\ninterface StrapiPlugin extends PackageJson {\n strapi: {\n description?: string;\n displayName?: string;\n kind: 'plugin';\n name?: string;\n required?: boolean;\n };\n}\n\nconst validatePackageHasStrapi = (\n pkg: PackageJson\n): pkg is PackageJson & { strapi: Record<string, unknown> } =>\n 'strapi' in pkg &&\n typeof pkg.strapi === 'object' &&\n !Array.isArray(pkg.strapi) &&\n pkg.strapi !== null;\n\nconst validatePackageIsPlugin = (pkg: PackageJson): pkg is StrapiPlugin =>\n validatePackageHasStrapi(pkg) && pkg.strapi.kind === 'plugin';\n\nconst getEnabledPlugins = async ({\n cwd,\n logger,\n runtimeDir,\n strapi,\n}: Pick<BaseContext, 'cwd' | 'logger' | 'strapi' | 'runtimeDir'>): Promise<\n Record<string, PluginMeta>\n> => {\n const plugins: Record<string, PluginMeta> = {};\n\n /**\n * This is the list of dependencies that are installed in the user's project.\n * It will include libraries like \"react\", so we need to collect the ones that\n * are plugins.\n */\n const deps = strapi.config.get('info.dependencies', {});\n\n logger.debug(\"Dependencies from user's project\", os.EOL, deps);\n\n for (const dep of Object.keys(deps)) {\n const pkg = await getModule(dep, cwd);\n\n if (pkg && validatePackageIsPlugin(pkg)) {\n const name = pkg.strapi.name || pkg.name;\n\n if (!name) {\n /**\n * Unlikely to happen, but you never know.\n */\n throw Error(\n \"You're trying to import a plugin that doesn't have a name – check the package.json of that plugin!\"\n );\n }\n\n plugins[name] = {\n name,\n importName: camelCase(name),\n type: 'module',\n modulePath: dep,\n };\n }\n }\n\n const userPluginsFile = await loadUserPluginsFile(strapi.dirs.app.config);\n\n logger.debug(\"User's plugins file\", os.EOL, userPluginsFile);\n\n for (const [userPluginName, userPluginConfig] of Object.entries(userPluginsFile)) {\n if (userPluginConfig.enabled && userPluginConfig.resolve) {\n const sysPath = convertModulePathToSystemPath(userPluginConfig.resolve);\n plugins[userPluginName] = {\n name: userPluginName,\n importName: camelCase(userPluginName),\n type: 'local',\n /**\n * User plugin paths are resolved from the entry point\n * of the app, because that's how you import them.\n */\n modulePath: convertSystemPathToModulePath(path.relative(runtimeDir, sysPath)),\n path: sysPath,\n };\n }\n }\n\n return plugins;\n};\n\nconst PLUGIN_CONFIGS = ['plugins.js', 'plugins.mjs', 'plugins.ts'];\n\ntype UserPluginConfigFile = Record<string, { enabled: boolean; resolve: string }>;\n\nconst loadUserPluginsFile = async (root: string): Promise<UserPluginConfigFile> => {\n for (const file of PLUGIN_CONFIGS) {\n const filePath = path.join(root, file);\n const configFile = await loadFile(filePath);\n\n if (configFile) {\n /**\n * Configs can be a function or they can be just an object!\n */\n return typeof configFile === 'function' ? configFile({ env }) : configFile;\n }\n }\n\n return {};\n};\n\nconst getMapOfPluginsWithAdmin = (plugins: Record<string, PluginMeta>) => {\n /**\n * This variable stores the import paths for plugins.\n * The keys are the module paths of the plugins, and the values are the paths\n * to the admin part of the plugins, which is either loaded from the\n * package.json exports or from the legacy strapi-admin.js file.\n */\n const pluginImportPaths: Record<string, string> = {};\n\n return Object.values(plugins)\n .filter((plugin) => {\n if (!plugin) {\n return false;\n }\n\n /**\n * There are two ways a plugin should be imported, either it's local to the strapi app,\n * or it's an actual npm module that's installed and resolved via node_modules.\n *\n * We first check if the plugin is local to the strapi app, using a regular `fs.existsSync` because\n * the pathToPlugin will be relative i.e. `/Users/my-name/strapi-app/src/plugins/my-plugin`.\n *\n * If the file doesn't exist well then it's probably a node_module, so instead we use `require.resolve`\n * which will resolve the path to the module in node_modules. If it fails with the specific code `MODULE_NOT_FOUND`\n * then it doesn't have an admin part to the package.\n */\n try {\n const localPluginPath = plugin.path;\n if (localPluginPath) {\n // Here we are loading a locally installed plugin\n const packageJsonPath = path.join(localPluginPath, 'package.json');\n\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));\n const localAdminPath = packageJson?.exports?.['./strapi-admin']?.import;\n\n if (localAdminPath) {\n pluginImportPaths[plugin.modulePath] = localAdminPath;\n return true;\n }\n }\n\n // Check if legacy admin file exists in local plugin\n if (fs.existsSync(path.join(localPluginPath, 'strapi-admin.js'))) {\n pluginImportPaths[plugin.modulePath] = 'strapi-admin';\n return true;\n }\n }\n\n // This plugin is a module, so we need to check if it has a strapi-admin export\n if (require.resolve(`${plugin.modulePath}/strapi-admin`)) {\n pluginImportPaths[plugin.modulePath] = 'strapi-admin';\n return true;\n }\n\n return false;\n } catch (err) {\n if (\n isError(err) &&\n 'code' in err &&\n (err.code === 'MODULE_NOT_FOUND' || err.code === 'ERR_PACKAGE_PATH_NOT_EXPORTED')\n ) {\n /**\n * the plugin does not contain FE code, so we\n * don't want to import it anyway\n */\n return false;\n }\n\n throw err;\n }\n })\n .map((plugin) => ({\n ...plugin,\n modulePath: `${plugin.modulePath}/${pluginImportPaths[plugin.modulePath]}`,\n }));\n};\n\nexport { getEnabledPlugins, getMapOfPluginsWithAdmin };\nexport type { PluginMeta, LocalPluginMeta, ModulePluginMeta };\n","import path from 'node:path';\nimport { convertSystemPathToModulePath, pathExists } from './files';\nimport type { BaseContext } from '../types';\n\nconst ADMIN_APP_FILES = ['app.js', 'app.mjs', 'app.ts', 'app.jsx', 'app.tsx'];\n\ninterface AdminCustomisations {\n config?: {\n locales?: string[];\n };\n bootstrap?: (...args: any[]) => any;\n}\n\ninterface AppFile {\n /**\n * The system path to the file\n */\n path: string;\n /**\n * The module path to the file i.e. how you would import it\n */\n modulePath: string;\n}\n\nconst loadUserAppFile = async ({\n runtimeDir,\n appDir,\n}: Pick<BaseContext, 'appDir' | 'runtimeDir'>): Promise<AppFile | undefined> => {\n for (const file of ADMIN_APP_FILES) {\n const filePath = path.join(appDir, 'src', 'admin', file);\n\n if (await pathExists(filePath)) {\n return {\n path: filePath,\n modulePath: convertSystemPathToModulePath(path.relative(runtimeDir, filePath)),\n };\n }\n }\n\n return undefined;\n};\n\nexport { loadUserAppFile };\nexport type { AdminCustomisations, AppFile };\n","import os from 'node:os';\nimport path from 'node:path';\nimport fs from 'node:fs/promises';\nimport browserslist from 'browserslist';\nimport { createStrapi } from '@strapi/core';\nimport type { Core, Modules } from '@strapi/types';\nimport type { Server } from 'node:http';\n\nimport type { CLIContext } from '../cli/types';\nimport { getStrapiAdminEnvVars, loadEnv } from './core/env';\n\nimport { PluginMeta, getEnabledPlugins, getMapOfPluginsWithAdmin } from './core/plugins';\nimport { AppFile, loadUserAppFile } from './core/admin-customisations';\nimport type { BaseContext } from './types';\n\ninterface BaseOptions {\n stats?: boolean;\n minify?: boolean;\n sourcemaps?: boolean;\n bundler?: 'webpack' | 'vite';\n open?: boolean;\n hmrServer?: Server;\n hmrClientPort?: number;\n}\n\ninterface BuildContext<TOptions = unknown> extends BaseContext {\n /**\n * The customisations defined by the user in their app.js file\n */\n customisations?: AppFile;\n /**\n * Features object with future flags\n */\n features?: Modules.Features.FeaturesService['config'];\n /**\n * The build options\n */\n options: BaseOptions & TOptions;\n /**\n * The plugins to be included in the JS bundle\n * incl. internal plugins, third party plugins & local plugins\n */\n plugins: PluginMeta[];\n}\n\ninterface CreateBuildContextArgs<TOptions = unknown> extends CLIContext {\n strapi?: Core.Strapi;\n options?: TOptions;\n}\n\nconst DEFAULT_BROWSERSLIST = [\n 'last 3 major versions',\n 'Firefox ESR',\n 'last 2 Opera versions',\n 'not dead',\n];\n\nconst createBuildContext = async <TOptions extends BaseOptions>({\n cwd,\n logger,\n tsconfig,\n strapi,\n options = {} as TOptions,\n}: CreateBuildContextArgs<TOptions>): Promise<BuildContext<TOptions>> => {\n /**\n * If you make a new strapi instance when one already exists,\n * you will overwrite the global and the app will _most likely_\n * crash and die.\n */\n const strapiInstance =\n strapi ??\n createStrapi({\n // Directories\n appDir: cwd,\n distDir: tsconfig?.config.options.outDir ?? '',\n // Options\n autoReload: true,\n serveAdminPanel: false,\n });\n\n const serverAbsoluteUrl = strapiInstance.config.get<string>('server.absoluteUrl');\n const adminAbsoluteUrl = strapiInstance.config.get<string>('admin.absoluteUrl');\n const adminPath = strapiInstance.config.get<string>('admin.path');\n\n // NOTE: Checks that both the server and admin will be served from the same origin (protocol, host, port)\n const sameOrigin = new URL(adminAbsoluteUrl).origin === new URL(serverAbsoluteUrl).origin;\n\n const adminPublicPath = new URL(adminAbsoluteUrl).pathname;\n const serverPublicPath = new URL(serverAbsoluteUrl).pathname;\n\n const appDir = strapiInstance.dirs.app.root;\n\n await loadEnv(cwd);\n\n const env = getStrapiAdminEnvVars({\n ADMIN_PATH: adminPublicPath,\n STRAPI_ADMIN_BACKEND_URL: sameOrigin ? serverPublicPath : serverAbsoluteUrl,\n STRAPI_TELEMETRY_DISABLED: String(strapiInstance.telemetry.isDisabled),\n });\n\n const envKeys = Object.keys(env);\n\n if (envKeys.length > 0) {\n logger.info(\n [\n 'Including the following ENV variables as part of the JS bundle:',\n ...envKeys.map((key) => ` - ${key}`),\n ].join(os.EOL)\n );\n }\n\n const distPath = path.join(strapiInstance.dirs.dist.root, 'build');\n const distDir = path.relative(cwd, distPath);\n\n /**\n * If the distPath already exists, clean it\n */\n try {\n logger.debug(`Cleaning dist folder: ${distPath}`);\n await fs.rm(distPath, { recursive: true, force: true });\n logger.debug('Cleaned dist folder');\n } catch {\n // do nothing, it will fail if the folder does not exist\n logger.debug('There was no dist folder to clean');\n }\n\n const runtimeDir = path.join(cwd, '.strapi', 'client');\n const entry = path.relative(cwd, path.join(runtimeDir, 'app.js'));\n\n const plugins = await getEnabledPlugins({ cwd, logger, runtimeDir, strapi: strapiInstance });\n\n logger.debug('Enabled plugins', os.EOL, plugins);\n\n const pluginsWithFront = getMapOfPluginsWithAdmin(plugins);\n\n logger.debug('Enabled plugins with FE', os.EOL, pluginsWithFront);\n\n const target = browserslist.loadConfig({ path: cwd }) ?? DEFAULT_BROWSERSLIST;\n\n const customisations = await loadUserAppFile({ appDir, runtimeDir });\n\n const features = strapiInstance.config.get('features', undefined);\n\n const { bundler = 'vite', ...restOptions } = options;\n\n const buildContext = {\n appDir,\n adminPath,\n basePath: adminPublicPath,\n bundler,\n customisations,\n cwd,\n distDir,\n distPath,\n entry,\n env,\n features,\n logger,\n options: restOptions as BaseOptions & TOptions,\n plugins: pluginsWithFront,\n runtimeDir,\n strapi: strapiInstance,\n target,\n tsconfig,\n } satisfies BuildContext<TOptions>;\n\n return buildContext;\n};\n\nexport { createBuildContext };\nexport type { BuildContext, CreateBuildContextArgs };\n","import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport outdent from 'outdent';\nimport { createElement } from 'react';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport { DefaultDocument } from '@strapi/admin/_internal';\n\nimport type { BuildContext } from './create-build-context';\n\nconst getEntryModule = (ctx: BuildContext): string => {\n const pluginsObject = ctx.plugins\n .map(({ name, importName }) => `'${name}': ${importName}`)\n .join(',\\n');\n\n const pluginsImport = ctx.plugins\n .map(({ importName, modulePath }) => `import ${importName} from '${modulePath}';`)\n .join('\\n');\n\n return outdent`\n /**\n * This file was automatically generated by Strapi.\n * Any modifications made will be discarded.\n */\n ${pluginsImport}\n import { renderAdmin } from \"@strapi/strapi/admin\"\n\n ${\n ctx.customisations?.modulePath\n ? `import customisations from '${ctx.customisations.modulePath}'`\n : ''\n }\n\n renderAdmin(\n document.getElementById(\"strapi\"),\n {\n ${ctx.customisations?.modulePath ? 'customisations,' : ''}\n ${ctx.features ? `features: ${JSON.stringify(ctx.features)},` : ''}\n plugins: {\n ${pluginsObject}\n }\n })\n `;\n};\n\ninterface GetDocumentHTMLArgs extends Pick<BuildContext, 'logger'> {\n props?: {\n entryPath?: string;\n };\n}\n\n/**\n * TODO: Here in the future we could add the ability\n * to load a user's Document component?\n */\nconst getDocumentHTML = ({ logger, props = {} }: GetDocumentHTMLArgs) => {\n const result = renderToStaticMarkup(createElement(DefaultDocument, props));\n logger.debug('Rendered the HTML');\n\n return outdent`<!DOCTYPE html>${result}`;\n};\n\nconst AUTO_GENERATED_WARNING = `\nThis file was automatically generated by Strapi.\nAny modifications made will be discarded.\n`.trim();\n\n/**\n * Because we now auto-generate the index.html file,\n * we should be clear that people _should not_ modify it.\n *\n * @internal\n */\nconst decorateHTMLWithAutoGeneratedWarning = (htmlTemplate: string): string =>\n htmlTemplate.replace(/<head/, `\\n<!--\\n${AUTO_GENERATED_WARNING}\\n-->\\n<head`);\n\nconst writeStaticClientFiles = async (ctx: BuildContext) => {\n const prettier = await import('prettier'); // ESM-only\n\n /**\n * For everything to work effectively we create a client folder in `.strapi` at the cwd level.\n * We then use the function we need to \"createAdmin\" as well as generate the Document index.html as well.\n *\n * All this links together an imaginary \"src/index\" that then allows vite to correctly build the admin panel.\n */\n\n await fs.mkdir(ctx.runtimeDir, { recursive: true });\n ctx.logger.debug('Created the runtime directory');\n\n const indexHtml = decorateHTMLWithAutoGeneratedWarning(\n await getDocumentHTML({\n logger: ctx.logger,\n props:\n ctx.bundler === 'vite'\n ? {\n entryPath: `/${ctx.entry}`,\n }\n : undefined,\n })\n );\n\n await fs.writeFile(\n path.join(ctx.runtimeDir, 'index.html'),\n await prettier.format(indexHtml, {\n parser: 'html',\n })\n );\n ctx.logger.debug('Wrote the index.html file');\n await fs.writeFile(\n path.join(ctx.runtimeDir, 'app.js'),\n await prettier.format(getEntryModule(ctx), {\n parser: 'babel',\n })\n );\n ctx.logger.debug('Wrote the app.js file');\n};\n\nexport { writeStaticClientFiles, getDocumentHTML };\n","import * as tsUtils from '@strapi/typescript-utils';\nimport type { CLIContext } from '../cli/types';\nimport { checkRequiredDependencies } from './core/dependencies';\nimport { getTimer, prettyTime } from './core/timer';\nimport { createBuildContext } from './create-build-context';\nimport { writeStaticClientFiles } from './staticFiles';\n\ninterface BuildOptions extends CLIContext {\n /**\n * Which bundler to use for building.\n *\n * @default webpack\n */\n bundler?: 'webpack' | 'vite';\n /**\n * Minify the output\n *\n * @default true\n */\n minify?: boolean;\n /**\n * Generate sourcemaps – useful for debugging bugs in the admin panel UI.\n */\n sourcemaps?: boolean;\n /**\n * Print stats for build\n */\n stats?: boolean;\n}\n\n/**\n * @example `$ strapi build`\n *\n * @description Builds the admin panel of the strapi application.\n */\nconst build = async ({ logger, cwd, tsconfig, ...options }: BuildOptions) => {\n const timer = getTimer();\n\n const { didInstall } = await checkRequiredDependencies({ cwd, logger }).catch((err) => {\n logger.error(err.message);\n process.exit(1);\n });\n\n if (didInstall) {\n return;\n }\n\n if (tsconfig?.config) {\n timer.start('compilingTS');\n const compilingTsSpinner = logger.spinner(`Compiling TS`).start();\n\n tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: false } });\n\n const compilingDuration = timer.end('compilingTS');\n compilingTsSpinner.text = `Compiling TS (${prettyTime(compilingDuration)})`;\n compilingTsSpinner.succeed();\n }\n\n timer.start('createBuildContext');\n const contextSpinner = logger.spinner(`Building build context`).start();\n console.log('');\n\n const ctx = await createBuildContext({\n cwd,\n logger,\n tsconfig,\n options,\n });\n\n const contextDuration = timer.end('createBuildContext');\n contextSpinner.text = `Building build context (${prettyTime(contextDuration)})`;\n contextSpinner.succeed();\n\n timer.start('buildAdmin');\n const buildingSpinner = logger.spinner(`Building admin panel`).start();\n console.log('');\n\n try {\n await writeStaticClientFiles(ctx);\n\n if (ctx.bundler === 'webpack') {\n const { build: buildWebpack } = await import('./webpack/build');\n await buildWebpack(ctx);\n } else if (ctx.bundler === 'vite') {\n const { build: buildVite } = await import('./vite/build');\n await buildVite(ctx);\n }\n\n const buildDuration = timer.end('buildAdmin');\n buildingSpinner.text = `Building admin panel (${prettyTime(buildDuration)})`;\n buildingSpinner.succeed();\n } catch (err) {\n buildingSpinner.fail();\n throw err;\n }\n};\n\nexport { build };\nexport type { BuildOptions };\n","import { createCommand } from 'commander';\nimport type { StrapiCommand } from '../types';\n\nimport { build as nodeBuild, BuildOptions } from '../../node/build';\nimport { handleUnexpectedError } from '../../node/core/errors';\n\ntype BuildCLIOptions = BuildOptions;\n\nconst action = async (options: BuildCLIOptions) => {\n try {\n if (options.bundler === 'webpack') {\n options.logger.warn(\n '[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.'\n );\n }\n\n await nodeBuild(options);\n } catch (err) {\n handleUnexpectedError(err);\n }\n};\n\n/**\n * `$ strapi build`\n */\nconst command: StrapiCommand = ({ ctx }) => {\n return createCommand('build')\n .option('--bundler [bundler]', 'Bundler to use (webpack or vite)', 'vite')\n .option('-d, --debug', 'Enable debugging mode with verbose logs', false)\n .option('--minify', 'Minify the output', true)\n .option('--silent', \"Don't log anything\", false)\n .option('--sourcemap', 'Produce sourcemaps', false)\n .option('--stats', 'Print build statistics to the console', false)\n .description('Build the strapi admin app')\n .action(async (options: BuildCLIOptions) => {\n return action({ ...options, ...ctx });\n });\n};\n\nexport { command };\n","import REPL from 'repl';\nimport { createCommand } from 'commander';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../types';\nimport { runAction } from '../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n app.start().then(() => {\n const repl = REPL.start(app.config.info.name + ' > ' || 'strapi > '); // eslint-disable-line prefer-template\n\n repl.on('exit', (err: Error) => {\n if (err) {\n app.log.error(err);\n process.exit(1);\n }\n\n app.server.destroy();\n process.exit(0);\n });\n });\n};\n\n/**\n * `$ strapi console`\n */\nconst command: StrapiCommand = () => {\n return createCommand('console')\n .description('Open the Strapi framework console')\n .action(runAction('console', action));\n};\n\nexport { action, command };\n","import * as tsUtils from '@strapi/typescript-utils';\nimport { strings } from '@strapi/utils';\nimport chokidar from 'chokidar';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport cluster from 'node:cluster';\nimport { createStrapi } from '@strapi/core';\n\nimport type { CLIContext } from '../cli/types';\nimport { checkRequiredDependencies } from './core/dependencies';\nimport { getTimer, prettyTime, type TimeMeasurer } from './core/timer';\nimport { createBuildContext } from './create-build-context';\nimport type { WebpackWatcher } from './webpack/watch';\nimport type { ViteWatcher } from './vite/watch';\n\nimport { writeStaticClientFiles } from './staticFiles';\n\ninterface DevelopOptions extends CLIContext {\n /**\n * Which bundler to use for building.\n *\n * @default webpack\n */\n bundler?: 'webpack' | 'vite';\n polling?: boolean;\n open?: boolean;\n watchAdmin?: boolean;\n}\n\n// This method removes all non-admin build files from the dist directory\nconst cleanupDistDirectory = async ({\n tsconfig,\n logger,\n timer,\n}: Pick<DevelopOptions, 'tsconfig' | 'logger'> & { timer: TimeMeasurer }) => {\n const distDir = tsconfig?.config?.options?.outDir;\n\n if (\n !distDir || // we don't have a dist dir\n (await fs\n .access(distDir)\n .then(() => false)\n .catch(() => true)) // it doesn't exist -- if it does but no access, that will be caught later\n ) {\n return;\n }\n\n const timerName = `cleaningDist${Date.now()}`;\n timer.start(timerName);\n const cleaningSpinner = logger.spinner(`Cleaning dist dir ${distDir}`).start();\n\n try {\n const dirContent = await fs.readdir(distDir);\n const validFilenames = dirContent\n // Ignore the admin build folder\n .filter((filename) => filename !== 'build');\n for (const filename of validFilenames) {\n await fs.rm(path.resolve(distDir, filename), { recursive: true });\n }\n } catch (err: unknown) {\n const generatingDuration = timer.end(timerName);\n cleaningSpinner.text = `Error cleaning dist dir: ${err} (${prettyTime(generatingDuration)})`;\n cleaningSpinner?.fail();\n return;\n }\n\n const generatingDuration = timer.end(timerName);\n cleaningSpinner.text = `Cleaning dist dir (${prettyTime(generatingDuration)})`;\n cleaningSpinner?.succeed();\n};\n\nconst develop = async ({\n cwd,\n polling,\n logger,\n tsconfig,\n watchAdmin,\n ...options\n}: DevelopOptions) => {\n const timer = getTimer();\n\n if (cluster.isPrimary) {\n const { didInstall } = await checkRequiredDependencies({ cwd, logger }).catch((err) => {\n logger.error(err.message);\n process.exit(1);\n });\n\n if (didInstall) {\n return;\n }\n\n if (tsconfig?.config) {\n // Build without diagnostics in case schemas have changed\n await cleanupDistDirectory({ tsconfig, logger, timer });\n await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: true } });\n }\n\n /**\n * IF we're not watching the admin we're going to build it, this makes\n * sure that at least the admin is built for users & they can interact\n * with the application.\n */\n if (!watchAdmin) {\n timer.start('createBuildContext');\n const contextSpinner = logger.spinner(`Building build context`).start();\n console.log('');\n\n const ctx = await createBuildContext({\n cwd,\n logger,\n tsconfig,\n options,\n });\n const contextDuration = timer.end('createBuildContext');\n contextSpinner.text = `Building build context (${prettyTime(contextDuration)})`;\n contextSpinner.succeed();\n\n timer.start('creatingAdmin');\n const adminSpinner = logger.spinner(`Creating admin`).start();\n\n await writeStaticClientFiles(ctx);\n\n if (ctx.bundler === 'webpack') {\n const { build: buildWebpack } = await import('./webpack/build');\n await buildWebpack(ctx);\n } else if (ctx.bundler === 'vite') {\n const { build: buildVite } = await import('./vite/build');\n await buildVite(ctx);\n }\n\n const adminDuration = timer.end('creatingAdmin');\n adminSpinner.text = `Creating admin (${prettyTime(adminDuration)})`;\n adminSpinner.succeed();\n }\n\n cluster.on('message', async (worker, message) => {\n switch (message) {\n case 'reload': {\n if (tsconfig?.config) {\n // Build without diagnostics in case schemas have changed\n await cleanupDistDirectory({ tsconfig, logger, timer });\n await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: true } });\n }\n logger.debug('cluster has the reload message, sending the worker kill message');\n worker.send('kill');\n break;\n }\n case 'killed': {\n logger.debug('cluster has the killed message, forking the cluster');\n cluster.fork();\n break;\n }\n case 'stop': {\n process.exit(1);\n break;\n }\n default:\n break;\n }\n });\n\n cluster.fork();\n }\n\n if (cluster.isWorker) {\n timer.start('loadStrapi');\n const loadStrapiSpinner = logger.spinner(`Loading Strapi`).start();\n\n const strapi = createStrapi({\n appDir: cwd,\n distDir: tsconfig?.config.options.outDir ?? '',\n autoReload: true,\n serveAdminPanel: !watchAdmin,\n });\n\n /**\n * If we're watching the admin panel then we're going to attach the watcher\n * as a strapi middleware.\n */\n let bundleWatcher: WebpackWatcher | ViteWatcher | undefined;\n\n const strapiInstance = await strapi.load();\n\n if (watchAdmin) {\n timer.start('createBuildContext');\n const contextSpinner = logger.spinner(`Building build context`).start();\n console.log('');\n\n const ctx = await createBuildContext({\n cwd,\n logger,\n strapi,\n tsconfig,\n options,\n });\n const contextDuration = timer.end('createBuildContext');\n contextSpinner.text = `Building build context (${prettyTime(contextDuration)})`;\n contextSpinner.succeed();\n\n timer.start('creatingAdmin');\n const adminSpinner = logger.spinner(`Creating admin`).start();\n\n await writeStaticClientFiles(ctx);\n\n if (ctx.bundler === 'webpack') {\n const { watch: watchWebpack } = await import('./webpack/watch');\n bundleWatcher = await watchWebpack(ctx);\n } else if (ctx.bundler === 'vite') {\n const { watch: watchVite } = await import('./vite/watch');\n bundleWatcher = await watchVite(ctx);\n }\n\n const adminDuration = timer.end('creatingAdmin');\n adminSpinner.text = `Creating admin (${prettyTime(adminDuration)})`;\n adminSpinner.succeed();\n }\n\n const loadStrapiDuration = timer.end('loadStrapi');\n loadStrapiSpinner.text = `Loading Strapi (${prettyTime(loadStrapiDuration)})`;\n loadStrapiSpinner.succeed();\n\n // For TS projects, type generation is a requirement for the develop command so that the server can restart\n // For JS projects, we respect the experimental autogenerate setting\n if (tsconfig?.config || strapi.config.get('typescript.autogenerate') !== false) {\n timer.start('generatingTS');\n const generatingTsSpinner = logger.spinner(`Generating types`).start();\n\n await tsUtils.generators.generate({\n strapi: strapiInstance,\n pwd: cwd,\n rootDir: undefined,\n logger: { silent: true, debug: false },\n artifacts: { contentTypes: true, components: true },\n });\n\n const generatingDuration = timer.end('generatingTS');\n generatingTsSpinner.text = `Generating types (${prettyTime(generatingDuration)})`;\n generatingTsSpinner.succeed();\n }\n\n if (tsconfig?.config) {\n timer.start('compilingTS');\n const compilingTsSpinner = logger.spinner(`Compiling TS`).start();\n\n await cleanupDistDirectory({ tsconfig, logger, timer });\n await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: false } });\n\n const compilingDuration = timer.end('compilingTS');\n compilingTsSpinner.text = `Compiling TS (${prettyTime(compilingDuration)})`;\n compilingTsSpinner.succeed();\n }\n\n const restart = async () => {\n if (strapiInstance.reload.isWatching && !strapiInstance.reload.isReloading) {\n strapiInstance.reload.isReloading = true;\n strapiInstance.reload();\n }\n };\n\n const watcher = chokidar\n .watch(cwd, {\n ignoreInitial: true,\n usePolling: polling,\n ignored: [\n /(^|[/\\\\])\\../, // dot files\n /tmp/,\n '**/src/admin/**',\n '**/src/plugins/**/admin/**',\n '**/dist/src/plugins/test/admin/**',\n '**/documentation',\n '**/documentation/**',\n '**/node_modules',\n '**/node_modules/**',\n '**/plugins.json',\n '**/build',\n '**/build/**',\n '**/log',\n '**/log/**',\n '**/logs',\n '**/logs/**',\n '**/*.log',\n '**/index.html',\n '**/public',\n '**/public/**',\n strapiInstance.dirs.static.public,\n strings.joinBy('/', strapiInstance.dirs.static.public, '**'),\n '**/*.db*',\n '**/exports/**',\n '**/dist/**',\n '**/*.d.ts',\n '**/.yalc/**',\n '**/yalc.lock',\n // TODO v6: watch only src folder by default, and flip this to watchIncludeFiles\n ...strapiInstance.config.get('admin.watchIgnoreFiles', []),\n ],\n })\n .on('add', (path) => {\n strapiInstance.log.info(`File created: ${path}`);\n restart();\n })\n .on('change', (path) => {\n strapiInstance.log.info(`File changed: ${path}`);\n restart();\n })\n .on('unlink', (path) => {\n strapiInstance.log.info(`File deleted: ${path}`);\n restart();\n });\n\n process.on('message', async (message) => {\n switch (message) {\n case 'kill': {\n logger.debug(\n 'child process has the kill message, destroying the strapi instance and sending the killed process message'\n );\n await watcher.close();\n\n await strapiInstance.destroy();\n\n if (bundleWatcher) {\n bundleWatcher.close();\n }\n process.send?.('killed');\n break;\n }\n default:\n break;\n }\n });\n\n strapiInstance.start();\n }\n};\n\nexport { develop };\nexport type { DevelopOptions };\n","import { createCommand } from 'commander';\nimport cluster from 'node:cluster';\nimport type { StrapiCommand } from '../types';\nimport { develop as nodeDevelop, DevelopOptions } from '../../node/develop';\nimport { handleUnexpectedError } from '../../node/core/errors';\n\ntype DevelopCLIOptions = DevelopOptions;\n\nconst action = async (options: DevelopCLIOptions) => {\n try {\n if (cluster.isPrimary) {\n if (options.bundler === 'webpack') {\n options.logger.warn(\n '[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.'\n );\n }\n }\n\n await nodeDevelop(options);\n } catch (err) {\n handleUnexpectedError(err);\n }\n};\n\n/**\n * `$ strapi develop`\n */\nconst command: StrapiCommand = ({ ctx }) => {\n return createCommand('develop')\n .alias('dev')\n .option('--bundler [bundler]', 'Bundler to use (webpack or vite)', 'vite')\n .option('-d, --debug', 'Enable debugging mode with verbose logs', false)\n .option('--silent', \"Don't log anything\", false)\n .option('--polling', 'Watch for file changes in network directories', false)\n .option('--watch-admin', 'Watch the admin panel for hot changes', true)\n .option('--no-watch-admin', 'Do not watch the admin panel for hot changes')\n .option('--open', 'Open the admin in your browser', true)\n .description('Start your Strapi application in development mode')\n .action(async (options: DevelopCLIOptions) => {\n return action({ ...options, ...ctx });\n });\n};\n\nexport { command };\n","import { createCommand } from 'commander';\nimport { assertCwdContainsStrapiProject } from '../utils/helpers';\nimport type { StrapiCommand } from '../types';\n\n/**\n * `$ strapi generate`\n */\nconst command: StrapiCommand = ({ argv }) => {\n return createCommand('generate')\n .description('Launch the interactive API generator')\n .action(() => {\n assertCwdContainsStrapiProject('generate');\n argv.splice(2, 1);\n\n // NOTE: this needs to be lazy loaded in order for plop to work correctly\n import('@strapi/generators').then((gen) => gen.runCLI());\n });\n};\n\nexport { command };\n","import { createCommand } from 'commander';\nimport { EOL } from 'os';\nimport { createStrapi, compileStrapi } from '@strapi/core';\nimport type { StrapiCommand } from '../types';\nimport { runAction } from '../utils/helpers';\n\ninterface CmdOptions {\n uuid: boolean;\n dependencies: boolean;\n all: boolean;\n}\n\nconst action = async ({ uuid, dependencies, all }: CmdOptions) => {\n const config = {\n reportUUID: Boolean(all || uuid),\n reportDependencies: Boolean(all || dependencies),\n };\n\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n let debugInfo = `Launched In: ${Date.now() - app.config.launchedAt} ms\nEnvironment: ${app.config.environment}\nOS: ${process.platform}-${process.arch}\nStrapi Version: ${app.config.info.strapi}\nNode/Yarn Version: ${process.env.npm_config_user_agent}\nEdition: ${app.EE ? 'Enterprise' : 'Community'}\nDatabase: ${app?.config?.database?.connection?.client ?? 'unknown'}`;\n\n if (config.reportUUID) {\n debugInfo += `${EOL}UUID: ${app.config.uuid}`;\n }\n\n if (config.reportDependencies) {\n debugInfo += `${EOL}Dependencies: ${JSON.stringify(app.config.info.dependencies, null, 2)}\nDev Dependencies: ${JSON.stringify(app.config.info.devDependencies, null, 2)}`;\n }\n\n console.log(debugInfo);\n\n await app.destroy();\n};\n\n/**\n * `$ strapi report`\n */\nconst command: StrapiCommand = () => {\n return createCommand('report')\n .description('Get system stats for debugging and submitting issues')\n .option('-u, --uuid', 'Include Project UUID')\n .option('-d, --dependencies', 'Include Project Dependencies')\n .option('--all', 'Include All Information')\n .action(runAction('report', action));\n};\n\nexport { command };\n","import { createCommand } from 'commander';\nimport fs from 'fs';\nimport tsUtils from '@strapi/typescript-utils';\nimport { createStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../types';\nimport { runAction } from '../utils/helpers';\n\nconst action = async () => {\n const appDir = process.cwd();\n\n const isTSProject = await tsUtils.isUsingTypeScript(appDir);\n\n const outDir = await tsUtils.resolveOutDir(appDir);\n const distDir = isTSProject ? outDir : appDir;\n\n const buildDirExists = fs.existsSync(outDir);\n if (isTSProject && !buildDirExists)\n throw new Error(\n `${outDir} directory not found. Please run the build command before starting your application`\n );\n\n createStrapi({ appDir, distDir }).start();\n};\n\n/**\n * `$ strapi start`\n */\nconst command: StrapiCommand = () => {\n return createCommand('start')\n .description('Start your Strapi application')\n .action(runAction('start', action));\n};\n\nexport { command };\n","import { createCommand } from 'commander';\nimport type { StrapiCommand } from '../types';\nimport { version } from '../../../package.json';\n\n/**\n * `$ strapi version`\n */\n\nconst command: StrapiCommand = () => {\n // load the Strapi package.json to get version and other information\n return createCommand('version')\n .description('Output the version of Strapi')\n .action(() => {\n process.stdout.write(`${version}\\n`);\n process.exit(0);\n });\n};\n\nexport { command };\n","/**\n * This file includes hooks to use for commander.hook and argParsers for commander.argParser\n */\n\nimport inquirer from 'inquirer';\nimport { Command, InvalidOptionArgumentError, Option } from 'commander';\nimport chalk from 'chalk';\nimport { isNaN } from 'lodash/fp';\nimport { exitWith } from './helpers';\n\n/**\n * argParser: Parse a comma-delimited string as an array\n */\nconst parseList = (value: string) => {\n try {\n return value.split(',').map((item) => item.trim()); // trim shouldn't be necessary but might help catch unexpected whitespace characters\n } catch (e) {\n exitWith(1, `Unrecognized input: ${value}`);\n }\n\n return [];\n};\n\n/**\n * Returns an argParser that returns a list\n */\nconst getParseListWithChoices = (choices: string[], errorMessage = 'Invalid options:') => {\n return (value: string) => {\n const list = parseList(value);\n const invalid = list.filter((item) => {\n return !choices.includes(item);\n });\n\n if (invalid.length > 0) {\n exitWith(1, `${errorMessage}: ${invalid.join(',')}`);\n }\n\n return list;\n };\n};\n\n/**\n * argParser: Parse a string as an integer\n */\nconst parseInteger = (value: string) => {\n // parseInt takes a string and a radix\n const parsedValue = parseInt(value, 10);\n if (isNaN(parsedValue)) {\n throw new InvalidOptionArgumentError(`Not an integer: ${value}`);\n }\n return parsedValue;\n};\n\n/**\n * argParser: Parse a string as a URL object\n */\nconst parseURL = (value: string) => {\n try {\n const url = new URL(value);\n if (!url.host) {\n throw new InvalidOptionArgumentError(`Could not parse url ${value}`);\n }\n\n return url;\n } catch (e) {\n throw new InvalidOptionArgumentError(`Could not parse url ${value}`);\n }\n};\n\n/**\n * hook: if encrypt==true and key not provided, prompt for it\n */\nconst promptEncryptionKey = async (thisCommand: Command) => {\n const opts = thisCommand.opts();\n\n if (!opts.encrypt && opts.key) {\n return exitWith(1, 'Key may not be present unless encryption is used');\n }\n\n // if encrypt==true but we have no key, prompt for it\n if (opts.encrypt && !(opts.key && opts.key.length > 0)) {\n try {\n const answers = await inquirer.prompt([\n {\n type: 'password',\n message: 'Please enter an encryption key',\n name: 'key',\n validate(key) {\n if (key.length > 0) return true;\n\n return 'Key must be present when using the encrypt option';\n },\n },\n ]);\n opts.key = answers.key;\n } catch (e) {\n return exitWith(1, 'Failed to get encryption key');\n }\n if (!opts.key) {\n return exitWith(1, 'Failed to get encryption key');\n }\n }\n};\n\n/**\n * hook: require a confirmation message to be accepted unless forceOption (-f,--force) is used\n */\nconst getCommanderConfirmMessage = (\n message: string,\n { failMessage }: { failMessage?: string } = {}\n) => {\n return async (command: Command) => {\n const confirmed = await confirmMessage(message, { force: command.opts().force });\n if (!confirmed) {\n exitWith(1, failMessage);\n }\n };\n};\n\nconst confirmMessage = async (message: string, { force }: { force?: boolean } = {}) => {\n // if we have a force option, respond yes\n if (force === true) {\n // attempt to mimic the inquirer prompt exactly\n console.log(`${chalk.green('?')} ${chalk.bold(message)} ${chalk.cyan('Yes')}`);\n return true;\n }\n\n const answers = await inquirer.prompt([\n {\n type: 'confirm',\n message,\n name: `confirm`,\n default: false,\n },\n ]);\n\n return answers.confirm;\n};\n\nconst forceOption = new Option(\n '--force',\n `Automatically answer \"yes\" to all prompts, including potentially destructive requests, and run non-interactively.`\n);\n\nexport {\n getParseListWithChoices,\n parseList,\n parseURL,\n parseInteger,\n promptEncryptionKey,\n getCommanderConfirmMessage,\n confirmMessage,\n forceOption,\n};\n","import chalk from 'chalk';\nimport Table from 'cli-table3';\nimport { Command, Option } from 'commander';\nimport { configs, createLogger, type winston, formats } from '@strapi/logger';\nimport { createStrapi, compileStrapi } from '@strapi/core';\nimport ora from 'ora';\nimport { merge } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\nimport { engine as engineDataTransfer, strapi as strapiDataTransfer } from '@strapi/data-transfer';\n\nimport { readableBytes, exitWith } from './helpers';\nimport { getParseListWithChoices, parseInteger, confirmMessage } from './commander';\n\nconst {\n errors: { TransferEngineInitializationError },\n} = engineDataTransfer;\n\nconst exitMessageText = (process: string, error = false) => {\n const processCapitalized = process[0].toUpperCase() + process.slice(1);\n\n if (!error) {\n return chalk.bold(\n chalk.green(`${processCapitalized} process has been completed successfully!`)\n );\n }\n\n return chalk.bold(chalk.red(`${processCapitalized} process failed.`));\n};\n\nconst pad = (n: number) => {\n return (n < 10 ? '0' : '') + String(n);\n};\n\nconst yyyymmddHHMMSS = () => {\n const date = new Date();\n\n return (\n date.getFullYear() +\n pad(date.getMonth() + 1) +\n pad(date.getDate()) +\n pad(date.getHours()) +\n pad(date.getMinutes()) +\n pad(date.getSeconds())\n );\n};\n\nconst getDefaultExportName = () => {\n return `export_${yyyymmddHHMMSS()}`;\n};\n\ntype ResultData = engineDataTransfer.ITransferResults<\n engineDataTransfer.ISourceProvider,\n engineDataTransfer.IDestinationProvider\n>['engine'];\n\nconst buildTransferTable = (resultData: ResultData) => {\n if (!resultData) {\n return;\n }\n\n // Build pretty table\n const table = new Table({\n head: ['Type', 'Count', 'Size'].map((text) => chalk.bold.blue(text)),\n });\n\n let totalBytes = 0;\n let totalItems = 0;\n (Object.keys(resultData) as engineDataTransfer.TransferStage[]).forEach((stage) => {\n const item = resultData[stage];\n\n if (!item) {\n return;\n }\n\n table.push([\n { hAlign: 'left', content: chalk.bold(stage) },\n { hAlign: 'right', content: item.count },\n { hAlign: 'right', content: `${readableBytes(item.bytes, 1, 11)} ` },\n ]);\n totalBytes += item.bytes;\n totalItems += item.count;\n\n if (item.aggregates) {\n (Object.keys(item.aggregates) as (keyof typeof item.aggregates)[])\n .sort()\n .forEach((subkey) => {\n if (!item.aggregates) {\n return;\n }\n\n const subitem = item.aggregates[subkey];\n\n table.push([\n { hAlign: 'left', content: `-- ${chalk.bold.grey(subkey)}` },\n { hAlign: 'right', content: chalk.grey(subitem.count) },\n { hAlign: 'right', content: chalk.grey(`(${readableBytes(subitem.bytes, 1, 11)})`) },\n ]);\n });\n }\n });\n table.push([\n { hAlign: 'left', content: chalk.bold.green('Total') },\n { hAlign: 'right', content: chalk.bold.green(totalItems) },\n { hAlign: 'right', content: `${chalk.bold.green(readableBytes(totalBytes, 1, 11))} ` },\n ]);\n\n return table;\n};\n\nconst DEFAULT_IGNORED_CONTENT_TYPES = [\n 'admin::permission',\n 'admin::user',\n 'admin::role',\n 'admin::api-token',\n 'admin::api-token-permission',\n 'admin::transfer-token',\n 'admin::transfer-token-permission',\n 'admin::audit-log',\n 'plugin::content-releases.release',\n 'plugin::content-releases.release-action',\n];\n\nconst abortTransfer = async ({\n engine,\n strapi,\n}: {\n engine: engineDataTransfer.TransferEngine;\n strapi: Core.Strapi;\n}) => {\n try {\n await engine.abortTransfer();\n await strapi.destroy();\n } catch (e) {\n // ignore because there's not much else we can do\n return false;\n }\n return true;\n};\n\nconst setSignalHandler = async (\n handler: (...args: unknown[]) => void,\n signals = ['SIGINT', 'SIGTERM', 'SIGQUIT']\n) => {\n signals.forEach((signal) => {\n // We specifically remove ALL listeners because we have to clear the one added in Strapi bootstrap that has a process.exit\n // TODO: Ideally Strapi bootstrap would not add that listener, and then this could be more flexible and add/remove only what it needs to\n process.removeAllListeners(signal);\n process.on(signal, handler);\n });\n};\n\nconst createStrapiInstance = async (opts: { logLevel?: string } = {}): Promise<Core.Strapi> => {\n try {\n const appContext = await compileStrapi();\n const app = createStrapi({ ...opts, ...appContext });\n\n app.log.level = opts.logLevel || 'error';\n return await app.load();\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === 'ECONNREFUSED') {\n throw new Error('Process failed. Check the database connection with your Strapi project.');\n }\n\n throw error;\n }\n};\n\nconst transferDataTypes = Object.keys(engineDataTransfer.TransferGroupPresets);\n\nconst throttleOption = new Option(\n '--throttle <delay after each entity>',\n `Add a delay in milliseconds between each transferred entity`\n)\n .argParser(parseInteger)\n .hideHelp(); // This option is not publicly documented\n\nconst excludeOption = new Option(\n '--exclude <comma-separated data types>',\n `Exclude data using comma-separated types. Available types: ${transferDataTypes.join(',')}`\n).argParser(getParseListWithChoices(transferDataTypes, 'Invalid options for \"exclude\"'));\n\nconst onlyOption = new Option(\n '--only <command-separated data types>',\n `Include only these types of data (plus schemas). Available types: ${transferDataTypes.join(',')}`\n).argParser(getParseListWithChoices(transferDataTypes, 'Invalid options for \"only\"'));\n\nconst validateExcludeOnly = (command: Command) => {\n const { exclude, only } = command.opts();\n if (!only || !exclude) {\n return;\n }\n\n const choicesInBoth = only.filter((n: string) => {\n return exclude.indexOf(n) !== -1;\n });\n if (choicesInBoth.length > 0) {\n exitWith(\n 1,\n `Data types may not be used in both \"exclude\" and \"only\" in the same command. Found in both: ${choicesInBoth.join(\n ','\n )}`\n );\n }\n};\n\nconst errorColors = {\n fatal: chalk.red,\n error: chalk.red,\n silly: chalk.yellow,\n} as const;\n\nconst formatDiagnostic = (\n operation: string,\n info?: boolean\n): Parameters<engineDataTransfer.TransferEngine['diagnostics']['onDiagnostic']>[0] => {\n // Create log file for all incoming diagnostics\n let logger: undefined | winston.Logger;\n const getLogger = () => {\n if (!logger) {\n logger = createLogger(\n configs.createOutputFileConfiguration(`${operation}_${Date.now()}.log`, {\n level: 'info',\n format: formats?.detailedLogs,\n })\n );\n }\n return logger;\n };\n\n // We don't want to write a log file until there is something to be logged\n\n return ({ details, kind }) => {\n try {\n if (kind === 'error') {\n const { message, severity = 'fatal' } = details;\n\n const colorizeError = errorColors[severity];\n const errorMessage = colorizeError(`[${severity.toUpperCase()}] ${message}`);\n\n getLogger().error(errorMessage);\n }\n if (kind === 'info' && info) {\n const { message, params, origin } = details;\n\n const msg = `[${origin ?? 'transfer'}] ${message}\\n${params ? JSON.stringify(params, null, 2) : ''}`;\n\n getLogger().info(msg);\n }\n if (kind === 'warning') {\n const { origin, message } = details;\n\n getLogger().warn(`(${origin ?? 'transfer'}) ${message}`);\n }\n } catch (err) {\n getLogger().error(err);\n }\n };\n};\n\ntype Loaders = {\n [key in engineDataTransfer.TransferStage]: ora.Ora;\n};\n\ntype Data = {\n [key in engineDataTransfer.TransferStage]?: {\n startTime?: number;\n endTime?: number;\n bytes?: number;\n count?: number;\n };\n};\n\nconst loadersFactory = (defaultLoaders: Loaders = {} as Loaders) => {\n const loaders = defaultLoaders;\n const updateLoader = (stage: engineDataTransfer.TransferStage, data: Data) => {\n if (!(stage in loaders)) {\n createLoader(stage);\n }\n\n const stageData = data[stage];\n const elapsedTime = stageData?.startTime\n ? (stageData?.endTime || Date.now()) - stageData.startTime\n : 0;\n const size = `size: ${readableBytes(stageData?.bytes ?? 0)}`;\n const elapsed = `elapsed: ${elapsedTime} ms`;\n const speed =\n elapsedTime > 0 ? `(${readableBytes(((stageData?.bytes ?? 0) * 1000) / elapsedTime)}/s)` : '';\n\n loaders[stage].text = `${stage}: ${stageData?.count ?? 0} transfered (${size}) (${elapsed}) ${\n !stageData?.endTime ? speed : ''\n }`;\n\n return loaders[stage];\n };\n\n const createLoader = (stage: engineDataTransfer.TransferStage) => {\n Object.assign(loaders, { [stage]: ora() });\n return loaders[stage];\n };\n\n const getLoader = (stage: engineDataTransfer.TransferStage) => {\n return loaders[stage];\n };\n\n return {\n updateLoader,\n createLoader,\n getLoader,\n };\n};\n\n/**\n * Get the telemetry data to be sent for a didDEITSProcess* event from an initialized transfer engine object\n */\nconst getTransferTelemetryPayload = (engine: engineDataTransfer.TransferEngine) => {\n return {\n eventProperties: {\n source: engine?.sourceProvider?.name,\n destination: engine?.destinationProvider?.name,\n },\n };\n};\n\n/**\n * Get a transfer engine schema diff handler that confirms with the user before bypassing a schema check\n */\nconst getDiffHandler = (\n engine: engineDataTransfer.TransferEngine,\n {\n force,\n action,\n }: {\n force?: boolean;\n action: string;\n }\n) => {\n return async (\n context: engineDataTransfer.SchemaDiffHandlerContext,\n next: (ctx: engineDataTransfer.SchemaDiffHandlerContext) => void\n ) => {\n // if we abort here, we need to actually exit the process because of conflict with inquirer prompt\n setSignalHandler(async () => {\n await abortTransfer({ engine, strapi: strapi as Core.Strapi });\n exitWith(1, exitMessageText(action, true));\n });\n\n let workflowsStatus;\n const source = 'Schema Integrity';\n\n Object.entries(context.diffs).forEach(([uid, diffs]) => {\n for (const diff of diffs) {\n const path = [uid].concat(diff.path).join('.');\n const endPath = diff.path[diff.path.length - 1];\n\n // Catch known features\n if (\n uid === 'plugin::review-workflows.workflow' ||\n uid === 'plugin::review-workflows.workflow-stage' ||\n endPath?.startsWith('strapi_stage') ||\n endPath?.startsWith('strapi_assignee')\n ) {\n workflowsStatus = diff.kind;\n }\n // handle generic cases\n else if (diff.kind === 'added') {\n engine.reportWarning(chalk.red(`${chalk.bold(path)} does not exist on source`), source);\n } else if (diff.kind === 'deleted') {\n engine.reportWarning(\n chalk.red(`${chalk.bold(path)} does not exist on destination`),\n source\n );\n } else if (diff.kind === 'modified') {\n engine.reportWarning(chalk.red(`${chalk.bold(path)} has a different data type`), source);\n }\n }\n });\n\n // output the known feature warnings\n if (workflowsStatus === 'added') {\n engine.reportWarning(chalk.red(`Review workflows feature does not exist on source`), source);\n } else if (workflowsStatus === 'deleted') {\n engine.reportWarning(\n chalk.red(`Review workflows feature does not exist on destination`),\n source\n );\n } else if (workflowsStatus === 'modified') {\n engine.panic(\n new TransferEngineInitializationError('Unresolved differences in schema [review workflows]')\n );\n }\n\n const confirmed = await confirmMessage(\n 'There are differences in schema between the source and destination, and the data listed above will be lost. Are you sure you want to continue?',\n {\n force,\n }\n );\n\n // reset handler back to normal\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n if (confirmed) {\n context.ignoredDiffs = merge(context.diffs, context.ignoredDiffs);\n }\n\n return next(context);\n };\n};\n\nconst getAssetsBackupHandler = (\n engine: engineDataTransfer.TransferEngine,\n {\n force,\n action,\n }: {\n force?: boolean;\n action: string;\n }\n) => {\n return async (\n context: engineDataTransfer.ErrorHandlerContext,\n next: (ctx: engineDataTransfer.ErrorHandlerContext) => void\n ) => {\n // if we abort here, we need to actually exit the process because of conflict with inquirer prompt\n setSignalHandler(async () => {\n await abortTransfer({ engine, strapi: strapi as Core.Strapi });\n exitWith(1, exitMessageText(action, true));\n });\n\n console.warn(\n 'The backup for the assets could not be created inside the public directory. Ensure Strapi has write permissions on the public directory.'\n );\n const confirmed = await confirmMessage(\n 'Do you want to continue without backing up your public/uploads files?',\n {\n force,\n }\n );\n\n if (confirmed) {\n context.ignore = true;\n }\n\n // reset handler back to normal\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n return next(context);\n };\n};\n\nconst shouldSkipStage = (\n opts: Partial<engineDataTransfer.ITransferEngineOptions>,\n dataKind: engineDataTransfer.TransferFilterPreset\n) => {\n if (opts.exclude?.includes(dataKind)) {\n return true;\n }\n if (opts.only) {\n return !opts.only.includes(dataKind);\n }\n\n return false;\n};\n\ntype RestoreConfig = NonNullable<\n strapiDataTransfer.providers.ILocalStrapiDestinationProviderOptions['restore']\n>;\n\n// Based on exclude/only from options, create the restore object to match\nconst parseRestoreFromOptions = (opts: Partial<engineDataTransfer.ITransferEngineOptions>) => {\n const entitiesOptions: RestoreConfig['entities'] = {\n exclude: DEFAULT_IGNORED_CONTENT_TYPES,\n include: undefined,\n };\n\n // if content is not included, send an empty array for include\n if ((opts.only && !opts.only.includes('content')) || opts.exclude?.includes('content')) {\n entitiesOptions.include = [];\n }\n\n const restoreConfig: strapiDataTransfer.providers.ILocalStrapiDestinationProviderOptions['restore'] =\n {\n entities: entitiesOptions,\n assets: !shouldSkipStage(opts, 'files'),\n configuration: {\n webhook: !shouldSkipStage(opts, 'config'),\n coreStore: !shouldSkipStage(opts, 'config'),\n },\n };\n\n return restoreConfig;\n};\n\nexport {\n loadersFactory,\n buildTransferTable,\n getDefaultExportName,\n getTransferTelemetryPayload,\n DEFAULT_IGNORED_CONTENT_TYPES,\n createStrapiInstance,\n excludeOption,\n exitMessageText,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n formatDiagnostic,\n abortTransfer,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n shouldSkipStage,\n parseRestoreFromOptions,\n};\n","import { isObject, isString, isFinite, toNumber } from 'lodash/fp';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\nimport type { Core } from '@strapi/types';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n getDefaultExportName,\n buildTransferTable,\n DEFAULT_IGNORED_CONTENT_TYPES,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst {\n providers: { createLocalFileDestinationProvider },\n} = fileDataTransfer;\nconst {\n providers: { createLocalStrapiSourceProvider },\n} = strapiDataTransfer;\n\nconst BYTES_IN_MB = 1024 * 1024;\n\ninterface CmdOptions {\n file?: string;\n encrypt?: boolean;\n verbose?: boolean;\n key?: string;\n compress?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n throttle?: number;\n maxSizeJsonl?: number;\n}\n\n/**\n * Export command.\n *\n * It transfers data from a local Strapi instance to a file\n *\n * @param {ExportCommandOptions} opts\n */\nexport default async (opts: CmdOptions) => {\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n const strapi = await createStrapiInstance();\n\n const source = createSourceProvider(strapi);\n const destination = createDestinationProvider(opts);\n\n const engine = engineDataTransfer.createTransferEngine(source, destination, {\n versionStrategy: 'ignore', // for an export to file, versionStrategy will always be skipped\n schemaStrategy: 'ignore', // for an export to file, schemaStrategy will always be skipped\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: {\n links: [\n {\n filter(link) {\n return (\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.left.type) &&\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.right.type)\n );\n },\n },\n ],\n entities: [\n {\n filter(entity) {\n return !DEFAULT_IGNORED_CONTENT_TYPES.includes(entity.type);\n },\n },\n ],\n },\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('export', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log(`Starting export...`);\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n let outFile: string;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n outFile = results.destination?.file?.path ?? '';\n const outFileExists = await fs.pathExists(outFile);\n if (!outFileExists) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export file not created \"${outFile}\"`\n );\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n console.log(`Export archive is in ${chalk.green(outFile)}`);\n exitWith(0, exitMessageText('export'));\n } catch {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('export', true));\n }\n};\n\n/**\n * It creates a local strapi destination provider\n */\nconst createSourceProvider = (strapi: Core.Strapi) => {\n return createLocalStrapiSourceProvider({\n async getStrapi() {\n return strapi;\n },\n });\n};\n\n/**\n * It creates a local file destination provider based on the given options\n */\nconst createDestinationProvider = (opts: CmdOptions) => {\n const { file, compress, encrypt, key, maxSizeJsonl } = opts;\n\n const filepath = isString(file) && file.length > 0 ? file : getDefaultExportName();\n\n const maxSizeJsonlInMb = isFinite(toNumber(maxSizeJsonl))\n ? toNumber(maxSizeJsonl) * BYTES_IN_MB\n : undefined;\n\n return createLocalFileDestinationProvider({\n file: {\n path: filepath,\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n encryption: {\n enabled: encrypt ?? false,\n key: encrypt ? key : undefined,\n },\n compression: {\n enabled: compress ?? false,\n },\n });\n};\n","import { createCommand, Option } from 'commander';\n\nimport {\n excludeOption,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n} from '../../utils/data-transfer';\nimport { promptEncryptionKey } from '../../utils/commander';\nimport action from './action';\n\n/**\n * `$ strapi export`\n */\nconst command = () => {\n return createCommand('export')\n .description('Export data from Strapi to file')\n .allowExcessArguments(false)\n .addOption(\n new Option('--no-encrypt', `Disables 'aes-128-ecb' encryption of the output file`).default(\n true\n )\n )\n .addOption(\n new Option('--no-compress', 'Disables gzip compression of output file').default(true)\n )\n .addOption(new Option('--verbose', 'Enable verbose logs'))\n .addOption(\n new Option(\n '-k, --key <string>',\n 'Provide encryption key in command instead of using the prompt'\n )\n )\n .addOption(\n new Option('-f, --file <file>', 'name to use for exported file (without extensions)')\n )\n .addOption(excludeOption)\n .addOption(onlyOption)\n .addOption(throttleOption)\n .hook('preAction', validateExcludeOnly)\n .hook('preAction', promptEncryptionKey)\n .action(action);\n};\n\nexport default command;\n","import type { Core } from '@strapi/types';\nimport { isObject } from 'lodash/fp';\nimport chalk from 'chalk';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n DEFAULT_IGNORED_CONTENT_TYPES,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n parseRestoreFromOptions,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst {\n providers: { createLocalFileSourceProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiDestinationProvider, DEFAULT_CONFLICT_STRATEGY },\n} = strapiDataTransfer;\n\nconst { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY } =\n engineDataTransfer;\n\ninterface CmdOptions {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n verbose?: boolean;\n key?: string;\n conflictStrategy?: 'restore';\n force?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n throttle?: number;\n}\n\ntype EngineOptions = Parameters<typeof createTransferEngine>[2];\n\n/**\n * Import command.\n *\n * It transfers data from a file to a local Strapi instance\n */\nexport default async (opts: CmdOptions) => {\n // validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse arguments');\n }\n\n /**\n * From strapi backup file\n */\n const sourceOptions = getLocalFileSourceOptions(opts);\n\n const source = createLocalFileSourceProvider(sourceOptions);\n\n /**\n * To local Strapi instance\n */\n const strapiInstance = await createStrapiInstance();\n\n /**\n * Configure and run the transfer engine\n */\n const engineOptions: EngineOptions = {\n versionStrategy: DEFAULT_VERSION_STRATEGY,\n schemaStrategy: DEFAULT_SCHEMA_STRATEGY,\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: {\n links: [\n {\n filter(link) {\n return (\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.left.type) &&\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.right.type)\n );\n },\n },\n ],\n entities: [\n {\n filter: (entity) => !DEFAULT_IGNORED_CONTENT_TYPES.includes(entity.type),\n },\n ],\n },\n };\n\n const destinationOptions = {\n async getStrapi() {\n return strapiInstance;\n },\n autoDestroy: false,\n strategy: opts.conflictStrategy || DEFAULT_CONFLICT_STRATEGY,\n restore: parseRestoreFromOptions(engineOptions),\n };\n\n const destination = createLocalStrapiDestinationProvider(destinationOptions);\n destination.onWarning = (message) => console.warn(`\\n${chalk.yellow('warn')}: ${message}`);\n\n const engine = createTransferEngine(source, destination, engineOptions);\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('import', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'import' }));\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log('Starting import...');\n await strapiInstance.telemetry.send(\n 'didDEITSProcessStart',\n getTransferTelemetryPayload(engine)\n );\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n results = await engine.transfer();\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapiInstance.telemetry.send(\n 'didDEITSProcessFinish',\n getTransferTelemetryPayload(engine)\n );\n await strapiInstance.destroy();\n\n exitWith(0, exitMessageText('import'));\n } catch (e) {\n await strapiInstance.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('import', true));\n }\n};\n\n/**\n * Infer local file source provider options based on a given filename\n */\nconst getLocalFileSourceOptions = (opts: {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n key?: string;\n}) => {\n const options: fileDataTransfer.providers.ILocalFileSourceProviderOptions = {\n file: { path: opts.file ?? '' },\n compression: { enabled: !!opts.decompress },\n encryption: { enabled: !!opts.decrypt, key: opts.key },\n };\n\n return options;\n};\n","import path from 'path';\nimport { createCommand, Option } from 'commander';\nimport inquirer from 'inquirer';\nimport {\n excludeOption,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n} from '../../utils/data-transfer';\nimport { getCommanderConfirmMessage, forceOption } from '../../utils/commander';\nimport { exitWith } from '../../utils/helpers';\nimport action from './action';\n\n/**\n * `$ strapi import`\n */\nconst command = () => {\n return (\n createCommand('import')\n .description('Import data from file to Strapi')\n .allowExcessArguments(false)\n .requiredOption(\n '-f, --file <file>',\n 'path and filename for the Strapi export file you want to import'\n )\n .addOption(\n new Option(\n '-k, --key <string>',\n 'Provide encryption key in command instead of using the prompt'\n )\n )\n .addOption(new Option('--verbose', 'Enable verbose logs'))\n .addOption(forceOption)\n .addOption(excludeOption)\n .addOption(onlyOption)\n .addOption(throttleOption)\n .hook('preAction', validateExcludeOnly)\n .hook('preAction', async (thisCommand) => {\n const opts = thisCommand.opts();\n const ext = path.extname(String(opts.file));\n\n // check extension to guess if we should prompt for key\n if (ext === '.enc') {\n if (!opts.key) {\n const answers = await inquirer.prompt([\n {\n type: 'password',\n message: 'Please enter your decryption key',\n name: 'key',\n },\n ]);\n if (!answers.key?.length) {\n exitWith(1, 'No key entered, aborting import.');\n }\n opts.key = answers.key;\n }\n }\n })\n // set decrypt and decompress options based on filename\n .hook('preAction', (thisCommand) => {\n const opts = thisCommand.opts();\n\n const { extname, parse } = path;\n\n let file = opts.file;\n\n if (extname(file) === '.enc') {\n file = parse(file).name; // trim the .enc extension\n thisCommand.opts().decrypt = true;\n } else {\n thisCommand.opts().decrypt = false;\n }\n\n if (extname(file) === '.gz') {\n file = parse(file).name; // trim the .gz extension\n thisCommand.opts().decompress = true;\n } else {\n thisCommand.opts().decompress = false;\n }\n\n if (extname(file) !== '.tar') {\n exitWith(\n 1,\n `The file '${opts.file}' does not appear to be a valid Strapi data file. It must have an extension ending in .tar[.gz][.enc]`\n );\n }\n })\n .hook(\n 'preAction',\n getCommanderConfirmMessage(\n 'The import will delete your existing data! Are you sure you want to proceed?',\n { failMessage: 'Import process aborted' }\n )\n )\n .action(action)\n );\n};\n\nexport default command;\n","import { isObject } from 'lodash/fp';\nimport { engine as engineDataTransfer, strapi as strapiDataTransfer } from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n DEFAULT_IGNORED_CONTENT_TYPES,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n parseRestoreFromOptions,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst { createTransferEngine } = engineDataTransfer;\nconst {\n providers: {\n createRemoteStrapiDestinationProvider,\n createLocalStrapiSourceProvider,\n createLocalStrapiDestinationProvider,\n createRemoteStrapiSourceProvider,\n },\n} = strapiDataTransfer;\n\ninterface CmdOptions {\n from?: URL;\n fromToken: string;\n to: URL;\n toToken: string;\n verbose?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n throttle?: number;\n force?: boolean;\n}\n/**\n * Transfer command.\n *\n * Transfers data between local Strapi and remote Strapi instances\n */\nexport default async (opts: CmdOptions) => {\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n if (!(opts.from || opts.to) || (opts.from && opts.to)) {\n exitWith(1, 'Exactly one source (from) or destination (to) option must be provided');\n }\n\n const strapi = await createStrapiInstance();\n let source;\n let destination;\n\n // if no URL provided, use local Strapi\n if (!opts.from) {\n source = createLocalStrapiSourceProvider({\n getStrapi: () => strapi,\n });\n }\n // if URL provided, set up a remote source provider\n else {\n if (!opts.fromToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n source = createRemoteStrapiSourceProvider({\n getStrapi: () => strapi,\n url: opts.from,\n auth: {\n type: 'token',\n token: opts.fromToken,\n },\n });\n }\n\n // if no URL provided, use local Strapi\n if (!opts.to) {\n destination = createLocalStrapiDestinationProvider({\n getStrapi: () => strapi,\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts),\n });\n }\n // if URL provided, set up a remote destination provider\n else {\n if (!opts.toToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n destination = createRemoteStrapiDestinationProvider({\n url: opts.to,\n auth: {\n type: 'token',\n token: opts.toToken,\n },\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts),\n });\n }\n\n if (!source || !destination) {\n exitWith(1, 'Could not create providers');\n }\n\n const engine = createTransferEngine(source, destination, {\n versionStrategy: 'exact',\n schemaStrategy: 'strict',\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: {\n links: [\n {\n filter(link) {\n return (\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.left.type) &&\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.right.type)\n );\n },\n },\n ],\n entities: [\n {\n filter(entity) {\n return !DEFAULT_IGNORED_CONTENT_TYPES.includes(entity.type);\n },\n },\n ],\n },\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('transfer', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'transfer' }));\n\n engine.addErrorHandler(\n 'ASSETS_DIRECTORY_ERR',\n getAssetsBackupHandler(engine, { force: opts.force, action: 'transfer' })\n );\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('stage::error', ({ stage, data }) => {\n updateLoader(stage, data).fail();\n });\n\n progress.on('transfer::start', async () => {\n console.log(`Starting transfer...`);\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: Awaited<ReturnType<typeof engine.transfer>>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n exitWith(0, exitMessageText('transfer'));\n } catch (e) {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('transfer', true));\n }\n};\n","import inquirer from 'inquirer';\nimport { createCommand, Option } from 'commander';\nimport { getCommanderConfirmMessage, forceOption, parseURL } from '../../utils/commander';\nimport { exitWith, assertUrlHasProtocol, ifOptions } from '../../utils/helpers';\nimport {\n excludeOption,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n} from '../../utils/data-transfer';\n\nimport action from './action';\n\n/**\n * `$ strapi transfer`\n */\nconst command = () => {\n return (\n createCommand('transfer')\n .description('Transfer data from one source to another')\n .allowExcessArguments(false)\n .addOption(\n new Option(\n '--from <sourceURL>',\n `URL of the remote Strapi instance to get data from`\n ).argParser(parseURL)\n )\n .addOption(new Option('--from-token <token>', `Transfer token for the remote Strapi source`))\n .addOption(\n new Option(\n '--to <destinationURL>',\n `URL of the remote Strapi instance to send data to`\n ).argParser(parseURL)\n )\n\n .addOption(\n new Option('--to-token <token>', `Transfer token for the remote Strapi destination`)\n )\n .addOption(new Option('--verbose', 'Enable verbose logs'))\n .addOption(forceOption)\n .addOption(excludeOption)\n .addOption(onlyOption)\n .addOption(throttleOption)\n .hook('preAction', validateExcludeOnly)\n .hook(\n 'preAction',\n ifOptions(\n (opts) => !(opts.from || opts.to) || (opts.from && opts.to),\n async () =>\n exitWith(\n 1,\n 'Exactly one remote source (from) or destination (to) option must be provided'\n )\n )\n )\n // If --from is used, validate the URL and token\n .hook(\n 'preAction',\n ifOptions(\n (opts) => opts.from,\n async (thisCommand) => {\n assertUrlHasProtocol(thisCommand.opts().from, ['https:', 'http:']);\n if (!thisCommand.opts().fromToken) {\n const answers = await inquirer.prompt([\n {\n type: 'password',\n message: 'Please enter your transfer token for the remote Strapi source',\n name: 'fromToken',\n },\n ]);\n if (!answers.fromToken?.length) {\n exitWith(1, 'No token provided for remote source, aborting transfer.');\n }\n thisCommand.opts().fromToken = answers.fromToken;\n }\n\n await getCommanderConfirmMessage(\n 'The transfer will delete all the local Strapi assets and its database. Are you sure you want to proceed?',\n { failMessage: 'Transfer process aborted' }\n )(thisCommand);\n }\n )\n )\n // If --to is used, validate the URL, token, and confirm restore\n .hook(\n 'preAction',\n ifOptions(\n (opts) => opts.to,\n async (thisCommand) => {\n assertUrlHasProtocol(thisCommand.opts().to, ['https:', 'http:']);\n if (!thisCommand.opts().toToken) {\n const answers = await inquirer.prompt([\n {\n type: 'password',\n message: 'Please enter your transfer token for the remote Strapi destination',\n name: 'toToken',\n },\n ]);\n if (!answers.toToken?.length) {\n exitWith(1, 'No token provided for remote destination, aborting transfer.');\n }\n thisCommand.opts().toToken = answers.toToken;\n }\n\n await getCommanderConfirmMessage(\n 'The transfer will delete existing data from the remote Strapi! Are you sure you want to proceed?',\n { failMessage: 'Transfer process aborted' }\n )(thisCommand);\n }\n )\n )\n .action(action)\n );\n};\n\nexport default command;\n","import { buildStrapiCloudCommands as cloudCommands } from '@strapi/cloud-cli';\n\nimport { command as createAdminUser } from './admin/create-user';\nimport { command as resetAdminUserPassword } from './admin/reset-user-password';\nimport { command as listComponents } from './components/list';\nimport { command as configurationDump } from './configuration/dump';\nimport { command as configurationRestore } from './configuration/restore';\nimport { command as listContentTypes } from './content-types/list';\nimport { command as listControllers } from './controllers/list';\nimport { command as listHooks } from './hooks/list';\nimport { command as listMiddlewares } from './middlewares/list';\nimport { command as listPolicies } from './policies/list';\nimport { command as listRoutes } from './routes/list';\nimport { command as listServices } from './services/list';\nimport { command as disableTelemetry } from './telemetry/disable';\nimport { command as enableTelemetry } from './telemetry/enable';\nimport { command as generateTemplates } from './templates/generate';\nimport { command as generateTsTypes } from './ts/generate-types';\nimport { command as buildCommand } from './build';\nimport { command as consoleCommand } from './console';\nimport { command as developCommand } from './develop';\nimport { command as generateCommand } from './generate';\nimport { command as reportCommand } from './report';\nimport { command as startCommand } from './start';\nimport { command as versionCommand } from './version';\nimport exportCommand from './export/command';\nimport importCommand from './import/command';\nimport transferCommand from './transfer/command';\n\nimport { StrapiCommand } from '../types';\n\nexport const commands: StrapiCommand[] = [\n createAdminUser,\n resetAdminUserPassword,\n listComponents,\n configurationDump,\n configurationRestore,\n consoleCommand,\n listContentTypes,\n listControllers,\n generateCommand,\n listHooks,\n listMiddlewares,\n listPolicies,\n reportCommand,\n listRoutes,\n listServices,\n startCommand,\n disableTelemetry,\n enableTelemetry,\n generateTemplates,\n generateTsTypes,\n versionCommand,\n buildCommand,\n developCommand,\n exportCommand,\n importCommand,\n transferCommand,\n /**\n * Cloud\n */\n cloudCommands,\n];\n","import chalk from 'chalk';\nimport ora, { Ora } from 'ora';\nimport * as cliProgress from 'cli-progress';\n\nexport interface LoggerOptions {\n silent?: boolean;\n debug?: boolean;\n timestamp?: boolean;\n}\n\nexport interface Logger {\n warnings: number;\n errors: number;\n debug: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n success: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n log: (...args: unknown[]) => void;\n spinner: (text: string) => Pick<ora.Ora, 'succeed' | 'fail' | 'start' | 'text' | 'isSpinning'>;\n progressBar: (\n totalSize: number,\n text: string\n ) => Pick<cliProgress.SingleBar, 'start' | 'stop' | 'update'>;\n}\n\nconst silentSpinner = {\n succeed() {\n return this;\n },\n fail() {\n return this;\n },\n start() {\n return this;\n },\n text: '',\n isSpinning: false,\n} as Ora;\n\nconst silentProgressBar = {\n start() {\n return this;\n },\n stop() {\n return this;\n },\n update() {\n return this;\n },\n} as unknown as cliProgress.SingleBar;\n\nconst createLogger = (options: LoggerOptions = {}): Logger => {\n const { silent = false, debug = false, timestamp = true } = options;\n\n const state = { errors: 0, warning: 0 };\n\n return {\n get warnings() {\n return state.warning;\n },\n\n get errors() {\n return state.errors;\n },\n\n debug(...args) {\n if (silent || !debug) {\n return;\n }\n\n console.log(\n chalk.cyan(`[DEBUG]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args\n );\n },\n\n info(...args) {\n if (silent) {\n return;\n }\n\n console.info(\n chalk.blue(`[INFO]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args\n );\n },\n\n log(...args) {\n if (silent) {\n return;\n }\n\n console.info(chalk.blue(`${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`), ...args);\n },\n\n success(...args) {\n if (silent) {\n return;\n }\n\n console.info(\n chalk.green(`[SUCCESS]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args\n );\n },\n\n warn(...args) {\n state.warning += 1;\n\n if (silent) {\n return;\n }\n\n console.warn(\n chalk.yellow(`[WARN]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args\n );\n },\n\n error(...args) {\n state.errors += 1;\n\n if (silent) {\n return;\n }\n\n console.error(\n chalk.red(`[ERROR]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args\n );\n },\n\n spinner(text: string) {\n if (silent) {\n return silentSpinner;\n }\n\n return ora(text);\n },\n\n progressBar(totalSize: number, text: string) {\n if (silent) {\n return silentProgressBar;\n }\n\n const progressBar = new cliProgress.SingleBar({\n format: `${text ? `${text} |` : ''}${chalk.green('{bar}')}| {percentage}%`,\n barCompleteChar: '\\u2588',\n barIncompleteChar: '\\u2591',\n hideCursor: true,\n forceRedraw: true,\n });\n\n progressBar.start(totalSize, 0);\n\n return progressBar;\n },\n };\n};\n\nexport { createLogger };\n","import os from 'os';\nimport ts from 'typescript';\nimport type { Logger } from './logger';\n\ninterface TsConfig {\n config: ts.ParsedCommandLine;\n path: string;\n}\n\n/**\n * @description Load a tsconfig.json file and return the parsed config.\n *\n * @internal\n */\nconst loadTsConfig = ({\n cwd,\n path,\n logger,\n}: {\n cwd: string;\n path: string;\n logger: Logger;\n}): TsConfig | undefined => {\n const configPath = ts.findConfigFile(cwd, ts.sys.fileExists, path);\n\n if (!configPath) {\n return undefined;\n }\n\n const configFile = ts.readConfigFile(configPath, ts.sys.readFile);\n\n const parsedConfig = ts.parseJsonConfigFileContent(configFile.config, ts.sys, cwd);\n\n logger.debug(`Loaded user TS config:`, os.EOL, parsedConfig);\n\n return {\n config: parsedConfig,\n path: configPath,\n };\n};\n\nexport { loadTsConfig };\nexport type { TsConfig };\n","import { Command } from 'commander';\n\nimport { commands as strapiCommands } from './commands';\n\nimport { createLogger } from './utils/logger';\nimport { loadTsConfig } from './utils/tsconfig';\nimport { CLIContext } from './types';\nimport { version } from '../../package.json';\n\nconst createCLI = async (argv: string[], command = new Command()) => {\n // Initial program setup\n command.storeOptionsAsProperties(false).allowUnknownOption(true);\n\n // Help command\n command.helpOption('-h, --help', 'Display help for command');\n command.addHelpCommand('help [command]', 'Display help for command');\n\n command.version(version, '-v, --version', 'Output the version number');\n\n const cwd = process.cwd();\n\n const hasDebug = argv.includes('--debug');\n const hasSilent = argv.includes('--silent');\n\n const logger = createLogger({ debug: hasDebug, silent: hasSilent, timestamp: false });\n\n const tsconfig = loadTsConfig({\n cwd,\n path: 'tsconfig.json',\n logger,\n });\n\n const ctx = {\n cwd,\n logger,\n tsconfig,\n } satisfies CLIContext;\n\n // Load all commands\n for (const commandFactory of strapiCommands) {\n try {\n const subCommand = await commandFactory({ command, argv, ctx });\n\n // Add this command to the Commander command object\n if (subCommand) {\n command.addCommand(subCommand);\n }\n } catch (e) {\n console.error(`Failed to load command`, e);\n }\n }\n\n // TODO v6: remove these deprecation notices\n const deprecatedCommands = [\n { name: 'plugin:init', message: 'Please use `npx @strapi/sdk-plugin init` instead.' },\n {\n name: 'plugin:verify',\n message: 'After migrating your plugin to v5, use `strapi-plugin verify`',\n },\n {\n name: 'plugin:watch',\n message: 'After migrating your plugin to v5, use `strapi-plugin watch`',\n },\n {\n name: 'plugin:watch:link',\n message: 'After migrating your plugin to v5, use `strapi-plugin watch:link`',\n },\n {\n name: 'plugin:build',\n message: 'After migrating your plugin to v5, use `strapi-plugin build`',\n },\n ];\n\n // Add hidden commands for deprecatedCommands that output a warning that the command has been removed.\n deprecatedCommands.forEach(({ name, message }) => {\n const deprecated = new Command(name)\n .command(name)\n .description('(deprecated)')\n .action(() => {\n console.warn(\n `The command ${name} has been deprecated. See the Strapi 5 migration guide for more information.`\n );\n if (message) {\n console.warn(message);\n }\n });\n command.addCommand(deprecated, { hidden: true });\n });\n return command;\n};\n\nconst runCLI = async (argv = process.argv, command = new Command()) => {\n const commands = await createCLI(argv, command);\n await commands.parseAsync(argv);\n};\n\nexport { runCLI, createCLI };\n"],"names":["bytesPerKb","sizes","readableBytes","bytes","decimals","padStart","i","Math","floor","log","result","parseFloat","toFixed","exitWith","code","message","options","logger","console","prc","process","chalk","green","error","red","isString","isArray","forEach","msg","exit","assertUrlHasProtocol","url","protocol","toString","some","join","ifOptions","conditionCallback","isMetCallback","isNotMetCallback","command","opts","assertCwdContainsStrapiProject","name","logErrorAndExit","yellow","pkgJSON","require","cwd","has","err","runAction","action","args","Promise","resolve","then","catch","emailValidator","yup","string","email","lowercase","passwordValidator","min","matches","adminCreateSchema","object","shape","password","firstname","trim","required","lastname","promptQuestions","type","validate","value","validEmail","validPassword","createAdmin","appContext","compileStrapi","app","createStrapi","load","user","admin","services","exists","superAdminRole","role","getSuperAdmin","create","isActive","roles","id","registrationToken","cmdOptions","_","isEmpty","stdin","isTTY","inquiry","inquirer","prompt","confirm","ValidationError","errors","createCommand","alias","description","option","changePassword","resetPasswordByEmail","register","list","Object","keys","components","infoTable","CLITable","head","blue","push","destroy","CHUNK_SIZE","file","filePath","pretty","output","fs","createWriteStream","stdout","count","query","exportData","pageCount","ceil","page","results","findMany","limit","offset","orderBy","filter","key","startsWith","environment","tag","str","JSON","stringify","undefined","write","end","length","strategy","input","readFileSync","readStdin","dataToImport","parse","Error","Array","db","importer","createImporter","config","import","printStatistics","reject","setEncoding","on","chunk","read","createReplaceImporter","createMergeImporter","createKeepImporter","stats","created","replaced","conf","matching","where","update","data","merged","existingConf","findOne","merge","untouched","get","server","mount","listRoutes","colWidths","route","methods","map","toUpper","path","sendEvent","event","uuid","fetch","method","body","deviceId","machineID","groupProperties","projectId","headers","e","readPackageJSON","packageObj","fse","readJson","strapi","writePackageJSON","spacing","writeJson","spaces","packageJSONPath","pathExists","telemetryDisabled","updatedPackageJSON","generateNewPackageJSON","randomUUID","warn","debug","silent","verbose","outDir","ignoreDiagnostics","tsUtils","generators","generate","pwd","appDir","rootDir","artifacts","contentTypes","getPackageManager","agent","env","npm_config_user_agent","includes","test","PEER_DEPS","react","checkRequiredDependencies","USE_EXPERIMENTAL_DEPENDENCIES","didInstall","pkg","readPkgUp","os","EOL","packageJson","install","review","entries","reduce","acc","version","dependencies","declaredVersion","wantedVersion","info","installDependencies","argv","execa","stdio","dep","minDeclaredVersion","semver","minVersion","satisfies","installedVersion","getModuleVersion","NODE_ENV","getModule","modulePackagePath","resolveFrom","readFile","res","packageManager","execOptions","encoding","packages","npmArgs","yarnArgs","pnpmArgs","exitCode","failed","getTimer","timings","startTimes","start","performance","now","getTimings","prettyTime","timeInMs","access","loadFile","esbuildOptions","extensions","unregister","mod","default","convertSystemPathToModulePath","sysPath","platform","split","sep","posix","convertModulePathToSystemPath","modulePath","loadEnv","pathToEnv","dotenv","getStrapiAdminEnvVars","defaultEnv","toUpperCase","isError","handleUnexpectedError","stack","boxen","padding","align","YupValidationError","size","details","validatePackageHasStrapi","validatePackageIsPlugin","kind","getEnabledPlugins","runtimeDir","plugins","deps","importName","camelCase","userPluginsFile","loadUserPluginsFile","dirs","userPluginName","userPluginConfig","enabled","relative","PLUGIN_CONFIGS","root","configFile","getMapOfPluginsWithAdmin","pluginImportPaths","values","plugin","localPluginPath","packageJsonPath","existsSync","localAdminPath","exports","ADMIN_APP_FILES","loadUserAppFile","DEFAULT_BROWSERSLIST","createBuildContext","tsconfig","strapiInstance","distDir","autoReload","serveAdminPanel","serverAbsoluteUrl","adminAbsoluteUrl","adminPath","sameOrigin","URL","origin","adminPublicPath","pathname","serverPublicPath","ADMIN_PATH","STRAPI_ADMIN_BACKEND_URL","STRAPI_TELEMETRY_DISABLED","String","telemetry","isDisabled","envKeys","distPath","dist","rm","recursive","force","entry","pluginsWithFront","target","browserslist","loadConfig","customisations","features","bundler","restOptions","buildContext","basePath","getEntryModule","ctx","pluginsObject","pluginsImport","outdent","getDocumentHTML","props","renderToStaticMarkup","createElement","DefaultDocument","AUTO_GENERATED_WARNING","decorateHTMLWithAutoGeneratedWarning","htmlTemplate","replace","writeStaticClientFiles","prettier","mkdir","indexHtml","entryPath","writeFile","format","parser","build","timer","compilingTsSpinner","spinner","compile","configOptions","compilingDuration","text","succeed","contextSpinner","contextDuration","buildingSpinner","buildWebpack","buildVite","buildDuration","fail","nodeBuild","repl","REPL","cleanupDistDirectory","timerName","Date","cleaningSpinner","dirContent","readdir","validFilenames","filename","generatingDuration","develop","polling","watchAdmin","cluster","isPrimary","adminSpinner","adminDuration","worker","send","fork","isWorker","loadStrapiSpinner","bundleWatcher","watch","watchWebpack","watchVite","loadStrapiDuration","generatingTsSpinner","restart","reload","isWatching","isReloading","watcher","chokidar","ignoreInitial","usePolling","ignored","static","public","strings","joinBy","close","nodeDevelop","splice","gen","runCLI","all","reportUUID","Boolean","reportDependencies","debugInfo","launchedAt","arch","EE","database","connection","client","devDependencies","isTSProject","isUsingTypeScript","resolveOutDir","buildDirExists","parseList","item","getParseListWithChoices","choices","errorMessage","invalid","parseInteger","parsedValue","parseInt","isNaN","InvalidOptionArgumentError","parseURL","host","promptEncryptionKey","thisCommand","encrypt","answers","getCommanderConfirmMessage","failMessage","confirmed","confirmMessage","bold","cyan","forceOption","Option","TransferEngineInitializationError","engineDataTransfer","exitMessageText","processCapitalized","slice","pad","n","yyyymmddHHMMSS","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getDefaultExportName","buildTransferTable","resultData","table","Table","totalBytes","totalItems","stage","hAlign","content","aggregates","sort","subkey","subitem","grey","DEFAULT_IGNORED_CONTENT_TYPES","abortTransfer","engine","setSignalHandler","handler","signals","signal","removeAllListeners","createStrapiInstance","level","logLevel","transferDataTypes","TransferGroupPresets","throttleOption","argParser","hideHelp","excludeOption","onlyOption","validateExcludeOnly","exclude","only","choicesInBoth","indexOf","errorColors","fatal","silly","formatDiagnostic","operation","getLogger","createLogger","configs","createOutputFileConfiguration","formats","detailedLogs","severity","colorizeError","params","loadersFactory","defaultLoaders","loaders","updateLoader","createLoader","stageData","elapsedTime","startTime","endTime","elapsed","speed","assign","ora","getLoader","getTransferTelemetryPayload","eventProperties","source","sourceProvider","destination","destinationProvider","getDiffHandler","context","next","workflowsStatus","diffs","uid","diff","concat","endPath","reportWarning","panic","ignoredDiffs","getAssetsBackupHandler","ignore","shouldSkipStage","dataKind","parseRestoreFromOptions","entitiesOptions","include","restoreConfig","entities","assets","configuration","webhook","coreStore","providers","createLocalFileDestinationProvider","fileDataTransfer","createLocalStrapiSourceProvider","strapiDataTransfer","BYTES_IN_MB","isObject","createSourceProvider","createDestinationProvider","createTransferEngine","versionStrategy","schemaStrategy","throttle","transforms","links","link","left","right","entity","diagnostics","onDiagnostic","progress","stream","outFile","transfer","outFileExists","TransferEngineTransferError","getStrapi","compress","maxSizeJsonl","filepath","maxSizeJsonlInMb","isFinite","toNumber","encryption","compression","allowExcessArguments","addOption","hook","createLocalFileSourceProvider","createLocalStrapiDestinationProvider","DEFAULT_CONFLICT_STRATEGY","DEFAULT_VERSION_STRATEGY","DEFAULT_SCHEMA_STRATEGY","sourceOptions","getLocalFileSourceOptions","engineOptions","destinationOptions","autoDestroy","conflictStrategy","restore","onWarning","onSchemaDiff","decompress","decrypt","requiredOption","ext","extname","createRemoteStrapiDestinationProvider","createRemoteStrapiSourceProvider","from","to","fromToken","auth","token","toToken","addErrorHandler","commands","createAdminUser","resetAdminUserPassword","listComponents","configurationDump","configurationRestore","consoleCommand","listContentTypes","listControllers","generateCommand","listHooks","listMiddlewares","listPolicies","reportCommand","listServices","startCommand","disableTelemetry","enableTelemetry","generateTemplates","generateTsTypes","versionCommand","buildCommand","developCommand","exportCommand","importCommand","transferCommand","cloudCommands","silentSpinner","isSpinning","silentProgressBar","stop","timestamp","state","warning","warnings","toISOString","success","progressBar","totalSize","cliProgress","SingleBar","barCompleteChar","barIncompleteChar","hideCursor","forceRedraw","loadTsConfig","configPath","ts","findConfigFile","sys","fileExists","readConfigFile","parsedConfig","parseJsonConfigFileContent","createCLI","Command","storeOptionsAsProperties","allowUnknownOption","helpOption","addHelpCommand","hasDebug","hasSilent","commandFactory","strapiCommands","subCommand","addCommand","deprecatedCommands","deprecated","hidden","parseAsync"],"mappings":"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"}