@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.
- package/dist/node/core/admin-vite-alias-modules.d.ts +3 -3
- package/dist/node/core/admin-vite-alias-modules.d.ts.map +1 -1
- package/dist/node/core/admin-vite-optimize-exclude.d.ts +31 -1
- package/dist/node/core/admin-vite-optimize-exclude.d.ts.map +1 -1
- package/dist/package.json.js +1 -1
- package/dist/package.json.mjs +1 -1
- package/dist/src/cli/commands/export/action.js +1 -1
- package/dist/src/cli/commands/export/action.js.map +1 -1
- package/dist/src/cli/commands/export/action.mjs +1 -1
- package/dist/src/cli/commands/export/action.mjs.map +1 -1
- package/dist/src/cli/commands/import/action.js +2 -2
- package/dist/src/cli/commands/import/action.js.map +1 -1
- package/dist/src/cli/commands/import/action.mjs +2 -2
- package/dist/src/cli/commands/import/action.mjs.map +1 -1
- package/dist/src/cli/commands/transfer/action.js +2 -2
- package/dist/src/cli/commands/transfer/action.js.map +1 -1
- package/dist/src/cli/commands/transfer/action.mjs +2 -2
- package/dist/src/cli/commands/transfer/action.mjs.map +1 -1
- package/dist/src/cli/commands/transfer/command.js +1 -1
- package/dist/src/cli/commands/transfer/command.js.map +1 -1
- package/dist/src/cli/commands/transfer/command.mjs +1 -1
- package/dist/src/cli/commands/transfer/command.mjs.map +1 -1
- package/dist/src/cli/utils/commander.js +3 -3
- package/dist/src/cli/utils/commander.js.map +1 -1
- package/dist/src/cli/utils/commander.mjs +3 -3
- package/dist/src/cli/utils/commander.mjs.map +1 -1
- package/dist/src/cli/utils/data-transfer.js +1 -1
- package/dist/src/cli/utils/data-transfer.js.map +1 -1
- package/dist/src/cli/utils/data-transfer.mjs +1 -1
- package/dist/src/cli/utils/data-transfer.mjs.map +1 -1
- package/dist/src/cli/utils/helpers.js +1 -1
- package/dist/src/cli/utils/helpers.js.map +1 -1
- package/dist/src/cli/utils/helpers.mjs +1 -1
- package/dist/src/cli/utils/helpers.mjs.map +1 -1
- package/dist/src/cli/utils/telemetry.js +1 -1
- package/dist/src/cli/utils/telemetry.js.map +1 -1
- package/dist/src/cli/utils/telemetry.mjs +1 -1
- package/dist/src/cli/utils/telemetry.mjs.map +1 -1
- package/dist/src/node/core/admin-vite-alias-modules.js +11 -1
- package/dist/src/node/core/admin-vite-alias-modules.js.map +1 -1
- package/dist/src/node/core/admin-vite-alias-modules.mjs +11 -1
- package/dist/src/node/core/admin-vite-alias-modules.mjs.map +1 -1
- package/dist/src/node/core/admin-vite-optimize-exclude.js +42 -2
- package/dist/src/node/core/admin-vite-optimize-exclude.js.map +1 -1
- package/dist/src/node/core/admin-vite-optimize-exclude.mjs +40 -3
- package/dist/src/node/core/admin-vite-optimize-exclude.mjs.map +1 -1
- package/dist/src/node/core/dependencies.js +1 -1
- package/dist/src/node/core/dependencies.js.map +1 -1
- package/dist/src/node/core/dependencies.mjs +1 -1
- package/dist/src/node/core/dependencies.mjs.map +1 -1
- package/dist/src/node/core/files.js +1 -1
- package/dist/src/node/core/files.js.map +1 -1
- package/dist/src/node/core/files.mjs +1 -1
- package/dist/src/node/core/files.mjs.map +1 -1
- package/dist/src/node/vite/config.js +1 -1
- package/dist/src/node/vite/config.js.map +1 -1
- package/dist/src/node/vite/config.mjs +1 -1
- package/dist/src/node/vite/config.mjs.map +1 -1
- 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,
|
|
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).
|
|
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;
|
|
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"}
|
package/dist/package.json.js
CHANGED
package/dist/package.json.mjs
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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":";;;;;;;;;;;;;;AA+BA,MAAM,EACJA,SAAAA,EAAW,EAAEC,6BAA6B,EAAE,EAC7C,GAAGC,iBAAAA;AAEJ,MAAM,EACJF,WAAW,EAAEG,oCAAoC,EAAEC,yBAAyB,EAAE,EAC/E,GAAGC,mBAAAA;AAEJ,MAAM,EAAEC,oBAAoB,EAAEC,wBAAwB,EAAEC,uBAAuB,EAAE,GAC/EC,mBAAAA;AAoBF;;;;IAKA,aAAe,CAAA,OAAOC,IAAAA,GAAAA;;IAEpB,IAAI,CAACC,YAASD,IAAAA,CAAAA,EAAO;AACnBE,QAAAA,gBAAAA,CAAS,CAAA,EAAG,2BAAA,CAAA;AACd,IAAA;IAEAC,6CAAAA,CAA+BH,IAAAA,CAAAA;IAE/B,MAAMI,UAAAA,GAAaJ,IAAAA,CAAKK,IAAI,IAAI,EAAA;AAChC,IAAA,MAAMC,MAAAA,GAAU,CAAA,MAAMC,qBAAGC,IAAI,CAACJ,UAAAA,CAAU,EAAGK,WAAW,EAAA,GAClDC,sBAAAA,CAAsBpB,SAAS,CAACqB,kCAAkC,CAAC;QACjEC,SAAAA,EAAW;YAAEC,IAAAA,EAAMT;AAAW;AAChC,KAAA,CAAA,GACAb,8BAA8BuB,yBAAAA,CAA0Bd,IAAAA,CAAAA,CAAAA;AAE5D;;MAGA,MAAMe,iBAAiB,MAAMC,mCAAAA,EAAAA;AAC7BC,IAAAA,0DAAAA,CAA4CjB,IAAAA,EAAMe,cAAAA,CAAAA;AAElD;;AAEC,MACD,MAAMG,aAAAA,GAA+B;QACnCC,eAAAA,EAAiBtB,wBAAAA;QACjBuB,cAAAA,EAAgBtB,uBAAAA;AAChBuB,QAAAA,OAAAA,EAASrB,KAAKqB,OAAO;AACrBC,QAAAA,IAAAA,EAAMtB,KAAKsB,IAAI;AACfC,QAAAA,QAAAA,EAAUvB,KAAKuB,QAAQ;AACvBC,QAAAA,UAAAA,EAAYC,sCAAAA,CAAwBzB,IAAAA;AACtC,KAAA;AAEA,IAAA,MAAM0B,kBAAAA,GAAqB;QACzB,MAAMC,SAAAA,CAAAA,GAAAA;YACJ,OAAOZ,cAAAA;AACT,QAAA,CAAA;QACAa,WAAAA,EAAa,KAAA;QACbC,QAAAA,EAAU7B,IAAAA,CAAK8B,gBAAgB,IAAIpC,yBAAAA;AACnCqC,QAAAA,OAAAA,EAASC,uCAAwBhC,IAAAA,EAAMe,cAAAA;AACzC,KAAA;AAEA,IAAA,MAAMkB,cAAcxC,oCAAAA,CAAqCiC,kBAAAA,CAAAA;AACzDO,IAAAA,WAAAA,CAAYC,SAAS,GAAG,CAACC,OAAAA,GAAYC,OAAAA,CAAQC,IAAI,CAAC,CAAC,EAAE,EAAEC,uBAAMC,MAAM,CAAC,MAAA,CAAA,CAAQ,EAAE,EAAEJ,OAAAA,CAAAA,CAAS,CAAA;IAEzF,MAAMK,MAAAA,GAAS5C,oBAAAA,CAAqBU,MAAAA,EAAQ2B,WAAAA,EAAaf,aAAAA,CAAAA;AAEzDsB,IAAAA,MAAAA,CAAOC,WAAW,CAACC,YAAY,CAACC,+BAAAA,CAAiB,QAAA,EAAU3C,KAAK4C,OAAO,CAAA,CAAA;AAEvE,IAAA,MAAMC,QAAAA,GAAWL,MAAAA,CAAOK,QAAQ,CAACC,MAAM;IAEvC,MAAM,EAAEC,YAAY,EAAE,GAAGC,6BAAAA,EAAAA;IAEzBR,MAAAA,CAAOS,YAAY,CAACC,6BAAAA,CAAeV,MAAAA,EAAQ;AAAEW,QAAAA,KAAAA,EAAOnD,KAAKmD,KAAK;QAAEC,MAAAA,EAAQ;AAAS,KAAA,CAAA,CAAA;IAEjFP,QAAAA,CAASQ,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,EAAEC,KAAK,EAAEC,IAAI,EAAE,GAAA;QAC1CR,YAAAA,CAAaO,KAAAA,EAAOC,MAAMC,KAAK,EAAA;AACjC,IAAA,CAAA,CAAA;IAEAX,QAAAA,CAASQ,EAAE,CAAC,eAAA,EAAiB,CAAC,EAAEC,KAAK,EAAEC,IAAI,EAAE,GAAA;QAC3CR,YAAAA,CAAaO,KAAAA,EAAOC,MAAME,OAAO,EAAA;AACnC,IAAA,CAAA,CAAA;IAEAZ,QAAAA,CAASQ,EAAE,CAAC,iBAAA,EAAmB,CAAC,EAAEC,KAAK,EAAEC,IAAI,EAAE,GAAA;AAC7CR,QAAAA,YAAAA,CAAaO,KAAAA,EAAOC,IAAAA,CAAAA;AACtB,IAAA,CAAA,CAAA;IAEAV,QAAAA,CAASQ,EAAE,CAAC,iBAAA,EAAmB,UAAA;AAC7BjB,QAAAA,OAAAA,CAAQsB,GAAG,CAAC,oBAAA,CAAA;QACZC,uCAAAA,CAAyB;AACvBtC,YAAAA,OAAAA,EAASrB,KAAKqB,OAAO;AACrBC,YAAAA,IAAAA,EAAMtB,KAAKsB,IAAI;AACfsC,YAAAA,mBAAAA,EAAqB5D,KAAK4D,mBAAmB;AAC7CC,YAAAA,gBAAAA,EAAkB7D,KAAK6D,gBAAgB;AACvCC,YAAAA,iBAAAA,EAAmB9D,KAAK8D;AAC1B,SAAA,CAAA;AACA,QAAA,MAAM/C,eAAegD,SAAS,CAACC,IAAI,CACjC,wBACAC,0CAAAA,CAA4BzB,MAAAA,CAAAA,CAAAA;AAEhC,IAAA,CAAA,CAAA;IAEA,IAAI0B,OAAAA;IACJ,IAAI;;AAEFC,QAAAA,+BAAAA,CAAiB,IAAMC,4BAAAA,CAAc;AAAE5B,gBAAAA,MAAAA;gBAAQ6B,MAAAA,EAAQA;AAAsB,aAAA,CAAA,CAAA;QAE7EH,OAAAA,GAAU,MAAM1B,OAAO8B,QAAQ,EAAA;QAE/B,IAAI;YACF,MAAMC,KAAAA,GAAQC,iCAAAA,CAAmBN,OAAAA,CAAQ1B,MAAM,CAAA;YAC/CJ,OAAAA,CAAQsB,GAAG,CAACa,KAAAA,EAAOE,QAAAA,EAAAA,CAAAA;AACrB,QAAA,CAAA,CAAE,OAAM;AACNrC,YAAAA,OAAAA,CAAQsC,KAAK,CAAC,4DAAA,CAAA;AAChB,QAAA;;AAGA,QAAA,MAAM3D,eAAegD,SAAS,CAACC,IAAI,CACjC,yBACAC,0CAAAA,CAA4BzB,MAAAA,CAAAA,CAAAA;AAE9B,QAAA,MAAMzB,eAAe4D,OAAO,EAAA;AAE5BzE,QAAAA,gBAAAA,CAAS,GAAG0E,8BAAAA,CAAgB,QAAA,CAAA,CAAA;AAC9B,IAAA,CAAA,CAAE,OAAM;AACN,QAAA,MAAM7D,eAAegD,SAAS,CAACC,IAAI,CAAC,uBAAuBC,0CAAAA,CAA4BzB,MAAAA,CAAAA,CAAAA;QACvFtC,gBAAAA,CAAS,CAAA,EAAG0E,+BAAgB,QAAA,EAAU,IAAA,CAAA,CAAA;AACxC,IAAA;AACF,CAAA;AAEA;;IAGA,MAAM9D,4BAA4B,CAACd,IAAAA,GAAAA;AAMjC,IAAA,MAAM6E,OAAAA,GAAsE;QAC1ExE,IAAAA,EAAM;YAAEQ,IAAAA,EAAMb,IAAAA,CAAKK,IAAI,IAAI;AAAG,SAAA;QAC9ByE,WAAAA,EAAa;YAAEC,OAAAA,EAAS,CAAC,CAAC/E,IAAAA,CAAKgF;AAAW,SAAA;QAC1CC,UAAAA,EAAY;YAAEF,OAAAA,EAAS,CAAC,CAAC/E,IAAAA,CAAKkF,OAAO;AAAEC,YAAAA,GAAAA,EAAKnF,KAAKmF;AAAI;AACvD,KAAA;IAEA,OAAON,OAAAA;AACT,CAAA;;;;"}
|
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
225
|
+
} catch {
|
|
226
226
|
await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));
|
|
227
227
|
exitWith(1, exitMessageText('transfer', true));
|
|
228
228
|
}
|