@strapi/strapi 5.9.0 → 5.10.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 (292) hide show
  1. package/dist/admin-test.js +11 -8
  2. package/dist/admin-test.js.map +1 -1
  3. package/dist/admin-test.mjs +1 -1
  4. package/dist/admin-test.mjs.map +1 -1
  5. package/dist/admin.js +36 -42
  6. package/dist/admin.js.map +1 -1
  7. package/dist/admin.mjs +28 -35
  8. package/dist/admin.mjs.map +1 -1
  9. package/dist/chunks/aliases-Ca20Yntz.js +80 -0
  10. package/dist/chunks/aliases-Ca20Yntz.js.map +1 -0
  11. package/dist/chunks/aliases-DQ51KexN.mjs +76 -0
  12. package/dist/chunks/aliases-DQ51KexN.mjs.map +1 -0
  13. package/dist/chunks/build-3I6A92J1.js +59 -0
  14. package/dist/chunks/build-3I6A92J1.js.map +1 -0
  15. package/dist/chunks/build-BqigoS45.mjs +85 -0
  16. package/dist/chunks/build-BqigoS45.mjs.map +1 -0
  17. package/dist/chunks/build-CWUlYFQo.js +87 -0
  18. package/dist/chunks/build-CWUlYFQo.js.map +1 -0
  19. package/dist/chunks/build-gBR43Dth.mjs +57 -0
  20. package/dist/chunks/build-gBR43Dth.mjs.map +1 -0
  21. package/dist/chunks/config-5tFWkbOi.js +154 -0
  22. package/dist/chunks/config-5tFWkbOi.js.map +1 -0
  23. package/dist/chunks/config-BSlsDIVc.mjs +243 -0
  24. package/dist/chunks/config-BSlsDIVc.mjs.map +1 -0
  25. package/dist/chunks/config-CLeubzgx.mjs +150 -0
  26. package/dist/chunks/config-CLeubzgx.mjs.map +1 -0
  27. package/dist/chunks/config-CQ94iNYq.js +247 -0
  28. package/dist/chunks/config-CQ94iNYq.js.map +1 -0
  29. package/dist/chunks/index-DtHH3PFG.mjs +3160 -0
  30. package/dist/chunks/index-DtHH3PFG.mjs.map +1 -0
  31. package/dist/chunks/index-kv_K5f7_.js +3185 -0
  32. package/dist/chunks/index-kv_K5f7_.js.map +1 -0
  33. package/dist/chunks/watch-B7qfL21s.js +146 -0
  34. package/dist/chunks/watch-B7qfL21s.js.map +1 -0
  35. package/dist/chunks/watch-BBDpuCFC.js +133 -0
  36. package/dist/chunks/watch-BBDpuCFC.js.map +1 -0
  37. package/dist/chunks/watch-Bhd-75O5.mjs +131 -0
  38. package/dist/chunks/watch-Bhd-75O5.mjs.map +1 -0
  39. package/dist/chunks/watch-CJr1UoWF.mjs +144 -0
  40. package/dist/chunks/watch-CJr1UoWF.mjs.map +1 -0
  41. package/dist/cli/commands/plugin/init/files/typescript.d.ts +20 -7
  42. package/dist/cli/commands/plugin/init/files/typescript.d.ts.map +1 -1
  43. package/dist/cli/commands/version.d.ts.map +1 -1
  44. package/dist/cli/index.d.ts.map +1 -1
  45. package/dist/cli.js +50 -0
  46. package/dist/cli.js.map +1 -0
  47. package/dist/cli.mjs +43 -0
  48. package/dist/cli.mjs.map +1 -0
  49. package/dist/index.js +11 -8
  50. package/dist/index.js.map +1 -1
  51. package/dist/index.mjs +1 -1
  52. package/dist/index.mjs.map +1 -1
  53. package/dist/node/core/errors.d.ts.map +1 -1
  54. package/dist/node/create-build-context.d.ts +1 -1
  55. package/dist/node/create-build-context.d.ts.map +1 -1
  56. package/package.json +26 -26
  57. package/dist/cli/commands/admin/create-user.js +0 -91
  58. package/dist/cli/commands/admin/create-user.js.map +0 -1
  59. package/dist/cli/commands/admin/create-user.mjs +0 -88
  60. package/dist/cli/commands/admin/create-user.mjs.map +0 -1
  61. package/dist/cli/commands/admin/reset-user-password.js +0 -47
  62. package/dist/cli/commands/admin/reset-user-password.js.map +0 -1
  63. package/dist/cli/commands/admin/reset-user-password.mjs +0 -44
  64. package/dist/cli/commands/admin/reset-user-password.mjs.map +0 -1
  65. package/dist/cli/commands/build.js +0 -24
  66. package/dist/cli/commands/build.js.map +0 -1
  67. package/dist/cli/commands/build.mjs +0 -24
  68. package/dist/cli/commands/build.mjs.map +0 -1
  69. package/dist/cli/commands/components/list.js +0 -27
  70. package/dist/cli/commands/components/list.js.map +0 -1
  71. package/dist/cli/commands/components/list.mjs +0 -24
  72. package/dist/cli/commands/components/list.mjs.map +0 -1
  73. package/dist/cli/commands/configuration/dump.js +0 -43
  74. package/dist/cli/commands/configuration/dump.js.map +0 -1
  75. package/dist/cli/commands/configuration/dump.mjs +0 -41
  76. package/dist/cli/commands/configuration/dump.mjs.map +0 -1
  77. package/dist/cli/commands/configuration/restore.js +0 -142
  78. package/dist/cli/commands/configuration/restore.js.map +0 -1
  79. package/dist/cli/commands/configuration/restore.mjs +0 -139
  80. package/dist/cli/commands/configuration/restore.mjs.map +0 -1
  81. package/dist/cli/commands/console.js +0 -29
  82. package/dist/cli/commands/console.js.map +0 -1
  83. package/dist/cli/commands/console.mjs +0 -27
  84. package/dist/cli/commands/console.mjs.map +0 -1
  85. package/dist/cli/commands/content-types/list.js +0 -27
  86. package/dist/cli/commands/content-types/list.js.map +0 -1
  87. package/dist/cli/commands/content-types/list.mjs +0 -24
  88. package/dist/cli/commands/content-types/list.mjs.map +0 -1
  89. package/dist/cli/commands/controllers/list.js +0 -27
  90. package/dist/cli/commands/controllers/list.js.map +0 -1
  91. package/dist/cli/commands/controllers/list.mjs +0 -24
  92. package/dist/cli/commands/controllers/list.mjs.map +0 -1
  93. package/dist/cli/commands/develop.js +0 -29
  94. package/dist/cli/commands/develop.js.map +0 -1
  95. package/dist/cli/commands/develop.mjs +0 -27
  96. package/dist/cli/commands/develop.mjs.map +0 -1
  97. package/dist/cli/commands/export/action.js +0 -118
  98. package/dist/cli/commands/export/action.js.map +0 -1
  99. package/dist/cli/commands/export/action.mjs +0 -116
  100. package/dist/cli/commands/export/action.mjs.map +0 -1
  101. package/dist/cli/commands/export/command.js +0 -23
  102. package/dist/cli/commands/export/command.js.map +0 -1
  103. package/dist/cli/commands/export/command.mjs +0 -24
  104. package/dist/cli/commands/export/command.mjs.map +0 -1
  105. package/dist/cli/commands/generate.js +0 -35
  106. package/dist/cli/commands/generate.js.map +0 -1
  107. package/dist/cli/commands/generate.mjs +0 -13
  108. package/dist/cli/commands/generate.mjs.map +0 -1
  109. package/dist/cli/commands/hooks/list.js +0 -27
  110. package/dist/cli/commands/hooks/list.js.map +0 -1
  111. package/dist/cli/commands/hooks/list.mjs +0 -24
  112. package/dist/cli/commands/hooks/list.mjs.map +0 -1
  113. package/dist/cli/commands/import/action.js +0 -106
  114. package/dist/cli/commands/import/action.js.map +0 -1
  115. package/dist/cli/commands/import/action.mjs +0 -105
  116. package/dist/cli/commands/import/action.mjs.map +0 -1
  117. package/dist/cli/commands/import/command.js +0 -70
  118. package/dist/cli/commands/import/command.js.map +0 -1
  119. package/dist/cli/commands/import/command.mjs +0 -68
  120. package/dist/cli/commands/import/command.mjs.map +0 -1
  121. package/dist/cli/commands/index.js +0 -63
  122. package/dist/cli/commands/index.js.map +0 -1
  123. package/dist/cli/commands/index.mjs +0 -63
  124. package/dist/cli/commands/index.mjs.map +0 -1
  125. package/dist/cli/commands/middlewares/list.js +0 -27
  126. package/dist/cli/commands/middlewares/list.js.map +0 -1
  127. package/dist/cli/commands/middlewares/list.mjs +0 -24
  128. package/dist/cli/commands/middlewares/list.mjs.map +0 -1
  129. package/dist/cli/commands/policies/list.js +0 -27
  130. package/dist/cli/commands/policies/list.js.map +0 -1
  131. package/dist/cli/commands/policies/list.mjs +0 -24
  132. package/dist/cli/commands/policies/list.mjs.map +0 -1
  133. package/dist/cli/commands/report.js +0 -35
  134. package/dist/cli/commands/report.js.map +0 -1
  135. package/dist/cli/commands/report.mjs +0 -35
  136. package/dist/cli/commands/report.mjs.map +0 -1
  137. package/dist/cli/commands/routes/list.js +0 -31
  138. package/dist/cli/commands/routes/list.js.map +0 -1
  139. package/dist/cli/commands/routes/list.mjs +0 -28
  140. package/dist/cli/commands/routes/list.mjs.map +0 -1
  141. package/dist/cli/commands/services/list.js +0 -27
  142. package/dist/cli/commands/services/list.js.map +0 -1
  143. package/dist/cli/commands/services/list.mjs +0 -24
  144. package/dist/cli/commands/services/list.mjs.map +0 -1
  145. package/dist/cli/commands/start.js +0 -27
  146. package/dist/cli/commands/start.js.map +0 -1
  147. package/dist/cli/commands/start.mjs +0 -24
  148. package/dist/cli/commands/start.mjs.map +0 -1
  149. package/dist/cli/commands/telemetry/disable.js +0 -70
  150. package/dist/cli/commands/telemetry/disable.js.map +0 -1
  151. package/dist/cli/commands/telemetry/disable.mjs +0 -67
  152. package/dist/cli/commands/telemetry/disable.mjs.map +0 -1
  153. package/dist/cli/commands/telemetry/enable.js +0 -89
  154. package/dist/cli/commands/telemetry/enable.js.map +0 -1
  155. package/dist/cli/commands/telemetry/enable.mjs +0 -86
  156. package/dist/cli/commands/telemetry/enable.mjs.map +0 -1
  157. package/dist/cli/commands/templates/generate.js +0 -11
  158. package/dist/cli/commands/templates/generate.js.map +0 -1
  159. package/dist/cli/commands/templates/generate.mjs +0 -11
  160. package/dist/cli/commands/templates/generate.mjs.map +0 -1
  161. package/dist/cli/commands/transfer/action.js +0 -130
  162. package/dist/cli/commands/transfer/action.js.map +0 -1
  163. package/dist/cli/commands/transfer/action.mjs +0 -131
  164. package/dist/cli/commands/transfer/action.mjs.map +0 -1
  165. package/dist/cli/commands/transfer/command.js +0 -85
  166. package/dist/cli/commands/transfer/command.js.map +0 -1
  167. package/dist/cli/commands/transfer/command.mjs +0 -84
  168. package/dist/cli/commands/transfer/command.mjs.map +0 -1
  169. package/dist/cli/commands/ts/generate-types.js +0 -36
  170. package/dist/cli/commands/ts/generate-types.js.map +0 -1
  171. package/dist/cli/commands/ts/generate-types.mjs +0 -34
  172. package/dist/cli/commands/ts/generate-types.mjs.map +0 -1
  173. package/dist/cli/commands/version.js +0 -13
  174. package/dist/cli/commands/version.js.map +0 -1
  175. package/dist/cli/commands/version.mjs +0 -13
  176. package/dist/cli/commands/version.mjs.map +0 -1
  177. package/dist/cli/index.js +0 -79
  178. package/dist/cli/index.js.map +0 -1
  179. package/dist/cli/index.mjs +0 -79
  180. package/dist/cli/index.mjs.map +0 -1
  181. package/dist/cli/utils/commander.js +0 -111
  182. package/dist/cli/utils/commander.js.map +0 -1
  183. package/dist/cli/utils/commander.mjs +0 -108
  184. package/dist/cli/utils/commander.mjs.map +0 -1
  185. package/dist/cli/utils/data-transfer.js +0 -354
  186. package/dist/cli/utils/data-transfer.js.map +0 -1
  187. package/dist/cli/utils/data-transfer.mjs +0 -350
  188. package/dist/cli/utils/data-transfer.mjs.map +0 -1
  189. package/dist/cli/utils/helpers.js +0 -102
  190. package/dist/cli/utils/helpers.js.map +0 -1
  191. package/dist/cli/utils/helpers.mjs +0 -100
  192. package/dist/cli/utils/helpers.mjs.map +0 -1
  193. package/dist/cli/utils/logger.js +0 -137
  194. package/dist/cli/utils/logger.js.map +0 -1
  195. package/dist/cli/utils/logger.mjs +0 -116
  196. package/dist/cli/utils/logger.mjs.map +0 -1
  197. package/dist/cli/utils/telemetry.js +0 -22
  198. package/dist/cli/utils/telemetry.js.map +0 -1
  199. package/dist/cli/utils/telemetry.mjs +0 -22
  200. package/dist/cli/utils/telemetry.mjs.map +0 -1
  201. package/dist/cli/utils/tsconfig.js +0 -26
  202. package/dist/cli/utils/tsconfig.js.map +0 -1
  203. package/dist/cli/utils/tsconfig.mjs +0 -23
  204. package/dist/cli/utils/tsconfig.mjs.map +0 -1
  205. package/dist/node/build.js +0 -76
  206. package/dist/node/build.js.map +0 -1
  207. package/dist/node/build.mjs +0 -58
  208. package/dist/node/build.mjs.map +0 -1
  209. package/dist/node/core/admin-customisations.js +0 -24
  210. package/dist/node/core/admin-customisations.js.map +0 -1
  211. package/dist/node/core/admin-customisations.mjs +0 -22
  212. package/dist/node/core/admin-customisations.mjs.map +0 -1
  213. package/dist/node/core/aliases.js +0 -33
  214. package/dist/node/core/aliases.js.map +0 -1
  215. package/dist/node/core/aliases.mjs +0 -31
  216. package/dist/node/core/aliases.mjs.map +0 -1
  217. package/dist/node/core/config.js +0 -18
  218. package/dist/node/core/config.js.map +0 -1
  219. package/dist/node/core/config.mjs +0 -16
  220. package/dist/node/core/config.mjs.map +0 -1
  221. package/dist/node/core/dependencies.js +0 -163
  222. package/dist/node/core/dependencies.js.map +0 -1
  223. package/dist/node/core/dependencies.mjs +0 -155
  224. package/dist/node/core/dependencies.mjs.map +0 -1
  225. package/dist/node/core/env.js +0 -26
  226. package/dist/node/core/env.js.map +0 -1
  227. package/dist/node/core/env.mjs +0 -23
  228. package/dist/node/core/env.mjs.map +0 -1
  229. package/dist/node/core/errors.js +0 -33
  230. package/dist/node/core/errors.js.map +0 -1
  231. package/dist/node/core/errors.mjs +0 -29
  232. package/dist/node/core/errors.mjs.map +0 -1
  233. package/dist/node/core/files.js +0 -45
  234. package/dist/node/core/files.js.map +0 -1
  235. package/dist/node/core/files.mjs +0 -43
  236. package/dist/node/core/files.mjs.map +0 -1
  237. package/dist/node/core/managers.js +0 -17
  238. package/dist/node/core/managers.js.map +0 -1
  239. package/dist/node/core/managers.mjs +0 -17
  240. package/dist/node/core/managers.mjs.map +0 -1
  241. package/dist/node/core/monorepo.js +0 -23
  242. package/dist/node/core/monorepo.js.map +0 -1
  243. package/dist/node/core/monorepo.mjs +0 -20
  244. package/dist/node/core/monorepo.mjs.map +0 -1
  245. package/dist/node/core/plugins.js +0 -116
  246. package/dist/node/core/plugins.js.map +0 -1
  247. package/dist/node/core/plugins.mjs +0 -111
  248. package/dist/node/core/plugins.mjs.map +0 -1
  249. package/dist/node/core/timer.js +0 -27
  250. package/dist/node/core/timer.js.map +0 -1
  251. package/dist/node/core/timer.mjs +0 -27
  252. package/dist/node/core/timer.mjs.map +0 -1
  253. package/dist/node/create-build-context.js +0 -101
  254. package/dist/node/create-build-context.js.map +0 -1
  255. package/dist/node/create-build-context.mjs +0 -96
  256. package/dist/node/create-build-context.mjs.map +0 -1
  257. package/dist/node/develop.js +0 -275
  258. package/dist/node/develop.js.map +0 -1
  259. package/dist/node/develop.mjs +0 -252
  260. package/dist/node/develop.mjs.map +0 -1
  261. package/dist/node/staticFiles.js +0 -102
  262. package/dist/node/staticFiles.js.map +0 -1
  263. package/dist/node/staticFiles.mjs +0 -76
  264. package/dist/node/staticFiles.mjs.map +0 -1
  265. package/dist/node/vite/build.js +0 -34
  266. package/dist/node/vite/build.js.map +0 -1
  267. package/dist/node/vite/build.mjs +0 -12
  268. package/dist/node/vite/build.mjs.map +0 -1
  269. package/dist/node/vite/config.js +0 -106
  270. package/dist/node/vite/config.js.map +0 -1
  271. package/dist/node/vite/config.mjs +0 -103
  272. package/dist/node/vite/config.mjs.map +0 -1
  273. package/dist/node/vite/plugins.js +0 -43
  274. package/dist/node/vite/plugins.js.map +0 -1
  275. package/dist/node/vite/plugins.mjs +0 -43
  276. package/dist/node/vite/plugins.mjs.map +0 -1
  277. package/dist/node/vite/watch.js +0 -111
  278. package/dist/node/vite/watch.js.map +0 -1
  279. package/dist/node/vite/watch.mjs +0 -85
  280. package/dist/node/vite/watch.mjs.map +0 -1
  281. package/dist/node/webpack/build.js +0 -41
  282. package/dist/node/webpack/build.js.map +0 -1
  283. package/dist/node/webpack/build.mjs +0 -39
  284. package/dist/node/webpack/build.mjs.map +0 -1
  285. package/dist/node/webpack/config.js +0 -259
  286. package/dist/node/webpack/config.js.map +0 -1
  287. package/dist/node/webpack/config.mjs +0 -228
  288. package/dist/node/webpack/config.mjs.map +0 -1
  289. package/dist/node/webpack/watch.js +0 -95
  290. package/dist/node/webpack/watch.js.map +0 -1
  291. package/dist/node/webpack/watch.mjs +0 -90
  292. package/dist/node/webpack/watch.mjs.map +0 -1
@@ -1,101 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const os = require("node:os");
4
- const path = require("node:path");
5
- const fs = require("node:fs/promises");
6
- const browserslist = require("browserslist");
7
- const core = require("@strapi/core");
8
- const env = require("./core/env.js");
9
- const plugins = require("./core/plugins.js");
10
- const adminCustomisations = require("./core/admin-customisations.js");
11
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
12
- const os__default = /* @__PURE__ */ _interopDefault(os);
13
- const path__default = /* @__PURE__ */ _interopDefault(path);
14
- const fs__default = /* @__PURE__ */ _interopDefault(fs);
15
- const browserslist__default = /* @__PURE__ */ _interopDefault(browserslist);
16
- const DEFAULT_BROWSERSLIST = [
17
- "last 3 major versions",
18
- "Firefox ESR",
19
- "last 2 Opera versions",
20
- "not dead"
21
- ];
22
- const createBuildContext = async ({
23
- cwd,
24
- logger,
25
- tsconfig,
26
- strapi,
27
- options = {}
28
- }) => {
29
- const strapiInstance = strapi ?? core.createStrapi({
30
- // Directories
31
- appDir: cwd,
32
- distDir: tsconfig?.config.options.outDir ?? "",
33
- // Options
34
- autoReload: true,
35
- serveAdminPanel: false
36
- });
37
- const serverAbsoluteUrl = strapiInstance.config.get("server.absoluteUrl");
38
- const adminAbsoluteUrl = strapiInstance.config.get("admin.absoluteUrl");
39
- const adminPath = strapiInstance.config.get("admin.path");
40
- const sameOrigin = new URL(adminAbsoluteUrl).origin === new URL(serverAbsoluteUrl).origin;
41
- const adminPublicPath = new URL(adminAbsoluteUrl).pathname;
42
- const serverPublicPath = new URL(serverAbsoluteUrl).pathname;
43
- const appDir = strapiInstance.dirs.app.root;
44
- await env.loadEnv(cwd);
45
- const env$1 = env.getStrapiAdminEnvVars({
46
- ADMIN_PATH: adminPublicPath,
47
- STRAPI_ADMIN_BACKEND_URL: sameOrigin ? serverPublicPath : serverAbsoluteUrl,
48
- STRAPI_TELEMETRY_DISABLED: String(strapiInstance.telemetry.isDisabled)
49
- });
50
- const envKeys = Object.keys(env$1);
51
- if (envKeys.length > 0) {
52
- logger.info(
53
- [
54
- "Including the following ENV variables as part of the JS bundle:",
55
- ...envKeys.map((key) => ` - ${key}`)
56
- ].join(os__default.default.EOL)
57
- );
58
- }
59
- const distPath = path__default.default.join(strapiInstance.dirs.dist.root, "build");
60
- const distDir = path__default.default.relative(cwd, distPath);
61
- try {
62
- logger.debug(`Cleaning dist folder: ${distPath}`);
63
- await fs__default.default.rm(distPath, { recursive: true, force: true });
64
- logger.debug("Cleaned dist folder");
65
- } catch {
66
- logger.debug("There was no dist folder to clean");
67
- }
68
- const runtimeDir = path__default.default.join(cwd, ".strapi", "client");
69
- const entry = path__default.default.relative(cwd, path__default.default.join(runtimeDir, "app.js"));
70
- const plugins$1 = await plugins.getEnabledPlugins({ cwd, logger, runtimeDir, strapi: strapiInstance });
71
- logger.debug("Enabled plugins", os__default.default.EOL, plugins$1);
72
- const pluginsWithFront = plugins.getMapOfPluginsWithAdmin(plugins$1);
73
- logger.debug("Enabled plugins with FE", os__default.default.EOL, pluginsWithFront);
74
- const target = browserslist__default.default.loadConfig({ path: cwd }) ?? DEFAULT_BROWSERSLIST;
75
- const customisations = await adminCustomisations.loadUserAppFile({ appDir, runtimeDir });
76
- const features = strapiInstance.config.get("features", void 0);
77
- const { bundler = "vite", ...restOptions } = options;
78
- const buildContext = {
79
- appDir,
80
- adminPath,
81
- basePath: adminPublicPath,
82
- bundler,
83
- customisations,
84
- cwd,
85
- distDir,
86
- distPath,
87
- entry,
88
- env: env$1,
89
- features,
90
- logger,
91
- options: restOptions,
92
- plugins: pluginsWithFront,
93
- runtimeDir,
94
- strapi: strapiInstance,
95
- target,
96
- tsconfig
97
- };
98
- return buildContext;
99
- };
100
- exports.createBuildContext = createBuildContext;
101
- //# sourceMappingURL=create-build-context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-build-context.js","sources":["../../src/node/create-build-context.ts"],"sourcesContent":["import os from 'node:os';\nimport path from 'node:path';\nimport fs from 'node:fs/promises';\nimport browserslist from 'browserslist';\nimport { createStrapi } from '@strapi/core';\nimport { Core, Modules } from '@strapi/types';\nimport type { Server } from 'node:http';\n\nimport type { CLIContext } from '../cli/types';\nimport { getStrapiAdminEnvVars, loadEnv } from './core/env';\n\nimport { PluginMeta, getEnabledPlugins, getMapOfPluginsWithAdmin } from './core/plugins';\nimport { AppFile, loadUserAppFile } from './core/admin-customisations';\nimport type { BaseContext } from './types';\n\ninterface BaseOptions {\n stats?: boolean;\n minify?: boolean;\n sourcemaps?: boolean;\n bundler?: 'webpack' | 'vite';\n open?: boolean;\n hmrServer?: Server;\n hmrClientPort?: number;\n}\n\ninterface BuildContext<TOptions = unknown> extends BaseContext {\n /**\n * The customisations defined by the user in their app.js file\n */\n customisations?: AppFile;\n /**\n * Features object with future flags\n */\n features?: Modules.Features.FeaturesService['config'];\n /**\n * The build options\n */\n options: BaseOptions & TOptions;\n /**\n * The plugins to be included in the JS bundle\n * incl. internal plugins, third party plugins & local plugins\n */\n plugins: PluginMeta[];\n}\n\ninterface CreateBuildContextArgs<TOptions = unknown> extends CLIContext {\n strapi?: Core.Strapi;\n options?: TOptions;\n}\n\nconst DEFAULT_BROWSERSLIST = [\n 'last 3 major versions',\n 'Firefox ESR',\n 'last 2 Opera versions',\n 'not dead',\n];\n\nconst createBuildContext = async <TOptions extends BaseOptions>({\n cwd,\n logger,\n tsconfig,\n strapi,\n options = {} as TOptions,\n}: CreateBuildContextArgs<TOptions>): Promise<BuildContext<TOptions>> => {\n /**\n * If you make a new strapi instance when one already exists,\n * you will overwrite the global and the app will _most likely_\n * crash and die.\n */\n const strapiInstance =\n strapi ??\n createStrapi({\n // Directories\n appDir: cwd,\n distDir: tsconfig?.config.options.outDir ?? '',\n // Options\n autoReload: true,\n serveAdminPanel: false,\n });\n\n const serverAbsoluteUrl = strapiInstance.config.get<string>('server.absoluteUrl');\n const adminAbsoluteUrl = strapiInstance.config.get<string>('admin.absoluteUrl');\n const adminPath = strapiInstance.config.get<string>('admin.path');\n\n // NOTE: Checks that both the server and admin will be served from the same origin (protocol, host, port)\n const sameOrigin = new URL(adminAbsoluteUrl).origin === new URL(serverAbsoluteUrl).origin;\n\n const adminPublicPath = new URL(adminAbsoluteUrl).pathname;\n const serverPublicPath = new URL(serverAbsoluteUrl).pathname;\n\n const appDir = strapiInstance.dirs.app.root;\n\n await loadEnv(cwd);\n\n const env = getStrapiAdminEnvVars({\n ADMIN_PATH: adminPublicPath,\n STRAPI_ADMIN_BACKEND_URL: sameOrigin ? serverPublicPath : serverAbsoluteUrl,\n STRAPI_TELEMETRY_DISABLED: String(strapiInstance.telemetry.isDisabled),\n });\n\n const envKeys = Object.keys(env);\n\n if (envKeys.length > 0) {\n logger.info(\n [\n 'Including the following ENV variables as part of the JS bundle:',\n ...envKeys.map((key) => ` - ${key}`),\n ].join(os.EOL)\n );\n }\n\n const distPath = path.join(strapiInstance.dirs.dist.root, 'build');\n const distDir = path.relative(cwd, distPath);\n\n /**\n * If the distPath already exists, clean it\n */\n try {\n logger.debug(`Cleaning dist folder: ${distPath}`);\n await fs.rm(distPath, { recursive: true, force: true });\n logger.debug('Cleaned dist folder');\n } catch {\n // do nothing, it will fail if the folder does not exist\n logger.debug('There was no dist folder to clean');\n }\n\n const runtimeDir = path.join(cwd, '.strapi', 'client');\n const entry = path.relative(cwd, path.join(runtimeDir, 'app.js'));\n\n const plugins = await getEnabledPlugins({ cwd, logger, runtimeDir, strapi: strapiInstance });\n\n logger.debug('Enabled plugins', os.EOL, plugins);\n\n const pluginsWithFront = getMapOfPluginsWithAdmin(plugins);\n\n logger.debug('Enabled plugins with FE', os.EOL, pluginsWithFront);\n\n const target = browserslist.loadConfig({ path: cwd }) ?? DEFAULT_BROWSERSLIST;\n\n const customisations = await loadUserAppFile({ appDir, runtimeDir });\n\n const features = strapiInstance.config.get('features', undefined);\n\n const { bundler = 'vite', ...restOptions } = options;\n\n const buildContext = {\n appDir,\n adminPath,\n basePath: adminPublicPath,\n bundler,\n customisations,\n cwd,\n distDir,\n distPath,\n entry,\n env,\n features,\n logger,\n options: restOptions as BaseOptions & TOptions,\n plugins: pluginsWithFront,\n runtimeDir,\n strapi: strapiInstance,\n target,\n tsconfig,\n } satisfies BuildContext<TOptions>;\n\n return buildContext;\n};\n\nexport { createBuildContext };\nexport type { BuildContext, CreateBuildContextArgs };\n"],"names":["createStrapi","loadEnv","env","getStrapiAdminEnvVars","os","path","fs","plugins","getEnabledPlugins","getMapOfPluginsWithAdmin","browserslist","loadUserAppFile"],"mappings":";;;;;;;;;;;;;;;AAkDA,MAAM,uBAAuB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,qBAAqB,OAAqC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU,CAAA;AACZ,MAAyE;AAMjE,QAAA,iBACJ,UACAA,kBAAa;AAAA;AAAA,IAEX,QAAQ;AAAA,IACR,SAAS,UAAU,OAAO,QAAQ,UAAU;AAAA;AAAA,IAE5C,YAAY;AAAA,IACZ,iBAAiB;AAAA,EAAA,CAClB;AAEH,QAAM,oBAAoB,eAAe,OAAO,IAAY,oBAAoB;AAChF,QAAM,mBAAmB,eAAe,OAAO,IAAY,mBAAmB;AAC9E,QAAM,YAAY,eAAe,OAAO,IAAY,YAAY;AAG1D,QAAA,aAAa,IAAI,IAAI,gBAAgB,EAAE,WAAW,IAAI,IAAI,iBAAiB,EAAE;AAEnF,QAAM,kBAAkB,IAAI,IAAI,gBAAgB,EAAE;AAClD,QAAM,mBAAmB,IAAI,IAAI,iBAAiB,EAAE;AAE9C,QAAA,SAAS,eAAe,KAAK,IAAI;AAEvC,QAAMC,IAAAA,QAAQ,GAAG;AAEjB,QAAMC,QAAMC,IAAAA,sBAAsB;AAAA,IAChC,YAAY;AAAA,IACZ,0BAA0B,aAAa,mBAAmB;AAAA,IAC1D,2BAA2B,OAAO,eAAe,UAAU,UAAU;AAAA,EAAA,CACtE;AAEK,QAAA,UAAU,OAAO,KAAKD,KAAG;AAE3B,MAAA,QAAQ,SAAS,GAAG;AACf,WAAA;AAAA,MACL;AAAA,QACE;AAAA,QACA,GAAG,QAAQ,IAAI,CAAC,QAAQ,SAAS,GAAG,EAAE;AAAA,MAAA,EACtC,KAAKE,YAAAA,QAAG,GAAG;AAAA,IACf;AAAA,EAAA;AAGF,QAAM,WAAWC,cAAK,QAAA,KAAK,eAAe,KAAK,KAAK,MAAM,OAAO;AACjE,QAAM,UAAUA,cAAA,QAAK,SAAS,KAAK,QAAQ;AAKvC,MAAA;AACK,WAAA,MAAM,yBAAyB,QAAQ,EAAE;AAC1C,UAAAC,YAAA,QAAG,GAAG,UAAU,EAAE,WAAW,MAAM,OAAO,MAAM;AACtD,WAAO,MAAM,qBAAqB;AAAA,EAAA,QAC5B;AAEN,WAAO,MAAM,mCAAmC;AAAA,EAAA;AAGlD,QAAM,aAAaD,cAAAA,QAAK,KAAK,KAAK,WAAW,QAAQ;AAC/C,QAAA,QAAQA,sBAAK,SAAS,KAAKA,cAAAA,QAAK,KAAK,YAAY,QAAQ,CAAC;AAE1D,QAAAE,YAAU,MAAMC,QAAAA,kBAAkB,EAAE,KAAK,QAAQ,YAAY,QAAQ,gBAAgB;AAE3F,SAAO,MAAM,mBAAmBJ,YAAAA,QAAG,KAAKG,SAAO;AAEzC,QAAA,mBAAmBE,iCAAyBF,SAAO;AAEzD,SAAO,MAAM,2BAA2BH,YAAAA,QAAG,KAAK,gBAAgB;AAEhE,QAAM,SAASM,sBAAAA,QAAa,WAAW,EAAE,MAAM,IAAK,CAAA,KAAK;AAEzD,QAAM,iBAAiB,MAAMC,oBAAAA,gBAAgB,EAAE,QAAQ,YAAY;AAEnE,QAAM,WAAW,eAAe,OAAO,IAAI,YAAY,MAAS;AAEhE,QAAM,EAAE,UAAU,QAAQ,GAAG,YAAgB,IAAA;AAE7C,QAAM,eAAe;AAAA,IACnB;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAAA,KACAT;AAAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,SAAS;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF;AAEO,SAAA;AACT;;"}
@@ -1,96 +0,0 @@
1
- import os from "node:os";
2
- import path from "node:path";
3
- import fs from "node:fs/promises";
4
- import browserslist from "browserslist";
5
- import { createStrapi } from "@strapi/core";
6
- import { loadEnv, getStrapiAdminEnvVars } from "./core/env.mjs";
7
- import { getEnabledPlugins, getMapOfPluginsWithAdmin } from "./core/plugins.mjs";
8
- import { loadUserAppFile } from "./core/admin-customisations.mjs";
9
- const DEFAULT_BROWSERSLIST = [
10
- "last 3 major versions",
11
- "Firefox ESR",
12
- "last 2 Opera versions",
13
- "not dead"
14
- ];
15
- const createBuildContext = async ({
16
- cwd,
17
- logger,
18
- tsconfig,
19
- strapi,
20
- options = {}
21
- }) => {
22
- const strapiInstance = strapi ?? createStrapi({
23
- // Directories
24
- appDir: cwd,
25
- distDir: tsconfig?.config.options.outDir ?? "",
26
- // Options
27
- autoReload: true,
28
- serveAdminPanel: false
29
- });
30
- const serverAbsoluteUrl = strapiInstance.config.get("server.absoluteUrl");
31
- const adminAbsoluteUrl = strapiInstance.config.get("admin.absoluteUrl");
32
- const adminPath = strapiInstance.config.get("admin.path");
33
- const sameOrigin = new URL(adminAbsoluteUrl).origin === new URL(serverAbsoluteUrl).origin;
34
- const adminPublicPath = new URL(adminAbsoluteUrl).pathname;
35
- const serverPublicPath = new URL(serverAbsoluteUrl).pathname;
36
- const appDir = strapiInstance.dirs.app.root;
37
- await loadEnv(cwd);
38
- const env = getStrapiAdminEnvVars({
39
- ADMIN_PATH: adminPublicPath,
40
- STRAPI_ADMIN_BACKEND_URL: sameOrigin ? serverPublicPath : serverAbsoluteUrl,
41
- STRAPI_TELEMETRY_DISABLED: String(strapiInstance.telemetry.isDisabled)
42
- });
43
- const envKeys = Object.keys(env);
44
- if (envKeys.length > 0) {
45
- logger.info(
46
- [
47
- "Including the following ENV variables as part of the JS bundle:",
48
- ...envKeys.map((key) => ` - ${key}`)
49
- ].join(os.EOL)
50
- );
51
- }
52
- const distPath = path.join(strapiInstance.dirs.dist.root, "build");
53
- const distDir = path.relative(cwd, distPath);
54
- try {
55
- logger.debug(`Cleaning dist folder: ${distPath}`);
56
- await fs.rm(distPath, { recursive: true, force: true });
57
- logger.debug("Cleaned dist folder");
58
- } catch {
59
- logger.debug("There was no dist folder to clean");
60
- }
61
- const runtimeDir = path.join(cwd, ".strapi", "client");
62
- const entry = path.relative(cwd, path.join(runtimeDir, "app.js"));
63
- const plugins = await getEnabledPlugins({ cwd, logger, runtimeDir, strapi: strapiInstance });
64
- logger.debug("Enabled plugins", os.EOL, plugins);
65
- const pluginsWithFront = getMapOfPluginsWithAdmin(plugins);
66
- logger.debug("Enabled plugins with FE", os.EOL, pluginsWithFront);
67
- const target = browserslist.loadConfig({ path: cwd }) ?? DEFAULT_BROWSERSLIST;
68
- const customisations = await loadUserAppFile({ appDir, runtimeDir });
69
- const features = strapiInstance.config.get("features", void 0);
70
- const { bundler = "vite", ...restOptions } = options;
71
- const buildContext = {
72
- appDir,
73
- adminPath,
74
- basePath: adminPublicPath,
75
- bundler,
76
- customisations,
77
- cwd,
78
- distDir,
79
- distPath,
80
- entry,
81
- env,
82
- features,
83
- logger,
84
- options: restOptions,
85
- plugins: pluginsWithFront,
86
- runtimeDir,
87
- strapi: strapiInstance,
88
- target,
89
- tsconfig
90
- };
91
- return buildContext;
92
- };
93
- export {
94
- createBuildContext
95
- };
96
- //# sourceMappingURL=create-build-context.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-build-context.mjs","sources":["../../src/node/create-build-context.ts"],"sourcesContent":["import os from 'node:os';\nimport path from 'node:path';\nimport fs from 'node:fs/promises';\nimport browserslist from 'browserslist';\nimport { createStrapi } from '@strapi/core';\nimport { Core, Modules } from '@strapi/types';\nimport type { Server } from 'node:http';\n\nimport type { CLIContext } from '../cli/types';\nimport { getStrapiAdminEnvVars, loadEnv } from './core/env';\n\nimport { PluginMeta, getEnabledPlugins, getMapOfPluginsWithAdmin } from './core/plugins';\nimport { AppFile, loadUserAppFile } from './core/admin-customisations';\nimport type { BaseContext } from './types';\n\ninterface BaseOptions {\n stats?: boolean;\n minify?: boolean;\n sourcemaps?: boolean;\n bundler?: 'webpack' | 'vite';\n open?: boolean;\n hmrServer?: Server;\n hmrClientPort?: number;\n}\n\ninterface BuildContext<TOptions = unknown> extends BaseContext {\n /**\n * The customisations defined by the user in their app.js file\n */\n customisations?: AppFile;\n /**\n * Features object with future flags\n */\n features?: Modules.Features.FeaturesService['config'];\n /**\n * The build options\n */\n options: BaseOptions & TOptions;\n /**\n * The plugins to be included in the JS bundle\n * incl. internal plugins, third party plugins & local plugins\n */\n plugins: PluginMeta[];\n}\n\ninterface CreateBuildContextArgs<TOptions = unknown> extends CLIContext {\n strapi?: Core.Strapi;\n options?: TOptions;\n}\n\nconst DEFAULT_BROWSERSLIST = [\n 'last 3 major versions',\n 'Firefox ESR',\n 'last 2 Opera versions',\n 'not dead',\n];\n\nconst createBuildContext = async <TOptions extends BaseOptions>({\n cwd,\n logger,\n tsconfig,\n strapi,\n options = {} as TOptions,\n}: CreateBuildContextArgs<TOptions>): Promise<BuildContext<TOptions>> => {\n /**\n * If you make a new strapi instance when one already exists,\n * you will overwrite the global and the app will _most likely_\n * crash and die.\n */\n const strapiInstance =\n strapi ??\n createStrapi({\n // Directories\n appDir: cwd,\n distDir: tsconfig?.config.options.outDir ?? '',\n // Options\n autoReload: true,\n serveAdminPanel: false,\n });\n\n const serverAbsoluteUrl = strapiInstance.config.get<string>('server.absoluteUrl');\n const adminAbsoluteUrl = strapiInstance.config.get<string>('admin.absoluteUrl');\n const adminPath = strapiInstance.config.get<string>('admin.path');\n\n // NOTE: Checks that both the server and admin will be served from the same origin (protocol, host, port)\n const sameOrigin = new URL(adminAbsoluteUrl).origin === new URL(serverAbsoluteUrl).origin;\n\n const adminPublicPath = new URL(adminAbsoluteUrl).pathname;\n const serverPublicPath = new URL(serverAbsoluteUrl).pathname;\n\n const appDir = strapiInstance.dirs.app.root;\n\n await loadEnv(cwd);\n\n const env = getStrapiAdminEnvVars({\n ADMIN_PATH: adminPublicPath,\n STRAPI_ADMIN_BACKEND_URL: sameOrigin ? serverPublicPath : serverAbsoluteUrl,\n STRAPI_TELEMETRY_DISABLED: String(strapiInstance.telemetry.isDisabled),\n });\n\n const envKeys = Object.keys(env);\n\n if (envKeys.length > 0) {\n logger.info(\n [\n 'Including the following ENV variables as part of the JS bundle:',\n ...envKeys.map((key) => ` - ${key}`),\n ].join(os.EOL)\n );\n }\n\n const distPath = path.join(strapiInstance.dirs.dist.root, 'build');\n const distDir = path.relative(cwd, distPath);\n\n /**\n * If the distPath already exists, clean it\n */\n try {\n logger.debug(`Cleaning dist folder: ${distPath}`);\n await fs.rm(distPath, { recursive: true, force: true });\n logger.debug('Cleaned dist folder');\n } catch {\n // do nothing, it will fail if the folder does not exist\n logger.debug('There was no dist folder to clean');\n }\n\n const runtimeDir = path.join(cwd, '.strapi', 'client');\n const entry = path.relative(cwd, path.join(runtimeDir, 'app.js'));\n\n const plugins = await getEnabledPlugins({ cwd, logger, runtimeDir, strapi: strapiInstance });\n\n logger.debug('Enabled plugins', os.EOL, plugins);\n\n const pluginsWithFront = getMapOfPluginsWithAdmin(plugins);\n\n logger.debug('Enabled plugins with FE', os.EOL, pluginsWithFront);\n\n const target = browserslist.loadConfig({ path: cwd }) ?? DEFAULT_BROWSERSLIST;\n\n const customisations = await loadUserAppFile({ appDir, runtimeDir });\n\n const features = strapiInstance.config.get('features', undefined);\n\n const { bundler = 'vite', ...restOptions } = options;\n\n const buildContext = {\n appDir,\n adminPath,\n basePath: adminPublicPath,\n bundler,\n customisations,\n cwd,\n distDir,\n distPath,\n entry,\n env,\n features,\n logger,\n options: restOptions as BaseOptions & TOptions,\n plugins: pluginsWithFront,\n runtimeDir,\n strapi: strapiInstance,\n target,\n tsconfig,\n } satisfies BuildContext<TOptions>;\n\n return buildContext;\n};\n\nexport { createBuildContext };\nexport type { BuildContext, CreateBuildContextArgs };\n"],"names":[],"mappings":";;;;;;;;AAkDA,MAAM,uBAAuB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,qBAAqB,OAAqC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU,CAAA;AACZ,MAAyE;AAMjE,QAAA,iBACJ,UACA,aAAa;AAAA;AAAA,IAEX,QAAQ;AAAA,IACR,SAAS,UAAU,OAAO,QAAQ,UAAU;AAAA;AAAA,IAE5C,YAAY;AAAA,IACZ,iBAAiB;AAAA,EAAA,CAClB;AAEH,QAAM,oBAAoB,eAAe,OAAO,IAAY,oBAAoB;AAChF,QAAM,mBAAmB,eAAe,OAAO,IAAY,mBAAmB;AAC9E,QAAM,YAAY,eAAe,OAAO,IAAY,YAAY;AAG1D,QAAA,aAAa,IAAI,IAAI,gBAAgB,EAAE,WAAW,IAAI,IAAI,iBAAiB,EAAE;AAEnF,QAAM,kBAAkB,IAAI,IAAI,gBAAgB,EAAE;AAClD,QAAM,mBAAmB,IAAI,IAAI,iBAAiB,EAAE;AAE9C,QAAA,SAAS,eAAe,KAAK,IAAI;AAEvC,QAAM,QAAQ,GAAG;AAEjB,QAAM,MAAM,sBAAsB;AAAA,IAChC,YAAY;AAAA,IACZ,0BAA0B,aAAa,mBAAmB;AAAA,IAC1D,2BAA2B,OAAO,eAAe,UAAU,UAAU;AAAA,EAAA,CACtE;AAEK,QAAA,UAAU,OAAO,KAAK,GAAG;AAE3B,MAAA,QAAQ,SAAS,GAAG;AACf,WAAA;AAAA,MACL;AAAA,QACE;AAAA,QACA,GAAG,QAAQ,IAAI,CAAC,QAAQ,SAAS,GAAG,EAAE;AAAA,MAAA,EACtC,KAAK,GAAG,GAAG;AAAA,IACf;AAAA,EAAA;AAGF,QAAM,WAAW,KAAK,KAAK,eAAe,KAAK,KAAK,MAAM,OAAO;AACjE,QAAM,UAAU,KAAK,SAAS,KAAK,QAAQ;AAKvC,MAAA;AACK,WAAA,MAAM,yBAAyB,QAAQ,EAAE;AAC1C,UAAA,GAAG,GAAG,UAAU,EAAE,WAAW,MAAM,OAAO,MAAM;AACtD,WAAO,MAAM,qBAAqB;AAAA,EAAA,QAC5B;AAEN,WAAO,MAAM,mCAAmC;AAAA,EAAA;AAGlD,QAAM,aAAa,KAAK,KAAK,KAAK,WAAW,QAAQ;AAC/C,QAAA,QAAQ,KAAK,SAAS,KAAK,KAAK,KAAK,YAAY,QAAQ,CAAC;AAE1D,QAAA,UAAU,MAAM,kBAAkB,EAAE,KAAK,QAAQ,YAAY,QAAQ,gBAAgB;AAE3F,SAAO,MAAM,mBAAmB,GAAG,KAAK,OAAO;AAEzC,QAAA,mBAAmB,yBAAyB,OAAO;AAEzD,SAAO,MAAM,2BAA2B,GAAG,KAAK,gBAAgB;AAEhE,QAAM,SAAS,aAAa,WAAW,EAAE,MAAM,IAAK,CAAA,KAAK;AAEzD,QAAM,iBAAiB,MAAM,gBAAgB,EAAE,QAAQ,YAAY;AAEnE,QAAM,WAAW,eAAe,OAAO,IAAI,YAAY,MAAS;AAEhE,QAAM,EAAE,UAAU,QAAQ,GAAG,YAAgB,IAAA;AAE7C,QAAM,eAAe;AAAA,IACnB;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,SAAS;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF;AAEO,SAAA;AACT;"}
@@ -1,275 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const tsUtils = require("@strapi/typescript-utils");
4
- const utils = require("@strapi/utils");
5
- const chokidar = require("chokidar");
6
- const fs = require("node:fs/promises");
7
- const path = require("node:path");
8
- const cluster = require("node:cluster");
9
- const core = require("@strapi/core");
10
- const dependencies = require("./core/dependencies.js");
11
- const timer = require("./core/timer.js");
12
- const createBuildContext = require("./create-build-context.js");
13
- const staticFiles = require("./staticFiles.js");
14
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
15
- function _interopNamespace(e) {
16
- if (e && e.__esModule) return e;
17
- const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
18
- if (e) {
19
- for (const k in e) {
20
- if (k !== "default") {
21
- const d = Object.getOwnPropertyDescriptor(e, k);
22
- Object.defineProperty(n, k, d.get ? d : {
23
- enumerable: true,
24
- get: () => e[k]
25
- });
26
- }
27
- }
28
- }
29
- n.default = e;
30
- return Object.freeze(n);
31
- }
32
- const tsUtils__namespace = /* @__PURE__ */ _interopNamespace(tsUtils);
33
- const chokidar__default = /* @__PURE__ */ _interopDefault(chokidar);
34
- const fs__default = /* @__PURE__ */ _interopDefault(fs);
35
- const path__default = /* @__PURE__ */ _interopDefault(path);
36
- const cluster__default = /* @__PURE__ */ _interopDefault(cluster);
37
- const cleanupDistDirectory = async ({
38
- tsconfig,
39
- logger,
40
- timer: timer$1
41
- }) => {
42
- const distDir = tsconfig?.config?.options?.outDir;
43
- if (!distDir || // we don't have a dist dir
44
- await fs__default.default.access(distDir).then(() => false).catch(() => true)) {
45
- return;
46
- }
47
- const timerName = `cleaningDist${Date.now()}`;
48
- timer$1.start(timerName);
49
- const cleaningSpinner = logger.spinner(`Cleaning dist dir ${distDir}`).start();
50
- try {
51
- const dirContent = await fs__default.default.readdir(distDir);
52
- const validFilenames = dirContent.filter((filename) => filename !== "build");
53
- for (const filename of validFilenames) {
54
- await fs__default.default.rm(path__default.default.resolve(distDir, filename), { recursive: true });
55
- }
56
- } catch (err) {
57
- const generatingDuration2 = timer$1.end(timerName);
58
- cleaningSpinner.text = `Error cleaning dist dir: ${err} (${timer.prettyTime(generatingDuration2)})`;
59
- cleaningSpinner?.fail();
60
- return;
61
- }
62
- const generatingDuration = timer$1.end(timerName);
63
- cleaningSpinner.text = `Cleaning dist dir (${timer.prettyTime(generatingDuration)})`;
64
- cleaningSpinner?.succeed();
65
- };
66
- const develop = async ({
67
- cwd,
68
- polling,
69
- logger,
70
- tsconfig,
71
- watchAdmin,
72
- ...options
73
- }) => {
74
- const timer$1 = timer.getTimer();
75
- if (cluster__default.default.isPrimary) {
76
- const { didInstall } = await dependencies.checkRequiredDependencies({ cwd, logger }).catch((err) => {
77
- logger.error(err.message);
78
- process.exit(1);
79
- });
80
- if (didInstall) {
81
- return;
82
- }
83
- if (tsconfig?.config) {
84
- await cleanupDistDirectory({ tsconfig, logger, timer: timer$1 });
85
- await tsUtils__namespace.compile(cwd, { configOptions: { ignoreDiagnostics: true } });
86
- }
87
- if (!watchAdmin) {
88
- timer$1.start("createBuildContext");
89
- const contextSpinner = logger.spinner(`Building build context`).start();
90
- console.log("");
91
- const ctx = await createBuildContext.createBuildContext({
92
- cwd,
93
- logger,
94
- tsconfig,
95
- options
96
- });
97
- const contextDuration = timer$1.end("createBuildContext");
98
- contextSpinner.text = `Building build context (${timer.prettyTime(contextDuration)})`;
99
- contextSpinner.succeed();
100
- timer$1.start("creatingAdmin");
101
- const adminSpinner = logger.spinner(`Creating admin`).start();
102
- await staticFiles.writeStaticClientFiles(ctx);
103
- if (ctx.bundler === "webpack") {
104
- const { build: buildWebpack } = await Promise.resolve().then(() => require("./webpack/build.js"));
105
- await buildWebpack(ctx);
106
- } else if (ctx.bundler === "vite") {
107
- const { build: buildVite } = await Promise.resolve().then(() => require("./vite/build.js"));
108
- await buildVite(ctx);
109
- }
110
- const adminDuration = timer$1.end("creatingAdmin");
111
- adminSpinner.text = `Creating admin (${timer.prettyTime(adminDuration)})`;
112
- adminSpinner.succeed();
113
- }
114
- cluster__default.default.on("message", async (worker, message) => {
115
- switch (message) {
116
- case "reload": {
117
- if (tsconfig?.config) {
118
- await cleanupDistDirectory({ tsconfig, logger, timer: timer$1 });
119
- await tsUtils__namespace.compile(cwd, { configOptions: { ignoreDiagnostics: true } });
120
- }
121
- logger.debug("cluster has the reload message, sending the worker kill message");
122
- worker.send("kill");
123
- break;
124
- }
125
- case "killed": {
126
- logger.debug("cluster has the killed message, forking the cluster");
127
- cluster__default.default.fork();
128
- break;
129
- }
130
- case "stop": {
131
- process.exit(1);
132
- break;
133
- }
134
- }
135
- });
136
- cluster__default.default.fork();
137
- }
138
- if (cluster__default.default.isWorker) {
139
- timer$1.start("loadStrapi");
140
- const loadStrapiSpinner = logger.spinner(`Loading Strapi`).start();
141
- const strapi = core.createStrapi({
142
- appDir: cwd,
143
- distDir: tsconfig?.config.options.outDir ?? "",
144
- autoReload: true,
145
- serveAdminPanel: !watchAdmin
146
- });
147
- let bundleWatcher;
148
- const strapiInstance = await strapi.load();
149
- if (watchAdmin) {
150
- timer$1.start("createBuildContext");
151
- const contextSpinner = logger.spinner(`Building build context`).start();
152
- console.log("");
153
- const ctx = await createBuildContext.createBuildContext({
154
- cwd,
155
- logger,
156
- strapi,
157
- tsconfig,
158
- options
159
- });
160
- const contextDuration = timer$1.end("createBuildContext");
161
- contextSpinner.text = `Building build context (${timer.prettyTime(contextDuration)})`;
162
- contextSpinner.succeed();
163
- timer$1.start("creatingAdmin");
164
- const adminSpinner = logger.spinner(`Creating admin`).start();
165
- await staticFiles.writeStaticClientFiles(ctx);
166
- if (ctx.bundler === "webpack") {
167
- const { watch: watchWebpack } = await Promise.resolve().then(() => require("./webpack/watch.js"));
168
- bundleWatcher = await watchWebpack(ctx);
169
- } else if (ctx.bundler === "vite") {
170
- const { watch: watchVite } = await Promise.resolve().then(() => require("./vite/watch.js"));
171
- bundleWatcher = await watchVite(ctx);
172
- }
173
- const adminDuration = timer$1.end("creatingAdmin");
174
- adminSpinner.text = `Creating admin (${timer.prettyTime(adminDuration)})`;
175
- adminSpinner.succeed();
176
- }
177
- const loadStrapiDuration = timer$1.end("loadStrapi");
178
- loadStrapiSpinner.text = `Loading Strapi (${timer.prettyTime(loadStrapiDuration)})`;
179
- loadStrapiSpinner.succeed();
180
- if (tsconfig?.config || strapi.config.get("typescript.autogenerate") !== false) {
181
- timer$1.start("generatingTS");
182
- const generatingTsSpinner = logger.spinner(`Generating types`).start();
183
- await tsUtils__namespace.generators.generate({
184
- strapi: strapiInstance,
185
- pwd: cwd,
186
- rootDir: void 0,
187
- logger: { silent: true, debug: false },
188
- artifacts: { contentTypes: true, components: true }
189
- });
190
- const generatingDuration = timer$1.end("generatingTS");
191
- generatingTsSpinner.text = `Generating types (${timer.prettyTime(generatingDuration)})`;
192
- generatingTsSpinner.succeed();
193
- }
194
- if (tsconfig?.config) {
195
- timer$1.start("compilingTS");
196
- const compilingTsSpinner = logger.spinner(`Compiling TS`).start();
197
- await cleanupDistDirectory({ tsconfig, logger, timer: timer$1 });
198
- await tsUtils__namespace.compile(cwd, { configOptions: { ignoreDiagnostics: false } });
199
- const compilingDuration = timer$1.end("compilingTS");
200
- compilingTsSpinner.text = `Compiling TS (${timer.prettyTime(compilingDuration)})`;
201
- compilingTsSpinner.succeed();
202
- }
203
- const restart = async () => {
204
- if (strapiInstance.reload.isWatching && !strapiInstance.reload.isReloading) {
205
- strapiInstance.reload.isReloading = true;
206
- strapiInstance.reload();
207
- }
208
- };
209
- const watcher = chokidar__default.default.watch(cwd, {
210
- ignoreInitial: true,
211
- usePolling: polling,
212
- ignored: [
213
- /(^|[/\\])\../,
214
- // dot files
215
- /tmp/,
216
- "**/src/admin/**",
217
- "**/src/plugins/**/admin/**",
218
- "**/dist/src/plugins/test/admin/**",
219
- "**/documentation",
220
- "**/documentation/**",
221
- "**/node_modules",
222
- "**/node_modules/**",
223
- "**/plugins.json",
224
- "**/build",
225
- "**/build/**",
226
- "**/log",
227
- "**/log/**",
228
- "**/logs",
229
- "**/logs/**",
230
- "**/*.log",
231
- "**/index.html",
232
- "**/public",
233
- "**/public/**",
234
- strapiInstance.dirs.static.public,
235
- utils.strings.joinBy("/", strapiInstance.dirs.static.public, "**"),
236
- "**/*.db*",
237
- "**/exports/**",
238
- "**/dist/**",
239
- "**/*.d.ts",
240
- "**/.yalc/**",
241
- "**/yalc.lock",
242
- // TODO v6: watch only src folder by default, and flip this to watchIncludeFiles
243
- ...strapiInstance.config.get("admin.watchIgnoreFiles", [])
244
- ]
245
- }).on("add", (path2) => {
246
- strapiInstance.log.info(`File created: ${path2}`);
247
- restart();
248
- }).on("change", (path2) => {
249
- strapiInstance.log.info(`File changed: ${path2}`);
250
- restart();
251
- }).on("unlink", (path2) => {
252
- strapiInstance.log.info(`File deleted: ${path2}`);
253
- restart();
254
- });
255
- process.on("message", async (message) => {
256
- switch (message) {
257
- case "kill": {
258
- logger.debug(
259
- "child process has the kill message, destroying the strapi instance and sending the killed process message"
260
- );
261
- await watcher.close();
262
- await strapiInstance.destroy();
263
- if (bundleWatcher) {
264
- bundleWatcher.close();
265
- }
266
- process.send?.("killed");
267
- break;
268
- }
269
- }
270
- });
271
- strapiInstance.start();
272
- }
273
- };
274
- exports.develop = develop;
275
- //# sourceMappingURL=develop.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"develop.js","sources":["../../src/node/develop.ts"],"sourcesContent":["import * as tsUtils from '@strapi/typescript-utils';\nimport { strings } from '@strapi/utils';\nimport chokidar from 'chokidar';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport cluster from 'node:cluster';\nimport { createStrapi } from '@strapi/core';\n\nimport type { CLIContext } from '../cli/types';\nimport { checkRequiredDependencies } from './core/dependencies';\nimport { getTimer, prettyTime, type TimeMeasurer } from './core/timer';\nimport { createBuildContext } from './create-build-context';\nimport type { WebpackWatcher } from './webpack/watch';\nimport type { ViteWatcher } from './vite/watch';\n\nimport { writeStaticClientFiles } from './staticFiles';\n\ninterface DevelopOptions extends CLIContext {\n /**\n * Which bundler to use for building.\n *\n * @default webpack\n */\n bundler?: 'webpack' | 'vite';\n polling?: boolean;\n open?: boolean;\n watchAdmin?: boolean;\n}\n\n// This method removes all non-admin build files from the dist directory\nconst cleanupDistDirectory = async ({\n tsconfig,\n logger,\n timer,\n}: Pick<DevelopOptions, 'tsconfig' | 'logger'> & { timer: TimeMeasurer }) => {\n const distDir = tsconfig?.config?.options?.outDir;\n\n if (\n !distDir || // we don't have a dist dir\n (await fs\n .access(distDir)\n .then(() => false)\n .catch(() => true)) // it doesn't exist -- if it does but no access, that will be caught later\n ) {\n return;\n }\n\n const timerName = `cleaningDist${Date.now()}`;\n timer.start(timerName);\n const cleaningSpinner = logger.spinner(`Cleaning dist dir ${distDir}`).start();\n\n try {\n const dirContent = await fs.readdir(distDir);\n const validFilenames = dirContent\n // Ignore the admin build folder\n .filter((filename) => filename !== 'build');\n for (const filename of validFilenames) {\n await fs.rm(path.resolve(distDir, filename), { recursive: true });\n }\n } catch (err: unknown) {\n const generatingDuration = timer.end(timerName);\n cleaningSpinner.text = `Error cleaning dist dir: ${err} (${prettyTime(generatingDuration)})`;\n cleaningSpinner?.fail();\n return;\n }\n\n const generatingDuration = timer.end(timerName);\n cleaningSpinner.text = `Cleaning dist dir (${prettyTime(generatingDuration)})`;\n cleaningSpinner?.succeed();\n};\n\nconst develop = async ({\n cwd,\n polling,\n logger,\n tsconfig,\n watchAdmin,\n ...options\n}: DevelopOptions) => {\n const timer = getTimer();\n\n if (cluster.isPrimary) {\n const { didInstall } = await checkRequiredDependencies({ cwd, logger }).catch((err) => {\n logger.error(err.message);\n process.exit(1);\n });\n\n if (didInstall) {\n return;\n }\n\n if (tsconfig?.config) {\n // Build without diagnostics in case schemas have changed\n await cleanupDistDirectory({ tsconfig, logger, timer });\n await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: true } });\n }\n\n /**\n * IF we're not watching the admin we're going to build it, this makes\n * sure that at least the admin is built for users & they can interact\n * with the application.\n */\n if (!watchAdmin) {\n timer.start('createBuildContext');\n const contextSpinner = logger.spinner(`Building build context`).start();\n console.log('');\n\n const ctx = await createBuildContext({\n cwd,\n logger,\n tsconfig,\n options,\n });\n const contextDuration = timer.end('createBuildContext');\n contextSpinner.text = `Building build context (${prettyTime(contextDuration)})`;\n contextSpinner.succeed();\n\n timer.start('creatingAdmin');\n const adminSpinner = logger.spinner(`Creating admin`).start();\n\n await writeStaticClientFiles(ctx);\n\n if (ctx.bundler === 'webpack') {\n const { build: buildWebpack } = await import('./webpack/build');\n await buildWebpack(ctx);\n } else if (ctx.bundler === 'vite') {\n const { build: buildVite } = await import('./vite/build');\n await buildVite(ctx);\n }\n\n const adminDuration = timer.end('creatingAdmin');\n adminSpinner.text = `Creating admin (${prettyTime(adminDuration)})`;\n adminSpinner.succeed();\n }\n\n cluster.on('message', async (worker, message) => {\n switch (message) {\n case 'reload': {\n if (tsconfig?.config) {\n // Build without diagnostics in case schemas have changed\n await cleanupDistDirectory({ tsconfig, logger, timer });\n await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: true } });\n }\n logger.debug('cluster has the reload message, sending the worker kill message');\n worker.send('kill');\n break;\n }\n case 'killed': {\n logger.debug('cluster has the killed message, forking the cluster');\n cluster.fork();\n break;\n }\n case 'stop': {\n process.exit(1);\n break;\n }\n default:\n break;\n }\n });\n\n cluster.fork();\n }\n\n if (cluster.isWorker) {\n timer.start('loadStrapi');\n const loadStrapiSpinner = logger.spinner(`Loading Strapi`).start();\n\n const strapi = createStrapi({\n appDir: cwd,\n distDir: tsconfig?.config.options.outDir ?? '',\n autoReload: true,\n serveAdminPanel: !watchAdmin,\n });\n\n /**\n * If we're watching the admin panel then we're going to attach the watcher\n * as a strapi middleware.\n */\n let bundleWatcher: WebpackWatcher | ViteWatcher | undefined;\n\n const strapiInstance = await strapi.load();\n\n if (watchAdmin) {\n timer.start('createBuildContext');\n const contextSpinner = logger.spinner(`Building build context`).start();\n console.log('');\n\n const ctx = await createBuildContext({\n cwd,\n logger,\n strapi,\n tsconfig,\n options,\n });\n const contextDuration = timer.end('createBuildContext');\n contextSpinner.text = `Building build context (${prettyTime(contextDuration)})`;\n contextSpinner.succeed();\n\n timer.start('creatingAdmin');\n const adminSpinner = logger.spinner(`Creating admin`).start();\n\n await writeStaticClientFiles(ctx);\n\n if (ctx.bundler === 'webpack') {\n const { watch: watchWebpack } = await import('./webpack/watch');\n bundleWatcher = await watchWebpack(ctx);\n } else if (ctx.bundler === 'vite') {\n const { watch: watchVite } = await import('./vite/watch');\n bundleWatcher = await watchVite(ctx);\n }\n\n const adminDuration = timer.end('creatingAdmin');\n adminSpinner.text = `Creating admin (${prettyTime(adminDuration)})`;\n adminSpinner.succeed();\n }\n\n const loadStrapiDuration = timer.end('loadStrapi');\n loadStrapiSpinner.text = `Loading Strapi (${prettyTime(loadStrapiDuration)})`;\n loadStrapiSpinner.succeed();\n\n // For TS projects, type generation is a requirement for the develop command so that the server can restart\n // For JS projects, we respect the experimental autogenerate setting\n if (tsconfig?.config || strapi.config.get('typescript.autogenerate') !== false) {\n timer.start('generatingTS');\n const generatingTsSpinner = logger.spinner(`Generating types`).start();\n\n await tsUtils.generators.generate({\n strapi: strapiInstance,\n pwd: cwd,\n rootDir: undefined,\n logger: { silent: true, debug: false },\n artifacts: { contentTypes: true, components: true },\n });\n\n const generatingDuration = timer.end('generatingTS');\n generatingTsSpinner.text = `Generating types (${prettyTime(generatingDuration)})`;\n generatingTsSpinner.succeed();\n }\n\n if (tsconfig?.config) {\n timer.start('compilingTS');\n const compilingTsSpinner = logger.spinner(`Compiling TS`).start();\n\n await cleanupDistDirectory({ tsconfig, logger, timer });\n await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: false } });\n\n const compilingDuration = timer.end('compilingTS');\n compilingTsSpinner.text = `Compiling TS (${prettyTime(compilingDuration)})`;\n compilingTsSpinner.succeed();\n }\n\n const restart = async () => {\n if (strapiInstance.reload.isWatching && !strapiInstance.reload.isReloading) {\n strapiInstance.reload.isReloading = true;\n strapiInstance.reload();\n }\n };\n\n const watcher = chokidar\n .watch(cwd, {\n ignoreInitial: true,\n usePolling: polling,\n ignored: [\n /(^|[/\\\\])\\../, // dot files\n /tmp/,\n '**/src/admin/**',\n '**/src/plugins/**/admin/**',\n '**/dist/src/plugins/test/admin/**',\n '**/documentation',\n '**/documentation/**',\n '**/node_modules',\n '**/node_modules/**',\n '**/plugins.json',\n '**/build',\n '**/build/**',\n '**/log',\n '**/log/**',\n '**/logs',\n '**/logs/**',\n '**/*.log',\n '**/index.html',\n '**/public',\n '**/public/**',\n strapiInstance.dirs.static.public,\n strings.joinBy('/', strapiInstance.dirs.static.public, '**'),\n '**/*.db*',\n '**/exports/**',\n '**/dist/**',\n '**/*.d.ts',\n '**/.yalc/**',\n '**/yalc.lock',\n // TODO v6: watch only src folder by default, and flip this to watchIncludeFiles\n ...strapiInstance.config.get('admin.watchIgnoreFiles', []),\n ],\n })\n .on('add', (path) => {\n strapiInstance.log.info(`File created: ${path}`);\n restart();\n })\n .on('change', (path) => {\n strapiInstance.log.info(`File changed: ${path}`);\n restart();\n })\n .on('unlink', (path) => {\n strapiInstance.log.info(`File deleted: ${path}`);\n restart();\n });\n\n process.on('message', async (message) => {\n switch (message) {\n case 'kill': {\n logger.debug(\n 'child process has the kill message, destroying the strapi instance and sending the killed process message'\n );\n await watcher.close();\n\n await strapiInstance.destroy();\n\n if (bundleWatcher) {\n bundleWatcher.close();\n }\n process.send?.('killed');\n break;\n }\n default:\n break;\n }\n });\n\n strapiInstance.start();\n }\n};\n\nexport { develop };\nexport type { DevelopOptions };\n"],"names":["timer","fs","path","generatingDuration","prettyTime","getTimer","cluster","checkRequiredDependencies","tsUtils","createBuildContext","writeStaticClientFiles","createStrapi","chokidar","strings"],"mappings":"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"}