@strapi/strapi 5.55.1 → 5.57.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/admin-styles.css +5 -0
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/content-types/rename-field.d.ts +13 -0
- package/dist/cli/commands/content-types/rename-field.d.ts.map +1 -0
- package/dist/cli/commands/develop.d.ts.map +1 -1
- package/dist/cli/commands/enterprise/index.d.ts +7 -0
- package/dist/cli/commands/enterprise/index.d.ts.map +1 -0
- package/dist/cli/commands/enterprise/install/action.d.ts +36 -0
- package/dist/cli/commands/enterprise/install/action.d.ts.map +1 -0
- package/dist/cli/commands/enterprise/install/checklist-prompt.d.ts +14 -0
- package/dist/cli/commands/enterprise/install/checklist-prompt.d.ts.map +1 -0
- package/dist/cli/commands/enterprise/install/constants.d.ts +7 -0
- package/dist/cli/commands/enterprise/install/constants.d.ts.map +1 -0
- package/dist/cli/commands/enterprise/install/directories.d.ts +3 -0
- package/dist/cli/commands/enterprise/install/directories.d.ts.map +1 -0
- package/dist/cli/commands/enterprise/install/discovery.d.ts +29 -0
- package/dist/cli/commands/enterprise/install/discovery.d.ts.map +1 -0
- package/dist/cli/commands/enterprise/install/errors.d.ts +11 -0
- package/dist/cli/commands/enterprise/install/errors.d.ts.map +1 -0
- package/dist/cli/commands/enterprise/install/install-packages.d.ts +11 -0
- package/dist/cli/commands/enterprise/install/install-packages.d.ts.map +1 -0
- package/dist/cli/commands/enterprise/install/license.d.ts +27 -0
- package/dist/cli/commands/enterprise/install/license.d.ts.map +1 -0
- package/dist/cli/commands/enterprise/install/package-manager.d.ts +17 -0
- package/dist/cli/commands/enterprise/install/package-manager.d.ts.map +1 -0
- package/dist/cli/commands/enterprise/install/plugin-status.d.ts +44 -0
- package/dist/cli/commands/enterprise/install/plugin-status.d.ts.map +1 -0
- package/dist/cli/commands/enterprise/install/registry-access.d.ts +55 -0
- package/dist/cli/commands/enterprise/install/registry-access.d.ts.map +1 -0
- package/dist/cli/commands/enterprise/install/registry.d.ts +54 -0
- package/dist/cli/commands/enterprise/install/registry.d.ts.map +1 -0
- package/dist/cli/commands/enterprise/install/selection.d.ts +62 -0
- package/dist/cli/commands/enterprise/install/selection.d.ts.map +1 -0
- package/dist/cli/commands/enterprise/install/setup-links.d.ts +16 -0
- package/dist/cli/commands/enterprise/install/setup-links.d.ts.map +1 -0
- package/dist/cli/commands/enterprise/install/versions.d.ts +42 -0
- package/dist/cli/commands/enterprise/install/versions.d.ts.map +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/utils/commander.d.ts.map +1 -1
- package/dist/cli/utils/helpers.d.ts +1 -1
- package/dist/cli/utils/helpers.d.ts.map +1 -1
- package/dist/node/core/admin-vite-aliases.d.ts +9 -0
- package/dist/node/core/admin-vite-aliases.d.ts.map +1 -1
- package/dist/node/core/aliases.d.ts +4 -1
- package/dist/node/core/aliases.d.ts.map +1 -1
- package/dist/node/core/scan-roots.d.ts +20 -0
- package/dist/node/core/scan-roots.d.ts.map +1 -0
- package/dist/node/create-build-context.d.ts +10 -1
- package/dist/node/create-build-context.d.ts.map +1 -1
- package/dist/node/develop.d.ts.map +1 -1
- package/dist/node/staticFiles.d.ts +3 -1
- package/dist/node/staticFiles.d.ts.map +1 -1
- package/dist/node/vite/config.d.ts.map +1 -1
- package/dist/node/vite/plugins.d.ts +2 -1
- package/dist/node/vite/plugins.d.ts.map +1 -1
- package/dist/node/vite/plugins.test.d.ts +2 -0
- package/dist/node/vite/plugins.test.d.ts.map +1 -0
- package/dist/package.json.js +1 -1
- package/dist/package.json.mjs +1 -1
- package/dist/src/cli/commands/build.js +4 -2
- package/dist/src/cli/commands/build.js.map +1 -1
- package/dist/src/cli/commands/build.mjs +4 -2
- package/dist/src/cli/commands/build.mjs.map +1 -1
- package/dist/src/cli/commands/content-types/rename-field.js +63 -0
- package/dist/src/cli/commands/content-types/rename-field.js.map +1 -0
- package/dist/src/cli/commands/content-types/rename-field.mjs +54 -0
- package/dist/src/cli/commands/content-types/rename-field.mjs.map +1 -0
- package/dist/src/cli/commands/develop.js +4 -2
- package/dist/src/cli/commands/develop.js.map +1 -1
- package/dist/src/cli/commands/develop.mjs +4 -2
- package/dist/src/cli/commands/develop.mjs.map +1 -1
- package/dist/src/cli/commands/enterprise/index.js +17 -0
- package/dist/src/cli/commands/enterprise/index.js.map +1 -0
- package/dist/src/cli/commands/enterprise/index.mjs +15 -0
- package/dist/src/cli/commands/enterprise/index.mjs.map +1 -0
- package/dist/src/cli/commands/enterprise/install/action.js +253 -0
- package/dist/src/cli/commands/enterprise/install/action.js.map +1 -0
- package/dist/src/cli/commands/enterprise/install/action.mjs +244 -0
- package/dist/src/cli/commands/enterprise/install/action.mjs.map +1 -0
- package/dist/src/cli/commands/enterprise/install/checklist-prompt.js +117 -0
- package/dist/src/cli/commands/enterprise/install/checklist-prompt.js.map +1 -0
- package/dist/src/cli/commands/enterprise/install/checklist-prompt.mjs +110 -0
- package/dist/src/cli/commands/enterprise/install/checklist-prompt.mjs.map +1 -0
- package/dist/src/cli/commands/enterprise/install/constants.js +16 -0
- package/dist/src/cli/commands/enterprise/install/constants.js.map +1 -0
- package/dist/src/cli/commands/enterprise/install/constants.mjs +9 -0
- package/dist/src/cli/commands/enterprise/install/constants.mjs.map +1 -0
- package/dist/src/cli/commands/enterprise/install/directories.js +23 -0
- package/dist/src/cli/commands/enterprise/install/directories.js.map +1 -0
- package/dist/src/cli/commands/enterprise/install/directories.mjs +17 -0
- package/dist/src/cli/commands/enterprise/install/directories.mjs.map +1 -0
- package/dist/src/cli/commands/enterprise/install/discovery.js +109 -0
- package/dist/src/cli/commands/enterprise/install/discovery.js.map +1 -0
- package/dist/src/cli/commands/enterprise/install/discovery.mjs +104 -0
- package/dist/src/cli/commands/enterprise/install/discovery.mjs.map +1 -0
- package/dist/src/cli/commands/enterprise/install/errors.js +26 -0
- package/dist/src/cli/commands/enterprise/install/errors.js.map +1 -0
- package/dist/src/cli/commands/enterprise/install/errors.mjs +22 -0
- package/dist/src/cli/commands/enterprise/install/errors.mjs.map +1 -0
- package/dist/src/cli/commands/enterprise/install/install-packages.js +39 -0
- package/dist/src/cli/commands/enterprise/install/install-packages.js.map +1 -0
- package/dist/src/cli/commands/enterprise/install/install-packages.mjs +32 -0
- package/dist/src/cli/commands/enterprise/install/install-packages.mjs.map +1 -0
- package/dist/src/cli/commands/enterprise/install/license.js +144 -0
- package/dist/src/cli/commands/enterprise/install/license.js.map +1 -0
- package/dist/src/cli/commands/enterprise/install/license.mjs +132 -0
- package/dist/src/cli/commands/enterprise/install/license.mjs.map +1 -0
- package/dist/src/cli/commands/enterprise/install/package-manager.js +72 -0
- package/dist/src/cli/commands/enterprise/install/package-manager.js.map +1 -0
- package/dist/src/cli/commands/enterprise/install/package-manager.mjs +62 -0
- package/dist/src/cli/commands/enterprise/install/package-manager.mjs.map +1 -0
- package/dist/src/cli/commands/enterprise/install/plugin-status.js +47 -0
- package/dist/src/cli/commands/enterprise/install/plugin-status.js.map +1 -0
- package/dist/src/cli/commands/enterprise/install/plugin-status.mjs +45 -0
- package/dist/src/cli/commands/enterprise/install/plugin-status.mjs.map +1 -0
- package/dist/src/cli/commands/enterprise/install/registry-access.js +293 -0
- package/dist/src/cli/commands/enterprise/install/registry-access.js.map +1 -0
- package/dist/src/cli/commands/enterprise/install/registry-access.mjs +277 -0
- package/dist/src/cli/commands/enterprise/install/registry-access.mjs.map +1 -0
- package/dist/src/cli/commands/enterprise/install/registry.js +98 -0
- package/dist/src/cli/commands/enterprise/install/registry.js.map +1 -0
- package/dist/src/cli/commands/enterprise/install/registry.mjs +95 -0
- package/dist/src/cli/commands/enterprise/install/registry.mjs.map +1 -0
- package/dist/src/cli/commands/enterprise/install/selection.js +148 -0
- package/dist/src/cli/commands/enterprise/install/selection.js.map +1 -0
- package/dist/src/cli/commands/enterprise/install/selection.mjs +141 -0
- package/dist/src/cli/commands/enterprise/install/selection.mjs.map +1 -0
- package/dist/src/cli/commands/enterprise/install/setup-links.js +34 -0
- package/dist/src/cli/commands/enterprise/install/setup-links.js.map +1 -0
- package/dist/src/cli/commands/enterprise/install/setup-links.mjs +31 -0
- package/dist/src/cli/commands/enterprise/install/setup-links.mjs.map +1 -0
- package/dist/src/cli/commands/enterprise/install/versions.js +127 -0
- package/dist/src/cli/commands/enterprise/install/versions.js.map +1 -0
- package/dist/src/cli/commands/enterprise/install/versions.mjs +107 -0
- package/dist/src/cli/commands/enterprise/install/versions.mjs.map +1 -0
- package/dist/src/cli/commands/export/action.js +4 -4
- package/dist/src/cli/commands/export/action.js.map +1 -1
- package/dist/src/cli/commands/export/action.mjs +2 -2
- package/dist/src/cli/commands/export/action.mjs.map +1 -1
- package/dist/src/cli/commands/import/action.js +2 -2
- package/dist/src/cli/commands/import/action.js.map +1 -1
- package/dist/src/cli/commands/import/action.mjs +1 -1
- package/dist/src/cli/commands/import/action.mjs.map +1 -1
- package/dist/src/cli/commands/index.js +4 -0
- package/dist/src/cli/commands/index.js.map +1 -1
- package/dist/src/cli/commands/index.mjs +24 -20
- package/dist/src/cli/commands/index.mjs.map +1 -1
- package/dist/src/cli/commands/routes/list.js +2 -2
- package/dist/src/cli/commands/routes/list.js.map +1 -1
- package/dist/src/cli/commands/routes/list.mjs +1 -1
- package/dist/src/cli/commands/routes/list.mjs.map +1 -1
- package/dist/src/cli/commands/transfer/action.js +2 -2
- package/dist/src/cli/commands/transfer/action.js.map +1 -1
- package/dist/src/cli/commands/transfer/action.mjs +1 -1
- package/dist/src/cli/commands/transfer/action.mjs.map +1 -1
- package/dist/src/cli/utils/commander.js +1 -2
- package/dist/src/cli/utils/commander.js.map +1 -1
- package/dist/src/cli/utils/commander.mjs +1 -2
- package/dist/src/cli/utils/commander.mjs.map +1 -1
- package/dist/src/cli/utils/data-transfer.js +2 -2
- package/dist/src/cli/utils/data-transfer.js.map +1 -1
- package/dist/src/cli/utils/data-transfer.mjs +2 -2
- package/dist/src/cli/utils/data-transfer.mjs.map +1 -1
- package/dist/src/cli/utils/helpers.js +6 -6
- package/dist/src/cli/utils/helpers.js.map +1 -1
- package/dist/src/cli/utils/helpers.mjs +4 -4
- package/dist/src/cli/utils/helpers.mjs.map +1 -1
- package/dist/src/node/core/admin-vite-aliases.js +51 -0
- package/dist/src/node/core/admin-vite-aliases.js.map +1 -1
- package/dist/src/node/core/admin-vite-aliases.mjs +46 -1
- package/dist/src/node/core/admin-vite-aliases.mjs.map +1 -1
- package/dist/src/node/core/aliases.js +6 -0
- package/dist/src/node/core/aliases.js.map +1 -1
- package/dist/src/node/core/aliases.mjs +6 -1
- package/dist/src/node/core/aliases.mjs.map +1 -1
- package/dist/src/node/core/scan-roots.js +87 -0
- package/dist/src/node/core/scan-roots.js.map +1 -0
- package/dist/src/node/core/scan-roots.mjs +79 -0
- package/dist/src/node/core/scan-roots.mjs.map +1 -0
- package/dist/src/node/create-build-context.js +40 -1
- package/dist/src/node/create-build-context.js.map +1 -1
- package/dist/src/node/create-build-context.mjs +40 -1
- package/dist/src/node/create-build-context.mjs.map +1 -1
- package/dist/src/node/develop.js +2 -1
- package/dist/src/node/develop.js.map +1 -1
- package/dist/src/node/develop.mjs +2 -1
- package/dist/src/node/develop.mjs.map +1 -1
- package/dist/src/node/staticFiles.js +43 -0
- package/dist/src/node/staticFiles.js.map +1 -1
- package/dist/src/node/staticFiles.mjs +42 -1
- package/dist/src/node/staticFiles.mjs.map +1 -1
- package/dist/src/node/vite/config.js +12 -2
- package/dist/src/node/vite/config.js.map +1 -1
- package/dist/src/node/vite/config.mjs +8 -2
- package/dist/src/node/vite/config.mjs.map +1 -1
- package/dist/src/node/vite/plugins.js +27 -1
- package/dist/src/node/vite/plugins.js.map +1 -1
- package/dist/src/node/vite/plugins.mjs +23 -1
- package/dist/src/node/vite/plugins.mjs.map +1 -1
- package/package.json +31 -26
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fse from 'fs-extra';
|
|
3
|
+
import semver from 'semver';
|
|
4
|
+
import { STRAPI_PACKAGE_NAME } from './constants.mjs';
|
|
5
|
+
import { EnterpriseInstallError } from './errors.mjs';
|
|
6
|
+
import { listAncestorDirectories } from './directories.mjs';
|
|
7
|
+
|
|
8
|
+
const listNodeModulesDirectories = (appDir)=>listAncestorDirectories(appDir).map((directory)=>path.join(directory, 'node_modules'));
|
|
9
|
+
/** Reads the `package.json` of an installed package, found the way Node resolves packages. */ const readInstalledPackageJson = async (appDir, packageName)=>{
|
|
10
|
+
for (const nodeModulesDirectory of listNodeModulesDirectories(appDir)){
|
|
11
|
+
const packageJsonPath = path.join(nodeModulesDirectory, packageName, 'package.json');
|
|
12
|
+
if (await fse.pathExists(packageJsonPath)) {
|
|
13
|
+
return fse.readJson(packageJsonPath).catch(()=>{
|
|
14
|
+
throw new EnterpriseInstallError(`Could not read ${packageJsonPath}. Reinstall the app's dependencies, then try again.`);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return undefined;
|
|
19
|
+
};
|
|
20
|
+
const readInstalledVersion = async (appDir, packageName)=>{
|
|
21
|
+
const { version } = await readInstalledPackageJson(appDir, packageName) ?? {};
|
|
22
|
+
return typeof version === 'string' ? version : undefined;
|
|
23
|
+
};
|
|
24
|
+
const DEPENDENCY_FIELDS = [
|
|
25
|
+
'dependencies',
|
|
26
|
+
'devDependencies',
|
|
27
|
+
'optionalDependencies'
|
|
28
|
+
];
|
|
29
|
+
/** The packages the app's own `package.json` depends on. */ const readAppDependencyNames = async (appDir)=>{
|
|
30
|
+
const packageJson = await fse.readJson(path.join(appDir, 'package.json')).catch(()=>({}));
|
|
31
|
+
return new Set(DEPENDENCY_FIELDS.flatMap((field)=>Object.keys(packageJson?.[field] ?? {})));
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* The installed version of a package the app depends on. Undefined when the app's `package.json`
|
|
35
|
+
* does not list it, even if a parent `node_modules` holds a copy hoisted for another app of the
|
|
36
|
+
* same monorepo: that copy is not the app's, so it is neither up to date nor an upgrade for it.
|
|
37
|
+
*/ const readAppDependencyVersion = async (appDir, packageName)=>(await readAppDependencyNames(appDir)).has(packageName) ? readInstalledVersion(appDir, packageName) : undefined;
|
|
38
|
+
const canCheckStrapiCompatibility = (strapiVersion)=>strapiVersion !== undefined && semver.valid(strapiVersion) !== null && semver.prerelease(strapiVersion) === null;
|
|
39
|
+
const getStrapiRange = (packumentVersion)=>packumentVersion?.peerDependencies?.[STRAPI_PACKAGE_NAME];
|
|
40
|
+
const fitsStrapiVersion = (packumentVersion, strapiVersion)=>{
|
|
41
|
+
const strapiRange = getStrapiRange(packumentVersion);
|
|
42
|
+
return !canCheckStrapiCompatibility(strapiVersion) || strapiRange === undefined || semver.satisfies(strapiVersion, strapiRange);
|
|
43
|
+
};
|
|
44
|
+
const pickTargetVersion = (packument, strapiVersion)=>{
|
|
45
|
+
const latestVersion = packument['dist-tags']?.latest;
|
|
46
|
+
const versionCap = latestVersion !== undefined && semver.valid(latestVersion) && !isPrerelease(latestVersion) ? latestVersion : undefined;
|
|
47
|
+
const stableVersions = Object.values(packument.versions ?? {}).filter((packumentVersion)=>semver.valid(packumentVersion.version) !== null && semver.prerelease(packumentVersion.version) === null && !packumentVersion.deprecated && (versionCap === undefined || semver.lte(packumentVersion.version, versionCap))).sort((left, right)=>semver.rcompare(left.version, right.version));
|
|
48
|
+
const newest = stableVersions[0];
|
|
49
|
+
return {
|
|
50
|
+
targetVersion: stableVersions.find((packumentVersion)=>fitsStrapiVersion(packumentVersion, strapiVersion))?.version,
|
|
51
|
+
newestVersion: newest?.version,
|
|
52
|
+
newestVersionStrapiRange: getStrapiRange(newest)
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
const describeNewerIncompatibleVersion = ({ targetVersion, newestVersion, newestVersionStrapiRange }, installedVersion)=>{
|
|
56
|
+
if (!newestVersion || newestVersion === targetVersion || !newestVersionStrapiRange) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
// Nothing to announce when that version, or a later one, is already installed.
|
|
60
|
+
if (installedVersion && semver.valid(installedVersion) && semver.gte(installedVersion, newestVersion)) {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
return `${newestVersion} is available but requires Strapi ${newestVersionStrapiRange}.`;
|
|
64
|
+
};
|
|
65
|
+
const resolveRequestedVersion = (packument, requestedVersion, strapiVersion)=>{
|
|
66
|
+
const publishedVersions = Object.keys(packument.versions ?? {});
|
|
67
|
+
const taggedVersion = packument['dist-tags']?.[requestedVersion];
|
|
68
|
+
if (publishedVersions.includes(requestedVersion)) {
|
|
69
|
+
return requestedVersion;
|
|
70
|
+
}
|
|
71
|
+
if (taggedVersion !== undefined && publishedVersions.includes(taggedVersion)) {
|
|
72
|
+
return taggedVersion;
|
|
73
|
+
}
|
|
74
|
+
if (!semver.validRange(requestedVersion)) {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
// A range asks for "something in it", not for one version: like the automatic choice, prefer a
|
|
78
|
+
// version that is not deprecated and fits the app's Strapi, and like npm, prefer `latest`.
|
|
79
|
+
const inRange = Object.values(packument.versions ?? {}).filter((packumentVersion)=>semver.valid(packumentVersion.version) !== null && semver.satisfies(packumentVersion.version, requestedVersion));
|
|
80
|
+
const notDeprecated = inRange.filter((packumentVersion)=>!packumentVersion.deprecated);
|
|
81
|
+
const fitting = notDeprecated.filter((packumentVersion)=>fitsStrapiVersion(packumentVersion, strapiVersion));
|
|
82
|
+
const pick = (candidates)=>{
|
|
83
|
+
const versions = candidates.map((packumentVersion)=>packumentVersion.version);
|
|
84
|
+
const latestVersion = packument['dist-tags']?.latest;
|
|
85
|
+
if (latestVersion !== undefined && versions.includes(latestVersion)) {
|
|
86
|
+
return latestVersion;
|
|
87
|
+
}
|
|
88
|
+
return semver.maxSatisfying(versions, requestedVersion) ?? undefined;
|
|
89
|
+
};
|
|
90
|
+
return pick(fitting) ?? pick(notDeprecated) ?? pick(inRange);
|
|
91
|
+
};
|
|
92
|
+
/** The Strapi range a version requires, when the app's Strapi version is known not to fit it. */ const findUnsupportedStrapiRange = (packument, version, strapiVersion)=>{
|
|
93
|
+
const strapiRange = getStrapiRange(packument.versions?.[version]);
|
|
94
|
+
if (!canCheckStrapiCompatibility(strapiVersion) || strapiRange === undefined) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
return semver.satisfies(strapiVersion, strapiRange) ? undefined : strapiRange;
|
|
98
|
+
};
|
|
99
|
+
/** A prerelease, such as an experimental build, is usually ahead of the latest stable release. */ const isPrerelease = (version)=>semver.prerelease(version) !== null;
|
|
100
|
+
/**
|
|
101
|
+
* True when semver lets the target break the installed version: a new major, or a new minor in 0.x,
|
|
102
|
+
* as npm's `^` range reads it.
|
|
103
|
+
*/ const isMajorUpgrade = (installedVersion, targetVersion)=>semver.valid(installedVersion) !== null && !semver.satisfies(targetVersion, `^${installedVersion}`);
|
|
104
|
+
/** True when the target is newer than what is installed. A newer install is never downgraded. */ const isUpgrade = (installedVersion, targetVersion)=>semver.valid(installedVersion) === null || semver.gt(targetVersion, installedVersion);
|
|
105
|
+
|
|
106
|
+
export { canCheckStrapiCompatibility, describeNewerIncompatibleVersion, findUnsupportedStrapiRange, isMajorUpgrade, isPrerelease, isUpgrade, listNodeModulesDirectories, pickTargetVersion, readAppDependencyNames, readAppDependencyVersion, readInstalledPackageJson, readInstalledVersion, resolveRequestedVersion };
|
|
107
|
+
//# sourceMappingURL=versions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versions.mjs","sources":["../../../../../../src/cli/commands/enterprise/install/versions.ts"],"sourcesContent":["import path from 'node:path';\nimport fse from 'fs-extra';\nimport semver from 'semver';\n\nimport { STRAPI_PACKAGE_NAME } from './constants';\nimport { EnterpriseInstallError } from './errors';\nimport { listAncestorDirectories } from './directories';\nimport type { Packument, PackumentVersion, StrapiPackageMetadata } from './registry';\n\nexport interface InstalledPackageJson {\n version?: string;\n homepage?: string;\n strapi?: StrapiPackageMetadata;\n}\n\nexport const listNodeModulesDirectories = (appDir: string): string[] =>\n listAncestorDirectories(appDir).map((directory) => path.join(directory, 'node_modules'));\n\n/** Reads the `package.json` of an installed package, found the way Node resolves packages. */\nexport const readInstalledPackageJson = async (\n appDir: string,\n packageName: string\n): Promise<InstalledPackageJson | undefined> => {\n for (const nodeModulesDirectory of listNodeModulesDirectories(appDir)) {\n const packageJsonPath = path.join(nodeModulesDirectory, packageName, 'package.json');\n\n if (await fse.pathExists(packageJsonPath)) {\n return fse.readJson(packageJsonPath).catch(() => {\n throw new EnterpriseInstallError(\n `Could not read ${packageJsonPath}. Reinstall the app's dependencies, then try again.`\n );\n });\n }\n }\n\n return undefined;\n};\n\nexport const readInstalledVersion = async (\n appDir: string,\n packageName: string\n): Promise<string | undefined> => {\n const { version } = (await readInstalledPackageJson(appDir, packageName)) ?? {};\n\n return typeof version === 'string' ? version : undefined;\n};\n\nconst DEPENDENCY_FIELDS = ['dependencies', 'devDependencies', 'optionalDependencies'] as const;\n\n/** The packages the app's own `package.json` depends on. */\nexport const readAppDependencyNames = async (appDir: string): Promise<Set<string>> => {\n const packageJson = await fse.readJson(path.join(appDir, 'package.json')).catch(() => ({}));\n\n return new Set(DEPENDENCY_FIELDS.flatMap((field) => Object.keys(packageJson?.[field] ?? {})));\n};\n\n/**\n * The installed version of a package the app depends on. Undefined when the app's `package.json`\n * does not list it, even if a parent `node_modules` holds a copy hoisted for another app of the\n * same monorepo: that copy is not the app's, so it is neither up to date nor an upgrade for it.\n */\nexport const readAppDependencyVersion = async (\n appDir: string,\n packageName: string\n): Promise<string | undefined> =>\n (await readAppDependencyNames(appDir)).has(packageName)\n ? readInstalledVersion(appDir, packageName)\n : undefined;\n\nexport const canCheckStrapiCompatibility = (\n strapiVersion: string | undefined\n): strapiVersion is string =>\n strapiVersion !== undefined &&\n semver.valid(strapiVersion) !== null &&\n semver.prerelease(strapiVersion) === null;\n\nexport interface VersionChoice {\n /** The highest stable version that fits the app's Strapi version. */\n targetVersion?: string;\n /** The highest stable version, whether it fits or not. */\n newestVersion?: string;\n /** The Strapi range the newest version requires, when it declares one. */\n newestVersionStrapiRange?: string;\n}\n\nconst getStrapiRange = (packumentVersion: PackumentVersion | undefined) =>\n packumentVersion?.peerDependencies?.[STRAPI_PACKAGE_NAME];\n\nconst fitsStrapiVersion = (\n packumentVersion: PackumentVersion,\n strapiVersion: string | undefined\n) => {\n const strapiRange = getStrapiRange(packumentVersion);\n\n return (\n !canCheckStrapiCompatibility(strapiVersion) ||\n strapiRange === undefined ||\n semver.satisfies(strapiVersion, strapiRange)\n );\n};\n\nexport const pickTargetVersion = (\n packument: Packument,\n strapiVersion: string | undefined\n): VersionChoice => {\n const latestVersion = packument['dist-tags']?.latest;\n const versionCap =\n latestVersion !== undefined && semver.valid(latestVersion) && !isPrerelease(latestVersion)\n ? latestVersion\n : undefined;\n\n const stableVersions = Object.values(packument.versions ?? {})\n .filter(\n (packumentVersion) =>\n semver.valid(packumentVersion.version) !== null &&\n semver.prerelease(packumentVersion.version) === null &&\n !packumentVersion.deprecated &&\n (versionCap === undefined || semver.lte(packumentVersion.version, versionCap))\n )\n .sort((left, right) => semver.rcompare(left.version, right.version));\n\n const newest = stableVersions[0];\n\n return {\n targetVersion: stableVersions.find((packumentVersion) =>\n fitsStrapiVersion(packumentVersion, strapiVersion)\n )?.version,\n newestVersion: newest?.version,\n newestVersionStrapiRange: getStrapiRange(newest),\n };\n};\n\nexport const describeNewerIncompatibleVersion = (\n { targetVersion, newestVersion, newestVersionStrapiRange }: VersionChoice,\n installedVersion?: string\n): string | undefined => {\n if (!newestVersion || newestVersion === targetVersion || !newestVersionStrapiRange) {\n return undefined;\n }\n\n // Nothing to announce when that version, or a later one, is already installed.\n if (\n installedVersion &&\n semver.valid(installedVersion) &&\n semver.gte(installedVersion, newestVersion)\n ) {\n return undefined;\n }\n\n return `${newestVersion} is available but requires Strapi ${newestVersionStrapiRange}.`;\n};\n\nexport const resolveRequestedVersion = (\n packument: Packument,\n requestedVersion: string,\n strapiVersion: string | undefined\n): string | undefined => {\n const publishedVersions = Object.keys(packument.versions ?? {});\n const taggedVersion = packument['dist-tags']?.[requestedVersion];\n\n if (publishedVersions.includes(requestedVersion)) {\n return requestedVersion;\n }\n\n if (taggedVersion !== undefined && publishedVersions.includes(taggedVersion)) {\n return taggedVersion;\n }\n\n if (!semver.validRange(requestedVersion)) {\n return undefined;\n }\n\n // A range asks for \"something in it\", not for one version: like the automatic choice, prefer a\n // version that is not deprecated and fits the app's Strapi, and like npm, prefer `latest`.\n const inRange = Object.values(packument.versions ?? {}).filter(\n (packumentVersion) =>\n semver.valid(packumentVersion.version) !== null &&\n semver.satisfies(packumentVersion.version, requestedVersion)\n );\n const notDeprecated = inRange.filter((packumentVersion) => !packumentVersion.deprecated);\n const fitting = notDeprecated.filter((packumentVersion) =>\n fitsStrapiVersion(packumentVersion, strapiVersion)\n );\n const pick = (candidates: PackumentVersion[]): string | undefined => {\n const versions = candidates.map((packumentVersion) => packumentVersion.version);\n const latestVersion = packument['dist-tags']?.latest;\n\n if (latestVersion !== undefined && versions.includes(latestVersion)) {\n return latestVersion;\n }\n\n return semver.maxSatisfying(versions, requestedVersion) ?? undefined;\n };\n\n return pick(fitting) ?? pick(notDeprecated) ?? pick(inRange);\n};\n\n/** The Strapi range a version requires, when the app's Strapi version is known not to fit it. */\nexport const findUnsupportedStrapiRange = (\n packument: Packument,\n version: string,\n strapiVersion: string | undefined\n): string | undefined => {\n const strapiRange = getStrapiRange(packument.versions?.[version]);\n\n if (!canCheckStrapiCompatibility(strapiVersion) || strapiRange === undefined) {\n return undefined;\n }\n\n return semver.satisfies(strapiVersion, strapiRange) ? undefined : strapiRange;\n};\n\n/** A prerelease, such as an experimental build, is usually ahead of the latest stable release. */\nexport const isPrerelease = (version: string): boolean => semver.prerelease(version) !== null;\n\n/**\n * True when semver lets the target break the installed version: a new major, or a new minor in 0.x,\n * as npm's `^` range reads it.\n */\nexport const isMajorUpgrade = (installedVersion: string, targetVersion: string): boolean =>\n semver.valid(installedVersion) !== null &&\n !semver.satisfies(targetVersion, `^${installedVersion}`);\n\n/** True when the target is newer than what is installed. A newer install is never downgraded. */\nexport const isUpgrade = (installedVersion: string, targetVersion: string): boolean =>\n semver.valid(installedVersion) === null || semver.gt(targetVersion, installedVersion);\n"],"names":["listNodeModulesDirectories","appDir","listAncestorDirectories","map","directory","path","join","readInstalledPackageJson","packageName","nodeModulesDirectory","packageJsonPath","fse","pathExists","readJson","catch","EnterpriseInstallError","undefined","readInstalledVersion","version","DEPENDENCY_FIELDS","readAppDependencyNames","packageJson","Set","flatMap","field","Object","keys","readAppDependencyVersion","has","canCheckStrapiCompatibility","strapiVersion","semver","valid","prerelease","getStrapiRange","packumentVersion","peerDependencies","STRAPI_PACKAGE_NAME","fitsStrapiVersion","strapiRange","satisfies","pickTargetVersion","packument","latestVersion","latest","versionCap","isPrerelease","stableVersions","values","versions","filter","deprecated","lte","sort","left","right","rcompare","newest","targetVersion","find","newestVersion","newestVersionStrapiRange","describeNewerIncompatibleVersion","installedVersion","gte","resolveRequestedVersion","requestedVersion","publishedVersions","taggedVersion","includes","validRange","inRange","notDeprecated","fitting","pick","candidates","maxSatisfying","findUnsupportedStrapiRange","isMajorUpgrade","isUpgrade","gt"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var path = require('path');
|
|
4
|
-
var
|
|
4
|
+
var _ = require('lodash');
|
|
5
5
|
var fse = require('fs-extra');
|
|
6
6
|
var chalk = require('chalk');
|
|
7
7
|
var dataTransfer = require('@strapi/data-transfer');
|
|
@@ -26,7 +26,7 @@ const BYTES_IN_MB = 1024 * 1024;
|
|
|
26
26
|
* @param {ExportCommandOptions} opts
|
|
27
27
|
*/ var action = (async (opts)=>{
|
|
28
28
|
// Validate inputs from Commander
|
|
29
|
-
if (!
|
|
29
|
+
if (!_.isObject(opts)) {
|
|
30
30
|
helpers.exitWith(1, 'Could not parse command arguments');
|
|
31
31
|
}
|
|
32
32
|
validateDirFormat.normalizeExportDirFormatOpts(opts);
|
|
@@ -112,8 +112,8 @@ const BYTES_IN_MB = 1024 * 1024;
|
|
|
112
112
|
* It creates a local file or directory destination provider based on the given options
|
|
113
113
|
*/ const createDestinationProvider = (opts)=>{
|
|
114
114
|
const { file, compress, encrypt, key, maxSizeJsonl, format = 'tar' } = opts;
|
|
115
|
-
const filepath =
|
|
116
|
-
const maxSizeJsonlInMb =
|
|
115
|
+
const filepath = _.isString(file) && file.length > 0 ? file : dataTransfer$1.getDefaultExportName();
|
|
116
|
+
const maxSizeJsonlInMb = Number.isFinite(_.toNumber(maxSizeJsonl)) ? _.toNumber(maxSizeJsonl) * BYTES_IN_MB : undefined;
|
|
117
117
|
if (format === 'dir') {
|
|
118
118
|
const { createLocalDirectoryDestinationProvider } = dataTransfer.directory.providers;
|
|
119
119
|
const dirPath = path__default.default.isAbsolute(filepath) ? filepath : path__default.default.resolve(process.cwd(), filepath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sources":["../../../../../src/cli/commands/export/action.ts"],"sourcesContent":["import path from 'path';\nimport { isObject, isString, isFinite, toNumber } from 'lodash/fp';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\nimport type { Core } from '@strapi/types';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n getDefaultExportName,\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\nimport { normalizeExportDirFormatOpts } from './validate-dir-format';\n\nconst {\n providers: { createLocalFileDestinationProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiSourceProvider },\n} = strapiDataTransfer;\n\nconst BYTES_IN_MB = 1024 * 1024;\n\ninterface CmdOptions {\n file?: string;\n /** @default 'tar' */\n format?: 'tar' | 'dir';\n encrypt?: boolean;\n verbose?: boolean;\n key?: string;\n compress?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n maxSizeJsonl?: number;\n}\n\n/**\n * Export command.\n *\n * It transfers data from a local Strapi instance to a file\n *\n * @param {ExportCommandOptions} opts\n */\nexport default async (opts: CmdOptions) => {\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n normalizeExportDirFormatOpts(opts);\n normalizeTransferFilterOptions(opts);\n\n const strapi = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapi);\n\n const source = createSourceProvider(strapi);\n const destination = createDestinationProvider(opts);\n\n const engine = engineDataTransfer.createTransferEngine(source, destination, {\n versionStrategy: 'ignore', // for an export to file, versionStrategy will always be skipped\n schemaStrategy: 'ignore', // for an export to file, schemaStrategy will always be skipped\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('export', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log(`Starting export...`);\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n let outFile: string;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n outFile = results.destination?.file?.path ?? '';\n if ((opts.format ?? 'tar') === 'dir') {\n const metadataPath = path.join(outFile, 'metadata.json');\n if (!(await fs.pathExists(metadataPath))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export directory was not created correctly \"${outFile}\"`\n );\n }\n } else if (!(await fs.pathExists(outFile))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export file not created \"${outFile}\"`\n );\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n console.log(`Export archive is in ${chalk.green(outFile)}`);\n exitWith(0, exitMessageText('export'));\n } catch {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('export', true));\n }\n};\n\n/**\n * It creates a local strapi destination provider\n */\nconst createSourceProvider = (strapi: Core.Strapi) => {\n return createLocalStrapiSourceProvider({\n async getStrapi() {\n return strapi;\n },\n });\n};\n\n/**\n * It creates a local file or directory destination provider based on the given options\n */\nconst createDestinationProvider = (opts: CmdOptions) => {\n const { file, compress, encrypt, key, maxSizeJsonl, format = 'tar' } = opts;\n\n const filepath = isString(file) && file.length > 0 ? file : getDefaultExportName();\n\n const maxSizeJsonlInMb = isFinite(toNumber(maxSizeJsonl))\n ? toNumber(maxSizeJsonl) * BYTES_IN_MB\n : undefined;\n\n if (format === 'dir') {\n const { createLocalDirectoryDestinationProvider } = directoryDataTransfer.providers;\n const dirPath = path.isAbsolute(filepath) ? filepath : path.resolve(process.cwd(), filepath);\n return createLocalDirectoryDestinationProvider({\n directory: { path: dirPath },\n file: {\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n });\n }\n\n return createLocalFileDestinationProvider({\n file: {\n path: filepath,\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n encryption: {\n enabled: encrypt ?? false,\n key: encrypt ? key : undefined,\n },\n compression: {\n enabled: compress ?? false,\n },\n });\n};\n"],"names":["providers","createLocalFileDestinationProvider","fileDataTransfer","createLocalStrapiSourceProvider","strapiDataTransfer","BYTES_IN_MB","opts","isObject","exitWith","normalizeExportDirFormatOpts","normalizeTransferFilterOptions","strapi","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","source","createSourceProvider","destination","createDestinationProvider","engine","engineDataTransfer","createTransferEngine","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","on","stage","data","start","succeed","console","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","outFile","setSignalHandler","abortTransfer","transfer","file","path","format","metadataPath","join","fs","pathExists","errors","TransferEngineTransferError","table","buildTransferTable","toString","error","chalk","green","exitMessageText","getStrapi","compress","encrypt","key","maxSizeJsonl","filepath","isString","length","getDefaultExportName","maxSizeJsonlInMb","isFinite","toNumber","undefined","createLocalDirectoryDestinationProvider","directoryDataTransfer","dirPath","isAbsolute","resolve","process","cwd","directory","encryption","enabled","compression"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"action.js","sources":["../../../../../src/cli/commands/export/action.ts"],"sourcesContent":["import path from 'path';\nimport { isObject, isString, toNumber } from 'lodash';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\nimport type { Core } from '@strapi/types';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n getDefaultExportName,\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\nimport { normalizeExportDirFormatOpts } from './validate-dir-format';\n\nconst {\n providers: { createLocalFileDestinationProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiSourceProvider },\n} = strapiDataTransfer;\n\nconst BYTES_IN_MB = 1024 * 1024;\n\ninterface CmdOptions {\n file?: string;\n /** @default 'tar' */\n format?: 'tar' | 'dir';\n encrypt?: boolean;\n verbose?: boolean;\n key?: string;\n compress?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n maxSizeJsonl?: number;\n}\n\n/**\n * Export command.\n *\n * It transfers data from a local Strapi instance to a file\n *\n * @param {ExportCommandOptions} opts\n */\nexport default async (opts: CmdOptions) => {\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n normalizeExportDirFormatOpts(opts);\n normalizeTransferFilterOptions(opts);\n\n const strapi = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapi);\n\n const source = createSourceProvider(strapi);\n const destination = createDestinationProvider(opts);\n\n const engine = engineDataTransfer.createTransferEngine(source, destination, {\n versionStrategy: 'ignore', // for an export to file, versionStrategy will always be skipped\n schemaStrategy: 'ignore', // for an export to file, schemaStrategy will always be skipped\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('export', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log(`Starting export...`);\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n let outFile: string;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n outFile = results.destination?.file?.path ?? '';\n if ((opts.format ?? 'tar') === 'dir') {\n const metadataPath = path.join(outFile, 'metadata.json');\n if (!(await fs.pathExists(metadataPath))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export directory was not created correctly \"${outFile}\"`\n );\n }\n } else if (!(await fs.pathExists(outFile))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export file not created \"${outFile}\"`\n );\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n console.log(`Export archive is in ${chalk.green(outFile)}`);\n exitWith(0, exitMessageText('export'));\n } catch {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('export', true));\n }\n};\n\n/**\n * It creates a local strapi destination provider\n */\nconst createSourceProvider = (strapi: Core.Strapi) => {\n return createLocalStrapiSourceProvider({\n async getStrapi() {\n return strapi;\n },\n });\n};\n\n/**\n * It creates a local file or directory destination provider based on the given options\n */\nconst createDestinationProvider = (opts: CmdOptions) => {\n const { file, compress, encrypt, key, maxSizeJsonl, format = 'tar' } = opts;\n\n const filepath = isString(file) && file.length > 0 ? file : getDefaultExportName();\n\n const maxSizeJsonlInMb = Number.isFinite(toNumber(maxSizeJsonl))\n ? toNumber(maxSizeJsonl) * BYTES_IN_MB\n : undefined;\n\n if (format === 'dir') {\n const { createLocalDirectoryDestinationProvider } = directoryDataTransfer.providers;\n const dirPath = path.isAbsolute(filepath) ? filepath : path.resolve(process.cwd(), filepath);\n return createLocalDirectoryDestinationProvider({\n directory: { path: dirPath },\n file: {\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n });\n }\n\n return createLocalFileDestinationProvider({\n file: {\n path: filepath,\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n encryption: {\n enabled: encrypt ?? false,\n key: encrypt ? key : undefined,\n },\n compression: {\n enabled: compress ?? false,\n },\n });\n};\n"],"names":["providers","createLocalFileDestinationProvider","fileDataTransfer","createLocalStrapiSourceProvider","strapiDataTransfer","BYTES_IN_MB","opts","isObject","exitWith","normalizeExportDirFormatOpts","normalizeTransferFilterOptions","strapi","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","source","createSourceProvider","destination","createDestinationProvider","engine","engineDataTransfer","createTransferEngine","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","on","stage","data","start","succeed","console","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","outFile","setSignalHandler","abortTransfer","transfer","file","path","format","metadataPath","join","fs","pathExists","errors","TransferEngineTransferError","table","buildTransferTable","toString","error","chalk","green","exitMessageText","getStrapi","compress","encrypt","key","maxSizeJsonl","filepath","isString","length","getDefaultExportName","maxSizeJsonlInMb","Number","isFinite","toNumber","undefined","createLocalDirectoryDestinationProvider","directoryDataTransfer","dirPath","isAbsolute","resolve","process","cwd","directory","encryption","enabled","compression"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
-
import { isObject, isString,
|
|
2
|
+
import { isObject, isString, toNumber } from 'lodash';
|
|
3
3
|
import fse from 'fs-extra';
|
|
4
4
|
import chalk from 'chalk';
|
|
5
5
|
import { file, strapi, engine, directory } from '@strapi/data-transfer';
|
|
@@ -105,7 +105,7 @@ const BYTES_IN_MB = 1024 * 1024;
|
|
|
105
105
|
*/ const createDestinationProvider = (opts)=>{
|
|
106
106
|
const { file, compress, encrypt, key, maxSizeJsonl, format = 'tar' } = opts;
|
|
107
107
|
const filepath = isString(file) && file.length > 0 ? file : getDefaultExportName();
|
|
108
|
-
const maxSizeJsonlInMb = isFinite(toNumber(maxSizeJsonl)) ? toNumber(maxSizeJsonl) * BYTES_IN_MB : undefined;
|
|
108
|
+
const maxSizeJsonlInMb = Number.isFinite(toNumber(maxSizeJsonl)) ? toNumber(maxSizeJsonl) * BYTES_IN_MB : undefined;
|
|
109
109
|
if (format === 'dir') {
|
|
110
110
|
const { createLocalDirectoryDestinationProvider } = directory.providers;
|
|
111
111
|
const dirPath = path.isAbsolute(filepath) ? filepath : path.resolve(process.cwd(), filepath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.mjs","sources":["../../../../../src/cli/commands/export/action.ts"],"sourcesContent":["import path from 'path';\nimport { isObject, isString, isFinite, toNumber } from 'lodash/fp';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\nimport type { Core } from '@strapi/types';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n getDefaultExportName,\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\nimport { normalizeExportDirFormatOpts } from './validate-dir-format';\n\nconst {\n providers: { createLocalFileDestinationProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiSourceProvider },\n} = strapiDataTransfer;\n\nconst BYTES_IN_MB = 1024 * 1024;\n\ninterface CmdOptions {\n file?: string;\n /** @default 'tar' */\n format?: 'tar' | 'dir';\n encrypt?: boolean;\n verbose?: boolean;\n key?: string;\n compress?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n maxSizeJsonl?: number;\n}\n\n/**\n * Export command.\n *\n * It transfers data from a local Strapi instance to a file\n *\n * @param {ExportCommandOptions} opts\n */\nexport default async (opts: CmdOptions) => {\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n normalizeExportDirFormatOpts(opts);\n normalizeTransferFilterOptions(opts);\n\n const strapi = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapi);\n\n const source = createSourceProvider(strapi);\n const destination = createDestinationProvider(opts);\n\n const engine = engineDataTransfer.createTransferEngine(source, destination, {\n versionStrategy: 'ignore', // for an export to file, versionStrategy will always be skipped\n schemaStrategy: 'ignore', // for an export to file, schemaStrategy will always be skipped\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('export', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log(`Starting export...`);\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n let outFile: string;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n outFile = results.destination?.file?.path ?? '';\n if ((opts.format ?? 'tar') === 'dir') {\n const metadataPath = path.join(outFile, 'metadata.json');\n if (!(await fs.pathExists(metadataPath))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export directory was not created correctly \"${outFile}\"`\n );\n }\n } else if (!(await fs.pathExists(outFile))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export file not created \"${outFile}\"`\n );\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n console.log(`Export archive is in ${chalk.green(outFile)}`);\n exitWith(0, exitMessageText('export'));\n } catch {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('export', true));\n }\n};\n\n/**\n * It creates a local strapi destination provider\n */\nconst createSourceProvider = (strapi: Core.Strapi) => {\n return createLocalStrapiSourceProvider({\n async getStrapi() {\n return strapi;\n },\n });\n};\n\n/**\n * It creates a local file or directory destination provider based on the given options\n */\nconst createDestinationProvider = (opts: CmdOptions) => {\n const { file, compress, encrypt, key, maxSizeJsonl, format = 'tar' } = opts;\n\n const filepath = isString(file) && file.length > 0 ? file : getDefaultExportName();\n\n const maxSizeJsonlInMb = isFinite(toNumber(maxSizeJsonl))\n ? toNumber(maxSizeJsonl) * BYTES_IN_MB\n : undefined;\n\n if (format === 'dir') {\n const { createLocalDirectoryDestinationProvider } = directoryDataTransfer.providers;\n const dirPath = path.isAbsolute(filepath) ? filepath : path.resolve(process.cwd(), filepath);\n return createLocalDirectoryDestinationProvider({\n directory: { path: dirPath },\n file: {\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n });\n }\n\n return createLocalFileDestinationProvider({\n file: {\n path: filepath,\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n encryption: {\n enabled: encrypt ?? false,\n key: encrypt ? key : undefined,\n },\n compression: {\n enabled: compress ?? false,\n },\n });\n};\n"],"names":["providers","createLocalFileDestinationProvider","fileDataTransfer","createLocalStrapiSourceProvider","strapiDataTransfer","BYTES_IN_MB","opts","isObject","exitWith","normalizeExportDirFormatOpts","normalizeTransferFilterOptions","strapi","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","source","createSourceProvider","destination","createDestinationProvider","engine","engineDataTransfer","createTransferEngine","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","on","stage","data","start","succeed","console","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","outFile","setSignalHandler","abortTransfer","transfer","file","path","format","metadataPath","join","fs","pathExists","errors","TransferEngineTransferError","table","buildTransferTable","toString","error","chalk","green","exitMessageText","getStrapi","compress","encrypt","key","maxSizeJsonl","filepath","isString","length","getDefaultExportName","maxSizeJsonlInMb","isFinite","toNumber","undefined","createLocalDirectoryDestinationProvider","directoryDataTransfer","dirPath","isAbsolute","resolve","process","cwd","directory","encryption","enabled","compression"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"action.mjs","sources":["../../../../../src/cli/commands/export/action.ts"],"sourcesContent":["import path from 'path';\nimport { isObject, isString, toNumber } from 'lodash';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\nimport type { Core } from '@strapi/types';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n getDefaultExportName,\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\nimport { normalizeExportDirFormatOpts } from './validate-dir-format';\n\nconst {\n providers: { createLocalFileDestinationProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiSourceProvider },\n} = strapiDataTransfer;\n\nconst BYTES_IN_MB = 1024 * 1024;\n\ninterface CmdOptions {\n file?: string;\n /** @default 'tar' */\n format?: 'tar' | 'dir';\n encrypt?: boolean;\n verbose?: boolean;\n key?: string;\n compress?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n maxSizeJsonl?: number;\n}\n\n/**\n * Export command.\n *\n * It transfers data from a local Strapi instance to a file\n *\n * @param {ExportCommandOptions} opts\n */\nexport default async (opts: CmdOptions) => {\n // Validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse command arguments');\n }\n\n normalizeExportDirFormatOpts(opts);\n normalizeTransferFilterOptions(opts);\n\n const strapi = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapi);\n\n const source = createSourceProvider(strapi);\n const destination = createDestinationProvider(opts);\n\n const engine = engineDataTransfer.createTransferEngine(source, destination, {\n versionStrategy: 'ignore', // for an export to file, versionStrategy will always be skipped\n schemaStrategy: 'ignore', // for an export to file, schemaStrategy will always be skipped\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n });\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('export', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log(`Starting export...`);\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n\n await strapi.telemetry.send('didDEITSProcessStart', getTransferTelemetryPayload(engine));\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n let outFile: string;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi }));\n\n results = await engine.transfer();\n outFile = results.destination?.file?.path ?? '';\n if ((opts.format ?? 'tar') === 'dir') {\n const metadataPath = path.join(outFile, 'metadata.json');\n if (!(await fs.pathExists(metadataPath))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export directory was not created correctly \"${outFile}\"`\n );\n }\n } else if (!(await fs.pathExists(outFile))) {\n throw new engineDataTransfer.errors.TransferEngineTransferError(\n `Export file not created \"${outFile}\"`\n );\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapi.telemetry.send('didDEITSProcessFinish', getTransferTelemetryPayload(engine));\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n console.log(`Export archive is in ${chalk.green(outFile)}`);\n exitWith(0, exitMessageText('export'));\n } catch {\n await strapi.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('export', true));\n }\n};\n\n/**\n * It creates a local strapi destination provider\n */\nconst createSourceProvider = (strapi: Core.Strapi) => {\n return createLocalStrapiSourceProvider({\n async getStrapi() {\n return strapi;\n },\n });\n};\n\n/**\n * It creates a local file or directory destination provider based on the given options\n */\nconst createDestinationProvider = (opts: CmdOptions) => {\n const { file, compress, encrypt, key, maxSizeJsonl, format = 'tar' } = opts;\n\n const filepath = isString(file) && file.length > 0 ? file : getDefaultExportName();\n\n const maxSizeJsonlInMb = Number.isFinite(toNumber(maxSizeJsonl))\n ? toNumber(maxSizeJsonl) * BYTES_IN_MB\n : undefined;\n\n if (format === 'dir') {\n const { createLocalDirectoryDestinationProvider } = directoryDataTransfer.providers;\n const dirPath = path.isAbsolute(filepath) ? filepath : path.resolve(process.cwd(), filepath);\n return createLocalDirectoryDestinationProvider({\n directory: { path: dirPath },\n file: {\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n });\n }\n\n return createLocalFileDestinationProvider({\n file: {\n path: filepath,\n maxSizeJsonl: maxSizeJsonlInMb,\n },\n encryption: {\n enabled: encrypt ?? false,\n key: encrypt ? key : undefined,\n },\n compression: {\n enabled: compress ?? false,\n },\n });\n};\n"],"names":["providers","createLocalFileDestinationProvider","fileDataTransfer","createLocalStrapiSourceProvider","strapiDataTransfer","BYTES_IN_MB","opts","isObject","exitWith","normalizeExportDirFormatOpts","normalizeTransferFilterOptions","strapi","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","source","createSourceProvider","destination","createDestinationProvider","engine","engineDataTransfer","createTransferEngine","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","on","stage","data","start","succeed","console","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","outFile","setSignalHandler","abortTransfer","transfer","file","path","format","metadataPath","join","fs","pathExists","errors","TransferEngineTransferError","table","buildTransferTable","toString","error","chalk","green","exitMessageText","getStrapi","compress","encrypt","key","maxSizeJsonl","filepath","isString","length","getDefaultExportName","maxSizeJsonlInMb","Number","isFinite","toNumber","undefined","createLocalDirectoryDestinationProvider","directoryDataTransfer","dirPath","isAbsolute","resolve","process","cwd","directory","encryption","enabled","compression"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _ = require('lodash');
|
|
4
4
|
var chalk = require('chalk');
|
|
5
5
|
var fse = require('fs-extra');
|
|
6
6
|
var dataTransfer = require('@strapi/data-transfer');
|
|
@@ -21,7 +21,7 @@ const { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY
|
|
|
21
21
|
* It transfers data from a Strapi backup file or unpacked export directory to a local Strapi instance
|
|
22
22
|
*/ var action = (async (opts)=>{
|
|
23
23
|
// validate inputs from Commander
|
|
24
|
-
if (!
|
|
24
|
+
if (!_.isObject(opts)) {
|
|
25
25
|
helpers.exitWith(1, 'Could not parse arguments');
|
|
26
26
|
}
|
|
27
27
|
dataTransfer$1.normalizeTransferFilterOptions(opts);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sources":["../../../../../src/cli/commands/import/action.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { isObject } from 'lodash/fp';\nimport chalk from 'chalk';\n\nimport fs from 'fs-extra';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n parseRestoreFromOptions,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst {\n providers: { createLocalFileSourceProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiDestinationProvider, DEFAULT_CONFLICT_STRATEGY },\n} = strapiDataTransfer;\n\nconst { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY } =\n engineDataTransfer;\n\ninterface CmdOptions {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n verbose?: boolean;\n key?: string;\n conflictStrategy?: 'restore';\n force?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n}\n\ntype EngineOptions = Parameters<typeof createTransferEngine>[2];\n\n/**\n * Import command.\n *\n * It transfers data from a Strapi backup file or unpacked export directory to a local Strapi instance\n */\nexport default async (opts: CmdOptions) => {\n // validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse arguments');\n }\n\n normalizeTransferFilterOptions(opts);\n\n const backupPath = opts.file ?? '';\n const source = (await fs.stat(backupPath)).isDirectory()\n ? directoryDataTransfer.providers.createLocalDirectorySourceProvider({\n directory: { path: backupPath },\n })\n : createLocalFileSourceProvider(getLocalFileSourceOptions(opts));\n\n /**\n * To local Strapi instance\n */\n const strapiInstance = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapiInstance);\n\n /**\n * Configure and run the transfer engine\n */\n const engineOptions: EngineOptions = {\n versionStrategy: DEFAULT_VERSION_STRATEGY,\n schemaStrategy: DEFAULT_SCHEMA_STRATEGY,\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n };\n\n const destinationOptions = {\n async getStrapi() {\n return strapiInstance;\n },\n autoDestroy: false,\n strategy: opts.conflictStrategy || DEFAULT_CONFLICT_STRATEGY,\n restore: parseRestoreFromOptions(opts, strapiInstance),\n };\n\n const destination = createLocalStrapiDestinationProvider(destinationOptions);\n destination.onWarning = (message) => console.warn(`\\n${chalk.yellow('warn')}: ${message}`);\n\n const engine = createTransferEngine(source, destination, engineOptions);\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('import', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'import' }));\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log('Starting import...');\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n await strapiInstance.telemetry.send(\n 'didDEITSProcessStart',\n getTransferTelemetryPayload(engine)\n );\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n results = await engine.transfer();\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapiInstance.telemetry.send(\n 'didDEITSProcessFinish',\n getTransferTelemetryPayload(engine)\n );\n await strapiInstance.destroy();\n\n exitWith(0, exitMessageText('import'));\n } catch {\n await strapiInstance.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('import', true));\n }\n};\n\n/**\n * Infer local file source provider options based on a given filename\n */\nconst getLocalFileSourceOptions = (opts: {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n key?: string;\n}) => {\n const options: fileDataTransfer.providers.ILocalFileSourceProviderOptions = {\n file: { path: opts.file ?? '' },\n compression: { enabled: !!opts.decompress },\n encryption: { enabled: !!opts.decrypt, key: opts.key },\n };\n\n return options;\n};\n"],"names":["providers","createLocalFileSourceProvider","fileDataTransfer","createLocalStrapiDestinationProvider","DEFAULT_CONFLICT_STRATEGY","strapiDataTransfer","createTransferEngine","DEFAULT_VERSION_STRATEGY","DEFAULT_SCHEMA_STRATEGY","engineDataTransfer","opts","isObject","exitWith","normalizeTransferFilterOptions","backupPath","file","source","fs","stat","isDirectory","directoryDataTransfer","createLocalDirectorySourceProvider","directory","path","getLocalFileSourceOptions","strapiInstance","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","engineOptions","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","destinationOptions","getStrapi","autoDestroy","strategy","conflictStrategy","restore","parseRestoreFromOptions","destination","onWarning","message","console","warn","chalk","yellow","engine","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","onSchemaDiff","getDiffHandler","force","action","on","stage","data","start","succeed","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","setSignalHandler","abortTransfer","strapi","transfer","table","buildTransferTable","toString","error","destroy","exitMessageText","options","compression","enabled","decompress","encryption","decrypt","key"],"mappings":";;;;;;;;;;;;;;AA+BA,MAAM,EACJA,SAAAA,EAAW,EAAEC,6BAA6B,EAAE,EAC7C,GAAGC,iBAAAA;AAEJ,MAAM,EACJF,WAAW,EAAEG,oCAAoC,EAAEC,yBAAyB,EAAE,EAC/E,GAAGC,mBAAAA;AAEJ,MAAM,EAAEC,oBAAoB,EAAEC,wBAAwB,EAAEC,uBAAuB,EAAE,GAC/EC,mBAAAA;AAoBF;;;;IAKA,aAAe,CAAA,OAAOC,IAAAA,GAAAA;;IAEpB,IAAI,CAACC,YAASD,IAAAA,CAAAA,EAAO;AACnBE,QAAAA,gBAAAA,CAAS,CAAA,EAAG,2BAAA,CAAA;AACd,IAAA;IAEAC,6CAAAA,CAA+BH,IAAAA,CAAAA;IAE/B,MAAMI,UAAAA,GAAaJ,IAAAA,CAAKK,IAAI,IAAI,EAAA;AAChC,IAAA,MAAMC,MAAAA,GAAU,CAAA,MAAMC,qBAAGC,IAAI,CAACJ,UAAAA,CAAU,EAAGK,WAAW,EAAA,GAClDC,sBAAAA,CAAsBpB,SAAS,CAACqB,kCAAkC,CAAC;QACjEC,SAAAA,EAAW;YAAEC,IAAAA,EAAMT;AAAW;AAChC,KAAA,CAAA,GACAb,8BAA8BuB,yBAAAA,CAA0Bd,IAAAA,CAAAA,CAAAA;AAE5D;;MAGA,MAAMe,iBAAiB,MAAMC,mCAAAA,EAAAA;AAC7BC,IAAAA,0DAAAA,CAA4CjB,IAAAA,EAAMe,cAAAA,CAAAA;AAElD;;AAEC,MACD,MAAMG,aAAAA,GAA+B;QACnCC,eAAAA,EAAiBtB,wBAAAA;QACjBuB,cAAAA,EAAgBtB,uBAAAA;AAChBuB,QAAAA,OAAAA,EAASrB,KAAKqB,OAAO;AACrBC,QAAAA,IAAAA,EAAMtB,KAAKsB,IAAI;AACfC,QAAAA,QAAAA,EAAUvB,KAAKuB,QAAQ;AACvBC,QAAAA,UAAAA,EAAYC,sCAAAA,CAAwBzB,IAAAA;AACtC,KAAA;AAEA,IAAA,MAAM0B,kBAAAA,GAAqB;QACzB,MAAMC,SAAAA,CAAAA,GAAAA;YACJ,OAAOZ,cAAAA;AACT,QAAA,CAAA;QACAa,WAAAA,EAAa,KAAA;QACbC,QAAAA,EAAU7B,IAAAA,CAAK8B,gBAAgB,IAAIpC,yBAAAA;AACnCqC,QAAAA,OAAAA,EAASC,uCAAwBhC,IAAAA,EAAMe,cAAAA;AACzC,KAAA;AAEA,IAAA,MAAMkB,cAAcxC,oCAAAA,CAAqCiC,kBAAAA,CAAAA;AACzDO,IAAAA,WAAAA,CAAYC,SAAS,GAAG,CAACC,OAAAA,GAAYC,OAAAA,CAAQC,IAAI,CAAC,CAAC,EAAE,EAAEC,uBAAMC,MAAM,CAAC,MAAA,CAAA,CAAQ,EAAE,EAAEJ,OAAAA,CAAAA,CAAS,CAAA;IAEzF,MAAMK,MAAAA,GAAS5C,oBAAAA,CAAqBU,MAAAA,EAAQ2B,WAAAA,EAAaf,aAAAA,CAAAA;AAEzDsB,IAAAA,MAAAA,CAAOC,WAAW,CAACC,YAAY,CAACC,+BAAAA,CAAiB,QAAA,EAAU3C,KAAK4C,OAAO,CAAA,CAAA;AAEvE,IAAA,MAAMC,QAAAA,GAAWL,MAAAA,CAAOK,QAAQ,CAACC,MAAM;IAEvC,MAAM,EAAEC,YAAY,EAAE,GAAGC,6BAAAA,EAAAA;IAEzBR,MAAAA,CAAOS,YAAY,CAACC,6BAAAA,CAAeV,MAAAA,EAAQ;AAAEW,QAAAA,KAAAA,EAAOnD,KAAKmD,KAAK;QAAEC,MAAAA,EAAQ;AAAS,KAAA,CAAA,CAAA;IAEjFP,QAAAA,CAASQ,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,EAAEC,KAAK,EAAEC,IAAI,EAAE,GAAA;QAC1CR,YAAAA,CAAaO,KAAAA,EAAOC,MAAMC,KAAK,EAAA;AACjC,IAAA,CAAA,CAAA;IAEAX,QAAAA,CAASQ,EAAE,CAAC,eAAA,EAAiB,CAAC,EAAEC,KAAK,EAAEC,IAAI,EAAE,GAAA;QAC3CR,YAAAA,CAAaO,KAAAA,EAAOC,MAAME,OAAO,EAAA;AACnC,IAAA,CAAA,CAAA;IAEAZ,QAAAA,CAASQ,EAAE,CAAC,iBAAA,EAAmB,CAAC,EAAEC,KAAK,EAAEC,IAAI,EAAE,GAAA;AAC7CR,QAAAA,YAAAA,CAAaO,KAAAA,EAAOC,IAAAA,CAAAA;AACtB,IAAA,CAAA,CAAA;IAEAV,QAAAA,CAASQ,EAAE,CAAC,iBAAA,EAAmB,UAAA;AAC7BjB,QAAAA,OAAAA,CAAQsB,GAAG,CAAC,oBAAA,CAAA;QACZC,uCAAAA,CAAyB;AACvBtC,YAAAA,OAAAA,EAASrB,KAAKqB,OAAO;AACrBC,YAAAA,IAAAA,EAAMtB,KAAKsB,IAAI;AACfsC,YAAAA,mBAAAA,EAAqB5D,KAAK4D,mBAAmB;AAC7CC,YAAAA,gBAAAA,EAAkB7D,KAAK6D,gBAAgB;AACvCC,YAAAA,iBAAAA,EAAmB9D,KAAK8D;AAC1B,SAAA,CAAA;AACA,QAAA,MAAM/C,eAAegD,SAAS,CAACC,IAAI,CACjC,wBACAC,0CAAAA,CAA4BzB,MAAAA,CAAAA,CAAAA;AAEhC,IAAA,CAAA,CAAA;IAEA,IAAI0B,OAAAA;IACJ,IAAI;;AAEFC,QAAAA,+BAAAA,CAAiB,IAAMC,4BAAAA,CAAc;AAAE5B,gBAAAA,MAAAA;gBAAQ6B,MAAAA,EAAQA;AAAsB,aAAA,CAAA,CAAA;QAE7EH,OAAAA,GAAU,MAAM1B,OAAO8B,QAAQ,EAAA;QAE/B,IAAI;YACF,MAAMC,KAAAA,GAAQC,iCAAAA,CAAmBN,OAAAA,CAAQ1B,MAAM,CAAA;YAC/CJ,OAAAA,CAAQsB,GAAG,CAACa,KAAAA,EAAOE,QAAAA,EAAAA,CAAAA;AACrB,QAAA,CAAA,CAAE,OAAM;AACNrC,YAAAA,OAAAA,CAAQsC,KAAK,CAAC,4DAAA,CAAA;AAChB,QAAA;;AAGA,QAAA,MAAM3D,eAAegD,SAAS,CAACC,IAAI,CACjC,yBACAC,0CAAAA,CAA4BzB,MAAAA,CAAAA,CAAAA;AAE9B,QAAA,MAAMzB,eAAe4D,OAAO,EAAA;AAE5BzE,QAAAA,gBAAAA,CAAS,GAAG0E,8BAAAA,CAAgB,QAAA,CAAA,CAAA;AAC9B,IAAA,CAAA,CAAE,OAAM;AACN,QAAA,MAAM7D,eAAegD,SAAS,CAACC,IAAI,CAAC,uBAAuBC,0CAAAA,CAA4BzB,MAAAA,CAAAA,CAAAA;QACvFtC,gBAAAA,CAAS,CAAA,EAAG0E,+BAAgB,QAAA,EAAU,IAAA,CAAA,CAAA;AACxC,IAAA;AACF,CAAA;AAEA;;IAGA,MAAM9D,4BAA4B,CAACd,IAAAA,GAAAA;AAMjC,IAAA,MAAM6E,OAAAA,GAAsE;QAC1ExE,IAAAA,EAAM;YAAEQ,IAAAA,EAAMb,IAAAA,CAAKK,IAAI,IAAI;AAAG,SAAA;QAC9ByE,WAAAA,EAAa;YAAEC,OAAAA,EAAS,CAAC,CAAC/E,IAAAA,CAAKgF;AAAW,SAAA;QAC1CC,UAAAA,EAAY;YAAEF,OAAAA,EAAS,CAAC,CAAC/E,IAAAA,CAAKkF,OAAO;AAAEC,YAAAA,GAAAA,EAAKnF,KAAKmF;AAAI;AACvD,KAAA;IAEA,OAAON,OAAAA;AACT,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"action.js","sources":["../../../../../src/cli/commands/import/action.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { isObject } from 'lodash';\nimport chalk from 'chalk';\n\nimport fs from 'fs-extra';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n parseRestoreFromOptions,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst {\n providers: { createLocalFileSourceProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiDestinationProvider, DEFAULT_CONFLICT_STRATEGY },\n} = strapiDataTransfer;\n\nconst { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY } =\n engineDataTransfer;\n\ninterface CmdOptions {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n verbose?: boolean;\n key?: string;\n conflictStrategy?: 'restore';\n force?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n}\n\ntype EngineOptions = Parameters<typeof createTransferEngine>[2];\n\n/**\n * Import command.\n *\n * It transfers data from a Strapi backup file or unpacked export directory to a local Strapi instance\n */\nexport default async (opts: CmdOptions) => {\n // validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse arguments');\n }\n\n normalizeTransferFilterOptions(opts);\n\n const backupPath = opts.file ?? '';\n const source = (await fs.stat(backupPath)).isDirectory()\n ? directoryDataTransfer.providers.createLocalDirectorySourceProvider({\n directory: { path: backupPath },\n })\n : createLocalFileSourceProvider(getLocalFileSourceOptions(opts));\n\n /**\n * To local Strapi instance\n */\n const strapiInstance = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapiInstance);\n\n /**\n * Configure and run the transfer engine\n */\n const engineOptions: EngineOptions = {\n versionStrategy: DEFAULT_VERSION_STRATEGY,\n schemaStrategy: DEFAULT_SCHEMA_STRATEGY,\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n };\n\n const destinationOptions = {\n async getStrapi() {\n return strapiInstance;\n },\n autoDestroy: false,\n strategy: opts.conflictStrategy || DEFAULT_CONFLICT_STRATEGY,\n restore: parseRestoreFromOptions(opts, strapiInstance),\n };\n\n const destination = createLocalStrapiDestinationProvider(destinationOptions);\n destination.onWarning = (message) => console.warn(`\\n${chalk.yellow('warn')}: ${message}`);\n\n const engine = createTransferEngine(source, destination, engineOptions);\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('import', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'import' }));\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log('Starting import...');\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n await strapiInstance.telemetry.send(\n 'didDEITSProcessStart',\n getTransferTelemetryPayload(engine)\n );\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n results = await engine.transfer();\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapiInstance.telemetry.send(\n 'didDEITSProcessFinish',\n getTransferTelemetryPayload(engine)\n );\n await strapiInstance.destroy();\n\n exitWith(0, exitMessageText('import'));\n } catch {\n await strapiInstance.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('import', true));\n }\n};\n\n/**\n * Infer local file source provider options based on a given filename\n */\nconst getLocalFileSourceOptions = (opts: {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n key?: string;\n}) => {\n const options: fileDataTransfer.providers.ILocalFileSourceProviderOptions = {\n file: { path: opts.file ?? '' },\n compression: { enabled: !!opts.decompress },\n encryption: { enabled: !!opts.decrypt, key: opts.key },\n };\n\n return options;\n};\n"],"names":["providers","createLocalFileSourceProvider","fileDataTransfer","createLocalStrapiDestinationProvider","DEFAULT_CONFLICT_STRATEGY","strapiDataTransfer","createTransferEngine","DEFAULT_VERSION_STRATEGY","DEFAULT_SCHEMA_STRATEGY","engineDataTransfer","opts","isObject","exitWith","normalizeTransferFilterOptions","backupPath","file","source","fs","stat","isDirectory","directoryDataTransfer","createLocalDirectorySourceProvider","directory","path","getLocalFileSourceOptions","strapiInstance","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","engineOptions","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","destinationOptions","getStrapi","autoDestroy","strategy","conflictStrategy","restore","parseRestoreFromOptions","destination","onWarning","message","console","warn","chalk","yellow","engine","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","onSchemaDiff","getDiffHandler","force","action","on","stage","data","start","succeed","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","setSignalHandler","abortTransfer","strapi","transfer","table","buildTransferTable","toString","error","destroy","exitMessageText","options","compression","enabled","decompress","encryption","decrypt","key"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.mjs","sources":["../../../../../src/cli/commands/import/action.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { isObject } from 'lodash/fp';\nimport chalk from 'chalk';\n\nimport fs from 'fs-extra';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n parseRestoreFromOptions,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst {\n providers: { createLocalFileSourceProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiDestinationProvider, DEFAULT_CONFLICT_STRATEGY },\n} = strapiDataTransfer;\n\nconst { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY } =\n engineDataTransfer;\n\ninterface CmdOptions {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n verbose?: boolean;\n key?: string;\n conflictStrategy?: 'restore';\n force?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n}\n\ntype EngineOptions = Parameters<typeof createTransferEngine>[2];\n\n/**\n * Import command.\n *\n * It transfers data from a Strapi backup file or unpacked export directory to a local Strapi instance\n */\nexport default async (opts: CmdOptions) => {\n // validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse arguments');\n }\n\n normalizeTransferFilterOptions(opts);\n\n const backupPath = opts.file ?? '';\n const source = (await fs.stat(backupPath)).isDirectory()\n ? directoryDataTransfer.providers.createLocalDirectorySourceProvider({\n directory: { path: backupPath },\n })\n : createLocalFileSourceProvider(getLocalFileSourceOptions(opts));\n\n /**\n * To local Strapi instance\n */\n const strapiInstance = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapiInstance);\n\n /**\n * Configure and run the transfer engine\n */\n const engineOptions: EngineOptions = {\n versionStrategy: DEFAULT_VERSION_STRATEGY,\n schemaStrategy: DEFAULT_SCHEMA_STRATEGY,\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n };\n\n const destinationOptions = {\n async getStrapi() {\n return strapiInstance;\n },\n autoDestroy: false,\n strategy: opts.conflictStrategy || DEFAULT_CONFLICT_STRATEGY,\n restore: parseRestoreFromOptions(opts, strapiInstance),\n };\n\n const destination = createLocalStrapiDestinationProvider(destinationOptions);\n destination.onWarning = (message) => console.warn(`\\n${chalk.yellow('warn')}: ${message}`);\n\n const engine = createTransferEngine(source, destination, engineOptions);\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('import', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'import' }));\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log('Starting import...');\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n await strapiInstance.telemetry.send(\n 'didDEITSProcessStart',\n getTransferTelemetryPayload(engine)\n );\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n results = await engine.transfer();\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapiInstance.telemetry.send(\n 'didDEITSProcessFinish',\n getTransferTelemetryPayload(engine)\n );\n await strapiInstance.destroy();\n\n exitWith(0, exitMessageText('import'));\n } catch {\n await strapiInstance.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('import', true));\n }\n};\n\n/**\n * Infer local file source provider options based on a given filename\n */\nconst getLocalFileSourceOptions = (opts: {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n key?: string;\n}) => {\n const options: fileDataTransfer.providers.ILocalFileSourceProviderOptions = {\n file: { path: opts.file ?? '' },\n compression: { enabled: !!opts.decompress },\n encryption: { enabled: !!opts.decrypt, key: opts.key },\n };\n\n return options;\n};\n"],"names":["providers","createLocalFileSourceProvider","fileDataTransfer","createLocalStrapiDestinationProvider","DEFAULT_CONFLICT_STRATEGY","strapiDataTransfer","createTransferEngine","DEFAULT_VERSION_STRATEGY","DEFAULT_SCHEMA_STRATEGY","engineDataTransfer","opts","isObject","exitWith","normalizeTransferFilterOptions","backupPath","file","source","fs","stat","isDirectory","directoryDataTransfer","createLocalDirectorySourceProvider","directory","path","getLocalFileSourceOptions","strapiInstance","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","engineOptions","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","destinationOptions","getStrapi","autoDestroy","strategy","conflictStrategy","restore","parseRestoreFromOptions","destination","onWarning","message","console","warn","chalk","yellow","engine","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","onSchemaDiff","getDiffHandler","force","action","on","stage","data","start","succeed","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","setSignalHandler","abortTransfer","strapi","transfer","table","buildTransferTable","toString","error","destroy","exitMessageText","options","compression","enabled","decompress","encryption","decrypt","key"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"action.mjs","sources":["../../../../../src/cli/commands/import/action.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { isObject } from 'lodash';\nimport chalk from 'chalk';\n\nimport fs from 'fs-extra';\n\nimport {\n engine as engineDataTransfer,\n strapi as strapiDataTransfer,\n file as fileDataTransfer,\n directory as directoryDataTransfer,\n} from '@strapi/data-transfer';\n\nimport {\n buildTransferTable,\n createStrapiInstance,\n formatDiagnostic,\n loadersFactory,\n exitMessageText,\n abortTransfer,\n getTransferTelemetryPayload,\n setSignalHandler,\n getDiffHandler,\n parseRestoreFromOptions,\n buildTransferTransforms,\n normalizeTransferFilterOptions,\n validateContentTypeTransferOptionsForStrapi,\n logTransferFilterSummary,\n} from '../../utils/data-transfer';\nimport { exitWith } from '../../utils/helpers';\n\nconst {\n providers: { createLocalFileSourceProvider },\n} = fileDataTransfer;\n\nconst {\n providers: { createLocalStrapiDestinationProvider, DEFAULT_CONFLICT_STRATEGY },\n} = strapiDataTransfer;\n\nconst { createTransferEngine, DEFAULT_VERSION_STRATEGY, DEFAULT_SCHEMA_STRATEGY } =\n engineDataTransfer;\n\ninterface CmdOptions {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n verbose?: boolean;\n key?: string;\n conflictStrategy?: 'restore';\n force?: boolean;\n only?: (keyof engineDataTransfer.TransferGroupFilter)[];\n exclude?: (keyof engineDataTransfer.TransferGroupFilter)[];\n excludeContentTypes?: string[];\n onlyContentTypes?: string[];\n filesAutoExcluded?: boolean;\n throttle?: number;\n}\n\ntype EngineOptions = Parameters<typeof createTransferEngine>[2];\n\n/**\n * Import command.\n *\n * It transfers data from a Strapi backup file or unpacked export directory to a local Strapi instance\n */\nexport default async (opts: CmdOptions) => {\n // validate inputs from Commander\n if (!isObject(opts)) {\n exitWith(1, 'Could not parse arguments');\n }\n\n normalizeTransferFilterOptions(opts);\n\n const backupPath = opts.file ?? '';\n const source = (await fs.stat(backupPath)).isDirectory()\n ? directoryDataTransfer.providers.createLocalDirectorySourceProvider({\n directory: { path: backupPath },\n })\n : createLocalFileSourceProvider(getLocalFileSourceOptions(opts));\n\n /**\n * To local Strapi instance\n */\n const strapiInstance = await createStrapiInstance();\n validateContentTypeTransferOptionsForStrapi(opts, strapiInstance);\n\n /**\n * Configure and run the transfer engine\n */\n const engineOptions: EngineOptions = {\n versionStrategy: DEFAULT_VERSION_STRATEGY,\n schemaStrategy: DEFAULT_SCHEMA_STRATEGY,\n exclude: opts.exclude,\n only: opts.only,\n throttle: opts.throttle,\n transforms: buildTransferTransforms(opts),\n };\n\n const destinationOptions = {\n async getStrapi() {\n return strapiInstance;\n },\n autoDestroy: false,\n strategy: opts.conflictStrategy || DEFAULT_CONFLICT_STRATEGY,\n restore: parseRestoreFromOptions(opts, strapiInstance),\n };\n\n const destination = createLocalStrapiDestinationProvider(destinationOptions);\n destination.onWarning = (message) => console.warn(`\\n${chalk.yellow('warn')}: ${message}`);\n\n const engine = createTransferEngine(source, destination, engineOptions);\n\n engine.diagnostics.onDiagnostic(formatDiagnostic('import', opts.verbose));\n\n const progress = engine.progress.stream;\n\n const { updateLoader } = loadersFactory();\n\n engine.onSchemaDiff(getDiffHandler(engine, { force: opts.force, action: 'import' }));\n\n progress.on(`stage::start`, ({ stage, data }) => {\n updateLoader(stage, data).start();\n });\n\n progress.on('stage::finish', ({ stage, data }) => {\n updateLoader(stage, data).succeed();\n });\n\n progress.on('stage::progress', ({ stage, data }) => {\n updateLoader(stage, data);\n });\n\n progress.on('transfer::start', async () => {\n console.log('Starting import...');\n logTransferFilterSummary({\n exclude: opts.exclude,\n only: opts.only,\n excludeContentTypes: opts.excludeContentTypes,\n onlyContentTypes: opts.onlyContentTypes,\n filesAutoExcluded: opts.filesAutoExcluded,\n });\n await strapiInstance.telemetry.send(\n 'didDEITSProcessStart',\n getTransferTelemetryPayload(engine)\n );\n });\n\n let results: engineDataTransfer.ITransferResults<typeof source, typeof destination>;\n try {\n // Abort transfer if user interrupts process\n setSignalHandler(() => abortTransfer({ engine, strapi: strapi as Core.Strapi }));\n\n results = await engine.transfer();\n\n try {\n const table = buildTransferTable(results.engine);\n console.log(table?.toString());\n } catch {\n console.error('There was an error displaying the results of the transfer.');\n }\n\n // Note: we need to await telemetry or else the process ends before it is sent\n await strapiInstance.telemetry.send(\n 'didDEITSProcessFinish',\n getTransferTelemetryPayload(engine)\n );\n await strapiInstance.destroy();\n\n exitWith(0, exitMessageText('import'));\n } catch {\n await strapiInstance.telemetry.send('didDEITSProcessFail', getTransferTelemetryPayload(engine));\n exitWith(1, exitMessageText('import', true));\n }\n};\n\n/**\n * Infer local file source provider options based on a given filename\n */\nconst getLocalFileSourceOptions = (opts: {\n file?: string;\n decompress?: boolean;\n decrypt?: boolean;\n key?: string;\n}) => {\n const options: fileDataTransfer.providers.ILocalFileSourceProviderOptions = {\n file: { path: opts.file ?? '' },\n compression: { enabled: !!opts.decompress },\n encryption: { enabled: !!opts.decrypt, key: opts.key },\n };\n\n return options;\n};\n"],"names":["providers","createLocalFileSourceProvider","fileDataTransfer","createLocalStrapiDestinationProvider","DEFAULT_CONFLICT_STRATEGY","strapiDataTransfer","createTransferEngine","DEFAULT_VERSION_STRATEGY","DEFAULT_SCHEMA_STRATEGY","engineDataTransfer","opts","isObject","exitWith","normalizeTransferFilterOptions","backupPath","file","source","fs","stat","isDirectory","directoryDataTransfer","createLocalDirectorySourceProvider","directory","path","getLocalFileSourceOptions","strapiInstance","createStrapiInstance","validateContentTypeTransferOptionsForStrapi","engineOptions","versionStrategy","schemaStrategy","exclude","only","throttle","transforms","buildTransferTransforms","destinationOptions","getStrapi","autoDestroy","strategy","conflictStrategy","restore","parseRestoreFromOptions","destination","onWarning","message","console","warn","chalk","yellow","engine","diagnostics","onDiagnostic","formatDiagnostic","verbose","progress","stream","updateLoader","loadersFactory","onSchemaDiff","getDiffHandler","force","action","on","stage","data","start","succeed","log","logTransferFilterSummary","excludeContentTypes","onlyContentTypes","filesAutoExcluded","telemetry","send","getTransferTelemetryPayload","results","setSignalHandler","abortTransfer","strapi","transfer","table","buildTransferTable","toString","error","destroy","exitMessageText","options","compression","enabled","decompress","encryption","decrypt","key"],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ var list = require('./components/list.js');
|
|
|
11
11
|
var dump = require('./configuration/dump.js');
|
|
12
12
|
var restore = require('./configuration/restore.js');
|
|
13
13
|
var list$1 = require('./content-types/list.js');
|
|
14
|
+
var renameField = require('./content-types/rename-field.js');
|
|
14
15
|
var list$2 = require('./controllers/list.js');
|
|
15
16
|
var list$3 = require('./hooks/list.js');
|
|
16
17
|
var list$4 = require('./middlewares/list.js');
|
|
@@ -29,6 +30,7 @@ var report = require('./report.js');
|
|
|
29
30
|
var start = require('./start.js');
|
|
30
31
|
var version = require('./version.js');
|
|
31
32
|
var index = require('./openapi/index.js');
|
|
33
|
+
var index$1 = require('./enterprise/index.js');
|
|
32
34
|
var command = require('./export/command.js');
|
|
33
35
|
var command$1 = require('./import/command.js');
|
|
34
36
|
var command$2 = require('./transfer/command.js');
|
|
@@ -45,6 +47,7 @@ const commands = [
|
|
|
45
47
|
restore.command,
|
|
46
48
|
console.command,
|
|
47
49
|
list$1.command,
|
|
50
|
+
renameField.command,
|
|
48
51
|
list$2.command,
|
|
49
52
|
generate.command,
|
|
50
53
|
list$3.command,
|
|
@@ -65,6 +68,7 @@ const commands = [
|
|
|
65
68
|
command$1,
|
|
66
69
|
command$2,
|
|
67
70
|
index.command,
|
|
71
|
+
index$1.command,
|
|
68
72
|
/**
|
|
69
73
|
* Cloud
|
|
70
74
|
*/ cloudCli.buildStrapiCloudCommands
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/cli/commands/index.ts"],"sourcesContent":["import { buildStrapiCloudCommands as cloudCommands } from '@strapi/cloud-cli';\n\nimport { command as createAdminUser } from './admin/create-user';\nimport { command as deleteAdminUser } from './admin/delete-user';\nimport { command as activeAdminUser } from './admin/active-user';\nimport { command as blockAdminUser } from './admin/block-user';\nimport { command as listAdminUsers } from './admin/list-users';\nimport { command as resetAdminUserPassword } from './admin/reset-user-password';\nimport { command as listComponents } from './components/list';\nimport { command as configurationDump } from './configuration/dump';\nimport { command as configurationRestore } from './configuration/restore';\nimport { command as listContentTypes } from './content-types/list';\nimport { command as listControllers } from './controllers/list';\nimport { command as listHooks } from './hooks/list';\nimport { command as listMiddlewares } from './middlewares/list';\nimport { command as listPolicies } from './policies/list';\nimport { command as listRoutes } from './routes/list';\nimport { command as listServices } from './services/list';\nimport { command as disableTelemetry } from './telemetry/disable';\nimport { command as enableTelemetry } from './telemetry/enable';\nimport { command as generateTemplates } from './templates/generate';\nimport { command as generateTsTypes } from './ts/generate-types';\nimport { command as buildCommand } from './build';\nimport { command as consoleCommand } from './console';\nimport { command as developCommand } from './develop';\nimport { command as generateCommand } from './generate';\nimport { command as reportCommand } from './report';\nimport { command as startCommand } from './start';\nimport { command as versionCommand } from './version';\nimport { command as openAPICommand } from './openapi';\nimport exportCommand from './export/command';\nimport importCommand from './import/command';\nimport transferCommand from './transfer/command';\n\nimport { StrapiCommand } from '../types';\n\nexport const commands: StrapiCommand[] = [\n createAdminUser,\n deleteAdminUser,\n activeAdminUser,\n blockAdminUser,\n listAdminUsers,\n resetAdminUserPassword,\n listComponents,\n configurationDump,\n configurationRestore,\n consoleCommand,\n listContentTypes,\n listControllers,\n generateCommand,\n listHooks,\n listMiddlewares,\n listPolicies,\n reportCommand,\n listRoutes,\n listServices,\n startCommand,\n disableTelemetry,\n enableTelemetry,\n generateTemplates,\n generateTsTypes,\n versionCommand,\n buildCommand,\n developCommand,\n exportCommand,\n importCommand,\n transferCommand,\n openAPICommand,\n /**\n * Cloud\n */\n cloudCommands,\n];\n"],"names":["commands","createAdminUser","deleteAdminUser","activeAdminUser","blockAdminUser","listAdminUsers","resetAdminUserPassword","listComponents","configurationDump","configurationRestore","consoleCommand","listContentTypes","listControllers","generateCommand","listHooks","listMiddlewares","listPolicies","reportCommand","listRoutes","listServices","startCommand","disableTelemetry","enableTelemetry","generateTemplates","generateTsTypes","versionCommand","buildCommand","developCommand","exportCommand","importCommand","transferCommand","openAPICommand","cloudCommands"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/cli/commands/index.ts"],"sourcesContent":["import { buildStrapiCloudCommands as cloudCommands } from '@strapi/cloud-cli';\n\nimport { command as createAdminUser } from './admin/create-user';\nimport { command as deleteAdminUser } from './admin/delete-user';\nimport { command as activeAdminUser } from './admin/active-user';\nimport { command as blockAdminUser } from './admin/block-user';\nimport { command as listAdminUsers } from './admin/list-users';\nimport { command as resetAdminUserPassword } from './admin/reset-user-password';\nimport { command as listComponents } from './components/list';\nimport { command as configurationDump } from './configuration/dump';\nimport { command as configurationRestore } from './configuration/restore';\nimport { command as listContentTypes } from './content-types/list';\nimport { command as renameField } from './content-types/rename-field';\nimport { command as listControllers } from './controllers/list';\nimport { command as listHooks } from './hooks/list';\nimport { command as listMiddlewares } from './middlewares/list';\nimport { command as listPolicies } from './policies/list';\nimport { command as listRoutes } from './routes/list';\nimport { command as listServices } from './services/list';\nimport { command as disableTelemetry } from './telemetry/disable';\nimport { command as enableTelemetry } from './telemetry/enable';\nimport { command as generateTemplates } from './templates/generate';\nimport { command as generateTsTypes } from './ts/generate-types';\nimport { command as buildCommand } from './build';\nimport { command as consoleCommand } from './console';\nimport { command as developCommand } from './develop';\nimport { command as generateCommand } from './generate';\nimport { command as reportCommand } from './report';\nimport { command as startCommand } from './start';\nimport { command as versionCommand } from './version';\nimport { command as openAPICommand } from './openapi';\nimport { command as enterpriseCommand } from './enterprise';\nimport exportCommand from './export/command';\nimport importCommand from './import/command';\nimport transferCommand from './transfer/command';\n\nimport { StrapiCommand } from '../types';\n\nexport const commands: StrapiCommand[] = [\n createAdminUser,\n deleteAdminUser,\n activeAdminUser,\n blockAdminUser,\n listAdminUsers,\n resetAdminUserPassword,\n listComponents,\n configurationDump,\n configurationRestore,\n consoleCommand,\n listContentTypes,\n renameField,\n listControllers,\n generateCommand,\n listHooks,\n listMiddlewares,\n listPolicies,\n reportCommand,\n listRoutes,\n listServices,\n startCommand,\n disableTelemetry,\n enableTelemetry,\n generateTemplates,\n generateTsTypes,\n versionCommand,\n buildCommand,\n developCommand,\n exportCommand,\n importCommand,\n transferCommand,\n openAPICommand,\n enterpriseCommand,\n /**\n * Cloud\n */\n cloudCommands,\n];\n"],"names":["commands","createAdminUser","deleteAdminUser","activeAdminUser","blockAdminUser","listAdminUsers","resetAdminUserPassword","listComponents","configurationDump","configurationRestore","consoleCommand","listContentTypes","renameField","listControllers","generateCommand","listHooks","listMiddlewares","listPolicies","reportCommand","listRoutes","listServices","startCommand","disableTelemetry","enableTelemetry","generateTemplates","generateTsTypes","versionCommand","buildCommand","developCommand","exportCommand","importCommand","transferCommand","openAPICommand","enterpriseCommand","cloudCommands"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsCaA,QAAAA,GAA4B;AACvCC,IAAAA,kBAAAA;AACAC,IAAAA,kBAAAA;AACAC,IAAAA,kBAAAA;AACAC,IAAAA,iBAAAA;AACAC,IAAAA,iBAAAA;AACAC,IAAAA,yBAAAA;AACAC,IAAAA,YAAAA;AACAC,IAAAA,YAAAA;AACAC,IAAAA,eAAAA;AACAC,IAAAA,eAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,mBAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,gBAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,aAAAA;AACAC,IAAAA,eAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,kBAAAA;AACAC,IAAAA,qBAAAA;AACAC,IAAAA,eAAAA;AACAC,IAAAA,aAAAA;AACAC,IAAAA,eAAAA;AACAC,IAAAA,OAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,aAAAA;AACAC,IAAAA,eAAAA;AACA;;MAGAC;;;;;"}
|
|
@@ -9,27 +9,29 @@ import { command as command$6 } from './components/list.mjs';
|
|
|
9
9
|
import { command as command$7 } from './configuration/dump.mjs';
|
|
10
10
|
import { command as command$8 } from './configuration/restore.mjs';
|
|
11
11
|
import { command as command$a } from './content-types/list.mjs';
|
|
12
|
-
import { command as command$b } from './
|
|
13
|
-
import { command as command$
|
|
14
|
-
import { command as command$e } from './
|
|
15
|
-
import { command as command$f } from './
|
|
16
|
-
import { command as command$
|
|
17
|
-
import { command as command$i } from './
|
|
18
|
-
import { command as command$
|
|
19
|
-
import { command as command$l } from './telemetry/
|
|
20
|
-
import { command as command$m } from './
|
|
21
|
-
import { command as command$n } from './
|
|
22
|
-
import { command as command$
|
|
12
|
+
import { command as command$b } from './content-types/rename-field.mjs';
|
|
13
|
+
import { command as command$c } from './controllers/list.mjs';
|
|
14
|
+
import { command as command$e } from './hooks/list.mjs';
|
|
15
|
+
import { command as command$f } from './middlewares/list.mjs';
|
|
16
|
+
import { command as command$g } from './policies/list.mjs';
|
|
17
|
+
import { command as command$i } from './routes/list.mjs';
|
|
18
|
+
import { command as command$j } from './services/list.mjs';
|
|
19
|
+
import { command as command$l } from './telemetry/disable.mjs';
|
|
20
|
+
import { command as command$m } from './telemetry/enable.mjs';
|
|
21
|
+
import { command as command$n } from './templates/generate.mjs';
|
|
22
|
+
import { command as command$o } from './ts/generate-types.mjs';
|
|
23
|
+
import { command as command$q } from './build.mjs';
|
|
23
24
|
import { command as command$9 } from './console.mjs';
|
|
24
|
-
import { command as command$
|
|
25
|
-
import { command as command$
|
|
26
|
-
import { command as command$
|
|
27
|
-
import { command as command$
|
|
28
|
-
import { command as command$
|
|
29
|
-
import { command as command$
|
|
30
|
-
import command$
|
|
31
|
-
import command$s from './
|
|
32
|
-
import command$t from './
|
|
25
|
+
import { command as command$r } from './develop.mjs';
|
|
26
|
+
import { command as command$d } from './generate.mjs';
|
|
27
|
+
import { command as command$h } from './report.mjs';
|
|
28
|
+
import { command as command$k } from './start.mjs';
|
|
29
|
+
import { command as command$p } from './version.mjs';
|
|
30
|
+
import { command as command$v } from './openapi/index.mjs';
|
|
31
|
+
import { command as command$w } from './enterprise/index.mjs';
|
|
32
|
+
import command$s from './export/command.mjs';
|
|
33
|
+
import command$t from './import/command.mjs';
|
|
34
|
+
import command$u from './transfer/command.mjs';
|
|
33
35
|
|
|
34
36
|
const commands = [
|
|
35
37
|
command,
|
|
@@ -63,6 +65,8 @@ const commands = [
|
|
|
63
65
|
command$s,
|
|
64
66
|
command$t,
|
|
65
67
|
command$u,
|
|
68
|
+
command$v,
|
|
69
|
+
command$w,
|
|
66
70
|
/**
|
|
67
71
|
* Cloud
|
|
68
72
|
*/ buildStrapiCloudCommands
|