@strapi/strapi 5.48.1 → 5.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin.js +17 -7
- package/dist/admin.js.map +1 -1
- package/dist/node/create-build-context.d.ts +0 -4
- package/dist/node/create-build-context.d.ts.map +1 -1
- package/dist/node/vite/config.d.ts.map +1 -1
- package/dist/node/vite/resolve-development-config.test.d.ts +2 -0
- package/dist/node/vite/resolve-development-config.test.d.ts.map +1 -0
- package/dist/node/vite/watch.d.ts.map +1 -1
- package/dist/package.json.js +1 -1
- package/dist/package.json.mjs +1 -1
- package/dist/src/cli/commands/admin/active-user.js +6 -2
- package/dist/src/cli/commands/admin/active-user.js.map +1 -1
- package/dist/src/cli/commands/admin/block-user.js +6 -2
- package/dist/src/cli/commands/admin/block-user.js.map +1 -1
- package/dist/src/cli/commands/admin/create-user.js +5 -1
- package/dist/src/cli/commands/admin/create-user.js.map +1 -1
- package/dist/src/cli/commands/admin/delete-user.js +6 -2
- package/dist/src/cli/commands/admin/delete-user.js.map +1 -1
- package/dist/src/cli/commands/admin/list-users.js +16 -11
- package/dist/src/cli/commands/admin/list-users.js.map +1 -1
- package/dist/src/cli/commands/admin/reset-user-password.js +6 -2
- package/dist/src/cli/commands/admin/reset-user-password.js.map +1 -1
- package/dist/src/cli/commands/components/list.js +7 -2
- package/dist/src/cli/commands/components/list.js.map +1 -1
- package/dist/src/cli/commands/configuration/dump.js +5 -1
- package/dist/src/cli/commands/configuration/dump.js.map +1 -1
- package/dist/src/cli/commands/configuration/restore.js +8 -3
- package/dist/src/cli/commands/configuration/restore.js.map +1 -1
- package/dist/src/cli/commands/console.js +5 -1
- package/dist/src/cli/commands/console.js.map +1 -1
- package/dist/src/cli/commands/content-types/list.js +7 -2
- package/dist/src/cli/commands/content-types/list.js.map +1 -1
- package/dist/src/cli/commands/controllers/list.js +7 -2
- package/dist/src/cli/commands/controllers/list.js.map +1 -1
- package/dist/src/cli/commands/develop.js +5 -1
- package/dist/src/cli/commands/develop.js.map +1 -1
- package/dist/src/cli/commands/export/action.js +11 -5
- package/dist/src/cli/commands/export/action.js.map +1 -1
- package/dist/src/cli/commands/hooks/list.js +7 -2
- package/dist/src/cli/commands/hooks/list.js.map +1 -1
- package/dist/src/cli/commands/import/action.js +7 -2
- package/dist/src/cli/commands/import/action.js.map +1 -1
- package/dist/src/cli/commands/import/command.js +6 -2
- package/dist/src/cli/commands/import/command.js.map +1 -1
- package/dist/src/cli/commands/middlewares/list.js +7 -2
- package/dist/src/cli/commands/middlewares/list.js.map +1 -1
- package/dist/src/cli/commands/openapi/generate.js +17 -11
- package/dist/src/cli/commands/openapi/generate.js.map +1 -1
- package/dist/src/cli/commands/policies/list.js +7 -2
- package/dist/src/cli/commands/policies/list.js.map +1 -1
- package/dist/src/cli/commands/routes/list.js +8 -3
- package/dist/src/cli/commands/routes/list.js.map +1 -1
- package/dist/src/cli/commands/services/list.js +7 -2
- package/dist/src/cli/commands/services/list.js.map +1 -1
- package/dist/src/cli/commands/start.js +8 -3
- package/dist/src/cli/commands/start.js.map +1 -1
- package/dist/src/cli/commands/telemetry/disable.js +14 -9
- package/dist/src/cli/commands/telemetry/disable.js.map +1 -1
- package/dist/src/cli/commands/telemetry/enable.js +14 -9
- package/dist/src/cli/commands/telemetry/enable.js.map +1 -1
- package/dist/src/cli/commands/transfer/action.js +5 -1
- package/dist/src/cli/commands/transfer/action.js.map +1 -1
- package/dist/src/cli/commands/ts/generate-types.js +5 -1
- package/dist/src/cli/commands/ts/generate-types.js.map +1 -1
- package/dist/src/cli/utils/commander.js +5 -1
- package/dist/src/cli/utils/commander.js.map +1 -1
- package/dist/src/cli/utils/data-transfer.js +28 -21
- package/dist/src/cli/utils/data-transfer.js.map +1 -1
- package/dist/src/cli/utils/helpers.js +7 -3
- package/dist/src/cli/utils/helpers.js.map +1 -1
- package/dist/src/cli/utils/logger.js +15 -10
- package/dist/src/cli/utils/logger.js.map +1 -1
- package/dist/src/cli/utils/tsconfig.js +9 -4
- package/dist/src/cli/utils/tsconfig.js.map +1 -1
- package/dist/src/node/build.js +3 -2
- package/dist/src/node/build.js.map +1 -1
- package/dist/src/node/core/admin-customisations.js +6 -2
- package/dist/src/node/core/admin-customisations.js.map +1 -1
- package/dist/src/node/core/aliases.js +5 -1
- package/dist/src/node/core/aliases.js.map +1 -1
- package/dist/src/node/core/config.js +5 -1
- package/dist/src/node/core/config.js.map +1 -1
- package/dist/src/node/core/dependencies.js +33 -22
- package/dist/src/node/core/dependencies.js.map +1 -1
- package/dist/src/node/core/ensure-admin-dependencies.js +5 -1
- package/dist/src/node/core/ensure-admin-dependencies.js.map +1 -1
- package/dist/src/node/core/env.js +7 -2
- package/dist/src/node/core/env.js.map +1 -1
- package/dist/src/node/core/errors.js +9 -3
- package/dist/src/node/core/errors.js.map +1 -1
- package/dist/src/node/core/files.js +6 -2
- package/dist/src/node/core/files.js.map +1 -1
- package/dist/src/node/core/linked-packages.js +5 -1
- package/dist/src/node/core/linked-packages.js.map +1 -1
- package/dist/src/node/core/monorepo.js +8 -3
- package/dist/src/node/core/monorepo.js.map +1 -1
- package/dist/src/node/core/plugins.js +17 -10
- package/dist/src/node/core/plugins.js.map +1 -1
- package/dist/src/node/core/resolve-module.js +8 -3
- package/dist/src/node/core/resolve-module.js.map +1 -1
- package/dist/src/node/create-build-context.js +16 -9
- package/dist/src/node/create-build-context.js.map +1 -1
- package/dist/src/node/create-build-context.mjs.map +1 -1
- package/dist/src/node/develop.js +14 -8
- package/dist/src/node/develop.js.map +1 -1
- package/dist/src/node/staticFiles.js +11 -5
- package/dist/src/node/staticFiles.js.map +1 -1
- package/dist/src/node/vite/config.js +14 -3
- package/dist/src/node/vite/config.js.map +1 -1
- package/dist/src/node/vite/config.mjs +9 -2
- package/dist/src/node/vite/config.mjs.map +1 -1
- package/dist/src/node/vite/watch.js +7 -62
- package/dist/src/node/vite/watch.js.map +1 -1
- package/dist/src/node/vite/watch.mjs +2 -62
- package/dist/src/node/vite/watch.mjs.map +1 -1
- package/dist/src/node/webpack/build.js +5 -1
- package/dist/src/node/webpack/build.js.map +1 -1
- package/dist/src/node/webpack/config.js +17 -8
- package/dist/src/node/webpack/config.js.map +1 -1
- package/dist/src/node/webpack/watch.js +11 -4
- package/dist/src/node/webpack/watch.js.map +1 -1
- package/package.json +22 -22
|
@@ -6,7 +6,10 @@ var chalk = require('chalk');
|
|
|
6
6
|
var fse = require('fs-extra');
|
|
7
7
|
var path = require('path');
|
|
8
8
|
|
|
9
|
-
function
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
function _interopNamespace(e) {
|
|
12
|
+
if (e && e.__esModule) return e;
|
|
10
13
|
var n = Object.create(null);
|
|
11
14
|
if (e) {
|
|
12
15
|
Object.keys(e).forEach(function (k) {
|
|
@@ -23,10 +26,13 @@ function _interopNamespaceDefault(e) {
|
|
|
23
26
|
return Object.freeze(n);
|
|
24
27
|
}
|
|
25
28
|
|
|
26
|
-
var openapi__namespace = /*#__PURE__*/
|
|
29
|
+
var openapi__namespace = /*#__PURE__*/_interopNamespace(openapi);
|
|
30
|
+
var chalk__default = /*#__PURE__*/_interopDefault(chalk);
|
|
31
|
+
var fse__default = /*#__PURE__*/_interopDefault(fse);
|
|
32
|
+
var path__default = /*#__PURE__*/_interopDefault(path);
|
|
27
33
|
|
|
28
|
-
const DEFAULT_OUTPUT =
|
|
29
|
-
const EXPERIMENTAL_MSG =
|
|
34
|
+
const DEFAULT_OUTPUT = path__default.default.join(process.cwd(), 'specification.json');
|
|
35
|
+
const EXPERIMENTAL_MSG = chalk__default.default.yellow(`
|
|
30
36
|
⚠️ The OpenAPI generation feature is currently experimental.
|
|
31
37
|
Its behavior and output might change in future releases without following semver.
|
|
32
38
|
Please report any issues you encounter on https://github.com/strapi/strapi/issues/new?template=BUG_REPORT.yml.
|
|
@@ -56,20 +62,20 @@ const createStrapiApp = async ()=>{
|
|
|
56
62
|
return app;
|
|
57
63
|
};
|
|
58
64
|
const writeDocumentToFile = (document, filePath)=>{
|
|
59
|
-
|
|
65
|
+
fse__default.default.outputFileSync(filePath, JSON.stringify(document, null, 2));
|
|
60
66
|
};
|
|
61
67
|
const teardownStrapiApp = async (app)=>{
|
|
62
68
|
await app.destroy();
|
|
63
69
|
};
|
|
64
70
|
const summarize = (app, durationMs, filePath)=>{
|
|
65
71
|
const cwd = process.cwd();
|
|
66
|
-
const relativeFilePath =
|
|
72
|
+
const relativeFilePath = path__default.default.relative(cwd, filePath);
|
|
67
73
|
const { name, version } = app.config.get('info');
|
|
68
|
-
const fName =
|
|
69
|
-
const fVersion =
|
|
70
|
-
const fFile =
|
|
71
|
-
const fTime =
|
|
72
|
-
console.log(
|
|
74
|
+
const fName = chalk__default.default.cyan(name);
|
|
75
|
+
const fVersion = chalk__default.default.cyan(`v${version}`);
|
|
76
|
+
const fFile = chalk__default.default.magenta(relativeFilePath);
|
|
77
|
+
const fTime = chalk__default.default.green(`${durationMs}ms`);
|
|
78
|
+
console.log(chalk__default.default.bold(`Generated an OpenAPI specification for "${fName} ${fVersion}" at ${fFile} in ${fTime}`));
|
|
73
79
|
};
|
|
74
80
|
|
|
75
81
|
exports.action = action;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sources":["../../../../../src/cli/commands/openapi/generate.ts"],"sourcesContent":["import { compileStrapi, createStrapi } from '@strapi/core';\nimport * as openapi from '@strapi/openapi';\n\nimport type { Core } from '@strapi/types';\n\nimport chalk from 'chalk';\nimport fse from 'fs-extra';\nimport path from 'path';\n\nconst DEFAULT_OUTPUT = path.join(process.cwd(), 'specification.json');\n\ninterface CommandOptions {\n output?: string;\n}\n\ninterface StrapiInfoConfig {\n name: string;\n version: string;\n}\n\nconst EXPERIMENTAL_MSG = chalk.yellow(`\n⚠️ The OpenAPI generation feature is currently experimental.\n Its behavior and output might change in future releases without following semver.\n Please report any issues you encounter on https://github.com/strapi/strapi/issues/new?template=BUG_REPORT.yml.\n`);\n\n/**\n * @experimental\n */\nconst action = async (options: CommandOptions) => {\n console.warn(EXPERIMENTAL_MSG);\n\n const filePath = options.output ?? DEFAULT_OUTPUT;\n const app = await createStrapiApp();\n\n const { document, durationMs } = openapi.generate(app, { type: 'content-api' });\n\n writeDocumentToFile(document, filePath);\n summarize(app, durationMs, filePath);\n\n await teardownStrapiApp(app);\n};\n\nconst createStrapiApp = async (): Promise<Core.Strapi> => {\n const appContext = await compileStrapi();\n const app = createStrapi(appContext);\n\n // Make sure to not log Strapi debug info\n app.log.level = 'error';\n\n // Load internals\n await app.load();\n\n // Make sure the routes are mounted before generating the specification\n app.server.mount();\n\n return app;\n};\n\nconst writeDocumentToFile = (document: unknown, filePath: string): void => {\n fse.outputFileSync(filePath, JSON.stringify(document, null, 2));\n};\n\nconst teardownStrapiApp = async (app: Core.Strapi) => {\n await app.destroy();\n};\n\nconst summarize = (app: Core.Strapi, durationMs: number, filePath: string): void => {\n const cwd = process.cwd();\n const relativeFilePath = path.relative(cwd, filePath);\n const { name, version } = app.config.get<StrapiInfoConfig>('info');\n\n const fName = chalk.cyan(name);\n const fVersion = chalk.cyan(`v${version}`);\n const fFile = chalk.magenta(relativeFilePath);\n const fTime = chalk.green(`${durationMs}ms`);\n\n console.log(\n chalk.bold(\n `Generated an OpenAPI specification for \"${fName} ${fVersion}\" at ${fFile} in ${fTime}`\n )\n );\n};\n\nexport { action };\n"],"names":["DEFAULT_OUTPUT","path","join","process","cwd","EXPERIMENTAL_MSG","chalk","yellow","action","options","console","warn","filePath","output","app","createStrapiApp","document","durationMs","openapi","generate","type","writeDocumentToFile","summarize","teardownStrapiApp","appContext","compileStrapi","createStrapi","log","level","load","server","mount","fse","outputFileSync","JSON","stringify","destroy","relativeFilePath","relative","name","version","config","get","fName","cyan","fVersion","fFile","magenta","fTime","green","bold"],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate.js","sources":["../../../../../src/cli/commands/openapi/generate.ts"],"sourcesContent":["import { compileStrapi, createStrapi } from '@strapi/core';\nimport * as openapi from '@strapi/openapi';\n\nimport type { Core } from '@strapi/types';\n\nimport chalk from 'chalk';\nimport fse from 'fs-extra';\nimport path from 'path';\n\nconst DEFAULT_OUTPUT = path.join(process.cwd(), 'specification.json');\n\ninterface CommandOptions {\n output?: string;\n}\n\ninterface StrapiInfoConfig {\n name: string;\n version: string;\n}\n\nconst EXPERIMENTAL_MSG = chalk.yellow(`\n⚠️ The OpenAPI generation feature is currently experimental.\n Its behavior and output might change in future releases without following semver.\n Please report any issues you encounter on https://github.com/strapi/strapi/issues/new?template=BUG_REPORT.yml.\n`);\n\n/**\n * @experimental\n */\nconst action = async (options: CommandOptions) => {\n console.warn(EXPERIMENTAL_MSG);\n\n const filePath = options.output ?? DEFAULT_OUTPUT;\n const app = await createStrapiApp();\n\n const { document, durationMs } = openapi.generate(app, { type: 'content-api' });\n\n writeDocumentToFile(document, filePath);\n summarize(app, durationMs, filePath);\n\n await teardownStrapiApp(app);\n};\n\nconst createStrapiApp = async (): Promise<Core.Strapi> => {\n const appContext = await compileStrapi();\n const app = createStrapi(appContext);\n\n // Make sure to not log Strapi debug info\n app.log.level = 'error';\n\n // Load internals\n await app.load();\n\n // Make sure the routes are mounted before generating the specification\n app.server.mount();\n\n return app;\n};\n\nconst writeDocumentToFile = (document: unknown, filePath: string): void => {\n fse.outputFileSync(filePath, JSON.stringify(document, null, 2));\n};\n\nconst teardownStrapiApp = async (app: Core.Strapi) => {\n await app.destroy();\n};\n\nconst summarize = (app: Core.Strapi, durationMs: number, filePath: string): void => {\n const cwd = process.cwd();\n const relativeFilePath = path.relative(cwd, filePath);\n const { name, version } = app.config.get<StrapiInfoConfig>('info');\n\n const fName = chalk.cyan(name);\n const fVersion = chalk.cyan(`v${version}`);\n const fFile = chalk.magenta(relativeFilePath);\n const fTime = chalk.green(`${durationMs}ms`);\n\n console.log(\n chalk.bold(\n `Generated an OpenAPI specification for \"${fName} ${fVersion}\" at ${fFile} in ${fTime}`\n )\n );\n};\n\nexport { action };\n"],"names":["DEFAULT_OUTPUT","path","join","process","cwd","EXPERIMENTAL_MSG","chalk","yellow","action","options","console","warn","filePath","output","app","createStrapiApp","document","durationMs","openapi","generate","type","writeDocumentToFile","summarize","teardownStrapiApp","appContext","compileStrapi","createStrapi","log","level","load","server","mount","fse","outputFileSync","JSON","stringify","destroy","relativeFilePath","relative","name","version","config","get","fName","cyan","fVersion","fFile","magenta","fTime","green","bold"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,MAAMA,iBAAiBC,qBAAAA,CAAKC,IAAI,CAACC,OAAAA,CAAQC,GAAG,EAAA,EAAI,oBAAA,CAAA;AAWhD,MAAMC,gBAAAA,GAAmBC,sBAAAA,CAAMC,MAAM,CAAC;;;;AAItC,CAAC,CAAA;AAED;;IAGA,MAAMC,SAAS,OAAOC,OAAAA,GAAAA;AACpBC,IAAAA,OAAAA,CAAQC,IAAI,CAACN,gBAAAA,CAAAA;IAEb,MAAMO,QAAAA,GAAWH,OAAAA,CAAQI,MAAM,IAAIb,cAAAA;AACnC,IAAA,MAAMc,MAAM,MAAMC,eAAAA,EAAAA;IAElB,MAAM,EAAEC,QAAQ,EAAEC,UAAU,EAAE,GAAGC,kBAAAA,CAAQC,QAAQ,CAACL,GAAAA,EAAK;QAAEM,IAAAA,EAAM;AAAc,KAAA,CAAA;AAE7EC,IAAAA,mBAAAA,CAAoBL,QAAAA,EAAUJ,QAAAA,CAAAA;AAC9BU,IAAAA,SAAAA,CAAUR,KAAKG,UAAAA,EAAYL,QAAAA,CAAAA;AAE3B,IAAA,MAAMW,iBAAAA,CAAkBT,GAAAA,CAAAA;AAC1B;AAEA,MAAMC,eAAAA,GAAkB,UAAA;AACtB,IAAA,MAAMS,aAAa,MAAMC,kBAAAA,EAAAA;AACzB,IAAA,MAAMX,MAAMY,iBAAAA,CAAaF,UAAAA,CAAAA;;IAGzBV,GAAAA,CAAIa,GAAG,CAACC,KAAK,GAAG,OAAA;;AAGhB,IAAA,MAAMd,IAAIe,IAAI,EAAA;;IAGdf,GAAAA,CAAIgB,MAAM,CAACC,KAAK,EAAA;IAEhB,OAAOjB,GAAAA;AACT,CAAA;AAEA,MAAMO,mBAAAA,GAAsB,CAACL,QAAAA,EAAmBJ,QAAAA,GAAAA;AAC9CoB,IAAAA,oBAAAA,CAAIC,cAAc,CAACrB,QAAAA,EAAUsB,KAAKC,SAAS,CAACnB,UAAU,IAAA,EAAM,CAAA,CAAA,CAAA;AAC9D,CAAA;AAEA,MAAMO,oBAAoB,OAAOT,GAAAA,GAAAA;AAC/B,IAAA,MAAMA,IAAIsB,OAAO,EAAA;AACnB,CAAA;AAEA,MAAMd,SAAAA,GAAY,CAACR,GAAAA,EAAkBG,UAAAA,EAAoBL,QAAAA,GAAAA;IACvD,MAAMR,GAAAA,GAAMD,QAAQC,GAAG,EAAA;AACvB,IAAA,MAAMiC,gBAAAA,GAAmBpC,qBAAAA,CAAKqC,QAAQ,CAAClC,GAAAA,EAAKQ,QAAAA,CAAAA;IAC5C,MAAM,EAAE2B,IAAI,EAAEC,OAAO,EAAE,GAAG1B,GAAAA,CAAI2B,MAAM,CAACC,GAAG,CAAmB,MAAA,CAAA;IAE3D,MAAMC,KAAAA,GAAQrC,sBAAAA,CAAMsC,IAAI,CAACL,IAAAA,CAAAA;AACzB,IAAA,MAAMM,WAAWvC,sBAAAA,CAAMsC,IAAI,CAAC,CAAC,CAAC,EAAEJ,OAAAA,CAAAA,CAAS,CAAA;IACzC,MAAMM,KAAAA,GAAQxC,sBAAAA,CAAMyC,OAAO,CAACV,gBAAAA,CAAAA;AAC5B,IAAA,MAAMW,QAAQ1C,sBAAAA,CAAM2C,KAAK,CAAC,CAAA,EAAGhC,UAAAA,CAAW,EAAE,CAAC,CAAA;AAE3CP,IAAAA,OAAAA,CAAQiB,GAAG,CACTrB,sBAAAA,CAAM4C,IAAI,CACR,CAAC,wCAAwC,EAAEP,KAAAA,CAAM,CAAC,EAAEE,QAAAA,CAAS,KAAK,EAAEC,KAAAA,CAAM,IAAI,EAAEE,KAAAA,CAAAA,CAAO,CAAA,CAAA;AAG7F,CAAA;;;;"}
|
|
@@ -6,13 +6,18 @@ var chalk = require('chalk');
|
|
|
6
6
|
var core = require('@strapi/core');
|
|
7
7
|
var helpers = require('../../utils/helpers.js');
|
|
8
8
|
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
var CLITable__default = /*#__PURE__*/_interopDefault(CLITable);
|
|
12
|
+
var chalk__default = /*#__PURE__*/_interopDefault(chalk);
|
|
13
|
+
|
|
9
14
|
const action = async ()=>{
|
|
10
15
|
const appContext = await core.compileStrapi();
|
|
11
16
|
const app = await core.createStrapi(appContext).register();
|
|
12
17
|
const list = app.get('policies').keys();
|
|
13
|
-
const infoTable = new
|
|
18
|
+
const infoTable = new CLITable__default.default({
|
|
14
19
|
head: [
|
|
15
|
-
|
|
20
|
+
chalk__default.default.blue('Name')
|
|
16
21
|
]
|
|
17
22
|
});
|
|
18
23
|
list.forEach((name)=>infoTable.push([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sources":["../../../../../src/cli/commands/policies/list.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('policies').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi policies:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('policies:list')\n .description('List all the application policies')\n .action(runAction('policies:list', action));\n};\n\nexport { action, command };\n"],"names":["action","appContext","compileStrapi","app","createStrapi","register","list","get","keys","infoTable","CLITable","head","chalk","blue","forEach","name","push","console","log","toString","destroy","command","createCommand","description","runAction"],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.js","sources":["../../../../../src/cli/commands/policies/list.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('policies').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi policies:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('policies:list')\n .description('List all the application policies')\n .action(runAction('policies:list', action));\n};\n\nexport { action, command };\n"],"names":["action","appContext","compileStrapi","app","createStrapi","register","list","get","keys","infoTable","CLITable","head","chalk","blue","forEach","name","push","console","log","toString","destroy","command","createCommand","description","runAction"],"mappings":";;;;;;;;;;;;;AAQA,MAAMA,MAAAA,GAAS,UAAA;AACb,IAAA,MAAMC,aAAa,MAAMC,kBAAAA,EAAAA;AACzB,IAAA,MAAMC,GAAAA,GAAM,MAAMC,iBAAAA,CAAaH,UAAAA,CAAAA,CAAYI,QAAQ,EAAA;AAEnD,IAAA,MAAMC,IAAAA,GAAOH,GAAAA,CAAII,GAAG,CAAC,YAAYC,IAAI,EAAA;IAErC,MAAMC,SAAAA,GAAY,IAAIC,yBAAAA,CAAS;QAC7BC,IAAAA,EAAM;AAACC,YAAAA,sBAAAA,CAAMC,IAAI,CAAC,MAAA;AAAQ;AAC5B,KAAA,CAAA;AAEAP,IAAAA,IAAAA,CAAKQ,OAAO,CAAC,CAACC,IAAAA,GAAiBN,SAAAA,CAAUO,IAAI,CAAC;AAACD,YAAAA;AAAK,SAAA,CAAA,CAAA;IAEpDE,OAAAA,CAAQC,GAAG,CAACT,SAAAA,CAAUU,QAAQ,EAAA,CAAA;AAE9B,IAAA,MAAMhB,IAAIiB,OAAO,EAAA;AACnB;AAEA;;AAEC,UACKC,OAAAA,GAAyB,IAAA;IAC7B,OAAOC,uBAAAA,CAAc,iBAClBC,WAAW,CAAC,qCACZvB,MAAM,CAACwB,kBAAU,eAAA,EAAiBxB,MAAAA,CAAAA,CAAAA;AACvC;;;;;"}
|
|
@@ -7,14 +7,19 @@ var fp = require('lodash/fp');
|
|
|
7
7
|
var core = require('@strapi/core');
|
|
8
8
|
var helpers = require('../../utils/helpers.js');
|
|
9
9
|
|
|
10
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
var CLITable__default = /*#__PURE__*/_interopDefault(CLITable);
|
|
13
|
+
var chalk__default = /*#__PURE__*/_interopDefault(chalk);
|
|
14
|
+
|
|
10
15
|
const action = async ()=>{
|
|
11
16
|
const appContext = await core.compileStrapi();
|
|
12
17
|
const app = await core.createStrapi(appContext).load();
|
|
13
18
|
const list = app.server.mount().listRoutes();
|
|
14
|
-
const infoTable = new
|
|
19
|
+
const infoTable = new CLITable__default.default({
|
|
15
20
|
head: [
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
chalk__default.default.blue('Method'),
|
|
22
|
+
chalk__default.default.blue('Path')
|
|
18
23
|
],
|
|
19
24
|
colWidths: [
|
|
20
25
|
20
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sources":["../../../../../src/cli/commands/routes/list.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { toUpper } from 'lodash/fp';\n\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n const list = app.server.mount().listRoutes();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Method'), chalk.blue('Path')],\n colWidths: [20],\n });\n\n list\n .filter((route) => route.methods.length)\n .forEach((route) => {\n infoTable.push([route.methods.map(toUpper).join('|'), route.path]);\n });\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi routes:list``\n */\nconst command: StrapiCommand = () => {\n return createCommand('routes:list')\n .description('List all the application routes')\n .action(runAction('routes:list', action));\n};\n\nexport { action, command };\n"],"names":["action","appContext","compileStrapi","app","createStrapi","load","list","server","mount","listRoutes","infoTable","CLITable","head","chalk","blue","colWidths","filter","route","methods","length","forEach","push","map","toUpper","join","path","console","log","toString","destroy","command","createCommand","description","runAction"],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.js","sources":["../../../../../src/cli/commands/routes/list.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { toUpper } from 'lodash/fp';\n\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n const list = app.server.mount().listRoutes();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Method'), chalk.blue('Path')],\n colWidths: [20],\n });\n\n list\n .filter((route) => route.methods.length)\n .forEach((route) => {\n infoTable.push([route.methods.map(toUpper).join('|'), route.path]);\n });\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi routes:list``\n */\nconst command: StrapiCommand = () => {\n return createCommand('routes:list')\n .description('List all the application routes')\n .action(runAction('routes:list', action));\n};\n\nexport { action, command };\n"],"names":["action","appContext","compileStrapi","app","createStrapi","load","list","server","mount","listRoutes","infoTable","CLITable","head","chalk","blue","colWidths","filter","route","methods","length","forEach","push","map","toUpper","join","path","console","log","toString","destroy","command","createCommand","description","runAction"],"mappings":";;;;;;;;;;;;;;AAUA,MAAMA,MAAAA,GAAS,UAAA;AACb,IAAA,MAAMC,aAAa,MAAMC,kBAAAA,EAAAA;AACzB,IAAA,MAAMC,GAAAA,GAAM,MAAMC,iBAAAA,CAAaH,UAAAA,CAAAA,CAAYI,IAAI,EAAA;AAE/C,IAAA,MAAMC,OAAOH,GAAAA,CAAII,MAAM,CAACC,KAAK,GAAGC,UAAU,EAAA;IAE1C,MAAMC,SAAAA,GAAY,IAAIC,yBAAAA,CAAS;QAC7BC,IAAAA,EAAM;AAACC,YAAAA,sBAAAA,CAAMC,IAAI,CAAC,QAAA,CAAA;AAAWD,YAAAA,sBAAAA,CAAMC,IAAI,CAAC,MAAA;AAAQ,SAAA;QAChDC,SAAAA,EAAW;AAAC,YAAA;AAAG;AACjB,KAAA,CAAA;IAEAT,IAAAA,CACGU,MAAM,CAAC,CAACC,KAAAA,GAAUA,KAAAA,CAAMC,OAAO,CAACC,MAAM,CAAA,CACtCC,OAAO,CAAC,CAACH,KAAAA,GAAAA;AACRP,QAAAA,SAAAA,CAAUW,IAAI,CAAC;AAACJ,YAAAA,KAAAA,CAAMC,OAAO,CAACI,GAAG,CAACC,UAAAA,CAAAA,CAASC,IAAI,CAAC,GAAA,CAAA;AAAMP,YAAAA,KAAAA,CAAMQ;AAAK,SAAA,CAAA;AACnE,IAAA,CAAA,CAAA;IAEFC,OAAAA,CAAQC,GAAG,CAACjB,SAAAA,CAAUkB,QAAQ,EAAA,CAAA;AAE9B,IAAA,MAAMzB,IAAI0B,OAAO,EAAA;AACnB;AAEA;;AAEC,UACKC,OAAAA,GAAyB,IAAA;IAC7B,OAAOC,uBAAAA,CAAc,eAClBC,WAAW,CAAC,mCACZhC,MAAM,CAACiC,kBAAU,aAAA,EAAejC,MAAAA,CAAAA,CAAAA;AACrC;;;;;"}
|
|
@@ -6,13 +6,18 @@ var chalk = require('chalk');
|
|
|
6
6
|
var core = require('@strapi/core');
|
|
7
7
|
var helpers = require('../../utils/helpers.js');
|
|
8
8
|
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
var CLITable__default = /*#__PURE__*/_interopDefault(CLITable);
|
|
12
|
+
var chalk__default = /*#__PURE__*/_interopDefault(chalk);
|
|
13
|
+
|
|
9
14
|
const action = async ()=>{
|
|
10
15
|
const appContext = await core.compileStrapi();
|
|
11
16
|
const app = await core.createStrapi(appContext).register();
|
|
12
17
|
const list = app.get('services').keys();
|
|
13
|
-
const infoTable = new
|
|
18
|
+
const infoTable = new CLITable__default.default({
|
|
14
19
|
head: [
|
|
15
|
-
|
|
20
|
+
chalk__default.default.blue('Name')
|
|
16
21
|
]
|
|
17
22
|
});
|
|
18
23
|
list.forEach((name)=>infoTable.push([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sources":["../../../../../src/cli/commands/services/list.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('services').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi services:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('services:list')\n .description('List all the application services')\n .action(runAction('services:list', action));\n};\n\nexport { action, command };\n"],"names":["action","appContext","compileStrapi","app","createStrapi","register","list","get","keys","infoTable","CLITable","head","chalk","blue","forEach","name","push","console","log","toString","destroy","command","createCommand","description","runAction"],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.js","sources":["../../../../../src/cli/commands/services/list.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport CLITable from 'cli-table3';\nimport chalk from 'chalk';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst action = async () => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).register();\n\n const list = app.get('services').keys();\n\n const infoTable = new CLITable({\n head: [chalk.blue('Name')],\n });\n\n list.forEach((name: string) => infoTable.push([name]));\n\n console.log(infoTable.toString());\n\n await app.destroy();\n};\n\n/**\n * `$ strapi services:list`\n */\nconst command: StrapiCommand = () => {\n return createCommand('services:list')\n .description('List all the application services')\n .action(runAction('services:list', action));\n};\n\nexport { action, command };\n"],"names":["action","appContext","compileStrapi","app","createStrapi","register","list","get","keys","infoTable","CLITable","head","chalk","blue","forEach","name","push","console","log","toString","destroy","command","createCommand","description","runAction"],"mappings":";;;;;;;;;;;;;AAQA,MAAMA,MAAAA,GAAS,UAAA;AACb,IAAA,MAAMC,aAAa,MAAMC,kBAAAA,EAAAA;AACzB,IAAA,MAAMC,GAAAA,GAAM,MAAMC,iBAAAA,CAAaH,UAAAA,CAAAA,CAAYI,QAAQ,EAAA;AAEnD,IAAA,MAAMC,IAAAA,GAAOH,GAAAA,CAAII,GAAG,CAAC,YAAYC,IAAI,EAAA;IAErC,MAAMC,SAAAA,GAAY,IAAIC,yBAAAA,CAAS;QAC7BC,IAAAA,EAAM;AAACC,YAAAA,sBAAAA,CAAMC,IAAI,CAAC,MAAA;AAAQ;AAC5B,KAAA,CAAA;AAEAP,IAAAA,IAAAA,CAAKQ,OAAO,CAAC,CAACC,IAAAA,GAAiBN,SAAAA,CAAUO,IAAI,CAAC;AAACD,YAAAA;AAAK,SAAA,CAAA,CAAA;IAEpDE,OAAAA,CAAQC,GAAG,CAACT,SAAAA,CAAUU,QAAQ,EAAA,CAAA;AAE9B,IAAA,MAAMhB,IAAIiB,OAAO,EAAA;AACnB;AAEA;;AAEC,UACKC,OAAAA,GAAyB,IAAA;IAC7B,OAAOC,uBAAAA,CAAc,iBAClBC,WAAW,CAAC,qCACZvB,MAAM,CAACwB,kBAAU,eAAA,EAAiBxB,MAAAA,CAAAA,CAAAA;AACvC;;;;;"}
|
|
@@ -6,12 +6,17 @@ var tsUtils = require('@strapi/typescript-utils');
|
|
|
6
6
|
var core = require('@strapi/core');
|
|
7
7
|
var helpers = require('../utils/helpers.js');
|
|
8
8
|
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
var fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
12
|
+
var tsUtils__default = /*#__PURE__*/_interopDefault(tsUtils);
|
|
13
|
+
|
|
9
14
|
const action = async ()=>{
|
|
10
15
|
const appDir = process.cwd();
|
|
11
|
-
const isTSProject = await
|
|
12
|
-
const outDir = await
|
|
16
|
+
const isTSProject = await tsUtils__default.default.isUsingTypeScript(appDir);
|
|
17
|
+
const outDir = await tsUtils__default.default.resolveOutDir(appDir);
|
|
13
18
|
const distDir = isTSProject ? outDir : appDir;
|
|
14
|
-
const buildDirExists =
|
|
19
|
+
const buildDirExists = fs__default.default.existsSync(outDir);
|
|
15
20
|
if (isTSProject && !buildDirExists) throw new Error(`${outDir} directory not found. Please run the build command before starting your application`);
|
|
16
21
|
core.createStrapi({
|
|
17
22
|
appDir,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sources":["../../../../src/cli/commands/start.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport fs from 'fs';\nimport tsUtils from '@strapi/typescript-utils';\nimport { createStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../types';\nimport { runAction } from '../utils/helpers';\n\nconst action = async () => {\n const appDir = process.cwd();\n\n const isTSProject = await tsUtils.isUsingTypeScript(appDir);\n\n const outDir = await tsUtils.resolveOutDir(appDir);\n const distDir = isTSProject ? outDir : appDir;\n\n const buildDirExists = fs.existsSync(outDir);\n if (isTSProject && !buildDirExists)\n throw new Error(\n `${outDir} directory not found. Please run the build command before starting your application`\n );\n\n createStrapi({ appDir, distDir }).start();\n};\n\n/**\n * `$ strapi start`\n */\nconst command: StrapiCommand = () => {\n return createCommand('start')\n .description('Start your Strapi application')\n .action(runAction('start', action));\n};\n\nexport { command };\n"],"names":["action","appDir","process","cwd","isTSProject","tsUtils","isUsingTypeScript","outDir","resolveOutDir","distDir","buildDirExists","fs","existsSync","Error","createStrapi","start","command","createCommand","description","runAction"],"mappings":"
|
|
1
|
+
{"version":3,"file":"start.js","sources":["../../../../src/cli/commands/start.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport fs from 'fs';\nimport tsUtils from '@strapi/typescript-utils';\nimport { createStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../types';\nimport { runAction } from '../utils/helpers';\n\nconst action = async () => {\n const appDir = process.cwd();\n\n const isTSProject = await tsUtils.isUsingTypeScript(appDir);\n\n const outDir = await tsUtils.resolveOutDir(appDir);\n const distDir = isTSProject ? outDir : appDir;\n\n const buildDirExists = fs.existsSync(outDir);\n if (isTSProject && !buildDirExists)\n throw new Error(\n `${outDir} directory not found. Please run the build command before starting your application`\n );\n\n createStrapi({ appDir, distDir }).start();\n};\n\n/**\n * `$ strapi start`\n */\nconst command: StrapiCommand = () => {\n return createCommand('start')\n .description('Start your Strapi application')\n .action(runAction('start', action));\n};\n\nexport { command };\n"],"names":["action","appDir","process","cwd","isTSProject","tsUtils","isUsingTypeScript","outDir","resolveOutDir","distDir","buildDirExists","fs","existsSync","Error","createStrapi","start","command","createCommand","description","runAction"],"mappings":";;;;;;;;;;;;;AAQA,MAAMA,MAAAA,GAAS,UAAA;IACb,MAAMC,MAAAA,GAASC,QAAQC,GAAG,EAAA;AAE1B,IAAA,MAAMC,WAAAA,GAAc,MAAMC,wBAAAA,CAAQC,iBAAiB,CAACL,MAAAA,CAAAA;AAEpD,IAAA,MAAMM,MAAAA,GAAS,MAAMF,wBAAAA,CAAQG,aAAa,CAACP,MAAAA,CAAAA;IAC3C,MAAMQ,OAAAA,GAAUL,cAAcG,MAAAA,GAASN,MAAAA;IAEvC,MAAMS,cAAAA,GAAiBC,mBAAAA,CAAGC,UAAU,CAACL,MAAAA,CAAAA;IACrC,IAAIH,WAAAA,IAAe,CAACM,cAAAA,EAClB,MAAM,IAAIG,KAAAA,CACR,CAAA,EAAGN,MAAAA,CAAO,mFAAmF,CAAC,CAAA;IAGlGO,iBAAAA,CAAa;AAAEb,QAAAA,MAAAA;AAAQQ,QAAAA;AAAQ,KAAA,CAAA,CAAGM,KAAK,EAAA;AACzC,CAAA;AAEA;;AAEC,UACKC,OAAAA,GAAyB,IAAA;IAC7B,OAAOC,uBAAAA,CAAc,SAClBC,WAAW,CAAC,iCACZlB,MAAM,CAACmB,kBAAU,OAAA,EAASnB,MAAAA,CAAAA,CAAAA;AAC/B;;;;"}
|
|
@@ -7,9 +7,14 @@ var commander = require('commander');
|
|
|
7
7
|
var helpers = require('../../utils/helpers.js');
|
|
8
8
|
var telemetry = require('../../utils/telemetry.js');
|
|
9
9
|
|
|
10
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
var fse__default = /*#__PURE__*/_interopDefault(fse);
|
|
13
|
+
var chalk__default = /*#__PURE__*/_interopDefault(chalk);
|
|
14
|
+
|
|
10
15
|
const readPackageJSON = async (path)=>{
|
|
11
16
|
try {
|
|
12
|
-
const packageObj = await
|
|
17
|
+
const packageObj = await fse__default.default.readJson(path);
|
|
13
18
|
const uuid = packageObj.strapi ? packageObj.strapi.uuid : null;
|
|
14
19
|
const installId = packageObj.strapi ? packageObj.strapi.installId : null;
|
|
15
20
|
return {
|
|
@@ -19,32 +24,32 @@ const readPackageJSON = async (path)=>{
|
|
|
19
24
|
};
|
|
20
25
|
} catch (err) {
|
|
21
26
|
if (err instanceof Error) {
|
|
22
|
-
console.error(`${
|
|
27
|
+
console.error(`${chalk__default.default.red('Error')}: ${err.message}`);
|
|
23
28
|
}
|
|
24
29
|
}
|
|
25
30
|
};
|
|
26
31
|
const writePackageJSON = async (path, file, spacing)=>{
|
|
27
32
|
try {
|
|
28
|
-
await
|
|
33
|
+
await fse__default.default.writeJson(path, file, {
|
|
29
34
|
spaces: spacing
|
|
30
35
|
});
|
|
31
36
|
return true;
|
|
32
37
|
} catch (err) {
|
|
33
38
|
if (err instanceof Error) {
|
|
34
|
-
console.error(`${
|
|
39
|
+
console.error(`${chalk__default.default.red('Error')}: ${err.message}`);
|
|
35
40
|
}
|
|
36
41
|
}
|
|
37
42
|
};
|
|
38
43
|
const action = async ()=>{
|
|
39
44
|
const packageJSONPath = path.resolve(process.cwd(), 'package.json');
|
|
40
|
-
const exists = await
|
|
45
|
+
const exists = await fse__default.default.pathExists(packageJSONPath);
|
|
41
46
|
if (!exists) {
|
|
42
|
-
console.log(`${
|
|
47
|
+
console.log(`${chalk__default.default.yellow('Warning')}: could not find package.json`);
|
|
43
48
|
process.exit(0);
|
|
44
49
|
}
|
|
45
50
|
const { uuid, installId, packageObj } = await readPackageJSON(packageJSONPath) ?? {};
|
|
46
51
|
if (packageObj.strapi && packageObj.strapi.telemetryDisabled || !uuid) {
|
|
47
|
-
console.log(`${
|
|
52
|
+
console.log(`${chalk__default.default.yellow('Warning:')} telemetry is already disabled`);
|
|
48
53
|
process.exit(0);
|
|
49
54
|
}
|
|
50
55
|
const updatedPackageJSON = {
|
|
@@ -56,11 +61,11 @@ const action = async ()=>{
|
|
|
56
61
|
};
|
|
57
62
|
const write = await writePackageJSON(packageJSONPath, updatedPackageJSON, 2);
|
|
58
63
|
if (!write) {
|
|
59
|
-
console.log(`${
|
|
64
|
+
console.log(`${chalk__default.default.yellow('Warning')}: There has been an error, please set "telemetryDisabled": true in the "strapi" object of your package.json manually.`);
|
|
60
65
|
process.exit(0);
|
|
61
66
|
}
|
|
62
67
|
await telemetry.sendEvent('didOptOutTelemetry', uuid, installId);
|
|
63
|
-
console.log(`${
|
|
68
|
+
console.log(`${chalk__default.default.green('Successfully opted out of Strapi telemetry')}`);
|
|
64
69
|
process.exit(0);
|
|
65
70
|
};
|
|
66
71
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disable.js","sources":["../../../../../src/cli/commands/telemetry/disable.ts"],"sourcesContent":["import { resolve } from 'path';\nimport fse from 'fs-extra';\nimport chalk from 'chalk';\nimport { createCommand } from 'commander';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\nimport { sendEvent } from '../../utils/telemetry';\n\nconst readPackageJSON = async (path: string) => {\n try {\n const packageObj = await fse.readJson(path);\n const uuid = packageObj.strapi ? packageObj.strapi.uuid : null;\n const installId = packageObj.strapi ? packageObj.strapi.installId : null;\n\n return { uuid, installId, packageObj };\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n }\n }\n};\n\nconst writePackageJSON = async (path: string, file: object, spacing: number) => {\n try {\n await fse.writeJson(path, file, { spaces: spacing });\n return true;\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n }\n }\n};\n\nconst action = async () => {\n const packageJSONPath = resolve(process.cwd(), 'package.json');\n const exists = await fse.pathExists(packageJSONPath);\n\n if (!exists) {\n console.log(`${chalk.yellow('Warning')}: could not find package.json`);\n process.exit(0);\n }\n\n const { uuid, installId, packageObj } = (await readPackageJSON(packageJSONPath)) ?? {};\n\n if ((packageObj.strapi && packageObj.strapi.telemetryDisabled) || !uuid) {\n console.log(`${chalk.yellow('Warning:')} telemetry is already disabled`);\n process.exit(0);\n }\n\n const updatedPackageJSON = {\n ...packageObj,\n strapi: {\n ...packageObj.strapi,\n telemetryDisabled: true,\n },\n };\n\n const write = await writePackageJSON(packageJSONPath, updatedPackageJSON, 2);\n\n if (!write) {\n console.log(\n `${chalk.yellow(\n 'Warning'\n )}: There has been an error, please set \"telemetryDisabled\": true in the \"strapi\" object of your package.json manually.`\n );\n process.exit(0);\n }\n\n await sendEvent('didOptOutTelemetry', uuid, installId);\n console.log(`${chalk.green('Successfully opted out of Strapi telemetry')}`);\n process.exit(0);\n};\n\n/**\n * `$ strapi telemetry:disable`\n */\nconst command: StrapiCommand = () => {\n return createCommand('telemetry:disable')\n .description('Disable anonymous telemetry and metadata sending to Strapi analytics')\n .action(runAction('telemetry:disable', action));\n};\n\nexport { action, command };\n"],"names":["readPackageJSON","path","packageObj","fse","readJson","uuid","strapi","installId","err","Error","console","error","chalk","red","message","writePackageJSON","file","spacing","writeJson","spaces","action","packageJSONPath","resolve","process","cwd","exists","pathExists","log","yellow","exit","telemetryDisabled","updatedPackageJSON","write","sendEvent","green","command","createCommand","description","runAction"],"mappings":"
|
|
1
|
+
{"version":3,"file":"disable.js","sources":["../../../../../src/cli/commands/telemetry/disable.ts"],"sourcesContent":["import { resolve } from 'path';\nimport fse from 'fs-extra';\nimport chalk from 'chalk';\nimport { createCommand } from 'commander';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\nimport { sendEvent } from '../../utils/telemetry';\n\nconst readPackageJSON = async (path: string) => {\n try {\n const packageObj = await fse.readJson(path);\n const uuid = packageObj.strapi ? packageObj.strapi.uuid : null;\n const installId = packageObj.strapi ? packageObj.strapi.installId : null;\n\n return { uuid, installId, packageObj };\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n }\n }\n};\n\nconst writePackageJSON = async (path: string, file: object, spacing: number) => {\n try {\n await fse.writeJson(path, file, { spaces: spacing });\n return true;\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n }\n }\n};\n\nconst action = async () => {\n const packageJSONPath = resolve(process.cwd(), 'package.json');\n const exists = await fse.pathExists(packageJSONPath);\n\n if (!exists) {\n console.log(`${chalk.yellow('Warning')}: could not find package.json`);\n process.exit(0);\n }\n\n const { uuid, installId, packageObj } = (await readPackageJSON(packageJSONPath)) ?? {};\n\n if ((packageObj.strapi && packageObj.strapi.telemetryDisabled) || !uuid) {\n console.log(`${chalk.yellow('Warning:')} telemetry is already disabled`);\n process.exit(0);\n }\n\n const updatedPackageJSON = {\n ...packageObj,\n strapi: {\n ...packageObj.strapi,\n telemetryDisabled: true,\n },\n };\n\n const write = await writePackageJSON(packageJSONPath, updatedPackageJSON, 2);\n\n if (!write) {\n console.log(\n `${chalk.yellow(\n 'Warning'\n )}: There has been an error, please set \"telemetryDisabled\": true in the \"strapi\" object of your package.json manually.`\n );\n process.exit(0);\n }\n\n await sendEvent('didOptOutTelemetry', uuid, installId);\n console.log(`${chalk.green('Successfully opted out of Strapi telemetry')}`);\n process.exit(0);\n};\n\n/**\n * `$ strapi telemetry:disable`\n */\nconst command: StrapiCommand = () => {\n return createCommand('telemetry:disable')\n .description('Disable anonymous telemetry and metadata sending to Strapi analytics')\n .action(runAction('telemetry:disable', action));\n};\n\nexport { action, command };\n"],"names":["readPackageJSON","path","packageObj","fse","readJson","uuid","strapi","installId","err","Error","console","error","chalk","red","message","writePackageJSON","file","spacing","writeJson","spaces","action","packageJSONPath","resolve","process","cwd","exists","pathExists","log","yellow","exit","telemetryDisabled","updatedPackageJSON","write","sendEvent","green","command","createCommand","description","runAction"],"mappings":"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"}
|
|
@@ -8,13 +8,18 @@ var commander = require('commander');
|
|
|
8
8
|
var helpers = require('../../utils/helpers.js');
|
|
9
9
|
var telemetry = require('../../utils/telemetry.js');
|
|
10
10
|
|
|
11
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
|
|
13
|
+
var fse__default = /*#__PURE__*/_interopDefault(fse);
|
|
14
|
+
var chalk__default = /*#__PURE__*/_interopDefault(chalk);
|
|
15
|
+
|
|
11
16
|
const readPackageJSON = async (path)=>{
|
|
12
17
|
try {
|
|
13
|
-
const packageObj = await
|
|
18
|
+
const packageObj = await fse__default.default.readJson(path);
|
|
14
19
|
return packageObj;
|
|
15
20
|
} catch (err) {
|
|
16
21
|
if (err instanceof Error) {
|
|
17
|
-
console.error(`${
|
|
22
|
+
console.error(`${chalk__default.default.red('Error')}: ${err.message}`);
|
|
18
23
|
} else {
|
|
19
24
|
throw err;
|
|
20
25
|
}
|
|
@@ -22,14 +27,14 @@ const readPackageJSON = async (path)=>{
|
|
|
22
27
|
};
|
|
23
28
|
const writePackageJSON = async (path, file, spacing)=>{
|
|
24
29
|
try {
|
|
25
|
-
await
|
|
30
|
+
await fse__default.default.writeJson(path, file, {
|
|
26
31
|
spaces: spacing
|
|
27
32
|
});
|
|
28
33
|
return true;
|
|
29
34
|
} catch (err) {
|
|
30
35
|
if (err instanceof Error) {
|
|
31
|
-
console.error(`${
|
|
32
|
-
console.log(`${
|
|
36
|
+
console.error(`${chalk__default.default.red('Error')}: ${err.message}`);
|
|
37
|
+
console.log(`${chalk__default.default.yellow('Warning')}: There has been an error, please set "telemetryDisabled": false in the "strapi" object of your package.json manually.`);
|
|
33
38
|
return false;
|
|
34
39
|
}
|
|
35
40
|
throw err;
|
|
@@ -56,15 +61,15 @@ const generateNewPackageJSON = (packageObj)=>{
|
|
|
56
61
|
};
|
|
57
62
|
const action = async ()=>{
|
|
58
63
|
const packageJSONPath = path.resolve(process.cwd(), 'package.json');
|
|
59
|
-
const exists = await
|
|
64
|
+
const exists = await fse__default.default.pathExists(packageJSONPath);
|
|
60
65
|
if (!exists) {
|
|
61
|
-
console.log(`${
|
|
66
|
+
console.log(`${chalk__default.default.yellow('Warning')}: could not find package.json`);
|
|
62
67
|
process.exit(0);
|
|
63
68
|
}
|
|
64
69
|
const packageObj = await readPackageJSON(packageJSONPath);
|
|
65
70
|
if (packageObj.strapi && packageObj.strapi.uuid) {
|
|
66
71
|
if (packageObj.strapi.telemetryDisabled === false) {
|
|
67
|
-
console.log(`${
|
|
72
|
+
console.log(`${chalk__default.default.yellow('Warning:')} telemetry is already enabled`);
|
|
68
73
|
process.exit(0);
|
|
69
74
|
}
|
|
70
75
|
}
|
|
@@ -74,7 +79,7 @@ const action = async ()=>{
|
|
|
74
79
|
process.exit(0);
|
|
75
80
|
}
|
|
76
81
|
await telemetry.sendEvent('didOptInTelemetry', updatedPackageJSON.strapi.uuid, updatedPackageJSON.strapi?.installId);
|
|
77
|
-
console.log(`${
|
|
82
|
+
console.log(`${chalk__default.default.green('Successfully opted into and enabled Strapi telemetry')}`);
|
|
78
83
|
process.exit(0);
|
|
79
84
|
};
|
|
80
85
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enable.js","sources":["../../../../../src/cli/commands/telemetry/enable.ts"],"sourcesContent":["import { resolve } from 'path';\nimport { randomUUID } from 'crypto';\nimport fse from 'fs-extra';\nimport chalk from 'chalk';\nimport { createCommand } from 'commander';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\nimport { sendEvent } from '../../utils/telemetry';\n\ntype PackageJson = {\n strapi?: {\n uuid?: string;\n installId?: string;\n telemetryDisabled?: boolean;\n };\n};\n\nconst readPackageJSON = async (path: string) => {\n try {\n const packageObj = await fse.readJson(path);\n return packageObj;\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n } else {\n throw err;\n }\n }\n};\n\nconst writePackageJSON = async (path: string, file: object, spacing: number) => {\n try {\n await fse.writeJson(path, file, { spaces: spacing });\n return true;\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n console.log(\n `${chalk.yellow(\n 'Warning'\n )}: There has been an error, please set \"telemetryDisabled\": false in the \"strapi\" object of your package.json manually.`\n );\n\n return false;\n }\n\n throw err;\n }\n};\n\nconst generateNewPackageJSON = (packageObj: PackageJson) => {\n if (!packageObj.strapi) {\n return {\n ...packageObj,\n strapi: {\n uuid: randomUUID(),\n telemetryDisabled: false,\n },\n };\n }\n return {\n ...packageObj,\n strapi: {\n ...packageObj.strapi,\n uuid: packageObj.strapi.uuid ? packageObj.strapi.uuid : randomUUID(),\n telemetryDisabled: false,\n },\n };\n};\n\nconst action = async () => {\n const packageJSONPath = resolve(process.cwd(), 'package.json');\n const exists = await fse.pathExists(packageJSONPath);\n\n if (!exists) {\n console.log(`${chalk.yellow('Warning')}: could not find package.json`);\n process.exit(0);\n }\n\n const packageObj = await readPackageJSON(packageJSONPath);\n\n if (packageObj.strapi && packageObj.strapi.uuid) {\n if (packageObj.strapi.telemetryDisabled === false) {\n console.log(`${chalk.yellow('Warning:')} telemetry is already enabled`);\n process.exit(0);\n }\n }\n\n const updatedPackageJSON = generateNewPackageJSON(packageObj);\n\n const write = await writePackageJSON(packageJSONPath, updatedPackageJSON, 2);\n\n if (!write) {\n process.exit(0);\n }\n\n await sendEvent(\n 'didOptInTelemetry',\n updatedPackageJSON.strapi.uuid,\n updatedPackageJSON.strapi?.installId\n );\n console.log(`${chalk.green('Successfully opted into and enabled Strapi telemetry')}`);\n process.exit(0);\n};\n\n/**\n * `$ strapi telemetry:enable`\n */\nconst command: StrapiCommand = () => {\n return createCommand('telemetry:enable')\n .description('Enable anonymous telemetry and metadata sending to Strapi analytics')\n .action(runAction('telemetry:enable', action));\n};\n\nexport { action, command };\n"],"names":["readPackageJSON","path","packageObj","fse","readJson","err","Error","console","error","chalk","red","message","writePackageJSON","file","spacing","writeJson","spaces","log","yellow","generateNewPackageJSON","strapi","uuid","randomUUID","telemetryDisabled","action","packageJSONPath","resolve","process","cwd","exists","pathExists","exit","updatedPackageJSON","write","sendEvent","installId","green","command","createCommand","description","runAction"],"mappings":"
|
|
1
|
+
{"version":3,"file":"enable.js","sources":["../../../../../src/cli/commands/telemetry/enable.ts"],"sourcesContent":["import { resolve } from 'path';\nimport { randomUUID } from 'crypto';\nimport fse from 'fs-extra';\nimport chalk from 'chalk';\nimport { createCommand } from 'commander';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\nimport { sendEvent } from '../../utils/telemetry';\n\ntype PackageJson = {\n strapi?: {\n uuid?: string;\n installId?: string;\n telemetryDisabled?: boolean;\n };\n};\n\nconst readPackageJSON = async (path: string) => {\n try {\n const packageObj = await fse.readJson(path);\n return packageObj;\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n } else {\n throw err;\n }\n }\n};\n\nconst writePackageJSON = async (path: string, file: object, spacing: number) => {\n try {\n await fse.writeJson(path, file, { spaces: spacing });\n return true;\n } catch (err) {\n if (err instanceof Error) {\n console.error(`${chalk.red('Error')}: ${err.message}`);\n console.log(\n `${chalk.yellow(\n 'Warning'\n )}: There has been an error, please set \"telemetryDisabled\": false in the \"strapi\" object of your package.json manually.`\n );\n\n return false;\n }\n\n throw err;\n }\n};\n\nconst generateNewPackageJSON = (packageObj: PackageJson) => {\n if (!packageObj.strapi) {\n return {\n ...packageObj,\n strapi: {\n uuid: randomUUID(),\n telemetryDisabled: false,\n },\n };\n }\n return {\n ...packageObj,\n strapi: {\n ...packageObj.strapi,\n uuid: packageObj.strapi.uuid ? packageObj.strapi.uuid : randomUUID(),\n telemetryDisabled: false,\n },\n };\n};\n\nconst action = async () => {\n const packageJSONPath = resolve(process.cwd(), 'package.json');\n const exists = await fse.pathExists(packageJSONPath);\n\n if (!exists) {\n console.log(`${chalk.yellow('Warning')}: could not find package.json`);\n process.exit(0);\n }\n\n const packageObj = await readPackageJSON(packageJSONPath);\n\n if (packageObj.strapi && packageObj.strapi.uuid) {\n if (packageObj.strapi.telemetryDisabled === false) {\n console.log(`${chalk.yellow('Warning:')} telemetry is already enabled`);\n process.exit(0);\n }\n }\n\n const updatedPackageJSON = generateNewPackageJSON(packageObj);\n\n const write = await writePackageJSON(packageJSONPath, updatedPackageJSON, 2);\n\n if (!write) {\n process.exit(0);\n }\n\n await sendEvent(\n 'didOptInTelemetry',\n updatedPackageJSON.strapi.uuid,\n updatedPackageJSON.strapi?.installId\n );\n console.log(`${chalk.green('Successfully opted into and enabled Strapi telemetry')}`);\n process.exit(0);\n};\n\n/**\n * `$ strapi telemetry:enable`\n */\nconst command: StrapiCommand = () => {\n return createCommand('telemetry:enable')\n .description('Enable anonymous telemetry and metadata sending to Strapi analytics')\n .action(runAction('telemetry:enable', action));\n};\n\nexport { action, command };\n"],"names":["readPackageJSON","path","packageObj","fse","readJson","err","Error","console","error","chalk","red","message","writePackageJSON","file","spacing","writeJson","spaces","log","yellow","generateNewPackageJSON","strapi","uuid","randomUUID","telemetryDisabled","action","packageJSONPath","resolve","process","cwd","exists","pathExists","exit","updatedPackageJSON","write","sendEvent","installId","green","command","createCommand","description","runAction"],"mappings":"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"}
|
|
@@ -6,6 +6,10 @@ var dataTransfer = require('@strapi/data-transfer');
|
|
|
6
6
|
var dataTransfer$1 = require('../../utils/data-transfer.js');
|
|
7
7
|
var helpers = require('../../utils/helpers.js');
|
|
8
8
|
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
var ora__default = /*#__PURE__*/_interopDefault(ora);
|
|
12
|
+
|
|
9
13
|
const { createTransferEngine } = dataTransfer.engine;
|
|
10
14
|
const { providers: { createRemoteStrapiDestinationProvider, createLocalStrapiSourceProvider, createLocalStrapiDestinationProvider, createRemoteStrapiSourceProvider } } = dataTransfer.strapi;
|
|
11
15
|
const resolveRemotePullAssetIdleTimeoutMs = (value)=>{
|
|
@@ -204,7 +208,7 @@ const resolveRemotePullAssetIdleTimeoutMs = (value)=>{
|
|
|
204
208
|
progress.on('transfer::start', async ()=>{
|
|
205
209
|
transferPrepStartedAt = Date.now();
|
|
206
210
|
prepStepDetail = null;
|
|
207
|
-
startingSpinner =
|
|
211
|
+
startingSpinner = ora__default.default(formatPrepSpinnerLine()).start();
|
|
208
212
|
startingElapsedInterval = setInterval(()=>{
|
|
209
213
|
if (startingSpinner && transferPrepStartedAt != null) {
|
|
210
214
|
const elapsed = Date.now() - transferPrepStartedAt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sources":["../../../../../src/cli/commands/transfer/action.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport ora from 'ora';\nimport type { Ora } from 'ora';\nimport { engine as engineDataTransfer, strapi as strapiDataTransfer } from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n isIgnoredContentType,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n parseRestoreFromOptions,\n} from '../../utils/data-transfer';\nimport {\n exitWith,\n formatElapsedAndMaybeRemainingLabel,\n TRANSFER_PROGRESS_FIELD_SEP,\n} from '../../utils/helpers';\n\nconst { createTransferEngine } = engineDataTransfer;\nconst {\n providers: {\n createRemoteStrapiDestinationProvider,\n createLocalStrapiSourceProvider,\n createLocalStrapiDestinationProvider,\n createRemoteStrapiSourceProvider,\n },\n} = strapiDataTransfer;\n\nconst resolveRemotePullAssetIdleTimeoutMs = (value: unknown): number | undefined => {\n if (value == null || value === '') {\n return undefined;\n }\n const n = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(n) || n <= 0) {\n return undefined;\n }\n return n;\n};\n\ninterface CmdOptions {\n from?: URL;\n fromToken: string;\n to: URL;\n toToken: string;\n verbose?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n throttle?: number;\n force?: boolean;\n checksums?: boolean;\n}\n/**\n * Transfer command.\n *\n * Transfers data between local Strapi and remote Strapi instances\n */\nexport default async (opts: CmdOptions) => {\n // Avoid DeprecationWarning lines on stderr (e.g. pg `client.query()` while a query is in flight)\n // interleaving with ora spinners during transfer. (Runtime API; not on all @types/node Process typings.)\n (process as NodeJS.Process & { noDeprecation: boolean }).noDeprecation = true;\n\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n if (!(opts.from || opts.to) || (opts.from && opts.to)) {\n exitWith(1, 'Exactly one source (from) or destination (to) option must be provided');\n }\n\n const strapi = await createStrapiInstance();\n const checksumsEnabled = opts.checksums !== false;\n let source;\n let destination;\n\n // if no URL provided, use local Strapi\n if (!opts.from) {\n source = createLocalStrapiSourceProvider({\n getStrapi: () => strapi,\n });\n }\n // if URL provided, set up a remote source provider\n else {\n if (!opts.fromToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n const assetIdleTimeoutMs = resolveRemotePullAssetIdleTimeoutMs(\n strapi.config.get('server.transfer.remote.assetIdleTimeoutMs')\n );\n\n source = createRemoteStrapiSourceProvider({\n getStrapi: () => strapi,\n url: opts.from,\n auth: {\n type: 'token',\n token: opts.fromToken,\n },\n ...(assetIdleTimeoutMs !== undefined ? { streamTimeout: assetIdleTimeoutMs } : {}),\n ...(checksumsEnabled ? { verifyChecksums: true } : {}),\n });\n }\n\n /** Wired after `engine` exists so destination prep can update the CLI spinner. */\n const transferPhaseBridge: { emit: (message: string) => void } = {\n emit() {\n /* replaced below once `progress` exists */\n },\n };\n\n // if no URL provided, use local Strapi\n if (!opts.to) {\n destination = createLocalStrapiDestinationProvider({\n getStrapi: () => strapi,\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts, strapi),\n onTransferPhase: (message: string) => transferPhaseBridge.emit(message),\n });\n }\n // if URL provided, set up a remote destination provider\n else {\n if (!opts.toToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n destination = createRemoteStrapiDestinationProvider({\n url: opts.to,\n auth: {\n type: 'token',\n token: opts.toToken,\n },\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts, strapi),\n onTransferPhase: (message: string) => transferPhaseBridge.emit(message),\n ...(checksumsEnabled ? { verifyChecksums: true } : {}),\n });\n }\n\n if (!source || !destination) {\n exitWith(1, 'Could not create providers');\n }\n\n const engine = createTransferEngine(source, destination, {\n versionStrategy: 'exact',\n schemaStrategy: 'strict',\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: {\n links: [\n {\n filter(link) {\n return !isIgnoredContentType(link.left.type) && !isIgnoredContentType(link.right.type);\n },\n },\n ],\n entities: [\n {\n filter(entity) {\n return !isIgnoredContentType(entity.type);\n },\n },\n ],\n },\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('transfer', opts.verbose));\n\n const progress = engine.progress.stream;\n\n /** Shown until destination prep emits a step; then we keep this prefix and append the step after \" — \". */\n const STARTING_TRANSFER_PREFIX = 'Starting transfer…';\n let prepStepDetail: string | null = null;\n\n const formatPrepSpinnerLine = () =>\n prepStepDetail != null && prepStepDetail !== ''\n ? `${STARTING_TRANSFER_PREFIX} — ${prepStepDetail}`\n : STARTING_TRANSFER_PREFIX;\n\n transferPhaseBridge.emit = (message: string) => {\n prepStepDetail = message;\n progress.emit('transfer::phase', { message: formatPrepSpinnerLine() });\n };\n\n const { updateLoader } = loadersFactory();\n\n let startingSpinner: Ora | null = null;\n let startingElapsedInterval: ReturnType<typeof setInterval> | null = null;\n /** Set when `transfer::start` fires so we can print a final persisted line with elapsed time. */\n let transferPrepStartedAt: number | null = null;\n\n /**\n * Stops the \"starting transfer\" spinner and **leaves a finished line** in the console (like stage\n * `succeed`/`fail`), so the next stage spinner starts on a new line instead of replacing this one.\n */\n const finishStartingSpinner = (outcome: 'done' | 'fail' = 'done') => {\n if (startingElapsedInterval) {\n clearInterval(startingElapsedInterval);\n startingElapsedInterval = null;\n }\n if (startingSpinner) {\n const elapsed = transferPrepStartedAt != null ? Date.now() - transferPrepStartedAt : 0;\n const line = `${formatPrepSpinnerLine()}${TRANSFER_PROGRESS_FIELD_SEP}${formatElapsedAndMaybeRemainingLabel(\n elapsed,\n null\n )}`;\n if (outcome === 'fail') {\n startingSpinner.fail(line);\n } else {\n startingSpinner.succeed(line);\n }\n startingSpinner = null;\n transferPrepStartedAt = null;\n }\n };\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'transfer' }));\n\n engine.addErrorHandler(\n 'ASSETS_DIRECTORY_ERR',\n getAssetsBackupHandler(engine, { force: opts.force, action: 'transfer' })\n );\n\n // Update more frequently to ensure elapsed time is accurate even if the stage is not progressing\n const activeStages = new Set<string>();\n const lastStageData: Record<string, any> = {};\n const interval = setInterval(() => {\n for (const stage of activeStages) {\n if (lastStageData[stage]) {\n // Clone the lastStageData and ensure endTime is undefined so elapsed uses Date.now()\n const dataCopy = { ...lastStageData[stage], endTime: undefined };\n updateLoader(stage as any, { [stage]: dataCopy });\n }\n }\n }, 100);\n\n progress.on(`stage::start`, ({ stage, data }) => {\n finishStartingSpinner('done');\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n lastStageData[stage] = data[stage];\n activeStages.add(stage);\n updateLoader(stage, data);\n });\n\n progress.on('stage::error', ({ stage, data }) => {\n updateLoader(stage, data).fail();\n });\n\n progress.on('transfer::finish', () => {\n finishStartingSpinner('done');\n clearInterval(interval);\n });\n progress.on('transfer::error', () => {\n finishStartingSpinner('fail');\n clearInterval(interval);\n });\n\n progress.on('transfer::start', async () => {\n transferPrepStartedAt = Date.now();\n prepStepDetail = null;\n startingSpinner = ora(formatPrepSpinnerLine()).start();\n startingElapsedInterval = setInterval(() => {\n if (startingSpinner && transferPrepStartedAt != null) {\n const elapsed = Date.now() - transferPrepStartedAt;\n startingSpinner.text = `${formatPrepSpinnerLine()}${TRANSFER_PROGRESS_FIELD_SEP}${formatElapsedAndMaybeRemainingLabel(\n elapsed,\n null\n )}`;\n }\n }, 100);\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: Awaited<ReturnType<typeof engine.transfer>>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n exitWith(0, exitMessageText('transfer'));\n } catch (e) {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('transfer', true));\n }\n};\n"],"names":["createTransferEngine","engineDataTransfer","providers","createRemoteStrapiDestinationProvider","createLocalStrapiSourceProvider","createLocalStrapiDestinationProvider","createRemoteStrapiSourceProvider","strapiDataTransfer","resolveRemotePullAssetIdleTimeoutMs","value","undefined","n","Number","isFinite","opts","process","noDeprecation","isObject","exitWith","from","to","strapi","createStrapiInstance","checksumsEnabled","checksums","source","destination","getStrapi","fromToken","assetIdleTimeoutMs","config","get","url","auth","type","token","streamTimeout","verifyChecksums","transferPhaseBridge","emit","strategy","restore","parseRestoreFromOptions","onTransferPhase","message","toToken","engine","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","links","filter","link","isIgnoredContentType","left","right","entities","entity","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","STARTING_TRANSFER_PREFIX","prepStepDetail","formatPrepSpinnerLine","updateLoader","loadersFactory","startingSpinner","startingElapsedInterval","transferPrepStartedAt","finishStartingSpinner","outcome","clearInterval","elapsed","Date","now","line","TRANSFER_PROGRESS_FIELD_SEP","formatElapsedAndMaybeRemainingLabel","fail","succeed","onSchemaDiff","getDiffHandler","force","action","addErrorHandler","getAssetsBackupHandler","activeStages","Set","lastStageData","interval","setInterval","stage","dataCopy","endTime","on","data","start","add","ora","text","telemetry","send","getTransferTelemetryPayload","results","setSignalHandler","abortTransfer","transfer","table","buildTransferTable","console","log","toString","e","error","exitMessageText"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"action.js","sources":["../../../../../src/cli/commands/transfer/action.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport ora from 'ora';\nimport type { Ora } from 'ora';\nimport { engine as engineDataTransfer, strapi as strapiDataTransfer } from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n isIgnoredContentType,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n getAssetsBackupHandler,\n parseRestoreFromOptions,\n} from '../../utils/data-transfer';\nimport {\n exitWith,\n formatElapsedAndMaybeRemainingLabel,\n TRANSFER_PROGRESS_FIELD_SEP,\n} from '../../utils/helpers';\n\nconst { createTransferEngine } = engineDataTransfer;\nconst {\n providers: {\n createRemoteStrapiDestinationProvider,\n createLocalStrapiSourceProvider,\n createLocalStrapiDestinationProvider,\n createRemoteStrapiSourceProvider,\n },\n} = strapiDataTransfer;\n\nconst resolveRemotePullAssetIdleTimeoutMs = (value: unknown): number | undefined => {\n if (value == null || value === '') {\n return undefined;\n }\n const n = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(n) || n <= 0) {\n return undefined;\n }\n return n;\n};\n\ninterface CmdOptions {\n from?: URL;\n fromToken: string;\n to: URL;\n toToken: string;\n verbose?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n throttle?: number;\n force?: boolean;\n checksums?: boolean;\n}\n/**\n * Transfer command.\n *\n * Transfers data between local Strapi and remote Strapi instances\n */\nexport default async (opts: CmdOptions) => {\n // Avoid DeprecationWarning lines on stderr (e.g. pg `client.query()` while a query is in flight)\n // interleaving with ora spinners during transfer. (Runtime API; not on all @types/node Process typings.)\n (process as NodeJS.Process & { noDeprecation: boolean }).noDeprecation = true;\n\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n if (!(opts.from || opts.to) || (opts.from && opts.to)) {\n exitWith(1, 'Exactly one source (from) or destination (to) option must be provided');\n }\n\n const strapi = await createStrapiInstance();\n const checksumsEnabled = opts.checksums !== false;\n let source;\n let destination;\n\n // if no URL provided, use local Strapi\n if (!opts.from) {\n source = createLocalStrapiSourceProvider({\n getStrapi: () => strapi,\n });\n }\n // if URL provided, set up a remote source provider\n else {\n if (!opts.fromToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n const assetIdleTimeoutMs = resolveRemotePullAssetIdleTimeoutMs(\n strapi.config.get('server.transfer.remote.assetIdleTimeoutMs')\n );\n\n source = createRemoteStrapiSourceProvider({\n getStrapi: () => strapi,\n url: opts.from,\n auth: {\n type: 'token',\n token: opts.fromToken,\n },\n ...(assetIdleTimeoutMs !== undefined ? { streamTimeout: assetIdleTimeoutMs } : {}),\n ...(checksumsEnabled ? { verifyChecksums: true } : {}),\n });\n }\n\n /** Wired after `engine` exists so destination prep can update the CLI spinner. */\n const transferPhaseBridge: { emit: (message: string) => void } = {\n emit() {\n /* replaced below once `progress` exists */\n },\n };\n\n // if no URL provided, use local Strapi\n if (!opts.to) {\n destination = createLocalStrapiDestinationProvider({\n getStrapi: () => strapi,\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts, strapi),\n onTransferPhase: (message: string) => transferPhaseBridge.emit(message),\n });\n }\n // if URL provided, set up a remote destination provider\n else {\n if (!opts.toToken) {\n exitWith(1, 'Missing token for remote destination');\n }\n\n destination = createRemoteStrapiDestinationProvider({\n url: opts.to,\n auth: {\n type: 'token',\n token: opts.toToken,\n },\n strategy: 'restore',\n restore: parseRestoreFromOptions(opts, strapi),\n onTransferPhase: (message: string) => transferPhaseBridge.emit(message),\n ...(checksumsEnabled ? { verifyChecksums: true } : {}),\n });\n }\n\n if (!source || !destination) {\n exitWith(1, 'Could not create providers');\n }\n\n const engine = createTransferEngine(source, destination, {\n versionStrategy: 'exact',\n schemaStrategy: 'strict',\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: {\n links: [\n {\n filter(link) {\n return !isIgnoredContentType(link.left.type) && !isIgnoredContentType(link.right.type);\n },\n },\n ],\n entities: [\n {\n filter(entity) {\n return !isIgnoredContentType(entity.type);\n },\n },\n ],\n },\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('transfer', opts.verbose));\n\n const progress = engine.progress.stream;\n\n /** Shown until destination prep emits a step; then we keep this prefix and append the step after \" — \". */\n const STARTING_TRANSFER_PREFIX = 'Starting transfer…';\n let prepStepDetail: string | null = null;\n\n const formatPrepSpinnerLine = () =>\n prepStepDetail != null && prepStepDetail !== ''\n ? `${STARTING_TRANSFER_PREFIX} — ${prepStepDetail}`\n : STARTING_TRANSFER_PREFIX;\n\n transferPhaseBridge.emit = (message: string) => {\n prepStepDetail = message;\n progress.emit('transfer::phase', { message: formatPrepSpinnerLine() });\n };\n\n const { updateLoader } = loadersFactory();\n\n let startingSpinner: Ora | null = null;\n let startingElapsedInterval: ReturnType<typeof setInterval> | null = null;\n /** Set when `transfer::start` fires so we can print a final persisted line with elapsed time. */\n let transferPrepStartedAt: number | null = null;\n\n /**\n * Stops the \"starting transfer\" spinner and **leaves a finished line** in the console (like stage\n * `succeed`/`fail`), so the next stage spinner starts on a new line instead of replacing this one.\n */\n const finishStartingSpinner = (outcome: 'done' | 'fail' = 'done') => {\n if (startingElapsedInterval) {\n clearInterval(startingElapsedInterval);\n startingElapsedInterval = null;\n }\n if (startingSpinner) {\n const elapsed = transferPrepStartedAt != null ? Date.now() - transferPrepStartedAt : 0;\n const line = `${formatPrepSpinnerLine()}${TRANSFER_PROGRESS_FIELD_SEP}${formatElapsedAndMaybeRemainingLabel(\n elapsed,\n null\n )}`;\n if (outcome === 'fail') {\n startingSpinner.fail(line);\n } else {\n startingSpinner.succeed(line);\n }\n startingSpinner = null;\n transferPrepStartedAt = null;\n }\n };\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'transfer' }));\n\n engine.addErrorHandler(\n 'ASSETS_DIRECTORY_ERR',\n getAssetsBackupHandler(engine, { force: opts.force, action: 'transfer' })\n );\n\n // Update more frequently to ensure elapsed time is accurate even if the stage is not progressing\n const activeStages = new Set<string>();\n const lastStageData: Record<string, any> = {};\n const interval = setInterval(() => {\n for (const stage of activeStages) {\n if (lastStageData[stage]) {\n // Clone the lastStageData and ensure endTime is undefined so elapsed uses Date.now()\n const dataCopy = { ...lastStageData[stage], endTime: undefined };\n updateLoader(stage as any, { [stage]: dataCopy });\n }\n }\n }, 100);\n\n progress.on(`stage::start`, ({ stage, data }) => {\n finishStartingSpinner('done');\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n lastStageData[stage] = data[stage];\n activeStages.add(stage);\n updateLoader(stage, data);\n });\n\n progress.on('stage::error', ({ stage, data }) => {\n updateLoader(stage, data).fail();\n });\n\n progress.on('transfer::finish', () => {\n finishStartingSpinner('done');\n clearInterval(interval);\n });\n progress.on('transfer::error', () => {\n finishStartingSpinner('fail');\n clearInterval(interval);\n });\n\n progress.on('transfer::start', async () => {\n transferPrepStartedAt = Date.now();\n prepStepDetail = null;\n startingSpinner = ora(formatPrepSpinnerLine()).start();\n startingElapsedInterval = setInterval(() => {\n if (startingSpinner && transferPrepStartedAt != null) {\n const elapsed = Date.now() - transferPrepStartedAt;\n startingSpinner.text = `${formatPrepSpinnerLine()}${TRANSFER_PROGRESS_FIELD_SEP}${formatElapsedAndMaybeRemainingLabel(\n elapsed,\n null\n )}`;\n }\n }, 100);\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: Awaited<ReturnType<typeof engine.transfer>>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch (e) {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n exitWith(0, exitMessageText('transfer'));\n } catch (e) {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('transfer', true));\n }\n};\n"],"names":["createTransferEngine","engineDataTransfer","providers","createRemoteStrapiDestinationProvider","createLocalStrapiSourceProvider","createLocalStrapiDestinationProvider","createRemoteStrapiSourceProvider","strapiDataTransfer","resolveRemotePullAssetIdleTimeoutMs","value","undefined","n","Number","isFinite","opts","process","noDeprecation","isObject","exitWith","from","to","strapi","createStrapiInstance","checksumsEnabled","checksums","source","destination","getStrapi","fromToken","assetIdleTimeoutMs","config","get","url","auth","type","token","streamTimeout","verifyChecksums","transferPhaseBridge","emit","strategy","restore","parseRestoreFromOptions","onTransferPhase","message","toToken","engine","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","links","filter","link","isIgnoredContentType","left","right","entities","entity","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","STARTING_TRANSFER_PREFIX","prepStepDetail","formatPrepSpinnerLine","updateLoader","loadersFactory","startingSpinner","startingElapsedInterval","transferPrepStartedAt","finishStartingSpinner","outcome","clearInterval","elapsed","Date","now","line","TRANSFER_PROGRESS_FIELD_SEP","formatElapsedAndMaybeRemainingLabel","fail","succeed","onSchemaDiff","getDiffHandler","force","action","addErrorHandler","getAssetsBackupHandler","activeStages","Set","lastStageData","interval","setInterval","stage","dataCopy","endTime","on","data","start","add","ora","text","telemetry","send","getTransferTelemetryPayload","results","setSignalHandler","abortTransfer","transfer","table","buildTransferTable","console","log","toString","e","error","exitMessageText"],"mappings":"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"}
|
|
@@ -5,6 +5,10 @@ var tsUtils = require('@strapi/typescript-utils');
|
|
|
5
5
|
var core = require('@strapi/core');
|
|
6
6
|
var helpers = require('../../utils/helpers.js');
|
|
7
7
|
|
|
8
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
|
|
10
|
+
var tsUtils__default = /*#__PURE__*/_interopDefault(tsUtils);
|
|
11
|
+
|
|
8
12
|
const action = async ({ debug, silent, verbose, outDir })=>{
|
|
9
13
|
if ((debug || verbose) && silent) {
|
|
10
14
|
console.error('Flags conflict: both silent and debug mode are enabled, exiting...');
|
|
@@ -14,7 +18,7 @@ const action = async ({ debug, silent, verbose, outDir })=>{
|
|
|
14
18
|
ignoreDiagnostics: true
|
|
15
19
|
});
|
|
16
20
|
const app = await core.createStrapi(appContext).register();
|
|
17
|
-
await
|
|
21
|
+
await tsUtils__default.default.generators.generate({
|
|
18
22
|
strapi: app,
|
|
19
23
|
pwd: appContext.appDir,
|
|
20
24
|
rootDir: outDir ?? undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-types.js","sources":["../../../../../src/cli/commands/ts/generate-types.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport tsUtils from '@strapi/typescript-utils';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\ninterface CmdOptions {\n debug?: boolean;\n silent?: boolean;\n verbose?: boolean;\n outDir?: string;\n}\n\nconst action = async ({ debug, silent, verbose, outDir }: CmdOptions) => {\n if ((debug || verbose) && silent) {\n console.error('Flags conflict: both silent and debug mode are enabled, exiting...');\n process.exit(1);\n }\n\n const appContext = await compileStrapi({ ignoreDiagnostics: true });\n const app = await createStrapi(appContext).register();\n\n await tsUtils.generators.generate({\n strapi: app,\n pwd: appContext.appDir,\n rootDir: outDir ?? undefined,\n logger: {\n silent,\n debug,\n },\n artifacts: { contentTypes: true, components: true },\n });\n\n await app.destroy();\n};\n\n/**\n * `$ strapi ts:generate-types`\n */\nconst command: StrapiCommand = () => {\n return createCommand('ts:generate-types')\n .description(`Generate TypeScript typings for your schemas`)\n .option('-d, --debug', `Run the generation with debug messages`, false)\n .option('-s, --silent', `Run the generation silently, without any output`, false)\n .option(\n '-o, --out-dir <outDir>',\n 'Specify a relative root directory in which the definitions will be generated. Changing this value might break types exposed by Strapi that relies on generated types.'\n )\n .action(runAction('ts:generate-types', action));\n};\n\nexport { action, command };\n"],"names":["action","debug","silent","verbose","outDir","console","error","process","exit","appContext","compileStrapi","ignoreDiagnostics","app","createStrapi","register","tsUtils","generators","generate","strapi","pwd","appDir","rootDir","undefined","logger","artifacts","contentTypes","components","destroy","command","createCommand","description","option","runAction"],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate-types.js","sources":["../../../../../src/cli/commands/ts/generate-types.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport tsUtils from '@strapi/typescript-utils';\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\ninterface CmdOptions {\n debug?: boolean;\n silent?: boolean;\n verbose?: boolean;\n outDir?: string;\n}\n\nconst action = async ({ debug, silent, verbose, outDir }: CmdOptions) => {\n if ((debug || verbose) && silent) {\n console.error('Flags conflict: both silent and debug mode are enabled, exiting...');\n process.exit(1);\n }\n\n const appContext = await compileStrapi({ ignoreDiagnostics: true });\n const app = await createStrapi(appContext).register();\n\n await tsUtils.generators.generate({\n strapi: app,\n pwd: appContext.appDir,\n rootDir: outDir ?? undefined,\n logger: {\n silent,\n debug,\n },\n artifacts: { contentTypes: true, components: true },\n });\n\n await app.destroy();\n};\n\n/**\n * `$ strapi ts:generate-types`\n */\nconst command: StrapiCommand = () => {\n return createCommand('ts:generate-types')\n .description(`Generate TypeScript typings for your schemas`)\n .option('-d, --debug', `Run the generation with debug messages`, false)\n .option('-s, --silent', `Run the generation silently, without any output`, false)\n .option(\n '-o, --out-dir <outDir>',\n 'Specify a relative root directory in which the definitions will be generated. Changing this value might break types exposed by Strapi that relies on generated types.'\n )\n .action(runAction('ts:generate-types', action));\n};\n\nexport { action, command };\n"],"names":["action","debug","silent","verbose","outDir","console","error","process","exit","appContext","compileStrapi","ignoreDiagnostics","app","createStrapi","register","tsUtils","generators","generate","strapi","pwd","appDir","rootDir","undefined","logger","artifacts","contentTypes","components","destroy","command","createCommand","description","option","runAction"],"mappings":";;;;;;;;;;;AAcA,MAAMA,MAAAA,GAAS,OAAO,EAAEC,KAAK,EAAEC,MAAM,EAAEC,OAAO,EAAEC,MAAM,EAAc,GAAA;AAClE,IAAA,IAAI,CAACH,KAAAA,IAASE,OAAM,KAAMD,MAAAA,EAAQ;AAChCG,QAAAA,OAAAA,CAAQC,KAAK,CAAC,oEAAA,CAAA;AACdC,QAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,IAAA;IAEA,MAAMC,UAAAA,GAAa,MAAMC,kBAAAA,CAAc;QAAEC,iBAAAA,EAAmB;AAAK,KAAA,CAAA;AACjE,IAAA,MAAMC,GAAAA,GAAM,MAAMC,iBAAAA,CAAaJ,UAAAA,CAAAA,CAAYK,QAAQ,EAAA;AAEnD,IAAA,MAAMC,wBAAAA,CAAQC,UAAU,CAACC,QAAQ,CAAC;QAChCC,MAAAA,EAAQN,GAAAA;AACRO,QAAAA,GAAAA,EAAKV,WAAWW,MAAM;AACtBC,QAAAA,OAAAA,EAASjB,MAAAA,IAAUkB,SAAAA;QACnBC,MAAAA,EAAQ;AACNrB,YAAAA,MAAAA;AACAD,YAAAA;AACF,SAAA;QACAuB,SAAAA,EAAW;YAAEC,YAAAA,EAAc,IAAA;YAAMC,UAAAA,EAAY;AAAK;AACpD,KAAA,CAAA;AAEA,IAAA,MAAMd,IAAIe,OAAO,EAAA;AACnB;AAEA;;AAEC,UACKC,OAAAA,GAAyB,IAAA;AAC7B,IAAA,OAAOC,uBAAAA,CAAc,mBAAA,CAAA,CAClBC,WAAW,CAAC,CAAC,4CAA4C,CAAC,CAAA,CAC1DC,MAAM,CAAC,aAAA,EAAe,CAAC,sCAAsC,CAAC,EAAE,KAAA,CAAA,CAChEA,MAAM,CAAC,cAAA,EAAgB,CAAC,+CAA+C,CAAC,EAAE,KAAA,CAAA,CAC1EA,MAAM,CACL,wBAAA,EACA,uKAAA,CAAA,CAED/B,MAAM,CAACgC,kBAAU,mBAAA,EAAqBhC,MAAAA,CAAAA,CAAAA;AAC3C;;;;;"}
|