@strapi/strapi 5.0.0-beta.3 → 5.0.0-beta.5
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/admin.d.ts.map +1 -1
- package/dist/admin.js +4 -1
- package/dist/admin.js.map +1 -1
- package/dist/admin.mjs +3 -1
- package/dist/admin.mjs.map +1 -1
- package/dist/cli/commands/export/action.mjs +1 -1
- package/dist/cli/commands/import/action.mjs +1 -1
- package/dist/cli/commands/transfer/action.mjs +1 -1
- package/dist/cli/utils/commander.d.ts +2 -2
- package/dist/cli/utils/commander.d.ts.map +1 -1
- package/dist/cli/utils/data-transfer.d.ts +2 -2
- package/dist/cli/utils/data-transfer.d.ts.map +1 -1
- package/dist/cli/utils/data-transfer.js +1 -1
- package/dist/cli/utils/data-transfer.js.map +1 -1
- package/dist/cli/utils/data-transfer.mjs +1 -1
- package/dist/cli/utils/data-transfer.mjs.map +1 -1
- package/dist/cli/utils/helpers.d.ts +1 -1
- package/dist/cli/utils/helpers.d.ts.map +1 -1
- package/dist/cli/utils/pkg.d.ts.map +1 -1
- package/dist/cli/utils/tsconfig.d.ts.map +1 -1
- package/dist/node/core/aliases.d.ts +1 -1
- package/dist/node/core/aliases.d.ts.map +1 -1
- package/dist/node/core/config.d.ts.map +1 -1
- package/dist/node/create-build-context.d.ts.map +1 -1
- package/package.json +27 -24
package/dist/admin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAe,MAAM,4BAA4B,CAAC;AAU1E,QAAA,MAAM,MAAM,cAAe,WAAW,GAAG,IAAI,4BAA4B,eAAe,
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAe,MAAM,4BAA4B,CAAC;AAU1E,QAAA,MAAM,MAAM,cAAe,WAAW,GAAG,IAAI,4BAA4B,eAAe,kBAkBvF,CAAC;AAEF,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,CAAC;AACjC,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,cAAc,4BAA4B,CAAC"}
|
package/dist/admin.js
CHANGED
|
@@ -7,6 +7,7 @@ const email = require("@strapi/plugin-email/strapi-admin");
|
|
|
7
7
|
const upload = require("@strapi/plugin-upload/strapi-admin");
|
|
8
8
|
const i18n = require("@strapi/plugin-i18n/strapi-admin");
|
|
9
9
|
const contentReleases = require("@strapi/content-releases/strapi-admin");
|
|
10
|
+
const reviewWorkflows = require("@strapi/review-workflows/strapi-admin");
|
|
10
11
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
11
12
|
const contentTypeBuilder__default = /* @__PURE__ */ _interopDefault(contentTypeBuilder);
|
|
12
13
|
const contentManager__default = /* @__PURE__ */ _interopDefault(contentManager);
|
|
@@ -14,6 +15,7 @@ const email__default = /* @__PURE__ */ _interopDefault(email);
|
|
|
14
15
|
const upload__default = /* @__PURE__ */ _interopDefault(upload);
|
|
15
16
|
const i18n__default = /* @__PURE__ */ _interopDefault(i18n);
|
|
16
17
|
const contentReleases__default = /* @__PURE__ */ _interopDefault(contentReleases);
|
|
18
|
+
const reviewWorkflows__default = /* @__PURE__ */ _interopDefault(reviewWorkflows);
|
|
17
19
|
const render = (mountNode, { plugins, ...restArgs }) => {
|
|
18
20
|
return strapiAdmin.renderAdmin(mountNode, {
|
|
19
21
|
...restArgs,
|
|
@@ -27,7 +29,8 @@ const render = (mountNode, { plugins, ...restArgs }) => {
|
|
|
27
29
|
// @ts-expect-error – TODO: fix this, the "types" folder has it wrong.
|
|
28
30
|
contentReleases: contentReleases__default.default,
|
|
29
31
|
i18n: i18n__default.default,
|
|
30
|
-
//
|
|
32
|
+
// @ts-expect-error – TODO: fix this, the "types" folder has it wrong.
|
|
33
|
+
reviewWorkflows: reviewWorkflows__default.default,
|
|
31
34
|
...plugins
|
|
32
35
|
}
|
|
33
36
|
});
|
package/dist/admin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.js","sources":["../src/admin.ts"],"sourcesContent":["import { RenderAdminArgs, renderAdmin } from '@strapi/admin/strapi-admin';\nimport contentTypeBuilder from '@strapi/plugin-content-type-builder/strapi-admin';\nimport contentManager from '@strapi/plugin-content-manager/strapi-admin';\nimport email from '@strapi/plugin-email/strapi-admin';\n// @ts-expect-error – No types, yet.\nimport upload from '@strapi/plugin-upload/strapi-admin';\nimport i18n from '@strapi/plugin-i18n/strapi-admin';\nimport contentReleases from '@strapi/content-releases/strapi-admin';\
|
|
1
|
+
{"version":3,"file":"admin.js","sources":["../src/admin.ts"],"sourcesContent":["import { RenderAdminArgs, renderAdmin } from '@strapi/admin/strapi-admin';\nimport contentTypeBuilder from '@strapi/plugin-content-type-builder/strapi-admin';\nimport contentManager from '@strapi/plugin-content-manager/strapi-admin';\nimport email from '@strapi/plugin-email/strapi-admin';\n// @ts-expect-error – No types, yet.\nimport upload from '@strapi/plugin-upload/strapi-admin';\nimport i18n from '@strapi/plugin-i18n/strapi-admin';\nimport contentReleases from '@strapi/content-releases/strapi-admin';\nimport reviewWorkflows from '@strapi/review-workflows/strapi-admin';\n\nconst render = (mountNode: HTMLElement | null, { plugins, ...restArgs }: RenderAdminArgs) => {\n return renderAdmin(mountNode, {\n ...restArgs,\n plugins: {\n // @ts-expect-error – TODO: fix this\n 'content-manager': contentManager,\n 'content-type-builder': contentTypeBuilder,\n // @ts-expect-error – TODO: fix this\n email,\n upload,\n // @ts-expect-error – TODO: fix this, the \"types\" folder has it wrong.\n contentReleases,\n i18n,\n // @ts-expect-error – TODO: fix this, the \"types\" folder has it wrong.\n reviewWorkflows,\n ...plugins,\n },\n });\n};\n\nexport { render as renderAdmin };\nexport type { RenderAdminArgs };\n\nexport * from '@strapi/admin/strapi-admin';\n"],"names":["renderAdmin","contentManager","contentTypeBuilder","email","upload","contentReleases","i18n","reviewWorkflows"],"mappings":";;;;;;;;;;;;;;;;;;AAUA,MAAM,SAAS,CAAC,WAA+B,EAAE,SAAS,GAAG,eAAgC;AAC3F,SAAOA,YAAAA,YAAY,WAAW;AAAA,IAC5B,GAAG;AAAA,IACH,SAAS;AAAA;AAAA,MAEP,mBAAmBC,wBAAA;AAAA,MACnB,wBAAwBC,4BAAA;AAAA;AAAA,MAAA,OAExBC,eAAA;AAAA,MAAA,QACAC,gBAAA;AAAA;AAAA,MAAA,iBAEAC,yBAAA;AAAA,MAAA,MACAC,cAAA;AAAA;AAAA,MAAA,iBAEAC,yBAAA;AAAA,MACA,GAAG;AAAA,IACL;AAAA,EAAA,CACD;AACH;;;;;;;;;"}
|
package/dist/admin.mjs
CHANGED
|
@@ -6,6 +6,7 @@ import email from "@strapi/plugin-email/strapi-admin";
|
|
|
6
6
|
import upload from "@strapi/plugin-upload/strapi-admin";
|
|
7
7
|
import i18n from "@strapi/plugin-i18n/strapi-admin";
|
|
8
8
|
import contentReleases from "@strapi/content-releases/strapi-admin";
|
|
9
|
+
import reviewWorkflows from "@strapi/review-workflows/strapi-admin";
|
|
9
10
|
const render = (mountNode, { plugins, ...restArgs }) => {
|
|
10
11
|
return renderAdmin(mountNode, {
|
|
11
12
|
...restArgs,
|
|
@@ -19,7 +20,8 @@ const render = (mountNode, { plugins, ...restArgs }) => {
|
|
|
19
20
|
// @ts-expect-error – TODO: fix this, the "types" folder has it wrong.
|
|
20
21
|
contentReleases,
|
|
21
22
|
i18n,
|
|
22
|
-
//
|
|
23
|
+
// @ts-expect-error – TODO: fix this, the "types" folder has it wrong.
|
|
24
|
+
reviewWorkflows,
|
|
23
25
|
...plugins
|
|
24
26
|
}
|
|
25
27
|
});
|
package/dist/admin.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.mjs","sources":["../src/admin.ts"],"sourcesContent":["import { RenderAdminArgs, renderAdmin } from '@strapi/admin/strapi-admin';\nimport contentTypeBuilder from '@strapi/plugin-content-type-builder/strapi-admin';\nimport contentManager from '@strapi/plugin-content-manager/strapi-admin';\nimport email from '@strapi/plugin-email/strapi-admin';\n// @ts-expect-error – No types, yet.\nimport upload from '@strapi/plugin-upload/strapi-admin';\nimport i18n from '@strapi/plugin-i18n/strapi-admin';\nimport contentReleases from '@strapi/content-releases/strapi-admin';\
|
|
1
|
+
{"version":3,"file":"admin.mjs","sources":["../src/admin.ts"],"sourcesContent":["import { RenderAdminArgs, renderAdmin } from '@strapi/admin/strapi-admin';\nimport contentTypeBuilder from '@strapi/plugin-content-type-builder/strapi-admin';\nimport contentManager from '@strapi/plugin-content-manager/strapi-admin';\nimport email from '@strapi/plugin-email/strapi-admin';\n// @ts-expect-error – No types, yet.\nimport upload from '@strapi/plugin-upload/strapi-admin';\nimport i18n from '@strapi/plugin-i18n/strapi-admin';\nimport contentReleases from '@strapi/content-releases/strapi-admin';\nimport reviewWorkflows from '@strapi/review-workflows/strapi-admin';\n\nconst render = (mountNode: HTMLElement | null, { plugins, ...restArgs }: RenderAdminArgs) => {\n return renderAdmin(mountNode, {\n ...restArgs,\n plugins: {\n // @ts-expect-error – TODO: fix this\n 'content-manager': contentManager,\n 'content-type-builder': contentTypeBuilder,\n // @ts-expect-error – TODO: fix this\n email,\n upload,\n // @ts-expect-error – TODO: fix this, the \"types\" folder has it wrong.\n contentReleases,\n i18n,\n // @ts-expect-error – TODO: fix this, the \"types\" folder has it wrong.\n reviewWorkflows,\n ...plugins,\n },\n });\n};\n\nexport { render as renderAdmin };\nexport type { RenderAdminArgs };\n\nexport * from '@strapi/admin/strapi-admin';\n"],"names":[],"mappings":";;;;;;;;;AAUA,MAAM,SAAS,CAAC,WAA+B,EAAE,SAAS,GAAG,eAAgC;AAC3F,SAAO,YAAY,WAAW;AAAA,IAC5B,GAAG;AAAA,IACH,SAAS;AAAA;AAAA,MAEP,mBAAmB;AAAA,MACnB,wBAAwB;AAAA;AAAA,MAExB;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA,GAAG;AAAA,IACL;AAAA,EAAA,CACD;AACH;"}
|
|
@@ -2,7 +2,7 @@ import { isObject, isString, isFinite, toNumber } from "lodash/fp";
|
|
|
2
2
|
import fse from "fs-extra";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { engine, file, strapi } from "@strapi/data-transfer";
|
|
5
|
-
import { createStrapiInstance, DEFAULT_IGNORED_CONTENT_TYPES, formatDiagnostic, getTransferTelemetryPayload,
|
|
5
|
+
import { createStrapiInstance, DEFAULT_IGNORED_CONTENT_TYPES, formatDiagnostic, getTransferTelemetryPayload, setSignalHandler, abortTransfer, buildTransferTable, exitMessageText, loadersFactory, getDefaultExportName } from "../../utils/data-transfer.mjs";
|
|
6
6
|
import { exitWith } from "../../utils/helpers.mjs";
|
|
7
7
|
const {
|
|
8
8
|
providers: { createLocalFileDestinationProvider }
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isObject } from "lodash/fp";
|
|
2
2
|
import chalk from "chalk";
|
|
3
3
|
import { file, strapi as strapi$1, engine } from "@strapi/data-transfer";
|
|
4
|
-
import { createStrapiInstance, DEFAULT_IGNORED_CONTENT_TYPES, parseRestoreFromOptions, formatDiagnostic, getDiffHandler, getTransferTelemetryPayload,
|
|
4
|
+
import { createStrapiInstance, DEFAULT_IGNORED_CONTENT_TYPES, parseRestoreFromOptions, formatDiagnostic, getDiffHandler, getTransferTelemetryPayload, setSignalHandler, abortTransfer, buildTransferTable, exitMessageText, loadersFactory } from "../../utils/data-transfer.mjs";
|
|
5
5
|
import { exitWith } from "../../utils/helpers.mjs";
|
|
6
6
|
const {
|
|
7
7
|
providers: { createLocalFileSourceProvider }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isObject } from "lodash/fp";
|
|
2
2
|
import { engine, strapi } from "@strapi/data-transfer";
|
|
3
|
-
import { createStrapiInstance, parseRestoreFromOptions, DEFAULT_IGNORED_CONTENT_TYPES, formatDiagnostic, getDiffHandler, getAssetsBackupHandler, getTransferTelemetryPayload,
|
|
3
|
+
import { createStrapiInstance, parseRestoreFromOptions, DEFAULT_IGNORED_CONTENT_TYPES, formatDiagnostic, getDiffHandler, getAssetsBackupHandler, getTransferTelemetryPayload, setSignalHandler, abortTransfer, buildTransferTable, exitMessageText, loadersFactory } from "../../utils/data-transfer.mjs";
|
|
4
4
|
import { exitWith } from "../../utils/helpers.mjs";
|
|
5
5
|
const { createTransferEngine } = engine;
|
|
6
6
|
const {
|
|
@@ -26,10 +26,10 @@ declare const promptEncryptionKey: (thisCommand: Command) => Promise<void>;
|
|
|
26
26
|
* hook: require a confirmation message to be accepted unless forceOption (-f,--force) is used
|
|
27
27
|
*/
|
|
28
28
|
declare const getCommanderConfirmMessage: (message: string, { failMessage }?: {
|
|
29
|
-
failMessage?: string
|
|
29
|
+
failMessage?: string;
|
|
30
30
|
}) => (command: Command) => Promise<void>;
|
|
31
31
|
declare const confirmMessage: (message: string, { force }?: {
|
|
32
|
-
force?: boolean
|
|
32
|
+
force?: boolean;
|
|
33
33
|
}) => Promise<any>;
|
|
34
34
|
declare const forceOption: Option;
|
|
35
35
|
export { getParseListWithChoices, parseList, parseURL, parseInteger, promptEncryptionKey, getCommanderConfirmMessage, confirmMessage, forceOption, };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commander.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/commander.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAA8B,MAAM,EAAE,MAAM,WAAW,CAAC;AAKxE;;GAEG;AACH,QAAA,MAAM,SAAS,UAAW,MAAM,aAQ/B,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,uBAAuB,YAAa,MAAM,EAAE,oCACjC,MAAM,aAYtB,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,YAAY,UAAW,MAAM,WAOlC,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,QAAQ,UAAW,MAAM,QAW9B,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,mBAAmB,gBAAuB,OAAO,kBA8BtD,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,0BAA0B,YACrB,MAAM
|
|
1
|
+
{"version":3,"file":"commander.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/commander.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAA8B,MAAM,EAAE,MAAM,WAAW,CAAC;AAKxE;;GAEG;AACH,QAAA,MAAM,SAAS,UAAW,MAAM,aAQ/B,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,uBAAuB,YAAa,MAAM,EAAE,oCACjC,MAAM,aAYtB,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,YAAY,UAAW,MAAM,WAOlC,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,QAAQ,UAAW,MAAM,QAW9B,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,mBAAmB,gBAAuB,OAAO,kBA8BtD,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,0BAA0B,YACrB,MAAM,oBACE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,eAElB,OAAO,kBAM/B,CAAC;AAEF,QAAA,MAAM,cAAc,YAAmB,MAAM,cAAa;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,iBAkB5E,CAAC;AAEF,QAAA,MAAM,WAAW,QAGhB,CAAC;AAEF,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,cAAc,EACd,WAAW,GACZ,CAAC"}
|
|
@@ -50,11 +50,11 @@ declare const getTransferTelemetryPayload: (engine: engineDataTransfer.TransferE
|
|
|
50
50
|
* Get a transfer engine schema diff handler that confirms with the user before bypassing a schema check
|
|
51
51
|
*/
|
|
52
52
|
declare const getDiffHandler: (engine: engineDataTransfer.TransferEngine, { force, action, }: {
|
|
53
|
-
force?: boolean
|
|
53
|
+
force?: boolean;
|
|
54
54
|
action: string;
|
|
55
55
|
}) => (context: engineDataTransfer.SchemaDiffHandlerContext, next: (ctx: engineDataTransfer.SchemaDiffHandlerContext) => void) => Promise<void>;
|
|
56
56
|
declare const getAssetsBackupHandler: (engine: engineDataTransfer.TransferEngine, { force, action, }: {
|
|
57
|
-
force?: boolean
|
|
57
|
+
force?: boolean;
|
|
58
58
|
action: string;
|
|
59
59
|
}) => (context: engineDataTransfer.ErrorHandlerContext, next: (ctx: engineDataTransfer.ErrorHandlerContext) => void) => Promise<void>;
|
|
60
60
|
declare const shouldSkipStage: (opts: Partial<engineDataTransfer.ITransferEngineOptions>, dataKind: engineDataTransfer.TransferFilterPreset) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-transfer.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/data-transfer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,MAAM,IAAI,kBAAkB,EAAgC,MAAM,uBAAuB,CAAC;AASnG,QAAA,MAAM,eAAe,YAAa,MAAM,4BAUvC,CAAC;AAmBF,QAAA,MAAM,oBAAoB,cAEzB,CAAC;AAEF,KAAK,UAAU,GAAG,kBAAkB,CAAC,gBAAgB,CACnD,kBAAkB,CAAC,eAAe,EAClC,kBAAkB,CAAC,oBAAoB,CACxC,CAAC,QAAQ,CAAC,CAAC;AAEZ,QAAA,MAAM,kBAAkB,eAAgB,UAAU,4BAoDjD,CAAC;AAEF,QAAA,MAAM,6BAA6B,UAWlC,CAAC;AAEF,QAAA,MAAM,aAAa;
|
|
1
|
+
{"version":3,"file":"data-transfer.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/data-transfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -231,7 +231,7 @@ const getDiffHandler = (engine, {
|
|
|
231
231
|
for (const diff of diffs) {
|
|
232
232
|
const path = [uid].concat(diff.path).join(".");
|
|
233
233
|
const endPath = diff.path[diff.path.length - 1];
|
|
234
|
-
if (uid === "
|
|
234
|
+
if (uid === "plugin::review-workflows.workflow" || uid === "plugin::review-workflows.workflow-stage" || endPath?.startsWith("strapi_stage") || endPath?.startsWith("strapi_assignee")) {
|
|
235
235
|
workflowsStatus = diff.kind;
|
|
236
236
|
} else if (diff.kind === "added") {
|
|
237
237
|
engine.reportWarning(chalk__default.default.red(`${chalk__default.default.bold(path)} does not exist on source`), source);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-transfer.js","sources":["../../../src/cli/utils/data-transfer.ts"],"sourcesContent":["import chalk from 'chalk';\nimport Table from 'cli-table3';\nimport { Command, Option } from 'commander';\nimport { configs, createLogger } from '@strapi/logger';\nimport { createStrapi, compileStrapi } from '@strapi/core';\nimport ora from 'ora';\nimport { merge } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\nimport { engine as engineDataTransfer, strapi as strapiDataTransfer } from '@strapi/data-transfer';\n\nimport { readableBytes, exitWith } from './helpers';\nimport { getParseListWithChoices, parseInteger, confirmMessage } from './commander';\n\nconst {\n errors: { TransferEngineInitializationError },\n} = engineDataTransfer;\n\nconst exitMessageText = (process: string, error = false) => {\n const processCapitalized = process[0].toUpperCase() + process.slice(1);\n\n if (!error) {\n return chalk.bold(\n chalk.green(`${processCapitalized} process has been completed successfully!`)\n );\n }\n\n return chalk.bold(chalk.red(`${processCapitalized} process failed.`));\n};\n\nconst pad = (n: number) => {\n return (n < 10 ? '0' : '') + String(n);\n};\n\nconst yyyymmddHHMMSS = () => {\n const date = new Date();\n\n return (\n date.getFullYear() +\n pad(date.getMonth() + 1) +\n pad(date.getDate()) +\n pad(date.getHours()) +\n pad(date.getMinutes()) +\n pad(date.getSeconds())\n );\n};\n\nconst getDefaultExportName = () => {\n return `export_${yyyymmddHHMMSS()}`;\n};\n\ntype ResultData = engineDataTransfer.ITransferResults<\n engineDataTransfer.ISourceProvider,\n engineDataTransfer.IDestinationProvider\n>['engine'];\n\nconst buildTransferTable = (resultData: ResultData) => {\n if (!resultData) {\n return;\n }\n\n // Build pretty table\n const table = new Table({\n head: ['Type', 'Count', 'Size'].map((text) => chalk.bold.blue(text)),\n });\n\n let totalBytes = 0;\n let totalItems = 0;\n (Object.keys(resultData) as engineDataTransfer.TransferStage[]).forEach((stage) => {\n const item = resultData[stage];\n\n if (!item) {\n return;\n }\n\n table.push([\n { hAlign: 'left', content: chalk.bold(stage) },\n { hAlign: 'right', content: item.count },\n { hAlign: 'right', content: `${readableBytes(item.bytes, 1, 11)} ` },\n ]);\n totalBytes += item.bytes;\n totalItems += item.count;\n\n if (item.aggregates) {\n (Object.keys(item.aggregates) as (keyof typeof item.aggregates)[])\n .sort()\n .forEach((subkey) => {\n if (!item.aggregates) {\n return;\n }\n\n const subitem = item.aggregates[subkey];\n\n table.push([\n { hAlign: 'left', content: `-- ${chalk.bold.grey(subkey)}` },\n { hAlign: 'right', content: chalk.grey(subitem.count) },\n { hAlign: 'right', content: chalk.grey(`(${readableBytes(subitem.bytes, 1, 11)})`) },\n ]);\n });\n }\n });\n table.push([\n { hAlign: 'left', content: chalk.bold.green('Total') },\n { hAlign: 'right', content: chalk.bold.green(totalItems) },\n { hAlign: 'right', content: `${chalk.bold.green(readableBytes(totalBytes, 1, 11))} ` },\n ]);\n\n return table;\n};\n\nconst DEFAULT_IGNORED_CONTENT_TYPES = [\n 'admin::permission',\n 'admin::user',\n 'admin::role',\n 'admin::api-token',\n 'admin::api-token-permission',\n 'admin::transfer-token',\n 'admin::transfer-token-permission',\n 'admin::audit-log',\n 'plugin::content-releases.release',\n 'plugin::content-releases.release-action',\n];\n\nconst abortTransfer = async ({\n engine,\n strapi,\n}: {\n engine: engineDataTransfer.TransferEngine;\n strapi: Core.Strapi;\n}) => {\n try {\n await engine.abortTransfer();\n await strapi.destroy();\n } catch (e) {\n // ignore because there's not much else we can do\n return false;\n }\n return true;\n};\n\nconst setSignalHandler = async (\n handler: (...args: unknown[]) => void,\n signals = ['SIGINT', 'SIGTERM', 'SIGQUIT']\n) => {\n signals.forEach((signal) => {\n // We specifically remove ALL listeners because we have to clear the one added in Strapi bootstrap that has a process.exit\n // TODO: Ideally Strapi bootstrap would not add that listener, and then this could be more flexible and add/remove only what it needs to\n process.removeAllListeners(signal);\n process.on(signal, handler);\n });\n};\n\nconst createStrapiInstance = async (opts: { logLevel?: string } = {}): Promise<Core.Strapi> => {\n try {\n const appContext = await compileStrapi();\n const app = createStrapi({ ...opts, ...appContext });\n\n app.log.level = opts.logLevel || 'error';\n return await app.load();\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === 'ECONNREFUSED') {\n throw new Error('Process failed. Check the database connection with your Strapi project.');\n }\n\n throw error;\n }\n};\n\nconst transferDataTypes = Object.keys(engineDataTransfer.TransferGroupPresets);\n\nconst throttleOption = new Option(\n '--throttle <delay after each entity>',\n `Add a delay in milliseconds between each transferred entity`\n)\n .argParser(parseInteger)\n .hideHelp(); // This option is not publicly documented\n\nconst excludeOption = new Option(\n '--exclude <comma-separated data types>',\n `Exclude data using comma-separated types. Available types: ${transferDataTypes.join(',')}`\n).argParser(getParseListWithChoices(transferDataTypes, 'Invalid options for \"exclude\"'));\n\nconst onlyOption = new Option(\n '--only <command-separated data types>',\n `Include only these types of data (plus schemas). Available types: ${transferDataTypes.join(',')}`\n).argParser(getParseListWithChoices(transferDataTypes, 'Invalid options for \"only\"'));\n\nconst validateExcludeOnly = (command: Command) => {\n const { exclude, only } = command.opts();\n if (!only || !exclude) {\n return;\n }\n\n const choicesInBoth = only.filter((n: string) => {\n return exclude.indexOf(n) !== -1;\n });\n if (choicesInBoth.length > 0) {\n exitWith(\n 1,\n `Data types may not be used in both \"exclude\" and \"only\" in the same command. Found in both: ${choicesInBoth.join(\n ','\n )}`\n );\n }\n};\n\nconst errorColors = {\n fatal: chalk.red,\n error: chalk.red,\n silly: chalk.yellow,\n} as const;\n\nconst formatDiagnostic =\n (\n operation: string\n ): Parameters<engineDataTransfer.TransferEngine['diagnostics']['onDiagnostic']>[0] =>\n ({ details, kind }) => {\n const logger = createLogger(\n configs.createOutputFileConfiguration(`${operation}_error_log_${Date.now()}.log`)\n );\n try {\n if (kind === 'error') {\n const { message, severity = 'fatal' } = details;\n\n const colorizeError = errorColors[severity];\n const errorMessage = colorizeError(`[${severity.toUpperCase()}] ${message}`);\n\n logger.error(errorMessage);\n }\n if (kind === 'info') {\n const { message, params } = details;\n\n const msg = `${message}\\n${params ? JSON.stringify(params, null, 2) : ''}`;\n\n logger.info(msg);\n }\n if (kind === 'warning') {\n const { origin, message } = details;\n\n logger.warn(`(${origin ?? 'transfer'}) ${message}`);\n }\n } catch (err) {\n logger.error(err);\n }\n };\n\ntype Loaders = {\n [key in engineDataTransfer.TransferStage]: ora.Ora;\n};\n\ntype Data = {\n [key in engineDataTransfer.TransferStage]?: {\n startTime?: number;\n endTime?: number;\n bytes?: number;\n count?: number;\n };\n};\n\nconst loadersFactory = (defaultLoaders: Loaders = {} as Loaders) => {\n const loaders = defaultLoaders;\n const updateLoader = (stage: engineDataTransfer.TransferStage, data: Data) => {\n if (!(stage in loaders)) {\n createLoader(stage);\n }\n\n const stageData = data[stage];\n const elapsedTime = stageData?.startTime\n ? (stageData?.endTime || Date.now()) - stageData.startTime\n : 0;\n const size = `size: ${readableBytes(stageData?.bytes ?? 0)}`;\n const elapsed = `elapsed: ${elapsedTime} ms`;\n const speed =\n elapsedTime > 0 ? `(${readableBytes(((stageData?.bytes ?? 0) * 1000) / elapsedTime)}/s)` : '';\n\n loaders[stage].text = `${stage}: ${stageData?.count ?? 0} transfered (${size}) (${elapsed}) ${\n !stageData?.endTime ? speed : ''\n }`;\n\n return loaders[stage];\n };\n\n const createLoader = (stage: engineDataTransfer.TransferStage) => {\n Object.assign(loaders, { [stage]: ora() });\n return loaders[stage];\n };\n\n const getLoader = (stage: engineDataTransfer.TransferStage) => {\n return loaders[stage];\n };\n\n return {\n updateLoader,\n createLoader,\n getLoader,\n };\n};\n\n/**\n * Get the telemetry data to be sent for a didDEITSProcess* event from an initialized transfer engine object\n */\nconst getTransferTelemetryPayload = (engine: engineDataTransfer.TransferEngine) => {\n return {\n eventProperties: {\n source: engine?.sourceProvider?.name,\n destination: engine?.destinationProvider?.name,\n },\n };\n};\n\n/**\n * Get a transfer engine schema diff handler that confirms with the user before bypassing a schema check\n */\nconst getDiffHandler = (\n engine: engineDataTransfer.TransferEngine,\n {\n force,\n action,\n }: {\n force?: boolean;\n action: string;\n }\n) => {\n return async (\n context: engineDataTransfer.SchemaDiffHandlerContext,\n next: (ctx: engineDataTransfer.SchemaDiffHandlerContext) => void\n ) => {\n // if we abort here, we need to actually exit the process because of conflict with inquirer prompt\n setSignalHandler(async () => {\n await abortTransfer({ engine, strapi: strapi as Core.Strapi });\n exitWith(1, exitMessageText(action, true));\n });\n\n let workflowsStatus;\n const source = 'Schema Integrity';\n\n Object.entries(context.diffs).forEach(([uid, diffs]) => {\n for (const diff of diffs) {\n const path = [uid].concat(diff.path).join('.');\n const endPath = diff.path[diff.path.length - 1];\n\n // Catch known features\n if (\n uid === 'admin::workflow' ||\n uid === 'admin::workflow-stage' ||\n endPath?.startsWith('strapi_stage') ||\n endPath?.startsWith('strapi_assignee')\n ) {\n workflowsStatus = diff.kind;\n }\n // handle generic cases\n else if (diff.kind === 'added') {\n engine.reportWarning(chalk.red(`${chalk.bold(path)} does not exist on source`), source);\n } else if (diff.kind === 'deleted') {\n engine.reportWarning(\n chalk.red(`${chalk.bold(path)} does not exist on destination`),\n source\n );\n } else if (diff.kind === 'modified') {\n engine.reportWarning(chalk.red(`${chalk.bold(path)} has a different data type`), source);\n }\n }\n });\n\n // output the known feature warnings\n if (workflowsStatus === 'added') {\n engine.reportWarning(chalk.red(`Review workflows feature does not exist on source`), source);\n } else if (workflowsStatus === 'deleted') {\n engine.reportWarning(\n chalk.red(`Review workflows feature does not exist on destination`),\n source\n );\n } else if (workflowsStatus === 'modified') {\n engine.panic(\n new TransferEngineInitializationError('Unresolved differences in schema [review workflows]')\n );\n }\n\n const confirmed = await confirmMessage(\n 'There are differences in schema between the source and destination, and the data listed above will be lost. Are you sure you want to continue?',\n {\n force,\n }\n );\n\n // reset handler back to normal\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n if (confirmed) {\n context.ignoredDiffs = merge(context.diffs, context.ignoredDiffs);\n }\n\n return next(context);\n };\n};\n\nconst getAssetsBackupHandler = (\n engine: engineDataTransfer.TransferEngine,\n {\n force,\n action,\n }: {\n force?: boolean;\n action: string;\n }\n) => {\n return async (\n context: engineDataTransfer.ErrorHandlerContext,\n next: (ctx: engineDataTransfer.ErrorHandlerContext) => void\n ) => {\n // if we abort here, we need to actually exit the process because of conflict with inquirer prompt\n setSignalHandler(async () => {\n await abortTransfer({ engine, strapi: strapi as Core.Strapi });\n exitWith(1, exitMessageText(action, true));\n });\n\n console.warn(\n 'The backup for the assets could not be created inside the public directory. Ensure Strapi has write permissions on the public directory.'\n );\n const confirmed = await confirmMessage(\n 'Do you want to continue without backing up your public/uploads files?',\n {\n force,\n }\n );\n\n if (confirmed) {\n context.ignore = true;\n }\n\n // reset handler back to normal\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n return next(context);\n };\n};\n\nconst shouldSkipStage = (\n opts: Partial<engineDataTransfer.ITransferEngineOptions>,\n dataKind: engineDataTransfer.TransferFilterPreset\n) => {\n if (opts.exclude?.includes(dataKind)) {\n return true;\n }\n if (opts.only) {\n return !opts.only.includes(dataKind);\n }\n\n return false;\n};\n\ntype RestoreConfig = NonNullable<\n strapiDataTransfer.providers.ILocalStrapiDestinationProviderOptions['restore']\n>;\n\n// Based on exclude/only from options, create the restore object to match\nconst parseRestoreFromOptions = (opts: Partial<engineDataTransfer.ITransferEngineOptions>) => {\n const entitiesOptions: RestoreConfig['entities'] = {\n exclude: DEFAULT_IGNORED_CONTENT_TYPES,\n include: undefined,\n };\n\n // if content is not included, send an empty array for include\n if ((opts.only && !opts.only.includes('content')) || opts.exclude?.includes('content')) {\n entitiesOptions.include = [];\n }\n\n const restoreConfig: strapiDataTransfer.providers.ILocalStrapiDestinationProviderOptions['restore'] =\n {\n entities: entitiesOptions,\n assets: !shouldSkipStage(opts, 'files'),\n configuration: {\n webhook: !shouldSkipStage(opts, 'config'),\n coreStore: !shouldSkipStage(opts, 'config'),\n },\n };\n\n return restoreConfig;\n};\n\nexport {\n loadersFactory,\n buildTransferTable,\n getDefaultExportName,\n getTransferTelemetryPayload,\n DEFAULT_IGNORED_CONTENT_TYPES,\n createStrapiInstance,\n excludeOption,\n exitMessageText,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n formatDiagnostic,\n abortTransfer,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n shouldSkipStage,\n parseRestoreFromOptions,\n};\n"],"names":["engineDataTransfer","process","chalk","Table","readableBytes","strapi","compileStrapi","createStrapi","Option","parseInteger","getParseListWithChoices","exitWith","logger","createLogger","configs","ora","confirmMessage","merge"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-transfer.js","sources":["../../../src/cli/utils/data-transfer.ts"],"sourcesContent":["import chalk from 'chalk';\nimport Table from 'cli-table3';\nimport { Command, Option } from 'commander';\nimport { configs, createLogger } from '@strapi/logger';\nimport { createStrapi, compileStrapi } from '@strapi/core';\nimport ora from 'ora';\nimport { merge } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\nimport { engine as engineDataTransfer, strapi as strapiDataTransfer } from '@strapi/data-transfer';\n\nimport { readableBytes, exitWith } from './helpers';\nimport { getParseListWithChoices, parseInteger, confirmMessage } from './commander';\n\nconst {\n errors: { TransferEngineInitializationError },\n} = engineDataTransfer;\n\nconst exitMessageText = (process: string, error = false) => {\n const processCapitalized = process[0].toUpperCase() + process.slice(1);\n\n if (!error) {\n return chalk.bold(\n chalk.green(`${processCapitalized} process has been completed successfully!`)\n );\n }\n\n return chalk.bold(chalk.red(`${processCapitalized} process failed.`));\n};\n\nconst pad = (n: number) => {\n return (n < 10 ? '0' : '') + String(n);\n};\n\nconst yyyymmddHHMMSS = () => {\n const date = new Date();\n\n return (\n date.getFullYear() +\n pad(date.getMonth() + 1) +\n pad(date.getDate()) +\n pad(date.getHours()) +\n pad(date.getMinutes()) +\n pad(date.getSeconds())\n );\n};\n\nconst getDefaultExportName = () => {\n return `export_${yyyymmddHHMMSS()}`;\n};\n\ntype ResultData = engineDataTransfer.ITransferResults<\n engineDataTransfer.ISourceProvider,\n engineDataTransfer.IDestinationProvider\n>['engine'];\n\nconst buildTransferTable = (resultData: ResultData) => {\n if (!resultData) {\n return;\n }\n\n // Build pretty table\n const table = new Table({\n head: ['Type', 'Count', 'Size'].map((text) => chalk.bold.blue(text)),\n });\n\n let totalBytes = 0;\n let totalItems = 0;\n (Object.keys(resultData) as engineDataTransfer.TransferStage[]).forEach((stage) => {\n const item = resultData[stage];\n\n if (!item) {\n return;\n }\n\n table.push([\n { hAlign: 'left', content: chalk.bold(stage) },\n { hAlign: 'right', content: item.count },\n { hAlign: 'right', content: `${readableBytes(item.bytes, 1, 11)} ` },\n ]);\n totalBytes += item.bytes;\n totalItems += item.count;\n\n if (item.aggregates) {\n (Object.keys(item.aggregates) as (keyof typeof item.aggregates)[])\n .sort()\n .forEach((subkey) => {\n if (!item.aggregates) {\n return;\n }\n\n const subitem = item.aggregates[subkey];\n\n table.push([\n { hAlign: 'left', content: `-- ${chalk.bold.grey(subkey)}` },\n { hAlign: 'right', content: chalk.grey(subitem.count) },\n { hAlign: 'right', content: chalk.grey(`(${readableBytes(subitem.bytes, 1, 11)})`) },\n ]);\n });\n }\n });\n table.push([\n { hAlign: 'left', content: chalk.bold.green('Total') },\n { hAlign: 'right', content: chalk.bold.green(totalItems) },\n { hAlign: 'right', content: `${chalk.bold.green(readableBytes(totalBytes, 1, 11))} ` },\n ]);\n\n return table;\n};\n\nconst DEFAULT_IGNORED_CONTENT_TYPES = [\n 'admin::permission',\n 'admin::user',\n 'admin::role',\n 'admin::api-token',\n 'admin::api-token-permission',\n 'admin::transfer-token',\n 'admin::transfer-token-permission',\n 'admin::audit-log',\n 'plugin::content-releases.release',\n 'plugin::content-releases.release-action',\n];\n\nconst abortTransfer = async ({\n engine,\n strapi,\n}: {\n engine: engineDataTransfer.TransferEngine;\n strapi: Core.Strapi;\n}) => {\n try {\n await engine.abortTransfer();\n await strapi.destroy();\n } catch (e) {\n // ignore because there's not much else we can do\n return false;\n }\n return true;\n};\n\nconst setSignalHandler = async (\n handler: (...args: unknown[]) => void,\n signals = ['SIGINT', 'SIGTERM', 'SIGQUIT']\n) => {\n signals.forEach((signal) => {\n // We specifically remove ALL listeners because we have to clear the one added in Strapi bootstrap that has a process.exit\n // TODO: Ideally Strapi bootstrap would not add that listener, and then this could be more flexible and add/remove only what it needs to\n process.removeAllListeners(signal);\n process.on(signal, handler);\n });\n};\n\nconst createStrapiInstance = async (opts: { logLevel?: string } = {}): Promise<Core.Strapi> => {\n try {\n const appContext = await compileStrapi();\n const app = createStrapi({ ...opts, ...appContext });\n\n app.log.level = opts.logLevel || 'error';\n return await app.load();\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === 'ECONNREFUSED') {\n throw new Error('Process failed. Check the database connection with your Strapi project.');\n }\n\n throw error;\n }\n};\n\nconst transferDataTypes = Object.keys(engineDataTransfer.TransferGroupPresets);\n\nconst throttleOption = new Option(\n '--throttle <delay after each entity>',\n `Add a delay in milliseconds between each transferred entity`\n)\n .argParser(parseInteger)\n .hideHelp(); // This option is not publicly documented\n\nconst excludeOption = new Option(\n '--exclude <comma-separated data types>',\n `Exclude data using comma-separated types. Available types: ${transferDataTypes.join(',')}`\n).argParser(getParseListWithChoices(transferDataTypes, 'Invalid options for \"exclude\"'));\n\nconst onlyOption = new Option(\n '--only <command-separated data types>',\n `Include only these types of data (plus schemas). Available types: ${transferDataTypes.join(',')}`\n).argParser(getParseListWithChoices(transferDataTypes, 'Invalid options for \"only\"'));\n\nconst validateExcludeOnly = (command: Command) => {\n const { exclude, only } = command.opts();\n if (!only || !exclude) {\n return;\n }\n\n const choicesInBoth = only.filter((n: string) => {\n return exclude.indexOf(n) !== -1;\n });\n if (choicesInBoth.length > 0) {\n exitWith(\n 1,\n `Data types may not be used in both \"exclude\" and \"only\" in the same command. Found in both: ${choicesInBoth.join(\n ','\n )}`\n );\n }\n};\n\nconst errorColors = {\n fatal: chalk.red,\n error: chalk.red,\n silly: chalk.yellow,\n} as const;\n\nconst formatDiagnostic =\n (\n operation: string\n ): Parameters<engineDataTransfer.TransferEngine['diagnostics']['onDiagnostic']>[0] =>\n ({ details, kind }) => {\n const logger = createLogger(\n configs.createOutputFileConfiguration(`${operation}_error_log_${Date.now()}.log`)\n );\n try {\n if (kind === 'error') {\n const { message, severity = 'fatal' } = details;\n\n const colorizeError = errorColors[severity];\n const errorMessage = colorizeError(`[${severity.toUpperCase()}] ${message}`);\n\n logger.error(errorMessage);\n }\n if (kind === 'info') {\n const { message, params } = details;\n\n const msg = `${message}\\n${params ? JSON.stringify(params, null, 2) : ''}`;\n\n logger.info(msg);\n }\n if (kind === 'warning') {\n const { origin, message } = details;\n\n logger.warn(`(${origin ?? 'transfer'}) ${message}`);\n }\n } catch (err) {\n logger.error(err);\n }\n };\n\ntype Loaders = {\n [key in engineDataTransfer.TransferStage]: ora.Ora;\n};\n\ntype Data = {\n [key in engineDataTransfer.TransferStage]?: {\n startTime?: number;\n endTime?: number;\n bytes?: number;\n count?: number;\n };\n};\n\nconst loadersFactory = (defaultLoaders: Loaders = {} as Loaders) => {\n const loaders = defaultLoaders;\n const updateLoader = (stage: engineDataTransfer.TransferStage, data: Data) => {\n if (!(stage in loaders)) {\n createLoader(stage);\n }\n\n const stageData = data[stage];\n const elapsedTime = stageData?.startTime\n ? (stageData?.endTime || Date.now()) - stageData.startTime\n : 0;\n const size = `size: ${readableBytes(stageData?.bytes ?? 0)}`;\n const elapsed = `elapsed: ${elapsedTime} ms`;\n const speed =\n elapsedTime > 0 ? `(${readableBytes(((stageData?.bytes ?? 0) * 1000) / elapsedTime)}/s)` : '';\n\n loaders[stage].text = `${stage}: ${stageData?.count ?? 0} transfered (${size}) (${elapsed}) ${\n !stageData?.endTime ? speed : ''\n }`;\n\n return loaders[stage];\n };\n\n const createLoader = (stage: engineDataTransfer.TransferStage) => {\n Object.assign(loaders, { [stage]: ora() });\n return loaders[stage];\n };\n\n const getLoader = (stage: engineDataTransfer.TransferStage) => {\n return loaders[stage];\n };\n\n return {\n updateLoader,\n createLoader,\n getLoader,\n };\n};\n\n/**\n * Get the telemetry data to be sent for a didDEITSProcess* event from an initialized transfer engine object\n */\nconst getTransferTelemetryPayload = (engine: engineDataTransfer.TransferEngine) => {\n return {\n eventProperties: {\n source: engine?.sourceProvider?.name,\n destination: engine?.destinationProvider?.name,\n },\n };\n};\n\n/**\n * Get a transfer engine schema diff handler that confirms with the user before bypassing a schema check\n */\nconst getDiffHandler = (\n engine: engineDataTransfer.TransferEngine,\n {\n force,\n action,\n }: {\n force?: boolean;\n action: string;\n }\n) => {\n return async (\n context: engineDataTransfer.SchemaDiffHandlerContext,\n next: (ctx: engineDataTransfer.SchemaDiffHandlerContext) => void\n ) => {\n // if we abort here, we need to actually exit the process because of conflict with inquirer prompt\n setSignalHandler(async () => {\n await abortTransfer({ engine, strapi: strapi as Core.Strapi });\n exitWith(1, exitMessageText(action, true));\n });\n\n let workflowsStatus;\n const source = 'Schema Integrity';\n\n Object.entries(context.diffs).forEach(([uid, diffs]) => {\n for (const diff of diffs) {\n const path = [uid].concat(diff.path).join('.');\n const endPath = diff.path[diff.path.length - 1];\n\n // Catch known features\n if (\n uid === 'plugin::review-workflows.workflow' ||\n uid === 'plugin::review-workflows.workflow-stage' ||\n endPath?.startsWith('strapi_stage') ||\n endPath?.startsWith('strapi_assignee')\n ) {\n workflowsStatus = diff.kind;\n }\n // handle generic cases\n else if (diff.kind === 'added') {\n engine.reportWarning(chalk.red(`${chalk.bold(path)} does not exist on source`), source);\n } else if (diff.kind === 'deleted') {\n engine.reportWarning(\n chalk.red(`${chalk.bold(path)} does not exist on destination`),\n source\n );\n } else if (diff.kind === 'modified') {\n engine.reportWarning(chalk.red(`${chalk.bold(path)} has a different data type`), source);\n }\n }\n });\n\n // output the known feature warnings\n if (workflowsStatus === 'added') {\n engine.reportWarning(chalk.red(`Review workflows feature does not exist on source`), source);\n } else if (workflowsStatus === 'deleted') {\n engine.reportWarning(\n chalk.red(`Review workflows feature does not exist on destination`),\n source\n );\n } else if (workflowsStatus === 'modified') {\n engine.panic(\n new TransferEngineInitializationError('Unresolved differences in schema [review workflows]')\n );\n }\n\n const confirmed = await confirmMessage(\n 'There are differences in schema between the source and destination, and the data listed above will be lost. Are you sure you want to continue?',\n {\n force,\n }\n );\n\n // reset handler back to normal\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n if (confirmed) {\n context.ignoredDiffs = merge(context.diffs, context.ignoredDiffs);\n }\n\n return next(context);\n };\n};\n\nconst getAssetsBackupHandler = (\n engine: engineDataTransfer.TransferEngine,\n {\n force,\n action,\n }: {\n force?: boolean;\n action: string;\n }\n) => {\n return async (\n context: engineDataTransfer.ErrorHandlerContext,\n next: (ctx: engineDataTransfer.ErrorHandlerContext) => void\n ) => {\n // if we abort here, we need to actually exit the process because of conflict with inquirer prompt\n setSignalHandler(async () => {\n await abortTransfer({ engine, strapi: strapi as Core.Strapi });\n exitWith(1, exitMessageText(action, true));\n });\n\n console.warn(\n 'The backup for the assets could not be created inside the public directory. Ensure Strapi has write permissions on the public directory.'\n );\n const confirmed = await confirmMessage(\n 'Do you want to continue without backing up your public/uploads files?',\n {\n force,\n }\n );\n\n if (confirmed) {\n context.ignore = true;\n }\n\n // reset handler back to normal\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n return next(context);\n };\n};\n\nconst shouldSkipStage = (\n opts: Partial<engineDataTransfer.ITransferEngineOptions>,\n dataKind: engineDataTransfer.TransferFilterPreset\n) => {\n if (opts.exclude?.includes(dataKind)) {\n return true;\n }\n if (opts.only) {\n return !opts.only.includes(dataKind);\n }\n\n return false;\n};\n\ntype RestoreConfig = NonNullable<\n strapiDataTransfer.providers.ILocalStrapiDestinationProviderOptions['restore']\n>;\n\n// Based on exclude/only from options, create the restore object to match\nconst parseRestoreFromOptions = (opts: Partial<engineDataTransfer.ITransferEngineOptions>) => {\n const entitiesOptions: RestoreConfig['entities'] = {\n exclude: DEFAULT_IGNORED_CONTENT_TYPES,\n include: undefined,\n };\n\n // if content is not included, send an empty array for include\n if ((opts.only && !opts.only.includes('content')) || opts.exclude?.includes('content')) {\n entitiesOptions.include = [];\n }\n\n const restoreConfig: strapiDataTransfer.providers.ILocalStrapiDestinationProviderOptions['restore'] =\n {\n entities: entitiesOptions,\n assets: !shouldSkipStage(opts, 'files'),\n configuration: {\n webhook: !shouldSkipStage(opts, 'config'),\n coreStore: !shouldSkipStage(opts, 'config'),\n },\n };\n\n return restoreConfig;\n};\n\nexport {\n loadersFactory,\n buildTransferTable,\n getDefaultExportName,\n getTransferTelemetryPayload,\n DEFAULT_IGNORED_CONTENT_TYPES,\n createStrapiInstance,\n excludeOption,\n exitMessageText,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n formatDiagnostic,\n abortTransfer,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n shouldSkipStage,\n parseRestoreFromOptions,\n};\n"],"names":["engineDataTransfer","process","chalk","Table","readableBytes","strapi","compileStrapi","createStrapi","Option","parseInteger","getParseListWithChoices","exitWith","logger","createLogger","configs","ora","confirmMessage","merge"],"mappings":"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"}
|
|
@@ -225,7 +225,7 @@ const getDiffHandler = (engine2, {
|
|
|
225
225
|
for (const diff of diffs) {
|
|
226
226
|
const path = [uid].concat(diff.path).join(".");
|
|
227
227
|
const endPath = diff.path[diff.path.length - 1];
|
|
228
|
-
if (uid === "
|
|
228
|
+
if (uid === "plugin::review-workflows.workflow" || uid === "plugin::review-workflows.workflow-stage" || endPath?.startsWith("strapi_stage") || endPath?.startsWith("strapi_assignee")) {
|
|
229
229
|
workflowsStatus = diff.kind;
|
|
230
230
|
} else if (diff.kind === "added") {
|
|
231
231
|
engine2.reportWarning(chalk.red(`${chalk.bold(path)} does not exist on source`), source);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-transfer.mjs","sources":["../../../src/cli/utils/data-transfer.ts"],"sourcesContent":["import chalk from 'chalk';\nimport Table from 'cli-table3';\nimport { Command, Option } from 'commander';\nimport { configs, createLogger } from '@strapi/logger';\nimport { createStrapi, compileStrapi } from '@strapi/core';\nimport ora from 'ora';\nimport { merge } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\nimport { engine as engineDataTransfer, strapi as strapiDataTransfer } from '@strapi/data-transfer';\n\nimport { readableBytes, exitWith } from './helpers';\nimport { getParseListWithChoices, parseInteger, confirmMessage } from './commander';\n\nconst {\n errors: { TransferEngineInitializationError },\n} = engineDataTransfer;\n\nconst exitMessageText = (process: string, error = false) => {\n const processCapitalized = process[0].toUpperCase() + process.slice(1);\n\n if (!error) {\n return chalk.bold(\n chalk.green(`${processCapitalized} process has been completed successfully!`)\n );\n }\n\n return chalk.bold(chalk.red(`${processCapitalized} process failed.`));\n};\n\nconst pad = (n: number) => {\n return (n < 10 ? '0' : '') + String(n);\n};\n\nconst yyyymmddHHMMSS = () => {\n const date = new Date();\n\n return (\n date.getFullYear() +\n pad(date.getMonth() + 1) +\n pad(date.getDate()) +\n pad(date.getHours()) +\n pad(date.getMinutes()) +\n pad(date.getSeconds())\n );\n};\n\nconst getDefaultExportName = () => {\n return `export_${yyyymmddHHMMSS()}`;\n};\n\ntype ResultData = engineDataTransfer.ITransferResults<\n engineDataTransfer.ISourceProvider,\n engineDataTransfer.IDestinationProvider\n>['engine'];\n\nconst buildTransferTable = (resultData: ResultData) => {\n if (!resultData) {\n return;\n }\n\n // Build pretty table\n const table = new Table({\n head: ['Type', 'Count', 'Size'].map((text) => chalk.bold.blue(text)),\n });\n\n let totalBytes = 0;\n let totalItems = 0;\n (Object.keys(resultData) as engineDataTransfer.TransferStage[]).forEach((stage) => {\n const item = resultData[stage];\n\n if (!item) {\n return;\n }\n\n table.push([\n { hAlign: 'left', content: chalk.bold(stage) },\n { hAlign: 'right', content: item.count },\n { hAlign: 'right', content: `${readableBytes(item.bytes, 1, 11)} ` },\n ]);\n totalBytes += item.bytes;\n totalItems += item.count;\n\n if (item.aggregates) {\n (Object.keys(item.aggregates) as (keyof typeof item.aggregates)[])\n .sort()\n .forEach((subkey) => {\n if (!item.aggregates) {\n return;\n }\n\n const subitem = item.aggregates[subkey];\n\n table.push([\n { hAlign: 'left', content: `-- ${chalk.bold.grey(subkey)}` },\n { hAlign: 'right', content: chalk.grey(subitem.count) },\n { hAlign: 'right', content: chalk.grey(`(${readableBytes(subitem.bytes, 1, 11)})`) },\n ]);\n });\n }\n });\n table.push([\n { hAlign: 'left', content: chalk.bold.green('Total') },\n { hAlign: 'right', content: chalk.bold.green(totalItems) },\n { hAlign: 'right', content: `${chalk.bold.green(readableBytes(totalBytes, 1, 11))} ` },\n ]);\n\n return table;\n};\n\nconst DEFAULT_IGNORED_CONTENT_TYPES = [\n 'admin::permission',\n 'admin::user',\n 'admin::role',\n 'admin::api-token',\n 'admin::api-token-permission',\n 'admin::transfer-token',\n 'admin::transfer-token-permission',\n 'admin::audit-log',\n 'plugin::content-releases.release',\n 'plugin::content-releases.release-action',\n];\n\nconst abortTransfer = async ({\n engine,\n strapi,\n}: {\n engine: engineDataTransfer.TransferEngine;\n strapi: Core.Strapi;\n}) => {\n try {\n await engine.abortTransfer();\n await strapi.destroy();\n } catch (e) {\n // ignore because there's not much else we can do\n return false;\n }\n return true;\n};\n\nconst setSignalHandler = async (\n handler: (...args: unknown[]) => void,\n signals = ['SIGINT', 'SIGTERM', 'SIGQUIT']\n) => {\n signals.forEach((signal) => {\n // We specifically remove ALL listeners because we have to clear the one added in Strapi bootstrap that has a process.exit\n // TODO: Ideally Strapi bootstrap would not add that listener, and then this could be more flexible and add/remove only what it needs to\n process.removeAllListeners(signal);\n process.on(signal, handler);\n });\n};\n\nconst createStrapiInstance = async (opts: { logLevel?: string } = {}): Promise<Core.Strapi> => {\n try {\n const appContext = await compileStrapi();\n const app = createStrapi({ ...opts, ...appContext });\n\n app.log.level = opts.logLevel || 'error';\n return await app.load();\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === 'ECONNREFUSED') {\n throw new Error('Process failed. Check the database connection with your Strapi project.');\n }\n\n throw error;\n }\n};\n\nconst transferDataTypes = Object.keys(engineDataTransfer.TransferGroupPresets);\n\nconst throttleOption = new Option(\n '--throttle <delay after each entity>',\n `Add a delay in milliseconds between each transferred entity`\n)\n .argParser(parseInteger)\n .hideHelp(); // This option is not publicly documented\n\nconst excludeOption = new Option(\n '--exclude <comma-separated data types>',\n `Exclude data using comma-separated types. Available types: ${transferDataTypes.join(',')}`\n).argParser(getParseListWithChoices(transferDataTypes, 'Invalid options for \"exclude\"'));\n\nconst onlyOption = new Option(\n '--only <command-separated data types>',\n `Include only these types of data (plus schemas). Available types: ${transferDataTypes.join(',')}`\n).argParser(getParseListWithChoices(transferDataTypes, 'Invalid options for \"only\"'));\n\nconst validateExcludeOnly = (command: Command) => {\n const { exclude, only } = command.opts();\n if (!only || !exclude) {\n return;\n }\n\n const choicesInBoth = only.filter((n: string) => {\n return exclude.indexOf(n) !== -1;\n });\n if (choicesInBoth.length > 0) {\n exitWith(\n 1,\n `Data types may not be used in both \"exclude\" and \"only\" in the same command. Found in both: ${choicesInBoth.join(\n ','\n )}`\n );\n }\n};\n\nconst errorColors = {\n fatal: chalk.red,\n error: chalk.red,\n silly: chalk.yellow,\n} as const;\n\nconst formatDiagnostic =\n (\n operation: string\n ): Parameters<engineDataTransfer.TransferEngine['diagnostics']['onDiagnostic']>[0] =>\n ({ details, kind }) => {\n const logger = createLogger(\n configs.createOutputFileConfiguration(`${operation}_error_log_${Date.now()}.log`)\n );\n try {\n if (kind === 'error') {\n const { message, severity = 'fatal' } = details;\n\n const colorizeError = errorColors[severity];\n const errorMessage = colorizeError(`[${severity.toUpperCase()}] ${message}`);\n\n logger.error(errorMessage);\n }\n if (kind === 'info') {\n const { message, params } = details;\n\n const msg = `${message}\\n${params ? JSON.stringify(params, null, 2) : ''}`;\n\n logger.info(msg);\n }\n if (kind === 'warning') {\n const { origin, message } = details;\n\n logger.warn(`(${origin ?? 'transfer'}) ${message}`);\n }\n } catch (err) {\n logger.error(err);\n }\n };\n\ntype Loaders = {\n [key in engineDataTransfer.TransferStage]: ora.Ora;\n};\n\ntype Data = {\n [key in engineDataTransfer.TransferStage]?: {\n startTime?: number;\n endTime?: number;\n bytes?: number;\n count?: number;\n };\n};\n\nconst loadersFactory = (defaultLoaders: Loaders = {} as Loaders) => {\n const loaders = defaultLoaders;\n const updateLoader = (stage: engineDataTransfer.TransferStage, data: Data) => {\n if (!(stage in loaders)) {\n createLoader(stage);\n }\n\n const stageData = data[stage];\n const elapsedTime = stageData?.startTime\n ? (stageData?.endTime || Date.now()) - stageData.startTime\n : 0;\n const size = `size: ${readableBytes(stageData?.bytes ?? 0)}`;\n const elapsed = `elapsed: ${elapsedTime} ms`;\n const speed =\n elapsedTime > 0 ? `(${readableBytes(((stageData?.bytes ?? 0) * 1000) / elapsedTime)}/s)` : '';\n\n loaders[stage].text = `${stage}: ${stageData?.count ?? 0} transfered (${size}) (${elapsed}) ${\n !stageData?.endTime ? speed : ''\n }`;\n\n return loaders[stage];\n };\n\n const createLoader = (stage: engineDataTransfer.TransferStage) => {\n Object.assign(loaders, { [stage]: ora() });\n return loaders[stage];\n };\n\n const getLoader = (stage: engineDataTransfer.TransferStage) => {\n return loaders[stage];\n };\n\n return {\n updateLoader,\n createLoader,\n getLoader,\n };\n};\n\n/**\n * Get the telemetry data to be sent for a didDEITSProcess* event from an initialized transfer engine object\n */\nconst getTransferTelemetryPayload = (engine: engineDataTransfer.TransferEngine) => {\n return {\n eventProperties: {\n source: engine?.sourceProvider?.name,\n destination: engine?.destinationProvider?.name,\n },\n };\n};\n\n/**\n * Get a transfer engine schema diff handler that confirms with the user before bypassing a schema check\n */\nconst getDiffHandler = (\n engine: engineDataTransfer.TransferEngine,\n {\n force,\n action,\n }: {\n force?: boolean;\n action: string;\n }\n) => {\n return async (\n context: engineDataTransfer.SchemaDiffHandlerContext,\n next: (ctx: engineDataTransfer.SchemaDiffHandlerContext) => void\n ) => {\n // if we abort here, we need to actually exit the process because of conflict with inquirer prompt\n setSignalHandler(async () => {\n await abortTransfer({ engine, strapi: strapi as Core.Strapi });\n exitWith(1, exitMessageText(action, true));\n });\n\n let workflowsStatus;\n const source = 'Schema Integrity';\n\n Object.entries(context.diffs).forEach(([uid, diffs]) => {\n for (const diff of diffs) {\n const path = [uid].concat(diff.path).join('.');\n const endPath = diff.path[diff.path.length - 1];\n\n // Catch known features\n if (\n uid === 'admin::workflow' ||\n uid === 'admin::workflow-stage' ||\n endPath?.startsWith('strapi_stage') ||\n endPath?.startsWith('strapi_assignee')\n ) {\n workflowsStatus = diff.kind;\n }\n // handle generic cases\n else if (diff.kind === 'added') {\n engine.reportWarning(chalk.red(`${chalk.bold(path)} does not exist on source`), source);\n } else if (diff.kind === 'deleted') {\n engine.reportWarning(\n chalk.red(`${chalk.bold(path)} does not exist on destination`),\n source\n );\n } else if (diff.kind === 'modified') {\n engine.reportWarning(chalk.red(`${chalk.bold(path)} has a different data type`), source);\n }\n }\n });\n\n // output the known feature warnings\n if (workflowsStatus === 'added') {\n engine.reportWarning(chalk.red(`Review workflows feature does not exist on source`), source);\n } else if (workflowsStatus === 'deleted') {\n engine.reportWarning(\n chalk.red(`Review workflows feature does not exist on destination`),\n source\n );\n } else if (workflowsStatus === 'modified') {\n engine.panic(\n new TransferEngineInitializationError('Unresolved differences in schema [review workflows]')\n );\n }\n\n const confirmed = await confirmMessage(\n 'There are differences in schema between the source and destination, and the data listed above will be lost. Are you sure you want to continue?',\n {\n force,\n }\n );\n\n // reset handler back to normal\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n if (confirmed) {\n context.ignoredDiffs = merge(context.diffs, context.ignoredDiffs);\n }\n\n return next(context);\n };\n};\n\nconst getAssetsBackupHandler = (\n engine: engineDataTransfer.TransferEngine,\n {\n force,\n action,\n }: {\n force?: boolean;\n action: string;\n }\n) => {\n return async (\n context: engineDataTransfer.ErrorHandlerContext,\n next: (ctx: engineDataTransfer.ErrorHandlerContext) => void\n ) => {\n // if we abort here, we need to actually exit the process because of conflict with inquirer prompt\n setSignalHandler(async () => {\n await abortTransfer({ engine, strapi: strapi as Core.Strapi });\n exitWith(1, exitMessageText(action, true));\n });\n\n console.warn(\n 'The backup for the assets could not be created inside the public directory. Ensure Strapi has write permissions on the public directory.'\n );\n const confirmed = await confirmMessage(\n 'Do you want to continue without backing up your public/uploads files?',\n {\n force,\n }\n );\n\n if (confirmed) {\n context.ignore = true;\n }\n\n // reset handler back to normal\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n return next(context);\n };\n};\n\nconst shouldSkipStage = (\n opts: Partial<engineDataTransfer.ITransferEngineOptions>,\n dataKind: engineDataTransfer.TransferFilterPreset\n) => {\n if (opts.exclude?.includes(dataKind)) {\n return true;\n }\n if (opts.only) {\n return !opts.only.includes(dataKind);\n }\n\n return false;\n};\n\ntype RestoreConfig = NonNullable<\n strapiDataTransfer.providers.ILocalStrapiDestinationProviderOptions['restore']\n>;\n\n// Based on exclude/only from options, create the restore object to match\nconst parseRestoreFromOptions = (opts: Partial<engineDataTransfer.ITransferEngineOptions>) => {\n const entitiesOptions: RestoreConfig['entities'] = {\n exclude: DEFAULT_IGNORED_CONTENT_TYPES,\n include: undefined,\n };\n\n // if content is not included, send an empty array for include\n if ((opts.only && !opts.only.includes('content')) || opts.exclude?.includes('content')) {\n entitiesOptions.include = [];\n }\n\n const restoreConfig: strapiDataTransfer.providers.ILocalStrapiDestinationProviderOptions['restore'] =\n {\n entities: entitiesOptions,\n assets: !shouldSkipStage(opts, 'files'),\n configuration: {\n webhook: !shouldSkipStage(opts, 'config'),\n coreStore: !shouldSkipStage(opts, 'config'),\n },\n };\n\n return restoreConfig;\n};\n\nexport {\n loadersFactory,\n buildTransferTable,\n getDefaultExportName,\n getTransferTelemetryPayload,\n DEFAULT_IGNORED_CONTENT_TYPES,\n createStrapiInstance,\n excludeOption,\n exitMessageText,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n formatDiagnostic,\n abortTransfer,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n shouldSkipStage,\n parseRestoreFromOptions,\n};\n"],"names":["engineDataTransfer","process","Table","engine","strapi"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-transfer.mjs","sources":["../../../src/cli/utils/data-transfer.ts"],"sourcesContent":["import chalk from 'chalk';\nimport Table from 'cli-table3';\nimport { Command, Option } from 'commander';\nimport { configs, createLogger } from '@strapi/logger';\nimport { createStrapi, compileStrapi } from '@strapi/core';\nimport ora from 'ora';\nimport { merge } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\nimport { engine as engineDataTransfer, strapi as strapiDataTransfer } from '@strapi/data-transfer';\n\nimport { readableBytes, exitWith } from './helpers';\nimport { getParseListWithChoices, parseInteger, confirmMessage } from './commander';\n\nconst {\n errors: { TransferEngineInitializationError },\n} = engineDataTransfer;\n\nconst exitMessageText = (process: string, error = false) => {\n const processCapitalized = process[0].toUpperCase() + process.slice(1);\n\n if (!error) {\n return chalk.bold(\n chalk.green(`${processCapitalized} process has been completed successfully!`)\n );\n }\n\n return chalk.bold(chalk.red(`${processCapitalized} process failed.`));\n};\n\nconst pad = (n: number) => {\n return (n < 10 ? '0' : '') + String(n);\n};\n\nconst yyyymmddHHMMSS = () => {\n const date = new Date();\n\n return (\n date.getFullYear() +\n pad(date.getMonth() + 1) +\n pad(date.getDate()) +\n pad(date.getHours()) +\n pad(date.getMinutes()) +\n pad(date.getSeconds())\n );\n};\n\nconst getDefaultExportName = () => {\n return `export_${yyyymmddHHMMSS()}`;\n};\n\ntype ResultData = engineDataTransfer.ITransferResults<\n engineDataTransfer.ISourceProvider,\n engineDataTransfer.IDestinationProvider\n>['engine'];\n\nconst buildTransferTable = (resultData: ResultData) => {\n if (!resultData) {\n return;\n }\n\n // Build pretty table\n const table = new Table({\n head: ['Type', 'Count', 'Size'].map((text) => chalk.bold.blue(text)),\n });\n\n let totalBytes = 0;\n let totalItems = 0;\n (Object.keys(resultData) as engineDataTransfer.TransferStage[]).forEach((stage) => {\n const item = resultData[stage];\n\n if (!item) {\n return;\n }\n\n table.push([\n { hAlign: 'left', content: chalk.bold(stage) },\n { hAlign: 'right', content: item.count },\n { hAlign: 'right', content: `${readableBytes(item.bytes, 1, 11)} ` },\n ]);\n totalBytes += item.bytes;\n totalItems += item.count;\n\n if (item.aggregates) {\n (Object.keys(item.aggregates) as (keyof typeof item.aggregates)[])\n .sort()\n .forEach((subkey) => {\n if (!item.aggregates) {\n return;\n }\n\n const subitem = item.aggregates[subkey];\n\n table.push([\n { hAlign: 'left', content: `-- ${chalk.bold.grey(subkey)}` },\n { hAlign: 'right', content: chalk.grey(subitem.count) },\n { hAlign: 'right', content: chalk.grey(`(${readableBytes(subitem.bytes, 1, 11)})`) },\n ]);\n });\n }\n });\n table.push([\n { hAlign: 'left', content: chalk.bold.green('Total') },\n { hAlign: 'right', content: chalk.bold.green(totalItems) },\n { hAlign: 'right', content: `${chalk.bold.green(readableBytes(totalBytes, 1, 11))} ` },\n ]);\n\n return table;\n};\n\nconst DEFAULT_IGNORED_CONTENT_TYPES = [\n 'admin::permission',\n 'admin::user',\n 'admin::role',\n 'admin::api-token',\n 'admin::api-token-permission',\n 'admin::transfer-token',\n 'admin::transfer-token-permission',\n 'admin::audit-log',\n 'plugin::content-releases.release',\n 'plugin::content-releases.release-action',\n];\n\nconst abortTransfer = async ({\n engine,\n strapi,\n}: {\n engine: engineDataTransfer.TransferEngine;\n strapi: Core.Strapi;\n}) => {\n try {\n await engine.abortTransfer();\n await strapi.destroy();\n } catch (e) {\n // ignore because there's not much else we can do\n return false;\n }\n return true;\n};\n\nconst setSignalHandler = async (\n handler: (...args: unknown[]) => void,\n signals = ['SIGINT', 'SIGTERM', 'SIGQUIT']\n) => {\n signals.forEach((signal) => {\n // We specifically remove ALL listeners because we have to clear the one added in Strapi bootstrap that has a process.exit\n // TODO: Ideally Strapi bootstrap would not add that listener, and then this could be more flexible and add/remove only what it needs to\n process.removeAllListeners(signal);\n process.on(signal, handler);\n });\n};\n\nconst createStrapiInstance = async (opts: { logLevel?: string } = {}): Promise<Core.Strapi> => {\n try {\n const appContext = await compileStrapi();\n const app = createStrapi({ ...opts, ...appContext });\n\n app.log.level = opts.logLevel || 'error';\n return await app.load();\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === 'ECONNREFUSED') {\n throw new Error('Process failed. Check the database connection with your Strapi project.');\n }\n\n throw error;\n }\n};\n\nconst transferDataTypes = Object.keys(engineDataTransfer.TransferGroupPresets);\n\nconst throttleOption = new Option(\n '--throttle <delay after each entity>',\n `Add a delay in milliseconds between each transferred entity`\n)\n .argParser(parseInteger)\n .hideHelp(); // This option is not publicly documented\n\nconst excludeOption = new Option(\n '--exclude <comma-separated data types>',\n `Exclude data using comma-separated types. Available types: ${transferDataTypes.join(',')}`\n).argParser(getParseListWithChoices(transferDataTypes, 'Invalid options for \"exclude\"'));\n\nconst onlyOption = new Option(\n '--only <command-separated data types>',\n `Include only these types of data (plus schemas). Available types: ${transferDataTypes.join(',')}`\n).argParser(getParseListWithChoices(transferDataTypes, 'Invalid options for \"only\"'));\n\nconst validateExcludeOnly = (command: Command) => {\n const { exclude, only } = command.opts();\n if (!only || !exclude) {\n return;\n }\n\n const choicesInBoth = only.filter((n: string) => {\n return exclude.indexOf(n) !== -1;\n });\n if (choicesInBoth.length > 0) {\n exitWith(\n 1,\n `Data types may not be used in both \"exclude\" and \"only\" in the same command. Found in both: ${choicesInBoth.join(\n ','\n )}`\n );\n }\n};\n\nconst errorColors = {\n fatal: chalk.red,\n error: chalk.red,\n silly: chalk.yellow,\n} as const;\n\nconst formatDiagnostic =\n (\n operation: string\n ): Parameters<engineDataTransfer.TransferEngine['diagnostics']['onDiagnostic']>[0] =>\n ({ details, kind }) => {\n const logger = createLogger(\n configs.createOutputFileConfiguration(`${operation}_error_log_${Date.now()}.log`)\n );\n try {\n if (kind === 'error') {\n const { message, severity = 'fatal' } = details;\n\n const colorizeError = errorColors[severity];\n const errorMessage = colorizeError(`[${severity.toUpperCase()}] ${message}`);\n\n logger.error(errorMessage);\n }\n if (kind === 'info') {\n const { message, params } = details;\n\n const msg = `${message}\\n${params ? JSON.stringify(params, null, 2) : ''}`;\n\n logger.info(msg);\n }\n if (kind === 'warning') {\n const { origin, message } = details;\n\n logger.warn(`(${origin ?? 'transfer'}) ${message}`);\n }\n } catch (err) {\n logger.error(err);\n }\n };\n\ntype Loaders = {\n [key in engineDataTransfer.TransferStage]: ora.Ora;\n};\n\ntype Data = {\n [key in engineDataTransfer.TransferStage]?: {\n startTime?: number;\n endTime?: number;\n bytes?: number;\n count?: number;\n };\n};\n\nconst loadersFactory = (defaultLoaders: Loaders = {} as Loaders) => {\n const loaders = defaultLoaders;\n const updateLoader = (stage: engineDataTransfer.TransferStage, data: Data) => {\n if (!(stage in loaders)) {\n createLoader(stage);\n }\n\n const stageData = data[stage];\n const elapsedTime = stageData?.startTime\n ? (stageData?.endTime || Date.now()) - stageData.startTime\n : 0;\n const size = `size: ${readableBytes(stageData?.bytes ?? 0)}`;\n const elapsed = `elapsed: ${elapsedTime} ms`;\n const speed =\n elapsedTime > 0 ? `(${readableBytes(((stageData?.bytes ?? 0) * 1000) / elapsedTime)}/s)` : '';\n\n loaders[stage].text = `${stage}: ${stageData?.count ?? 0} transfered (${size}) (${elapsed}) ${\n !stageData?.endTime ? speed : ''\n }`;\n\n return loaders[stage];\n };\n\n const createLoader = (stage: engineDataTransfer.TransferStage) => {\n Object.assign(loaders, { [stage]: ora() });\n return loaders[stage];\n };\n\n const getLoader = (stage: engineDataTransfer.TransferStage) => {\n return loaders[stage];\n };\n\n return {\n updateLoader,\n createLoader,\n getLoader,\n };\n};\n\n/**\n * Get the telemetry data to be sent for a didDEITSProcess* event from an initialized transfer engine object\n */\nconst getTransferTelemetryPayload = (engine: engineDataTransfer.TransferEngine) => {\n return {\n eventProperties: {\n source: engine?.sourceProvider?.name,\n destination: engine?.destinationProvider?.name,\n },\n };\n};\n\n/**\n * Get a transfer engine schema diff handler that confirms with the user before bypassing a schema check\n */\nconst getDiffHandler = (\n engine: engineDataTransfer.TransferEngine,\n {\n force,\n action,\n }: {\n force?: boolean;\n action: string;\n }\n) => {\n return async (\n context: engineDataTransfer.SchemaDiffHandlerContext,\n next: (ctx: engineDataTransfer.SchemaDiffHandlerContext) => void\n ) => {\n // if we abort here, we need to actually exit the process because of conflict with inquirer prompt\n setSignalHandler(async () => {\n await abortTransfer({ engine, strapi: strapi as Core.Strapi });\n exitWith(1, exitMessageText(action, true));\n });\n\n let workflowsStatus;\n const source = 'Schema Integrity';\n\n Object.entries(context.diffs).forEach(([uid, diffs]) => {\n for (const diff of diffs) {\n const path = [uid].concat(diff.path).join('.');\n const endPath = diff.path[diff.path.length - 1];\n\n // Catch known features\n if (\n uid === 'plugin::review-workflows.workflow' ||\n uid === 'plugin::review-workflows.workflow-stage' ||\n endPath?.startsWith('strapi_stage') ||\n endPath?.startsWith('strapi_assignee')\n ) {\n workflowsStatus = diff.kind;\n }\n // handle generic cases\n else if (diff.kind === 'added') {\n engine.reportWarning(chalk.red(`${chalk.bold(path)} does not exist on source`), source);\n } else if (diff.kind === 'deleted') {\n engine.reportWarning(\n chalk.red(`${chalk.bold(path)} does not exist on destination`),\n source\n );\n } else if (diff.kind === 'modified') {\n engine.reportWarning(chalk.red(`${chalk.bold(path)} has a different data type`), source);\n }\n }\n });\n\n // output the known feature warnings\n if (workflowsStatus === 'added') {\n engine.reportWarning(chalk.red(`Review workflows feature does not exist on source`), source);\n } else if (workflowsStatus === 'deleted') {\n engine.reportWarning(\n chalk.red(`Review workflows feature does not exist on destination`),\n source\n );\n } else if (workflowsStatus === 'modified') {\n engine.panic(\n new TransferEngineInitializationError('Unresolved differences in schema [review workflows]')\n );\n }\n\n const confirmed = await confirmMessage(\n 'There are differences in schema between the source and destination, and the data listed above will be lost. Are you sure you want to continue?',\n {\n force,\n }\n );\n\n // reset handler back to normal\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n if (confirmed) {\n context.ignoredDiffs = merge(context.diffs, context.ignoredDiffs);\n }\n\n return next(context);\n };\n};\n\nconst getAssetsBackupHandler = (\n engine: engineDataTransfer.TransferEngine,\n {\n force,\n action,\n }: {\n force?: boolean;\n action: string;\n }\n) => {\n return async (\n context: engineDataTransfer.ErrorHandlerContext,\n next: (ctx: engineDataTransfer.ErrorHandlerContext) => void\n ) => {\n // if we abort here, we need to actually exit the process because of conflict with inquirer prompt\n setSignalHandler(async () => {\n await abortTransfer({ engine, strapi: strapi as Core.Strapi });\n exitWith(1, exitMessageText(action, true));\n });\n\n console.warn(\n 'The backup for the assets could not be created inside the public directory. Ensure Strapi has write permissions on the public directory.'\n );\n const confirmed = await confirmMessage(\n 'Do you want to continue without backing up your public/uploads files?',\n {\n force,\n }\n );\n\n if (confirmed) {\n context.ignore = true;\n }\n\n // reset handler back to normal\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n return next(context);\n };\n};\n\nconst shouldSkipStage = (\n opts: Partial<engineDataTransfer.ITransferEngineOptions>,\n dataKind: engineDataTransfer.TransferFilterPreset\n) => {\n if (opts.exclude?.includes(dataKind)) {\n return true;\n }\n if (opts.only) {\n return !opts.only.includes(dataKind);\n }\n\n return false;\n};\n\ntype RestoreConfig = NonNullable<\n strapiDataTransfer.providers.ILocalStrapiDestinationProviderOptions['restore']\n>;\n\n// Based on exclude/only from options, create the restore object to match\nconst parseRestoreFromOptions = (opts: Partial<engineDataTransfer.ITransferEngineOptions>) => {\n const entitiesOptions: RestoreConfig['entities'] = {\n exclude: DEFAULT_IGNORED_CONTENT_TYPES,\n include: undefined,\n };\n\n // if content is not included, send an empty array for include\n if ((opts.only && !opts.only.includes('content')) || opts.exclude?.includes('content')) {\n entitiesOptions.include = [];\n }\n\n const restoreConfig: strapiDataTransfer.providers.ILocalStrapiDestinationProviderOptions['restore'] =\n {\n entities: entitiesOptions,\n assets: !shouldSkipStage(opts, 'files'),\n configuration: {\n webhook: !shouldSkipStage(opts, 'config'),\n coreStore: !shouldSkipStage(opts, 'config'),\n },\n };\n\n return restoreConfig;\n};\n\nexport {\n loadersFactory,\n buildTransferTable,\n getDefaultExportName,\n getTransferTelemetryPayload,\n DEFAULT_IGNORED_CONTENT_TYPES,\n createStrapiInstance,\n excludeOption,\n exitMessageText,\n onlyOption,\n throttleOption,\n validateExcludeOnly,\n formatDiagnostic,\n abortTransfer,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n shouldSkipStage,\n parseRestoreFromOptions,\n};\n"],"names":["engineDataTransfer","process","Table","engine","strapi"],"mappings":"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"}
|
|
@@ -43,7 +43,7 @@ declare const runAction: (name: string, action: (...args: any[]) => Promise<void
|
|
|
43
43
|
* ```
|
|
44
44
|
*/
|
|
45
45
|
declare const notifyExperimentalCommand: (name: string, { force }?: {
|
|
46
|
-
force?: boolean
|
|
46
|
+
force?: boolean;
|
|
47
47
|
}) => Promise<void>;
|
|
48
48
|
export { exitWith, assertUrlHasProtocol, ifOptions, readableBytes, runAction, assertCwdContainsStrapiProject, notifyExperimentalCommand, };
|
|
49
49
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/helpers.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC;;GAEG;AACH,QAAA,MAAM,aAAa,UAAW,MAAM,iDAUnC,CAAC;AAEF,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,QAAA,MAAM,QAAQ,SAAU,MAAM,YAAY,MAAM,GAAG,MAAM,EAAE,YAAW,eAAe,SAkBpF,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,oBAAoB,QAAS,GAAG,aAAa,MAAM,GAAG,MAAM,EAAE,SAwBnE,CAAC;AAEF,KAAK,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AACzE,KAAK,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AACzD,KAAK,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5D;;GAEG;AACH,QAAA,MAAM,SAAS,sBACM,iBAAiB,kBACrB,aAAa,qBACV,gBAAgB,eAEX,OAAO,kBAQ/B,CAAC;AAEF,QAAA,MAAM,8BAA8B,SAAU,MAAM,SAqBnD,CAAC;AAEF,QAAA,MAAM,SAAS,SACN,MAAM,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/helpers.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC;;GAEG;AACH,QAAA,MAAM,aAAa,UAAW,MAAM,iDAUnC,CAAC;AAEF,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,QAAA,MAAM,QAAQ,SAAU,MAAM,YAAY,MAAM,GAAG,MAAM,EAAE,YAAW,eAAe,SAkBpF,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,oBAAoB,QAAS,GAAG,aAAa,MAAM,GAAG,MAAM,EAAE,SAwBnE,CAAC;AAEF,KAAK,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AACzE,KAAK,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AACzD,KAAK,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5D;;GAEG;AACH,QAAA,MAAM,SAAS,sBACM,iBAAiB,kBACrB,aAAa,qBACV,gBAAgB,eAEX,OAAO,kBAQ/B,CAAC;AAEF,QAAA,MAAM,8BAA8B,SAAU,MAAM,SAqBnD,CAAC;AAEF,QAAA,MAAM,SAAS,SACN,MAAM,UAAU,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,IAAI,CAAC,eAC9C,OAAO,EAAE,SAWlB,CAAC;AAEJ;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,yBAAyB,SAAgB,MAAM,cAAa;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,kBA4BpF,CAAC;AAEF,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,SAAS,EACT,aAAa,EACb,SAAS,EACT,8BAA8B,EAC9B,yBAAyB,GAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkg.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/pkg.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,UAAU,MAAM;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCrB,CAAC;AAEH;;;;GAIG;AACH,QAAA,MAAM,OAAO;
|
|
1
|
+
{"version":3,"file":"pkg.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/pkg.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,UAAU,MAAM;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCrB,CAAC;AAEH;;;;GAIG;AACH,QAAA,MAAM,OAAO,oBAA2B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KAAG,QAAQ,MAAM,CAcvF,CAAC;AAEF,KAAK,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEzD;;;GAGG;AACH,QAAA,MAAM,WAAW,YAAmB;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,KAAG,QAAQ,WAAW,CA+CxE,CAAC;AAEF,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsconfig.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/tsconfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,UAAU,QAAQ;IAChB,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,QAAA,MAAM,YAAY;
|
|
1
|
+
{"version":3,"file":"tsconfig.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/tsconfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,UAAU,QAAQ;IAChB,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,QAAA,MAAM,YAAY,2BAIf;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,KAAG,QAAQ,GAAG,SAiBd,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aliases.d.ts","sourceRoot":"","sources":["../../../src/node/core/aliases.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA2B5C,QAAA,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"aliases.d.ts","sourceRoot":"","sources":["../../../src/node/core/aliases.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA2B5C,QAAA,MAAM,kBAAkB,iBAAkB;IAAE,QAAQ,CAAC,EAAE,cAAc,CAAA;CAAE;;CAUtE,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/node/core/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,QAAA,MAAM,aAAa,uBACN,MAAM,EAAE,OACd,YAAY,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/node/core/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,QAAA,MAAM,aAAa,uBACN,MAAM,EAAE,OACd,YAAY,KAChB,QAAQ,OAAO,GAAG,SAAS,CAW7B,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-build-context.d.ts","sourceRoot":"","sources":["../../src/node/create-build-context.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,UAAU,EAA+C,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,OAAO,EAAmB,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAE,SAAQ,WAAW;IAC5D;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACtD;;OAEG;IACH,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAC;IAChC;;;OAGG;IACH,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,UAAU,sBAAsB,CAAC,QAAQ,GAAG,OAAO,CAAE,SAAQ,UAAU;IACrE,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB;AASD,QAAA,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"create-build-context.d.ts","sourceRoot":"","sources":["../../src/node/create-build-context.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,UAAU,EAA+C,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,OAAO,EAAmB,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAE,SAAQ,WAAW;IAC5D;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACtD;;OAEG;IACH,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAC;IAChC;;;OAGG;IACH,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,UAAU,sBAAsB,CAAC,QAAQ,GAAG,OAAO,CAAE,SAAQ,UAAU;IACrE,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB;AASD,QAAA,MAAM,kBAAkB,8EAMrB,uBAAuB,QAAQ,CAAC,KAAG,QAAQ,aAAa,QAAQ,CAAC,CAgGnE,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAC9B,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/strapi",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.5",
|
|
4
4
|
"description": "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",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"strapi",
|
|
@@ -109,25 +109,25 @@
|
|
|
109
109
|
},
|
|
110
110
|
"dependencies": {
|
|
111
111
|
"@pmmmwh/react-refresh-webpack-plugin": "0.5.11",
|
|
112
|
-
"@strapi/admin": "5.0.0-beta.
|
|
113
|
-
"@strapi/content-releases": "5.0.0-beta.
|
|
114
|
-
"@strapi/core": "5.0.0-beta.
|
|
115
|
-
"@strapi/data-transfer": "5.0.0-beta.
|
|
116
|
-
"@strapi/database": "5.0.0-beta.
|
|
117
|
-
"@strapi/generate-new": "5.0.0-beta.
|
|
118
|
-
"@strapi/generators": "5.0.0-beta.
|
|
119
|
-
"@strapi/logger": "5.0.0-beta.
|
|
120
|
-
"@strapi/pack-up": "5.0.0
|
|
121
|
-
"@strapi/permissions": "5.0.0-beta.
|
|
122
|
-
"@strapi/plugin-content-manager": "5.0.0-beta.
|
|
123
|
-
"@strapi/plugin-content-type-builder": "5.0.0-beta.
|
|
124
|
-
"@strapi/plugin-email": "5.0.0-beta.
|
|
125
|
-
"@strapi/plugin-i18n": "5.0.0-beta.
|
|
126
|
-
"@strapi/plugin-upload": "5.0.0-beta.
|
|
127
|
-
"@strapi/review-workflows": "5.0.0-beta.
|
|
128
|
-
"@strapi/types": "5.0.0-beta.
|
|
129
|
-
"@strapi/typescript-utils": "5.0.0-beta.
|
|
130
|
-
"@strapi/utils": "5.0.0-beta.
|
|
112
|
+
"@strapi/admin": "5.0.0-beta.5",
|
|
113
|
+
"@strapi/content-releases": "5.0.0-beta.5",
|
|
114
|
+
"@strapi/core": "5.0.0-beta.5",
|
|
115
|
+
"@strapi/data-transfer": "5.0.0-beta.5",
|
|
116
|
+
"@strapi/database": "5.0.0-beta.5",
|
|
117
|
+
"@strapi/generate-new": "5.0.0-beta.5",
|
|
118
|
+
"@strapi/generators": "5.0.0-beta.5",
|
|
119
|
+
"@strapi/logger": "5.0.0-beta.5",
|
|
120
|
+
"@strapi/pack-up": "5.0.0",
|
|
121
|
+
"@strapi/permissions": "5.0.0-beta.5",
|
|
122
|
+
"@strapi/plugin-content-manager": "5.0.0-beta.5",
|
|
123
|
+
"@strapi/plugin-content-type-builder": "5.0.0-beta.5",
|
|
124
|
+
"@strapi/plugin-email": "5.0.0-beta.5",
|
|
125
|
+
"@strapi/plugin-i18n": "5.0.0-beta.5",
|
|
126
|
+
"@strapi/plugin-upload": "5.0.0-beta.5",
|
|
127
|
+
"@strapi/review-workflows": "5.0.0-beta.5",
|
|
128
|
+
"@strapi/types": "5.0.0-beta.5",
|
|
129
|
+
"@strapi/typescript-utils": "5.0.0-beta.5",
|
|
130
|
+
"@strapi/utils": "5.0.0-beta.5",
|
|
131
131
|
"@types/nodemon": "1.19.6",
|
|
132
132
|
"@vitejs/plugin-react-swc": "3.6.0",
|
|
133
133
|
"boxen": "5.1.2",
|
|
@@ -180,17 +180,20 @@
|
|
|
180
180
|
"yup": "0.32.9"
|
|
181
181
|
},
|
|
182
182
|
"devDependencies": {
|
|
183
|
-
"@strapi/
|
|
183
|
+
"@strapi/ts-zen": "^0.2.0",
|
|
184
|
+
"@types/bcryptjs": "2.4.3",
|
|
185
|
+
"@types/configstore": "5.0.1",
|
|
186
|
+
"@types/delegates": "1.0.0",
|
|
184
187
|
"@types/find-root": "1.1.4",
|
|
185
188
|
"@types/jest": "29.5.2",
|
|
186
189
|
"@types/lodash": "^4.14.191",
|
|
187
190
|
"@types/node": "18.19.24",
|
|
188
191
|
"@types/webpack-bundle-analyzer": "4.7.0",
|
|
189
192
|
"@types/webpack-hot-middleware": "2.25.9",
|
|
190
|
-
"eslint-config-custom": "5.0.0-beta.
|
|
193
|
+
"eslint-config-custom": "5.0.0-beta.5",
|
|
191
194
|
"react": "^18.2.0",
|
|
192
195
|
"react-dom": "^18.2.0",
|
|
193
|
-
"tsconfig": "5.0.0-beta.
|
|
196
|
+
"tsconfig": "5.0.0-beta.5"
|
|
194
197
|
},
|
|
195
198
|
"peerDependencies": {
|
|
196
199
|
"react": "^17.0.0 || ^18.0.0",
|
|
@@ -202,5 +205,5 @@
|
|
|
202
205
|
"node": ">=18.0.0 <=20.x.x",
|
|
203
206
|
"npm": ">=6.0.0"
|
|
204
207
|
},
|
|
205
|
-
"gitHead": "
|
|
208
|
+
"gitHead": "2aa7d7fb419d7ece2dc1b6c0f45d6c8948abc137"
|
|
206
209
|
}
|