@strapi/strapi
Version:
An open source headless CMS solution to create and manage your own API. It provides a powerful dashboard and features to make your life easier. Databases supported: MySQL, MariaDB, PostgreSQL, SQLite
1 lines • 10.8 kB
Source Map (JSON)
{"version":3,"file":"action.mjs","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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"}