@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
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var commander = require('commander');
4
- var build = require('../../node/build.js');
5
4
  var errors = require('../../node/core/errors.js');
6
5
 
7
6
  const action = async (options)=>{
@@ -9,7 +8,10 @@ const action = async (options)=>{
9
8
  if (options.bundler === 'webpack') {
10
9
  options.logger.warn('[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.');
11
10
  }
12
- await build.build(options);
11
+ // Loaded lazily: every command is registered on CLI startup, so a static import would make
12
+ // `strapi start` load the whole admin build toolchain (including admin source via staticFiles).
13
+ const { build: nodeBuild } = await Promise.resolve().then(function () { return require('../../node/build.js'); });
14
+ await nodeBuild(options);
13
15
  } catch (err) {
14
16
  errors.handleUnexpectedError(err);
15
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sources":["../../../../src/cli/commands/build.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport type { StrapiCommand } from '../types';\n\nimport { build as nodeBuild, BuildOptions } from '../../node/build';\nimport { handleUnexpectedError } from '../../node/core/errors';\n\ntype BuildCLIOptions = BuildOptions;\n\nconst action = async (options: BuildCLIOptions) => {\n try {\n if (options.bundler === 'webpack') {\n options.logger.warn(\n '[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.'\n );\n }\n\n await nodeBuild(options);\n } catch (err) {\n handleUnexpectedError(err);\n }\n};\n\n/**\n * `$ strapi build`\n */\nconst command: StrapiCommand = ({ ctx }) => {\n return createCommand('build')\n .option('--bundler [bundler]', 'Bundler to use (webpack or vite)', 'vite')\n .option('-d, --debug', 'Enable debugging mode with verbose logs', false)\n .option('--minify', 'Minify the output', true)\n .option('--silent', \"Don't log anything\", false)\n .option('--sourcemap', 'Produce sourcemaps', false)\n .option('--stats', 'Print build statistics to the console', false)\n .option('--install-deps', 'Auto-install missing admin dependencies', false)\n .description('Build the strapi admin app')\n .action(async (options: BuildCLIOptions) => {\n return action({ ...options, ...ctx });\n });\n};\n\nexport { command };\n"],"names":["action","options","bundler","logger","warn","nodeBuild","err","handleUnexpectedError","command","ctx","createCommand","option","description"],"mappings":";;;;;;AAQA,MAAMA,SAAS,OAAOC,OAAAA,GAAAA;IACpB,IAAI;QACF,IAAIA,OAAAA,CAAQC,OAAO,KAAK,SAAA,EAAW;YACjCD,OAAAA,CAAQE,MAAM,CAACC,IAAI,CACjB,yFAAA,CAAA;AAEJ,QAAA;AAEA,QAAA,MAAMC,WAAAA,CAAUJ,OAAAA,CAAAA;AAClB,IAAA,CAAA,CAAE,OAAOK,GAAAA,EAAK;QACZC,4BAAAA,CAAsBD,GAAAA,CAAAA;AACxB,IAAA;AACF,CAAA;AAEA;;AAEC,IACD,MAAME,OAAAA,GAAyB,CAAC,EAAEC,GAAG,EAAE,GAAA;AACrC,IAAA,OAAOC,wBAAc,OAAA,CAAA,CAClBC,MAAM,CAAC,qBAAA,EAAuB,kCAAA,EAAoC,QAClEA,MAAM,CAAC,eAAe,yCAAA,EAA2C,KAAA,CAAA,CACjEA,MAAM,CAAC,UAAA,EAAY,qBAAqB,IAAA,CAAA,CACxCA,MAAM,CAAC,UAAA,EAAY,oBAAA,EAAsB,KAAA,CAAA,CACzCA,MAAM,CAAC,aAAA,EAAe,oBAAA,EAAsB,OAC5CA,MAAM,CAAC,WAAW,uCAAA,EAAyC,KAAA,CAAA,CAC3DA,MAAM,CAAC,gBAAA,EAAkB,2CAA2C,KAAA,CAAA,CACpEC,WAAW,CAAC,4BAAA,CAAA,CACZZ,MAAM,CAAC,OAAOC,OAAAA,GAAAA;AACb,QAAA,OAAOD,MAAAA,CAAO;AAAE,YAAA,GAAGC,OAAO;AAAE,YAAA,GAAGQ;AAAI,SAAA,CAAA;AACrC,IAAA,CAAA,CAAA;AACJ;;;;"}
1
+ {"version":3,"file":"build.js","sources":["../../../../src/cli/commands/build.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport type { StrapiCommand } from '../types';\n\nimport type { BuildOptions } from '../../node/build';\nimport { handleUnexpectedError } from '../../node/core/errors';\n\ntype BuildCLIOptions = BuildOptions;\n\nconst action = async (options: BuildCLIOptions) => {\n try {\n if (options.bundler === 'webpack') {\n options.logger.warn(\n '[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.'\n );\n }\n\n // Loaded lazily: every command is registered on CLI startup, so a static import would make\n // `strapi start` load the whole admin build toolchain (including admin source via staticFiles).\n const { build: nodeBuild } = await import('../../node/build');\n await nodeBuild(options);\n } catch (err) {\n handleUnexpectedError(err);\n }\n};\n\n/**\n * `$ strapi build`\n */\nconst command: StrapiCommand = ({ ctx }) => {\n return createCommand('build')\n .option('--bundler [bundler]', 'Bundler to use (webpack or vite)', 'vite')\n .option('-d, --debug', 'Enable debugging mode with verbose logs', false)\n .option('--minify', 'Minify the output', true)\n .option('--silent', \"Don't log anything\", false)\n .option('--sourcemap', 'Produce sourcemaps', false)\n .option('--stats', 'Print build statistics to the console', false)\n .option('--install-deps', 'Auto-install missing admin dependencies', false)\n .description('Build the strapi admin app')\n .action(async (options: BuildCLIOptions) => {\n return action({ ...options, ...ctx });\n });\n};\n\nexport { command };\n"],"names":["action","options","bundler","logger","warn","build","nodeBuild","err","handleUnexpectedError","command","ctx","createCommand","option","description"],"mappings":";;;;;AAQA,MAAMA,SAAS,OAAOC,OAAAA,GAAAA;IACpB,IAAI;QACF,IAAIA,OAAAA,CAAQC,OAAO,KAAK,SAAA,EAAW;YACjCD,OAAAA,CAAQE,MAAM,CAACC,IAAI,CACjB,yFAAA,CAAA;AAEJ,QAAA;;;AAIA,QAAA,MAAM,EAAEC,KAAAA,EAAOC,SAAS,EAAE,GAAG,MAAM,oDAAO,qBAAA,KAAA;AAC1C,QAAA,MAAMA,SAAAA,CAAUL,OAAAA,CAAAA;AAClB,IAAA,CAAA,CAAE,OAAOM,GAAAA,EAAK;QACZC,4BAAAA,CAAsBD,GAAAA,CAAAA;AACxB,IAAA;AACF,CAAA;AAEA;;AAEC,IACD,MAAME,OAAAA,GAAyB,CAAC,EAAEC,GAAG,EAAE,GAAA;AACrC,IAAA,OAAOC,wBAAc,OAAA,CAAA,CAClBC,MAAM,CAAC,qBAAA,EAAuB,kCAAA,EAAoC,QAClEA,MAAM,CAAC,eAAe,yCAAA,EAA2C,KAAA,CAAA,CACjEA,MAAM,CAAC,UAAA,EAAY,qBAAqB,IAAA,CAAA,CACxCA,MAAM,CAAC,UAAA,EAAY,oBAAA,EAAsB,KAAA,CAAA,CACzCA,MAAM,CAAC,aAAA,EAAe,oBAAA,EAAsB,OAC5CA,MAAM,CAAC,WAAW,uCAAA,EAAyC,KAAA,CAAA,CAC3DA,MAAM,CAAC,gBAAA,EAAkB,2CAA2C,KAAA,CAAA,CACpEC,WAAW,CAAC,4BAAA,CAAA,CACZb,MAAM,CAAC,OAAOC,OAAAA,GAAAA;AACb,QAAA,OAAOD,MAAAA,CAAO;AAAE,YAAA,GAAGC,OAAO;AAAE,YAAA,GAAGS;AAAI,SAAA,CAAA;AACrC,IAAA,CAAA,CAAA;AACJ;;;;"}
@@ -1,5 +1,4 @@
1
1
  import { createCommand } from 'commander';
2
- import { build } from '../../node/build.mjs';
3
2
  import { handleUnexpectedError } from '../../node/core/errors.mjs';
4
3
 
5
4
  const action = async (options)=>{
@@ -7,7 +6,10 @@ const action = async (options)=>{
7
6
  if (options.bundler === 'webpack') {
8
7
  options.logger.warn('[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.');
9
8
  }
10
- await build(options);
9
+ // Loaded lazily: every command is registered on CLI startup, so a static import would make
10
+ // `strapi start` load the whole admin build toolchain (including admin source via staticFiles).
11
+ const { build: nodeBuild } = await import('../../node/build.mjs');
12
+ await nodeBuild(options);
11
13
  } catch (err) {
12
14
  handleUnexpectedError(err);
13
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build.mjs","sources":["../../../../src/cli/commands/build.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport type { StrapiCommand } from '../types';\n\nimport { build as nodeBuild, BuildOptions } from '../../node/build';\nimport { handleUnexpectedError } from '../../node/core/errors';\n\ntype BuildCLIOptions = BuildOptions;\n\nconst action = async (options: BuildCLIOptions) => {\n try {\n if (options.bundler === 'webpack') {\n options.logger.warn(\n '[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.'\n );\n }\n\n await nodeBuild(options);\n } catch (err) {\n handleUnexpectedError(err);\n }\n};\n\n/**\n * `$ strapi build`\n */\nconst command: StrapiCommand = ({ ctx }) => {\n return createCommand('build')\n .option('--bundler [bundler]', 'Bundler to use (webpack or vite)', 'vite')\n .option('-d, --debug', 'Enable debugging mode with verbose logs', false)\n .option('--minify', 'Minify the output', true)\n .option('--silent', \"Don't log anything\", false)\n .option('--sourcemap', 'Produce sourcemaps', false)\n .option('--stats', 'Print build statistics to the console', false)\n .option('--install-deps', 'Auto-install missing admin dependencies', false)\n .description('Build the strapi admin app')\n .action(async (options: BuildCLIOptions) => {\n return action({ ...options, ...ctx });\n });\n};\n\nexport { command };\n"],"names":["action","options","bundler","logger","warn","nodeBuild","err","handleUnexpectedError","command","ctx","createCommand","option","description"],"mappings":";;;;AAQA,MAAMA,SAAS,OAAOC,OAAAA,GAAAA;IACpB,IAAI;QACF,IAAIA,OAAAA,CAAQC,OAAO,KAAK,SAAA,EAAW;YACjCD,OAAAA,CAAQE,MAAM,CAACC,IAAI,CACjB,yFAAA,CAAA;AAEJ,QAAA;AAEA,QAAA,MAAMC,KAAAA,CAAUJ,OAAAA,CAAAA;AAClB,IAAA,CAAA,CAAE,OAAOK,GAAAA,EAAK;QACZC,qBAAAA,CAAsBD,GAAAA,CAAAA;AACxB,IAAA;AACF,CAAA;AAEA;;AAEC,IACD,MAAME,OAAAA,GAAyB,CAAC,EAAEC,GAAG,EAAE,GAAA;AACrC,IAAA,OAAOC,cAAc,OAAA,CAAA,CAClBC,MAAM,CAAC,qBAAA,EAAuB,kCAAA,EAAoC,QAClEA,MAAM,CAAC,eAAe,yCAAA,EAA2C,KAAA,CAAA,CACjEA,MAAM,CAAC,UAAA,EAAY,qBAAqB,IAAA,CAAA,CACxCA,MAAM,CAAC,UAAA,EAAY,oBAAA,EAAsB,KAAA,CAAA,CACzCA,MAAM,CAAC,aAAA,EAAe,oBAAA,EAAsB,OAC5CA,MAAM,CAAC,WAAW,uCAAA,EAAyC,KAAA,CAAA,CAC3DA,MAAM,CAAC,gBAAA,EAAkB,2CAA2C,KAAA,CAAA,CACpEC,WAAW,CAAC,4BAAA,CAAA,CACZZ,MAAM,CAAC,OAAOC,OAAAA,GAAAA;AACb,QAAA,OAAOD,MAAAA,CAAO;AAAE,YAAA,GAAGC,OAAO;AAAE,YAAA,GAAGQ;AAAI,SAAA,CAAA;AACrC,IAAA,CAAA,CAAA;AACJ;;;;"}
1
+ {"version":3,"file":"build.mjs","sources":["../../../../src/cli/commands/build.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport type { StrapiCommand } from '../types';\n\nimport type { BuildOptions } from '../../node/build';\nimport { handleUnexpectedError } from '../../node/core/errors';\n\ntype BuildCLIOptions = BuildOptions;\n\nconst action = async (options: BuildCLIOptions) => {\n try {\n if (options.bundler === 'webpack') {\n options.logger.warn(\n '[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.'\n );\n }\n\n // Loaded lazily: every command is registered on CLI startup, so a static import would make\n // `strapi start` load the whole admin build toolchain (including admin source via staticFiles).\n const { build: nodeBuild } = await import('../../node/build');\n await nodeBuild(options);\n } catch (err) {\n handleUnexpectedError(err);\n }\n};\n\n/**\n * `$ strapi build`\n */\nconst command: StrapiCommand = ({ ctx }) => {\n return createCommand('build')\n .option('--bundler [bundler]', 'Bundler to use (webpack or vite)', 'vite')\n .option('-d, --debug', 'Enable debugging mode with verbose logs', false)\n .option('--minify', 'Minify the output', true)\n .option('--silent', \"Don't log anything\", false)\n .option('--sourcemap', 'Produce sourcemaps', false)\n .option('--stats', 'Print build statistics to the console', false)\n .option('--install-deps', 'Auto-install missing admin dependencies', false)\n .description('Build the strapi admin app')\n .action(async (options: BuildCLIOptions) => {\n return action({ ...options, ...ctx });\n });\n};\n\nexport { command };\n"],"names":["action","options","bundler","logger","warn","build","nodeBuild","err","handleUnexpectedError","command","ctx","createCommand","option","description"],"mappings":";;;AAQA,MAAMA,SAAS,OAAOC,OAAAA,GAAAA;IACpB,IAAI;QACF,IAAIA,OAAAA,CAAQC,OAAO,KAAK,SAAA,EAAW;YACjCD,OAAAA,CAAQE,MAAM,CAACC,IAAI,CACjB,yFAAA,CAAA;AAEJ,QAAA;;;AAIA,QAAA,MAAM,EAAEC,KAAAA,EAAOC,SAAS,EAAE,GAAG,MAAM,OAAO,sBAAA,CAAA;AAC1C,QAAA,MAAMA,SAAAA,CAAUL,OAAAA,CAAAA;AAClB,IAAA,CAAA,CAAE,OAAOM,GAAAA,EAAK;QACZC,qBAAAA,CAAsBD,GAAAA,CAAAA;AACxB,IAAA;AACF,CAAA;AAEA;;AAEC,IACD,MAAME,OAAAA,GAAyB,CAAC,EAAEC,GAAG,EAAE,GAAA;AACrC,IAAA,OAAOC,cAAc,OAAA,CAAA,CAClBC,MAAM,CAAC,qBAAA,EAAuB,kCAAA,EAAoC,QAClEA,MAAM,CAAC,eAAe,yCAAA,EAA2C,KAAA,CAAA,CACjEA,MAAM,CAAC,UAAA,EAAY,qBAAqB,IAAA,CAAA,CACxCA,MAAM,CAAC,UAAA,EAAY,oBAAA,EAAsB,KAAA,CAAA,CACzCA,MAAM,CAAC,aAAA,EAAe,oBAAA,EAAsB,OAC5CA,MAAM,CAAC,WAAW,uCAAA,EAAyC,KAAA,CAAA,CAC3DA,MAAM,CAAC,gBAAA,EAAkB,2CAA2C,KAAA,CAAA,CACpEC,WAAW,CAAC,4BAAA,CAAA,CACZb,MAAM,CAAC,OAAOC,OAAAA,GAAAA;AACb,QAAA,OAAOD,MAAAA,CAAO;AAAE,YAAA,GAAGC,OAAO;AAAE,YAAA,GAAGS;AAAI,SAAA,CAAA;AACrC,IAAA,CAAA,CAAA;AACJ;;;;"}
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ var path = require('node:path');
4
+ var commander = require('commander');
5
+ var chalk = require('chalk');
6
+ var fse = require('fs-extra');
7
+ var core = require('@strapi/core');
8
+ var helpers = require('../../utils/helpers.js');
9
+
10
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
+
12
+ var path__default = /*#__PURE__*/_interopDefault(path);
13
+ var chalk__default = /*#__PURE__*/_interopDefault(chalk);
14
+ var fse__default = /*#__PURE__*/_interopDefault(fse);
15
+
16
+ const listMigrationFiles = async (dir)=>{
17
+ try {
18
+ return new Set(await fse__default.default.readdir(dir));
19
+ } catch {
20
+ // The directory may not exist yet (no migrations generated before).
21
+ return new Set();
22
+ }
23
+ };
24
+ /**
25
+ * Renames an attribute on a content-type or component and generates the
26
+ * data-preserving migration in a single step, reusing the same rename resolver
27
+ * the Content-Type Builder admin uses.
28
+ */ const action = async (uid, oldName, newName)=>{
29
+ const appContext = await core.compileStrapi();
30
+ const app = await core.createStrapi(appContext).load();
31
+ try {
32
+ // The Content-Type Builder always writes to the app's *source* migrations
33
+ // dir (the database-configured dir points at build output when
34
+ // `useTypescriptMigrations` is enabled).
35
+ const migrationsDir = path__default.default.join(app.dirs.app.root, 'database', 'migrations');
36
+ const before = await listMigrationFiles(migrationsDir);
37
+ await app.plugin('content-type-builder').service('schema').renameAttribute(uid, oldName, newName);
38
+ const after = await listMigrationFiles(migrationsDir);
39
+ const created = [
40
+ ...after
41
+ ].filter((file)=>!before.has(file));
42
+ // The service refuses renames it cannot migrate before touching the schema,
43
+ // so a rename without a migration file means something went wrong.
44
+ if (created.length === 0) {
45
+ throw new Error(`Renamed "${oldName}" to "${newName}" on ${uid}, but no rename migration was written to ${migrationsDir}. Check the schema file before restarting.`);
46
+ }
47
+ console.log(chalk__default.default.green(`Renamed "${oldName}" to "${newName}" on ${uid}.`));
48
+ created.forEach((file)=>{
49
+ console.log(`Generated migration ${path__default.default.join(migrationsDir, file)}`);
50
+ });
51
+ } finally{
52
+ await app.destroy();
53
+ }
54
+ };
55
+ /**
56
+ * `$ strapi rename:field <uid> <oldName> <newName>`
57
+ */ const command = ()=>{
58
+ return commander.createCommand('rename:field').arguments('<uid> <oldName> <newName>').description('Rename a content-type or component attribute and generate a data-preserving migration').action(helpers.runAction('rename:field', action));
59
+ };
60
+
61
+ exports.action = action;
62
+ exports.command = command;
63
+ //# sourceMappingURL=rename-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename-field.js","sources":["../../../../../src/cli/commands/content-types/rename-field.ts"],"sourcesContent":["import path from 'node:path';\nimport { createCommand } from 'commander';\nimport chalk from 'chalk';\nimport fse from 'fs-extra';\n\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst listMigrationFiles = async (dir: string): Promise<Set<string>> => {\n try {\n return new Set(await fse.readdir(dir));\n } catch {\n // The directory may not exist yet (no migrations generated before).\n return new Set();\n }\n};\n\n/**\n * Renames an attribute on a content-type or component and generates the\n * data-preserving migration in a single step, reusing the same rename resolver\n * the Content-Type Builder admin uses.\n */\nconst action = async (uid: string, oldName: string, newName: string) => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n try {\n // The Content-Type Builder always writes to the app's *source* migrations\n // dir (the database-configured dir points at build output when\n // `useTypescriptMigrations` is enabled).\n const migrationsDir = path.join(app.dirs.app.root, 'database', 'migrations');\n\n const before = await listMigrationFiles(migrationsDir);\n\n await app\n .plugin('content-type-builder')\n .service('schema')\n .renameAttribute(uid, oldName, newName);\n\n const after = await listMigrationFiles(migrationsDir);\n const created = [...after].filter((file) => !before.has(file));\n\n // The service refuses renames it cannot migrate before touching the schema,\n // so a rename without a migration file means something went wrong.\n if (created.length === 0) {\n throw new Error(\n `Renamed \"${oldName}\" to \"${newName}\" on ${uid}, but no rename migration was written to ${migrationsDir}. Check the schema file before restarting.`\n );\n }\n\n console.log(chalk.green(`Renamed \"${oldName}\" to \"${newName}\" on ${uid}.`));\n\n created.forEach((file) => {\n console.log(`Generated migration ${path.join(migrationsDir, file)}`);\n });\n } finally {\n await app.destroy();\n }\n};\n\n/**\n * `$ strapi rename:field <uid> <oldName> <newName>`\n */\nconst command: StrapiCommand = () => {\n return createCommand('rename:field')\n .arguments('<uid> <oldName> <newName>')\n .description(\n 'Rename a content-type or component attribute and generate a data-preserving migration'\n )\n .action(runAction('rename:field', action));\n};\n\nexport { action, command };\n"],"names":["listMigrationFiles","dir","Set","fse","readdir","action","uid","oldName","newName","appContext","compileStrapi","app","createStrapi","load","migrationsDir","path","join","dirs","root","before","plugin","service","renameAttribute","after","created","filter","file","has","length","Error","console","log","chalk","green","forEach","destroy","command","createCommand","arguments","description","runAction"],"mappings":";;;;;;;;;;;;;;;AAUA,MAAMA,qBAAqB,OAAOC,GAAAA,GAAAA;IAChC,IAAI;AACF,QAAA,OAAO,IAAIC,GAAAA,CAAI,MAAMC,oBAAAA,CAAIC,OAAO,CAACH,GAAAA,CAAAA,CAAAA;AACnC,IAAA,CAAA,CAAE,OAAM;;AAEN,QAAA,OAAO,IAAIC,GAAAA,EAAAA;AACb,IAAA;AACF,CAAA;AAEA;;;;AAIC,IACD,MAAMG,MAAAA,GAAS,OAAOC,GAAAA,EAAaC,OAAAA,EAAiBC,OAAAA,GAAAA;AAClD,IAAA,MAAMC,aAAa,MAAMC,kBAAAA,EAAAA;AACzB,IAAA,MAAMC,GAAAA,GAAM,MAAMC,iBAAAA,CAAaH,UAAAA,CAAAA,CAAYI,IAAI,EAAA;IAE/C,IAAI;;;;QAIF,MAAMC,aAAAA,GAAgBC,qBAAAA,CAAKC,IAAI,CAACL,GAAAA,CAAIM,IAAI,CAACN,GAAG,CAACO,IAAI,EAAE,UAAA,EAAY,YAAA,CAAA;QAE/D,MAAMC,MAAAA,GAAS,MAAMnB,kBAAAA,CAAmBc,aAAAA,CAAAA;QAExC,MAAMH,GAAAA,CACHS,MAAM,CAAC,sBAAA,CAAA,CACPC,OAAO,CAAC,QAAA,CAAA,CACRC,eAAe,CAAChB,GAAAA,EAAKC,OAAAA,EAASC,OAAAA,CAAAA;QAEjC,MAAMe,KAAAA,GAAQ,MAAMvB,kBAAAA,CAAmBc,aAAAA,CAAAA;AACvC,QAAA,MAAMU,OAAAA,GAAU;AAAID,YAAAA,GAAAA;AAAM,SAAA,CAACE,MAAM,CAAC,CAACC,OAAS,CAACP,MAAAA,CAAOQ,GAAG,CAACD,IAAAA,CAAAA,CAAAA;;;QAIxD,IAAIF,OAAAA,CAAQI,MAAM,KAAK,CAAA,EAAG;AACxB,YAAA,MAAM,IAAIC,KAAAA,CACR,CAAC,SAAS,EAAEtB,QAAQ,MAAM,EAAEC,OAAAA,CAAQ,KAAK,EAAEF,GAAAA,CAAI,yCAAyC,EAAEQ,aAAAA,CAAc,0CAA0C,CAAC,CAAA;AAEvJ,QAAA;AAEAgB,QAAAA,OAAAA,CAAQC,GAAG,CAACC,sBAAAA,CAAMC,KAAK,CAAC,CAAC,SAAS,EAAE1B,OAAAA,CAAQ,MAAM,EAAEC,OAAAA,CAAQ,KAAK,EAAEF,GAAAA,CAAI,CAAC,CAAC,CAAA,CAAA;QAEzEkB,OAAAA,CAAQU,OAAO,CAAC,CAACR,IAAAA,GAAAA;YACfI,OAAAA,CAAQC,GAAG,CAAC,CAAC,oBAAoB,EAAEhB,qBAAAA,CAAKC,IAAI,CAACF,aAAAA,EAAeY,IAAAA,CAAAA,CAAAA,CAAO,CAAA;AACrE,QAAA,CAAA,CAAA;IACF,CAAA,QAAU;AACR,QAAA,MAAMf,IAAIwB,OAAO,EAAA;AACnB,IAAA;AACF;AAEA;;AAEC,UACKC,OAAAA,GAAyB,IAAA;IAC7B,OAAOC,uBAAAA,CAAc,cAAA,CAAA,CAClBC,SAAS,CAAC,2BAAA,CAAA,CACVC,WAAW,CACV,uFAAA,CAAA,CAEDlC,MAAM,CAACmC,iBAAAA,CAAU,cAAA,EAAgBnC,MAAAA,CAAAA,CAAAA;AACtC;;;;;"}
@@ -0,0 +1,54 @@
1
+ import path from 'node:path';
2
+ import { createCommand } from 'commander';
3
+ import chalk from 'chalk';
4
+ import fse from 'fs-extra';
5
+ import { compileStrapi, createStrapi } from '@strapi/core';
6
+ import { runAction } from '../../utils/helpers.mjs';
7
+
8
+ const listMigrationFiles = async (dir)=>{
9
+ try {
10
+ return new Set(await fse.readdir(dir));
11
+ } catch {
12
+ // The directory may not exist yet (no migrations generated before).
13
+ return new Set();
14
+ }
15
+ };
16
+ /**
17
+ * Renames an attribute on a content-type or component and generates the
18
+ * data-preserving migration in a single step, reusing the same rename resolver
19
+ * the Content-Type Builder admin uses.
20
+ */ const action = async (uid, oldName, newName)=>{
21
+ const appContext = await compileStrapi();
22
+ const app = await createStrapi(appContext).load();
23
+ try {
24
+ // The Content-Type Builder always writes to the app's *source* migrations
25
+ // dir (the database-configured dir points at build output when
26
+ // `useTypescriptMigrations` is enabled).
27
+ const migrationsDir = path.join(app.dirs.app.root, 'database', 'migrations');
28
+ const before = await listMigrationFiles(migrationsDir);
29
+ await app.plugin('content-type-builder').service('schema').renameAttribute(uid, oldName, newName);
30
+ const after = await listMigrationFiles(migrationsDir);
31
+ const created = [
32
+ ...after
33
+ ].filter((file)=>!before.has(file));
34
+ // The service refuses renames it cannot migrate before touching the schema,
35
+ // so a rename without a migration file means something went wrong.
36
+ if (created.length === 0) {
37
+ throw new Error(`Renamed "${oldName}" to "${newName}" on ${uid}, but no rename migration was written to ${migrationsDir}. Check the schema file before restarting.`);
38
+ }
39
+ console.log(chalk.green(`Renamed "${oldName}" to "${newName}" on ${uid}.`));
40
+ created.forEach((file)=>{
41
+ console.log(`Generated migration ${path.join(migrationsDir, file)}`);
42
+ });
43
+ } finally{
44
+ await app.destroy();
45
+ }
46
+ };
47
+ /**
48
+ * `$ strapi rename:field <uid> <oldName> <newName>`
49
+ */ const command = ()=>{
50
+ return createCommand('rename:field').arguments('<uid> <oldName> <newName>').description('Rename a content-type or component attribute and generate a data-preserving migration').action(runAction('rename:field', action));
51
+ };
52
+
53
+ export { action, command };
54
+ //# sourceMappingURL=rename-field.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename-field.mjs","sources":["../../../../../src/cli/commands/content-types/rename-field.ts"],"sourcesContent":["import path from 'node:path';\nimport { createCommand } from 'commander';\nimport chalk from 'chalk';\nimport fse from 'fs-extra';\n\nimport { createStrapi, compileStrapi } from '@strapi/core';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\n\nconst listMigrationFiles = async (dir: string): Promise<Set<string>> => {\n try {\n return new Set(await fse.readdir(dir));\n } catch {\n // The directory may not exist yet (no migrations generated before).\n return new Set();\n }\n};\n\n/**\n * Renames an attribute on a content-type or component and generates the\n * data-preserving migration in a single step, reusing the same rename resolver\n * the Content-Type Builder admin uses.\n */\nconst action = async (uid: string, oldName: string, newName: string) => {\n const appContext = await compileStrapi();\n const app = await createStrapi(appContext).load();\n\n try {\n // The Content-Type Builder always writes to the app's *source* migrations\n // dir (the database-configured dir points at build output when\n // `useTypescriptMigrations` is enabled).\n const migrationsDir = path.join(app.dirs.app.root, 'database', 'migrations');\n\n const before = await listMigrationFiles(migrationsDir);\n\n await app\n .plugin('content-type-builder')\n .service('schema')\n .renameAttribute(uid, oldName, newName);\n\n const after = await listMigrationFiles(migrationsDir);\n const created = [...after].filter((file) => !before.has(file));\n\n // The service refuses renames it cannot migrate before touching the schema,\n // so a rename without a migration file means something went wrong.\n if (created.length === 0) {\n throw new Error(\n `Renamed \"${oldName}\" to \"${newName}\" on ${uid}, but no rename migration was written to ${migrationsDir}. Check the schema file before restarting.`\n );\n }\n\n console.log(chalk.green(`Renamed \"${oldName}\" to \"${newName}\" on ${uid}.`));\n\n created.forEach((file) => {\n console.log(`Generated migration ${path.join(migrationsDir, file)}`);\n });\n } finally {\n await app.destroy();\n }\n};\n\n/**\n * `$ strapi rename:field <uid> <oldName> <newName>`\n */\nconst command: StrapiCommand = () => {\n return createCommand('rename:field')\n .arguments('<uid> <oldName> <newName>')\n .description(\n 'Rename a content-type or component attribute and generate a data-preserving migration'\n )\n .action(runAction('rename:field', action));\n};\n\nexport { action, command };\n"],"names":["listMigrationFiles","dir","Set","fse","readdir","action","uid","oldName","newName","appContext","compileStrapi","app","createStrapi","load","migrationsDir","path","join","dirs","root","before","plugin","service","renameAttribute","after","created","filter","file","has","length","Error","console","log","chalk","green","forEach","destroy","command","createCommand","arguments","description","runAction"],"mappings":";;;;;;;AAUA,MAAMA,qBAAqB,OAAOC,GAAAA,GAAAA;IAChC,IAAI;AACF,QAAA,OAAO,IAAIC,GAAAA,CAAI,MAAMC,GAAAA,CAAIC,OAAO,CAACH,GAAAA,CAAAA,CAAAA;AACnC,IAAA,CAAA,CAAE,OAAM;;AAEN,QAAA,OAAO,IAAIC,GAAAA,EAAAA;AACb,IAAA;AACF,CAAA;AAEA;;;;AAIC,IACD,MAAMG,MAAAA,GAAS,OAAOC,GAAAA,EAAaC,OAAAA,EAAiBC,OAAAA,GAAAA;AAClD,IAAA,MAAMC,aAAa,MAAMC,aAAAA,EAAAA;AACzB,IAAA,MAAMC,GAAAA,GAAM,MAAMC,YAAAA,CAAaH,UAAAA,CAAAA,CAAYI,IAAI,EAAA;IAE/C,IAAI;;;;QAIF,MAAMC,aAAAA,GAAgBC,IAAAA,CAAKC,IAAI,CAACL,GAAAA,CAAIM,IAAI,CAACN,GAAG,CAACO,IAAI,EAAE,UAAA,EAAY,YAAA,CAAA;QAE/D,MAAMC,MAAAA,GAAS,MAAMnB,kBAAAA,CAAmBc,aAAAA,CAAAA;QAExC,MAAMH,GAAAA,CACHS,MAAM,CAAC,sBAAA,CAAA,CACPC,OAAO,CAAC,QAAA,CAAA,CACRC,eAAe,CAAChB,GAAAA,EAAKC,OAAAA,EAASC,OAAAA,CAAAA;QAEjC,MAAMe,KAAAA,GAAQ,MAAMvB,kBAAAA,CAAmBc,aAAAA,CAAAA;AACvC,QAAA,MAAMU,OAAAA,GAAU;AAAID,YAAAA,GAAAA;AAAM,SAAA,CAACE,MAAM,CAAC,CAACC,OAAS,CAACP,MAAAA,CAAOQ,GAAG,CAACD,IAAAA,CAAAA,CAAAA;;;QAIxD,IAAIF,OAAAA,CAAQI,MAAM,KAAK,CAAA,EAAG;AACxB,YAAA,MAAM,IAAIC,KAAAA,CACR,CAAC,SAAS,EAAEtB,QAAQ,MAAM,EAAEC,OAAAA,CAAQ,KAAK,EAAEF,GAAAA,CAAI,yCAAyC,EAAEQ,aAAAA,CAAc,0CAA0C,CAAC,CAAA;AAEvJ,QAAA;AAEAgB,QAAAA,OAAAA,CAAQC,GAAG,CAACC,KAAAA,CAAMC,KAAK,CAAC,CAAC,SAAS,EAAE1B,OAAAA,CAAQ,MAAM,EAAEC,OAAAA,CAAQ,KAAK,EAAEF,GAAAA,CAAI,CAAC,CAAC,CAAA,CAAA;QAEzEkB,OAAAA,CAAQU,OAAO,CAAC,CAACR,IAAAA,GAAAA;YACfI,OAAAA,CAAQC,GAAG,CAAC,CAAC,oBAAoB,EAAEhB,IAAAA,CAAKC,IAAI,CAACF,aAAAA,EAAeY,IAAAA,CAAAA,CAAAA,CAAO,CAAA;AACrE,QAAA,CAAA,CAAA;IACF,CAAA,QAAU;AACR,QAAA,MAAMf,IAAIwB,OAAO,EAAA;AACnB,IAAA;AACF;AAEA;;AAEC,UACKC,OAAAA,GAAyB,IAAA;IAC7B,OAAOC,aAAAA,CAAc,cAAA,CAAA,CAClBC,SAAS,CAAC,2BAAA,CAAA,CACVC,WAAW,CACV,uFAAA,CAAA,CAEDlC,MAAM,CAACmC,SAAAA,CAAU,cAAA,EAAgBnC,MAAAA,CAAAA,CAAAA;AACtC;;;;"}
@@ -2,7 +2,6 @@
2
2
 
3
3
  var commander = require('commander');
4
4
  var cluster = require('node:cluster');
5
- var develop = require('../../node/develop.js');
6
5
  var errors = require('../../node/core/errors.js');
7
6
 
8
7
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -16,7 +15,10 @@ const action = async (options)=>{
16
15
  options.logger.warn('[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.');
17
16
  }
18
17
  }
19
- await develop.develop(options);
18
+ // Loaded lazily: every command is registered on CLI startup, so a static import would make
19
+ // `strapi start` load the whole admin build toolchain (including admin source via staticFiles).
20
+ const { develop: nodeDevelop } = await Promise.resolve().then(function () { return require('../../node/develop.js'); });
21
+ await nodeDevelop(options);
20
22
  } catch (err) {
21
23
  errors.handleUnexpectedError(err);
22
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"develop.js","sources":["../../../../src/cli/commands/develop.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport cluster from 'node:cluster';\nimport type { StrapiCommand } from '../types';\nimport { develop as nodeDevelop, DevelopOptions } from '../../node/develop';\nimport { handleUnexpectedError } from '../../node/core/errors';\n\ntype DevelopCLIOptions = DevelopOptions;\n\nconst action = async (options: DevelopCLIOptions) => {\n try {\n if (cluster.isPrimary) {\n if (options.bundler === 'webpack') {\n options.logger.warn(\n '[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.'\n );\n }\n }\n\n await nodeDevelop(options);\n } catch (err) {\n handleUnexpectedError(err);\n }\n};\n\n/**\n * `$ strapi develop`\n */\nconst command: StrapiCommand = ({ ctx }) => {\n return createCommand('develop')\n .alias('dev')\n .option('--bundler [bundler]', 'Bundler to use (webpack or vite)', 'vite')\n .option('-d, --debug', 'Enable debugging mode with verbose logs', false)\n .option('--silent', \"Don't log anything\", false)\n .option('--polling', 'Watch for file changes in network directories', false)\n .option('--watch-admin', 'Watch the admin panel for hot changes', true)\n .option('--no-watch-admin', 'Do not watch the admin panel for hot changes')\n .option('--build-admin', 'Build the admin panel', true)\n .option('--no-build-admin', 'Do not build the admin panel in case watch is disabled')\n .option('--open', 'Open the admin in your browser', true)\n .option('--install-deps', 'Auto-install missing admin dependencies', true)\n .option('--no-install-deps', 'Do not auto-install missing admin dependencies')\n .description('Start your Strapi application in development mode')\n .action(async (options: DevelopCLIOptions) => {\n return action({ ...options, ...ctx });\n });\n};\n\nexport { command };\n"],"names":["action","options","cluster","isPrimary","bundler","logger","warn","nodeDevelop","err","handleUnexpectedError","command","ctx","createCommand","alias","option","description"],"mappings":";;;;;;;;;;;AAQA,MAAMA,SAAS,OAAOC,OAAAA,GAAAA;IACpB,IAAI;QACF,IAAIC,wBAAAA,CAAQC,SAAS,EAAE;YACrB,IAAIF,OAAAA,CAAQG,OAAO,KAAK,SAAA,EAAW;gBACjCH,OAAAA,CAAQI,MAAM,CAACC,IAAI,CACjB,yFAAA,CAAA;AAEJ,YAAA;AACF,QAAA;AAEA,QAAA,MAAMC,eAAAA,CAAYN,OAAAA,CAAAA;AACpB,IAAA,CAAA,CAAE,OAAOO,GAAAA,EAAK;QACZC,4BAAAA,CAAsBD,GAAAA,CAAAA;AACxB,IAAA;AACF,CAAA;AAEA;;AAEC,IACD,MAAME,OAAAA,GAAyB,CAAC,EAAEC,GAAG,EAAE,GAAA;AACrC,IAAA,OAAOC,uBAAAA,CAAc,SAAA,CAAA,CAClBC,KAAK,CAAC,KAAA,CAAA,CACNC,MAAM,CAAC,qBAAA,EAAuB,kCAAA,EAAoC,MAAA,CAAA,CAClEA,MAAM,CAAC,aAAA,EAAe,yCAAA,EAA2C,KAAA,CAAA,CACjEA,MAAM,CAAC,UAAA,EAAY,oBAAA,EAAsB,KAAA,CAAA,CACzCA,MAAM,CAAC,WAAA,EAAa,+CAAA,EAAiD,KAAA,CAAA,CACrEA,MAAM,CAAC,eAAA,EAAiB,yCAAyC,IAAA,CAAA,CACjEA,MAAM,CAAC,kBAAA,EAAoB,8CAAA,CAAA,CAC3BA,MAAM,CAAC,eAAA,EAAiB,uBAAA,EAAyB,IAAA,CAAA,CACjDA,MAAM,CAAC,kBAAA,EAAoB,wDAAA,CAAA,CAC3BA,MAAM,CAAC,QAAA,EAAU,gCAAA,EAAkC,IAAA,CAAA,CACnDA,MAAM,CAAC,gBAAA,EAAkB,yCAAA,EAA2C,IAAA,CAAA,CACpEA,MAAM,CAAC,mBAAA,EAAqB,gDAAA,CAAA,CAC5BC,WAAW,CAAC,mDAAA,CAAA,CACZf,MAAM,CAAC,OAAOC,OAAAA,GAAAA;AACb,QAAA,OAAOD,MAAAA,CAAO;AAAE,YAAA,GAAGC,OAAO;AAAE,YAAA,GAAGU;AAAI,SAAA,CAAA;AACrC,IAAA,CAAA,CAAA;AACJ;;;;"}
1
+ {"version":3,"file":"develop.js","sources":["../../../../src/cli/commands/develop.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport cluster from 'node:cluster';\nimport type { StrapiCommand } from '../types';\nimport type { DevelopOptions } from '../../node/develop';\nimport { handleUnexpectedError } from '../../node/core/errors';\n\ntype DevelopCLIOptions = DevelopOptions;\n\nconst action = async (options: DevelopCLIOptions) => {\n try {\n if (cluster.isPrimary) {\n if (options.bundler === 'webpack') {\n options.logger.warn(\n '[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.'\n );\n }\n }\n\n // Loaded lazily: every command is registered on CLI startup, so a static import would make\n // `strapi start` load the whole admin build toolchain (including admin source via staticFiles).\n const { develop: nodeDevelop } = await import('../../node/develop');\n await nodeDevelop(options);\n } catch (err) {\n handleUnexpectedError(err);\n }\n};\n\n/**\n * `$ strapi develop`\n */\nconst command: StrapiCommand = ({ ctx }) => {\n return createCommand('develop')\n .alias('dev')\n .option('--bundler [bundler]', 'Bundler to use (webpack or vite)', 'vite')\n .option('-d, --debug', 'Enable debugging mode with verbose logs', false)\n .option('--silent', \"Don't log anything\", false)\n .option('--polling', 'Watch for file changes in network directories', false)\n .option('--watch-admin', 'Watch the admin panel for hot changes', true)\n .option('--no-watch-admin', 'Do not watch the admin panel for hot changes')\n .option('--build-admin', 'Build the admin panel', true)\n .option('--no-build-admin', 'Do not build the admin panel in case watch is disabled')\n .option('--open', 'Open the admin in your browser', true)\n .option('--install-deps', 'Auto-install missing admin dependencies', true)\n .option('--no-install-deps', 'Do not auto-install missing admin dependencies')\n .description('Start your Strapi application in development mode')\n .action(async (options: DevelopCLIOptions) => {\n return action({ ...options, ...ctx });\n });\n};\n\nexport { command };\n"],"names":["action","options","cluster","isPrimary","bundler","logger","warn","develop","nodeDevelop","err","handleUnexpectedError","command","ctx","createCommand","alias","option","description"],"mappings":";;;;;;;;;;AAQA,MAAMA,SAAS,OAAOC,OAAAA,GAAAA;IACpB,IAAI;QACF,IAAIC,wBAAAA,CAAQC,SAAS,EAAE;YACrB,IAAIF,OAAAA,CAAQG,OAAO,KAAK,SAAA,EAAW;gBACjCH,OAAAA,CAAQI,MAAM,CAACC,IAAI,CACjB,yFAAA,CAAA;AAEJ,YAAA;AACF,QAAA;;;AAIA,QAAA,MAAM,EAAEC,OAAAA,EAASC,WAAW,EAAE,GAAG,MAAM,oDAAO,uBAAA,KAAA;AAC9C,QAAA,MAAMA,WAAAA,CAAYP,OAAAA,CAAAA;AACpB,IAAA,CAAA,CAAE,OAAOQ,GAAAA,EAAK;QACZC,4BAAAA,CAAsBD,GAAAA,CAAAA;AACxB,IAAA;AACF,CAAA;AAEA;;AAEC,IACD,MAAME,OAAAA,GAAyB,CAAC,EAAEC,GAAG,EAAE,GAAA;AACrC,IAAA,OAAOC,uBAAAA,CAAc,SAAA,CAAA,CAClBC,KAAK,CAAC,KAAA,CAAA,CACNC,MAAM,CAAC,qBAAA,EAAuB,kCAAA,EAAoC,MAAA,CAAA,CAClEA,MAAM,CAAC,aAAA,EAAe,yCAAA,EAA2C,KAAA,CAAA,CACjEA,MAAM,CAAC,UAAA,EAAY,oBAAA,EAAsB,KAAA,CAAA,CACzCA,MAAM,CAAC,WAAA,EAAa,+CAAA,EAAiD,KAAA,CAAA,CACrEA,MAAM,CAAC,eAAA,EAAiB,yCAAyC,IAAA,CAAA,CACjEA,MAAM,CAAC,kBAAA,EAAoB,8CAAA,CAAA,CAC3BA,MAAM,CAAC,eAAA,EAAiB,uBAAA,EAAyB,IAAA,CAAA,CACjDA,MAAM,CAAC,kBAAA,EAAoB,wDAAA,CAAA,CAC3BA,MAAM,CAAC,QAAA,EAAU,gCAAA,EAAkC,IAAA,CAAA,CACnDA,MAAM,CAAC,gBAAA,EAAkB,yCAAA,EAA2C,IAAA,CAAA,CACpEA,MAAM,CAAC,mBAAA,EAAqB,gDAAA,CAAA,CAC5BC,WAAW,CAAC,mDAAA,CAAA,CACZhB,MAAM,CAAC,OAAOC,OAAAA,GAAAA;AACb,QAAA,OAAOD,MAAAA,CAAO;AAAE,YAAA,GAAGC,OAAO;AAAE,YAAA,GAAGW;AAAI,SAAA,CAAA;AACrC,IAAA,CAAA,CAAA;AACJ;;;;"}
@@ -1,6 +1,5 @@
1
1
  import { createCommand } from 'commander';
2
2
  import cluster from 'node:cluster';
3
- import { develop } from '../../node/develop.mjs';
4
3
  import { handleUnexpectedError } from '../../node/core/errors.mjs';
5
4
 
6
5
  const action = async (options)=>{
@@ -10,7 +9,10 @@ const action = async (options)=>{
10
9
  options.logger.warn('[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.');
11
10
  }
12
11
  }
13
- await develop(options);
12
+ // Loaded lazily: every command is registered on CLI startup, so a static import would make
13
+ // `strapi start` load the whole admin build toolchain (including admin source via staticFiles).
14
+ const { develop: nodeDevelop } = await import('../../node/develop.mjs');
15
+ await nodeDevelop(options);
14
16
  } catch (err) {
15
17
  handleUnexpectedError(err);
16
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"develop.mjs","sources":["../../../../src/cli/commands/develop.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport cluster from 'node:cluster';\nimport type { StrapiCommand } from '../types';\nimport { develop as nodeDevelop, DevelopOptions } from '../../node/develop';\nimport { handleUnexpectedError } from '../../node/core/errors';\n\ntype DevelopCLIOptions = DevelopOptions;\n\nconst action = async (options: DevelopCLIOptions) => {\n try {\n if (cluster.isPrimary) {\n if (options.bundler === 'webpack') {\n options.logger.warn(\n '[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.'\n );\n }\n }\n\n await nodeDevelop(options);\n } catch (err) {\n handleUnexpectedError(err);\n }\n};\n\n/**\n * `$ strapi develop`\n */\nconst command: StrapiCommand = ({ ctx }) => {\n return createCommand('develop')\n .alias('dev')\n .option('--bundler [bundler]', 'Bundler to use (webpack or vite)', 'vite')\n .option('-d, --debug', 'Enable debugging mode with verbose logs', false)\n .option('--silent', \"Don't log anything\", false)\n .option('--polling', 'Watch for file changes in network directories', false)\n .option('--watch-admin', 'Watch the admin panel for hot changes', true)\n .option('--no-watch-admin', 'Do not watch the admin panel for hot changes')\n .option('--build-admin', 'Build the admin panel', true)\n .option('--no-build-admin', 'Do not build the admin panel in case watch is disabled')\n .option('--open', 'Open the admin in your browser', true)\n .option('--install-deps', 'Auto-install missing admin dependencies', true)\n .option('--no-install-deps', 'Do not auto-install missing admin dependencies')\n .description('Start your Strapi application in development mode')\n .action(async (options: DevelopCLIOptions) => {\n return action({ ...options, ...ctx });\n });\n};\n\nexport { command };\n"],"names":["action","options","cluster","isPrimary","bundler","logger","warn","nodeDevelop","err","handleUnexpectedError","command","ctx","createCommand","alias","option","description"],"mappings":";;;;;AAQA,MAAMA,SAAS,OAAOC,OAAAA,GAAAA;IACpB,IAAI;QACF,IAAIC,OAAAA,CAAQC,SAAS,EAAE;YACrB,IAAIF,OAAAA,CAAQG,OAAO,KAAK,SAAA,EAAW;gBACjCH,OAAAA,CAAQI,MAAM,CAACC,IAAI,CACjB,yFAAA,CAAA;AAEJ,YAAA;AACF,QAAA;AAEA,QAAA,MAAMC,OAAAA,CAAYN,OAAAA,CAAAA;AACpB,IAAA,CAAA,CAAE,OAAOO,GAAAA,EAAK;QACZC,qBAAAA,CAAsBD,GAAAA,CAAAA;AACxB,IAAA;AACF,CAAA;AAEA;;AAEC,IACD,MAAME,OAAAA,GAAyB,CAAC,EAAEC,GAAG,EAAE,GAAA;AACrC,IAAA,OAAOC,aAAAA,CAAc,SAAA,CAAA,CAClBC,KAAK,CAAC,KAAA,CAAA,CACNC,MAAM,CAAC,qBAAA,EAAuB,kCAAA,EAAoC,MAAA,CAAA,CAClEA,MAAM,CAAC,aAAA,EAAe,yCAAA,EAA2C,KAAA,CAAA,CACjEA,MAAM,CAAC,UAAA,EAAY,oBAAA,EAAsB,KAAA,CAAA,CACzCA,MAAM,CAAC,WAAA,EAAa,+CAAA,EAAiD,KAAA,CAAA,CACrEA,MAAM,CAAC,eAAA,EAAiB,yCAAyC,IAAA,CAAA,CACjEA,MAAM,CAAC,kBAAA,EAAoB,8CAAA,CAAA,CAC3BA,MAAM,CAAC,eAAA,EAAiB,uBAAA,EAAyB,IAAA,CAAA,CACjDA,MAAM,CAAC,kBAAA,EAAoB,wDAAA,CAAA,CAC3BA,MAAM,CAAC,QAAA,EAAU,gCAAA,EAAkC,IAAA,CAAA,CACnDA,MAAM,CAAC,gBAAA,EAAkB,yCAAA,EAA2C,IAAA,CAAA,CACpEA,MAAM,CAAC,mBAAA,EAAqB,gDAAA,CAAA,CAC5BC,WAAW,CAAC,mDAAA,CAAA,CACZf,MAAM,CAAC,OAAOC,OAAAA,GAAAA;AACb,QAAA,OAAOD,MAAAA,CAAO;AAAE,YAAA,GAAGC,OAAO;AAAE,YAAA,GAAGU;AAAI,SAAA,CAAA;AACrC,IAAA,CAAA,CAAA;AACJ;;;;"}
1
+ {"version":3,"file":"develop.mjs","sources":["../../../../src/cli/commands/develop.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport cluster from 'node:cluster';\nimport type { StrapiCommand } from '../types';\nimport type { DevelopOptions } from '../../node/develop';\nimport { handleUnexpectedError } from '../../node/core/errors';\n\ntype DevelopCLIOptions = DevelopOptions;\n\nconst action = async (options: DevelopCLIOptions) => {\n try {\n if (cluster.isPrimary) {\n if (options.bundler === 'webpack') {\n options.logger.warn(\n '[@strapi/strapi]: Using webpack as a bundler is deprecated. You should migrate to vite.'\n );\n }\n }\n\n // Loaded lazily: every command is registered on CLI startup, so a static import would make\n // `strapi start` load the whole admin build toolchain (including admin source via staticFiles).\n const { develop: nodeDevelop } = await import('../../node/develop');\n await nodeDevelop(options);\n } catch (err) {\n handleUnexpectedError(err);\n }\n};\n\n/**\n * `$ strapi develop`\n */\nconst command: StrapiCommand = ({ ctx }) => {\n return createCommand('develop')\n .alias('dev')\n .option('--bundler [bundler]', 'Bundler to use (webpack or vite)', 'vite')\n .option('-d, --debug', 'Enable debugging mode with verbose logs', false)\n .option('--silent', \"Don't log anything\", false)\n .option('--polling', 'Watch for file changes in network directories', false)\n .option('--watch-admin', 'Watch the admin panel for hot changes', true)\n .option('--no-watch-admin', 'Do not watch the admin panel for hot changes')\n .option('--build-admin', 'Build the admin panel', true)\n .option('--no-build-admin', 'Do not build the admin panel in case watch is disabled')\n .option('--open', 'Open the admin in your browser', true)\n .option('--install-deps', 'Auto-install missing admin dependencies', true)\n .option('--no-install-deps', 'Do not auto-install missing admin dependencies')\n .description('Start your Strapi application in development mode')\n .action(async (options: DevelopCLIOptions) => {\n return action({ ...options, ...ctx });\n });\n};\n\nexport { command };\n"],"names":["action","options","cluster","isPrimary","bundler","logger","warn","develop","nodeDevelop","err","handleUnexpectedError","command","ctx","createCommand","alias","option","description"],"mappings":";;;;AAQA,MAAMA,SAAS,OAAOC,OAAAA,GAAAA;IACpB,IAAI;QACF,IAAIC,OAAAA,CAAQC,SAAS,EAAE;YACrB,IAAIF,OAAAA,CAAQG,OAAO,KAAK,SAAA,EAAW;gBACjCH,OAAAA,CAAQI,MAAM,CAACC,IAAI,CACjB,yFAAA,CAAA;AAEJ,YAAA;AACF,QAAA;;;AAIA,QAAA,MAAM,EAAEC,OAAAA,EAASC,WAAW,EAAE,GAAG,MAAM,OAAO,wBAAA,CAAA;AAC9C,QAAA,MAAMA,WAAAA,CAAYP,OAAAA,CAAAA;AACpB,IAAA,CAAA,CAAE,OAAOQ,GAAAA,EAAK;QACZC,qBAAAA,CAAsBD,GAAAA,CAAAA;AACxB,IAAA;AACF,CAAA;AAEA;;AAEC,IACD,MAAME,OAAAA,GAAyB,CAAC,EAAEC,GAAG,EAAE,GAAA;AACrC,IAAA,OAAOC,aAAAA,CAAc,SAAA,CAAA,CAClBC,KAAK,CAAC,KAAA,CAAA,CACNC,MAAM,CAAC,qBAAA,EAAuB,kCAAA,EAAoC,MAAA,CAAA,CAClEA,MAAM,CAAC,aAAA,EAAe,yCAAA,EAA2C,KAAA,CAAA,CACjEA,MAAM,CAAC,UAAA,EAAY,oBAAA,EAAsB,KAAA,CAAA,CACzCA,MAAM,CAAC,WAAA,EAAa,+CAAA,EAAiD,KAAA,CAAA,CACrEA,MAAM,CAAC,eAAA,EAAiB,yCAAyC,IAAA,CAAA,CACjEA,MAAM,CAAC,kBAAA,EAAoB,8CAAA,CAAA,CAC3BA,MAAM,CAAC,eAAA,EAAiB,uBAAA,EAAyB,IAAA,CAAA,CACjDA,MAAM,CAAC,kBAAA,EAAoB,wDAAA,CAAA,CAC3BA,MAAM,CAAC,QAAA,EAAU,gCAAA,EAAkC,IAAA,CAAA,CACnDA,MAAM,CAAC,gBAAA,EAAkB,yCAAA,EAA2C,IAAA,CAAA,CACpEA,MAAM,CAAC,mBAAA,EAAqB,gDAAA,CAAA,CAC5BC,WAAW,CAAC,mDAAA,CAAA,CACZhB,MAAM,CAAC,OAAOC,OAAAA,GAAAA;AACb,QAAA,OAAOD,MAAAA,CAAO;AAAE,YAAA,GAAGC,OAAO;AAAE,YAAA,GAAGW;AAAI,SAAA,CAAA;AACrC,IAAA,CAAA,CAAA;AACJ;;;;"}
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ var commander = require('commander');
4
+ var helpers = require('../../utils/helpers.js');
5
+ var action = require('./install/action.js');
6
+
7
+ /**
8
+ * `$ strapi enterprise`
9
+ */ const command = ({ ctx })=>{
10
+ const enterprise = commander.createCommand('enterprise').description('Manage Strapi Enterprise plugins for your Strapi application');
11
+ // `$ strapi enterprise install [packages...]`
12
+ enterprise.command('install [packages...]').description('Install or upgrade Strapi Enterprise plugins. Without package names, choose them from a list.').action(helpers.runAction('enterprise:install', (packages = [])=>action.action(packages, ctx)));
13
+ return enterprise;
14
+ };
15
+
16
+ exports.command = command;
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/cli/commands/enterprise/index.ts"],"sourcesContent":["import { createCommand } from 'commander';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\nimport { action as install } from './install/action';\n\n/**\n * `$ strapi enterprise`\n */\nconst command: StrapiCommand = ({ ctx }) => {\n const enterprise = createCommand('enterprise').description(\n 'Manage Strapi Enterprise plugins for your Strapi application'\n );\n\n // `$ strapi enterprise install [packages...]`\n enterprise\n .command('install [packages...]')\n .description(\n 'Install or upgrade Strapi Enterprise plugins. Without package names, choose them from a list.'\n )\n .action(runAction('enterprise:install', (packages: string[] = []) => install(packages, ctx)));\n\n return enterprise;\n};\n\nexport { command };\n"],"names":["command","ctx","enterprise","createCommand","description","action","runAction","packages","install"],"mappings":";;;;;;AAMA;;AAEC,IACD,MAAMA,OAAAA,GAAyB,CAAC,EAAEC,GAAG,EAAE,GAAA;AACrC,IAAA,MAAMC,UAAAA,GAAaC,uBAAAA,CAAc,YAAA,CAAA,CAAcC,WAAW,CACxD,8DAAA,CAAA;;AAIFF,IAAAA,UAAAA,CACGF,OAAO,CAAC,uBAAA,CAAA,CACRI,WAAW,CACV,+FAAA,CAAA,CAEDC,MAAM,CAACC,iBAAAA,CAAU,sBAAsB,CAACC,QAAAA,GAAqB,EAAE,GAAKC,cAAQD,QAAAA,EAAUN,GAAAA,CAAAA,CAAAA,CAAAA;IAEzF,OAAOC,UAAAA;AACT;;;;"}
@@ -0,0 +1,15 @@
1
+ import { createCommand } from 'commander';
2
+ import { runAction } from '../../utils/helpers.mjs';
3
+ import { action } from './install/action.mjs';
4
+
5
+ /**
6
+ * `$ strapi enterprise`
7
+ */ const command = ({ ctx })=>{
8
+ const enterprise = createCommand('enterprise').description('Manage Strapi Enterprise plugins for your Strapi application');
9
+ // `$ strapi enterprise install [packages...]`
10
+ enterprise.command('install [packages...]').description('Install or upgrade Strapi Enterprise plugins. Without package names, choose them from a list.').action(runAction('enterprise:install', (packages = [])=>action(packages, ctx)));
11
+ return enterprise;
12
+ };
13
+
14
+ export { command };
15
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../src/cli/commands/enterprise/index.ts"],"sourcesContent":["import { createCommand } from 'commander';\n\nimport type { StrapiCommand } from '../../types';\nimport { runAction } from '../../utils/helpers';\nimport { action as install } from './install/action';\n\n/**\n * `$ strapi enterprise`\n */\nconst command: StrapiCommand = ({ ctx }) => {\n const enterprise = createCommand('enterprise').description(\n 'Manage Strapi Enterprise plugins for your Strapi application'\n );\n\n // `$ strapi enterprise install [packages...]`\n enterprise\n .command('install [packages...]')\n .description(\n 'Install or upgrade Strapi Enterprise plugins. Without package names, choose them from a list.'\n )\n .action(runAction('enterprise:install', (packages: string[] = []) => install(packages, ctx)));\n\n return enterprise;\n};\n\nexport { command };\n"],"names":["command","ctx","enterprise","createCommand","description","action","runAction","packages","install"],"mappings":";;;;AAMA;;AAEC,IACD,MAAMA,OAAAA,GAAyB,CAAC,EAAEC,GAAG,EAAE,GAAA;AACrC,IAAA,MAAMC,UAAAA,GAAaC,aAAAA,CAAc,YAAA,CAAA,CAAcC,WAAW,CACxD,8DAAA,CAAA;;AAIFF,IAAAA,UAAAA,CACGF,OAAO,CAAC,uBAAA,CAAA,CACRI,WAAW,CACV,+FAAA,CAAA,CAEDC,MAAM,CAACC,SAAAA,CAAU,sBAAsB,CAACC,QAAAA,GAAqB,EAAE,GAAKC,OAAQD,QAAAA,EAAUN,GAAAA,CAAAA,CAAAA,CAAAA;IAEzF,OAAOC,UAAAA;AACT;;;;"}
@@ -0,0 +1,253 @@
1
+ 'use strict';
2
+
3
+ var os = require('node:os');
4
+ var env = require('../../../../node/core/env.js');
5
+ var constants = require('./constants.js');
6
+ var discovery = require('./discovery.js');
7
+ var errors = require('./errors.js');
8
+ var installPackages = require('./install-packages.js');
9
+ var license = require('./license.js');
10
+ var packageManager = require('./package-manager.js');
11
+ var pluginStatus = require('./plugin-status.js');
12
+ var registryAccess = require('./registry-access.js');
13
+ var registry = require('./registry.js');
14
+ var selection = require('./selection.js');
15
+ var setupLinks = require('./setup-links.js');
16
+ var versions = require('./versions.js');
17
+
18
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
19
+
20
+ var os__default = /*#__PURE__*/_interopDefault(os);
21
+
22
+ const describeNoStableRelease = (packageName)=>`${packageName} has no stable release yet. To install a prerelease, name its version: ${packageName}@<version>.`;
23
+ const describeStrapiMismatch = (packageName, requiredStrapiRange, strapiVersion)=>`${packageName} requires Strapi ${requiredStrapiRange} and this app uses ${strapiVersion}. Upgrade Strapi first.`;
24
+ const ENTERPRISE_PACKAGE_NAME = new RegExp(`^${constants.ENTERPRISE_SCOPE}/[a-z0-9-][a-z0-9._-]*$`);
25
+ const MAX_PACKAGE_NAME_LENGTH = 214;
26
+ const isValidPackageName = (packageName)=>packageName.length <= MAX_PACKAGE_NAME_LENGTH && ENTERPRISE_PACKAGE_NAME.test(packageName);
27
+ const parsePackageArgument = (packageArgument)=>{
28
+ const scopedArgument = packageArgument.startsWith('@') ? packageArgument : `${constants.ENTERPRISE_SCOPE}/${packageArgument}`;
29
+ const versionSeparatorIndex = scopedArgument.indexOf('@', 1);
30
+ const packageName = versionSeparatorIndex === -1 ? scopedArgument : scopedArgument.slice(0, versionSeparatorIndex);
31
+ const requestedVersion = versionSeparatorIndex === -1 ? undefined : scopedArgument.slice(versionSeparatorIndex + 1);
32
+ if (!packageName.startsWith(`${constants.ENTERPRISE_SCOPE}/`)) {
33
+ throw new errors.EnterpriseInstallError(`${packageArgument} is not an Enterprise package. Enterprise packages start with ${constants.ENTERPRISE_SCOPE}/.`);
34
+ }
35
+ if (!isValidPackageName(packageName)) {
36
+ throw new errors.EnterpriseInstallError(`${packageArgument} is not a valid package name.`);
37
+ }
38
+ return {
39
+ packageName,
40
+ requestedVersion: requestedVersion || undefined
41
+ };
42
+ };
43
+ const resolveNamedPackages = async (requestedPackages, { appDir, license, strapiVersion, logger, dependencies })=>{
44
+ const installSpecs = [];
45
+ for (const { packageName, requestedVersion } of requestedPackages){
46
+ const lookup = await registry.fetchPackument({
47
+ packageName,
48
+ license,
49
+ fetchImplementation: dependencies.fetchImplementation
50
+ });
51
+ const installedVersion = await versions.readAppDependencyVersion(appDir, packageName);
52
+ if (requestedVersion && lookup.status === 'available') {
53
+ const resolvedVersion = versions.resolveRequestedVersion(lookup.packument, requestedVersion, strapiVersion);
54
+ if (!resolvedVersion) {
55
+ throw new errors.EnterpriseInstallError(`${packageName} has no version or tag ${requestedVersion}.`);
56
+ }
57
+ if (resolvedVersion === installedVersion) {
58
+ logger.info(`${packageName} ${resolvedVersion} is already installed.`);
59
+ continue;
60
+ }
61
+ const unsupportedStrapiRange = versions.findUnsupportedStrapiRange(lookup.packument, resolvedVersion, strapiVersion);
62
+ if (unsupportedStrapiRange) {
63
+ logger.warn(`${packageName} ${resolvedVersion} requires Strapi ${unsupportedStrapiRange} and this app uses ${strapiVersion}. Strapi may not start until you upgrade it.`);
64
+ }
65
+ installSpecs.push(`${packageName}@${resolvedVersion}`);
66
+ continue;
67
+ }
68
+ const status = pluginStatus.resolvePluginStatus({
69
+ lookup,
70
+ installedVersion,
71
+ strapiVersion
72
+ });
73
+ switch(status.state){
74
+ case 'not-licensed':
75
+ throw new errors.EnterpriseInstallError(`Your license does not include ${packageName}, or it does not exist. Run strapi enterprise install without a name to see the plugins you can install.`);
76
+ case 'not-found':
77
+ throw new errors.EnterpriseInstallError(`No Enterprise package named ${packageName}. Run strapi enterprise install without a name to see the plugins you can install.`);
78
+ case 'no-stable-release':
79
+ throw new errors.EnterpriseInstallError(describeNoStableRelease(packageName));
80
+ case 'no-compatible-version':
81
+ throw new errors.EnterpriseInstallError(describeStrapiMismatch(packageName, status.requiredStrapiRange, strapiVersion));
82
+ }
83
+ if (status.newerVersionNote) {
84
+ logger.info(`${packageName}: ${status.newerVersionNote}`);
85
+ }
86
+ if (status.state === 'installed') {
87
+ logger.info(`${packageName} ${installedVersion} is already installed and up to date.`);
88
+ continue;
89
+ }
90
+ if (installedVersion && versions.isPrerelease(installedVersion)) {
91
+ logger.info(`${packageName}: replacing the installed prerelease ${installedVersion} with the stable release ${status.targetVersion}.`);
92
+ }
93
+ if (status.state === 'upgrade' && status.isMajorUpgrade) {
94
+ logger.warn(`${packageName}: upgrading from ${installedVersion} to ${status.targetVersion}, a major upgrade that may include breaking changes.`);
95
+ }
96
+ installSpecs.push(`${packageName}@${status.targetVersion}`);
97
+ }
98
+ return installSpecs;
99
+ };
100
+ const selectPlugins = async ({ appDir, license, strapiVersion, logger, dependencies })=>{
101
+ const discoveredPlugins = await discovery.discoverEnterprisePlugins({
102
+ appDir,
103
+ license,
104
+ logger,
105
+ fetchImplementation: dependencies.fetchImplementation
106
+ });
107
+ const rows = discoveredPlugins.map(({ entry, lookup, installedVersion })=>selection.buildPluginRow({
108
+ entry,
109
+ lookup,
110
+ installedVersion,
111
+ strapiVersion
112
+ }));
113
+ const isAnyPluginLicensed = discoveredPlugins.some(({ lookup })=>lookup.status === 'available');
114
+ rows.filter((row)=>row.state === 'not-licensed').forEach((row)=>logger.warn(`${row.entry.packageName} is installed but is not included in your license.`));
115
+ if (!isAnyPluginLicensed && !rows.some((row)=>row.state === 'not-licensed')) {
116
+ throw new errors.EnterpriseInstallError('Your license does not include any Enterprise plugins.');
117
+ }
118
+ if (!rows.some(selection.isSelectable)) {
119
+ const visibleRows = selection.orderVisibleRows(rows);
120
+ // Says why each plugin cannot be installed, rather than calling them all up to date.
121
+ visibleRows.forEach((row)=>{
122
+ const { packageName } = row.entry;
123
+ if (row.state === 'installed' && row.newerVersionNote) {
124
+ logger.info(`${packageName}: ${row.newerVersionNote}`);
125
+ } else if (row.state === 'no-stable-release') {
126
+ logger.info(describeNoStableRelease(packageName));
127
+ } else if (row.state === 'no-compatible-version') {
128
+ logger.info(describeStrapiMismatch(packageName, row.requiredStrapiRange, strapiVersion));
129
+ }
130
+ });
131
+ if (visibleRows.every((row)=>row.state === 'installed' || row.state === 'not-licensed')) {
132
+ logger.info('The Enterprise plugins in your license are installed and up to date.');
133
+ }
134
+ return [];
135
+ }
136
+ return dependencies.promptForPlugins(rows);
137
+ };
138
+ const warnWhenCompatibilityIsUnknown = (strapiVersion, logger)=>{
139
+ if (strapiVersion === undefined) {
140
+ logger.warn(`Could not find ${constants.STRAPI_PACKAGE_NAME} in node_modules, so plugin compatibility is not checked. Install the app's dependencies first.`);
141
+ } else if (!versions.canCheckStrapiCompatibility(strapiVersion)) {
142
+ logger.warn(`This app uses Strapi ${strapiVersion}, a prerelease, so plugin compatibility is not checked.`);
143
+ }
144
+ };
145
+ const runInstall = async ({ appDir, packageArguments, logger, dependencies })=>{
146
+ // The checks that need no license come first, so a mistake there writes nothing, not even the
147
+ // license.txt a pasted license is saved to.
148
+ const requestedPackages = packageArguments.map(parsePackageArgument);
149
+ if (requestedPackages.length === 0 && !dependencies.isInteractive) {
150
+ throw new errors.EnterpriseInstallError('Pass package names, or run the command in an interactive terminal.');
151
+ }
152
+ const packageManager$1 = await packageManager.detectPackageManager(appDir);
153
+ const { license: license$1, source: licenseSource } = await license.resolveLicense({
154
+ appDir,
155
+ isInteractive: dependencies.isInteractive,
156
+ logger,
157
+ env: dependencies.env,
158
+ now: dependencies.now,
159
+ prompt: dependencies.promptForLicense
160
+ });
161
+ const registryAccess$1 = await registryAccess.prepareRegistryAccess({
162
+ appDir,
163
+ packageManager: packageManager$1,
164
+ license: license$1,
165
+ licenseSource,
166
+ logger,
167
+ env: dependencies.env,
168
+ homeDir: dependencies.homeDir
169
+ });
170
+ const strapiVersion = await versions.readInstalledVersion(appDir, constants.STRAPI_PACKAGE_NAME);
171
+ warnWhenCompatibilityIsUnknown(strapiVersion, logger);
172
+ const context = {
173
+ appDir,
174
+ license: license$1,
175
+ strapiVersion,
176
+ logger,
177
+ dependencies
178
+ };
179
+ const installSpecs = requestedPackages.length > 0 ? await resolveNamedPackages(requestedPackages, context) : await selectPlugins(context);
180
+ if (installSpecs.length === 0) {
181
+ logger.info('Nothing to install.');
182
+ return;
183
+ }
184
+ await registryAccess$1.apply();
185
+ const { command, args } = installPackages.buildInstallCommand(packageManager$1, installSpecs);
186
+ logger.info(`Running ${command} ${args.join(' ')}`);
187
+ const installedPackages = await Promise.all(installSpecs.map(async (installSpec)=>{
188
+ const { packageName } = parsePackageArgument(installSpec);
189
+ const previousVersion = await versions.readAppDependencyVersion(appDir, packageName);
190
+ return {
191
+ packageName,
192
+ replacesInstalledVersion: previousVersion !== undefined
193
+ };
194
+ }));
195
+ await dependencies.installPackages({
196
+ appDir,
197
+ packageManager: packageManager$1,
198
+ installSpecs
199
+ });
200
+ await setupLinks.printSetupLinks({
201
+ appDir,
202
+ installedPackages,
203
+ logger
204
+ });
205
+ };
206
+ /**
207
+ * The exit code for an error, after reporting it in one line. The package manager prints its own
208
+ * output when an install fails, so only its exit code is kept then.
209
+ */ const reportInstallError = (error, logger)=>{
210
+ if (error instanceof errors.PackageManagerError) {
211
+ return error.exitCode;
212
+ }
213
+ if (error instanceof errors.PromptCancelledError) {
214
+ return 130;
215
+ }
216
+ if (error instanceof errors.EnterpriseInstallError) {
217
+ logger.error(error.message);
218
+ return 1;
219
+ }
220
+ const message = error instanceof Error ? error.message : String(error);
221
+ logger.error(`strapi enterprise install failed: ${message}`);
222
+ return 1;
223
+ };
224
+ const action = async (packageArguments, { logger })=>{
225
+ const appDir = process.cwd();
226
+ try {
227
+ // Makes STRAPI_LICENSE from the app's `.env` available, as `strapi build` does.
228
+ await env.loadEnv(appDir);
229
+ await runInstall({
230
+ appDir,
231
+ packageArguments,
232
+ logger,
233
+ dependencies: {
234
+ isInteractive: Boolean(process.stdin.isTTY && process.stdout.isTTY),
235
+ env: process.env,
236
+ homeDir: os__default.default.homedir(),
237
+ now: new Date(),
238
+ fetchImplementation: fetch,
239
+ promptForLicense: license.promptForLicense,
240
+ promptForPlugins: selection.promptForPlugins,
241
+ installPackages: installPackages.installPackages
242
+ }
243
+ });
244
+ } catch (error) {
245
+ process.exit(reportInstallError(error, logger));
246
+ }
247
+ };
248
+
249
+ exports.action = action;
250
+ exports.parsePackageArgument = parsePackageArgument;
251
+ exports.reportInstallError = reportInstallError;
252
+ exports.runInstall = runInstall;
253
+ //# sourceMappingURL=action.js.map