@strapi/core 0.0.0-experimental.b67f4e6a09bc9dea2c9c999705ecef7e18e84f94 → 0.0.0-experimental.b74470bad5a933136da63d001641ca7d2e170f04

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 (701) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +427 -407
  3. package/dist/Strapi.js.map +1 -1
  4. package/dist/Strapi.mjs +426 -405
  5. package/dist/Strapi.mjs.map +1 -1
  6. package/dist/compile.js +23 -14
  7. package/dist/compile.js.map +1 -1
  8. package/dist/compile.mjs +22 -14
  9. package/dist/compile.mjs.map +1 -1
  10. package/dist/configuration/config-loader.js +110 -97
  11. package/dist/configuration/config-loader.js.map +1 -1
  12. package/dist/configuration/config-loader.mjs +109 -96
  13. package/dist/configuration/config-loader.mjs.map +1 -1
  14. package/dist/configuration/get-dirs.js +31 -29
  15. package/dist/configuration/get-dirs.js.map +1 -1
  16. package/dist/configuration/get-dirs.mjs +30 -30
  17. package/dist/configuration/get-dirs.mjs.map +1 -1
  18. package/dist/configuration/index.d.ts.map +1 -1
  19. package/dist/configuration/index.js +84 -73
  20. package/dist/configuration/index.js.map +1 -1
  21. package/dist/configuration/index.mjs +83 -69
  22. package/dist/configuration/index.mjs.map +1 -1
  23. package/dist/configuration/urls.d.ts.map +1 -1
  24. package/dist/configuration/urls.js +74 -61
  25. package/dist/configuration/urls.js.map +1 -1
  26. package/dist/configuration/urls.mjs +73 -62
  27. package/dist/configuration/urls.mjs.map +1 -1
  28. package/dist/container.js +27 -23
  29. package/dist/container.js.map +1 -1
  30. package/dist/container.mjs +26 -24
  31. package/dist/container.mjs.map +1 -1
  32. package/dist/core-api/controller/collection-type.js +77 -76
  33. package/dist/core-api/controller/collection-type.js.map +1 -1
  34. package/dist/core-api/controller/collection-type.mjs +76 -77
  35. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  36. package/dist/core-api/controller/index.js +63 -48
  37. package/dist/core-api/controller/index.js.map +1 -1
  38. package/dist/core-api/controller/index.mjs +62 -49
  39. package/dist/core-api/controller/index.mjs.map +1 -1
  40. package/dist/core-api/controller/single-type.js +41 -40
  41. package/dist/core-api/controller/single-type.js.map +1 -1
  42. package/dist/core-api/controller/single-type.mjs +40 -41
  43. package/dist/core-api/controller/single-type.mjs.map +1 -1
  44. package/dist/core-api/controller/transform.js +72 -63
  45. package/dist/core-api/controller/transform.js.map +1 -1
  46. package/dist/core-api/controller/transform.mjs +71 -64
  47. package/dist/core-api/controller/transform.mjs.map +1 -1
  48. package/dist/core-api/routes/index.js +64 -62
  49. package/dist/core-api/routes/index.js.map +1 -1
  50. package/dist/core-api/routes/index.mjs +62 -62
  51. package/dist/core-api/routes/index.mjs.map +1 -1
  52. package/dist/core-api/service/collection-type.js +73 -60
  53. package/dist/core-api/service/collection-type.js.map +1 -1
  54. package/dist/core-api/service/collection-type.mjs +72 -62
  55. package/dist/core-api/service/collection-type.mjs.map +1 -1
  56. package/dist/core-api/service/core-service.js +9 -8
  57. package/dist/core-api/service/core-service.js.map +1 -1
  58. package/dist/core-api/service/core-service.mjs +8 -9
  59. package/dist/core-api/service/core-service.mjs.map +1 -1
  60. package/dist/core-api/service/index.js +13 -13
  61. package/dist/core-api/service/index.js.map +1 -1
  62. package/dist/core-api/service/index.mjs +12 -14
  63. package/dist/core-api/service/index.mjs.map +1 -1
  64. package/dist/core-api/service/pagination.js +69 -43
  65. package/dist/core-api/service/pagination.js.map +1 -1
  66. package/dist/core-api/service/pagination.mjs +68 -47
  67. package/dist/core-api/service/pagination.mjs.map +1 -1
  68. package/dist/core-api/service/single-type.js +43 -39
  69. package/dist/core-api/service/single-type.js.map +1 -1
  70. package/dist/core-api/service/single-type.mjs +42 -41
  71. package/dist/core-api/service/single-type.mjs.map +1 -1
  72. package/dist/domain/content-type/index.js +95 -100
  73. package/dist/domain/content-type/index.js.map +1 -1
  74. package/dist/domain/content-type/index.mjs +94 -100
  75. package/dist/domain/content-type/index.mjs.map +1 -1
  76. package/dist/domain/content-type/validator.js +84 -69
  77. package/dist/domain/content-type/validator.js.map +1 -1
  78. package/dist/domain/content-type/validator.mjs +83 -68
  79. package/dist/domain/content-type/validator.mjs.map +1 -1
  80. package/dist/domain/module/index.js +109 -100
  81. package/dist/domain/module/index.js.map +1 -1
  82. package/dist/domain/module/index.mjs +108 -99
  83. package/dist/domain/module/index.mjs.map +1 -1
  84. package/dist/domain/module/validation.js +25 -20
  85. package/dist/domain/module/validation.js.map +1 -1
  86. package/dist/domain/module/validation.mjs +24 -21
  87. package/dist/domain/module/validation.mjs.map +1 -1
  88. package/dist/ee/index.d.ts +1 -0
  89. package/dist/ee/index.d.ts.map +1 -1
  90. package/dist/ee/index.js +171 -137
  91. package/dist/ee/index.js.map +1 -1
  92. package/dist/ee/index.mjs +170 -139
  93. package/dist/ee/index.mjs.map +1 -1
  94. package/dist/ee/license.d.ts.map +1 -1
  95. package/dist/ee/license.js +99 -75
  96. package/dist/ee/license.js.map +1 -1
  97. package/dist/ee/license.mjs +98 -76
  98. package/dist/ee/license.mjs.map +1 -1
  99. package/dist/factories.js +72 -67
  100. package/dist/factories.js.map +1 -1
  101. package/dist/factories.mjs +71 -71
  102. package/dist/factories.mjs.map +1 -1
  103. package/dist/index.js +29 -26
  104. package/dist/index.js.map +1 -1
  105. package/dist/index.mjs +29 -29
  106. package/dist/index.mjs.map +1 -1
  107. package/dist/loaders/admin.d.ts.map +1 -1
  108. package/dist/loaders/admin.js +21 -20
  109. package/dist/loaders/admin.js.map +1 -1
  110. package/dist/loaders/admin.mjs +20 -20
  111. package/dist/loaders/admin.mjs.map +1 -1
  112. package/dist/loaders/apis.js +143 -120
  113. package/dist/loaders/apis.js.map +1 -1
  114. package/dist/loaders/apis.mjs +142 -119
  115. package/dist/loaders/apis.mjs.map +1 -1
  116. package/dist/loaders/components.js +33 -34
  117. package/dist/loaders/components.js.map +1 -1
  118. package/dist/loaders/components.mjs +32 -34
  119. package/dist/loaders/components.mjs.map +1 -1
  120. package/dist/loaders/index.js +22 -20
  121. package/dist/loaders/index.js.map +1 -1
  122. package/dist/loaders/index.mjs +21 -21
  123. package/dist/loaders/index.mjs.map +1 -1
  124. package/dist/loaders/middlewares.js +29 -25
  125. package/dist/loaders/middlewares.js.map +1 -1
  126. package/dist/loaders/middlewares.mjs +28 -25
  127. package/dist/loaders/middlewares.mjs.map +1 -1
  128. package/dist/loaders/plugins/get-enabled-plugins.js +126 -131
  129. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  130. package/dist/loaders/plugins/get-enabled-plugins.mjs +125 -108
  131. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  132. package/dist/loaders/plugins/get-user-plugins-config.js +25 -24
  133. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  134. package/dist/loaders/plugins/get-user-plugins-config.mjs +24 -23
  135. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  136. package/dist/loaders/plugins/index.js +132 -122
  137. package/dist/loaders/plugins/index.js.map +1 -1
  138. package/dist/loaders/plugins/index.mjs +121 -112
  139. package/dist/loaders/plugins/index.mjs.map +1 -1
  140. package/dist/loaders/policies.js +24 -20
  141. package/dist/loaders/policies.js.map +1 -1
  142. package/dist/loaders/policies.mjs +23 -20
  143. package/dist/loaders/policies.mjs.map +1 -1
  144. package/dist/loaders/sanitizers.js +10 -4
  145. package/dist/loaders/sanitizers.js.map +1 -1
  146. package/dist/loaders/sanitizers.mjs +9 -6
  147. package/dist/loaders/sanitizers.mjs.map +1 -1
  148. package/dist/loaders/src-index.js +35 -27
  149. package/dist/loaders/src-index.js.map +1 -1
  150. package/dist/loaders/src-index.mjs +34 -29
  151. package/dist/loaders/src-index.mjs.map +1 -1
  152. package/dist/loaders/validators.js +9 -4
  153. package/dist/loaders/validators.js.map +1 -1
  154. package/dist/loaders/validators.mjs +8 -6
  155. package/dist/loaders/validators.mjs.map +1 -1
  156. package/dist/middlewares/body.d.ts.map +1 -1
  157. package/dist/middlewares/body.js +58 -54
  158. package/dist/middlewares/body.js.map +1 -1
  159. package/dist/middlewares/body.mjs +57 -51
  160. package/dist/middlewares/body.mjs.map +1 -1
  161. package/dist/middlewares/compression.js +6 -6
  162. package/dist/middlewares/compression.js.map +1 -1
  163. package/dist/middlewares/compression.mjs +5 -5
  164. package/dist/middlewares/compression.mjs.map +1 -1
  165. package/dist/middlewares/cors.js +59 -48
  166. package/dist/middlewares/cors.js.map +1 -1
  167. package/dist/middlewares/cors.mjs +58 -47
  168. package/dist/middlewares/cors.mjs.map +1 -1
  169. package/dist/middlewares/errors.js +32 -30
  170. package/dist/middlewares/errors.js.map +1 -1
  171. package/dist/middlewares/errors.mjs +31 -31
  172. package/dist/middlewares/errors.mjs.map +1 -1
  173. package/dist/middlewares/favicon.js +27 -17
  174. package/dist/middlewares/favicon.js.map +1 -1
  175. package/dist/middlewares/favicon.mjs +26 -16
  176. package/dist/middlewares/favicon.mjs.map +1 -1
  177. package/dist/middlewares/index.js +32 -30
  178. package/dist/middlewares/index.js.map +1 -1
  179. package/dist/middlewares/index.mjs +31 -31
  180. package/dist/middlewares/index.mjs.map +1 -1
  181. package/dist/middlewares/ip.js +6 -6
  182. package/dist/middlewares/ip.js.map +1 -1
  183. package/dist/middlewares/ip.mjs +5 -5
  184. package/dist/middlewares/ip.mjs.map +1 -1
  185. package/dist/middlewares/logger.js +10 -9
  186. package/dist/middlewares/logger.js.map +1 -1
  187. package/dist/middlewares/logger.mjs +9 -10
  188. package/dist/middlewares/logger.mjs.map +1 -1
  189. package/dist/middlewares/powered-by.js +13 -9
  190. package/dist/middlewares/powered-by.js.map +1 -1
  191. package/dist/middlewares/powered-by.mjs +12 -10
  192. package/dist/middlewares/powered-by.mjs.map +1 -1
  193. package/dist/middlewares/public.js +33 -29
  194. package/dist/middlewares/public.js.map +1 -1
  195. package/dist/middlewares/public.mjs +32 -28
  196. package/dist/middlewares/public.mjs.map +1 -1
  197. package/dist/middlewares/query.js +35 -32
  198. package/dist/middlewares/query.js.map +1 -1
  199. package/dist/middlewares/query.mjs +34 -31
  200. package/dist/middlewares/query.mjs.map +1 -1
  201. package/dist/middlewares/response-time.js +10 -9
  202. package/dist/middlewares/response-time.js.map +1 -1
  203. package/dist/middlewares/response-time.mjs +9 -10
  204. package/dist/middlewares/response-time.mjs.map +1 -1
  205. package/dist/middlewares/responses.js +14 -12
  206. package/dist/middlewares/responses.js.map +1 -1
  207. package/dist/middlewares/responses.mjs +13 -13
  208. package/dist/middlewares/responses.mjs.map +1 -1
  209. package/dist/middlewares/security.js +109 -71
  210. package/dist/middlewares/security.js.map +1 -1
  211. package/dist/middlewares/security.mjs +108 -70
  212. package/dist/middlewares/security.mjs.map +1 -1
  213. package/dist/middlewares/session.js +26 -25
  214. package/dist/middlewares/session.js.map +1 -1
  215. package/dist/middlewares/session.mjs +25 -24
  216. package/dist/middlewares/session.mjs.map +1 -1
  217. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +2 -2
  218. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  219. package/dist/migrations/database/5.0.0-discard-drafts.js +152 -90
  220. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  221. package/dist/migrations/database/5.0.0-discard-drafts.mjs +151 -92
  222. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
  223. package/dist/migrations/draft-publish.d.ts +1 -1
  224. package/dist/migrations/draft-publish.d.ts.map +1 -1
  225. package/dist/migrations/draft-publish.js +61 -34
  226. package/dist/migrations/draft-publish.js.map +1 -1
  227. package/dist/migrations/draft-publish.mjs +60 -36
  228. package/dist/migrations/draft-publish.mjs.map +1 -1
  229. package/dist/migrations/i18n.js +62 -45
  230. package/dist/migrations/i18n.js.map +1 -1
  231. package/dist/migrations/i18n.mjs +61 -47
  232. package/dist/migrations/i18n.mjs.map +1 -1
  233. package/dist/migrations/index.js +24 -10
  234. package/dist/migrations/index.js.map +1 -1
  235. package/dist/migrations/index.mjs +23 -12
  236. package/dist/migrations/index.mjs.map +1 -1
  237. package/dist/package.json.js +182 -0
  238. package/dist/package.json.js.map +1 -0
  239. package/dist/package.json.mjs +159 -0
  240. package/dist/package.json.mjs.map +1 -0
  241. package/dist/providers/admin.js +27 -17
  242. package/dist/providers/admin.js.map +1 -1
  243. package/dist/providers/admin.mjs +26 -19
  244. package/dist/providers/admin.mjs.map +1 -1
  245. package/dist/providers/coreStore.js +13 -8
  246. package/dist/providers/coreStore.js.map +1 -1
  247. package/dist/providers/coreStore.mjs +12 -10
  248. package/dist/providers/coreStore.mjs.map +1 -1
  249. package/dist/providers/cron.js +19 -16
  250. package/dist/providers/cron.js.map +1 -1
  251. package/dist/providers/cron.mjs +18 -18
  252. package/dist/providers/cron.mjs.map +1 -1
  253. package/dist/providers/index.js +18 -9
  254. package/dist/providers/index.js.map +1 -1
  255. package/dist/providers/index.mjs +17 -10
  256. package/dist/providers/index.mjs.map +1 -1
  257. package/dist/providers/provider.js +4 -3
  258. package/dist/providers/provider.js.map +1 -1
  259. package/dist/providers/provider.mjs +3 -4
  260. package/dist/providers/provider.mjs.map +1 -1
  261. package/dist/providers/registries.js +37 -32
  262. package/dist/providers/registries.js.map +1 -1
  263. package/dist/providers/registries.mjs +36 -34
  264. package/dist/providers/registries.mjs.map +1 -1
  265. package/dist/providers/telemetry.js +19 -16
  266. package/dist/providers/telemetry.js.map +1 -1
  267. package/dist/providers/telemetry.mjs +18 -18
  268. package/dist/providers/telemetry.mjs.map +1 -1
  269. package/dist/providers/webhooks.js +28 -26
  270. package/dist/providers/webhooks.js.map +1 -1
  271. package/dist/providers/webhooks.mjs +27 -28
  272. package/dist/providers/webhooks.mjs.map +1 -1
  273. package/dist/registries/apis.js +23 -20
  274. package/dist/registries/apis.js.map +1 -1
  275. package/dist/registries/apis.mjs +22 -22
  276. package/dist/registries/apis.mjs.map +1 -1
  277. package/dist/registries/components.js +35 -37
  278. package/dist/registries/components.js.map +1 -1
  279. package/dist/registries/components.mjs +34 -39
  280. package/dist/registries/components.mjs.map +1 -1
  281. package/dist/registries/content-types.js +54 -59
  282. package/dist/registries/content-types.js.map +1 -1
  283. package/dist/registries/content-types.mjs +53 -61
  284. package/dist/registries/content-types.mjs.map +1 -1
  285. package/dist/registries/controllers.js +70 -71
  286. package/dist/registries/controllers.js.map +1 -1
  287. package/dist/registries/controllers.mjs +69 -73
  288. package/dist/registries/controllers.mjs.map +1 -1
  289. package/dist/registries/custom-fields.js +75 -65
  290. package/dist/registries/custom-fields.js.map +1 -1
  291. package/dist/registries/custom-fields.mjs +74 -67
  292. package/dist/registries/custom-fields.mjs.map +1 -1
  293. package/dist/registries/hooks.js +46 -49
  294. package/dist/registries/hooks.js.map +1 -1
  295. package/dist/registries/hooks.mjs +45 -51
  296. package/dist/registries/hooks.mjs.map +1 -1
  297. package/dist/registries/middlewares.js +49 -51
  298. package/dist/registries/middlewares.js.map +1 -1
  299. package/dist/registries/middlewares.mjs +48 -53
  300. package/dist/registries/middlewares.mjs.map +1 -1
  301. package/dist/registries/models.js +14 -13
  302. package/dist/registries/models.js.map +1 -1
  303. package/dist/registries/models.mjs +13 -14
  304. package/dist/registries/models.mjs.map +1 -1
  305. package/dist/registries/modules.js +39 -36
  306. package/dist/registries/modules.js.map +1 -1
  307. package/dist/registries/modules.mjs +38 -38
  308. package/dist/registries/modules.mjs.map +1 -1
  309. package/dist/registries/namespace.js +21 -20
  310. package/dist/registries/namespace.js.map +1 -1
  311. package/dist/registries/namespace.mjs +20 -23
  312. package/dist/registries/namespace.mjs.map +1 -1
  313. package/dist/registries/plugins.js +23 -20
  314. package/dist/registries/plugins.js.map +1 -1
  315. package/dist/registries/plugins.mjs +22 -22
  316. package/dist/registries/plugins.mjs.map +1 -1
  317. package/dist/registries/policies.js +103 -96
  318. package/dist/registries/policies.js.map +1 -1
  319. package/dist/registries/policies.mjs +102 -98
  320. package/dist/registries/policies.mjs.map +1 -1
  321. package/dist/registries/sanitizers.js +23 -22
  322. package/dist/registries/sanitizers.js.map +1 -1
  323. package/dist/registries/sanitizers.mjs +22 -22
  324. package/dist/registries/sanitizers.mjs.map +1 -1
  325. package/dist/registries/services.js +71 -71
  326. package/dist/registries/services.js.map +1 -1
  327. package/dist/registries/services.mjs +70 -73
  328. package/dist/registries/services.mjs.map +1 -1
  329. package/dist/registries/validators.js +23 -22
  330. package/dist/registries/validators.js.map +1 -1
  331. package/dist/registries/validators.mjs +22 -22
  332. package/dist/registries/validators.mjs.map +1 -1
  333. package/dist/services/auth/index.js +74 -74
  334. package/dist/services/auth/index.js.map +1 -1
  335. package/dist/services/auth/index.mjs +73 -74
  336. package/dist/services/auth/index.mjs.map +1 -1
  337. package/dist/services/config.js +47 -43
  338. package/dist/services/config.js.map +1 -1
  339. package/dist/services/config.mjs +46 -44
  340. package/dist/services/config.mjs.map +1 -1
  341. package/dist/services/content-api/index.js +80 -79
  342. package/dist/services/content-api/index.js.map +1 -1
  343. package/dist/services/content-api/index.mjs +79 -79
  344. package/dist/services/content-api/index.mjs.map +1 -1
  345. package/dist/services/content-api/permissions/engine.js +8 -5
  346. package/dist/services/content-api/permissions/engine.js.map +1 -1
  347. package/dist/services/content-api/permissions/engine.mjs +7 -5
  348. package/dist/services/content-api/permissions/engine.mjs.map +1 -1
  349. package/dist/services/content-api/permissions/index.js +101 -81
  350. package/dist/services/content-api/permissions/index.js.map +1 -1
  351. package/dist/services/content-api/permissions/index.mjs +100 -81
  352. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  353. package/dist/services/content-api/permissions/providers/action.js +17 -14
  354. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  355. package/dist/services/content-api/permissions/providers/action.mjs +16 -16
  356. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  357. package/dist/services/content-api/permissions/providers/condition.js +17 -14
  358. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  359. package/dist/services/content-api/permissions/providers/condition.mjs +16 -16
  360. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  361. package/dist/services/core-store.js +115 -95
  362. package/dist/services/core-store.js.map +1 -1
  363. package/dist/services/core-store.mjs +114 -97
  364. package/dist/services/core-store.mjs.map +1 -1
  365. package/dist/services/cron.js +74 -65
  366. package/dist/services/cron.js.map +1 -1
  367. package/dist/services/cron.mjs +73 -67
  368. package/dist/services/cron.mjs.map +1 -1
  369. package/dist/services/custom-fields.js +9 -7
  370. package/dist/services/custom-fields.js.map +1 -1
  371. package/dist/services/custom-fields.mjs +8 -9
  372. package/dist/services/custom-fields.mjs.map +1 -1
  373. package/dist/services/document-service/attributes/index.js +23 -18
  374. package/dist/services/document-service/attributes/index.js.map +1 -1
  375. package/dist/services/document-service/attributes/index.mjs +22 -19
  376. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  377. package/dist/services/document-service/attributes/transforms.js +16 -15
  378. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  379. package/dist/services/document-service/attributes/transforms.mjs +15 -15
  380. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  381. package/dist/services/document-service/common.js +5 -4
  382. package/dist/services/document-service/common.js.map +1 -1
  383. package/dist/services/document-service/common.mjs +4 -5
  384. package/dist/services/document-service/common.mjs.map +1 -1
  385. package/dist/services/document-service/components.d.ts.map +1 -1
  386. package/dist/services/document-service/components.js +255 -257
  387. package/dist/services/document-service/components.js.map +1 -1
  388. package/dist/services/document-service/components.mjs +254 -262
  389. package/dist/services/document-service/components.mjs.map +1 -1
  390. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  391. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  392. package/dist/services/document-service/draft-and-publish.js +88 -48
  393. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  394. package/dist/services/document-service/draft-and-publish.mjs +87 -54
  395. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  396. package/dist/services/document-service/entries.js +109 -91
  397. package/dist/services/document-service/entries.js.map +1 -1
  398. package/dist/services/document-service/entries.mjs +108 -92
  399. package/dist/services/document-service/entries.mjs.map +1 -1
  400. package/dist/services/document-service/events.d.ts +1 -1
  401. package/dist/services/document-service/events.d.ts.map +1 -1
  402. package/dist/services/document-service/events.js +52 -40
  403. package/dist/services/document-service/events.js.map +1 -1
  404. package/dist/services/document-service/events.mjs +51 -41
  405. package/dist/services/document-service/events.mjs.map +1 -1
  406. package/dist/services/document-service/index.js +53 -33
  407. package/dist/services/document-service/index.js.map +1 -1
  408. package/dist/services/document-service/index.mjs +52 -34
  409. package/dist/services/document-service/index.mjs.map +1 -1
  410. package/dist/services/document-service/internationalization.js +62 -46
  411. package/dist/services/document-service/internationalization.js.map +1 -1
  412. package/dist/services/document-service/internationalization.mjs +61 -50
  413. package/dist/services/document-service/internationalization.mjs.map +1 -1
  414. package/dist/services/document-service/middlewares/errors.js +23 -19
  415. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  416. package/dist/services/document-service/middlewares/errors.mjs +22 -20
  417. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  418. package/dist/services/document-service/middlewares/middleware-manager.js +46 -44
  419. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  420. package/dist/services/document-service/middlewares/middleware-manager.mjs +45 -45
  421. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  422. package/dist/services/document-service/params.js +11 -5
  423. package/dist/services/document-service/params.js.map +1 -1
  424. package/dist/services/document-service/params.mjs +10 -6
  425. package/dist/services/document-service/params.mjs.map +1 -1
  426. package/dist/services/document-service/repository.d.ts.map +1 -1
  427. package/dist/services/document-service/repository.js +354 -319
  428. package/dist/services/document-service/repository.js.map +1 -1
  429. package/dist/services/document-service/repository.mjs +353 -320
  430. package/dist/services/document-service/repository.mjs.map +1 -1
  431. package/dist/services/document-service/transform/data.js +22 -12
  432. package/dist/services/document-service/transform/data.js.map +1 -1
  433. package/dist/services/document-service/transform/data.mjs +21 -13
  434. package/dist/services/document-service/transform/data.mjs.map +1 -1
  435. package/dist/services/document-service/transform/fields.js +26 -17
  436. package/dist/services/document-service/transform/fields.js.map +1 -1
  437. package/dist/services/document-service/transform/fields.mjs +25 -18
  438. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  439. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  440. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  441. package/dist/services/document-service/transform/id-map.js +115 -77
  442. package/dist/services/document-service/transform/id-map.js.map +1 -1
  443. package/dist/services/document-service/transform/id-map.mjs +114 -78
  444. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  445. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  446. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  447. package/dist/services/document-service/transform/id-transform.js +37 -29
  448. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  449. package/dist/services/document-service/transform/id-transform.mjs +36 -30
  450. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  451. package/dist/services/document-service/transform/populate.js +23 -18
  452. package/dist/services/document-service/transform/populate.js.map +1 -1
  453. package/dist/services/document-service/transform/populate.mjs +22 -19
  454. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  455. package/dist/services/document-service/transform/query.js +11 -6
  456. package/dist/services/document-service/transform/query.js.map +1 -1
  457. package/dist/services/document-service/transform/query.mjs +10 -7
  458. package/dist/services/document-service/transform/query.mjs.map +1 -1
  459. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
  460. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  461. package/dist/services/document-service/transform/relations/extract/data-ids.js +70 -54
  462. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  463. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +69 -55
  464. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  465. package/dist/services/document-service/transform/relations/transform/data-ids.js +96 -72
  466. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  467. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +95 -73
  468. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  469. package/dist/services/document-service/transform/relations/transform/default-locale.js +47 -29
  470. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  471. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +46 -30
  472. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  473. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  474. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  475. package/dist/services/document-service/transform/relations/utils/dp.js +52 -26
  476. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  477. package/dist/services/document-service/transform/relations/utils/dp.mjs +51 -27
  478. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  479. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +1 -1
  480. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  481. package/dist/services/document-service/transform/relations/utils/i18n.js +20 -18
  482. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  483. package/dist/services/document-service/transform/relations/utils/i18n.mjs +19 -21
  484. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  485. package/dist/services/document-service/transform/relations/utils/map-relation.js +116 -73
  486. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  487. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +115 -75
  488. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  489. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  490. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  491. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  492. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  493. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  494. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  495. package/dist/services/document-service/utils/populate.d.ts +1 -1
  496. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  497. package/dist/services/document-service/utils/populate.js +66 -42
  498. package/dist/services/document-service/utils/populate.js.map +1 -1
  499. package/dist/services/document-service/utils/populate.mjs +65 -43
  500. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  501. package/dist/services/document-service/utils/unidirectional-relations.d.ts +1 -1
  502. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
  503. package/dist/services/document-service/utils/unidirectional-relations.js +109 -62
  504. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
  505. package/dist/services/document-service/utils/unidirectional-relations.mjs +108 -64
  506. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
  507. package/dist/services/entity-service/index.js +230 -161
  508. package/dist/services/entity-service/index.js.map +1 -1
  509. package/dist/services/entity-service/index.mjs +229 -160
  510. package/dist/services/entity-service/index.mjs.map +1 -1
  511. package/dist/services/entity-validator/blocks-validator.js +135 -103
  512. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  513. package/dist/services/entity-validator/blocks-validator.mjs +134 -104
  514. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  515. package/dist/services/entity-validator/index.d.ts +1 -1
  516. package/dist/services/entity-validator/index.d.ts.map +1 -1
  517. package/dist/services/entity-validator/index.js +362 -367
  518. package/dist/services/entity-validator/index.js.map +1 -1
  519. package/dist/services/entity-validator/index.mjs +358 -364
  520. package/dist/services/entity-validator/index.mjs.map +1 -1
  521. package/dist/services/entity-validator/validators.js +268 -210
  522. package/dist/services/entity-validator/validators.js.map +1 -1
  523. package/dist/services/entity-validator/validators.mjs +267 -216
  524. package/dist/services/entity-validator/validators.mjs.map +1 -1
  525. package/dist/services/errors.js +65 -65
  526. package/dist/services/errors.js.map +1 -1
  527. package/dist/services/errors.mjs +64 -66
  528. package/dist/services/errors.mjs.map +1 -1
  529. package/dist/services/event-hub.js +82 -69
  530. package/dist/services/event-hub.js.map +1 -1
  531. package/dist/services/event-hub.mjs +81 -71
  532. package/dist/services/event-hub.mjs.map +1 -1
  533. package/dist/services/features.js +19 -14
  534. package/dist/services/features.js.map +1 -1
  535. package/dist/services/features.mjs +18 -15
  536. package/dist/services/features.mjs.map +1 -1
  537. package/dist/services/fs.js +41 -40
  538. package/dist/services/fs.js.map +1 -1
  539. package/dist/services/fs.mjs +40 -39
  540. package/dist/services/fs.mjs.map +1 -1
  541. package/dist/services/metrics/admin-user-hash.js +13 -11
  542. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  543. package/dist/services/metrics/admin-user-hash.mjs +12 -10
  544. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  545. package/dist/services/metrics/index.js +46 -40
  546. package/dist/services/metrics/index.js.map +1 -1
  547. package/dist/services/metrics/index.mjs +45 -42
  548. package/dist/services/metrics/index.mjs.map +1 -1
  549. package/dist/services/metrics/is-truthy.js +13 -6
  550. package/dist/services/metrics/is-truthy.js.map +1 -1
  551. package/dist/services/metrics/is-truthy.mjs +12 -6
  552. package/dist/services/metrics/is-truthy.mjs.map +1 -1
  553. package/dist/services/metrics/middleware.d.ts.map +1 -1
  554. package/dist/services/metrics/middleware.js +37 -22
  555. package/dist/services/metrics/middleware.js.map +1 -1
  556. package/dist/services/metrics/middleware.mjs +36 -24
  557. package/dist/services/metrics/middleware.mjs.map +1 -1
  558. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  559. package/dist/services/metrics/rate-limiter.js +24 -19
  560. package/dist/services/metrics/rate-limiter.js.map +1 -1
  561. package/dist/services/metrics/rate-limiter.mjs +23 -21
  562. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  563. package/dist/services/metrics/sender.js +78 -69
  564. package/dist/services/metrics/sender.js.map +1 -1
  565. package/dist/services/metrics/sender.mjs +77 -64
  566. package/dist/services/metrics/sender.mjs.map +1 -1
  567. package/dist/services/query-params.js +13 -10
  568. package/dist/services/query-params.js.map +1 -1
  569. package/dist/services/query-params.mjs +12 -12
  570. package/dist/services/query-params.mjs.map +1 -1
  571. package/dist/services/reloader.js +35 -32
  572. package/dist/services/reloader.js.map +1 -1
  573. package/dist/services/reloader.mjs +34 -33
  574. package/dist/services/reloader.mjs.map +1 -1
  575. package/dist/services/request-context.js +11 -8
  576. package/dist/services/request-context.js.map +1 -1
  577. package/dist/services/request-context.mjs +10 -10
  578. package/dist/services/request-context.mjs.map +1 -1
  579. package/dist/services/server/admin-api.js +11 -10
  580. package/dist/services/server/admin-api.js.map +1 -1
  581. package/dist/services/server/admin-api.mjs +10 -11
  582. package/dist/services/server/admin-api.mjs.map +1 -1
  583. package/dist/services/server/api.js +33 -27
  584. package/dist/services/server/api.js.map +1 -1
  585. package/dist/services/server/api.mjs +32 -26
  586. package/dist/services/server/api.mjs.map +1 -1
  587. package/dist/services/server/compose-endpoint.js +116 -105
  588. package/dist/services/server/compose-endpoint.js.map +1 -1
  589. package/dist/services/server/compose-endpoint.mjs +115 -105
  590. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  591. package/dist/services/server/content-api.js +11 -9
  592. package/dist/services/server/content-api.js.map +1 -1
  593. package/dist/services/server/content-api.mjs +10 -10
  594. package/dist/services/server/content-api.mjs.map +1 -1
  595. package/dist/services/server/http-server.js +48 -44
  596. package/dist/services/server/http-server.js.map +1 -1
  597. package/dist/services/server/http-server.mjs +47 -43
  598. package/dist/services/server/http-server.mjs.map +1 -1
  599. package/dist/services/server/index.js +85 -82
  600. package/dist/services/server/index.js.map +1 -1
  601. package/dist/services/server/index.mjs +84 -81
  602. package/dist/services/server/index.mjs.map +1 -1
  603. package/dist/services/server/koa.js +49 -47
  604. package/dist/services/server/koa.js.map +1 -1
  605. package/dist/services/server/koa.mjs +48 -44
  606. package/dist/services/server/koa.mjs.map +1 -1
  607. package/dist/services/server/middleware.js +86 -82
  608. package/dist/services/server/middleware.js.map +1 -1
  609. package/dist/services/server/middleware.mjs +85 -82
  610. package/dist/services/server/middleware.mjs.map +1 -1
  611. package/dist/services/server/policy.js +24 -17
  612. package/dist/services/server/policy.js.map +1 -1
  613. package/dist/services/server/policy.mjs +23 -18
  614. package/dist/services/server/policy.mjs.map +1 -1
  615. package/dist/services/server/register-middlewares.js +68 -61
  616. package/dist/services/server/register-middlewares.js.map +1 -1
  617. package/dist/services/server/register-middlewares.mjs +67 -63
  618. package/dist/services/server/register-middlewares.mjs.map +1 -1
  619. package/dist/services/server/register-routes.js +90 -67
  620. package/dist/services/server/register-routes.js.map +1 -1
  621. package/dist/services/server/register-routes.mjs +89 -67
  622. package/dist/services/server/register-routes.mjs.map +1 -1
  623. package/dist/services/server/routing.js +94 -81
  624. package/dist/services/server/routing.js.map +1 -1
  625. package/dist/services/server/routing.mjs +93 -81
  626. package/dist/services/server/routing.mjs.map +1 -1
  627. package/dist/services/utils/dynamic-zones.js +13 -14
  628. package/dist/services/utils/dynamic-zones.js.map +1 -1
  629. package/dist/services/utils/dynamic-zones.mjs +12 -16
  630. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  631. package/dist/services/webhook-runner.js +124 -122
  632. package/dist/services/webhook-runner.js.map +1 -1
  633. package/dist/services/webhook-runner.mjs +123 -121
  634. package/dist/services/webhook-runner.mjs.map +1 -1
  635. package/dist/services/webhook-store.js +132 -99
  636. package/dist/services/webhook-store.js.map +1 -1
  637. package/dist/services/webhook-store.mjs +131 -101
  638. package/dist/services/webhook-store.mjs.map +1 -1
  639. package/dist/services/worker-queue.js +44 -49
  640. package/dist/services/worker-queue.js.map +1 -1
  641. package/dist/services/worker-queue.mjs +43 -49
  642. package/dist/services/worker-queue.mjs.map +1 -1
  643. package/dist/utils/convert-custom-field-type.js +17 -20
  644. package/dist/utils/convert-custom-field-type.js.map +1 -1
  645. package/dist/utils/convert-custom-field-type.mjs +16 -21
  646. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  647. package/dist/utils/cron.js +64 -30
  648. package/dist/utils/cron.js.map +1 -1
  649. package/dist/utils/cron.mjs +63 -31
  650. package/dist/utils/cron.mjs.map +1 -1
  651. package/dist/utils/fetch.js +24 -18
  652. package/dist/utils/fetch.js.map +1 -1
  653. package/dist/utils/fetch.mjs +23 -19
  654. package/dist/utils/fetch.mjs.map +1 -1
  655. package/dist/utils/filepath-to-prop-path.js +20 -28
  656. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  657. package/dist/utils/filepath-to-prop-path.mjs +19 -26
  658. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  659. package/dist/utils/is-initialized.js +21 -12
  660. package/dist/utils/is-initialized.js.map +1 -1
  661. package/dist/utils/is-initialized.mjs +20 -13
  662. package/dist/utils/is-initialized.mjs.map +1 -1
  663. package/dist/utils/lifecycles.js +6 -5
  664. package/dist/utils/lifecycles.js.map +1 -1
  665. package/dist/utils/lifecycles.mjs +5 -6
  666. package/dist/utils/lifecycles.mjs.map +1 -1
  667. package/dist/utils/load-config-file.js +40 -38
  668. package/dist/utils/load-config-file.js.map +1 -1
  669. package/dist/utils/load-config-file.mjs +39 -36
  670. package/dist/utils/load-config-file.mjs.map +1 -1
  671. package/dist/utils/load-files.js +40 -35
  672. package/dist/utils/load-files.js.map +1 -1
  673. package/dist/utils/load-files.mjs +39 -32
  674. package/dist/utils/load-files.mjs.map +1 -1
  675. package/dist/utils/open-browser.js +8 -8
  676. package/dist/utils/open-browser.js.map +1 -1
  677. package/dist/utils/open-browser.mjs +7 -7
  678. package/dist/utils/open-browser.mjs.map +1 -1
  679. package/dist/utils/resolve-working-dirs.js +23 -10
  680. package/dist/utils/resolve-working-dirs.js.map +1 -1
  681. package/dist/utils/resolve-working-dirs.mjs +22 -9
  682. package/dist/utils/resolve-working-dirs.mjs.map +1 -1
  683. package/dist/utils/signals.js +20 -14
  684. package/dist/utils/signals.js.map +1 -1
  685. package/dist/utils/signals.mjs +19 -15
  686. package/dist/utils/signals.mjs.map +1 -1
  687. package/dist/utils/startup-logger.d.ts.map +1 -1
  688. package/dist/utils/startup-logger.js +107 -78
  689. package/dist/utils/startup-logger.js.map +1 -1
  690. package/dist/utils/startup-logger.mjs +106 -75
  691. package/dist/utils/startup-logger.mjs.map +1 -1
  692. package/dist/utils/transform-content-types-to-models.js +350 -261
  693. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  694. package/dist/utils/transform-content-types-to-models.mjs +349 -269
  695. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  696. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  697. package/dist/utils/update-notifier/index.js +68 -73
  698. package/dist/utils/update-notifier/index.js.map +1 -1
  699. package/dist/utils/update-notifier/index.mjs +67 -67
  700. package/dist/utils/update-notifier/index.mjs.map +1 -1
  701. package/package.json +25 -26
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/services/content-api/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport { sanitize, validate } from '@strapi/utils';\n\nimport type { Core, UID } from '@strapi/types';\n\nimport instantiatePermissionsUtilities from './permissions';\n\nconst transformRoutePrefixFor = (pluginName: string) => (route: Core.Route) => {\n const prefix = route.config && route.config.prefix;\n const path = prefix !== undefined ? `${prefix}${route.path}` : `/${pluginName}${route.path}`;\n\n return {\n ...route,\n path,\n };\n};\n\nconst filterContentAPI = (route: Core.Route) => route.info.type === 'content-api';\n\n/**\n * Create a content API container that holds logic, tools and utils. (eg: permissions, ...)\n */\nconst createContentAPI = (strapi: Core.Strapi) => {\n const getRoutesMap = async () => {\n const routesMap: Record<string, Core.Route[]> = {};\n\n _.forEach(strapi.apis, (api, apiName) => {\n const routes = _.flatMap(api.routes, (route) => {\n if ('routes' in route) {\n return route.routes;\n }\n\n return route;\n }).filter(filterContentAPI);\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`api::${apiName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n _.forEach(strapi.plugins, (plugin, pluginName) => {\n const transformPrefix = transformRoutePrefixFor(pluginName);\n\n if (Array.isArray(plugin.routes)) {\n return plugin.routes.map(transformPrefix).filter(filterContentAPI);\n }\n\n const routes = _.flatMap(plugin.routes, (route) => route.routes.map(transformPrefix)).filter(\n filterContentAPI\n );\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`plugin::${pluginName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n return routesMap;\n };\n\n const sanitizer = sanitize.createAPISanitizers({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of sanitizers after the creation of the container\n get sanitizers() {\n return {\n input: strapi.sanitizers.get('content-api.input'),\n output: strapi.sanitizers.get('content-api.output'),\n };\n },\n });\n\n const validator = validate.createAPIValidators({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of validators after the creation of the container\n get validators() {\n return {\n input: strapi.validators.get('content-api.input'),\n };\n },\n });\n\n return {\n permissions: instantiatePermissionsUtilities(strapi),\n getRoutesMap,\n sanitize: sanitizer,\n validate: validator,\n };\n};\n\nexport default createContentAPI;\n"],"names":["_","sanitize","validate","instantiatePermissionsUtilities"],"mappings":";;;;;;AAOA,MAAM,0BAA0B,CAAC,eAAuB,CAAC,UAAsB;AAC7E,QAAM,SAAS,MAAM,UAAU,MAAM,OAAO;AAC5C,QAAM,OAAO,WAAW,SAAY,GAAG,MAAM,GAAG,MAAM,IAAI,KAAK,IAAI,UAAU,GAAG,MAAM,IAAI;AAEnF,SAAA;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EAAA;AAEJ;AAEA,MAAM,mBAAmB,CAAC,UAAsB,MAAM,KAAK,SAAS;AAK9D,MAAA,mBAAmB,CAAC,WAAwB;AAChD,QAAM,eAAe,YAAY;AAC/B,UAAM,YAA0C,CAAA;AAEhDA,eAAA,QAAE,QAAQ,OAAO,MAAM,CAAC,KAAK,YAAY;AACvC,YAAM,SAASA,WAAAA,QAAE,QAAQ,IAAI,QAAQ,CAAC,UAAU;AAC9C,YAAI,YAAY,OAAO;AACrB,iBAAO,MAAM;AAAA,QACf;AAEO,eAAA;AAAA,MAAA,CACR,EAAE,OAAO,gBAAgB;AAEtB,UAAA,OAAO,WAAW,GAAG;AACvB;AAAA,MACF;AAEA,YAAM,YAAY,OAAO,OAAO,IAAI,iBAAiB;AACrD,gBAAU,QAAQ,OAAO,EAAE,IAAI,OAAO,IAAI,CAAC,WAAW;AAAA,QACpD,GAAG;AAAA,QACH,MAAM,GAAG,SAAS,GAAG,MAAM,IAAI;AAAA,MAC/B,EAAA;AAAA,IAAA,CACH;AAEDA,eAAA,QAAE,QAAQ,OAAO,SAAS,CAAC,QAAQ,eAAe;AAC1C,YAAA,kBAAkB,wBAAwB,UAAU;AAE1D,UAAI,MAAM,QAAQ,OAAO,MAAM,GAAG;AAChC,eAAO,OAAO,OAAO,IAAI,eAAe,EAAE,OAAO,gBAAgB;AAAA,MACnE;AAEA,YAAM,SAASA,WAAA,QAAE,QAAQ,OAAO,QAAQ,CAAC,UAAU,MAAM,OAAO,IAAI,eAAe,CAAC,EAAE;AAAA,QACpF;AAAA,MAAA;AAGE,UAAA,OAAO,WAAW,GAAG;AACvB;AAAA,MACF;AAEA,YAAM,YAAY,OAAO,OAAO,IAAI,iBAAiB;AACrD,gBAAU,WAAW,UAAU,EAAE,IAAI,OAAO,IAAI,CAAC,WAAW;AAAA,QAC1D,GAAG;AAAA,QACH,MAAM,GAAG,SAAS,GAAG,MAAM,IAAI;AAAA,MAC/B,EAAA;AAAA,IAAA,CACH;AAEM,WAAA;AAAA,EAAA;AAGH,QAAA,YAAYC,qBAAS,oBAAoB;AAAA,IAC7C,SAAS,KAAa;AACb,aAAA,OAAO,SAAS,GAAiB;AAAA,IAC1C;AAAA;AAAA,IAEA,IAAI,aAAa;AACR,aAAA;AAAA,QACL,OAAO,OAAO,WAAW,IAAI,mBAAmB;AAAA,QAChD,QAAQ,OAAO,WAAW,IAAI,oBAAoB;AAAA,MAAA;AAAA,IAEtD;AAAA,EAAA,CACD;AAEK,QAAA,YAAYC,qBAAS,oBAAoB;AAAA,IAC7C,SAAS,KAAa;AACb,aAAA,OAAO,SAAS,GAAiB;AAAA,IAC1C;AAAA;AAAA,IAEA,IAAI,aAAa;AACR,aAAA;AAAA,QACL,OAAO,OAAO,WAAW,IAAI,mBAAmB;AAAA,MAAA;AAAA,IAEpD;AAAA,EAAA,CACD;AAEM,SAAA;AAAA,IACL,aAAaC,MAAgC,MAAM;AAAA,IACnD;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/services/content-api/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport { sanitize, validate } from '@strapi/utils';\n\nimport type { Core, UID } from '@strapi/types';\n\nimport instantiatePermissionsUtilities from './permissions';\n\nconst transformRoutePrefixFor = (pluginName: string) => (route: Core.Route) => {\n const prefix = route.config && route.config.prefix;\n const path = prefix !== undefined ? `${prefix}${route.path}` : `/${pluginName}${route.path}`;\n\n return {\n ...route,\n path,\n };\n};\n\nconst filterContentAPI = (route: Core.Route) => route.info.type === 'content-api';\n\n/**\n * Create a content API container that holds logic, tools and utils. (eg: permissions, ...)\n */\nconst createContentAPI = (strapi: Core.Strapi) => {\n const getRoutesMap = async () => {\n const routesMap: Record<string, Core.Route[]> = {};\n\n _.forEach(strapi.apis, (api, apiName) => {\n const routes = _.flatMap(api.routes, (route) => {\n if ('routes' in route) {\n return route.routes;\n }\n\n return route;\n }).filter(filterContentAPI);\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`api::${apiName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n _.forEach(strapi.plugins, (plugin, pluginName) => {\n const transformPrefix = transformRoutePrefixFor(pluginName);\n\n if (Array.isArray(plugin.routes)) {\n return plugin.routes.map(transformPrefix).filter(filterContentAPI);\n }\n\n const routes = _.flatMap(plugin.routes, (route) => route.routes.map(transformPrefix)).filter(\n filterContentAPI\n );\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`plugin::${pluginName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n return routesMap;\n };\n\n const sanitizer = sanitize.createAPISanitizers({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of sanitizers after the creation of the container\n get sanitizers() {\n return {\n input: strapi.sanitizers.get('content-api.input'),\n output: strapi.sanitizers.get('content-api.output'),\n };\n },\n });\n\n const validator = validate.createAPIValidators({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of validators after the creation of the container\n get validators() {\n return {\n input: strapi.validators.get('content-api.input'),\n };\n },\n });\n\n return {\n permissions: instantiatePermissionsUtilities(strapi),\n getRoutesMap,\n sanitize: sanitizer,\n validate: validator,\n };\n};\n\nexport default createContentAPI;\n"],"names":["transformRoutePrefixFor","pluginName","route","prefix","config","path","undefined","filterContentAPI","info","type","createContentAPI","strapi","getRoutesMap","routesMap","_","forEach","apis","api","apiName","routes","flatMap","filter","length","apiPrefix","get","map","plugins","plugin","transformPrefix","Array","isArray","sanitizer","sanitize","createAPISanitizers","getModel","uid","sanitizers","input","output","validator","validate","createAPIValidators","validators","permissions","instantiatePermissionsUtilities"],"mappings":"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"}
@@ -1,84 +1,84 @@
1
- import _ from "lodash";
2
- import { sanitize, validate } from "@strapi/utils";
3
- import instantiatePermissionsUtilities from "./permissions/index.mjs";
4
- const transformRoutePrefixFor = (pluginName) => (route) => {
5
- const prefix = route.config && route.config.prefix;
6
- const path = prefix !== void 0 ? `${prefix}${route.path}` : `/${pluginName}${route.path}`;
7
- return {
8
- ...route,
9
- path
10
- };
11
- };
12
- const filterContentAPI = (route) => route.info.type === "content-api";
13
- const createContentAPI = (strapi) => {
14
- const getRoutesMap = async () => {
15
- const routesMap = {};
16
- _.forEach(strapi.apis, (api, apiName) => {
17
- const routes = _.flatMap(api.routes, (route) => {
18
- if ("routes" in route) {
19
- return route.routes;
1
+ import _ from 'lodash';
2
+ import { sanitize, validate } from '@strapi/utils';
3
+ import instantiatePermissionsUtilities from './permissions/index.mjs';
4
+
5
+ const transformRoutePrefixFor = (pluginName)=>(route)=>{
6
+ const prefix = route.config && route.config.prefix;
7
+ const path = prefix !== undefined ? `${prefix}${route.path}` : `/${pluginName}${route.path}`;
8
+ return {
9
+ ...route,
10
+ path
11
+ };
12
+ };
13
+ const filterContentAPI = (route)=>route.info.type === 'content-api';
14
+ /**
15
+ * Create a content API container that holds logic, tools and utils. (eg: permissions, ...)
16
+ */ const createContentAPI = (strapi)=>{
17
+ const getRoutesMap = async ()=>{
18
+ const routesMap = {};
19
+ _.forEach(strapi.apis, (api, apiName)=>{
20
+ const routes = _.flatMap(api.routes, (route)=>{
21
+ if ('routes' in route) {
22
+ return route.routes;
23
+ }
24
+ return route;
25
+ }).filter(filterContentAPI);
26
+ if (routes.length === 0) {
27
+ return;
28
+ }
29
+ const apiPrefix = strapi.config.get('api.rest.prefix');
30
+ routesMap[`api::${apiName}`] = routes.map((route)=>({
31
+ ...route,
32
+ path: `${apiPrefix}${route.path}`
33
+ }));
34
+ });
35
+ _.forEach(strapi.plugins, (plugin, pluginName)=>{
36
+ const transformPrefix = transformRoutePrefixFor(pluginName);
37
+ if (Array.isArray(plugin.routes)) {
38
+ return plugin.routes.map(transformPrefix).filter(filterContentAPI);
39
+ }
40
+ const routes = _.flatMap(plugin.routes, (route)=>route.routes.map(transformPrefix)).filter(filterContentAPI);
41
+ if (routes.length === 0) {
42
+ return;
43
+ }
44
+ const apiPrefix = strapi.config.get('api.rest.prefix');
45
+ routesMap[`plugin::${pluginName}`] = routes.map((route)=>({
46
+ ...route,
47
+ path: `${apiPrefix}${route.path}`
48
+ }));
49
+ });
50
+ return routesMap;
51
+ };
52
+ const sanitizer = sanitize.createAPISanitizers({
53
+ getModel (uid) {
54
+ return strapi.getModel(uid);
55
+ },
56
+ // NOTE: use lazy access to allow registration of sanitizers after the creation of the container
57
+ get sanitizers () {
58
+ return {
59
+ input: strapi.sanitizers.get('content-api.input'),
60
+ output: strapi.sanitizers.get('content-api.output')
61
+ };
20
62
  }
21
- return route;
22
- }).filter(filterContentAPI);
23
- if (routes.length === 0) {
24
- return;
25
- }
26
- const apiPrefix = strapi.config.get("api.rest.prefix");
27
- routesMap[`api::${apiName}`] = routes.map((route) => ({
28
- ...route,
29
- path: `${apiPrefix}${route.path}`
30
- }));
31
63
  });
32
- _.forEach(strapi.plugins, (plugin, pluginName) => {
33
- const transformPrefix = transformRoutePrefixFor(pluginName);
34
- if (Array.isArray(plugin.routes)) {
35
- return plugin.routes.map(transformPrefix).filter(filterContentAPI);
36
- }
37
- const routes = _.flatMap(plugin.routes, (route) => route.routes.map(transformPrefix)).filter(
38
- filterContentAPI
39
- );
40
- if (routes.length === 0) {
41
- return;
42
- }
43
- const apiPrefix = strapi.config.get("api.rest.prefix");
44
- routesMap[`plugin::${pluginName}`] = routes.map((route) => ({
45
- ...route,
46
- path: `${apiPrefix}${route.path}`
47
- }));
64
+ const validator = validate.createAPIValidators({
65
+ getModel (uid) {
66
+ return strapi.getModel(uid);
67
+ },
68
+ // NOTE: use lazy access to allow registration of validators after the creation of the container
69
+ get validators () {
70
+ return {
71
+ input: strapi.validators.get('content-api.input')
72
+ };
73
+ }
48
74
  });
49
- return routesMap;
50
- };
51
- const sanitizer = sanitize.createAPISanitizers({
52
- getModel(uid) {
53
- return strapi.getModel(uid);
54
- },
55
- // NOTE: use lazy access to allow registration of sanitizers after the creation of the container
56
- get sanitizers() {
57
- return {
58
- input: strapi.sanitizers.get("content-api.input"),
59
- output: strapi.sanitizers.get("content-api.output")
60
- };
61
- }
62
- });
63
- const validator = validate.createAPIValidators({
64
- getModel(uid) {
65
- return strapi.getModel(uid);
66
- },
67
- // NOTE: use lazy access to allow registration of validators after the creation of the container
68
- get validators() {
69
- return {
70
- input: strapi.validators.get("content-api.input")
71
- };
72
- }
73
- });
74
- return {
75
- permissions: instantiatePermissionsUtilities(strapi),
76
- getRoutesMap,
77
- sanitize: sanitizer,
78
- validate: validator
79
- };
80
- };
81
- export {
82
- createContentAPI as default
75
+ return {
76
+ permissions: instantiatePermissionsUtilities(strapi),
77
+ getRoutesMap,
78
+ sanitize: sanitizer,
79
+ validate: validator
80
+ };
83
81
  };
82
+
83
+ export { createContentAPI as default };
84
84
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/services/content-api/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport { sanitize, validate } from '@strapi/utils';\n\nimport type { Core, UID } from '@strapi/types';\n\nimport instantiatePermissionsUtilities from './permissions';\n\nconst transformRoutePrefixFor = (pluginName: string) => (route: Core.Route) => {\n const prefix = route.config && route.config.prefix;\n const path = prefix !== undefined ? `${prefix}${route.path}` : `/${pluginName}${route.path}`;\n\n return {\n ...route,\n path,\n };\n};\n\nconst filterContentAPI = (route: Core.Route) => route.info.type === 'content-api';\n\n/**\n * Create a content API container that holds logic, tools and utils. (eg: permissions, ...)\n */\nconst createContentAPI = (strapi: Core.Strapi) => {\n const getRoutesMap = async () => {\n const routesMap: Record<string, Core.Route[]> = {};\n\n _.forEach(strapi.apis, (api, apiName) => {\n const routes = _.flatMap(api.routes, (route) => {\n if ('routes' in route) {\n return route.routes;\n }\n\n return route;\n }).filter(filterContentAPI);\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`api::${apiName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n _.forEach(strapi.plugins, (plugin, pluginName) => {\n const transformPrefix = transformRoutePrefixFor(pluginName);\n\n if (Array.isArray(plugin.routes)) {\n return plugin.routes.map(transformPrefix).filter(filterContentAPI);\n }\n\n const routes = _.flatMap(plugin.routes, (route) => route.routes.map(transformPrefix)).filter(\n filterContentAPI\n );\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`plugin::${pluginName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n return routesMap;\n };\n\n const sanitizer = sanitize.createAPISanitizers({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of sanitizers after the creation of the container\n get sanitizers() {\n return {\n input: strapi.sanitizers.get('content-api.input'),\n output: strapi.sanitizers.get('content-api.output'),\n };\n },\n });\n\n const validator = validate.createAPIValidators({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of validators after the creation of the container\n get validators() {\n return {\n input: strapi.validators.get('content-api.input'),\n };\n },\n });\n\n return {\n permissions: instantiatePermissionsUtilities(strapi),\n getRoutesMap,\n sanitize: sanitizer,\n validate: validator,\n };\n};\n\nexport default createContentAPI;\n"],"names":[],"mappings":";;;AAOA,MAAM,0BAA0B,CAAC,eAAuB,CAAC,UAAsB;AAC7E,QAAM,SAAS,MAAM,UAAU,MAAM,OAAO;AAC5C,QAAM,OAAO,WAAW,SAAY,GAAG,MAAM,GAAG,MAAM,IAAI,KAAK,IAAI,UAAU,GAAG,MAAM,IAAI;AAEnF,SAAA;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EAAA;AAEJ;AAEA,MAAM,mBAAmB,CAAC,UAAsB,MAAM,KAAK,SAAS;AAK9D,MAAA,mBAAmB,CAAC,WAAwB;AAChD,QAAM,eAAe,YAAY;AAC/B,UAAM,YAA0C,CAAA;AAEhD,MAAE,QAAQ,OAAO,MAAM,CAAC,KAAK,YAAY;AACvC,YAAM,SAAS,EAAE,QAAQ,IAAI,QAAQ,CAAC,UAAU;AAC9C,YAAI,YAAY,OAAO;AACrB,iBAAO,MAAM;AAAA,QACf;AAEO,eAAA;AAAA,MAAA,CACR,EAAE,OAAO,gBAAgB;AAEtB,UAAA,OAAO,WAAW,GAAG;AACvB;AAAA,MACF;AAEA,YAAM,YAAY,OAAO,OAAO,IAAI,iBAAiB;AACrD,gBAAU,QAAQ,OAAO,EAAE,IAAI,OAAO,IAAI,CAAC,WAAW;AAAA,QACpD,GAAG;AAAA,QACH,MAAM,GAAG,SAAS,GAAG,MAAM,IAAI;AAAA,MAC/B,EAAA;AAAA,IAAA,CACH;AAED,MAAE,QAAQ,OAAO,SAAS,CAAC,QAAQ,eAAe;AAC1C,YAAA,kBAAkB,wBAAwB,UAAU;AAE1D,UAAI,MAAM,QAAQ,OAAO,MAAM,GAAG;AAChC,eAAO,OAAO,OAAO,IAAI,eAAe,EAAE,OAAO,gBAAgB;AAAA,MACnE;AAEA,YAAM,SAAS,EAAE,QAAQ,OAAO,QAAQ,CAAC,UAAU,MAAM,OAAO,IAAI,eAAe,CAAC,EAAE;AAAA,QACpF;AAAA,MAAA;AAGE,UAAA,OAAO,WAAW,GAAG;AACvB;AAAA,MACF;AAEA,YAAM,YAAY,OAAO,OAAO,IAAI,iBAAiB;AACrD,gBAAU,WAAW,UAAU,EAAE,IAAI,OAAO,IAAI,CAAC,WAAW;AAAA,QAC1D,GAAG;AAAA,QACH,MAAM,GAAG,SAAS,GAAG,MAAM,IAAI;AAAA,MAC/B,EAAA;AAAA,IAAA,CACH;AAEM,WAAA;AAAA,EAAA;AAGH,QAAA,YAAY,SAAS,oBAAoB;AAAA,IAC7C,SAAS,KAAa;AACb,aAAA,OAAO,SAAS,GAAiB;AAAA,IAC1C;AAAA;AAAA,IAEA,IAAI,aAAa;AACR,aAAA;AAAA,QACL,OAAO,OAAO,WAAW,IAAI,mBAAmB;AAAA,QAChD,QAAQ,OAAO,WAAW,IAAI,oBAAoB;AAAA,MAAA;AAAA,IAEtD;AAAA,EAAA,CACD;AAEK,QAAA,YAAY,SAAS,oBAAoB;AAAA,IAC7C,SAAS,KAAa;AACb,aAAA,OAAO,SAAS,GAAiB;AAAA,IAC1C;AAAA;AAAA,IAEA,IAAI,aAAa;AACR,aAAA;AAAA,QACL,OAAO,OAAO,WAAW,IAAI,mBAAmB;AAAA,MAAA;AAAA,IAEpD;AAAA,EAAA,CACD;AAEM,SAAA;AAAA,IACL,aAAa,gCAAgC,MAAM;AAAA,IACnD;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/services/content-api/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport { sanitize, validate } from '@strapi/utils';\n\nimport type { Core, UID } from '@strapi/types';\n\nimport instantiatePermissionsUtilities from './permissions';\n\nconst transformRoutePrefixFor = (pluginName: string) => (route: Core.Route) => {\n const prefix = route.config && route.config.prefix;\n const path = prefix !== undefined ? `${prefix}${route.path}` : `/${pluginName}${route.path}`;\n\n return {\n ...route,\n path,\n };\n};\n\nconst filterContentAPI = (route: Core.Route) => route.info.type === 'content-api';\n\n/**\n * Create a content API container that holds logic, tools and utils. (eg: permissions, ...)\n */\nconst createContentAPI = (strapi: Core.Strapi) => {\n const getRoutesMap = async () => {\n const routesMap: Record<string, Core.Route[]> = {};\n\n _.forEach(strapi.apis, (api, apiName) => {\n const routes = _.flatMap(api.routes, (route) => {\n if ('routes' in route) {\n return route.routes;\n }\n\n return route;\n }).filter(filterContentAPI);\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`api::${apiName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n _.forEach(strapi.plugins, (plugin, pluginName) => {\n const transformPrefix = transformRoutePrefixFor(pluginName);\n\n if (Array.isArray(plugin.routes)) {\n return plugin.routes.map(transformPrefix).filter(filterContentAPI);\n }\n\n const routes = _.flatMap(plugin.routes, (route) => route.routes.map(transformPrefix)).filter(\n filterContentAPI\n );\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`plugin::${pluginName}`] = routes.map((route) => ({\n ...route,\n path: `${apiPrefix}${route.path}`,\n }));\n });\n\n return routesMap;\n };\n\n const sanitizer = sanitize.createAPISanitizers({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of sanitizers after the creation of the container\n get sanitizers() {\n return {\n input: strapi.sanitizers.get('content-api.input'),\n output: strapi.sanitizers.get('content-api.output'),\n };\n },\n });\n\n const validator = validate.createAPIValidators({\n getModel(uid: string) {\n return strapi.getModel(uid as UID.Schema);\n },\n // NOTE: use lazy access to allow registration of validators after the creation of the container\n get validators() {\n return {\n input: strapi.validators.get('content-api.input'),\n };\n },\n });\n\n return {\n permissions: instantiatePermissionsUtilities(strapi),\n getRoutesMap,\n sanitize: sanitizer,\n validate: validator,\n };\n};\n\nexport default createContentAPI;\n"],"names":["transformRoutePrefixFor","pluginName","route","prefix","config","path","undefined","filterContentAPI","info","type","createContentAPI","strapi","getRoutesMap","routesMap","_","forEach","apis","api","apiName","routes","flatMap","filter","length","apiPrefix","get","map","plugins","plugin","transformPrefix","Array","isArray","sanitizer","sanitize","createAPISanitizers","getModel","uid","sanitizers","input","output","validator","validate","createAPIValidators","validators","permissions","instantiatePermissionsUtilities"],"mappings":"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"}
@@ -1,7 +1,10 @@
1
- "use strict";
2
- const permissions = require("@strapi/permissions");
3
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
4
- const permissions__default = /* @__PURE__ */ _interopDefault(permissions);
5
- const createPermissionEngine = ({ providers }) => permissions__default.default.engine.new({ providers });
1
+ 'use strict';
2
+
3
+ var permissions = require('@strapi/permissions');
4
+
5
+ var createPermissionEngine = (({ providers })=>permissions.engine.new({
6
+ providers
7
+ }));
8
+
6
9
  module.exports = createPermissionEngine;
7
10
  //# sourceMappingURL=engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sources":["../../../../src/services/content-api/permissions/engine.ts"],"sourcesContent":["import permissions from '@strapi/permissions';\n\ntype Options = Parameters<typeof permissions.engine.new>[0];\n\nexport default ({ providers }: Options) => permissions.engine.new({ providers });\n"],"names":["permissions"],"mappings":";;;;AAIA,MAAA,yBAAe,CAAC,EAAE,UAAU,MAAeA,6BAAY,OAAO,IAAI,EAAE,WAAW;;"}
1
+ {"version":3,"file":"engine.js","sources":["../../../../src/services/content-api/permissions/engine.ts"],"sourcesContent":["import permissions from '@strapi/permissions';\n\ntype Options = Parameters<typeof permissions.engine.new>[0];\n\nexport default ({ providers }: Options) => permissions.engine.new({ providers });\n"],"names":["providers","permissions","engine","new"],"mappings":";;;;AAIA,6BAAe,CAAA,CAAC,EAAEA,SAAS,EAAW,GAAKC,WAAYC,CAAAA,MAAM,CAACC,GAAG,CAAC;AAAEH,QAAAA;AAAU,KAAA,CAAC;;;;"}
@@ -1,6 +1,8 @@
1
- import permissions from "@strapi/permissions";
2
- const createPermissionEngine = ({ providers }) => permissions.engine.new({ providers });
3
- export {
4
- createPermissionEngine as default
5
- };
1
+ import permissions from '@strapi/permissions';
2
+
3
+ var createPermissionEngine = (({ providers })=>permissions.engine.new({
4
+ providers
5
+ }));
6
+
7
+ export { createPermissionEngine as default };
6
8
  //# sourceMappingURL=engine.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.mjs","sources":["../../../../src/services/content-api/permissions/engine.ts"],"sourcesContent":["import permissions from '@strapi/permissions';\n\ntype Options = Parameters<typeof permissions.engine.new>[0];\n\nexport default ({ providers }: Options) => permissions.engine.new({ providers });\n"],"names":[],"mappings":";AAIA,MAAA,yBAAe,CAAC,EAAE,UAAU,MAAe,YAAY,OAAO,IAAI,EAAE,WAAW;"}
1
+ {"version":3,"file":"engine.mjs","sources":["../../../../src/services/content-api/permissions/engine.ts"],"sourcesContent":["import permissions from '@strapi/permissions';\n\ntype Options = Parameters<typeof permissions.engine.new>[0];\n\nexport default ({ providers }: Options) => permissions.engine.new({ providers });\n"],"names":["providers","permissions","engine","new"],"mappings":";;AAIA,6BAAe,CAAA,CAAC,EAAEA,SAAS,EAAW,GAAKC,WAAYC,CAAAA,MAAM,CAACC,GAAG,CAAC;AAAEH,QAAAA;AAAU,KAAA,CAAC;;;;"}
@@ -1,87 +1,107 @@
1
- "use strict";
2
- const _ = require("lodash");
3
- const action = require("./providers/action.js");
4
- const condition = require("./providers/condition.js");
5
- const engine = require("./engine.js");
6
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
7
- const ___default = /* @__PURE__ */ _interopDefault(_);
8
- const typeSymbol = Symbol.for("__type__");
9
- const createValidatePermissionHandler = (actionProvider) => ({ permission }) => {
10
- const action2 = actionProvider.get(permission.action);
11
- if (!action2) {
12
- strapi.log.debug(
13
- `Unknown action "${permission.action}" supplied when registering a new permission`
14
- );
15
- return false;
16
- }
17
- return true;
18
- };
19
- const instantiatePermissionsUtilities = (strapi2) => {
20
- const providers = {
21
- action: action(),
22
- condition: condition()
23
- };
24
- const getActionsMap = () => {
25
- const actionMap = {};
26
- const isContentApi = (action2) => {
27
- if (!___default.default.has(action2, typeSymbol)) {
28
- return false;
29
- }
30
- return action2[typeSymbol].includes("content-api");
1
+ 'use strict';
2
+
3
+ var _ = require('lodash');
4
+ var action = require('./providers/action.js');
5
+ var condition = require('./providers/condition.js');
6
+ var engine = require('./engine.js');
7
+
8
+ const typeSymbol = Symbol.for('__type__');
9
+ /**
10
+ * Creates a handler that checks if the permission's action exists in the action registry
11
+ */ const createValidatePermissionHandler = (actionProvider)=>({ permission })=>{
12
+ const action = actionProvider.get(permission.action);
13
+ // If the action isn't registered into the action provider, then ignore the permission and warn the user
14
+ if (!action) {
15
+ strapi.log.debug(`Unknown action "${permission.action}" supplied when registering a new permission`);
16
+ return false;
17
+ }
18
+ return true;
19
+ };
20
+ /**
21
+ * Create instances of providers and permission engine for the core content-API service.
22
+ * Also, expose utilities to get information about available actions and such.
23
+ */ var instantiatePermissionsUtilities = ((strapi1)=>{
24
+ // NOTE: Here we define both an action and condition provider,
25
+ // but at the moment, we're only using the action one.
26
+ const providers = {
27
+ action: action(),
28
+ condition: condition()
31
29
  };
32
- const registerAPIsActions = (apis, source) => {
33
- ___default.default.forEach(apis, (api, apiName) => {
34
- const controllers = ___default.default.reduce(
35
- api.controllers,
36
- (acc, controller, controllerName) => {
37
- const contentApiActions = ___default.default.pickBy(controller, isContentApi);
38
- if (___default.default.isEmpty(contentApiActions)) {
39
- return acc;
30
+ /**
31
+ * Get a tree representation of the available Content API actions
32
+ * based on the methods of the Content API controllers.
33
+ *
34
+ * @note Only actions bound to a content-API route are returned.
35
+ */ const getActionsMap = ()=>{
36
+ const actionMap = {};
37
+ /**
38
+ * Check if a controller's action is bound to the
39
+ * content-api by looking at a potential __type__ symbol
40
+ */ const isContentApi = (action)=>{
41
+ if (!_.has(action, typeSymbol)) {
42
+ return false;
43
+ }
44
+ return action[typeSymbol].includes('content-api');
45
+ };
46
+ /**
47
+ * Register actions from a specific API source into the result tree
48
+ */ const registerAPIsActions = (apis, source)=>{
49
+ _.forEach(apis, (api, apiName)=>{
50
+ const controllers = _.reduce(api.controllers, (acc, controller, controllerName)=>{
51
+ const contentApiActions = _.pickBy(controller, isContentApi);
52
+ if (_.isEmpty(contentApiActions)) {
53
+ return acc;
54
+ }
55
+ acc[controllerName] = Object.keys(contentApiActions);
56
+ return acc;
57
+ }, {});
58
+ if (!_.isEmpty(controllers)) {
59
+ actionMap[`${source}::${apiName}`] = {
60
+ controllers
61
+ };
62
+ }
63
+ });
64
+ };
65
+ registerAPIsActions(strapi1.apis, 'api');
66
+ registerAPIsActions(strapi1.plugins, 'plugin');
67
+ return actionMap;
68
+ };
69
+ /**
70
+ * Register all the content-API controllers actions into the action provider.
71
+ * This method make use of the {@link getActionsMap} to generate the list of actions to register.
72
+ */ const registerActions = async ()=>{
73
+ const actionsMap = getActionsMap();
74
+ // For each API
75
+ for (const [api, value] of Object.entries(actionsMap)){
76
+ const { controllers } = value;
77
+ // Register controllers methods as actions
78
+ for (const [controller, actions] of Object.entries(controllers)){
79
+ // Register each action individually
80
+ await Promise.all(actions.map((action)=>{
81
+ const actionUID = `${api}.${controller}.${action}`;
82
+ return providers.action.register(actionUID, {
83
+ api,
84
+ controller,
85
+ action,
86
+ uid: actionUID
87
+ });
88
+ }));
40
89
  }
41
- acc[controllerName] = Object.keys(contentApiActions);
42
- return acc;
43
- },
44
- {}
45
- );
46
- if (!___default.default.isEmpty(controllers)) {
47
- actionMap[`${source}::${apiName}`] = { controllers };
48
90
  }
49
- });
50
91
  };
51
- registerAPIsActions(strapi2.apis, "api");
52
- registerAPIsActions(strapi2.plugins, "plugin");
53
- return actionMap;
54
- };
55
- const registerActions = async () => {
56
- const actionsMap = getActionsMap();
57
- for (const [api, value] of Object.entries(actionsMap)) {
58
- const { controllers } = value;
59
- for (const [controller, actions] of Object.entries(controllers)) {
60
- await Promise.all(
61
- actions.map((action2) => {
62
- const actionUID = `${api}.${controller}.${action2}`;
63
- return providers.action.register(actionUID, {
64
- api,
65
- controller,
66
- action: action2,
67
- uid: actionUID
68
- });
69
- })
70
- );
71
- }
72
- }
73
- };
74
- const engine$1 = engine({ providers });
75
- engine$1.on(
76
- "before-format::validate.permission",
77
- createValidatePermissionHandler(providers.action)
78
- );
79
- return {
80
- engine: engine$1,
81
- providers,
82
- registerActions,
83
- getActionsMap
84
- };
85
- };
92
+ // Create an instance of a content-API permission engine
93
+ // and binds a custom validation handler to it
94
+ const engine$1 = engine({
95
+ providers
96
+ });
97
+ engine$1.on('before-format::validate.permission', createValidatePermissionHandler(providers.action));
98
+ return {
99
+ engine: engine$1,
100
+ providers,
101
+ registerActions,
102
+ getActionsMap
103
+ };
104
+ });
105
+
86
106
  module.exports = instantiatePermissionsUtilities;
87
107
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/services/content-api/permissions/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core } from '@strapi/types';\nimport { createActionProvider, createConditionProvider } from './providers';\nimport createPermissionEngine from './engine';\n\nconst typeSymbol = Symbol.for('__type__');\n\ninterface ValidatePermissionHandler {\n (params: { permission: { action: string } }): boolean;\n}\n\n/**\n * Creates a handler that checks if the permission's action exists in the action registry\n */\nconst createValidatePermissionHandler =\n (actionProvider: ReturnType<typeof createActionProvider>): ValidatePermissionHandler =>\n ({ permission }) => {\n const action = actionProvider.get(permission.action);\n\n // If the action isn't registered into the action provider, then ignore the permission and warn the user\n if (!action) {\n strapi.log.debug(\n `Unknown action \"${permission.action}\" supplied when registering a new permission`\n );\n\n return false;\n }\n\n return true;\n };\n\n/**\n * Create instances of providers and permission engine for the core content-API service.\n * Also, expose utilities to get information about available actions and such.\n */\nexport default (strapi: Core.Strapi) => {\n // NOTE: Here we define both an action and condition provider,\n // but at the moment, we're only using the action one.\n const providers = {\n action: createActionProvider(),\n condition: createConditionProvider(),\n };\n\n /**\n * Get a tree representation of the available Content API actions\n * based on the methods of the Content API controllers.\n *\n * @note Only actions bound to a content-API route are returned.\n */\n const getActionsMap = () => {\n const actionMap: Record<\n string,\n {\n controllers: Record<string, string[]>;\n }\n > = {};\n\n /**\n * Check if a controller's action is bound to the\n * content-api by looking at a potential __type__ symbol\n */\n const isContentApi = (action: Core.ControllerHandler & { [s: symbol]: any }) => {\n if (!_.has(action, typeSymbol)) {\n return false;\n }\n\n return action[typeSymbol].includes('content-api');\n };\n\n /**\n * Register actions from a specific API source into the result tree\n */\n const registerAPIsActions = (\n apis: Record<string, Core.Plugin | Core.Module>,\n source: 'api' | 'plugin'\n ) => {\n _.forEach(apis, (api, apiName) => {\n const controllers = _.reduce(\n api.controllers,\n (acc, controller, controllerName) => {\n const contentApiActions = _.pickBy(controller, isContentApi);\n\n if (_.isEmpty(contentApiActions)) {\n return acc;\n }\n\n acc[controllerName] = Object.keys(contentApiActions);\n\n return acc;\n },\n {} as Record<string, string[]>\n );\n\n if (!_.isEmpty(controllers)) {\n actionMap[`${source}::${apiName}`] = { controllers };\n }\n });\n };\n\n registerAPIsActions(strapi.apis, 'api');\n registerAPIsActions(strapi.plugins, 'plugin');\n\n return actionMap;\n };\n\n /**\n * Register all the content-API controllers actions into the action provider.\n * This method make use of the {@link getActionsMap} to generate the list of actions to register.\n */\n const registerActions = async () => {\n const actionsMap = getActionsMap();\n\n // For each API\n for (const [api, value] of Object.entries(actionsMap)) {\n const { controllers } = value;\n\n // Register controllers methods as actions\n for (const [controller, actions] of Object.entries(controllers)) {\n // Register each action individually\n await Promise.all(\n actions.map((action) => {\n const actionUID = `${api}.${controller}.${action}`;\n\n return providers.action.register(actionUID, {\n api,\n controller,\n action,\n uid: actionUID,\n });\n })\n );\n }\n }\n };\n\n // Create an instance of a content-API permission engine\n // and binds a custom validation handler to it\n const engine = createPermissionEngine({ providers });\n\n engine.on(\n 'before-format::validate.permission',\n createValidatePermissionHandler(providers.action)\n );\n\n return {\n engine,\n providers,\n registerActions,\n getActionsMap,\n };\n};\n"],"names":["action","strapi","createActionProvider","createConditionProvider","_","engine","createPermissionEngine"],"mappings":";;;;;;;AAKA,MAAM,aAAa,OAAO,IAAI,UAAU;AASxC,MAAM,kCACJ,CAAC,mBACD,CAAC,EAAE,iBAAiB;AAClB,QAAMA,UAAS,eAAe,IAAI,WAAW,MAAM;AAGnD,MAAI,CAACA,SAAQ;AACX,WAAO,IAAI;AAAA,MACT,mBAAmB,WAAW,MAAM;AAAA,IAAA;AAG/B,WAAA;AAAA,EACT;AAEO,SAAA;AACT;AAMF,MAAe,kCAAA,CAACC,YAAwB;AAGtC,QAAM,YAAY;AAAA,IAChB,QAAQC,OAAqB;AAAA,IAC7B,WAAWC,UAAwB;AAAA,EAAA;AASrC,QAAM,gBAAgB,MAAM;AAC1B,UAAM,YAKF,CAAA;AAME,UAAA,eAAe,CAACH,YAA0D;AAC9E,UAAI,CAACI,WAAAA,QAAE,IAAIJ,SAAQ,UAAU,GAAG;AACvB,eAAA;AAAA,MACT;AAEA,aAAOA,QAAO,UAAU,EAAE,SAAS,aAAa;AAAA,IAAA;AAM5C,UAAA,sBAAsB,CAC1B,MACA,WACG;AACHI,iBAAAA,QAAE,QAAQ,MAAM,CAAC,KAAK,YAAY;AAChC,cAAM,cAAcA,WAAAA,QAAE;AAAA,UACpB,IAAI;AAAA,UACJ,CAAC,KAAK,YAAY,mBAAmB;AACnC,kBAAM,oBAAoBA,WAAA,QAAE,OAAO,YAAY,YAAY;AAEvD,gBAAAA,WAAA,QAAE,QAAQ,iBAAiB,GAAG;AACzB,qBAAA;AAAA,YACT;AAEA,gBAAI,cAAc,IAAI,OAAO,KAAK,iBAAiB;AAE5C,mBAAA;AAAA,UACT;AAAA,UACA,CAAC;AAAA,QAAA;AAGH,YAAI,CAACA,WAAA,QAAE,QAAQ,WAAW,GAAG;AAC3B,oBAAU,GAAG,MAAM,KAAK,OAAO,EAAE,IAAI,EAAE;QACzC;AAAA,MAAA,CACD;AAAA,IAAA;AAGiBH,wBAAAA,QAAO,MAAM,KAAK;AAClBA,wBAAAA,QAAO,SAAS,QAAQ;AAErC,WAAA;AAAA,EAAA;AAOT,QAAM,kBAAkB,YAAY;AAClC,UAAM,aAAa;AAGnB,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,UAAU,GAAG;AAC/C,YAAA,EAAE,YAAgB,IAAA;AAGxB,iBAAW,CAAC,YAAY,OAAO,KAAK,OAAO,QAAQ,WAAW,GAAG;AAE/D,cAAM,QAAQ;AAAA,UACZ,QAAQ,IAAI,CAACD,YAAW;AACtB,kBAAM,YAAY,GAAG,GAAG,IAAI,UAAU,IAAIA,OAAM;AAEzC,mBAAA,UAAU,OAAO,SAAS,WAAW;AAAA,cAC1C;AAAA,cACA;AAAA,cACA,QAAAA;AAAA,cACA,KAAK;AAAA,YAAA,CACN;AAAA,UAAA,CACF;AAAA,QAAA;AAAA,MAEL;AAAA,IACF;AAAA,EAAA;AAKF,QAAMK,WAASC,OAAuB,EAAE,UAAW,CAAA;AAE5CD,WAAA;AAAA,IACL;AAAA,IACA,gCAAgC,UAAU,MAAM;AAAA,EAAA;AAG3C,SAAA;AAAA,IAAA,QACLA;AAAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/services/content-api/permissions/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { Core } from '@strapi/types';\nimport { createActionProvider, createConditionProvider } from './providers';\nimport createPermissionEngine from './engine';\n\nconst typeSymbol = Symbol.for('__type__');\n\ninterface ValidatePermissionHandler {\n (params: { permission: { action: string } }): boolean;\n}\n\n/**\n * Creates a handler that checks if the permission's action exists in the action registry\n */\nconst createValidatePermissionHandler =\n (actionProvider: ReturnType<typeof createActionProvider>): ValidatePermissionHandler =>\n ({ permission }) => {\n const action = actionProvider.get(permission.action);\n\n // If the action isn't registered into the action provider, then ignore the permission and warn the user\n if (!action) {\n strapi.log.debug(\n `Unknown action \"${permission.action}\" supplied when registering a new permission`\n );\n\n return false;\n }\n\n return true;\n };\n\n/**\n * Create instances of providers and permission engine for the core content-API service.\n * Also, expose utilities to get information about available actions and such.\n */\nexport default (strapi: Core.Strapi) => {\n // NOTE: Here we define both an action and condition provider,\n // but at the moment, we're only using the action one.\n const providers = {\n action: createActionProvider(),\n condition: createConditionProvider(),\n };\n\n /**\n * Get a tree representation of the available Content API actions\n * based on the methods of the Content API controllers.\n *\n * @note Only actions bound to a content-API route are returned.\n */\n const getActionsMap = () => {\n const actionMap: Record<\n string,\n {\n controllers: Record<string, string[]>;\n }\n > = {};\n\n /**\n * Check if a controller's action is bound to the\n * content-api by looking at a potential __type__ symbol\n */\n const isContentApi = (action: Core.ControllerHandler & { [s: symbol]: any }) => {\n if (!_.has(action, typeSymbol)) {\n return false;\n }\n\n return action[typeSymbol].includes('content-api');\n };\n\n /**\n * Register actions from a specific API source into the result tree\n */\n const registerAPIsActions = (\n apis: Record<string, Core.Plugin | Core.Module>,\n source: 'api' | 'plugin'\n ) => {\n _.forEach(apis, (api, apiName) => {\n const controllers = _.reduce(\n api.controllers,\n (acc, controller, controllerName) => {\n const contentApiActions = _.pickBy(controller, isContentApi);\n\n if (_.isEmpty(contentApiActions)) {\n return acc;\n }\n\n acc[controllerName] = Object.keys(contentApiActions);\n\n return acc;\n },\n {} as Record<string, string[]>\n );\n\n if (!_.isEmpty(controllers)) {\n actionMap[`${source}::${apiName}`] = { controllers };\n }\n });\n };\n\n registerAPIsActions(strapi.apis, 'api');\n registerAPIsActions(strapi.plugins, 'plugin');\n\n return actionMap;\n };\n\n /**\n * Register all the content-API controllers actions into the action provider.\n * This method make use of the {@link getActionsMap} to generate the list of actions to register.\n */\n const registerActions = async () => {\n const actionsMap = getActionsMap();\n\n // For each API\n for (const [api, value] of Object.entries(actionsMap)) {\n const { controllers } = value;\n\n // Register controllers methods as actions\n for (const [controller, actions] of Object.entries(controllers)) {\n // Register each action individually\n await Promise.all(\n actions.map((action) => {\n const actionUID = `${api}.${controller}.${action}`;\n\n return providers.action.register(actionUID, {\n api,\n controller,\n action,\n uid: actionUID,\n });\n })\n );\n }\n }\n };\n\n // Create an instance of a content-API permission engine\n // and binds a custom validation handler to it\n const engine = createPermissionEngine({ providers });\n\n engine.on(\n 'before-format::validate.permission',\n createValidatePermissionHandler(providers.action)\n );\n\n return {\n engine,\n providers,\n registerActions,\n getActionsMap,\n };\n};\n"],"names":["typeSymbol","Symbol","for","createValidatePermissionHandler","actionProvider","permission","action","get","strapi","log","debug","providers","createActionProvider","condition","createConditionProvider","getActionsMap","actionMap","isContentApi","_","has","includes","registerAPIsActions","apis","source","forEach","api","apiName","controllers","reduce","acc","controller","controllerName","contentApiActions","pickBy","isEmpty","Object","keys","plugins","registerActions","actionsMap","value","entries","actions","Promise","all","map","actionUID","register","uid","engine","createPermissionEngine","on"],"mappings":"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"}