@strapi/core 0.0.0-experimental.9df68962083938acba06546a7901c68a63266aec → 0.0.0-experimental.9f812af47f0e9db3d5531382c836c2ac0776afdf

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 (478) hide show
  1. package/LICENSE +18 -3
  2. package/dist/Strapi.d.ts +3 -1
  3. package/dist/Strapi.d.ts.map +1 -1
  4. package/dist/Strapi.js +62 -13
  5. package/dist/Strapi.js.map +1 -1
  6. package/dist/Strapi.mjs +41 -11
  7. package/dist/Strapi.mjs.map +1 -1
  8. package/dist/compile.js.map +1 -1
  9. package/dist/compile.mjs.map +1 -1
  10. package/dist/configuration/config-loader.js +1 -2
  11. package/dist/configuration/config-loader.js.map +1 -1
  12. package/dist/configuration/config-loader.mjs +1 -2
  13. package/dist/configuration/config-loader.mjs.map +1 -1
  14. package/dist/configuration/get-dirs.js +2 -2
  15. package/dist/configuration/get-dirs.js.map +1 -1
  16. package/dist/configuration/get-dirs.mjs.map +1 -1
  17. package/dist/configuration/index.d.ts.map +1 -1
  18. package/dist/configuration/index.js +10 -5
  19. package/dist/configuration/index.js.map +1 -1
  20. package/dist/configuration/index.mjs +8 -3
  21. package/dist/configuration/index.mjs.map +1 -1
  22. package/dist/configuration/urls.js.map +1 -1
  23. package/dist/configuration/urls.mjs.map +1 -1
  24. package/dist/container.js.map +1 -1
  25. package/dist/container.mjs.map +1 -1
  26. package/dist/core-api/controller/collection-type.js +3 -3
  27. package/dist/core-api/controller/collection-type.js.map +1 -1
  28. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  29. package/dist/core-api/controller/index.js +2 -2
  30. package/dist/core-api/controller/index.js.map +1 -1
  31. package/dist/core-api/controller/index.mjs.map +1 -1
  32. package/dist/core-api/controller/single-type.js +2 -2
  33. package/dist/core-api/controller/single-type.js.map +1 -1
  34. package/dist/core-api/controller/single-type.mjs.map +1 -1
  35. package/dist/core-api/controller/transform.js +8 -8
  36. package/dist/core-api/controller/transform.js.map +1 -1
  37. package/dist/core-api/controller/transform.mjs.map +1 -1
  38. package/dist/core-api/routes/index.js.map +1 -1
  39. package/dist/core-api/routes/index.mjs.map +1 -1
  40. package/dist/core-api/service/collection-type.d.ts +2 -2
  41. package/dist/core-api/service/collection-type.js.map +1 -1
  42. package/dist/core-api/service/collection-type.mjs.map +1 -1
  43. package/dist/core-api/service/core-service.js.map +1 -1
  44. package/dist/core-api/service/core-service.mjs.map +1 -1
  45. package/dist/core-api/service/index.js.map +1 -1
  46. package/dist/core-api/service/index.mjs.map +1 -1
  47. package/dist/core-api/service/pagination.js +8 -8
  48. package/dist/core-api/service/pagination.js.map +1 -1
  49. package/dist/core-api/service/pagination.mjs.map +1 -1
  50. package/dist/core-api/service/single-type.js +1 -2
  51. package/dist/core-api/service/single-type.js.map +1 -1
  52. package/dist/core-api/service/single-type.mjs +1 -2
  53. package/dist/core-api/service/single-type.mjs.map +1 -1
  54. package/dist/domain/content-type/index.js +4 -4
  55. package/dist/domain/content-type/index.js.map +1 -1
  56. package/dist/domain/content-type/index.mjs.map +1 -1
  57. package/dist/domain/content-type/validator.js.map +1 -1
  58. package/dist/domain/content-type/validator.mjs.map +1 -1
  59. package/dist/domain/module/index.js.map +1 -1
  60. package/dist/domain/module/index.mjs.map +1 -1
  61. package/dist/domain/module/validation.js.map +1 -1
  62. package/dist/domain/module/validation.mjs.map +1 -1
  63. package/dist/ee/index.d.ts.map +1 -1
  64. package/dist/ee/index.js +9 -4
  65. package/dist/ee/index.js.map +1 -1
  66. package/dist/ee/index.mjs +6 -1
  67. package/dist/ee/index.mjs.map +1 -1
  68. package/dist/ee/license.js.map +1 -1
  69. package/dist/ee/license.mjs.map +1 -1
  70. package/dist/factories.js +4 -4
  71. package/dist/factories.js.map +1 -1
  72. package/dist/factories.mjs.map +1 -1
  73. package/dist/index.d.ts +14 -0
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js.map +1 -1
  76. package/dist/index.mjs.map +1 -1
  77. package/dist/loaders/admin.js.map +1 -1
  78. package/dist/loaders/admin.mjs.map +1 -1
  79. package/dist/loaders/apis.js +2 -2
  80. package/dist/loaders/apis.js.map +1 -1
  81. package/dist/loaders/apis.mjs.map +1 -1
  82. package/dist/loaders/components.js.map +1 -1
  83. package/dist/loaders/components.mjs.map +1 -1
  84. package/dist/loaders/middlewares.js.map +1 -1
  85. package/dist/loaders/middlewares.mjs.map +1 -1
  86. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  87. package/dist/loaders/plugins/get-enabled-plugins.js +40 -12
  88. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  89. package/dist/loaders/plugins/get-enabled-plugins.mjs +10 -4
  90. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  91. package/dist/loaders/plugins/get-user-plugins-config.js +2 -2
  92. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  93. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  94. package/dist/loaders/plugins/index.d.ts.map +1 -1
  95. package/dist/loaders/plugins/index.js +33 -7
  96. package/dist/loaders/plugins/index.js.map +1 -1
  97. package/dist/loaders/plugins/index.mjs +9 -1
  98. package/dist/loaders/plugins/index.mjs.map +1 -1
  99. package/dist/loaders/policies.js.map +1 -1
  100. package/dist/loaders/policies.mjs.map +1 -1
  101. package/dist/loaders/sanitizers.js.map +1 -1
  102. package/dist/loaders/sanitizers.mjs.map +1 -1
  103. package/dist/loaders/src-index.js.map +1 -1
  104. package/dist/loaders/src-index.mjs.map +1 -1
  105. package/dist/loaders/validators.js.map +1 -1
  106. package/dist/loaders/validators.mjs.map +1 -1
  107. package/dist/middlewares/body.js +2 -2
  108. package/dist/middlewares/body.js.map +1 -1
  109. package/dist/middlewares/body.mjs.map +1 -1
  110. package/dist/middlewares/cors.d.ts.map +1 -1
  111. package/dist/middlewares/cors.js +4 -0
  112. package/dist/middlewares/cors.js.map +1 -1
  113. package/dist/middlewares/cors.mjs +4 -0
  114. package/dist/middlewares/cors.mjs.map +1 -1
  115. package/dist/middlewares/errors.js.map +1 -1
  116. package/dist/middlewares/errors.mjs.map +1 -1
  117. package/dist/middlewares/favicon.js.map +1 -1
  118. package/dist/middlewares/favicon.mjs.map +1 -1
  119. package/dist/middlewares/index.js.map +1 -1
  120. package/dist/middlewares/logger.js.map +1 -1
  121. package/dist/middlewares/logger.mjs.map +1 -1
  122. package/dist/middlewares/powered-by.js.map +1 -1
  123. package/dist/middlewares/powered-by.mjs.map +1 -1
  124. package/dist/middlewares/public.js +2 -2
  125. package/dist/middlewares/public.js.map +1 -1
  126. package/dist/middlewares/public.mjs.map +1 -1
  127. package/dist/middlewares/query.d.ts.map +1 -1
  128. package/dist/middlewares/query.js.map +1 -1
  129. package/dist/middlewares/query.mjs.map +1 -1
  130. package/dist/middlewares/response-time.js.map +1 -1
  131. package/dist/middlewares/response-time.mjs.map +1 -1
  132. package/dist/middlewares/responses.js +2 -2
  133. package/dist/middlewares/responses.js.map +1 -1
  134. package/dist/middlewares/responses.mjs.map +1 -1
  135. package/dist/middlewares/security.d.ts.map +1 -1
  136. package/dist/middlewares/security.js +4 -4
  137. package/dist/middlewares/security.js.map +1 -1
  138. package/dist/middlewares/security.mjs +1 -1
  139. package/dist/middlewares/security.mjs.map +1 -1
  140. package/dist/middlewares/session.js +2 -2
  141. package/dist/middlewares/session.js.map +1 -1
  142. package/dist/middlewares/session.mjs.map +1 -1
  143. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +12 -9
  144. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  145. package/dist/migrations/database/5.0.0-discard-drafts.js +67 -11
  146. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  147. package/dist/migrations/database/5.0.0-discard-drafts.mjs +68 -12
  148. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
  149. package/dist/migrations/draft-publish.d.ts +1 -1
  150. package/dist/migrations/draft-publish.d.ts.map +1 -1
  151. package/dist/migrations/draft-publish.js.map +1 -1
  152. package/dist/migrations/draft-publish.mjs.map +1 -1
  153. package/dist/migrations/i18n.d.ts +5 -0
  154. package/dist/migrations/i18n.d.ts.map +1 -0
  155. package/dist/migrations/i18n.js +54 -0
  156. package/dist/migrations/i18n.js.map +1 -0
  157. package/dist/migrations/i18n.mjs +54 -0
  158. package/dist/migrations/i18n.mjs.map +1 -0
  159. package/dist/migrations/index.d.ts +5 -0
  160. package/dist/migrations/index.d.ts.map +1 -0
  161. package/dist/migrations/index.js +15 -0
  162. package/dist/migrations/index.js.map +1 -0
  163. package/dist/migrations/index.mjs +15 -0
  164. package/dist/migrations/index.mjs.map +1 -0
  165. package/dist/providers/admin.d.ts.map +1 -1
  166. package/dist/providers/admin.js.map +1 -1
  167. package/dist/providers/admin.mjs.map +1 -1
  168. package/dist/providers/coreStore.js.map +1 -1
  169. package/dist/providers/coreStore.mjs.map +1 -1
  170. package/dist/providers/cron.js.map +1 -1
  171. package/dist/providers/cron.mjs.map +1 -1
  172. package/dist/providers/registries.js +3 -3
  173. package/dist/providers/registries.js.map +1 -1
  174. package/dist/providers/registries.mjs +3 -3
  175. package/dist/providers/registries.mjs.map +1 -1
  176. package/dist/providers/telemetry.js.map +1 -1
  177. package/dist/providers/telemetry.mjs.map +1 -1
  178. package/dist/providers/webhooks.js.map +1 -1
  179. package/dist/providers/webhooks.mjs.map +1 -1
  180. package/dist/registries/apis.js +2 -2
  181. package/dist/registries/apis.js.map +1 -1
  182. package/dist/registries/apis.mjs.map +1 -1
  183. package/dist/registries/components.js +2 -2
  184. package/dist/registries/components.js.map +1 -1
  185. package/dist/registries/components.mjs.map +1 -1
  186. package/dist/registries/content-types.js +3 -3
  187. package/dist/registries/content-types.js.map +1 -1
  188. package/dist/registries/content-types.mjs.map +1 -1
  189. package/dist/registries/controllers.js +3 -3
  190. package/dist/registries/controllers.js.map +1 -1
  191. package/dist/registries/controllers.mjs.map +1 -1
  192. package/dist/registries/custom-fields.js +4 -4
  193. package/dist/registries/custom-fields.js.map +1 -1
  194. package/dist/registries/custom-fields.mjs.map +1 -1
  195. package/dist/registries/hooks.js +2 -2
  196. package/dist/registries/hooks.js.map +1 -1
  197. package/dist/registries/hooks.mjs.map +1 -1
  198. package/dist/registries/middlewares.js +3 -3
  199. package/dist/registries/middlewares.js.map +1 -1
  200. package/dist/registries/middlewares.mjs.map +1 -1
  201. package/dist/registries/models.js.map +1 -1
  202. package/dist/registries/models.mjs.map +1 -1
  203. package/dist/registries/modules.js +3 -3
  204. package/dist/registries/modules.js.map +1 -1
  205. package/dist/registries/modules.mjs.map +1 -1
  206. package/dist/registries/namespace.js.map +1 -1
  207. package/dist/registries/namespace.mjs.map +1 -1
  208. package/dist/registries/plugins.js +2 -2
  209. package/dist/registries/plugins.js.map +1 -1
  210. package/dist/registries/plugins.mjs.map +1 -1
  211. package/dist/registries/policies.d.ts +1 -1
  212. package/dist/registries/policies.d.ts.map +1 -1
  213. package/dist/registries/policies.js +5 -5
  214. package/dist/registries/policies.js.map +1 -1
  215. package/dist/registries/policies.mjs +1 -1
  216. package/dist/registries/policies.mjs.map +1 -1
  217. package/dist/registries/sanitizers.js.map +1 -1
  218. package/dist/registries/sanitizers.mjs.map +1 -1
  219. package/dist/registries/services.js +3 -3
  220. package/dist/registries/services.js.map +1 -1
  221. package/dist/registries/services.mjs.map +1 -1
  222. package/dist/registries/validators.js.map +1 -1
  223. package/dist/registries/validators.mjs.map +1 -1
  224. package/dist/services/auth/index.js +3 -3
  225. package/dist/services/auth/index.js.map +1 -1
  226. package/dist/services/auth/index.mjs.map +1 -1
  227. package/dist/services/config.js.map +1 -1
  228. package/dist/services/config.mjs.map +1 -1
  229. package/dist/services/content-api/index.d.ts +10 -12
  230. package/dist/services/content-api/index.d.ts.map +1 -1
  231. package/dist/services/content-api/index.js.map +1 -1
  232. package/dist/services/content-api/index.mjs.map +1 -1
  233. package/dist/services/content-api/permissions/index.d.ts +10 -12
  234. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  235. package/dist/services/content-api/permissions/index.js.map +1 -1
  236. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  237. package/dist/services/content-api/permissions/providers/action.d.ts +5 -6
  238. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  239. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  240. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  241. package/dist/services/content-api/permissions/providers/condition.d.ts +5 -6
  242. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  243. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  244. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  245. package/dist/services/core-store.js +3 -3
  246. package/dist/services/core-store.js.map +1 -1
  247. package/dist/services/core-store.mjs.map +1 -1
  248. package/dist/services/cron.d.ts +3 -3
  249. package/dist/services/cron.d.ts.map +1 -1
  250. package/dist/services/cron.js +12 -8
  251. package/dist/services/cron.js.map +1 -1
  252. package/dist/services/cron.mjs +9 -5
  253. package/dist/services/cron.mjs.map +1 -1
  254. package/dist/services/custom-fields.js.map +1 -1
  255. package/dist/services/custom-fields.mjs.map +1 -1
  256. package/dist/services/document-service/attributes/index.js +2 -2
  257. package/dist/services/document-service/attributes/index.js.map +1 -1
  258. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  259. package/dist/services/document-service/attributes/transforms.js +3 -3
  260. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  261. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  262. package/dist/services/document-service/common.d.ts +1 -1
  263. package/dist/services/document-service/common.d.ts.map +1 -1
  264. package/dist/services/document-service/common.js.map +1 -1
  265. package/dist/services/document-service/common.mjs.map +1 -1
  266. package/dist/services/document-service/components.js +15 -15
  267. package/dist/services/document-service/components.js.map +1 -1
  268. package/dist/services/document-service/components.mjs.map +1 -1
  269. package/dist/services/document-service/draft-and-publish.js +16 -16
  270. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  271. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  272. package/dist/services/document-service/entries.d.ts +2 -2
  273. package/dist/services/document-service/entries.d.ts.map +1 -1
  274. package/dist/services/document-service/entries.js +11 -12
  275. package/dist/services/document-service/entries.js.map +1 -1
  276. package/dist/services/document-service/entries.mjs +1 -2
  277. package/dist/services/document-service/entries.mjs.map +1 -1
  278. package/dist/services/document-service/events.js.map +1 -1
  279. package/dist/services/document-service/events.mjs.map +1 -1
  280. package/dist/services/document-service/index.d.ts +2 -1
  281. package/dist/services/document-service/index.d.ts.map +1 -1
  282. package/dist/services/document-service/index.js +3 -2
  283. package/dist/services/document-service/index.js.map +1 -1
  284. package/dist/services/document-service/index.mjs +3 -2
  285. package/dist/services/document-service/index.mjs.map +1 -1
  286. package/dist/services/document-service/internationalization.js +9 -9
  287. package/dist/services/document-service/internationalization.js.map +1 -1
  288. package/dist/services/document-service/internationalization.mjs.map +1 -1
  289. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  290. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  291. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  292. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  293. package/dist/services/document-service/params.js +2 -2
  294. package/dist/services/document-service/params.js.map +1 -1
  295. package/dist/services/document-service/repository.d.ts.map +1 -1
  296. package/dist/services/document-service/repository.js +71 -17
  297. package/dist/services/document-service/repository.js.map +1 -1
  298. package/dist/services/document-service/repository.mjs +64 -10
  299. package/dist/services/document-service/repository.mjs.map +1 -1
  300. package/dist/services/document-service/transform/data.js.map +1 -1
  301. package/dist/services/document-service/transform/data.mjs.map +1 -1
  302. package/dist/services/document-service/transform/fields.js.map +1 -1
  303. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  304. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  305. package/dist/services/document-service/transform/id-map.js +15 -8
  306. package/dist/services/document-service/transform/id-map.js.map +1 -1
  307. package/dist/services/document-service/transform/id-map.mjs +16 -9
  308. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  309. package/dist/services/document-service/transform/id-transform.js +2 -2
  310. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  311. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  312. package/dist/services/document-service/transform/populate.js.map +1 -1
  313. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  314. package/dist/services/document-service/transform/query.js +3 -3
  315. package/dist/services/document-service/transform/query.js.map +1 -1
  316. package/dist/services/document-service/transform/query.mjs.map +1 -1
  317. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  318. package/dist/services/document-service/transform/relations/extract/data-ids.js +15 -8
  319. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  320. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +13 -6
  321. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  322. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  323. package/dist/services/document-service/transform/relations/transform/data-ids.js +19 -10
  324. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  325. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +18 -9
  326. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  327. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  328. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  329. package/dist/services/document-service/transform/relations/utils/dp.js +2 -2
  330. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  331. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  332. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  333. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  334. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  335. package/dist/services/document-service/transform/relations/utils/map-relation.js +8 -15
  336. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  337. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +3 -10
  338. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  339. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  340. package/dist/services/document-service/utils/populate.js +8 -2
  341. package/dist/services/document-service/utils/populate.js.map +1 -1
  342. package/dist/services/document-service/utils/populate.mjs +8 -2
  343. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  344. package/dist/services/document-service/utils/unidirectional-relations.d.ts +36 -0
  345. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -0
  346. package/dist/services/document-service/utils/unidirectional-relations.js +68 -0
  347. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
  348. package/dist/services/document-service/utils/unidirectional-relations.mjs +68 -0
  349. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
  350. package/dist/services/entity-service/index.js.map +1 -1
  351. package/dist/services/entity-service/index.mjs.map +1 -1
  352. package/dist/services/entity-validator/blocks-validator.d.ts +1 -2
  353. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
  354. package/dist/services/entity-validator/blocks-validator.js +4 -3
  355. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  356. package/dist/services/entity-validator/blocks-validator.mjs +3 -3
  357. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  358. package/dist/services/entity-validator/index.d.ts +15 -1
  359. package/dist/services/entity-validator/index.d.ts.map +1 -1
  360. package/dist/services/entity-validator/index.js +109 -53
  361. package/dist/services/entity-validator/index.js.map +1 -1
  362. package/dist/services/entity-validator/index.mjs +95 -39
  363. package/dist/services/entity-validator/index.mjs.map +1 -1
  364. package/dist/services/entity-validator/validators.d.ts +36 -25
  365. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  366. package/dist/services/entity-validator/validators.js +148 -33
  367. package/dist/services/entity-validator/validators.js.map +1 -1
  368. package/dist/services/entity-validator/validators.mjs +140 -25
  369. package/dist/services/entity-validator/validators.mjs.map +1 -1
  370. package/dist/services/errors.js.map +1 -1
  371. package/dist/services/errors.mjs.map +1 -1
  372. package/dist/services/event-hub.js.map +1 -1
  373. package/dist/services/event-hub.mjs.map +1 -1
  374. package/dist/services/features.js.map +1 -1
  375. package/dist/services/features.mjs.map +1 -1
  376. package/dist/services/fs.js.map +1 -1
  377. package/dist/services/fs.mjs.map +1 -1
  378. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  379. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  380. package/dist/services/metrics/index.js +1 -2
  381. package/dist/services/metrics/index.js.map +1 -1
  382. package/dist/services/metrics/index.mjs +1 -2
  383. package/dist/services/metrics/index.mjs.map +1 -1
  384. package/dist/services/metrics/is-truthy.js.map +1 -1
  385. package/dist/services/metrics/middleware.js.map +1 -1
  386. package/dist/services/metrics/middleware.mjs.map +1 -1
  387. package/dist/services/metrics/rate-limiter.js.map +1 -1
  388. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  389. package/dist/services/metrics/sender.js.map +1 -1
  390. package/dist/services/metrics/sender.mjs.map +1 -1
  391. package/dist/services/query-params.js.map +1 -1
  392. package/dist/services/query-params.mjs.map +1 -1
  393. package/dist/services/reloader.js.map +1 -1
  394. package/dist/services/reloader.mjs.map +1 -1
  395. package/dist/services/request-context.js.map +1 -1
  396. package/dist/services/request-context.mjs.map +1 -1
  397. package/dist/services/server/admin-api.js.map +1 -1
  398. package/dist/services/server/admin-api.mjs.map +1 -1
  399. package/dist/services/server/api.js.map +1 -1
  400. package/dist/services/server/api.mjs.map +1 -1
  401. package/dist/services/server/compose-endpoint.js +7 -7
  402. package/dist/services/server/compose-endpoint.js.map +1 -1
  403. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  404. package/dist/services/server/content-api.js.map +1 -1
  405. package/dist/services/server/content-api.mjs.map +1 -1
  406. package/dist/services/server/http-server.js.map +1 -1
  407. package/dist/services/server/http-server.mjs.map +1 -1
  408. package/dist/services/server/index.js +1 -1
  409. package/dist/services/server/index.js.map +1 -1
  410. package/dist/services/server/index.mjs +1 -1
  411. package/dist/services/server/index.mjs.map +1 -1
  412. package/dist/services/server/koa.js +3 -3
  413. package/dist/services/server/koa.js.map +1 -1
  414. package/dist/services/server/koa.mjs.map +1 -1
  415. package/dist/services/server/middleware.js +3 -3
  416. package/dist/services/server/middleware.js.map +1 -1
  417. package/dist/services/server/middleware.mjs.map +1 -1
  418. package/dist/services/server/policy.js.map +1 -1
  419. package/dist/services/server/policy.mjs.map +1 -1
  420. package/dist/services/server/register-middlewares.js.map +1 -1
  421. package/dist/services/server/register-middlewares.mjs.map +1 -1
  422. package/dist/services/server/register-routes.js.map +1 -1
  423. package/dist/services/server/register-routes.mjs.map +1 -1
  424. package/dist/services/server/routing.js +2 -2
  425. package/dist/services/server/routing.js.map +1 -1
  426. package/dist/services/server/routing.mjs.map +1 -1
  427. package/dist/services/utils/dynamic-zones.js +5 -5
  428. package/dist/services/utils/dynamic-zones.js.map +1 -1
  429. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  430. package/dist/services/webhook-runner.js.map +1 -1
  431. package/dist/services/webhook-runner.mjs.map +1 -1
  432. package/dist/services/webhook-store.js.map +1 -1
  433. package/dist/services/webhook-store.mjs.map +1 -1
  434. package/dist/services/worker-queue.js.map +1 -1
  435. package/dist/services/worker-queue.mjs.map +1 -1
  436. package/dist/utils/convert-custom-field-type.js.map +1 -1
  437. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  438. package/dist/utils/cron.js +3 -3
  439. package/dist/utils/cron.js.map +1 -1
  440. package/dist/utils/cron.mjs.map +1 -1
  441. package/dist/utils/fetch.d.ts.map +1 -1
  442. package/dist/utils/fetch.js +4 -3
  443. package/dist/utils/fetch.js.map +1 -1
  444. package/dist/utils/fetch.mjs +4 -3
  445. package/dist/utils/fetch.mjs.map +1 -1
  446. package/dist/utils/filepath-to-prop-path.d.ts +1 -1
  447. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  448. package/dist/utils/filepath-to-prop-path.js +27 -6
  449. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  450. package/dist/utils/filepath-to-prop-path.mjs +25 -5
  451. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  452. package/dist/utils/is-initialized.js +3 -3
  453. package/dist/utils/is-initialized.js.map +1 -1
  454. package/dist/utils/is-initialized.mjs.map +1 -1
  455. package/dist/utils/load-config-file.js.map +1 -1
  456. package/dist/utils/load-config-file.mjs.map +1 -1
  457. package/dist/utils/load-files.js +1 -2
  458. package/dist/utils/load-files.js.map +1 -1
  459. package/dist/utils/load-files.mjs +1 -2
  460. package/dist/utils/load-files.mjs.map +1 -1
  461. package/dist/utils/resolve-working-dirs.js.map +1 -1
  462. package/dist/utils/resolve-working-dirs.mjs.map +1 -1
  463. package/dist/utils/signals.js.map +1 -1
  464. package/dist/utils/signals.mjs.map +1 -1
  465. package/dist/utils/startup-logger.d.ts.map +1 -1
  466. package/dist/utils/startup-logger.js +10 -5
  467. package/dist/utils/startup-logger.js.map +1 -1
  468. package/dist/utils/startup-logger.mjs +9 -4
  469. package/dist/utils/startup-logger.mjs.map +1 -1
  470. package/dist/utils/transform-content-types-to-models.d.ts +355 -23
  471. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  472. package/dist/utils/transform-content-types-to-models.js +8 -5
  473. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  474. package/dist/utils/transform-content-types-to-models.mjs +7 -4
  475. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  476. package/dist/utils/update-notifier/index.js.map +1 -1
  477. package/dist/utils/update-notifier/index.mjs.map +1 -1
  478. package/package.json +23 -21
package/LICENSE CHANGED
@@ -2,7 +2,21 @@ Copyright (c) 2015-present Strapi Solutions SAS
2
2
 
3
3
  Portions of the Strapi software are licensed as follows:
4
4
 
5
- * All software that resides under an "ee/" directory (the “EE Software”), if that directory exists, is licensed under the license defined in "ee/LICENSE".
5
+ * All software that resides under an "ee/" directory (the “EE Software”), if that directory exists, is licensed under the license defined below.
6
+
7
+ Enterprise License
8
+
9
+ If you or the company you represent has entered into a written agreement referencing the Enterprise Edition of the Strapi source code available at
10
+ https://github.com/strapi/strapi, then such agreement applies to your use of the Enterprise Edition of the Strapi Software. If you or the company you
11
+ represent is using the Enterprise Edition of the Strapi Software in connection with a subscription to our cloud offering, then the agreement you have
12
+ agreed to with respect to our cloud offering and the licenses included in such agreement apply to your use of the Enterprise Edition of the Strapi Software.
13
+ Otherwise, the Strapi Enterprise Software License Agreement (found here https://strapi.io/enterprise-terms) applies to your use of the Enterprise Edition of the Strapi Software.
14
+
15
+ BY ACCESSING OR USING THE ENTERPRISE EDITION OF THE STRAPI SOFTWARE, YOU ARE AGREEING TO BE BOUND BY THE RELEVANT REFERENCED AGREEMENT.
16
+ IF YOU ARE NOT AUTHORIZED TO ACCEPT THESE TERMS ON BEHALF OF THE COMPANY YOU REPRESENT OR IF YOU DO NOT AGREE TO ALL OF THE RELEVANT TERMS AND CONDITIONS REFERENCED AND YOU
17
+ HAVE NOT OTHERWISE EXECUTED A WRITTEN AGREEMENT WITH STRAPI, YOU ARE NOT AUTHORIZED TO ACCESS OR USE OR ALLOW ANY USER TO ACCESS OR USE ANY PART OF
18
+ THE ENTERPRISE EDITION OF THE STRAPI SOFTWARE. YOUR ACCESS RIGHTS ARE CONDITIONAL ON YOUR CONSENT TO THE RELEVANT REFERENCED TERMS TO THE EXCLUSION OF ALL OTHER TERMS;
19
+ IF THE RELEVANT REFERENCED TERMS ARE CONSIDERED AN OFFER BY YOU, ACCEPTANCE IS EXPRESSLY LIMITED TO THE RELEVANT REFERENCED TERMS.
6
20
 
7
21
  * All software outside of the above-mentioned directories or restrictions above is available under the "MIT Expat" license as set forth below.
8
22
 
@@ -18,5 +32,6 @@ furnished to do so, subject to the following conditions:
18
32
  The above copyright notice and this permission notice shall be included in all
19
33
  copies or substantial portions of the Software.
20
34
 
21
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
- SOFTWARE.
35
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
36
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
37
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/dist/Strapi.d.ts CHANGED
@@ -70,8 +70,10 @@ declare class Strapi extends Container implements Core.Strapi {
70
70
  load(): Promise<this>;
71
71
  register(): Promise<this>;
72
72
  bootstrap(): Promise<this>;
73
+ configureGlobalProxy(): void;
73
74
  destroy(): Promise<void>;
74
- runLifecyclesFunctions(lifecycleName: 'register' | 'bootstrap' | 'destroy'): Promise<void>;
75
+ runPluginsLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy'): Promise<void>;
76
+ runUserLifecycles(lifecycleName: 'register' | 'bootstrap' | 'destroy'): Promise<void>;
75
77
  getModel(uid: UID.ContentType): Schema.ContentType;
76
78
  getModel(uid: UID.Component): Schema.Component;
77
79
  /**
@@ -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
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
+ const globalAgent = require("global-agent");
2
3
  const path = require("path");
3
4
  const _ = require("lodash");
4
- const _$1 = require("lodash/fp");
5
+ const fp = require("lodash/fp");
5
6
  const logger = require("@strapi/logger");
6
7
  const database = require("@strapi/database");
8
+ const tsUtils = require("@strapi/typescript-utils");
7
9
  const index = require("./configuration/index.js");
8
10
  const factories = require("./factories.js");
9
11
  const openBrowser = require("./utils/open-browser.js");
@@ -35,8 +37,27 @@ const index$8 = require("./services/document-service/index.js");
35
37
  const coreStore = require("./services/core-store.js");
36
38
  const config = require("./services/config.js");
37
39
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
40
+ function _interopNamespace(e) {
41
+ if (e && e.__esModule) return e;
42
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
43
+ if (e) {
44
+ for (const k in e) {
45
+ if (k !== "default") {
46
+ const d = Object.getOwnPropertyDescriptor(e, k);
47
+ Object.defineProperty(n, k, d.get ? d : {
48
+ enumerable: true,
49
+ get: () => e[k]
50
+ });
51
+ }
52
+ }
53
+ }
54
+ n.default = e;
55
+ return Object.freeze(n);
56
+ }
57
+ const globalAgent__namespace = /* @__PURE__ */ _interopNamespace(globalAgent);
38
58
  const path__default = /* @__PURE__ */ _interopDefault(path);
39
59
  const ___default = /* @__PURE__ */ _interopDefault(_);
60
+ const tsUtils__default = /* @__PURE__ */ _interopDefault(tsUtils);
40
61
  class Strapi extends container.Container {
41
62
  app;
42
63
  isLoaded = false;
@@ -202,19 +223,21 @@ class Strapi extends container.Container {
202
223
  // DEPRECATED
203
224
  ...config$1.get("server.logger.config")
204
225
  });
205
- this.add("config", () => config$1).add("query-params", queryParams(this)).add("content-api", index$3(this)).add("auth", index$4()).add("server", () => index$5.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$6).add("entityService", () => index$7({ strapi: this, db: this.db })).add("documents", () => index$8.createDocumentService(this)).add(
206
- "db",
207
- () => new database.Database(
226
+ this.add("config", () => config$1).add("query-params", queryParams(this)).add("content-api", index$3(this)).add("auth", index$4()).add("server", () => index$5.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$6).add("entityService", () => index$7({ strapi: this, db: this.db })).add("documents", () => index$8.createDocumentService(this)).add("db", () => {
227
+ const tsDir = tsUtils__default.default.resolveOutDirSync(this.dirs.app.root);
228
+ const tsMigrationsEnabled = this.config.get("database.settings.useTypescriptMigrations") === true && tsDir;
229
+ const projectDir = tsMigrationsEnabled ? tsDir : this.dirs.app.root;
230
+ return new database.Database(
208
231
  ___default.default.merge(this.config.get("database"), {
209
232
  logger: logger$1,
210
233
  settings: {
211
234
  migrations: {
212
- dir: path__default.default.join(this.dirs.app.root, "database/migrations")
235
+ dir: path__default.default.join(projectDir, "database/migrations")
213
236
  }
214
237
  }
215
238
  })
216
- )
217
- ).add("reload", () => reloader.createReloader(this));
239
+ );
240
+ }).add("reload", () => reloader.createReloader(this));
218
241
  }
219
242
  sendStartupTelemetry() {
220
243
  this.telemetry.send("didStartServer", {
@@ -301,11 +324,13 @@ class Strapi extends container.Container {
301
324
  for (const provider of index$1.providers) {
302
325
  await provider.register?.(this);
303
326
  }
304
- await this.runLifecyclesFunctions(lifecycles.LIFECYCLES.REGISTER);
327
+ await this.runPluginsLifecycles(lifecycles.LIFECYCLES.REGISTER);
328
+ await this.runUserLifecycles(lifecycles.LIFECYCLES.REGISTER);
305
329
  convertCustomFieldType.convertCustomFieldType(this);
306
330
  return this;
307
331
  }
308
332
  async bootstrap() {
333
+ this.configureGlobalProxy();
309
334
  const models = [
310
335
  ...transformContentTypesToModels.transformContentTypesToModels(
311
336
  [...Object.values(this.contentTypes), ...Object.values(this.components)],
@@ -326,7 +351,10 @@ class Strapi extends container.Container {
326
351
  oldContentTypes,
327
352
  contentTypes: this.contentTypes
328
353
  });
329
- await this.db.schema.sync();
354
+ const status = await this.db.schema.sync();
355
+ if (status === "CHANGED") {
356
+ await this.db.repair.removeOrphanMorphType({ pivot: "component_type" });
357
+ }
330
358
  if (this.EE) {
331
359
  await index$2.checkLicense({ strapi: this });
332
360
  }
@@ -343,18 +371,37 @@ class Strapi extends container.Container {
343
371
  await this.server.initMiddlewares();
344
372
  this.server.initRouting();
345
373
  await this.contentAPI.permissions.registerActions();
346
- await this.runLifecyclesFunctions(lifecycles.LIFECYCLES.BOOTSTRAP);
374
+ await this.runPluginsLifecycles(lifecycles.LIFECYCLES.BOOTSTRAP);
347
375
  for (const provider of index$1.providers) {
348
376
  await provider.bootstrap?.(this);
349
377
  }
378
+ await this.runUserLifecycles(lifecycles.LIFECYCLES.BOOTSTRAP);
350
379
  return this;
351
380
  }
381
+ configureGlobalProxy() {
382
+ const globalProxy = this.config.get("server.proxy.global");
383
+ const httpProxy = this.config.get("server.proxy.http") || globalProxy;
384
+ const httpsProxy = this.config.get("server.proxy.https") || globalProxy;
385
+ if (!httpProxy && !httpsProxy) {
386
+ return;
387
+ }
388
+ globalAgent__namespace.bootstrap();
389
+ if (httpProxy) {
390
+ this.log.info(`Using HTTP proxy: ${httpProxy}`);
391
+ global.GLOBAL_AGENT.HTTP_PROXY = httpProxy;
392
+ }
393
+ if (httpsProxy) {
394
+ this.log.info(`Using HTTPS proxy: ${httpsProxy}`);
395
+ global.GLOBAL_AGENT.HTTPS_PROXY = httpsProxy;
396
+ }
397
+ }
352
398
  async destroy() {
353
399
  this.log.info("Shutting down Strapi");
354
- await this.runLifecyclesFunctions(lifecycles.LIFECYCLES.DESTROY);
400
+ await this.runPluginsLifecycles(lifecycles.LIFECYCLES.DESTROY);
355
401
  for (const provider of index$1.providers) {
356
402
  await provider.destroy?.(this);
357
403
  }
404
+ await this.runUserLifecycles(lifecycles.LIFECYCLES.DESTROY);
358
405
  await this.server.destroy();
359
406
  this.eventHub.destroy();
360
407
  await this.db?.destroy();
@@ -362,10 +409,12 @@ class Strapi extends container.Container {
362
409
  delete global.strapi;
363
410
  this.log.info("Strapi has been shut down");
364
411
  }
365
- async runLifecyclesFunctions(lifecycleName) {
412
+ async runPluginsLifecycles(lifecycleName) {
366
413
  await this.get("modules")[lifecycleName]();
414
+ }
415
+ async runUserLifecycles(lifecycleName) {
367
416
  const userLifecycleFunction = this.app && this.app[lifecycleName];
368
- if (_$1.isFunction(userLifecycleFunction)) {
417
+ if (fp.isFunction(userLifecycleFunction)) {
369
418
  await userLifecycleFunction({ strapi: this });
370
419
  }
371
420
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Strapi.js","sources":["../src/Strapi.ts"],"sourcesContent":["import 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';\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 { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\n\nimport { coreStoreModel } from './services/core-store';\nimport { createConfigProvider } from './services/config';\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 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 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 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 // Instantiate the Strapi container\n this.add('config', () => config)\n .add('query-params', createQueryParamService(this))\n .add('content-api', createContentAPI(this))\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(\n 'db',\n () =>\n new Database(\n _.merge(this.config.get('database'), {\n logger,\n settings: {\n migrations: {\n dir: path.join(this.dirs.app.root, 'database/migrations'),\n },\n },\n })\n )\n )\n .add('reload', () => createReloader(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 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 (e) {\n this.telemetry.send('didNotOpenTab');\n }\n }\n }\n\n async postListen() {\n const isInitialized = await utils.isInitialized(this);\n\n this.startupLogger.logStartupMessage({ isInitialized });\n\n this.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.runLifecyclesFunctions(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 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 await this.db.schema.sync();\n\n if (this.EE) {\n await utils.ee.checkLicense({ strapi: this });\n }\n\n await this.hook('strapi::content-types.afterSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.store.set({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n value: this.contentTypes,\n });\n\n await this.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runLifecyclesFunctions(utils.LIFECYCLES.BOOTSTRAP);\n\n for (const provider of providers) {\n await provider.bootstrap?.(this);\n }\n\n return this;\n }\n\n async destroy() {\n this.log.info('Shutting down Strapi');\n await this.runLifecyclesFunctions(utils.LIFECYCLES.DESTROY);\n\n for (const provider of providers) {\n await provider.destroy?.(this);\n }\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 runLifecyclesFunctions(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n\n // user\n const userLifecycleFunction = this.app && this.app[lifecycleName];\n if (isFunction(userLifecycleFunction)) {\n await userLifecycleFunction({ strapi: this });\n }\n }\n\n getModel(uid: 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 if (uid in this.contentTypes) {\n return this.contentTypes[uid as UID.ContentType];\n }\n\n if (uid in this.components) {\n return this.components[uid as UID.Component];\n }\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":["Container","loadConfiguration","providers","utils.ee","config","createConfigProvider","logger","createLogger","createQueryParamService","createContentAPI","createAuth","createServer","createStrapiFs","createEventHub","utils.createStartupLogger","utils.createStrapiFetch","createFeaturesService","createCustomFields","entityValidator","createEntityService","createDocumentService","Database","_","path","createReloader","getNumberOfDynamicZones","factories.isCustomController","isInitialized","utils.openBrowser","utils.isInitialized","utils.LIFECYCLES","utils.convertCustomFieldType","utils.transformContentTypesToModels","coreStoreModel","isFunction"],"mappings":"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"}
1
+ {"version":3,"file":"Strapi.js","sources":["../src/Strapi.ts"],"sourcesContent":["import * as globalAgent 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 tsUtils from '@strapi/typescript-utils';\nimport { loadConfiguration } from './configuration';\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 { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\n\nimport { coreStoreModel } from './services/core-store';\nimport { createConfigProvider } from './services/config';\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 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 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 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 // Instantiate the Strapi container\n this.add('config', () => config)\n .add('query-params', createQueryParamService(this))\n .add('content-api', createContentAPI(this))\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 tsDir = tsUtils.resolveOutDirSync(this.dirs.app.root);\n const tsMigrationsEnabled =\n this.config.get('database.settings.useTypescriptMigrations') === true && 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 }\n\n sendStartupTelemetry() {\n // Emit started event.\n // do not await to avoid slower startup\n // This event is anonymous\n this.telemetry\n .send('didStartServer', {\n groupProperties: {\n database: this.config.get('database.connection.client'),\n plugins: Object.keys(this.plugins),\n numberOfAllContentTypes: _.size(this.contentTypes), // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents: _.size(this.components),\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfCustomControllers: Object.values<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 (e) {\n this.telemetry.send('didNotOpenTab');\n }\n }\n }\n\n async postListen() {\n const isInitialized = await utils.isInitialized(this);\n\n this.startupLogger.logStartupMessage({ isInitialized });\n\n this.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 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 }\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 globalAgent.bootstrap();\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 if (uid in this.contentTypes) {\n return this.contentTypes[uid as UID.ContentType];\n }\n\n if (uid in this.components) {\n return this.components[uid as UID.Component];\n }\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":["Container","loadConfiguration","providers","utils.ee","config","createConfigProvider","logger","createLogger","createQueryParamService","createContentAPI","createAuth","createServer","createStrapiFs","createEventHub","utils.createStartupLogger","utils.createStrapiFetch","createFeaturesService","createCustomFields","entityValidator","createEntityService","createDocumentService","tsUtils","Database","_","path","createReloader","getNumberOfDynamicZones","factories.isCustomController","isInitialized","utils.openBrowser","utils.isInitialized","utils.LIFECYCLES","utils.convertCustomFieldType","utils.transformContentTypesToModels","coreStoreModel","globalAgent","isFunction"],"mappings":"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"}
package/dist/Strapi.mjs CHANGED
@@ -1,8 +1,10 @@
1
+ import * as globalAgent from "global-agent";
1
2
  import path from "path";
2
3
  import _ from "lodash";
3
4
  import { isFunction } from "lodash/fp";
4
5
  import { createLogger } from "@strapi/logger";
5
6
  import { Database } from "@strapi/database";
7
+ import tsUtils from "@strapi/typescript-utils";
6
8
  import { loadConfiguration } from "./configuration/index.mjs";
7
9
  import { isCustomController } from "./factories.mjs";
8
10
  import { openBrowser } from "./utils/open-browser.mjs";
@@ -198,19 +200,21 @@ class Strapi extends Container {
198
200
  // DEPRECATED
199
201
  ...config.get("server.logger.config")
200
202
  });
201
- this.add("config", () => config).add("query-params", createQueryParamService(this)).add("content-api", createContentAPI(this)).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({ strapi: this, db: this.db })).add("documents", () => createDocumentService(this)).add(
202
- "db",
203
- () => new Database(
203
+ this.add("config", () => config).add("query-params", createQueryParamService(this)).add("content-api", createContentAPI(this)).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({ strapi: this, db: this.db })).add("documents", () => createDocumentService(this)).add("db", () => {
204
+ const tsDir = tsUtils.resolveOutDirSync(this.dirs.app.root);
205
+ const tsMigrationsEnabled = this.config.get("database.settings.useTypescriptMigrations") === true && tsDir;
206
+ const projectDir = tsMigrationsEnabled ? tsDir : this.dirs.app.root;
207
+ return new Database(
204
208
  _.merge(this.config.get("database"), {
205
209
  logger,
206
210
  settings: {
207
211
  migrations: {
208
- dir: path.join(this.dirs.app.root, "database/migrations")
212
+ dir: path.join(projectDir, "database/migrations")
209
213
  }
210
214
  }
211
215
  })
212
- )
213
- ).add("reload", () => createReloader(this));
216
+ );
217
+ }).add("reload", () => createReloader(this));
214
218
  }
215
219
  sendStartupTelemetry() {
216
220
  this.telemetry.send("didStartServer", {
@@ -297,11 +301,13 @@ class Strapi extends Container {
297
301
  for (const provider of providers) {
298
302
  await provider.register?.(this);
299
303
  }
300
- await this.runLifecyclesFunctions(LIFECYCLES.REGISTER);
304
+ await this.runPluginsLifecycles(LIFECYCLES.REGISTER);
305
+ await this.runUserLifecycles(LIFECYCLES.REGISTER);
301
306
  convertCustomFieldType(this);
302
307
  return this;
303
308
  }
304
309
  async bootstrap() {
310
+ this.configureGlobalProxy();
305
311
  const models = [
306
312
  ...transformContentTypesToModels(
307
313
  [...Object.values(this.contentTypes), ...Object.values(this.components)],
@@ -322,7 +328,10 @@ class Strapi extends Container {
322
328
  oldContentTypes,
323
329
  contentTypes: this.contentTypes
324
330
  });
325
- await this.db.schema.sync();
331
+ const status = await this.db.schema.sync();
332
+ if (status === "CHANGED") {
333
+ await this.db.repair.removeOrphanMorphType({ pivot: "component_type" });
334
+ }
326
335
  if (this.EE) {
327
336
  await index.checkLicense({ strapi: this });
328
337
  }
@@ -339,18 +348,37 @@ class Strapi extends Container {
339
348
  await this.server.initMiddlewares();
340
349
  this.server.initRouting();
341
350
  await this.contentAPI.permissions.registerActions();
342
- await this.runLifecyclesFunctions(LIFECYCLES.BOOTSTRAP);
351
+ await this.runPluginsLifecycles(LIFECYCLES.BOOTSTRAP);
343
352
  for (const provider of providers) {
344
353
  await provider.bootstrap?.(this);
345
354
  }
355
+ await this.runUserLifecycles(LIFECYCLES.BOOTSTRAP);
346
356
  return this;
347
357
  }
358
+ configureGlobalProxy() {
359
+ const globalProxy = this.config.get("server.proxy.global");
360
+ const httpProxy = this.config.get("server.proxy.http") || globalProxy;
361
+ const httpsProxy = this.config.get("server.proxy.https") || globalProxy;
362
+ if (!httpProxy && !httpsProxy) {
363
+ return;
364
+ }
365
+ globalAgent.bootstrap();
366
+ if (httpProxy) {
367
+ this.log.info(`Using HTTP proxy: ${httpProxy}`);
368
+ global.GLOBAL_AGENT.HTTP_PROXY = httpProxy;
369
+ }
370
+ if (httpsProxy) {
371
+ this.log.info(`Using HTTPS proxy: ${httpsProxy}`);
372
+ global.GLOBAL_AGENT.HTTPS_PROXY = httpsProxy;
373
+ }
374
+ }
348
375
  async destroy() {
349
376
  this.log.info("Shutting down Strapi");
350
- await this.runLifecyclesFunctions(LIFECYCLES.DESTROY);
377
+ await this.runPluginsLifecycles(LIFECYCLES.DESTROY);
351
378
  for (const provider of providers) {
352
379
  await provider.destroy?.(this);
353
380
  }
381
+ await this.runUserLifecycles(LIFECYCLES.DESTROY);
354
382
  await this.server.destroy();
355
383
  this.eventHub.destroy();
356
384
  await this.db?.destroy();
@@ -358,8 +386,10 @@ class Strapi extends Container {
358
386
  delete global.strapi;
359
387
  this.log.info("Strapi has been shut down");
360
388
  }
361
- async runLifecyclesFunctions(lifecycleName) {
389
+ async runPluginsLifecycles(lifecycleName) {
362
390
  await this.get("modules")[lifecycleName]();
391
+ }
392
+ async runUserLifecycles(lifecycleName) {
363
393
  const userLifecycleFunction = this.app && this.app[lifecycleName];
364
394
  if (isFunction(userLifecycleFunction)) {
365
395
  await userLifecycleFunction({ strapi: this });
@@ -1 +1 @@
1
- {"version":3,"file":"Strapi.mjs","sources":["../src/Strapi.ts"],"sourcesContent":["import 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';\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 { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\n\nimport { coreStoreModel } from './services/core-store';\nimport { createConfigProvider } from './services/config';\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 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 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 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 // Instantiate the Strapi container\n this.add('config', () => config)\n .add('query-params', createQueryParamService(this))\n .add('content-api', createContentAPI(this))\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(\n 'db',\n () =>\n new Database(\n _.merge(this.config.get('database'), {\n logger,\n settings: {\n migrations: {\n dir: path.join(this.dirs.app.root, 'database/migrations'),\n },\n },\n })\n )\n )\n .add('reload', () => createReloader(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 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 (e) {\n this.telemetry.send('didNotOpenTab');\n }\n }\n }\n\n async postListen() {\n const isInitialized = await utils.isInitialized(this);\n\n this.startupLogger.logStartupMessage({ isInitialized });\n\n this.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.runLifecyclesFunctions(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 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 await this.db.schema.sync();\n\n if (this.EE) {\n await utils.ee.checkLicense({ strapi: this });\n }\n\n await this.hook('strapi::content-types.afterSync').call({\n oldContentTypes,\n contentTypes: this.contentTypes,\n });\n\n await this.store.set({\n type: 'strapi',\n name: 'content_types',\n key: 'schema',\n value: this.contentTypes,\n });\n\n await this.server.initMiddlewares();\n this.server.initRouting();\n\n await this.contentAPI.permissions.registerActions();\n\n await this.runLifecyclesFunctions(utils.LIFECYCLES.BOOTSTRAP);\n\n for (const provider of providers) {\n await provider.bootstrap?.(this);\n }\n\n return this;\n }\n\n async destroy() {\n this.log.info('Shutting down Strapi');\n await this.runLifecyclesFunctions(utils.LIFECYCLES.DESTROY);\n\n for (const provider of providers) {\n await provider.destroy?.(this);\n }\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 runLifecyclesFunctions(lifecycleName: 'register' | 'bootstrap' | 'destroy') {\n // plugins\n await this.get('modules')[lifecycleName]();\n\n // user\n const userLifecycleFunction = this.app && this.app[lifecycleName];\n if (isFunction(userLifecycleFunction)) {\n await userLifecycleFunction({ strapi: this });\n }\n }\n\n getModel(uid: 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 if (uid in this.contentTypes) {\n return this.contentTypes[uid as UID.ContentType];\n }\n\n if (uid in this.components) {\n return this.components[uid as UID.Component];\n }\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":["utils.ee","createAuth","utils.createStartupLogger","utils.createStrapiFetch","requestContext","factories.isCustomController","isInitialized","utils.openBrowser","utils.isInitialized","utils.LIFECYCLES","utils.convertCustomFieldType","utils.transformContentTypesToModels"],"mappings":"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"}
1
+ {"version":3,"file":"Strapi.mjs","sources":["../src/Strapi.ts"],"sourcesContent":["import * as globalAgent 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 tsUtils from '@strapi/typescript-utils';\nimport { loadConfiguration } from './configuration';\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 { FeaturesService, createFeaturesService } from './services/features';\nimport { createDocumentService } from './services/document-service';\n\nimport { coreStoreModel } from './services/core-store';\nimport { createConfigProvider } from './services/config';\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 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 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 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 // Instantiate the Strapi container\n this.add('config', () => config)\n .add('query-params', createQueryParamService(this))\n .add('content-api', createContentAPI(this))\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 tsDir = tsUtils.resolveOutDirSync(this.dirs.app.root);\n const tsMigrationsEnabled =\n this.config.get('database.settings.useTypescriptMigrations') === true && 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 }\n\n sendStartupTelemetry() {\n // Emit started event.\n // do not await to avoid slower startup\n // This event is anonymous\n this.telemetry\n .send('didStartServer', {\n groupProperties: {\n database: this.config.get('database.connection.client'),\n plugins: Object.keys(this.plugins),\n numberOfAllContentTypes: _.size(this.contentTypes), // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n numberOfComponents: _.size(this.components),\n numberOfDynamicZones: getNumberOfDynamicZones(),\n numberOfCustomControllers: Object.values<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 (e) {\n this.telemetry.send('didNotOpenTab');\n }\n }\n }\n\n async postListen() {\n const isInitialized = await utils.isInitialized(this);\n\n this.startupLogger.logStartupMessage({ isInitialized });\n\n this.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 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 }\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 globalAgent.bootstrap();\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 if (uid in this.contentTypes) {\n return this.contentTypes[uid as UID.ContentType];\n }\n\n if (uid in this.components) {\n return this.components[uid as UID.Component];\n }\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":["utils.ee","createAuth","utils.createStartupLogger","utils.createStrapiFetch","requestContext","factories.isCustomController","isInitialized","utils.openBrowser","utils.isInitialized","utils.LIFECYCLES","utils.convertCustomFieldType","utils.transformContentTypesToModels"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sources":["../src/compile.ts"],"sourcesContent":["import tsUtils from '@strapi/typescript-utils';\n\ninterface Options {\n appDir?: string;\n ignoreDiagnostics?: boolean;\n}\n\nexport default async function compile(options?: Options) {\n const { appDir = process.cwd(), ignoreDiagnostics = false } = options ?? {};\n const isTSProject = await tsUtils.isUsingTypeScript(appDir);\n const outDir = await tsUtils.resolveOutDir(appDir);\n\n if (isTSProject) {\n await tsUtils.compile(appDir, {\n configOptions: { options: { incremental: true }, ignoreDiagnostics },\n });\n }\n\n const distDir = isTSProject ? outDir : appDir;\n\n return { appDir, distDir };\n}\n"],"names":["tsUtils"],"mappings":";;;;AAOA,eAA8B,QAAQ,SAAmB;AACjD,QAAA,EAAE,SAAS,QAAQ,IAAA,GAAO,oBAAoB,MAAA,IAAU,WAAW;AACzE,QAAM,cAAc,MAAMA,iBAAAA,QAAQ,kBAAkB,MAAM;AAC1D,QAAM,SAAS,MAAMA,iBAAAA,QAAQ,cAAc,MAAM;AAEjD,MAAI,aAAa;AACT,UAAAA,iBAAA,QAAQ,QAAQ,QAAQ;AAAA,MAC5B,eAAe,EAAE,SAAS,EAAE,aAAa,KAAA,GAAQ,kBAAkB;AAAA,IAAA,CACpE;AAAA,EACH;AAEM,QAAA,UAAU,cAAc,SAAS;AAEhC,SAAA,EAAE,QAAQ;AACnB;;"}
1
+ {"version":3,"file":"compile.js","sources":["../src/compile.ts"],"sourcesContent":["import tsUtils from '@strapi/typescript-utils';\n\ninterface Options {\n appDir?: string;\n ignoreDiagnostics?: boolean;\n}\n\nexport default async function compile(options?: Options) {\n const { appDir = process.cwd(), ignoreDiagnostics = false } = options ?? {};\n const isTSProject = await tsUtils.isUsingTypeScript(appDir);\n const outDir = await tsUtils.resolveOutDir(appDir);\n\n if (isTSProject) {\n await tsUtils.compile(appDir, {\n configOptions: { options: { incremental: true }, ignoreDiagnostics },\n });\n }\n\n const distDir = isTSProject ? outDir : appDir;\n\n return { appDir, distDir };\n}\n"],"names":["tsUtils"],"mappings":";;;;AAOA,eAA8B,QAAQ,SAAmB;AACjD,QAAA,EAAE,SAAS,QAAQ,IAAA,GAAO,oBAAoB,MAAA,IAAU,WAAW,CAAC;AAC1E,QAAM,cAAc,MAAMA,yBAAQ,kBAAkB,MAAM;AAC1D,QAAM,SAAS,MAAMA,yBAAQ,cAAc,MAAM;AAEjD,MAAI,aAAa;AACT,UAAAA,iBAAA,QAAQ,QAAQ,QAAQ;AAAA,MAC5B,eAAe,EAAE,SAAS,EAAE,aAAa,QAAQ,kBAAkB;AAAA,IAAA,CACpE;AAAA,EAAA;AAGG,QAAA,UAAU,cAAc,SAAS;AAEhC,SAAA,EAAE,QAAQ,QAAQ;AAC3B;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"compile.mjs","sources":["../src/compile.ts"],"sourcesContent":["import tsUtils from '@strapi/typescript-utils';\n\ninterface Options {\n appDir?: string;\n ignoreDiagnostics?: boolean;\n}\n\nexport default async function compile(options?: Options) {\n const { appDir = process.cwd(), ignoreDiagnostics = false } = options ?? {};\n const isTSProject = await tsUtils.isUsingTypeScript(appDir);\n const outDir = await tsUtils.resolveOutDir(appDir);\n\n if (isTSProject) {\n await tsUtils.compile(appDir, {\n configOptions: { options: { incremental: true }, ignoreDiagnostics },\n });\n }\n\n const distDir = isTSProject ? outDir : appDir;\n\n return { appDir, distDir };\n}\n"],"names":[],"mappings":";AAOA,eAA8B,QAAQ,SAAmB;AACjD,QAAA,EAAE,SAAS,QAAQ,IAAA,GAAO,oBAAoB,MAAA,IAAU,WAAW;AACzE,QAAM,cAAc,MAAM,QAAQ,kBAAkB,MAAM;AAC1D,QAAM,SAAS,MAAM,QAAQ,cAAc,MAAM;AAEjD,MAAI,aAAa;AACT,UAAA,QAAQ,QAAQ,QAAQ;AAAA,MAC5B,eAAe,EAAE,SAAS,EAAE,aAAa,KAAA,GAAQ,kBAAkB;AAAA,IAAA,CACpE;AAAA,EACH;AAEM,QAAA,UAAU,cAAc,SAAS;AAEhC,SAAA,EAAE,QAAQ;AACnB;"}
1
+ {"version":3,"file":"compile.mjs","sources":["../src/compile.ts"],"sourcesContent":["import tsUtils from '@strapi/typescript-utils';\n\ninterface Options {\n appDir?: string;\n ignoreDiagnostics?: boolean;\n}\n\nexport default async function compile(options?: Options) {\n const { appDir = process.cwd(), ignoreDiagnostics = false } = options ?? {};\n const isTSProject = await tsUtils.isUsingTypeScript(appDir);\n const outDir = await tsUtils.resolveOutDir(appDir);\n\n if (isTSProject) {\n await tsUtils.compile(appDir, {\n configOptions: { options: { incremental: true }, ignoreDiagnostics },\n });\n }\n\n const distDir = isTSProject ? outDir : appDir;\n\n return { appDir, distDir };\n}\n"],"names":[],"mappings":";AAOA,eAA8B,QAAQ,SAAmB;AACjD,QAAA,EAAE,SAAS,QAAQ,IAAA,GAAO,oBAAoB,MAAA,IAAU,WAAW,CAAC;AAC1E,QAAM,cAAc,MAAM,QAAQ,kBAAkB,MAAM;AAC1D,QAAM,SAAS,MAAM,QAAQ,cAAc,MAAM;AAEjD,MAAI,aAAa;AACT,UAAA,QAAQ,QAAQ,QAAQ;AAAA,MAC5B,eAAe,EAAE,SAAS,EAAE,aAAa,QAAQ,kBAAkB;AAAA,IAAA,CACpE;AAAA,EAAA;AAGG,QAAA,UAAU,cAAc,SAAS;AAEhC,SAAA,EAAE,QAAQ,QAAQ;AAC3B;"}
@@ -48,8 +48,7 @@ const logWarning = (message) => {
48
48
  console.warn(message);
49
49
  };
50
50
  const loadConfigDir = (dir) => {
51
- if (!fs__default.default.existsSync(dir))
52
- return {};
51
+ if (!fs__default.default.existsSync(dir)) return {};
53
52
  const allFiles = fs__default.default.readdirSync(dir, { withFileTypes: true });
54
53
  const seenFilenames = /* @__PURE__ */ new Set();
55
54
  const configFiles = allFiles.reduce((acc, file) => {