@strapi/strapi 5.51.1 → 5.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/node/core/admin-vite-alias-modules.d.ts +3 -3
  2. package/dist/node/core/admin-vite-alias-modules.d.ts.map +1 -1
  3. package/dist/node/core/admin-vite-optimize-exclude.d.ts +31 -1
  4. package/dist/node/core/admin-vite-optimize-exclude.d.ts.map +1 -1
  5. package/dist/package.json.js +1 -1
  6. package/dist/package.json.mjs +1 -1
  7. package/dist/src/cli/commands/export/action.js +1 -1
  8. package/dist/src/cli/commands/export/action.js.map +1 -1
  9. package/dist/src/cli/commands/export/action.mjs +1 -1
  10. package/dist/src/cli/commands/export/action.mjs.map +1 -1
  11. package/dist/src/cli/commands/import/action.js +2 -2
  12. package/dist/src/cli/commands/import/action.js.map +1 -1
  13. package/dist/src/cli/commands/import/action.mjs +2 -2
  14. package/dist/src/cli/commands/import/action.mjs.map +1 -1
  15. package/dist/src/cli/commands/transfer/action.js +2 -2
  16. package/dist/src/cli/commands/transfer/action.js.map +1 -1
  17. package/dist/src/cli/commands/transfer/action.mjs +2 -2
  18. package/dist/src/cli/commands/transfer/action.mjs.map +1 -1
  19. package/dist/src/cli/commands/transfer/command.js +1 -1
  20. package/dist/src/cli/commands/transfer/command.js.map +1 -1
  21. package/dist/src/cli/commands/transfer/command.mjs +1 -1
  22. package/dist/src/cli/commands/transfer/command.mjs.map +1 -1
  23. package/dist/src/cli/utils/commander.js +3 -3
  24. package/dist/src/cli/utils/commander.js.map +1 -1
  25. package/dist/src/cli/utils/commander.mjs +3 -3
  26. package/dist/src/cli/utils/commander.mjs.map +1 -1
  27. package/dist/src/cli/utils/data-transfer.js +1 -1
  28. package/dist/src/cli/utils/data-transfer.js.map +1 -1
  29. package/dist/src/cli/utils/data-transfer.mjs +1 -1
  30. package/dist/src/cli/utils/data-transfer.mjs.map +1 -1
  31. package/dist/src/cli/utils/helpers.js +1 -1
  32. package/dist/src/cli/utils/helpers.js.map +1 -1
  33. package/dist/src/cli/utils/helpers.mjs +1 -1
  34. package/dist/src/cli/utils/helpers.mjs.map +1 -1
  35. package/dist/src/cli/utils/telemetry.js +1 -1
  36. package/dist/src/cli/utils/telemetry.js.map +1 -1
  37. package/dist/src/cli/utils/telemetry.mjs +1 -1
  38. package/dist/src/cli/utils/telemetry.mjs.map +1 -1
  39. package/dist/src/node/core/admin-vite-alias-modules.js +11 -1
  40. package/dist/src/node/core/admin-vite-alias-modules.js.map +1 -1
  41. package/dist/src/node/core/admin-vite-alias-modules.mjs +11 -1
  42. package/dist/src/node/core/admin-vite-alias-modules.mjs.map +1 -1
  43. package/dist/src/node/core/admin-vite-optimize-exclude.js +42 -2
  44. package/dist/src/node/core/admin-vite-optimize-exclude.js.map +1 -1
  45. package/dist/src/node/core/admin-vite-optimize-exclude.mjs +40 -3
  46. package/dist/src/node/core/admin-vite-optimize-exclude.mjs.map +1 -1
  47. package/dist/src/node/core/dependencies.js +1 -1
  48. package/dist/src/node/core/dependencies.js.map +1 -1
  49. package/dist/src/node/core/dependencies.mjs +1 -1
  50. package/dist/src/node/core/dependencies.mjs.map +1 -1
  51. package/dist/src/node/core/files.js +1 -1
  52. package/dist/src/node/core/files.js.map +1 -1
  53. package/dist/src/node/core/files.mjs +1 -1
  54. package/dist/src/node/core/files.mjs.map +1 -1
  55. package/dist/src/node/vite/config.js +1 -1
  56. package/dist/src/node/vite/config.js.map +1 -1
  57. package/dist/src/node/vite/config.mjs +1 -1
  58. package/dist/src/node/vite/config.mjs.map +1 -1
  59. package/package.json +24 -24
@@ -5,16 +5,16 @@ import { ADMIN_VITE_SINGLETON_MODULES } from './admin-vite-singleton-modules';
5
5
  *
6
6
  * @internal
7
7
  */
8
- export declare const ADMIN_VITE_ALIAS_MODULES: readonly ["react", "react-dom", "react-router-dom", "styled-components", "react-redux", "@reduxjs/toolkit", "@strapi/design-system", "@radix-ui/react-tooltip", "lodash", "invariant", "prismjs"];
8
+ export declare const ADMIN_VITE_ALIAS_MODULES: readonly ["react", "react-dom", "react-router-dom", "styled-components", "react-redux", "@reduxjs/toolkit", "@strapi/design-system", "@radix-ui/react-tooltip", "lodash", "invariant", "prismjs", "react-dnd", "react-dnd-html5-backend"];
9
9
  export type AdminViteAliasModule = (typeof ADMIN_VITE_ALIAS_MODULES)[number];
10
10
  /**
11
11
  * Modules passed to Vite resolve.dedupe (and aliased): the admin alias modules plus the
12
12
  * CodeMirror singletons, so every copy collapses onto a single runtime instance.
13
13
  */
14
- export declare const ADMIN_VITE_DEDUPE_MODULES: readonly ["react", "react-dom", "react-router-dom", "styled-components", "react-redux", "@reduxjs/toolkit", "@strapi/design-system", "@radix-ui/react-tooltip", "lodash", "invariant", "prismjs", "@codemirror/state", "@codemirror/view", "@codemirror/language", "@codemirror/lang-json", "@codemirror/commands", "@codemirror/lint", "@uiw/react-codemirror"];
14
+ export declare const ADMIN_VITE_DEDUPE_MODULES: readonly ["react", "react-dom", "react-router-dom", "styled-components", "react-redux", "@reduxjs/toolkit", "@strapi/design-system", "@radix-ui/react-tooltip", "lodash", "invariant", "prismjs", "react-dnd", "react-dnd-html5-backend", "@codemirror/state", "@codemirror/view", "@codemirror/language", "@codemirror/lang-json", "@codemirror/commands", "@codemirror/lint", "@uiw/react-codemirror"];
15
15
  export { ADMIN_VITE_SINGLETON_MODULES };
16
16
  /**
17
17
  * Alias modules with exact versions declared in @strapi/admin dependencies (not peers).
18
18
  */
19
- export declare const ADMIN_PINNED_ALIAS_MODULES: readonly ["@reduxjs/toolkit", "react-redux", "@strapi/design-system", "lodash", "invariant"];
19
+ export declare const ADMIN_PINNED_ALIAS_MODULES: readonly ["@reduxjs/toolkit", "react-redux", "@strapi/design-system", "lodash", "invariant", "react-dnd", "react-dnd-html5-backend"];
20
20
  //# sourceMappingURL=admin-vite-alias-modules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-vite-alias-modules.d.ts","sourceRoot":"","sources":["../../../src/node/core/admin-vite-alias-modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,mMAY3B,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,yBAAyB,kWAG5B,CAAC;AAEX,OAAO,EAAE,4BAA4B,EAAE,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,0BAA0B,8FAMa,CAAC"}
1
+ {"version":3,"file":"admin-vite-alias-modules.d.ts","sourceRoot":"","sources":["../../../src/node/core/admin-vite-alias-modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,2OAsB3B,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,yBAAyB,0YAG5B,CAAC;AAEX,OAAO,EAAE,4BAA4B,EAAE,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,0BAA0B,sIAQa,CAAC"}
@@ -1,5 +1,14 @@
1
1
  import { type PackageJson } from './dependencies';
2
2
  import type { PluginMeta } from './plugins';
3
+ /**
4
+ * Thin shared plugin UI kits that are known to break when Vite re-optimizes their pre-built
5
+ * dist (original #26944 victims). Only these names — plus packages that opt in via package.json —
6
+ * may be auto-excluded. Broad heuristic matching alone was too aggressive for large plugins
7
+ * (e.g. CKEditor) and orphaned their transitive CJS/UMD deps (#27136).
8
+ *
9
+ * @internal exported for tests
10
+ */
11
+ export declare const ADMIN_VITE_OPTIMIZE_DEPS_EXCLUDE_ALLOWLIST: Set<string>;
3
12
  /**
4
13
  * @internal exported for tests
5
14
  */
@@ -16,9 +25,27 @@ export declare const hasReactPeerDependency: (pkg: PackageJson) => boolean;
16
25
  */
17
26
  export declare const shipsPreBuiltDist: (pkg: PackageJson) => boolean;
18
27
  /**
28
+ * Shape check for packages that *could* be excluded (pre-built ESM + React peer + dist).
29
+ * Matching alone is not enough to exclude — see {@link isEligibleForOptimizeDepsExclude}.
30
+ *
19
31
  * @internal exported for tests
20
32
  */
21
33
  export declare const shouldExcludeFromOptimizeDeps: (pkg: PackageJson) => boolean;
34
+ /**
35
+ * Packages may opt into optimizeDeps.exclude via package.json:
36
+ * `{ "strapi": { "admin": { "vite": { "optimizeDepsExclude": true } } } }`
37
+ *
38
+ * @internal exported for tests
39
+ */
40
+ export declare const packageOptsIntoOptimizeDepsExclude: (pkg: PackageJson) => boolean;
41
+ /**
42
+ * A candidate is excluded only when it matches the UI-kit shape AND is either on the
43
+ * known-safe allowlist or explicitly opts in. This keeps #26944 working for thin kits
44
+ * without auto-excluding large editor/chart plugins (#27136).
45
+ *
46
+ * @internal exported for tests
47
+ */
48
+ export declare const isEligibleForOptimizeDepsExclude: (name: string, pkg: PackageJson) => boolean;
22
49
  /**
23
50
  * @internal exported for tests
24
51
  */
@@ -28,10 +55,13 @@ export declare const getPluginPackageName: (modulePath: string) => string;
28
55
  * Strapi's React/design-system pre-bundling. Skip dep optimization so they resolve through
29
56
  * the admin resolve aliases instead of being re-bundled by Vite.
30
57
  *
31
- * Scans app and plugin dependency trees (#26944). Official @strapi/* packages and pinned
58
+ * Scans app and plugin dependency trees (#26944). Only allowlisted or opt-in packages that
59
+ * also match the UI-kit shape are excluded (#27136). Official @strapi/* packages and pinned
32
60
  * singletons are never auto-excluded — @strapi/strapi matches the heuristic but must stay on
33
61
  * the optimizeDeps.include path (#26944, #27014).
34
62
  *
63
+ * Apps can still exclude additional packages via `src/admin/vite.config` optimizeDeps.exclude.
64
+ *
35
65
  * @internal
36
66
  */
37
67
  export declare const collectAdminOptimizeDepsExclude: (cwd: string, plugins: PluginMeta[]) => Promise<string[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"admin-vite-optimize-exclude.d.ts","sourceRoot":"","sources":["../../../src/node/core/admin-vite-optimize-exclude.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAwC5C;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,WAAW,KAAG,OAa/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAAI,KAAK,WAAW,KAAG,OACiC,CAAC;AAE5F;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,WAAW,KAAG,OAwBpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,GAAI,KAAK,WAAW,KAAG,OACW,CAAC;AAE7E;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,YAAY,MAAM,KAAG,MAQzD,CAAC;AAuCF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,+BAA+B,GAC1C,KAAK,MAAM,EACX,SAAS,UAAU,EAAE,KACpB,OAAO,CAAC,MAAM,EAAE,CAmClB,CAAC"}
1
+ {"version":3,"file":"admin-vite-optimize-exclude.d.ts","sourceRoot":"","sources":["../../../src/node/core/admin-vite-optimize-exclude.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAoB5C;;;;;;;GAOG;AACH,eAAO,MAAM,0CAA0C,aAErD,CAAC;AAsBH;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,WAAW,KAAG,OAa/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAAI,KAAK,WAAW,KAAG,OACiC,CAAC;AAE5F;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,WAAW,KAAG,OAwBpD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,GAAI,KAAK,WAAW,KAAG,OACW,CAAC;AAY7E;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,GAAI,KAAK,WAAW,KAAG,OAIrE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,GAAI,MAAM,MAAM,EAAE,KAAK,WAAW,KAAG,OAQjF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,YAAY,MAAM,KAAG,MAQzD,CAAC;AAuCF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,+BAA+B,GAC1C,KAAK,MAAM,EACX,SAAS,UAAU,EAAE,KACpB,OAAO,CAAC,MAAM,EAAE,CAmClB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "5.51.1";
3
+ var version = "5.52.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.js.map
@@ -1,4 +1,4 @@
1
- var version = "5.51.1";
1
+ var version = "5.52.0";
2
2
 
3
3
  export { version };
4
4
  //# sourceMappingURL=package.json.mjs.map
@@ -89,7 +89,7 @@ const BYTES_IN_MB = 1024 * 1024;
89
89
  try {
90
90
  const table = dataTransfer$1.buildTransferTable(results.engine);
91
91
  console.log(table?.toString());
92
- } catch (e) {
92
+ } catch {
93
93
  console.error('There was an error displaying the results of the transfer.');
94
94
  }
95
95
  console.log(`Export archive is in ${chalk__default.default.green(outFile)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sources":["../../../../../src/cli/commands/export/action.ts"],"sourcesContent":["import path from 'path';\nimport { isObject, isString, isFinite, toNumber } from 'lodash/fp';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\nimport type { Core } from '@strapi/types';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n getDefaultExportName,\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\nimport { normalizeExportDirFormatOpts } from './validate-dir-format';\n\nconst {\n providers: { createLocalFileDestinationProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiSourceProvider },\n} = strapiDataTransfer;\n\nconst BYTES_IN_MB = 1024 * 1024;\n\ninterface CmdOptions {\n file?: string;\n /** @default 'tar' */\n format?: 'tar' | 'dir';\n encrypt?: boolean;\n verbose?: boolean;\n key?: string;\n compress?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n maxSizeJsonl?: number;\n}\n\n/**\n * Export command.\n *\n * It transfers data from a local Strapi instance to a file\n *\n * @param {ExportCommandOptions} opts\n */\nexport default async (opts: CmdOptions) => {\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n normalizeExportDirFormatOpts(opts);\n normalizeTransferFilterOptions(opts);\n\n const strapi = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapi);\n\n const source = createSourceProvider(strapi);\n const destination = createDestinationProvider(opts);\n\n const engine = engineDataTransfer.createTransferEngine(source, destination, {\n versionStrategy: 'ignore', // for an export to file, versionStrategy will always be skipped\n schemaStrategy: 'ignore', // for an export to file, schemaStrategy will always be skipped\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('export', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log(`Starting export...`);\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n let outFile: string;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n outFile = results.destination?.file?.path ?? '';\n if ((opts.format ?? 'tar') === 'dir') {\n const metadataPath = path.join(outFile, 'metadata.json');\n if (!(await fs.pathExists(metadataPath))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export directory was not created correctly \"${outFile}\"`\n );\n }\n } else if (!(await fs.pathExists(outFile))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export file not created \"${outFile}\"`\n );\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n console.log(`Export archive is in ${chalk.green(outFile)}`);\n exitWith(0, exitMessageText('export'));\n } catch {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('export', true));\n }\n};\n\n/**\n * It creates a local strapi destination provider\n */\nconst createSourceProvider = (strapi: Core.Strapi) => {\n return createLocalStrapiSourceProvider({\n async getStrapi() {\n return strapi;\n },\n });\n};\n\n/**\n * It creates a local file or directory destination provider based on the given options\n */\nconst createDestinationProvider = (opts: CmdOptions) => {\n const { file, compress, encrypt, key, maxSizeJsonl, format = 'tar' } = opts;\n\n const filepath = isString(file) && file.length > 0 ? file : getDefaultExportName();\n\n const maxSizeJsonlInMb = isFinite(toNumber(maxSizeJsonl))\n ? toNumber(maxSizeJsonl) * BYTES_IN_MB\n : undefined;\n\n if (format === 'dir') {\n const { createLocalDirectoryDestinationProvider } = directoryDataTransfer.providers;\n const dirPath = path.isAbsolute(filepath) ? filepath : path.resolve(process.cwd(), filepath);\n return createLocalDirectoryDestinationProvider({\n directory: { path: dirPath },\n file: {\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n });\n }\n\n return createLocalFileDestinationProvider({\n file: {\n path: filepath,\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n encryption: {\n enabled: encrypt ?? false,\n key: encrypt ? key : undefined,\n },\n compression: {\n enabled: compress ?? false,\n },\n });\n};\n"],"names":["providers","createLocalFileDestinationProvider","fileDataTransfer","createLocalStrapiSourceProvider","strapiDataTransfer","BYTES_IN_MB","opts","isObject","exitWith","normalizeExportDirFormatOpts","normalizeTransferFilterOptions","strapi","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","source","createSourceProvider","destination","createDestinationProvider","engine","engineDataTransfer","createTransferEngine","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","on","stage","data","start","succeed","console","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","outFile","setSignalHandler","abortTransfer","transfer","file","path","format","metadataPath","join","fs","pathExists","errors","TransferEngineTransferError","table","buildTransferTable","toString","e","error","chalk","green","exitMessageText","getStrapi","compress","encrypt","key","maxSizeJsonl","filepath","isString","length","getDefaultExportName","maxSizeJsonlInMb","isFinite","toNumber","undefined","createLocalDirectoryDestinationProvider","directoryDataTransfer","dirPath","isAbsolute","resolve","process","cwd","directory","encryption","enabled","compression"],"mappings":"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"}
1
+ {"version":3,"file":"action.js","sources":["../../../../../src/cli/commands/export/action.ts"],"sourcesContent":["import path from 'path';\nimport { isObject, isString, isFinite, toNumber } from 'lodash/fp';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\nimport type { Core } from '@strapi/types';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n getDefaultExportName,\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\nimport { normalizeExportDirFormatOpts } from './validate-dir-format';\n\nconst {\n providers: { createLocalFileDestinationProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiSourceProvider },\n} = strapiDataTransfer;\n\nconst BYTES_IN_MB = 1024 * 1024;\n\ninterface CmdOptions {\n file?: string;\n /** @default 'tar' */\n format?: 'tar' | 'dir';\n encrypt?: boolean;\n verbose?: boolean;\n key?: string;\n compress?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n maxSizeJsonl?: number;\n}\n\n/**\n * Export command.\n *\n * It transfers data from a local Strapi instance to a file\n *\n * @param {ExportCommandOptions} opts\n */\nexport default async (opts: CmdOptions) => {\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n normalizeExportDirFormatOpts(opts);\n normalizeTransferFilterOptions(opts);\n\n const strapi = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapi);\n\n const source = createSourceProvider(strapi);\n const destination = createDestinationProvider(opts);\n\n const engine = engineDataTransfer.createTransferEngine(source, destination, {\n versionStrategy: 'ignore', // for an export to file, versionStrategy will always be skipped\n schemaStrategy: 'ignore', // for an export to file, schemaStrategy will always be skipped\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('export', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log(`Starting export...`);\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n let outFile: string;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n outFile = results.destination?.file?.path ?? '';\n if ((opts.format ?? 'tar') === 'dir') {\n const metadataPath = path.join(outFile, 'metadata.json');\n if (!(await fs.pathExists(metadataPath))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export directory was not created correctly \"${outFile}\"`\n );\n }\n } else if (!(await fs.pathExists(outFile))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export file not created \"${outFile}\"`\n );\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n console.log(`Export archive is in ${chalk.green(outFile)}`);\n exitWith(0, exitMessageText('export'));\n } catch {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('export', true));\n }\n};\n\n/**\n * It creates a local strapi destination provider\n */\nconst createSourceProvider = (strapi: Core.Strapi) => {\n return createLocalStrapiSourceProvider({\n async getStrapi() {\n return strapi;\n },\n });\n};\n\n/**\n * It creates a local file or directory destination provider based on the given options\n */\nconst createDestinationProvider = (opts: CmdOptions) => {\n const { file, compress, encrypt, key, maxSizeJsonl, format = 'tar' } = opts;\n\n const filepath = isString(file) && file.length > 0 ? file : getDefaultExportName();\n\n const maxSizeJsonlInMb = isFinite(toNumber(maxSizeJsonl))\n ? toNumber(maxSizeJsonl) * BYTES_IN_MB\n : undefined;\n\n if (format === 'dir') {\n const { createLocalDirectoryDestinationProvider } = directoryDataTransfer.providers;\n const dirPath = path.isAbsolute(filepath) ? filepath : path.resolve(process.cwd(), filepath);\n return createLocalDirectoryDestinationProvider({\n directory: { path: dirPath },\n file: {\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n });\n }\n\n return createLocalFileDestinationProvider({\n file: {\n path: filepath,\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n encryption: {\n enabled: encrypt ?? false,\n key: encrypt ? key : undefined,\n },\n compression: {\n enabled: compress ?? false,\n },\n });\n};\n"],"names":["providers","createLocalFileDestinationProvider","fileDataTransfer","createLocalStrapiSourceProvider","strapiDataTransfer","BYTES_IN_MB","opts","isObject","exitWith","normalizeExportDirFormatOpts","normalizeTransferFilterOptions","strapi","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","source","createSourceProvider","destination","createDestinationProvider","engine","engineDataTransfer","createTransferEngine","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","on","stage","data","start","succeed","console","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","outFile","setSignalHandler","abortTransfer","transfer","file","path","format","metadataPath","join","fs","pathExists","errors","TransferEngineTransferError","table","buildTransferTable","toString","error","chalk","green","exitMessageText","getStrapi","compress","encrypt","key","maxSizeJsonl","filepath","isString","length","getDefaultExportName","maxSizeJsonlInMb","isFinite","toNumber","undefined","createLocalDirectoryDestinationProvider","directoryDataTransfer","dirPath","isAbsolute","resolve","process","cwd","directory","encryption","enabled","compression"],"mappings":"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"}
@@ -81,7 +81,7 @@ const BYTES_IN_MB = 1024 * 1024;
81
81
  try {
82
82
  const table = buildTransferTable(results.engine);
83
83
  console.log(table?.toString());
84
- } catch (e) {
84
+ } catch {
85
85
  console.error('There was an error displaying the results of the transfer.');
86
86
  }
87
87
  console.log(`Export archive is in ${chalk.green(outFile)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"action.mjs","sources":["../../../../../src/cli/commands/export/action.ts"],"sourcesContent":["import path from 'path';\nimport { isObject, isString, isFinite, toNumber } from 'lodash/fp';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\nimport type { Core } from '@strapi/types';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n getDefaultExportName,\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\nimport { normalizeExportDirFormatOpts } from './validate-dir-format';\n\nconst {\n providers: { createLocalFileDestinationProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiSourceProvider },\n} = strapiDataTransfer;\n\nconst BYTES_IN_MB = 1024 * 1024;\n\ninterface CmdOptions {\n file?: string;\n /** @default 'tar' */\n format?: 'tar' | 'dir';\n encrypt?: boolean;\n verbose?: boolean;\n key?: string;\n compress?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n maxSizeJsonl?: number;\n}\n\n/**\n * Export command.\n *\n * It transfers data from a local Strapi instance to a file\n *\n * @param {ExportCommandOptions} opts\n */\nexport default async (opts: CmdOptions) => {\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n normalizeExportDirFormatOpts(opts);\n normalizeTransferFilterOptions(opts);\n\n const strapi = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapi);\n\n const source = createSourceProvider(strapi);\n const destination = createDestinationProvider(opts);\n\n const engine = engineDataTransfer.createTransferEngine(source, destination, {\n versionStrategy: 'ignore', // for an export to file, versionStrategy will always be skipped\n schemaStrategy: 'ignore', // for an export to file, schemaStrategy will always be skipped\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('export', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log(`Starting export...`);\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n let outFile: string;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n outFile = results.destination?.file?.path ?? '';\n if ((opts.format ?? 'tar') === 'dir') {\n const metadataPath = path.join(outFile, 'metadata.json');\n if (!(await fs.pathExists(metadataPath))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export directory was not created correctly \"${outFile}\"`\n );\n }\n } else if (!(await fs.pathExists(outFile))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export file not created \"${outFile}\"`\n );\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n console.log(`Export archive is in ${chalk.green(outFile)}`);\n exitWith(0, exitMessageText('export'));\n } catch {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('export', true));\n }\n};\n\n/**\n * It creates a local strapi destination provider\n */\nconst createSourceProvider = (strapi: Core.Strapi) => {\n return createLocalStrapiSourceProvider({\n async getStrapi() {\n return strapi;\n },\n });\n};\n\n/**\n * It creates a local file or directory destination provider based on the given options\n */\nconst createDestinationProvider = (opts: CmdOptions) => {\n const { file, compress, encrypt, key, maxSizeJsonl, format = 'tar' } = opts;\n\n const filepath = isString(file) && file.length > 0 ? file : getDefaultExportName();\n\n const maxSizeJsonlInMb = isFinite(toNumber(maxSizeJsonl))\n ? toNumber(maxSizeJsonl) * BYTES_IN_MB\n : undefined;\n\n if (format === 'dir') {\n const { createLocalDirectoryDestinationProvider } = directoryDataTransfer.providers;\n const dirPath = path.isAbsolute(filepath) ? filepath : path.resolve(process.cwd(), filepath);\n return createLocalDirectoryDestinationProvider({\n directory: { path: dirPath },\n file: {\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n });\n }\n\n return createLocalFileDestinationProvider({\n file: {\n path: filepath,\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n encryption: {\n enabled: encrypt ?? false,\n key: encrypt ? key : undefined,\n },\n compression: {\n enabled: compress ?? false,\n },\n });\n};\n"],"names":["providers","createLocalFileDestinationProvider","fileDataTransfer","createLocalStrapiSourceProvider","strapiDataTransfer","BYTES_IN_MB","opts","isObject","exitWith","normalizeExportDirFormatOpts","normalizeTransferFilterOptions","strapi","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","source","createSourceProvider","destination","createDestinationProvider","engine","engineDataTransfer","createTransferEngine","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","on","stage","data","start","succeed","console","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","outFile","setSignalHandler","abortTransfer","transfer","file","path","format","metadataPath","join","fs","pathExists","errors","TransferEngineTransferError","table","buildTransferTable","toString","e","error","chalk","green","exitMessageText","getStrapi","compress","encrypt","key","maxSizeJsonl","filepath","isString","length","getDefaultExportName","maxSizeJsonlInMb","isFinite","toNumber","undefined","createLocalDirectoryDestinationProvider","directoryDataTransfer","dirPath","isAbsolute","resolve","process","cwd","directory","encryption","enabled","compression"],"mappings":"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"}
1
+ {"version":3,"file":"action.mjs","sources":["../../../../../src/cli/commands/export/action.ts"],"sourcesContent":["import path from 'path';\nimport { isObject, isString, isFinite, toNumber } from 'lodash/fp';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\nimport type { Core } from '@strapi/types';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n getDefaultExportName,\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\nimport { normalizeExportDirFormatOpts } from './validate-dir-format';\n\nconst {\n providers: { createLocalFileDestinationProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiSourceProvider },\n} = strapiDataTransfer;\n\nconst BYTES_IN_MB = 1024 * 1024;\n\ninterface CmdOptions {\n file?: string;\n /** @default 'tar' */\n format?: 'tar' | 'dir';\n encrypt?: boolean;\n verbose?: boolean;\n key?: string;\n compress?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n maxSizeJsonl?: number;\n}\n\n/**\n * Export command.\n *\n * It transfers data from a local Strapi instance to a file\n *\n * @param {ExportCommandOptions} opts\n */\nexport default async (opts: CmdOptions) => {\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n normalizeExportDirFormatOpts(opts);\n normalizeTransferFilterOptions(opts);\n\n const strapi = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapi);\n\n const source = createSourceProvider(strapi);\n const destination = createDestinationProvider(opts);\n\n const engine = engineDataTransfer.createTransferEngine(source, destination, {\n versionStrategy: 'ignore', // for an export to file, versionStrategy will always be skipped\n schemaStrategy: 'ignore', // for an export to file, schemaStrategy will always be skipped\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('export', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log(`Starting export...`);\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n let outFile: string;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n outFile = results.destination?.file?.path ?? '';\n if ((opts.format ?? 'tar') === 'dir') {\n const metadataPath = path.join(outFile, 'metadata.json');\n if (!(await fs.pathExists(metadataPath))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export directory was not created correctly \"${outFile}\"`\n );\n }\n } else if (!(await fs.pathExists(outFile))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export file not created \"${outFile}\"`\n );\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n console.log(`Export archive is in ${chalk.green(outFile)}`);\n exitWith(0, exitMessageText('export'));\n } catch {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('export', true));\n }\n};\n\n/**\n * It creates a local strapi destination provider\n */\nconst createSourceProvider = (strapi: Core.Strapi) => {\n return createLocalStrapiSourceProvider({\n async getStrapi() {\n return strapi;\n },\n });\n};\n\n/**\n * It creates a local file or directory destination provider based on the given options\n */\nconst createDestinationProvider = (opts: CmdOptions) => {\n const { file, compress, encrypt, key, maxSizeJsonl, format = 'tar' } = opts;\n\n const filepath = isString(file) && file.length > 0 ? file : getDefaultExportName();\n\n const maxSizeJsonlInMb = isFinite(toNumber(maxSizeJsonl))\n ? toNumber(maxSizeJsonl) * BYTES_IN_MB\n : undefined;\n\n if (format === 'dir') {\n const { createLocalDirectoryDestinationProvider } = directoryDataTransfer.providers;\n const dirPath = path.isAbsolute(filepath) ? filepath : path.resolve(process.cwd(), filepath);\n return createLocalDirectoryDestinationProvider({\n directory: { path: dirPath },\n file: {\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n });\n }\n\n return createLocalFileDestinationProvider({\n file: {\n path: filepath,\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n encryption: {\n enabled: encrypt ?? false,\n key: encrypt ? key : undefined,\n },\n compression: {\n enabled: compress ?? false,\n },\n });\n};\n"],"names":["providers","createLocalFileDestinationProvider","fileDataTransfer","createLocalStrapiSourceProvider","strapiDataTransfer","BYTES_IN_MB","opts","isObject","exitWith","normalizeExportDirFormatOpts","normalizeTransferFilterOptions","strapi","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","source","createSourceProvider","destination","createDestinationProvider","engine","engineDataTransfer","createTransferEngine","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","on","stage","data","start","succeed","console","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","outFile","setSignalHandler","abortTransfer","transfer","file","path","format","metadataPath","join","fs","pathExists","errors","TransferEngineTransferError","table","buildTransferTable","toString","error","chalk","green","exitMessageText","getStrapi","compress","encrypt","key","maxSizeJsonl","filepath","isString","length","getDefaultExportName","maxSizeJsonlInMb","isFinite","toNumber","undefined","createLocalDirectoryDestinationProvider","directoryDataTransfer","dirPath","isAbsolute","resolve","process","cwd","directory","encryption","enabled","compression"],"mappings":"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"}
@@ -94,14 +94,14 @@ const { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY
94
94
  try {
95
95
  const table = dataTransfer$1.buildTransferTable(results.engine);
96
96
  console.log(table?.toString());
97
- } catch (e) {
97
+ } catch {
98
98
  console.error('There was an error displaying the results of the transfer.');
99
99
  }
100
100
  // Note: we need to await telemetry or else the process ends before it is sent
101
101
  await strapiInstance.telemetry.send('didDEITSProcessFinish', dataTransfer$1.getTransferTelemetryPayload(engine));
102
102
  await strapiInstance.destroy();
103
103
  helpers.exitWith(0, dataTransfer$1.exitMessageText('import'));
104
- } catch (e) {
104
+ } catch {
105
105
  await strapiInstance.telemetry.send('didDEITSProcessFail', dataTransfer$1.getTransferTelemetryPayload(engine));
106
106
  helpers.exitWith(1, dataTransfer$1.exitMessageText('import', true));
107
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sources":["../../../../../src/cli/commands/import/action.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { isObject } from 'lodash/fp';\nimport chalk from 'chalk';\n\nimport fs from 'fs-extra';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n parseRestoreFromOptions,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst {\n providers: { createLocalFileSourceProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiDestinationProvider, DEFAULT_CONFLICT_STRATEGY },\n} = strapiDataTransfer;\n\nconst { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY } =\n engineDataTransfer;\n\ninterface CmdOptions {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n verbose?: boolean;\n key?: string;\n conflictStrategy?: 'restore';\n force?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n}\n\ntype EngineOptions = Parameters<typeof createTransferEngine>[2];\n\n/**\n * Import command.\n *\n * It transfers data from a Strapi backup file or unpacked export directory to a local Strapi instance\n */\nexport default async (opts: CmdOptions) => {\n // validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse arguments');\n }\n\n normalizeTransferFilterOptions(opts);\n\n const backupPath = opts.file ?? '';\n const source = (await fs.stat(backupPath)).isDirectory()\n ? directoryDataTransfer.providers.createLocalDirectorySourceProvider({\n directory: { path: backupPath },\n })\n : createLocalFileSourceProvider(getLocalFileSourceOptions(opts));\n\n /**\n * To local Strapi instance\n */\n const strapiInstance = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapiInstance);\n\n /**\n * Configure and run the transfer engine\n */\n const engineOptions: EngineOptions = {\n versionStrategy: DEFAULT_VERSION_STRATEGY,\n schemaStrategy: DEFAULT_SCHEMA_STRATEGY,\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n };\n\n const destinationOptions = {\n async getStrapi() {\n return strapiInstance;\n },\n autoDestroy: false,\n strategy: opts.conflictStrategy || DEFAULT_CONFLICT_STRATEGY,\n restore: parseRestoreFromOptions(opts, strapiInstance),\n };\n\n const destination = createLocalStrapiDestinationProvider(destinationOptions);\n destination.onWarning = (message) => console.warn(`\\n${chalk.yellow('warn')}: ${message}`);\n\n const engine = createTransferEngine(source, destination, engineOptions);\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('import', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'import' }));\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log('Starting import...');\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n await strapiInstance.telemetry.send(\n 'didDEITSProcessStart',\n getTransferTelemetryPayload(engine)\n );\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n results = await engine.transfer();\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapiInstance.telemetry.send(\n 'didDEITSProcessFinish',\n getTransferTelemetryPayload(engine)\n );\n await strapiInstance.destroy();\n\n exitWith(0, exitMessageText('import'));\n } catch (e) {\n await strapiInstance.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('import', true));\n }\n};\n\n/**\n * Infer local file source provider options based on a given filename\n */\nconst getLocalFileSourceOptions = (opts: {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n key?: string;\n}) => {\n const options: fileDataTransfer.providers.ILocalFileSourceProviderOptions = {\n file: { path: opts.file ?? '' },\n compression: { enabled: !!opts.decompress },\n encryption: { enabled: !!opts.decrypt, key: opts.key },\n };\n\n return options;\n};\n"],"names":["providers","createLocalFileSourceProvider","fileDataTransfer","createLocalStrapiDestinationProvider","DEFAULT_CONFLICT_STRATEGY","strapiDataTransfer","createTransferEngine","DEFAULT_VERSION_STRATEGY","DEFAULT_SCHEMA_STRATEGY","engineDataTransfer","opts","isObject","exitWith","normalizeTransferFilterOptions","backupPath","file","source","fs","stat","isDirectory","directoryDataTransfer","createLocalDirectorySourceProvider","directory","path","getLocalFileSourceOptions","strapiInstance","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","engineOptions","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","destinationOptions","getStrapi","autoDestroy","strategy","conflictStrategy","restore","parseRestoreFromOptions","destination","onWarning","message","console","warn","chalk","yellow","engine","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","onSchemaDiff","getDiffHandler","force","action","on","stage","data","start","succeed","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","setSignalHandler","abortTransfer","strapi","transfer","table","buildTransferTable","toString","e","error","destroy","exitMessageText","options","compression","enabled","decompress","encryption","decrypt","key"],"mappings":"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"}
1
+ {"version":3,"file":"action.js","sources":["../../../../../src/cli/commands/import/action.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { isObject } from 'lodash/fp';\nimport chalk from 'chalk';\n\nimport fs from 'fs-extra';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n parseRestoreFromOptions,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst {\n providers: { createLocalFileSourceProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiDestinationProvider, DEFAULT_CONFLICT_STRATEGY },\n} = strapiDataTransfer;\n\nconst { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY } =\n engineDataTransfer;\n\ninterface CmdOptions {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n verbose?: boolean;\n key?: string;\n conflictStrategy?: 'restore';\n force?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n}\n\ntype EngineOptions = Parameters<typeof createTransferEngine>[2];\n\n/**\n * Import command.\n *\n * It transfers data from a Strapi backup file or unpacked export directory to a local Strapi instance\n */\nexport default async (opts: CmdOptions) => {\n // validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse arguments');\n }\n\n normalizeTransferFilterOptions(opts);\n\n const backupPath = opts.file ?? '';\n const source = (await fs.stat(backupPath)).isDirectory()\n ? directoryDataTransfer.providers.createLocalDirectorySourceProvider({\n directory: { path: backupPath },\n })\n : createLocalFileSourceProvider(getLocalFileSourceOptions(opts));\n\n /**\n * To local Strapi instance\n */\n const strapiInstance = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapiInstance);\n\n /**\n * Configure and run the transfer engine\n */\n const engineOptions: EngineOptions = {\n versionStrategy: DEFAULT_VERSION_STRATEGY,\n schemaStrategy: DEFAULT_SCHEMA_STRATEGY,\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n };\n\n const destinationOptions = {\n async getStrapi() {\n return strapiInstance;\n },\n autoDestroy: false,\n strategy: opts.conflictStrategy || DEFAULT_CONFLICT_STRATEGY,\n restore: parseRestoreFromOptions(opts, strapiInstance),\n };\n\n const destination = createLocalStrapiDestinationProvider(destinationOptions);\n destination.onWarning = (message) => console.warn(`\\n${chalk.yellow('warn')}: ${message}`);\n\n const engine = createTransferEngine(source, destination, engineOptions);\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('import', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'import' }));\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log('Starting import...');\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n await strapiInstance.telemetry.send(\n 'didDEITSProcessStart',\n getTransferTelemetryPayload(engine)\n );\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n results = await engine.transfer();\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapiInstance.telemetry.send(\n 'didDEITSProcessFinish',\n getTransferTelemetryPayload(engine)\n );\n await strapiInstance.destroy();\n\n exitWith(0, exitMessageText('import'));\n } catch {\n await strapiInstance.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('import', true));\n }\n};\n\n/**\n * Infer local file source provider options based on a given filename\n */\nconst getLocalFileSourceOptions = (opts: {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n key?: string;\n}) => {\n const options: fileDataTransfer.providers.ILocalFileSourceProviderOptions = {\n file: { path: opts.file ?? '' },\n compression: { enabled: !!opts.decompress },\n encryption: { enabled: !!opts.decrypt, key: opts.key },\n };\n\n return options;\n};\n"],"names":["providers","createLocalFileSourceProvider","fileDataTransfer","createLocalStrapiDestinationProvider","DEFAULT_CONFLICT_STRATEGY","strapiDataTransfer","createTransferEngine","DEFAULT_VERSION_STRATEGY","DEFAULT_SCHEMA_STRATEGY","engineDataTransfer","opts","isObject","exitWith","normalizeTransferFilterOptions","backupPath","file","source","fs","stat","isDirectory","directoryDataTransfer","createLocalDirectorySourceProvider","directory","path","getLocalFileSourceOptions","strapiInstance","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","engineOptions","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","destinationOptions","getStrapi","autoDestroy","strategy","conflictStrategy","restore","parseRestoreFromOptions","destination","onWarning","message","console","warn","chalk","yellow","engine","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","onSchemaDiff","getDiffHandler","force","action","on","stage","data","start","succeed","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","setSignalHandler","abortTransfer","strapi","transfer","table","buildTransferTable","toString","error","destroy","exitMessageText","options","compression","enabled","decompress","encryption","decrypt","key"],"mappings":"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"}
@@ -87,14 +87,14 @@ const { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY
87
87
  try {
88
88
  const table = buildTransferTable(results.engine);
89
89
  console.log(table?.toString());
90
- } catch (e) {
90
+ } catch {
91
91
  console.error('There was an error displaying the results of the transfer.');
92
92
  }
93
93
  // Note: we need to await telemetry or else the process ends before it is sent
94
94
  await strapiInstance.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));
95
95
  await strapiInstance.destroy();
96
96
  exitWith(0, exitMessageText('import'));
97
- } catch (e) {
97
+ } catch {
98
98
  await strapiInstance.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));
99
99
  exitWith(1, exitMessageText('import', true));
100
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"action.mjs","sources":["../../../../../src/cli/commands/import/action.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { isObject } from 'lodash/fp';\nimport chalk from 'chalk';\n\nimport fs from 'fs-extra';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n parseRestoreFromOptions,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst {\n providers: { createLocalFileSourceProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiDestinationProvider, DEFAULT_CONFLICT_STRATEGY },\n} = strapiDataTransfer;\n\nconst { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY } =\n engineDataTransfer;\n\ninterface CmdOptions {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n verbose?: boolean;\n key?: string;\n conflictStrategy?: 'restore';\n force?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n}\n\ntype EngineOptions = Parameters<typeof createTransferEngine>[2];\n\n/**\n * Import command.\n *\n * It transfers data from a Strapi backup file or unpacked export directory to a local Strapi instance\n */\nexport default async (opts: CmdOptions) => {\n // validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse arguments');\n }\n\n normalizeTransferFilterOptions(opts);\n\n const backupPath = opts.file ?? '';\n const source = (await fs.stat(backupPath)).isDirectory()\n ? directoryDataTransfer.providers.createLocalDirectorySourceProvider({\n directory: { path: backupPath },\n })\n : createLocalFileSourceProvider(getLocalFileSourceOptions(opts));\n\n /**\n * To local Strapi instance\n */\n const strapiInstance = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapiInstance);\n\n /**\n * Configure and run the transfer engine\n */\n const engineOptions: EngineOptions = {\n versionStrategy: DEFAULT_VERSION_STRATEGY,\n schemaStrategy: DEFAULT_SCHEMA_STRATEGY,\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n };\n\n const destinationOptions = {\n async getStrapi() {\n return strapiInstance;\n },\n autoDestroy: false,\n strategy: opts.conflictStrategy || DEFAULT_CONFLICT_STRATEGY,\n restore: parseRestoreFromOptions(opts, strapiInstance),\n };\n\n const destination = createLocalStrapiDestinationProvider(destinationOptions);\n destination.onWarning = (message) => console.warn(`\\n${chalk.yellow('warn')}: ${message}`);\n\n const engine = createTransferEngine(source, destination, engineOptions);\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('import', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'import' }));\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log('Starting import...');\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n await strapiInstance.telemetry.send(\n 'didDEITSProcessStart',\n getTransferTelemetryPayload(engine)\n );\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n results = await engine.transfer();\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapiInstance.telemetry.send(\n 'didDEITSProcessFinish',\n getTransferTelemetryPayload(engine)\n );\n await strapiInstance.destroy();\n\n exitWith(0, exitMessageText('import'));\n } catch (e) {\n await strapiInstance.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('import', true));\n }\n};\n\n/**\n * Infer local file source provider options based on a given filename\n */\nconst getLocalFileSourceOptions = (opts: {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n key?: string;\n}) => {\n const options: fileDataTransfer.providers.ILocalFileSourceProviderOptions = {\n file: { path: opts.file ?? '' },\n compression: { enabled: !!opts.decompress },\n encryption: { enabled: !!opts.decrypt, key: opts.key },\n };\n\n return options;\n};\n"],"names":["providers","createLocalFileSourceProvider","fileDataTransfer","createLocalStrapiDestinationProvider","DEFAULT_CONFLICT_STRATEGY","strapiDataTransfer","createTransferEngine","DEFAULT_VERSION_STRATEGY","DEFAULT_SCHEMA_STRATEGY","engineDataTransfer","opts","isObject","exitWith","normalizeTransferFilterOptions","backupPath","file","source","fs","stat","isDirectory","directoryDataTransfer","createLocalDirectorySourceProvider","directory","path","getLocalFileSourceOptions","strapiInstance","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","engineOptions","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","destinationOptions","getStrapi","autoDestroy","strategy","conflictStrategy","restore","parseRestoreFromOptions","destination","onWarning","message","console","warn","chalk","yellow","engine","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","onSchemaDiff","getDiffHandler","force","action","on","stage","data","start","succeed","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","setSignalHandler","abortTransfer","strapi","transfer","table","buildTransferTable","toString","e","error","destroy","exitMessageText","options","compression","enabled","decompress","encryption","decrypt","key"],"mappings":"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"}
1
+ {"version":3,"file":"action.mjs","sources":["../../../../../src/cli/commands/import/action.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { isObject } from 'lodash/fp';\nimport chalk from 'chalk';\n\nimport fs from 'fs-extra';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n parseRestoreFromOptions,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst {\n providers: { createLocalFileSourceProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiDestinationProvider, DEFAULT_CONFLICT_STRATEGY },\n} = strapiDataTransfer;\n\nconst { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY } =\n engineDataTransfer;\n\ninterface CmdOptions {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n verbose?: boolean;\n key?: string;\n conflictStrategy?: 'restore';\n force?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n}\n\ntype EngineOptions = Parameters<typeof createTransferEngine>[2];\n\n/**\n * Import command.\n *\n * It transfers data from a Strapi backup file or unpacked export directory to a local Strapi instance\n */\nexport default async (opts: CmdOptions) => {\n // validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse arguments');\n }\n\n normalizeTransferFilterOptions(opts);\n\n const backupPath = opts.file ?? '';\n const source = (await fs.stat(backupPath)).isDirectory()\n ? directoryDataTransfer.providers.createLocalDirectorySourceProvider({\n directory: { path: backupPath },\n })\n : createLocalFileSourceProvider(getLocalFileSourceOptions(opts));\n\n /**\n * To local Strapi instance\n */\n const strapiInstance = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapiInstance);\n\n /**\n * Configure and run the transfer engine\n */\n const engineOptions: EngineOptions = {\n versionStrategy: DEFAULT_VERSION_STRATEGY,\n schemaStrategy: DEFAULT_SCHEMA_STRATEGY,\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n };\n\n const destinationOptions = {\n async getStrapi() {\n return strapiInstance;\n },\n autoDestroy: false,\n strategy: opts.conflictStrategy || DEFAULT_CONFLICT_STRATEGY,\n restore: parseRestoreFromOptions(opts, strapiInstance),\n };\n\n const destination = createLocalStrapiDestinationProvider(destinationOptions);\n destination.onWarning = (message) => console.warn(`\\n${chalk.yellow('warn')}: ${message}`);\n\n const engine = createTransferEngine(source, destination, engineOptions);\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('import', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'import' }));\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log('Starting import...');\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n await strapiInstance.telemetry.send(\n 'didDEITSProcessStart',\n getTransferTelemetryPayload(engine)\n );\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n results = await engine.transfer();\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapiInstance.telemetry.send(\n 'didDEITSProcessFinish',\n getTransferTelemetryPayload(engine)\n );\n await strapiInstance.destroy();\n\n exitWith(0, exitMessageText('import'));\n } catch {\n await strapiInstance.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('import', true));\n }\n};\n\n/**\n * Infer local file source provider options based on a given filename\n */\nconst getLocalFileSourceOptions = (opts: {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n key?: string;\n}) => {\n const options: fileDataTransfer.providers.ILocalFileSourceProviderOptions = {\n file: { path: opts.file ?? '' },\n compression: { enabled: !!opts.decompress },\n encryption: { enabled: !!opts.decrypt, key: opts.key },\n };\n\n return options;\n};\n"],"names":["providers","createLocalFileSourceProvider","fileDataTransfer","createLocalStrapiDestinationProvider","DEFAULT_CONFLICT_STRATEGY","strapiDataTransfer","createTransferEngine","DEFAULT_VERSION_STRATEGY","DEFAULT_SCHEMA_STRATEGY","engineDataTransfer","opts","isObject","exitWith","normalizeTransferFilterOptions","backupPath","file","source","fs","stat","isDirectory","directoryDataTransfer","createLocalDirectorySourceProvider","directory","path","getLocalFileSourceOptions","strapiInstance","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","engineOptions","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","destinationOptions","getStrapi","autoDestroy","strategy","conflictStrategy","restore","parseRestoreFromOptions","destination","onWarning","message","console","warn","chalk","yellow","engine","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","onSchemaDiff","getDiffHandler","force","action","on","stage","data","start","succeed","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","setSignalHandler","abortTransfer","strapi","transfer","table","buildTransferTable","toString","error","destroy","exitMessageText","options","compression","enabled","decompress","encryption","decrypt","key"],"mappings":"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"}
@@ -224,11 +224,11 @@ const resolveRemotePullAssetIdleTimeoutMs = (value)=>{
224
224
  try {
225
225
  const table = dataTransfer$1.buildTransferTable(results.engine);
226
226
  console.log(table?.toString());
227
- } catch (e) {
227
+ } catch {
228
228
  console.error('There was an error displaying the results of the transfer.');
229
229
  }
230
230
  helpers.exitWith(0, dataTransfer$1.exitMessageText('transfer'));
231
- } catch (e) {
231
+ } catch {
232
232
  await strapi.telemetry.send('didDEITSProcessFail', dataTransfer$1.getTransferTelemetryPayload(engine));
233
233
  helpers.exitWith(1, dataTransfer$1.exitMessageText('transfer', true));
234
234
  }
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sources":["../../../../../src/cli/commands/transfer/action.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport ora from 'ora';\nimport type { Ora } from 'ora';\nimport { engine as engineDataTransfer, strapi as strapiDataTransfer } from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n parseRestoreFromOptions,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport {\n exitWith,\n formatElapsedAndMaybeRemainingLabel,\n TRANSFER_PROGRESS_FIELD_SEP,\n} from '../../utils/helpers';\n\nconst { createTransferEngine } = engineDataTransfer;\nconst {\n providers: {\n createRemoteStrapiDestinationProvider,\n createLocalStrapiSourceProvider,\n createLocalStrapiDestinationProvider,\n createRemoteStrapiSourceProvider,\n },\n} = strapiDataTransfer;\n\nconst resolveRemotePullAssetIdleTimeoutMs = (value: unknown): number | undefined => {\n if (value == null || value === '') {\n return undefined;\n }\n const n = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(n) || n <= 0) {\n return undefined;\n }\n return n;\n};\n\ninterface CmdOptions {\n from?: URL;\n fromToken: string;\n to: URL;\n toToken: string;\n verbose?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n force?: boolean;\n checksums?: boolean;\n}\n/**\n * Transfer command.\n *\n * Transfers data between local Strapi and remote Strapi instances\n */\nexport default async (opts: CmdOptions) => {\n // Avoid DeprecationWarning lines on stderr (e.g. pg `client.query()` while a query is in flight)\n // interleaving with ora spinners during transfer. (Runtime API; not on all @types/node Process typings.)\n (process as NodeJS.Process & { noDeprecation: boolean }).noDeprecation = true;\n\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n if (!(opts.from || opts.to) || (opts.from && opts.to)) {\n exitWith(1, 'Exactly one source (from) or destination (to) option must be provided');\n }\n\n normalizeTransferFilterOptions(opts);\n\n const strapi = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapi);\n const checksumsEnabled = opts.checksums !== false;\n let source;\n let destination;\n\n // if no URL provided, use local Strapi\n if (!opts.from) {\n source = createLocalStrapiSourceProvider({\n getStrapi: () => strapi,\n });\n }\n // if URL provided, set up a remote source provider\n else {\n if (!opts.fromToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n const assetIdleTimeoutMs = resolveRemotePullAssetIdleTimeoutMs(\n strapi.config.get('server.transfer.remote.assetIdleTimeoutMs')\n );\n\n source = createRemoteStrapiSourceProvider({\n getStrapi: () => strapi,\n url: opts.from,\n auth: {\n type: 'token',\n token: opts.fromToken,\n },\n ...(assetIdleTimeoutMs !== undefined ? { streamTimeout: assetIdleTimeoutMs } : {}),\n ...(checksumsEnabled ? { verifyChecksums: true } : {}),\n });\n }\n\n /** Wired after `engine` exists so destination prep can update the CLI spinner. */\n const transferPhaseBridge: { emit: (message: string) => void } = {\n emit() {\n /* replaced below once `progress` exists */\n },\n };\n\n // if no URL provided, use local Strapi\n if (!opts.to) {\n destination = createLocalStrapiDestinationProvider({\n getStrapi: () => strapi,\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts, strapi),\n onTransferPhase: (message: string) => transferPhaseBridge.emit(message),\n });\n }\n // if URL provided, set up a remote destination provider\n else {\n if (!opts.toToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n destination = createRemoteStrapiDestinationProvider({\n url: opts.to,\n auth: {\n type: 'token',\n token: opts.toToken,\n },\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts, strapi),\n onTransferPhase: (message: string) => transferPhaseBridge.emit(message),\n ...(checksumsEnabled ? { verifyChecksums: true } : {}),\n });\n }\n\n if (!source || !destination) {\n exitWith(1, 'Could not create providers');\n }\n\n const engine = createTransferEngine(source, destination, {\n versionStrategy: 'exact',\n schemaStrategy: 'strict',\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('transfer', opts.verbose));\n\n const progress = engine.progress.stream;\n\n /** Shown until destination prep emits a step; then we keep this prefix and append the step after \" — \". */\n const STARTING_TRANSFER_PREFIX = 'Starting transfer…';\n let prepStepDetail: string | null = null;\n\n const formatPrepSpinnerLine = () =>\n prepStepDetail != null && prepStepDetail !== ''\n ? `${STARTING_TRANSFER_PREFIX} — ${prepStepDetail}`\n : STARTING_TRANSFER_PREFIX;\n\n transferPhaseBridge.emit = (message: string) => {\n prepStepDetail = message;\n progress.emit('transfer::phase', { message: formatPrepSpinnerLine() });\n };\n\n const { updateLoader } = loadersFactory();\n\n let startingSpinner: Ora | null = null;\n let startingElapsedInterval: ReturnType<typeof setInterval> | null = null;\n /** Set when `transfer::start` fires so we can print a final persisted line with elapsed time. */\n let transferPrepStartedAt: number | null = null;\n\n /**\n * Stops the \"starting transfer\" spinner and **leaves a finished line** in the console (like stage\n * `succeed`/`fail`), so the next stage spinner starts on a new line instead of replacing this one.\n */\n const finishStartingSpinner = (outcome: 'done' | 'fail' = 'done') => {\n if (startingElapsedInterval) {\n clearInterval(startingElapsedInterval);\n startingElapsedInterval = null;\n }\n if (startingSpinner) {\n const elapsed = transferPrepStartedAt != null ? Date.now() - transferPrepStartedAt : 0;\n const line = `${formatPrepSpinnerLine()}${TRANSFER_PROGRESS_FIELD_SEP}${formatElapsedAndMaybeRemainingLabel(\n elapsed,\n null\n )}`;\n if (outcome === 'fail') {\n startingSpinner.fail(line);\n } else {\n startingSpinner.succeed(line);\n }\n startingSpinner = null;\n transferPrepStartedAt = null;\n }\n };\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'transfer' }));\n\n engine.addErrorHandler(\n 'ASSETS_DIRECTORY_ERR',\n getAssetsBackupHandler(engine, { force: opts.force, action: 'transfer' })\n );\n\n // Update more frequently to ensure elapsed time is accurate even if the stage is not progressing\n const activeStages = new Set<string>();\n const lastStageData: Record<string, any> = {};\n const interval = setInterval(() => {\n for (const stage of activeStages) {\n if (lastStageData[stage]) {\n // Clone the lastStageData and ensure endTime is undefined so elapsed uses Date.now()\n const dataCopy = { ...lastStageData[stage], endTime: undefined };\n updateLoader(stage as any, { [stage]: dataCopy });\n }\n }\n }, 100);\n\n progress.on(`stage::start`, ({ stage, data }) => {\n finishStartingSpinner('done');\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n lastStageData[stage] = data[stage];\n activeStages.add(stage);\n updateLoader(stage, data);\n });\n\n progress.on('stage::error', ({ stage, data }) => {\n updateLoader(stage, data).fail();\n });\n\n progress.on('transfer::finish', () => {\n finishStartingSpinner('done');\n clearInterval(interval);\n });\n progress.on('transfer::error', () => {\n finishStartingSpinner('fail');\n clearInterval(interval);\n });\n\n progress.on('transfer::start', async () => {\n transferPrepStartedAt = Date.now();\n prepStepDetail = null;\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n startingSpinner = ora(formatPrepSpinnerLine()).start();\n startingElapsedInterval = setInterval(() => {\n if (startingSpinner && transferPrepStartedAt != null) {\n const elapsed = Date.now() - transferPrepStartedAt;\n startingSpinner.text = `${formatPrepSpinnerLine()}${TRANSFER_PROGRESS_FIELD_SEP}${formatElapsedAndMaybeRemainingLabel(\n elapsed,\n null\n )}`;\n }\n }, 100);\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: Awaited<ReturnType<typeof engine.transfer>>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n exitWith(0, exitMessageText('transfer'));\n } catch (e) {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('transfer', true));\n }\n};\n"],"names":["createTransferEngine","engineDataTransfer","providers","createRemoteStrapiDestinationProvider","createLocalStrapiSourceProvider","createLocalStrapiDestinationProvider","createRemoteStrapiSourceProvider","strapiDataTransfer","resolveRemotePullAssetIdleTimeoutMs","value","undefined","n","Number","isFinite","opts","process","noDeprecation","isObject","exitWith","from","to","normalizeTransferFilterOptions","strapi","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","checksumsEnabled","checksums","source","destination","getStrapi","fromToken","assetIdleTimeoutMs","config","get","url","auth","type","token","streamTimeout","verifyChecksums","transferPhaseBridge","emit","strategy","restore","parseRestoreFromOptions","onTransferPhase","message","toToken","engine","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","STARTING_TRANSFER_PREFIX","prepStepDetail","formatPrepSpinnerLine","updateLoader","loadersFactory","startingSpinner","startingElapsedInterval","transferPrepStartedAt","finishStartingSpinner","outcome","clearInterval","elapsed","Date","now","line","TRANSFER_PROGRESS_FIELD_SEP","formatElapsedAndMaybeRemainingLabel","fail","succeed","onSchemaDiff","getDiffHandler","force","action","addErrorHandler","getAssetsBackupHandler","activeStages","Set","lastStageData","interval","setInterval","stage","dataCopy","endTime","on","data","start","add","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","ora","text","telemetry","send","getTransferTelemetryPayload","results","setSignalHandler","abortTransfer","transfer","table","buildTransferTable","console","log","toString","e","error","exitMessageText"],"mappings":"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"}
1
+ {"version":3,"file":"action.js","sources":["../../../../../src/cli/commands/transfer/action.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport ora from 'ora';\nimport type { Ora } from 'ora';\nimport { engine as engineDataTransfer, strapi as strapiDataTransfer } from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n parseRestoreFromOptions,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport {\n exitWith,\n formatElapsedAndMaybeRemainingLabel,\n TRANSFER_PROGRESS_FIELD_SEP,\n} from '../../utils/helpers';\n\nconst { createTransferEngine } = engineDataTransfer;\nconst {\n providers: {\n createRemoteStrapiDestinationProvider,\n createLocalStrapiSourceProvider,\n createLocalStrapiDestinationProvider,\n createRemoteStrapiSourceProvider,\n },\n} = strapiDataTransfer;\n\nconst resolveRemotePullAssetIdleTimeoutMs = (value: unknown): number | undefined => {\n if (value == null || value === '') {\n return undefined;\n }\n const n = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(n) || n <= 0) {\n return undefined;\n }\n return n;\n};\n\ninterface CmdOptions {\n from?: URL;\n fromToken: string;\n to: URL;\n toToken: string;\n verbose?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n force?: boolean;\n checksums?: boolean;\n}\n/**\n * Transfer command.\n *\n * Transfers data between local Strapi and remote Strapi instances\n */\nexport default async (opts: CmdOptions) => {\n // Avoid DeprecationWarning lines on stderr (e.g. pg `client.query()` while a query is in flight)\n // interleaving with ora spinners during transfer. (Runtime API; not on all @types/node Process typings.)\n (process as NodeJS.Process & { noDeprecation: boolean }).noDeprecation = true;\n\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n if (!(opts.from || opts.to) || (opts.from && opts.to)) {\n exitWith(1, 'Exactly one source (from) or destination (to) option must be provided');\n }\n\n normalizeTransferFilterOptions(opts);\n\n const strapi = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapi);\n const checksumsEnabled = opts.checksums !== false;\n let source;\n let destination;\n\n // if no URL provided, use local Strapi\n if (!opts.from) {\n source = createLocalStrapiSourceProvider({\n getStrapi: () => strapi,\n });\n }\n // if URL provided, set up a remote source provider\n else {\n if (!opts.fromToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n const assetIdleTimeoutMs = resolveRemotePullAssetIdleTimeoutMs(\n strapi.config.get('server.transfer.remote.assetIdleTimeoutMs')\n );\n\n source = createRemoteStrapiSourceProvider({\n getStrapi: () => strapi,\n url: opts.from,\n auth: {\n type: 'token',\n token: opts.fromToken,\n },\n ...(assetIdleTimeoutMs !== undefined ? { streamTimeout: assetIdleTimeoutMs } : {}),\n ...(checksumsEnabled ? { verifyChecksums: true } : {}),\n });\n }\n\n /** Wired after `engine` exists so destination prep can update the CLI spinner. */\n const transferPhaseBridge: { emit: (message: string) => void } = {\n emit() {\n /* replaced below once `progress` exists */\n },\n };\n\n // if no URL provided, use local Strapi\n if (!opts.to) {\n destination = createLocalStrapiDestinationProvider({\n getStrapi: () => strapi,\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts, strapi),\n onTransferPhase: (message: string) => transferPhaseBridge.emit(message),\n });\n }\n // if URL provided, set up a remote destination provider\n else {\n if (!opts.toToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n destination = createRemoteStrapiDestinationProvider({\n url: opts.to,\n auth: {\n type: 'token',\n token: opts.toToken,\n },\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts, strapi),\n onTransferPhase: (message: string) => transferPhaseBridge.emit(message),\n ...(checksumsEnabled ? { verifyChecksums: true } : {}),\n });\n }\n\n if (!source || !destination) {\n exitWith(1, 'Could not create providers');\n }\n\n const engine = createTransferEngine(source, destination, {\n versionStrategy: 'exact',\n schemaStrategy: 'strict',\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('transfer', opts.verbose));\n\n const progress = engine.progress.stream;\n\n /** Shown until destination prep emits a step; then we keep this prefix and append the step after \" — \". */\n const STARTING_TRANSFER_PREFIX = 'Starting transfer…';\n let prepStepDetail: string | null = null;\n\n const formatPrepSpinnerLine = () =>\n prepStepDetail != null && prepStepDetail !== ''\n ? `${STARTING_TRANSFER_PREFIX} — ${prepStepDetail}`\n : STARTING_TRANSFER_PREFIX;\n\n transferPhaseBridge.emit = (message: string) => {\n prepStepDetail = message;\n progress.emit('transfer::phase', { message: formatPrepSpinnerLine() });\n };\n\n const { updateLoader } = loadersFactory();\n\n let startingSpinner: Ora | null = null;\n let startingElapsedInterval: ReturnType<typeof setInterval> | null = null;\n /** Set when `transfer::start` fires so we can print a final persisted line with elapsed time. */\n let transferPrepStartedAt: number | null = null;\n\n /**\n * Stops the \"starting transfer\" spinner and **leaves a finished line** in the console (like stage\n * `succeed`/`fail`), so the next stage spinner starts on a new line instead of replacing this one.\n */\n const finishStartingSpinner = (outcome: 'done' | 'fail' = 'done') => {\n if (startingElapsedInterval) {\n clearInterval(startingElapsedInterval);\n startingElapsedInterval = null;\n }\n if (startingSpinner) {\n const elapsed = transferPrepStartedAt != null ? Date.now() - transferPrepStartedAt : 0;\n const line = `${formatPrepSpinnerLine()}${TRANSFER_PROGRESS_FIELD_SEP}${formatElapsedAndMaybeRemainingLabel(\n elapsed,\n null\n )}`;\n if (outcome === 'fail') {\n startingSpinner.fail(line);\n } else {\n startingSpinner.succeed(line);\n }\n startingSpinner = null;\n transferPrepStartedAt = null;\n }\n };\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'transfer' }));\n\n engine.addErrorHandler(\n 'ASSETS_DIRECTORY_ERR',\n getAssetsBackupHandler(engine, { force: opts.force, action: 'transfer' })\n );\n\n // Update more frequently to ensure elapsed time is accurate even if the stage is not progressing\n const activeStages = new Set<string>();\n const lastStageData: Record<string, any> = {};\n const interval = setInterval(() => {\n for (const stage of activeStages) {\n if (lastStageData[stage]) {\n // Clone the lastStageData and ensure endTime is undefined so elapsed uses Date.now()\n const dataCopy = { ...lastStageData[stage], endTime: undefined };\n updateLoader(stage as any, { [stage]: dataCopy });\n }\n }\n }, 100);\n\n progress.on(`stage::start`, ({ stage, data }) => {\n finishStartingSpinner('done');\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n lastStageData[stage] = data[stage];\n activeStages.add(stage);\n updateLoader(stage, data);\n });\n\n progress.on('stage::error', ({ stage, data }) => {\n updateLoader(stage, data).fail();\n });\n\n progress.on('transfer::finish', () => {\n finishStartingSpinner('done');\n clearInterval(interval);\n });\n progress.on('transfer::error', () => {\n finishStartingSpinner('fail');\n clearInterval(interval);\n });\n\n progress.on('transfer::start', async () => {\n transferPrepStartedAt = Date.now();\n prepStepDetail = null;\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n startingSpinner = ora(formatPrepSpinnerLine()).start();\n startingElapsedInterval = setInterval(() => {\n if (startingSpinner && transferPrepStartedAt != null) {\n const elapsed = Date.now() - transferPrepStartedAt;\n startingSpinner.text = `${formatPrepSpinnerLine()}${TRANSFER_PROGRESS_FIELD_SEP}${formatElapsedAndMaybeRemainingLabel(\n elapsed,\n null\n )}`;\n }\n }, 100);\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: Awaited<ReturnType<typeof engine.transfer>>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n exitWith(0, exitMessageText('transfer'));\n } catch {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('transfer', true));\n }\n};\n"],"names":["createTransferEngine","engineDataTransfer","providers","createRemoteStrapiDestinationProvider","createLocalStrapiSourceProvider","createLocalStrapiDestinationProvider","createRemoteStrapiSourceProvider","strapiDataTransfer","resolveRemotePullAssetIdleTimeoutMs","value","undefined","n","Number","isFinite","opts","process","noDeprecation","isObject","exitWith","from","to","normalizeTransferFilterOptions","strapi","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","checksumsEnabled","checksums","source","destination","getStrapi","fromToken","assetIdleTimeoutMs","config","get","url","auth","type","token","streamTimeout","verifyChecksums","transferPhaseBridge","emit","strategy","restore","parseRestoreFromOptions","onTransferPhase","message","toToken","engine","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","STARTING_TRANSFER_PREFIX","prepStepDetail","formatPrepSpinnerLine","updateLoader","loadersFactory","startingSpinner","startingElapsedInterval","transferPrepStartedAt","finishStartingSpinner","outcome","clearInterval","elapsed","Date","now","line","TRANSFER_PROGRESS_FIELD_SEP","formatElapsedAndMaybeRemainingLabel","fail","succeed","onSchemaDiff","getDiffHandler","force","action","addErrorHandler","getAssetsBackupHandler","activeStages","Set","lastStageData","interval","setInterval","stage","dataCopy","endTime","on","data","start","add","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","ora","text","telemetry","send","getTransferTelemetryPayload","results","setSignalHandler","abortTransfer","transfer","table","buildTransferTable","console","log","toString","error","exitMessageText"],"mappings":"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"}
@@ -218,11 +218,11 @@ const resolveRemotePullAssetIdleTimeoutMs = (value)=>{
218
218
  try {
219
219
  const table = buildTransferTable(results.engine);
220
220
  console.log(table?.toString());
221
- } catch (e) {
221
+ } catch {
222
222
  console.error('There was an error displaying the results of the transfer.');
223
223
  }
224
224
  exitWith(0, exitMessageText('transfer'));
225
- } catch (e) {
225
+ } catch {
226
226
  await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));
227
227
  exitWith(1, exitMessageText('transfer', true));
228
228
  }