@strapi/strapi 5.50.2 → 5.51.1

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 (91) hide show
  1. package/dist/cli/commands/export/action.d.ts +3 -0
  2. package/dist/cli/commands/export/action.d.ts.map +1 -1
  3. package/dist/cli/commands/export/command.d.ts.map +1 -1
  4. package/dist/cli/commands/import/action.d.ts +3 -0
  5. package/dist/cli/commands/import/action.d.ts.map +1 -1
  6. package/dist/cli/commands/import/command.d.ts.map +1 -1
  7. package/dist/cli/commands/transfer/action.d.ts +3 -0
  8. package/dist/cli/commands/transfer/action.d.ts.map +1 -1
  9. package/dist/cli/commands/transfer/command.d.ts.map +1 -1
  10. package/dist/cli/utils/data-transfer.d.ts +56 -4
  11. package/dist/cli/utils/data-transfer.d.ts.map +1 -1
  12. package/dist/node/core/admin-vite-alias-modules.d.ts +7 -2
  13. package/dist/node/core/admin-vite-alias-modules.d.ts.map +1 -1
  14. package/dist/node/core/admin-vite-aliases.d.ts +22 -1
  15. package/dist/node/core/admin-vite-aliases.d.ts.map +1 -1
  16. package/dist/node/core/admin-vite-optimize-exclude.d.ts.map +1 -1
  17. package/dist/node/core/admin-vite-singleton-modules.d.ts +14 -0
  18. package/dist/node/core/admin-vite-singleton-modules.d.ts.map +1 -0
  19. package/dist/node/core/dependencies.d.ts.map +1 -1
  20. package/dist/node/core/resolve-module.d.ts +14 -2
  21. package/dist/node/core/resolve-module.d.ts.map +1 -1
  22. package/dist/node/create-build-context.d.ts.map +1 -1
  23. package/dist/node/vite/config.d.ts.map +1 -1
  24. package/dist/node/webpack/config.d.ts.map +1 -1
  25. package/dist/package.json.js +1 -1
  26. package/dist/package.json.mjs +1 -1
  27. package/dist/src/cli/commands/export/action.js +7 -17
  28. package/dist/src/cli/commands/export/action.js.map +1 -1
  29. package/dist/src/cli/commands/export/action.mjs +8 -18
  30. package/dist/src/cli/commands/export/action.mjs.map +1 -1
  31. package/dist/src/cli/commands/export/command.js +1 -1
  32. package/dist/src/cli/commands/export/command.js.map +1 -1
  33. package/dist/src/cli/commands/export/command.mjs +2 -2
  34. package/dist/src/cli/commands/export/command.mjs.map +1 -1
  35. package/dist/src/cli/commands/import/action.js +8 -16
  36. package/dist/src/cli/commands/import/action.js.map +1 -1
  37. package/dist/src/cli/commands/import/action.mjs +9 -17
  38. package/dist/src/cli/commands/import/action.mjs.map +1 -1
  39. package/dist/src/cli/commands/import/command.js +1 -1
  40. package/dist/src/cli/commands/import/command.js.map +1 -1
  41. package/dist/src/cli/commands/import/command.mjs +2 -2
  42. package/dist/src/cli/commands/import/command.mjs.map +1 -1
  43. package/dist/src/cli/commands/transfer/action.js +7 -17
  44. package/dist/src/cli/commands/transfer/action.js.map +1 -1
  45. package/dist/src/cli/commands/transfer/action.mjs +8 -18
  46. package/dist/src/cli/commands/transfer/action.mjs.map +1 -1
  47. package/dist/src/cli/commands/transfer/command.js +1 -1
  48. package/dist/src/cli/commands/transfer/command.js.map +1 -1
  49. package/dist/src/cli/commands/transfer/command.mjs +2 -2
  50. package/dist/src/cli/commands/transfer/command.mjs.map +1 -1
  51. package/dist/src/cli/utils/data-transfer.js +148 -10
  52. package/dist/src/cli/utils/data-transfer.js.map +1 -1
  53. package/dist/src/cli/utils/data-transfer.mjs +138 -12
  54. package/dist/src/cli/utils/data-transfer.mjs.map +1 -1
  55. package/dist/src/node/core/admin-vite-alias-modules.js +10 -1
  56. package/dist/src/node/core/admin-vite-alias-modules.js.map +1 -1
  57. package/dist/src/node/core/admin-vite-alias-modules.mjs +10 -2
  58. package/dist/src/node/core/admin-vite-alias-modules.mjs.map +1 -1
  59. package/dist/src/node/core/admin-vite-aliases.js +44 -5
  60. package/dist/src/node/core/admin-vite-aliases.js.map +1 -1
  61. package/dist/src/node/core/admin-vite-aliases.mjs +44 -7
  62. package/dist/src/node/core/admin-vite-aliases.mjs.map +1 -1
  63. package/dist/src/node/core/admin-vite-optimize-exclude.js +4 -0
  64. package/dist/src/node/core/admin-vite-optimize-exclude.js.map +1 -1
  65. package/dist/src/node/core/admin-vite-optimize-exclude.mjs +4 -0
  66. package/dist/src/node/core/admin-vite-optimize-exclude.mjs.map +1 -1
  67. package/dist/src/node/core/admin-vite-singleton-modules.js +24 -0
  68. package/dist/src/node/core/admin-vite-singleton-modules.js.map +1 -0
  69. package/dist/src/node/core/admin-vite-singleton-modules.mjs +22 -0
  70. package/dist/src/node/core/admin-vite-singleton-modules.mjs.map +1 -0
  71. package/dist/src/node/core/dependencies.js +3 -2
  72. package/dist/src/node/core/dependencies.js.map +1 -1
  73. package/dist/src/node/core/dependencies.mjs +3 -2
  74. package/dist/src/node/core/dependencies.mjs.map +1 -1
  75. package/dist/src/node/core/resolve-module.js +25 -12
  76. package/dist/src/node/core/resolve-module.js.map +1 -1
  77. package/dist/src/node/core/resolve-module.mjs +25 -13
  78. package/dist/src/node/core/resolve-module.mjs.map +1 -1
  79. package/dist/src/node/create-build-context.js +5 -2
  80. package/dist/src/node/create-build-context.js.map +1 -1
  81. package/dist/src/node/create-build-context.mjs +5 -2
  82. package/dist/src/node/create-build-context.mjs.map +1 -1
  83. package/dist/src/node/vite/config.js +13 -1
  84. package/dist/src/node/vite/config.js.map +1 -1
  85. package/dist/src/node/vite/config.mjs +14 -2
  86. package/dist/src/node/vite/config.mjs.map +1 -1
  87. package/dist/src/node/webpack/config.js +5 -0
  88. package/dist/src/node/webpack/config.js.map +1 -1
  89. package/dist/src/node/webpack/config.mjs +5 -0
  90. package/dist/src/node/webpack/config.mjs.map +1 -1
  91. package/package.json +22 -22
@@ -1 +1 @@
1
- {"version":3,"file":"data-transfer.mjs","sources":["../../../../src/cli/utils/data-transfer.ts"],"sourcesContent":["import chalk from 'chalk';\nimport path from 'node:path';\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 {\n readableBytes,\n formatElapsedAndMaybeRemainingLabel,\n TRANSFER_PROGRESS_FIELD_SEP,\n exitWith,\n} 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 IGNORED_CONTENT_TYPE_PREFIXES = ['admin::'];\n\nconst IGNORED_CONTENT_TYPES = [\n 'plugin::content-releases.release',\n 'plugin::content-releases.release-action',\n];\n\nconst isIgnoredContentType = (type: string) =>\n IGNORED_CONTENT_TYPE_PREFIXES.some((prefix) => type.startsWith(prefix)) ||\n IGNORED_CONTENT_TYPES.includes(type);\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 TRANSFER_FILTER_PRESET_DESCRIPTIONS: Record<engineDataTransfer.TransferFilterPreset, string> =\n {\n content: 'entities and links (incl. media library DB records)',\n files: 'upload binaries in public/uploads (not media library DB records)',\n config: 'core store and webhooks',\n };\n\nconst transferFilterPresetsHelp = transferDataTypes\n .map(\n (type) =>\n `${type} (${TRANSFER_FILTER_PRESET_DESCRIPTIONS[type as engineDataTransfer.TransferFilterPreset]})`\n )\n .join('; ');\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: ${transferFilterPresetsHelp}`\n).argParser(getParseListWithChoices(transferDataTypes, 'Invalid options for \"exclude\"'));\n\nconst onlyOption = new Option(\n '--only <command-separated data types>',\n `Include only these types (plus schemas): ${transferFilterPresetsHelp}`\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 verbose?: boolean\n): Parameters<engineDataTransfer.TransferEngine['diagnostics']['onDiagnostic']>[0] => {\n let logger: undefined | winston.Logger;\n let logFileBasename: string | undefined;\n\n const getLogger = () => {\n if (!logger) {\n logFileBasename = `${operation}_${Date.now()}.log`;\n const absoluteLogPath = path.resolve(process.cwd(), logFileBasename);\n\n logger = createLogger(\n configs.createOutputFileConfiguration(\n logFileBasename,\n {\n level: 'info',\n format: formats?.detailedLogs,\n },\n {\n consoleLevel: verbose ? 'info' : 'warn',\n }\n )\n );\n\n logger.info(\n `[${operation}] Diagnostic log file: ${absoluteLogPath} (info-level messages are written here even without --verbose)`\n );\n }\n return logger;\n };\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') {\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 totalBytes?: number;\n totalCount?: number;\n };\n};\n\n/** Stages where throughput is dominated by DB work; items/s is more meaningful than JSON byte rate. */\nconst STAGES_WITH_ITEM_THROUGHPUT = new Set<engineDataTransfer.TransferStage>([\n 'entities',\n 'links',\n]);\n\nconst MAX_ETA_MS = 86_400_000;\n\n/**\n * Linear ETA from completed amount vs total, using average rate so far (done / elapsedMs).\n * Returns null when progress or totals are not usable yet.\n */\nconst estimateEtaMs = (elapsedMs: number, done: number, total: number): number | null => {\n if (elapsedMs < 500 || done <= 0 || total <= 0 || done >= total) {\n return null;\n }\n const ratePerMs = done / elapsedMs;\n const remaining = total - done;\n const etaMs = remaining / ratePerMs;\n if (!Number.isFinite(etaMs) || etaMs <= 0 || etaMs >= MAX_ETA_MS) {\n return null;\n }\n return etaMs;\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 bytes = stageData?.bytes ?? 0;\n const count = stageData?.count ?? 0;\n const totalBytes = stageData?.totalBytes;\n const totalCount = stageData?.totalCount;\n\n const countLabel =\n totalCount != null && totalCount > 0 ? `${count} / ${totalCount}` : String(count);\n const sizeCompact =\n totalBytes != null && totalBytes > 0\n ? `${readableBytes(bytes)} / ${readableBytes(totalBytes)}`\n : readableBytes(bytes);\n\n const parts: string[] = [`${stage}: ${countLabel} transferred`, sizeCompact];\n\n if (elapsedTime > 0 && !stageData?.endTime) {\n if (STAGES_WITH_ITEM_THROUGHPUT.has(stage)) {\n const itemsPerSec = (count * 1000) / elapsedTime;\n parts.push(`${itemsPerSec.toFixed(1)} items/s`);\n } else {\n parts.push(`${readableBytes((bytes * 1000) / elapsedTime)}/s`);\n }\n }\n\n let etaMs: number | null = null;\n if (!stageData?.endTime) {\n if (STAGES_WITH_ITEM_THROUGHPUT.has(stage) && totalCount != null) {\n etaMs = estimateEtaMs(elapsedTime, count, totalCount);\n } else if (totalBytes != null) {\n etaMs = estimateEtaMs(elapsedTime, bytes, totalBytes);\n }\n }\n parts.push(formatElapsedAndMaybeRemainingLabel(elapsedTime ?? 0, etaMs));\n\n loaders[stage].text = parts.join(TRANSFER_PROGRESS_FIELD_SEP);\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\nconst logTransferFilterSummary = (opts: Partial<engineDataTransfer.ITransferEngineOptions>) => {\n const { exclude, only } = opts;\n if (!exclude?.length && !only?.length) {\n return;\n }\n\n const parts: string[] = [];\n if (exclude?.length) {\n parts.push(`excluding ${exclude.join(', ')}`);\n }\n if (only?.length) {\n parts.push(`only ${only.join(', ')}`);\n }\n\n console.log(chalk.dim(`Transfer filters: ${parts.join('; ')}.`));\n\n if (shouldSkipStage(opts, 'files') && !shouldSkipStage(opts, 'content')) {\n console.log(\n chalk.dim(\n 'Note: Media library records (plugin::upload.file, plugin::upload.folder) are still transferred with the rest of your content (the entities stage). Sync upload binaries separately (e.g. rsync public/uploads).'\n )\n );\n }\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 = (\n opts: Partial<engineDataTransfer.ITransferEngineOptions>,\n strapi: Core.Strapi\n) => {\n const entitiesOptions: RestoreConfig['entities'] = {\n exclude: [\n ...Object.keys(strapi.contentTypes).filter(isIgnoredContentType),\n ...IGNORED_CONTENT_TYPES,\n ],\n include: undefined,\n };\n\n const contentInScope = !(\n (opts.only && !opts.only.includes('content')) ||\n opts.exclude?.includes('content')\n );\n\n if (!contentInScope) {\n // Nothing from the entities stage is transferred; do not delete any records beforehand.\n entitiesOptions.include = [];\n } else if (shouldSkipStage(opts, 'config')) {\n // When config is excluded, scope pre-transfer deletion to user content types only.\n // Internal models (e.g. strapi::core-store) must not be wiped via the entities path.\n entitiesOptions.include = Object.keys(strapi.contentTypes).filter(\n (uid) => !isIgnoredContentType(uid)\n );\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 isIgnoredContentType,\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 logTransferFilterSummary,\n};\n"],"names":["errors","TransferEngineInitializationError","engineDataTransfer","exitMessageText","process","error","processCapitalized","toUpperCase","slice","chalk","bold","green","red","pad","n","String","yyyymmddHHMMSS","date","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getDefaultExportName","buildTransferTable","resultData","table","Table","head","map","text","blue","totalBytes","totalItems","Object","keys","forEach","stage","item","push","hAlign","content","count","readableBytes","bytes","aggregates","sort","subkey","subitem","grey","IGNORED_CONTENT_TYPE_PREFIXES","IGNORED_CONTENT_TYPES","isIgnoredContentType","type","some","prefix","startsWith","includes","abortTransfer","engine","strapi","destroy","e","setSignalHandler","handler","signals","signal","removeAllListeners","on","createStrapiInstance","opts","appContext","compileStrapi","app","createStrapi","log","level","logLevel","load","Error","code","transferDataTypes","TransferGroupPresets","TRANSFER_FILTER_PRESET_DESCRIPTIONS","files","config","transferFilterPresetsHelp","join","throttleOption","Option","argParser","parseInteger","hideHelp","excludeOption","getParseListWithChoices","onlyOption","validateExcludeOnly","command","exclude","only","choicesInBoth","filter","indexOf","length","exitWith","errorColors","fatal","silly","yellow","formatDiagnostic","operation","verbose","logger","logFileBasename","getLogger","now","absoluteLogPath","path","resolve","cwd","createLogger","configs","createOutputFileConfiguration","format","formats","detailedLogs","consoleLevel","info","details","kind","message","severity","colorizeError","errorMessage","params","origin","msg","JSON","stringify","warn","err","STAGES_WITH_ITEM_THROUGHPUT","Set","MAX_ETA_MS","estimateEtaMs","elapsedMs","done","total","ratePerMs","remaining","etaMs","Number","isFinite","loadersFactory","defaultLoaders","loaders","updateLoader","data","createLoader","stageData","elapsedTime","startTime","endTime","totalCount","countLabel","sizeCompact","parts","has","itemsPerSec","toFixed","formatElapsedAndMaybeRemainingLabel","TRANSFER_PROGRESS_FIELD_SEP","assign","ora","getLoader","getTransferTelemetryPayload","eventProperties","source","sourceProvider","name","destination","destinationProvider","getDiffHandler","force","action","context","next","workflowsStatus","entries","diffs","uid","diff","concat","endPath","reportWarning","panic","confirmed","confirmMessage","ignoredDiffs","merge","getAssetsBackupHandler","console","ignore","shouldSkipStage","dataKind","logTransferFilterSummary","dim","parseRestoreFromOptions","entitiesOptions","contentTypes","include","undefined","contentInScope","restoreConfig","entities","assets","configuration","webhook","coreStore"],"mappings":"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"}
1
+ {"version":3,"file":"data-transfer.mjs","sources":["../../../../src/cli/utils/data-transfer.ts"],"sourcesContent":["import chalk from 'chalk';\nimport path from 'node:path';\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 {\n readableBytes,\n formatElapsedAndMaybeRemainingLabel,\n TRANSFER_PROGRESS_FIELD_SEP,\n exitWith,\n} from './helpers';\nimport { getParseListWithChoices, parseInteger, parseList, 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 IGNORED_CONTENT_TYPE_PREFIXES = ['admin::'];\n\nconst IGNORED_CONTENT_TYPES = [\n 'plugin::content-releases.release',\n 'plugin::content-releases.release-action',\n];\n\n/** Media library content types — common target for `--exclude-content-types` (see issue #25008). */\nconst UPLOAD_CONTENT_TYPE_UIDS = ['plugin::upload.file', 'plugin::upload.folder'] as const;\n\nconst isIgnoredContentType = (type: string) =>\n IGNORED_CONTENT_TYPE_PREFIXES.some((prefix) => type.startsWith(prefix)) ||\n IGNORED_CONTENT_TYPES.includes(type);\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 MEDIA_LIBRARY_PRESET = 'media-library';\n\nconst TRANSFER_FILTER_PRESET_DESCRIPTIONS: Record<\n engineDataTransfer.TransferFilterPreset | typeof MEDIA_LIBRARY_PRESET,\n string\n> = {\n content: 'entities and links (incl. media library DB records)',\n files: 'upload binaries in public/uploads (not media library DB records)',\n config: 'core store and webhooks',\n [MEDIA_LIBRARY_PRESET]:\n 'upload binaries and media library DB records (files + plugin::upload.file, plugin::upload.folder)',\n};\n\nconst transferExcludePresetChoices = [...transferDataTypes, MEDIA_LIBRARY_PRESET];\n\nconst formatTransferPresetHelp = (types: string[]) =>\n types\n .map(\n (type) =>\n `${type} (${TRANSFER_FILTER_PRESET_DESCRIPTIONS[type as keyof typeof TRANSFER_FILTER_PRESET_DESCRIPTIONS]})`\n )\n .join('; ');\n\nconst transferExcludePresetsHelp = formatTransferPresetHelp(transferExcludePresetChoices);\nconst transferOnlyPresetsHelp = formatTransferPresetHelp(transferDataTypes);\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: ${transferExcludePresetsHelp}`\n).argParser(getParseListWithChoices(transferExcludePresetChoices, 'Invalid options for \"exclude\"'));\n\nconst onlyOption = new Option(\n '--only <command-separated data types>',\n `Include only these types (plus schemas): ${transferOnlyPresetsHelp}`\n).argParser(getParseListWithChoices(transferDataTypes, 'Invalid options for \"only\"'));\n\nconst excludeContentTypesOption = new Option(\n '--exclude-content-types <comma-separated UIDs>',\n `Exclude content types from entities and links (e.g. ${UPLOAD_CONTENT_TYPE_UIDS.join(',')} to omit the media library; or use --exclude media-library to skip binaries and upload records — see issue #25008)`\n).argParser(parseList);\n\nconst onlyContentTypesOption = new Option(\n '--only-content-types <comma-separated UIDs>',\n 'Transfer only these content types in entities and links (e.g. api::article.article)'\n).argParser(parseList);\n\ntype ContentTypeTransferOptions = {\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n};\n\ntype TransferExcludePreset = engineDataTransfer.TransferFilterPreset | typeof MEDIA_LIBRARY_PRESET;\n\ntype TransferCliFilterOptions = Partial<\n Omit<engineDataTransfer.ITransferEngineOptions, 'exclude' | 'only'>\n> & {\n exclude?: TransferExcludePreset[];\n only?: engineDataTransfer.TransferFilterPreset[];\n} & ContentTypeTransferOptions & {\n /** Set when the files stage is auto-skipped because upload types are out of scope. */\n filesAutoExcluded?: boolean;\n };\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 validateContentTypeTransferOptions = (command: Command) => {\n const { excludeContentTypes, onlyContentTypes } = command.opts();\n\n if (!excludeContentTypes?.length || !onlyContentTypes?.length) {\n return;\n }\n\n const overlap = excludeContentTypes.filter((uid: string) => onlyContentTypes.includes(uid));\n if (overlap.length > 0) {\n exitWith(\n 1,\n `Content types may not be used in both \"--exclude-content-types\" and \"--only-content-types\". Found in both: ${overlap.join(\n ','\n )}`\n );\n }\n};\n\nconst assertKnownContentTypes = (uids: string[], strapi: Core.Strapi, flag: string) => {\n const known = new Set(Object.keys(strapi.contentTypes));\n const unknown = uids.filter((uid) => !known.has(uid));\n\n if (unknown.length > 0) {\n exitWith(1, `Unknown content type(s) for ${flag}: ${unknown.join(', ')}`);\n }\n};\n\nconst validateContentTypeTransferOptionsForStrapi = (\n opts: ContentTypeTransferOptions,\n strapi: Core.Strapi\n) => {\n if (opts.excludeContentTypes?.length) {\n assertKnownContentTypes(opts.excludeContentTypes, strapi, '--exclude-content-types');\n }\n\n if (opts.onlyContentTypes?.length) {\n assertKnownContentTypes(opts.onlyContentTypes, strapi, '--only-content-types');\n }\n};\n\nconst shouldIncludeContentTypeInTransfer = (\n uid: string,\n opts: TransferCliFilterOptions\n): boolean => {\n if (isIgnoredContentType(uid)) {\n return false;\n }\n\n if (opts.excludeContentTypes?.includes(uid)) {\n return false;\n }\n\n if (opts.onlyContentTypes?.length) {\n return opts.onlyContentTypes.includes(uid);\n }\n\n return true;\n};\n\nconst createEntityFilter = (opts: TransferCliFilterOptions) => {\n return (entity: { type: string }) => shouldIncludeContentTypeInTransfer(entity.type, opts);\n};\n\nconst createLinkFilter = (opts: TransferCliFilterOptions) => {\n return (link: { left: { type: string }; right: { type: string } }) =>\n shouldIncludeContentTypeInTransfer(link.left.type, opts) &&\n shouldIncludeContentTypeInTransfer(link.right.type, opts);\n};\n\nconst buildTransferTransforms = (opts: TransferCliFilterOptions) => ({\n links: [{ filter: createLinkFilter(opts) }],\n entities: [{ filter: createEntityFilter(opts) }],\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 verbose?: boolean\n): Parameters<engineDataTransfer.TransferEngine['diagnostics']['onDiagnostic']>[0] => {\n let logger: undefined | winston.Logger;\n let logFileBasename: string | undefined;\n\n const getLogger = () => {\n if (!logger) {\n logFileBasename = `${operation}_${Date.now()}.log`;\n const absoluteLogPath = path.resolve(process.cwd(), logFileBasename);\n\n logger = createLogger(\n configs.createOutputFileConfiguration(\n logFileBasename,\n {\n level: 'info',\n format: formats?.detailedLogs,\n },\n {\n consoleLevel: verbose ? 'info' : 'warn',\n }\n )\n );\n\n logger.info(\n `[${operation}] Diagnostic log file: ${absoluteLogPath} (info-level messages are written here even without --verbose)`\n );\n }\n return logger;\n };\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') {\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 totalBytes?: number;\n totalCount?: number;\n };\n};\n\n/** Stages where throughput is dominated by DB work; items/s is more meaningful than JSON byte rate. */\nconst STAGES_WITH_ITEM_THROUGHPUT = new Set<engineDataTransfer.TransferStage>([\n 'entities',\n 'links',\n]);\n\nconst MAX_ETA_MS = 86_400_000;\n\n/**\n * Linear ETA from completed amount vs total, using average rate so far (done / elapsedMs).\n * Returns null when progress or totals are not usable yet.\n */\nconst estimateEtaMs = (elapsedMs: number, done: number, total: number): number | null => {\n if (elapsedMs < 500 || done <= 0 || total <= 0 || done >= total) {\n return null;\n }\n const ratePerMs = done / elapsedMs;\n const remaining = total - done;\n const etaMs = remaining / ratePerMs;\n if (!Number.isFinite(etaMs) || etaMs <= 0 || etaMs >= MAX_ETA_MS) {\n return null;\n }\n return etaMs;\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 bytes = stageData?.bytes ?? 0;\n const count = stageData?.count ?? 0;\n const totalBytes = stageData?.totalBytes;\n const totalCount = stageData?.totalCount;\n\n const countLabel =\n totalCount != null && totalCount > 0 ? `${count} / ${totalCount}` : String(count);\n const sizeCompact =\n totalBytes != null && totalBytes > 0\n ? `${readableBytes(bytes)} / ${readableBytes(totalBytes)}`\n : readableBytes(bytes);\n\n const parts: string[] = [`${stage}: ${countLabel} transferred`, sizeCompact];\n\n if (elapsedTime > 0 && !stageData?.endTime) {\n if (STAGES_WITH_ITEM_THROUGHPUT.has(stage)) {\n const itemsPerSec = (count * 1000) / elapsedTime;\n parts.push(`${itemsPerSec.toFixed(1)} items/s`);\n } else {\n parts.push(`${readableBytes((bytes * 1000) / elapsedTime)}/s`);\n }\n }\n\n let etaMs: number | null = null;\n if (!stageData?.endTime) {\n if (STAGES_WITH_ITEM_THROUGHPUT.has(stage) && totalCount != null) {\n etaMs = estimateEtaMs(elapsedTime, count, totalCount);\n } else if (totalBytes != null) {\n etaMs = estimateEtaMs(elapsedTime, bytes, totalBytes);\n }\n }\n parts.push(formatElapsedAndMaybeRemainingLabel(elapsedTime ?? 0, etaMs));\n\n loaders[stage].text = parts.join(TRANSFER_PROGRESS_FIELD_SEP);\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: Pick<TransferCliFilterOptions, 'exclude' | 'only'>,\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\nconst areUploadContentTypesInTransferScope = (opts: TransferCliFilterOptions): boolean =>\n UPLOAD_CONTENT_TYPE_UIDS.every((uid) => shouldIncludeContentTypeInTransfer(uid, opts));\n\nconst areAllUploadContentTypesOutOfTransferScope = (opts: TransferCliFilterOptions): boolean =>\n UPLOAD_CONTENT_TYPE_UIDS.every((uid) => !shouldIncludeContentTypeInTransfer(uid, opts));\n\nconst isContentStageActive = (opts: TransferCliFilterOptions): boolean =>\n !shouldSkipStage(opts, 'content');\n\nconst expandMediaLibraryPreset = (opts: TransferCliFilterOptions) => {\n if (!opts.exclude?.includes(MEDIA_LIBRARY_PRESET)) {\n return;\n }\n\n const exclude = opts.exclude.filter(\n (item) => item !== MEDIA_LIBRARY_PRESET\n ) as engineDataTransfer.TransferFilterPreset[];\n\n opts.exclude = exclude;\n\n if (!opts.exclude.includes('files')) {\n opts.exclude.push('files');\n }\n\n const excludeContentTypes = new Set(opts.excludeContentTypes ?? []);\n for (const uid of UPLOAD_CONTENT_TYPE_UIDS) {\n excludeContentTypes.add(uid);\n }\n opts.excludeContentTypes = [...excludeContentTypes];\n};\n\nconst autoExcludeFilesWhenUploadTypesOutOfScope = (opts: TransferCliFilterOptions) => {\n if (\n opts.filesAutoExcluded ||\n !isContentStageActive(opts) ||\n opts.only?.includes('files') ||\n shouldSkipStage(opts, 'files') ||\n !areAllUploadContentTypesOutOfTransferScope(opts)\n ) {\n return;\n }\n\n opts.exclude = [...(opts.exclude ?? []), 'files'] as engineDataTransfer.TransferFilterPreset[];\n opts.filesAutoExcluded = true;\n};\n\nconst normalizeTransferFilterOptions = (opts: TransferCliFilterOptions) => {\n expandMediaLibraryPreset(opts);\n autoExcludeFilesWhenUploadTypesOutOfScope(opts);\n return opts;\n};\n\nconst normalizeTransferFilterOptionsHook = (command: Command) => {\n normalizeTransferFilterOptions(command.opts() as TransferCliFilterOptions);\n};\n\nconst logTransferFilterSummary = (opts: Partial<TransferCliFilterOptions>) => {\n const { exclude, only, excludeContentTypes, onlyContentTypes } = opts;\n if (\n !exclude?.length &&\n !only?.length &&\n !excludeContentTypes?.length &&\n !onlyContentTypes?.length\n ) {\n return;\n }\n\n const parts: string[] = [];\n if (exclude?.length) {\n parts.push(`excluding ${exclude.join(', ')}`);\n }\n if (only?.length) {\n parts.push(`only ${only.join(', ')}`);\n }\n\n if (parts.length) {\n console.log(chalk.dim(`Transfer filters: ${parts.join('; ')}.`));\n }\n\n const contentTypeParts: string[] = [];\n if (excludeContentTypes?.length) {\n contentTypeParts.push(`excluding ${excludeContentTypes.join(', ')}`);\n }\n if (onlyContentTypes?.length) {\n contentTypeParts.push(`only ${onlyContentTypes.join(', ')}`);\n }\n\n if (contentTypeParts.length) {\n console.log(chalk.dim(`Content type filters: ${contentTypeParts.join('; ')}.`));\n }\n\n if (opts.filesAutoExcluded) {\n console.log(\n chalk.dim(\n 'Skipping files stage: upload content types are not in transfer scope (plugin::upload.file, plugin::upload.folder).'\n )\n );\n }\n\n if (\n shouldSkipStage(opts, 'files') &&\n !shouldSkipStage(opts, 'content') &&\n areUploadContentTypesInTransferScope(opts) &&\n !opts.filesAutoExcluded\n ) {\n console.log(\n chalk.dim(\n 'Note: Media library records (plugin::upload.file, plugin::upload.folder) are still transferred with the rest of your content (the entities stage). Sync upload binaries separately (e.g. rsync public/uploads).'\n )\n );\n }\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: TransferCliFilterOptions, strapi: Core.Strapi) => {\n const entitiesOptions: RestoreConfig['entities'] = {\n exclude: [\n ...Object.keys(strapi.contentTypes).filter(isIgnoredContentType),\n ...IGNORED_CONTENT_TYPES,\n ...(opts.excludeContentTypes ?? []),\n ],\n include: undefined,\n };\n\n const contentInScope = !(\n (opts.only && !opts.only.includes('content')) ||\n opts.exclude?.includes('content')\n );\n\n if (!contentInScope) {\n // Nothing from the entities stage is transferred; do not delete any records beforehand.\n entitiesOptions.include = [];\n } else if (opts.onlyContentTypes?.length) {\n // Only wipe content types that are being replaced by this transfer.\n entitiesOptions.include = opts.onlyContentTypes;\n } else if (shouldSkipStage(opts, 'config')) {\n // When config is excluded, scope pre-transfer deletion to user content types only.\n // Internal models (e.g. strapi::core-store) must not be wiped via the entities path.\n entitiesOptions.include = Object.keys(strapi.contentTypes).filter(\n (uid) => !isIgnoredContentType(uid) && !opts.excludeContentTypes?.includes(uid)\n );\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 isIgnoredContentType,\n createStrapiInstance,\n excludeOption,\n excludeContentTypesOption,\n onlyContentTypesOption,\n exitMessageText,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n validateContentTypeTransferOptions,\n validateContentTypeTransferOptionsForStrapi,\n normalizeTransferFilterOptions,\n normalizeTransferFilterOptionsHook,\n areUploadContentTypesInTransferScope,\n areAllUploadContentTypesOutOfTransferScope,\n buildTransferTransforms,\n createEntityFilter,\n createLinkFilter,\n formatDiagnostic,\n abortTransfer,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n shouldSkipStage,\n parseRestoreFromOptions,\n UPLOAD_CONTENT_TYPE_UIDS,\n logTransferFilterSummary,\n};\n\nexport type { ContentTypeTransferOptions, TransferCliFilterOptions };\n"],"names":["errors","TransferEngineInitializationError","engineDataTransfer","exitMessageText","process","error","processCapitalized","toUpperCase","slice","chalk","bold","green","red","pad","n","String","yyyymmddHHMMSS","date","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getDefaultExportName","buildTransferTable","resultData","table","Table","head","map","text","blue","totalBytes","totalItems","Object","keys","forEach","stage","item","push","hAlign","content","count","readableBytes","bytes","aggregates","sort","subkey","subitem","grey","IGNORED_CONTENT_TYPE_PREFIXES","IGNORED_CONTENT_TYPES","UPLOAD_CONTENT_TYPE_UIDS","isIgnoredContentType","type","some","prefix","startsWith","includes","abortTransfer","engine","strapi","destroy","e","setSignalHandler","handler","signals","signal","removeAllListeners","on","createStrapiInstance","opts","appContext","compileStrapi","app","createStrapi","log","level","logLevel","load","Error","code","transferDataTypes","TransferGroupPresets","MEDIA_LIBRARY_PRESET","TRANSFER_FILTER_PRESET_DESCRIPTIONS","files","config","transferExcludePresetChoices","formatTransferPresetHelp","types","join","transferExcludePresetsHelp","transferOnlyPresetsHelp","throttleOption","Option","argParser","parseInteger","hideHelp","excludeOption","getParseListWithChoices","onlyOption","excludeContentTypesOption","parseList","onlyContentTypesOption","validateExcludeOnly","command","exclude","only","choicesInBoth","filter","indexOf","length","exitWith","validateContentTypeTransferOptions","excludeContentTypes","onlyContentTypes","overlap","uid","assertKnownContentTypes","uids","flag","known","Set","contentTypes","unknown","has","validateContentTypeTransferOptionsForStrapi","shouldIncludeContentTypeInTransfer","createEntityFilter","entity","createLinkFilter","link","left","right","buildTransferTransforms","links","entities","errorColors","fatal","silly","yellow","formatDiagnostic","operation","verbose","logger","logFileBasename","getLogger","now","absoluteLogPath","path","resolve","cwd","createLogger","configs","createOutputFileConfiguration","format","formats","detailedLogs","consoleLevel","info","details","kind","message","severity","colorizeError","errorMessage","params","origin","msg","JSON","stringify","warn","err","STAGES_WITH_ITEM_THROUGHPUT","MAX_ETA_MS","estimateEtaMs","elapsedMs","done","total","ratePerMs","remaining","etaMs","Number","isFinite","loadersFactory","defaultLoaders","loaders","updateLoader","data","createLoader","stageData","elapsedTime","startTime","endTime","totalCount","countLabel","sizeCompact","parts","itemsPerSec","toFixed","formatElapsedAndMaybeRemainingLabel","TRANSFER_PROGRESS_FIELD_SEP","assign","ora","getLoader","getTransferTelemetryPayload","eventProperties","source","sourceProvider","name","destination","destinationProvider","getDiffHandler","force","action","context","next","workflowsStatus","entries","diffs","diff","concat","endPath","reportWarning","panic","confirmed","confirmMessage","ignoredDiffs","merge","getAssetsBackupHandler","console","ignore","shouldSkipStage","dataKind","areUploadContentTypesInTransferScope","every","areAllUploadContentTypesOutOfTransferScope","isContentStageActive","expandMediaLibraryPreset","add","autoExcludeFilesWhenUploadTypesOutOfScope","filesAutoExcluded","normalizeTransferFilterOptions","normalizeTransferFilterOptionsHook","logTransferFilterSummary","dim","contentTypeParts","parseRestoreFromOptions","entitiesOptions","include","undefined","contentInScope","restoreConfig","assets","configuration","webhook","coreStore"],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
2
 
3
+ var adminViteSingletonModules = require('./admin-vite-singleton-modules.js');
4
+
3
5
  /**
4
6
  * Modules given explicit Vite resolve aliases (and included in resolve.dedupe) for the admin bundle.
5
7
  * Single source of truth for resolution contract tests.
@@ -18,8 +20,15 @@
18
20
  'invariant',
19
21
  'prismjs'
20
22
  ];
21
- /** Same modules passed to Vite resolve.dedupe */ const ADMIN_VITE_DEDUPE_MODULES = ADMIN_VITE_ALIAS_MODULES;
23
+ /**
24
+ * Modules passed to Vite resolve.dedupe (and aliased): the admin alias modules plus the
25
+ * CodeMirror singletons, so every copy collapses onto a single runtime instance.
26
+ */ const ADMIN_VITE_DEDUPE_MODULES = [
27
+ ...ADMIN_VITE_ALIAS_MODULES,
28
+ ...adminViteSingletonModules.ADMIN_VITE_SINGLETON_MODULES
29
+ ];
22
30
 
31
+ exports.ADMIN_VITE_SINGLETON_MODULES = adminViteSingletonModules.ADMIN_VITE_SINGLETON_MODULES;
23
32
  exports.ADMIN_VITE_ALIAS_MODULES = ADMIN_VITE_ALIAS_MODULES;
24
33
  exports.ADMIN_VITE_DEDUPE_MODULES = ADMIN_VITE_DEDUPE_MODULES;
25
34
  //# sourceMappingURL=admin-vite-alias-modules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-vite-alias-modules.js","sources":["../../../../src/node/core/admin-vite-alias-modules.ts"],"sourcesContent":["/**\n * Modules given explicit Vite resolve aliases (and included in resolve.dedupe) for the admin bundle.\n * Single source of truth for resolution contract tests.\n *\n * @internal\n */\nexport const ADMIN_VITE_ALIAS_MODULES = [\n 'react',\n 'react-dom',\n 'react-router-dom',\n 'styled-components',\n 'react-redux',\n '@reduxjs/toolkit',\n '@strapi/design-system',\n '@radix-ui/react-tooltip',\n 'lodash',\n 'invariant',\n 'prismjs',\n] as const;\n\nexport type AdminViteAliasModule = (typeof ADMIN_VITE_ALIAS_MODULES)[number];\n\n/** Same modules passed to Vite resolve.dedupe */\nexport const ADMIN_VITE_DEDUPE_MODULES = ADMIN_VITE_ALIAS_MODULES;\n\n/**\n * Alias modules with exact versions declared in @strapi/admin dependencies (not peers).\n */\nexport const ADMIN_PINNED_ALIAS_MODULES = [\n '@reduxjs/toolkit',\n 'react-redux',\n '@strapi/design-system',\n 'lodash',\n 'invariant',\n] as const satisfies readonly AdminViteAliasModule[];\n"],"names":["ADMIN_VITE_ALIAS_MODULES","ADMIN_VITE_DEDUPE_MODULES"],"mappings":";;AAAA;;;;;UAMaA,wBAAAA,GAA2B;AACtC,IAAA,OAAA;AACA,IAAA,WAAA;AACA,IAAA,kBAAA;AACA,IAAA,mBAAA;AACA,IAAA,aAAA;AACA,IAAA,kBAAA;AACA,IAAA,uBAAA;AACA,IAAA,yBAAA;AACA,IAAA,QAAA;AACA,IAAA,WAAA;AACA,IAAA;;AAKF,kDACO,MAAMC,yBAAAA,GAA4BD;;;;;"}
1
+ {"version":3,"file":"admin-vite-alias-modules.js","sources":["../../../../src/node/core/admin-vite-alias-modules.ts"],"sourcesContent":["import { ADMIN_VITE_SINGLETON_MODULES } from './admin-vite-singleton-modules';\n\n/**\n * Modules given explicit Vite resolve aliases (and included in resolve.dedupe) for the admin bundle.\n * Single source of truth for resolution contract tests.\n *\n * @internal\n */\nexport const ADMIN_VITE_ALIAS_MODULES = [\n 'react',\n 'react-dom',\n 'react-router-dom',\n 'styled-components',\n 'react-redux',\n '@reduxjs/toolkit',\n '@strapi/design-system',\n '@radix-ui/react-tooltip',\n 'lodash',\n 'invariant',\n 'prismjs',\n] as const;\n\nexport type AdminViteAliasModule = (typeof ADMIN_VITE_ALIAS_MODULES)[number];\n\n/**\n * Modules passed to Vite resolve.dedupe (and aliased): the admin alias modules plus the\n * CodeMirror singletons, so every copy collapses onto a single runtime instance.\n */\nexport const ADMIN_VITE_DEDUPE_MODULES = [\n ...ADMIN_VITE_ALIAS_MODULES,\n ...ADMIN_VITE_SINGLETON_MODULES,\n] as const;\n\nexport { ADMIN_VITE_SINGLETON_MODULES };\n\n/**\n * Alias modules with exact versions declared in @strapi/admin dependencies (not peers).\n */\nexport const ADMIN_PINNED_ALIAS_MODULES = [\n '@reduxjs/toolkit',\n 'react-redux',\n '@strapi/design-system',\n 'lodash',\n 'invariant',\n] as const satisfies readonly AdminViteAliasModule[];\n"],"names":["ADMIN_VITE_ALIAS_MODULES","ADMIN_VITE_DEDUPE_MODULES","ADMIN_VITE_SINGLETON_MODULES"],"mappings":";;;;AAEA;;;;;UAMaA,wBAAAA,GAA2B;AACtC,IAAA,OAAA;AACA,IAAA,WAAA;AACA,IAAA,kBAAA;AACA,IAAA,mBAAA;AACA,IAAA,aAAA;AACA,IAAA,kBAAA;AACA,IAAA,uBAAA;AACA,IAAA,yBAAA;AACA,IAAA,QAAA;AACA,IAAA,WAAA;AACA,IAAA;;AAKF;;;UAIaC,yBAAAA,GAA4B;AACpCD,IAAAA,GAAAA,wBAAAA;AACAE,IAAAA,GAAAA;;;;;;;"}
@@ -1,3 +1,5 @@
1
+ import { ADMIN_VITE_SINGLETON_MODULES } from './admin-vite-singleton-modules.mjs';
2
+
1
3
  /**
2
4
  * Modules given explicit Vite resolve aliases (and included in resolve.dedupe) for the admin bundle.
3
5
  * Single source of truth for resolution contract tests.
@@ -16,7 +18,13 @@
16
18
  'invariant',
17
19
  'prismjs'
18
20
  ];
19
- /** Same modules passed to Vite resolve.dedupe */ const ADMIN_VITE_DEDUPE_MODULES = ADMIN_VITE_ALIAS_MODULES;
21
+ /**
22
+ * Modules passed to Vite resolve.dedupe (and aliased): the admin alias modules plus the
23
+ * CodeMirror singletons, so every copy collapses onto a single runtime instance.
24
+ */ const ADMIN_VITE_DEDUPE_MODULES = [
25
+ ...ADMIN_VITE_ALIAS_MODULES,
26
+ ...ADMIN_VITE_SINGLETON_MODULES
27
+ ];
20
28
 
21
- export { ADMIN_VITE_ALIAS_MODULES, ADMIN_VITE_DEDUPE_MODULES };
29
+ export { ADMIN_VITE_ALIAS_MODULES, ADMIN_VITE_DEDUPE_MODULES, ADMIN_VITE_SINGLETON_MODULES };
22
30
  //# sourceMappingURL=admin-vite-alias-modules.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-vite-alias-modules.mjs","sources":["../../../../src/node/core/admin-vite-alias-modules.ts"],"sourcesContent":["/**\n * Modules given explicit Vite resolve aliases (and included in resolve.dedupe) for the admin bundle.\n * Single source of truth for resolution contract tests.\n *\n * @internal\n */\nexport const ADMIN_VITE_ALIAS_MODULES = [\n 'react',\n 'react-dom',\n 'react-router-dom',\n 'styled-components',\n 'react-redux',\n '@reduxjs/toolkit',\n '@strapi/design-system',\n '@radix-ui/react-tooltip',\n 'lodash',\n 'invariant',\n 'prismjs',\n] as const;\n\nexport type AdminViteAliasModule = (typeof ADMIN_VITE_ALIAS_MODULES)[number];\n\n/** Same modules passed to Vite resolve.dedupe */\nexport const ADMIN_VITE_DEDUPE_MODULES = ADMIN_VITE_ALIAS_MODULES;\n\n/**\n * Alias modules with exact versions declared in @strapi/admin dependencies (not peers).\n */\nexport const ADMIN_PINNED_ALIAS_MODULES = [\n '@reduxjs/toolkit',\n 'react-redux',\n '@strapi/design-system',\n 'lodash',\n 'invariant',\n] as const satisfies readonly AdminViteAliasModule[];\n"],"names":["ADMIN_VITE_ALIAS_MODULES","ADMIN_VITE_DEDUPE_MODULES"],"mappings":"AAAA;;;;;UAMaA,wBAAAA,GAA2B;AACtC,IAAA,OAAA;AACA,IAAA,WAAA;AACA,IAAA,kBAAA;AACA,IAAA,mBAAA;AACA,IAAA,aAAA;AACA,IAAA,kBAAA;AACA,IAAA,uBAAA;AACA,IAAA,yBAAA;AACA,IAAA,QAAA;AACA,IAAA,WAAA;AACA,IAAA;;AAKF,kDACO,MAAMC,yBAAAA,GAA4BD;;;;"}
1
+ {"version":3,"file":"admin-vite-alias-modules.mjs","sources":["../../../../src/node/core/admin-vite-alias-modules.ts"],"sourcesContent":["import { ADMIN_VITE_SINGLETON_MODULES } from './admin-vite-singleton-modules';\n\n/**\n * Modules given explicit Vite resolve aliases (and included in resolve.dedupe) for the admin bundle.\n * Single source of truth for resolution contract tests.\n *\n * @internal\n */\nexport const ADMIN_VITE_ALIAS_MODULES = [\n 'react',\n 'react-dom',\n 'react-router-dom',\n 'styled-components',\n 'react-redux',\n '@reduxjs/toolkit',\n '@strapi/design-system',\n '@radix-ui/react-tooltip',\n 'lodash',\n 'invariant',\n 'prismjs',\n] as const;\n\nexport type AdminViteAliasModule = (typeof ADMIN_VITE_ALIAS_MODULES)[number];\n\n/**\n * Modules passed to Vite resolve.dedupe (and aliased): the admin alias modules plus the\n * CodeMirror singletons, so every copy collapses onto a single runtime instance.\n */\nexport const ADMIN_VITE_DEDUPE_MODULES = [\n ...ADMIN_VITE_ALIAS_MODULES,\n ...ADMIN_VITE_SINGLETON_MODULES,\n] as const;\n\nexport { ADMIN_VITE_SINGLETON_MODULES };\n\n/**\n * Alias modules with exact versions declared in @strapi/admin dependencies (not peers).\n */\nexport const ADMIN_PINNED_ALIAS_MODULES = [\n '@reduxjs/toolkit',\n 'react-redux',\n '@strapi/design-system',\n 'lodash',\n 'invariant',\n] as const satisfies readonly AdminViteAliasModule[];\n"],"names":["ADMIN_VITE_ALIAS_MODULES","ADMIN_VITE_DEDUPE_MODULES","ADMIN_VITE_SINGLETON_MODULES"],"mappings":";;AAEA;;;;;UAMaA,wBAAAA,GAA2B;AACtC,IAAA,OAAA;AACA,IAAA,WAAA;AACA,IAAA,kBAAA;AACA,IAAA,mBAAA;AACA,IAAA,aAAA;AACA,IAAA,kBAAA;AACA,IAAA,uBAAA;AACA,IAAA,yBAAA;AACA,IAAA,QAAA;AACA,IAAA,WAAA;AACA,IAAA;;AAKF;;;UAIaC,yBAAAA,GAA4B;AACpCD,IAAAA,GAAAA,wBAAAA;AACAE,IAAAA,GAAAA;;;;;"}
@@ -2,15 +2,54 @@
2
2
 
3
3
  var adminViteAliasModules = require('./admin-vite-alias-modules.js');
4
4
  var resolveModule = require('./resolve-module.js');
5
+ var adminViteSingletonModules = require('./admin-vite-singleton-modules.js');
5
6
 
6
7
  /**
7
- * Vite resolve.alias entries for the admin bundle — every path comes from @strapi/admin's closure.
8
+ * Vite resolve.alias entries for the admin bundle.
9
+ *
10
+ * Admin alias modules resolve from @strapi/admin's closure. CodeMirror singletons resolve
11
+ * from @strapi/design-system's closure (the real consumer), tolerantly: optional/transitive
12
+ * CodeMirror packages that cannot be resolved are skipped rather than crashing the build
13
+ *
14
+ * @internal
15
+ */ const buildAdminViteResolveAliases = ()=>Object.fromEntries([
16
+ ...adminViteAliasModules.ADMIN_VITE_ALIAS_MODULES.map((mod)=>[
17
+ mod,
18
+ resolveModule.getModulePath(mod)
19
+ ]),
20
+ ...buildSingletonAliasEntries()
21
+ ]);
22
+ /**
23
+ * Resolve the CodeMirror singleton aliases from @strapi/design-system's closure, skipping any
24
+ * package that cannot be resolved (e.g. optional or transitive CodeMirror packages not installed).
25
+ *
26
+ * @internal
27
+ */ const buildSingletonAliasEntries = ()=>{
28
+ const entries = [];
29
+ for (const mod of adminViteSingletonModules.ADMIN_VITE_SINGLETON_MODULES){
30
+ try {
31
+ entries.push([
32
+ mod,
33
+ resolveModule.getModulePathFrom('@strapi/design-system', mod)
34
+ ]);
35
+ } catch {
36
+ // Optional/transitive CodeMirror package not resolvable here — skip it rather than
37
+ // throwing, so a missing singleton never breaks the admin build.
38
+ }
39
+ }
40
+ return entries;
41
+ };
42
+ /**
43
+ * Names of the CodeMirror singletons that actually resolve from @strapi/design-system's closure.
44
+ *
45
+ * Mirrors buildSingletonAliasEntries so optimizeDeps.include stays in lockstep with resolve.alias:
46
+ * a singleton that cannot be aliased must not be forced into pre-bundling either, or Vite chokes
47
+ * on an unresolvable optimizeDeps.include entry.
8
48
  *
9
49
  * @internal
10
- */ const buildAdminViteResolveAliases = ()=>Object.fromEntries(adminViteAliasModules.ADMIN_VITE_ALIAS_MODULES.map((mod)=>[
11
- mod,
12
- resolveModule.getModulePath(mod)
13
- ]));
50
+ */ const getResolvableSingletonModules = ()=>buildSingletonAliasEntries().map(([mod])=>mod);
14
51
 
15
52
  exports.buildAdminViteResolveAliases = buildAdminViteResolveAliases;
53
+ exports.buildSingletonAliasEntries = buildSingletonAliasEntries;
54
+ exports.getResolvableSingletonModules = getResolvableSingletonModules;
16
55
  //# sourceMappingURL=admin-vite-aliases.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-vite-aliases.js","sources":["../../../../src/node/core/admin-vite-aliases.ts"],"sourcesContent":["import { ADMIN_VITE_ALIAS_MODULES } from './admin-vite-alias-modules';\nimport { getModulePath } from './resolve-module';\n\n/**\n * Vite resolve.alias entries for the admin bundle every path comes from @strapi/admin's closure.\n *\n * @internal\n */\nexport const buildAdminViteResolveAliases = (): Record<string, string> =>\n Object.fromEntries(ADMIN_VITE_ALIAS_MODULES.map((mod) => [mod, getModulePath(mod)]));\n"],"names":["buildAdminViteResolveAliases","Object","fromEntries","ADMIN_VITE_ALIAS_MODULES","map","mod","getModulePath"],"mappings":";;;;;AAGA;;;;IAKO,MAAMA,4BAAAA,GAA+B,IAC1CC,MAAAA,CAAOC,WAAW,CAACC,8CAAAA,CAAyBC,GAAG,CAAC,CAACC,GAAAA,GAAQ;AAACA,YAAAA,GAAAA;YAAKC,2BAAAA,CAAcD,GAAAA;SAAK,CAAA;;;;"}
1
+ {"version":3,"file":"admin-vite-aliases.js","sources":["../../../../src/node/core/admin-vite-aliases.ts"],"sourcesContent":["import { ADMIN_VITE_ALIAS_MODULES, ADMIN_VITE_SINGLETON_MODULES } from './admin-vite-alias-modules';\nimport { getModulePath, getModulePathFrom } from './resolve-module';\n\n/**\n * Vite resolve.alias entries for the admin bundle.\n *\n * Admin alias modules resolve from @strapi/admin's closure. CodeMirror singletons resolve\n * from @strapi/design-system's closure (the real consumer), tolerantly: optional/transitive\n * CodeMirror packages that cannot be resolved are skipped rather than crashing the build\n *\n * @internal\n */\nexport const buildAdminViteResolveAliases = (): Record<string, string> =>\n Object.fromEntries([\n ...ADMIN_VITE_ALIAS_MODULES.map((mod) => [mod, getModulePath(mod)] as const),\n ...buildSingletonAliasEntries(),\n ]);\n\n/**\n * Resolve the CodeMirror singleton aliases from @strapi/design-system's closure, skipping any\n * package that cannot be resolved (e.g. optional or transitive CodeMirror packages not installed).\n *\n * @internal\n */\nexport const buildSingletonAliasEntries = (): Array<readonly [string, string]> => {\n const entries: Array<readonly [string, string]> = [];\n\n for (const mod of ADMIN_VITE_SINGLETON_MODULES) {\n try {\n entries.push([mod, getModulePathFrom('@strapi/design-system', mod)] as const);\n } catch {\n // Optional/transitive CodeMirror package not resolvable here — skip it rather than\n // throwing, so a missing singleton never breaks the admin build.\n }\n }\n\n return entries;\n};\n\n/**\n * Names of the CodeMirror singletons that actually resolve from @strapi/design-system's closure.\n *\n * Mirrors buildSingletonAliasEntries so optimizeDeps.include stays in lockstep with resolve.alias:\n * a singleton that cannot be aliased must not be forced into pre-bundling either, or Vite chokes\n * on an unresolvable optimizeDeps.include entry.\n *\n * @internal\n */\nexport const getResolvableSingletonModules = (): string[] =>\n buildSingletonAliasEntries().map(([mod]) => mod);\n"],"names":["buildAdminViteResolveAliases","Object","fromEntries","ADMIN_VITE_ALIAS_MODULES","map","mod","getModulePath","buildSingletonAliasEntries","entries","ADMIN_VITE_SINGLETON_MODULES","push","getModulePathFrom","getResolvableSingletonModules"],"mappings":";;;;;;AAGA;;;;;;;;AAQC,IACM,MAAMA,4BAAAA,GAA+B,IAC1CC,MAAAA,CAAOC,WAAW,CAAC;WACdC,8CAAAA,CAAyBC,GAAG,CAAC,CAACC,GAAAA,GAAQ;AAACA,gBAAAA,GAAAA;gBAAKC,2BAAAA,CAAcD,GAAAA;AAAK,aAAA,CAAA;AAC/DE,QAAAA,GAAAA,0BAAAA;KACJ;AAEH;;;;;UAMaA,0BAAAA,GAA6B,IAAA;AACxC,IAAA,MAAMC,UAA4C,EAAE;IAEpD,KAAK,MAAMH,OAAOI,sDAAAA,CAA8B;QAC9C,IAAI;AACFD,YAAAA,OAAAA,CAAQE,IAAI,CAAC;AAACL,gBAAAA,GAAAA;AAAKM,gBAAAA,+BAAAA,CAAkB,uBAAA,EAAyBN,GAAAA;AAAK,aAAA,CAAA;AACrE,QAAA,CAAA,CAAE,OAAM;;;AAGR,QAAA;AACF,IAAA;IAEA,OAAOG,OAAAA;AACT;AAEA;;;;;;;;IASO,MAAMI,6BAAAA,GAAgC,IAC3CL,0BAAAA,EAAAA,CAA6BH,GAAG,CAAC,CAAC,CAACC,GAAAA,CAAI,GAAKA,GAAAA;;;;;;"}
@@ -1,14 +1,51 @@
1
1
  import { ADMIN_VITE_ALIAS_MODULES } from './admin-vite-alias-modules.mjs';
2
- import { getModulePath } from './resolve-module.mjs';
2
+ import { getModulePathFrom, getModulePath } from './resolve-module.mjs';
3
+ import { ADMIN_VITE_SINGLETON_MODULES } from './admin-vite-singleton-modules.mjs';
3
4
 
4
5
  /**
5
- * Vite resolve.alias entries for the admin bundle — every path comes from @strapi/admin's closure.
6
+ * Vite resolve.alias entries for the admin bundle.
7
+ *
8
+ * Admin alias modules resolve from @strapi/admin's closure. CodeMirror singletons resolve
9
+ * from @strapi/design-system's closure (the real consumer), tolerantly: optional/transitive
10
+ * CodeMirror packages that cannot be resolved are skipped rather than crashing the build
11
+ *
12
+ * @internal
13
+ */ const buildAdminViteResolveAliases = ()=>Object.fromEntries([
14
+ ...ADMIN_VITE_ALIAS_MODULES.map((mod)=>[
15
+ mod,
16
+ getModulePath(mod)
17
+ ]),
18
+ ...buildSingletonAliasEntries()
19
+ ]);
20
+ /**
21
+ * Resolve the CodeMirror singleton aliases from @strapi/design-system's closure, skipping any
22
+ * package that cannot be resolved (e.g. optional or transitive CodeMirror packages not installed).
23
+ *
24
+ * @internal
25
+ */ const buildSingletonAliasEntries = ()=>{
26
+ const entries = [];
27
+ for (const mod of ADMIN_VITE_SINGLETON_MODULES){
28
+ try {
29
+ entries.push([
30
+ mod,
31
+ getModulePathFrom('@strapi/design-system', mod)
32
+ ]);
33
+ } catch {
34
+ // Optional/transitive CodeMirror package not resolvable here — skip it rather than
35
+ // throwing, so a missing singleton never breaks the admin build.
36
+ }
37
+ }
38
+ return entries;
39
+ };
40
+ /**
41
+ * Names of the CodeMirror singletons that actually resolve from @strapi/design-system's closure.
42
+ *
43
+ * Mirrors buildSingletonAliasEntries so optimizeDeps.include stays in lockstep with resolve.alias:
44
+ * a singleton that cannot be aliased must not be forced into pre-bundling either, or Vite chokes
45
+ * on an unresolvable optimizeDeps.include entry.
6
46
  *
7
47
  * @internal
8
- */ const buildAdminViteResolveAliases = ()=>Object.fromEntries(ADMIN_VITE_ALIAS_MODULES.map((mod)=>[
9
- mod,
10
- getModulePath(mod)
11
- ]));
48
+ */ const getResolvableSingletonModules = ()=>buildSingletonAliasEntries().map(([mod])=>mod);
12
49
 
13
- export { buildAdminViteResolveAliases };
50
+ export { buildAdminViteResolveAliases, buildSingletonAliasEntries, getResolvableSingletonModules };
14
51
  //# sourceMappingURL=admin-vite-aliases.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-vite-aliases.mjs","sources":["../../../../src/node/core/admin-vite-aliases.ts"],"sourcesContent":["import { ADMIN_VITE_ALIAS_MODULES } from './admin-vite-alias-modules';\nimport { getModulePath } from './resolve-module';\n\n/**\n * Vite resolve.alias entries for the admin bundle every path comes from @strapi/admin's closure.\n *\n * @internal\n */\nexport const buildAdminViteResolveAliases = (): Record<string, string> =>\n Object.fromEntries(ADMIN_VITE_ALIAS_MODULES.map((mod) => [mod, getModulePath(mod)]));\n"],"names":["buildAdminViteResolveAliases","Object","fromEntries","ADMIN_VITE_ALIAS_MODULES","map","mod","getModulePath"],"mappings":";;;AAGA;;;;IAKO,MAAMA,4BAAAA,GAA+B,IAC1CC,MAAAA,CAAOC,WAAW,CAACC,wBAAAA,CAAyBC,GAAG,CAAC,CAACC,GAAAA,GAAQ;AAACA,YAAAA,GAAAA;YAAKC,aAAAA,CAAcD,GAAAA;SAAK,CAAA;;;;"}
1
+ {"version":3,"file":"admin-vite-aliases.mjs","sources":["../../../../src/node/core/admin-vite-aliases.ts"],"sourcesContent":["import { ADMIN_VITE_ALIAS_MODULES, ADMIN_VITE_SINGLETON_MODULES } from './admin-vite-alias-modules';\nimport { getModulePath, getModulePathFrom } from './resolve-module';\n\n/**\n * Vite resolve.alias entries for the admin bundle.\n *\n * Admin alias modules resolve from @strapi/admin's closure. CodeMirror singletons resolve\n * from @strapi/design-system's closure (the real consumer), tolerantly: optional/transitive\n * CodeMirror packages that cannot be resolved are skipped rather than crashing the build\n *\n * @internal\n */\nexport const buildAdminViteResolveAliases = (): Record<string, string> =>\n Object.fromEntries([\n ...ADMIN_VITE_ALIAS_MODULES.map((mod) => [mod, getModulePath(mod)] as const),\n ...buildSingletonAliasEntries(),\n ]);\n\n/**\n * Resolve the CodeMirror singleton aliases from @strapi/design-system's closure, skipping any\n * package that cannot be resolved (e.g. optional or transitive CodeMirror packages not installed).\n *\n * @internal\n */\nexport const buildSingletonAliasEntries = (): Array<readonly [string, string]> => {\n const entries: Array<readonly [string, string]> = [];\n\n for (const mod of ADMIN_VITE_SINGLETON_MODULES) {\n try {\n entries.push([mod, getModulePathFrom('@strapi/design-system', mod)] as const);\n } catch {\n // Optional/transitive CodeMirror package not resolvable here — skip it rather than\n // throwing, so a missing singleton never breaks the admin build.\n }\n }\n\n return entries;\n};\n\n/**\n * Names of the CodeMirror singletons that actually resolve from @strapi/design-system's closure.\n *\n * Mirrors buildSingletonAliasEntries so optimizeDeps.include stays in lockstep with resolve.alias:\n * a singleton that cannot be aliased must not be forced into pre-bundling either, or Vite chokes\n * on an unresolvable optimizeDeps.include entry.\n *\n * @internal\n */\nexport const getResolvableSingletonModules = (): string[] =>\n buildSingletonAliasEntries().map(([mod]) => mod);\n"],"names":["buildAdminViteResolveAliases","Object","fromEntries","ADMIN_VITE_ALIAS_MODULES","map","mod","getModulePath","buildSingletonAliasEntries","entries","ADMIN_VITE_SINGLETON_MODULES","push","getModulePathFrom","getResolvableSingletonModules"],"mappings":";;;;AAGA;;;;;;;;AAQC,IACM,MAAMA,4BAAAA,GAA+B,IAC1CC,MAAAA,CAAOC,WAAW,CAAC;WACdC,wBAAAA,CAAyBC,GAAG,CAAC,CAACC,GAAAA,GAAQ;AAACA,gBAAAA,GAAAA;gBAAKC,aAAAA,CAAcD,GAAAA;AAAK,aAAA,CAAA;AAC/DE,QAAAA,GAAAA,0BAAAA;KACJ;AAEH;;;;;UAMaA,0BAAAA,GAA6B,IAAA;AACxC,IAAA,MAAMC,UAA4C,EAAE;IAEpD,KAAK,MAAMH,OAAOI,4BAAAA,CAA8B;QAC9C,IAAI;AACFD,YAAAA,OAAAA,CAAQE,IAAI,CAAC;AAACL,gBAAAA,GAAAA;AAAKM,gBAAAA,iBAAAA,CAAkB,uBAAA,EAAyBN,GAAAA;AAAK,aAAA,CAAA;AACrE,QAAA,CAAA,CAAE,OAAM;;;AAGR,QAAA;AACF,IAAA;IAEA,OAAOG,OAAAA;AACT;AAEA;;;;;;;;IASO,MAAMI,6BAAAA,GAAgC,IAC3CL,0BAAAA,EAAAA,CAA6BH,GAAG,CAAC,CAAC,CAACC,GAAAA,CAAI,GAAKA,GAAAA;;;;"}
@@ -5,6 +5,7 @@ var fs = require('node:fs/promises');
5
5
  var readPkgUp = require('read-pkg-up');
6
6
  var adminViteAliasModules = require('./admin-vite-alias-modules.js');
7
7
  var dependencies = require('./dependencies.js');
8
+ var adminViteSingletonModules = require('./admin-vite-singleton-modules.js');
8
9
 
9
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
11
 
@@ -23,8 +24,11 @@ const REACT_PEER_DEPENDENCIES = new Set([
23
24
  * The admin entry host (@strapi/strapi) must never land in optimizeDeps.exclude (#26944, #27014).
24
25
  * CJS-only deps imported by @strapi/admin (e.g. invariant, lodash) belong in optimizeDeps.include
25
26
  * (see vite/config.ts — #26964, #26944, #27014).
27
+ * The CodeMirror singletons (e.g. @uiw/react-codemirror — ESM with a React peer) match the
28
+ * exclude heuristic but must stay pre-bundled so the admin keeps a single instance
26
29
  */ const PINNED_OPTIMIZE_MODULES = new Set([
27
30
  ...adminViteAliasModules.ADMIN_VITE_ALIAS_MODULES,
31
+ ...adminViteSingletonModules.ADMIN_VITE_SINGLETON_MODULES,
28
32
  '@strapi/strapi'
29
33
  ]);
30
34
  const isOfficialStrapiPackage = (name)=>name.startsWith('@strapi/');
@@ -1 +1 @@
1
- {"version":3,"file":"admin-vite-optimize-exclude.js","sources":["../../../../src/node/core/admin-vite-optimize-exclude.ts"],"sourcesContent":["import path from 'node:path';\nimport fs from 'node:fs/promises';\nimport readPkgUp from 'read-pkg-up';\n\nimport { ADMIN_VITE_ALIAS_MODULES } from './admin-vite-alias-modules';\nimport { getModule, type PackageJson } from './dependencies';\nimport type { PluginMeta } from './plugins';\n\nconst REACT_PEER_DEPENDENCIES = new Set(['react', 'react-dom']);\n\n/**\n * Packages explicitly pre-bundled or aliased for the admin singleton contract.\n * Never auto-exclude these — they must stay on the optimizeDeps.include / dedupe path.\n *\n * The admin entry host (@strapi/strapi) must never land in optimizeDeps.exclude (#26944, #27014).\n * CJS-only deps imported by @strapi/admin (e.g. invariant, lodash) belong in optimizeDeps.include\n * (see vite/config.ts — #26964, #26944, #27014).\n */\nconst PINNED_OPTIMIZE_MODULES = new Set<string>([...ADMIN_VITE_ALIAS_MODULES, '@strapi/strapi']);\n\nconst isOfficialStrapiPackage = (name: string): boolean => name.startsWith('@strapi/');\n\ntype PackageExportEntry =\n | string\n | {\n import?: string;\n require?: string;\n default?: string;\n };\n\nconst getRootPackageExport = (pkg: PackageJson): PackageExportEntry | undefined => {\n const exportsField = pkg.exports as Record<string, PackageExportEntry> | string | undefined;\n\n if (!exportsField || typeof exportsField === 'string') {\n return undefined;\n }\n\n return exportsField['.'];\n};\n\n/**\n * @internal exported for tests\n */\nexport const isEsmPackage = (pkg: PackageJson): boolean => {\n if (pkg.type === 'module') {\n return true;\n }\n\n const rootExport = getRootPackageExport(pkg);\n\n return (\n typeof rootExport === 'object' &&\n rootExport !== null &&\n 'import' in rootExport &&\n typeof rootExport.import === 'string'\n );\n};\n\n/**\n * @internal exported for tests\n */\nexport const hasReactPeerDependency = (pkg: PackageJson): boolean =>\n Object.keys(pkg.peerDependencies ?? {}).some((name) => REACT_PEER_DEPENDENCIES.has(name));\n\n/**\n * Targets libraries that ship a pre-built dist bundle (e.g. plugin UI kits) rather than\n * source packages like react-intl that still benefit from Vite's dep optimizer.\n *\n * @internal exported for tests\n */\nexport const shipsPreBuiltDist = (pkg: PackageJson): boolean => {\n const rootExport = getRootPackageExport(pkg);\n const exportImport =\n typeof rootExport === 'object' && rootExport !== null && 'import' in rootExport\n ? rootExport.import\n : undefined;\n\n const entryPaths = [pkg.module, pkg.main, exportImport].filter(\n (entry): entry is string => typeof entry === 'string'\n );\n\n if (\n entryPaths.some(\n (entry) =>\n entry.includes('/dist/') || entry.startsWith('./dist/') || entry.startsWith('dist/')\n )\n ) {\n return true;\n }\n\n return (\n Array.isArray(pkg.files) &&\n pkg.files.some((file) => file === 'dist' || file.startsWith('dist/'))\n );\n};\n\n/**\n * @internal exported for tests\n */\nexport const shouldExcludeFromOptimizeDeps = (pkg: PackageJson): boolean =>\n hasReactPeerDependency(pkg) && isEsmPackage(pkg) && shipsPreBuiltDist(pkg);\n\n/**\n * @internal exported for tests\n */\nexport const getPluginPackageName = (modulePath: string): string => {\n if (modulePath.startsWith('@')) {\n const [scope, name] = modulePath.split('/');\n\n return `${scope}/${name}`;\n }\n\n return modulePath.split('/')[0] ?? modulePath;\n};\n\nconst collectDependencyNames = (pkg: PackageJson): string[] => {\n const names = new Set<string>();\n\n for (const section of [pkg.dependencies, pkg.devDependencies] as const) {\n if (section) {\n for (const name of Object.keys(section)) {\n names.add(name);\n }\n }\n }\n\n return [...names];\n};\n\nconst getPluginPackageJson = async (\n plugin: PluginMeta,\n cwd: string\n): Promise<PackageJson | null> => {\n if (plugin.type === 'local' && plugin.path) {\n try {\n const content = await fs.readFile(path.join(plugin.path, 'package.json'), 'utf8');\n\n return JSON.parse(content) as PackageJson;\n } catch {\n return null;\n }\n }\n\n return getModule(getPluginPackageName(plugin.modulePath), cwd);\n};\n\nconst loadAppPackageJson = async (cwd: string): Promise<PackageJson | null> => {\n const result = await readPkgUp({ cwd });\n\n return result?.packageJson ?? null;\n};\n\n/**\n * Pre-built ESM libraries with React peers (shared plugin UI kits) are incompatible with\n * Strapi's React/design-system pre-bundling. Skip dep optimization so they resolve through\n * the admin resolve aliases instead of being re-bundled by Vite.\n *\n * Scans app and plugin dependency trees (#26944). Official @strapi/* packages and pinned\n * singletons are never auto-excluded — @strapi/strapi matches the heuristic but must stay on\n * the optimizeDeps.include path (#26944, #27014).\n *\n * @internal\n */\nexport const collectAdminOptimizeDepsExclude = async (\n cwd: string,\n plugins: PluginMeta[]\n): Promise<string[]> => {\n const candidateNames = new Set<string>();\n const appPkg = await loadAppPackageJson(cwd);\n\n if (appPkg) {\n for (const name of collectDependencyNames(appPkg)) {\n candidateNames.add(name);\n }\n }\n\n for (const plugin of plugins) {\n const pluginPkg = await getPluginPackageJson(plugin, cwd);\n\n if (pluginPkg) {\n for (const name of collectDependencyNames(pluginPkg)) {\n candidateNames.add(name);\n }\n }\n }\n\n const exclude: string[] = [];\n\n for (const name of candidateNames) {\n if (PINNED_OPTIMIZE_MODULES.has(name) || isOfficialStrapiPackage(name)) {\n continue;\n }\n\n const pkg = await getModule(name, cwd);\n\n if (pkg && shouldExcludeFromOptimizeDeps(pkg)) {\n exclude.push(name);\n }\n }\n\n return exclude.sort();\n};\n"],"names":["REACT_PEER_DEPENDENCIES","Set","PINNED_OPTIMIZE_MODULES","ADMIN_VITE_ALIAS_MODULES","isOfficialStrapiPackage","name","startsWith","getRootPackageExport","pkg","exportsField","exports","undefined","isEsmPackage","type","rootExport","import","hasReactPeerDependency","Object","keys","peerDependencies","some","has","shipsPreBuiltDist","exportImport","entryPaths","module","main","filter","entry","includes","Array","isArray","files","file","shouldExcludeFromOptimizeDeps","getPluginPackageName","modulePath","scope","split","collectDependencyNames","names","section","dependencies","devDependencies","add","getPluginPackageJson","plugin","cwd","path","content","fs","readFile","join","JSON","parse","getModule","loadAppPackageJson","result","readPkgUp","packageJson","collectAdminOptimizeDepsExclude","plugins","candidateNames","appPkg","pluginPkg","exclude","push","sort"],"mappings":"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"}
1
+ {"version":3,"file":"admin-vite-optimize-exclude.js","sources":["../../../../src/node/core/admin-vite-optimize-exclude.ts"],"sourcesContent":["import path from 'node:path';\nimport fs from 'node:fs/promises';\nimport readPkgUp from 'read-pkg-up';\n\nimport { ADMIN_VITE_ALIAS_MODULES, ADMIN_VITE_SINGLETON_MODULES } from './admin-vite-alias-modules';\nimport { getModule, type PackageJson } from './dependencies';\nimport type { PluginMeta } from './plugins';\n\nconst REACT_PEER_DEPENDENCIES = new Set(['react', 'react-dom']);\n\n/**\n * Packages explicitly pre-bundled or aliased for the admin singleton contract.\n * Never auto-exclude these — they must stay on the optimizeDeps.include / dedupe path.\n *\n * The admin entry host (@strapi/strapi) must never land in optimizeDeps.exclude (#26944, #27014).\n * CJS-only deps imported by @strapi/admin (e.g. invariant, lodash) belong in optimizeDeps.include\n * (see vite/config.ts — #26964, #26944, #27014).\n * The CodeMirror singletons (e.g. @uiw/react-codemirror — ESM with a React peer) match the\n * exclude heuristic but must stay pre-bundled so the admin keeps a single instance\n */\nconst PINNED_OPTIMIZE_MODULES = new Set<string>([\n ...ADMIN_VITE_ALIAS_MODULES,\n ...ADMIN_VITE_SINGLETON_MODULES,\n '@strapi/strapi',\n]);\n\nconst isOfficialStrapiPackage = (name: string): boolean => name.startsWith('@strapi/');\n\ntype PackageExportEntry =\n | string\n | {\n import?: string;\n require?: string;\n default?: string;\n };\n\nconst getRootPackageExport = (pkg: PackageJson): PackageExportEntry | undefined => {\n const exportsField = pkg.exports as Record<string, PackageExportEntry> | string | undefined;\n\n if (!exportsField || typeof exportsField === 'string') {\n return undefined;\n }\n\n return exportsField['.'];\n};\n\n/**\n * @internal exported for tests\n */\nexport const isEsmPackage = (pkg: PackageJson): boolean => {\n if (pkg.type === 'module') {\n return true;\n }\n\n const rootExport = getRootPackageExport(pkg);\n\n return (\n typeof rootExport === 'object' &&\n rootExport !== null &&\n 'import' in rootExport &&\n typeof rootExport.import === 'string'\n );\n};\n\n/**\n * @internal exported for tests\n */\nexport const hasReactPeerDependency = (pkg: PackageJson): boolean =>\n Object.keys(pkg.peerDependencies ?? {}).some((name) => REACT_PEER_DEPENDENCIES.has(name));\n\n/**\n * Targets libraries that ship a pre-built dist bundle (e.g. plugin UI kits) rather than\n * source packages like react-intl that still benefit from Vite's dep optimizer.\n *\n * @internal exported for tests\n */\nexport const shipsPreBuiltDist = (pkg: PackageJson): boolean => {\n const rootExport = getRootPackageExport(pkg);\n const exportImport =\n typeof rootExport === 'object' && rootExport !== null && 'import' in rootExport\n ? rootExport.import\n : undefined;\n\n const entryPaths = [pkg.module, pkg.main, exportImport].filter(\n (entry): entry is string => typeof entry === 'string'\n );\n\n if (\n entryPaths.some(\n (entry) =>\n entry.includes('/dist/') || entry.startsWith('./dist/') || entry.startsWith('dist/')\n )\n ) {\n return true;\n }\n\n return (\n Array.isArray(pkg.files) &&\n pkg.files.some((file) => file === 'dist' || file.startsWith('dist/'))\n );\n};\n\n/**\n * @internal exported for tests\n */\nexport const shouldExcludeFromOptimizeDeps = (pkg: PackageJson): boolean =>\n hasReactPeerDependency(pkg) && isEsmPackage(pkg) && shipsPreBuiltDist(pkg);\n\n/**\n * @internal exported for tests\n */\nexport const getPluginPackageName = (modulePath: string): string => {\n if (modulePath.startsWith('@')) {\n const [scope, name] = modulePath.split('/');\n\n return `${scope}/${name}`;\n }\n\n return modulePath.split('/')[0] ?? modulePath;\n};\n\nconst collectDependencyNames = (pkg: PackageJson): string[] => {\n const names = new Set<string>();\n\n for (const section of [pkg.dependencies, pkg.devDependencies] as const) {\n if (section) {\n for (const name of Object.keys(section)) {\n names.add(name);\n }\n }\n }\n\n return [...names];\n};\n\nconst getPluginPackageJson = async (\n plugin: PluginMeta,\n cwd: string\n): Promise<PackageJson | null> => {\n if (plugin.type === 'local' && plugin.path) {\n try {\n const content = await fs.readFile(path.join(plugin.path, 'package.json'), 'utf8');\n\n return JSON.parse(content) as PackageJson;\n } catch {\n return null;\n }\n }\n\n return getModule(getPluginPackageName(plugin.modulePath), cwd);\n};\n\nconst loadAppPackageJson = async (cwd: string): Promise<PackageJson | null> => {\n const result = await readPkgUp({ cwd });\n\n return result?.packageJson ?? null;\n};\n\n/**\n * Pre-built ESM libraries with React peers (shared plugin UI kits) are incompatible with\n * Strapi's React/design-system pre-bundling. Skip dep optimization so they resolve through\n * the admin resolve aliases instead of being re-bundled by Vite.\n *\n * Scans app and plugin dependency trees (#26944). Official @strapi/* packages and pinned\n * singletons are never auto-excluded — @strapi/strapi matches the heuristic but must stay on\n * the optimizeDeps.include path (#26944, #27014).\n *\n * @internal\n */\nexport const collectAdminOptimizeDepsExclude = async (\n cwd: string,\n plugins: PluginMeta[]\n): Promise<string[]> => {\n const candidateNames = new Set<string>();\n const appPkg = await loadAppPackageJson(cwd);\n\n if (appPkg) {\n for (const name of collectDependencyNames(appPkg)) {\n candidateNames.add(name);\n }\n }\n\n for (const plugin of plugins) {\n const pluginPkg = await getPluginPackageJson(plugin, cwd);\n\n if (pluginPkg) {\n for (const name of collectDependencyNames(pluginPkg)) {\n candidateNames.add(name);\n }\n }\n }\n\n const exclude: string[] = [];\n\n for (const name of candidateNames) {\n if (PINNED_OPTIMIZE_MODULES.has(name) || isOfficialStrapiPackage(name)) {\n continue;\n }\n\n const pkg = await getModule(name, cwd);\n\n if (pkg && shouldExcludeFromOptimizeDeps(pkg)) {\n exclude.push(name);\n }\n }\n\n return exclude.sort();\n};\n"],"names":["REACT_PEER_DEPENDENCIES","Set","PINNED_OPTIMIZE_MODULES","ADMIN_VITE_ALIAS_MODULES","ADMIN_VITE_SINGLETON_MODULES","isOfficialStrapiPackage","name","startsWith","getRootPackageExport","pkg","exportsField","exports","undefined","isEsmPackage","type","rootExport","import","hasReactPeerDependency","Object","keys","peerDependencies","some","has","shipsPreBuiltDist","exportImport","entryPaths","module","main","filter","entry","includes","Array","isArray","files","file","shouldExcludeFromOptimizeDeps","getPluginPackageName","modulePath","scope","split","collectDependencyNames","names","section","dependencies","devDependencies","add","getPluginPackageJson","plugin","cwd","path","content","fs","readFile","join","JSON","parse","getModule","loadAppPackageJson","result","readPkgUp","packageJson","collectAdminOptimizeDepsExclude","plugins","candidateNames","appPkg","pluginPkg","exclude","push","sort"],"mappings":"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"}
@@ -3,6 +3,7 @@ import fs from 'node:fs/promises';
3
3
  import readPkgUp from 'read-pkg-up';
4
4
  import { ADMIN_VITE_ALIAS_MODULES } from './admin-vite-alias-modules.mjs';
5
5
  import { getModule } from './dependencies.mjs';
6
+ import { ADMIN_VITE_SINGLETON_MODULES } from './admin-vite-singleton-modules.mjs';
6
7
 
7
8
  const REACT_PEER_DEPENDENCIES = new Set([
8
9
  'react',
@@ -15,8 +16,11 @@ const REACT_PEER_DEPENDENCIES = new Set([
15
16
  * The admin entry host (@strapi/strapi) must never land in optimizeDeps.exclude (#26944, #27014).
16
17
  * CJS-only deps imported by @strapi/admin (e.g. invariant, lodash) belong in optimizeDeps.include
17
18
  * (see vite/config.ts — #26964, #26944, #27014).
19
+ * The CodeMirror singletons (e.g. @uiw/react-codemirror — ESM with a React peer) match the
20
+ * exclude heuristic but must stay pre-bundled so the admin keeps a single instance
18
21
  */ const PINNED_OPTIMIZE_MODULES = new Set([
19
22
  ...ADMIN_VITE_ALIAS_MODULES,
23
+ ...ADMIN_VITE_SINGLETON_MODULES,
20
24
  '@strapi/strapi'
21
25
  ]);
22
26
  const isOfficialStrapiPackage = (name)=>name.startsWith('@strapi/');