@strapi/strapi 5.56.0 → 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.
Files changed (156) hide show
  1. package/dist/cli/commands/build.d.ts.map +1 -1
  2. package/dist/cli/commands/content-types/rename-field.d.ts +13 -0
  3. package/dist/cli/commands/content-types/rename-field.d.ts.map +1 -0
  4. package/dist/cli/commands/develop.d.ts.map +1 -1
  5. package/dist/cli/commands/enterprise/index.d.ts +7 -0
  6. package/dist/cli/commands/enterprise/index.d.ts.map +1 -0
  7. package/dist/cli/commands/enterprise/install/action.d.ts +36 -0
  8. package/dist/cli/commands/enterprise/install/action.d.ts.map +1 -0
  9. package/dist/cli/commands/enterprise/install/checklist-prompt.d.ts +14 -0
  10. package/dist/cli/commands/enterprise/install/checklist-prompt.d.ts.map +1 -0
  11. package/dist/cli/commands/enterprise/install/constants.d.ts +7 -0
  12. package/dist/cli/commands/enterprise/install/constants.d.ts.map +1 -0
  13. package/dist/cli/commands/enterprise/install/directories.d.ts +3 -0
  14. package/dist/cli/commands/enterprise/install/directories.d.ts.map +1 -0
  15. package/dist/cli/commands/enterprise/install/discovery.d.ts +29 -0
  16. package/dist/cli/commands/enterprise/install/discovery.d.ts.map +1 -0
  17. package/dist/cli/commands/enterprise/install/errors.d.ts +11 -0
  18. package/dist/cli/commands/enterprise/install/errors.d.ts.map +1 -0
  19. package/dist/cli/commands/enterprise/install/install-packages.d.ts +11 -0
  20. package/dist/cli/commands/enterprise/install/install-packages.d.ts.map +1 -0
  21. package/dist/cli/commands/enterprise/install/license.d.ts +27 -0
  22. package/dist/cli/commands/enterprise/install/license.d.ts.map +1 -0
  23. package/dist/cli/commands/enterprise/install/package-manager.d.ts +17 -0
  24. package/dist/cli/commands/enterprise/install/package-manager.d.ts.map +1 -0
  25. package/dist/cli/commands/enterprise/install/plugin-status.d.ts +44 -0
  26. package/dist/cli/commands/enterprise/install/plugin-status.d.ts.map +1 -0
  27. package/dist/cli/commands/enterprise/install/registry-access.d.ts +55 -0
  28. package/dist/cli/commands/enterprise/install/registry-access.d.ts.map +1 -0
  29. package/dist/cli/commands/enterprise/install/registry.d.ts +54 -0
  30. package/dist/cli/commands/enterprise/install/registry.d.ts.map +1 -0
  31. package/dist/cli/commands/enterprise/install/selection.d.ts +62 -0
  32. package/dist/cli/commands/enterprise/install/selection.d.ts.map +1 -0
  33. package/dist/cli/commands/enterprise/install/setup-links.d.ts +16 -0
  34. package/dist/cli/commands/enterprise/install/setup-links.d.ts.map +1 -0
  35. package/dist/cli/commands/enterprise/install/versions.d.ts +42 -0
  36. package/dist/cli/commands/enterprise/install/versions.d.ts.map +1 -0
  37. package/dist/cli/commands/index.d.ts.map +1 -1
  38. package/dist/cli/utils/commander.d.ts.map +1 -1
  39. package/dist/cli/utils/helpers.d.ts +1 -1
  40. package/dist/cli/utils/helpers.d.ts.map +1 -1
  41. package/dist/node/vite/config.d.ts.map +1 -1
  42. package/dist/package.json.js +1 -1
  43. package/dist/package.json.mjs +1 -1
  44. package/dist/src/cli/commands/build.js +4 -2
  45. package/dist/src/cli/commands/build.js.map +1 -1
  46. package/dist/src/cli/commands/build.mjs +4 -2
  47. package/dist/src/cli/commands/build.mjs.map +1 -1
  48. package/dist/src/cli/commands/content-types/rename-field.js +63 -0
  49. package/dist/src/cli/commands/content-types/rename-field.js.map +1 -0
  50. package/dist/src/cli/commands/content-types/rename-field.mjs +54 -0
  51. package/dist/src/cli/commands/content-types/rename-field.mjs.map +1 -0
  52. package/dist/src/cli/commands/develop.js +4 -2
  53. package/dist/src/cli/commands/develop.js.map +1 -1
  54. package/dist/src/cli/commands/develop.mjs +4 -2
  55. package/dist/src/cli/commands/develop.mjs.map +1 -1
  56. package/dist/src/cli/commands/enterprise/index.js +17 -0
  57. package/dist/src/cli/commands/enterprise/index.js.map +1 -0
  58. package/dist/src/cli/commands/enterprise/index.mjs +15 -0
  59. package/dist/src/cli/commands/enterprise/index.mjs.map +1 -0
  60. package/dist/src/cli/commands/enterprise/install/action.js +253 -0
  61. package/dist/src/cli/commands/enterprise/install/action.js.map +1 -0
  62. package/dist/src/cli/commands/enterprise/install/action.mjs +244 -0
  63. package/dist/src/cli/commands/enterprise/install/action.mjs.map +1 -0
  64. package/dist/src/cli/commands/enterprise/install/checklist-prompt.js +117 -0
  65. package/dist/src/cli/commands/enterprise/install/checklist-prompt.js.map +1 -0
  66. package/dist/src/cli/commands/enterprise/install/checklist-prompt.mjs +110 -0
  67. package/dist/src/cli/commands/enterprise/install/checklist-prompt.mjs.map +1 -0
  68. package/dist/src/cli/commands/enterprise/install/constants.js +16 -0
  69. package/dist/src/cli/commands/enterprise/install/constants.js.map +1 -0
  70. package/dist/src/cli/commands/enterprise/install/constants.mjs +9 -0
  71. package/dist/src/cli/commands/enterprise/install/constants.mjs.map +1 -0
  72. package/dist/src/cli/commands/enterprise/install/directories.js +23 -0
  73. package/dist/src/cli/commands/enterprise/install/directories.js.map +1 -0
  74. package/dist/src/cli/commands/enterprise/install/directories.mjs +17 -0
  75. package/dist/src/cli/commands/enterprise/install/directories.mjs.map +1 -0
  76. package/dist/src/cli/commands/enterprise/install/discovery.js +109 -0
  77. package/dist/src/cli/commands/enterprise/install/discovery.js.map +1 -0
  78. package/dist/src/cli/commands/enterprise/install/discovery.mjs +104 -0
  79. package/dist/src/cli/commands/enterprise/install/discovery.mjs.map +1 -0
  80. package/dist/src/cli/commands/enterprise/install/errors.js +26 -0
  81. package/dist/src/cli/commands/enterprise/install/errors.js.map +1 -0
  82. package/dist/src/cli/commands/enterprise/install/errors.mjs +22 -0
  83. package/dist/src/cli/commands/enterprise/install/errors.mjs.map +1 -0
  84. package/dist/src/cli/commands/enterprise/install/install-packages.js +39 -0
  85. package/dist/src/cli/commands/enterprise/install/install-packages.js.map +1 -0
  86. package/dist/src/cli/commands/enterprise/install/install-packages.mjs +32 -0
  87. package/dist/src/cli/commands/enterprise/install/install-packages.mjs.map +1 -0
  88. package/dist/src/cli/commands/enterprise/install/license.js +144 -0
  89. package/dist/src/cli/commands/enterprise/install/license.js.map +1 -0
  90. package/dist/src/cli/commands/enterprise/install/license.mjs +132 -0
  91. package/dist/src/cli/commands/enterprise/install/license.mjs.map +1 -0
  92. package/dist/src/cli/commands/enterprise/install/package-manager.js +72 -0
  93. package/dist/src/cli/commands/enterprise/install/package-manager.js.map +1 -0
  94. package/dist/src/cli/commands/enterprise/install/package-manager.mjs +62 -0
  95. package/dist/src/cli/commands/enterprise/install/package-manager.mjs.map +1 -0
  96. package/dist/src/cli/commands/enterprise/install/plugin-status.js +47 -0
  97. package/dist/src/cli/commands/enterprise/install/plugin-status.js.map +1 -0
  98. package/dist/src/cli/commands/enterprise/install/plugin-status.mjs +45 -0
  99. package/dist/src/cli/commands/enterprise/install/plugin-status.mjs.map +1 -0
  100. package/dist/src/cli/commands/enterprise/install/registry-access.js +293 -0
  101. package/dist/src/cli/commands/enterprise/install/registry-access.js.map +1 -0
  102. package/dist/src/cli/commands/enterprise/install/registry-access.mjs +277 -0
  103. package/dist/src/cli/commands/enterprise/install/registry-access.mjs.map +1 -0
  104. package/dist/src/cli/commands/enterprise/install/registry.js +98 -0
  105. package/dist/src/cli/commands/enterprise/install/registry.js.map +1 -0
  106. package/dist/src/cli/commands/enterprise/install/registry.mjs +95 -0
  107. package/dist/src/cli/commands/enterprise/install/registry.mjs.map +1 -0
  108. package/dist/src/cli/commands/enterprise/install/selection.js +148 -0
  109. package/dist/src/cli/commands/enterprise/install/selection.js.map +1 -0
  110. package/dist/src/cli/commands/enterprise/install/selection.mjs +141 -0
  111. package/dist/src/cli/commands/enterprise/install/selection.mjs.map +1 -0
  112. package/dist/src/cli/commands/enterprise/install/setup-links.js +34 -0
  113. package/dist/src/cli/commands/enterprise/install/setup-links.js.map +1 -0
  114. package/dist/src/cli/commands/enterprise/install/setup-links.mjs +31 -0
  115. package/dist/src/cli/commands/enterprise/install/setup-links.mjs.map +1 -0
  116. package/dist/src/cli/commands/enterprise/install/versions.js +127 -0
  117. package/dist/src/cli/commands/enterprise/install/versions.js.map +1 -0
  118. package/dist/src/cli/commands/enterprise/install/versions.mjs +107 -0
  119. package/dist/src/cli/commands/enterprise/install/versions.mjs.map +1 -0
  120. package/dist/src/cli/commands/export/action.js +4 -4
  121. package/dist/src/cli/commands/export/action.js.map +1 -1
  122. package/dist/src/cli/commands/export/action.mjs +2 -2
  123. package/dist/src/cli/commands/export/action.mjs.map +1 -1
  124. package/dist/src/cli/commands/import/action.js +2 -2
  125. package/dist/src/cli/commands/import/action.js.map +1 -1
  126. package/dist/src/cli/commands/import/action.mjs +1 -1
  127. package/dist/src/cli/commands/import/action.mjs.map +1 -1
  128. package/dist/src/cli/commands/index.js +4 -0
  129. package/dist/src/cli/commands/index.js.map +1 -1
  130. package/dist/src/cli/commands/index.mjs +24 -20
  131. package/dist/src/cli/commands/index.mjs.map +1 -1
  132. package/dist/src/cli/commands/routes/list.js +2 -2
  133. package/dist/src/cli/commands/routes/list.js.map +1 -1
  134. package/dist/src/cli/commands/routes/list.mjs +1 -1
  135. package/dist/src/cli/commands/routes/list.mjs.map +1 -1
  136. package/dist/src/cli/commands/transfer/action.js +2 -2
  137. package/dist/src/cli/commands/transfer/action.js.map +1 -1
  138. package/dist/src/cli/commands/transfer/action.mjs +1 -1
  139. package/dist/src/cli/commands/transfer/action.mjs.map +1 -1
  140. package/dist/src/cli/utils/commander.js +1 -2
  141. package/dist/src/cli/utils/commander.js.map +1 -1
  142. package/dist/src/cli/utils/commander.mjs +1 -2
  143. package/dist/src/cli/utils/commander.mjs.map +1 -1
  144. package/dist/src/cli/utils/data-transfer.js +2 -2
  145. package/dist/src/cli/utils/data-transfer.js.map +1 -1
  146. package/dist/src/cli/utils/data-transfer.mjs +2 -2
  147. package/dist/src/cli/utils/data-transfer.mjs.map +1 -1
  148. package/dist/src/cli/utils/helpers.js +6 -6
  149. package/dist/src/cli/utils/helpers.js.map +1 -1
  150. package/dist/src/cli/utils/helpers.mjs +4 -4
  151. package/dist/src/cli/utils/helpers.mjs.map +1 -1
  152. package/dist/src/node/vite/config.js +0 -1
  153. package/dist/src/node/vite/config.js.map +1 -1
  154. package/dist/src/node/vite/config.mjs +0 -1
  155. package/dist/src/node/vite/config.mjs.map +1 -1
  156. package/package.json +23 -23
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ const ENTERPRISE_SCOPE = '@strapi-enterprise';
4
+ const ENTERPRISE_REGISTRY_URL = 'https://packages.strapi.io/';
5
+ const BILLING_URL = 'https://billing.strapi.io/';
6
+ const ENTERPRISE_PLUGINS_DOCS_URL = 'https://docs.strapi.io/';
7
+ const LICENSE_FILE_NAME = 'license.txt';
8
+ const STRAPI_PACKAGE_NAME = '@strapi/strapi';
9
+
10
+ exports.BILLING_URL = BILLING_URL;
11
+ exports.ENTERPRISE_PLUGINS_DOCS_URL = ENTERPRISE_PLUGINS_DOCS_URL;
12
+ exports.ENTERPRISE_REGISTRY_URL = ENTERPRISE_REGISTRY_URL;
13
+ exports.ENTERPRISE_SCOPE = ENTERPRISE_SCOPE;
14
+ exports.LICENSE_FILE_NAME = LICENSE_FILE_NAME;
15
+ exports.STRAPI_PACKAGE_NAME = STRAPI_PACKAGE_NAME;
16
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sources":["../../../../../../src/cli/commands/enterprise/install/constants.ts"],"sourcesContent":["export const ENTERPRISE_SCOPE = '@strapi-enterprise';\n\nexport const ENTERPRISE_REGISTRY_URL = 'https://packages.strapi.io/';\n\nexport const BILLING_URL = 'https://billing.strapi.io/';\n\nexport const ENTERPRISE_PLUGINS_DOCS_URL = 'https://docs.strapi.io/';\n\nexport const LICENSE_FILE_NAME = 'license.txt';\n\nexport const STRAPI_PACKAGE_NAME = '@strapi/strapi';\n"],"names":["ENTERPRISE_SCOPE","ENTERPRISE_REGISTRY_URL","BILLING_URL","ENTERPRISE_PLUGINS_DOCS_URL","LICENSE_FILE_NAME","STRAPI_PACKAGE_NAME"],"mappings":";;AAAO,MAAMA,mBAAmB;AAEzB,MAAMC,0BAA0B;AAEhC,MAAMC,cAAc;AAEpB,MAAMC,8BAA8B;AAEpC,MAAMC,oBAAoB;AAE1B,MAAMC,sBAAsB;;;;;;;;;"}
@@ -0,0 +1,9 @@
1
+ const ENTERPRISE_SCOPE = '@strapi-enterprise';
2
+ const ENTERPRISE_REGISTRY_URL = 'https://packages.strapi.io/';
3
+ const BILLING_URL = 'https://billing.strapi.io/';
4
+ const ENTERPRISE_PLUGINS_DOCS_URL = 'https://docs.strapi.io/';
5
+ const LICENSE_FILE_NAME = 'license.txt';
6
+ const STRAPI_PACKAGE_NAME = '@strapi/strapi';
7
+
8
+ export { BILLING_URL, ENTERPRISE_PLUGINS_DOCS_URL, ENTERPRISE_REGISTRY_URL, ENTERPRISE_SCOPE, LICENSE_FILE_NAME, STRAPI_PACKAGE_NAME };
9
+ //# sourceMappingURL=constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.mjs","sources":["../../../../../../src/cli/commands/enterprise/install/constants.ts"],"sourcesContent":["export const ENTERPRISE_SCOPE = '@strapi-enterprise';\n\nexport const ENTERPRISE_REGISTRY_URL = 'https://packages.strapi.io/';\n\nexport const BILLING_URL = 'https://billing.strapi.io/';\n\nexport const ENTERPRISE_PLUGINS_DOCS_URL = 'https://docs.strapi.io/';\n\nexport const LICENSE_FILE_NAME = 'license.txt';\n\nexport const STRAPI_PACKAGE_NAME = '@strapi/strapi';\n"],"names":["ENTERPRISE_SCOPE","ENTERPRISE_REGISTRY_URL","BILLING_URL","ENTERPRISE_PLUGINS_DOCS_URL","LICENSE_FILE_NAME","STRAPI_PACKAGE_NAME"],"mappings":"AAAO,MAAMA,mBAAmB;AAEzB,MAAMC,0BAA0B;AAEhC,MAAMC,cAAc;AAEpB,MAAMC,8BAA8B;AAEpC,MAAMC,oBAAoB;AAE1B,MAAMC,sBAAsB;;;;"}
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ var path = require('node:path');
4
+
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var path__default = /*#__PURE__*/_interopDefault(path);
8
+
9
+ /** The app folder and each of its parents, up to the root of the file system. */ const listAncestorDirectories = (appDir)=>{
10
+ let directory = path__default.default.resolve(appDir);
11
+ const directories = [
12
+ directory
13
+ ];
14
+ // `path.dirname` of the root is the root itself, which ends the walk.
15
+ while(path__default.default.dirname(directory) !== directory){
16
+ directory = path__default.default.dirname(directory);
17
+ directories.push(directory);
18
+ }
19
+ return directories;
20
+ };
21
+
22
+ exports.listAncestorDirectories = listAncestorDirectories;
23
+ //# sourceMappingURL=directories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directories.js","sources":["../../../../../../src/cli/commands/enterprise/install/directories.ts"],"sourcesContent":["import path from 'node:path';\n\n/** The app folder and each of its parents, up to the root of the file system. */\nexport const listAncestorDirectories = (appDir: string): string[] => {\n let directory = path.resolve(appDir);\n const directories = [directory];\n\n // `path.dirname` of the root is the root itself, which ends the walk.\n while (path.dirname(directory) !== directory) {\n directory = path.dirname(directory);\n directories.push(directory);\n }\n\n return directories;\n};\n"],"names":["listAncestorDirectories","appDir","directory","path","resolve","directories","dirname","push"],"mappings":";;;;;;;;AAEA,kFACO,MAAMA,uBAAAA,GAA0B,CAACC,MAAAA,GAAAA;IACtC,IAAIC,SAAAA,GAAYC,qBAAAA,CAAKC,OAAO,CAACH,MAAAA,CAAAA;AAC7B,IAAA,MAAMI,WAAAA,GAAc;AAACH,QAAAA;AAAU,KAAA;;AAG/B,IAAA,MAAOC,qBAAAA,CAAKG,OAAO,CAACJ,SAAAA,CAAAA,KAAeA,SAAAA,CAAW;QAC5CA,SAAAA,GAAYC,qBAAAA,CAAKG,OAAO,CAACJ,SAAAA,CAAAA;AACzBG,QAAAA,WAAAA,CAAYE,IAAI,CAACL,SAAAA,CAAAA;AACnB,IAAA;IAEA,OAAOG,WAAAA;AACT;;;;"}
@@ -0,0 +1,17 @@
1
+ import path from 'node:path';
2
+
3
+ /** The app folder and each of its parents, up to the root of the file system. */ const listAncestorDirectories = (appDir)=>{
4
+ let directory = path.resolve(appDir);
5
+ const directories = [
6
+ directory
7
+ ];
8
+ // `path.dirname` of the root is the root itself, which ends the walk.
9
+ while(path.dirname(directory) !== directory){
10
+ directory = path.dirname(directory);
11
+ directories.push(directory);
12
+ }
13
+ return directories;
14
+ };
15
+
16
+ export { listAncestorDirectories };
17
+ //# sourceMappingURL=directories.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directories.mjs","sources":["../../../../../../src/cli/commands/enterprise/install/directories.ts"],"sourcesContent":["import path from 'node:path';\n\n/** The app folder and each of its parents, up to the root of the file system. */\nexport const listAncestorDirectories = (appDir: string): string[] => {\n let directory = path.resolve(appDir);\n const directories = [directory];\n\n // `path.dirname` of the root is the root itself, which ends the walk.\n while (path.dirname(directory) !== directory) {\n directory = path.dirname(directory);\n directories.push(directory);\n }\n\n return directories;\n};\n"],"names":["listAncestorDirectories","appDir","directory","path","resolve","directories","dirname","push"],"mappings":";;AAEA,kFACO,MAAMA,uBAAAA,GAA0B,CAACC,MAAAA,GAAAA;IACtC,IAAIC,SAAAA,GAAYC,IAAAA,CAAKC,OAAO,CAACH,MAAAA,CAAAA;AAC7B,IAAA,MAAMI,WAAAA,GAAc;AAACH,QAAAA;AAAU,KAAA;;AAG/B,IAAA,MAAOC,IAAAA,CAAKG,OAAO,CAACJ,SAAAA,CAAAA,KAAeA,SAAAA,CAAW;QAC5CA,SAAAA,GAAYC,IAAAA,CAAKG,OAAO,CAACJ,SAAAA,CAAAA;AACzBG,QAAAA,WAAAA,CAAYE,IAAI,CAACL,SAAAA,CAAAA;AACnB,IAAA;IAEA,OAAOG,WAAAA;AACT;;;;"}
@@ -0,0 +1,109 @@
1
+ 'use strict';
2
+
3
+ var constants = require('./constants.js');
4
+ var errors = require('./errors.js');
5
+ var registry = require('./registry.js');
6
+ var versions = require('./versions.js');
7
+
8
+ const isEnterprisePackage = (packageName)=>packageName.startsWith(`${constants.ENTERPRISE_SCOPE}/`);
9
+ const declaresStrapiKind = (strapiKind)=>typeof strapiKind === 'string' && strapiKind.length > 0;
10
+ /**
11
+ * Enterprise plugins the app depends on: listed in its own `package.json`, and installed. Libraries
12
+ * the plugins depend on are left out, as are copies hoisted for another app of the same monorepo.
13
+ */ const listInstalledEnterprisePlugins = async (appDir)=>{
14
+ const installedPluginNames = [];
15
+ for (const packageName of (await versions.readAppDependencyNames(appDir))){
16
+ if (!isEnterprisePackage(packageName)) {
17
+ continue;
18
+ }
19
+ const packageJson = await versions.readInstalledPackageJson(appDir, packageName);
20
+ if (declaresStrapiKind(packageJson?.strapi?.kind)) {
21
+ installedPluginNames.push(packageName);
22
+ }
23
+ }
24
+ return installedPluginNames;
25
+ };
26
+ const findLatestManifest = (packument)=>{
27
+ const latestVersion = packument['dist-tags']?.latest;
28
+ return latestVersion ? packument.versions?.[latestVersion] : undefined;
29
+ };
30
+ const describeEnterprisePlugin = (packageName, lookup)=>{
31
+ if (lookup.status !== 'available') {
32
+ return {
33
+ packageName,
34
+ displayName: packageName,
35
+ summary: ''
36
+ };
37
+ }
38
+ const latestManifest = findLatestManifest(lookup.packument);
39
+ const strapiMetadata = latestManifest?.strapi;
40
+ if (!strapiMetadata || !declaresStrapiKind(strapiMetadata.kind)) {
41
+ return undefined;
42
+ }
43
+ return {
44
+ packageName,
45
+ displayName: strapiMetadata.displayName ?? packageName,
46
+ summary: strapiMetadata.description ?? latestManifest?.description ?? '',
47
+ kind: strapiMetadata.kind
48
+ };
49
+ };
50
+ const discoverEnterprisePlugins = async ({ appDir, license, logger, fetchImplementation })=>{
51
+ const [searchResult, installedPluginNames] = await Promise.all([
52
+ registry.searchPackageNames({
53
+ text: constants.ENTERPRISE_SCOPE,
54
+ license,
55
+ fetchImplementation
56
+ }),
57
+ listInstalledEnterprisePlugins(appDir)
58
+ ]);
59
+ if (searchResult.status === 'license-rejected') {
60
+ throw new errors.EnterpriseInstallError(searchResult.message);
61
+ }
62
+ if (searchResult.status === 'unavailable') {
63
+ const registryHost = new URL(constants.ENTERPRISE_REGISTRY_URL).host;
64
+ if (installedPluginNames.length === 0) {
65
+ throw new errors.EnterpriseInstallError(`Could not search ${registryHost}. Try again later, or name the plugin to install.`);
66
+ }
67
+ logger.warn(`Could not search ${registryHost}, so only the installed Enterprise plugins are listed.`);
68
+ }
69
+ const candidatePackageNames = [
70
+ ...new Set([
71
+ ...searchResult.status === 'available' ? searchResult.packageNames : [],
72
+ ...installedPluginNames
73
+ ])
74
+ ].filter(isEnterprisePackage);
75
+ const lookupFailures = [];
76
+ const discoveredPlugins = await Promise.all(candidatePackageNames.map(async (packageName)=>{
77
+ const [lookup, installedVersion] = await Promise.all([
78
+ registry.fetchPackument({
79
+ packageName,
80
+ license,
81
+ fetchImplementation
82
+ }),
83
+ versions.readAppDependencyVersion(appDir, packageName)
84
+ ]);
85
+ if (lookup.status === 'unavailable') {
86
+ // One package the registry fails to describe should not hide the others.
87
+ lookupFailures.push(lookup.message);
88
+ logger.warn(`${packageName} is left out of the list: ${lookup.message}`);
89
+ return undefined;
90
+ }
91
+ const entry = describeEnterprisePlugin(packageName, lookup);
92
+ return entry ? {
93
+ entry,
94
+ lookup,
95
+ installedVersion
96
+ } : undefined;
97
+ }));
98
+ // When every lookup fails, the registry itself is the problem, not the license.
99
+ if (candidatePackageNames.length > 0 && lookupFailures.length === candidatePackageNames.length) {
100
+ throw new errors.EnterpriseInstallError(lookupFailures[0]);
101
+ }
102
+ return discoveredPlugins.filter((discoveredPlugin)=>discoveredPlugin !== undefined);
103
+ };
104
+
105
+ exports.declaresStrapiKind = declaresStrapiKind;
106
+ exports.describeEnterprisePlugin = describeEnterprisePlugin;
107
+ exports.discoverEnterprisePlugins = discoverEnterprisePlugins;
108
+ exports.listInstalledEnterprisePlugins = listInstalledEnterprisePlugins;
109
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sources":["../../../../../../src/cli/commands/enterprise/install/discovery.ts"],"sourcesContent":["import type { Logger } from '../../../utils/logger';\nimport { ENTERPRISE_REGISTRY_URL, ENTERPRISE_SCOPE } from './constants';\nimport { EnterpriseInstallError } from './errors';\nimport {\n fetchPackument,\n searchPackageNames,\n type Packument,\n type PackumentLookup,\n} from './registry';\nimport {\n readAppDependencyNames,\n readAppDependencyVersion,\n readInstalledPackageJson,\n} from './versions';\n\nexport interface EnterprisePluginEntry {\n packageName: string;\n displayName: string;\n summary: string;\n kind?: string;\n}\n\nexport interface DiscoveredPlugin {\n entry: EnterprisePluginEntry;\n lookup: Exclude<PackumentLookup, { status: 'unavailable' }>;\n installedVersion?: string;\n}\n\nconst isEnterprisePackage = (packageName: string) => packageName.startsWith(`${ENTERPRISE_SCOPE}/`);\n\nexport const declaresStrapiKind = (strapiKind: unknown): strapiKind is string =>\n typeof strapiKind === 'string' && strapiKind.length > 0;\n\n/**\n * Enterprise plugins the app depends on: listed in its own `package.json`, and installed. Libraries\n * the plugins depend on are left out, as are copies hoisted for another app of the same monorepo.\n */\nexport const listInstalledEnterprisePlugins = async (appDir: string): Promise<string[]> => {\n const installedPluginNames: string[] = [];\n\n for (const packageName of await readAppDependencyNames(appDir)) {\n if (!isEnterprisePackage(packageName)) {\n continue;\n }\n\n const packageJson = await readInstalledPackageJson(appDir, packageName);\n\n if (declaresStrapiKind(packageJson?.strapi?.kind)) {\n installedPluginNames.push(packageName);\n }\n }\n\n return installedPluginNames;\n};\n\nconst findLatestManifest = (packument: Packument) => {\n const latestVersion = packument['dist-tags']?.latest;\n\n return latestVersion ? packument.versions?.[latestVersion] : undefined;\n};\n\nexport const describeEnterprisePlugin = (\n packageName: string,\n lookup: PackumentLookup\n): EnterprisePluginEntry | undefined => {\n if (lookup.status !== 'available') {\n return {\n packageName,\n displayName: packageName,\n summary: '',\n };\n }\n\n const latestManifest = findLatestManifest(lookup.packument);\n const strapiMetadata = latestManifest?.strapi;\n\n if (!strapiMetadata || !declaresStrapiKind(strapiMetadata.kind)) {\n return undefined;\n }\n\n return {\n packageName,\n displayName: strapiMetadata.displayName ?? packageName,\n summary: strapiMetadata.description ?? latestManifest?.description ?? '',\n kind: strapiMetadata.kind,\n };\n};\n\nexport const discoverEnterprisePlugins = async ({\n appDir,\n license,\n logger,\n fetchImplementation,\n}: {\n appDir: string;\n license: string;\n logger: Logger;\n fetchImplementation: typeof fetch;\n}): Promise<DiscoveredPlugin[]> => {\n const [searchResult, installedPluginNames] = await Promise.all([\n searchPackageNames({ text: ENTERPRISE_SCOPE, license, fetchImplementation }),\n listInstalledEnterprisePlugins(appDir),\n ]);\n\n if (searchResult.status === 'license-rejected') {\n throw new EnterpriseInstallError(searchResult.message);\n }\n\n if (searchResult.status === 'unavailable') {\n const registryHost = new URL(ENTERPRISE_REGISTRY_URL).host;\n\n if (installedPluginNames.length === 0) {\n throw new EnterpriseInstallError(\n `Could not search ${registryHost}. Try again later, or name the plugin to install.`\n );\n }\n\n logger.warn(\n `Could not search ${registryHost}, so only the installed Enterprise plugins are listed.`\n );\n }\n\n const candidatePackageNames = [\n ...new Set([\n ...(searchResult.status === 'available' ? searchResult.packageNames : []),\n ...installedPluginNames,\n ]),\n ].filter(isEnterprisePackage);\n\n const lookupFailures: string[] = [];\n\n const discoveredPlugins = await Promise.all(\n candidatePackageNames.map(async (packageName): Promise<DiscoveredPlugin | undefined> => {\n const [lookup, installedVersion] = await Promise.all([\n fetchPackument({ packageName, license, fetchImplementation }),\n readAppDependencyVersion(appDir, packageName),\n ]);\n\n if (lookup.status === 'unavailable') {\n // One package the registry fails to describe should not hide the others.\n lookupFailures.push(lookup.message);\n logger.warn(`${packageName} is left out of the list: ${lookup.message}`);\n\n return undefined;\n }\n\n const entry = describeEnterprisePlugin(packageName, lookup);\n\n return entry ? { entry, lookup, installedVersion } : undefined;\n })\n );\n\n // When every lookup fails, the registry itself is the problem, not the license.\n if (candidatePackageNames.length > 0 && lookupFailures.length === candidatePackageNames.length) {\n throw new EnterpriseInstallError(lookupFailures[0]);\n }\n\n return discoveredPlugins.filter(\n (discoveredPlugin): discoveredPlugin is DiscoveredPlugin => discoveredPlugin !== undefined\n );\n};\n"],"names":["isEnterprisePackage","packageName","startsWith","ENTERPRISE_SCOPE","declaresStrapiKind","strapiKind","length","listInstalledEnterprisePlugins","appDir","installedPluginNames","readAppDependencyNames","packageJson","readInstalledPackageJson","strapi","kind","push","findLatestManifest","packument","latestVersion","latest","versions","undefined","describeEnterprisePlugin","lookup","status","displayName","summary","latestManifest","strapiMetadata","description","discoverEnterprisePlugins","license","logger","fetchImplementation","searchResult","Promise","all","searchPackageNames","text","EnterpriseInstallError","message","registryHost","URL","ENTERPRISE_REGISTRY_URL","host","warn","candidatePackageNames","Set","packageNames","filter","lookupFailures","discoveredPlugins","map","installedVersion","fetchPackument","readAppDependencyVersion","entry","discoveredPlugin"],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ import { ENTERPRISE_REGISTRY_URL, ENTERPRISE_SCOPE } from './constants.mjs';
2
+ import { EnterpriseInstallError } from './errors.mjs';
3
+ import { searchPackageNames, fetchPackument } from './registry.mjs';
4
+ import { readAppDependencyVersion, readAppDependencyNames, readInstalledPackageJson } from './versions.mjs';
5
+
6
+ const isEnterprisePackage = (packageName)=>packageName.startsWith(`${ENTERPRISE_SCOPE}/`);
7
+ const declaresStrapiKind = (strapiKind)=>typeof strapiKind === 'string' && strapiKind.length > 0;
8
+ /**
9
+ * Enterprise plugins the app depends on: listed in its own `package.json`, and installed. Libraries
10
+ * the plugins depend on are left out, as are copies hoisted for another app of the same monorepo.
11
+ */ const listInstalledEnterprisePlugins = async (appDir)=>{
12
+ const installedPluginNames = [];
13
+ for (const packageName of (await readAppDependencyNames(appDir))){
14
+ if (!isEnterprisePackage(packageName)) {
15
+ continue;
16
+ }
17
+ const packageJson = await readInstalledPackageJson(appDir, packageName);
18
+ if (declaresStrapiKind(packageJson?.strapi?.kind)) {
19
+ installedPluginNames.push(packageName);
20
+ }
21
+ }
22
+ return installedPluginNames;
23
+ };
24
+ const findLatestManifest = (packument)=>{
25
+ const latestVersion = packument['dist-tags']?.latest;
26
+ return latestVersion ? packument.versions?.[latestVersion] : undefined;
27
+ };
28
+ const describeEnterprisePlugin = (packageName, lookup)=>{
29
+ if (lookup.status !== 'available') {
30
+ return {
31
+ packageName,
32
+ displayName: packageName,
33
+ summary: ''
34
+ };
35
+ }
36
+ const latestManifest = findLatestManifest(lookup.packument);
37
+ const strapiMetadata = latestManifest?.strapi;
38
+ if (!strapiMetadata || !declaresStrapiKind(strapiMetadata.kind)) {
39
+ return undefined;
40
+ }
41
+ return {
42
+ packageName,
43
+ displayName: strapiMetadata.displayName ?? packageName,
44
+ summary: strapiMetadata.description ?? latestManifest?.description ?? '',
45
+ kind: strapiMetadata.kind
46
+ };
47
+ };
48
+ const discoverEnterprisePlugins = async ({ appDir, license, logger, fetchImplementation })=>{
49
+ const [searchResult, installedPluginNames] = await Promise.all([
50
+ searchPackageNames({
51
+ text: ENTERPRISE_SCOPE,
52
+ license,
53
+ fetchImplementation
54
+ }),
55
+ listInstalledEnterprisePlugins(appDir)
56
+ ]);
57
+ if (searchResult.status === 'license-rejected') {
58
+ throw new EnterpriseInstallError(searchResult.message);
59
+ }
60
+ if (searchResult.status === 'unavailable') {
61
+ const registryHost = new URL(ENTERPRISE_REGISTRY_URL).host;
62
+ if (installedPluginNames.length === 0) {
63
+ throw new EnterpriseInstallError(`Could not search ${registryHost}. Try again later, or name the plugin to install.`);
64
+ }
65
+ logger.warn(`Could not search ${registryHost}, so only the installed Enterprise plugins are listed.`);
66
+ }
67
+ const candidatePackageNames = [
68
+ ...new Set([
69
+ ...searchResult.status === 'available' ? searchResult.packageNames : [],
70
+ ...installedPluginNames
71
+ ])
72
+ ].filter(isEnterprisePackage);
73
+ const lookupFailures = [];
74
+ const discoveredPlugins = await Promise.all(candidatePackageNames.map(async (packageName)=>{
75
+ const [lookup, installedVersion] = await Promise.all([
76
+ fetchPackument({
77
+ packageName,
78
+ license,
79
+ fetchImplementation
80
+ }),
81
+ readAppDependencyVersion(appDir, packageName)
82
+ ]);
83
+ if (lookup.status === 'unavailable') {
84
+ // One package the registry fails to describe should not hide the others.
85
+ lookupFailures.push(lookup.message);
86
+ logger.warn(`${packageName} is left out of the list: ${lookup.message}`);
87
+ return undefined;
88
+ }
89
+ const entry = describeEnterprisePlugin(packageName, lookup);
90
+ return entry ? {
91
+ entry,
92
+ lookup,
93
+ installedVersion
94
+ } : undefined;
95
+ }));
96
+ // When every lookup fails, the registry itself is the problem, not the license.
97
+ if (candidatePackageNames.length > 0 && lookupFailures.length === candidatePackageNames.length) {
98
+ throw new EnterpriseInstallError(lookupFailures[0]);
99
+ }
100
+ return discoveredPlugins.filter((discoveredPlugin)=>discoveredPlugin !== undefined);
101
+ };
102
+
103
+ export { declaresStrapiKind, describeEnterprisePlugin, discoverEnterprisePlugins, listInstalledEnterprisePlugins };
104
+ //# sourceMappingURL=discovery.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.mjs","sources":["../../../../../../src/cli/commands/enterprise/install/discovery.ts"],"sourcesContent":["import type { Logger } from '../../../utils/logger';\nimport { ENTERPRISE_REGISTRY_URL, ENTERPRISE_SCOPE } from './constants';\nimport { EnterpriseInstallError } from './errors';\nimport {\n fetchPackument,\n searchPackageNames,\n type Packument,\n type PackumentLookup,\n} from './registry';\nimport {\n readAppDependencyNames,\n readAppDependencyVersion,\n readInstalledPackageJson,\n} from './versions';\n\nexport interface EnterprisePluginEntry {\n packageName: string;\n displayName: string;\n summary: string;\n kind?: string;\n}\n\nexport interface DiscoveredPlugin {\n entry: EnterprisePluginEntry;\n lookup: Exclude<PackumentLookup, { status: 'unavailable' }>;\n installedVersion?: string;\n}\n\nconst isEnterprisePackage = (packageName: string) => packageName.startsWith(`${ENTERPRISE_SCOPE}/`);\n\nexport const declaresStrapiKind = (strapiKind: unknown): strapiKind is string =>\n typeof strapiKind === 'string' && strapiKind.length > 0;\n\n/**\n * Enterprise plugins the app depends on: listed in its own `package.json`, and installed. Libraries\n * the plugins depend on are left out, as are copies hoisted for another app of the same monorepo.\n */\nexport const listInstalledEnterprisePlugins = async (appDir: string): Promise<string[]> => {\n const installedPluginNames: string[] = [];\n\n for (const packageName of await readAppDependencyNames(appDir)) {\n if (!isEnterprisePackage(packageName)) {\n continue;\n }\n\n const packageJson = await readInstalledPackageJson(appDir, packageName);\n\n if (declaresStrapiKind(packageJson?.strapi?.kind)) {\n installedPluginNames.push(packageName);\n }\n }\n\n return installedPluginNames;\n};\n\nconst findLatestManifest = (packument: Packument) => {\n const latestVersion = packument['dist-tags']?.latest;\n\n return latestVersion ? packument.versions?.[latestVersion] : undefined;\n};\n\nexport const describeEnterprisePlugin = (\n packageName: string,\n lookup: PackumentLookup\n): EnterprisePluginEntry | undefined => {\n if (lookup.status !== 'available') {\n return {\n packageName,\n displayName: packageName,\n summary: '',\n };\n }\n\n const latestManifest = findLatestManifest(lookup.packument);\n const strapiMetadata = latestManifest?.strapi;\n\n if (!strapiMetadata || !declaresStrapiKind(strapiMetadata.kind)) {\n return undefined;\n }\n\n return {\n packageName,\n displayName: strapiMetadata.displayName ?? packageName,\n summary: strapiMetadata.description ?? latestManifest?.description ?? '',\n kind: strapiMetadata.kind,\n };\n};\n\nexport const discoverEnterprisePlugins = async ({\n appDir,\n license,\n logger,\n fetchImplementation,\n}: {\n appDir: string;\n license: string;\n logger: Logger;\n fetchImplementation: typeof fetch;\n}): Promise<DiscoveredPlugin[]> => {\n const [searchResult, installedPluginNames] = await Promise.all([\n searchPackageNames({ text: ENTERPRISE_SCOPE, license, fetchImplementation }),\n listInstalledEnterprisePlugins(appDir),\n ]);\n\n if (searchResult.status === 'license-rejected') {\n throw new EnterpriseInstallError(searchResult.message);\n }\n\n if (searchResult.status === 'unavailable') {\n const registryHost = new URL(ENTERPRISE_REGISTRY_URL).host;\n\n if (installedPluginNames.length === 0) {\n throw new EnterpriseInstallError(\n `Could not search ${registryHost}. Try again later, or name the plugin to install.`\n );\n }\n\n logger.warn(\n `Could not search ${registryHost}, so only the installed Enterprise plugins are listed.`\n );\n }\n\n const candidatePackageNames = [\n ...new Set([\n ...(searchResult.status === 'available' ? searchResult.packageNames : []),\n ...installedPluginNames,\n ]),\n ].filter(isEnterprisePackage);\n\n const lookupFailures: string[] = [];\n\n const discoveredPlugins = await Promise.all(\n candidatePackageNames.map(async (packageName): Promise<DiscoveredPlugin | undefined> => {\n const [lookup, installedVersion] = await Promise.all([\n fetchPackument({ packageName, license, fetchImplementation }),\n readAppDependencyVersion(appDir, packageName),\n ]);\n\n if (lookup.status === 'unavailable') {\n // One package the registry fails to describe should not hide the others.\n lookupFailures.push(lookup.message);\n logger.warn(`${packageName} is left out of the list: ${lookup.message}`);\n\n return undefined;\n }\n\n const entry = describeEnterprisePlugin(packageName, lookup);\n\n return entry ? { entry, lookup, installedVersion } : undefined;\n })\n );\n\n // When every lookup fails, the registry itself is the problem, not the license.\n if (candidatePackageNames.length > 0 && lookupFailures.length === candidatePackageNames.length) {\n throw new EnterpriseInstallError(lookupFailures[0]);\n }\n\n return discoveredPlugins.filter(\n (discoveredPlugin): discoveredPlugin is DiscoveredPlugin => discoveredPlugin !== undefined\n );\n};\n"],"names":["isEnterprisePackage","packageName","startsWith","ENTERPRISE_SCOPE","declaresStrapiKind","strapiKind","length","listInstalledEnterprisePlugins","appDir","installedPluginNames","readAppDependencyNames","packageJson","readInstalledPackageJson","strapi","kind","push","findLatestManifest","packument","latestVersion","latest","versions","undefined","describeEnterprisePlugin","lookup","status","displayName","summary","latestManifest","strapiMetadata","description","discoverEnterprisePlugins","license","logger","fetchImplementation","searchResult","Promise","all","searchPackageNames","text","EnterpriseInstallError","message","registryHost","URL","ENTERPRISE_REGISTRY_URL","host","warn","candidatePackageNames","Set","packageNames","filter","lookupFailures","discoveredPlugins","map","installedVersion","fetchPackument","readAppDependencyVersion","entry","discoveredPlugin"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ class EnterpriseInstallError extends Error {
4
+ constructor(message){
5
+ super(message);
6
+ this.name = 'EnterpriseInstallError';
7
+ }
8
+ }
9
+ class PromptCancelledError extends Error {
10
+ constructor(){
11
+ super('The prompt was cancelled.');
12
+ this.name = 'PromptCancelledError';
13
+ }
14
+ }
15
+ class PackageManagerError extends Error {
16
+ constructor(exitCode){
17
+ super(`The package manager exited with code ${exitCode}.`);
18
+ this.name = 'PackageManagerError';
19
+ this.exitCode = exitCode;
20
+ }
21
+ }
22
+
23
+ exports.EnterpriseInstallError = EnterpriseInstallError;
24
+ exports.PackageManagerError = PackageManagerError;
25
+ exports.PromptCancelledError = PromptCancelledError;
26
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sources":["../../../../../../src/cli/commands/enterprise/install/errors.ts"],"sourcesContent":["export class EnterpriseInstallError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'EnterpriseInstallError';\n }\n}\n\nexport class PromptCancelledError extends Error {\n constructor() {\n super('The prompt was cancelled.');\n this.name = 'PromptCancelledError';\n }\n}\n\nexport class PackageManagerError extends Error {\n readonly exitCode: number;\n\n constructor(exitCode: number) {\n super(`The package manager exited with code ${exitCode}.`);\n this.name = 'PackageManagerError';\n this.exitCode = exitCode;\n }\n}\n"],"names":["EnterpriseInstallError","Error","message","name","PromptCancelledError","PackageManagerError","exitCode"],"mappings":";;AAAO,MAAMA,sBAAAA,SAA+BC,KAAAA,CAAAA;AAC1C,IAAA,WAAA,CAAYC,OAAe,CAAE;AAC3B,QAAA,KAAK,CAACA,OAAAA,CAAAA;QACN,IAAI,CAACC,IAAI,GAAG,wBAAA;AACd,IAAA;AACF;AAEO,MAAMC,oBAAAA,SAA6BH,KAAAA,CAAAA;IACxC,WAAA,EAAc;AACZ,QAAA,KAAK,CAAC,2BAAA,CAAA;QACN,IAAI,CAACE,IAAI,GAAG,sBAAA;AACd,IAAA;AACF;AAEO,MAAME,mBAAAA,SAA4BJ,KAAAA,CAAAA;AAGvC,IAAA,WAAA,CAAYK,QAAgB,CAAE;AAC5B,QAAA,KAAK,CAAC,CAAC,qCAAqC,EAAEA,QAAAA,CAAS,CAAC,CAAC,CAAA;QACzD,IAAI,CAACH,IAAI,GAAG,qBAAA;QACZ,IAAI,CAACG,QAAQ,GAAGA,QAAAA;AAClB,IAAA;AACF;;;;;;"}
@@ -0,0 +1,22 @@
1
+ class EnterpriseInstallError extends Error {
2
+ constructor(message){
3
+ super(message);
4
+ this.name = 'EnterpriseInstallError';
5
+ }
6
+ }
7
+ class PromptCancelledError extends Error {
8
+ constructor(){
9
+ super('The prompt was cancelled.');
10
+ this.name = 'PromptCancelledError';
11
+ }
12
+ }
13
+ class PackageManagerError extends Error {
14
+ constructor(exitCode){
15
+ super(`The package manager exited with code ${exitCode}.`);
16
+ this.name = 'PackageManagerError';
17
+ this.exitCode = exitCode;
18
+ }
19
+ }
20
+
21
+ export { EnterpriseInstallError, PackageManagerError, PromptCancelledError };
22
+ //# sourceMappingURL=errors.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.mjs","sources":["../../../../../../src/cli/commands/enterprise/install/errors.ts"],"sourcesContent":["export class EnterpriseInstallError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'EnterpriseInstallError';\n }\n}\n\nexport class PromptCancelledError extends Error {\n constructor() {\n super('The prompt was cancelled.');\n this.name = 'PromptCancelledError';\n }\n}\n\nexport class PackageManagerError extends Error {\n readonly exitCode: number;\n\n constructor(exitCode: number) {\n super(`The package manager exited with code ${exitCode}.`);\n this.name = 'PackageManagerError';\n this.exitCode = exitCode;\n }\n}\n"],"names":["EnterpriseInstallError","Error","message","name","PromptCancelledError","PackageManagerError","exitCode"],"mappings":"AAAO,MAAMA,sBAAAA,SAA+BC,KAAAA,CAAAA;AAC1C,IAAA,WAAA,CAAYC,OAAe,CAAE;AAC3B,QAAA,KAAK,CAACA,OAAAA,CAAAA;QACN,IAAI,CAACC,IAAI,GAAG,wBAAA;AACd,IAAA;AACF;AAEO,MAAMC,oBAAAA,SAA6BH,KAAAA,CAAAA;IACxC,WAAA,EAAc;AACZ,QAAA,KAAK,CAAC,2BAAA,CAAA;QACN,IAAI,CAACE,IAAI,GAAG,sBAAA;AACd,IAAA;AACF;AAEO,MAAME,mBAAAA,SAA4BJ,KAAAA,CAAAA;AAGvC,IAAA,WAAA,CAAYK,QAAgB,CAAE;AAC5B,QAAA,KAAK,CAAC,CAAC,qCAAqC,EAAEA,QAAAA,CAAS,CAAC,CAAC,CAAA;QACzD,IAAI,CAACH,IAAI,GAAG,qBAAA;QACZ,IAAI,CAACG,QAAQ,GAAGA,QAAAA;AAClB,IAAA;AACF;;;;"}
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ var execa = require('execa');
4
+ var errors = require('./errors.js');
5
+
6
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
+
8
+ var execa__default = /*#__PURE__*/_interopDefault(execa);
9
+
10
+ const buildInstallCommand = (packageManager, installSpecs)=>({
11
+ command: packageManager.name,
12
+ args: packageManager.name === 'npm' ? [
13
+ 'install',
14
+ '--save-exact',
15
+ ...installSpecs
16
+ ] : [
17
+ 'add',
18
+ ...installSpecs
19
+ ]
20
+ });
21
+ const installPackages = async ({ appDir, packageManager, installSpecs })=>{
22
+ const { command, args } = buildInstallCommand(packageManager, installSpecs);
23
+ try {
24
+ await execa__default.default(command, args, {
25
+ cwd: appDir,
26
+ stdio: 'inherit'
27
+ });
28
+ } catch (error) {
29
+ const { code, exitCode } = error ?? {};
30
+ if (code === 'ENOENT') {
31
+ throw new errors.EnterpriseInstallError(`Could not run ${command}. Check that it is installed.`);
32
+ }
33
+ throw new errors.PackageManagerError(typeof exitCode === 'number' && exitCode !== 0 ? exitCode : 1);
34
+ }
35
+ };
36
+
37
+ exports.buildInstallCommand = buildInstallCommand;
38
+ exports.installPackages = installPackages;
39
+ //# sourceMappingURL=install-packages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-packages.js","sources":["../../../../../../src/cli/commands/enterprise/install/install-packages.ts"],"sourcesContent":["import execa from 'execa';\n\nimport { EnterpriseInstallError, PackageManagerError } from './errors';\nimport type { DetectedPackageManager } from './package-manager';\n\nexport const buildInstallCommand = (\n packageManager: DetectedPackageManager,\n installSpecs: string[]\n): { command: string; args: string[] } => ({\n command: packageManager.name,\n args:\n packageManager.name === 'npm'\n ? ['install', '--save-exact', ...installSpecs]\n : ['add', ...installSpecs],\n});\n\nexport const installPackages = async ({\n appDir,\n packageManager,\n installSpecs,\n}: {\n appDir: string;\n packageManager: DetectedPackageManager;\n installSpecs: string[];\n}): Promise<void> => {\n const { command, args } = buildInstallCommand(packageManager, installSpecs);\n\n try {\n await execa(command, args, { cwd: appDir, stdio: 'inherit' });\n } catch (error) {\n const { code, exitCode } = (error ?? {}) as { code?: string; exitCode?: number };\n\n if (code === 'ENOENT') {\n throw new EnterpriseInstallError(`Could not run ${command}. Check that it is installed.`);\n }\n\n throw new PackageManagerError(typeof exitCode === 'number' && exitCode !== 0 ? exitCode : 1);\n }\n};\n"],"names":["buildInstallCommand","packageManager","installSpecs","command","name","args","installPackages","appDir","execa","cwd","stdio","error","code","exitCode","EnterpriseInstallError","PackageManagerError"],"mappings":";;;;;;;;;AAKO,MAAMA,mBAAAA,GAAsB,CACjCC,cAAAA,EACAC,gBACyC;AACzCC,QAAAA,OAAAA,EAASF,eAAeG,IAAI;QAC5BC,IAAAA,EACEJ,cAAAA,CAAeG,IAAI,KAAK,KAAA,GACpB;AAAC,YAAA,SAAA;AAAW,YAAA,cAAA;AAAmBF,YAAAA,GAAAA;SAAa,GAC5C;AAAC,YAAA,KAAA;AAAUA,YAAAA,GAAAA;AAAa;AAChC,KAAA;AAEO,MAAMI,kBAAkB,OAAO,EACpCC,MAAM,EACNN,cAAc,EACdC,YAAY,EAKb,GAAA;AACC,IAAA,MAAM,EAAEC,OAAO,EAAEE,IAAI,EAAE,GAAGL,oBAAoBC,cAAAA,EAAgBC,YAAAA,CAAAA;IAE9D,IAAI;QACF,MAAMM,sBAAAA,CAAML,SAASE,IAAAA,EAAM;YAAEI,GAAAA,EAAKF,MAAAA;YAAQG,KAAAA,EAAO;AAAU,SAAA,CAAA;AAC7D,IAAA,CAAA,CAAE,OAAOC,KAAAA,EAAO;AACd,QAAA,MAAM,EAAEC,IAAI,EAAEC,QAAQ,EAAE,GAAIF,SAAS,EAAC;AAEtC,QAAA,IAAIC,SAAS,QAAA,EAAU;AACrB,YAAA,MAAM,IAAIE,6BAAAA,CAAuB,CAAC,cAAc,EAAEX,OAAAA,CAAQ,6BAA6B,CAAC,CAAA;AAC1F,QAAA;AAEA,QAAA,MAAM,IAAIY,0BAAAA,CAAoB,OAAOF,aAAa,QAAA,IAAYA,QAAAA,KAAa,IAAIA,QAAAA,GAAW,CAAA,CAAA;AAC5F,IAAA;AACF;;;;;"}
@@ -0,0 +1,32 @@
1
+ import execa from 'execa';
2
+ import { EnterpriseInstallError, PackageManagerError } from './errors.mjs';
3
+
4
+ const buildInstallCommand = (packageManager, installSpecs)=>({
5
+ command: packageManager.name,
6
+ args: packageManager.name === 'npm' ? [
7
+ 'install',
8
+ '--save-exact',
9
+ ...installSpecs
10
+ ] : [
11
+ 'add',
12
+ ...installSpecs
13
+ ]
14
+ });
15
+ const installPackages = async ({ appDir, packageManager, installSpecs })=>{
16
+ const { command, args } = buildInstallCommand(packageManager, installSpecs);
17
+ try {
18
+ await execa(command, args, {
19
+ cwd: appDir,
20
+ stdio: 'inherit'
21
+ });
22
+ } catch (error) {
23
+ const { code, exitCode } = error ?? {};
24
+ if (code === 'ENOENT') {
25
+ throw new EnterpriseInstallError(`Could not run ${command}. Check that it is installed.`);
26
+ }
27
+ throw new PackageManagerError(typeof exitCode === 'number' && exitCode !== 0 ? exitCode : 1);
28
+ }
29
+ };
30
+
31
+ export { buildInstallCommand, installPackages };
32
+ //# sourceMappingURL=install-packages.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-packages.mjs","sources":["../../../../../../src/cli/commands/enterprise/install/install-packages.ts"],"sourcesContent":["import execa from 'execa';\n\nimport { EnterpriseInstallError, PackageManagerError } from './errors';\nimport type { DetectedPackageManager } from './package-manager';\n\nexport const buildInstallCommand = (\n packageManager: DetectedPackageManager,\n installSpecs: string[]\n): { command: string; args: string[] } => ({\n command: packageManager.name,\n args:\n packageManager.name === 'npm'\n ? ['install', '--save-exact', ...installSpecs]\n : ['add', ...installSpecs],\n});\n\nexport const installPackages = async ({\n appDir,\n packageManager,\n installSpecs,\n}: {\n appDir: string;\n packageManager: DetectedPackageManager;\n installSpecs: string[];\n}): Promise<void> => {\n const { command, args } = buildInstallCommand(packageManager, installSpecs);\n\n try {\n await execa(command, args, { cwd: appDir, stdio: 'inherit' });\n } catch (error) {\n const { code, exitCode } = (error ?? {}) as { code?: string; exitCode?: number };\n\n if (code === 'ENOENT') {\n throw new EnterpriseInstallError(`Could not run ${command}. Check that it is installed.`);\n }\n\n throw new PackageManagerError(typeof exitCode === 'number' && exitCode !== 0 ? exitCode : 1);\n }\n};\n"],"names":["buildInstallCommand","packageManager","installSpecs","command","name","args","installPackages","appDir","execa","cwd","stdio","error","code","exitCode","EnterpriseInstallError","PackageManagerError"],"mappings":";;;AAKO,MAAMA,mBAAAA,GAAsB,CACjCC,cAAAA,EACAC,gBACyC;AACzCC,QAAAA,OAAAA,EAASF,eAAeG,IAAI;QAC5BC,IAAAA,EACEJ,cAAAA,CAAeG,IAAI,KAAK,KAAA,GACpB;AAAC,YAAA,SAAA;AAAW,YAAA,cAAA;AAAmBF,YAAAA,GAAAA;SAAa,GAC5C;AAAC,YAAA,KAAA;AAAUA,YAAAA,GAAAA;AAAa;AAChC,KAAA;AAEO,MAAMI,kBAAkB,OAAO,EACpCC,MAAM,EACNN,cAAc,EACdC,YAAY,EAKb,GAAA;AACC,IAAA,MAAM,EAAEC,OAAO,EAAEE,IAAI,EAAE,GAAGL,oBAAoBC,cAAAA,EAAgBC,YAAAA,CAAAA;IAE9D,IAAI;QACF,MAAMM,KAAAA,CAAML,SAASE,IAAAA,EAAM;YAAEI,GAAAA,EAAKF,MAAAA;YAAQG,KAAAA,EAAO;AAAU,SAAA,CAAA;AAC7D,IAAA,CAAA,CAAE,OAAOC,KAAAA,EAAO;AACd,QAAA,MAAM,EAAEC,IAAI,EAAEC,QAAQ,EAAE,GAAIF,SAAS,EAAC;AAEtC,QAAA,IAAIC,SAAS,QAAA,EAAU;AACrB,YAAA,MAAM,IAAIE,sBAAAA,CAAuB,CAAC,cAAc,EAAEX,OAAAA,CAAQ,6BAA6B,CAAC,CAAA;AAC1F,QAAA;AAEA,QAAA,MAAM,IAAIY,mBAAAA,CAAoB,OAAOF,aAAa,QAAA,IAAYA,QAAAA,KAAa,IAAIA,QAAAA,GAAW,CAAA,CAAA;AAC5F,IAAA;AACF;;;;"}