@strapi/core 0.0.0-next.fc9d26d995624dc886b29f563e1de655d47e6609 → 0.0.0-next.ffc36acb308febe288f1a31b62cbbb75b286585c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (748) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +457 -0
  3. package/dist/Strapi.js.map +1 -0
  4. package/dist/Strapi.mjs +436 -0
  5. package/dist/Strapi.mjs.map +1 -0
  6. package/dist/compile.js +27 -0
  7. package/dist/compile.js.map +1 -0
  8. package/dist/compile.mjs +25 -0
  9. package/dist/compile.mjs.map +1 -0
  10. package/dist/configuration/config-loader.js +119 -0
  11. package/dist/configuration/config-loader.js.map +1 -0
  12. package/dist/configuration/config-loader.mjs +117 -0
  13. package/dist/configuration/config-loader.mjs.map +1 -0
  14. package/dist/configuration/get-dirs.js +33 -0
  15. package/dist/configuration/get-dirs.js.map +1 -0
  16. package/dist/configuration/get-dirs.mjs +31 -0
  17. package/dist/configuration/get-dirs.mjs.map +1 -0
  18. package/dist/configuration/index.d.ts +1 -0
  19. package/dist/configuration/index.d.ts.map +1 -1
  20. package/dist/configuration/index.js +92 -0
  21. package/dist/configuration/index.js.map +1 -0
  22. package/dist/configuration/index.mjs +90 -0
  23. package/dist/configuration/index.mjs.map +1 -0
  24. package/dist/configuration/urls.d.ts.map +1 -1
  25. package/dist/configuration/urls.js +81 -0
  26. package/dist/configuration/urls.js.map +1 -0
  27. package/dist/configuration/urls.mjs +77 -0
  28. package/dist/configuration/urls.mjs.map +1 -0
  29. package/dist/container.js +34 -0
  30. package/dist/container.js.map +1 -0
  31. package/dist/container.mjs +32 -0
  32. package/dist/container.mjs.map +1 -0
  33. package/dist/core-api/controller/collection-type.js +85 -0
  34. package/dist/core-api/controller/collection-type.js.map +1 -0
  35. package/dist/core-api/controller/collection-type.mjs +83 -0
  36. package/dist/core-api/controller/collection-type.mjs.map +1 -0
  37. package/dist/core-api/controller/index.js +67 -0
  38. package/dist/core-api/controller/index.js.map +1 -0
  39. package/dist/core-api/controller/index.mjs +65 -0
  40. package/dist/core-api/controller/index.mjs.map +1 -0
  41. package/dist/core-api/controller/single-type.js +47 -0
  42. package/dist/core-api/controller/single-type.js.map +1 -0
  43. package/dist/core-api/controller/single-type.mjs +45 -0
  44. package/dist/core-api/controller/single-type.mjs.map +1 -0
  45. package/dist/core-api/controller/transform.js +85 -0
  46. package/dist/core-api/controller/transform.js.map +1 -0
  47. package/dist/core-api/controller/transform.mjs +83 -0
  48. package/dist/core-api/controller/transform.mjs.map +1 -0
  49. package/dist/core-api/routes/index.d.ts +4 -22
  50. package/dist/core-api/routes/index.d.ts.map +1 -1
  51. package/dist/core-api/routes/index.js +211 -0
  52. package/dist/core-api/routes/index.js.map +1 -0
  53. package/dist/core-api/routes/index.mjs +190 -0
  54. package/dist/core-api/routes/index.mjs.map +1 -0
  55. package/dist/core-api/routes/validation/attributes.d.ts +244 -0
  56. package/dist/core-api/routes/validation/attributes.d.ts.map +1 -0
  57. package/dist/core-api/routes/validation/attributes.js +560 -0
  58. package/dist/core-api/routes/validation/attributes.js.map +1 -0
  59. package/dist/core-api/routes/validation/attributes.mjs +521 -0
  60. package/dist/core-api/routes/validation/attributes.mjs.map +1 -0
  61. package/dist/core-api/routes/validation/common.d.ts +105 -0
  62. package/dist/core-api/routes/validation/common.d.ts.map +1 -0
  63. package/dist/core-api/routes/validation/common.js +116 -0
  64. package/dist/core-api/routes/validation/common.js.map +1 -0
  65. package/dist/core-api/routes/validation/common.mjs +95 -0
  66. package/dist/core-api/routes/validation/common.mjs.map +1 -0
  67. package/dist/core-api/routes/validation/component.d.ts +34 -0
  68. package/dist/core-api/routes/validation/component.d.ts.map +1 -0
  69. package/dist/core-api/routes/validation/component.js +45 -0
  70. package/dist/core-api/routes/validation/component.js.map +1 -0
  71. package/dist/core-api/routes/validation/component.mjs +43 -0
  72. package/dist/core-api/routes/validation/component.mjs.map +1 -0
  73. package/dist/core-api/routes/validation/constants.d.ts +8 -0
  74. package/dist/core-api/routes/validation/constants.d.ts.map +1 -0
  75. package/dist/core-api/routes/validation/constants.js +18 -0
  76. package/dist/core-api/routes/validation/constants.js.map +1 -0
  77. package/dist/core-api/routes/validation/constants.mjs +16 -0
  78. package/dist/core-api/routes/validation/constants.mjs.map +1 -0
  79. package/dist/core-api/routes/validation/content-type.d.ts +128 -0
  80. package/dist/core-api/routes/validation/content-type.d.ts.map +1 -0
  81. package/dist/core-api/routes/validation/content-type.js +201 -0
  82. package/dist/core-api/routes/validation/content-type.js.map +1 -0
  83. package/dist/core-api/routes/validation/content-type.mjs +180 -0
  84. package/dist/core-api/routes/validation/content-type.mjs.map +1 -0
  85. package/dist/core-api/routes/validation/index.d.ts +5 -0
  86. package/dist/core-api/routes/validation/index.d.ts.map +1 -0
  87. package/dist/core-api/routes/validation/mappers.d.ts +105 -0
  88. package/dist/core-api/routes/validation/mappers.d.ts.map +1 -0
  89. package/dist/core-api/routes/validation/mappers.js +238 -0
  90. package/dist/core-api/routes/validation/mappers.js.map +1 -0
  91. package/dist/core-api/routes/validation/mappers.mjs +214 -0
  92. package/dist/core-api/routes/validation/mappers.mjs.map +1 -0
  93. package/dist/core-api/routes/validation/utils.d.ts +47 -0
  94. package/dist/core-api/routes/validation/utils.d.ts.map +1 -0
  95. package/dist/core-api/routes/validation/utils.js +112 -0
  96. package/dist/core-api/routes/validation/utils.js.map +1 -0
  97. package/dist/core-api/routes/validation/utils.mjs +90 -0
  98. package/dist/core-api/routes/validation/utils.mjs.map +1 -0
  99. package/dist/core-api/service/collection-type.js +80 -0
  100. package/dist/core-api/service/collection-type.js.map +1 -0
  101. package/dist/core-api/service/collection-type.mjs +77 -0
  102. package/dist/core-api/service/collection-type.mjs.map +1 -0
  103. package/dist/core-api/service/core-service.js +13 -0
  104. package/dist/core-api/service/core-service.js.map +1 -0
  105. package/dist/core-api/service/core-service.mjs +11 -0
  106. package/dist/core-api/service/core-service.mjs.map +1 -0
  107. package/dist/core-api/service/index.js +16 -0
  108. package/dist/core-api/service/index.js.map +1 -0
  109. package/dist/core-api/service/index.mjs +14 -0
  110. package/dist/core-api/service/index.mjs.map +1 -0
  111. package/dist/core-api/service/pagination.js +78 -0
  112. package/dist/core-api/service/pagination.js.map +1 -0
  113. package/dist/core-api/service/pagination.mjs +73 -0
  114. package/dist/core-api/service/pagination.mjs.map +1 -0
  115. package/dist/core-api/service/single-type.js +50 -0
  116. package/dist/core-api/service/single-type.js.map +1 -0
  117. package/dist/core-api/service/single-type.mjs +47 -0
  118. package/dist/core-api/service/single-type.mjs.map +1 -0
  119. package/dist/domain/content-type/index.js +106 -0
  120. package/dist/domain/content-type/index.js.map +1 -0
  121. package/dist/domain/content-type/index.mjs +103 -0
  122. package/dist/domain/content-type/index.mjs.map +1 -0
  123. package/dist/domain/content-type/validator.js +92 -0
  124. package/dist/domain/content-type/validator.js.map +1 -0
  125. package/dist/domain/content-type/validator.mjs +90 -0
  126. package/dist/domain/content-type/validator.mjs.map +1 -0
  127. package/dist/domain/module/index.d.ts.map +1 -1
  128. package/dist/domain/module/index.js +119 -0
  129. package/dist/domain/module/index.js.map +1 -0
  130. package/dist/domain/module/index.mjs +117 -0
  131. package/dist/domain/module/index.mjs.map +1 -0
  132. package/dist/domain/module/validation.js +30 -0
  133. package/dist/domain/module/validation.js.map +1 -0
  134. package/dist/domain/module/validation.mjs +28 -0
  135. package/dist/domain/module/validation.mjs.map +1 -0
  136. package/dist/ee/index.d.ts +7 -0
  137. package/dist/ee/index.d.ts.map +1 -1
  138. package/dist/ee/index.js +218 -0
  139. package/dist/ee/index.js.map +1 -0
  140. package/dist/ee/index.mjs +216 -0
  141. package/dist/ee/index.mjs.map +1 -0
  142. package/dist/ee/license.d.ts +3 -1
  143. package/dist/ee/license.d.ts.map +1 -1
  144. package/dist/ee/license.js +121 -0
  145. package/dist/ee/license.js.map +1 -0
  146. package/dist/ee/license.mjs +115 -0
  147. package/dist/ee/license.mjs.map +1 -0
  148. package/dist/factories.d.ts +3 -1
  149. package/dist/factories.d.ts.map +1 -1
  150. package/dist/factories.js +93 -0
  151. package/dist/factories.js.map +1 -0
  152. package/dist/factories.mjs +87 -0
  153. package/dist/factories.mjs.map +1 -0
  154. package/dist/index.js +19 -9943
  155. package/dist/index.js.map +1 -1
  156. package/dist/index.mjs +17 -9920
  157. package/dist/index.mjs.map +1 -1
  158. package/dist/loaders/admin.d.ts.map +1 -1
  159. package/dist/loaders/admin.js +27 -0
  160. package/dist/loaders/admin.js.map +1 -0
  161. package/dist/loaders/admin.mjs +25 -0
  162. package/dist/loaders/admin.mjs.map +1 -0
  163. package/dist/loaders/apis.js +160 -0
  164. package/dist/loaders/apis.js.map +1 -0
  165. package/dist/loaders/apis.mjs +158 -0
  166. package/dist/loaders/apis.mjs.map +1 -0
  167. package/dist/loaders/components.js +37 -0
  168. package/dist/loaders/components.js.map +1 -0
  169. package/dist/loaders/components.mjs +35 -0
  170. package/dist/loaders/components.mjs.map +1 -0
  171. package/dist/loaders/index.js +26 -0
  172. package/dist/loaders/index.js.map +1 -0
  173. package/dist/loaders/index.mjs +24 -0
  174. package/dist/loaders/index.mjs.map +1 -0
  175. package/dist/loaders/middlewares.js +35 -0
  176. package/dist/loaders/middlewares.js.map +1 -0
  177. package/dist/loaders/middlewares.mjs +33 -0
  178. package/dist/loaders/middlewares.mjs.map +1 -0
  179. package/dist/loaders/plugins/get-enabled-plugins.js +136 -0
  180. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -0
  181. package/dist/loaders/plugins/get-enabled-plugins.mjs +134 -0
  182. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -0
  183. package/dist/loaders/plugins/get-user-plugins-config.js +28 -0
  184. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -0
  185. package/dist/loaders/plugins/get-user-plugins-config.mjs +26 -0
  186. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -0
  187. package/dist/loaders/plugins/index.js +155 -0
  188. package/dist/loaders/plugins/index.js.map +1 -0
  189. package/dist/loaders/plugins/index.mjs +134 -0
  190. package/dist/loaders/plugins/index.mjs.map +1 -0
  191. package/dist/loaders/policies.js +29 -0
  192. package/dist/loaders/policies.js.map +1 -0
  193. package/dist/loaders/policies.mjs +27 -0
  194. package/dist/loaders/policies.mjs.map +1 -0
  195. package/dist/loaders/sanitizers.js +12 -0
  196. package/dist/loaders/sanitizers.js.map +1 -0
  197. package/dist/loaders/sanitizers.mjs +10 -0
  198. package/dist/loaders/sanitizers.mjs.map +1 -0
  199. package/dist/loaders/src-index.js +41 -0
  200. package/dist/loaders/src-index.js.map +1 -0
  201. package/dist/loaders/src-index.mjs +39 -0
  202. package/dist/loaders/src-index.mjs.map +1 -0
  203. package/dist/loaders/validators.js +11 -0
  204. package/dist/loaders/validators.js.map +1 -0
  205. package/dist/loaders/validators.mjs +9 -0
  206. package/dist/loaders/validators.mjs.map +1 -0
  207. package/dist/middlewares/body.js +69 -0
  208. package/dist/middlewares/body.js.map +1 -0
  209. package/dist/middlewares/body.mjs +67 -0
  210. package/dist/middlewares/body.mjs.map +1 -0
  211. package/dist/middlewares/compression.js +8 -0
  212. package/dist/middlewares/compression.js.map +1 -0
  213. package/dist/middlewares/compression.mjs +6 -0
  214. package/dist/middlewares/compression.mjs.map +1 -0
  215. package/dist/middlewares/cors.d.ts +9 -1
  216. package/dist/middlewares/cors.d.ts.map +1 -1
  217. package/dist/middlewares/cors.js +86 -0
  218. package/dist/middlewares/cors.js.map +1 -0
  219. package/dist/middlewares/cors.mjs +83 -0
  220. package/dist/middlewares/cors.mjs.map +1 -0
  221. package/dist/middlewares/errors.js +35 -0
  222. package/dist/middlewares/errors.js.map +1 -0
  223. package/dist/middlewares/errors.mjs +33 -0
  224. package/dist/middlewares/errors.mjs.map +1 -0
  225. package/dist/middlewares/favicon.js +32 -0
  226. package/dist/middlewares/favicon.js.map +1 -0
  227. package/dist/middlewares/favicon.mjs +30 -0
  228. package/dist/middlewares/favicon.mjs.map +1 -0
  229. package/dist/middlewares/index.js +36 -0
  230. package/dist/middlewares/index.js.map +1 -0
  231. package/dist/middlewares/index.mjs +34 -0
  232. package/dist/middlewares/index.mjs.map +1 -0
  233. package/dist/middlewares/ip.js +8 -0
  234. package/dist/middlewares/ip.js.map +1 -0
  235. package/dist/middlewares/ip.mjs +6 -0
  236. package/dist/middlewares/ip.mjs.map +1 -0
  237. package/dist/middlewares/logger.js +13 -0
  238. package/dist/middlewares/logger.js.map +1 -0
  239. package/dist/middlewares/logger.mjs +11 -0
  240. package/dist/middlewares/logger.mjs.map +1 -0
  241. package/dist/middlewares/powered-by.js +18 -0
  242. package/dist/middlewares/powered-by.js.map +1 -0
  243. package/dist/middlewares/powered-by.mjs +16 -0
  244. package/dist/middlewares/powered-by.mjs.map +1 -0
  245. package/dist/middlewares/public.js +38 -0
  246. package/dist/middlewares/public.js.map +1 -0
  247. package/dist/middlewares/public.mjs +36 -0
  248. package/dist/middlewares/public.mjs.map +1 -0
  249. package/dist/middlewares/query.js +43 -0
  250. package/dist/middlewares/query.js.map +1 -0
  251. package/dist/middlewares/query.mjs +41 -0
  252. package/dist/middlewares/query.mjs.map +1 -0
  253. package/dist/middlewares/response-time.js +13 -0
  254. package/dist/middlewares/response-time.js.map +1 -0
  255. package/dist/middlewares/response-time.mjs +11 -0
  256. package/dist/middlewares/response-time.mjs.map +1 -0
  257. package/dist/middlewares/responses.js +17 -0
  258. package/dist/middlewares/responses.js.map +1 -0
  259. package/dist/middlewares/responses.mjs +15 -0
  260. package/dist/middlewares/responses.mjs.map +1 -0
  261. package/dist/middlewares/security.js +116 -0
  262. package/dist/middlewares/security.js.map +1 -0
  263. package/dist/middlewares/security.mjs +114 -0
  264. package/dist/middlewares/security.mjs.map +1 -0
  265. package/dist/middlewares/session.js +31 -0
  266. package/dist/middlewares/session.js.map +1 -0
  267. package/dist/middlewares/session.mjs +29 -0
  268. package/dist/middlewares/session.mjs.map +1 -0
  269. package/dist/migrations/database/5.0.0-discard-drafts.js +168 -0
  270. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -0
  271. package/dist/migrations/database/5.0.0-discard-drafts.mjs +165 -0
  272. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -0
  273. package/dist/migrations/draft-publish.js +69 -0
  274. package/dist/migrations/draft-publish.js.map +1 -0
  275. package/dist/migrations/draft-publish.mjs +66 -0
  276. package/dist/migrations/draft-publish.mjs.map +1 -0
  277. package/dist/migrations/i18n.js +71 -0
  278. package/dist/migrations/i18n.js.map +1 -0
  279. package/dist/migrations/i18n.mjs +68 -0
  280. package/dist/migrations/i18n.mjs.map +1 -0
  281. package/dist/migrations/index.js +29 -0
  282. package/dist/migrations/index.js.map +1 -0
  283. package/dist/migrations/index.mjs +26 -0
  284. package/dist/migrations/index.mjs.map +1 -0
  285. package/dist/package.json.js +185 -0
  286. package/dist/package.json.js.map +1 -0
  287. package/dist/package.json.mjs +162 -0
  288. package/dist/package.json.mjs.map +1 -0
  289. package/dist/providers/admin.js +30 -0
  290. package/dist/providers/admin.js.map +1 -0
  291. package/dist/providers/admin.mjs +28 -0
  292. package/dist/providers/admin.mjs.map +1 -0
  293. package/dist/providers/coreStore.js +16 -0
  294. package/dist/providers/coreStore.js.map +1 -0
  295. package/dist/providers/coreStore.mjs +14 -0
  296. package/dist/providers/coreStore.mjs.map +1 -0
  297. package/dist/providers/cron.js +23 -0
  298. package/dist/providers/cron.js.map +1 -0
  299. package/dist/providers/cron.mjs +21 -0
  300. package/dist/providers/cron.mjs.map +1 -0
  301. package/dist/providers/index.js +20 -0
  302. package/dist/providers/index.js.map +1 -0
  303. package/dist/providers/index.mjs +18 -0
  304. package/dist/providers/index.mjs.map +1 -0
  305. package/dist/providers/provider.js +6 -0
  306. package/dist/providers/provider.js.map +1 -0
  307. package/dist/providers/provider.mjs +4 -0
  308. package/dist/providers/provider.mjs.map +1 -0
  309. package/dist/providers/registries.js +40 -0
  310. package/dist/providers/registries.js.map +1 -0
  311. package/dist/providers/registries.mjs +38 -0
  312. package/dist/providers/registries.mjs.map +1 -0
  313. package/dist/providers/telemetry.js +22 -0
  314. package/dist/providers/telemetry.js.map +1 -0
  315. package/dist/providers/telemetry.mjs +20 -0
  316. package/dist/providers/telemetry.mjs.map +1 -0
  317. package/dist/providers/webhooks.js +32 -0
  318. package/dist/providers/webhooks.js.map +1 -0
  319. package/dist/providers/webhooks.mjs +30 -0
  320. package/dist/providers/webhooks.mjs.map +1 -0
  321. package/dist/registries/apis.js +26 -0
  322. package/dist/registries/apis.js.map +1 -0
  323. package/dist/registries/apis.mjs +24 -0
  324. package/dist/registries/apis.mjs.map +1 -0
  325. package/dist/registries/components.js +43 -0
  326. package/dist/registries/components.js.map +1 -0
  327. package/dist/registries/components.mjs +41 -0
  328. package/dist/registries/components.mjs.map +1 -0
  329. package/dist/registries/content-types.js +65 -0
  330. package/dist/registries/content-types.js.map +1 -0
  331. package/dist/registries/content-types.mjs +63 -0
  332. package/dist/registries/content-types.mjs.map +1 -0
  333. package/dist/registries/controllers.js +79 -0
  334. package/dist/registries/controllers.js.map +1 -0
  335. package/dist/registries/controllers.mjs +77 -0
  336. package/dist/registries/controllers.mjs.map +1 -0
  337. package/dist/registries/custom-fields.js +81 -0
  338. package/dist/registries/custom-fields.js.map +1 -0
  339. package/dist/registries/custom-fields.mjs +79 -0
  340. package/dist/registries/custom-fields.mjs.map +1 -0
  341. package/dist/registries/hooks.js +55 -0
  342. package/dist/registries/hooks.js.map +1 -0
  343. package/dist/registries/hooks.mjs +53 -0
  344. package/dist/registries/hooks.mjs.map +1 -0
  345. package/dist/registries/middlewares.js +58 -0
  346. package/dist/registries/middlewares.js.map +1 -0
  347. package/dist/registries/middlewares.mjs +56 -0
  348. package/dist/registries/middlewares.mjs.map +1 -0
  349. package/dist/registries/models.js +17 -0
  350. package/dist/registries/models.js.map +1 -0
  351. package/dist/registries/models.mjs +15 -0
  352. package/dist/registries/models.mjs.map +1 -0
  353. package/dist/registries/modules.js +42 -0
  354. package/dist/registries/modules.js.map +1 -0
  355. package/dist/registries/modules.mjs +40 -0
  356. package/dist/registries/modules.mjs.map +1 -0
  357. package/dist/registries/namespace.js +28 -0
  358. package/dist/registries/namespace.js.map +1 -0
  359. package/dist/registries/namespace.mjs +24 -0
  360. package/dist/registries/namespace.mjs.map +1 -0
  361. package/dist/registries/plugins.js +26 -0
  362. package/dist/registries/plugins.js.map +1 -0
  363. package/dist/registries/plugins.mjs +24 -0
  364. package/dist/registries/plugins.mjs.map +1 -0
  365. package/dist/registries/policies.js +115 -0
  366. package/dist/registries/policies.js.map +1 -0
  367. package/dist/registries/policies.mjs +113 -0
  368. package/dist/registries/policies.mjs.map +1 -0
  369. package/dist/registries/sanitizers.js +26 -0
  370. package/dist/registries/sanitizers.js.map +1 -0
  371. package/dist/registries/sanitizers.mjs +24 -0
  372. package/dist/registries/sanitizers.mjs.map +1 -0
  373. package/dist/registries/services.js +80 -0
  374. package/dist/registries/services.js.map +1 -0
  375. package/dist/registries/services.mjs +78 -0
  376. package/dist/registries/services.mjs.map +1 -0
  377. package/dist/registries/validators.js +26 -0
  378. package/dist/registries/validators.js.map +1 -0
  379. package/dist/registries/validators.mjs +24 -0
  380. package/dist/registries/validators.mjs.map +1 -0
  381. package/dist/services/auth/index.js +81 -0
  382. package/dist/services/auth/index.js.map +1 -0
  383. package/dist/services/auth/index.mjs +79 -0
  384. package/dist/services/auth/index.mjs.map +1 -0
  385. package/dist/services/config.js +51 -0
  386. package/dist/services/config.js.map +1 -0
  387. package/dist/services/config.mjs +49 -0
  388. package/dist/services/config.mjs.map +1 -0
  389. package/dist/services/content-api/index.js +86 -0
  390. package/dist/services/content-api/index.js.map +1 -0
  391. package/dist/services/content-api/index.mjs +84 -0
  392. package/dist/services/content-api/index.mjs.map +1 -0
  393. package/dist/services/content-api/permissions/engine.js +10 -0
  394. package/dist/services/content-api/permissions/engine.js.map +1 -0
  395. package/dist/services/content-api/permissions/engine.mjs +8 -0
  396. package/dist/services/content-api/permissions/engine.mjs.map +1 -0
  397. package/dist/services/content-api/permissions/index.js +107 -0
  398. package/dist/services/content-api/permissions/index.js.map +1 -0
  399. package/dist/services/content-api/permissions/index.mjs +105 -0
  400. package/dist/services/content-api/permissions/index.mjs.map +1 -0
  401. package/dist/services/content-api/permissions/providers/action.js +19 -0
  402. package/dist/services/content-api/permissions/providers/action.js.map +1 -0
  403. package/dist/services/content-api/permissions/providers/action.mjs +17 -0
  404. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -0
  405. package/dist/services/content-api/permissions/providers/condition.js +19 -0
  406. package/dist/services/content-api/permissions/providers/condition.js.map +1 -0
  407. package/dist/services/content-api/permissions/providers/condition.mjs +17 -0
  408. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -0
  409. package/dist/services/core-store.d.ts +2 -2
  410. package/dist/services/core-store.d.ts.map +1 -1
  411. package/dist/services/core-store.js +127 -0
  412. package/dist/services/core-store.js.map +1 -0
  413. package/dist/services/core-store.mjs +124 -0
  414. package/dist/services/core-store.mjs.map +1 -0
  415. package/dist/services/cron.js +77 -0
  416. package/dist/services/cron.js.map +1 -0
  417. package/dist/services/cron.mjs +75 -0
  418. package/dist/services/cron.mjs.map +1 -0
  419. package/dist/services/custom-fields.js +12 -0
  420. package/dist/services/custom-fields.js.map +1 -0
  421. package/dist/services/custom-fields.mjs +10 -0
  422. package/dist/services/custom-fields.mjs.map +1 -0
  423. package/dist/services/document-service/attributes/index.js +27 -0
  424. package/dist/services/document-service/attributes/index.js.map +1 -0
  425. package/dist/services/document-service/attributes/index.mjs +25 -0
  426. package/dist/services/document-service/attributes/index.mjs.map +1 -0
  427. package/dist/services/document-service/attributes/transforms.js +21 -0
  428. package/dist/services/document-service/attributes/transforms.js.map +1 -0
  429. package/dist/services/document-service/attributes/transforms.mjs +19 -0
  430. package/dist/services/document-service/attributes/transforms.mjs.map +1 -0
  431. package/dist/services/document-service/common.js +8 -0
  432. package/dist/services/document-service/common.js.map +1 -0
  433. package/dist/services/document-service/common.mjs +6 -0
  434. package/dist/services/document-service/common.mjs.map +1 -0
  435. package/dist/services/document-service/components.js +286 -0
  436. package/dist/services/document-service/components.js.map +1 -0
  437. package/dist/services/document-service/components.mjs +278 -0
  438. package/dist/services/document-service/components.mjs.map +1 -0
  439. package/dist/services/document-service/draft-and-publish.js +109 -0
  440. package/dist/services/document-service/draft-and-publish.js.map +1 -0
  441. package/dist/services/document-service/draft-and-publish.mjs +102 -0
  442. package/dist/services/document-service/draft-and-publish.mjs.map +1 -0
  443. package/dist/services/document-service/entries.d.ts.map +1 -1
  444. package/dist/services/document-service/entries.js +155 -0
  445. package/dist/services/document-service/entries.js.map +1 -0
  446. package/dist/services/document-service/entries.mjs +153 -0
  447. package/dist/services/document-service/entries.mjs.map +1 -0
  448. package/dist/services/document-service/events.js +59 -0
  449. package/dist/services/document-service/events.js.map +1 -0
  450. package/dist/services/document-service/events.mjs +57 -0
  451. package/dist/services/document-service/events.mjs.map +1 -0
  452. package/dist/services/document-service/index.js +56 -0
  453. package/dist/services/document-service/index.js.map +1 -0
  454. package/dist/services/document-service/index.mjs +54 -0
  455. package/dist/services/document-service/index.mjs.map +1 -0
  456. package/dist/services/document-service/internationalization.d.ts +6 -1
  457. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  458. package/dist/services/document-service/internationalization.js +111 -0
  459. package/dist/services/document-service/internationalization.js.map +1 -0
  460. package/dist/services/document-service/internationalization.mjs +105 -0
  461. package/dist/services/document-service/internationalization.mjs.map +1 -0
  462. package/dist/services/document-service/middlewares/errors.js +29 -0
  463. package/dist/services/document-service/middlewares/errors.js.map +1 -0
  464. package/dist/services/document-service/middlewares/errors.mjs +27 -0
  465. package/dist/services/document-service/middlewares/errors.mjs.map +1 -0
  466. package/dist/services/document-service/middlewares/middleware-manager.js +51 -0
  467. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -0
  468. package/dist/services/document-service/middlewares/middleware-manager.mjs +49 -0
  469. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -0
  470. package/dist/services/document-service/params.js +14 -0
  471. package/dist/services/document-service/params.js.map +1 -0
  472. package/dist/services/document-service/params.mjs +12 -0
  473. package/dist/services/document-service/params.mjs.map +1 -0
  474. package/dist/services/document-service/repository.d.ts.map +1 -1
  475. package/dist/services/document-service/repository.js +365 -0
  476. package/dist/services/document-service/repository.js.map +1 -0
  477. package/dist/services/document-service/repository.mjs +363 -0
  478. package/dist/services/document-service/repository.mjs.map +1 -0
  479. package/dist/services/document-service/transform/data.js +25 -0
  480. package/dist/services/document-service/transform/data.js.map +1 -0
  481. package/dist/services/document-service/transform/data.mjs +23 -0
  482. package/dist/services/document-service/transform/data.mjs.map +1 -0
  483. package/dist/services/document-service/transform/fields.js +33 -0
  484. package/dist/services/document-service/transform/fields.js.map +1 -0
  485. package/dist/services/document-service/transform/fields.mjs +31 -0
  486. package/dist/services/document-service/transform/fields.mjs.map +1 -0
  487. package/dist/services/document-service/transform/id-map.js +125 -0
  488. package/dist/services/document-service/transform/id-map.js.map +1 -0
  489. package/dist/services/document-service/transform/id-map.mjs +123 -0
  490. package/dist/services/document-service/transform/id-map.mjs.map +1 -0
  491. package/dist/services/document-service/transform/id-transform.js +41 -0
  492. package/dist/services/document-service/transform/id-transform.js.map +1 -0
  493. package/dist/services/document-service/transform/id-transform.mjs +39 -0
  494. package/dist/services/document-service/transform/id-transform.mjs.map +1 -0
  495. package/dist/services/document-service/transform/populate.js +26 -0
  496. package/dist/services/document-service/transform/populate.js.map +1 -0
  497. package/dist/services/document-service/transform/populate.mjs +24 -0
  498. package/dist/services/document-service/transform/populate.mjs.map +1 -0
  499. package/dist/services/document-service/transform/query.js +14 -0
  500. package/dist/services/document-service/transform/query.js.map +1 -0
  501. package/dist/services/document-service/transform/query.mjs +12 -0
  502. package/dist/services/document-service/transform/query.mjs.map +1 -0
  503. package/dist/services/document-service/transform/relations/extract/data-ids.js +80 -0
  504. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -0
  505. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +78 -0
  506. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -0
  507. package/dist/services/document-service/transform/relations/transform/data-ids.js +110 -0
  508. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -0
  509. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +108 -0
  510. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -0
  511. package/dist/services/document-service/transform/relations/transform/default-locale.js +50 -0
  512. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -0
  513. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +48 -0
  514. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -0
  515. package/dist/services/document-service/transform/relations/utils/dp.js +56 -0
  516. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -0
  517. package/dist/services/document-service/transform/relations/utils/dp.mjs +54 -0
  518. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -0
  519. package/dist/services/document-service/transform/relations/utils/i18n.js +27 -0
  520. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -0
  521. package/dist/services/document-service/transform/relations/utils/i18n.mjs +23 -0
  522. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -0
  523. package/dist/services/document-service/transform/relations/utils/map-relation.js +130 -0
  524. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -0
  525. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +127 -0
  526. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -0
  527. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  528. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  529. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  530. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  531. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  532. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  533. package/dist/services/document-service/utils/populate.js +71 -0
  534. package/dist/services/document-service/utils/populate.js.map +1 -0
  535. package/dist/services/document-service/utils/populate.mjs +69 -0
  536. package/dist/services/document-service/utils/populate.mjs.map +1 -0
  537. package/dist/services/document-service/utils/unidirectional-relations.js +116 -0
  538. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
  539. package/dist/services/document-service/utils/unidirectional-relations.mjs +113 -0
  540. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
  541. package/dist/services/entity-service/index.js +238 -0
  542. package/dist/services/entity-service/index.js.map +1 -0
  543. package/dist/services/entity-service/index.mjs +236 -0
  544. package/dist/services/entity-service/index.mjs.map +1 -0
  545. package/dist/services/entity-validator/blocks-validator.js +160 -0
  546. package/dist/services/entity-validator/blocks-validator.js.map +1 -0
  547. package/dist/services/entity-validator/blocks-validator.mjs +158 -0
  548. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -0
  549. package/dist/services/entity-validator/index.d.ts.map +1 -1
  550. package/dist/services/entity-validator/index.js +393 -0
  551. package/dist/services/entity-validator/index.js.map +1 -0
  552. package/dist/services/entity-validator/index.mjs +391 -0
  553. package/dist/services/entity-validator/index.mjs.map +1 -0
  554. package/dist/services/entity-validator/validators.d.ts +1 -0
  555. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  556. package/dist/services/entity-validator/validators.js +302 -0
  557. package/dist/services/entity-validator/validators.js.map +1 -0
  558. package/dist/services/entity-validator/validators.mjs +293 -0
  559. package/dist/services/entity-validator/validators.mjs.map +1 -0
  560. package/dist/services/errors.js +76 -0
  561. package/dist/services/errors.js.map +1 -0
  562. package/dist/services/errors.mjs +72 -0
  563. package/dist/services/errors.mjs.map +1 -0
  564. package/dist/services/event-hub.js +85 -0
  565. package/dist/services/event-hub.js.map +1 -0
  566. package/dist/services/event-hub.mjs +83 -0
  567. package/dist/services/event-hub.mjs.map +1 -0
  568. package/dist/services/features.js +22 -0
  569. package/dist/services/features.js.map +1 -0
  570. package/dist/services/features.mjs +20 -0
  571. package/dist/services/features.mjs.map +1 -0
  572. package/dist/services/fs.js +52 -0
  573. package/dist/services/fs.js.map +1 -0
  574. package/dist/services/fs.mjs +50 -0
  575. package/dist/services/fs.mjs.map +1 -0
  576. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  577. package/dist/services/metrics/admin-user-hash.js +16 -0
  578. package/dist/services/metrics/admin-user-hash.js.map +1 -0
  579. package/dist/services/metrics/admin-user-hash.mjs +14 -0
  580. package/dist/services/metrics/admin-user-hash.mjs.map +1 -0
  581. package/dist/services/metrics/index.d.ts +1 -1
  582. package/dist/services/metrics/index.d.ts.map +1 -1
  583. package/dist/services/metrics/index.js +52 -0
  584. package/dist/services/metrics/index.js.map +1 -0
  585. package/dist/services/metrics/index.mjs +50 -0
  586. package/dist/services/metrics/index.mjs.map +1 -0
  587. package/dist/services/metrics/is-truthy.js +16 -0
  588. package/dist/services/metrics/is-truthy.js.map +1 -0
  589. package/dist/services/metrics/is-truthy.mjs +14 -0
  590. package/dist/services/metrics/is-truthy.mjs.map +1 -0
  591. package/dist/services/metrics/middleware.js +40 -0
  592. package/dist/services/metrics/middleware.js.map +1 -0
  593. package/dist/services/metrics/middleware.mjs +38 -0
  594. package/dist/services/metrics/middleware.mjs.map +1 -0
  595. package/dist/services/metrics/rate-limiter.js +26 -0
  596. package/dist/services/metrics/rate-limiter.js.map +1 -0
  597. package/dist/services/metrics/rate-limiter.mjs +24 -0
  598. package/dist/services/metrics/rate-limiter.mjs.map +1 -0
  599. package/dist/services/metrics/sender.d.ts.map +1 -1
  600. package/dist/services/metrics/sender.js +85 -0
  601. package/dist/services/metrics/sender.js.map +1 -0
  602. package/dist/services/metrics/sender.mjs +83 -0
  603. package/dist/services/metrics/sender.mjs.map +1 -0
  604. package/dist/services/query-params.js +15 -0
  605. package/dist/services/query-params.js.map +1 -0
  606. package/dist/services/query-params.mjs +13 -0
  607. package/dist/services/query-params.mjs.map +1 -0
  608. package/dist/services/reloader.js +39 -0
  609. package/dist/services/reloader.js.map +1 -0
  610. package/dist/services/reloader.mjs +37 -0
  611. package/dist/services/reloader.mjs.map +1 -0
  612. package/dist/services/request-context.js +16 -0
  613. package/dist/services/request-context.js.map +1 -0
  614. package/dist/services/request-context.mjs +14 -0
  615. package/dist/services/request-context.mjs.map +1 -0
  616. package/dist/services/server/admin-api.js +14 -0
  617. package/dist/services/server/admin-api.js.map +1 -0
  618. package/dist/services/server/admin-api.mjs +12 -0
  619. package/dist/services/server/admin-api.mjs.map +1 -0
  620. package/dist/services/server/api.js +36 -0
  621. package/dist/services/server/api.js.map +1 -0
  622. package/dist/services/server/api.mjs +34 -0
  623. package/dist/services/server/api.mjs.map +1 -0
  624. package/dist/services/server/compose-endpoint.js +128 -0
  625. package/dist/services/server/compose-endpoint.js.map +1 -0
  626. package/dist/services/server/compose-endpoint.mjs +126 -0
  627. package/dist/services/server/compose-endpoint.mjs.map +1 -0
  628. package/dist/services/server/content-api.js +14 -0
  629. package/dist/services/server/content-api.js.map +1 -0
  630. package/dist/services/server/content-api.mjs +12 -0
  631. package/dist/services/server/content-api.mjs.map +1 -0
  632. package/dist/services/server/http-server.js +54 -0
  633. package/dist/services/server/http-server.js.map +1 -0
  634. package/dist/services/server/http-server.mjs +52 -0
  635. package/dist/services/server/http-server.mjs.map +1 -0
  636. package/dist/services/server/index.js +90 -0
  637. package/dist/services/server/index.js.map +1 -0
  638. package/dist/services/server/index.mjs +88 -0
  639. package/dist/services/server/index.mjs.map +1 -0
  640. package/dist/services/server/koa.js +54 -0
  641. package/dist/services/server/koa.js.map +1 -0
  642. package/dist/services/server/koa.mjs +52 -0
  643. package/dist/services/server/koa.mjs.map +1 -0
  644. package/dist/services/server/middleware.js +96 -0
  645. package/dist/services/server/middleware.js.map +1 -0
  646. package/dist/services/server/middleware.mjs +93 -0
  647. package/dist/services/server/middleware.mjs.map +1 -0
  648. package/dist/services/server/policy.js +27 -0
  649. package/dist/services/server/policy.js.map +1 -0
  650. package/dist/services/server/policy.mjs +25 -0
  651. package/dist/services/server/policy.mjs.map +1 -0
  652. package/dist/services/server/register-middlewares.js +79 -0
  653. package/dist/services/server/register-middlewares.js.map +1 -0
  654. package/dist/services/server/register-middlewares.mjs +77 -0
  655. package/dist/services/server/register-middlewares.mjs.map +1 -0
  656. package/dist/services/server/register-routes.js +119 -0
  657. package/dist/services/server/register-routes.js.map +1 -0
  658. package/dist/services/server/register-routes.mjs +117 -0
  659. package/dist/services/server/register-routes.mjs.map +1 -0
  660. package/dist/services/server/routing.d.ts +10 -0
  661. package/dist/services/server/routing.d.ts.map +1 -1
  662. package/dist/services/server/routing.js +110 -0
  663. package/dist/services/server/routing.js.map +1 -0
  664. package/dist/services/server/routing.mjs +107 -0
  665. package/dist/services/server/routing.mjs.map +1 -0
  666. package/dist/services/utils/conditional-fields.d.ts +3 -0
  667. package/dist/services/utils/conditional-fields.d.ts.map +1 -0
  668. package/dist/services/utils/conditional-fields.js +22 -0
  669. package/dist/services/utils/conditional-fields.js.map +1 -0
  670. package/dist/services/utils/conditional-fields.mjs +20 -0
  671. package/dist/services/utils/conditional-fields.mjs.map +1 -0
  672. package/dist/services/utils/dynamic-zones.js +16 -0
  673. package/dist/services/utils/dynamic-zones.js.map +1 -0
  674. package/dist/services/utils/dynamic-zones.mjs +14 -0
  675. package/dist/services/utils/dynamic-zones.mjs.map +1 -0
  676. package/dist/services/webhook-runner.js +135 -0
  677. package/dist/services/webhook-runner.js.map +1 -0
  678. package/dist/services/webhook-runner.mjs +133 -0
  679. package/dist/services/webhook-runner.mjs.map +1 -0
  680. package/dist/services/webhook-store.js +143 -0
  681. package/dist/services/webhook-store.js.map +1 -0
  682. package/dist/services/webhook-store.mjs +140 -0
  683. package/dist/services/webhook-store.mjs.map +1 -0
  684. package/dist/services/worker-queue.js +51 -0
  685. package/dist/services/worker-queue.js.map +1 -0
  686. package/dist/services/worker-queue.mjs +49 -0
  687. package/dist/services/worker-queue.mjs.map +1 -0
  688. package/dist/utils/convert-custom-field-type.js +21 -0
  689. package/dist/utils/convert-custom-field-type.js.map +1 -0
  690. package/dist/utils/convert-custom-field-type.mjs +19 -0
  691. package/dist/utils/convert-custom-field-type.mjs.map +1 -0
  692. package/dist/utils/cron.js +72 -0
  693. package/dist/utils/cron.js.map +1 -0
  694. package/dist/utils/cron.mjs +70 -0
  695. package/dist/utils/cron.mjs.map +1 -0
  696. package/dist/utils/fetch.d.ts +5 -1
  697. package/dist/utils/fetch.d.ts.map +1 -1
  698. package/dist/utils/fetch.js +31 -0
  699. package/dist/utils/fetch.js.map +1 -0
  700. package/dist/utils/fetch.mjs +29 -0
  701. package/dist/utils/fetch.mjs.map +1 -0
  702. package/dist/utils/filepath-to-prop-path.js +25 -0
  703. package/dist/utils/filepath-to-prop-path.js.map +1 -0
  704. package/dist/utils/filepath-to-prop-path.mjs +23 -0
  705. package/dist/utils/filepath-to-prop-path.mjs.map +1 -0
  706. package/dist/utils/is-initialized.js +25 -0
  707. package/dist/utils/is-initialized.js.map +1 -0
  708. package/dist/utils/is-initialized.mjs +23 -0
  709. package/dist/utils/is-initialized.mjs.map +1 -0
  710. package/dist/utils/lifecycles.js +10 -0
  711. package/dist/utils/lifecycles.js.map +1 -0
  712. package/dist/utils/lifecycles.mjs +8 -0
  713. package/dist/utils/lifecycles.mjs.map +1 -0
  714. package/dist/utils/load-config-file.js +47 -0
  715. package/dist/utils/load-config-file.js.map +1 -0
  716. package/dist/utils/load-config-file.mjs +45 -0
  717. package/dist/utils/load-config-file.mjs.map +1 -0
  718. package/dist/utils/load-files.js +44 -0
  719. package/dist/utils/load-files.js.map +1 -0
  720. package/dist/utils/load-files.mjs +42 -0
  721. package/dist/utils/load-files.mjs.map +1 -0
  722. package/dist/utils/open-browser.js +11 -0
  723. package/dist/utils/open-browser.js.map +1 -0
  724. package/dist/utils/open-browser.mjs +9 -0
  725. package/dist/utils/open-browser.mjs.map +1 -0
  726. package/dist/utils/resolve-working-dirs.js +26 -0
  727. package/dist/utils/resolve-working-dirs.js.map +1 -0
  728. package/dist/utils/resolve-working-dirs.mjs +24 -0
  729. package/dist/utils/resolve-working-dirs.mjs.map +1 -0
  730. package/dist/utils/signals.js +23 -0
  731. package/dist/utils/signals.js.map +1 -0
  732. package/dist/utils/signals.mjs +21 -0
  733. package/dist/utils/signals.mjs.map +1 -0
  734. package/dist/utils/startup-logger.js +110 -0
  735. package/dist/utils/startup-logger.js.map +1 -0
  736. package/dist/utils/startup-logger.mjs +108 -0
  737. package/dist/utils/startup-logger.mjs.map +1 -0
  738. package/dist/utils/transform-content-types-to-models.d.ts +197 -0
  739. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  740. package/dist/utils/transform-content-types-to-models.js +377 -0
  741. package/dist/utils/transform-content-types-to-models.js.map +1 -0
  742. package/dist/utils/transform-content-types-to-models.mjs +365 -0
  743. package/dist/utils/transform-content-types-to-models.mjs.map +1 -0
  744. package/dist/utils/update-notifier/index.js +80 -0
  745. package/dist/utils/update-notifier/index.js.map +1 -0
  746. package/dist/utils/update-notifier/index.mjs +78 -0
  747. package/dist/utils/update-notifier/index.mjs.map +1 -0
  748. package/package.json +17 -14
@@ -0,0 +1,93 @@
1
+ import path from 'path';
2
+ import { isArray } from 'lodash/fp';
3
+ import { importDefault } from '@strapi/utils';
4
+
5
+ const instantiateMiddleware = (middlewareFactory, name, config, strapi)=>{
6
+ try {
7
+ return middlewareFactory(config, {
8
+ strapi
9
+ });
10
+ } catch (e) {
11
+ if (e instanceof Error) {
12
+ throw new Error(`Middleware "${name}": ${e.message}`);
13
+ }
14
+ }
15
+ };
16
+ const resolveRouteMiddlewares = (route, strapi)=>{
17
+ const middlewaresConfig = route?.config?.middlewares ?? [];
18
+ if (!isArray(middlewaresConfig)) {
19
+ throw new Error('Route middlewares config must be an array');
20
+ }
21
+ const middlewares = resolveMiddlewares(middlewaresConfig, strapi);
22
+ return middlewares.map(({ handler })=>handler);
23
+ };
24
+ const dummyMiddleware = (_, next)=>next();
25
+ /**
26
+ * Initialize every configured middlewares
27
+ */ const resolveMiddlewares = (config, strapi)=>{
28
+ const middlewares = [];
29
+ for (const item of config){
30
+ if (typeof item === 'function') {
31
+ middlewares.push({
32
+ name: null,
33
+ handler: item
34
+ });
35
+ continue;
36
+ }
37
+ if (typeof item === 'string') {
38
+ const middlewareFactory = strapi.middleware(item);
39
+ if (!middlewareFactory) {
40
+ throw new Error(`Middleware ${item} not found.`);
41
+ }
42
+ middlewares.push({
43
+ name: item,
44
+ handler: instantiateMiddleware(middlewareFactory, item, {}, strapi) ?? dummyMiddleware
45
+ });
46
+ continue;
47
+ }
48
+ if (typeof item === 'object' && item !== null) {
49
+ const { name, resolve, config = {} } = item;
50
+ if (name) {
51
+ const middlewareFactory = strapi.middleware(name);
52
+ middlewares.push({
53
+ name,
54
+ handler: instantiateMiddleware(middlewareFactory, name, config, strapi) ?? dummyMiddleware
55
+ });
56
+ continue;
57
+ }
58
+ if (resolve) {
59
+ const resolvedMiddlewareFactory = resolveCustomMiddleware(resolve, strapi);
60
+ middlewares.push({
61
+ name: resolve,
62
+ handler: instantiateMiddleware(resolvedMiddlewareFactory, resolve, config, strapi) ?? dummyMiddleware
63
+ });
64
+ continue;
65
+ }
66
+ throw new Error('Invalid middleware configuration. Missing name or resolve properties.');
67
+ }
68
+ throw new Error('Middleware config must either be a string or an object {name?: string, resolve?: string, config: any}.');
69
+ }
70
+ return middlewares;
71
+ };
72
+ /**
73
+ * Resolve middleware from package name or path
74
+ */ const resolveCustomMiddleware = (resolve, strapi)=>{
75
+ let modulePath;
76
+ try {
77
+ modulePath = require.resolve(resolve);
78
+ } catch (error) {
79
+ if (error instanceof Error && 'code' in error && error.code === 'MODULE_NOT_FOUND') {
80
+ modulePath = path.resolve(strapi.dirs.dist.root, resolve);
81
+ } else {
82
+ throw error;
83
+ }
84
+ }
85
+ try {
86
+ return importDefault(modulePath);
87
+ } catch (err) {
88
+ throw new Error(`Could not load middleware "${modulePath}".`);
89
+ }
90
+ };
91
+
92
+ export { resolveMiddlewares, resolveRouteMiddlewares };
93
+ //# sourceMappingURL=middleware.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.mjs","sources":["../../../src/services/server/middleware.ts"],"sourcesContent":["import path from 'path';\nimport { isArray } from 'lodash/fp';\nimport { importDefault } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nconst instantiateMiddleware = (\n middlewareFactory: Core.MiddlewareFactory,\n name: string,\n config: unknown,\n strapi: Core.Strapi\n) => {\n try {\n return middlewareFactory(config, { strapi });\n } catch (e) {\n if (e instanceof Error) {\n throw new Error(`Middleware \"${name}\": ${e.message}`);\n }\n }\n};\n\nconst resolveRouteMiddlewares = (route: Core.Route, strapi: Core.Strapi) => {\n const middlewaresConfig = route?.config?.middlewares ?? [];\n\n if (!isArray(middlewaresConfig)) {\n throw new Error('Route middlewares config must be an array');\n }\n\n const middlewares = resolveMiddlewares(middlewaresConfig, strapi);\n\n return middlewares.map(({ handler }) => handler);\n};\n\nconst dummyMiddleware: Core.MiddlewareHandler = (_, next) => next();\n\n/**\n * Initialize every configured middlewares\n */\nconst resolveMiddlewares = (\n config: Array<Core.MiddlewareName | Core.MiddlewareConfig | Core.MiddlewareHandler>,\n strapi: Core.Strapi\n) => {\n const middlewares: {\n name: string | null;\n handler: Core.MiddlewareHandler;\n }[] = [];\n\n for (const item of config) {\n if (typeof item === 'function') {\n middlewares.push({\n name: null,\n handler: item,\n });\n\n continue;\n }\n\n if (typeof item === 'string') {\n const middlewareFactory = strapi.middleware(item);\n\n if (!middlewareFactory) {\n throw new Error(`Middleware ${item} not found.`);\n }\n\n middlewares.push({\n name: item,\n handler: instantiateMiddleware(middlewareFactory, item, {}, strapi) ?? dummyMiddleware,\n });\n\n continue;\n }\n\n if (typeof item === 'object' && item !== null) {\n const { name, resolve, config = {} } = item;\n\n if (name) {\n const middlewareFactory = strapi.middleware(name);\n middlewares.push({\n name,\n handler:\n instantiateMiddleware(middlewareFactory, name, config, strapi) ?? dummyMiddleware,\n });\n\n continue;\n }\n\n if (resolve) {\n const resolvedMiddlewareFactory = resolveCustomMiddleware(resolve, strapi);\n middlewares.push({\n name: resolve,\n handler:\n instantiateMiddleware(resolvedMiddlewareFactory, resolve, config, strapi) ??\n dummyMiddleware,\n });\n\n continue;\n }\n\n throw new Error('Invalid middleware configuration. Missing name or resolve properties.');\n }\n\n throw new Error(\n 'Middleware config must either be a string or an object {name?: string, resolve?: string, config: any}.'\n );\n }\n\n return middlewares;\n};\n\n/**\n * Resolve middleware from package name or path\n */\nconst resolveCustomMiddleware = (resolve: string, strapi: Core.Strapi) => {\n let modulePath;\n\n try {\n modulePath = require.resolve(resolve);\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === 'MODULE_NOT_FOUND') {\n modulePath = path.resolve(strapi.dirs.dist.root, resolve);\n } else {\n throw error;\n }\n }\n\n try {\n return importDefault(modulePath);\n } catch (err) {\n throw new Error(`Could not load middleware \"${modulePath}\".`);\n }\n};\n\nexport { resolveRouteMiddlewares, resolveMiddlewares };\n"],"names":["instantiateMiddleware","middlewareFactory","name","config","strapi","e","Error","message","resolveRouteMiddlewares","route","middlewaresConfig","middlewares","isArray","resolveMiddlewares","map","handler","dummyMiddleware","_","next","item","push","middleware","resolve","resolvedMiddlewareFactory","resolveCustomMiddleware","modulePath","require","error","code","path","dirs","dist","root","importDefault","err"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ var strapiUtils = require('@strapi/utils');
4
+
5
+ const createPolicicesMiddleware = (route, strapi)=>{
6
+ const policiesConfig = route?.config?.policies ?? [];
7
+ const resolvedPolicies = strapi.get('policies').resolve(policiesConfig, route.info);
8
+ const policiesMiddleware = async (ctx, next)=>{
9
+ const context = strapiUtils.policy.createPolicyContext('koa', ctx);
10
+ for (const { handler, config } of resolvedPolicies){
11
+ const result = await handler(context, config, {
12
+ strapi
13
+ });
14
+ if (![
15
+ true,
16
+ undefined
17
+ ].includes(result)) {
18
+ throw new strapiUtils.errors.PolicyError();
19
+ }
20
+ }
21
+ await next();
22
+ };
23
+ return policiesMiddleware;
24
+ };
25
+
26
+ exports.createPolicicesMiddleware = createPolicicesMiddleware;
27
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sources":["../../../src/services/server/policy.ts"],"sourcesContent":["import { policy as policyUtils, errors } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nconst createPolicicesMiddleware = (route: Core.Route, strapi: Core.Strapi) => {\n const policiesConfig = route?.config?.policies ?? [];\n const resolvedPolicies = strapi.get('policies').resolve(policiesConfig, route.info);\n\n const policiesMiddleware: Core.MiddlewareHandler = async (ctx, next) => {\n const context = policyUtils.createPolicyContext('koa', ctx);\n\n for (const { handler, config } of resolvedPolicies) {\n const result = await handler(context, config, { strapi });\n\n if (![true, undefined].includes(result)) {\n throw new errors.PolicyError();\n }\n }\n\n await next();\n };\n\n return policiesMiddleware;\n};\n\nexport { createPolicicesMiddleware };\n"],"names":["createPolicicesMiddleware","route","strapi","policiesConfig","config","policies","resolvedPolicies","get","resolve","info","policiesMiddleware","ctx","next","context","policyUtils","createPolicyContext","handler","result","undefined","includes","errors","PolicyError"],"mappings":";;;;AAGMA,MAAAA,yBAAAA,GAA4B,CAACC,KAAmBC,EAAAA,MAAAA,GAAAA;AACpD,IAAA,MAAMC,cAAiBF,GAAAA,KAAAA,EAAOG,MAAQC,EAAAA,QAAAA,IAAY,EAAE;IACpD,MAAMC,gBAAAA,GAAmBJ,OAAOK,GAAG,CAAC,YAAYC,OAAO,CAACL,cAAgBF,EAAAA,KAAAA,CAAMQ,IAAI,CAAA;IAElF,MAAMC,kBAAAA,GAA6C,OAAOC,GAAKC,EAAAA,IAAAA,GAAAA;AAC7D,QAAA,MAAMC,OAAUC,GAAAA,kBAAAA,CAAYC,mBAAmB,CAAC,KAAOJ,EAAAA,GAAAA,CAAAA;AAEvD,QAAA,KAAK,MAAM,EAAEK,OAAO,EAAEZ,MAAM,EAAE,IAAIE,gBAAkB,CAAA;AAClD,YAAA,MAAMW,MAAS,GAAA,MAAMD,OAAQH,CAAAA,OAAAA,EAAST,MAAQ,EAAA;AAAEF,gBAAAA;AAAO,aAAA,CAAA;AAEvD,YAAA,IAAI,CAAC;AAAC,gBAAA,IAAA;AAAMgB,gBAAAA;aAAU,CAACC,QAAQ,CAACF,MAAS,CAAA,EAAA;gBACvC,MAAM,IAAIG,mBAAOC,WAAW,EAAA;AAC9B;AACF;QAEA,MAAMT,IAAAA,EAAAA;AACR,KAAA;IAEA,OAAOF,kBAAAA;AACT;;;;"}
@@ -0,0 +1,25 @@
1
+ import { policy, errors } from '@strapi/utils';
2
+
3
+ const createPolicicesMiddleware = (route, strapi)=>{
4
+ const policiesConfig = route?.config?.policies ?? [];
5
+ const resolvedPolicies = strapi.get('policies').resolve(policiesConfig, route.info);
6
+ const policiesMiddleware = async (ctx, next)=>{
7
+ const context = policy.createPolicyContext('koa', ctx);
8
+ for (const { handler, config } of resolvedPolicies){
9
+ const result = await handler(context, config, {
10
+ strapi
11
+ });
12
+ if (![
13
+ true,
14
+ undefined
15
+ ].includes(result)) {
16
+ throw new errors.PolicyError();
17
+ }
18
+ }
19
+ await next();
20
+ };
21
+ return policiesMiddleware;
22
+ };
23
+
24
+ export { createPolicicesMiddleware };
25
+ //# sourceMappingURL=policy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.mjs","sources":["../../../src/services/server/policy.ts"],"sourcesContent":["import { policy as policyUtils, errors } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nconst createPolicicesMiddleware = (route: Core.Route, strapi: Core.Strapi) => {\n const policiesConfig = route?.config?.policies ?? [];\n const resolvedPolicies = strapi.get('policies').resolve(policiesConfig, route.info);\n\n const policiesMiddleware: Core.MiddlewareHandler = async (ctx, next) => {\n const context = policyUtils.createPolicyContext('koa', ctx);\n\n for (const { handler, config } of resolvedPolicies) {\n const result = await handler(context, config, { strapi });\n\n if (![true, undefined].includes(result)) {\n throw new errors.PolicyError();\n }\n }\n\n await next();\n };\n\n return policiesMiddleware;\n};\n\nexport { createPolicicesMiddleware };\n"],"names":["createPolicicesMiddleware","route","strapi","policiesConfig","config","policies","resolvedPolicies","get","resolve","info","policiesMiddleware","ctx","next","context","policyUtils","createPolicyContext","handler","result","undefined","includes","errors","PolicyError"],"mappings":";;AAGMA,MAAAA,yBAAAA,GAA4B,CAACC,KAAmBC,EAAAA,MAAAA,GAAAA;AACpD,IAAA,MAAMC,cAAiBF,GAAAA,KAAAA,EAAOG,MAAQC,EAAAA,QAAAA,IAAY,EAAE;IACpD,MAAMC,gBAAAA,GAAmBJ,OAAOK,GAAG,CAAC,YAAYC,OAAO,CAACL,cAAgBF,EAAAA,KAAAA,CAAMQ,IAAI,CAAA;IAElF,MAAMC,kBAAAA,GAA6C,OAAOC,GAAKC,EAAAA,IAAAA,GAAAA;AAC7D,QAAA,MAAMC,OAAUC,GAAAA,MAAAA,CAAYC,mBAAmB,CAAC,KAAOJ,EAAAA,GAAAA,CAAAA;AAEvD,QAAA,KAAK,MAAM,EAAEK,OAAO,EAAEZ,MAAM,EAAE,IAAIE,gBAAkB,CAAA;AAClD,YAAA,MAAMW,MAAS,GAAA,MAAMD,OAAQH,CAAAA,OAAAA,EAAST,MAAQ,EAAA;AAAEF,gBAAAA;AAAO,aAAA,CAAA;AAEvD,YAAA,IAAI,CAAC;AAAC,gBAAA,IAAA;AAAMgB,gBAAAA;aAAU,CAACC,QAAQ,CAACF,MAAS,CAAA,EAAA;gBACvC,MAAM,IAAIG,OAAOC,WAAW,EAAA;AAC9B;AACF;QAEA,MAAMT,IAAAA,EAAAA;AACR,KAAA;IAEA,OAAOF,kBAAAA;AACT;;;;"}
@@ -0,0 +1,79 @@
1
+ 'use strict';
2
+
3
+ var strapiUtils = require('@strapi/utils');
4
+ var middleware = require('./middleware.js');
5
+
6
+ const defaultConfig = [
7
+ 'strapi::logger',
8
+ 'strapi::errors',
9
+ 'strapi::security',
10
+ 'strapi::cors',
11
+ 'strapi::poweredBy',
12
+ 'strapi::session',
13
+ 'strapi::query',
14
+ 'strapi::body',
15
+ 'strapi::favicon',
16
+ 'strapi::public'
17
+ ];
18
+ const requiredMiddlewares = [
19
+ 'strapi::errors',
20
+ 'strapi::security',
21
+ 'strapi::cors',
22
+ 'strapi::query',
23
+ 'strapi::body',
24
+ 'strapi::public',
25
+ 'strapi::favicon'
26
+ ];
27
+ const middlewareConfigSchema = strapiUtils.yup.array().of(strapiUtils.yup.lazy((value)=>{
28
+ if (typeof value === 'string') {
29
+ return strapiUtils.yup.string().required();
30
+ }
31
+ if (typeof value === 'object') {
32
+ return strapiUtils.yup.object({
33
+ name: strapiUtils.yup.string(),
34
+ resolve: strapiUtils.yup.string(),
35
+ config: strapiUtils.yup.mixed()
36
+ }).required().noUnknown();
37
+ }
38
+ return strapiUtils.yup.mixed().test(()=>false);
39
+ }));
40
+ /**
41
+ * Register middlewares in router
42
+ */ const registerApplicationMiddlewares = async (strapi)=>{
43
+ const middlewareConfig = strapi.config.get('middlewares', defaultConfig);
44
+ await validateMiddlewareConfig(middlewareConfig);
45
+ const middlewares = await middleware.resolveMiddlewares(middlewareConfig, strapi);
46
+ checkRequiredMiddlewares(middlewares);
47
+ // NOTE: exclude middlewares that return nothing.
48
+ // this is used for middlewares that only extend the app only need to be added in certain conditions
49
+ for (const middleware of middlewares){
50
+ strapi.server.use(middleware.handler);
51
+ }
52
+ };
53
+ /**
54
+ *
55
+ * @param {MiddlewaresConfig} config
56
+ */ const validateMiddlewareConfig = async (config)=>{
57
+ try {
58
+ await middlewareConfigSchema.validate(config, {
59
+ strict: true,
60
+ abortEarly: false
61
+ });
62
+ } catch (error) {
63
+ throw new Error('Invalid middleware configuration. Expected Array<string|{name?: string, resolve?: string, config: any}.');
64
+ }
65
+ };
66
+ /**
67
+ * Check if some required middlewares are missing in configure middlewares
68
+ * @param {Middlewares} middlewares
69
+ */ const checkRequiredMiddlewares = (middlewares)=>{
70
+ const missingMiddlewares = requiredMiddlewares.filter((name)=>{
71
+ return middlewares.findIndex((mdl)=>mdl.name === name) === -1;
72
+ });
73
+ if (missingMiddlewares.length > 0) {
74
+ throw new Error(`Missing required middlewares in configuration. Add the following middlewares: "${missingMiddlewares.join(', ')}".`);
75
+ }
76
+ };
77
+
78
+ module.exports = registerApplicationMiddlewares;
79
+ //# sourceMappingURL=register-middlewares.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-middlewares.js","sources":["../../../src/services/server/register-middlewares.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\nimport { resolveMiddlewares } from './middleware';\n\ntype MiddlewareConfig = (string | { name?: string; resolve?: string; config?: unknown })[];\n\nconst defaultConfig = [\n 'strapi::logger',\n 'strapi::errors',\n 'strapi::security',\n 'strapi::cors',\n 'strapi::poweredBy',\n 'strapi::session',\n 'strapi::query',\n 'strapi::body',\n 'strapi::favicon',\n 'strapi::public',\n];\n\nconst requiredMiddlewares = [\n 'strapi::errors',\n 'strapi::security',\n 'strapi::cors',\n 'strapi::query',\n 'strapi::body',\n 'strapi::public',\n 'strapi::favicon',\n];\n\nconst middlewareConfigSchema = yup.array().of(\n yup.lazy((value) => {\n if (typeof value === 'string') {\n return yup.string().required();\n }\n\n if (typeof value === 'object') {\n return yup\n .object({\n name: yup.string(),\n resolve: yup.string(),\n config: yup.mixed(),\n })\n .required()\n .noUnknown();\n }\n\n return yup.mixed().test(() => false);\n }) as any // FIXME: yup v1\n);\n\n/**\n * Register middlewares in router\n */\nconst registerApplicationMiddlewares = async (strapi: Core.Strapi) => {\n const middlewareConfig: MiddlewareConfig = strapi.config.get('middlewares', defaultConfig);\n\n await validateMiddlewareConfig(middlewareConfig);\n\n const middlewares = await resolveMiddlewares(middlewareConfig, strapi);\n\n checkRequiredMiddlewares(middlewares);\n\n // NOTE: exclude middlewares that return nothing.\n // this is used for middlewares that only extend the app only need to be added in certain conditions\n for (const middleware of middlewares) {\n strapi.server.use(middleware.handler);\n }\n};\n\n/**\n *\n * @param {MiddlewaresConfig} config\n */\nconst validateMiddlewareConfig = async (config: MiddlewareConfig) => {\n try {\n await middlewareConfigSchema.validate(config, { strict: true, abortEarly: false });\n } catch (error) {\n throw new Error(\n 'Invalid middleware configuration. Expected Array<string|{name?: string, resolve?: string, config: any}.'\n );\n }\n};\n\n/**\n * Check if some required middlewares are missing in configure middlewares\n * @param {Middlewares} middlewares\n */\nconst checkRequiredMiddlewares = (middlewares: { name: string | null }[]) => {\n const missingMiddlewares = requiredMiddlewares.filter((name) => {\n return middlewares.findIndex((mdl) => mdl.name === name) === -1;\n });\n\n if (missingMiddlewares.length > 0) {\n throw new Error(\n `Missing required middlewares in configuration. Add the following middlewares: \"${missingMiddlewares.join(\n ', '\n )}\".`\n );\n }\n};\n\nexport default registerApplicationMiddlewares;\n"],"names":["defaultConfig","requiredMiddlewares","middlewareConfigSchema","yup","array","of","lazy","value","string","required","object","name","resolve","config","mixed","noUnknown","test","registerApplicationMiddlewares","strapi","middlewareConfig","get","validateMiddlewareConfig","middlewares","resolveMiddlewares","checkRequiredMiddlewares","middleware","server","use","handler","validate","strict","abortEarly","error","Error","missingMiddlewares","filter","findIndex","mdl","length","join"],"mappings":";;;;;AAMA,MAAMA,aAAgB,GAAA;AACpB,IAAA,gBAAA;AACA,IAAA,gBAAA;AACA,IAAA,kBAAA;AACA,IAAA,cAAA;AACA,IAAA,mBAAA;AACA,IAAA,iBAAA;AACA,IAAA,eAAA;AACA,IAAA,cAAA;AACA,IAAA,iBAAA;AACA,IAAA;AACD,CAAA;AAED,MAAMC,mBAAsB,GAAA;AAC1B,IAAA,gBAAA;AACA,IAAA,kBAAA;AACA,IAAA,cAAA;AACA,IAAA,eAAA;AACA,IAAA,cAAA;AACA,IAAA,gBAAA;AACA,IAAA;AACD,CAAA;AAED,MAAMC,sBAAAA,GAAyBC,gBAAIC,KAAK,EAAA,CAAGC,EAAE,CAC3CF,eAAAA,CAAIG,IAAI,CAAC,CAACC,KAAAA,GAAAA;IACR,IAAI,OAAOA,UAAU,QAAU,EAAA;QAC7B,OAAOJ,eAAAA,CAAIK,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAC9B;IAEA,IAAI,OAAOF,UAAU,QAAU,EAAA;QAC7B,OAAOJ,eAAAA,CACJO,MAAM,CAAC;AACNC,YAAAA,IAAAA,EAAMR,gBAAIK,MAAM,EAAA;AAChBI,YAAAA,OAAAA,EAAST,gBAAIK,MAAM,EAAA;AACnBK,YAAAA,MAAAA,EAAQV,gBAAIW,KAAK;SAElBL,CAAAA,CAAAA,QAAQ,GACRM,SAAS,EAAA;AACd;AAEA,IAAA,OAAOZ,eAAIW,CAAAA,KAAK,EAAGE,CAAAA,IAAI,CAAC,IAAM,KAAA,CAAA;AAChC,CAAA,CAAA,CAAA;AAGF;;IAGA,MAAMC,iCAAiC,OAAOC,MAAAA,GAAAA;AAC5C,IAAA,MAAMC,mBAAqCD,MAAOL,CAAAA,MAAM,CAACO,GAAG,CAAC,aAAepB,EAAAA,aAAAA,CAAAA;AAE5E,IAAA,MAAMqB,wBAAyBF,CAAAA,gBAAAA,CAAAA;IAE/B,MAAMG,WAAAA,GAAc,MAAMC,6BAAAA,CAAmBJ,gBAAkBD,EAAAA,MAAAA,CAAAA;IAE/DM,wBAAyBF,CAAAA,WAAAA,CAAAA;;;IAIzB,KAAK,MAAMG,cAAcH,WAAa,CAAA;AACpCJ,QAAAA,MAAAA,CAAOQ,MAAM,CAACC,GAAG,CAACF,WAAWG,OAAO,CAAA;AACtC;AACF;AAEA;;;IAIA,MAAMP,2BAA2B,OAAOR,MAAAA,GAAAA;IACtC,IAAI;QACF,MAAMX,sBAAAA,CAAuB2B,QAAQ,CAAChB,MAAQ,EAAA;YAAEiB,MAAQ,EAAA,IAAA;YAAMC,UAAY,EAAA;AAAM,SAAA,CAAA;AAClF,KAAA,CAAE,OAAOC,KAAO,EAAA;AACd,QAAA,MAAM,IAAIC,KACR,CAAA,yGAAA,CAAA;AAEJ;AACF,CAAA;AAEA;;;IAIA,MAAMT,2BAA2B,CAACF,WAAAA,GAAAA;AAChC,IAAA,MAAMY,kBAAqBjC,GAAAA,mBAAAA,CAAoBkC,MAAM,CAAC,CAACxB,IAAAA,GAAAA;QACrD,OAAOW,WAAAA,CAAYc,SAAS,CAAC,CAACC,MAAQA,GAAI1B,CAAAA,IAAI,KAAKA,IAAAA,CAAAA,KAAU,CAAC,CAAA;AAChE,KAAA,CAAA;IAEA,IAAIuB,kBAAAA,CAAmBI,MAAM,GAAG,CAAG,EAAA;QACjC,MAAM,IAAIL,KACR,CAAA,CAAC,+EAA+E,EAAEC,mBAAmBK,IAAI,CACvG,IACA,CAAA,CAAA,EAAE,CAAC,CAAA;AAET;AACF,CAAA;;;;"}
@@ -0,0 +1,77 @@
1
+ import { yup } from '@strapi/utils';
2
+ import { resolveMiddlewares } from './middleware.mjs';
3
+
4
+ const defaultConfig = [
5
+ 'strapi::logger',
6
+ 'strapi::errors',
7
+ 'strapi::security',
8
+ 'strapi::cors',
9
+ 'strapi::poweredBy',
10
+ 'strapi::session',
11
+ 'strapi::query',
12
+ 'strapi::body',
13
+ 'strapi::favicon',
14
+ 'strapi::public'
15
+ ];
16
+ const requiredMiddlewares = [
17
+ 'strapi::errors',
18
+ 'strapi::security',
19
+ 'strapi::cors',
20
+ 'strapi::query',
21
+ 'strapi::body',
22
+ 'strapi::public',
23
+ 'strapi::favicon'
24
+ ];
25
+ const middlewareConfigSchema = yup.array().of(yup.lazy((value)=>{
26
+ if (typeof value === 'string') {
27
+ return yup.string().required();
28
+ }
29
+ if (typeof value === 'object') {
30
+ return yup.object({
31
+ name: yup.string(),
32
+ resolve: yup.string(),
33
+ config: yup.mixed()
34
+ }).required().noUnknown();
35
+ }
36
+ return yup.mixed().test(()=>false);
37
+ }));
38
+ /**
39
+ * Register middlewares in router
40
+ */ const registerApplicationMiddlewares = async (strapi)=>{
41
+ const middlewareConfig = strapi.config.get('middlewares', defaultConfig);
42
+ await validateMiddlewareConfig(middlewareConfig);
43
+ const middlewares = await resolveMiddlewares(middlewareConfig, strapi);
44
+ checkRequiredMiddlewares(middlewares);
45
+ // NOTE: exclude middlewares that return nothing.
46
+ // this is used for middlewares that only extend the app only need to be added in certain conditions
47
+ for (const middleware of middlewares){
48
+ strapi.server.use(middleware.handler);
49
+ }
50
+ };
51
+ /**
52
+ *
53
+ * @param {MiddlewaresConfig} config
54
+ */ const validateMiddlewareConfig = async (config)=>{
55
+ try {
56
+ await middlewareConfigSchema.validate(config, {
57
+ strict: true,
58
+ abortEarly: false
59
+ });
60
+ } catch (error) {
61
+ throw new Error('Invalid middleware configuration. Expected Array<string|{name?: string, resolve?: string, config: any}.');
62
+ }
63
+ };
64
+ /**
65
+ * Check if some required middlewares are missing in configure middlewares
66
+ * @param {Middlewares} middlewares
67
+ */ const checkRequiredMiddlewares = (middlewares)=>{
68
+ const missingMiddlewares = requiredMiddlewares.filter((name)=>{
69
+ return middlewares.findIndex((mdl)=>mdl.name === name) === -1;
70
+ });
71
+ if (missingMiddlewares.length > 0) {
72
+ throw new Error(`Missing required middlewares in configuration. Add the following middlewares: "${missingMiddlewares.join(', ')}".`);
73
+ }
74
+ };
75
+
76
+ export { registerApplicationMiddlewares as default };
77
+ //# sourceMappingURL=register-middlewares.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-middlewares.mjs","sources":["../../../src/services/server/register-middlewares.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\nimport { resolveMiddlewares } from './middleware';\n\ntype MiddlewareConfig = (string | { name?: string; resolve?: string; config?: unknown })[];\n\nconst defaultConfig = [\n 'strapi::logger',\n 'strapi::errors',\n 'strapi::security',\n 'strapi::cors',\n 'strapi::poweredBy',\n 'strapi::session',\n 'strapi::query',\n 'strapi::body',\n 'strapi::favicon',\n 'strapi::public',\n];\n\nconst requiredMiddlewares = [\n 'strapi::errors',\n 'strapi::security',\n 'strapi::cors',\n 'strapi::query',\n 'strapi::body',\n 'strapi::public',\n 'strapi::favicon',\n];\n\nconst middlewareConfigSchema = yup.array().of(\n yup.lazy((value) => {\n if (typeof value === 'string') {\n return yup.string().required();\n }\n\n if (typeof value === 'object') {\n return yup\n .object({\n name: yup.string(),\n resolve: yup.string(),\n config: yup.mixed(),\n })\n .required()\n .noUnknown();\n }\n\n return yup.mixed().test(() => false);\n }) as any // FIXME: yup v1\n);\n\n/**\n * Register middlewares in router\n */\nconst registerApplicationMiddlewares = async (strapi: Core.Strapi) => {\n const middlewareConfig: MiddlewareConfig = strapi.config.get('middlewares', defaultConfig);\n\n await validateMiddlewareConfig(middlewareConfig);\n\n const middlewares = await resolveMiddlewares(middlewareConfig, strapi);\n\n checkRequiredMiddlewares(middlewares);\n\n // NOTE: exclude middlewares that return nothing.\n // this is used for middlewares that only extend the app only need to be added in certain conditions\n for (const middleware of middlewares) {\n strapi.server.use(middleware.handler);\n }\n};\n\n/**\n *\n * @param {MiddlewaresConfig} config\n */\nconst validateMiddlewareConfig = async (config: MiddlewareConfig) => {\n try {\n await middlewareConfigSchema.validate(config, { strict: true, abortEarly: false });\n } catch (error) {\n throw new Error(\n 'Invalid middleware configuration. Expected Array<string|{name?: string, resolve?: string, config: any}.'\n );\n }\n};\n\n/**\n * Check if some required middlewares are missing in configure middlewares\n * @param {Middlewares} middlewares\n */\nconst checkRequiredMiddlewares = (middlewares: { name: string | null }[]) => {\n const missingMiddlewares = requiredMiddlewares.filter((name) => {\n return middlewares.findIndex((mdl) => mdl.name === name) === -1;\n });\n\n if (missingMiddlewares.length > 0) {\n throw new Error(\n `Missing required middlewares in configuration. Add the following middlewares: \"${missingMiddlewares.join(\n ', '\n )}\".`\n );\n }\n};\n\nexport default registerApplicationMiddlewares;\n"],"names":["defaultConfig","requiredMiddlewares","middlewareConfigSchema","yup","array","of","lazy","value","string","required","object","name","resolve","config","mixed","noUnknown","test","registerApplicationMiddlewares","strapi","middlewareConfig","get","validateMiddlewareConfig","middlewares","resolveMiddlewares","checkRequiredMiddlewares","middleware","server","use","handler","validate","strict","abortEarly","error","Error","missingMiddlewares","filter","findIndex","mdl","length","join"],"mappings":";;;AAMA,MAAMA,aAAgB,GAAA;AACpB,IAAA,gBAAA;AACA,IAAA,gBAAA;AACA,IAAA,kBAAA;AACA,IAAA,cAAA;AACA,IAAA,mBAAA;AACA,IAAA,iBAAA;AACA,IAAA,eAAA;AACA,IAAA,cAAA;AACA,IAAA,iBAAA;AACA,IAAA;AACD,CAAA;AAED,MAAMC,mBAAsB,GAAA;AAC1B,IAAA,gBAAA;AACA,IAAA,kBAAA;AACA,IAAA,cAAA;AACA,IAAA,eAAA;AACA,IAAA,cAAA;AACA,IAAA,gBAAA;AACA,IAAA;AACD,CAAA;AAED,MAAMC,sBAAAA,GAAyBC,IAAIC,KAAK,EAAA,CAAGC,EAAE,CAC3CF,GAAAA,CAAIG,IAAI,CAAC,CAACC,KAAAA,GAAAA;IACR,IAAI,OAAOA,UAAU,QAAU,EAAA;QAC7B,OAAOJ,GAAAA,CAAIK,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAC9B;IAEA,IAAI,OAAOF,UAAU,QAAU,EAAA;QAC7B,OAAOJ,GAAAA,CACJO,MAAM,CAAC;AACNC,YAAAA,IAAAA,EAAMR,IAAIK,MAAM,EAAA;AAChBI,YAAAA,OAAAA,EAAST,IAAIK,MAAM,EAAA;AACnBK,YAAAA,MAAAA,EAAQV,IAAIW,KAAK;SAElBL,CAAAA,CAAAA,QAAQ,GACRM,SAAS,EAAA;AACd;AAEA,IAAA,OAAOZ,GAAIW,CAAAA,KAAK,EAAGE,CAAAA,IAAI,CAAC,IAAM,KAAA,CAAA;AAChC,CAAA,CAAA,CAAA;AAGF;;IAGA,MAAMC,iCAAiC,OAAOC,MAAAA,GAAAA;AAC5C,IAAA,MAAMC,mBAAqCD,MAAOL,CAAAA,MAAM,CAACO,GAAG,CAAC,aAAepB,EAAAA,aAAAA,CAAAA;AAE5E,IAAA,MAAMqB,wBAAyBF,CAAAA,gBAAAA,CAAAA;IAE/B,MAAMG,WAAAA,GAAc,MAAMC,kBAAAA,CAAmBJ,gBAAkBD,EAAAA,MAAAA,CAAAA;IAE/DM,wBAAyBF,CAAAA,WAAAA,CAAAA;;;IAIzB,KAAK,MAAMG,cAAcH,WAAa,CAAA;AACpCJ,QAAAA,MAAAA,CAAOQ,MAAM,CAACC,GAAG,CAACF,WAAWG,OAAO,CAAA;AACtC;AACF;AAEA;;;IAIA,MAAMP,2BAA2B,OAAOR,MAAAA,GAAAA;IACtC,IAAI;QACF,MAAMX,sBAAAA,CAAuB2B,QAAQ,CAAChB,MAAQ,EAAA;YAAEiB,MAAQ,EAAA,IAAA;YAAMC,UAAY,EAAA;AAAM,SAAA,CAAA;AAClF,KAAA,CAAE,OAAOC,KAAO,EAAA;AACd,QAAA,MAAM,IAAIC,KACR,CAAA,yGAAA,CAAA;AAEJ;AACF,CAAA;AAEA;;;IAIA,MAAMT,2BAA2B,CAACF,WAAAA,GAAAA;AAChC,IAAA,MAAMY,kBAAqBjC,GAAAA,mBAAAA,CAAoBkC,MAAM,CAAC,CAACxB,IAAAA,GAAAA;QACrD,OAAOW,WAAAA,CAAYc,SAAS,CAAC,CAACC,MAAQA,GAAI1B,CAAAA,IAAI,KAAKA,IAAAA,CAAAA,KAAU,CAAC,CAAA;AAChE,KAAA,CAAA;IAEA,IAAIuB,kBAAAA,CAAmBI,MAAM,GAAG,CAAG,EAAA;QACjC,MAAM,IAAIL,KACR,CAAA,CAAC,+EAA+E,EAAEC,mBAAmBK,IAAI,CACvG,IACA,CAAA,CAAA,EAAE,CAAC,CAAA;AAET;AACF,CAAA;;;;"}
@@ -0,0 +1,119 @@
1
+ 'use strict';
2
+
3
+ var _ = require('lodash');
4
+
5
+ const createRouteScopeGenerator = (namespace)=>(route)=>{
6
+ const prefix = namespace.endsWith('::') ? namespace : `${namespace}.`;
7
+ if (typeof route.handler === 'string') {
8
+ _.defaultsDeep(route, {
9
+ config: {
10
+ auth: {
11
+ scope: [
12
+ `${route.handler.startsWith(prefix) ? '' : prefix}${route.handler}`
13
+ ]
14
+ }
15
+ }
16
+ });
17
+ }
18
+ };
19
+ /**
20
+ * Register all routes
21
+ */ var registerAllRoutes = ((strapi)=>{
22
+ registerAdminRoutes(strapi);
23
+ registerAPIRoutes(strapi);
24
+ registerPluginRoutes(strapi);
25
+ });
26
+ /**
27
+ * Register admin routes
28
+ * @param {import('../../').Strapi} strapi
29
+ */ const registerAdminRoutes = (strapi)=>{
30
+ const generateRouteScope = createRouteScopeGenerator(`admin::`);
31
+ // Instantiate function-like routers
32
+ // Mutate admin.routes in-place and make sure router factories are instantiated correctly
33
+ strapi.admin.routes = instantiateRouterInputs(strapi.admin.routes, strapi);
34
+ _.forEach(strapi.admin.routes, (router)=>{
35
+ router.type = router.type || 'admin';
36
+ router.prefix = router.prefix || `/admin`;
37
+ router.routes.forEach((route)=>{
38
+ generateRouteScope(route);
39
+ route.info = {
40
+ pluginName: 'admin'
41
+ };
42
+ });
43
+ strapi.server.routes(router);
44
+ });
45
+ };
46
+ /**
47
+ * Register plugin routes
48
+ * @param {import('../../').Strapi} strapi
49
+ */ const registerPluginRoutes = (strapi)=>{
50
+ for (const pluginName of Object.keys(strapi.plugins)){
51
+ const plugin = strapi.plugins[pluginName];
52
+ const generateRouteScope = createRouteScopeGenerator(`plugin::${pluginName}`);
53
+ if (Array.isArray(plugin.routes)) {
54
+ plugin.routes.forEach((route)=>{
55
+ generateRouteScope(route);
56
+ route.info = {
57
+ pluginName
58
+ };
59
+ });
60
+ strapi.server.routes({
61
+ type: 'admin',
62
+ prefix: `/${pluginName}`,
63
+ routes: plugin.routes
64
+ });
65
+ } else {
66
+ // Instantiate function-like routers
67
+ // Mutate plugin.routes in-place and make sure router factories are instantiated correctly
68
+ plugin.routes = instantiateRouterInputs(plugin.routes, strapi);
69
+ _.forEach(plugin.routes, (router)=>{
70
+ router.type = router.type ?? 'admin';
71
+ router.prefix = router.prefix ?? `/${pluginName}`;
72
+ router.routes.forEach((route)=>{
73
+ generateRouteScope(route);
74
+ route.info = {
75
+ pluginName
76
+ };
77
+ });
78
+ strapi.server.routes(router);
79
+ });
80
+ }
81
+ }
82
+ };
83
+ /**
84
+ * Register api routes
85
+ */ const registerAPIRoutes = (strapi)=>{
86
+ for (const apiName of Object.keys(strapi.apis)){
87
+ const api = strapi.api(apiName);
88
+ const generateRouteScope = createRouteScopeGenerator(`api::${apiName}`);
89
+ // Mutate api.routes in-place and make sure router factories are instantiated correctly
90
+ api.routes = instantiateRouterInputs(api.routes, strapi);
91
+ _.forEach(api.routes, (router)=>{
92
+ // TODO: remove once auth setup
93
+ // pass meta down to compose endpoint
94
+ router.type = 'content-api';
95
+ router.routes?.forEach((route)=>{
96
+ generateRouteScope(route);
97
+ route.info = {
98
+ apiName
99
+ };
100
+ });
101
+ return strapi.server.routes(router);
102
+ });
103
+ }
104
+ };
105
+ const instantiateRouterInputs = (routers, strapi)=>{
106
+ const entries = Object.entries(routers);
107
+ return entries.reduce((record, [key, inputOrCallback])=>{
108
+ const isCallback = typeof inputOrCallback === 'function';
109
+ return {
110
+ ...record,
111
+ [key]: isCallback ? inputOrCallback({
112
+ strapi
113
+ }) : inputOrCallback
114
+ };
115
+ }, {});
116
+ };
117
+
118
+ module.exports = registerAllRoutes;
119
+ //# sourceMappingURL=register-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-routes.js","sources":["../../../src/services/server/register-routes.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core } from '@strapi/types';\n\nconst createRouteScopeGenerator = (namespace: string) => (route: Core.RouteInput) => {\n const prefix = namespace.endsWith('::') ? namespace : `${namespace}.`;\n\n if (typeof route.handler === 'string') {\n _.defaultsDeep(route, {\n config: {\n auth: {\n scope: [`${route.handler.startsWith(prefix) ? '' : prefix}${route.handler}`],\n },\n },\n });\n }\n};\n\n/**\n * Register all routes\n */\nexport default (strapi: Core.Strapi) => {\n registerAdminRoutes(strapi);\n registerAPIRoutes(strapi);\n registerPluginRoutes(strapi);\n};\n\n/**\n * Register admin routes\n * @param {import('../../').Strapi} strapi\n */\nconst registerAdminRoutes = (strapi: Core.Strapi) => {\n const generateRouteScope = createRouteScopeGenerator(`admin::`);\n\n // Instantiate function-like routers\n // Mutate admin.routes in-place and make sure router factories are instantiated correctly\n strapi.admin.routes = instantiateRouterInputs(strapi.admin.routes, strapi);\n\n _.forEach(strapi.admin.routes, (router) => {\n router.type = router.type || 'admin';\n router.prefix = router.prefix || `/admin`;\n router.routes.forEach((route) => {\n generateRouteScope(route);\n route.info = { pluginName: 'admin' };\n });\n strapi.server.routes(router);\n });\n};\n\n/**\n * Register plugin routes\n * @param {import('../../').Strapi} strapi\n */\nconst registerPluginRoutes = (strapi: Core.Strapi) => {\n for (const pluginName of Object.keys(strapi.plugins)) {\n const plugin = strapi.plugins[pluginName];\n\n const generateRouteScope = createRouteScopeGenerator(`plugin::${pluginName}`);\n\n if (Array.isArray(plugin.routes)) {\n plugin.routes.forEach((route) => {\n generateRouteScope(route);\n route.info = { pluginName };\n });\n\n strapi.server.routes({\n type: 'admin',\n prefix: `/${pluginName}`,\n routes: plugin.routes,\n });\n } else {\n // Instantiate function-like routers\n // Mutate plugin.routes in-place and make sure router factories are instantiated correctly\n plugin.routes = instantiateRouterInputs(plugin.routes, strapi);\n\n _.forEach(plugin.routes, (router) => {\n router.type = router.type ?? 'admin';\n router.prefix = router.prefix ?? `/${pluginName}`;\n router.routes.forEach((route) => {\n generateRouteScope(route);\n route.info = { pluginName };\n });\n\n strapi.server.routes(router);\n });\n }\n }\n};\n\n/**\n * Register api routes\n */\nconst registerAPIRoutes = (strapi: Core.Strapi) => {\n for (const apiName of Object.keys(strapi.apis)) {\n const api = strapi.api(apiName);\n\n const generateRouteScope = createRouteScopeGenerator(`api::${apiName}`);\n\n // Mutate api.routes in-place and make sure router factories are instantiated correctly\n api.routes = instantiateRouterInputs(api.routes, strapi);\n\n _.forEach(api.routes, (router) => {\n // TODO: remove once auth setup\n // pass meta down to compose endpoint\n router.type = 'content-api';\n router.routes?.forEach((route) => {\n generateRouteScope(route);\n route.info = { apiName };\n });\n\n return strapi.server.routes(router);\n });\n }\n};\n\nconst instantiateRouterInputs = (\n routers: Record<string, Core.RouterConfig>,\n strapi: Core.Strapi\n): Record<string, Core.Router> => {\n const entries = Object.entries(routers);\n\n return entries.reduce((record, [key, inputOrCallback]) => {\n const isCallback = typeof inputOrCallback === 'function';\n\n return { ...record, [key]: isCallback ? inputOrCallback({ strapi }) : inputOrCallback };\n }, {});\n};\n"],"names":["createRouteScopeGenerator","namespace","route","prefix","endsWith","handler","_","defaultsDeep","config","auth","scope","startsWith","strapi","registerAdminRoutes","registerAPIRoutes","registerPluginRoutes","generateRouteScope","admin","routes","instantiateRouterInputs","forEach","router","type","info","pluginName","server","Object","keys","plugins","plugin","Array","isArray","apiName","apis","api","routers","entries","reduce","record","key","inputOrCallback","isCallback"],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import _ from 'lodash';
2
+
3
+ const createRouteScopeGenerator = (namespace)=>(route)=>{
4
+ const prefix = namespace.endsWith('::') ? namespace : `${namespace}.`;
5
+ if (typeof route.handler === 'string') {
6
+ _.defaultsDeep(route, {
7
+ config: {
8
+ auth: {
9
+ scope: [
10
+ `${route.handler.startsWith(prefix) ? '' : prefix}${route.handler}`
11
+ ]
12
+ }
13
+ }
14
+ });
15
+ }
16
+ };
17
+ /**
18
+ * Register all routes
19
+ */ var registerAllRoutes = ((strapi)=>{
20
+ registerAdminRoutes(strapi);
21
+ registerAPIRoutes(strapi);
22
+ registerPluginRoutes(strapi);
23
+ });
24
+ /**
25
+ * Register admin routes
26
+ * @param {import('../../').Strapi} strapi
27
+ */ const registerAdminRoutes = (strapi)=>{
28
+ const generateRouteScope = createRouteScopeGenerator(`admin::`);
29
+ // Instantiate function-like routers
30
+ // Mutate admin.routes in-place and make sure router factories are instantiated correctly
31
+ strapi.admin.routes = instantiateRouterInputs(strapi.admin.routes, strapi);
32
+ _.forEach(strapi.admin.routes, (router)=>{
33
+ router.type = router.type || 'admin';
34
+ router.prefix = router.prefix || `/admin`;
35
+ router.routes.forEach((route)=>{
36
+ generateRouteScope(route);
37
+ route.info = {
38
+ pluginName: 'admin'
39
+ };
40
+ });
41
+ strapi.server.routes(router);
42
+ });
43
+ };
44
+ /**
45
+ * Register plugin routes
46
+ * @param {import('../../').Strapi} strapi
47
+ */ const registerPluginRoutes = (strapi)=>{
48
+ for (const pluginName of Object.keys(strapi.plugins)){
49
+ const plugin = strapi.plugins[pluginName];
50
+ const generateRouteScope = createRouteScopeGenerator(`plugin::${pluginName}`);
51
+ if (Array.isArray(plugin.routes)) {
52
+ plugin.routes.forEach((route)=>{
53
+ generateRouteScope(route);
54
+ route.info = {
55
+ pluginName
56
+ };
57
+ });
58
+ strapi.server.routes({
59
+ type: 'admin',
60
+ prefix: `/${pluginName}`,
61
+ routes: plugin.routes
62
+ });
63
+ } else {
64
+ // Instantiate function-like routers
65
+ // Mutate plugin.routes in-place and make sure router factories are instantiated correctly
66
+ plugin.routes = instantiateRouterInputs(plugin.routes, strapi);
67
+ _.forEach(plugin.routes, (router)=>{
68
+ router.type = router.type ?? 'admin';
69
+ router.prefix = router.prefix ?? `/${pluginName}`;
70
+ router.routes.forEach((route)=>{
71
+ generateRouteScope(route);
72
+ route.info = {
73
+ pluginName
74
+ };
75
+ });
76
+ strapi.server.routes(router);
77
+ });
78
+ }
79
+ }
80
+ };
81
+ /**
82
+ * Register api routes
83
+ */ const registerAPIRoutes = (strapi)=>{
84
+ for (const apiName of Object.keys(strapi.apis)){
85
+ const api = strapi.api(apiName);
86
+ const generateRouteScope = createRouteScopeGenerator(`api::${apiName}`);
87
+ // Mutate api.routes in-place and make sure router factories are instantiated correctly
88
+ api.routes = instantiateRouterInputs(api.routes, strapi);
89
+ _.forEach(api.routes, (router)=>{
90
+ // TODO: remove once auth setup
91
+ // pass meta down to compose endpoint
92
+ router.type = 'content-api';
93
+ router.routes?.forEach((route)=>{
94
+ generateRouteScope(route);
95
+ route.info = {
96
+ apiName
97
+ };
98
+ });
99
+ return strapi.server.routes(router);
100
+ });
101
+ }
102
+ };
103
+ const instantiateRouterInputs = (routers, strapi)=>{
104
+ const entries = Object.entries(routers);
105
+ return entries.reduce((record, [key, inputOrCallback])=>{
106
+ const isCallback = typeof inputOrCallback === 'function';
107
+ return {
108
+ ...record,
109
+ [key]: isCallback ? inputOrCallback({
110
+ strapi
111
+ }) : inputOrCallback
112
+ };
113
+ }, {});
114
+ };
115
+
116
+ export { registerAllRoutes as default };
117
+ //# sourceMappingURL=register-routes.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-routes.mjs","sources":["../../../src/services/server/register-routes.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core } from '@strapi/types';\n\nconst createRouteScopeGenerator = (namespace: string) => (route: Core.RouteInput) => {\n const prefix = namespace.endsWith('::') ? namespace : `${namespace}.`;\n\n if (typeof route.handler === 'string') {\n _.defaultsDeep(route, {\n config: {\n auth: {\n scope: [`${route.handler.startsWith(prefix) ? '' : prefix}${route.handler}`],\n },\n },\n });\n }\n};\n\n/**\n * Register all routes\n */\nexport default (strapi: Core.Strapi) => {\n registerAdminRoutes(strapi);\n registerAPIRoutes(strapi);\n registerPluginRoutes(strapi);\n};\n\n/**\n * Register admin routes\n * @param {import('../../').Strapi} strapi\n */\nconst registerAdminRoutes = (strapi: Core.Strapi) => {\n const generateRouteScope = createRouteScopeGenerator(`admin::`);\n\n // Instantiate function-like routers\n // Mutate admin.routes in-place and make sure router factories are instantiated correctly\n strapi.admin.routes = instantiateRouterInputs(strapi.admin.routes, strapi);\n\n _.forEach(strapi.admin.routes, (router) => {\n router.type = router.type || 'admin';\n router.prefix = router.prefix || `/admin`;\n router.routes.forEach((route) => {\n generateRouteScope(route);\n route.info = { pluginName: 'admin' };\n });\n strapi.server.routes(router);\n });\n};\n\n/**\n * Register plugin routes\n * @param {import('../../').Strapi} strapi\n */\nconst registerPluginRoutes = (strapi: Core.Strapi) => {\n for (const pluginName of Object.keys(strapi.plugins)) {\n const plugin = strapi.plugins[pluginName];\n\n const generateRouteScope = createRouteScopeGenerator(`plugin::${pluginName}`);\n\n if (Array.isArray(plugin.routes)) {\n plugin.routes.forEach((route) => {\n generateRouteScope(route);\n route.info = { pluginName };\n });\n\n strapi.server.routes({\n type: 'admin',\n prefix: `/${pluginName}`,\n routes: plugin.routes,\n });\n } else {\n // Instantiate function-like routers\n // Mutate plugin.routes in-place and make sure router factories are instantiated correctly\n plugin.routes = instantiateRouterInputs(plugin.routes, strapi);\n\n _.forEach(plugin.routes, (router) => {\n router.type = router.type ?? 'admin';\n router.prefix = router.prefix ?? `/${pluginName}`;\n router.routes.forEach((route) => {\n generateRouteScope(route);\n route.info = { pluginName };\n });\n\n strapi.server.routes(router);\n });\n }\n }\n};\n\n/**\n * Register api routes\n */\nconst registerAPIRoutes = (strapi: Core.Strapi) => {\n for (const apiName of Object.keys(strapi.apis)) {\n const api = strapi.api(apiName);\n\n const generateRouteScope = createRouteScopeGenerator(`api::${apiName}`);\n\n // Mutate api.routes in-place and make sure router factories are instantiated correctly\n api.routes = instantiateRouterInputs(api.routes, strapi);\n\n _.forEach(api.routes, (router) => {\n // TODO: remove once auth setup\n // pass meta down to compose endpoint\n router.type = 'content-api';\n router.routes?.forEach((route) => {\n generateRouteScope(route);\n route.info = { apiName };\n });\n\n return strapi.server.routes(router);\n });\n }\n};\n\nconst instantiateRouterInputs = (\n routers: Record<string, Core.RouterConfig>,\n strapi: Core.Strapi\n): Record<string, Core.Router> => {\n const entries = Object.entries(routers);\n\n return entries.reduce((record, [key, inputOrCallback]) => {\n const isCallback = typeof inputOrCallback === 'function';\n\n return { ...record, [key]: isCallback ? inputOrCallback({ strapi }) : inputOrCallback };\n }, {});\n};\n"],"names":["createRouteScopeGenerator","namespace","route","prefix","endsWith","handler","_","defaultsDeep","config","auth","scope","startsWith","strapi","registerAdminRoutes","registerAPIRoutes","registerPluginRoutes","generateRouteScope","admin","routes","instantiateRouterInputs","forEach","router","type","info","pluginName","server","Object","keys","plugins","plugin","Array","isArray","apiName","apis","api","routers","entries","reduce","record","key","inputOrCallback","isCallback"],"mappings":"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"}