@strapi/core 5.56.0 → 5.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. package/dist/Strapi.d.ts +29 -0
  2. package/dist/Strapi.d.ts.map +1 -1
  3. package/dist/Strapi.js +10 -3
  4. package/dist/Strapi.js.map +1 -1
  5. package/dist/Strapi.mjs +10 -3
  6. package/dist/Strapi.mjs.map +1 -1
  7. package/dist/configuration/get-dirs.js +2 -2
  8. package/dist/configuration/get-dirs.js.map +1 -1
  9. package/dist/configuration/get-dirs.mjs +2 -2
  10. package/dist/configuration/get-dirs.mjs.map +1 -1
  11. package/dist/configuration/index.d.ts +1 -2
  12. package/dist/configuration/index.d.ts.map +1 -1
  13. package/dist/configuration/index.js +1 -2
  14. package/dist/configuration/index.js.map +1 -1
  15. package/dist/configuration/index.mjs +2 -3
  16. package/dist/configuration/index.mjs.map +1 -1
  17. package/dist/core-api/controller/collection-type.js +3 -3
  18. package/dist/core-api/controller/collection-type.js.map +1 -1
  19. package/dist/core-api/controller/collection-type.mjs +1 -1
  20. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  21. package/dist/core-api/controller/index.js +2 -2
  22. package/dist/core-api/controller/index.js.map +1 -1
  23. package/dist/core-api/controller/index.mjs +2 -2
  24. package/dist/core-api/controller/index.mjs.map +1 -1
  25. package/dist/core-api/controller/single-type.js +2 -2
  26. package/dist/core-api/controller/single-type.js.map +1 -1
  27. package/dist/core-api/controller/single-type.mjs +1 -1
  28. package/dist/core-api/controller/single-type.mjs.map +1 -1
  29. package/dist/core-api/controller/transform.d.ts +1 -4
  30. package/dist/core-api/controller/transform.d.ts.map +1 -1
  31. package/dist/core-api/controller/transform.js +8 -8
  32. package/dist/core-api/controller/transform.js.map +1 -1
  33. package/dist/core-api/controller/transform.mjs +5 -5
  34. package/dist/core-api/controller/transform.mjs.map +1 -1
  35. package/dist/core-api/routes/index.js +1 -1
  36. package/dist/core-api/routes/index.js.map +1 -1
  37. package/dist/core-api/routes/index.mjs +1 -1
  38. package/dist/core-api/routes/index.mjs.map +1 -1
  39. package/dist/core-api/service/pagination.js +9 -9
  40. package/dist/core-api/service/pagination.js.map +1 -1
  41. package/dist/core-api/service/pagination.mjs +7 -7
  42. package/dist/core-api/service/pagination.mjs.map +1 -1
  43. package/dist/domain/content-type/index.d.ts.map +1 -1
  44. package/dist/domain/content-type/index.js +1 -2
  45. package/dist/domain/content-type/index.js.map +1 -1
  46. package/dist/domain/content-type/index.mjs +1 -2
  47. package/dist/domain/content-type/index.mjs.map +1 -1
  48. package/dist/ee/entitlements.d.ts +44 -0
  49. package/dist/ee/entitlements.d.ts.map +1 -0
  50. package/dist/ee/entitlements.js +54 -0
  51. package/dist/ee/entitlements.js.map +1 -0
  52. package/dist/ee/entitlements.mjs +51 -0
  53. package/dist/ee/entitlements.mjs.map +1 -0
  54. package/dist/ee/index.d.ts +33 -0
  55. package/dist/ee/index.d.ts.map +1 -1
  56. package/dist/ee/index.js +74 -7
  57. package/dist/ee/index.js.map +1 -1
  58. package/dist/ee/index.mjs +74 -7
  59. package/dist/ee/index.mjs.map +1 -1
  60. package/dist/ee/license.d.ts +10 -0
  61. package/dist/ee/license.d.ts.map +1 -1
  62. package/dist/ee/license.js +25 -1
  63. package/dist/ee/license.js.map +1 -1
  64. package/dist/ee/license.mjs +25 -2
  65. package/dist/ee/license.mjs.map +1 -1
  66. package/dist/factories.d.ts.map +1 -1
  67. package/dist/factories.js +3 -2
  68. package/dist/factories.js.map +1 -1
  69. package/dist/factories.mjs +3 -2
  70. package/dist/factories.mjs.map +1 -1
  71. package/dist/index.js +1 -1
  72. package/dist/index.mjs +1 -1
  73. package/dist/loaders/apis.d.ts.map +1 -1
  74. package/dist/loaders/apis.js +1 -2
  75. package/dist/loaders/apis.js.map +1 -1
  76. package/dist/loaders/apis.mjs +1 -2
  77. package/dist/loaders/apis.mjs.map +1 -1
  78. package/dist/loaders/plugins/get-enabled-plugins.d.ts +1 -1
  79. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  80. package/dist/loaders/plugins/get-enabled-plugins.js +6 -5
  81. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  82. package/dist/loaders/plugins/get-enabled-plugins.mjs +6 -5
  83. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  84. package/dist/loaders/plugins/get-user-plugins-config.js +2 -2
  85. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  86. package/dist/loaders/plugins/get-user-plugins-config.mjs +2 -2
  87. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  88. package/dist/loaders/plugins/index.js +9 -12
  89. package/dist/loaders/plugins/index.js.map +1 -1
  90. package/dist/loaders/plugins/index.mjs +9 -12
  91. package/dist/loaders/plugins/index.mjs.map +1 -1
  92. package/dist/middlewares/body.js +2 -2
  93. package/dist/middlewares/body.js.map +1 -1
  94. package/dist/middlewares/body.mjs +2 -2
  95. package/dist/middlewares/body.mjs.map +1 -1
  96. package/dist/middlewares/public.js +2 -2
  97. package/dist/middlewares/public.js.map +1 -1
  98. package/dist/middlewares/public.mjs +2 -2
  99. package/dist/middlewares/public.mjs.map +1 -1
  100. package/dist/middlewares/responses.d.ts.map +1 -1
  101. package/dist/middlewares/responses.js +1 -3
  102. package/dist/middlewares/responses.js.map +1 -1
  103. package/dist/middlewares/responses.mjs +1 -3
  104. package/dist/middlewares/responses.mjs.map +1 -1
  105. package/dist/middlewares/security.d.ts.map +1 -1
  106. package/dist/middlewares/security.js +3 -3
  107. package/dist/middlewares/security.js.map +1 -1
  108. package/dist/middlewares/security.mjs +3 -3
  109. package/dist/middlewares/security.mjs.map +1 -1
  110. package/dist/middlewares/session.js +2 -2
  111. package/dist/middlewares/session.js.map +1 -1
  112. package/dist/middlewares/session.mjs +2 -2
  113. package/dist/middlewares/session.mjs.map +1 -1
  114. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  115. package/dist/migrations/database/5.0.0-discard-drafts.js +1 -2
  116. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  117. package/dist/migrations/database/5.0.0-discard-drafts.mjs +1 -2
  118. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
  119. package/dist/migrations/i18n.d.ts.map +1 -1
  120. package/dist/migrations/i18n.js +6 -4
  121. package/dist/migrations/i18n.js.map +1 -1
  122. package/dist/migrations/i18n.mjs +6 -4
  123. package/dist/migrations/i18n.mjs.map +1 -1
  124. package/dist/package.json.js +16 -16
  125. package/dist/package.json.mjs +16 -16
  126. package/dist/registries/apis.js +2 -2
  127. package/dist/registries/apis.js.map +1 -1
  128. package/dist/registries/apis.mjs +2 -2
  129. package/dist/registries/apis.mjs.map +1 -1
  130. package/dist/registries/components.js +2 -2
  131. package/dist/registries/components.js.map +1 -1
  132. package/dist/registries/components.mjs +2 -2
  133. package/dist/registries/components.mjs.map +1 -1
  134. package/dist/registries/content-types.d.ts +1 -1
  135. package/dist/registries/content-types.js +3 -3
  136. package/dist/registries/content-types.js.map +1 -1
  137. package/dist/registries/content-types.mjs +3 -3
  138. package/dist/registries/content-types.mjs.map +1 -1
  139. package/dist/registries/controllers.js +3 -3
  140. package/dist/registries/controllers.js.map +1 -1
  141. package/dist/registries/controllers.mjs +3 -3
  142. package/dist/registries/controllers.mjs.map +1 -1
  143. package/dist/registries/custom-fields.js +4 -4
  144. package/dist/registries/custom-fields.js.map +1 -1
  145. package/dist/registries/custom-fields.mjs +4 -4
  146. package/dist/registries/custom-fields.mjs.map +1 -1
  147. package/dist/registries/hooks.d.ts +1 -1
  148. package/dist/registries/hooks.js +2 -2
  149. package/dist/registries/hooks.js.map +1 -1
  150. package/dist/registries/hooks.mjs +2 -2
  151. package/dist/registries/hooks.mjs.map +1 -1
  152. package/dist/registries/middlewares.d.ts +1 -1
  153. package/dist/registries/middlewares.js +3 -3
  154. package/dist/registries/middlewares.js.map +1 -1
  155. package/dist/registries/middlewares.mjs +3 -3
  156. package/dist/registries/middlewares.mjs.map +1 -1
  157. package/dist/registries/modules.d.ts +1 -4
  158. package/dist/registries/modules.d.ts.map +1 -1
  159. package/dist/registries/modules.js +3 -3
  160. package/dist/registries/modules.js.map +1 -1
  161. package/dist/registries/modules.mjs +3 -3
  162. package/dist/registries/modules.mjs.map +1 -1
  163. package/dist/registries/plugins.js +2 -2
  164. package/dist/registries/plugins.js.map +1 -1
  165. package/dist/registries/plugins.mjs +2 -2
  166. package/dist/registries/plugins.mjs.map +1 -1
  167. package/dist/registries/policies.d.ts +1 -1
  168. package/dist/registries/policies.js +4 -4
  169. package/dist/registries/policies.js.map +1 -1
  170. package/dist/registries/policies.mjs +3 -3
  171. package/dist/registries/policies.mjs.map +1 -1
  172. package/dist/registries/services.js +3 -3
  173. package/dist/registries/services.js.map +1 -1
  174. package/dist/registries/services.mjs +3 -3
  175. package/dist/registries/services.mjs.map +1 -1
  176. package/dist/services/auth/index.js +3 -3
  177. package/dist/services/auth/index.js.map +1 -1
  178. package/dist/services/auth/index.mjs +3 -3
  179. package/dist/services/auth/index.mjs.map +1 -1
  180. package/dist/services/core-store.js +3 -3
  181. package/dist/services/core-store.js.map +1 -1
  182. package/dist/services/core-store.mjs +1 -1
  183. package/dist/services/core-store.mjs.map +1 -1
  184. package/dist/services/cron.d.ts.map +1 -1
  185. package/dist/services/cron.js +2 -4
  186. package/dist/services/cron.js.map +1 -1
  187. package/dist/services/cron.mjs +2 -4
  188. package/dist/services/cron.mjs.map +1 -1
  189. package/dist/services/document-service/attributes/index.js +2 -2
  190. package/dist/services/document-service/attributes/index.js.map +1 -1
  191. package/dist/services/document-service/attributes/index.mjs +1 -1
  192. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  193. package/dist/services/document-service/attributes/transforms.js +3 -3
  194. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  195. package/dist/services/document-service/attributes/transforms.mjs +2 -2
  196. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  197. package/dist/services/document-service/components.d.ts.map +1 -1
  198. package/dist/services/document-service/components.js +13 -14
  199. package/dist/services/document-service/components.js.map +1 -1
  200. package/dist/services/document-service/components.mjs +12 -13
  201. package/dist/services/document-service/components.mjs.map +1 -1
  202. package/dist/services/document-service/draft-and-publish.js +65 -38
  203. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  204. package/dist/services/document-service/draft-and-publish.mjs +59 -32
  205. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  206. package/dist/services/document-service/entries.d.ts +2 -2
  207. package/dist/services/document-service/entries.d.ts.map +1 -1
  208. package/dist/services/document-service/entries.js +16 -8
  209. package/dist/services/document-service/entries.js.map +1 -1
  210. package/dist/services/document-service/entries.mjs +17 -9
  211. package/dist/services/document-service/entries.mjs.map +1 -1
  212. package/dist/services/document-service/first-published-at.js +7 -5
  213. package/dist/services/document-service/first-published-at.js.map +1 -1
  214. package/dist/services/document-service/first-published-at.mjs +7 -5
  215. package/dist/services/document-service/first-published-at.mjs.map +1 -1
  216. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  217. package/dist/services/document-service/internationalization.js +37 -28
  218. package/dist/services/document-service/internationalization.js.map +1 -1
  219. package/dist/services/document-service/internationalization.mjs +33 -24
  220. package/dist/services/document-service/internationalization.mjs.map +1 -1
  221. package/dist/services/document-service/params.d.ts +1 -0
  222. package/dist/services/document-service/params.d.ts.map +1 -1
  223. package/dist/services/document-service/params.js +6 -4
  224. package/dist/services/document-service/params.js.map +1 -1
  225. package/dist/services/document-service/params.mjs +6 -5
  226. package/dist/services/document-service/params.mjs.map +1 -1
  227. package/dist/services/document-service/repository.d.ts.map +1 -1
  228. package/dist/services/document-service/repository.js +84 -61
  229. package/dist/services/document-service/repository.js.map +1 -1
  230. package/dist/services/document-service/repository.mjs +47 -24
  231. package/dist/services/document-service/repository.mjs.map +1 -1
  232. package/dist/services/document-service/transform/fields.d.ts.map +1 -1
  233. package/dist/services/document-service/transform/fields.js +7 -1
  234. package/dist/services/document-service/transform/fields.js.map +1 -1
  235. package/dist/services/document-service/transform/fields.mjs +7 -1
  236. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  237. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  238. package/dist/services/document-service/transform/id-map.js +2 -1
  239. package/dist/services/document-service/transform/id-map.js.map +1 -1
  240. package/dist/services/document-service/transform/id-map.mjs +2 -1
  241. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  242. package/dist/services/document-service/transform/id-transform.js +2 -2
  243. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  244. package/dist/services/document-service/transform/id-transform.mjs +1 -1
  245. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  246. package/dist/services/document-service/transform/populate.d.ts.map +1 -1
  247. package/dist/services/document-service/transform/populate.js +8 -1
  248. package/dist/services/document-service/transform/populate.js.map +1 -1
  249. package/dist/services/document-service/transform/populate.mjs +8 -1
  250. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  251. package/dist/services/document-service/transform/query.d.ts +3 -1
  252. package/dist/services/document-service/transform/query.d.ts.map +1 -1
  253. package/dist/services/document-service/transform/query.js +12 -6
  254. package/dist/services/document-service/transform/query.js.map +1 -1
  255. package/dist/services/document-service/transform/query.mjs +11 -5
  256. package/dist/services/document-service/transform/query.mjs.map +1 -1
  257. package/dist/services/document-service/transform/relations/extract/data-ids.js +2 -2
  258. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  259. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +1 -1
  260. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  261. package/dist/services/document-service/transform/relations/transform/data-ids.js +2 -2
  262. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  263. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +1 -1
  264. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  265. package/dist/services/document-service/transform/relations/transform/default-locale.js +1 -1
  266. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  267. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +1 -1
  268. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  269. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  270. package/dist/services/document-service/transform/relations/utils/dp.js +1 -2
  271. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  272. package/dist/services/document-service/transform/relations/utils/dp.mjs +1 -2
  273. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  274. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +2 -2
  275. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  276. package/dist/services/document-service/transform/relations/utils/i18n.js +2 -2
  277. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  278. package/dist/services/document-service/transform/relations/utils/i18n.mjs +2 -2
  279. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  280. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  281. package/dist/services/document-service/transform/relations/utils/map-relation.js +16 -10
  282. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  283. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +13 -7
  284. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  285. package/dist/services/document-service/transform/relations/utils/xto-one.js +3 -3
  286. package/dist/services/document-service/transform/relations/utils/xto-one.js.map +1 -1
  287. package/dist/services/document-service/transform/relations/utils/xto-one.mjs +2 -2
  288. package/dist/services/document-service/transform/relations/utils/xto-one.mjs.map +1 -1
  289. package/dist/services/document-service/utils/bidirectional-relations.js +3 -3
  290. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -1
  291. package/dist/services/document-service/utils/bidirectional-relations.mjs +3 -3
  292. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -1
  293. package/dist/services/document-service/utils/clone-relations.js +3 -3
  294. package/dist/services/document-service/utils/clone-relations.js.map +1 -1
  295. package/dist/services/document-service/utils/clone-relations.mjs +3 -3
  296. package/dist/services/document-service/utils/clone-relations.mjs.map +1 -1
  297. package/dist/services/document-service/utils/self-referential-relations.js +4 -4
  298. package/dist/services/document-service/utils/self-referential-relations.js.map +1 -1
  299. package/dist/services/document-service/utils/self-referential-relations.mjs +4 -4
  300. package/dist/services/document-service/utils/self-referential-relations.mjs.map +1 -1
  301. package/dist/services/document-service/utils/unidirectional-relations.js +3 -3
  302. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
  303. package/dist/services/document-service/utils/unidirectional-relations.mjs +3 -3
  304. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
  305. package/dist/services/entity-validator/index.d.ts.map +1 -1
  306. package/dist/services/entity-validator/index.js +9 -10
  307. package/dist/services/entity-validator/index.js.map +1 -1
  308. package/dist/services/entity-validator/index.mjs +4 -5
  309. package/dist/services/entity-validator/index.mjs.map +1 -1
  310. package/dist/services/localization.d.ts +4 -0
  311. package/dist/services/localization.d.ts.map +1 -0
  312. package/dist/services/localization.js +51 -0
  313. package/dist/services/localization.js.map +1 -0
  314. package/dist/services/localization.mjs +49 -0
  315. package/dist/services/localization.mjs.map +1 -0
  316. package/dist/services/server/compose-endpoint.js +7 -7
  317. package/dist/services/server/compose-endpoint.js.map +1 -1
  318. package/dist/services/server/compose-endpoint.mjs +3 -3
  319. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  320. package/dist/services/server/koa-methods.js +2 -2
  321. package/dist/services/server/koa-methods.js.map +1 -1
  322. package/dist/services/server/koa-methods.mjs +1 -1
  323. package/dist/services/server/koa-methods.mjs.map +1 -1
  324. package/dist/services/server/koa.d.ts.map +1 -1
  325. package/dist/services/server/koa.js +1 -2
  326. package/dist/services/server/koa.js.map +1 -1
  327. package/dist/services/server/koa.mjs +1 -2
  328. package/dist/services/server/koa.mjs.map +1 -1
  329. package/dist/services/server/middleware.d.ts.map +1 -1
  330. package/dist/services/server/middleware.js +1 -2
  331. package/dist/services/server/middleware.js.map +1 -1
  332. package/dist/services/server/middleware.mjs +1 -2
  333. package/dist/services/server/middleware.mjs.map +1 -1
  334. package/dist/services/server/routing.js +2 -2
  335. package/dist/services/server/routing.js.map +1 -1
  336. package/dist/services/server/routing.mjs +2 -2
  337. package/dist/services/server/routing.mjs.map +1 -1
  338. package/dist/services/utils/conditional-fields.d.ts +1 -1
  339. package/dist/services/utils/conditional-fields.d.ts.map +1 -1
  340. package/dist/services/utils/conditional-fields.js +2 -8
  341. package/dist/services/utils/conditional-fields.js.map +1 -1
  342. package/dist/services/utils/conditional-fields.mjs +2 -8
  343. package/dist/services/utils/conditional-fields.mjs.map +1 -1
  344. package/dist/services/utils/dynamic-zones.d.ts.map +1 -1
  345. package/dist/services/utils/dynamic-zones.js +2 -8
  346. package/dist/services/utils/dynamic-zones.js.map +1 -1
  347. package/dist/services/utils/dynamic-zones.mjs +2 -8
  348. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  349. package/dist/utils/cron.js +2 -2
  350. package/dist/utils/cron.js.map +1 -1
  351. package/dist/utils/cron.mjs +1 -1
  352. package/dist/utils/cron.mjs.map +1 -1
  353. package/dist/utils/detect-customizations.d.ts +31 -0
  354. package/dist/utils/detect-customizations.d.ts.map +1 -0
  355. package/dist/utils/detect-customizations.js +173 -0
  356. package/dist/utils/detect-customizations.js.map +1 -0
  357. package/dist/utils/detect-customizations.mjs +165 -0
  358. package/dist/utils/detect-customizations.mjs.map +1 -0
  359. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  360. package/dist/utils/filepath-to-prop-path.js +5 -12
  361. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  362. package/dist/utils/filepath-to-prop-path.mjs +5 -11
  363. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  364. package/dist/utils/is-initialized.js +3 -3
  365. package/dist/utils/is-initialized.js.map +1 -1
  366. package/dist/utils/is-initialized.mjs +2 -2
  367. package/dist/utils/is-initialized.mjs.map +1 -1
  368. package/dist/utils/startup-logger.d.ts.map +1 -1
  369. package/dist/utils/startup-logger.js +2 -4
  370. package/dist/utils/startup-logger.js.map +1 -1
  371. package/dist/utils/startup-logger.mjs +2 -3
  372. package/dist/utils/startup-logger.mjs.map +1 -1
  373. package/dist/utils/transform-content-types-to-models.js +4 -4
  374. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  375. package/dist/utils/transform-content-types-to-models.mjs +3 -3
  376. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  377. package/package.json +16 -16
package/dist/Strapi.d.ts CHANGED
@@ -23,6 +23,7 @@ declare class Strapi extends Container implements Core.Strapi {
23
23
  */
24
24
  get entityService(): Modules.EntityService.EntityService;
25
25
  get documents(): Modules.Documents.Service;
26
+ get localization(): Modules.Localization.Service;
26
27
  get features(): FeaturesService;
27
28
  get fetch(): Modules.Fetch.Fetch;
28
29
  get cron(): Modules.Cron.CronService;
@@ -60,6 +61,34 @@ declare class Strapi extends Container implements Core.Strapi {
60
61
  start(): Promise<this>;
61
62
  registerInternalServices(): void;
62
63
  sendStartupTelemetry(): void;
64
+ getCustomizations(): {
65
+ apis: {
66
+ uid: string;
67
+ customController: boolean;
68
+ customService: boolean;
69
+ customRoutes: boolean;
70
+ }[];
71
+ controllers: {
72
+ uid: string;
73
+ custom: boolean;
74
+ }[];
75
+ extendedPlugins: string[];
76
+ counts: {
77
+ customControllers: number;
78
+ customServices: number;
79
+ customRoutes: number;
80
+ };
81
+ srcIndex: {
82
+ present: boolean;
83
+ registerDefined: boolean;
84
+ registerNonEmpty: boolean;
85
+ bootstrapDefined: boolean;
86
+ bootstrapNonEmpty: boolean;
87
+ destroyDefined: boolean;
88
+ destroyNonEmpty: boolean;
89
+ beyondTemplate: boolean;
90
+ };
91
+ };
63
92
  openAdmin({ isInitialized }: {
64
93
  isInitialized: boolean;
65
94
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"Strapi.d.ts","sourceRoot":"","sources":["../src/Strapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Strapi.d.ts","sourceRoot":"","sources":["../src/Strapi.ts"],"names":[],"mappings":"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"}
package/dist/Strapi.js CHANGED
@@ -3,7 +3,6 @@
3
3
  var globalAgent = require('global-agent');
4
4
  var path = require('path');
5
5
  var _ = require('lodash');
6
- var fp = require('lodash/fp');
7
6
  var logger = require('@strapi/logger');
8
7
  var database = require('@strapi/database');
9
8
  var index$8 = require('./configuration/index.js');
@@ -23,6 +22,7 @@ var startupLogger = require('./utils/startup-logger.js');
23
22
  var transformContentTypesToModels = require('./utils/transform-content-types-to-models.js');
24
23
  var lifecycles = require('./utils/lifecycles.js');
25
24
  require('node:path');
25
+ var detectCustomizations = require('./utils/detect-customizations.js');
26
26
  var container = require('./container.js');
27
27
  var fs = require('./services/fs.js');
28
28
  var eventHub = require('./services/event-hub.js');
@@ -40,6 +40,7 @@ var dynamicZones = require('./services/utils/dynamic-zones.js');
40
40
  var conditionalFields = require('./services/utils/conditional-fields.js');
41
41
  var features = require('./services/features.js');
42
42
  var index$6 = require('./services/document-service/index.js');
43
+ var localization = require('./services/localization.js');
43
44
  var contentSourceMaps = require('./services/content-source-maps.js');
44
45
  var coreStore = require('./services/core-store.js');
45
46
  var config = require('./services/config.js');
@@ -99,6 +100,9 @@ class Strapi extends container.Container {
99
100
  get documents() {
100
101
  return this.get('documents');
101
102
  }
103
+ get localization() {
104
+ return this.get('localization');
105
+ }
102
106
  get features() {
103
107
  return this.get('features');
104
108
  }
@@ -225,7 +229,7 @@ class Strapi extends container.Container {
225
229
  this.add('config', ()=>config$1).add('query-params', queryParams(this)).add('content-api', index$1(this)).add('content-api-schema-registry', ()=>schemaRegistry.createContentAPISchemaRegistry()).add('auth', index$2()).add('server', ()=>index$3.createServer(this)).add('fs', ()=>fs(this)).add('eventHub', ()=>eventHub()).add('startupLogger', ()=>startupLogger.createStartupLogger(this)).add('logger', ()=>logger$1).add('fetch', ()=>fetch.createStrapiFetch(this)).add('features', ()=>features.createFeaturesService(this)).add('requestContext', requestContext).add('customFields', customFields(this)).add('entityValidator', index$4).add('entityService', ()=>index$5({
226
230
  strapi: this,
227
231
  db: this.db
228
- })).add('documents', ()=>index$6.createDocumentService(this)).add('db', ()=>{
232
+ })).add('documents', ()=>index$6.createDocumentService(this)).add('localization', ()=>localization.createLocalizationService()).add('db', ()=>{
229
233
  const useTSM = this.config.get('database.settings.useTypescriptMigrations') === true;
230
234
  const tsDir = useTSM ? tsUtils().resolveOutDirSync(this.dirs.app.root) : null;
231
235
  const tsMigrationsEnabled = useTSM && tsDir;
@@ -258,6 +262,9 @@ class Strapi extends container.Container {
258
262
  }
259
263
  }).catch(this.log.error);
260
264
  }
265
+ getCustomizations() {
266
+ return detectCustomizations.detectCustomizations(this);
267
+ }
261
268
  async openAdmin({ isInitialized }) {
262
269
  const shouldOpenAdmin = this.config.get('environment') === 'development' && this.config.get('admin.autoOpen', true) !== false;
263
270
  if (shouldOpenAdmin && !isInitialized) {
@@ -447,7 +454,7 @@ class Strapi extends container.Container {
447
454
  async runUserLifecycles(lifecycleName) {
448
455
  // user
449
456
  const userLifecycleFunction = this.app && this.app[lifecycleName];
450
- if (fp.isFunction(userLifecycleFunction)) {
457
+ if (typeof userLifecycleFunction === 'function') {
451
458
  await userLifecycleFunction({
452
459
  strapi: this
453
460
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Strapi.js","sources":["../src/Strapi.ts"],"sourcesContent":["import { bootstrap as bootstrapGlobalAgent } from 'global-agent';\nimport path from 'path';\nimport _ from 'lodash';\nimport { isFunction } from 'lodash/fp';\nimport { Logger, createLogger } from '@strapi/logger';\nimport { Database } from '@strapi/database';\n\nimport type { Core, Modules, UID, Schema } from '@strapi/types';\n\nimport { loadConfiguration } from './configuration';\nimport { warnDeprecatedServerConfig } from './configuration/server-config';\n\nimport * as factories from './factories';\n\nimport * as utils from './utils';\nimport { Container } from './container';\nimport createStrapiFs from './services/fs';\nimport createEventHub from './services/event-hub';\nimport { createServer } from './services/server';\nimport { createReloader } from './services/reloader';\n\nimport { providers } from './providers';\nimport createEntityService from './services/entity-service';\nimport createQueryParamService from './services/query-params';\n\nimport entityValidator from './services/entity-validator';\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 getNumberOfConditionalFields from './services/utils/conditional-fields';\nimport { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\nimport { createContentSourceMapsService } from './services/content-source-maps';\n\nimport { coreStoreModel } from './services/core-store';\nimport { createConfigProvider } from './services/config';\n\nimport { cleanComponentJoinTable } from './services/document-service/utils/clean-component-join-table';\nimport { createContentAPISchemaRegistry } from './core-api/routes/validation/schema-registry';\n\n// Lazy: only resolved when `useTypescriptMigrations` is true (default false)\nlet lazyTsUtils: typeof import('@strapi/typescript-utils') | undefined;\nconst tsUtils = (): typeof import('@strapi/typescript-utils') => {\n if (!lazyTsUtils) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyTsUtils = require('@strapi/typescript-utils');\n }\n return lazyTsUtils as typeof import('@strapi/typescript-utils');\n};\n\nclass Strapi extends Container implements Core.Strapi {\n app: any;\n\n isLoaded: boolean = false;\n\n internal_config: Record<string, unknown> = {};\n\n constructor(opts: StrapiOptions) {\n super();\n\n this.internal_config = loadConfiguration(opts);\n\n this.registerInternalServices();\n\n for (const provider of providers) {\n provider.init?.(this);\n }\n }\n\n get admin(): Core.Module {\n return this.get('admin');\n }\n\n get ai(): Modules.AI.AiNamespace {\n return this.get('ai');\n }\n\n get EE(): boolean {\n return utils.ee.isEE;\n }\n\n get ee(): Core.Strapi['ee'] {\n return utils.ee;\n }\n\n get dirs(): Core.StrapiDirectories {\n return this.config.get('dirs');\n }\n\n get reload(): Core.Reloader {\n return this.get('reload');\n }\n\n get db(): Database {\n return this.get('db');\n }\n\n get requestContext(): Modules.RequestContext.RequestContext {\n return this.get('requestContext');\n }\n\n get customFields(): Modules.CustomFields.CustomFields {\n return this.get('customFields');\n }\n\n get entityValidator(): Modules.EntityValidator.EntityValidator {\n return this.get('entityValidator');\n }\n\n /**\n * @deprecated `strapi.entityService` will be removed in the next major version\n */\n get entityService(): Modules.EntityService.EntityService {\n return this.get('entityService');\n }\n\n get documents(): Modules.Documents.Service {\n return this.get('documents');\n }\n\n get features(): FeaturesService {\n return this.get('features');\n }\n\n get fetch(): Modules.Fetch.Fetch {\n return this.get('fetch');\n }\n\n get cron(): Modules.Cron.CronService {\n return this.get('cron');\n }\n\n get log(): Logger {\n return this.get('logger');\n }\n\n get startupLogger(): Core.StartupLogger {\n return this.get('startupLogger');\n }\n\n get eventHub(): Modules.EventHub.EventHub {\n return this.get('eventHub');\n }\n\n get fs(): Core.StrapiFS {\n return this.get('fs');\n }\n\n get server(): Modules.Server.Server {\n return this.get('server');\n }\n\n get telemetry(): Modules.Metrics.TelemetryService {\n return this.get('telemetry');\n }\n\n get sessionManager(): Modules.SessionManager.SessionManagerService {\n return this.get('sessionManager');\n }\n\n get store(): Modules.CoreStore.CoreStore {\n return this.get('coreStore');\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: 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: UID.Controller) {\n return this.get('controllers').get(uid);\n }\n\n get contentTypes(): Schema.ContentTypes {\n return this.get('content-types').getAll();\n }\n\n contentType(name: UID.ContentType) {\n return this.get('content-types').get(name);\n }\n\n get components(): Schema.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, Core.Plugin> {\n return this.get('plugins').getAll();\n }\n\n plugin(name: string): Core.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 get apis() {\n return this.get('apis').getAll();\n }\n\n api(name: string): Core.Module {\n return this.get('apis').get(name);\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 contentAPISchemaRegistry(): Core.ContentAPISchemaRegistry {\n return this.get('content-api-schema-registry');\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 // TODO: split into more providers\n registerInternalServices() {\n const config = createConfigProvider(this.internal_config, this);\n\n const logger = createLogger({\n level: 'http', // Strapi defaults to level 'http'\n ...config.get('logger'), // DEPRECATED\n ...config.get('server.logger.config'),\n });\n\n warnDeprecatedServerConfig(config, logger);\n\n // Instantiate the Strapi container\n this.add('config', () => config)\n .add('query-params', createQueryParamService(this))\n .add('content-api', createContentAPI(this))\n .add('content-api-schema-registry', () => createContentAPISchemaRegistry())\n .add('auth', createAuth())\n .add('server', () => createServer(this))\n .add('fs', () => createStrapiFs(this))\n .add('eventHub', () => createEventHub())\n .add('startupLogger', () => utils.createStartupLogger(this))\n .add('logger', () => logger)\n .add('fetch', () => utils.createStrapiFetch(this))\n .add('features', () => createFeaturesService(this))\n .add('requestContext', requestContext)\n .add('customFields', createCustomFields(this))\n .add('entityValidator', entityValidator)\n .add('entityService', () => createEntityService({ strapi: this, db: this.db }))\n .add('documents', () => createDocumentService(this))\n .add('db', () => {\n const useTSM = this.config.get('database.settings.useTypescriptMigrations') === true;\n const tsDir = useTSM ? tsUtils().resolveOutDirSync(this.dirs.app.root) : null;\n const tsMigrationsEnabled = useTSM && tsDir;\n const projectDir = tsMigrationsEnabled ? tsDir : this.dirs.app.root;\n return new Database(\n _.merge(this.config.get('database'), {\n logger,\n settings: {\n migrations: {\n dir: path.join(projectDir, 'database/migrations'),\n },\n },\n })\n );\n })\n .add('reload', () => createReloader(this))\n .add('content-source-maps', () => createContentSourceMapsService(this));\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 numberOfConditionalFields: getNumberOfConditionalFields(),\n numberOfCustomControllers: Object.values<Core.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 {\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.log.info('Strapi started successfully');\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 async load() {\n await this.register();\n await this.bootstrap();\n\n this.isLoaded = true;\n\n return this;\n }\n\n async register() {\n // @ts-expect-error: init is internal\n this.ee.init(this.dirs.app.root, this.log);\n\n for (const provider of providers) {\n await provider.register?.(this);\n }\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.REGISTER);\n await this.runUserLifecycles(utils.LIFECYCLES.REGISTER);\n\n // NOTE: Swap type customField for underlying data type\n utils.convertCustomFieldType(this);\n\n return this;\n }\n\n async bootstrap() {\n this.configureGlobalProxy();\n\n const models = [\n ...utils.transformContentTypesToModels(\n [...Object.values(this.contentTypes), ...Object.values(this.components)],\n this.db.metadata.identifiers\n ),\n ...this.get('models').get(),\n ];\n\n await this.db.init({ models });\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 // NOTE: commenting out repair logic for now as it is causing relationship loss in some cases\n // will revisit soon in the future PR\n\n const status = await this.db.schema.sync();\n\n // // if schemas have changed, run repairs\n if (status === 'CHANGED') {\n await this.db.repair.removeOrphanMorphType({ pivot: 'component_type' });\n await this.db.repair.removeOrphanMorphType({ pivot: 'related_type' });\n }\n\n const alreadyRanComponentRepair = await this.store.get({\n type: 'strapi',\n key: 'unidirectional-join-table-repair-ran',\n });\n\n if (!alreadyRanComponentRepair) {\n await this.db.repair.processUnidirectionalJoinTables(cleanComponentJoinTable);\n await this.store.set({\n type: 'strapi',\n key: 'unidirectional-join-table-repair-ran',\n value: true,\n });\n }\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.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n for (const provider of providers) {\n await provider.bootstrap?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n return this;\n }\n\n configureGlobalProxy() {\n const globalProxy = this.config.get('server.proxy.global');\n const httpProxy = this.config.get('server.proxy.http') || globalProxy;\n const httpsProxy = this.config.get('server.proxy.https') || globalProxy;\n\n if (!httpProxy && !httpsProxy) {\n return;\n }\n\n bootstrapGlobalAgent();\n\n if (httpProxy) {\n this.log.info(`Using HTTP proxy: ${httpProxy}`);\n (global as any).GLOBAL_AGENT.HTTP_PROXY = httpProxy;\n }\n\n if (httpsProxy) {\n this.log.info(`Using HTTPS proxy: ${httpsProxy}`);\n (global as any).GLOBAL_AGENT.HTTPS_PROXY = httpsProxy;\n }\n }\n\n async destroy() {\n this.log.info('Shutting down Strapi');\n await this.runPluginsLifecycles(utils.LIFECYCLES.DESTROY);\n\n for (const provider of providers) {\n await provider.destroy?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.DESTROY);\n\n await this.server.destroy();\n\n this.eventHub.destroy();\n\n await this.db?.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 this.log.info('Strapi has been shut down');\n }\n\n async runPluginsLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n }\n\n async runUserLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\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: UID.ContentType): Schema.ContentType;\n getModel(uid: UID.Component): Schema.Component;\n getModel<TUID extends UID.Schema>(uid: TUID): Schema.ContentType | Schema.Component | undefined {\n // Looked up on the registries directly rather than through the `contentTypes` /\n // `components` getters. Those getters call `getAll()`, and the content-type registry\n // builds a fresh copy of every registered schema on each call. Reading `uid in\n // this.contentTypes` and then `this.contentTypes[uid]` therefore built that copy\n // twice per lookup, and a component uid built it four times over. `getModel` runs\n // once per relation, component, media and dynamic-zone node of every sanitized\n // response, which made this the single hottest path in a REST request.\n const contentType = this.get('content-types').get(uid as UID.ContentType);\n\n if (contentType !== undefined) {\n return contentType;\n }\n\n return this.get('components').get(uid as UID.Component);\n }\n\n /**\n * @deprecated Use `strapi.db.query` instead\n */\n query(uid: UID.Schema) {\n return this.db.query(uid);\n }\n}\n\nexport interface StrapiOptions {\n appDir: string;\n distDir: string;\n autoReload?: boolean;\n serveAdminPanel?: boolean;\n}\n\nexport default Strapi;\n"],"names":["lazyTsUtils","tsUtils","require","Strapi","Container","admin","get","ai","EE","utils","isEE","ee","dirs","config","reload","db","requestContext","customFields","entityValidator","entityService","documents","features","fetch","cron","log","startupLogger","eventHub","fs","server","telemetry","sessionManager","store","services","getAll","service","uid","controllers","controller","contentTypes","contentType","name","components","policies","policy","middlewares","middleware","plugins","plugin","hooks","hook","apis","api","auth","contentAPI","contentAPISchemaRegistry","sanitizers","validators","start","isLoaded","load","listen","error","stopWithError","registerInternalServices","createConfigProvider","internal_config","logger","createLogger","level","warnDeprecatedServerConfig","add","createQueryParamService","createContentAPI","createContentAPISchemaRegistry","createAuth","createServer","createStrapiFs","createEventHub","createFeaturesService","createCustomFields","createEntityService","strapi","createDocumentService","useTSM","tsDir","resolveOutDirSync","app","root","tsMigrationsEnabled","projectDir","Database","_","merge","settings","migrations","dir","path","join","createReloader","createContentSourceMapsService","sendStartupTelemetry","send","groupProperties","database","Object","keys","numberOfAllContentTypes","size","numberOfComponents","numberOfDynamicZones","getNumberOfDynamicZones","numberOfConditionalFields","getNumberOfConditionalFields","numberOfCustomControllers","values","filter","undefined","factories","length","environment","catch","openAdmin","isInitialized","shouldOpenAdmin","postListen","logStartupMessage","info","Promise","resolve","reject","onListen","listenSocket","host","port","err","customMessage","debug","stop","exitCode","destroy","process","exit","register","bootstrap","init","provider","providers","runPluginsLifecycles","REGISTER","runUserLifecycles","configureGlobalProxy","models","metadata","identifiers","oldContentTypes","getSchemaConnection","hasTable","coreStoreModel","tableName","type","key","call","status","schema","sync","repair","removeOrphanMorphType","pivot","alreadyRanComponentRepair","processUnidirectionalJoinTables","cleanComponentJoinTable","set","value","checkLicense","initMiddlewares","initRouting","permissions","registerActions","BOOTSTRAP","globalProxy","httpProxy","httpsProxy","bootstrapGlobalAgent","global","GLOBAL_AGENT","HTTP_PROXY","HTTPS_PROXY","DESTROY","removeAllListeners","lifecycleName","userLifecycleFunction","isFunction","getModel","query","opts","loadConfiguration"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA;AACA,IAAIA,WAAAA;AACJ,MAAMC,OAAAA,GAAU,IAAA;AACd,IAAA,IAAI,CAACD,WAAAA,EAAa;;AAEhBA,QAAAA,WAAAA,GAAcE,OAAAA,CAAQ,0BAAA,CAAA;AACxB,IAAA;IACA,OAAOF,WAAAA;AACT,CAAA;AAEA,MAAMG,MAAAA,SAAeC,mBAAAA,CAAAA;AAmBnB,IAAA,IAAIC,KAAAA,GAAqB;QACvB,OAAO,IAAI,CAACC,GAAG,CAAC,OAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIC,EAAAA,GAA6B;QAC/B,OAAO,IAAI,CAACD,GAAG,CAAC,IAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIE,EAAAA,GAAc;QAChB,OAAOC,KAAQ,CAACC,IAAI;AACtB,IAAA;AAEA,IAAA,IAAIC,EAAAA,GAAwB;AAC1B,QAAA,OAAOF,KAAQ;AACjB,IAAA;AAEA,IAAA,IAAIG,IAAAA,GAA+B;AACjC,QAAA,OAAO,IAAI,CAACC,MAAM,CAACP,GAAG,CAAC,MAAA,CAAA;AACzB,IAAA;AAEA,IAAA,IAAIQ,MAAAA,GAAwB;QAC1B,OAAO,IAAI,CAACR,GAAG,CAAC,QAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIS,EAAAA,GAAe;QACjB,OAAO,IAAI,CAACT,GAAG,CAAC,IAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIU,cAAAA,GAAwD;QAC1D,OAAO,IAAI,CAACV,GAAG,CAAC,gBAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIW,YAAAA,GAAkD;QACpD,OAAO,IAAI,CAACX,GAAG,CAAC,cAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIY,eAAAA,GAA2D;QAC7D,OAAO,IAAI,CAACZ,GAAG,CAAC,iBAAA,CAAA;AAClB,IAAA;AAEA;;AAEC,MACD,IAAIa,aAAAA,GAAqD;QACvD,OAAO,IAAI,CAACb,GAAG,CAAC,eAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIc,SAAAA,GAAuC;QACzC,OAAO,IAAI,CAACd,GAAG,CAAC,WAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIe,QAAAA,GAA4B;QAC9B,OAAO,IAAI,CAACf,GAAG,CAAC,UAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIgB,KAAAA,GAA6B;QAC/B,OAAO,IAAI,CAAChB,GAAG,CAAC,OAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIiB,IAAAA,GAAiC;QACnC,OAAO,IAAI,CAACjB,GAAG,CAAC,MAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIkB,GAAAA,GAAc;QAChB,OAAO,IAAI,CAAClB,GAAG,CAAC,QAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAImB,aAAAA,GAAoC;QACtC,OAAO,IAAI,CAACnB,GAAG,CAAC,eAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIoB,QAAAA,GAAsC;QACxC,OAAO,IAAI,CAACpB,GAAG,CAAC,UAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIqB,EAAAA,GAAoB;QACtB,OAAO,IAAI,CAACrB,GAAG,CAAC,IAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIsB,MAAAA,GAAgC;QAClC,OAAO,IAAI,CAACtB,GAAG,CAAC,QAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIuB,SAAAA,GAA8C;QAChD,OAAO,IAAI,CAACvB,GAAG,CAAC,WAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIwB,cAAAA,GAA+D;QACjE,OAAO,IAAI,CAACxB,GAAG,CAAC,gBAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIyB,KAAAA,GAAqC;QACvC,OAAO,IAAI,CAACzB,GAAG,CAAC,WAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIO,MAAAA,GAAS;QACX,OAAO,IAAI,CAACP,GAAG,CAAC,QAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAI0B,QAAAA,GAAW;AACb,QAAA,OAAO,IAAI,CAAC1B,GAAG,CAAC,YAAY2B,MAAM,EAAA;AACpC,IAAA;AAEAC,IAAAA,OAAAA,CAAQC,GAAgB,EAAE;AACxB,QAAA,OAAO,IAAI,CAAC7B,GAAG,CAAC,UAAA,CAAA,CAAYA,GAAG,CAAC6B,GAAAA,CAAAA;AAClC,IAAA;AAEA,IAAA,IAAIC,WAAAA,GAAc;AAChB,QAAA,OAAO,IAAI,CAAC9B,GAAG,CAAC,eAAe2B,MAAM,EAAA;AACvC,IAAA;AAEAI,IAAAA,UAAAA,CAAWF,GAAmB,EAAE;AAC9B,QAAA,OAAO,IAAI,CAAC7B,GAAG,CAAC,aAAA,CAAA,CAAeA,GAAG,CAAC6B,GAAAA,CAAAA;AACrC,IAAA;AAEA,IAAA,IAAIG,YAAAA,GAAoC;AACtC,QAAA,OAAO,IAAI,CAAChC,GAAG,CAAC,iBAAiB2B,MAAM,EAAA;AACzC,IAAA;AAEAM,IAAAA,WAAAA,CAAYC,IAAqB,EAAE;AACjC,QAAA,OAAO,IAAI,CAAClC,GAAG,CAAC,eAAA,CAAA,CAAiBA,GAAG,CAACkC,IAAAA,CAAAA;AACvC,IAAA;AAEA,IAAA,IAAIC,UAAAA,GAAgC;AAClC,QAAA,OAAO,IAAI,CAACnC,GAAG,CAAC,cAAc2B,MAAM,EAAA;AACtC,IAAA;AAEA,IAAA,IAAIS,QAAAA,GAAW;AACb,QAAA,OAAO,IAAI,CAACpC,GAAG,CAAC,YAAY2B,MAAM,EAAA;AACpC,IAAA;AAEAU,IAAAA,MAAAA,CAAOH,IAAY,EAAE;AACnB,QAAA,OAAO,IAAI,CAAClC,GAAG,CAAC,UAAA,CAAA,CAAYA,GAAG,CAACkC,IAAAA,CAAAA;AAClC,IAAA;AAEA,IAAA,IAAII,WAAAA,GAAc;AAChB,QAAA,OAAO,IAAI,CAACtC,GAAG,CAAC,eAAe2B,MAAM,EAAA;AACvC,IAAA;AAEAY,IAAAA,UAAAA,CAAWL,IAAY,EAAE;AACvB,QAAA,OAAO,IAAI,CAAClC,GAAG,CAAC,aAAA,CAAA,CAAeA,GAAG,CAACkC,IAAAA,CAAAA;AACrC,IAAA;AAEA,IAAA,IAAIM,OAAAA,GAAuC;AACzC,QAAA,OAAO,IAAI,CAACxC,GAAG,CAAC,WAAW2B,MAAM,EAAA;AACnC,IAAA;AAEAc,IAAAA,MAAAA,CAAOP,IAAY,EAAe;AAChC,QAAA,OAAO,IAAI,CAAClC,GAAG,CAAC,SAAA,CAAA,CAAWA,GAAG,CAACkC,IAAAA,CAAAA;AACjC,IAAA;AAEA,IAAA,IAAIQ,KAAAA,GAAQ;AACV,QAAA,OAAO,IAAI,CAAC1C,GAAG,CAAC,SAAS2B,MAAM,EAAA;AACjC,IAAA;AAEAgB,IAAAA,IAAAA,CAAKT,IAAY,EAAE;AACjB,QAAA,OAAO,IAAI,CAAClC,GAAG,CAAC,OAAA,CAAA,CAASA,GAAG,CAACkC,IAAAA,CAAAA;AAC/B,IAAA;AAEA,IAAA,IAAIU,IAAAA,GAAO;AACT,QAAA,OAAO,IAAI,CAAC5C,GAAG,CAAC,QAAQ2B,MAAM,EAAA;AAChC,IAAA;AAEAkB,IAAAA,GAAAA,CAAIX,IAAY,EAAe;AAC7B,QAAA,OAAO,IAAI,CAAClC,GAAG,CAAC,MAAA,CAAA,CAAQA,GAAG,CAACkC,IAAAA,CAAAA;AAC9B,IAAA;AAEA,IAAA,IAAIY,IAAAA,GAAO;QACT,OAAO,IAAI,CAAC9C,GAAG,CAAC,MAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAI+C,UAAAA,GAAa;QACf,OAAO,IAAI,CAAC/C,GAAG,CAAC,aAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIgD,wBAAAA,GAA0D;QAC5D,OAAO,IAAI,CAAChD,GAAG,CAAC,6BAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIiD,UAAAA,GAAa;QACf,OAAO,IAAI,CAACjD,GAAG,CAAC,YAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAIkD,UAAAA,GAAa;QACf,OAAO,IAAI,CAAClD,GAAG,CAAC,YAAA,CAAA;AAClB,IAAA;AAEA,IAAA,MAAMmD,KAAAA,GAAQ;QACZ,IAAI;AACF,YAAA,IAAI,CAAC,IAAI,CAACC,QAAQ,EAAE;gBAClB,MAAM,IAAI,CAACC,IAAI,EAAA;AACjB,YAAA;YAEA,MAAM,IAAI,CAACC,MAAM,EAAA;AAEjB,YAAA,OAAO,IAAI;AACb,QAAA,CAAA,CAAE,OAAOC,KAAAA,EAAO;YACd,OAAO,IAAI,CAACC,aAAa,CAACD,KAAAA,CAAAA;AAC5B,QAAA;AACF,IAAA;;IAGAE,wBAAAA,GAA2B;AACzB,QAAA,MAAMlD,WAASmD,2BAAAA,CAAqB,IAAI,CAACC,eAAe,EAAE,IAAI,CAAA;AAE9D,QAAA,MAAMC,WAASC,mBAAAA,CAAa;YAC1BC,KAAAA,EAAO,MAAA;YACP,GAAGvD,QAAAA,CAAOP,GAAG,CAAC,QAAA,CAAS;YACvB,GAAGO,QAAAA,CAAOP,GAAG,CAAC,sBAAA;AAChB,SAAA,CAAA;AAEA+D,QAAAA,uCAAAA,CAA2BxD,QAAAA,EAAQqD,QAAAA,CAAAA;;QAGnC,IAAI,CAACI,GAAG,CAAC,QAAA,EAAU,IAAMzD,QAAAA,CAAAA,CACtByD,GAAG,CAAC,cAAA,EAAgBC,WAAAA,CAAwB,IAAI,CAAA,CAAA,CAChDD,GAAG,CAAC,aAAA,EAAeE,OAAAA,CAAiB,IAAI,CAAA,CAAA,CACxCF,GAAG,CAAC,6BAAA,EAA+B,IAAMG,iDACzCH,GAAG,CAAC,QAAQI,OAAAA,EAAAA,CAAAA,CACZJ,GAAG,CAAC,QAAA,EAAU,IAAMK,qBAAa,IAAI,CAAA,CAAA,CACrCL,GAAG,CAAC,IAAA,EAAM,IAAMM,EAAAA,CAAe,IAAI,GACnCN,GAAG,CAAC,UAAA,EAAY,IAAMO,QAAAA,EAAAA,CAAAA,CACtBP,GAAG,CAAC,eAAA,EAAiB,IAAM7D,iCAAyB,CAAC,IAAI,CAAA,CAAA,CACzD6D,GAAG,CAAC,QAAA,EAAU,IAAMJ,UACpBI,GAAG,CAAC,SAAS,IAAM7D,uBAAuB,CAAC,IAAI,GAC/C6D,GAAG,CAAC,YAAY,IAAMQ,8BAAAA,CAAsB,IAAI,CAAA,CAAA,CAChDR,GAAG,CAAC,gBAAA,EAAkBtD,cAAAA,CAAAA,CACtBsD,GAAG,CAAC,cAAA,EAAgBS,aAAmB,IAAI,CAAA,CAAA,CAC3CT,GAAG,CAAC,iBAAA,EAAmBpD,SACvBoD,GAAG,CAAC,eAAA,EAAiB,IAAMU,OAAAA,CAAoB;AAAEC,gBAAAA,MAAAA,EAAQ,IAAI;gBAAElE,EAAAA,EAAI,IAAI,CAACA;aAAG,CAAA,CAAA,CAC3EuD,GAAG,CAAC,WAAA,EAAa,IAAMY,8BAAsB,IAAI,CAAA,CAAA,CACjDZ,GAAG,CAAC,IAAA,EAAM,IAAA;AACT,YAAA,MAAMa,SAAS,IAAI,CAACtE,MAAM,CAACP,GAAG,CAAC,2CAAA,CAAA,KAAiD,IAAA;AAChF,YAAA,MAAM8E,KAAAA,GAAQD,MAAAA,GAASlF,OAAAA,EAAAA,CAAUoF,iBAAiB,CAAC,IAAI,CAACzE,IAAI,CAAC0E,GAAG,CAACC,IAAI,CAAA,GAAI,IAAA;AACzE,YAAA,MAAMC,sBAAsBL,MAAAA,IAAUC,KAAAA;YACtC,MAAMK,UAAAA,GAAaD,sBAAsBJ,KAAAA,GAAQ,IAAI,CAACxE,IAAI,CAAC0E,GAAG,CAACC,IAAI;YACnE,OAAO,IAAIG,iBAAAA,CACTC,kBAAAA,CAAEC,KAAK,CAAC,IAAI,CAAC/E,MAAM,CAACP,GAAG,CAAC,UAAA,CAAA,EAAa;AACnC4D,wBAAAA,QAAAA;gBACA2B,QAAAA,EAAU;oBACRC,UAAAA,EAAY;wBACVC,GAAAA,EAAKC,qBAAAA,CAAKC,IAAI,CAACR,UAAAA,EAAY,qBAAA;AAC7B;AACF;AACF,aAAA,CAAA,CAAA;AAEJ,QAAA,CAAA,CAAA,CACCnB,GAAG,CAAC,QAAA,EAAU,IAAM4B,uBAAAA,CAAe,IAAI,CAAA,CAAA,CACvC5B,GAAG,CAAC,qBAAA,EAAuB,IAAM6B,gDAAAA,CAA+B,IAAI,CAAA,CAAA;AACzE,IAAA;IAEAC,oBAAAA,GAAuB;;;;AAIrB,QAAA,IAAI,CAACvE,SAAS,CACXwE,IAAI,CAAC,gBAAA,EAAkB;YACtBC,eAAAA,EAAiB;AACfC,gBAAAA,QAAAA,EAAU,IAAI,CAAC1F,MAAM,CAACP,GAAG,CAAC,4BAAA,CAAA;AAC1BwC,gBAAAA,OAAAA,EAAS0D,MAAAA,CAAOC,IAAI,CAAC,IAAI,CAAC3D,OAAO,CAAA;AACjC4D,gBAAAA,uBAAAA,EAAyBf,kBAAAA,CAAEgB,IAAI,CAAC,IAAI,CAACrE,YAAY,CAAA;AACjDsE,gBAAAA,kBAAAA,EAAoBjB,kBAAAA,CAAEgB,IAAI,CAAC,IAAI,CAAClE,UAAU,CAAA;gBAC1CoE,oBAAAA,EAAsBC,YAAAA,EAAAA;gBACtBC,yBAAAA,EAA2BC,iBAAAA,EAAAA;gBAC3BC,yBAAAA,EAA2BT,MAAAA,CAAOU,MAAM,CAAkB,IAAI,CAAC9E,WAAW,CAAA,CAAE+E,MAAM;AAEhF,gBAAA,CAAC9E,aAAeA,UAAAA,KAAe+E,SAAAA,IAAaC,4BAA4B,CAAChF,aACzEiF,MAAM;AACRC,gBAAAA,WAAAA,EAAa,IAAI,CAAC1G,MAAM,CAAC0G;AAG3B;AACF,SAAA,CAAA,CACCC,KAAK,CAAC,IAAI,CAAChG,GAAG,CAACqC,KAAK,CAAA;AACzB,IAAA;AAEA,IAAA,MAAM4D,SAAAA,CAAU,EAAEC,aAAa,EAA8B,EAAE;AAC7D,QAAA,MAAMC,kBACJ,IAAI,CAAC9G,MAAM,CAACP,GAAG,CAAC,aAAA,CAAA,KAAmB,aAAA,IACnC,IAAI,CAACO,MAAM,CAACP,GAAG,CAAC,kBAAkB,IAAA,CAAA,KAAU,KAAA;QAE9C,IAAIqH,eAAAA,IAAmB,CAACD,aAAAA,EAAe;YACrC,IAAI;AACF,gBAAA,MAAMjH,uBAAiB,CAAC,IAAI,CAACI,MAAM,CAAA;AACnC,gBAAA,IAAI,CAACgB,SAAS,CAACwE,IAAI,CAAC,YAAA,CAAA;AACtB,YAAA,CAAA,CAAE,OAAM;AACN,gBAAA,IAAI,CAACxE,SAAS,CAACwE,IAAI,CAAC,eAAA,CAAA;AACtB,YAAA;AACF,QAAA;AACF,IAAA;AAEA,IAAA,MAAMuB,UAAAA,GAAa;AACjB,QAAA,MAAMF,eAAAA,GAAgB,MAAMjH,2BAAmB,CAAC,IAAI,CAAA;AAEpD,QAAA,IAAI,CAACgB,aAAa,CAACoG,iBAAiB,CAAC;AAAEH,2BAAAA;AAAc,SAAA,CAAA;AAErD,QAAA,IAAI,CAAClG,GAAG,CAACsG,IAAI,CAAC,6BAAA,CAAA;AACd,QAAA,IAAI,CAAC1B,oBAAoB,EAAA;QACzB,IAAI,CAACqB,SAAS,CAAC;AAAEC,2BAAAA;AAAc,SAAA,CAAA;AACjC,IAAA;AAEA;;AAEC,MACD,MAAM9D,MAAAA,GAAS;QACb,OAAO,IAAImE,OAAAA,CAAc,CAACC,OAAAA,EAASC,MAAAA,GAAAA;AACjC,YAAA,MAAMC,QAAAA,GAAW,UAAA;gBACf,IAAI;oBACF,MAAM,IAAI,CAACN,UAAU,EAAA;AAErBI,oBAAAA,OAAAA,EAAAA;AACF,gBAAA,CAAA,CAAE,OAAOnE,KAAAA,EAAO;oBACdoE,MAAAA,CAAOpE,KAAAA,CAAAA;AACT,gBAAA;AACF,YAAA,CAAA;AAEA,YAAA,MAAMsE,eAAe,IAAI,CAACtH,MAAM,CAACP,GAAG,CAAC,eAAA,CAAA;AAErC,YAAA,IAAI6H,YAAAA,EAAc;AAChB,gBAAA,IAAI,CAACvG,MAAM,CAACgC,MAAM,CAACuE,YAAAA,EAAcD,QAAAA,CAAAA;YACnC,CAAA,MAAO;gBACL,MAAM,EAAEE,IAAI,EAAEC,IAAI,EAAE,GAAG,IAAI,CAACxH,MAAM,CAACP,GAAG,CAAC,QAAA,CAAA;AAEvC,gBAAA,IAAI,CAACsB,MAAM,CAACgC,MAAM,CAACyE,MAAMD,IAAAA,EAAMF,QAAAA,CAAAA;AACjC,YAAA;AACF,QAAA,CAAA,CAAA;AACF,IAAA;IAEApE,aAAAA,CAAcwE,GAAY,EAAEC,aAAsB,EAAS;AACzD,QAAA,IAAI,CAAC/G,GAAG,CAACgH,KAAK,CAAC,CAAC,wCAAwC,CAAC,CAAA;AACzD,QAAA,IAAID,aAAAA,EAAe;AACjB,YAAA,IAAI,CAAC/G,GAAG,CAACqC,KAAK,CAAC0E,aAAAA,CAAAA;AACjB,QAAA;AAEA,QAAA,IAAI,CAAC/G,GAAG,CAACqC,KAAK,CAACyE,GAAAA,CAAAA;QACf,OAAO,IAAI,CAACG,IAAI,EAAA;AAClB,IAAA;IAEAA,IAAAA,CAAKC,QAAAA,GAAW,CAAC,EAAS;AACxB,QAAA,IAAI,CAACC,OAAO,EAAA;AAEZ,QAAA,IAAI,IAAI,CAAC9H,MAAM,CAACP,GAAG,CAAC,YAAA,CAAA,EAAe;AACjCsI,YAAAA,OAAAA,CAAQvC,IAAI,GAAG,MAAA,CAAA;AACjB,QAAA;;AAGAuC,QAAAA,OAAAA,CAAQC,IAAI,CAACH,QAAAA,CAAAA;AACf,IAAA;AAEA,IAAA,MAAM/E,IAAAA,GAAO;QACX,MAAM,IAAI,CAACmF,QAAQ,EAAA;QACnB,MAAM,IAAI,CAACC,SAAS,EAAA;QAEpB,IAAI,CAACrF,QAAQ,GAAG,IAAA;AAEhB,QAAA,OAAO,IAAI;AACb,IAAA;AAEA,IAAA,MAAMoF,QAAAA,GAAW;;AAEf,QAAA,IAAI,CAACnI,EAAE,CAACqI,IAAI,CAAC,IAAI,CAACpI,IAAI,CAAC0E,GAAG,CAACC,IAAI,EAAE,IAAI,CAAC/D,GAAG,CAAA;QAEzC,KAAK,MAAMyH,YAAYC,iBAAAA,CAAW;YAChC,MAAMD,QAAAA,CAASH,QAAQ,GAAG,IAAI,CAAA;AAChC,QAAA;AAEA,QAAA,MAAM,IAAI,CAACK,oBAAoB,CAAC1I,qBAAgB,CAAC2I,QAAQ,CAAA;AACzD,QAAA,MAAM,IAAI,CAACC,iBAAiB,CAAC5I,qBAAgB,CAAC2I,QAAQ,CAAA;;QAGtD3I,6CAA4B,CAAC,IAAI,CAAA;AAEjC,QAAA,OAAO,IAAI;AACb,IAAA;AAEA,IAAA,MAAMsI,SAAAA,GAAY;AAChB,QAAA,IAAI,CAACO,oBAAoB,EAAA;AAEzB,QAAA,MAAMC,MAAAA,GAAS;AACV9I,YAAAA,GAAAA,2DAAmC,CACpC;AAAI+F,gBAAAA,GAAAA,MAAAA,CAAOU,MAAM,CAAC,IAAI,CAAC5E,YAAY,CAAA;AAAMkE,gBAAAA,GAAAA,MAAAA,CAAOU,MAAM,CAAC,IAAI,CAACzE,UAAU;AAAE,aAAA,EACxE,IAAI,CAAC1B,EAAE,CAACyI,QAAQ,CAACC,WAAW,CAAA;AAE3B,YAAA,GAAA,IAAI,CAACnJ,GAAG,CAAC,QAAA,CAAA,CAAUA,GAAG;AAC1B,SAAA;AAED,QAAA,MAAM,IAAI,CAACS,EAAE,CAACiI,IAAI,CAAC;AAAEO,YAAAA;AAAO,SAAA,CAAA;QAE5B,IAAIG,eAAAA;QACJ,IAAI,MAAM,IAAI,CAAC3I,EAAE,CAAC4I,mBAAmB,EAAA,CAAGC,QAAQ,CAACC,wBAAAA,CAAeC,SAAS,CAAA,EAAG;AAC1EJ,YAAAA,eAAAA,GAAkB,MAAM,IAAI,CAAC3H,KAAK,CAACzB,GAAG,CAAC;gBACrCyJ,IAAAA,EAAM,QAAA;gBACNvH,IAAAA,EAAM,eAAA;gBACNwH,GAAAA,EAAK;AACP,aAAA,CAAA;AACF,QAAA;AAEA,QAAA,MAAM,IAAI,CAAC/G,IAAI,CAAC,kCAAA,CAAA,CAAoCgH,IAAI,CAAC;AACvDP,YAAAA,eAAAA;YACApH,YAAAA,EAAc,IAAI,CAACA;AACrB,SAAA,CAAA;;;QAKA,MAAM4H,MAAAA,GAAS,MAAM,IAAI,CAACnJ,EAAE,CAACoJ,MAAM,CAACC,IAAI,EAAA;;AAGxC,QAAA,IAAIF,WAAW,SAAA,EAAW;AACxB,YAAA,MAAM,IAAI,CAACnJ,EAAE,CAACsJ,MAAM,CAACC,qBAAqB,CAAC;gBAAEC,KAAAA,EAAO;AAAiB,aAAA,CAAA;AACrE,YAAA,MAAM,IAAI,CAACxJ,EAAE,CAACsJ,MAAM,CAACC,qBAAqB,CAAC;gBAAEC,KAAAA,EAAO;AAAe,aAAA,CAAA;AACrE,QAAA;AAEA,QAAA,MAAMC,4BAA4B,MAAM,IAAI,CAACzI,KAAK,CAACzB,GAAG,CAAC;YACrDyJ,IAAAA,EAAM,QAAA;YACNC,GAAAA,EAAK;AACP,SAAA,CAAA;AAEA,QAAA,IAAI,CAACQ,yBAAAA,EAA2B;AAC9B,YAAA,MAAM,IAAI,CAACzJ,EAAE,CAACsJ,MAAM,CAACI,+BAA+B,CAACC,+CAAAA,CAAAA;AACrD,YAAA,MAAM,IAAI,CAAC3I,KAAK,CAAC4I,GAAG,CAAC;gBACnBZ,IAAAA,EAAM,QAAA;gBACNC,GAAAA,EAAK,sCAAA;gBACLY,KAAAA,EAAO;AACT,aAAA,CAAA;AACF,QAAA;QAEA,IAAI,IAAI,CAACpK,EAAE,EAAE;AACX,YAAA,MAAMC,KAAQ,CAACoK,YAAY,CAAC;AAAE5F,gBAAAA,MAAAA,EAAQ;AAAK,aAAA,CAAA;AAC7C,QAAA;AAEA,QAAA,MAAM,IAAI,CAAChC,IAAI,CAAC,iCAAA,CAAA,CAAmCgH,IAAI,CAAC;AACtDP,YAAAA,eAAAA;YACApH,YAAAA,EAAc,IAAI,CAACA;AACrB,SAAA,CAAA;AAEA,QAAA,MAAM,IAAI,CAACP,KAAK,CAAC4I,GAAG,CAAC;YACnBZ,IAAAA,EAAM,QAAA;YACNvH,IAAAA,EAAM,eAAA;YACNwH,GAAAA,EAAK,QAAA;YACLY,KAAAA,EAAO,IAAI,CAACtI;AACd,SAAA,CAAA;AAEA,QAAA,MAAM,IAAI,CAACV,MAAM,CAACkJ,eAAe,EAAA;QACjC,IAAI,CAAClJ,MAAM,CAACmJ,WAAW,EAAA;AAEvB,QAAA,MAAM,IAAI,CAAC1H,UAAU,CAAC2H,WAAW,CAACC,eAAe,EAAA;AAEjD,QAAA,MAAM,IAAI,CAAC9B,oBAAoB,CAAC1I,qBAAgB,CAACyK,SAAS,CAAA;QAE1D,KAAK,MAAMjC,YAAYC,iBAAAA,CAAW;YAChC,MAAMD,QAAAA,CAASF,SAAS,GAAG,IAAI,CAAA;AACjC,QAAA;AAEA,QAAA,MAAM,IAAI,CAACM,iBAAiB,CAAC5I,qBAAgB,CAACyK,SAAS,CAAA;AAEvD,QAAA,OAAO,IAAI;AACb,IAAA;IAEA5B,oBAAAA,GAAuB;AACrB,QAAA,MAAM6B,cAAc,IAAI,CAACtK,MAAM,CAACP,GAAG,CAAC,qBAAA,CAAA;AACpC,QAAA,MAAM8K,YAAY,IAAI,CAACvK,MAAM,CAACP,GAAG,CAAC,mBAAA,CAAA,IAAwB6K,WAAAA;AAC1D,QAAA,MAAME,aAAa,IAAI,CAACxK,MAAM,CAACP,GAAG,CAAC,oBAAA,CAAA,IAAyB6K,WAAAA;QAE5D,IAAI,CAACC,SAAAA,IAAa,CAACC,UAAAA,EAAY;AAC7B,YAAA;AACF,QAAA;AAEAC,QAAAA,qBAAAA,EAAAA;AAEA,QAAA,IAAIF,SAAAA,EAAW;YACb,IAAI,CAAC5J,GAAG,CAACsG,IAAI,CAAC,CAAC,kBAAkB,EAAEsD,SAAAA,CAAAA,CAAW,CAAA;YAC7CG,MAAAA,CAAeC,YAAY,CAACC,UAAU,GAAGL,SAAAA;AAC5C,QAAA;AAEA,QAAA,IAAIC,UAAAA,EAAY;YACd,IAAI,CAAC7J,GAAG,CAACsG,IAAI,CAAC,CAAC,mBAAmB,EAAEuD,UAAAA,CAAAA,CAAY,CAAA;YAC/CE,MAAAA,CAAeC,YAAY,CAACE,WAAW,GAAGL,UAAAA;AAC7C,QAAA;AACF,IAAA;AAEA,IAAA,MAAM1C,OAAAA,GAAU;AACd,QAAA,IAAI,CAACnH,GAAG,CAACsG,IAAI,CAAC,sBAAA,CAAA;AACd,QAAA,MAAM,IAAI,CAACqB,oBAAoB,CAAC1I,qBAAgB,CAACkL,OAAO,CAAA;QAExD,KAAK,MAAM1C,YAAYC,iBAAAA,CAAW;YAChC,MAAMD,QAAAA,CAASN,OAAO,GAAG,IAAI,CAAA;AAC/B,QAAA;AAEA,QAAA,MAAM,IAAI,CAACU,iBAAiB,CAAC5I,qBAAgB,CAACkL,OAAO,CAAA;AAErD,QAAA,MAAM,IAAI,CAAC/J,MAAM,CAAC+G,OAAO,EAAA;QAEzB,IAAI,CAACjH,QAAQ,CAACiH,OAAO,EAAA;QAErB,MAAM,IAAI,CAAC5H,EAAE,EAAE4H,OAAAA,EAAAA;AAEfC,QAAAA,OAAAA,CAAQgD,kBAAkB,EAAA;;AAG1B,QAAA,OAAOL,OAAOtG,MAAM;AAEpB,QAAA,IAAI,CAACzD,GAAG,CAACsG,IAAI,CAAC,2BAAA,CAAA;AAChB,IAAA;IAEA,MAAMqB,oBAAAA,CAAqB0C,aAAmD,EAAE;;AAE9E,QAAA,MAAM,IAAI,CAACvL,GAAG,CAAC,SAAA,CAAU,CAACuL,aAAAA,CAAc,EAAA;AAC1C,IAAA;IAEA,MAAMxC,iBAAAA,CAAkBwC,aAAmD,EAAE;;QAE3E,MAAMC,qBAAAA,GAAwB,IAAI,CAACxG,GAAG,IAAI,IAAI,CAACA,GAAG,CAACuG,aAAAA,CAAc;AACjE,QAAA,IAAIE,cAAWD,qBAAAA,CAAAA,EAAwB;AACrC,YAAA,MAAMA,qBAAAA,CAAsB;AAAE7G,gBAAAA,MAAAA,EAAQ;AAAK,aAAA,CAAA;AAC7C,QAAA;AACF,IAAA;AAIA+G,IAAAA,QAAAA,CAAkC7J,GAAS,EAAqD;;;;;;;;AAQ9F,QAAA,MAAMI,cAAc,IAAI,CAACjC,GAAG,CAAC,eAAA,CAAA,CAAiBA,GAAG,CAAC6B,GAAAA,CAAAA;AAElD,QAAA,IAAII,gBAAgB6E,SAAAA,EAAW;YAC7B,OAAO7E,WAAAA;AACT,QAAA;AAEA,QAAA,OAAO,IAAI,CAACjC,GAAG,CAAC,YAAA,CAAA,CAAcA,GAAG,CAAC6B,GAAAA,CAAAA;AACpC,IAAA;AAEA;;MAGA8J,KAAAA,CAAM9J,GAAe,EAAE;AACrB,QAAA,OAAO,IAAI,CAACpB,EAAE,CAACkL,KAAK,CAAC9J,GAAAA,CAAAA;AACvB,IAAA;AA1iBA,IAAA,WAAA,CAAY+J,IAAmB,CAAE;AAC/B,QAAA,KAAK,EAAA,EAAA,IAAA,CALPxI,QAAAA,GAAoB,KAAA,EAAA,IAAA,CAEpBO,eAAAA,GAA2C,EAAC;QAK1C,IAAI,CAACA,eAAe,GAAGkI,yBAAAA,CAAkBD,IAAAA,CAAAA;AAEzC,QAAA,IAAI,CAACnI,wBAAwB,EAAA;QAE7B,KAAK,MAAMkF,YAAYC,iBAAAA,CAAW;YAChCD,QAAAA,CAASD,IAAI,GAAG,IAAI,CAAA;AACtB,QAAA;AACF,IAAA;AAiiBF;;;;"}
1
+ {"version":3,"file":"Strapi.js","sources":["../src/Strapi.ts"],"sourcesContent":["import { bootstrap as bootstrapGlobalAgent } from 'global-agent';\nimport path from 'path';\nimport _ from 'lodash';\nimport { Logger, createLogger } from '@strapi/logger';\nimport { Database } from '@strapi/database';\n\nimport type { Core, Modules, UID, Schema } from '@strapi/types';\n\nimport { loadConfiguration } from './configuration';\nimport { warnDeprecatedServerConfig } from './configuration/server-config';\n\nimport * as factories from './factories';\n\nimport * as utils from './utils';\nimport { detectCustomizations } from './utils/detect-customizations';\nimport { Container } from './container';\nimport createStrapiFs from './services/fs';\nimport createEventHub from './services/event-hub';\nimport { createServer } from './services/server';\nimport { createReloader } from './services/reloader';\n\nimport { providers } from './providers';\nimport createEntityService from './services/entity-service';\nimport createQueryParamService from './services/query-params';\n\nimport entityValidator from './services/entity-validator';\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 getNumberOfConditionalFields from './services/utils/conditional-fields';\nimport { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\nimport { createLocalizationService } from './services/localization';\nimport { createContentSourceMapsService } from './services/content-source-maps';\n\nimport { coreStoreModel } from './services/core-store';\nimport { createConfigProvider } from './services/config';\n\nimport { cleanComponentJoinTable } from './services/document-service/utils/clean-component-join-table';\nimport { createContentAPISchemaRegistry } from './core-api/routes/validation/schema-registry';\n\n// Lazy: only resolved when `useTypescriptMigrations` is true (default false)\nlet lazyTsUtils: typeof import('@strapi/typescript-utils') | undefined;\nconst tsUtils = (): typeof import('@strapi/typescript-utils') => {\n if (!lazyTsUtils) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyTsUtils = require('@strapi/typescript-utils');\n }\n return lazyTsUtils as typeof import('@strapi/typescript-utils');\n};\n\nclass Strapi extends Container implements Core.Strapi {\n app: any;\n\n isLoaded: boolean = false;\n\n internal_config: Record<string, unknown> = {};\n\n constructor(opts: StrapiOptions) {\n super();\n\n this.internal_config = loadConfiguration(opts);\n\n this.registerInternalServices();\n\n for (const provider of providers) {\n provider.init?.(this);\n }\n }\n\n get admin(): Core.Module {\n return this.get('admin');\n }\n\n get ai(): Modules.AI.AiNamespace {\n return this.get('ai');\n }\n\n get EE(): boolean {\n return utils.ee.isEE;\n }\n\n get ee(): Core.Strapi['ee'] {\n return utils.ee;\n }\n\n get dirs(): Core.StrapiDirectories {\n return this.config.get('dirs');\n }\n\n get reload(): Core.Reloader {\n return this.get('reload');\n }\n\n get db(): Database {\n return this.get('db');\n }\n\n get requestContext(): Modules.RequestContext.RequestContext {\n return this.get('requestContext');\n }\n\n get customFields(): Modules.CustomFields.CustomFields {\n return this.get('customFields');\n }\n\n get entityValidator(): Modules.EntityValidator.EntityValidator {\n return this.get('entityValidator');\n }\n\n /**\n * @deprecated `strapi.entityService` will be removed in the next major version\n */\n get entityService(): Modules.EntityService.EntityService {\n return this.get('entityService');\n }\n\n get documents(): Modules.Documents.Service {\n return this.get('documents');\n }\n\n get localization(): Modules.Localization.Service {\n return this.get('localization');\n }\n\n get features(): FeaturesService {\n return this.get('features');\n }\n\n get fetch(): Modules.Fetch.Fetch {\n return this.get('fetch');\n }\n\n get cron(): Modules.Cron.CronService {\n return this.get('cron');\n }\n\n get log(): Logger {\n return this.get('logger');\n }\n\n get startupLogger(): Core.StartupLogger {\n return this.get('startupLogger');\n }\n\n get eventHub(): Modules.EventHub.EventHub {\n return this.get('eventHub');\n }\n\n get fs(): Core.StrapiFS {\n return this.get('fs');\n }\n\n get server(): Modules.Server.Server {\n return this.get('server');\n }\n\n get telemetry(): Modules.Metrics.TelemetryService {\n return this.get('telemetry');\n }\n\n get sessionManager(): Modules.SessionManager.SessionManagerService {\n return this.get('sessionManager');\n }\n\n get store(): Modules.CoreStore.CoreStore {\n return this.get('coreStore');\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: 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: UID.Controller) {\n return this.get('controllers').get(uid);\n }\n\n get contentTypes(): Schema.ContentTypes {\n return this.get('content-types').getAll();\n }\n\n contentType(name: UID.ContentType) {\n return this.get('content-types').get(name);\n }\n\n get components(): Schema.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, Core.Plugin> {\n return this.get('plugins').getAll();\n }\n\n plugin(name: string): Core.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 get apis() {\n return this.get('apis').getAll();\n }\n\n api(name: string): Core.Module {\n return this.get('apis').get(name);\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 contentAPISchemaRegistry(): Core.ContentAPISchemaRegistry {\n return this.get('content-api-schema-registry');\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 // TODO: split into more providers\n registerInternalServices() {\n const config = createConfigProvider(this.internal_config, this);\n\n const logger = createLogger({\n level: 'http', // Strapi defaults to level 'http'\n ...config.get('logger'), // DEPRECATED\n ...config.get('server.logger.config'),\n });\n\n warnDeprecatedServerConfig(config, logger);\n\n // Instantiate the Strapi container\n this.add('config', () => config)\n .add('query-params', createQueryParamService(this))\n .add('content-api', createContentAPI(this))\n .add('content-api-schema-registry', () => createContentAPISchemaRegistry())\n .add('auth', createAuth())\n .add('server', () => createServer(this))\n .add('fs', () => createStrapiFs(this))\n .add('eventHub', () => createEventHub())\n .add('startupLogger', () => utils.createStartupLogger(this))\n .add('logger', () => logger)\n .add('fetch', () => utils.createStrapiFetch(this))\n .add('features', () => createFeaturesService(this))\n .add('requestContext', requestContext)\n .add('customFields', createCustomFields(this))\n .add('entityValidator', entityValidator)\n .add('entityService', () => createEntityService({ strapi: this, db: this.db }))\n .add('documents', () => createDocumentService(this))\n .add('localization', () => createLocalizationService())\n .add('db', () => {\n const useTSM = this.config.get('database.settings.useTypescriptMigrations') === true;\n const tsDir = useTSM ? tsUtils().resolveOutDirSync(this.dirs.app.root) : null;\n const tsMigrationsEnabled = useTSM && tsDir;\n const projectDir = tsMigrationsEnabled ? tsDir : this.dirs.app.root;\n return new Database(\n _.merge(this.config.get('database'), {\n logger,\n settings: {\n migrations: {\n dir: path.join(projectDir, 'database/migrations'),\n },\n },\n })\n );\n })\n .add('reload', () => createReloader(this))\n .add('content-source-maps', () => createContentSourceMapsService(this));\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 numberOfConditionalFields: getNumberOfConditionalFields(),\n numberOfCustomControllers: Object.values<Core.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 getCustomizations() {\n return detectCustomizations(this);\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 {\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.log.info('Strapi started successfully');\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 async load() {\n await this.register();\n await this.bootstrap();\n\n this.isLoaded = true;\n\n return this;\n }\n\n async register() {\n // @ts-expect-error: init is internal\n this.ee.init(this.dirs.app.root, this.log);\n\n for (const provider of providers) {\n await provider.register?.(this);\n }\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.REGISTER);\n await this.runUserLifecycles(utils.LIFECYCLES.REGISTER);\n\n // NOTE: Swap type customField for underlying data type\n utils.convertCustomFieldType(this);\n\n return this;\n }\n\n async bootstrap() {\n this.configureGlobalProxy();\n\n const models = [\n ...utils.transformContentTypesToModels(\n [...Object.values(this.contentTypes), ...Object.values(this.components)],\n this.db.metadata.identifiers\n ),\n ...this.get('models').get(),\n ];\n\n await this.db.init({ models });\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 // NOTE: commenting out repair logic for now as it is causing relationship loss in some cases\n // will revisit soon in the future PR\n\n const status = await this.db.schema.sync();\n\n // // if schemas have changed, run repairs\n if (status === 'CHANGED') {\n await this.db.repair.removeOrphanMorphType({ pivot: 'component_type' });\n await this.db.repair.removeOrphanMorphType({ pivot: 'related_type' });\n }\n\n const alreadyRanComponentRepair = await this.store.get({\n type: 'strapi',\n key: 'unidirectional-join-table-repair-ran',\n });\n\n if (!alreadyRanComponentRepair) {\n await this.db.repair.processUnidirectionalJoinTables(cleanComponentJoinTable);\n await this.store.set({\n type: 'strapi',\n key: 'unidirectional-join-table-repair-ran',\n value: true,\n });\n }\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.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n for (const provider of providers) {\n await provider.bootstrap?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n return this;\n }\n\n configureGlobalProxy() {\n const globalProxy = this.config.get('server.proxy.global');\n const httpProxy = this.config.get('server.proxy.http') || globalProxy;\n const httpsProxy = this.config.get('server.proxy.https') || globalProxy;\n\n if (!httpProxy && !httpsProxy) {\n return;\n }\n\n bootstrapGlobalAgent();\n\n if (httpProxy) {\n this.log.info(`Using HTTP proxy: ${httpProxy}`);\n (global as any).GLOBAL_AGENT.HTTP_PROXY = httpProxy;\n }\n\n if (httpsProxy) {\n this.log.info(`Using HTTPS proxy: ${httpsProxy}`);\n (global as any).GLOBAL_AGENT.HTTPS_PROXY = httpsProxy;\n }\n }\n\n async destroy() {\n this.log.info('Shutting down Strapi');\n await this.runPluginsLifecycles(utils.LIFECYCLES.DESTROY);\n\n for (const provider of providers) {\n await provider.destroy?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.DESTROY);\n\n await this.server.destroy();\n\n this.eventHub.destroy();\n\n await this.db?.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 this.log.info('Strapi has been shut down');\n }\n\n async runPluginsLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n }\n\n async runUserLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // user\n const userLifecycleFunction = this.app && this.app[lifecycleName];\n if (typeof userLifecycleFunction === 'function') {\n await userLifecycleFunction({ strapi: this });\n }\n }\n\n getModel(uid: UID.ContentType): Schema.ContentType;\n getModel(uid: UID.Component): Schema.Component;\n getModel<TUID extends UID.Schema>(uid: TUID): Schema.ContentType | Schema.Component | undefined {\n // Looked up on the registries directly rather than through the `contentTypes` /\n // `components` getters. Those getters call `getAll()`, and the content-type registry\n // builds a fresh copy of every registered schema on each call. Reading `uid in\n // this.contentTypes` and then `this.contentTypes[uid]` therefore built that copy\n // twice per lookup, and a component uid built it four times over. `getModel` runs\n // once per relation, component, media and dynamic-zone node of every sanitized\n // response, which made this the single hottest path in a REST request.\n const contentType = this.get('content-types').get(uid as UID.ContentType);\n\n if (contentType !== undefined) {\n return contentType;\n }\n\n return this.get('components').get(uid as UID.Component);\n }\n\n /**\n * @deprecated Use `strapi.db.query` instead\n */\n query(uid: UID.Schema) {\n return this.db.query(uid);\n }\n}\n\nexport interface StrapiOptions {\n appDir: string;\n distDir: string;\n autoReload?: boolean;\n serveAdminPanel?: boolean;\n}\n\nexport default Strapi;\n"],"names":["lazyTsUtils","tsUtils","require","Strapi","Container","admin","get","ai","EE","utils","isEE","ee","dirs","config","reload","db","requestContext","customFields","entityValidator","entityService","documents","localization","features","fetch","cron","log","startupLogger","eventHub","fs","server","telemetry","sessionManager","store","services","getAll","service","uid","controllers","controller","contentTypes","contentType","name","components","policies","policy","middlewares","middleware","plugins","plugin","hooks","hook","apis","api","auth","contentAPI","contentAPISchemaRegistry","sanitizers","validators","start","isLoaded","load","listen","error","stopWithError","registerInternalServices","createConfigProvider","internal_config","logger","createLogger","level","warnDeprecatedServerConfig","add","createQueryParamService","createContentAPI","createContentAPISchemaRegistry","createAuth","createServer","createStrapiFs","createEventHub","createFeaturesService","createCustomFields","createEntityService","strapi","createDocumentService","createLocalizationService","useTSM","tsDir","resolveOutDirSync","app","root","tsMigrationsEnabled","projectDir","Database","_","merge","settings","migrations","dir","path","join","createReloader","createContentSourceMapsService","sendStartupTelemetry","send","groupProperties","database","Object","keys","numberOfAllContentTypes","size","numberOfComponents","numberOfDynamicZones","getNumberOfDynamicZones","numberOfConditionalFields","getNumberOfConditionalFields","numberOfCustomControllers","values","filter","undefined","factories","length","environment","catch","getCustomizations","detectCustomizations","openAdmin","isInitialized","shouldOpenAdmin","postListen","logStartupMessage","info","Promise","resolve","reject","onListen","listenSocket","host","port","err","customMessage","debug","stop","exitCode","destroy","process","exit","register","bootstrap","init","provider","providers","runPluginsLifecycles","REGISTER","runUserLifecycles","configureGlobalProxy","models","metadata","identifiers","oldContentTypes","getSchemaConnection","hasTable","coreStoreModel","tableName","type","key","call","status","schema","sync","repair","removeOrphanMorphType","pivot","alreadyRanComponentRepair","processUnidirectionalJoinTables","cleanComponentJoinTable","set","value","checkLicense","initMiddlewares","initRouting","permissions","registerActions","BOOTSTRAP","globalProxy","httpProxy","httpsProxy","bootstrapGlobalAgent","global","GLOBAL_AGENT","HTTP_PROXY","HTTPS_PROXY","DESTROY","removeAllListeners","lifecycleName","userLifecycleFunction","getModel","query","opts","loadConfiguration"],"mappings":"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"}
package/dist/Strapi.mjs CHANGED
@@ -1,7 +1,6 @@
1
1
  import { bootstrap } from 'global-agent';
2
2
  import path from 'path';
3
3
  import _ from 'lodash';
4
- import { isFunction } from 'lodash/fp';
5
4
  import { createLogger } from '@strapi/logger';
6
5
  import { Database } from '@strapi/database';
7
6
  import { loadConfiguration } from './configuration/index.mjs';
@@ -21,6 +20,7 @@ import { createStartupLogger } from './utils/startup-logger.mjs';
21
20
  import { transformContentTypesToModels } from './utils/transform-content-types-to-models.mjs';
22
21
  import { LIFECYCLES } from './utils/lifecycles.mjs';
23
22
  import 'node:path';
23
+ import { detectCustomizations } from './utils/detect-customizations.mjs';
24
24
  import { Container } from './container.mjs';
25
25
  import createStrapiFs from './services/fs.mjs';
26
26
  import createEventHub from './services/event-hub.mjs';
@@ -38,6 +38,7 @@ import getNumberOfDynamicZones from './services/utils/dynamic-zones.mjs';
38
38
  import getNumberOfConditionalFields from './services/utils/conditional-fields.mjs';
39
39
  import { createFeaturesService } from './services/features.mjs';
40
40
  import { createDocumentService } from './services/document-service/index.mjs';
41
+ import { createLocalizationService } from './services/localization.mjs';
41
42
  import { createContentSourceMapsService } from './services/content-source-maps.mjs';
42
43
  import { coreStoreModel } from './services/core-store.mjs';
43
44
  import { createConfigProvider } from './services/config.mjs';
@@ -92,6 +93,9 @@ class Strapi extends Container {
92
93
  get documents() {
93
94
  return this.get('documents');
94
95
  }
96
+ get localization() {
97
+ return this.get('localization');
98
+ }
95
99
  get features() {
96
100
  return this.get('features');
97
101
  }
@@ -218,7 +222,7 @@ class Strapi extends Container {
218
222
  this.add('config', ()=>config).add('query-params', createQueryParamService(this)).add('content-api', createContentAPI(this)).add('content-api-schema-registry', ()=>createContentAPISchemaRegistry()).add('auth', createAuthentication()).add('server', ()=>createServer(this)).add('fs', ()=>createStrapiFs(this)).add('eventHub', ()=>createEventHub()).add('startupLogger', ()=>createStartupLogger(this)).add('logger', ()=>logger).add('fetch', ()=>createStrapiFetch(this)).add('features', ()=>createFeaturesService(this)).add('requestContext', requestCtx).add('customFields', createCustomFields(this)).add('entityValidator', entityValidator).add('entityService', ()=>createEntityService({
219
223
  strapi: this,
220
224
  db: this.db
221
- })).add('documents', ()=>createDocumentService(this)).add('db', ()=>{
225
+ })).add('documents', ()=>createDocumentService(this)).add('localization', ()=>createLocalizationService()).add('db', ()=>{
222
226
  const useTSM = this.config.get('database.settings.useTypescriptMigrations') === true;
223
227
  const tsDir = useTSM ? tsUtils().resolveOutDirSync(this.dirs.app.root) : null;
224
228
  const tsMigrationsEnabled = useTSM && tsDir;
@@ -251,6 +255,9 @@ class Strapi extends Container {
251
255
  }
252
256
  }).catch(this.log.error);
253
257
  }
258
+ getCustomizations() {
259
+ return detectCustomizations(this);
260
+ }
254
261
  async openAdmin({ isInitialized }) {
255
262
  const shouldOpenAdmin = this.config.get('environment') === 'development' && this.config.get('admin.autoOpen', true) !== false;
256
263
  if (shouldOpenAdmin && !isInitialized) {
@@ -440,7 +447,7 @@ class Strapi extends Container {
440
447
  async runUserLifecycles(lifecycleName) {
441
448
  // user
442
449
  const userLifecycleFunction = this.app && this.app[lifecycleName];
443
- if (isFunction(userLifecycleFunction)) {
450
+ if (typeof userLifecycleFunction === 'function') {
444
451
  await userLifecycleFunction({
445
452
  strapi: this
446
453
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Strapi.mjs","sources":["../src/Strapi.ts"],"sourcesContent":["import { bootstrap as bootstrapGlobalAgent } from 'global-agent';\nimport path from 'path';\nimport _ from 'lodash';\nimport { isFunction } from 'lodash/fp';\nimport { Logger, createLogger } from '@strapi/logger';\nimport { Database } from '@strapi/database';\n\nimport type { Core, Modules, UID, Schema } from '@strapi/types';\n\nimport { loadConfiguration } from './configuration';\nimport { warnDeprecatedServerConfig } from './configuration/server-config';\n\nimport * as factories from './factories';\n\nimport * as utils from './utils';\nimport { Container } from './container';\nimport createStrapiFs from './services/fs';\nimport createEventHub from './services/event-hub';\nimport { createServer } from './services/server';\nimport { createReloader } from './services/reloader';\n\nimport { providers } from './providers';\nimport createEntityService from './services/entity-service';\nimport createQueryParamService from './services/query-params';\n\nimport entityValidator from './services/entity-validator';\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 getNumberOfConditionalFields from './services/utils/conditional-fields';\nimport { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\nimport { createContentSourceMapsService } from './services/content-source-maps';\n\nimport { coreStoreModel } from './services/core-store';\nimport { createConfigProvider } from './services/config';\n\nimport { cleanComponentJoinTable } from './services/document-service/utils/clean-component-join-table';\nimport { createContentAPISchemaRegistry } from './core-api/routes/validation/schema-registry';\n\n// Lazy: only resolved when `useTypescriptMigrations` is true (default false)\nlet lazyTsUtils: typeof import('@strapi/typescript-utils') | undefined;\nconst tsUtils = (): typeof import('@strapi/typescript-utils') => {\n if (!lazyTsUtils) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyTsUtils = require('@strapi/typescript-utils');\n }\n return lazyTsUtils as typeof import('@strapi/typescript-utils');\n};\n\nclass Strapi extends Container implements Core.Strapi {\n app: any;\n\n isLoaded: boolean = false;\n\n internal_config: Record<string, unknown> = {};\n\n constructor(opts: StrapiOptions) {\n super();\n\n this.internal_config = loadConfiguration(opts);\n\n this.registerInternalServices();\n\n for (const provider of providers) {\n provider.init?.(this);\n }\n }\n\n get admin(): Core.Module {\n return this.get('admin');\n }\n\n get ai(): Modules.AI.AiNamespace {\n return this.get('ai');\n }\n\n get EE(): boolean {\n return utils.ee.isEE;\n }\n\n get ee(): Core.Strapi['ee'] {\n return utils.ee;\n }\n\n get dirs(): Core.StrapiDirectories {\n return this.config.get('dirs');\n }\n\n get reload(): Core.Reloader {\n return this.get('reload');\n }\n\n get db(): Database {\n return this.get('db');\n }\n\n get requestContext(): Modules.RequestContext.RequestContext {\n return this.get('requestContext');\n }\n\n get customFields(): Modules.CustomFields.CustomFields {\n return this.get('customFields');\n }\n\n get entityValidator(): Modules.EntityValidator.EntityValidator {\n return this.get('entityValidator');\n }\n\n /**\n * @deprecated `strapi.entityService` will be removed in the next major version\n */\n get entityService(): Modules.EntityService.EntityService {\n return this.get('entityService');\n }\n\n get documents(): Modules.Documents.Service {\n return this.get('documents');\n }\n\n get features(): FeaturesService {\n return this.get('features');\n }\n\n get fetch(): Modules.Fetch.Fetch {\n return this.get('fetch');\n }\n\n get cron(): Modules.Cron.CronService {\n return this.get('cron');\n }\n\n get log(): Logger {\n return this.get('logger');\n }\n\n get startupLogger(): Core.StartupLogger {\n return this.get('startupLogger');\n }\n\n get eventHub(): Modules.EventHub.EventHub {\n return this.get('eventHub');\n }\n\n get fs(): Core.StrapiFS {\n return this.get('fs');\n }\n\n get server(): Modules.Server.Server {\n return this.get('server');\n }\n\n get telemetry(): Modules.Metrics.TelemetryService {\n return this.get('telemetry');\n }\n\n get sessionManager(): Modules.SessionManager.SessionManagerService {\n return this.get('sessionManager');\n }\n\n get store(): Modules.CoreStore.CoreStore {\n return this.get('coreStore');\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: 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: UID.Controller) {\n return this.get('controllers').get(uid);\n }\n\n get contentTypes(): Schema.ContentTypes {\n return this.get('content-types').getAll();\n }\n\n contentType(name: UID.ContentType) {\n return this.get('content-types').get(name);\n }\n\n get components(): Schema.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, Core.Plugin> {\n return this.get('plugins').getAll();\n }\n\n plugin(name: string): Core.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 get apis() {\n return this.get('apis').getAll();\n }\n\n api(name: string): Core.Module {\n return this.get('apis').get(name);\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 contentAPISchemaRegistry(): Core.ContentAPISchemaRegistry {\n return this.get('content-api-schema-registry');\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 // TODO: split into more providers\n registerInternalServices() {\n const config = createConfigProvider(this.internal_config, this);\n\n const logger = createLogger({\n level: 'http', // Strapi defaults to level 'http'\n ...config.get('logger'), // DEPRECATED\n ...config.get('server.logger.config'),\n });\n\n warnDeprecatedServerConfig(config, logger);\n\n // Instantiate the Strapi container\n this.add('config', () => config)\n .add('query-params', createQueryParamService(this))\n .add('content-api', createContentAPI(this))\n .add('content-api-schema-registry', () => createContentAPISchemaRegistry())\n .add('auth', createAuth())\n .add('server', () => createServer(this))\n .add('fs', () => createStrapiFs(this))\n .add('eventHub', () => createEventHub())\n .add('startupLogger', () => utils.createStartupLogger(this))\n .add('logger', () => logger)\n .add('fetch', () => utils.createStrapiFetch(this))\n .add('features', () => createFeaturesService(this))\n .add('requestContext', requestContext)\n .add('customFields', createCustomFields(this))\n .add('entityValidator', entityValidator)\n .add('entityService', () => createEntityService({ strapi: this, db: this.db }))\n .add('documents', () => createDocumentService(this))\n .add('db', () => {\n const useTSM = this.config.get('database.settings.useTypescriptMigrations') === true;\n const tsDir = useTSM ? tsUtils().resolveOutDirSync(this.dirs.app.root) : null;\n const tsMigrationsEnabled = useTSM && tsDir;\n const projectDir = tsMigrationsEnabled ? tsDir : this.dirs.app.root;\n return new Database(\n _.merge(this.config.get('database'), {\n logger,\n settings: {\n migrations: {\n dir: path.join(projectDir, 'database/migrations'),\n },\n },\n })\n );\n })\n .add('reload', () => createReloader(this))\n .add('content-source-maps', () => createContentSourceMapsService(this));\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 numberOfConditionalFields: getNumberOfConditionalFields(),\n numberOfCustomControllers: Object.values<Core.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 {\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.log.info('Strapi started successfully');\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 async load() {\n await this.register();\n await this.bootstrap();\n\n this.isLoaded = true;\n\n return this;\n }\n\n async register() {\n // @ts-expect-error: init is internal\n this.ee.init(this.dirs.app.root, this.log);\n\n for (const provider of providers) {\n await provider.register?.(this);\n }\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.REGISTER);\n await this.runUserLifecycles(utils.LIFECYCLES.REGISTER);\n\n // NOTE: Swap type customField for underlying data type\n utils.convertCustomFieldType(this);\n\n return this;\n }\n\n async bootstrap() {\n this.configureGlobalProxy();\n\n const models = [\n ...utils.transformContentTypesToModels(\n [...Object.values(this.contentTypes), ...Object.values(this.components)],\n this.db.metadata.identifiers\n ),\n ...this.get('models').get(),\n ];\n\n await this.db.init({ models });\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 // NOTE: commenting out repair logic for now as it is causing relationship loss in some cases\n // will revisit soon in the future PR\n\n const status = await this.db.schema.sync();\n\n // // if schemas have changed, run repairs\n if (status === 'CHANGED') {\n await this.db.repair.removeOrphanMorphType({ pivot: 'component_type' });\n await this.db.repair.removeOrphanMorphType({ pivot: 'related_type' });\n }\n\n const alreadyRanComponentRepair = await this.store.get({\n type: 'strapi',\n key: 'unidirectional-join-table-repair-ran',\n });\n\n if (!alreadyRanComponentRepair) {\n await this.db.repair.processUnidirectionalJoinTables(cleanComponentJoinTable);\n await this.store.set({\n type: 'strapi',\n key: 'unidirectional-join-table-repair-ran',\n value: true,\n });\n }\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.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n for (const provider of providers) {\n await provider.bootstrap?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n return this;\n }\n\n configureGlobalProxy() {\n const globalProxy = this.config.get('server.proxy.global');\n const httpProxy = this.config.get('server.proxy.http') || globalProxy;\n const httpsProxy = this.config.get('server.proxy.https') || globalProxy;\n\n if (!httpProxy && !httpsProxy) {\n return;\n }\n\n bootstrapGlobalAgent();\n\n if (httpProxy) {\n this.log.info(`Using HTTP proxy: ${httpProxy}`);\n (global as any).GLOBAL_AGENT.HTTP_PROXY = httpProxy;\n }\n\n if (httpsProxy) {\n this.log.info(`Using HTTPS proxy: ${httpsProxy}`);\n (global as any).GLOBAL_AGENT.HTTPS_PROXY = httpsProxy;\n }\n }\n\n async destroy() {\n this.log.info('Shutting down Strapi');\n await this.runPluginsLifecycles(utils.LIFECYCLES.DESTROY);\n\n for (const provider of providers) {\n await provider.destroy?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.DESTROY);\n\n await this.server.destroy();\n\n this.eventHub.destroy();\n\n await this.db?.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 this.log.info('Strapi has been shut down');\n }\n\n async runPluginsLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n }\n\n async runUserLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\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: UID.ContentType): Schema.ContentType;\n getModel(uid: UID.Component): Schema.Component;\n getModel<TUID extends UID.Schema>(uid: TUID): Schema.ContentType | Schema.Component | undefined {\n // Looked up on the registries directly rather than through the `contentTypes` /\n // `components` getters. Those getters call `getAll()`, and the content-type registry\n // builds a fresh copy of every registered schema on each call. Reading `uid in\n // this.contentTypes` and then `this.contentTypes[uid]` therefore built that copy\n // twice per lookup, and a component uid built it four times over. `getModel` runs\n // once per relation, component, media and dynamic-zone node of every sanitized\n // response, which made this the single hottest path in a REST request.\n const contentType = this.get('content-types').get(uid as UID.ContentType);\n\n if (contentType !== undefined) {\n return contentType;\n }\n\n return this.get('components').get(uid as UID.Component);\n }\n\n /**\n * @deprecated Use `strapi.db.query` instead\n */\n query(uid: UID.Schema) {\n return this.db.query(uid);\n }\n}\n\nexport interface StrapiOptions {\n appDir: string;\n distDir: string;\n autoReload?: boolean;\n serveAdminPanel?: boolean;\n}\n\nexport default Strapi;\n"],"names":["lazyTsUtils","tsUtils","require","Strapi","Container","admin","get","ai","EE","utils","isEE","ee","dirs","config","reload","db","requestContext","customFields","entityValidator","entityService","documents","features","fetch","cron","log","startupLogger","eventHub","fs","server","telemetry","sessionManager","store","services","getAll","service","uid","controllers","controller","contentTypes","contentType","name","components","policies","policy","middlewares","middleware","plugins","plugin","hooks","hook","apis","api","auth","contentAPI","contentAPISchemaRegistry","sanitizers","validators","start","isLoaded","load","listen","error","stopWithError","registerInternalServices","createConfigProvider","internal_config","logger","createLogger","level","warnDeprecatedServerConfig","add","createQueryParamService","createContentAPI","createContentAPISchemaRegistry","createAuth","createServer","createStrapiFs","createEventHub","createFeaturesService","createCustomFields","createEntityService","strapi","createDocumentService","useTSM","tsDir","resolveOutDirSync","app","root","tsMigrationsEnabled","projectDir","Database","_","merge","settings","migrations","dir","path","join","createReloader","createContentSourceMapsService","sendStartupTelemetry","send","groupProperties","database","Object","keys","numberOfAllContentTypes","size","numberOfComponents","numberOfDynamicZones","getNumberOfDynamicZones","numberOfConditionalFields","getNumberOfConditionalFields","numberOfCustomControllers","values","filter","undefined","factories","length","environment","catch","openAdmin","isInitialized","shouldOpenAdmin","postListen","logStartupMessage","info","Promise","resolve","reject","onListen","listenSocket","host","port","err","customMessage","debug","stop","exitCode","destroy","process","exit","register","bootstrap","init","provider","providers","runPluginsLifecycles","REGISTER","runUserLifecycles","configureGlobalProxy","models","metadata","identifiers","oldContentTypes","getSchemaConnection","hasTable","coreStoreModel","tableName","type","key","call","status","schema","sync","repair","removeOrphanMorphType","pivot","alreadyRanComponentRepair","processUnidirectionalJoinTables","cleanComponentJoinTable","set","value","checkLicense","initMiddlewares","initRouting","permissions","registerActions","BOOTSTRAP","globalProxy","httpProxy","httpsProxy","bootstrapGlobalAgent","global","GLOBAL_AGENT","HTTP_PROXY","HTTPS_PROXY","DESTROY","removeAllListeners","lifecycleName","userLifecycleFunction","isFunction","getModel","query","opts","loadConfiguration"],"mappings":"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"}
1
+ {"version":3,"file":"Strapi.mjs","sources":["../src/Strapi.ts"],"sourcesContent":["import { bootstrap as bootstrapGlobalAgent } from 'global-agent';\nimport path from 'path';\nimport _ from 'lodash';\nimport { Logger, createLogger } from '@strapi/logger';\nimport { Database } from '@strapi/database';\n\nimport type { Core, Modules, UID, Schema } from '@strapi/types';\n\nimport { loadConfiguration } from './configuration';\nimport { warnDeprecatedServerConfig } from './configuration/server-config';\n\nimport * as factories from './factories';\n\nimport * as utils from './utils';\nimport { detectCustomizations } from './utils/detect-customizations';\nimport { Container } from './container';\nimport createStrapiFs from './services/fs';\nimport createEventHub from './services/event-hub';\nimport { createServer } from './services/server';\nimport { createReloader } from './services/reloader';\n\nimport { providers } from './providers';\nimport createEntityService from './services/entity-service';\nimport createQueryParamService from './services/query-params';\n\nimport entityValidator from './services/entity-validator';\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 getNumberOfConditionalFields from './services/utils/conditional-fields';\nimport { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\nimport { createLocalizationService } from './services/localization';\nimport { createContentSourceMapsService } from './services/content-source-maps';\n\nimport { coreStoreModel } from './services/core-store';\nimport { createConfigProvider } from './services/config';\n\nimport { cleanComponentJoinTable } from './services/document-service/utils/clean-component-join-table';\nimport { createContentAPISchemaRegistry } from './core-api/routes/validation/schema-registry';\n\n// Lazy: only resolved when `useTypescriptMigrations` is true (default false)\nlet lazyTsUtils: typeof import('@strapi/typescript-utils') | undefined;\nconst tsUtils = (): typeof import('@strapi/typescript-utils') => {\n if (!lazyTsUtils) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyTsUtils = require('@strapi/typescript-utils');\n }\n return lazyTsUtils as typeof import('@strapi/typescript-utils');\n};\n\nclass Strapi extends Container implements Core.Strapi {\n app: any;\n\n isLoaded: boolean = false;\n\n internal_config: Record<string, unknown> = {};\n\n constructor(opts: StrapiOptions) {\n super();\n\n this.internal_config = loadConfiguration(opts);\n\n this.registerInternalServices();\n\n for (const provider of providers) {\n provider.init?.(this);\n }\n }\n\n get admin(): Core.Module {\n return this.get('admin');\n }\n\n get ai(): Modules.AI.AiNamespace {\n return this.get('ai');\n }\n\n get EE(): boolean {\n return utils.ee.isEE;\n }\n\n get ee(): Core.Strapi['ee'] {\n return utils.ee;\n }\n\n get dirs(): Core.StrapiDirectories {\n return this.config.get('dirs');\n }\n\n get reload(): Core.Reloader {\n return this.get('reload');\n }\n\n get db(): Database {\n return this.get('db');\n }\n\n get requestContext(): Modules.RequestContext.RequestContext {\n return this.get('requestContext');\n }\n\n get customFields(): Modules.CustomFields.CustomFields {\n return this.get('customFields');\n }\n\n get entityValidator(): Modules.EntityValidator.EntityValidator {\n return this.get('entityValidator');\n }\n\n /**\n * @deprecated `strapi.entityService` will be removed in the next major version\n */\n get entityService(): Modules.EntityService.EntityService {\n return this.get('entityService');\n }\n\n get documents(): Modules.Documents.Service {\n return this.get('documents');\n }\n\n get localization(): Modules.Localization.Service {\n return this.get('localization');\n }\n\n get features(): FeaturesService {\n return this.get('features');\n }\n\n get fetch(): Modules.Fetch.Fetch {\n return this.get('fetch');\n }\n\n get cron(): Modules.Cron.CronService {\n return this.get('cron');\n }\n\n get log(): Logger {\n return this.get('logger');\n }\n\n get startupLogger(): Core.StartupLogger {\n return this.get('startupLogger');\n }\n\n get eventHub(): Modules.EventHub.EventHub {\n return this.get('eventHub');\n }\n\n get fs(): Core.StrapiFS {\n return this.get('fs');\n }\n\n get server(): Modules.Server.Server {\n return this.get('server');\n }\n\n get telemetry(): Modules.Metrics.TelemetryService {\n return this.get('telemetry');\n }\n\n get sessionManager(): Modules.SessionManager.SessionManagerService {\n return this.get('sessionManager');\n }\n\n get store(): Modules.CoreStore.CoreStore {\n return this.get('coreStore');\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: 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: UID.Controller) {\n return this.get('controllers').get(uid);\n }\n\n get contentTypes(): Schema.ContentTypes {\n return this.get('content-types').getAll();\n }\n\n contentType(name: UID.ContentType) {\n return this.get('content-types').get(name);\n }\n\n get components(): Schema.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, Core.Plugin> {\n return this.get('plugins').getAll();\n }\n\n plugin(name: string): Core.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 get apis() {\n return this.get('apis').getAll();\n }\n\n api(name: string): Core.Module {\n return this.get('apis').get(name);\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 contentAPISchemaRegistry(): Core.ContentAPISchemaRegistry {\n return this.get('content-api-schema-registry');\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 // TODO: split into more providers\n registerInternalServices() {\n const config = createConfigProvider(this.internal_config, this);\n\n const logger = createLogger({\n level: 'http', // Strapi defaults to level 'http'\n ...config.get('logger'), // DEPRECATED\n ...config.get('server.logger.config'),\n });\n\n warnDeprecatedServerConfig(config, logger);\n\n // Instantiate the Strapi container\n this.add('config', () => config)\n .add('query-params', createQueryParamService(this))\n .add('content-api', createContentAPI(this))\n .add('content-api-schema-registry', () => createContentAPISchemaRegistry())\n .add('auth', createAuth())\n .add('server', () => createServer(this))\n .add('fs', () => createStrapiFs(this))\n .add('eventHub', () => createEventHub())\n .add('startupLogger', () => utils.createStartupLogger(this))\n .add('logger', () => logger)\n .add('fetch', () => utils.createStrapiFetch(this))\n .add('features', () => createFeaturesService(this))\n .add('requestContext', requestContext)\n .add('customFields', createCustomFields(this))\n .add('entityValidator', entityValidator)\n .add('entityService', () => createEntityService({ strapi: this, db: this.db }))\n .add('documents', () => createDocumentService(this))\n .add('localization', () => createLocalizationService())\n .add('db', () => {\n const useTSM = this.config.get('database.settings.useTypescriptMigrations') === true;\n const tsDir = useTSM ? tsUtils().resolveOutDirSync(this.dirs.app.root) : null;\n const tsMigrationsEnabled = useTSM && tsDir;\n const projectDir = tsMigrationsEnabled ? tsDir : this.dirs.app.root;\n return new Database(\n _.merge(this.config.get('database'), {\n logger,\n settings: {\n migrations: {\n dir: path.join(projectDir, 'database/migrations'),\n },\n },\n })\n );\n })\n .add('reload', () => createReloader(this))\n .add('content-source-maps', () => createContentSourceMapsService(this));\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 numberOfConditionalFields: getNumberOfConditionalFields(),\n numberOfCustomControllers: Object.values<Core.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 getCustomizations() {\n return detectCustomizations(this);\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 {\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.log.info('Strapi started successfully');\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 async load() {\n await this.register();\n await this.bootstrap();\n\n this.isLoaded = true;\n\n return this;\n }\n\n async register() {\n // @ts-expect-error: init is internal\n this.ee.init(this.dirs.app.root, this.log);\n\n for (const provider of providers) {\n await provider.register?.(this);\n }\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.REGISTER);\n await this.runUserLifecycles(utils.LIFECYCLES.REGISTER);\n\n // NOTE: Swap type customField for underlying data type\n utils.convertCustomFieldType(this);\n\n return this;\n }\n\n async bootstrap() {\n this.configureGlobalProxy();\n\n const models = [\n ...utils.transformContentTypesToModels(\n [...Object.values(this.contentTypes), ...Object.values(this.components)],\n this.db.metadata.identifiers\n ),\n ...this.get('models').get(),\n ];\n\n await this.db.init({ models });\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 // NOTE: commenting out repair logic for now as it is causing relationship loss in some cases\n // will revisit soon in the future PR\n\n const status = await this.db.schema.sync();\n\n // // if schemas have changed, run repairs\n if (status === 'CHANGED') {\n await this.db.repair.removeOrphanMorphType({ pivot: 'component_type' });\n await this.db.repair.removeOrphanMorphType({ pivot: 'related_type' });\n }\n\n const alreadyRanComponentRepair = await this.store.get({\n type: 'strapi',\n key: 'unidirectional-join-table-repair-ran',\n });\n\n if (!alreadyRanComponentRepair) {\n await this.db.repair.processUnidirectionalJoinTables(cleanComponentJoinTable);\n await this.store.set({\n type: 'strapi',\n key: 'unidirectional-join-table-repair-ran',\n value: true,\n });\n }\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.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runPluginsLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n for (const provider of providers) {\n await provider.bootstrap?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.BOOTSTRAP);\n\n return this;\n }\n\n configureGlobalProxy() {\n const globalProxy = this.config.get('server.proxy.global');\n const httpProxy = this.config.get('server.proxy.http') || globalProxy;\n const httpsProxy = this.config.get('server.proxy.https') || globalProxy;\n\n if (!httpProxy && !httpsProxy) {\n return;\n }\n\n bootstrapGlobalAgent();\n\n if (httpProxy) {\n this.log.info(`Using HTTP proxy: ${httpProxy}`);\n (global as any).GLOBAL_AGENT.HTTP_PROXY = httpProxy;\n }\n\n if (httpsProxy) {\n this.log.info(`Using HTTPS proxy: ${httpsProxy}`);\n (global as any).GLOBAL_AGENT.HTTPS_PROXY = httpsProxy;\n }\n }\n\n async destroy() {\n this.log.info('Shutting down Strapi');\n await this.runPluginsLifecycles(utils.LIFECYCLES.DESTROY);\n\n for (const provider of providers) {\n await provider.destroy?.(this);\n }\n\n await this.runUserLifecycles(utils.LIFECYCLES.DESTROY);\n\n await this.server.destroy();\n\n this.eventHub.destroy();\n\n await this.db?.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 this.log.info('Strapi has been shut down');\n }\n\n async runPluginsLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n }\n\n async runUserLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // user\n const userLifecycleFunction = this.app && this.app[lifecycleName];\n if (typeof userLifecycleFunction === 'function') {\n await userLifecycleFunction({ strapi: this });\n }\n }\n\n getModel(uid: UID.ContentType): Schema.ContentType;\n getModel(uid: UID.Component): Schema.Component;\n getModel<TUID extends UID.Schema>(uid: TUID): Schema.ContentType | Schema.Component | undefined {\n // Looked up on the registries directly rather than through the `contentTypes` /\n // `components` getters. Those getters call `getAll()`, and the content-type registry\n // builds a fresh copy of every registered schema on each call. Reading `uid in\n // this.contentTypes` and then `this.contentTypes[uid]` therefore built that copy\n // twice per lookup, and a component uid built it four times over. `getModel` runs\n // once per relation, component, media and dynamic-zone node of every sanitized\n // response, which made this the single hottest path in a REST request.\n const contentType = this.get('content-types').get(uid as UID.ContentType);\n\n if (contentType !== undefined) {\n return contentType;\n }\n\n return this.get('components').get(uid as UID.Component);\n }\n\n /**\n * @deprecated Use `strapi.db.query` instead\n */\n query(uid: UID.Schema) {\n return this.db.query(uid);\n }\n}\n\nexport interface StrapiOptions {\n appDir: string;\n distDir: string;\n autoReload?: boolean;\n serveAdminPanel?: boolean;\n}\n\nexport default Strapi;\n"],"names":["lazyTsUtils","tsUtils","require","Strapi","Container","admin","get","ai","EE","utils","isEE","ee","dirs","config","reload","db","requestContext","customFields","entityValidator","entityService","documents","localization","features","fetch","cron","log","startupLogger","eventHub","fs","server","telemetry","sessionManager","store","services","getAll","service","uid","controllers","controller","contentTypes","contentType","name","components","policies","policy","middlewares","middleware","plugins","plugin","hooks","hook","apis","api","auth","contentAPI","contentAPISchemaRegistry","sanitizers","validators","start","isLoaded","load","listen","error","stopWithError","registerInternalServices","createConfigProvider","internal_config","logger","createLogger","level","warnDeprecatedServerConfig","add","createQueryParamService","createContentAPI","createContentAPISchemaRegistry","createAuth","createServer","createStrapiFs","createEventHub","createFeaturesService","createCustomFields","createEntityService","strapi","createDocumentService","createLocalizationService","useTSM","tsDir","resolveOutDirSync","app","root","tsMigrationsEnabled","projectDir","Database","_","merge","settings","migrations","dir","path","join","createReloader","createContentSourceMapsService","sendStartupTelemetry","send","groupProperties","database","Object","keys","numberOfAllContentTypes","size","numberOfComponents","numberOfDynamicZones","getNumberOfDynamicZones","numberOfConditionalFields","getNumberOfConditionalFields","numberOfCustomControllers","values","filter","undefined","factories","length","environment","catch","getCustomizations","detectCustomizations","openAdmin","isInitialized","shouldOpenAdmin","postListen","logStartupMessage","info","Promise","resolve","reject","onListen","listenSocket","host","port","err","customMessage","debug","stop","exitCode","destroy","process","exit","register","bootstrap","init","provider","providers","runPluginsLifecycles","REGISTER","runUserLifecycles","configureGlobalProxy","models","metadata","identifiers","oldContentTypes","getSchemaConnection","hasTable","coreStoreModel","tableName","type","key","call","status","schema","sync","repair","removeOrphanMorphType","pivot","alreadyRanComponentRepair","processUnidirectionalJoinTables","cleanComponentJoinTable","set","value","checkLicense","initMiddlewares","initRouting","permissions","registerActions","BOOTSTRAP","globalProxy","httpProxy","httpsProxy","bootstrapGlobalAgent","global","GLOBAL_AGENT","HTTP_PROXY","HTTPS_PROXY","DESTROY","removeAllListeners","lifecycleName","userLifecycleFunction","getModel","query","opts","loadConfiguration"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var path = require('path');
4
- var fp = require('lodash/fp');
4
+ var _ = require('lodash');
5
5
 
6
6
  const getDirs = ({ appDir, distDir }, config)=>({
7
7
  dist: {
@@ -27,7 +27,7 @@ const getDirs = ({ appDir, distDir }, config)=>({
27
27
  contentStructure: path.join(appDir, 'src', 'content-structure')
28
28
  },
29
29
  static: {
30
- public: path.resolve(appDir, fp.get('server.dirs.public', config))
30
+ public: path.resolve(appDir, _.get(config, 'server.dirs.public'))
31
31
  }
32
32
  });
33
33
 
@@ -1 +1 @@
1
- {"version":3,"file":"get-dirs.js","sources":["../../src/configuration/get-dirs.ts"],"sourcesContent":["import { join, resolve } from 'path';\nimport { get } from 'lodash/fp';\n\nimport type { Core } from '@strapi/types';\nimport type { StrapiOptions } from '../Strapi';\n\nexport type Options = {\n app: string;\n dist: string;\n};\n\nexport const getDirs = (\n { appDir, distDir }: StrapiOptions,\n config: { server: Partial<Core.Config.Server> }\n): Core.StrapiDirectories => ({\n dist: {\n root: distDir,\n src: join(distDir, 'src'),\n api: join(distDir, 'src', 'api'),\n components: join(distDir, 'src', 'components'),\n extensions: join(distDir, 'src', 'extensions'),\n policies: join(distDir, 'src', 'policies'),\n middlewares: join(distDir, 'src', 'middlewares'),\n config: join(distDir, 'config'),\n contentStructure: join(distDir, 'src', 'content-structure'),\n },\n app: {\n root: appDir,\n src: join(appDir, 'src'),\n api: join(appDir, 'src', 'api'),\n components: join(appDir, 'src', 'components'),\n extensions: join(appDir, 'src', 'extensions'),\n policies: join(appDir, 'src', 'policies'),\n middlewares: join(appDir, 'src', 'middlewares'),\n config: join(appDir, 'config'),\n contentStructure: join(appDir, 'src', 'content-structure'),\n },\n static: {\n public: resolve(appDir, get('server.dirs.public', config)),\n },\n});\n"],"names":["getDirs","appDir","distDir","config","dist","root","src","join","api","components","extensions","policies","middlewares","contentStructure","app","static","public","resolve","get"],"mappings":";;;;;AAWO,MAAMA,OAAAA,GAAU,CACrB,EAAEC,MAAM,EAAEC,OAAO,EAAiB,EAClCC,MAAAA,IAC4B;QAC5BC,IAAAA,EAAM;YACJC,IAAAA,EAAMH,OAAAA;AACNI,YAAAA,GAAAA,EAAKC,UAAKL,OAAAA,EAAS,KAAA,CAAA;YACnBM,GAAAA,EAAKD,SAAAA,CAAKL,SAAS,KAAA,EAAO,KAAA,CAAA;YAC1BO,UAAAA,EAAYF,SAAAA,CAAKL,SAAS,KAAA,EAAO,YAAA,CAAA;YACjCQ,UAAAA,EAAYH,SAAAA,CAAKL,SAAS,KAAA,EAAO,YAAA,CAAA;YACjCS,QAAAA,EAAUJ,SAAAA,CAAKL,SAAS,KAAA,EAAO,UAAA,CAAA;YAC/BU,WAAAA,EAAaL,SAAAA,CAAKL,SAAS,KAAA,EAAO,aAAA,CAAA;AAClCC,YAAAA,MAAAA,EAAQI,UAAKL,OAAAA,EAAS,QAAA,CAAA;YACtBW,gBAAAA,EAAkBN,SAAAA,CAAKL,SAAS,KAAA,EAAO,mBAAA;AACzC,SAAA;QACAY,GAAAA,EAAK;YACHT,IAAAA,EAAMJ,MAAAA;AACNK,YAAAA,GAAAA,EAAKC,UAAKN,MAAAA,EAAQ,KAAA,CAAA;YAClBO,GAAAA,EAAKD,SAAAA,CAAKN,QAAQ,KAAA,EAAO,KAAA,CAAA;YACzBQ,UAAAA,EAAYF,SAAAA,CAAKN,QAAQ,KAAA,EAAO,YAAA,CAAA;YAChCS,UAAAA,EAAYH,SAAAA,CAAKN,QAAQ,KAAA,EAAO,YAAA,CAAA;YAChCU,QAAAA,EAAUJ,SAAAA,CAAKN,QAAQ,KAAA,EAAO,UAAA,CAAA;YAC9BW,WAAAA,EAAaL,SAAAA,CAAKN,QAAQ,KAAA,EAAO,aAAA,CAAA;AACjCE,YAAAA,MAAAA,EAAQI,UAAKN,MAAAA,EAAQ,QAAA,CAAA;YACrBY,gBAAAA,EAAkBN,SAAAA,CAAKN,QAAQ,KAAA,EAAO,mBAAA;AACxC,SAAA;QACAc,MAAAA,EAAQ;YACNC,MAAAA,EAAQC,YAAAA,CAAQhB,MAAAA,EAAQiB,MAAAA,CAAI,oBAAA,EAAsBf,MAAAA,CAAAA;AACpD;AACF,KAAA;;;;"}
1
+ {"version":3,"file":"get-dirs.js","sources":["../../src/configuration/get-dirs.ts"],"sourcesContent":["import { join, resolve } from 'path';\nimport { get } from 'lodash';\n\nimport type { Core } from '@strapi/types';\nimport type { StrapiOptions } from '../Strapi';\n\nexport type Options = {\n app: string;\n dist: string;\n};\n\nexport const getDirs = (\n { appDir, distDir }: StrapiOptions,\n config: { server: Partial<Core.Config.Server> }\n): Core.StrapiDirectories => ({\n dist: {\n root: distDir,\n src: join(distDir, 'src'),\n api: join(distDir, 'src', 'api'),\n components: join(distDir, 'src', 'components'),\n extensions: join(distDir, 'src', 'extensions'),\n policies: join(distDir, 'src', 'policies'),\n middlewares: join(distDir, 'src', 'middlewares'),\n config: join(distDir, 'config'),\n contentStructure: join(distDir, 'src', 'content-structure'),\n },\n app: {\n root: appDir,\n src: join(appDir, 'src'),\n api: join(appDir, 'src', 'api'),\n components: join(appDir, 'src', 'components'),\n extensions: join(appDir, 'src', 'extensions'),\n policies: join(appDir, 'src', 'policies'),\n middlewares: join(appDir, 'src', 'middlewares'),\n config: join(appDir, 'config'),\n contentStructure: join(appDir, 'src', 'content-structure'),\n },\n static: {\n public: resolve(appDir, get(config, 'server.dirs.public')!),\n },\n});\n"],"names":["getDirs","appDir","distDir","config","dist","root","src","join","api","components","extensions","policies","middlewares","contentStructure","app","static","public","resolve","get"],"mappings":";;;;;AAWO,MAAMA,OAAAA,GAAU,CACrB,EAAEC,MAAM,EAAEC,OAAO,EAAiB,EAClCC,MAAAA,IAC4B;QAC5BC,IAAAA,EAAM;YACJC,IAAAA,EAAMH,OAAAA;AACNI,YAAAA,GAAAA,EAAKC,UAAKL,OAAAA,EAAS,KAAA,CAAA;YACnBM,GAAAA,EAAKD,SAAAA,CAAKL,SAAS,KAAA,EAAO,KAAA,CAAA;YAC1BO,UAAAA,EAAYF,SAAAA,CAAKL,SAAS,KAAA,EAAO,YAAA,CAAA;YACjCQ,UAAAA,EAAYH,SAAAA,CAAKL,SAAS,KAAA,EAAO,YAAA,CAAA;YACjCS,QAAAA,EAAUJ,SAAAA,CAAKL,SAAS,KAAA,EAAO,UAAA,CAAA;YAC/BU,WAAAA,EAAaL,SAAAA,CAAKL,SAAS,KAAA,EAAO,aAAA,CAAA;AAClCC,YAAAA,MAAAA,EAAQI,UAAKL,OAAAA,EAAS,QAAA,CAAA;YACtBW,gBAAAA,EAAkBN,SAAAA,CAAKL,SAAS,KAAA,EAAO,mBAAA;AACzC,SAAA;QACAY,GAAAA,EAAK;YACHT,IAAAA,EAAMJ,MAAAA;AACNK,YAAAA,GAAAA,EAAKC,UAAKN,MAAAA,EAAQ,KAAA,CAAA;YAClBO,GAAAA,EAAKD,SAAAA,CAAKN,QAAQ,KAAA,EAAO,KAAA,CAAA;YACzBQ,UAAAA,EAAYF,SAAAA,CAAKN,QAAQ,KAAA,EAAO,YAAA,CAAA;YAChCS,UAAAA,EAAYH,SAAAA,CAAKN,QAAQ,KAAA,EAAO,YAAA,CAAA;YAChCU,QAAAA,EAAUJ,SAAAA,CAAKN,QAAQ,KAAA,EAAO,UAAA,CAAA;YAC9BW,WAAAA,EAAaL,SAAAA,CAAKN,QAAQ,KAAA,EAAO,aAAA,CAAA;AACjCE,YAAAA,MAAAA,EAAQI,UAAKN,MAAAA,EAAQ,QAAA,CAAA;YACrBY,gBAAAA,EAAkBN,SAAAA,CAAKN,QAAQ,KAAA,EAAO,mBAAA;AACxC,SAAA;QACAc,MAAAA,EAAQ;YACNC,MAAAA,EAAQC,YAAAA,CAAQhB,MAAAA,EAAQiB,KAAAA,CAAIf,MAAAA,EAAQ,oBAAA,CAAA;AACtC;AACF,KAAA;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { resolve, join } from 'path';
2
- import { get } from 'lodash/fp';
2
+ import { get } from 'lodash';
3
3
 
4
4
  const getDirs = ({ appDir, distDir }, config)=>({
5
5
  dist: {
@@ -25,7 +25,7 @@ const getDirs = ({ appDir, distDir }, config)=>({
25
25
  contentStructure: join(appDir, 'src', 'content-structure')
26
26
  },
27
27
  static: {
28
- public: resolve(appDir, get('server.dirs.public', config))
28
+ public: resolve(appDir, get(config, 'server.dirs.public'))
29
29
  }
30
30
  });
31
31