@strapi/core 0.0.0-experimental.80cf2c74a2003f3c0602abc81888dd9f36dc68a3 → 0.0.0-experimental.820adfc37c687bbcc4a213ae6929c541358b71e8

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.

Potentially problematic release.


This version of @strapi/core might be problematic. Click here for more details.

Files changed (683) hide show
  1. package/LICENSE +18 -3
  2. package/dist/Strapi.d.ts +37 -46
  3. package/dist/Strapi.d.ts.map +1 -1
  4. package/dist/Strapi.js +192 -220
  5. package/dist/Strapi.js.map +1 -1
  6. package/dist/Strapi.mjs +161 -209
  7. package/dist/Strapi.mjs.map +1 -1
  8. package/dist/compile.js.map +1 -1
  9. package/dist/compile.mjs.map +1 -1
  10. package/dist/configuration/config-loader.d.ts.map +1 -1
  11. package/dist/configuration/config-loader.js +10 -7
  12. package/dist/configuration/config-loader.js.map +1 -1
  13. package/dist/configuration/config-loader.mjs +10 -7
  14. package/dist/configuration/config-loader.mjs.map +1 -1
  15. package/dist/configuration/get-dirs.d.ts +10 -0
  16. package/dist/configuration/get-dirs.d.ts.map +1 -0
  17. package/dist/{utils → configuration}/get-dirs.js +3 -2
  18. package/dist/configuration/get-dirs.js.map +1 -0
  19. package/dist/{utils → configuration}/get-dirs.mjs +3 -2
  20. package/dist/configuration/get-dirs.mjs.map +1 -0
  21. package/dist/configuration/index.d.ts +4 -7
  22. package/dist/configuration/index.d.ts.map +1 -1
  23. package/dist/configuration/index.js +8 -6
  24. package/dist/configuration/index.js.map +1 -1
  25. package/dist/configuration/index.mjs +5 -4
  26. package/dist/configuration/index.mjs.map +1 -1
  27. package/dist/configuration/urls.js.map +1 -1
  28. package/dist/configuration/urls.mjs.map +1 -1
  29. package/dist/container.js.map +1 -1
  30. package/dist/container.mjs.map +1 -1
  31. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  32. package/dist/core-api/controller/collection-type.js +6 -3
  33. package/dist/core-api/controller/collection-type.js.map +1 -1
  34. package/dist/core-api/controller/collection-type.mjs +3 -0
  35. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  36. package/dist/core-api/controller/index.js +7 -7
  37. package/dist/core-api/controller/index.js.map +1 -1
  38. package/dist/core-api/controller/index.mjs +6 -6
  39. package/dist/core-api/controller/index.mjs.map +1 -1
  40. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  41. package/dist/core-api/controller/single-type.js +3 -2
  42. package/dist/core-api/controller/single-type.js.map +1 -1
  43. package/dist/core-api/controller/single-type.mjs +1 -0
  44. package/dist/core-api/controller/single-type.mjs.map +1 -1
  45. package/dist/core-api/controller/transform.js +8 -8
  46. package/dist/core-api/controller/transform.js.map +1 -1
  47. package/dist/core-api/controller/transform.mjs.map +1 -1
  48. package/dist/core-api/routes/index.d.ts.map +1 -1
  49. package/dist/core-api/routes/index.js.map +1 -1
  50. package/dist/core-api/routes/index.mjs.map +1 -1
  51. package/dist/core-api/service/collection-type.d.ts +3 -9
  52. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  53. package/dist/core-api/service/collection-type.js +18 -7
  54. package/dist/core-api/service/collection-type.js.map +1 -1
  55. package/dist/core-api/service/collection-type.mjs +19 -8
  56. package/dist/core-api/service/collection-type.mjs.map +1 -1
  57. package/dist/core-api/service/core-service.js.map +1 -1
  58. package/dist/core-api/service/core-service.mjs.map +1 -1
  59. package/dist/core-api/service/index.js.map +1 -1
  60. package/dist/core-api/service/index.mjs.map +1 -1
  61. package/dist/core-api/service/pagination.d.ts +4 -11
  62. package/dist/core-api/service/pagination.d.ts.map +1 -1
  63. package/dist/core-api/service/pagination.js +18 -44
  64. package/dist/core-api/service/pagination.js.map +1 -1
  65. package/dist/core-api/service/pagination.mjs +16 -42
  66. package/dist/core-api/service/pagination.mjs.map +1 -1
  67. package/dist/core-api/service/single-type.d.ts.map +1 -1
  68. package/dist/core-api/service/single-type.js +10 -4
  69. package/dist/core-api/service/single-type.js.map +1 -1
  70. package/dist/core-api/service/single-type.mjs +10 -4
  71. package/dist/core-api/service/single-type.mjs.map +1 -1
  72. package/dist/domain/content-type/index.js +4 -4
  73. package/dist/domain/content-type/index.js.map +1 -1
  74. package/dist/domain/content-type/index.mjs.map +1 -1
  75. package/dist/domain/content-type/validator.js.map +1 -1
  76. package/dist/domain/content-type/validator.mjs.map +1 -1
  77. package/dist/domain/module/index.js.map +1 -1
  78. package/dist/domain/module/index.mjs.map +1 -1
  79. package/dist/domain/module/validation.js.map +1 -1
  80. package/dist/domain/module/validation.mjs.map +1 -1
  81. package/dist/ee/index.d.ts +2 -0
  82. package/dist/ee/index.d.ts.map +1 -1
  83. package/dist/ee/index.js +9 -4
  84. package/dist/ee/index.js.map +1 -1
  85. package/dist/ee/index.mjs +6 -1
  86. package/dist/ee/index.mjs.map +1 -1
  87. package/dist/ee/license.d.ts.map +1 -1
  88. package/dist/ee/license.js +2 -1
  89. package/dist/ee/license.js.map +1 -1
  90. package/dist/ee/license.mjs +2 -1
  91. package/dist/ee/license.mjs.map +1 -1
  92. package/dist/factories.d.ts +2 -2
  93. package/dist/factories.d.ts.map +1 -1
  94. package/dist/factories.js +4 -4
  95. package/dist/factories.js.map +1 -1
  96. package/dist/factories.mjs.map +1 -1
  97. package/dist/index.d.ts +18 -2
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +25 -1
  100. package/dist/index.js.map +1 -1
  101. package/dist/index.mjs +27 -3
  102. package/dist/index.mjs.map +1 -1
  103. package/dist/loaders/admin.js +0 -1
  104. package/dist/loaders/admin.js.map +1 -1
  105. package/dist/loaders/admin.mjs +0 -1
  106. package/dist/loaders/admin.mjs.map +1 -1
  107. package/dist/loaders/apis.d.ts.map +1 -1
  108. package/dist/loaders/apis.js +12 -12
  109. package/dist/loaders/apis.js.map +1 -1
  110. package/dist/loaders/apis.mjs +10 -10
  111. package/dist/loaders/apis.mjs.map +1 -1
  112. package/dist/loaders/components.js.map +1 -1
  113. package/dist/loaders/components.mjs.map +1 -1
  114. package/dist/loaders/index.d.ts.map +1 -1
  115. package/dist/loaders/index.js +0 -2
  116. package/dist/loaders/index.js.map +1 -1
  117. package/dist/loaders/index.mjs +0 -2
  118. package/dist/loaders/index.mjs.map +1 -1
  119. package/dist/loaders/middlewares.js.map +1 -1
  120. package/dist/loaders/middlewares.mjs.map +1 -1
  121. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  122. package/dist/loaders/plugins/get-enabled-plugins.js +47 -18
  123. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  124. package/dist/loaders/plugins/get-enabled-plugins.mjs +17 -10
  125. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  126. package/dist/loaders/plugins/get-user-plugins-config.js +2 -2
  127. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  128. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  129. package/dist/loaders/plugins/index.d.ts.map +1 -1
  130. package/dist/loaders/plugins/index.js +33 -7
  131. package/dist/loaders/plugins/index.js.map +1 -1
  132. package/dist/loaders/plugins/index.mjs +9 -1
  133. package/dist/loaders/plugins/index.mjs.map +1 -1
  134. package/dist/loaders/policies.js.map +1 -1
  135. package/dist/loaders/policies.mjs.map +1 -1
  136. package/dist/loaders/sanitizers.js.map +1 -1
  137. package/dist/loaders/sanitizers.mjs.map +1 -1
  138. package/dist/loaders/src-index.js.map +1 -1
  139. package/dist/loaders/src-index.mjs.map +1 -1
  140. package/dist/loaders/validators.js.map +1 -1
  141. package/dist/loaders/validators.mjs.map +1 -1
  142. package/dist/middlewares/body.d.ts +2 -2
  143. package/dist/middlewares/body.d.ts.map +1 -1
  144. package/dist/middlewares/body.js +6 -6
  145. package/dist/middlewares/body.js.map +1 -1
  146. package/dist/middlewares/body.mjs +4 -4
  147. package/dist/middlewares/body.mjs.map +1 -1
  148. package/dist/middlewares/cors.d.ts.map +1 -1
  149. package/dist/middlewares/cors.js +9 -7
  150. package/dist/middlewares/cors.js.map +1 -1
  151. package/dist/middlewares/cors.mjs +9 -7
  152. package/dist/middlewares/cors.mjs.map +1 -1
  153. package/dist/middlewares/errors.js.map +1 -1
  154. package/dist/middlewares/errors.mjs.map +1 -1
  155. package/dist/middlewares/favicon.js.map +1 -1
  156. package/dist/middlewares/favicon.mjs.map +1 -1
  157. package/dist/middlewares/index.js.map +1 -1
  158. package/dist/middlewares/logger.js.map +1 -1
  159. package/dist/middlewares/logger.mjs.map +1 -1
  160. package/dist/middlewares/powered-by.js.map +1 -1
  161. package/dist/middlewares/powered-by.mjs.map +1 -1
  162. package/dist/middlewares/public.js +3 -3
  163. package/dist/middlewares/public.js.map +1 -1
  164. package/dist/middlewares/public.mjs +1 -1
  165. package/dist/middlewares/public.mjs.map +1 -1
  166. package/dist/middlewares/query.d.ts.map +1 -1
  167. package/dist/middlewares/query.js.map +1 -1
  168. package/dist/middlewares/query.mjs.map +1 -1
  169. package/dist/middlewares/response-time.js.map +1 -1
  170. package/dist/middlewares/response-time.mjs.map +1 -1
  171. package/dist/middlewares/responses.js +2 -2
  172. package/dist/middlewares/responses.js.map +1 -1
  173. package/dist/middlewares/responses.mjs.map +1 -1
  174. package/dist/middlewares/security.d.ts.map +1 -1
  175. package/dist/middlewares/security.js +12 -5
  176. package/dist/middlewares/security.js.map +1 -1
  177. package/dist/middlewares/security.mjs +11 -4
  178. package/dist/middlewares/security.mjs.map +1 -1
  179. package/dist/middlewares/session.js +2 -2
  180. package/dist/middlewares/session.js.map +1 -1
  181. package/dist/middlewares/session.mjs.map +1 -1
  182. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +33 -0
  183. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -0
  184. package/dist/migrations/database/5.0.0-discard-drafts.js +106 -0
  185. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -0
  186. package/dist/migrations/database/5.0.0-discard-drafts.mjs +106 -0
  187. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -0
  188. package/dist/migrations/draft-publish.d.ts +1 -1
  189. package/dist/migrations/draft-publish.d.ts.map +1 -1
  190. package/dist/migrations/draft-publish.js +14 -31
  191. package/dist/migrations/draft-publish.js.map +1 -1
  192. package/dist/migrations/draft-publish.mjs +15 -32
  193. package/dist/migrations/draft-publish.mjs.map +1 -1
  194. package/dist/migrations/i18n.d.ts +5 -0
  195. package/dist/migrations/i18n.d.ts.map +1 -0
  196. package/dist/migrations/i18n.js +54 -0
  197. package/dist/migrations/i18n.js.map +1 -0
  198. package/dist/migrations/i18n.mjs +54 -0
  199. package/dist/migrations/i18n.mjs.map +1 -0
  200. package/dist/migrations/index.d.ts +5 -0
  201. package/dist/migrations/index.d.ts.map +1 -0
  202. package/dist/migrations/index.js +15 -0
  203. package/dist/migrations/index.js.map +1 -0
  204. package/dist/migrations/index.mjs +15 -0
  205. package/dist/migrations/index.mjs.map +1 -0
  206. package/dist/providers/admin.d.ts +3 -0
  207. package/dist/providers/admin.d.ts.map +1 -0
  208. package/dist/providers/admin.js +20 -0
  209. package/dist/providers/admin.js.map +1 -0
  210. package/dist/providers/admin.mjs +21 -0
  211. package/dist/providers/admin.mjs.map +1 -0
  212. package/dist/providers/coreStore.d.ts +3 -0
  213. package/dist/providers/coreStore.d.ts.map +1 -0
  214. package/dist/providers/coreStore.js +11 -0
  215. package/dist/providers/coreStore.js.map +1 -0
  216. package/dist/providers/coreStore.mjs +12 -0
  217. package/dist/providers/coreStore.mjs.map +1 -0
  218. package/dist/providers/cron.d.ts +3 -0
  219. package/dist/providers/cron.d.ts.map +1 -0
  220. package/dist/providers/cron.js +20 -0
  221. package/dist/providers/cron.js.map +1 -0
  222. package/dist/providers/cron.mjs +21 -0
  223. package/dist/providers/cron.mjs.map +1 -0
  224. package/dist/providers/index.d.ts +3 -0
  225. package/dist/providers/index.d.ts.map +1 -0
  226. package/dist/providers/index.js +11 -0
  227. package/dist/providers/index.js.map +1 -0
  228. package/dist/providers/index.mjs +11 -0
  229. package/dist/providers/index.mjs.map +1 -0
  230. package/dist/providers/provider.d.ts +9 -0
  231. package/dist/providers/provider.d.ts.map +1 -0
  232. package/dist/providers/provider.js +5 -0
  233. package/dist/providers/provider.js.map +1 -0
  234. package/dist/providers/provider.mjs +5 -0
  235. package/dist/providers/provider.mjs.map +1 -0
  236. package/dist/providers/registries.d.ts +3 -0
  237. package/dist/providers/registries.d.ts.map +1 -0
  238. package/dist/providers/registries.js +35 -0
  239. package/dist/providers/registries.js.map +1 -0
  240. package/dist/providers/registries.mjs +36 -0
  241. package/dist/providers/registries.mjs.map +1 -0
  242. package/dist/providers/telemetry.d.ts +3 -0
  243. package/dist/providers/telemetry.d.ts.map +1 -0
  244. package/dist/providers/telemetry.js +19 -0
  245. package/dist/providers/telemetry.js.map +1 -0
  246. package/dist/providers/telemetry.mjs +20 -0
  247. package/dist/providers/telemetry.mjs.map +1 -0
  248. package/dist/providers/webhooks.d.ts +3 -0
  249. package/dist/providers/webhooks.d.ts.map +1 -0
  250. package/dist/providers/webhooks.js +30 -0
  251. package/dist/providers/webhooks.js.map +1 -0
  252. package/dist/providers/webhooks.mjs +31 -0
  253. package/dist/providers/webhooks.mjs.map +1 -0
  254. package/dist/registries/apis.js +2 -2
  255. package/dist/registries/apis.js.map +1 -1
  256. package/dist/registries/apis.mjs.map +1 -1
  257. package/dist/registries/components.js +2 -2
  258. package/dist/registries/components.js.map +1 -1
  259. package/dist/registries/components.mjs.map +1 -1
  260. package/dist/registries/content-types.js +3 -3
  261. package/dist/registries/content-types.js.map +1 -1
  262. package/dist/registries/content-types.mjs.map +1 -1
  263. package/dist/registries/controllers.js +3 -3
  264. package/dist/registries/controllers.js.map +1 -1
  265. package/dist/registries/controllers.mjs.map +1 -1
  266. package/dist/registries/custom-fields.js +4 -4
  267. package/dist/registries/custom-fields.js.map +1 -1
  268. package/dist/registries/custom-fields.mjs.map +1 -1
  269. package/dist/registries/hooks.js +2 -2
  270. package/dist/registries/hooks.js.map +1 -1
  271. package/dist/registries/hooks.mjs.map +1 -1
  272. package/dist/registries/index.d.ts +0 -1
  273. package/dist/registries/index.d.ts.map +1 -1
  274. package/dist/registries/middlewares.js +3 -3
  275. package/dist/registries/middlewares.js.map +1 -1
  276. package/dist/registries/middlewares.mjs.map +1 -1
  277. package/dist/registries/models.js.map +1 -1
  278. package/dist/registries/models.mjs.map +1 -1
  279. package/dist/registries/modules.js +3 -3
  280. package/dist/registries/modules.js.map +1 -1
  281. package/dist/registries/modules.mjs.map +1 -1
  282. package/dist/registries/namespace.js.map +1 -1
  283. package/dist/registries/namespace.mjs.map +1 -1
  284. package/dist/registries/plugins.js +2 -2
  285. package/dist/registries/plugins.js.map +1 -1
  286. package/dist/registries/plugins.mjs.map +1 -1
  287. package/dist/registries/policies.d.ts +21 -9
  288. package/dist/registries/policies.d.ts.map +1 -1
  289. package/dist/registries/policies.js +66 -20
  290. package/dist/registries/policies.js.map +1 -1
  291. package/dist/registries/policies.mjs +65 -19
  292. package/dist/registries/policies.mjs.map +1 -1
  293. package/dist/registries/sanitizers.js.map +1 -1
  294. package/dist/registries/sanitizers.mjs.map +1 -1
  295. package/dist/registries/services.js +3 -3
  296. package/dist/registries/services.js.map +1 -1
  297. package/dist/registries/services.mjs.map +1 -1
  298. package/dist/registries/validators.js.map +1 -1
  299. package/dist/registries/validators.mjs.map +1 -1
  300. package/dist/services/auth/index.js +3 -3
  301. package/dist/services/auth/index.js.map +1 -1
  302. package/dist/services/auth/index.mjs.map +1 -1
  303. package/dist/services/config.d.ts +3 -0
  304. package/dist/services/config.d.ts.map +1 -0
  305. package/dist/{registries → services}/config.js +11 -7
  306. package/dist/services/config.js.map +1 -0
  307. package/dist/{registries → services}/config.mjs +10 -7
  308. package/dist/services/config.mjs.map +1 -0
  309. package/dist/services/content-api/index.d.ts +28 -12
  310. package/dist/services/content-api/index.d.ts.map +1 -1
  311. package/dist/services/content-api/index.js +28 -2
  312. package/dist/services/content-api/index.js.map +1 -1
  313. package/dist/services/content-api/index.mjs +28 -2
  314. package/dist/services/content-api/index.mjs.map +1 -1
  315. package/dist/services/content-api/permissions/index.d.ts +10 -12
  316. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  317. package/dist/services/content-api/permissions/index.js +1 -1
  318. package/dist/services/content-api/permissions/index.js.map +1 -1
  319. package/dist/services/content-api/permissions/index.mjs +1 -1
  320. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  321. package/dist/services/content-api/permissions/providers/action.d.ts +5 -6
  322. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  323. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  324. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  325. package/dist/services/content-api/permissions/providers/condition.d.ts +5 -6
  326. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  327. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  328. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  329. package/dist/services/core-store.d.ts.map +1 -1
  330. package/dist/services/core-store.js +3 -3
  331. package/dist/services/core-store.js.map +1 -1
  332. package/dist/services/core-store.mjs.map +1 -1
  333. package/dist/services/cron.d.ts +3 -3
  334. package/dist/services/cron.d.ts.map +1 -1
  335. package/dist/services/cron.js +12 -8
  336. package/dist/services/cron.js.map +1 -1
  337. package/dist/services/cron.mjs +9 -5
  338. package/dist/services/cron.mjs.map +1 -1
  339. package/dist/services/custom-fields.js.map +1 -1
  340. package/dist/services/custom-fields.mjs.map +1 -1
  341. package/dist/services/document-service/attributes/index.d.ts +6 -0
  342. package/dist/services/document-service/attributes/index.d.ts.map +1 -0
  343. package/dist/services/{entity-service → document-service}/attributes/index.js +5 -5
  344. package/dist/services/document-service/attributes/index.js.map +1 -0
  345. package/dist/services/{entity-service → document-service}/attributes/index.mjs +5 -5
  346. package/dist/services/document-service/attributes/index.mjs.map +1 -0
  347. package/dist/services/document-service/attributes/transforms.d.ts.map +1 -0
  348. package/dist/services/{entity-service → document-service}/attributes/transforms.js +3 -3
  349. package/dist/services/document-service/attributes/transforms.js.map +1 -0
  350. package/dist/services/document-service/attributes/transforms.mjs.map +1 -0
  351. package/dist/services/document-service/common.d.ts +1 -1
  352. package/dist/services/document-service/common.d.ts.map +1 -1
  353. package/dist/services/document-service/common.js.map +1 -1
  354. package/dist/services/document-service/common.mjs.map +1 -1
  355. package/dist/services/document-service/components.d.ts +25 -1
  356. package/dist/services/document-service/components.d.ts.map +1 -1
  357. package/dist/services/{entity-service → document-service}/components.js +46 -56
  358. package/dist/services/document-service/components.js.map +1 -0
  359. package/dist/services/{entity-service → document-service}/components.mjs +36 -46
  360. package/dist/services/document-service/components.mjs.map +1 -0
  361. package/dist/services/document-service/draft-and-publish.js +16 -16
  362. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  363. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  364. package/dist/services/document-service/entries.d.ts +10 -0
  365. package/dist/services/document-service/entries.d.ts.map +1 -0
  366. package/dist/services/document-service/entries.js +95 -0
  367. package/dist/services/document-service/entries.js.map +1 -0
  368. package/dist/services/document-service/entries.mjs +95 -0
  369. package/dist/services/document-service/entries.mjs.map +1 -0
  370. package/dist/services/document-service/events.d.ts +25 -0
  371. package/dist/services/document-service/events.d.ts.map +1 -0
  372. package/dist/services/document-service/events.js +47 -0
  373. package/dist/services/document-service/events.js.map +1 -0
  374. package/dist/services/document-service/events.mjs +47 -0
  375. package/dist/services/document-service/events.mjs.map +1 -0
  376. package/dist/services/document-service/index.d.ts +2 -3
  377. package/dist/services/document-service/index.d.ts.map +1 -1
  378. package/dist/services/document-service/index.js +16 -4
  379. package/dist/services/document-service/index.js.map +1 -1
  380. package/dist/services/document-service/index.mjs +16 -4
  381. package/dist/services/document-service/index.mjs.map +1 -1
  382. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  383. package/dist/services/document-service/internationalization.js +21 -12
  384. package/dist/services/document-service/internationalization.js.map +1 -1
  385. package/dist/services/document-service/internationalization.mjs +14 -5
  386. package/dist/services/document-service/internationalization.mjs.map +1 -1
  387. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  388. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  389. package/dist/services/document-service/middlewares/middleware-manager.d.ts +5 -2
  390. package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -1
  391. package/dist/services/document-service/middlewares/middleware-manager.js +8 -5
  392. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  393. package/dist/services/document-service/middlewares/middleware-manager.mjs +8 -5
  394. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  395. package/dist/services/document-service/params.d.ts +3 -1
  396. package/dist/services/document-service/params.d.ts.map +1 -1
  397. package/dist/services/{entity-service → document-service}/params.js +2 -2
  398. package/dist/services/document-service/params.js.map +1 -0
  399. package/dist/services/document-service/params.mjs.map +1 -0
  400. package/dist/services/document-service/repository.d.ts.map +1 -1
  401. package/dist/services/document-service/repository.js +191 -159
  402. package/dist/services/document-service/repository.js.map +1 -1
  403. package/dist/services/document-service/repository.mjs +169 -137
  404. package/dist/services/document-service/repository.mjs.map +1 -1
  405. package/dist/services/document-service/transform/data.d.ts.map +1 -1
  406. package/dist/services/document-service/transform/data.js +4 -2
  407. package/dist/services/document-service/transform/data.js.map +1 -1
  408. package/dist/services/document-service/transform/data.mjs +4 -2
  409. package/dist/services/document-service/transform/data.mjs.map +1 -1
  410. package/dist/services/document-service/transform/fields.js.map +1 -1
  411. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  412. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  413. package/dist/services/document-service/transform/id-map.js +15 -8
  414. package/dist/services/document-service/transform/id-map.js.map +1 -1
  415. package/dist/services/document-service/transform/id-map.mjs +16 -9
  416. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  417. package/dist/services/document-service/transform/id-transform.js +2 -2
  418. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  419. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  420. package/dist/services/document-service/transform/populate.js +1 -1
  421. package/dist/services/document-service/transform/populate.js.map +1 -1
  422. package/dist/services/document-service/transform/populate.mjs +1 -1
  423. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  424. package/dist/services/document-service/transform/query.d.ts +5 -0
  425. package/dist/services/document-service/transform/query.d.ts.map +1 -0
  426. package/dist/services/document-service/transform/query.js +9 -0
  427. package/dist/services/document-service/transform/query.js.map +1 -0
  428. package/dist/services/document-service/transform/query.mjs +9 -0
  429. package/dist/services/document-service/transform/query.mjs.map +1 -0
  430. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +8 -7
  431. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  432. package/dist/services/document-service/transform/relations/extract/data-ids.js +51 -77
  433. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  434. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +51 -77
  435. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  436. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts +7 -3
  437. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  438. package/dist/services/document-service/transform/relations/transform/data-ids.js +69 -125
  439. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  440. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +69 -125
  441. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  442. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts +9 -0
  443. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts.map +1 -0
  444. package/dist/services/document-service/transform/relations/transform/default-locale.js +32 -0
  445. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -0
  446. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +32 -0
  447. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -0
  448. package/dist/services/document-service/transform/relations/utils/dp.js +2 -2
  449. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  450. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  451. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +2 -2
  452. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  453. package/dist/services/document-service/transform/relations/utils/i18n.js +3 -9
  454. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  455. package/dist/services/document-service/transform/relations/utils/i18n.mjs +3 -9
  456. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  457. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts +6 -0
  458. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -0
  459. package/dist/services/document-service/transform/relations/utils/map-relation.js +84 -0
  460. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -0
  461. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +84 -0
  462. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -0
  463. package/dist/services/document-service/transform/relations/utils/types.d.ts +6 -0
  464. package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -1
  465. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  466. package/dist/services/document-service/utils/populate.js +8 -2
  467. package/dist/services/document-service/utils/populate.js.map +1 -1
  468. package/dist/services/document-service/utils/populate.mjs +8 -2
  469. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  470. package/dist/services/document-service/utils/unidirectional-relations.d.ts +36 -0
  471. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -0
  472. package/dist/services/document-service/utils/unidirectional-relations.js +68 -0
  473. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
  474. package/dist/services/document-service/utils/unidirectional-relations.mjs +68 -0
  475. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
  476. package/dist/services/entity-service/index.d.ts.map +1 -1
  477. package/dist/services/entity-service/index.js +22 -16
  478. package/dist/services/entity-service/index.js.map +1 -1
  479. package/dist/services/entity-service/index.mjs +23 -17
  480. package/dist/services/entity-service/index.mjs.map +1 -1
  481. package/dist/services/entity-validator/blocks-validator.d.ts +1 -2
  482. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
  483. package/dist/services/entity-validator/blocks-validator.js +4 -3
  484. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  485. package/dist/services/entity-validator/blocks-validator.mjs +3 -3
  486. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  487. package/dist/services/entity-validator/index.d.ts +15 -1
  488. package/dist/services/entity-validator/index.d.ts.map +1 -1
  489. package/dist/services/entity-validator/index.js +189 -127
  490. package/dist/services/entity-validator/index.js.map +1 -1
  491. package/dist/services/entity-validator/index.mjs +184 -122
  492. package/dist/services/entity-validator/index.mjs.map +1 -1
  493. package/dist/services/entity-validator/validators.d.ts +36 -25
  494. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  495. package/dist/services/entity-validator/validators.js +148 -33
  496. package/dist/services/entity-validator/validators.js.map +1 -1
  497. package/dist/services/entity-validator/validators.mjs +140 -25
  498. package/dist/services/entity-validator/validators.mjs.map +1 -1
  499. package/dist/services/errors.js.map +1 -1
  500. package/dist/services/errors.mjs.map +1 -1
  501. package/dist/services/event-hub.d.ts +1 -0
  502. package/dist/services/event-hub.d.ts.map +1 -1
  503. package/dist/services/event-hub.js +9 -4
  504. package/dist/services/event-hub.js.map +1 -1
  505. package/dist/services/event-hub.mjs +9 -4
  506. package/dist/services/event-hub.mjs.map +1 -1
  507. package/dist/services/features.js.map +1 -1
  508. package/dist/services/features.mjs.map +1 -1
  509. package/dist/services/fs.js.map +1 -1
  510. package/dist/services/fs.mjs.map +1 -1
  511. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  512. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  513. package/dist/services/metrics/index.js +1 -2
  514. package/dist/services/metrics/index.js.map +1 -1
  515. package/dist/services/metrics/index.mjs +1 -2
  516. package/dist/services/metrics/index.mjs.map +1 -1
  517. package/dist/services/metrics/is-truthy.js.map +1 -1
  518. package/dist/services/metrics/middleware.d.ts.map +1 -1
  519. package/dist/services/metrics/middleware.js.map +1 -1
  520. package/dist/services/metrics/middleware.mjs.map +1 -1
  521. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  522. package/dist/services/metrics/rate-limiter.js.map +1 -1
  523. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  524. package/dist/services/metrics/sender.js.map +1 -1
  525. package/dist/services/metrics/sender.mjs.map +1 -1
  526. package/dist/services/query-params.d.ts +7 -0
  527. package/dist/services/query-params.d.ts.map +1 -0
  528. package/dist/services/query-params.js +12 -0
  529. package/dist/services/query-params.js.map +1 -0
  530. package/dist/services/query-params.mjs +13 -0
  531. package/dist/services/query-params.mjs.map +1 -0
  532. package/dist/services/reloader.d.ts +7 -0
  533. package/dist/services/reloader.d.ts.map +1 -0
  534. package/dist/services/reloader.js +36 -0
  535. package/dist/services/reloader.js.map +1 -0
  536. package/dist/services/reloader.mjs +36 -0
  537. package/dist/services/reloader.mjs.map +1 -0
  538. package/dist/services/request-context.js.map +1 -1
  539. package/dist/services/request-context.mjs.map +1 -1
  540. package/dist/services/server/admin-api.js.map +1 -1
  541. package/dist/services/server/admin-api.mjs.map +1 -1
  542. package/dist/services/server/api.js.map +1 -1
  543. package/dist/services/server/api.mjs.map +1 -1
  544. package/dist/services/server/compose-endpoint.d.ts.map +1 -1
  545. package/dist/services/server/compose-endpoint.js +8 -9
  546. package/dist/services/server/compose-endpoint.js.map +1 -1
  547. package/dist/services/server/compose-endpoint.mjs +2 -3
  548. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  549. package/dist/services/server/content-api.js.map +1 -1
  550. package/dist/services/server/content-api.mjs.map +1 -1
  551. package/dist/services/server/http-server.js.map +1 -1
  552. package/dist/services/server/http-server.mjs.map +1 -1
  553. package/dist/services/server/index.js +1 -1
  554. package/dist/services/server/index.js.map +1 -1
  555. package/dist/services/server/index.mjs +1 -1
  556. package/dist/services/server/index.mjs.map +1 -1
  557. package/dist/services/server/koa.d.ts.map +1 -1
  558. package/dist/services/server/koa.js +4 -4
  559. package/dist/services/server/koa.js.map +1 -1
  560. package/dist/services/server/koa.mjs +1 -1
  561. package/dist/services/server/koa.mjs.map +1 -1
  562. package/dist/services/server/middleware.js +3 -3
  563. package/dist/services/server/middleware.js.map +1 -1
  564. package/dist/services/server/middleware.mjs.map +1 -1
  565. package/dist/services/server/policy.d.ts +2 -2
  566. package/dist/services/server/policy.d.ts.map +1 -1
  567. package/dist/services/server/policy.js +4 -4
  568. package/dist/services/server/policy.js.map +1 -1
  569. package/dist/services/server/policy.mjs +4 -4
  570. package/dist/services/server/policy.mjs.map +1 -1
  571. package/dist/services/server/register-middlewares.js.map +1 -1
  572. package/dist/services/server/register-middlewares.mjs.map +1 -1
  573. package/dist/services/server/register-routes.js +3 -3
  574. package/dist/services/server/register-routes.js.map +1 -1
  575. package/dist/services/server/register-routes.mjs +3 -3
  576. package/dist/services/server/register-routes.mjs.map +1 -1
  577. package/dist/services/server/routing.d.ts +1 -1
  578. package/dist/services/server/routing.js +2 -2
  579. package/dist/services/server/routing.js.map +1 -1
  580. package/dist/services/server/routing.mjs.map +1 -1
  581. package/dist/services/utils/dynamic-zones.js +5 -5
  582. package/dist/services/utils/dynamic-zones.js.map +1 -1
  583. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  584. package/dist/services/webhook-runner.d.ts +2 -1
  585. package/dist/services/webhook-runner.d.ts.map +1 -1
  586. package/dist/services/webhook-runner.js.map +1 -1
  587. package/dist/services/webhook-runner.mjs.map +1 -1
  588. package/dist/services/webhook-store.d.ts +2 -8
  589. package/dist/services/webhook-store.d.ts.map +1 -1
  590. package/dist/services/webhook-store.js +14 -8
  591. package/dist/services/webhook-store.js.map +1 -1
  592. package/dist/services/webhook-store.mjs +14 -8
  593. package/dist/services/webhook-store.mjs.map +1 -1
  594. package/dist/services/worker-queue.js.map +1 -1
  595. package/dist/services/worker-queue.mjs.map +1 -1
  596. package/dist/utils/convert-custom-field-type.js.map +1 -1
  597. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  598. package/dist/utils/cron.js +3 -3
  599. package/dist/utils/cron.js.map +1 -1
  600. package/dist/utils/cron.mjs.map +1 -1
  601. package/dist/utils/fetch.d.ts.map +1 -1
  602. package/dist/utils/fetch.js +4 -3
  603. package/dist/utils/fetch.js.map +1 -1
  604. package/dist/utils/fetch.mjs +4 -3
  605. package/dist/utils/fetch.mjs.map +1 -1
  606. package/dist/utils/filepath-to-prop-path.d.ts +1 -1
  607. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  608. package/dist/utils/filepath-to-prop-path.js +27 -6
  609. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  610. package/dist/utils/filepath-to-prop-path.mjs +25 -5
  611. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  612. package/dist/utils/index.d.ts +2 -1
  613. package/dist/utils/index.d.ts.map +1 -1
  614. package/dist/utils/is-initialized.js +3 -3
  615. package/dist/utils/is-initialized.js.map +1 -1
  616. package/dist/utils/is-initialized.mjs.map +1 -1
  617. package/dist/utils/load-config-file.js.map +1 -1
  618. package/dist/utils/load-config-file.mjs.map +1 -1
  619. package/dist/utils/load-files.d.ts.map +1 -1
  620. package/dist/utils/load-files.js +1 -2
  621. package/dist/utils/load-files.js.map +1 -1
  622. package/dist/utils/load-files.mjs +1 -2
  623. package/dist/utils/load-files.mjs.map +1 -1
  624. package/dist/utils/resolve-working-dirs.d.ts +19 -0
  625. package/dist/utils/resolve-working-dirs.d.ts.map +1 -0
  626. package/dist/utils/resolve-working-dirs.js +13 -0
  627. package/dist/utils/resolve-working-dirs.js.map +1 -0
  628. package/dist/utils/resolve-working-dirs.mjs +11 -0
  629. package/dist/utils/resolve-working-dirs.mjs.map +1 -0
  630. package/dist/utils/signals.js.map +1 -1
  631. package/dist/utils/signals.mjs.map +1 -1
  632. package/dist/utils/startup-logger.d.ts.map +1 -1
  633. package/dist/utils/startup-logger.js +10 -5
  634. package/dist/utils/startup-logger.js.map +1 -1
  635. package/dist/utils/startup-logger.mjs +9 -4
  636. package/dist/utils/startup-logger.mjs.map +1 -1
  637. package/dist/utils/transform-content-types-to-models.d.ts +369 -37
  638. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  639. package/dist/utils/transform-content-types-to-models.js +94 -89
  640. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  641. package/dist/utils/transform-content-types-to-models.mjs +93 -88
  642. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  643. package/dist/utils/update-notifier/index.d.ts +1 -6
  644. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  645. package/dist/utils/update-notifier/index.js +11 -14
  646. package/dist/utils/update-notifier/index.js.map +1 -1
  647. package/dist/utils/update-notifier/index.mjs +11 -14
  648. package/dist/utils/update-notifier/index.mjs.map +1 -1
  649. package/package.json +35 -31
  650. package/dist/registries/config.d.ts +0 -4
  651. package/dist/registries/config.d.ts.map +0 -1
  652. package/dist/registries/config.js.map +0 -1
  653. package/dist/registries/config.mjs.map +0 -1
  654. package/dist/services/document-service/document-engine.d.ts +0 -2
  655. package/dist/services/document-service/document-engine.d.ts.map +0 -1
  656. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts +0 -2
  657. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts.map +0 -1
  658. package/dist/services/document-service/transform/relations/utils/data.js +0 -12
  659. package/dist/services/document-service/transform/relations/utils/data.js.map +0 -1
  660. package/dist/services/document-service/transform/relations/utils/data.mjs +0 -12
  661. package/dist/services/document-service/transform/relations/utils/data.mjs.map +0 -1
  662. package/dist/services/entity-service/attributes/index.d.ts +0 -6
  663. package/dist/services/entity-service/attributes/index.d.ts.map +0 -1
  664. package/dist/services/entity-service/attributes/index.js.map +0 -1
  665. package/dist/services/entity-service/attributes/index.mjs.map +0 -1
  666. package/dist/services/entity-service/attributes/transforms.d.ts.map +0 -1
  667. package/dist/services/entity-service/attributes/transforms.js.map +0 -1
  668. package/dist/services/entity-service/attributes/transforms.mjs.map +0 -1
  669. package/dist/services/entity-service/components.d.ts +0 -95
  670. package/dist/services/entity-service/components.d.ts.map +0 -1
  671. package/dist/services/entity-service/components.js.map +0 -1
  672. package/dist/services/entity-service/components.mjs.map +0 -1
  673. package/dist/services/entity-service/params.d.ts +0 -8
  674. package/dist/services/entity-service/params.d.ts.map +0 -1
  675. package/dist/services/entity-service/params.js.map +0 -1
  676. package/dist/services/entity-service/params.mjs.map +0 -1
  677. package/dist/utils/get-dirs.d.ts +0 -9
  678. package/dist/utils/get-dirs.d.ts.map +0 -1
  679. package/dist/utils/get-dirs.js.map +0 -1
  680. package/dist/utils/get-dirs.mjs.map +0 -1
  681. /package/dist/services/{entity-service → document-service}/attributes/transforms.d.ts +0 -0
  682. /package/dist/services/{entity-service → document-service}/attributes/transforms.mjs +0 -0
  683. /package/dist/services/{entity-service → document-service}/params.mjs +0 -0
@@ -31,6 +31,7 @@ const RESTRICTED_FILENAMES = [
31
31
  "packageJsonStrapi",
32
32
  "info",
33
33
  "autoReload",
34
+ "dirs",
34
35
  // probably mistaken/typo filenames
35
36
  ...Object.keys(MISTAKEN_FILENAMES)
36
37
  ];
@@ -47,8 +48,7 @@ const logWarning = (message) => {
47
48
  console.warn(message);
48
49
  };
49
50
  const loadConfigDir = (dir) => {
50
- if (!fs__default.default.existsSync(dir))
51
- return {};
51
+ if (!fs__default.default.existsSync(dir)) return {};
52
52
  const allFiles = fs__default.default.readdirSync(dir, { withFileTypes: true });
53
53
  const seenFilenames = /* @__PURE__ */ new Set();
54
54
  const configFiles = allFiles.reduce((acc, file) => {
@@ -92,11 +92,14 @@ const loadConfigDir = (dir) => {
92
92
  acc.push(file);
93
93
  return acc;
94
94
  }, []);
95
- return configFiles.reduce((acc, file) => {
96
- const key = path__default.default.basename(file.name, path__default.default.extname(file.name));
97
- acc[key] = loadConfigFile.loadConfigFile(path__default.default.resolve(dir, file.name));
98
- return acc;
99
- }, {});
95
+ return configFiles.reduce(
96
+ (acc, file) => {
97
+ const key = path__default.default.basename(file.name, path__default.default.extname(file.name));
98
+ acc[key] = loadConfigFile.loadConfigFile(path__default.default.resolve(dir, file.name));
99
+ return acc;
100
+ },
101
+ {}
102
+ );
100
103
  };
101
104
  module.exports = loadConfigDir;
102
105
  //# sourceMappingURL=config-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.js","sources":["../../src/configuration/config-loader.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport { loadConfigFile } from '../utils/load-config-file';\n\nconst VALID_EXTENSIONS = ['.js', '.json'];\n\n// These filenames are restricted, but will also emit a warning that the filename is probably a mistake\nconst MISTAKEN_FILENAMES = {\n middleware: 'middlewares',\n plugin: 'plugins',\n};\n\n// the following are restricted to prevent conflicts with existing STRAPI_* env vars or root level config options\n// must all be lowercase to match validator\nconst RESTRICTED_FILENAMES = [\n // existing env vars\n 'uuid',\n 'hosting',\n 'license',\n 'enforce',\n 'disable',\n 'enable',\n 'telemetry',\n\n // reserved for future internal use\n 'strapi',\n 'internal',\n\n // root level config options\n // TODO: it would be better to move these out of the root config and allow them to be loaded\n 'launchedAt',\n 'serveAdminPanel',\n 'autoReload',\n 'environment',\n 'packageJsonStrapi',\n 'info',\n 'autoReload',\n\n // probably mistaken/typo filenames\n ...Object.keys(MISTAKEN_FILENAMES),\n];\n\n// Existing Strapi configuration files\nconst STRAPI_CONFIG_FILENAMES = [\n 'admin',\n 'server',\n 'api',\n 'database',\n 'middlewares',\n 'plugins',\n 'features',\n];\n\n// Note: we don't have access to strapi logger at this point so we can't use it\nconst logWarning = (message: string) => {\n console.warn(message);\n};\n\nexport default (dir: string) => {\n if (!fs.existsSync(dir)) return {};\n\n const allFiles = fs.readdirSync(dir, { withFileTypes: true });\n const seenFilenames = new Set<string>();\n const configFiles = allFiles.reduce((acc, file) => {\n const baseName = path.basename(file.name, path.extname(file.name));\n const baseNameLower = baseName.toLowerCase();\n const extension = path.extname(file.name);\n const extensionLower = extension.toLowerCase();\n\n if (!file.isFile()) {\n return acc;\n }\n\n if (!VALID_EXTENSIONS.includes(extensionLower)) {\n logWarning(\n `Config file not loaded, extension must be one of ${VALID_EXTENSIONS.join(',')}): ${\n file.name\n }`\n );\n return acc;\n }\n\n if (RESTRICTED_FILENAMES.includes(baseNameLower)) {\n logWarning(`Config file not loaded, restricted filename: ${file.name}`);\n\n // suggest the filename they probably meant\n if (baseNameLower in MISTAKEN_FILENAMES) {\n console.log(\n `Did you mean ${MISTAKEN_FILENAMES[baseNameLower as keyof typeof MISTAKEN_FILENAMES]}]} ?`\n );\n }\n\n return acc;\n }\n\n // restricted names and Strapi configs are also restricted from being prefixes\n const restrictedPrefix = [...RESTRICTED_FILENAMES, ...STRAPI_CONFIG_FILENAMES].find(\n (restrictedName) =>\n restrictedName.startsWith(baseNameLower) && restrictedName !== baseNameLower\n );\n if (restrictedPrefix) {\n logWarning(\n `Config file not loaded, filename cannot start with ${restrictedPrefix}: ${file.name}`\n );\n }\n\n /**\n * Note: If user config files contain non-alpha-numeric characters, we won't be able to auto-load env\n * into them.\n *\n * For the initial feature, we will only load our internal configs, but later when we provide a method\n * to define the shape of custom configs, we will need to warn that those filenames can't be loaded\n * for technical limitations on env variable names\n * */\n // if (!/^[A-Za-z0-9]+$/.test(baseName)) {\n // logWarning(\"Using a non-alphanumeric config file name prevents Strapi from auto-loading it from environment variables.\")\n // }\n\n // filter filenames without case-insensitive uniqueness\n if (seenFilenames.has(baseNameLower)) {\n logWarning(\n `Config file not loaded, case-insensitive name matches other config file: ${file.name}`\n );\n return acc;\n }\n seenFilenames.add(baseNameLower);\n\n // If file passes all filters, add it to the accumulator\n acc.push(file);\n return acc;\n }, [] as fs.Dirent[]);\n\n return configFiles.reduce((acc, file) => {\n const key = path.basename(file.name, path.extname(file.name));\n\n acc[key] = loadConfigFile(path.resolve(dir, file.name));\n\n return acc;\n }, {} as Record<string, unknown>);\n};\n"],"names":["fs","path","loadConfigFile"],"mappings":";;;;;;;AAIA,MAAM,mBAAmB,CAAC,OAAO,OAAO;AAGxC,MAAM,qBAAqB;AAAA,EACzB,YAAY;AAAA,EACZ,QAAQ;AACV;AAIA,MAAM,uBAAuB;AAAA;AAAA,EAE3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA,GAAG,OAAO,KAAK,kBAAkB;AACnC;AAGA,MAAM,0BAA0B;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,MAAM,aAAa,CAAC,YAAoB;AACtC,UAAQ,KAAK,OAAO;AACtB;AAEA,MAAe,gBAAA,CAAC,QAAgB;AAC1B,MAAA,CAACA,YAAAA,QAAG,WAAW,GAAG;AAAG,WAAO;AAEhC,QAAM,WAAWA,YAAAA,QAAG,YAAY,KAAK,EAAE,eAAe,MAAM;AACtD,QAAA,oCAAoB;AAC1B,QAAM,cAAc,SAAS,OAAO,CAAC,KAAK,SAAS;AAC3C,UAAA,WAAWC,cAAAA,QAAK,SAAS,KAAK,MAAMA,cAAK,QAAA,QAAQ,KAAK,IAAI,CAAC;AAC3D,UAAA,gBAAgB,SAAS;AAC/B,UAAM,YAAYA,cAAA,QAAK,QAAQ,KAAK,IAAI;AAClC,UAAA,iBAAiB,UAAU;AAE7B,QAAA,CAAC,KAAK,UAAU;AACX,aAAA;AAAA,IACT;AAEA,QAAI,CAAC,iBAAiB,SAAS,cAAc,GAAG;AAC9C;AAAA,QACE,oDAAoD,iBAAiB,KAAK,GAAG,CAAC,MAC5E,KAAK,IACP;AAAA,MAAA;AAEK,aAAA;AAAA,IACT;AAEI,QAAA,qBAAqB,SAAS,aAAa,GAAG;AACrC,iBAAA,gDAAgD,KAAK,IAAI,EAAE;AAGtE,UAAI,iBAAiB,oBAAoB;AAC/B,gBAAA;AAAA,UACN,gBAAgB,mBAAmB,aAAgD,CAAC;AAAA,QAAA;AAAA,MAExF;AAEO,aAAA;AAAA,IACT;AAGA,UAAM,mBAAmB,CAAC,GAAG,sBAAsB,GAAG,uBAAuB,EAAE;AAAA,MAC7E,CAAC,mBACC,eAAe,WAAW,aAAa,KAAK,mBAAmB;AAAA,IAAA;AAEnE,QAAI,kBAAkB;AACpB;AAAA,QACE,sDAAsD,gBAAgB,KAAK,KAAK,IAAI;AAAA,MAAA;AAAA,IAExF;AAeI,QAAA,cAAc,IAAI,aAAa,GAAG;AACpC;AAAA,QACE,4EAA4E,KAAK,IAAI;AAAA,MAAA;AAEhF,aAAA;AAAA,IACT;AACA,kBAAc,IAAI,aAAa;AAG/B,QAAI,KAAK,IAAI;AACN,WAAA;AAAA,EACT,GAAG,CAAiB,CAAA;AAEpB,SAAO,YAAY,OAAO,CAAC,KAAK,SAAS;AACjC,UAAA,MAAMA,cAAAA,QAAK,SAAS,KAAK,MAAMA,cAAK,QAAA,QAAQ,KAAK,IAAI,CAAC;AAExD,QAAA,GAAG,IAAIC,eAAAA,eAAeD,cAAA,QAAK,QAAQ,KAAK,KAAK,IAAI,CAAC;AAE/C,WAAA;AAAA,EACT,GAAG,CAA6B,CAAA;AAClC;;"}
1
+ {"version":3,"file":"config-loader.js","sources":["../../src/configuration/config-loader.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport { loadConfigFile } from '../utils/load-config-file';\n\nconst VALID_EXTENSIONS = ['.js', '.json'];\n\n// These filenames are restricted, but will also emit a warning that the filename is probably a mistake\nconst MISTAKEN_FILENAMES = {\n middleware: 'middlewares',\n plugin: 'plugins',\n};\n\n// the following are restricted to prevent conflicts with existing STRAPI_* env vars or root level config options\n// must all be lowercase to match validator\nconst RESTRICTED_FILENAMES = [\n // existing env vars\n 'uuid',\n 'hosting',\n 'license',\n 'enforce',\n 'disable',\n 'enable',\n 'telemetry',\n\n // reserved for future internal use\n 'strapi',\n 'internal',\n\n // root level config options\n // TODO: it would be better to move these out of the root config and allow them to be loaded\n 'launchedAt',\n 'serveAdminPanel',\n 'autoReload',\n 'environment',\n 'packageJsonStrapi',\n 'info',\n 'autoReload',\n 'dirs',\n\n // probably mistaken/typo filenames\n ...Object.keys(MISTAKEN_FILENAMES),\n];\n\n// Existing Strapi configuration files\nconst STRAPI_CONFIG_FILENAMES = [\n 'admin',\n 'server',\n 'api',\n 'database',\n 'middlewares',\n 'plugins',\n 'features',\n];\n\n// Note: we don't have access to strapi logger at this point so we can't use it\nconst logWarning = (message: string) => {\n console.warn(message);\n};\n\nexport default (dir: string) => {\n if (!fs.existsSync(dir)) return {};\n\n const allFiles = fs.readdirSync(dir, { withFileTypes: true });\n const seenFilenames = new Set<string>();\n const configFiles = allFiles.reduce((acc, file) => {\n const baseName = path.basename(file.name, path.extname(file.name));\n const baseNameLower = baseName.toLowerCase();\n const extension = path.extname(file.name);\n const extensionLower = extension.toLowerCase();\n\n if (!file.isFile()) {\n return acc;\n }\n\n if (!VALID_EXTENSIONS.includes(extensionLower)) {\n logWarning(\n `Config file not loaded, extension must be one of ${VALID_EXTENSIONS.join(',')}): ${\n file.name\n }`\n );\n return acc;\n }\n\n if (RESTRICTED_FILENAMES.includes(baseNameLower)) {\n logWarning(`Config file not loaded, restricted filename: ${file.name}`);\n\n // suggest the filename they probably meant\n if (baseNameLower in MISTAKEN_FILENAMES) {\n console.log(\n `Did you mean ${MISTAKEN_FILENAMES[baseNameLower as keyof typeof MISTAKEN_FILENAMES]}]} ?`\n );\n }\n\n return acc;\n }\n\n // restricted names and Strapi configs are also restricted from being prefixes\n const restrictedPrefix = [...RESTRICTED_FILENAMES, ...STRAPI_CONFIG_FILENAMES].find(\n (restrictedName) =>\n restrictedName.startsWith(baseNameLower) && restrictedName !== baseNameLower\n );\n if (restrictedPrefix) {\n logWarning(\n `Config file not loaded, filename cannot start with ${restrictedPrefix}: ${file.name}`\n );\n }\n\n /**\n * Note: If user config files contain non-alpha-numeric characters, we won't be able to auto-load env\n * into them.\n *\n * For the initial feature, we will only load our internal configs, but later when we provide a method\n * to define the shape of custom configs, we will need to warn that those filenames can't be loaded\n * for technical limitations on env variable names\n * */\n // if (!/^[A-Za-z0-9]+$/.test(baseName)) {\n // logWarning(\"Using a non-alphanumeric config file name prevents Strapi from auto-loading it from environment variables.\")\n // }\n\n // filter filenames without case-insensitive uniqueness\n if (seenFilenames.has(baseNameLower)) {\n logWarning(\n `Config file not loaded, case-insensitive name matches other config file: ${file.name}`\n );\n return acc;\n }\n seenFilenames.add(baseNameLower);\n\n // If file passes all filters, add it to the accumulator\n acc.push(file);\n return acc;\n }, [] as fs.Dirent[]);\n\n return configFiles.reduce(\n (acc, file) => {\n const key = path.basename(file.name, path.extname(file.name));\n\n acc[key] = loadConfigFile(path.resolve(dir, file.name));\n\n return acc;\n },\n {} as Record<string, unknown>\n );\n};\n"],"names":["fs","path","loadConfigFile"],"mappings":";;;;;;;AAIA,MAAM,mBAAmB,CAAC,OAAO,OAAO;AAGxC,MAAM,qBAAqB;AAAA,EACzB,YAAY;AAAA,EACZ,QAAQ;AACV;AAIA,MAAM,uBAAuB;AAAA;AAAA,EAE3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA,GAAG,OAAO,KAAK,kBAAkB;AACnC;AAGA,MAAM,0BAA0B;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,MAAM,aAAa,CAAC,YAAoB;AACtC,UAAQ,KAAK,OAAO;AACtB;AAEA,MAAe,gBAAA,CAAC,QAAgB;AAC9B,MAAI,CAACA,YAAAA,QAAG,WAAW,GAAG,UAAU,CAAC;AAEjC,QAAM,WAAWA,YAAAA,QAAG,YAAY,KAAK,EAAE,eAAe,MAAM;AACtD,QAAA,oCAAoB,IAAY;AACtC,QAAM,cAAc,SAAS,OAAO,CAAC,KAAK,SAAS;AAC3C,UAAA,WAAWC,sBAAK,SAAS,KAAK,MAAMA,cAAAA,QAAK,QAAQ,KAAK,IAAI,CAAC;AAC3D,UAAA,gBAAgB,SAAS,YAAY;AAC3C,UAAM,YAAYA,cAAA,QAAK,QAAQ,KAAK,IAAI;AAClC,UAAA,iBAAiB,UAAU,YAAY;AAEzC,QAAA,CAAC,KAAK,UAAU;AACX,aAAA;AAAA,IAAA;AAGT,QAAI,CAAC,iBAAiB,SAAS,cAAc,GAAG;AAC9C;AAAA,QACE,oDAAoD,iBAAiB,KAAK,GAAG,CAAC,MAC5E,KAAK,IACP;AAAA,MACF;AACO,aAAA;AAAA,IAAA;AAGL,QAAA,qBAAqB,SAAS,aAAa,GAAG;AACrC,iBAAA,gDAAgD,KAAK,IAAI,EAAE;AAGtE,UAAI,iBAAiB,oBAAoB;AAC/B,gBAAA;AAAA,UACN,gBAAgB,mBAAmB,aAAgD,CAAC;AAAA,QACtF;AAAA,MAAA;AAGK,aAAA;AAAA,IAAA;AAIT,UAAM,mBAAmB,CAAC,GAAG,sBAAsB,GAAG,uBAAuB,EAAE;AAAA,MAC7E,CAAC,mBACC,eAAe,WAAW,aAAa,KAAK,mBAAmB;AAAA,IACnE;AACA,QAAI,kBAAkB;AACpB;AAAA,QACE,sDAAsD,gBAAgB,KAAK,KAAK,IAAI;AAAA,MACtF;AAAA,IAAA;AAgBE,QAAA,cAAc,IAAI,aAAa,GAAG;AACpC;AAAA,QACE,4EAA4E,KAAK,IAAI;AAAA,MACvF;AACO,aAAA;AAAA,IAAA;AAET,kBAAc,IAAI,aAAa;AAG/B,QAAI,KAAK,IAAI;AACN,WAAA;AAAA,EACT,GAAG,EAAiB;AAEpB,SAAO,YAAY;AAAA,IACjB,CAAC,KAAK,SAAS;AACP,YAAA,MAAMA,sBAAK,SAAS,KAAK,MAAMA,cAAAA,QAAK,QAAQ,KAAK,IAAI,CAAC;AAExD,UAAA,GAAG,IAAIC,8BAAeD,cAAAA,QAAK,QAAQ,KAAK,KAAK,IAAI,CAAC;AAE/C,aAAA;AAAA,IACT;AAAA,IACA,CAAA;AAAA,EACF;AACF;;"}
@@ -27,6 +27,7 @@ const RESTRICTED_FILENAMES = [
27
27
  "packageJsonStrapi",
28
28
  "info",
29
29
  "autoReload",
30
+ "dirs",
30
31
  // probably mistaken/typo filenames
31
32
  ...Object.keys(MISTAKEN_FILENAMES)
32
33
  ];
@@ -43,8 +44,7 @@ const logWarning = (message) => {
43
44
  console.warn(message);
44
45
  };
45
46
  const loadConfigDir = (dir) => {
46
- if (!fs.existsSync(dir))
47
- return {};
47
+ if (!fs.existsSync(dir)) return {};
48
48
  const allFiles = fs.readdirSync(dir, { withFileTypes: true });
49
49
  const seenFilenames = /* @__PURE__ */ new Set();
50
50
  const configFiles = allFiles.reduce((acc, file) => {
@@ -88,11 +88,14 @@ const loadConfigDir = (dir) => {
88
88
  acc.push(file);
89
89
  return acc;
90
90
  }, []);
91
- return configFiles.reduce((acc, file) => {
92
- const key = path.basename(file.name, path.extname(file.name));
93
- acc[key] = loadConfigFile(path.resolve(dir, file.name));
94
- return acc;
95
- }, {});
91
+ return configFiles.reduce(
92
+ (acc, file) => {
93
+ const key = path.basename(file.name, path.extname(file.name));
94
+ acc[key] = loadConfigFile(path.resolve(dir, file.name));
95
+ return acc;
96
+ },
97
+ {}
98
+ );
96
99
  };
97
100
  export {
98
101
  loadConfigDir as default
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.mjs","sources":["../../src/configuration/config-loader.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport { loadConfigFile } from '../utils/load-config-file';\n\nconst VALID_EXTENSIONS = ['.js', '.json'];\n\n// These filenames are restricted, but will also emit a warning that the filename is probably a mistake\nconst MISTAKEN_FILENAMES = {\n middleware: 'middlewares',\n plugin: 'plugins',\n};\n\n// the following are restricted to prevent conflicts with existing STRAPI_* env vars or root level config options\n// must all be lowercase to match validator\nconst RESTRICTED_FILENAMES = [\n // existing env vars\n 'uuid',\n 'hosting',\n 'license',\n 'enforce',\n 'disable',\n 'enable',\n 'telemetry',\n\n // reserved for future internal use\n 'strapi',\n 'internal',\n\n // root level config options\n // TODO: it would be better to move these out of the root config and allow them to be loaded\n 'launchedAt',\n 'serveAdminPanel',\n 'autoReload',\n 'environment',\n 'packageJsonStrapi',\n 'info',\n 'autoReload',\n\n // probably mistaken/typo filenames\n ...Object.keys(MISTAKEN_FILENAMES),\n];\n\n// Existing Strapi configuration files\nconst STRAPI_CONFIG_FILENAMES = [\n 'admin',\n 'server',\n 'api',\n 'database',\n 'middlewares',\n 'plugins',\n 'features',\n];\n\n// Note: we don't have access to strapi logger at this point so we can't use it\nconst logWarning = (message: string) => {\n console.warn(message);\n};\n\nexport default (dir: string) => {\n if (!fs.existsSync(dir)) return {};\n\n const allFiles = fs.readdirSync(dir, { withFileTypes: true });\n const seenFilenames = new Set<string>();\n const configFiles = allFiles.reduce((acc, file) => {\n const baseName = path.basename(file.name, path.extname(file.name));\n const baseNameLower = baseName.toLowerCase();\n const extension = path.extname(file.name);\n const extensionLower = extension.toLowerCase();\n\n if (!file.isFile()) {\n return acc;\n }\n\n if (!VALID_EXTENSIONS.includes(extensionLower)) {\n logWarning(\n `Config file not loaded, extension must be one of ${VALID_EXTENSIONS.join(',')}): ${\n file.name\n }`\n );\n return acc;\n }\n\n if (RESTRICTED_FILENAMES.includes(baseNameLower)) {\n logWarning(`Config file not loaded, restricted filename: ${file.name}`);\n\n // suggest the filename they probably meant\n if (baseNameLower in MISTAKEN_FILENAMES) {\n console.log(\n `Did you mean ${MISTAKEN_FILENAMES[baseNameLower as keyof typeof MISTAKEN_FILENAMES]}]} ?`\n );\n }\n\n return acc;\n }\n\n // restricted names and Strapi configs are also restricted from being prefixes\n const restrictedPrefix = [...RESTRICTED_FILENAMES, ...STRAPI_CONFIG_FILENAMES].find(\n (restrictedName) =>\n restrictedName.startsWith(baseNameLower) && restrictedName !== baseNameLower\n );\n if (restrictedPrefix) {\n logWarning(\n `Config file not loaded, filename cannot start with ${restrictedPrefix}: ${file.name}`\n );\n }\n\n /**\n * Note: If user config files contain non-alpha-numeric characters, we won't be able to auto-load env\n * into them.\n *\n * For the initial feature, we will only load our internal configs, but later when we provide a method\n * to define the shape of custom configs, we will need to warn that those filenames can't be loaded\n * for technical limitations on env variable names\n * */\n // if (!/^[A-Za-z0-9]+$/.test(baseName)) {\n // logWarning(\"Using a non-alphanumeric config file name prevents Strapi from auto-loading it from environment variables.\")\n // }\n\n // filter filenames without case-insensitive uniqueness\n if (seenFilenames.has(baseNameLower)) {\n logWarning(\n `Config file not loaded, case-insensitive name matches other config file: ${file.name}`\n );\n return acc;\n }\n seenFilenames.add(baseNameLower);\n\n // If file passes all filters, add it to the accumulator\n acc.push(file);\n return acc;\n }, [] as fs.Dirent[]);\n\n return configFiles.reduce((acc, file) => {\n const key = path.basename(file.name, path.extname(file.name));\n\n acc[key] = loadConfigFile(path.resolve(dir, file.name));\n\n return acc;\n }, {} as Record<string, unknown>);\n};\n"],"names":[],"mappings":";;;AAIA,MAAM,mBAAmB,CAAC,OAAO,OAAO;AAGxC,MAAM,qBAAqB;AAAA,EACzB,YAAY;AAAA,EACZ,QAAQ;AACV;AAIA,MAAM,uBAAuB;AAAA;AAAA,EAE3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA,GAAG,OAAO,KAAK,kBAAkB;AACnC;AAGA,MAAM,0BAA0B;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,MAAM,aAAa,CAAC,YAAoB;AACtC,UAAQ,KAAK,OAAO;AACtB;AAEA,MAAe,gBAAA,CAAC,QAAgB;AAC1B,MAAA,CAAC,GAAG,WAAW,GAAG;AAAG,WAAO;AAEhC,QAAM,WAAW,GAAG,YAAY,KAAK,EAAE,eAAe,MAAM;AACtD,QAAA,oCAAoB;AAC1B,QAAM,cAAc,SAAS,OAAO,CAAC,KAAK,SAAS;AAC3C,UAAA,WAAW,KAAK,SAAS,KAAK,MAAM,KAAK,QAAQ,KAAK,IAAI,CAAC;AAC3D,UAAA,gBAAgB,SAAS;AAC/B,UAAM,YAAY,KAAK,QAAQ,KAAK,IAAI;AAClC,UAAA,iBAAiB,UAAU;AAE7B,QAAA,CAAC,KAAK,UAAU;AACX,aAAA;AAAA,IACT;AAEA,QAAI,CAAC,iBAAiB,SAAS,cAAc,GAAG;AAC9C;AAAA,QACE,oDAAoD,iBAAiB,KAAK,GAAG,CAAC,MAC5E,KAAK,IACP;AAAA,MAAA;AAEK,aAAA;AAAA,IACT;AAEI,QAAA,qBAAqB,SAAS,aAAa,GAAG;AACrC,iBAAA,gDAAgD,KAAK,IAAI,EAAE;AAGtE,UAAI,iBAAiB,oBAAoB;AAC/B,gBAAA;AAAA,UACN,gBAAgB,mBAAmB,aAAgD,CAAC;AAAA,QAAA;AAAA,MAExF;AAEO,aAAA;AAAA,IACT;AAGA,UAAM,mBAAmB,CAAC,GAAG,sBAAsB,GAAG,uBAAuB,EAAE;AAAA,MAC7E,CAAC,mBACC,eAAe,WAAW,aAAa,KAAK,mBAAmB;AAAA,IAAA;AAEnE,QAAI,kBAAkB;AACpB;AAAA,QACE,sDAAsD,gBAAgB,KAAK,KAAK,IAAI;AAAA,MAAA;AAAA,IAExF;AAeI,QAAA,cAAc,IAAI,aAAa,GAAG;AACpC;AAAA,QACE,4EAA4E,KAAK,IAAI;AAAA,MAAA;AAEhF,aAAA;AAAA,IACT;AACA,kBAAc,IAAI,aAAa;AAG/B,QAAI,KAAK,IAAI;AACN,WAAA;AAAA,EACT,GAAG,CAAiB,CAAA;AAEpB,SAAO,YAAY,OAAO,CAAC,KAAK,SAAS;AACjC,UAAA,MAAM,KAAK,SAAS,KAAK,MAAM,KAAK,QAAQ,KAAK,IAAI,CAAC;AAExD,QAAA,GAAG,IAAI,eAAe,KAAK,QAAQ,KAAK,KAAK,IAAI,CAAC;AAE/C,WAAA;AAAA,EACT,GAAG,CAA6B,CAAA;AAClC;"}
1
+ {"version":3,"file":"config-loader.mjs","sources":["../../src/configuration/config-loader.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport { loadConfigFile } from '../utils/load-config-file';\n\nconst VALID_EXTENSIONS = ['.js', '.json'];\n\n// These filenames are restricted, but will also emit a warning that the filename is probably a mistake\nconst MISTAKEN_FILENAMES = {\n middleware: 'middlewares',\n plugin: 'plugins',\n};\n\n// the following are restricted to prevent conflicts with existing STRAPI_* env vars or root level config options\n// must all be lowercase to match validator\nconst RESTRICTED_FILENAMES = [\n // existing env vars\n 'uuid',\n 'hosting',\n 'license',\n 'enforce',\n 'disable',\n 'enable',\n 'telemetry',\n\n // reserved for future internal use\n 'strapi',\n 'internal',\n\n // root level config options\n // TODO: it would be better to move these out of the root config and allow them to be loaded\n 'launchedAt',\n 'serveAdminPanel',\n 'autoReload',\n 'environment',\n 'packageJsonStrapi',\n 'info',\n 'autoReload',\n 'dirs',\n\n // probably mistaken/typo filenames\n ...Object.keys(MISTAKEN_FILENAMES),\n];\n\n// Existing Strapi configuration files\nconst STRAPI_CONFIG_FILENAMES = [\n 'admin',\n 'server',\n 'api',\n 'database',\n 'middlewares',\n 'plugins',\n 'features',\n];\n\n// Note: we don't have access to strapi logger at this point so we can't use it\nconst logWarning = (message: string) => {\n console.warn(message);\n};\n\nexport default (dir: string) => {\n if (!fs.existsSync(dir)) return {};\n\n const allFiles = fs.readdirSync(dir, { withFileTypes: true });\n const seenFilenames = new Set<string>();\n const configFiles = allFiles.reduce((acc, file) => {\n const baseName = path.basename(file.name, path.extname(file.name));\n const baseNameLower = baseName.toLowerCase();\n const extension = path.extname(file.name);\n const extensionLower = extension.toLowerCase();\n\n if (!file.isFile()) {\n return acc;\n }\n\n if (!VALID_EXTENSIONS.includes(extensionLower)) {\n logWarning(\n `Config file not loaded, extension must be one of ${VALID_EXTENSIONS.join(',')}): ${\n file.name\n }`\n );\n return acc;\n }\n\n if (RESTRICTED_FILENAMES.includes(baseNameLower)) {\n logWarning(`Config file not loaded, restricted filename: ${file.name}`);\n\n // suggest the filename they probably meant\n if (baseNameLower in MISTAKEN_FILENAMES) {\n console.log(\n `Did you mean ${MISTAKEN_FILENAMES[baseNameLower as keyof typeof MISTAKEN_FILENAMES]}]} ?`\n );\n }\n\n return acc;\n }\n\n // restricted names and Strapi configs are also restricted from being prefixes\n const restrictedPrefix = [...RESTRICTED_FILENAMES, ...STRAPI_CONFIG_FILENAMES].find(\n (restrictedName) =>\n restrictedName.startsWith(baseNameLower) && restrictedName !== baseNameLower\n );\n if (restrictedPrefix) {\n logWarning(\n `Config file not loaded, filename cannot start with ${restrictedPrefix}: ${file.name}`\n );\n }\n\n /**\n * Note: If user config files contain non-alpha-numeric characters, we won't be able to auto-load env\n * into them.\n *\n * For the initial feature, we will only load our internal configs, but later when we provide a method\n * to define the shape of custom configs, we will need to warn that those filenames can't be loaded\n * for technical limitations on env variable names\n * */\n // if (!/^[A-Za-z0-9]+$/.test(baseName)) {\n // logWarning(\"Using a non-alphanumeric config file name prevents Strapi from auto-loading it from environment variables.\")\n // }\n\n // filter filenames without case-insensitive uniqueness\n if (seenFilenames.has(baseNameLower)) {\n logWarning(\n `Config file not loaded, case-insensitive name matches other config file: ${file.name}`\n );\n return acc;\n }\n seenFilenames.add(baseNameLower);\n\n // If file passes all filters, add it to the accumulator\n acc.push(file);\n return acc;\n }, [] as fs.Dirent[]);\n\n return configFiles.reduce(\n (acc, file) => {\n const key = path.basename(file.name, path.extname(file.name));\n\n acc[key] = loadConfigFile(path.resolve(dir, file.name));\n\n return acc;\n },\n {} as Record<string, unknown>\n );\n};\n"],"names":[],"mappings":";;;AAIA,MAAM,mBAAmB,CAAC,OAAO,OAAO;AAGxC,MAAM,qBAAqB;AAAA,EACzB,YAAY;AAAA,EACZ,QAAQ;AACV;AAIA,MAAM,uBAAuB;AAAA;AAAA,EAE3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA,GAAG,OAAO,KAAK,kBAAkB;AACnC;AAGA,MAAM,0BAA0B;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,MAAM,aAAa,CAAC,YAAoB;AACtC,UAAQ,KAAK,OAAO;AACtB;AAEA,MAAe,gBAAA,CAAC,QAAgB;AAC9B,MAAI,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;AAEjC,QAAM,WAAW,GAAG,YAAY,KAAK,EAAE,eAAe,MAAM;AACtD,QAAA,oCAAoB,IAAY;AACtC,QAAM,cAAc,SAAS,OAAO,CAAC,KAAK,SAAS;AAC3C,UAAA,WAAW,KAAK,SAAS,KAAK,MAAM,KAAK,QAAQ,KAAK,IAAI,CAAC;AAC3D,UAAA,gBAAgB,SAAS,YAAY;AAC3C,UAAM,YAAY,KAAK,QAAQ,KAAK,IAAI;AAClC,UAAA,iBAAiB,UAAU,YAAY;AAEzC,QAAA,CAAC,KAAK,UAAU;AACX,aAAA;AAAA,IAAA;AAGT,QAAI,CAAC,iBAAiB,SAAS,cAAc,GAAG;AAC9C;AAAA,QACE,oDAAoD,iBAAiB,KAAK,GAAG,CAAC,MAC5E,KAAK,IACP;AAAA,MACF;AACO,aAAA;AAAA,IAAA;AAGL,QAAA,qBAAqB,SAAS,aAAa,GAAG;AACrC,iBAAA,gDAAgD,KAAK,IAAI,EAAE;AAGtE,UAAI,iBAAiB,oBAAoB;AAC/B,gBAAA;AAAA,UACN,gBAAgB,mBAAmB,aAAgD,CAAC;AAAA,QACtF;AAAA,MAAA;AAGK,aAAA;AAAA,IAAA;AAIT,UAAM,mBAAmB,CAAC,GAAG,sBAAsB,GAAG,uBAAuB,EAAE;AAAA,MAC7E,CAAC,mBACC,eAAe,WAAW,aAAa,KAAK,mBAAmB;AAAA,IACnE;AACA,QAAI,kBAAkB;AACpB;AAAA,QACE,sDAAsD,gBAAgB,KAAK,KAAK,IAAI;AAAA,MACtF;AAAA,IAAA;AAgBE,QAAA,cAAc,IAAI,aAAa,GAAG;AACpC;AAAA,QACE,4EAA4E,KAAK,IAAI;AAAA,MACvF;AACO,aAAA;AAAA,IAAA;AAET,kBAAc,IAAI,aAAa;AAG/B,QAAI,KAAK,IAAI;AACN,WAAA;AAAA,EACT,GAAG,EAAiB;AAEpB,SAAO,YAAY;AAAA,IACjB,CAAC,KAAK,SAAS;AACP,YAAA,MAAM,KAAK,SAAS,KAAK,MAAM,KAAK,QAAQ,KAAK,IAAI,CAAC;AAExD,UAAA,GAAG,IAAI,eAAe,KAAK,QAAQ,KAAK,KAAK,IAAI,CAAC;AAE/C,aAAA;AAAA,IACT;AAAA,IACA,CAAA;AAAA,EACF;AACF;"}
@@ -0,0 +1,10 @@
1
+ import type { Core } from '@strapi/types';
2
+ import type { StrapiOptions } from '../Strapi';
3
+ export type Options = {
4
+ app: string;
5
+ dist: string;
6
+ };
7
+ export declare const getDirs: ({ appDir, distDir }: StrapiOptions, config: {
8
+ server: Partial<Core.Config.Server>;
9
+ }) => Core.StrapiDirectories;
10
+ //# sourceMappingURL=get-dirs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-dirs.d.ts","sourceRoot":"","sources":["../../src/configuration/get-dirs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,MAAM,OAAO,GAAG;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,OAAO,wBACG,aAAa,UAC1B;IAAE,MAAM,EAAE,QAAQ,KAAK,MAAM,CAAC,MAAM,CAAC,CAAA;CAAE,KAC9C,KAAK,iBAwBN,CAAC"}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const path = require("path");
4
- const getDirs = ({ app: appDir, dist: distDir }, { strapi }) => ({
4
+ const fp = require("lodash/fp");
5
+ const getDirs = ({ appDir, distDir }, config) => ({
5
6
  dist: {
6
7
  root: distDir,
7
8
  src: path.join(distDir, "src"),
@@ -23,7 +24,7 @@ const getDirs = ({ app: appDir, dist: distDir }, { strapi }) => ({
23
24
  config: path.join(appDir, "config")
24
25
  },
25
26
  static: {
26
- public: path.resolve(appDir, strapi.config.get("server.dirs.public"))
27
+ public: path.resolve(appDir, fp.get("server.dirs.public", config))
27
28
  }
28
29
  });
29
30
  exports.getDirs = getDirs;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-dirs.js","sources":["../../src/configuration/get-dirs.ts"],"sourcesContent":["import { join, resolve } from 'path';\nimport { get } from 'lodash/fp';\n\nimport type { Core } from '@strapi/types';\nimport type { StrapiOptions } from '../Strapi';\n\nexport type Options = {\n app: string;\n dist: string;\n};\n\nexport const getDirs = (\n { appDir, distDir }: StrapiOptions,\n config: { server: Partial<Core.Config.Server> }\n): Core.StrapiDirectories => ({\n dist: {\n root: distDir,\n src: join(distDir, 'src'),\n api: join(distDir, 'src', 'api'),\n components: join(distDir, 'src', 'components'),\n extensions: join(distDir, 'src', 'extensions'),\n policies: join(distDir, 'src', 'policies'),\n middlewares: join(distDir, 'src', 'middlewares'),\n config: join(distDir, 'config'),\n },\n app: {\n root: appDir,\n src: join(appDir, 'src'),\n api: join(appDir, 'src', 'api'),\n components: join(appDir, 'src', 'components'),\n extensions: join(appDir, 'src', 'extensions'),\n policies: join(appDir, 'src', 'policies'),\n middlewares: join(appDir, 'src', 'middlewares'),\n config: join(appDir, 'config'),\n },\n static: {\n public: resolve(appDir, get('server.dirs.public', config)),\n },\n});\n"],"names":["join","resolve","get"],"mappings":";;;;AAWO,MAAM,UAAU,CACrB,EAAE,QAAQ,QAAA,GACV,YAC4B;AAAA,EAC5B,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,KAAKA,KAAAA,KAAK,SAAS,KAAK;AAAA,IACxB,KAAKA,KAAA,KAAK,SAAS,OAAO,KAAK;AAAA,IAC/B,YAAYA,KAAA,KAAK,SAAS,OAAO,YAAY;AAAA,IAC7C,YAAYA,KAAA,KAAK,SAAS,OAAO,YAAY;AAAA,IAC7C,UAAUA,KAAA,KAAK,SAAS,OAAO,UAAU;AAAA,IACzC,aAAaA,KAAA,KAAK,SAAS,OAAO,aAAa;AAAA,IAC/C,QAAQA,KAAAA,KAAK,SAAS,QAAQ;AAAA,EAChC;AAAA,EACA,KAAK;AAAA,IACH,MAAM;AAAA,IACN,KAAKA,KAAAA,KAAK,QAAQ,KAAK;AAAA,IACvB,KAAKA,KAAA,KAAK,QAAQ,OAAO,KAAK;AAAA,IAC9B,YAAYA,KAAA,KAAK,QAAQ,OAAO,YAAY;AAAA,IAC5C,YAAYA,KAAA,KAAK,QAAQ,OAAO,YAAY;AAAA,IAC5C,UAAUA,KAAA,KAAK,QAAQ,OAAO,UAAU;AAAA,IACxC,aAAaA,KAAA,KAAK,QAAQ,OAAO,aAAa;AAAA,IAC9C,QAAQA,KAAAA,KAAK,QAAQ,QAAQ;AAAA,EAC/B;AAAA,EACA,QAAQ;AAAA,IACN,QAAQC,KAAAA,QAAQ,QAAQC,GAAAA,IAAI,sBAAsB,MAAM,CAAC;AAAA,EAAA;AAE7D;;"}
@@ -1,5 +1,6 @@
1
1
  import { join, resolve } from "path";
2
- const getDirs = ({ app: appDir, dist: distDir }, { strapi }) => ({
2
+ import { get } from "lodash/fp";
3
+ const getDirs = ({ appDir, distDir }, config) => ({
3
4
  dist: {
4
5
  root: distDir,
5
6
  src: join(distDir, "src"),
@@ -21,7 +22,7 @@ const getDirs = ({ app: appDir, dist: distDir }, { strapi }) => ({
21
22
  config: join(appDir, "config")
22
23
  },
23
24
  static: {
24
- public: resolve(appDir, strapi.config.get("server.dirs.public"))
25
+ public: resolve(appDir, get("server.dirs.public", config))
25
26
  }
26
27
  });
27
28
  export {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-dirs.mjs","sources":["../../src/configuration/get-dirs.ts"],"sourcesContent":["import { join, resolve } from 'path';\nimport { get } from 'lodash/fp';\n\nimport type { Core } from '@strapi/types';\nimport type { StrapiOptions } from '../Strapi';\n\nexport type Options = {\n app: string;\n dist: string;\n};\n\nexport const getDirs = (\n { appDir, distDir }: StrapiOptions,\n config: { server: Partial<Core.Config.Server> }\n): Core.StrapiDirectories => ({\n dist: {\n root: distDir,\n src: join(distDir, 'src'),\n api: join(distDir, 'src', 'api'),\n components: join(distDir, 'src', 'components'),\n extensions: join(distDir, 'src', 'extensions'),\n policies: join(distDir, 'src', 'policies'),\n middlewares: join(distDir, 'src', 'middlewares'),\n config: join(distDir, 'config'),\n },\n app: {\n root: appDir,\n src: join(appDir, 'src'),\n api: join(appDir, 'src', 'api'),\n components: join(appDir, 'src', 'components'),\n extensions: join(appDir, 'src', 'extensions'),\n policies: join(appDir, 'src', 'policies'),\n middlewares: join(appDir, 'src', 'middlewares'),\n config: join(appDir, 'config'),\n },\n static: {\n public: resolve(appDir, get('server.dirs.public', config)),\n },\n});\n"],"names":[],"mappings":";;AAWO,MAAM,UAAU,CACrB,EAAE,QAAQ,QAAA,GACV,YAC4B;AAAA,EAC5B,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,KAAK,KAAK,SAAS,KAAK;AAAA,IACxB,KAAK,KAAK,SAAS,OAAO,KAAK;AAAA,IAC/B,YAAY,KAAK,SAAS,OAAO,YAAY;AAAA,IAC7C,YAAY,KAAK,SAAS,OAAO,YAAY;AAAA,IAC7C,UAAU,KAAK,SAAS,OAAO,UAAU;AAAA,IACzC,aAAa,KAAK,SAAS,OAAO,aAAa;AAAA,IAC/C,QAAQ,KAAK,SAAS,QAAQ;AAAA,EAChC;AAAA,EACA,KAAK;AAAA,IACH,MAAM;AAAA,IACN,KAAK,KAAK,QAAQ,KAAK;AAAA,IACvB,KAAK,KAAK,QAAQ,OAAO,KAAK;AAAA,IAC9B,YAAY,KAAK,QAAQ,OAAO,YAAY;AAAA,IAC5C,YAAY,KAAK,QAAQ,OAAO,YAAY;AAAA,IAC5C,UAAU,KAAK,QAAQ,OAAO,UAAU;AAAA,IACxC,aAAa,KAAK,QAAQ,OAAO,aAAa;AAAA,IAC9C,QAAQ,KAAK,QAAQ,QAAQ;AAAA,EAC/B;AAAA,EACA,QAAQ;AAAA,IACN,QAAQ,QAAQ,QAAQ,IAAI,sBAAsB,MAAM,CAAC;AAAA,EAAA;AAE7D;"}
@@ -1,16 +1,14 @@
1
1
  import _ from 'lodash';
2
- declare const _default: (dirs: {
3
- app: string;
4
- dist: string;
5
- }, initialConfig?: any) => {
2
+ import type { StrapiOptions } from '../Strapi';
3
+ export declare const loadConfiguration: (opts: StrapiOptions) => {
6
4
  launchedAt: number;
7
- autoReload: any;
5
+ autoReload: boolean;
8
6
  environment: string | undefined;
9
7
  uuid: any;
10
8
  packageJsonStrapi: Pick<any, string | number | symbol>;
11
9
  info: any;
12
10
  admin: {
13
- serveAdminPanel: any;
11
+ serveAdminPanel: boolean;
14
12
  };
15
13
  } & {
16
14
  server: {
@@ -47,5 +45,4 @@ declare const _default: (dirs: {
47
45
  };
48
46
  };
49
47
  } & _.Omit<Record<string, unknown>, "plugins"> & Record<string, unknown>;
50
- export default _default;
51
48
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/configuration/index.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,QAAQ,CAAC;+BA4CD;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,kBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAvE,wBAwCE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/configuration/index.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,QAAQ,CAAC;AASvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAsC/C,eAAO,MAAM,iBAAiB,SAAU,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wEAwCpD,CAAC"}
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
3
  const os = require("os");
3
4
  const path = require("path");
4
5
  const _ = require("lodash");
5
- const _$1 = require("lodash/fp");
6
+ const fp = require("lodash/fp");
6
7
  const dotenv = require("dotenv");
7
8
  const urls = require("./urls.js");
8
9
  const configLoader = require("./config-loader.js");
10
+ const getDirs = require("./get-dirs.js");
9
11
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
10
12
  const os__default = /* @__PURE__ */ _interopDefault(os);
11
13
  const path__default = /* @__PURE__ */ _interopDefault(path);
@@ -43,9 +45,8 @@ const defaultConfig = {
43
45
  }
44
46
  }
45
47
  };
46
- const loadConfiguration = (dirs, initialConfig = {}) => {
47
- const { app: appDir, dist: distDir } = dirs;
48
- const { autoReload = false, serveAdminPanel = true } = initialConfig;
48
+ const loadConfiguration = (opts) => {
49
+ const { appDir, distDir, autoReload = false, serveAdminPanel = true } = opts;
49
50
  const pkgJSON = require(path__default.default.resolve(appDir, "package.json"));
50
51
  const configDir = path__default.default.resolve(distDir || process.cwd(), "config");
51
52
  const rootConfig = {
@@ -62,7 +63,7 @@ const loadConfiguration = (dirs, initialConfig = {}) => {
62
63
  serveAdminPanel
63
64
  }
64
65
  };
65
- const baseConfig = _$1.omit("plugins", configLoader(configDir));
66
+ const baseConfig = fp.omit("plugins", configLoader(configDir));
66
67
  const envDir = path__default.default.resolve(configDir, "env", process.env.NODE_ENV);
67
68
  const envConfig = configLoader(envDir);
68
69
  const config = ___default.default.merge(rootConfig, defaultConfig, baseConfig, envConfig);
@@ -72,7 +73,8 @@ const loadConfiguration = (dirs, initialConfig = {}) => {
72
73
  ___default.default.set(config, "admin.url", adminUrl);
73
74
  ___default.default.set(config, "admin.path", adminPath);
74
75
  ___default.default.set(config, "admin.absoluteUrl", urls.getAbsoluteAdminUrl(config));
76
+ ___default.default.set(config, "dirs", getDirs.getDirs(opts, config));
75
77
  return config;
76
78
  };
77
- module.exports = loadConfiguration;
79
+ exports.loadConfiguration = loadConfiguration;
78
80
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/configuration/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport { omit } from 'lodash/fp';\nimport dotenv from 'dotenv';\nimport type { Core } from '@strapi/types';\nimport { getConfigUrls, getAbsoluteAdminUrl, getAbsoluteServerUrl } from './urls';\n\nimport loadConfigDir from './config-loader';\n\ndotenv.config({ path: process.env.ENV_PATH });\n\nprocess.env.NODE_ENV = process.env.NODE_ENV || 'development';\n\nconst { version: strapiVersion } = require(path.join(__dirname, '../../package.json'));\n\nconst defaultConfig = {\n server: {\n host: process.env.HOST || os.hostname() || 'localhost',\n port: Number(process.env.PORT) || 1337,\n proxy: false,\n cron: { enabled: false },\n admin: { autoOpen: false },\n dirs: { public: './public' },\n transfer: {\n remote: {\n enabled: true,\n },\n },\n logger: {\n updates: {\n enabled: true,\n },\n startup: {\n enabled: true,\n },\n },\n } satisfies Partial<Core.Config.Server>,\n admin: {} satisfies Partial<Core.Config.Admin>,\n api: {\n rest: {\n prefix: '/api',\n },\n } satisfies Partial<Core.Config.Api>,\n};\n\nexport default (dirs: { app: string; dist: string }, initialConfig: any = {}) => {\n const { app: appDir, dist: distDir } = dirs;\n const { autoReload = false, serveAdminPanel = true } = initialConfig;\n\n const pkgJSON = require(path.resolve(appDir, 'package.json'));\n\n const configDir = path.resolve(distDir || process.cwd(), 'config');\n\n const rootConfig = {\n launchedAt: Date.now(),\n autoReload,\n environment: process.env.NODE_ENV,\n uuid: _.get(pkgJSON, 'strapi.uuid'),\n packageJsonStrapi: _.omit(_.get(pkgJSON, 'strapi', {}), 'uuid'),\n info: {\n ...pkgJSON,\n strapi: strapiVersion,\n },\n admin: {\n serveAdminPanel,\n },\n };\n\n // See packages/core/core/src/domain/module/index.ts for plugin config loading\n const baseConfig = omit('plugins', loadConfigDir(configDir)); // plugin config will be loaded later\n\n const envDir = path.resolve(configDir, 'env', process.env.NODE_ENV as string);\n const envConfig = loadConfigDir(envDir);\n\n const config = _.merge(rootConfig, defaultConfig, baseConfig, envConfig);\n\n const { serverUrl, adminUrl, adminPath } = getConfigUrls(config);\n\n _.set(config, 'server.url', serverUrl);\n _.set(config, 'server.absoluteUrl', getAbsoluteServerUrl(config));\n _.set(config, 'admin.url', adminUrl);\n _.set(config, 'admin.path', adminPath);\n _.set(config, 'admin.absoluteUrl', getAbsoluteAdminUrl(config));\n\n return config;\n};\n"],"names":["dotenv","path","os","_","omit","loadConfigDir","getConfigUrls","getAbsoluteServerUrl","getAbsoluteAdminUrl"],"mappings":";;;;;;;;;;;;;AAWAA,gBAAAA,QAAO,OAAO,EAAE,MAAM,QAAQ,IAAI,UAAU;AAE5C,QAAQ,IAAI,WAAW,QAAQ,IAAI,YAAY;AAE/C,MAAM,EAAE,SAAS,cAAc,IAAI,QAAQC,cAAK,QAAA,KAAK,WAAW,oBAAoB,CAAC;AAErF,MAAM,gBAAgB;AAAA,EACpB,QAAQ;AAAA,IACN,MAAM,QAAQ,IAAI,QAAQC,YAAA,QAAG,cAAc;AAAA,IAC3C,MAAM,OAAO,QAAQ,IAAI,IAAI,KAAK;AAAA,IAClC,OAAO;AAAA,IACP,MAAM,EAAE,SAAS,MAAM;AAAA,IACvB,OAAO,EAAE,UAAU,MAAM;AAAA,IACzB,MAAM,EAAE,QAAQ,WAAW;AAAA,IAC3B,UAAU;AAAA,MACR,QAAQ;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,SAAS;AAAA,QACP,SAAS;AAAA,MACX;AAAA,MACA,SAAS;AAAA,QACP,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,CAAC;AAAA,EACR,KAAK;AAAA,IACH,MAAM;AAAA,MACJ,QAAQ;AAAA,IACV;AAAA,EACF;AACF;AAEA,MAAA,oBAAe,CAAC,MAAqC,gBAAqB,OAAO;AAC/E,QAAM,EAAE,KAAK,QAAQ,MAAM,YAAY;AACvC,QAAM,EAAE,aAAa,OAAO,kBAAkB,SAAS;AAEvD,QAAM,UAAU,QAAQD,cAAA,QAAK,QAAQ,QAAQ,cAAc,CAAC;AAE5D,QAAM,YAAYA,cAAK,QAAA,QAAQ,WAAW,QAAQ,IAAA,GAAO,QAAQ;AAEjE,QAAM,aAAa;AAAA,IACjB,YAAY,KAAK,IAAI;AAAA,IACrB;AAAA,IACA,aAAa,QAAQ,IAAI;AAAA,IACzB,MAAME,WAAA,QAAE,IAAI,SAAS,aAAa;AAAA,IAClC,mBAAmBA,WAAAA,QAAE,KAAKA,mBAAE,IAAI,SAAS,UAAU,EAAE,GAAG,MAAM;AAAA,IAC9D,MAAM;AAAA,MACJ,GAAG;AAAA,MACH,QAAQ;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACL;AAAA,IACF;AAAA,EAAA;AAIF,QAAM,aAAaC,IAAAA,KAAK,WAAWC,aAAc,SAAS,CAAC;AAE3D,QAAM,SAASJ,cAAK,QAAA,QAAQ,WAAW,OAAO,QAAQ,IAAI,QAAkB;AACtE,QAAA,YAAYI,aAAc,MAAM;AAEtC,QAAM,SAASF,WAAAA,QAAE,MAAM,YAAY,eAAe,YAAY,SAAS;AAEvE,QAAM,EAAE,WAAW,UAAU,UAAU,IAAIG,KAAAA,cAAc,MAAM;AAE7DH,aAAAA,QAAA,IAAI,QAAQ,cAAc,SAAS;AACrCA,aAAA,QAAE,IAAI,QAAQ,sBAAsBI,KAAA,qBAAqB,MAAM,CAAC;AAC9DJ,aAAAA,QAAA,IAAI,QAAQ,aAAa,QAAQ;AACjCA,aAAAA,QAAA,IAAI,QAAQ,cAAc,SAAS;AACrCA,aAAA,QAAE,IAAI,QAAQ,qBAAqBK,KAAA,oBAAoB,MAAM,CAAC;AAEvD,SAAA;AACT;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/configuration/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport { omit } from 'lodash/fp';\nimport dotenv from 'dotenv';\nimport type { Core } from '@strapi/types';\n\nimport { getConfigUrls, getAbsoluteAdminUrl, getAbsoluteServerUrl } from './urls';\nimport loadConfigDir from './config-loader';\nimport { getDirs } from './get-dirs';\n\nimport type { StrapiOptions } from '../Strapi';\n\ndotenv.config({ path: process.env.ENV_PATH });\n\nprocess.env.NODE_ENV = process.env.NODE_ENV || 'development';\n\nconst { version: strapiVersion } = require(path.join(__dirname, '../../package.json'));\n\nconst defaultConfig = {\n server: {\n host: process.env.HOST || os.hostname() || 'localhost',\n port: Number(process.env.PORT) || 1337,\n proxy: false,\n cron: { enabled: false },\n admin: { autoOpen: false },\n dirs: { public: './public' },\n transfer: {\n remote: {\n enabled: true,\n },\n },\n logger: {\n updates: {\n enabled: true,\n },\n startup: {\n enabled: true,\n },\n },\n } satisfies Partial<Core.Config.Server>,\n admin: {} satisfies Partial<Core.Config.Admin>,\n api: {\n rest: {\n prefix: '/api',\n },\n } satisfies Partial<Core.Config.Api>,\n};\n\nexport const loadConfiguration = (opts: StrapiOptions) => {\n const { appDir, distDir, autoReload = false, serveAdminPanel = true } = opts;\n\n const pkgJSON = require(path.resolve(appDir, 'package.json'));\n\n const configDir = path.resolve(distDir || process.cwd(), 'config');\n\n const rootConfig = {\n launchedAt: Date.now(),\n autoReload,\n environment: process.env.NODE_ENV,\n uuid: _.get(pkgJSON, 'strapi.uuid'),\n packageJsonStrapi: _.omit(_.get(pkgJSON, 'strapi', {}), 'uuid'),\n info: {\n ...pkgJSON,\n strapi: strapiVersion,\n },\n admin: {\n serveAdminPanel,\n },\n };\n\n // See packages/core/core/src/domain/module/index.ts for plugin config loading\n const baseConfig = omit('plugins', loadConfigDir(configDir)); // plugin config will be loaded later\n\n const envDir = path.resolve(configDir, 'env', process.env.NODE_ENV as string);\n const envConfig = loadConfigDir(envDir);\n\n const config = _.merge(rootConfig, defaultConfig, baseConfig, envConfig);\n\n const { serverUrl, adminUrl, adminPath } = getConfigUrls(config);\n\n _.set(config, 'server.url', serverUrl);\n _.set(config, 'server.absoluteUrl', getAbsoluteServerUrl(config));\n _.set(config, 'admin.url', adminUrl);\n _.set(config, 'admin.path', adminPath);\n _.set(config, 'admin.absoluteUrl', getAbsoluteAdminUrl(config));\n _.set(config, 'dirs', getDirs(opts, config));\n\n return config;\n};\n"],"names":["dotenv","path","os","_","omit","loadConfigDir","getConfigUrls","getAbsoluteServerUrl","getAbsoluteAdminUrl","getDirs"],"mappings":";;;;;;;;;;;;;;;AAcAA,gBAAAA,QAAO,OAAO,EAAE,MAAM,QAAQ,IAAI,UAAU;AAE5C,QAAQ,IAAI,WAAW,QAAQ,IAAI,YAAY;AAE/C,MAAM,EAAE,SAAS,cAAc,IAAI,QAAQC,cAAK,QAAA,KAAK,WAAW,oBAAoB,CAAC;AAErF,MAAM,gBAAgB;AAAA,EACpB,QAAQ;AAAA,IACN,MAAM,QAAQ,IAAI,QAAQC,YAAA,QAAG,cAAc;AAAA,IAC3C,MAAM,OAAO,QAAQ,IAAI,IAAI,KAAK;AAAA,IAClC,OAAO;AAAA,IACP,MAAM,EAAE,SAAS,MAAM;AAAA,IACvB,OAAO,EAAE,UAAU,MAAM;AAAA,IACzB,MAAM,EAAE,QAAQ,WAAW;AAAA,IAC3B,UAAU;AAAA,MACR,QAAQ;AAAA,QACN,SAAS;AAAA,MAAA;AAAA,IAEb;AAAA,IACA,QAAQ;AAAA,MACN,SAAS;AAAA,QACP,SAAS;AAAA,MACX;AAAA,MACA,SAAS;AAAA,QACP,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,EAEJ;AAAA,EACA,OAAO,CAAC;AAAA,EACR,KAAK;AAAA,IACH,MAAM;AAAA,MACJ,QAAQ;AAAA,IAAA;AAAA,EACV;AAEJ;AAEa,MAAA,oBAAoB,CAAC,SAAwB;AACxD,QAAM,EAAE,QAAQ,SAAS,aAAa,OAAO,kBAAkB,SAAS;AAExE,QAAM,UAAU,QAAQD,cAAAA,QAAK,QAAQ,QAAQ,cAAc,CAAC;AAE5D,QAAM,YAAYA,cAAAA,QAAK,QAAQ,WAAW,QAAQ,OAAO,QAAQ;AAEjE,QAAM,aAAa;AAAA,IACjB,YAAY,KAAK,IAAI;AAAA,IACrB;AAAA,IACA,aAAa,QAAQ,IAAI;AAAA,IACzB,MAAME,WAAA,QAAE,IAAI,SAAS,aAAa;AAAA,IAClC,mBAAmBA,WAAAA,QAAE,KAAKA,mBAAE,IAAI,SAAS,UAAU,EAAE,GAAG,MAAM;AAAA,IAC9D,MAAM;AAAA,MACJ,GAAG;AAAA,MACH,QAAQ;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACL;AAAA,IAAA;AAAA,EAEJ;AAGA,QAAM,aAAaC,GAAA,KAAK,WAAWC,aAAc,SAAS,CAAC;AAE3D,QAAM,SAASJ,cAAK,QAAA,QAAQ,WAAW,OAAO,QAAQ,IAAI,QAAkB;AACtE,QAAA,YAAYI,aAAc,MAAM;AAEtC,QAAM,SAASF,WAAAA,QAAE,MAAM,YAAY,eAAe,YAAY,SAAS;AAEvE,QAAM,EAAE,WAAW,UAAU,UAAU,IAAIG,KAAAA,cAAc,MAAM;AAE7DH,aAAAA,QAAA,IAAI,QAAQ,cAAc,SAAS;AACrCA,aAAA,QAAE,IAAI,QAAQ,sBAAsBI,KAAA,qBAAqB,MAAM,CAAC;AAC9DJ,aAAAA,QAAA,IAAI,QAAQ,aAAa,QAAQ;AACjCA,aAAAA,QAAA,IAAI,QAAQ,cAAc,SAAS;AACrCA,aAAA,QAAE,IAAI,QAAQ,qBAAqBK,KAAA,oBAAoB,MAAM,CAAC;AAC9DL,aAAA,QAAE,IAAI,QAAQ,QAAQM,QAAAA,QAAQ,MAAM,MAAM,CAAC;AAEpC,SAAA;AACT;;"}
@@ -5,6 +5,7 @@ import { omit } from "lodash/fp";
5
5
  import dotenv from "dotenv";
6
6
  import { getConfigUrls, getAbsoluteServerUrl, getAbsoluteAdminUrl } from "./urls.mjs";
7
7
  import loadConfigDir from "./config-loader.mjs";
8
+ import { getDirs } from "./get-dirs.mjs";
8
9
  dotenv.config({ path: process.env.ENV_PATH });
9
10
  process.env.NODE_ENV = process.env.NODE_ENV || "development";
10
11
  const { version: strapiVersion } = require(path.join(__dirname, "../../package.json"));
@@ -37,9 +38,8 @@ const defaultConfig = {
37
38
  }
38
39
  }
39
40
  };
40
- const loadConfiguration = (dirs, initialConfig = {}) => {
41
- const { app: appDir, dist: distDir } = dirs;
42
- const { autoReload = false, serveAdminPanel = true } = initialConfig;
41
+ const loadConfiguration = (opts) => {
42
+ const { appDir, distDir, autoReload = false, serveAdminPanel = true } = opts;
43
43
  const pkgJSON = require(path.resolve(appDir, "package.json"));
44
44
  const configDir = path.resolve(distDir || process.cwd(), "config");
45
45
  const rootConfig = {
@@ -66,9 +66,10 @@ const loadConfiguration = (dirs, initialConfig = {}) => {
66
66
  _.set(config, "admin.url", adminUrl);
67
67
  _.set(config, "admin.path", adminPath);
68
68
  _.set(config, "admin.absoluteUrl", getAbsoluteAdminUrl(config));
69
+ _.set(config, "dirs", getDirs(opts, config));
69
70
  return config;
70
71
  };
71
72
  export {
72
- loadConfiguration as default
73
+ loadConfiguration
73
74
  };
74
75
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/configuration/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport { omit } from 'lodash/fp';\nimport dotenv from 'dotenv';\nimport type { Core } from '@strapi/types';\nimport { getConfigUrls, getAbsoluteAdminUrl, getAbsoluteServerUrl } from './urls';\n\nimport loadConfigDir from './config-loader';\n\ndotenv.config({ path: process.env.ENV_PATH });\n\nprocess.env.NODE_ENV = process.env.NODE_ENV || 'development';\n\nconst { version: strapiVersion } = require(path.join(__dirname, '../../package.json'));\n\nconst defaultConfig = {\n server: {\n host: process.env.HOST || os.hostname() || 'localhost',\n port: Number(process.env.PORT) || 1337,\n proxy: false,\n cron: { enabled: false },\n admin: { autoOpen: false },\n dirs: { public: './public' },\n transfer: {\n remote: {\n enabled: true,\n },\n },\n logger: {\n updates: {\n enabled: true,\n },\n startup: {\n enabled: true,\n },\n },\n } satisfies Partial<Core.Config.Server>,\n admin: {} satisfies Partial<Core.Config.Admin>,\n api: {\n rest: {\n prefix: '/api',\n },\n } satisfies Partial<Core.Config.Api>,\n};\n\nexport default (dirs: { app: string; dist: string }, initialConfig: any = {}) => {\n const { app: appDir, dist: distDir } = dirs;\n const { autoReload = false, serveAdminPanel = true } = initialConfig;\n\n const pkgJSON = require(path.resolve(appDir, 'package.json'));\n\n const configDir = path.resolve(distDir || process.cwd(), 'config');\n\n const rootConfig = {\n launchedAt: Date.now(),\n autoReload,\n environment: process.env.NODE_ENV,\n uuid: _.get(pkgJSON, 'strapi.uuid'),\n packageJsonStrapi: _.omit(_.get(pkgJSON, 'strapi', {}), 'uuid'),\n info: {\n ...pkgJSON,\n strapi: strapiVersion,\n },\n admin: {\n serveAdminPanel,\n },\n };\n\n // See packages/core/core/src/domain/module/index.ts for plugin config loading\n const baseConfig = omit('plugins', loadConfigDir(configDir)); // plugin config will be loaded later\n\n const envDir = path.resolve(configDir, 'env', process.env.NODE_ENV as string);\n const envConfig = loadConfigDir(envDir);\n\n const config = _.merge(rootConfig, defaultConfig, baseConfig, envConfig);\n\n const { serverUrl, adminUrl, adminPath } = getConfigUrls(config);\n\n _.set(config, 'server.url', serverUrl);\n _.set(config, 'server.absoluteUrl', getAbsoluteServerUrl(config));\n _.set(config, 'admin.url', adminUrl);\n _.set(config, 'admin.path', adminPath);\n _.set(config, 'admin.absoluteUrl', getAbsoluteAdminUrl(config));\n\n return config;\n};\n"],"names":[],"mappings":";;;;;;;AAWA,OAAO,OAAO,EAAE,MAAM,QAAQ,IAAI,UAAU;AAE5C,QAAQ,IAAI,WAAW,QAAQ,IAAI,YAAY;AAE/C,MAAM,EAAE,SAAS,cAAc,IAAI,QAAQ,KAAK,KAAK,WAAW,oBAAoB,CAAC;AAErF,MAAM,gBAAgB;AAAA,EACpB,QAAQ;AAAA,IACN,MAAM,QAAQ,IAAI,QAAQ,GAAG,cAAc;AAAA,IAC3C,MAAM,OAAO,QAAQ,IAAI,IAAI,KAAK;AAAA,IAClC,OAAO;AAAA,IACP,MAAM,EAAE,SAAS,MAAM;AAAA,IACvB,OAAO,EAAE,UAAU,MAAM;AAAA,IACzB,MAAM,EAAE,QAAQ,WAAW;AAAA,IAC3B,UAAU;AAAA,MACR,QAAQ;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,SAAS;AAAA,QACP,SAAS;AAAA,MACX;AAAA,MACA,SAAS;AAAA,QACP,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,CAAC;AAAA,EACR,KAAK;AAAA,IACH,MAAM;AAAA,MACJ,QAAQ;AAAA,IACV;AAAA,EACF;AACF;AAEA,MAAA,oBAAe,CAAC,MAAqC,gBAAqB,OAAO;AAC/E,QAAM,EAAE,KAAK,QAAQ,MAAM,YAAY;AACvC,QAAM,EAAE,aAAa,OAAO,kBAAkB,SAAS;AAEvD,QAAM,UAAU,QAAQ,KAAK,QAAQ,QAAQ,cAAc,CAAC;AAE5D,QAAM,YAAY,KAAK,QAAQ,WAAW,QAAQ,IAAA,GAAO,QAAQ;AAEjE,QAAM,aAAa;AAAA,IACjB,YAAY,KAAK,IAAI;AAAA,IACrB;AAAA,IACA,aAAa,QAAQ,IAAI;AAAA,IACzB,MAAM,EAAE,IAAI,SAAS,aAAa;AAAA,IAClC,mBAAmB,EAAE,KAAK,EAAE,IAAI,SAAS,UAAU,EAAE,GAAG,MAAM;AAAA,IAC9D,MAAM;AAAA,MACJ,GAAG;AAAA,MACH,QAAQ;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACL;AAAA,IACF;AAAA,EAAA;AAIF,QAAM,aAAa,KAAK,WAAW,cAAc,SAAS,CAAC;AAE3D,QAAM,SAAS,KAAK,QAAQ,WAAW,OAAO,QAAQ,IAAI,QAAkB;AACtE,QAAA,YAAY,cAAc,MAAM;AAEtC,QAAM,SAAS,EAAE,MAAM,YAAY,eAAe,YAAY,SAAS;AAEvE,QAAM,EAAE,WAAW,UAAU,UAAU,IAAI,cAAc,MAAM;AAE7D,IAAA,IAAI,QAAQ,cAAc,SAAS;AACrC,IAAE,IAAI,QAAQ,sBAAsB,qBAAqB,MAAM,CAAC;AAC9D,IAAA,IAAI,QAAQ,aAAa,QAAQ;AACjC,IAAA,IAAI,QAAQ,cAAc,SAAS;AACrC,IAAE,IAAI,QAAQ,qBAAqB,oBAAoB,MAAM,CAAC;AAEvD,SAAA;AACT;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/configuration/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport os from 'os';\nimport path from 'path';\nimport _ from 'lodash';\nimport { omit } from 'lodash/fp';\nimport dotenv from 'dotenv';\nimport type { Core } from '@strapi/types';\n\nimport { getConfigUrls, getAbsoluteAdminUrl, getAbsoluteServerUrl } from './urls';\nimport loadConfigDir from './config-loader';\nimport { getDirs } from './get-dirs';\n\nimport type { StrapiOptions } from '../Strapi';\n\ndotenv.config({ path: process.env.ENV_PATH });\n\nprocess.env.NODE_ENV = process.env.NODE_ENV || 'development';\n\nconst { version: strapiVersion } = require(path.join(__dirname, '../../package.json'));\n\nconst defaultConfig = {\n server: {\n host: process.env.HOST || os.hostname() || 'localhost',\n port: Number(process.env.PORT) || 1337,\n proxy: false,\n cron: { enabled: false },\n admin: { autoOpen: false },\n dirs: { public: './public' },\n transfer: {\n remote: {\n enabled: true,\n },\n },\n logger: {\n updates: {\n enabled: true,\n },\n startup: {\n enabled: true,\n },\n },\n } satisfies Partial<Core.Config.Server>,\n admin: {} satisfies Partial<Core.Config.Admin>,\n api: {\n rest: {\n prefix: '/api',\n },\n } satisfies Partial<Core.Config.Api>,\n};\n\nexport const loadConfiguration = (opts: StrapiOptions) => {\n const { appDir, distDir, autoReload = false, serveAdminPanel = true } = opts;\n\n const pkgJSON = require(path.resolve(appDir, 'package.json'));\n\n const configDir = path.resolve(distDir || process.cwd(), 'config');\n\n const rootConfig = {\n launchedAt: Date.now(),\n autoReload,\n environment: process.env.NODE_ENV,\n uuid: _.get(pkgJSON, 'strapi.uuid'),\n packageJsonStrapi: _.omit(_.get(pkgJSON, 'strapi', {}), 'uuid'),\n info: {\n ...pkgJSON,\n strapi: strapiVersion,\n },\n admin: {\n serveAdminPanel,\n },\n };\n\n // See packages/core/core/src/domain/module/index.ts for plugin config loading\n const baseConfig = omit('plugins', loadConfigDir(configDir)); // plugin config will be loaded later\n\n const envDir = path.resolve(configDir, 'env', process.env.NODE_ENV as string);\n const envConfig = loadConfigDir(envDir);\n\n const config = _.merge(rootConfig, defaultConfig, baseConfig, envConfig);\n\n const { serverUrl, adminUrl, adminPath } = getConfigUrls(config);\n\n _.set(config, 'server.url', serverUrl);\n _.set(config, 'server.absoluteUrl', getAbsoluteServerUrl(config));\n _.set(config, 'admin.url', adminUrl);\n _.set(config, 'admin.path', adminPath);\n _.set(config, 'admin.absoluteUrl', getAbsoluteAdminUrl(config));\n _.set(config, 'dirs', getDirs(opts, config));\n\n return config;\n};\n"],"names":[],"mappings":";;;;;;;;AAcA,OAAO,OAAO,EAAE,MAAM,QAAQ,IAAI,UAAU;AAE5C,QAAQ,IAAI,WAAW,QAAQ,IAAI,YAAY;AAE/C,MAAM,EAAE,SAAS,cAAc,IAAI,QAAQ,KAAK,KAAK,WAAW,oBAAoB,CAAC;AAErF,MAAM,gBAAgB;AAAA,EACpB,QAAQ;AAAA,IACN,MAAM,QAAQ,IAAI,QAAQ,GAAG,cAAc;AAAA,IAC3C,MAAM,OAAO,QAAQ,IAAI,IAAI,KAAK;AAAA,IAClC,OAAO;AAAA,IACP,MAAM,EAAE,SAAS,MAAM;AAAA,IACvB,OAAO,EAAE,UAAU,MAAM;AAAA,IACzB,MAAM,EAAE,QAAQ,WAAW;AAAA,IAC3B,UAAU;AAAA,MACR,QAAQ;AAAA,QACN,SAAS;AAAA,MAAA;AAAA,IAEb;AAAA,IACA,QAAQ;AAAA,MACN,SAAS;AAAA,QACP,SAAS;AAAA,MACX;AAAA,MACA,SAAS;AAAA,QACP,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,EAEJ;AAAA,EACA,OAAO,CAAC;AAAA,EACR,KAAK;AAAA,IACH,MAAM;AAAA,MACJ,QAAQ;AAAA,IAAA;AAAA,EACV;AAEJ;AAEa,MAAA,oBAAoB,CAAC,SAAwB;AACxD,QAAM,EAAE,QAAQ,SAAS,aAAa,OAAO,kBAAkB,SAAS;AAExE,QAAM,UAAU,QAAQ,KAAK,QAAQ,QAAQ,cAAc,CAAC;AAE5D,QAAM,YAAY,KAAK,QAAQ,WAAW,QAAQ,OAAO,QAAQ;AAEjE,QAAM,aAAa;AAAA,IACjB,YAAY,KAAK,IAAI;AAAA,IACrB;AAAA,IACA,aAAa,QAAQ,IAAI;AAAA,IACzB,MAAM,EAAE,IAAI,SAAS,aAAa;AAAA,IAClC,mBAAmB,EAAE,KAAK,EAAE,IAAI,SAAS,UAAU,EAAE,GAAG,MAAM;AAAA,IAC9D,MAAM;AAAA,MACJ,GAAG;AAAA,MACH,QAAQ;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACL;AAAA,IAAA;AAAA,EAEJ;AAGA,QAAM,aAAa,KAAK,WAAW,cAAc,SAAS,CAAC;AAE3D,QAAM,SAAS,KAAK,QAAQ,WAAW,OAAO,QAAQ,IAAI,QAAkB;AACtE,QAAA,YAAY,cAAc,MAAM;AAEtC,QAAM,SAAS,EAAE,MAAM,YAAY,eAAe,YAAY,SAAS;AAEvE,QAAM,EAAE,WAAW,UAAU,UAAU,IAAI,cAAc,MAAM;AAE7D,IAAA,IAAI,QAAQ,cAAc,SAAS;AACrC,IAAE,IAAI,QAAQ,sBAAsB,qBAAqB,MAAM,CAAC;AAC9D,IAAA,IAAI,QAAQ,aAAa,QAAQ;AACjC,IAAA,IAAI,QAAQ,cAAc,SAAS;AACrC,IAAE,IAAI,QAAQ,qBAAqB,oBAAoB,MAAM,CAAC;AAC9D,IAAE,IAAI,QAAQ,QAAQ,QAAQ,MAAM,MAAM,CAAC;AAEpC,SAAA;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"urls.js","sources":["../../src/configuration/urls.ts"],"sourcesContent":["import _ from 'lodash';\nimport { strings } from '@strapi/utils';\n\ninterface ServerConfig {\n url: string;\n host: string;\n port: number | string;\n}\n\nexport const getConfigUrls = (config: Record<string, unknown>, forAdminBuild = false) => {\n const serverConfig = config.server as ServerConfig;\n const adminConfig = config.admin;\n\n // Defines serverUrl value\n let serverUrl = _.get(serverConfig, 'url', '');\n serverUrl = _.trim(serverUrl, '/ ');\n if (typeof serverUrl !== 'string') {\n throw new Error('Invalid server url config. Make sure the url is a string.');\n }\n\n if (serverUrl.startsWith('http')) {\n try {\n serverUrl = _.trim(new URL(serverConfig.url).toString(), '/');\n } catch (e) {\n throw new Error(\n 'Invalid server url config. Make sure the url defined in server.js is valid.'\n );\n }\n } else if (serverUrl !== '') {\n serverUrl = `/${serverUrl}`;\n }\n\n // Defines adminUrl value\n let adminUrl = _.get(adminConfig, 'url', '/admin');\n adminUrl = _.trim(adminUrl, '/ ');\n if (typeof adminUrl !== 'string') {\n throw new Error('Invalid admin url config. Make sure the url is a non-empty string.');\n }\n if (adminUrl.startsWith('http')) {\n try {\n adminUrl = _.trim(new URL(adminUrl).toString(), '/');\n } catch (e) {\n throw new Error('Invalid admin url config. Make sure the url defined in server.js is valid.');\n }\n } else {\n adminUrl = `${serverUrl}/${adminUrl}`;\n }\n\n // Defines adminPath value\n let adminPath = adminUrl;\n if (\n serverUrl.startsWith('http') &&\n adminUrl.startsWith('http') &&\n new URL(adminUrl).origin === new URL(serverUrl).origin &&\n !forAdminBuild\n ) {\n adminPath = adminUrl.replace(strings.getCommonPath(serverUrl, adminUrl), '');\n adminPath = `/${_.trim(adminPath, '/')}`;\n } else if (adminUrl.startsWith('http')) {\n adminPath = new URL(adminUrl).pathname;\n }\n\n return {\n serverUrl,\n adminUrl,\n adminPath,\n };\n};\n\nconst getAbsoluteUrl =\n (adminOrServer: 'admin' | 'server') =>\n (config: Record<string, unknown>, forAdminBuild = false) => {\n const { serverUrl, adminUrl } = getConfigUrls(config, forAdminBuild);\n const url = adminOrServer === 'server' ? serverUrl : adminUrl;\n\n if (url.startsWith('http')) {\n return url;\n }\n\n const serverConfig = config.server as ServerConfig;\n const hostname =\n config.environment === 'development' && ['127.0.0.1', '0.0.0.0'].includes(serverConfig.host)\n ? 'localhost'\n : serverConfig.host;\n\n return `http://${hostname}:${serverConfig.port}${url}`;\n };\n\nexport const getAbsoluteAdminUrl = getAbsoluteUrl('admin');\nexport const getAbsoluteServerUrl = getAbsoluteUrl('server');\n"],"names":["_","strings"],"mappings":";;;;;;AASO,MAAM,gBAAgB,CAAC,QAAiC,gBAAgB,UAAU;AACvF,QAAM,eAAe,OAAO;AAC5B,QAAM,cAAc,OAAO;AAG3B,MAAI,YAAYA,WAAAA,QAAE,IAAI,cAAc,OAAO,EAAE;AACjC,cAAAA,WAAAA,QAAE,KAAK,WAAW,IAAI;AAC9B,MAAA,OAAO,cAAc,UAAU;AAC3B,UAAA,IAAI,MAAM,2DAA2D;AAAA,EAC7E;AAEI,MAAA,UAAU,WAAW,MAAM,GAAG;AAC5B,QAAA;AACU,kBAAAA,WAAAA,QAAE,KAAK,IAAI,IAAI,aAAa,GAAG,EAAE,YAAY,GAAG;AAAA,aACrD,GAAG;AACV,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA,WACS,cAAc,IAAI;AAC3B,gBAAY,IAAI,SAAS;AAAA,EAC3B;AAGA,MAAI,WAAWA,WAAAA,QAAE,IAAI,aAAa,OAAO,QAAQ;AACtC,aAAAA,WAAAA,QAAE,KAAK,UAAU,IAAI;AAC5B,MAAA,OAAO,aAAa,UAAU;AAC1B,UAAA,IAAI,MAAM,oEAAoE;AAAA,EACtF;AACI,MAAA,SAAS,WAAW,MAAM,GAAG;AAC3B,QAAA;AACS,iBAAAA,WAAAA,QAAE,KAAK,IAAI,IAAI,QAAQ,EAAE,YAAY,GAAG;AAAA,aAC5C,GAAG;AACJ,YAAA,IAAI,MAAM,4EAA4E;AAAA,IAC9F;AAAA,EAAA,OACK;AACM,eAAA,GAAG,SAAS,IAAI,QAAQ;AAAA,EACrC;AAGA,MAAI,YAAY;AAChB,MACE,UAAU,WAAW,MAAM,KAC3B,SAAS,WAAW,MAAM,KAC1B,IAAI,IAAI,QAAQ,EAAE,WAAW,IAAI,IAAI,SAAS,EAAE,UAChD,CAAC,eACD;AACA,gBAAY,SAAS,QAAQC,YAAA,QAAQ,cAAc,WAAW,QAAQ,GAAG,EAAE;AAC3E,gBAAY,IAAID,WAAA,QAAE,KAAK,WAAW,GAAG,CAAC;AAAA,EAC7B,WAAA,SAAS,WAAW,MAAM,GAAG;AAC1B,gBAAA,IAAI,IAAI,QAAQ,EAAE;AAAA,EAChC;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,MAAM,iBACJ,CAAC,kBACD,CAAC,QAAiC,gBAAgB,UAAU;AAC1D,QAAM,EAAE,WAAW,SAAA,IAAa,cAAc,QAAQ,aAAa;AAC7D,QAAA,MAAM,kBAAkB,WAAW,YAAY;AAEjD,MAAA,IAAI,WAAW,MAAM,GAAG;AACnB,WAAA;AAAA,EACT;AAEA,QAAM,eAAe,OAAO;AAC5B,QAAM,WACJ,OAAO,gBAAgB,iBAAiB,CAAC,aAAa,SAAS,EAAE,SAAS,aAAa,IAAI,IACvF,cACA,aAAa;AAEnB,SAAO,UAAU,QAAQ,IAAI,aAAa,IAAI,GAAG,GAAG;AACtD;AAEW,MAAA,sBAAsB,eAAe,OAAO;AAC5C,MAAA,uBAAuB,eAAe,QAAQ;;;;"}
1
+ {"version":3,"file":"urls.js","sources":["../../src/configuration/urls.ts"],"sourcesContent":["import _ from 'lodash';\nimport { strings } from '@strapi/utils';\n\ninterface ServerConfig {\n url: string;\n host: string;\n port: number | string;\n}\n\nexport const getConfigUrls = (config: Record<string, unknown>, forAdminBuild = false) => {\n const serverConfig = config.server as ServerConfig;\n const adminConfig = config.admin;\n\n // Defines serverUrl value\n let serverUrl = _.get(serverConfig, 'url', '');\n serverUrl = _.trim(serverUrl, '/ ');\n if (typeof serverUrl !== 'string') {\n throw new Error('Invalid server url config. Make sure the url is a string.');\n }\n\n if (serverUrl.startsWith('http')) {\n try {\n serverUrl = _.trim(new URL(serverConfig.url).toString(), '/');\n } catch (e) {\n throw new Error(\n 'Invalid server url config. Make sure the url defined in server.js is valid.'\n );\n }\n } else if (serverUrl !== '') {\n serverUrl = `/${serverUrl}`;\n }\n\n // Defines adminUrl value\n let adminUrl = _.get(adminConfig, 'url', '/admin');\n adminUrl = _.trim(adminUrl, '/ ');\n if (typeof adminUrl !== 'string') {\n throw new Error('Invalid admin url config. Make sure the url is a non-empty string.');\n }\n if (adminUrl.startsWith('http')) {\n try {\n adminUrl = _.trim(new URL(adminUrl).toString(), '/');\n } catch (e) {\n throw new Error('Invalid admin url config. Make sure the url defined in server.js is valid.');\n }\n } else {\n adminUrl = `${serverUrl}/${adminUrl}`;\n }\n\n // Defines adminPath value\n let adminPath = adminUrl;\n if (\n serverUrl.startsWith('http') &&\n adminUrl.startsWith('http') &&\n new URL(adminUrl).origin === new URL(serverUrl).origin &&\n !forAdminBuild\n ) {\n adminPath = adminUrl.replace(strings.getCommonPath(serverUrl, adminUrl), '');\n adminPath = `/${_.trim(adminPath, '/')}`;\n } else if (adminUrl.startsWith('http')) {\n adminPath = new URL(adminUrl).pathname;\n }\n\n return {\n serverUrl,\n adminUrl,\n adminPath,\n };\n};\n\nconst getAbsoluteUrl =\n (adminOrServer: 'admin' | 'server') =>\n (config: Record<string, unknown>, forAdminBuild = false) => {\n const { serverUrl, adminUrl } = getConfigUrls(config, forAdminBuild);\n const url = adminOrServer === 'server' ? serverUrl : adminUrl;\n\n if (url.startsWith('http')) {\n return url;\n }\n\n const serverConfig = config.server as ServerConfig;\n const hostname =\n config.environment === 'development' && ['127.0.0.1', '0.0.0.0'].includes(serverConfig.host)\n ? 'localhost'\n : serverConfig.host;\n\n return `http://${hostname}:${serverConfig.port}${url}`;\n };\n\nexport const getAbsoluteAdminUrl = getAbsoluteUrl('admin');\nexport const getAbsoluteServerUrl = getAbsoluteUrl('server');\n"],"names":["_","strings"],"mappings":";;;;;;AASO,MAAM,gBAAgB,CAAC,QAAiC,gBAAgB,UAAU;AACvF,QAAM,eAAe,OAAO;AAC5B,QAAM,cAAc,OAAO;AAG3B,MAAI,YAAYA,WAAAA,QAAE,IAAI,cAAc,OAAO,EAAE;AACjC,cAAAA,WAAA,QAAE,KAAK,WAAW,IAAI;AAC9B,MAAA,OAAO,cAAc,UAAU;AAC3B,UAAA,IAAI,MAAM,2DAA2D;AAAA,EAAA;AAGzE,MAAA,UAAU,WAAW,MAAM,GAAG;AAC5B,QAAA;AACU,kBAAAA,WAAAA,QAAE,KAAK,IAAI,IAAI,aAAa,GAAG,EAAE,SAAS,GAAG,GAAG;AAAA,aACrD,GAAG;AACV,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IAAA;AAAA,EACF,WACS,cAAc,IAAI;AAC3B,gBAAY,IAAI,SAAS;AAAA,EAAA;AAI3B,MAAI,WAAWA,WAAAA,QAAE,IAAI,aAAa,OAAO,QAAQ;AACtC,aAAAA,WAAA,QAAE,KAAK,UAAU,IAAI;AAC5B,MAAA,OAAO,aAAa,UAAU;AAC1B,UAAA,IAAI,MAAM,oEAAoE;AAAA,EAAA;AAElF,MAAA,SAAS,WAAW,MAAM,GAAG;AAC3B,QAAA;AACS,iBAAAA,WAAAA,QAAE,KAAK,IAAI,IAAI,QAAQ,EAAE,YAAY,GAAG;AAAA,aAC5C,GAAG;AACJ,YAAA,IAAI,MAAM,4EAA4E;AAAA,IAAA;AAAA,EAC9F,OACK;AACM,eAAA,GAAG,SAAS,IAAI,QAAQ;AAAA,EAAA;AAIrC,MAAI,YAAY;AAChB,MACE,UAAU,WAAW,MAAM,KAC3B,SAAS,WAAW,MAAM,KAC1B,IAAI,IAAI,QAAQ,EAAE,WAAW,IAAI,IAAI,SAAS,EAAE,UAChD,CAAC,eACD;AACA,gBAAY,SAAS,QAAQC,YAAA,QAAQ,cAAc,WAAW,QAAQ,GAAG,EAAE;AAC3E,gBAAY,IAAID,WAAA,QAAE,KAAK,WAAW,GAAG,CAAC;AAAA,EAC7B,WAAA,SAAS,WAAW,MAAM,GAAG;AAC1B,gBAAA,IAAI,IAAI,QAAQ,EAAE;AAAA,EAAA;AAGzB,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,MAAM,iBACJ,CAAC,kBACD,CAAC,QAAiC,gBAAgB,UAAU;AAC1D,QAAM,EAAE,WAAW,SAAA,IAAa,cAAc,QAAQ,aAAa;AAC7D,QAAA,MAAM,kBAAkB,WAAW,YAAY;AAEjD,MAAA,IAAI,WAAW,MAAM,GAAG;AACnB,WAAA;AAAA,EAAA;AAGT,QAAM,eAAe,OAAO;AAC5B,QAAM,WACJ,OAAO,gBAAgB,iBAAiB,CAAC,aAAa,SAAS,EAAE,SAAS,aAAa,IAAI,IACvF,cACA,aAAa;AAEnB,SAAO,UAAU,QAAQ,IAAI,aAAa,IAAI,GAAG,GAAG;AACtD;AAEW,MAAA,sBAAsB,eAAe,OAAO;AAC5C,MAAA,uBAAuB,eAAe,QAAQ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"urls.mjs","sources":["../../src/configuration/urls.ts"],"sourcesContent":["import _ from 'lodash';\nimport { strings } from '@strapi/utils';\n\ninterface ServerConfig {\n url: string;\n host: string;\n port: number | string;\n}\n\nexport const getConfigUrls = (config: Record<string, unknown>, forAdminBuild = false) => {\n const serverConfig = config.server as ServerConfig;\n const adminConfig = config.admin;\n\n // Defines serverUrl value\n let serverUrl = _.get(serverConfig, 'url', '');\n serverUrl = _.trim(serverUrl, '/ ');\n if (typeof serverUrl !== 'string') {\n throw new Error('Invalid server url config. Make sure the url is a string.');\n }\n\n if (serverUrl.startsWith('http')) {\n try {\n serverUrl = _.trim(new URL(serverConfig.url).toString(), '/');\n } catch (e) {\n throw new Error(\n 'Invalid server url config. Make sure the url defined in server.js is valid.'\n );\n }\n } else if (serverUrl !== '') {\n serverUrl = `/${serverUrl}`;\n }\n\n // Defines adminUrl value\n let adminUrl = _.get(adminConfig, 'url', '/admin');\n adminUrl = _.trim(adminUrl, '/ ');\n if (typeof adminUrl !== 'string') {\n throw new Error('Invalid admin url config. Make sure the url is a non-empty string.');\n }\n if (adminUrl.startsWith('http')) {\n try {\n adminUrl = _.trim(new URL(adminUrl).toString(), '/');\n } catch (e) {\n throw new Error('Invalid admin url config. Make sure the url defined in server.js is valid.');\n }\n } else {\n adminUrl = `${serverUrl}/${adminUrl}`;\n }\n\n // Defines adminPath value\n let adminPath = adminUrl;\n if (\n serverUrl.startsWith('http') &&\n adminUrl.startsWith('http') &&\n new URL(adminUrl).origin === new URL(serverUrl).origin &&\n !forAdminBuild\n ) {\n adminPath = adminUrl.replace(strings.getCommonPath(serverUrl, adminUrl), '');\n adminPath = `/${_.trim(adminPath, '/')}`;\n } else if (adminUrl.startsWith('http')) {\n adminPath = new URL(adminUrl).pathname;\n }\n\n return {\n serverUrl,\n adminUrl,\n adminPath,\n };\n};\n\nconst getAbsoluteUrl =\n (adminOrServer: 'admin' | 'server') =>\n (config: Record<string, unknown>, forAdminBuild = false) => {\n const { serverUrl, adminUrl } = getConfigUrls(config, forAdminBuild);\n const url = adminOrServer === 'server' ? serverUrl : adminUrl;\n\n if (url.startsWith('http')) {\n return url;\n }\n\n const serverConfig = config.server as ServerConfig;\n const hostname =\n config.environment === 'development' && ['127.0.0.1', '0.0.0.0'].includes(serverConfig.host)\n ? 'localhost'\n : serverConfig.host;\n\n return `http://${hostname}:${serverConfig.port}${url}`;\n };\n\nexport const getAbsoluteAdminUrl = getAbsoluteUrl('admin');\nexport const getAbsoluteServerUrl = getAbsoluteUrl('server');\n"],"names":[],"mappings":";;AASO,MAAM,gBAAgB,CAAC,QAAiC,gBAAgB,UAAU;AACvF,QAAM,eAAe,OAAO;AAC5B,QAAM,cAAc,OAAO;AAG3B,MAAI,YAAY,EAAE,IAAI,cAAc,OAAO,EAAE;AACjC,cAAA,EAAE,KAAK,WAAW,IAAI;AAC9B,MAAA,OAAO,cAAc,UAAU;AAC3B,UAAA,IAAI,MAAM,2DAA2D;AAAA,EAC7E;AAEI,MAAA,UAAU,WAAW,MAAM,GAAG;AAC5B,QAAA;AACU,kBAAA,EAAE,KAAK,IAAI,IAAI,aAAa,GAAG,EAAE,YAAY,GAAG;AAAA,aACrD,GAAG;AACV,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA,WACS,cAAc,IAAI;AAC3B,gBAAY,IAAI,SAAS;AAAA,EAC3B;AAGA,MAAI,WAAW,EAAE,IAAI,aAAa,OAAO,QAAQ;AACtC,aAAA,EAAE,KAAK,UAAU,IAAI;AAC5B,MAAA,OAAO,aAAa,UAAU;AAC1B,UAAA,IAAI,MAAM,oEAAoE;AAAA,EACtF;AACI,MAAA,SAAS,WAAW,MAAM,GAAG;AAC3B,QAAA;AACS,iBAAA,EAAE,KAAK,IAAI,IAAI,QAAQ,EAAE,YAAY,GAAG;AAAA,aAC5C,GAAG;AACJ,YAAA,IAAI,MAAM,4EAA4E;AAAA,IAC9F;AAAA,EAAA,OACK;AACM,eAAA,GAAG,SAAS,IAAI,QAAQ;AAAA,EACrC;AAGA,MAAI,YAAY;AAChB,MACE,UAAU,WAAW,MAAM,KAC3B,SAAS,WAAW,MAAM,KAC1B,IAAI,IAAI,QAAQ,EAAE,WAAW,IAAI,IAAI,SAAS,EAAE,UAChD,CAAC,eACD;AACA,gBAAY,SAAS,QAAQ,QAAQ,cAAc,WAAW,QAAQ,GAAG,EAAE;AAC3E,gBAAY,IAAI,EAAE,KAAK,WAAW,GAAG,CAAC;AAAA,EAC7B,WAAA,SAAS,WAAW,MAAM,GAAG;AAC1B,gBAAA,IAAI,IAAI,QAAQ,EAAE;AAAA,EAChC;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,MAAM,iBACJ,CAAC,kBACD,CAAC,QAAiC,gBAAgB,UAAU;AAC1D,QAAM,EAAE,WAAW,SAAA,IAAa,cAAc,QAAQ,aAAa;AAC7D,QAAA,MAAM,kBAAkB,WAAW,YAAY;AAEjD,MAAA,IAAI,WAAW,MAAM,GAAG;AACnB,WAAA;AAAA,EACT;AAEA,QAAM,eAAe,OAAO;AAC5B,QAAM,WACJ,OAAO,gBAAgB,iBAAiB,CAAC,aAAa,SAAS,EAAE,SAAS,aAAa,IAAI,IACvF,cACA,aAAa;AAEnB,SAAO,UAAU,QAAQ,IAAI,aAAa,IAAI,GAAG,GAAG;AACtD;AAEW,MAAA,sBAAsB,eAAe,OAAO;AAC5C,MAAA,uBAAuB,eAAe,QAAQ;"}
1
+ {"version":3,"file":"urls.mjs","sources":["../../src/configuration/urls.ts"],"sourcesContent":["import _ from 'lodash';\nimport { strings } from '@strapi/utils';\n\ninterface ServerConfig {\n url: string;\n host: string;\n port: number | string;\n}\n\nexport const getConfigUrls = (config: Record<string, unknown>, forAdminBuild = false) => {\n const serverConfig = config.server as ServerConfig;\n const adminConfig = config.admin;\n\n // Defines serverUrl value\n let serverUrl = _.get(serverConfig, 'url', '');\n serverUrl = _.trim(serverUrl, '/ ');\n if (typeof serverUrl !== 'string') {\n throw new Error('Invalid server url config. Make sure the url is a string.');\n }\n\n if (serverUrl.startsWith('http')) {\n try {\n serverUrl = _.trim(new URL(serverConfig.url).toString(), '/');\n } catch (e) {\n throw new Error(\n 'Invalid server url config. Make sure the url defined in server.js is valid.'\n );\n }\n } else if (serverUrl !== '') {\n serverUrl = `/${serverUrl}`;\n }\n\n // Defines adminUrl value\n let adminUrl = _.get(adminConfig, 'url', '/admin');\n adminUrl = _.trim(adminUrl, '/ ');\n if (typeof adminUrl !== 'string') {\n throw new Error('Invalid admin url config. Make sure the url is a non-empty string.');\n }\n if (adminUrl.startsWith('http')) {\n try {\n adminUrl = _.trim(new URL(adminUrl).toString(), '/');\n } catch (e) {\n throw new Error('Invalid admin url config. Make sure the url defined in server.js is valid.');\n }\n } else {\n adminUrl = `${serverUrl}/${adminUrl}`;\n }\n\n // Defines adminPath value\n let adminPath = adminUrl;\n if (\n serverUrl.startsWith('http') &&\n adminUrl.startsWith('http') &&\n new URL(adminUrl).origin === new URL(serverUrl).origin &&\n !forAdminBuild\n ) {\n adminPath = adminUrl.replace(strings.getCommonPath(serverUrl, adminUrl), '');\n adminPath = `/${_.trim(adminPath, '/')}`;\n } else if (adminUrl.startsWith('http')) {\n adminPath = new URL(adminUrl).pathname;\n }\n\n return {\n serverUrl,\n adminUrl,\n adminPath,\n };\n};\n\nconst getAbsoluteUrl =\n (adminOrServer: 'admin' | 'server') =>\n (config: Record<string, unknown>, forAdminBuild = false) => {\n const { serverUrl, adminUrl } = getConfigUrls(config, forAdminBuild);\n const url = adminOrServer === 'server' ? serverUrl : adminUrl;\n\n if (url.startsWith('http')) {\n return url;\n }\n\n const serverConfig = config.server as ServerConfig;\n const hostname =\n config.environment === 'development' && ['127.0.0.1', '0.0.0.0'].includes(serverConfig.host)\n ? 'localhost'\n : serverConfig.host;\n\n return `http://${hostname}:${serverConfig.port}${url}`;\n };\n\nexport const getAbsoluteAdminUrl = getAbsoluteUrl('admin');\nexport const getAbsoluteServerUrl = getAbsoluteUrl('server');\n"],"names":[],"mappings":";;AASO,MAAM,gBAAgB,CAAC,QAAiC,gBAAgB,UAAU;AACvF,QAAM,eAAe,OAAO;AAC5B,QAAM,cAAc,OAAO;AAG3B,MAAI,YAAY,EAAE,IAAI,cAAc,OAAO,EAAE;AACjC,cAAA,EAAE,KAAK,WAAW,IAAI;AAC9B,MAAA,OAAO,cAAc,UAAU;AAC3B,UAAA,IAAI,MAAM,2DAA2D;AAAA,EAAA;AAGzE,MAAA,UAAU,WAAW,MAAM,GAAG;AAC5B,QAAA;AACU,kBAAA,EAAE,KAAK,IAAI,IAAI,aAAa,GAAG,EAAE,SAAS,GAAG,GAAG;AAAA,aACrD,GAAG;AACV,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IAAA;AAAA,EACF,WACS,cAAc,IAAI;AAC3B,gBAAY,IAAI,SAAS;AAAA,EAAA;AAI3B,MAAI,WAAW,EAAE,IAAI,aAAa,OAAO,QAAQ;AACtC,aAAA,EAAE,KAAK,UAAU,IAAI;AAC5B,MAAA,OAAO,aAAa,UAAU;AAC1B,UAAA,IAAI,MAAM,oEAAoE;AAAA,EAAA;AAElF,MAAA,SAAS,WAAW,MAAM,GAAG;AAC3B,QAAA;AACS,iBAAA,EAAE,KAAK,IAAI,IAAI,QAAQ,EAAE,YAAY,GAAG;AAAA,aAC5C,GAAG;AACJ,YAAA,IAAI,MAAM,4EAA4E;AAAA,IAAA;AAAA,EAC9F,OACK;AACM,eAAA,GAAG,SAAS,IAAI,QAAQ;AAAA,EAAA;AAIrC,MAAI,YAAY;AAChB,MACE,UAAU,WAAW,MAAM,KAC3B,SAAS,WAAW,MAAM,KAC1B,IAAI,IAAI,QAAQ,EAAE,WAAW,IAAI,IAAI,SAAS,EAAE,UAChD,CAAC,eACD;AACA,gBAAY,SAAS,QAAQ,QAAQ,cAAc,WAAW,QAAQ,GAAG,EAAE;AAC3E,gBAAY,IAAI,EAAE,KAAK,WAAW,GAAG,CAAC;AAAA,EAC7B,WAAA,SAAS,WAAW,MAAM,GAAG;AAC1B,gBAAA,IAAI,IAAI,QAAQ,EAAE;AAAA,EAAA;AAGzB,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,MAAM,iBACJ,CAAC,kBACD,CAAC,QAAiC,gBAAgB,UAAU;AAC1D,QAAM,EAAE,WAAW,SAAA,IAAa,cAAc,QAAQ,aAAa;AAC7D,QAAA,MAAM,kBAAkB,WAAW,YAAY;AAEjD,MAAA,IAAI,WAAW,MAAM,GAAG;AACnB,WAAA;AAAA,EAAA;AAGT,QAAM,eAAe,OAAO;AAC5B,QAAM,WACJ,OAAO,gBAAgB,iBAAiB,CAAC,aAAa,SAAS,EAAE,SAAS,aAAa,IAAI,IACvF,cACA,aAAa;AAEnB,SAAO,UAAU,QAAQ,IAAI,aAAa,IAAI,GAAG,GAAG;AACtD;AAEW,MAAA,sBAAsB,eAAe,OAAO;AAC5C,MAAA,uBAAuB,eAAe,QAAQ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sources":["../src/container.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport class Container implements Core.Container {\n private registerMap = new Map<string, unknown>();\n\n private serviceMap = new Map();\n\n add(name: string, resolver: unknown) {\n if (this.registerMap.has(name)) {\n throw new Error(`Cannot register already registered service ${name}`);\n }\n\n this.registerMap.set(name, resolver);\n return this;\n }\n\n get(name: string, args?: unknown) {\n // TODO: handle singleton vs instantiation everytime\n if (this.serviceMap.has(name)) {\n return this.serviceMap.get(name);\n }\n\n if (this.registerMap.has(name)) {\n const resolver = this.registerMap.get(name);\n\n if (typeof resolver === 'function') {\n this.serviceMap.set(name, resolver(this, args));\n } else {\n this.serviceMap.set(name, resolver);\n }\n\n return this.serviceMap.get(name);\n }\n\n throw new Error(`Could not resolve service ${name}`);\n }\n}\n"],"names":[],"mappings":";;AAEO,MAAM,UAAoC;AAAA,EACvC,kCAAkB;EAElB,iCAAiB;EAEzB,IAAI,MAAc,UAAmB;AACnC,QAAI,KAAK,YAAY,IAAI,IAAI,GAAG;AAC9B,YAAM,IAAI,MAAM,8CAA8C,IAAI,EAAE;AAAA,IACtE;AAEK,SAAA,YAAY,IAAI,MAAM,QAAQ;AAC5B,WAAA;AAAA,EACT;AAAA,EAEA,IAAI,MAAc,MAAgB;AAEhC,QAAI,KAAK,WAAW,IAAI,IAAI,GAAG;AACtB,aAAA,KAAK,WAAW,IAAI,IAAI;AAAA,IACjC;AAEA,QAAI,KAAK,YAAY,IAAI,IAAI,GAAG;AAC9B,YAAM,WAAW,KAAK,YAAY,IAAI,IAAI;AAEtC,UAAA,OAAO,aAAa,YAAY;AAClC,aAAK,WAAW,IAAI,MAAM,SAAS,MAAM,IAAI,CAAC;AAAA,MAAA,OACzC;AACA,aAAA,WAAW,IAAI,MAAM,QAAQ;AAAA,MACpC;AAEO,aAAA,KAAK,WAAW,IAAI,IAAI;AAAA,IACjC;AAEA,UAAM,IAAI,MAAM,6BAA6B,IAAI,EAAE;AAAA,EACrD;AACF;;"}
1
+ {"version":3,"file":"container.js","sources":["../src/container.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport class Container implements Core.Container {\n private registerMap = new Map<string, unknown>();\n\n private serviceMap = new Map();\n\n add(name: string, resolver: unknown) {\n if (this.registerMap.has(name)) {\n throw new Error(`Cannot register already registered service ${name}`);\n }\n\n this.registerMap.set(name, resolver);\n return this;\n }\n\n get(name: string, args?: unknown) {\n // TODO: handle singleton vs instantiation everytime\n if (this.serviceMap.has(name)) {\n return this.serviceMap.get(name);\n }\n\n if (this.registerMap.has(name)) {\n const resolver = this.registerMap.get(name);\n\n if (typeof resolver === 'function') {\n this.serviceMap.set(name, resolver(this, args));\n } else {\n this.serviceMap.set(name, resolver);\n }\n\n return this.serviceMap.get(name);\n }\n\n throw new Error(`Could not resolve service ${name}`);\n }\n}\n"],"names":[],"mappings":";;AAEO,MAAM,UAAoC;AAAA,EACvC,kCAAkB,IAAqB;AAAA,EAEvC,iCAAiB,IAAI;AAAA,EAE7B,IAAI,MAAc,UAAmB;AACnC,QAAI,KAAK,YAAY,IAAI,IAAI,GAAG;AAC9B,YAAM,IAAI,MAAM,8CAA8C,IAAI,EAAE;AAAA,IAAA;AAGjE,SAAA,YAAY,IAAI,MAAM,QAAQ;AAC5B,WAAA;AAAA,EAAA;AAAA,EAGT,IAAI,MAAc,MAAgB;AAEhC,QAAI,KAAK,WAAW,IAAI,IAAI,GAAG;AACtB,aAAA,KAAK,WAAW,IAAI,IAAI;AAAA,IAAA;AAGjC,QAAI,KAAK,YAAY,IAAI,IAAI,GAAG;AAC9B,YAAM,WAAW,KAAK,YAAY,IAAI,IAAI;AAEtC,UAAA,OAAO,aAAa,YAAY;AAClC,aAAK,WAAW,IAAI,MAAM,SAAS,MAAM,IAAI,CAAC;AAAA,MAAA,OACzC;AACA,aAAA,WAAW,IAAI,MAAM,QAAQ;AAAA,MAAA;AAG7B,aAAA,KAAK,WAAW,IAAI,IAAI;AAAA,IAAA;AAGjC,UAAM,IAAI,MAAM,6BAA6B,IAAI,EAAE;AAAA,EAAA;AAEvD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"container.mjs","sources":["../src/container.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport class Container implements Core.Container {\n private registerMap = new Map<string, unknown>();\n\n private serviceMap = new Map();\n\n add(name: string, resolver: unknown) {\n if (this.registerMap.has(name)) {\n throw new Error(`Cannot register already registered service ${name}`);\n }\n\n this.registerMap.set(name, resolver);\n return this;\n }\n\n get(name: string, args?: unknown) {\n // TODO: handle singleton vs instantiation everytime\n if (this.serviceMap.has(name)) {\n return this.serviceMap.get(name);\n }\n\n if (this.registerMap.has(name)) {\n const resolver = this.registerMap.get(name);\n\n if (typeof resolver === 'function') {\n this.serviceMap.set(name, resolver(this, args));\n } else {\n this.serviceMap.set(name, resolver);\n }\n\n return this.serviceMap.get(name);\n }\n\n throw new Error(`Could not resolve service ${name}`);\n }\n}\n"],"names":[],"mappings":"AAEO,MAAM,UAAoC;AAAA,EACvC,kCAAkB;EAElB,iCAAiB;EAEzB,IAAI,MAAc,UAAmB;AACnC,QAAI,KAAK,YAAY,IAAI,IAAI,GAAG;AAC9B,YAAM,IAAI,MAAM,8CAA8C,IAAI,EAAE;AAAA,IACtE;AAEK,SAAA,YAAY,IAAI,MAAM,QAAQ;AAC5B,WAAA;AAAA,EACT;AAAA,EAEA,IAAI,MAAc,MAAgB;AAEhC,QAAI,KAAK,WAAW,IAAI,IAAI,GAAG;AACtB,aAAA,KAAK,WAAW,IAAI,IAAI;AAAA,IACjC;AAEA,QAAI,KAAK,YAAY,IAAI,IAAI,GAAG;AAC9B,YAAM,WAAW,KAAK,YAAY,IAAI,IAAI;AAEtC,UAAA,OAAO,aAAa,YAAY;AAClC,aAAK,WAAW,IAAI,MAAM,SAAS,MAAM,IAAI,CAAC;AAAA,MAAA,OACzC;AACA,aAAA,WAAW,IAAI,MAAM,QAAQ;AAAA,MACpC;AAEO,aAAA,KAAK,WAAW,IAAI,IAAI;AAAA,IACjC;AAEA,UAAM,IAAI,MAAM,6BAA6B,IAAI,EAAE;AAAA,EACrD;AACF;"}
1
+ {"version":3,"file":"container.mjs","sources":["../src/container.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nexport class Container implements Core.Container {\n private registerMap = new Map<string, unknown>();\n\n private serviceMap = new Map();\n\n add(name: string, resolver: unknown) {\n if (this.registerMap.has(name)) {\n throw new Error(`Cannot register already registered service ${name}`);\n }\n\n this.registerMap.set(name, resolver);\n return this;\n }\n\n get(name: string, args?: unknown) {\n // TODO: handle singleton vs instantiation everytime\n if (this.serviceMap.has(name)) {\n return this.serviceMap.get(name);\n }\n\n if (this.registerMap.has(name)) {\n const resolver = this.registerMap.get(name);\n\n if (typeof resolver === 'function') {\n this.serviceMap.set(name, resolver(this, args));\n } else {\n this.serviceMap.set(name, resolver);\n }\n\n return this.serviceMap.get(name);\n }\n\n throw new Error(`Could not resolve service ${name}`);\n }\n}\n"],"names":[],"mappings":"AAEO,MAAM,UAAoC;AAAA,EACvC,kCAAkB,IAAqB;AAAA,EAEvC,iCAAiB,IAAI;AAAA,EAE7B,IAAI,MAAc,UAAmB;AACnC,QAAI,KAAK,YAAY,IAAI,IAAI,GAAG;AAC9B,YAAM,IAAI,MAAM,8CAA8C,IAAI,EAAE;AAAA,IAAA;AAGjE,SAAA,YAAY,IAAI,MAAM,QAAQ;AAC5B,WAAA;AAAA,EAAA;AAAA,EAGT,IAAI,MAAc,MAAgB;AAEhC,QAAI,KAAK,WAAW,IAAI,IAAI,GAAG;AACtB,aAAA,KAAK,WAAW,IAAI,IAAI;AAAA,IAAA;AAGjC,QAAI,KAAK,YAAY,IAAI,IAAI,GAAG;AAC9B,YAAM,WAAW,KAAK,YAAY,IAAI,IAAI;AAEtC,UAAA,OAAO,aAAa,YAAY;AAClC,aAAK,WAAW,IAAI,MAAM,SAAS,MAAM,IAAI,CAAC;AAAA,MAAA,OACzC;AACA,aAAA,WAAW,IAAI,MAAM,QAAQ;AAAA,MAAA;AAG7B,aAAA,KAAK,WAAW,IAAI,IAAI;AAAA,IAAA;AAGjC,UAAM,IAAI,MAAM,6BAA6B,IAAI,EAAE;AAAA,EAAA;AAEvD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"collection-type.d.ts","sourceRoot":"","sources":["../../../src/core-api/controller/collection-type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAO,MAAM,eAAe,CAAC;AAG9D,UAAU,OAAO;IACf,WAAW,EAAE,MAAM,CAAC,oBAAoB,CAAC;CAC1C;AAED;;;GAGG;AACH,QAAA,MAAM,8BAA8B,qBAEjC,OAAO,KAAG,MAAM,eAAe,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,cAAc,CA+FxE,CAAC;AAEF,OAAO,EAAE,8BAA8B,EAAE,CAAC"}
1
+ {"version":3,"file":"collection-type.d.ts","sourceRoot":"","sources":["../../../src/core-api/controller/collection-type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAO,MAAM,eAAe,CAAC;AAG9D,UAAU,OAAO;IACf,WAAW,EAAE,MAAM,CAAC,oBAAoB,CAAC;CAC1C;AAED;;;GAGG;AACH,QAAA,MAAM,8BAA8B,qBAEjC,OAAO,KAAG,MAAM,eAAe,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,cAAc,CAoGxE,CAAC;AAEF,OAAO,EAAE,8BAA8B,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _ = require("lodash/fp");
3
+ const fp = require("lodash/fp");
4
4
  const strapiUtils = require("@strapi/utils");
5
5
  const createCollectionTypeController = ({
6
6
  contentType
@@ -35,15 +35,17 @@ const createCollectionTypeController = ({
35
35
  await this.validateQuery(ctx);
36
36
  const sanitizedQuery = await this.sanitizeQuery(ctx);
37
37
  const { body = {} } = ctx.request;
38
- if (!_.isObject(body.data)) {
38
+ if (!fp.isObject(body.data)) {
39
39
  throw new strapiUtils.errors.ValidationError('Missing "data" payload in the request body');
40
40
  }
41
+ await this.validateInput(body.data, ctx);
41
42
  const sanitizedInputData = await this.sanitizeInput(body.data, ctx);
42
43
  const entity = await strapi.service(uid).create({
43
44
  ...sanitizedQuery,
44
45
  data: sanitizedInputData
45
46
  });
46
47
  const sanitizedEntity = await this.sanitizeOutput(entity, ctx);
48
+ ctx.status = 201;
47
49
  return this.transformResponse(sanitizedEntity);
48
50
  },
49
51
  /**
@@ -54,9 +56,10 @@ const createCollectionTypeController = ({
54
56
  await this.validateQuery(ctx);
55
57
  const sanitizedQuery = await this.sanitizeQuery(ctx);
56
58
  const { body = {} } = ctx.request;
57
- if (!_.isObject(body.data)) {
59
+ if (!fp.isObject(body.data)) {
58
60
  throw new strapiUtils.errors.ValidationError('Missing "data" payload in the request body');
59
61
  }
62
+ await this.validateInput(body.data, ctx);
60
63
  const sanitizedInputData = await this.sanitizeInput(body.data, ctx);
61
64
  const entity = await strapi.service(uid).update(id, {
62
65
  ...sanitizedQuery,
@@ -1 +1 @@
1
- {"version":3,"file":"collection-type.js","sources":["../../../src/core-api/controller/collection-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Core, Struct, Utils, UID } from '@strapi/types';\nimport type Koa from 'koa';\n\ninterface Options {\n contentType: Struct.CollectionTypeSchema;\n}\n\n/**\n *\n * Returns a collection type controller to handle default core-api actions\n */\nconst createCollectionTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.CollectionType> => {\n const uid = contentType.uid as UID.Service;\n\n // TODO: transform into a class\n return {\n /**\n * Retrieve records.\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { results, pagination } = await strapi.service(uid).find(sanitizedQuery);\n const sanitizedResults = await this.sanitizeOutput(results, ctx);\n return this.transformResponse(sanitizedResults, { pagination });\n },\n\n /**\n * Retrieve a record\n */\n async findOne(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).findOne(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Create a record.\n */\n async create(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).create({\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Update a record.\n */\n async update(ctx: Koa.Context) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).update(id, {\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Destroy a record.\n */\n async delete(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n await strapi.service(uid).delete(id, sanitizedQuery);\n\n ctx.status = 204;\n },\n };\n};\n\nexport { createCollectionTypeController };\n"],"names":["isObject","errors"],"mappings":";;;;AAaA,MAAM,iCAAiC,CAAC;AAAA,EACtC;AACF,MAA8E;AAC5E,QAAM,MAAM,YAAY;AAGjB,SAAA;AAAA;AAAA;AAAA;AAAA,IAIL,MAAM,KAAK,KAAK;AACR,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAE7C,YAAA,EAAE,SAAS,WAAA,IAAe,MAAM,OAAO,QAAQ,GAAG,EAAE,KAAK,cAAc;AAC7E,YAAM,mBAAmB,MAAM,KAAK,eAAe,SAAS,GAAG;AAC/D,aAAO,KAAK,kBAAkB,kBAAkB,EAAE,WAAY,CAAA;AAAA,IAChE;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,QAAQ,KAAK;AACX,YAAA,EAAE,GAAG,IAAI,IAAI;AACb,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAE7C,YAAA,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,QAAQ,IAAI,cAAc;AACnE,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,OAAO,KAAK;AACV,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,EAAE,OAAO,CAAA,MAAc,IAAI;AAEjC,UAAI,CAACA,EAAA,SAAS,KAAK,IAAI,GAAG;AAClB,cAAA,IAAIC,YAAO,OAAA,gBAAgB,4CAA4C;AAAA,MAC/E;AAEA,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO;AAAA,QAC9C,GAAG;AAAA,QACH,MAAM;AAAA,MAAA,CACP;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,OAAO,KAAkB;AACvB,YAAA,EAAE,GAAG,IAAI,IAAI;AACb,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,EAAE,OAAO,CAAA,MAAc,IAAI;AAEjC,UAAI,CAACD,EAAA,SAAS,KAAK,IAAI,GAAG;AAClB,cAAA,IAAIC,YAAO,OAAA,gBAAgB,4CAA4C;AAAA,MAC/E;AAEA,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,IAAI;AAAA,QAClD,GAAG;AAAA,QACH,MAAM;AAAA,MAAA,CACP;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,OAAO,KAAK;AACV,YAAA,EAAE,GAAG,IAAI,IAAI;AACb,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,IAAI,cAAc;AAEnD,UAAI,SAAS;AAAA,IACf;AAAA,EAAA;AAEJ;;"}
1
+ {"version":3,"file":"collection-type.js","sources":["../../../src/core-api/controller/collection-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Core, Struct, Utils, UID } from '@strapi/types';\nimport type Koa from 'koa';\n\ninterface Options {\n contentType: Struct.CollectionTypeSchema;\n}\n\n/**\n *\n * Returns a collection type controller to handle default core-api actions\n */\nconst createCollectionTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.CollectionType> => {\n const uid = contentType.uid as UID.Service;\n\n // TODO: transform into a class\n return {\n /**\n * Retrieve records.\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { results, pagination } = await strapi.service(uid).find(sanitizedQuery);\n const sanitizedResults = await this.sanitizeOutput(results, ctx);\n return this.transformResponse(sanitizedResults, { pagination });\n },\n\n /**\n * Retrieve a record\n */\n async findOne(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).findOne(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Create a record.\n */\n async create(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).create({\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n ctx.status = 201;\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Update a record.\n */\n async update(ctx: Koa.Context) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).update(id, {\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Destroy a record.\n */\n async delete(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n await strapi.service(uid).delete(id, sanitizedQuery);\n\n ctx.status = 204;\n },\n };\n};\n\nexport { createCollectionTypeController };\n"],"names":["isObject","errors"],"mappings":";;;;AAaA,MAAM,iCAAiC,CAAC;AAAA,EACtC;AACF,MAA8E;AAC5E,QAAM,MAAM,YAAY;AAGjB,SAAA;AAAA;AAAA;AAAA;AAAA,IAIL,MAAM,KAAK,KAAK;AACR,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAE7C,YAAA,EAAE,SAAS,WAAA,IAAe,MAAM,OAAO,QAAQ,GAAG,EAAE,KAAK,cAAc;AAC7E,YAAM,mBAAmB,MAAM,KAAK,eAAe,SAAS,GAAG;AAC/D,aAAO,KAAK,kBAAkB,kBAAkB,EAAE,YAAY;AAAA,IAChE;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,QAAQ,KAAK;AACX,YAAA,EAAE,OAAO,IAAI;AACb,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAE7C,YAAA,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,QAAQ,IAAI,cAAc;AACnE,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,OAAO,KAAK;AACV,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,EAAE,OAAO,OAAc,IAAI;AAEjC,UAAI,CAACA,GAAA,SAAS,KAAK,IAAI,GAAG;AAClB,cAAA,IAAIC,YAAAA,OAAO,gBAAgB,4CAA4C;AAAA,MAAA;AAG/E,YAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAEvC,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO;AAAA,QAC9C,GAAG;AAAA,QACH,MAAM;AAAA,MAAA,CACP;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,UAAI,SAAS;AACN,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,OAAO,KAAkB;AACvB,YAAA,EAAE,OAAO,IAAI;AACb,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,EAAE,OAAO,OAAc,IAAI;AAEjC,UAAI,CAACD,GAAA,SAAS,KAAK,IAAI,GAAG;AAClB,cAAA,IAAIC,YAAAA,OAAO,gBAAgB,4CAA4C;AAAA,MAAA;AAG/E,YAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAEvC,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,IAAI;AAAA,QAClD,GAAG;AAAA,QACH,MAAM;AAAA,MAAA,CACP;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,OAAO,KAAK;AACV,YAAA,EAAE,OAAO,IAAI;AACb,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,IAAI,cAAc;AAEnD,UAAI,SAAS;AAAA,IAAA;AAAA,EAEjB;AACF;;"}
@@ -36,12 +36,14 @@ const createCollectionTypeController = ({
36
36
  if (!isObject(body.data)) {
37
37
  throw new errors.ValidationError('Missing "data" payload in the request body');
38
38
  }
39
+ await this.validateInput(body.data, ctx);
39
40
  const sanitizedInputData = await this.sanitizeInput(body.data, ctx);
40
41
  const entity = await strapi.service(uid).create({
41
42
  ...sanitizedQuery,
42
43
  data: sanitizedInputData
43
44
  });
44
45
  const sanitizedEntity = await this.sanitizeOutput(entity, ctx);
46
+ ctx.status = 201;
45
47
  return this.transformResponse(sanitizedEntity);
46
48
  },
47
49
  /**
@@ -55,6 +57,7 @@ const createCollectionTypeController = ({
55
57
  if (!isObject(body.data)) {
56
58
  throw new errors.ValidationError('Missing "data" payload in the request body');
57
59
  }
60
+ await this.validateInput(body.data, ctx);
58
61
  const sanitizedInputData = await this.sanitizeInput(body.data, ctx);
59
62
  const entity = await strapi.service(uid).update(id, {
60
63
  ...sanitizedQuery,
@@ -1 +1 @@
1
- {"version":3,"file":"collection-type.mjs","sources":["../../../src/core-api/controller/collection-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Core, Struct, Utils, UID } from '@strapi/types';\nimport type Koa from 'koa';\n\ninterface Options {\n contentType: Struct.CollectionTypeSchema;\n}\n\n/**\n *\n * Returns a collection type controller to handle default core-api actions\n */\nconst createCollectionTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.CollectionType> => {\n const uid = contentType.uid as UID.Service;\n\n // TODO: transform into a class\n return {\n /**\n * Retrieve records.\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { results, pagination } = await strapi.service(uid).find(sanitizedQuery);\n const sanitizedResults = await this.sanitizeOutput(results, ctx);\n return this.transformResponse(sanitizedResults, { pagination });\n },\n\n /**\n * Retrieve a record\n */\n async findOne(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).findOne(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Create a record.\n */\n async create(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).create({\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Update a record.\n */\n async update(ctx: Koa.Context) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).update(id, {\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Destroy a record.\n */\n async delete(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n await strapi.service(uid).delete(id, sanitizedQuery);\n\n ctx.status = 204;\n },\n };\n};\n\nexport { createCollectionTypeController };\n"],"names":[],"mappings":";;AAaA,MAAM,iCAAiC,CAAC;AAAA,EACtC;AACF,MAA8E;AAC5E,QAAM,MAAM,YAAY;AAGjB,SAAA;AAAA;AAAA;AAAA;AAAA,IAIL,MAAM,KAAK,KAAK;AACR,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAE7C,YAAA,EAAE,SAAS,WAAA,IAAe,MAAM,OAAO,QAAQ,GAAG,EAAE,KAAK,cAAc;AAC7E,YAAM,mBAAmB,MAAM,KAAK,eAAe,SAAS,GAAG;AAC/D,aAAO,KAAK,kBAAkB,kBAAkB,EAAE,WAAY,CAAA;AAAA,IAChE;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,QAAQ,KAAK;AACX,YAAA,EAAE,GAAG,IAAI,IAAI;AACb,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAE7C,YAAA,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,QAAQ,IAAI,cAAc;AACnE,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,OAAO,KAAK;AACV,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,EAAE,OAAO,CAAA,MAAc,IAAI;AAEjC,UAAI,CAAC,SAAS,KAAK,IAAI,GAAG;AAClB,cAAA,IAAI,OAAO,gBAAgB,4CAA4C;AAAA,MAC/E;AAEA,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO;AAAA,QAC9C,GAAG;AAAA,QACH,MAAM;AAAA,MAAA,CACP;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,OAAO,KAAkB;AACvB,YAAA,EAAE,GAAG,IAAI,IAAI;AACb,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,EAAE,OAAO,CAAA,MAAc,IAAI;AAEjC,UAAI,CAAC,SAAS,KAAK,IAAI,GAAG;AAClB,cAAA,IAAI,OAAO,gBAAgB,4CAA4C;AAAA,MAC/E;AAEA,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,IAAI;AAAA,QAClD,GAAG;AAAA,QACH,MAAM;AAAA,MAAA,CACP;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,OAAO,KAAK;AACV,YAAA,EAAE,GAAG,IAAI,IAAI;AACb,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,IAAI,cAAc;AAEnD,UAAI,SAAS;AAAA,IACf;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"collection-type.mjs","sources":["../../../src/core-api/controller/collection-type.ts"],"sourcesContent":["import { isObject } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Core, Struct, Utils, UID } from '@strapi/types';\nimport type Koa from 'koa';\n\ninterface Options {\n contentType: Struct.CollectionTypeSchema;\n}\n\n/**\n *\n * Returns a collection type controller to handle default core-api actions\n */\nconst createCollectionTypeController = ({\n contentType,\n}: Options): Utils.PartialWithThis<Core.CoreAPI.Controller.CollectionType> => {\n const uid = contentType.uid as UID.Service;\n\n // TODO: transform into a class\n return {\n /**\n * Retrieve records.\n */\n async find(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { results, pagination } = await strapi.service(uid).find(sanitizedQuery);\n const sanitizedResults = await this.sanitizeOutput(results, ctx);\n return this.transformResponse(sanitizedResults, { pagination });\n },\n\n /**\n * Retrieve a record\n */\n async findOne(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const entity = await strapi.service(uid).findOne(id, sanitizedQuery);\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Create a record.\n */\n async create(ctx) {\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).create({\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n ctx.status = 201;\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Update a record.\n */\n async update(ctx: Koa.Context) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n const { body = {} as any } = ctx.request;\n\n if (!isObject(body.data)) {\n throw new errors.ValidationError('Missing \"data\" payload in the request body');\n }\n\n await this.validateInput(body.data, ctx);\n\n const sanitizedInputData = await this.sanitizeInput(body.data, ctx);\n\n const entity = await strapi.service(uid).update(id, {\n ...sanitizedQuery,\n data: sanitizedInputData,\n });\n\n const sanitizedEntity = await this.sanitizeOutput(entity, ctx);\n\n return this.transformResponse(sanitizedEntity);\n },\n\n /**\n * Destroy a record.\n */\n async delete(ctx) {\n const { id } = ctx.params;\n await this.validateQuery(ctx);\n const sanitizedQuery = await this.sanitizeQuery(ctx);\n\n await strapi.service(uid).delete(id, sanitizedQuery);\n\n ctx.status = 204;\n },\n };\n};\n\nexport { createCollectionTypeController };\n"],"names":[],"mappings":";;AAaA,MAAM,iCAAiC,CAAC;AAAA,EACtC;AACF,MAA8E;AAC5E,QAAM,MAAM,YAAY;AAGjB,SAAA;AAAA;AAAA;AAAA;AAAA,IAIL,MAAM,KAAK,KAAK;AACR,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAE7C,YAAA,EAAE,SAAS,WAAA,IAAe,MAAM,OAAO,QAAQ,GAAG,EAAE,KAAK,cAAc;AAC7E,YAAM,mBAAmB,MAAM,KAAK,eAAe,SAAS,GAAG;AAC/D,aAAO,KAAK,kBAAkB,kBAAkB,EAAE,YAAY;AAAA,IAChE;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,QAAQ,KAAK;AACX,YAAA,EAAE,OAAO,IAAI;AACb,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAE7C,YAAA,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,QAAQ,IAAI,cAAc;AACnE,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,OAAO,KAAK;AACV,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,EAAE,OAAO,OAAc,IAAI;AAEjC,UAAI,CAAC,SAAS,KAAK,IAAI,GAAG;AAClB,cAAA,IAAI,OAAO,gBAAgB,4CAA4C;AAAA,MAAA;AAG/E,YAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAEvC,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO;AAAA,QAC9C,GAAG;AAAA,QACH,MAAM;AAAA,MAAA,CACP;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAE7D,UAAI,SAAS;AACN,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,OAAO,KAAkB;AACvB,YAAA,EAAE,OAAO,IAAI;AACb,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,EAAE,OAAO,OAAc,IAAI;AAEjC,UAAI,CAAC,SAAS,KAAK,IAAI,GAAG;AAClB,cAAA,IAAI,OAAO,gBAAgB,4CAA4C;AAAA,MAAA;AAG/E,YAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAEvC,YAAM,qBAAqB,MAAM,KAAK,cAAc,KAAK,MAAM,GAAG;AAElE,YAAM,SAAS,MAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,IAAI;AAAA,QAClD,GAAG;AAAA,QACH,MAAM;AAAA,MAAA,CACP;AAED,YAAM,kBAAkB,MAAM,KAAK,eAAe,QAAQ,GAAG;AAEtD,aAAA,KAAK,kBAAkB,eAAe;AAAA,IAC/C;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,OAAO,KAAK;AACV,YAAA,EAAE,OAAO,IAAI;AACb,YAAA,KAAK,cAAc,GAAG;AAC5B,YAAM,iBAAiB,MAAM,KAAK,cAAc,GAAG;AAEnD,YAAM,OAAO,QAAQ,GAAG,EAAE,OAAO,IAAI,cAAc;AAEnD,UAAI,SAAS;AAAA,IAAA;AAAA,EAEjB;AACF;"}