@strapi/strapi 5.42.1 → 5.43.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/cli/commands/admin/active-user.d.ts +15 -0
- package/dist/cli/commands/admin/active-user.d.ts.map +1 -0
- package/dist/cli/commands/admin/block-user.d.ts +15 -0
- package/dist/cli/commands/admin/block-user.d.ts.map +1 -0
- package/dist/cli/commands/admin/delete-user.d.ts +14 -0
- package/dist/cli/commands/admin/delete-user.d.ts.map +1 -0
- package/dist/cli/commands/admin/list-users.d.ts +11 -0
- package/dist/cli/commands/admin/list-users.d.ts.map +1 -0
- package/dist/cli/commands/export/action.d.ts.map +1 -1
- package/dist/cli/commands/import/action.d.ts.map +1 -1
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/transfer/action.d.ts +1 -0
- package/dist/cli/commands/transfer/action.d.ts.map +1 -1
- package/dist/cli/commands/transfer/command.d.ts.map +1 -1
- package/dist/cli/utils/data-transfer.d.ts +6 -4
- package/dist/cli/utils/data-transfer.d.ts.map +1 -1
- package/dist/cli/utils/helpers.d.ts +15 -1
- package/dist/cli/utils/helpers.d.ts.map +1 -1
- package/dist/node/build.d.ts.map +1 -1
- package/dist/node/develop.d.ts.map +1 -1
- package/dist/package.json.js +1 -1
- package/dist/package.json.mjs +1 -1
- package/dist/src/cli/commands/admin/active-user.js +73 -0
- package/dist/src/cli/commands/admin/active-user.js.map +1 -0
- package/dist/src/cli/commands/admin/active-user.mjs +70 -0
- package/dist/src/cli/commands/admin/active-user.mjs.map +1 -0
- package/dist/src/cli/commands/admin/block-user.js +73 -0
- package/dist/src/cli/commands/admin/block-user.js.map +1 -0
- package/dist/src/cli/commands/admin/block-user.mjs +70 -0
- package/dist/src/cli/commands/admin/block-user.mjs.map +1 -0
- package/dist/src/cli/commands/admin/delete-user.js +88 -0
- package/dist/src/cli/commands/admin/delete-user.js.map +1 -0
- package/dist/src/cli/commands/admin/delete-user.mjs +85 -0
- package/dist/src/cli/commands/admin/delete-user.mjs.map +1 -0
- package/dist/src/cli/commands/admin/list-users.js +62 -0
- package/dist/src/cli/commands/admin/list-users.js.map +1 -0
- package/dist/src/cli/commands/admin/list-users.mjs +59 -0
- package/dist/src/cli/commands/admin/list-users.mjs.map +1 -0
- package/dist/src/cli/commands/export/action.js +2 -2
- package/dist/src/cli/commands/export/action.js.map +1 -1
- package/dist/src/cli/commands/export/action.mjs +3 -3
- package/dist/src/cli/commands/export/action.mjs.map +1 -1
- package/dist/src/cli/commands/import/action.js +3 -3
- package/dist/src/cli/commands/import/action.js.map +1 -1
- package/dist/src/cli/commands/import/action.mjs +4 -4
- package/dist/src/cli/commands/import/action.mjs.map +1 -1
- package/dist/src/cli/commands/index.js +8 -0
- package/dist/src/cli/commands/index.js.map +1 -1
- package/dist/src/cli/commands/index.mjs +34 -26
- package/dist/src/cli/commands/index.mjs.map +1 -1
- package/dist/src/cli/commands/transfer/action.js +105 -6
- package/dist/src/cli/commands/transfer/action.js.map +1 -1
- package/dist/src/cli/commands/transfer/action.mjs +107 -8
- 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/data-transfer.js +69 -21
- package/dist/src/cli/utils/data-transfer.js.map +1 -1
- package/dist/src/cli/utils/data-transfer.mjs +70 -22
- package/dist/src/cli/utils/data-transfer.mjs.map +1 -1
- package/dist/src/cli/utils/helpers.js +36 -1
- package/dist/src/cli/utils/helpers.js.map +1 -1
- package/dist/src/cli/utils/helpers.mjs +34 -2
- package/dist/src/cli/utils/helpers.mjs.map +1 -1
- package/dist/src/node/build.js +10 -5
- package/dist/src/node/build.js.map +1 -1
- package/dist/src/node/build.mjs +10 -5
- package/dist/src/node/build.mjs.map +1 -1
- package/dist/src/node/develop.js +194 -148
- package/dist/src/node/develop.js.map +1 -1
- package/dist/src/node/develop.mjs +194 -148
- package/dist/src/node/develop.mjs.map +1 -1
- package/dist/src/node/webpack/config.js +2 -2
- package/dist/src/node/webpack/config.js.map +1 -1
- package/dist/src/node/webpack/config.mjs +2 -2
- package/dist/src/node/webpack/config.mjs.map +1 -1
- package/package.json +22 -22
|
@@ -2,7 +2,7 @@ import { isObject } from 'lodash/fp';
|
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import fse from 'fs-extra';
|
|
4
4
|
import { file, directory, strapi as strapi$1, engine } from '@strapi/data-transfer';
|
|
5
|
-
import { createStrapiInstance, parseRestoreFromOptions, formatDiagnostic, getDiffHandler, getTransferTelemetryPayload, setSignalHandler, abortTransfer, buildTransferTable, exitMessageText,
|
|
5
|
+
import { createStrapiInstance, parseRestoreFromOptions, formatDiagnostic, getDiffHandler, getTransferTelemetryPayload, setSignalHandler, abortTransfer, buildTransferTable, exitMessageText, isIgnoredContentType, loadersFactory } from '../../utils/data-transfer.mjs';
|
|
6
6
|
import { exitWith } from '../../utils/helpers.mjs';
|
|
7
7
|
|
|
8
8
|
const { providers: { createLocalFileSourceProvider } } = file;
|
|
@@ -39,13 +39,13 @@ const { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY
|
|
|
39
39
|
links: [
|
|
40
40
|
{
|
|
41
41
|
filter (link) {
|
|
42
|
-
return !
|
|
42
|
+
return !isIgnoredContentType(link.left.type) && !isIgnoredContentType(link.right.type);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
],
|
|
46
46
|
entities: [
|
|
47
47
|
{
|
|
48
|
-
filter: (entity)=>!
|
|
48
|
+
filter: (entity)=>!isIgnoredContentType(entity.type)
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
}
|
|
@@ -56,7 +56,7 @@ const { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY
|
|
|
56
56
|
},
|
|
57
57
|
autoDestroy: false,
|
|
58
58
|
strategy: opts.conflictStrategy || DEFAULT_CONFLICT_STRATEGY,
|
|
59
|
-
restore: parseRestoreFromOptions(engineOptions)
|
|
59
|
+
restore: parseRestoreFromOptions(engineOptions, strapiInstance)
|
|
60
60
|
};
|
|
61
61
|
const destination = createLocalStrapiDestinationProvider(destinationOptions);
|
|
62
62
|
destination.onWarning = (message)=>console.warn(`\n${chalk.yellow('warn')}: ${message}`);
|
|
@@ -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 DEFAULT_IGNORED_CONTENT_TYPES,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n parseRestoreFromOptions,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst {\n providers: { createLocalFileSourceProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalDirectorySourceProvider },\n} = directoryDataTransfer;\n\nconst {\n providers: { createLocalStrapiDestinationProvider, DEFAULT_CONFLICT_STRATEGY },\n} = strapiDataTransfer;\n\nconst { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY } =\n engineDataTransfer;\n\ninterface CmdOptions {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n verbose?: boolean;\n key?: string;\n conflictStrategy?: 'restore';\n force?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n throttle?: number;\n}\n\ntype EngineOptions = Parameters<typeof createTransferEngine>[2];\n\n/**\n * Import command.\n *\n * It transfers data from a 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 const backupPath = opts.file ?? '';\n const source = (await fs.stat(backupPath)).isDirectory()\n ? createLocalDirectorySourceProvider({ directory: { path: backupPath } })\n : createLocalFileSourceProvider(getLocalFileSourceOptions(opts));\n\n /**\n * To local Strapi instance\n */\n const strapiInstance = await createStrapiInstance();\n\n /**\n * Configure and run the transfer engine\n */\n const engineOptions: EngineOptions = {\n versionStrategy: DEFAULT_VERSION_STRATEGY,\n schemaStrategy: DEFAULT_SCHEMA_STRATEGY,\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: {\n links: [\n {\n filter(link) {\n return (\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.left.type) &&\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.right.type)\n );\n },\n },\n ],\n entities: [\n {\n filter: (entity) => !DEFAULT_IGNORED_CONTENT_TYPES.includes(entity.type),\n },\n ],\n },\n };\n\n const destinationOptions = {\n async getStrapi() {\n return strapiInstance;\n },\n autoDestroy: false,\n strategy: opts.conflictStrategy || DEFAULT_CONFLICT_STRATEGY,\n restore: parseRestoreFromOptions(engineOptions),\n };\n\n const destination = createLocalStrapiDestinationProvider(destinationOptions);\n destination.onWarning = (message) => console.warn(`\\n${chalk.yellow('warn')}: ${message}`);\n\n const engine = createTransferEngine(source, destination, engineOptions);\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('import', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'import' }));\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log('Starting import...');\n await strapiInstance.telemetry.send(\n 'didDEITSProcessStart',\n getTransferTelemetryPayload(engine)\n );\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n results = await engine.transfer();\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapiInstance.telemetry.send(\n 'didDEITSProcessFinish',\n getTransferTelemetryPayload(engine)\n );\n await strapiInstance.destroy();\n\n exitWith(0, exitMessageText('import'));\n } catch (e) {\n await strapiInstance.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('import', true));\n }\n};\n\n/**\n * Infer local file source provider options based on a given filename\n */\nconst getLocalFileSourceOptions = (opts: {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n key?: string;\n}) => {\n const options: fileDataTransfer.providers.ILocalFileSourceProviderOptions = {\n file: { path: opts.file ?? '' },\n compression: { enabled: !!opts.decompress },\n encryption: { enabled: !!opts.decrypt, key: opts.key },\n };\n\n return options;\n};\n"],"names":["providers","createLocalFileSourceProvider","fileDataTransfer","createLocalDirectorySourceProvider","directoryDataTransfer","createLocalStrapiDestinationProvider","DEFAULT_CONFLICT_STRATEGY","strapiDataTransfer","createTransferEngine","DEFAULT_VERSION_STRATEGY","DEFAULT_SCHEMA_STRATEGY","engineDataTransfer","opts","isObject","exitWith","backupPath","file","source","fs","stat","isDirectory","directory","path","getLocalFileSourceOptions","strapiInstance","createStrapiInstance","engineOptions","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","links","filter","link","DEFAULT_IGNORED_CONTENT_TYPES","includes","left","type","right","entities","entity","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","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 isIgnoredContentType,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n parseRestoreFromOptions,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst {\n providers: { createLocalFileSourceProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalDirectorySourceProvider },\n} = directoryDataTransfer;\n\nconst {\n providers: { createLocalStrapiDestinationProvider, DEFAULT_CONFLICT_STRATEGY },\n} = strapiDataTransfer;\n\nconst { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY } =\n engineDataTransfer;\n\ninterface CmdOptions {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n verbose?: boolean;\n key?: string;\n conflictStrategy?: 'restore';\n force?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n throttle?: number;\n}\n\ntype EngineOptions = Parameters<typeof createTransferEngine>[2];\n\n/**\n * Import command.\n *\n * It transfers data from a 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 const backupPath = opts.file ?? '';\n const source = (await fs.stat(backupPath)).isDirectory()\n ? createLocalDirectorySourceProvider({ directory: { path: backupPath } })\n : createLocalFileSourceProvider(getLocalFileSourceOptions(opts));\n\n /**\n * To local Strapi instance\n */\n const strapiInstance = await createStrapiInstance();\n\n /**\n * Configure and run the transfer engine\n */\n const engineOptions: EngineOptions = {\n versionStrategy: DEFAULT_VERSION_STRATEGY,\n schemaStrategy: DEFAULT_SCHEMA_STRATEGY,\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: {\n links: [\n {\n filter(link) {\n return !isIgnoredContentType(link.left.type) && !isIgnoredContentType(link.right.type);\n },\n },\n ],\n entities: [\n {\n filter: (entity) => !isIgnoredContentType(entity.type),\n },\n ],\n },\n };\n\n const destinationOptions = {\n async getStrapi() {\n return strapiInstance;\n },\n autoDestroy: false,\n strategy: opts.conflictStrategy || DEFAULT_CONFLICT_STRATEGY,\n restore: parseRestoreFromOptions(engineOptions, 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 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","createLocalDirectorySourceProvider","directoryDataTransfer","createLocalStrapiDestinationProvider","DEFAULT_CONFLICT_STRATEGY","strapiDataTransfer","createTransferEngine","DEFAULT_VERSION_STRATEGY","DEFAULT_SCHEMA_STRATEGY","engineDataTransfer","opts","isObject","exitWith","backupPath","file","source","fs","stat","isDirectory","directory","path","getLocalFileSourceOptions","strapiInstance","createStrapiInstance","engineOptions","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","links","filter","link","isIgnoredContentType","left","type","right","entities","entity","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","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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"}
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
var cloudCli = require('@strapi/cloud-cli');
|
|
4
4
|
var createUser = require('./admin/create-user.js');
|
|
5
|
+
var deleteUser = require('./admin/delete-user.js');
|
|
6
|
+
var activeUser = require('./admin/active-user.js');
|
|
7
|
+
var blockUser = require('./admin/block-user.js');
|
|
8
|
+
var listUsers = require('./admin/list-users.js');
|
|
5
9
|
var resetUserPassword = require('./admin/reset-user-password.js');
|
|
6
10
|
var list = require('./components/list.js');
|
|
7
11
|
var dump = require('./configuration/dump.js');
|
|
@@ -31,6 +35,10 @@ var command$2 = require('./transfer/command.js');
|
|
|
31
35
|
|
|
32
36
|
const commands = [
|
|
33
37
|
createUser.command,
|
|
38
|
+
deleteUser.command,
|
|
39
|
+
activeUser.command,
|
|
40
|
+
blockUser.command,
|
|
41
|
+
listUsers.command,
|
|
34
42
|
resetUserPassword.command,
|
|
35
43
|
list.command,
|
|
36
44
|
dump.command,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/cli/commands/index.ts"],"sourcesContent":["import { buildStrapiCloudCommands as cloudCommands } from '@strapi/cloud-cli';\n\nimport { command as createAdminUser } from './admin/create-user';\nimport { command as resetAdminUserPassword } from './admin/reset-user-password';\nimport { command as listComponents } from './components/list';\nimport { command as configurationDump } from './configuration/dump';\nimport { command as configurationRestore } from './configuration/restore';\nimport { command as listContentTypes } from './content-types/list';\nimport { command as listControllers } from './controllers/list';\nimport { command as listHooks } from './hooks/list';\nimport { command as listMiddlewares } from './middlewares/list';\nimport { command as listPolicies } from './policies/list';\nimport { command as listRoutes } from './routes/list';\nimport { command as listServices } from './services/list';\nimport { command as disableTelemetry } from './telemetry/disable';\nimport { command as enableTelemetry } from './telemetry/enable';\nimport { command as generateTemplates } from './templates/generate';\nimport { command as generateTsTypes } from './ts/generate-types';\nimport { command as buildCommand } from './build';\nimport { command as consoleCommand } from './console';\nimport { command as developCommand } from './develop';\nimport { command as generateCommand } from './generate';\nimport { command as reportCommand } from './report';\nimport { command as startCommand } from './start';\nimport { command as versionCommand } from './version';\nimport { command as openAPICommand } from './openapi';\nimport exportCommand from './export/command';\nimport importCommand from './import/command';\nimport transferCommand from './transfer/command';\n\nimport { StrapiCommand } from '../types';\n\nexport const commands: StrapiCommand[] = [\n createAdminUser,\n resetAdminUserPassword,\n listComponents,\n configurationDump,\n configurationRestore,\n consoleCommand,\n listContentTypes,\n listControllers,\n generateCommand,\n listHooks,\n listMiddlewares,\n listPolicies,\n reportCommand,\n listRoutes,\n listServices,\n startCommand,\n disableTelemetry,\n enableTelemetry,\n generateTemplates,\n generateTsTypes,\n versionCommand,\n buildCommand,\n developCommand,\n exportCommand,\n importCommand,\n transferCommand,\n openAPICommand,\n /**\n * Cloud\n */\n cloudCommands,\n];\n"],"names":["commands","createAdminUser","resetAdminUserPassword","listComponents","configurationDump","configurationRestore","consoleCommand","listContentTypes","listControllers","generateCommand","listHooks","listMiddlewares","listPolicies","reportCommand","listRoutes","listServices","startCommand","disableTelemetry","enableTelemetry","generateTemplates","generateTsTypes","versionCommand","buildCommand","developCommand","exportCommand","importCommand","transferCommand","openAPICommand","cloudCommands"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/cli/commands/index.ts"],"sourcesContent":["import { buildStrapiCloudCommands as cloudCommands } from '@strapi/cloud-cli';\n\nimport { command as createAdminUser } from './admin/create-user';\nimport { command as deleteAdminUser } from './admin/delete-user';\nimport { command as activeAdminUser } from './admin/active-user';\nimport { command as blockAdminUser } from './admin/block-user';\nimport { command as listAdminUsers } from './admin/list-users';\nimport { command as resetAdminUserPassword } from './admin/reset-user-password';\nimport { command as listComponents } from './components/list';\nimport { command as configurationDump } from './configuration/dump';\nimport { command as configurationRestore } from './configuration/restore';\nimport { command as listContentTypes } from './content-types/list';\nimport { command as listControllers } from './controllers/list';\nimport { command as listHooks } from './hooks/list';\nimport { command as listMiddlewares } from './middlewares/list';\nimport { command as listPolicies } from './policies/list';\nimport { command as listRoutes } from './routes/list';\nimport { command as listServices } from './services/list';\nimport { command as disableTelemetry } from './telemetry/disable';\nimport { command as enableTelemetry } from './telemetry/enable';\nimport { command as generateTemplates } from './templates/generate';\nimport { command as generateTsTypes } from './ts/generate-types';\nimport { command as buildCommand } from './build';\nimport { command as consoleCommand } from './console';\nimport { command as developCommand } from './develop';\nimport { command as generateCommand } from './generate';\nimport { command as reportCommand } from './report';\nimport { command as startCommand } from './start';\nimport { command as versionCommand } from './version';\nimport { command as openAPICommand } from './openapi';\nimport exportCommand from './export/command';\nimport importCommand from './import/command';\nimport transferCommand from './transfer/command';\n\nimport { StrapiCommand } from '../types';\n\nexport const commands: StrapiCommand[] = [\n createAdminUser,\n deleteAdminUser,\n activeAdminUser,\n blockAdminUser,\n listAdminUsers,\n resetAdminUserPassword,\n listComponents,\n configurationDump,\n configurationRestore,\n consoleCommand,\n listContentTypes,\n listControllers,\n generateCommand,\n listHooks,\n listMiddlewares,\n listPolicies,\n reportCommand,\n listRoutes,\n listServices,\n startCommand,\n disableTelemetry,\n enableTelemetry,\n generateTemplates,\n generateTsTypes,\n versionCommand,\n buildCommand,\n developCommand,\n exportCommand,\n importCommand,\n transferCommand,\n openAPICommand,\n /**\n * Cloud\n */\n cloudCommands,\n];\n"],"names":["commands","createAdminUser","deleteAdminUser","activeAdminUser","blockAdminUser","listAdminUsers","resetAdminUserPassword","listComponents","configurationDump","configurationRestore","consoleCommand","listContentTypes","listControllers","generateCommand","listHooks","listMiddlewares","listPolicies","reportCommand","listRoutes","listServices","startCommand","disableTelemetry","enableTelemetry","generateTemplates","generateTsTypes","versionCommand","buildCommand","developCommand","exportCommand","importCommand","transferCommand","openAPICommand","cloudCommands"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoCaA,QAAAA,GAA4B;AACvCC,IAAAA,kBAAAA;AACAC,IAAAA,kBAAAA;AACAC,IAAAA,kBAAAA;AACAC,IAAAA,iBAAAA;AACAC,IAAAA,iBAAAA;AACAC,IAAAA,yBAAAA;AACAC,IAAAA,YAAAA;AACAC,IAAAA,YAAAA;AACAC,IAAAA,eAAAA;AACAC,IAAAA,eAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,gBAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,aAAAA;AACAC,IAAAA,eAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,kBAAAA;AACAC,IAAAA,qBAAAA;AACAC,IAAAA,eAAAA;AACAC,IAAAA,aAAAA;AACAC,IAAAA,eAAAA;AACAC,IAAAA,OAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,aAAAA;AACA;;MAGAC;;;;;"}
|
|
@@ -1,31 +1,35 @@
|
|
|
1
1
|
import { buildStrapiCloudCommands } from '@strapi/cloud-cli';
|
|
2
2
|
import { command } from './admin/create-user.mjs';
|
|
3
|
-
import { command as command$1 } from './admin/
|
|
4
|
-
import { command as command$2 } from './
|
|
5
|
-
import { command as command$3 } from './
|
|
6
|
-
import { command as command$4 } from './
|
|
7
|
-
import { command as command$
|
|
8
|
-
import { command as command$
|
|
9
|
-
import { command as command$
|
|
10
|
-
import { command as command$
|
|
11
|
-
import { command as command$
|
|
12
|
-
import { command as command$
|
|
13
|
-
import { command as command$
|
|
14
|
-
import { command as command$
|
|
15
|
-
import { command as command$
|
|
16
|
-
import { command as command$
|
|
17
|
-
import { command as command$
|
|
18
|
-
import { command as command$
|
|
19
|
-
import { command as command$
|
|
20
|
-
import { command as command$m } from './
|
|
21
|
-
import { command as command$
|
|
22
|
-
import { command as command$
|
|
23
|
-
import { command as command$
|
|
24
|
-
import { command as command$
|
|
25
|
-
import { command as command$
|
|
26
|
-
import command$
|
|
27
|
-
import command$
|
|
28
|
-
import command$
|
|
3
|
+
import { command as command$1 } from './admin/delete-user.mjs';
|
|
4
|
+
import { command as command$2 } from './admin/active-user.mjs';
|
|
5
|
+
import { command as command$3 } from './admin/block-user.mjs';
|
|
6
|
+
import { command as command$4 } from './admin/list-users.mjs';
|
|
7
|
+
import { command as command$5 } from './admin/reset-user-password.mjs';
|
|
8
|
+
import { command as command$6 } from './components/list.mjs';
|
|
9
|
+
import { command as command$7 } from './configuration/dump.mjs';
|
|
10
|
+
import { command as command$8 } from './configuration/restore.mjs';
|
|
11
|
+
import { command as command$a } from './content-types/list.mjs';
|
|
12
|
+
import { command as command$b } from './controllers/list.mjs';
|
|
13
|
+
import { command as command$d } from './hooks/list.mjs';
|
|
14
|
+
import { command as command$e } from './middlewares/list.mjs';
|
|
15
|
+
import { command as command$f } from './policies/list.mjs';
|
|
16
|
+
import { command as command$h } from './routes/list.mjs';
|
|
17
|
+
import { command as command$i } from './services/list.mjs';
|
|
18
|
+
import { command as command$k } from './telemetry/disable.mjs';
|
|
19
|
+
import { command as command$l } from './telemetry/enable.mjs';
|
|
20
|
+
import { command as command$m } from './templates/generate.mjs';
|
|
21
|
+
import { command as command$n } from './ts/generate-types.mjs';
|
|
22
|
+
import { command as command$p } from './build.mjs';
|
|
23
|
+
import { command as command$9 } from './console.mjs';
|
|
24
|
+
import { command as command$q } from './develop.mjs';
|
|
25
|
+
import { command as command$c } from './generate.mjs';
|
|
26
|
+
import { command as command$g } from './report.mjs';
|
|
27
|
+
import { command as command$j } from './start.mjs';
|
|
28
|
+
import { command as command$o } from './version.mjs';
|
|
29
|
+
import { command as command$u } from './openapi/index.mjs';
|
|
30
|
+
import command$r from './export/command.mjs';
|
|
31
|
+
import command$s from './import/command.mjs';
|
|
32
|
+
import command$t from './transfer/command.mjs';
|
|
29
33
|
|
|
30
34
|
const commands = [
|
|
31
35
|
command,
|
|
@@ -55,6 +59,10 @@ const commands = [
|
|
|
55
59
|
command$o,
|
|
56
60
|
command$p,
|
|
57
61
|
command$q,
|
|
62
|
+
command$r,
|
|
63
|
+
command$s,
|
|
64
|
+
command$t,
|
|
65
|
+
command$u,
|
|
58
66
|
/**
|
|
59
67
|
* Cloud
|
|
60
68
|
*/ buildStrapiCloudCommands
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../src/cli/commands/index.ts"],"sourcesContent":["import { buildStrapiCloudCommands as cloudCommands } from '@strapi/cloud-cli';\n\nimport { command as createAdminUser } from './admin/create-user';\nimport { command as resetAdminUserPassword } from './admin/reset-user-password';\nimport { command as listComponents } from './components/list';\nimport { command as configurationDump } from './configuration/dump';\nimport { command as configurationRestore } from './configuration/restore';\nimport { command as listContentTypes } from './content-types/list';\nimport { command as listControllers } from './controllers/list';\nimport { command as listHooks } from './hooks/list';\nimport { command as listMiddlewares } from './middlewares/list';\nimport { command as listPolicies } from './policies/list';\nimport { command as listRoutes } from './routes/list';\nimport { command as listServices } from './services/list';\nimport { command as disableTelemetry } from './telemetry/disable';\nimport { command as enableTelemetry } from './telemetry/enable';\nimport { command as generateTemplates } from './templates/generate';\nimport { command as generateTsTypes } from './ts/generate-types';\nimport { command as buildCommand } from './build';\nimport { command as consoleCommand } from './console';\nimport { command as developCommand } from './develop';\nimport { command as generateCommand } from './generate';\nimport { command as reportCommand } from './report';\nimport { command as startCommand } from './start';\nimport { command as versionCommand } from './version';\nimport { command as openAPICommand } from './openapi';\nimport exportCommand from './export/command';\nimport importCommand from './import/command';\nimport transferCommand from './transfer/command';\n\nimport { StrapiCommand } from '../types';\n\nexport const commands: StrapiCommand[] = [\n createAdminUser,\n resetAdminUserPassword,\n listComponents,\n configurationDump,\n configurationRestore,\n consoleCommand,\n listContentTypes,\n listControllers,\n generateCommand,\n listHooks,\n listMiddlewares,\n listPolicies,\n reportCommand,\n listRoutes,\n listServices,\n startCommand,\n disableTelemetry,\n enableTelemetry,\n generateTemplates,\n generateTsTypes,\n versionCommand,\n buildCommand,\n developCommand,\n exportCommand,\n importCommand,\n transferCommand,\n openAPICommand,\n /**\n * Cloud\n */\n cloudCommands,\n];\n"],"names":["commands","createAdminUser","resetAdminUserPassword","listComponents","configurationDump","configurationRestore","consoleCommand","listContentTypes","listControllers","generateCommand","listHooks","listMiddlewares","listPolicies","reportCommand","listRoutes","listServices","startCommand","disableTelemetry","enableTelemetry","generateTemplates","generateTsTypes","versionCommand","buildCommand","developCommand","exportCommand","importCommand","transferCommand","openAPICommand","cloudCommands"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../src/cli/commands/index.ts"],"sourcesContent":["import { buildStrapiCloudCommands as cloudCommands } from '@strapi/cloud-cli';\n\nimport { command as createAdminUser } from './admin/create-user';\nimport { command as deleteAdminUser } from './admin/delete-user';\nimport { command as activeAdminUser } from './admin/active-user';\nimport { command as blockAdminUser } from './admin/block-user';\nimport { command as listAdminUsers } from './admin/list-users';\nimport { command as resetAdminUserPassword } from './admin/reset-user-password';\nimport { command as listComponents } from './components/list';\nimport { command as configurationDump } from './configuration/dump';\nimport { command as configurationRestore } from './configuration/restore';\nimport { command as listContentTypes } from './content-types/list';\nimport { command as listControllers } from './controllers/list';\nimport { command as listHooks } from './hooks/list';\nimport { command as listMiddlewares } from './middlewares/list';\nimport { command as listPolicies } from './policies/list';\nimport { command as listRoutes } from './routes/list';\nimport { command as listServices } from './services/list';\nimport { command as disableTelemetry } from './telemetry/disable';\nimport { command as enableTelemetry } from './telemetry/enable';\nimport { command as generateTemplates } from './templates/generate';\nimport { command as generateTsTypes } from './ts/generate-types';\nimport { command as buildCommand } from './build';\nimport { command as consoleCommand } from './console';\nimport { command as developCommand } from './develop';\nimport { command as generateCommand } from './generate';\nimport { command as reportCommand } from './report';\nimport { command as startCommand } from './start';\nimport { command as versionCommand } from './version';\nimport { command as openAPICommand } from './openapi';\nimport exportCommand from './export/command';\nimport importCommand from './import/command';\nimport transferCommand from './transfer/command';\n\nimport { StrapiCommand } from '../types';\n\nexport const commands: StrapiCommand[] = [\n createAdminUser,\n deleteAdminUser,\n activeAdminUser,\n blockAdminUser,\n listAdminUsers,\n resetAdminUserPassword,\n listComponents,\n configurationDump,\n configurationRestore,\n consoleCommand,\n listContentTypes,\n listControllers,\n generateCommand,\n listHooks,\n listMiddlewares,\n listPolicies,\n reportCommand,\n listRoutes,\n listServices,\n startCommand,\n disableTelemetry,\n enableTelemetry,\n generateTemplates,\n generateTsTypes,\n versionCommand,\n buildCommand,\n developCommand,\n exportCommand,\n importCommand,\n transferCommand,\n openAPICommand,\n /**\n * Cloud\n */\n cloudCommands,\n];\n"],"names":["commands","createAdminUser","deleteAdminUser","activeAdminUser","blockAdminUser","listAdminUsers","resetAdminUserPassword","listComponents","configurationDump","configurationRestore","consoleCommand","listContentTypes","listControllers","generateCommand","listHooks","listMiddlewares","listPolicies","reportCommand","listRoutes","listServices","startCommand","disableTelemetry","enableTelemetry","generateTemplates","generateTsTypes","versionCommand","buildCommand","developCommand","exportCommand","importCommand","transferCommand","openAPICommand","cloudCommands"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoCaA,QAAAA,GAA4B;AACvCC,IAAAA,OAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACA;;MAGAC;;;;;"}
|
|
@@ -1,17 +1,31 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var fp = require('lodash/fp');
|
|
4
|
+
var ora = require('ora');
|
|
4
5
|
var dataTransfer = require('@strapi/data-transfer');
|
|
5
6
|
var dataTransfer$1 = require('../../utils/data-transfer.js');
|
|
6
7
|
var helpers = require('../../utils/helpers.js');
|
|
7
8
|
|
|
8
9
|
const { createTransferEngine } = dataTransfer.engine;
|
|
9
10
|
const { providers: { createRemoteStrapiDestinationProvider, createLocalStrapiSourceProvider, createLocalStrapiDestinationProvider, createRemoteStrapiSourceProvider } } = dataTransfer.strapi;
|
|
11
|
+
const resolveRemotePullAssetIdleTimeoutMs = (value)=>{
|
|
12
|
+
if (value == null || value === '') {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
const n = typeof value === 'number' ? value : Number(value);
|
|
16
|
+
if (!Number.isFinite(n) || n <= 0) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
return n;
|
|
20
|
+
};
|
|
10
21
|
/**
|
|
11
22
|
* Transfer command.
|
|
12
23
|
*
|
|
13
24
|
* Transfers data between local Strapi and remote Strapi instances
|
|
14
25
|
*/ var action = (async (opts)=>{
|
|
26
|
+
// Avoid DeprecationWarning lines on stderr (e.g. pg `client.query()` while a query is in flight)
|
|
27
|
+
// interleaving with ora spinners during transfer. (Runtime API; not on all @types/node Process typings.)
|
|
28
|
+
process.noDeprecation = true;
|
|
15
29
|
// Validate inputs from Commander
|
|
16
30
|
if (!fp.isObject(opts)) {
|
|
17
31
|
helpers.exitWith(1, 'Could not parse command arguments');
|
|
@@ -20,6 +34,7 @@ const { providers: { createRemoteStrapiDestinationProvider, createLocalStrapiSou
|
|
|
20
34
|
helpers.exitWith(1, 'Exactly one source (from) or destination (to) option must be provided');
|
|
21
35
|
}
|
|
22
36
|
const strapi = await dataTransfer$1.createStrapiInstance();
|
|
37
|
+
const checksumsEnabled = opts.checksums !== false;
|
|
23
38
|
let source;
|
|
24
39
|
let destination;
|
|
25
40
|
// if no URL provided, use local Strapi
|
|
@@ -31,21 +46,33 @@ const { providers: { createRemoteStrapiDestinationProvider, createLocalStrapiSou
|
|
|
31
46
|
if (!opts.fromToken) {
|
|
32
47
|
helpers.exitWith(1, 'Missing token for remote destination');
|
|
33
48
|
}
|
|
49
|
+
const assetIdleTimeoutMs = resolveRemotePullAssetIdleTimeoutMs(strapi.config.get('server.transfer.remote.assetIdleTimeoutMs'));
|
|
34
50
|
source = createRemoteStrapiSourceProvider({
|
|
35
51
|
getStrapi: ()=>strapi,
|
|
36
52
|
url: opts.from,
|
|
37
53
|
auth: {
|
|
38
54
|
type: 'token',
|
|
39
55
|
token: opts.fromToken
|
|
40
|
-
}
|
|
56
|
+
},
|
|
57
|
+
...assetIdleTimeoutMs !== undefined ? {
|
|
58
|
+
streamTimeout: assetIdleTimeoutMs
|
|
59
|
+
} : {},
|
|
60
|
+
...checksumsEnabled ? {
|
|
61
|
+
verifyChecksums: true
|
|
62
|
+
} : {}
|
|
41
63
|
});
|
|
42
64
|
}
|
|
65
|
+
/** Wired after `engine` exists so destination prep can update the CLI spinner. */ const transferPhaseBridge = {
|
|
66
|
+
emit () {
|
|
67
|
+
/* replaced below once `progress` exists */ }
|
|
68
|
+
};
|
|
43
69
|
// if no URL provided, use local Strapi
|
|
44
70
|
if (!opts.to) {
|
|
45
71
|
destination = createLocalStrapiDestinationProvider({
|
|
46
72
|
getStrapi: ()=>strapi,
|
|
47
73
|
strategy: 'restore',
|
|
48
|
-
restore: dataTransfer$1.parseRestoreFromOptions(opts)
|
|
74
|
+
restore: dataTransfer$1.parseRestoreFromOptions(opts, strapi),
|
|
75
|
+
onTransferPhase: (message)=>transferPhaseBridge.emit(message)
|
|
49
76
|
});
|
|
50
77
|
} else {
|
|
51
78
|
if (!opts.toToken) {
|
|
@@ -58,7 +85,11 @@ const { providers: { createRemoteStrapiDestinationProvider, createLocalStrapiSou
|
|
|
58
85
|
token: opts.toToken
|
|
59
86
|
},
|
|
60
87
|
strategy: 'restore',
|
|
61
|
-
restore: dataTransfer$1.parseRestoreFromOptions(opts)
|
|
88
|
+
restore: dataTransfer$1.parseRestoreFromOptions(opts, strapi),
|
|
89
|
+
onTransferPhase: (message)=>transferPhaseBridge.emit(message),
|
|
90
|
+
...checksumsEnabled ? {
|
|
91
|
+
verifyChecksums: true
|
|
92
|
+
} : {}
|
|
62
93
|
});
|
|
63
94
|
}
|
|
64
95
|
if (!source || !destination) {
|
|
@@ -74,14 +105,14 @@ const { providers: { createRemoteStrapiDestinationProvider, createLocalStrapiSou
|
|
|
74
105
|
links: [
|
|
75
106
|
{
|
|
76
107
|
filter (link) {
|
|
77
|
-
return !dataTransfer$1.
|
|
108
|
+
return !dataTransfer$1.isIgnoredContentType(link.left.type) && !dataTransfer$1.isIgnoredContentType(link.right.type);
|
|
78
109
|
}
|
|
79
110
|
}
|
|
80
111
|
],
|
|
81
112
|
entities: [
|
|
82
113
|
{
|
|
83
114
|
filter (entity) {
|
|
84
|
-
return !dataTransfer$1.
|
|
115
|
+
return !dataTransfer$1.isIgnoredContentType(entity.type);
|
|
85
116
|
}
|
|
86
117
|
}
|
|
87
118
|
]
|
|
@@ -89,7 +120,39 @@ const { providers: { createRemoteStrapiDestinationProvider, createLocalStrapiSou
|
|
|
89
120
|
});
|
|
90
121
|
engine.diagnostics.onDiagnostic(dataTransfer$1.formatDiagnostic('transfer', opts.verbose));
|
|
91
122
|
const progress = engine.progress.stream;
|
|
123
|
+
/** Shown until destination prep emits a step; then we keep this prefix and append the step after " — ". */ const STARTING_TRANSFER_PREFIX = 'Starting transfer…';
|
|
124
|
+
let prepStepDetail = null;
|
|
125
|
+
const formatPrepSpinnerLine = ()=>prepStepDetail != null && prepStepDetail !== '' ? `${STARTING_TRANSFER_PREFIX} — ${prepStepDetail}` : STARTING_TRANSFER_PREFIX;
|
|
126
|
+
transferPhaseBridge.emit = (message)=>{
|
|
127
|
+
prepStepDetail = message;
|
|
128
|
+
progress.emit('transfer::phase', {
|
|
129
|
+
message: formatPrepSpinnerLine()
|
|
130
|
+
});
|
|
131
|
+
};
|
|
92
132
|
const { updateLoader } = dataTransfer$1.loadersFactory();
|
|
133
|
+
let startingSpinner = null;
|
|
134
|
+
let startingElapsedInterval = null;
|
|
135
|
+
/** Set when `transfer::start` fires so we can print a final persisted line with elapsed time. */ let transferPrepStartedAt = null;
|
|
136
|
+
/**
|
|
137
|
+
* Stops the "starting transfer" spinner and **leaves a finished line** in the console (like stage
|
|
138
|
+
* `succeed`/`fail`), so the next stage spinner starts on a new line instead of replacing this one.
|
|
139
|
+
*/ const finishStartingSpinner = (outcome = 'done')=>{
|
|
140
|
+
if (startingElapsedInterval) {
|
|
141
|
+
clearInterval(startingElapsedInterval);
|
|
142
|
+
startingElapsedInterval = null;
|
|
143
|
+
}
|
|
144
|
+
if (startingSpinner) {
|
|
145
|
+
const elapsed = transferPrepStartedAt != null ? Date.now() - transferPrepStartedAt : 0;
|
|
146
|
+
const line = `${formatPrepSpinnerLine()}${helpers.TRANSFER_PROGRESS_FIELD_SEP}${helpers.formatElapsedAndMaybeRemainingLabel(elapsed, null)}`;
|
|
147
|
+
if (outcome === 'fail') {
|
|
148
|
+
startingSpinner.fail(line);
|
|
149
|
+
} else {
|
|
150
|
+
startingSpinner.succeed(line);
|
|
151
|
+
}
|
|
152
|
+
startingSpinner = null;
|
|
153
|
+
transferPrepStartedAt = null;
|
|
154
|
+
}
|
|
155
|
+
};
|
|
93
156
|
engine.onSchemaDiff(dataTransfer$1.getDiffHandler(engine, {
|
|
94
157
|
force: opts.force,
|
|
95
158
|
action: 'transfer'
|
|
@@ -98,20 +161,56 @@ const { providers: { createRemoteStrapiDestinationProvider, createLocalStrapiSou
|
|
|
98
161
|
force: opts.force,
|
|
99
162
|
action: 'transfer'
|
|
100
163
|
}));
|
|
164
|
+
// Update more frequently to ensure elapsed time is accurate even if the stage is not progressing
|
|
165
|
+
const activeStages = new Set();
|
|
166
|
+
const lastStageData = {};
|
|
167
|
+
const interval = setInterval(()=>{
|
|
168
|
+
for (const stage of activeStages){
|
|
169
|
+
if (lastStageData[stage]) {
|
|
170
|
+
// Clone the lastStageData and ensure endTime is undefined so elapsed uses Date.now()
|
|
171
|
+
const dataCopy = {
|
|
172
|
+
...lastStageData[stage],
|
|
173
|
+
endTime: undefined
|
|
174
|
+
};
|
|
175
|
+
updateLoader(stage, {
|
|
176
|
+
[stage]: dataCopy
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}, 100);
|
|
101
181
|
progress.on(`stage::start`, ({ stage, data })=>{
|
|
182
|
+
finishStartingSpinner('done');
|
|
102
183
|
updateLoader(stage, data).start();
|
|
103
184
|
});
|
|
104
185
|
progress.on('stage::finish', ({ stage, data })=>{
|
|
105
186
|
updateLoader(stage, data).succeed();
|
|
106
187
|
});
|
|
107
188
|
progress.on('stage::progress', ({ stage, data })=>{
|
|
189
|
+
lastStageData[stage] = data[stage];
|
|
190
|
+
activeStages.add(stage);
|
|
108
191
|
updateLoader(stage, data);
|
|
109
192
|
});
|
|
110
193
|
progress.on('stage::error', ({ stage, data })=>{
|
|
111
194
|
updateLoader(stage, data).fail();
|
|
112
195
|
});
|
|
196
|
+
progress.on('transfer::finish', ()=>{
|
|
197
|
+
finishStartingSpinner('done');
|
|
198
|
+
clearInterval(interval);
|
|
199
|
+
});
|
|
200
|
+
progress.on('transfer::error', ()=>{
|
|
201
|
+
finishStartingSpinner('fail');
|
|
202
|
+
clearInterval(interval);
|
|
203
|
+
});
|
|
113
204
|
progress.on('transfer::start', async ()=>{
|
|
114
|
-
|
|
205
|
+
transferPrepStartedAt = Date.now();
|
|
206
|
+
prepStepDetail = null;
|
|
207
|
+
startingSpinner = ora(formatPrepSpinnerLine()).start();
|
|
208
|
+
startingElapsedInterval = setInterval(()=>{
|
|
209
|
+
if (startingSpinner && transferPrepStartedAt != null) {
|
|
210
|
+
const elapsed = Date.now() - transferPrepStartedAt;
|
|
211
|
+
startingSpinner.text = `${formatPrepSpinnerLine()}${helpers.TRANSFER_PROGRESS_FIELD_SEP}${helpers.formatElapsedAndMaybeRemainingLabel(elapsed, null)}`;
|
|
212
|
+
}
|
|
213
|
+
}, 100);
|
|
115
214
|
await strapi.telemetry.send('didDEITSProcessStart', dataTransfer$1.getTransferTelemetryPayload(engine));
|
|
116
215
|
});
|
|
117
216
|
let results;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sources":["../../../../../src/cli/commands/transfer/action.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { engine as engineDataTransfer, strapi as strapiDataTransfer } from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n DEFAULT_IGNORED_CONTENT_TYPES,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n parseRestoreFromOptions,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst { createTransferEngine } = engineDataTransfer;\nconst {\n providers: {\n createRemoteStrapiDestinationProvider,\n createLocalStrapiSourceProvider,\n createLocalStrapiDestinationProvider,\n createRemoteStrapiSourceProvider,\n },\n} = strapiDataTransfer;\n\ninterface CmdOptions {\n from?: URL;\n fromToken: string;\n to: URL;\n toToken: string;\n verbose?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n throttle?: number;\n force?: boolean;\n}\n/**\n * Transfer command.\n *\n * Transfers data between local Strapi and remote Strapi instances\n */\nexport default async (opts: CmdOptions) => {\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n if (!(opts.from || opts.to) || (opts.from && opts.to)) {\n exitWith(1, 'Exactly one source (from) or destination (to) option must be provided');\n }\n\n const strapi = await createStrapiInstance();\n let source;\n let destination;\n\n // if no URL provided, use local Strapi\n if (!opts.from) {\n source = createLocalStrapiSourceProvider({\n getStrapi: () => strapi,\n });\n }\n // if URL provided, set up a remote source provider\n else {\n if (!opts.fromToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n source = createRemoteStrapiSourceProvider({\n getStrapi: () => strapi,\n url: opts.from,\n auth: {\n type: 'token',\n token: opts.fromToken,\n },\n });\n }\n\n // if no URL provided, use local Strapi\n if (!opts.to) {\n destination = createLocalStrapiDestinationProvider({\n getStrapi: () => strapi,\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts),\n });\n }\n // if URL provided, set up a remote destination provider\n else {\n if (!opts.toToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n destination = createRemoteStrapiDestinationProvider({\n url: opts.to,\n auth: {\n type: 'token',\n token: opts.toToken,\n },\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts),\n });\n }\n\n if (!source || !destination) {\n exitWith(1, 'Could not create providers');\n }\n\n const engine = createTransferEngine(source, destination, {\n versionStrategy: 'exact',\n schemaStrategy: 'strict',\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: {\n links: [\n {\n filter(link) {\n return (\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.left.type) &&\n !DEFAULT_IGNORED_CONTENT_TYPES.includes(link.right.type)\n );\n },\n },\n ],\n entities: [\n {\n filter(entity) {\n return !DEFAULT_IGNORED_CONTENT_TYPES.includes(entity.type);\n },\n },\n ],\n },\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('transfer', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'transfer' }));\n\n engine.addErrorHandler(\n 'ASSETS_DIRECTORY_ERR',\n getAssetsBackupHandler(engine, { force: opts.force, action: 'transfer' })\n );\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('stage::error', ({ stage, data }) => {\n updateLoader(stage, data).fail();\n });\n\n progress.on('transfer::start', async () => {\n console.log(`Starting transfer...`);\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: Awaited<ReturnType<typeof engine.transfer>>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n exitWith(0, exitMessageText('transfer'));\n } catch (e) {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('transfer', true));\n }\n};\n"],"names":["createTransferEngine","engineDataTransfer","providers","createRemoteStrapiDestinationProvider","createLocalStrapiSourceProvider","createLocalStrapiDestinationProvider","createRemoteStrapiSourceProvider","strapiDataTransfer","opts","isObject","exitWith","from","to","strapi","createStrapiInstance","source","destination","getStrapi","fromToken","url","auth","type","token","strategy","restore","parseRestoreFromOptions","toToken","engine","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","links","filter","link","DEFAULT_IGNORED_CONTENT_TYPES","includes","left","right","entities","entity","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","onSchemaDiff","getDiffHandler","force","action","addErrorHandler","getAssetsBackupHandler","on","stage","data","start","succeed","fail","console","log","telemetry","send","getTransferTelemetryPayload","results","setSignalHandler","abortTransfer","transfer","table","buildTransferTable","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 isIgnoredContentType,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n parseRestoreFromOptions,\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 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 const strapi = await createStrapiInstance();\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: {\n links: [\n {\n filter(link) {\n return !isIgnoredContentType(link.left.type) && !isIgnoredContentType(link.right.type);\n },\n },\n ],\n entities: [\n {\n filter(entity) {\n return !isIgnoredContentType(entity.type);\n },\n },\n ],\n },\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('transfer', opts.verbose));\n\n const progress = engine.progress.stream;\n\n /** 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 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","strapi","createStrapiInstance","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","links","filter","link","isIgnoredContentType","left","right","entities","entity","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","ora","text","telemetry","send","getTransferTelemetryPayload","results","setSignalHandler","abortTransfer","transfer","table","buildTransferTable","console","log","toString","e","error","exitMessageText"],"mappings":"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"}
|