@strapi/core 0.0.0 → 5.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (881) hide show
  1. package/dist/Strapi.d.ts +9 -4
  2. package/dist/Strapi.d.ts.map +1 -1
  3. package/dist/Strapi.js +78 -52
  4. package/dist/Strapi.js.map +1 -1
  5. package/dist/Strapi.mjs +80 -53
  6. package/dist/Strapi.mjs.map +1 -1
  7. package/dist/configuration/config-loader.d.ts.map +1 -0
  8. package/dist/configuration/config-loader.js +102 -0
  9. package/dist/configuration/config-loader.js.map +1 -0
  10. package/dist/configuration/config-loader.mjs +100 -0
  11. package/dist/configuration/config-loader.mjs.map +1 -0
  12. package/dist/{core/app-configuration → configuration}/index.d.ts +20 -5
  13. package/dist/configuration/index.d.ts.map +1 -0
  14. package/dist/{core/app-configuration → configuration}/index.js +28 -5
  15. package/dist/configuration/index.js.map +1 -0
  16. package/dist/{core/app-configuration → configuration}/index.mjs +28 -5
  17. package/dist/configuration/index.mjs.map +1 -0
  18. package/dist/configuration/urls.d.ts +8 -0
  19. package/dist/configuration/urls.d.ts.map +1 -0
  20. package/dist/configuration/urls.js +68 -0
  21. package/dist/configuration/urls.js.map +1 -0
  22. package/dist/configuration/urls.mjs +66 -0
  23. package/dist/configuration/urls.mjs.map +1 -0
  24. package/dist/core-api/controller/collection-type.d.ts +1 -1
  25. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  26. package/dist/core-api/controller/collection-type.js +9 -20
  27. package/dist/core-api/controller/collection-type.js.map +1 -1
  28. package/dist/core-api/controller/collection-type.mjs +8 -20
  29. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  30. package/dist/core-api/controller/index.d.ts.map +1 -1
  31. package/dist/core-api/controller/index.js +8 -3
  32. package/dist/core-api/controller/index.js.map +1 -1
  33. package/dist/core-api/controller/index.mjs +8 -3
  34. package/dist/core-api/controller/index.mjs.map +1 -1
  35. package/dist/core-api/controller/single-type.d.ts +1 -1
  36. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  37. package/dist/core-api/controller/single-type.js +6 -11
  38. package/dist/core-api/controller/single-type.js.map +1 -1
  39. package/dist/core-api/controller/single-type.mjs +5 -11
  40. package/dist/core-api/controller/single-type.mjs.map +1 -1
  41. package/dist/core-api/controller/transform.d.ts +9 -17
  42. package/dist/core-api/controller/transform.d.ts.map +1 -1
  43. package/dist/core-api/controller/transform.js +9 -14
  44. package/dist/core-api/controller/transform.js.map +1 -1
  45. package/dist/core-api/controller/transform.mjs +9 -14
  46. package/dist/core-api/controller/transform.mjs.map +1 -1
  47. package/dist/core-api/service/collection-type.d.ts +28 -5
  48. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  49. package/dist/core-api/service/collection-type.js +47 -49
  50. package/dist/core-api/service/collection-type.js.map +1 -1
  51. package/dist/core-api/service/collection-type.mjs +47 -50
  52. package/dist/core-api/service/collection-type.mjs.map +1 -1
  53. package/dist/core-api/service/core-service.d.ts +4 -0
  54. package/dist/core-api/service/core-service.d.ts.map +1 -0
  55. package/dist/core-api/service/core-service.js +12 -0
  56. package/dist/core-api/service/core-service.js.map +1 -0
  57. package/dist/core-api/service/core-service.mjs +12 -0
  58. package/dist/core-api/service/core-service.mjs.map +1 -0
  59. package/dist/core-api/service/index.js +2 -2
  60. package/dist/core-api/service/index.js.map +1 -1
  61. package/dist/core-api/service/index.mjs +4 -4
  62. package/dist/core-api/service/index.mjs.map +1 -1
  63. package/dist/core-api/service/pagination.d.ts +1 -5
  64. package/dist/core-api/service/pagination.d.ts.map +1 -1
  65. package/dist/core-api/service/pagination.js +0 -11
  66. package/dist/core-api/service/pagination.js.map +1 -1
  67. package/dist/core-api/service/pagination.mjs +0 -11
  68. package/dist/core-api/service/pagination.mjs.map +1 -1
  69. package/dist/core-api/service/single-type.d.ts +14 -8
  70. package/dist/core-api/service/single-type.d.ts.map +1 -1
  71. package/dist/core-api/service/single-type.js +35 -50
  72. package/dist/core-api/service/single-type.js.map +1 -1
  73. package/dist/core-api/service/single-type.mjs +34 -50
  74. package/dist/core-api/service/single-type.mjs.map +1 -1
  75. package/dist/{core/domain → domain}/content-type/index.d.ts +2 -1
  76. package/dist/domain/content-type/index.d.ts.map +1 -0
  77. package/dist/{core/domain → domain}/content-type/index.js +23 -34
  78. package/dist/domain/content-type/index.js.map +1 -0
  79. package/dist/{core/domain → domain}/content-type/index.mjs +24 -35
  80. package/dist/domain/content-type/index.mjs.map +1 -0
  81. package/dist/domain/content-type/validator.d.ts.map +1 -0
  82. package/dist/{core/domain → domain}/content-type/validator.js +1 -1
  83. package/dist/domain/content-type/validator.js.map +1 -0
  84. package/dist/{core/domain → domain}/content-type/validator.mjs +2 -2
  85. package/dist/domain/content-type/validator.mjs.map +1 -0
  86. package/dist/domain/module/index.d.ts.map +1 -0
  87. package/dist/{core/domain → domain}/module/index.js +30 -31
  88. package/dist/domain/module/index.js.map +1 -0
  89. package/dist/{core/domain → domain}/module/index.mjs +3 -4
  90. package/dist/domain/module/index.mjs.map +1 -0
  91. package/dist/domain/module/validation.d.ts.map +1 -0
  92. package/dist/domain/module/validation.js.map +1 -0
  93. package/dist/domain/module/validation.mjs.map +1 -0
  94. package/dist/ee/index.js +2 -2
  95. package/dist/ee/index.js.map +1 -1
  96. package/dist/ee/index.mjs +2 -2
  97. package/dist/ee/index.mjs.map +1 -1
  98. package/dist/ee/license.d.ts.map +1 -1
  99. package/dist/ee/license.js +2 -1
  100. package/dist/ee/license.js.map +1 -1
  101. package/dist/ee/license.mjs +2 -1
  102. package/dist/ee/license.mjs.map +1 -1
  103. package/dist/factories.d.ts +2 -1
  104. package/dist/factories.d.ts.map +1 -1
  105. package/dist/factories.js +16 -11
  106. package/dist/factories.js.map +1 -1
  107. package/dist/factories.mjs +17 -12
  108. package/dist/factories.mjs.map +1 -1
  109. package/dist/index.d.ts +3 -2
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js +3 -1
  112. package/dist/index.js.map +1 -1
  113. package/dist/index.mjs +3 -1
  114. package/dist/index.mjs.map +1 -1
  115. package/dist/loaders/admin.d.ts.map +1 -0
  116. package/dist/{core/loaders → loaders}/admin.js +12 -1
  117. package/dist/loaders/admin.js.map +1 -0
  118. package/dist/{core/loaders → loaders}/admin.mjs +12 -1
  119. package/dist/loaders/admin.mjs.map +1 -0
  120. package/dist/loaders/apis.d.ts.map +1 -0
  121. package/dist/{core/loaders → loaders}/apis.js +20 -13
  122. package/dist/loaders/apis.js.map +1 -0
  123. package/dist/{core/loaders → loaders}/apis.mjs +19 -12
  124. package/dist/loaders/apis.mjs.map +1 -0
  125. package/dist/loaders/components.d.ts.map +1 -0
  126. package/dist/{core/loaders → loaders}/components.js +2 -2
  127. package/dist/loaders/components.js.map +1 -0
  128. package/dist/{core/loaders → loaders}/components.mjs +1 -1
  129. package/dist/loaders/components.mjs.map +1 -0
  130. package/dist/loaders/index.d.ts.map +1 -0
  131. package/dist/loaders/index.js.map +1 -0
  132. package/dist/loaders/index.mjs.map +1 -0
  133. package/dist/loaders/middlewares.d.ts.map +1 -0
  134. package/dist/{core/loaders → loaders}/middlewares.js +1 -1
  135. package/dist/loaders/middlewares.js.map +1 -0
  136. package/dist/{core/loaders → loaders}/middlewares.mjs +1 -1
  137. package/dist/loaders/middlewares.mjs.map +1 -0
  138. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -0
  139. package/dist/{core/loaders → loaders}/plugins/get-enabled-plugins.js +4 -2
  140. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -0
  141. package/dist/{core/loaders → loaders}/plugins/get-enabled-plugins.mjs +5 -3
  142. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -0
  143. package/dist/loaders/plugins/get-user-plugins-config.d.ts.map +1 -0
  144. package/dist/{core/loaders → loaders}/plugins/get-user-plugins-config.js +3 -3
  145. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -0
  146. package/dist/{core/loaders → loaders}/plugins/get-user-plugins-config.mjs +3 -3
  147. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -0
  148. package/dist/loaders/plugins/index.d.ts.map +1 -0
  149. package/dist/{core/loaders → loaders}/plugins/index.js +18 -5
  150. package/dist/loaders/plugins/index.js.map +1 -0
  151. package/dist/{core/loaders → loaders}/plugins/index.mjs +16 -3
  152. package/dist/loaders/plugins/index.mjs.map +1 -0
  153. package/dist/loaders/policies.d.ts.map +1 -0
  154. package/dist/loaders/policies.js.map +1 -0
  155. package/dist/loaders/policies.mjs.map +1 -0
  156. package/dist/loaders/sanitizers.d.ts.map +1 -0
  157. package/dist/loaders/sanitizers.js.map +1 -0
  158. package/dist/loaders/sanitizers.mjs.map +1 -0
  159. package/dist/loaders/src-index.d.ts.map +1 -0
  160. package/dist/loaders/src-index.js.map +1 -0
  161. package/dist/loaders/src-index.mjs.map +1 -0
  162. package/dist/loaders/validators.d.ts.map +1 -0
  163. package/dist/loaders/validators.js.map +1 -0
  164. package/dist/loaders/validators.mjs.map +1 -0
  165. package/dist/middlewares/favicon.d.ts +1 -0
  166. package/dist/middlewares/favicon.d.ts.map +1 -1
  167. package/dist/middlewares/index.js +2 -2
  168. package/dist/middlewares/index.js.map +1 -1
  169. package/dist/middlewares/index.mjs +1 -1
  170. package/dist/middlewares/{public/index.d.ts → public.d.ts} +1 -1
  171. package/dist/middlewares/public.d.ts.map +1 -0
  172. package/dist/middlewares/public.js +34 -0
  173. package/dist/middlewares/public.js.map +1 -0
  174. package/dist/middlewares/public.mjs +32 -0
  175. package/dist/middlewares/public.mjs.map +1 -0
  176. package/dist/middlewares/security.d.ts.map +1 -1
  177. package/dist/middlewares/security.js +24 -3
  178. package/dist/middlewares/security.js.map +1 -1
  179. package/dist/middlewares/security.mjs +24 -3
  180. package/dist/middlewares/security.mjs.map +1 -1
  181. package/dist/migrations/draft-publish.d.ts +17 -0
  182. package/dist/migrations/draft-publish.d.ts.map +1 -0
  183. package/dist/migrations/draft-publish.js +59 -0
  184. package/dist/migrations/draft-publish.js.map +1 -0
  185. package/dist/migrations/draft-publish.mjs +59 -0
  186. package/dist/migrations/draft-publish.mjs.map +1 -0
  187. package/dist/registries/apis.d.ts.map +1 -0
  188. package/dist/registries/apis.js.map +1 -0
  189. package/dist/registries/apis.mjs.map +1 -0
  190. package/dist/registries/components.d.ts.map +1 -0
  191. package/dist/registries/components.js.map +1 -0
  192. package/dist/registries/components.mjs.map +1 -0
  193. package/dist/registries/config.d.ts +4 -0
  194. package/dist/registries/config.d.ts.map +1 -0
  195. package/dist/registries/config.js +31 -0
  196. package/dist/registries/config.js.map +1 -0
  197. package/dist/registries/config.mjs +32 -0
  198. package/dist/registries/config.mjs.map +1 -0
  199. package/dist/registries/content-types.d.ts.map +1 -0
  200. package/dist/{core/registries → registries}/content-types.js +6 -7
  201. package/dist/registries/content-types.js.map +1 -0
  202. package/dist/{core/registries → registries}/content-types.mjs +2 -3
  203. package/dist/registries/content-types.mjs.map +1 -0
  204. package/dist/registries/controllers.d.ts.map +1 -0
  205. package/dist/{core/registries → registries}/controllers.js +5 -5
  206. package/dist/registries/controllers.js.map +1 -0
  207. package/dist/{core/registries → registries}/controllers.mjs +1 -1
  208. package/dist/registries/controllers.mjs.map +1 -0
  209. package/dist/registries/custom-fields.d.ts.map +1 -0
  210. package/dist/registries/custom-fields.js.map +1 -0
  211. package/dist/registries/custom-fields.mjs.map +1 -0
  212. package/dist/registries/hooks.d.ts.map +1 -0
  213. package/dist/{core/registries → registries}/hooks.js +5 -5
  214. package/dist/registries/hooks.js.map +1 -0
  215. package/dist/{core/registries → registries}/hooks.mjs +1 -1
  216. package/dist/registries/hooks.mjs.map +1 -0
  217. package/dist/{core/registries → registries}/index.d.ts +1 -0
  218. package/dist/registries/index.d.ts.map +1 -0
  219. package/dist/registries/middlewares.d.ts.map +1 -0
  220. package/dist/{core/registries → registries}/middlewares.js +5 -5
  221. package/dist/registries/middlewares.js.map +1 -0
  222. package/dist/{core/registries → registries}/middlewares.mjs +1 -1
  223. package/dist/registries/middlewares.mjs.map +1 -0
  224. package/dist/registries/models.d.ts +6 -0
  225. package/dist/registries/models.d.ts.map +1 -0
  226. package/dist/registries/models.js +16 -0
  227. package/dist/registries/models.js.map +1 -0
  228. package/dist/registries/models.mjs +16 -0
  229. package/dist/registries/models.mjs.map +1 -0
  230. package/dist/registries/modules.d.ts.map +1 -0
  231. package/dist/registries/modules.js.map +1 -0
  232. package/dist/registries/modules.mjs.map +1 -0
  233. package/dist/{core/utils.d.ts → registries/namespace.d.ts} +1 -1
  234. package/dist/registries/namespace.d.ts.map +1 -0
  235. package/dist/{core/utils.js → registries/namespace.js} +1 -1
  236. package/dist/registries/namespace.js.map +1 -0
  237. package/dist/{core/utils.mjs → registries/namespace.mjs} +1 -1
  238. package/dist/registries/namespace.mjs.map +1 -0
  239. package/dist/registries/plugins.d.ts.map +1 -0
  240. package/dist/registries/plugins.js.map +1 -0
  241. package/dist/registries/plugins.mjs.map +1 -0
  242. package/dist/registries/policies.d.ts.map +1 -0
  243. package/dist/{core/registries → registries}/policies.js +5 -5
  244. package/dist/registries/policies.js.map +1 -0
  245. package/dist/{core/registries → registries}/policies.mjs +1 -1
  246. package/dist/registries/policies.mjs.map +1 -0
  247. package/dist/registries/sanitizers.d.ts.map +1 -0
  248. package/dist/registries/sanitizers.js.map +1 -0
  249. package/dist/registries/sanitizers.mjs.map +1 -0
  250. package/dist/registries/services.d.ts.map +1 -0
  251. package/dist/{core/registries → registries}/services.js +5 -5
  252. package/dist/registries/services.js.map +1 -0
  253. package/dist/{core/registries → registries}/services.mjs +1 -1
  254. package/dist/registries/services.mjs.map +1 -0
  255. package/dist/registries/validators.d.ts.map +1 -0
  256. package/dist/registries/validators.js.map +1 -0
  257. package/dist/registries/validators.mjs.map +1 -0
  258. package/dist/services/core-store.d.ts +2 -22
  259. package/dist/services/core-store.d.ts.map +1 -1
  260. package/dist/services/core-store.js +5 -1
  261. package/dist/services/core-store.js.map +1 -1
  262. package/dist/services/core-store.mjs +5 -1
  263. package/dist/services/core-store.mjs.map +1 -1
  264. package/dist/services/document-service/common.d.ts +4 -0
  265. package/dist/services/document-service/common.d.ts.map +1 -0
  266. package/dist/services/document-service/common.js +7 -0
  267. package/dist/services/document-service/common.js.map +1 -0
  268. package/dist/services/document-service/common.mjs +7 -0
  269. package/dist/services/document-service/common.mjs.map +1 -0
  270. package/dist/services/document-service/draft-and-publish.d.ts +10 -0
  271. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -0
  272. package/dist/services/document-service/draft-and-publish.js +69 -0
  273. package/dist/services/document-service/draft-and-publish.js.map +1 -0
  274. package/dist/services/document-service/draft-and-publish.mjs +69 -0
  275. package/dist/services/document-service/draft-and-publish.mjs.map +1 -0
  276. package/dist/services/document-service/index.d.ts +18 -7
  277. package/dist/services/document-service/index.d.ts.map +1 -1
  278. package/dist/services/document-service/index.js +20 -190
  279. package/dist/services/document-service/index.js.map +1 -1
  280. package/dist/services/document-service/index.mjs +19 -190
  281. package/dist/services/document-service/index.mjs.map +1 -1
  282. package/dist/services/document-service/internationalization.d.ts +8 -0
  283. package/dist/services/document-service/internationalization.d.ts.map +1 -0
  284. package/dist/services/document-service/internationalization.js +54 -0
  285. package/dist/services/document-service/internationalization.js.map +1 -0
  286. package/dist/services/document-service/internationalization.mjs +54 -0
  287. package/dist/services/document-service/internationalization.mjs.map +1 -0
  288. package/dist/services/document-service/middlewares/errors.d.ts +6 -0
  289. package/dist/services/document-service/middlewares/errors.d.ts.map +1 -0
  290. package/dist/services/document-service/middlewares/errors.js +25 -0
  291. package/dist/services/document-service/middlewares/errors.js.map +1 -0
  292. package/dist/services/document-service/middlewares/errors.mjs +25 -0
  293. package/dist/services/document-service/middlewares/errors.mjs.map +1 -0
  294. package/dist/services/document-service/middlewares/index.d.ts +2 -10
  295. package/dist/services/document-service/middlewares/index.d.ts.map +1 -1
  296. package/dist/services/document-service/middlewares/middleware-manager.d.ts +7 -0
  297. package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -0
  298. package/dist/services/document-service/middlewares/middleware-manager.js +46 -0
  299. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -0
  300. package/dist/services/document-service/middlewares/middleware-manager.mjs +46 -0
  301. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -0
  302. package/dist/services/document-service/repository.d.ts +3 -0
  303. package/dist/services/document-service/repository.d.ts.map +1 -0
  304. package/dist/services/document-service/repository.js +295 -0
  305. package/dist/services/document-service/repository.js.map +1 -0
  306. package/dist/services/document-service/repository.mjs +295 -0
  307. package/dist/services/document-service/repository.mjs.map +1 -0
  308. package/dist/services/document-service/transform/data.d.ts +5 -0
  309. package/dist/services/document-service/transform/data.d.ts.map +1 -0
  310. package/dist/services/document-service/transform/data.js +13 -0
  311. package/dist/services/document-service/transform/data.js.map +1 -0
  312. package/dist/services/document-service/transform/data.mjs +13 -0
  313. package/dist/services/document-service/transform/data.mjs.map +1 -0
  314. package/dist/services/document-service/transform/fields.d.ts +5 -0
  315. package/dist/services/document-service/transform/fields.d.ts.map +1 -0
  316. package/dist/services/document-service/transform/fields.js +24 -0
  317. package/dist/services/document-service/transform/fields.js.map +1 -0
  318. package/dist/services/document-service/transform/fields.mjs +24 -0
  319. package/dist/services/document-service/transform/fields.mjs.map +1 -0
  320. package/dist/services/document-service/transform/id-map.d.ts +23 -0
  321. package/dist/services/document-service/transform/id-map.d.ts.map +1 -0
  322. package/dist/services/document-service/transform/id-map.js +78 -0
  323. package/dist/services/document-service/transform/id-map.js.map +1 -0
  324. package/dist/services/document-service/transform/id-map.mjs +78 -0
  325. package/dist/services/document-service/transform/id-map.mjs.map +1 -0
  326. package/dist/services/document-service/transform/id-transform.d.ts +5 -0
  327. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -0
  328. package/dist/services/document-service/transform/id-transform.js +33 -0
  329. package/dist/services/document-service/transform/id-transform.js.map +1 -0
  330. package/dist/services/document-service/transform/id-transform.mjs +33 -0
  331. package/dist/services/document-service/transform/id-transform.mjs.map +1 -0
  332. package/dist/services/document-service/transform/populate.d.ts +6 -0
  333. package/dist/services/document-service/transform/populate.d.ts.map +1 -0
  334. package/dist/services/document-service/transform/populate.js +21 -0
  335. package/dist/services/document-service/transform/populate.js.map +1 -0
  336. package/dist/services/document-service/transform/populate.mjs +21 -0
  337. package/dist/services/document-service/transform/populate.mjs.map +1 -0
  338. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +13 -0
  339. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -0
  340. package/dist/services/document-service/transform/relations/extract/data-ids.js +90 -0
  341. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -0
  342. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +90 -0
  343. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -0
  344. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts +10 -0
  345. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -0
  346. package/dist/services/document-service/transform/relations/transform/data-ids.js +141 -0
  347. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -0
  348. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +141 -0
  349. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -0
  350. package/dist/services/document-service/transform/relations/utils/data.d.ts +4 -0
  351. package/dist/services/document-service/transform/relations/utils/data.d.ts.map +1 -0
  352. package/dist/services/document-service/transform/relations/utils/data.js +12 -0
  353. package/dist/services/document-service/transform/relations/utils/data.js.map +1 -0
  354. package/dist/services/document-service/transform/relations/utils/data.mjs +12 -0
  355. package/dist/services/document-service/transform/relations/utils/data.mjs.map +1 -0
  356. package/dist/services/document-service/transform/relations/utils/dp.d.ts +10 -0
  357. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -0
  358. package/dist/services/document-service/transform/relations/utils/dp.js +30 -0
  359. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -0
  360. package/dist/services/document-service/transform/relations/utils/dp.mjs +30 -0
  361. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -0
  362. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +10 -0
  363. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -0
  364. package/dist/services/document-service/transform/relations/utils/i18n.js +31 -0
  365. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -0
  366. package/dist/services/document-service/transform/relations/utils/i18n.mjs +31 -0
  367. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -0
  368. package/dist/services/document-service/transform/relations/utils/types.d.ts +15 -0
  369. package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -0
  370. package/dist/services/document-service/transform/types.d.ts +13 -0
  371. package/dist/services/document-service/transform/types.d.ts.map +1 -0
  372. package/dist/services/document-service/utils/populate.d.ts +10 -0
  373. package/dist/services/document-service/utils/populate.d.ts.map +1 -0
  374. package/dist/services/document-service/utils/populate.js +41 -0
  375. package/dist/services/document-service/utils/populate.js.map +1 -0
  376. package/dist/services/document-service/utils/populate.mjs +41 -0
  377. package/dist/services/document-service/utils/populate.mjs.map +1 -0
  378. package/dist/services/entity-service/components.d.ts +1 -4
  379. package/dist/services/entity-service/components.d.ts.map +1 -1
  380. package/dist/services/entity-service/components.js +13 -99
  381. package/dist/services/entity-service/components.js.map +1 -1
  382. package/dist/services/entity-service/components.mjs +14 -100
  383. package/dist/services/entity-service/components.mjs.map +1 -1
  384. package/dist/services/entity-service/index.d.ts +1 -3
  385. package/dist/services/entity-service/index.d.ts.map +1 -1
  386. package/dist/services/entity-service/index.js +34 -199
  387. package/dist/services/entity-service/index.js.map +1 -1
  388. package/dist/services/entity-service/index.mjs +27 -192
  389. package/dist/services/entity-service/index.mjs.map +1 -1
  390. package/dist/services/entity-service/params.d.ts +4 -4
  391. package/dist/services/entity-service/params.d.ts.map +1 -1
  392. package/dist/services/entity-service/params.js +1 -1
  393. package/dist/services/entity-service/params.js.map +1 -1
  394. package/dist/services/entity-service/params.mjs +1 -1
  395. package/dist/services/entity-service/params.mjs.map +1 -1
  396. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
  397. package/dist/services/entity-validator/blocks-validator.js +22 -2
  398. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  399. package/dist/services/entity-validator/blocks-validator.mjs +22 -2
  400. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  401. package/dist/services/entity-validator/index.d.ts.map +1 -1
  402. package/dist/services/entity-validator/index.js +5 -2
  403. package/dist/services/entity-validator/index.js.map +1 -1
  404. package/dist/services/entity-validator/index.mjs +5 -2
  405. package/dist/services/entity-validator/index.mjs.map +1 -1
  406. package/dist/services/entity-validator/validators.d.ts +14 -13
  407. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  408. package/dist/services/entity-validator/validators.js +20 -16
  409. package/dist/services/entity-validator/validators.js.map +1 -1
  410. package/dist/services/entity-validator/validators.mjs +20 -16
  411. package/dist/services/entity-validator/validators.mjs.map +1 -1
  412. package/dist/services/features.d.ts +10 -0
  413. package/dist/services/features.d.ts.map +1 -0
  414. package/dist/services/features.js +17 -0
  415. package/dist/services/features.js.map +1 -0
  416. package/dist/services/features.mjs +17 -0
  417. package/dist/services/features.mjs.map +1 -0
  418. package/dist/services/server/compose-endpoint.d.ts.map +1 -1
  419. package/dist/services/server/compose-endpoint.js +3 -0
  420. package/dist/services/server/compose-endpoint.js.map +1 -1
  421. package/dist/services/server/compose-endpoint.mjs +3 -0
  422. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  423. package/dist/services/server/middleware.d.ts +1 -5
  424. package/dist/services/server/middleware.d.ts.map +1 -1
  425. package/dist/services/server/middleware.js.map +1 -1
  426. package/dist/services/server/middleware.mjs.map +1 -1
  427. package/dist/services/server/register-middlewares.js +1 -1
  428. package/dist/services/server/register-middlewares.js.map +1 -1
  429. package/dist/services/server/register-middlewares.mjs +1 -1
  430. package/dist/services/server/register-middlewares.mjs.map +1 -1
  431. package/dist/services/webhook-runner.d.ts +10 -1
  432. package/dist/services/webhook-runner.d.ts.map +1 -1
  433. package/dist/services/webhook-store.d.ts +2 -22
  434. package/dist/services/webhook-store.d.ts.map +1 -1
  435. package/dist/services/webhook-store.js +7 -3
  436. package/dist/services/webhook-store.js.map +1 -1
  437. package/dist/services/webhook-store.mjs +7 -3
  438. package/dist/services/webhook-store.mjs.map +1 -1
  439. package/dist/utils/convert-custom-field-type.d.ts +1 -2
  440. package/dist/utils/convert-custom-field-type.d.ts.map +1 -1
  441. package/dist/utils/convert-custom-field-type.js +2 -1
  442. package/dist/utils/convert-custom-field-type.js.map +1 -1
  443. package/dist/utils/convert-custom-field-type.mjs +1 -1
  444. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  445. package/dist/utils/ee.d.ts +1 -2
  446. package/dist/utils/ee.d.ts.map +1 -1
  447. package/dist/utils/fetch.d.ts +2 -1
  448. package/dist/utils/fetch.d.ts.map +1 -1
  449. package/dist/utils/fetch.js +2 -2
  450. package/dist/utils/fetch.js.map +1 -1
  451. package/dist/utils/fetch.mjs +2 -2
  452. package/dist/utils/fetch.mjs.map +1 -1
  453. package/dist/utils/filepath-to-prop-path.d.ts +5 -0
  454. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -0
  455. package/dist/{load → utils}/filepath-to-prop-path.js +3 -2
  456. package/dist/utils/filepath-to-prop-path.js.map +1 -0
  457. package/dist/{load → utils}/filepath-to-prop-path.mjs +2 -2
  458. package/dist/utils/filepath-to-prop-path.mjs.map +1 -0
  459. package/dist/utils/get-dirs.d.ts +1 -2
  460. package/dist/utils/get-dirs.d.ts.map +1 -1
  461. package/dist/utils/get-dirs.js +2 -1
  462. package/dist/utils/get-dirs.js.map +1 -1
  463. package/dist/utils/get-dirs.mjs +1 -1
  464. package/dist/utils/get-dirs.mjs.map +1 -1
  465. package/dist/utils/index.d.ts +11 -4
  466. package/dist/utils/index.d.ts.map +1 -1
  467. package/dist/utils/is-initialized.d.ts +1 -1
  468. package/dist/utils/is-initialized.d.ts.map +1 -1
  469. package/dist/utils/is-initialized.js +5 -4
  470. package/dist/utils/is-initialized.js.map +1 -1
  471. package/dist/utils/is-initialized.mjs +4 -4
  472. package/dist/utils/is-initialized.mjs.map +1 -1
  473. package/dist/utils/load-config-file.d.ts +2 -0
  474. package/dist/utils/load-config-file.d.ts.map +1 -0
  475. package/dist/{core/app-configuration → utils}/load-config-file.js +3 -3
  476. package/dist/utils/load-config-file.js.map +1 -0
  477. package/dist/{core/app-configuration → utils}/load-config-file.mjs +4 -4
  478. package/dist/utils/load-config-file.mjs.map +1 -0
  479. package/dist/{load → utils}/load-files.d.ts +2 -2
  480. package/dist/utils/load-files.d.ts.map +1 -0
  481. package/dist/{load → utils}/load-files.js +7 -6
  482. package/dist/utils/load-files.js.map +1 -0
  483. package/dist/{load → utils}/load-files.mjs +7 -7
  484. package/dist/utils/load-files.mjs.map +1 -0
  485. package/dist/utils/open-browser.d.ts +1 -2
  486. package/dist/utils/open-browser.d.ts.map +1 -1
  487. package/dist/utils/open-browser.js +5 -5
  488. package/dist/utils/open-browser.js.map +1 -1
  489. package/dist/utils/open-browser.mjs +4 -5
  490. package/dist/utils/open-browser.mjs.map +1 -1
  491. package/dist/utils/startup-logger.d.ts +1 -2
  492. package/dist/utils/startup-logger.d.ts.map +1 -1
  493. package/dist/utils/startup-logger.js +19 -13
  494. package/dist/utils/startup-logger.js.map +1 -1
  495. package/dist/utils/startup-logger.mjs +18 -13
  496. package/dist/utils/startup-logger.mjs.map +1 -1
  497. package/dist/utils/transform-content-types-to-models.d.ts +176 -4
  498. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  499. package/dist/utils/transform-content-types-to-models.js +202 -15
  500. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  501. package/dist/utils/transform-content-types-to-models.mjs +199 -15
  502. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  503. package/dist/utils/update-notifier/index.d.ts +1 -2
  504. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  505. package/dist/utils/update-notifier/index.js +8 -2
  506. package/dist/utils/update-notifier/index.js.map +1 -1
  507. package/dist/utils/update-notifier/index.mjs +7 -2
  508. package/dist/utils/update-notifier/index.mjs.map +1 -1
  509. package/package.json +19 -26
  510. package/bin/strapi.js +0 -2
  511. package/dist/admin.d.ts +0 -5
  512. package/dist/admin.d.ts.map +0 -1
  513. package/dist/cli.d.ts +0 -2
  514. package/dist/cli.d.ts.map +0 -1
  515. package/dist/commands/actions/admin/create-user/action.d.ts +0 -12
  516. package/dist/commands/actions/admin/create-user/action.d.ts.map +0 -1
  517. package/dist/commands/actions/admin/create-user/command.d.ts +0 -7
  518. package/dist/commands/actions/admin/create-user/command.d.ts.map +0 -1
  519. package/dist/commands/actions/admin/reset-user-password/action.d.ts +0 -10
  520. package/dist/commands/actions/admin/reset-user-password/action.d.ts.map +0 -1
  521. package/dist/commands/actions/admin/reset-user-password/command.d.ts +0 -7
  522. package/dist/commands/actions/admin/reset-user-password/command.d.ts.map +0 -1
  523. package/dist/commands/actions/components/list/action.d.ts +0 -3
  524. package/dist/commands/actions/components/list/action.d.ts.map +0 -1
  525. package/dist/commands/actions/components/list/command.d.ts +0 -7
  526. package/dist/commands/actions/components/list/command.d.ts.map +0 -1
  527. package/dist/commands/actions/configuration/dump/action.d.ts +0 -11
  528. package/dist/commands/actions/configuration/dump/action.d.ts.map +0 -1
  529. package/dist/commands/actions/configuration/dump/command.d.ts +0 -7
  530. package/dist/commands/actions/configuration/dump/command.d.ts.map +0 -1
  531. package/dist/commands/actions/configuration/restore/action.d.ts +0 -11
  532. package/dist/commands/actions/configuration/restore/action.d.ts.map +0 -1
  533. package/dist/commands/actions/configuration/restore/command.d.ts +0 -7
  534. package/dist/commands/actions/configuration/restore/command.d.ts.map +0 -1
  535. package/dist/commands/actions/console/action.d.ts +0 -6
  536. package/dist/commands/actions/console/action.d.ts.map +0 -1
  537. package/dist/commands/actions/console/command.d.ts +0 -7
  538. package/dist/commands/actions/console/command.d.ts.map +0 -1
  539. package/dist/commands/actions/content-types/list/action.d.ts +0 -3
  540. package/dist/commands/actions/content-types/list/action.d.ts.map +0 -1
  541. package/dist/commands/actions/content-types/list/command.d.ts +0 -7
  542. package/dist/commands/actions/content-types/list/command.d.ts.map +0 -1
  543. package/dist/commands/actions/controllers/list/action.d.ts +0 -3
  544. package/dist/commands/actions/controllers/list/action.d.ts.map +0 -1
  545. package/dist/commands/actions/controllers/list/command.d.ts +0 -7
  546. package/dist/commands/actions/controllers/list/command.d.ts.map +0 -1
  547. package/dist/commands/actions/generate/command.d.ts +0 -7
  548. package/dist/commands/actions/generate/command.d.ts.map +0 -1
  549. package/dist/commands/actions/hooks/list/action.d.ts +0 -3
  550. package/dist/commands/actions/hooks/list/action.d.ts.map +0 -1
  551. package/dist/commands/actions/hooks/list/command.d.ts +0 -7
  552. package/dist/commands/actions/hooks/list/command.d.ts.map +0 -1
  553. package/dist/commands/actions/install/action.d.ts +0 -3
  554. package/dist/commands/actions/install/action.d.ts.map +0 -1
  555. package/dist/commands/actions/install/command.d.ts +0 -7
  556. package/dist/commands/actions/install/command.d.ts.map +0 -1
  557. package/dist/commands/actions/middlewares/list/action.d.ts +0 -3
  558. package/dist/commands/actions/middlewares/list/action.d.ts.map +0 -1
  559. package/dist/commands/actions/middlewares/list/command.d.ts +0 -7
  560. package/dist/commands/actions/middlewares/list/command.d.ts.map +0 -1
  561. package/dist/commands/actions/new/action.d.ts +0 -8
  562. package/dist/commands/actions/new/action.d.ts.map +0 -1
  563. package/dist/commands/actions/new/command.d.ts +0 -7
  564. package/dist/commands/actions/new/command.d.ts.map +0 -1
  565. package/dist/commands/actions/plugin/build-command/action.d.ts +0 -7
  566. package/dist/commands/actions/plugin/build-command/action.d.ts.map +0 -1
  567. package/dist/commands/actions/plugin/build-command/command.d.ts +0 -7
  568. package/dist/commands/actions/plugin/build-command/command.d.ts.map +0 -1
  569. package/dist/commands/actions/plugin/watch/action.d.ts +0 -7
  570. package/dist/commands/actions/plugin/watch/action.d.ts.map +0 -1
  571. package/dist/commands/actions/plugin/watch/command.d.ts +0 -7
  572. package/dist/commands/actions/plugin/watch/command.d.ts.map +0 -1
  573. package/dist/commands/actions/policies/list/action.d.ts +0 -3
  574. package/dist/commands/actions/policies/list/action.d.ts.map +0 -1
  575. package/dist/commands/actions/policies/list/command.d.ts +0 -7
  576. package/dist/commands/actions/policies/list/command.d.ts.map +0 -1
  577. package/dist/commands/actions/report/action.d.ts +0 -8
  578. package/dist/commands/actions/report/action.d.ts.map +0 -1
  579. package/dist/commands/actions/report/command.d.ts +0 -7
  580. package/dist/commands/actions/report/command.d.ts.map +0 -1
  581. package/dist/commands/actions/routes/list/action.d.ts +0 -3
  582. package/dist/commands/actions/routes/list/action.d.ts.map +0 -1
  583. package/dist/commands/actions/routes/list/command.d.ts +0 -7
  584. package/dist/commands/actions/routes/list/command.d.ts.map +0 -1
  585. package/dist/commands/actions/services/list/action.d.ts +0 -3
  586. package/dist/commands/actions/services/list/action.d.ts.map +0 -1
  587. package/dist/commands/actions/services/list/command.d.ts +0 -7
  588. package/dist/commands/actions/services/list/command.d.ts.map +0 -1
  589. package/dist/commands/actions/start/action.d.ts +0 -6
  590. package/dist/commands/actions/start/action.d.ts.map +0 -1
  591. package/dist/commands/actions/start/command.d.ts +0 -7
  592. package/dist/commands/actions/start/command.d.ts.map +0 -1
  593. package/dist/commands/actions/telemetry/disable/action.d.ts +0 -2
  594. package/dist/commands/actions/telemetry/disable/action.d.ts.map +0 -1
  595. package/dist/commands/actions/telemetry/disable/command.d.ts +0 -7
  596. package/dist/commands/actions/telemetry/disable/command.d.ts.map +0 -1
  597. package/dist/commands/actions/telemetry/enable/action.d.ts +0 -3
  598. package/dist/commands/actions/telemetry/enable/action.d.ts.map +0 -1
  599. package/dist/commands/actions/telemetry/enable/command.d.ts +0 -7
  600. package/dist/commands/actions/telemetry/enable/command.d.ts.map +0 -1
  601. package/dist/commands/actions/templates/generate/action.d.ts +0 -2
  602. package/dist/commands/actions/templates/generate/action.d.ts.map +0 -1
  603. package/dist/commands/actions/templates/generate/command.d.ts +0 -7
  604. package/dist/commands/actions/templates/generate/command.d.ts.map +0 -1
  605. package/dist/commands/actions/ts/generate-types/action.d.ts +0 -9
  606. package/dist/commands/actions/ts/generate-types/action.d.ts.map +0 -1
  607. package/dist/commands/actions/ts/generate-types/command.d.ts +0 -7
  608. package/dist/commands/actions/ts/generate-types/command.d.ts.map +0 -1
  609. package/dist/commands/actions/uninstall/action.d.ts +0 -6
  610. package/dist/commands/actions/uninstall/action.d.ts.map +0 -1
  611. package/dist/commands/actions/uninstall/command.d.ts +0 -7
  612. package/dist/commands/actions/uninstall/command.d.ts.map +0 -1
  613. package/dist/commands/actions/version/command.d.ts +0 -7
  614. package/dist/commands/actions/version/command.d.ts.map +0 -1
  615. package/dist/commands/actions/watch-admin/action.d.ts +0 -7
  616. package/dist/commands/actions/watch-admin/action.d.ts.map +0 -1
  617. package/dist/commands/actions/watch-admin/command.d.ts +0 -7
  618. package/dist/commands/actions/watch-admin/command.d.ts.map +0 -1
  619. package/dist/commands/index.d.ts +0 -37
  620. package/dist/commands/index.d.ts.map +0 -1
  621. package/dist/commands/types.d.ts +0 -14
  622. package/dist/commands/types.d.ts.map +0 -1
  623. package/dist/commands/utils/commander.d.ts +0 -36
  624. package/dist/commands/utils/commander.d.ts.map +0 -1
  625. package/dist/commands/utils/helpers.d.ts +0 -49
  626. package/dist/commands/utils/helpers.d.ts.map +0 -1
  627. package/dist/commands/utils/logger.d.ts +0 -19
  628. package/dist/commands/utils/logger.d.ts.map +0 -1
  629. package/dist/commands/utils/pkg.d.ts +0 -119
  630. package/dist/commands/utils/pkg.d.ts.map +0 -1
  631. package/dist/commands/utils/tsconfig.d.ts +0 -19
  632. package/dist/commands/utils/tsconfig.d.ts.map +0 -1
  633. package/dist/core/app-configuration/config-loader.d.ts.map +0 -1
  634. package/dist/core/app-configuration/config-loader.js +0 -19
  635. package/dist/core/app-configuration/config-loader.js.map +0 -1
  636. package/dist/core/app-configuration/config-loader.mjs +0 -17
  637. package/dist/core/app-configuration/config-loader.mjs.map +0 -1
  638. package/dist/core/app-configuration/index.d.ts.map +0 -1
  639. package/dist/core/app-configuration/index.js.map +0 -1
  640. package/dist/core/app-configuration/index.mjs.map +0 -1
  641. package/dist/core/app-configuration/load-config-file.d.ts +0 -2
  642. package/dist/core/app-configuration/load-config-file.d.ts.map +0 -1
  643. package/dist/core/app-configuration/load-config-file.js.map +0 -1
  644. package/dist/core/app-configuration/load-config-file.mjs.map +0 -1
  645. package/dist/core/bootstrap.d.ts +0 -5
  646. package/dist/core/bootstrap.d.ts.map +0 -1
  647. package/dist/core/bootstrap.js +0 -28
  648. package/dist/core/bootstrap.js.map +0 -1
  649. package/dist/core/bootstrap.mjs +0 -27
  650. package/dist/core/bootstrap.mjs.map +0 -1
  651. package/dist/core/domain/content-type/index.d.ts.map +0 -1
  652. package/dist/core/domain/content-type/index.js.map +0 -1
  653. package/dist/core/domain/content-type/index.mjs.map +0 -1
  654. package/dist/core/domain/content-type/validator.d.ts.map +0 -1
  655. package/dist/core/domain/content-type/validator.js.map +0 -1
  656. package/dist/core/domain/content-type/validator.mjs.map +0 -1
  657. package/dist/core/domain/module/index.d.ts.map +0 -1
  658. package/dist/core/domain/module/index.js.map +0 -1
  659. package/dist/core/domain/module/index.mjs.map +0 -1
  660. package/dist/core/domain/module/validation.d.ts.map +0 -1
  661. package/dist/core/domain/module/validation.js.map +0 -1
  662. package/dist/core/domain/module/validation.mjs.map +0 -1
  663. package/dist/core/loaders/admin.d.ts.map +0 -1
  664. package/dist/core/loaders/admin.js.map +0 -1
  665. package/dist/core/loaders/admin.mjs.map +0 -1
  666. package/dist/core/loaders/apis.d.ts.map +0 -1
  667. package/dist/core/loaders/apis.js.map +0 -1
  668. package/dist/core/loaders/apis.mjs.map +0 -1
  669. package/dist/core/loaders/components.d.ts.map +0 -1
  670. package/dist/core/loaders/components.js.map +0 -1
  671. package/dist/core/loaders/components.mjs.map +0 -1
  672. package/dist/core/loaders/index.d.ts.map +0 -1
  673. package/dist/core/loaders/index.js.map +0 -1
  674. package/dist/core/loaders/index.mjs.map +0 -1
  675. package/dist/core/loaders/middlewares.d.ts.map +0 -1
  676. package/dist/core/loaders/middlewares.js.map +0 -1
  677. package/dist/core/loaders/middlewares.mjs.map +0 -1
  678. package/dist/core/loaders/plugins/get-enabled-plugins.d.ts.map +0 -1
  679. package/dist/core/loaders/plugins/get-enabled-plugins.js.map +0 -1
  680. package/dist/core/loaders/plugins/get-enabled-plugins.mjs.map +0 -1
  681. package/dist/core/loaders/plugins/get-user-plugins-config.d.ts.map +0 -1
  682. package/dist/core/loaders/plugins/get-user-plugins-config.js.map +0 -1
  683. package/dist/core/loaders/plugins/get-user-plugins-config.mjs.map +0 -1
  684. package/dist/core/loaders/plugins/index.d.ts.map +0 -1
  685. package/dist/core/loaders/plugins/index.js.map +0 -1
  686. package/dist/core/loaders/plugins/index.mjs.map +0 -1
  687. package/dist/core/loaders/policies.d.ts.map +0 -1
  688. package/dist/core/loaders/policies.js.map +0 -1
  689. package/dist/core/loaders/policies.mjs.map +0 -1
  690. package/dist/core/loaders/sanitizers.d.ts.map +0 -1
  691. package/dist/core/loaders/sanitizers.js.map +0 -1
  692. package/dist/core/loaders/sanitizers.mjs.map +0 -1
  693. package/dist/core/loaders/src-index.d.ts.map +0 -1
  694. package/dist/core/loaders/src-index.js.map +0 -1
  695. package/dist/core/loaders/src-index.mjs.map +0 -1
  696. package/dist/core/loaders/validators.d.ts.map +0 -1
  697. package/dist/core/loaders/validators.js.map +0 -1
  698. package/dist/core/loaders/validators.mjs.map +0 -1
  699. package/dist/core/registries/apis.d.ts.map +0 -1
  700. package/dist/core/registries/apis.js.map +0 -1
  701. package/dist/core/registries/apis.mjs.map +0 -1
  702. package/dist/core/registries/components.d.ts.map +0 -1
  703. package/dist/core/registries/components.js.map +0 -1
  704. package/dist/core/registries/components.mjs.map +0 -1
  705. package/dist/core/registries/config.d.ts +0 -4
  706. package/dist/core/registries/config.d.ts.map +0 -1
  707. package/dist/core/registries/config.js +0 -23
  708. package/dist/core/registries/config.js.map +0 -1
  709. package/dist/core/registries/config.mjs +0 -22
  710. package/dist/core/registries/config.mjs.map +0 -1
  711. package/dist/core/registries/content-types.d.ts.map +0 -1
  712. package/dist/core/registries/content-types.js.map +0 -1
  713. package/dist/core/registries/content-types.mjs.map +0 -1
  714. package/dist/core/registries/controllers.d.ts.map +0 -1
  715. package/dist/core/registries/controllers.js.map +0 -1
  716. package/dist/core/registries/controllers.mjs.map +0 -1
  717. package/dist/core/registries/custom-fields.d.ts.map +0 -1
  718. package/dist/core/registries/custom-fields.js.map +0 -1
  719. package/dist/core/registries/custom-fields.mjs.map +0 -1
  720. package/dist/core/registries/hooks.d.ts.map +0 -1
  721. package/dist/core/registries/hooks.js.map +0 -1
  722. package/dist/core/registries/hooks.mjs.map +0 -1
  723. package/dist/core/registries/index.d.ts.map +0 -1
  724. package/dist/core/registries/middlewares.d.ts.map +0 -1
  725. package/dist/core/registries/middlewares.js.map +0 -1
  726. package/dist/core/registries/middlewares.mjs.map +0 -1
  727. package/dist/core/registries/modules.d.ts.map +0 -1
  728. package/dist/core/registries/modules.js.map +0 -1
  729. package/dist/core/registries/modules.mjs.map +0 -1
  730. package/dist/core/registries/plugins.d.ts.map +0 -1
  731. package/dist/core/registries/plugins.js.map +0 -1
  732. package/dist/core/registries/plugins.mjs.map +0 -1
  733. package/dist/core/registries/policies.d.ts.map +0 -1
  734. package/dist/core/registries/policies.js.map +0 -1
  735. package/dist/core/registries/policies.mjs.map +0 -1
  736. package/dist/core/registries/sanitizers.d.ts.map +0 -1
  737. package/dist/core/registries/sanitizers.js.map +0 -1
  738. package/dist/core/registries/sanitizers.mjs.map +0 -1
  739. package/dist/core/registries/services.d.ts.map +0 -1
  740. package/dist/core/registries/services.js.map +0 -1
  741. package/dist/core/registries/services.mjs.map +0 -1
  742. package/dist/core/registries/validators.d.ts.map +0 -1
  743. package/dist/core/registries/validators.js.map +0 -1
  744. package/dist/core/registries/validators.mjs.map +0 -1
  745. package/dist/core/utils.d.ts.map +0 -1
  746. package/dist/core/utils.js.map +0 -1
  747. package/dist/core/utils.mjs.map +0 -1
  748. package/dist/core-api/service/get-fetch-params.d.ts +0 -7
  749. package/dist/core-api/service/get-fetch-params.d.ts.map +0 -1
  750. package/dist/core-api/service/get-fetch-params.js +0 -14
  751. package/dist/core-api/service/get-fetch-params.js.map +0 -1
  752. package/dist/core-api/service/get-fetch-params.mjs +0 -14
  753. package/dist/core-api/service/get-fetch-params.mjs.map +0 -1
  754. package/dist/load/filepath-to-prop-path.d.ts +0 -6
  755. package/dist/load/filepath-to-prop-path.d.ts.map +0 -1
  756. package/dist/load/filepath-to-prop-path.js.map +0 -1
  757. package/dist/load/filepath-to-prop-path.mjs.map +0 -1
  758. package/dist/load/glob.d.ts +0 -7
  759. package/dist/load/glob.d.ts.map +0 -1
  760. package/dist/load/glob.js +0 -15
  761. package/dist/load/glob.js.map +0 -1
  762. package/dist/load/glob.mjs +0 -14
  763. package/dist/load/glob.mjs.map +0 -1
  764. package/dist/load/index.d.ts +0 -3
  765. package/dist/load/index.d.ts.map +0 -1
  766. package/dist/load/load-files.d.ts.map +0 -1
  767. package/dist/load/load-files.js.map +0 -1
  768. package/dist/load/load-files.mjs.map +0 -1
  769. package/dist/load/package-path.d.ts +0 -6
  770. package/dist/load/package-path.d.ts.map +0 -1
  771. package/dist/middlewares/public/assets/images/group_people_1.png +0 -0
  772. package/dist/middlewares/public/assets/images/group_people_2.png +0 -0
  773. package/dist/middlewares/public/assets/images/group_people_3.png +0 -0
  774. package/dist/middlewares/public/assets/images/logo_login.png +0 -0
  775. package/dist/middlewares/public/index.d.ts.map +0 -1
  776. package/dist/middlewares/public/index.html +0 -66
  777. package/dist/middlewares/public/index.js +0 -91
  778. package/dist/middlewares/public/index.js.map +0 -1
  779. package/dist/middlewares/public/index.mjs +0 -85
  780. package/dist/middlewares/public/index.mjs.map +0 -1
  781. package/dist/middlewares/public/serve-static.d.ts +0 -4
  782. package/dist/middlewares/public/serve-static.d.ts.map +0 -1
  783. package/dist/middlewares/public/serve-static.js +0 -24
  784. package/dist/middlewares/public/serve-static.js.map +0 -1
  785. package/dist/middlewares/public/serve-static.mjs +0 -21
  786. package/dist/middlewares/public/serve-static.mjs.map +0 -1
  787. package/dist/services/document-service/document-repository.d.ts +0 -21
  788. package/dist/services/document-service/document-repository.d.ts.map +0 -1
  789. package/dist/services/document-service/document-repository.js +0 -132
  790. package/dist/services/document-service/document-repository.js.map +0 -1
  791. package/dist/services/document-service/document-repository.mjs +0 -132
  792. package/dist/services/document-service/document-repository.mjs.map +0 -1
  793. package/dist/services/document-service/middlewares/defaults/draft-and-publish.d.ts +0 -26
  794. package/dist/services/document-service/middlewares/defaults/draft-and-publish.d.ts.map +0 -1
  795. package/dist/services/document-service/middlewares/defaults/draft-and-publish.js +0 -58
  796. package/dist/services/document-service/middlewares/defaults/draft-and-publish.js.map +0 -1
  797. package/dist/services/document-service/middlewares/defaults/draft-and-publish.mjs +0 -58
  798. package/dist/services/document-service/middlewares/defaults/draft-and-publish.mjs.map +0 -1
  799. package/dist/services/document-service/middlewares/defaults/index.d.ts +0 -3
  800. package/dist/services/document-service/middlewares/defaults/index.d.ts.map +0 -1
  801. package/dist/services/document-service/middlewares/defaults/index.js +0 -82
  802. package/dist/services/document-service/middlewares/defaults/index.js.map +0 -1
  803. package/dist/services/document-service/middlewares/defaults/index.mjs +0 -82
  804. package/dist/services/document-service/middlewares/defaults/index.mjs.map +0 -1
  805. package/dist/services/document-service/middlewares/defaults/locales.d.ts +0 -18
  806. package/dist/services/document-service/middlewares/defaults/locales.d.ts.map +0 -1
  807. package/dist/services/document-service/middlewares/defaults/locales.js +0 -40
  808. package/dist/services/document-service/middlewares/defaults/locales.js.map +0 -1
  809. package/dist/services/document-service/middlewares/defaults/locales.mjs +0 -40
  810. package/dist/services/document-service/middlewares/defaults/locales.mjs.map +0 -1
  811. package/dist/services/document-service/middlewares/index.js +0 -59
  812. package/dist/services/document-service/middlewares/index.js.map +0 -1
  813. package/dist/services/document-service/middlewares/index.mjs +0 -59
  814. package/dist/services/document-service/middlewares/index.mjs.map +0 -1
  815. package/dist/services/utils/upload-files.d.ts +0 -8
  816. package/dist/services/utils/upload-files.d.ts.map +0 -1
  817. package/dist/services/utils/upload-files.js +0 -64
  818. package/dist/services/utils/upload-files.js.map +0 -1
  819. package/dist/services/utils/upload-files.mjs +0 -63
  820. package/dist/services/utils/upload-files.mjs.map +0 -1
  821. package/dist/utils/addSlash.d.ts +0 -3
  822. package/dist/utils/addSlash.d.ts.map +0 -1
  823. package/dist/utils/ee.js +0 -4
  824. package/dist/utils/ee.js.map +0 -1
  825. package/dist/utils/ee.mjs +0 -5
  826. package/dist/utils/ee.mjs.map +0 -1
  827. /package/dist/{core/app-configuration → configuration}/config-loader.d.ts +0 -0
  828. /package/dist/{core/domain → domain}/content-type/validator.d.ts +0 -0
  829. /package/dist/{core/domain → domain}/module/index.d.ts +0 -0
  830. /package/dist/{core/domain → domain}/module/validation.d.ts +0 -0
  831. /package/dist/{core/domain → domain}/module/validation.js +0 -0
  832. /package/dist/{core/domain → domain}/module/validation.mjs +0 -0
  833. /package/dist/{core/loaders → loaders}/admin.d.ts +0 -0
  834. /package/dist/{core/loaders → loaders}/apis.d.ts +0 -0
  835. /package/dist/{core/loaders → loaders}/components.d.ts +0 -0
  836. /package/dist/{core/loaders → loaders}/index.d.ts +0 -0
  837. /package/dist/{core/loaders → loaders}/index.js +0 -0
  838. /package/dist/{core/loaders → loaders}/index.mjs +0 -0
  839. /package/dist/{core/loaders → loaders}/middlewares.d.ts +0 -0
  840. /package/dist/{core/loaders → loaders}/plugins/get-enabled-plugins.d.ts +0 -0
  841. /package/dist/{core/loaders → loaders}/plugins/get-user-plugins-config.d.ts +0 -0
  842. /package/dist/{core/loaders → loaders}/plugins/index.d.ts +0 -0
  843. /package/dist/{core/loaders → loaders}/policies.d.ts +0 -0
  844. /package/dist/{core/loaders → loaders}/policies.js +0 -0
  845. /package/dist/{core/loaders → loaders}/policies.mjs +0 -0
  846. /package/dist/{core/loaders → loaders}/sanitizers.d.ts +0 -0
  847. /package/dist/{core/loaders → loaders}/sanitizers.js +0 -0
  848. /package/dist/{core/loaders → loaders}/sanitizers.mjs +0 -0
  849. /package/dist/{core/loaders → loaders}/src-index.d.ts +0 -0
  850. /package/dist/{core/loaders → loaders}/src-index.js +0 -0
  851. /package/dist/{core/loaders → loaders}/src-index.mjs +0 -0
  852. /package/dist/{core/loaders → loaders}/validators.d.ts +0 -0
  853. /package/dist/{core/loaders → loaders}/validators.js +0 -0
  854. /package/dist/{core/loaders → loaders}/validators.mjs +0 -0
  855. /package/dist/{core/registries → registries}/apis.d.ts +0 -0
  856. /package/dist/{core/registries → registries}/apis.js +0 -0
  857. /package/dist/{core/registries → registries}/apis.mjs +0 -0
  858. /package/dist/{core/registries → registries}/components.d.ts +0 -0
  859. /package/dist/{core/registries → registries}/components.js +0 -0
  860. /package/dist/{core/registries → registries}/components.mjs +0 -0
  861. /package/dist/{core/registries → registries}/content-types.d.ts +0 -0
  862. /package/dist/{core/registries → registries}/controllers.d.ts +0 -0
  863. /package/dist/{core/registries → registries}/custom-fields.d.ts +0 -0
  864. /package/dist/{core/registries → registries}/custom-fields.js +0 -0
  865. /package/dist/{core/registries → registries}/custom-fields.mjs +0 -0
  866. /package/dist/{core/registries → registries}/hooks.d.ts +0 -0
  867. /package/dist/{core/registries → registries}/middlewares.d.ts +0 -0
  868. /package/dist/{core/registries → registries}/modules.d.ts +0 -0
  869. /package/dist/{core/registries → registries}/modules.js +0 -0
  870. /package/dist/{core/registries → registries}/modules.mjs +0 -0
  871. /package/dist/{core/registries → registries}/plugins.d.ts +0 -0
  872. /package/dist/{core/registries → registries}/plugins.js +0 -0
  873. /package/dist/{core/registries → registries}/plugins.mjs +0 -0
  874. /package/dist/{core/registries → registries}/policies.d.ts +0 -0
  875. /package/dist/{core/registries → registries}/sanitizers.d.ts +0 -0
  876. /package/dist/{core/registries → registries}/sanitizers.js +0 -0
  877. /package/dist/{core/registries → registries}/sanitizers.mjs +0 -0
  878. /package/dist/{core/registries → registries}/services.d.ts +0 -0
  879. /package/dist/{core/registries → registries}/validators.d.ts +0 -0
  880. /package/dist/{core/registries → registries}/validators.js +0 -0
  881. /package/dist/{core/registries → registries}/validators.mjs +0 -0
package/dist/Strapi.mjs CHANGED
@@ -4,27 +4,37 @@ import { isFunction } from "lodash/fp";
4
4
  import { createLogger } from "@strapi/logger";
5
5
  import { Database } from "@strapi/database";
6
6
  import { hooks } from "@strapi/utils";
7
- import loadConfiguration from "./core/app-configuration/index.mjs";
7
+ import loadConfiguration from "./configuration/index.mjs";
8
8
  import * as factories from "./factories.mjs";
9
+ import { isCustomController } from "./factories.mjs";
9
10
  import compile from "./compile.mjs";
10
- import openBrowser from "./utils/open-browser.mjs";
11
- import isInitialized from "./utils/is-initialized.mjs";
12
- import getDirs from "./utils/get-dirs.mjs";
13
- import contentTypesRegistry from "./core/registries/content-types.mjs";
14
- import componentsRegistry from "./core/registries/components.mjs";
15
- import servicesRegistry from "./core/registries/services.mjs";
16
- import policiesRegistry from "./core/registries/policies.mjs";
17
- import middlewaresRegistry from "./core/registries/middlewares.mjs";
18
- import hooksRegistry from "./core/registries/hooks.mjs";
19
- import controllersRegistry from "./core/registries/controllers.mjs";
20
- import modulesRegistry from "./core/registries/modules.mjs";
21
- import pluginsRegistry from "./core/registries/plugins.mjs";
22
- import customFieldsRegistry from "./core/registries/custom-fields.mjs";
23
- import config from "./core/registries/config.mjs";
24
- import apisRegistry from "./core/registries/apis.mjs";
25
- import sanitizersRegistry from "./core/registries/sanitizers.mjs";
26
- import validatorsRegistry from "./core/registries/validators.mjs";
27
- import { loadApplicationContext } from "./core/loaders/index.mjs";
11
+ import { openBrowser } from "./utils/open-browser.mjs";
12
+ import { isInitialized } from "./utils/is-initialized.mjs";
13
+ import { getDirs } from "./utils/get-dirs.mjs";
14
+ import index from "./ee/index.mjs";
15
+ import { createUpdateNotifier } from "./utils/update-notifier/index.mjs";
16
+ import { createStrapiFetch } from "./utils/fetch.mjs";
17
+ import { convertCustomFieldType } from "./utils/convert-custom-field-type.mjs";
18
+ import { createStartupLogger } from "./utils/startup-logger.mjs";
19
+ import { transformContentTypesToModels } from "./utils/transform-content-types-to-models.mjs";
20
+ import { destroyOnSignal } from "./utils/signals.mjs";
21
+ import { LIFECYCLES } from "./utils/lifecycles.mjs";
22
+ import contentTypesRegistry from "./registries/content-types.mjs";
23
+ import componentsRegistry from "./registries/components.mjs";
24
+ import servicesRegistry from "./registries/services.mjs";
25
+ import policiesRegistry from "./registries/policies.mjs";
26
+ import middlewaresRegistry from "./registries/middlewares.mjs";
27
+ import hooksRegistry from "./registries/hooks.mjs";
28
+ import controllersRegistry from "./registries/controllers.mjs";
29
+ import modulesRegistry from "./registries/modules.mjs";
30
+ import pluginsRegistry from "./registries/plugins.mjs";
31
+ import customFieldsRegistry from "./registries/custom-fields.mjs";
32
+ import config from "./registries/config.mjs";
33
+ import apisRegistry from "./registries/apis.mjs";
34
+ import sanitizersRegistry from "./registries/sanitizers.mjs";
35
+ import validatorsRegistry from "./registries/validators.mjs";
36
+ import { registry } from "./registries/models.mjs";
37
+ import { loadApplicationContext } from "./loaders/index.mjs";
28
38
  import { Container } from "./container.mjs";
29
39
  import createStrapiFs from "./services/fs.mjs";
30
40
  import createEventHub from "./services/event-hub.mjs";
@@ -40,17 +50,10 @@ import requestCtx from "./services/request-context.mjs";
40
50
  import createAuthentication from "./services/auth/index.mjs";
41
51
  import createCustomFields from "./services/custom-fields.mjs";
42
52
  import createContentAPI from "./services/content-api/index.mjs";
43
- import createUpdateNotifier from "./utils/update-notifier/index.mjs";
44
- import createStartupLogger from "./utils/startup-logger.mjs";
45
- import { createStrapiFetch } from "./utils/fetch.mjs";
46
- import { LIFECYCLES } from "./utils/lifecycles.mjs";
47
- import EE from "./ee/index.mjs";
48
- import bootstrap from "./core/bootstrap.mjs";
49
- import { destroyOnSignal } from "./utils/signals.mjs";
50
53
  import getNumberOfDynamicZones from "./services/utils/dynamic-zones.mjs";
51
- import convertCustomFieldType from "./utils/convert-custom-field-type.mjs";
52
- import { transformContentTypesToModels } from "./utils/transform-content-types-to-models.mjs";
53
- import { createDocumentRepository } from "./services/document-service/document-repository.mjs";
54
+ import { createFeaturesService } from "./services/features.mjs";
55
+ import { createDocumentService } from "./services/document-service/index.mjs";
56
+ import { disable as disableDraftAndPublish, enable as enableDraftAndPublish } from "./migrations/draft-publish.mjs";
54
57
  const resolveWorkingDirectories = (opts) => {
55
58
  const cwd = process.cwd();
56
59
  const appDir = opts.appDir ? path.resolve(cwd, opts.appDir) : cwd;
@@ -100,6 +103,9 @@ class Strapi extends Container {
100
103
  webhookStore;
101
104
  store;
102
105
  entityValidator;
106
+ /**
107
+ * @deprecated `strapi.entityService` will be removed in the next major version
108
+ */
103
109
  entityService;
104
110
  documents;
105
111
  telemetry;
@@ -113,12 +119,15 @@ class Strapi extends Container {
113
119
  app;
114
120
  EE;
115
121
  reload;
122
+ features;
123
+ // @ts-expect-error - Assigned in constructor
124
+ ee;
116
125
  constructor(opts = {}) {
117
126
  super();
118
127
  destroyOnSignal(this);
119
128
  const rootDirs = resolveWorkingDirectories(opts);
120
129
  const appConfig = loadConfiguration(rootDirs, opts);
121
- this.add("config", config(appConfig)).add("content-types", contentTypesRegistry()).add("components", componentsRegistry()).add("services", servicesRegistry(this)).add("policies", policiesRegistry()).add("middlewares", middlewaresRegistry()).add("hooks", hooksRegistry()).add("controllers", controllersRegistry(this)).add("modules", modulesRegistry(this)).add("plugins", pluginsRegistry(this)).add("custom-fields", customFieldsRegistry(this)).add("apis", apisRegistry(this)).add("sanitizers", sanitizersRegistry()).add("validators", validatorsRegistry()).add("content-api", createContentAPI(this)).add("auth", createAuthentication());
130
+ this.add("config", config(appConfig, this)).add("content-types", contentTypesRegistry()).add("components", componentsRegistry()).add("services", servicesRegistry(this)).add("policies", policiesRegistry()).add("middlewares", middlewaresRegistry()).add("hooks", hooksRegistry()).add("controllers", controllersRegistry(this)).add("modules", modulesRegistry(this)).add("plugins", pluginsRegistry(this)).add("custom-fields", customFieldsRegistry(this)).add("apis", apisRegistry(this)).add("sanitizers", sanitizersRegistry()).add("validators", validatorsRegistry()).add("content-api", createContentAPI(this)).add("auth", createAuthentication()).add("models", registry());
122
131
  this.dirs = getDirs(rootDirs, { strapi: this });
123
132
  this.isLoaded = false;
124
133
  this.reload = reloader(this);
@@ -126,22 +135,39 @@ class Strapi extends Container {
126
135
  this.fs = createStrapiFs(this);
127
136
  this.eventHub = createEventHub();
128
137
  this.startupLogger = createStartupLogger(this);
129
- this.log = createLogger(this.config.get("logger", { level: "info" }));
138
+ const logConfig = {
139
+ level: "http",
140
+ // Strapi defaults to level 'http'
141
+ ...this.config.get("logger"),
142
+ // DEPRECATED
143
+ ...this.config.get("server.logger.config")
144
+ };
145
+ this.log = createLogger(logConfig);
130
146
  this.cron = createCronService();
131
147
  this.telemetry = createTelemetryInstance(this);
132
148
  this.requestContext = requestCtx;
133
149
  this.customFields = createCustomFields(this);
134
150
  this.fetch = createStrapiFetch(this);
151
+ this.features = createFeaturesService(this);
152
+ this.db = new Database(
153
+ _.merge(this.config.get("database"), {
154
+ settings: {
155
+ migrations: {
156
+ dir: path.join(this.dirs.app.root, "database/migrations")
157
+ }
158
+ }
159
+ })
160
+ );
135
161
  createUpdateNotifier(this).notify();
136
162
  Object.defineProperty(this, "EE", {
137
163
  get: () => {
138
- EE.init(this.dirs.app.root, this.log);
139
- return EE.isEE;
164
+ index.init(this.dirs.app.root, this.log);
165
+ return index.isEE;
140
166
  },
141
167
  configurable: false
142
168
  });
143
169
  Object.defineProperty(this, "ee", {
144
- get: () => EE,
170
+ get: () => index,
145
171
  configurable: false
146
172
  });
147
173
  }
@@ -241,11 +267,15 @@ class Strapi extends Container {
241
267
  // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.
242
268
  numberOfComponents: _.size(this.components),
243
269
  numberOfDynamicZones: getNumberOfDynamicZones(),
270
+ numberOfCustomControllers: Object.values(this.controllers).filter(
271
+ // TODO: Fix this at the content API loader level to prevent future types issues
272
+ (controller) => controller !== void 0 && isCustomController(controller)
273
+ ).length,
244
274
  environment: this.config.environment
245
275
  // TODO: to add back
246
276
  // providers: this.config.installedProviders,
247
277
  }
248
- });
278
+ }).catch(this.log.error);
249
279
  }
250
280
  async openAdmin({ isInitialized: isInitialized2 }) {
251
281
  const shouldOpenAdmin = this.config.get("environment") === "development" && this.config.get("admin.autoOpen", true) !== false;
@@ -304,10 +334,12 @@ class Strapi extends Container {
304
334
  registerInternalHooks() {
305
335
  this.get("hooks").set("strapi::content-types.beforeSync", hooks.createAsyncParallelHook());
306
336
  this.get("hooks").set("strapi::content-types.afterSync", hooks.createAsyncParallelHook());
337
+ this.hook("strapi::content-types.beforeSync").register(disableDraftAndPublish);
338
+ this.hook("strapi::content-types.afterSync").register(enableDraftAndPublish);
307
339
  }
308
340
  async register() {
309
341
  await loadApplicationContext(this);
310
- await bootstrap({ strapi: this });
342
+ this.get("models").add(coreStoreModel).add(webhookModel);
311
343
  this.webhookRunner = createWebhookRunner({
312
344
  eventHub: this.eventHub,
313
345
  logger: this.log,
@@ -321,33 +353,29 @@ class Strapi extends Container {
321
353
  return this;
322
354
  }
323
355
  async bootstrap() {
324
- const contentTypes = [
325
- coreStoreModel,
326
- webhookModel,
327
- ...Object.values(this.contentTypes),
328
- ...Object.values(this.components)
356
+ const models = [
357
+ ...transformContentTypesToModels([
358
+ ...Object.values(this.contentTypes),
359
+ ...Object.values(this.components)
360
+ ]),
361
+ ...this.get("models").get()
329
362
  ];
330
- this.db = await Database.init({
331
- ...this.config.get("database"),
332
- models: transformContentTypesToModels(contentTypes)
333
- });
363
+ await this.db.init({ models });
334
364
  this.store = createCoreStore({ db: this.db });
335
365
  this.webhookStore = createWebhookStore({ db: this.db });
336
366
  this.entityValidator = entityValidator;
337
367
  this.entityService = createEntityService({
338
368
  strapi: this,
339
- db: this.db,
340
- eventHub: this.eventHub,
341
- entityValidator: this.entityValidator
369
+ db: this.db
342
370
  });
343
- this.documents = createDocumentRepository(this);
371
+ this.documents = createDocumentService(this);
344
372
  if (this.config.get("server.cron.enabled", true)) {
345
373
  const cronTasks = this.config.get("server.cron.tasks", {});
346
374
  this.cron.add(cronTasks);
347
375
  }
348
376
  this.telemetry.bootstrap();
349
377
  let oldContentTypes;
350
- if (await this.db.getSchemaConnection().hasTable(coreStoreModel.collectionName)) {
378
+ if (await this.db.getSchemaConnection().hasTable(coreStoreModel.tableName)) {
351
379
  oldContentTypes = await this.store.get({
352
380
  type: "strapi",
353
381
  name: "content_types",
@@ -360,7 +388,7 @@ class Strapi extends Container {
360
388
  });
361
389
  await this.db.schema.sync();
362
390
  if (this.EE) {
363
- await EE.checkLicense({ strapi: this });
391
+ await index.checkLicense({ strapi: this });
364
392
  }
365
393
  await this.hook("strapi::content-types.afterSync").call({
366
394
  oldContentTypes,
@@ -415,8 +443,7 @@ class Strapi extends Container {
415
443
  }
416
444
  }
417
445
  /**
418
- * Binds queries with a specific model
419
- * @param {string} uid
446
+ * @deprecated Use `strapi.db.query` instead
420
447
  */
421
448
  query(uid) {
422
449
  return this.db.query(uid);
@@ -1 +1 @@
1
- {"version":3,"file":"Strapi.mjs","sources":["../src/Strapi.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport path from 'path';\nimport _ from 'lodash';\nimport { isFunction } from 'lodash/fp';\nimport { Logger, createLogger } from '@strapi/logger';\nimport { Database } from '@strapi/database';\nimport { hooks } from '@strapi/utils';\nimport type {\n Strapi as StrapiI,\n Server,\n EntityService,\n Documents,\n EventHub,\n StartupLogger,\n CronService,\n WebhookStore,\n CoreStore,\n TelemetryService,\n RequestContext,\n CustomFields,\n Fetch,\n StrapiFS,\n StrapiDirectories,\n Reloader,\n EntityValidator,\n Common,\n Shared,\n Schema,\n} from '@strapi/types';\n\nimport loadConfiguration from './core/app-configuration';\n\nimport * as factories from './factories';\nimport compile from './compile';\n\nimport * as utils from './utils';\nimport * as registries from './core/registries';\nimport * as loaders from './core/loaders';\nimport { Container } from './container';\nimport createStrapiFs from './services/fs';\nimport createEventHub from './services/event-hub';\nimport { createServer } from './services/server';\nimport createWebhookRunner, { WebhookRunner } from './services/webhook-runner';\nimport { webhookModel, createWebhookStore } from './services/webhook-store';\nimport { createCoreStore, coreStoreModel } from './services/core-store';\nimport createEntityService from './services/entity-service';\n\nimport createCronService from './services/cron';\nimport entityValidator from './services/entity-validator';\nimport createTelemetry from './services/metrics';\nimport requestContext from './services/request-context';\nimport createAuth from './services/auth';\nimport createCustomFields from './services/custom-fields';\nimport createContentAPI from './services/content-api';\nimport createUpdateNotifier from './utils/update-notifier';\nimport createStartupLogger from './utils/startup-logger';\nimport { createStrapiFetch } from './utils/fetch';\nimport { LIFECYCLES } from './utils/lifecycles';\nimport ee from './utils/ee';\nimport bootstrap from './core/bootstrap';\nimport { destroyOnSignal } from './utils/signals';\nimport getNumberOfDynamicZones from './services/utils/dynamic-zones';\nimport convertCustomFieldType from './utils/convert-custom-field-type';\nimport { transformContentTypesToModels } from './utils/transform-content-types-to-models';\nimport { createDocumentRepository } from './services/document-service/document-repository';\n\n/**\n * Resolve the working directories based on the instance options.\n *\n * Behavior:\n * - `appDir` is the directory where Strapi will write every file (schemas, generated APIs, controllers or services)\n * - `distDir` is the directory where Strapi will read configurations, schemas and any compiled code\n *\n * Default values:\n * - If `appDir` is `undefined`, it'll be set to `process.cwd()`\n * - If `distDir` is `undefined`, it'll be set to `appDir`\n */\nconst resolveWorkingDirectories = (opts: { appDir?: string; distDir?: string }) => {\n const cwd = process.cwd();\n\n const appDir = opts.appDir ? path.resolve(cwd, opts.appDir) : cwd;\n const distDir = opts.distDir ? path.resolve(cwd, opts.distDir) : appDir;\n\n return { app: appDir, dist: distDir };\n};\n\nconst reloader = (strapi: Strapi) => {\n const state = {\n shouldReload: 0,\n isWatching: true,\n };\n\n function reload() {\n if (state.shouldReload > 0) {\n // Reset the reloading state\n state.shouldReload -= 1;\n reload.isReloading = false;\n return;\n }\n\n if (strapi.config.get('autoReload')) {\n process.send?.('reload');\n }\n }\n\n Object.defineProperty(reload, 'isWatching', {\n configurable: true,\n enumerable: true,\n set(value) {\n // Special state when the reloader is disabled temporarly (see GraphQL plugin example).\n if (state.isWatching === false && value === true) {\n state.shouldReload += 1;\n }\n state.isWatching = value;\n },\n get() {\n return state.isWatching;\n },\n });\n\n reload.isReloading = false;\n reload.isWatching = true;\n\n return reload;\n};\n\nexport type LoadedStrapi = Required<Strapi>;\n\nclass Strapi extends Container implements StrapiI {\n server: Server;\n\n log: Logger;\n\n fs: StrapiFS;\n\n eventHub: EventHub;\n\n startupLogger: StartupLogger;\n\n cron: CronService;\n\n webhookRunner?: WebhookRunner;\n\n webhookStore?: WebhookStore;\n\n store?: CoreStore;\n\n entityValidator?: EntityValidator;\n\n entityService?: EntityService.EntityService;\n\n documents?: Documents.Repository;\n\n telemetry: TelemetryService;\n\n requestContext: RequestContext;\n\n customFields: CustomFields.CustomFields;\n\n fetch: Fetch;\n\n dirs: StrapiDirectories;\n\n admin?: Common.Module;\n\n isLoaded: boolean;\n\n db?: Database;\n\n app: any;\n\n EE?: boolean;\n\n reload: Reloader;\n\n constructor(opts: StrapiOptions = {}) {\n super();\n\n destroyOnSignal(this);\n\n const rootDirs = resolveWorkingDirectories(opts);\n\n // Load the app configuration from the dist directory\n const appConfig = loadConfiguration(rootDirs, opts);\n\n // Instantiate the Strapi container\n this.add('config', registries.config(appConfig))\n .add('content-types', registries.contentTypes())\n .add('components', registries.components())\n .add('services', registries.services(this))\n .add('policies', registries.policies())\n .add('middlewares', registries.middlewares())\n .add('hooks', registries.hooks())\n .add('controllers', registries.controllers(this))\n .add('modules', registries.modules(this))\n .add('plugins', registries.plugins(this))\n .add('custom-fields', registries.customFields(this))\n .add('apis', registries.apis(this))\n .add('sanitizers', registries.sanitizers())\n .add('validators', registries.validators())\n .add('content-api', createContentAPI(this))\n .add('auth', createAuth());\n\n // Create a mapping of every useful directory (for the app, dist and static directories)\n this.dirs = utils.getDirs(rootDirs, { strapi: this });\n\n // Strapi state management variables\n this.isLoaded = false;\n this.reload = reloader(this);\n\n // Instantiate the Koa app & the HTTP server\n this.server = createServer(this);\n\n // Strapi utils instantiation\n this.fs = createStrapiFs(this);\n this.eventHub = createEventHub();\n this.startupLogger = createStartupLogger(this);\n this.log = createLogger(this.config.get('logger', { level: 'info' }));\n this.cron = createCronService();\n this.telemetry = createTelemetry(this);\n this.requestContext = requestContext;\n this.customFields = createCustomFields(this);\n this.fetch = createStrapiFetch(this);\n\n createUpdateNotifier(this).notify();\n\n Object.defineProperty<Strapi>(this, 'EE', {\n get: () => {\n ee.init(this.dirs.app.root, this.log);\n return ee.isEE;\n },\n configurable: false,\n });\n\n Object.defineProperty<Strapi>(this, 'ee', {\n get: () => ee,\n configurable: false,\n });\n }\n\n get config() {\n return this.get('config');\n }\n\n get services() {\n return this.get('services').getAll();\n }\n\n service(uid: Common.UID.Service) {\n return this.get('services').get(uid);\n }\n\n get controllers() {\n return this.get('controllers').getAll();\n }\n\n controller(uid: Common.UID.Controller) {\n return this.get('controllers').get(uid);\n }\n\n get contentTypes(): Shared.ContentTypes {\n return this.get('content-types').getAll();\n }\n\n contentType(name: Common.UID.ContentType) {\n return this.get('content-types').get(name);\n }\n\n get components(): Shared.Components {\n return this.get('components').getAll();\n }\n\n get policies() {\n return this.get('policies').getAll();\n }\n\n policy(name: string) {\n return this.get('policies').get(name);\n }\n\n get middlewares() {\n return this.get('middlewares').getAll();\n }\n\n middleware(name: string) {\n return this.get('middlewares').get(name);\n }\n\n get plugins(): Record<string, Common.Plugin> {\n return this.get('plugins').getAll();\n }\n\n plugin(name: string): Common.Plugin {\n return this.get('plugins').get(name);\n }\n\n get hooks() {\n return this.get('hooks').getAll();\n }\n\n hook(name: string) {\n return this.get('hooks').get(name);\n }\n\n // api(name) {\n // return this.get('apis').get(name);\n // }\n\n get api(): Record<string, Common.Module> {\n return this.get('apis').getAll();\n }\n\n get auth() {\n return this.get('auth');\n }\n\n get contentAPI() {\n return this.get('content-api');\n }\n\n get sanitizers() {\n return this.get('sanitizers');\n }\n\n get validators() {\n return this.get('validators');\n }\n\n async start() {\n try {\n if (!this.isLoaded) {\n await this.load();\n }\n\n await this.listen();\n\n return this;\n } catch (error) {\n return this.stopWithError(error);\n }\n }\n\n async destroy() {\n await this.server.destroy();\n await this.runLifecyclesFunctions(LIFECYCLES.DESTROY);\n\n this.eventHub.destroy();\n\n await this.db?.destroy();\n\n this.telemetry.destroy();\n this.cron.destroy();\n\n process.removeAllListeners();\n\n // @ts-expect-error: Allow clean delete of global.strapi to allow re-instanciation\n delete global.strapi;\n }\n\n sendStartupTelemetry() {\n // Emit started event.\n // do not await to avoid slower startup\n // This event is anonymous\n this.telemetry.send('didStartServer', {\n groupProperties: {\n database: this.config.get('database.connection.client'),\n plugins: Object.keys(this.plugins),\n numberOfAllContentTypes: _.size(this.contentTypes), // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents: _.size(this.components),\n numberOfDynamicZones: getNumberOfDynamicZones(),\n environment: this.config.environment,\n // TODO: to add back\n // providers: this.config.installedProviders,\n },\n });\n }\n\n async openAdmin({ isInitialized }: { isInitialized: boolean }) {\n const shouldOpenAdmin =\n this.config.get('environment') === 'development' &&\n this.config.get('admin.autoOpen', true) !== false;\n\n if (shouldOpenAdmin && !isInitialized) {\n try {\n await utils.openBrowser(this.config);\n this.telemetry.send('didOpenTab');\n } catch (e) {\n this.telemetry.send('didNotOpenTab');\n }\n }\n }\n\n async postListen() {\n const isInitialized = await utils.isInitialized(this);\n\n this.startupLogger.logStartupMessage({ isInitialized });\n\n this.sendStartupTelemetry();\n this.openAdmin({ isInitialized });\n }\n\n /**\n * Add behaviors to the server\n */\n async listen() {\n return new Promise<void>((resolve, reject) => {\n const onListen = async () => {\n try {\n await this.postListen();\n\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n\n const listenSocket = this.config.get('server.socket');\n\n if (listenSocket) {\n this.server.listen(listenSocket, onListen);\n } else {\n const { host, port } = this.config.get('server');\n\n this.server.listen(port, host, onListen);\n }\n });\n }\n\n stopWithError(err: unknown, customMessage?: string): never {\n this.log.debug(`⛔️ Server wasn't able to start properly.`);\n if (customMessage) {\n this.log.error(customMessage);\n }\n\n this.log.error(err);\n return this.stop();\n }\n\n stop(exitCode = 1): never {\n this.destroy();\n\n if (this.config.get('autoReload')) {\n process.send?.('stop');\n }\n\n // Kill process\n process.exit(exitCode);\n }\n\n registerInternalHooks() {\n this.get('hooks').set('strapi::content-types.beforeSync', hooks.createAsyncParallelHook());\n this.get('hooks').set('strapi::content-types.afterSync', hooks.createAsyncParallelHook());\n }\n\n async register() {\n await loaders.loadApplicationContext(this);\n\n await bootstrap({ strapi: this });\n\n // init webhook runner\n this.webhookRunner = createWebhookRunner({\n eventHub: this.eventHub,\n logger: this.log,\n configuration: this.config.get('server.webhooks', {}),\n fetch: this.fetch,\n });\n\n this.registerInternalHooks();\n\n this.telemetry.register();\n\n await this.runLifecyclesFunctions(LIFECYCLES.REGISTER);\n // NOTE: Swap type customField for underlying data type\n convertCustomFieldType(this);\n\n return this;\n }\n\n async bootstrap() {\n const contentTypes = [\n coreStoreModel,\n webhookModel,\n ...Object.values(this.contentTypes),\n ...Object.values(this.components),\n ];\n\n this.db = await Database.init({\n ...this.config.get('database'),\n models: transformContentTypesToModels(contentTypes),\n });\n\n this.store = createCoreStore({ db: this.db });\n this.webhookStore = createWebhookStore({ db: this.db });\n\n this.entityValidator = entityValidator;\n this.entityService = createEntityService({\n strapi: this,\n db: this.db,\n eventHub: this.eventHub,\n entityValidator: this.entityValidator,\n });\n\n this.documents = createDocumentRepository(this);\n\n if (this.config.get('server.cron.enabled', true)) {\n const cronTasks = this.config.get('server.cron.tasks', {});\n this.cron.add(cronTasks);\n }\n\n this.telemetry.bootstrap();\n\n let oldContentTypes;\n if (await this.db.getSchemaConnection().hasTable(coreStoreModel.collectionName)) {\n oldContentTypes = await this.store.get({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n });\n }\n\n await this.hook('strapi::content-types.beforeSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.db.schema.sync();\n\n if (this.EE) {\n await ee.checkLicense({ strapi: this });\n }\n\n await this.hook('strapi::content-types.afterSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.store.set({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n value: this.contentTypes,\n });\n\n await this.startWebhooks();\n\n await this.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runLifecyclesFunctions(LIFECYCLES.BOOTSTRAP);\n\n this.cron.start();\n\n return this;\n }\n\n async load() {\n await this.register();\n await this.bootstrap();\n\n this.isLoaded = true;\n\n return this as this & Required<StrapiI>;\n }\n\n async startWebhooks() {\n const webhooks = await this.webhookStore?.findWebhooks();\n if (!webhooks) {\n return;\n }\n\n for (const webhook of webhooks) {\n this.webhookRunner?.add(webhook);\n }\n }\n\n async runLifecyclesFunctions(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n\n // admin\n const adminLifecycleFunction = this.admin && this.admin[lifecycleName];\n if (isFunction(adminLifecycleFunction)) {\n await adminLifecycleFunction({ strapi: this });\n }\n\n // user\n const userLifecycleFunction = this.app && this.app[lifecycleName];\n if (isFunction(userLifecycleFunction)) {\n await userLifecycleFunction({ strapi: this });\n }\n }\n\n getModel(uid: Common.UID.ContentType): Schema.ContentType;\n getModel(uid: Common.UID.Component): Schema.Component;\n getModel<TUID extends Common.UID.Schema>(\n uid: TUID\n ): Schema.ContentType | Schema.Component | undefined {\n if (uid in this.contentTypes) {\n return this.contentTypes[uid as Common.UID.ContentType];\n }\n\n if (uid in this.components) {\n return this.components[uid as Common.UID.Component];\n }\n }\n\n /**\n * Binds queries with a specific model\n * @param {string} uid\n */\n query(uid: Common.UID.Schema) {\n return this.db!.query(uid);\n }\n}\n\ninterface StrapiOptions {\n appDir?: string;\n distDir?: string;\n autoReload?: boolean;\n serveAdminPanel?: boolean;\n}\n\ninterface Init {\n (options?: StrapiOptions): StrapiI;\n factories: typeof factories;\n compile: typeof compile;\n}\n\nconst initFn = (options: StrapiOptions = {}): StrapiI => {\n const strapi = new Strapi(options);\n global.strapi = strapi as LoadedStrapi;\n return strapi;\n};\n\nconst init: Init = Object.assign(initFn, { factories, compile });\n\nexport default init;\n"],"names":["registries.config","registries.contentTypes","registries.components","registries.services","registries.policies","registries.middlewares","registries.hooks","registries.controllers","registries.modules","registries.plugins","registries.customFields","registries.apis","registries.sanitizers","registries.validators","createAuth","utils.getDirs","createTelemetry","requestContext","ee","isInitialized","utils.openBrowser","utils.isInitialized","loaders.loadApplicationContext"],"mappings":"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"}
1
+ {"version":3,"file":"Strapi.mjs","sources":["../src/Strapi.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-namespace */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport path from 'path';\nimport _ from 'lodash';\nimport { isFunction } from 'lodash/fp';\nimport { Logger, createLogger } from '@strapi/logger';\nimport { Database } from '@strapi/database';\nimport { hooks } from '@strapi/utils';\nimport type {\n Strapi as StrapiI,\n Server,\n EntityService,\n Documents,\n EventHub,\n StartupLogger,\n CronService,\n WebhookStore,\n CoreStore,\n TelemetryService,\n RequestContext,\n CustomFields,\n Fetch,\n StrapiFS,\n StrapiDirectories,\n Reloader,\n EntityValidator,\n Common,\n Shared,\n Schema,\n} from '@strapi/types';\n\nimport loadConfiguration from './configuration';\n\nimport * as factories from './factories';\nimport compile from './compile';\n\nimport * as utils from './utils';\nimport * as registries from './registries';\nimport * as loaders from './loaders';\nimport { Container } from './container';\nimport createStrapiFs from './services/fs';\nimport createEventHub from './services/event-hub';\nimport { createServer } from './services/server';\nimport createWebhookRunner, { WebhookRunner } from './services/webhook-runner';\nimport { webhookModel, createWebhookStore } from './services/webhook-store';\nimport { createCoreStore, coreStoreModel } from './services/core-store';\nimport createEntityService from './services/entity-service';\n\nimport createCronService from './services/cron';\nimport entityValidator from './services/entity-validator';\nimport createTelemetry from './services/metrics';\nimport requestContext from './services/request-context';\nimport createAuth from './services/auth';\nimport createCustomFields from './services/custom-fields';\nimport createContentAPI from './services/content-api';\nimport getNumberOfDynamicZones from './services/utils/dynamic-zones';\nimport { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\n\n// TODO: move somewhere else\nimport * as draftAndPublishSync from './migrations/draft-publish';\n\n/**\n * Resolve the working directories based on the instance options.\n *\n * Behavior:\n * - `appDir` is the directory where Strapi will write every file (schemas, generated APIs, controllers or services)\n * - `distDir` is the directory where Strapi will read configurations, schemas and any compiled code\n *\n * Default values:\n * - If `appDir` is `undefined`, it'll be set to `process.cwd()`\n * - If `distDir` is `undefined`, it'll be set to `appDir`\n */\nconst resolveWorkingDirectories = (opts: { appDir?: string; distDir?: string }) => {\n const cwd = process.cwd();\n\n const appDir = opts.appDir ? path.resolve(cwd, opts.appDir) : cwd;\n const distDir = opts.distDir ? path.resolve(cwd, opts.distDir) : appDir;\n\n return { app: appDir, dist: distDir };\n};\n\nconst reloader = (strapi: Strapi) => {\n const state = {\n shouldReload: 0,\n isWatching: true,\n };\n\n function reload() {\n if (state.shouldReload > 0) {\n // Reset the reloading state\n state.shouldReload -= 1;\n reload.isReloading = false;\n return;\n }\n\n if (strapi.config.get('autoReload')) {\n process.send?.('reload');\n }\n }\n\n Object.defineProperty(reload, 'isWatching', {\n configurable: true,\n enumerable: true,\n set(value) {\n // Special state when the reloader is disabled temporarly (see GraphQL plugin example).\n if (state.isWatching === false && value === true) {\n state.shouldReload += 1;\n }\n state.isWatching = value;\n },\n get() {\n return state.isWatching;\n },\n });\n\n reload.isReloading = false;\n reload.isWatching = true;\n\n return reload;\n};\n\nexport type LoadedStrapi = Required<Strapi>;\n\nclass Strapi extends Container implements StrapiI {\n server: Server;\n\n log: Logger;\n\n fs: StrapiFS;\n\n eventHub: EventHub;\n\n startupLogger: StartupLogger;\n\n cron: CronService;\n\n webhookRunner?: WebhookRunner;\n\n webhookStore?: WebhookStore;\n\n store?: CoreStore;\n\n entityValidator?: EntityValidator;\n\n /**\n * @deprecated `strapi.entityService` will be removed in the next major version\n */\n entityService?: EntityService.EntityService;\n\n documents?: Documents.Service;\n\n telemetry: TelemetryService;\n\n requestContext: RequestContext;\n\n customFields: CustomFields.CustomFields;\n\n fetch: Fetch;\n\n dirs: StrapiDirectories;\n\n admin?: Common.Module;\n\n isLoaded: boolean;\n\n db: Database;\n\n app: any;\n\n EE?: boolean;\n\n reload: Reloader;\n\n features: FeaturesService;\n\n // @ts-expect-error - Assigned in constructor\n ee: StrapiI['ee'];\n\n constructor(opts: StrapiOptions = {}) {\n super();\n\n utils.destroyOnSignal(this);\n\n const rootDirs = resolveWorkingDirectories(opts);\n\n // Load the app configuration from the dist directory\n const appConfig = loadConfiguration(rootDirs, opts);\n\n // Instantiate the Strapi container\n this.add('config', registries.config(appConfig, this))\n .add('content-types', registries.contentTypes())\n .add('components', registries.components())\n .add('services', registries.services(this))\n .add('policies', registries.policies())\n .add('middlewares', registries.middlewares())\n .add('hooks', registries.hooks())\n .add('controllers', registries.controllers(this))\n .add('modules', registries.modules(this))\n .add('plugins', registries.plugins(this))\n .add('custom-fields', registries.customFields(this))\n .add('apis', registries.apis(this))\n .add('sanitizers', registries.sanitizers())\n .add('validators', registries.validators())\n .add('content-api', createContentAPI(this))\n .add('auth', createAuth())\n .add('models', registries.models());\n\n // Create a mapping of every useful directory (for the app, dist and static directories)\n this.dirs = utils.getDirs(rootDirs, { strapi: this });\n\n // Strapi state management variables\n this.isLoaded = false;\n this.reload = reloader(this);\n\n // Instantiate the Koa app & the HTTP server\n this.server = createServer(this);\n\n // Strapi utils instantiation\n this.fs = createStrapiFs(this);\n this.eventHub = createEventHub();\n this.startupLogger = utils.createStartupLogger(this);\n\n const logConfig = {\n level: 'http', // Strapi defaults to level 'http'\n ...this.config.get('logger'), // DEPRECATED\n ...this.config.get('server.logger.config'),\n };\n\n this.log = createLogger(logConfig);\n this.cron = createCronService();\n this.telemetry = createTelemetry(this);\n this.requestContext = requestContext;\n this.customFields = createCustomFields(this);\n this.fetch = utils.createStrapiFetch(this);\n this.features = createFeaturesService(this);\n this.db = new Database(\n _.merge(this.config.get('database'), {\n settings: {\n migrations: {\n dir: path.join(this.dirs.app.root, 'database/migrations'),\n },\n },\n })\n );\n\n utils.createUpdateNotifier(this).notify();\n\n Object.defineProperty<Strapi>(this, 'EE', {\n get: () => {\n utils.ee.init(this.dirs.app.root, this.log);\n return utils.ee.isEE;\n },\n configurable: false,\n });\n\n Object.defineProperty<Strapi>(this, 'ee', {\n get: () => utils.ee,\n configurable: false,\n });\n }\n\n get config() {\n return this.get('config');\n }\n\n get services() {\n return this.get('services').getAll();\n }\n\n service(uid: Common.UID.Service) {\n return this.get('services').get(uid);\n }\n\n get controllers() {\n return this.get('controllers').getAll();\n }\n\n controller(uid: Common.UID.Controller) {\n return this.get('controllers').get(uid);\n }\n\n get contentTypes(): Shared.ContentTypes {\n return this.get('content-types').getAll();\n }\n\n contentType(name: Common.UID.ContentType) {\n return this.get('content-types').get(name);\n }\n\n get components(): Shared.Components {\n return this.get('components').getAll();\n }\n\n get policies() {\n return this.get('policies').getAll();\n }\n\n policy(name: string) {\n return this.get('policies').get(name);\n }\n\n get middlewares() {\n return this.get('middlewares').getAll();\n }\n\n middleware(name: string) {\n return this.get('middlewares').get(name);\n }\n\n get plugins(): Record<string, Common.Plugin> {\n return this.get('plugins').getAll();\n }\n\n plugin(name: string): Common.Plugin {\n return this.get('plugins').get(name);\n }\n\n get hooks() {\n return this.get('hooks').getAll();\n }\n\n hook(name: string) {\n return this.get('hooks').get(name);\n }\n\n // api(name) {\n // return this.get('apis').get(name);\n // }\n\n get api(): Record<string, Common.Module> {\n return this.get('apis').getAll();\n }\n\n get auth() {\n return this.get('auth');\n }\n\n get contentAPI() {\n return this.get('content-api');\n }\n\n get sanitizers() {\n return this.get('sanitizers');\n }\n\n get validators() {\n return this.get('validators');\n }\n\n async start() {\n try {\n if (!this.isLoaded) {\n await this.load();\n }\n\n await this.listen();\n\n return this;\n } catch (error) {\n return this.stopWithError(error);\n }\n }\n\n async destroy() {\n await this.server.destroy();\n await this.runLifecyclesFunctions(utils.LIFECYCLES.DESTROY);\n\n this.eventHub.destroy();\n\n await this.db?.destroy();\n\n this.telemetry.destroy();\n this.cron.destroy();\n\n process.removeAllListeners();\n\n // @ts-expect-error: Allow clean delete of global.strapi to allow re-instanciation\n delete global.strapi;\n }\n\n sendStartupTelemetry() {\n // Emit started event.\n // do not await to avoid slower startup\n // This event is anonymous\n this.telemetry\n .send('didStartServer', {\n groupProperties: {\n database: this.config.get('database.connection.client'),\n plugins: Object.keys(this.plugins),\n numberOfAllContentTypes: _.size(this.contentTypes), // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents: _.size(this.components),\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfCustomControllers: Object.values<Common.Controller>(this.controllers).filter(\n // TODO: Fix this at the content API loader level to prevent future types issues\n (controller) => controller !== undefined && factories.isCustomController(controller)\n ).length,\n environment: this.config.environment,\n // TODO: to add back\n // providers: this.config.installedProviders,\n },\n })\n .catch(this.log.error);\n }\n\n async openAdmin({ isInitialized }: { isInitialized: boolean }) {\n const shouldOpenAdmin =\n this.config.get('environment') === 'development' &&\n this.config.get('admin.autoOpen', true) !== false;\n\n if (shouldOpenAdmin && !isInitialized) {\n try {\n await utils.openBrowser(this.config);\n this.telemetry.send('didOpenTab');\n } catch (e) {\n this.telemetry.send('didNotOpenTab');\n }\n }\n }\n\n async postListen() {\n const isInitialized = await utils.isInitialized(this);\n\n this.startupLogger.logStartupMessage({ isInitialized });\n\n this.sendStartupTelemetry();\n this.openAdmin({ isInitialized });\n }\n\n /**\n * Add behaviors to the server\n */\n async listen() {\n return new Promise<void>((resolve, reject) => {\n const onListen = async () => {\n try {\n await this.postListen();\n\n resolve();\n } catch (error) {\n reject(error);\n }\n };\n\n const listenSocket = this.config.get('server.socket');\n\n if (listenSocket) {\n this.server.listen(listenSocket, onListen);\n } else {\n const { host, port } = this.config.get('server');\n\n this.server.listen(port, host, onListen);\n }\n });\n }\n\n stopWithError(err: unknown, customMessage?: string): never {\n this.log.debug(`⛔️ Server wasn't able to start properly.`);\n if (customMessage) {\n this.log.error(customMessage);\n }\n\n this.log.error(err);\n return this.stop();\n }\n\n stop(exitCode = 1): never {\n this.destroy();\n\n if (this.config.get('autoReload')) {\n process.send?.('stop');\n }\n\n // Kill process\n process.exit(exitCode);\n }\n\n registerInternalHooks() {\n this.get('hooks').set('strapi::content-types.beforeSync', hooks.createAsyncParallelHook());\n this.get('hooks').set('strapi::content-types.afterSync', hooks.createAsyncParallelHook());\n\n this.hook('strapi::content-types.beforeSync').register(draftAndPublishSync.disable);\n this.hook('strapi::content-types.afterSync').register(draftAndPublishSync.enable);\n }\n\n async register() {\n await loaders.loadApplicationContext(this);\n\n this.get('models').add(coreStoreModel).add(webhookModel);\n\n // init webhook runner\n this.webhookRunner = createWebhookRunner({\n eventHub: this.eventHub,\n logger: this.log,\n configuration: this.config.get('server.webhooks', {}),\n fetch: this.fetch,\n });\n\n this.registerInternalHooks();\n\n this.telemetry.register();\n\n await this.runLifecyclesFunctions(utils.LIFECYCLES.REGISTER);\n // NOTE: Swap type customField for underlying data type\n utils.convertCustomFieldType(this);\n\n return this;\n }\n\n async bootstrap() {\n const models = [\n ...utils.transformContentTypesToModels([\n ...Object.values(this.contentTypes),\n ...Object.values(this.components),\n ]),\n ...this.get('models').get(),\n ];\n\n await this.db.init({ models });\n\n this.store = createCoreStore({ db: this.db });\n this.webhookStore = createWebhookStore({ db: this.db });\n\n this.entityValidator = entityValidator;\n this.entityService = createEntityService({\n strapi: this,\n db: this.db,\n });\n\n this.documents = createDocumentService(this);\n\n if (this.config.get('server.cron.enabled', true)) {\n const cronTasks = this.config.get('server.cron.tasks', {});\n this.cron.add(cronTasks);\n }\n\n this.telemetry.bootstrap();\n\n let oldContentTypes;\n if (await this.db.getSchemaConnection().hasTable(coreStoreModel.tableName)) {\n oldContentTypes = await this.store.get({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n });\n }\n\n await this.hook('strapi::content-types.beforeSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.db.schema.sync();\n\n if (this.EE) {\n await utils.ee.checkLicense({ strapi: this });\n }\n\n await this.hook('strapi::content-types.afterSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.store.set({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n value: this.contentTypes,\n });\n\n await this.startWebhooks();\n\n await this.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runLifecyclesFunctions(utils.LIFECYCLES.BOOTSTRAP);\n\n this.cron.start();\n\n return this;\n }\n\n async load() {\n await this.register();\n await this.bootstrap();\n\n this.isLoaded = true;\n\n return this as this & Required<StrapiI>;\n }\n\n async startWebhooks() {\n const webhooks = await this.webhookStore?.findWebhooks();\n if (!webhooks) {\n return;\n }\n\n for (const webhook of webhooks) {\n this.webhookRunner?.add(webhook);\n }\n }\n\n async runLifecyclesFunctions(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n\n // admin\n const adminLifecycleFunction = this.admin && this.admin[lifecycleName];\n if (isFunction(adminLifecycleFunction)) {\n await adminLifecycleFunction({ strapi: this });\n }\n\n // user\n const userLifecycleFunction = this.app && this.app[lifecycleName];\n if (isFunction(userLifecycleFunction)) {\n await userLifecycleFunction({ strapi: this });\n }\n }\n\n getModel(uid: Common.UID.ContentType): Schema.ContentType;\n getModel(uid: Common.UID.Component): Schema.Component;\n getModel<TUID extends Common.UID.Schema>(\n uid: TUID\n ): Schema.ContentType | Schema.Component | undefined {\n if (uid in this.contentTypes) {\n return this.contentTypes[uid as Common.UID.ContentType];\n }\n\n if (uid in this.components) {\n return this.components[uid as Common.UID.Component];\n }\n }\n\n /**\n * @deprecated Use `strapi.db.query` instead\n */\n query(uid: Common.UID.Schema) {\n return this.db.query(uid);\n }\n}\n\ninterface StrapiOptions {\n appDir?: string;\n distDir?: string;\n autoReload?: boolean;\n serveAdminPanel?: boolean;\n}\n\ninterface Init {\n (options?: StrapiOptions): StrapiI;\n factories: typeof factories;\n compile: typeof compile;\n}\n\nconst initFn = (options: StrapiOptions = {}): StrapiI => {\n const strapi = new Strapi(options);\n global.strapi = strapi as LoadedStrapi;\n return strapi;\n};\n\nconst init: Init = Object.assign(initFn, { factories, compile });\n\nexport default init;\n"],"names":["utils.destroyOnSignal","registries.config","registries.contentTypes","registries.components","registries.services","registries.policies","registries.middlewares","registries.hooks","registries.controllers","registries.modules","registries.plugins","registries.customFields","registries.apis","registries.sanitizers","registries.validators","createAuth","registries.models","utils.getDirs","utils.createStartupLogger","createTelemetry","requestContext","utils.createStrapiFetch","utils.createUpdateNotifier","utils.ee","utils.LIFECYCLES","factories.isCustomController","isInitialized","utils.openBrowser","utils.isInitialized","draftAndPublishSync.disable","draftAndPublishSync.enable","loaders.loadApplicationContext","utils.convertCustomFieldType","utils.transformContentTypesToModels"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/configuration/config-loader.ts"],"names":[],"mappings":"8BA0DqB,MAAM;AAA3B,wBAiFE"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ const path = require("path");
3
+ const fs = require("fs");
4
+ const loadConfigFile = require("../utils/load-config-file.js");
5
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
6
+ const path__default = /* @__PURE__ */ _interopDefault(path);
7
+ const fs__default = /* @__PURE__ */ _interopDefault(fs);
8
+ const VALID_EXTENSIONS = [".js", ".json"];
9
+ const MISTAKEN_FILENAMES = {
10
+ middleware: "middlewares",
11
+ plugin: "plugins"
12
+ };
13
+ const RESTRICTED_FILENAMES = [
14
+ // existing env vars
15
+ "uuid",
16
+ "hosting",
17
+ "license",
18
+ "enforce",
19
+ "disable",
20
+ "enable",
21
+ "telemetry",
22
+ // reserved for future internal use
23
+ "strapi",
24
+ "internal",
25
+ // root level config options
26
+ // TODO: it would be better to move these out of the root config and allow them to be loaded
27
+ "launchedAt",
28
+ "serveAdminPanel",
29
+ "autoReload",
30
+ "environment",
31
+ "packageJsonStrapi",
32
+ "info",
33
+ "autoReload",
34
+ // probably mistaken/typo filenames
35
+ ...Object.keys(MISTAKEN_FILENAMES)
36
+ ];
37
+ const STRAPI_CONFIG_FILENAMES = [
38
+ "admin",
39
+ "server",
40
+ "api",
41
+ "database",
42
+ "middlewares",
43
+ "plugins",
44
+ "features"
45
+ ];
46
+ const logWarning = (message) => {
47
+ console.warn(message);
48
+ };
49
+ const loadConfigDir = (dir) => {
50
+ if (!fs__default.default.existsSync(dir))
51
+ return {};
52
+ const allFiles = fs__default.default.readdirSync(dir, { withFileTypes: true });
53
+ const seenFilenames = /* @__PURE__ */ new Set();
54
+ const configFiles = allFiles.reduce((acc, file) => {
55
+ const baseName = path__default.default.basename(file.name, path__default.default.extname(file.name));
56
+ const baseNameLower = baseName.toLowerCase();
57
+ const extension = path__default.default.extname(file.name);
58
+ const extensionLower = extension.toLowerCase();
59
+ if (!file.isFile()) {
60
+ return acc;
61
+ }
62
+ if (!VALID_EXTENSIONS.includes(extensionLower)) {
63
+ logWarning(
64
+ `Config file not loaded, extension must be one of ${VALID_EXTENSIONS.join(",")}): ${file.name}`
65
+ );
66
+ return acc;
67
+ }
68
+ if (RESTRICTED_FILENAMES.includes(baseNameLower)) {
69
+ logWarning(`Config file not loaded, restricted filename: ${file.name}`);
70
+ if (baseNameLower in MISTAKEN_FILENAMES) {
71
+ console.log(
72
+ `Did you mean ${MISTAKEN_FILENAMES[baseNameLower]}]} ?`
73
+ );
74
+ }
75
+ return acc;
76
+ }
77
+ const restrictedPrefix = [...RESTRICTED_FILENAMES, ...STRAPI_CONFIG_FILENAMES].find(
78
+ (restrictedName) => restrictedName.startsWith(baseNameLower) && restrictedName !== baseNameLower
79
+ );
80
+ if (restrictedPrefix) {
81
+ logWarning(
82
+ `Config file not loaded, filename cannot start with ${restrictedPrefix}: ${file.name}`
83
+ );
84
+ }
85
+ if (seenFilenames.has(baseNameLower)) {
86
+ logWarning(
87
+ `Config file not loaded, case-insensitive name matches other config file: ${file.name}`
88
+ );
89
+ return acc;
90
+ }
91
+ seenFilenames.add(baseNameLower);
92
+ acc.push(file);
93
+ return acc;
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
+ }, {});
100
+ };
101
+ module.exports = loadConfigDir;
102
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +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;;"}
@@ -0,0 +1,100 @@
1
+ import path from "path";
2
+ import fs from "fs";
3
+ import { loadConfigFile } from "../utils/load-config-file.mjs";
4
+ const VALID_EXTENSIONS = [".js", ".json"];
5
+ const MISTAKEN_FILENAMES = {
6
+ middleware: "middlewares",
7
+ plugin: "plugins"
8
+ };
9
+ const RESTRICTED_FILENAMES = [
10
+ // existing env vars
11
+ "uuid",
12
+ "hosting",
13
+ "license",
14
+ "enforce",
15
+ "disable",
16
+ "enable",
17
+ "telemetry",
18
+ // reserved for future internal use
19
+ "strapi",
20
+ "internal",
21
+ // root level config options
22
+ // TODO: it would be better to move these out of the root config and allow them to be loaded
23
+ "launchedAt",
24
+ "serveAdminPanel",
25
+ "autoReload",
26
+ "environment",
27
+ "packageJsonStrapi",
28
+ "info",
29
+ "autoReload",
30
+ // probably mistaken/typo filenames
31
+ ...Object.keys(MISTAKEN_FILENAMES)
32
+ ];
33
+ const STRAPI_CONFIG_FILENAMES = [
34
+ "admin",
35
+ "server",
36
+ "api",
37
+ "database",
38
+ "middlewares",
39
+ "plugins",
40
+ "features"
41
+ ];
42
+ const logWarning = (message) => {
43
+ console.warn(message);
44
+ };
45
+ const loadConfigDir = (dir) => {
46
+ if (!fs.existsSync(dir))
47
+ return {};
48
+ const allFiles = fs.readdirSync(dir, { withFileTypes: true });
49
+ const seenFilenames = /* @__PURE__ */ new Set();
50
+ const configFiles = allFiles.reduce((acc, file) => {
51
+ const baseName = path.basename(file.name, path.extname(file.name));
52
+ const baseNameLower = baseName.toLowerCase();
53
+ const extension = path.extname(file.name);
54
+ const extensionLower = extension.toLowerCase();
55
+ if (!file.isFile()) {
56
+ return acc;
57
+ }
58
+ if (!VALID_EXTENSIONS.includes(extensionLower)) {
59
+ logWarning(
60
+ `Config file not loaded, extension must be one of ${VALID_EXTENSIONS.join(",")}): ${file.name}`
61
+ );
62
+ return acc;
63
+ }
64
+ if (RESTRICTED_FILENAMES.includes(baseNameLower)) {
65
+ logWarning(`Config file not loaded, restricted filename: ${file.name}`);
66
+ if (baseNameLower in MISTAKEN_FILENAMES) {
67
+ console.log(
68
+ `Did you mean ${MISTAKEN_FILENAMES[baseNameLower]}]} ?`
69
+ );
70
+ }
71
+ return acc;
72
+ }
73
+ const restrictedPrefix = [...RESTRICTED_FILENAMES, ...STRAPI_CONFIG_FILENAMES].find(
74
+ (restrictedName) => restrictedName.startsWith(baseNameLower) && restrictedName !== baseNameLower
75
+ );
76
+ if (restrictedPrefix) {
77
+ logWarning(
78
+ `Config file not loaded, filename cannot start with ${restrictedPrefix}: ${file.name}`
79
+ );
80
+ }
81
+ if (seenFilenames.has(baseNameLower)) {
82
+ logWarning(
83
+ `Config file not loaded, case-insensitive name matches other config file: ${file.name}`
84
+ );
85
+ return acc;
86
+ }
87
+ seenFilenames.add(baseNameLower);
88
+ acc.push(file);
89
+ return acc;
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
+ }, {});
96
+ };
97
+ export {
98
+ loadConfigDir as default
99
+ };
100
+ //# sourceMappingURL=config-loader.mjs.map
@@ -0,0 +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;"}