@strapi/core 0.0.0-next.f09127d8df0234ad0b771b931b044b7c2e09c686 → 0.0.0-next.f09bff0783c6e3dfd3c34ed73b6f1a47de7b8d80

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 (686) hide show
  1. package/dist/configuration/index.d.ts.map +1 -1
  2. package/dist/index.js +10110 -27
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.mjs +10088 -29
  5. package/dist/index.mjs.map +1 -1
  6. package/dist/middlewares/body.d.ts.map +1 -1
  7. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +2 -2
  8. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  9. package/dist/migrations/draft-publish.d.ts +1 -1
  10. package/dist/migrations/draft-publish.d.ts.map +1 -1
  11. package/dist/services/document-service/components.d.ts.map +1 -1
  12. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  13. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  14. package/dist/services/document-service/events.d.ts +1 -1
  15. package/dist/services/document-service/events.d.ts.map +1 -1
  16. package/dist/services/document-service/repository.d.ts.map +1 -1
  17. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  18. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  19. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  20. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  21. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
  22. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  23. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  24. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  25. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +1 -1
  26. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  27. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  28. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  29. package/dist/services/document-service/utils/populate.d.ts +1 -1
  30. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  31. package/dist/services/document-service/utils/unidirectional-relations.d.ts +1 -1
  32. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
  33. package/dist/services/entity-validator/index.d.ts +1 -1
  34. package/dist/services/entity-validator/index.d.ts.map +1 -1
  35. package/dist/services/metrics/middleware.d.ts.map +1 -1
  36. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  37. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  38. package/package.json +25 -26
  39. package/dist/Strapi.js +0 -437
  40. package/dist/Strapi.js.map +0 -1
  41. package/dist/Strapi.mjs +0 -416
  42. package/dist/Strapi.mjs.map +0 -1
  43. package/dist/compile.js +0 -18
  44. package/dist/compile.js.map +0 -1
  45. package/dist/compile.mjs +0 -17
  46. package/dist/compile.mjs.map +0 -1
  47. package/dist/configuration/config-loader.js +0 -105
  48. package/dist/configuration/config-loader.js.map +0 -1
  49. package/dist/configuration/config-loader.mjs +0 -103
  50. package/dist/configuration/config-loader.mjs.map +0 -1
  51. package/dist/configuration/get-dirs.js +0 -31
  52. package/dist/configuration/get-dirs.js.map +0 -1
  53. package/dist/configuration/get-dirs.mjs +0 -31
  54. package/dist/configuration/get-dirs.mjs.map +0 -1
  55. package/dist/configuration/index.js +0 -85
  56. package/dist/configuration/index.js.map +0 -1
  57. package/dist/configuration/index.mjs +0 -80
  58. package/dist/configuration/index.mjs.map +0 -1
  59. package/dist/configuration/urls.js +0 -68
  60. package/dist/configuration/urls.js.map +0 -1
  61. package/dist/configuration/urls.mjs +0 -66
  62. package/dist/configuration/urls.mjs.map +0 -1
  63. package/dist/container.js +0 -30
  64. package/dist/container.js.map +0 -1
  65. package/dist/container.mjs +0 -30
  66. package/dist/container.mjs.map +0 -1
  67. package/dist/core-api/controller/collection-type.js +0 -84
  68. package/dist/core-api/controller/collection-type.js.map +0 -1
  69. package/dist/core-api/controller/collection-type.mjs +0 -84
  70. package/dist/core-api/controller/collection-type.mjs.map +0 -1
  71. package/dist/core-api/controller/index.js +0 -52
  72. package/dist/core-api/controller/index.js.map +0 -1
  73. package/dist/core-api/controller/index.mjs +0 -52
  74. package/dist/core-api/controller/index.mjs.map +0 -1
  75. package/dist/core-api/controller/single-type.js +0 -46
  76. package/dist/core-api/controller/single-type.js.map +0 -1
  77. package/dist/core-api/controller/single-type.mjs +0 -46
  78. package/dist/core-api/controller/single-type.mjs.map +0 -1
  79. package/dist/core-api/controller/transform.js +0 -76
  80. package/dist/core-api/controller/transform.js.map +0 -1
  81. package/dist/core-api/controller/transform.mjs +0 -76
  82. package/dist/core-api/controller/transform.mjs.map +0 -1
  83. package/dist/core-api/routes/index.js +0 -67
  84. package/dist/core-api/routes/index.js.map +0 -1
  85. package/dist/core-api/routes/index.mjs +0 -67
  86. package/dist/core-api/routes/index.mjs.map +0 -1
  87. package/dist/core-api/service/collection-type.js +0 -67
  88. package/dist/core-api/service/collection-type.js.map +0 -1
  89. package/dist/core-api/service/collection-type.mjs +0 -67
  90. package/dist/core-api/service/collection-type.mjs.map +0 -1
  91. package/dist/core-api/service/core-service.js +0 -12
  92. package/dist/core-api/service/core-service.js.map +0 -1
  93. package/dist/core-api/service/core-service.mjs +0 -12
  94. package/dist/core-api/service/core-service.mjs.map +0 -1
  95. package/dist/core-api/service/index.js +0 -16
  96. package/dist/core-api/service/index.js.map +0 -1
  97. package/dist/core-api/service/index.mjs +0 -16
  98. package/dist/core-api/service/index.mjs.map +0 -1
  99. package/dist/core-api/service/pagination.js +0 -52
  100. package/dist/core-api/service/pagination.js.map +0 -1
  101. package/dist/core-api/service/pagination.mjs +0 -52
  102. package/dist/core-api/service/pagination.mjs.map +0 -1
  103. package/dist/core-api/service/single-type.js +0 -45
  104. package/dist/core-api/service/single-type.js.map +0 -1
  105. package/dist/core-api/service/single-type.mjs +0 -45
  106. package/dist/core-api/service/single-type.mjs.map +0 -1
  107. package/dist/domain/content-type/index.js +0 -111
  108. package/dist/domain/content-type/index.js.map +0 -1
  109. package/dist/domain/content-type/index.mjs +0 -109
  110. package/dist/domain/content-type/index.mjs.map +0 -1
  111. package/dist/domain/content-type/validator.js +0 -77
  112. package/dist/domain/content-type/validator.js.map +0 -1
  113. package/dist/domain/content-type/validator.mjs +0 -75
  114. package/dist/domain/content-type/validator.mjs.map +0 -1
  115. package/dist/domain/module/index.js +0 -107
  116. package/dist/domain/module/index.js.map +0 -1
  117. package/dist/domain/module/index.mjs +0 -105
  118. package/dist/domain/module/index.mjs.map +0 -1
  119. package/dist/domain/module/validation.js +0 -25
  120. package/dist/domain/module/validation.js.map +0 -1
  121. package/dist/domain/module/validation.mjs +0 -25
  122. package/dist/domain/module/validation.mjs.map +0 -1
  123. package/dist/ee/index.js +0 -158
  124. package/dist/ee/index.js.map +0 -1
  125. package/dist/ee/index.mjs +0 -159
  126. package/dist/ee/index.mjs.map +0 -1
  127. package/dist/ee/license.js +0 -91
  128. package/dist/ee/license.js.map +0 -1
  129. package/dist/ee/license.mjs +0 -88
  130. package/dist/ee/license.mjs.map +0 -1
  131. package/dist/factories.js +0 -80
  132. package/dist/factories.js.map +0 -1
  133. package/dist/factories.mjs +0 -80
  134. package/dist/factories.mjs.map +0 -1
  135. package/dist/loaders/admin.js +0 -26
  136. package/dist/loaders/admin.js.map +0 -1
  137. package/dist/loaders/admin.mjs +0 -25
  138. package/dist/loaders/admin.mjs.map +0 -1
  139. package/dist/loaders/apis.js +0 -137
  140. package/dist/loaders/apis.js.map +0 -1
  141. package/dist/loaders/apis.mjs +0 -135
  142. package/dist/loaders/apis.mjs.map +0 -1
  143. package/dist/loaders/components.js +0 -38
  144. package/dist/loaders/components.js.map +0 -1
  145. package/dist/loaders/components.mjs +0 -37
  146. package/dist/loaders/components.mjs.map +0 -1
  147. package/dist/loaders/index.js +0 -24
  148. package/dist/loaders/index.js.map +0 -1
  149. package/dist/loaders/index.mjs +0 -24
  150. package/dist/loaders/index.mjs.map +0 -1
  151. package/dist/loaders/middlewares.js +0 -31
  152. package/dist/loaders/middlewares.js.map +0 -1
  153. package/dist/loaders/middlewares.mjs +0 -30
  154. package/dist/loaders/middlewares.mjs.map +0 -1
  155. package/dist/loaders/plugins/get-enabled-plugins.js +0 -141
  156. package/dist/loaders/plugins/get-enabled-plugins.js.map +0 -1
  157. package/dist/loaders/plugins/get-enabled-plugins.mjs +0 -117
  158. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +0 -1
  159. package/dist/loaders/plugins/get-user-plugins-config.js +0 -27
  160. package/dist/loaders/plugins/get-user-plugins-config.js.map +0 -1
  161. package/dist/loaders/plugins/get-user-plugins-config.mjs +0 -25
  162. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +0 -1
  163. package/dist/loaders/plugins/index.js +0 -144
  164. package/dist/loaders/plugins/index.js.map +0 -1
  165. package/dist/loaders/plugins/index.mjs +0 -125
  166. package/dist/loaders/plugins/index.mjs.map +0 -1
  167. package/dist/loaders/policies.js +0 -25
  168. package/dist/loaders/policies.js.map +0 -1
  169. package/dist/loaders/policies.mjs +0 -24
  170. package/dist/loaders/policies.mjs.map +0 -1
  171. package/dist/loaders/sanitizers.js +0 -6
  172. package/dist/loaders/sanitizers.js.map +0 -1
  173. package/dist/loaders/sanitizers.mjs +0 -7
  174. package/dist/loaders/sanitizers.mjs.map +0 -1
  175. package/dist/loaders/src-index.js +0 -33
  176. package/dist/loaders/src-index.js.map +0 -1
  177. package/dist/loaders/src-index.mjs +0 -34
  178. package/dist/loaders/src-index.mjs.map +0 -1
  179. package/dist/loaders/validators.js +0 -6
  180. package/dist/loaders/validators.js.map +0 -1
  181. package/dist/loaders/validators.mjs +0 -7
  182. package/dist/loaders/validators.mjs.map +0 -1
  183. package/dist/middlewares/body.js +0 -65
  184. package/dist/middlewares/body.js.map +0 -1
  185. package/dist/middlewares/body.mjs +0 -61
  186. package/dist/middlewares/body.mjs.map +0 -1
  187. package/dist/middlewares/compression.js +0 -8
  188. package/dist/middlewares/compression.js.map +0 -1
  189. package/dist/middlewares/compression.mjs +0 -6
  190. package/dist/middlewares/compression.mjs.map +0 -1
  191. package/dist/middlewares/cors.js +0 -53
  192. package/dist/middlewares/cors.js.map +0 -1
  193. package/dist/middlewares/cors.mjs +0 -51
  194. package/dist/middlewares/cors.mjs.map +0 -1
  195. package/dist/middlewares/errors.js +0 -33
  196. package/dist/middlewares/errors.js.map +0 -1
  197. package/dist/middlewares/errors.mjs +0 -33
  198. package/dist/middlewares/errors.mjs.map +0 -1
  199. package/dist/middlewares/favicon.js +0 -22
  200. package/dist/middlewares/favicon.js.map +0 -1
  201. package/dist/middlewares/favicon.mjs +0 -20
  202. package/dist/middlewares/favicon.mjs.map +0 -1
  203. package/dist/middlewares/index.js +0 -34
  204. package/dist/middlewares/index.js.map +0 -1
  205. package/dist/middlewares/index.mjs +0 -34
  206. package/dist/middlewares/index.mjs.map +0 -1
  207. package/dist/middlewares/ip.js +0 -8
  208. package/dist/middlewares/ip.js.map +0 -1
  209. package/dist/middlewares/ip.mjs +0 -6
  210. package/dist/middlewares/ip.mjs.map +0 -1
  211. package/dist/middlewares/logger.js +0 -12
  212. package/dist/middlewares/logger.js.map +0 -1
  213. package/dist/middlewares/logger.mjs +0 -12
  214. package/dist/middlewares/logger.mjs.map +0 -1
  215. package/dist/middlewares/powered-by.js +0 -14
  216. package/dist/middlewares/powered-by.js.map +0 -1
  217. package/dist/middlewares/powered-by.mjs +0 -14
  218. package/dist/middlewares/powered-by.mjs.map +0 -1
  219. package/dist/middlewares/public.js +0 -34
  220. package/dist/middlewares/public.js.map +0 -1
  221. package/dist/middlewares/public.mjs +0 -32
  222. package/dist/middlewares/public.mjs.map +0 -1
  223. package/dist/middlewares/query.js +0 -40
  224. package/dist/middlewares/query.js.map +0 -1
  225. package/dist/middlewares/query.mjs +0 -38
  226. package/dist/middlewares/query.mjs.map +0 -1
  227. package/dist/middlewares/response-time.js +0 -12
  228. package/dist/middlewares/response-time.js.map +0 -1
  229. package/dist/middlewares/response-time.mjs +0 -12
  230. package/dist/middlewares/response-time.mjs.map +0 -1
  231. package/dist/middlewares/responses.js +0 -15
  232. package/dist/middlewares/responses.js.map +0 -1
  233. package/dist/middlewares/responses.mjs +0 -15
  234. package/dist/middlewares/responses.mjs.map +0 -1
  235. package/dist/middlewares/security.js +0 -78
  236. package/dist/middlewares/security.js.map +0 -1
  237. package/dist/middlewares/security.mjs +0 -76
  238. package/dist/middlewares/security.mjs.map +0 -1
  239. package/dist/middlewares/session.js +0 -30
  240. package/dist/middlewares/session.js.map +0 -1
  241. package/dist/middlewares/session.mjs +0 -28
  242. package/dist/middlewares/session.mjs.map +0 -1
  243. package/dist/migrations/database/5.0.0-discard-drafts.js +0 -106
  244. package/dist/migrations/database/5.0.0-discard-drafts.js.map +0 -1
  245. package/dist/migrations/database/5.0.0-discard-drafts.mjs +0 -106
  246. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +0 -1
  247. package/dist/migrations/draft-publish.js +0 -42
  248. package/dist/migrations/draft-publish.js.map +0 -1
  249. package/dist/migrations/draft-publish.mjs +0 -42
  250. package/dist/migrations/draft-publish.mjs.map +0 -1
  251. package/dist/migrations/i18n.js +0 -54
  252. package/dist/migrations/i18n.js.map +0 -1
  253. package/dist/migrations/i18n.mjs +0 -54
  254. package/dist/migrations/i18n.mjs.map +0 -1
  255. package/dist/migrations/index.js +0 -15
  256. package/dist/migrations/index.js.map +0 -1
  257. package/dist/migrations/index.mjs +0 -15
  258. package/dist/migrations/index.mjs.map +0 -1
  259. package/dist/providers/admin.js +0 -20
  260. package/dist/providers/admin.js.map +0 -1
  261. package/dist/providers/admin.mjs +0 -21
  262. package/dist/providers/admin.mjs.map +0 -1
  263. package/dist/providers/coreStore.js +0 -11
  264. package/dist/providers/coreStore.js.map +0 -1
  265. package/dist/providers/coreStore.mjs +0 -12
  266. package/dist/providers/coreStore.mjs.map +0 -1
  267. package/dist/providers/cron.js +0 -20
  268. package/dist/providers/cron.js.map +0 -1
  269. package/dist/providers/cron.mjs +0 -21
  270. package/dist/providers/cron.mjs.map +0 -1
  271. package/dist/providers/index.js +0 -11
  272. package/dist/providers/index.js.map +0 -1
  273. package/dist/providers/index.mjs +0 -11
  274. package/dist/providers/index.mjs.map +0 -1
  275. package/dist/providers/provider.js +0 -5
  276. package/dist/providers/provider.js.map +0 -1
  277. package/dist/providers/provider.mjs +0 -5
  278. package/dist/providers/provider.mjs.map +0 -1
  279. package/dist/providers/registries.js +0 -35
  280. package/dist/providers/registries.js.map +0 -1
  281. package/dist/providers/registries.mjs +0 -36
  282. package/dist/providers/registries.mjs.map +0 -1
  283. package/dist/providers/telemetry.js +0 -19
  284. package/dist/providers/telemetry.js.map +0 -1
  285. package/dist/providers/telemetry.mjs +0 -20
  286. package/dist/providers/telemetry.mjs.map +0 -1
  287. package/dist/providers/webhooks.js +0 -30
  288. package/dist/providers/webhooks.js.map +0 -1
  289. package/dist/providers/webhooks.mjs +0 -31
  290. package/dist/providers/webhooks.mjs.map +0 -1
  291. package/dist/registries/apis.js +0 -23
  292. package/dist/registries/apis.js.map +0 -1
  293. package/dist/registries/apis.mjs +0 -24
  294. package/dist/registries/apis.mjs.map +0 -1
  295. package/dist/registries/components.js +0 -45
  296. package/dist/registries/components.js.map +0 -1
  297. package/dist/registries/components.mjs +0 -46
  298. package/dist/registries/components.mjs.map +0 -1
  299. package/dist/registries/content-types.js +0 -70
  300. package/dist/registries/content-types.js.map +0 -1
  301. package/dist/registries/content-types.mjs +0 -71
  302. package/dist/registries/content-types.mjs.map +0 -1
  303. package/dist/registries/controllers.js +0 -80
  304. package/dist/registries/controllers.js.map +0 -1
  305. package/dist/registries/controllers.mjs +0 -81
  306. package/dist/registries/controllers.mjs.map +0 -1
  307. package/dist/registries/custom-fields.js +0 -71
  308. package/dist/registries/custom-fields.js.map +0 -1
  309. package/dist/registries/custom-fields.mjs +0 -72
  310. package/dist/registries/custom-fields.mjs.map +0 -1
  311. package/dist/registries/hooks.js +0 -58
  312. package/dist/registries/hooks.js.map +0 -1
  313. package/dist/registries/hooks.mjs +0 -59
  314. package/dist/registries/hooks.mjs.map +0 -1
  315. package/dist/registries/middlewares.js +0 -60
  316. package/dist/registries/middlewares.js.map +0 -1
  317. package/dist/registries/middlewares.mjs +0 -61
  318. package/dist/registries/middlewares.mjs.map +0 -1
  319. package/dist/registries/models.js +0 -16
  320. package/dist/registries/models.js.map +0 -1
  321. package/dist/registries/models.mjs +0 -16
  322. package/dist/registries/models.mjs.map +0 -1
  323. package/dist/registries/modules.js +0 -39
  324. package/dist/registries/modules.js.map +0 -1
  325. package/dist/registries/modules.mjs +0 -40
  326. package/dist/registries/modules.mjs.map +0 -1
  327. package/dist/registries/namespace.js +0 -27
  328. package/dist/registries/namespace.js.map +0 -1
  329. package/dist/registries/namespace.mjs +0 -27
  330. package/dist/registries/namespace.mjs.map +0 -1
  331. package/dist/registries/plugins.js +0 -23
  332. package/dist/registries/plugins.js.map +0 -1
  333. package/dist/registries/plugins.mjs +0 -24
  334. package/dist/registries/plugins.mjs.map +0 -1
  335. package/dist/registries/policies.js +0 -108
  336. package/dist/registries/policies.js.map +0 -1
  337. package/dist/registries/policies.mjs +0 -109
  338. package/dist/registries/policies.mjs.map +0 -1
  339. package/dist/registries/sanitizers.js +0 -25
  340. package/dist/registries/sanitizers.js.map +0 -1
  341. package/dist/registries/sanitizers.mjs +0 -24
  342. package/dist/registries/sanitizers.mjs.map +0 -1
  343. package/dist/registries/services.js +0 -80
  344. package/dist/registries/services.js.map +0 -1
  345. package/dist/registries/services.mjs +0 -81
  346. package/dist/registries/services.mjs.map +0 -1
  347. package/dist/registries/validators.js +0 -25
  348. package/dist/registries/validators.js.map +0 -1
  349. package/dist/registries/validators.mjs +0 -24
  350. package/dist/registries/validators.mjs.map +0 -1
  351. package/dist/services/auth/index.js +0 -81
  352. package/dist/services/auth/index.js.map +0 -1
  353. package/dist/services/auth/index.mjs +0 -80
  354. package/dist/services/auth/index.mjs.map +0 -1
  355. package/dist/services/config.js +0 -47
  356. package/dist/services/config.js.map +0 -1
  357. package/dist/services/config.mjs +0 -47
  358. package/dist/services/config.mjs.map +0 -1
  359. package/dist/services/content-api/index.js +0 -85
  360. package/dist/services/content-api/index.js.map +0 -1
  361. package/dist/services/content-api/index.mjs +0 -84
  362. package/dist/services/content-api/index.mjs.map +0 -1
  363. package/dist/services/content-api/permissions/engine.js +0 -7
  364. package/dist/services/content-api/permissions/engine.js.map +0 -1
  365. package/dist/services/content-api/permissions/engine.mjs +0 -6
  366. package/dist/services/content-api/permissions/engine.mjs.map +0 -1
  367. package/dist/services/content-api/permissions/index.js +0 -87
  368. package/dist/services/content-api/permissions/index.js.map +0 -1
  369. package/dist/services/content-api/permissions/index.mjs +0 -86
  370. package/dist/services/content-api/permissions/index.mjs.map +0 -1
  371. package/dist/services/content-api/permissions/providers/action.js +0 -16
  372. package/dist/services/content-api/permissions/providers/action.js.map +0 -1
  373. package/dist/services/content-api/permissions/providers/action.mjs +0 -17
  374. package/dist/services/content-api/permissions/providers/action.mjs.map +0 -1
  375. package/dist/services/content-api/permissions/providers/condition.js +0 -16
  376. package/dist/services/content-api/permissions/providers/condition.js.map +0 -1
  377. package/dist/services/content-api/permissions/providers/condition.mjs +0 -17
  378. package/dist/services/content-api/permissions/providers/condition.mjs.map +0 -1
  379. package/dist/services/core-store.js +0 -107
  380. package/dist/services/core-store.js.map +0 -1
  381. package/dist/services/core-store.mjs +0 -107
  382. package/dist/services/core-store.mjs.map +0 -1
  383. package/dist/services/cron.js +0 -67
  384. package/dist/services/cron.js.map +0 -1
  385. package/dist/services/cron.mjs +0 -68
  386. package/dist/services/cron.mjs.map +0 -1
  387. package/dist/services/custom-fields.js +0 -10
  388. package/dist/services/custom-fields.js.map +0 -1
  389. package/dist/services/custom-fields.mjs +0 -11
  390. package/dist/services/custom-fields.mjs.map +0 -1
  391. package/dist/services/document-service/attributes/index.js +0 -22
  392. package/dist/services/document-service/attributes/index.js.map +0 -1
  393. package/dist/services/document-service/attributes/index.mjs +0 -22
  394. package/dist/services/document-service/attributes/index.mjs.map +0 -1
  395. package/dist/services/document-service/attributes/transforms.js +0 -20
  396. package/dist/services/document-service/attributes/transforms.js.map +0 -1
  397. package/dist/services/document-service/attributes/transforms.mjs +0 -19
  398. package/dist/services/document-service/attributes/transforms.mjs.map +0 -1
  399. package/dist/services/document-service/common.js +0 -7
  400. package/dist/services/document-service/common.js.map +0 -1
  401. package/dist/services/document-service/common.mjs +0 -7
  402. package/dist/services/document-service/common.mjs.map +0 -1
  403. package/dist/services/document-service/components.js +0 -288
  404. package/dist/services/document-service/components.js.map +0 -1
  405. package/dist/services/document-service/components.mjs +0 -286
  406. package/dist/services/document-service/components.mjs.map +0 -1
  407. package/dist/services/document-service/draft-and-publish.js +0 -69
  408. package/dist/services/document-service/draft-and-publish.js.map +0 -1
  409. package/dist/services/document-service/draft-and-publish.mjs +0 -69
  410. package/dist/services/document-service/draft-and-publish.mjs.map +0 -1
  411. package/dist/services/document-service/entries.js +0 -95
  412. package/dist/services/document-service/entries.js.map +0 -1
  413. package/dist/services/document-service/entries.mjs +0 -95
  414. package/dist/services/document-service/entries.mjs.map +0 -1
  415. package/dist/services/document-service/events.js +0 -47
  416. package/dist/services/document-service/events.js.map +0 -1
  417. package/dist/services/document-service/events.mjs +0 -47
  418. package/dist/services/document-service/events.mjs.map +0 -1
  419. package/dist/services/document-service/index.js +0 -36
  420. package/dist/services/document-service/index.js.map +0 -1
  421. package/dist/services/document-service/index.mjs +0 -36
  422. package/dist/services/document-service/index.mjs.map +0 -1
  423. package/dist/services/document-service/internationalization.js +0 -63
  424. package/dist/services/document-service/internationalization.js.map +0 -1
  425. package/dist/services/document-service/internationalization.mjs +0 -63
  426. package/dist/services/document-service/internationalization.mjs.map +0 -1
  427. package/dist/services/document-service/middlewares/errors.js +0 -25
  428. package/dist/services/document-service/middlewares/errors.js.map +0 -1
  429. package/dist/services/document-service/middlewares/errors.mjs +0 -25
  430. package/dist/services/document-service/middlewares/errors.mjs.map +0 -1
  431. package/dist/services/document-service/middlewares/middleware-manager.js +0 -49
  432. package/dist/services/document-service/middlewares/middleware-manager.js.map +0 -1
  433. package/dist/services/document-service/middlewares/middleware-manager.mjs +0 -49
  434. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +0 -1
  435. package/dist/services/document-service/params.js +0 -8
  436. package/dist/services/document-service/params.js.map +0 -1
  437. package/dist/services/document-service/params.mjs +0 -8
  438. package/dist/services/document-service/params.mjs.map +0 -1
  439. package/dist/services/document-service/repository.js +0 -332
  440. package/dist/services/document-service/repository.js.map +0 -1
  441. package/dist/services/document-service/repository.mjs +0 -332
  442. package/dist/services/document-service/repository.mjs.map +0 -1
  443. package/dist/services/document-service/transform/data.js +0 -15
  444. package/dist/services/document-service/transform/data.js.map +0 -1
  445. package/dist/services/document-service/transform/data.mjs +0 -15
  446. package/dist/services/document-service/transform/data.mjs.map +0 -1
  447. package/dist/services/document-service/transform/fields.js +0 -24
  448. package/dist/services/document-service/transform/fields.js.map +0 -1
  449. package/dist/services/document-service/transform/fields.mjs +0 -24
  450. package/dist/services/document-service/transform/fields.mjs.map +0 -1
  451. package/dist/services/document-service/transform/id-map.js +0 -85
  452. package/dist/services/document-service/transform/id-map.js.map +0 -1
  453. package/dist/services/document-service/transform/id-map.mjs +0 -85
  454. package/dist/services/document-service/transform/id-map.mjs.map +0 -1
  455. package/dist/services/document-service/transform/id-transform.js +0 -33
  456. package/dist/services/document-service/transform/id-transform.js.map +0 -1
  457. package/dist/services/document-service/transform/id-transform.mjs +0 -33
  458. package/dist/services/document-service/transform/id-transform.mjs.map +0 -1
  459. package/dist/services/document-service/transform/populate.js +0 -21
  460. package/dist/services/document-service/transform/populate.js.map +0 -1
  461. package/dist/services/document-service/transform/populate.mjs +0 -21
  462. package/dist/services/document-service/transform/populate.mjs.map +0 -1
  463. package/dist/services/document-service/transform/query.js +0 -9
  464. package/dist/services/document-service/transform/query.js.map +0 -1
  465. package/dist/services/document-service/transform/query.mjs +0 -9
  466. package/dist/services/document-service/transform/query.mjs.map +0 -1
  467. package/dist/services/document-service/transform/relations/extract/data-ids.js +0 -64
  468. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +0 -1
  469. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +0 -64
  470. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +0 -1
  471. package/dist/services/document-service/transform/relations/transform/data-ids.js +0 -85
  472. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +0 -1
  473. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +0 -85
  474. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +0 -1
  475. package/dist/services/document-service/transform/relations/transform/default-locale.js +0 -32
  476. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +0 -1
  477. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +0 -32
  478. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +0 -1
  479. package/dist/services/document-service/transform/relations/utils/dp.js +0 -30
  480. package/dist/services/document-service/transform/relations/utils/dp.js.map +0 -1
  481. package/dist/services/document-service/transform/relations/utils/dp.mjs +0 -30
  482. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +0 -1
  483. package/dist/services/document-service/transform/relations/utils/i18n.js +0 -25
  484. package/dist/services/document-service/transform/relations/utils/i18n.js.map +0 -1
  485. package/dist/services/document-service/transform/relations/utils/i18n.mjs +0 -25
  486. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +0 -1
  487. package/dist/services/document-service/transform/relations/utils/map-relation.js +0 -84
  488. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +0 -1
  489. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +0 -84
  490. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +0 -1
  491. package/dist/services/document-service/utils/populate.js +0 -47
  492. package/dist/services/document-service/utils/populate.js.map +0 -1
  493. package/dist/services/document-service/utils/populate.mjs +0 -47
  494. package/dist/services/document-service/utils/populate.mjs.map +0 -1
  495. package/dist/services/document-service/utils/unidirectional-relations.js +0 -68
  496. package/dist/services/document-service/utils/unidirectional-relations.js.map +0 -1
  497. package/dist/services/document-service/utils/unidirectional-relations.mjs +0 -68
  498. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +0 -1
  499. package/dist/services/entity-service/index.js +0 -169
  500. package/dist/services/entity-service/index.js.map +0 -1
  501. package/dist/services/entity-service/index.mjs +0 -167
  502. package/dist/services/entity-service/index.mjs.map +0 -1
  503. package/dist/services/entity-validator/blocks-validator.js +0 -128
  504. package/dist/services/entity-validator/blocks-validator.js.map +0 -1
  505. package/dist/services/entity-validator/blocks-validator.mjs +0 -128
  506. package/dist/services/entity-validator/blocks-validator.mjs.map +0 -1
  507. package/dist/services/entity-validator/index.js +0 -389
  508. package/dist/services/entity-validator/index.js.map +0 -1
  509. package/dist/services/entity-validator/index.mjs +0 -388
  510. package/dist/services/entity-validator/index.mjs.map +0 -1
  511. package/dist/services/entity-validator/validators.js +0 -241
  512. package/dist/services/entity-validator/validators.js.map +0 -1
  513. package/dist/services/entity-validator/validators.mjs +0 -239
  514. package/dist/services/entity-validator/validators.mjs.map +0 -1
  515. package/dist/services/errors.js +0 -76
  516. package/dist/services/errors.js.map +0 -1
  517. package/dist/services/errors.mjs +0 -74
  518. package/dist/services/errors.mjs.map +0 -1
  519. package/dist/services/event-hub.js +0 -72
  520. package/dist/services/event-hub.js.map +0 -1
  521. package/dist/services/event-hub.mjs +0 -73
  522. package/dist/services/event-hub.mjs.map +0 -1
  523. package/dist/services/features.js +0 -17
  524. package/dist/services/features.js.map +0 -1
  525. package/dist/services/features.mjs +0 -17
  526. package/dist/services/features.mjs.map +0 -1
  527. package/dist/services/fs.js +0 -51
  528. package/dist/services/fs.js.map +0 -1
  529. package/dist/services/fs.mjs +0 -49
  530. package/dist/services/fs.mjs.map +0 -1
  531. package/dist/services/metrics/admin-user-hash.js +0 -14
  532. package/dist/services/metrics/admin-user-hash.js.map +0 -1
  533. package/dist/services/metrics/admin-user-hash.mjs +0 -12
  534. package/dist/services/metrics/admin-user-hash.mjs.map +0 -1
  535. package/dist/services/metrics/index.js +0 -44
  536. package/dist/services/metrics/index.js.map +0 -1
  537. package/dist/services/metrics/index.mjs +0 -45
  538. package/dist/services/metrics/index.mjs.map +0 -1
  539. package/dist/services/metrics/is-truthy.js +0 -9
  540. package/dist/services/metrics/is-truthy.js.map +0 -1
  541. package/dist/services/metrics/is-truthy.mjs +0 -8
  542. package/dist/services/metrics/is-truthy.mjs.map +0 -1
  543. package/dist/services/metrics/middleware.js +0 -25
  544. package/dist/services/metrics/middleware.js.map +0 -1
  545. package/dist/services/metrics/middleware.mjs +0 -26
  546. package/dist/services/metrics/middleware.mjs.map +0 -1
  547. package/dist/services/metrics/rate-limiter.js +0 -21
  548. package/dist/services/metrics/rate-limiter.js.map +0 -1
  549. package/dist/services/metrics/rate-limiter.mjs +0 -22
  550. package/dist/services/metrics/rate-limiter.mjs.map +0 -1
  551. package/dist/services/metrics/sender.js +0 -76
  552. package/dist/services/metrics/sender.js.map +0 -1
  553. package/dist/services/metrics/sender.mjs +0 -70
  554. package/dist/services/metrics/sender.mjs.map +0 -1
  555. package/dist/services/query-params.js +0 -12
  556. package/dist/services/query-params.js.map +0 -1
  557. package/dist/services/query-params.mjs +0 -13
  558. package/dist/services/query-params.mjs.map +0 -1
  559. package/dist/services/reloader.js +0 -36
  560. package/dist/services/reloader.js.map +0 -1
  561. package/dist/services/reloader.mjs +0 -36
  562. package/dist/services/reloader.mjs.map +0 -1
  563. package/dist/services/request-context.js +0 -13
  564. package/dist/services/request-context.js.map +0 -1
  565. package/dist/services/request-context.mjs +0 -14
  566. package/dist/services/request-context.mjs.map +0 -1
  567. package/dist/services/server/admin-api.js +0 -13
  568. package/dist/services/server/admin-api.js.map +0 -1
  569. package/dist/services/server/admin-api.mjs +0 -13
  570. package/dist/services/server/admin-api.mjs.map +0 -1
  571. package/dist/services/server/api.js +0 -30
  572. package/dist/services/server/api.js.map +0 -1
  573. package/dist/services/server/api.mjs +0 -28
  574. package/dist/services/server/api.mjs.map +0 -1
  575. package/dist/services/server/compose-endpoint.js +0 -117
  576. package/dist/services/server/compose-endpoint.js.map +0 -1
  577. package/dist/services/server/compose-endpoint.mjs +0 -116
  578. package/dist/services/server/compose-endpoint.mjs.map +0 -1
  579. package/dist/services/server/content-api.js +0 -12
  580. package/dist/services/server/content-api.js.map +0 -1
  581. package/dist/services/server/content-api.mjs +0 -12
  582. package/dist/services/server/content-api.mjs.map +0 -1
  583. package/dist/services/server/http-server.js +0 -50
  584. package/dist/services/server/http-server.js.map +0 -1
  585. package/dist/services/server/http-server.mjs +0 -48
  586. package/dist/services/server/http-server.mjs.map +0 -1
  587. package/dist/services/server/index.js +0 -87
  588. package/dist/services/server/index.js.map +0 -1
  589. package/dist/services/server/index.mjs +0 -85
  590. package/dist/services/server/index.mjs.map +0 -1
  591. package/dist/services/server/koa.js +0 -52
  592. package/dist/services/server/koa.js.map +0 -1
  593. package/dist/services/server/koa.mjs +0 -48
  594. package/dist/services/server/koa.mjs.map +0 -1
  595. package/dist/services/server/middleware.js +0 -92
  596. package/dist/services/server/middleware.js.map +0 -1
  597. package/dist/services/server/middleware.mjs +0 -90
  598. package/dist/services/server/middleware.mjs.map +0 -1
  599. package/dist/services/server/policy.js +0 -20
  600. package/dist/services/server/policy.js.map +0 -1
  601. package/dist/services/server/policy.mjs +0 -20
  602. package/dist/services/server/policy.mjs.map +0 -1
  603. package/dist/services/server/register-middlewares.js +0 -72
  604. package/dist/services/server/register-middlewares.js.map +0 -1
  605. package/dist/services/server/register-middlewares.mjs +0 -73
  606. package/dist/services/server/register-middlewares.mjs.map +0 -1
  607. package/dist/services/server/register-routes.js +0 -76
  608. package/dist/services/server/register-routes.js.map +0 -1
  609. package/dist/services/server/register-routes.mjs +0 -75
  610. package/dist/services/server/register-routes.mjs.map +0 -1
  611. package/dist/services/server/routing.js +0 -91
  612. package/dist/services/server/routing.js.map +0 -1
  613. package/dist/services/server/routing.mjs +0 -89
  614. package/dist/services/server/routing.mjs.map +0 -1
  615. package/dist/services/utils/dynamic-zones.js +0 -17
  616. package/dist/services/utils/dynamic-zones.js.map +0 -1
  617. package/dist/services/utils/dynamic-zones.mjs +0 -18
  618. package/dist/services/utils/dynamic-zones.mjs.map +0 -1
  619. package/dist/services/webhook-runner.js +0 -133
  620. package/dist/services/webhook-runner.js.map +0 -1
  621. package/dist/services/webhook-runner.mjs +0 -131
  622. package/dist/services/webhook-runner.mjs.map +0 -1
  623. package/dist/services/webhook-store.js +0 -110
  624. package/dist/services/webhook-store.js.map +0 -1
  625. package/dist/services/webhook-store.mjs +0 -110
  626. package/dist/services/webhook-store.mjs.map +0 -1
  627. package/dist/services/worker-queue.js +0 -56
  628. package/dist/services/worker-queue.js.map +0 -1
  629. package/dist/services/worker-queue.mjs +0 -55
  630. package/dist/services/worker-queue.mjs.map +0 -1
  631. package/dist/utils/convert-custom-field-type.js +0 -24
  632. package/dist/utils/convert-custom-field-type.js.map +0 -1
  633. package/dist/utils/convert-custom-field-type.mjs +0 -24
  634. package/dist/utils/convert-custom-field-type.mjs.map +0 -1
  635. package/dist/utils/cron.js +0 -38
  636. package/dist/utils/cron.js.map +0 -1
  637. package/dist/utils/cron.mjs +0 -38
  638. package/dist/utils/cron.mjs.map +0 -1
  639. package/dist/utils/fetch.js +0 -21
  640. package/dist/utils/fetch.js.map +0 -1
  641. package/dist/utils/fetch.mjs +0 -21
  642. package/dist/utils/fetch.mjs.map +0 -1
  643. package/dist/utils/filepath-to-prop-path.js +0 -33
  644. package/dist/utils/filepath-to-prop-path.js.map +0 -1
  645. package/dist/utils/filepath-to-prop-path.mjs +0 -30
  646. package/dist/utils/filepath-to-prop-path.mjs.map +0 -1
  647. package/dist/utils/is-initialized.js +0 -16
  648. package/dist/utils/is-initialized.js.map +0 -1
  649. package/dist/utils/is-initialized.mjs +0 -16
  650. package/dist/utils/is-initialized.mjs.map +0 -1
  651. package/dist/utils/lifecycles.js +0 -9
  652. package/dist/utils/lifecycles.js.map +0 -1
  653. package/dist/utils/lifecycles.mjs +0 -9
  654. package/dist/utils/lifecycles.mjs.map +0 -1
  655. package/dist/utils/load-config-file.js +0 -45
  656. package/dist/utils/load-config-file.js.map +0 -1
  657. package/dist/utils/load-config-file.mjs +0 -42
  658. package/dist/utils/load-config-file.mjs.map +0 -1
  659. package/dist/utils/load-files.js +0 -38
  660. package/dist/utils/load-files.js.map +0 -1
  661. package/dist/utils/load-files.mjs +0 -34
  662. package/dist/utils/load-files.mjs.map +0 -1
  663. package/dist/utils/open-browser.js +0 -11
  664. package/dist/utils/open-browser.js.map +0 -1
  665. package/dist/utils/open-browser.mjs +0 -9
  666. package/dist/utils/open-browser.mjs.map +0 -1
  667. package/dist/utils/resolve-working-dirs.js +0 -13
  668. package/dist/utils/resolve-working-dirs.js.map +0 -1
  669. package/dist/utils/resolve-working-dirs.mjs +0 -11
  670. package/dist/utils/resolve-working-dirs.mjs.map +0 -1
  671. package/dist/utils/signals.js +0 -17
  672. package/dist/utils/signals.js.map +0 -1
  673. package/dist/utils/signals.mjs +0 -17
  674. package/dist/utils/signals.mjs.map +0 -1
  675. package/dist/utils/startup-logger.js +0 -86
  676. package/dist/utils/startup-logger.js.map +0 -1
  677. package/dist/utils/startup-logger.mjs +0 -82
  678. package/dist/utils/startup-logger.mjs.map +0 -1
  679. package/dist/utils/transform-content-types-to-models.js +0 -288
  680. package/dist/utils/transform-content-types-to-models.js.map +0 -1
  681. package/dist/utils/transform-content-types-to-models.mjs +0 -285
  682. package/dist/utils/transform-content-types-to-models.mjs.map +0 -1
  683. package/dist/utils/update-notifier/index.js +0 -85
  684. package/dist/utils/update-notifier/index.js.map +0 -1
  685. package/dist/utils/update-notifier/index.mjs +0 -78
  686. package/dist/utils/update-notifier/index.mjs.map +0 -1
@@ -1,80 +0,0 @@
1
- import assert from "assert/strict";
2
- import { has } from "lodash/fp";
3
- import { errors } from "@strapi/utils";
4
- const INVALID_STRATEGY_MSG = "Invalid auth strategy. Expecting an object with properties {name: string, authenticate: function, verify: function}";
5
- const validStrategy = (strategy) => {
6
- assert(has("authenticate", strategy), INVALID_STRATEGY_MSG);
7
- assert(typeof strategy.authenticate === "function", INVALID_STRATEGY_MSG);
8
- if (has("verify", strategy)) {
9
- assert(typeof strategy.verify === "function", INVALID_STRATEGY_MSG);
10
- }
11
- };
12
- const createAuthentication = () => {
13
- const strategies = {};
14
- return {
15
- register(type, strategy) {
16
- validStrategy(strategy);
17
- if (!strategies[type]) {
18
- strategies[type] = [];
19
- }
20
- strategies[type].push(strategy);
21
- return this;
22
- },
23
- async authenticate(ctx, next) {
24
- const route = ctx.state.route;
25
- const config = route?.config?.auth;
26
- if (config === false) {
27
- return next();
28
- }
29
- const routeStrategies = route.info.type ? strategies[route.info.type] : [];
30
- const configStrategies = config?.strategies ?? routeStrategies ?? [];
31
- const strategiesToUse = configStrategies.reduce(
32
- (acc, strategy) => {
33
- if (typeof strategy === "string") {
34
- const routeStrategy = routeStrategies.find((rs) => rs.name === strategy);
35
- if (routeStrategy) {
36
- acc.push(routeStrategy);
37
- }
38
- } else if (typeof strategy === "object") {
39
- validStrategy(strategy);
40
- acc.push(strategy);
41
- }
42
- return acc;
43
- },
44
- []
45
- );
46
- for (const strategy of strategiesToUse) {
47
- const result = await strategy.authenticate(ctx);
48
- const { authenticated = false, credentials, ability = null, error = null } = result || {};
49
- if (error !== null) {
50
- return ctx.unauthorized(error);
51
- }
52
- if (authenticated) {
53
- ctx.state.isAuthenticated = true;
54
- ctx.state.auth = {
55
- strategy,
56
- credentials,
57
- ability
58
- };
59
- return next();
60
- }
61
- }
62
- return ctx.unauthorized("Missing or invalid credentials");
63
- },
64
- async verify(auth, config = {}) {
65
- if (config === false) {
66
- return;
67
- }
68
- if (!auth) {
69
- throw new errors.UnauthorizedError();
70
- }
71
- if (typeof auth.strategy.verify === "function") {
72
- return auth.strategy.verify(auth, config);
73
- }
74
- }
75
- };
76
- };
77
- export {
78
- createAuthentication as default
79
- };
80
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/services/auth/index.ts"],"sourcesContent":["import assert from 'assert/strict';\nimport { has } from 'lodash/fp';\n\nimport { errors } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\nimport type { ParameterizedContext } from 'koa';\n\ninterface AuthenticationResponse {\n authenticated?: boolean;\n credentials?: unknown;\n ability?: unknown;\n error?: Error | null;\n}\n\ninterface AuthenticationInfo {\n strategy: Strategy;\n credentials: unknown;\n ability: unknown;\n}\n\ninterface Strategy {\n name: string;\n authenticate: (ctx: ParameterizedContext) => Promise<AuthenticationResponse>;\n verify?: (auth: AuthenticationInfo, config: Core.RouteConfig['auth']) => Promise<any>;\n}\n\ninterface Authentication {\n register: (type: string, strategy: Strategy) => Authentication;\n authenticate: Core.MiddlewareHandler;\n verify: (auth: AuthenticationInfo, config?: Core.RouteConfig['auth']) => Promise<any>;\n}\n\nconst INVALID_STRATEGY_MSG =\n 'Invalid auth strategy. Expecting an object with properties {name: string, authenticate: function, verify: function}';\n\nconst validStrategy = (strategy: Strategy) => {\n assert(has('authenticate', strategy), INVALID_STRATEGY_MSG);\n assert(typeof strategy.authenticate === 'function', INVALID_STRATEGY_MSG);\n\n if (has('verify', strategy)) {\n assert(typeof strategy.verify === 'function', INVALID_STRATEGY_MSG);\n }\n};\n\nconst createAuthentication = (): Authentication => {\n const strategies: Record<string, Strategy[]> = {};\n\n return {\n register(type, strategy) {\n validStrategy(strategy);\n\n if (!strategies[type]) {\n strategies[type] = [];\n }\n\n strategies[type].push(strategy);\n\n return this;\n },\n\n async authenticate(ctx, next) {\n const route: Core.Route = ctx.state.route;\n\n // use route strategy\n const config = route?.config?.auth;\n\n if (config === false) {\n return next();\n }\n\n const routeStrategies = route.info.type ? strategies[route.info.type] : [];\n const configStrategies = (config?.strategies ?? routeStrategies ?? []) as Array<\n string | Strategy\n >;\n\n const strategiesToUse: Strategy[] = configStrategies.reduce(\n (acc, strategy: string | Strategy) => {\n // Resolve by strategy name\n if (typeof strategy === 'string') {\n const routeStrategy = routeStrategies.find((rs) => rs.name === strategy);\n\n if (routeStrategy) {\n acc.push(routeStrategy);\n }\n }\n\n // Use the given strategy as is\n else if (typeof strategy === 'object') {\n validStrategy(strategy);\n\n acc.push(strategy);\n }\n\n return acc;\n },\n [] as Strategy[]\n );\n\n for (const strategy of strategiesToUse) {\n const result = await strategy.authenticate(ctx);\n\n const { authenticated = false, credentials, ability = null, error = null } = result || {};\n\n if (error !== null) {\n return ctx.unauthorized(error);\n }\n\n if (authenticated) {\n ctx.state.isAuthenticated = true;\n ctx.state.auth = {\n strategy,\n credentials,\n ability,\n };\n\n return next();\n }\n }\n\n return ctx.unauthorized('Missing or invalid credentials');\n },\n\n async verify(auth, config = {}) {\n if (config === false) {\n return;\n }\n\n if (!auth) {\n throw new errors.UnauthorizedError();\n }\n\n if (typeof auth.strategy.verify === 'function') {\n return auth.strategy.verify(auth, config);\n }\n },\n };\n};\n\nexport default createAuthentication;\n"],"names":[],"mappings":";;;AAgCA,MAAM,uBACJ;AAEF,MAAM,gBAAgB,CAAC,aAAuB;AAC5C,SAAO,IAAI,gBAAgB,QAAQ,GAAG,oBAAoB;AAC1D,SAAO,OAAO,SAAS,iBAAiB,YAAY,oBAAoB;AAEpE,MAAA,IAAI,UAAU,QAAQ,GAAG;AAC3B,WAAO,OAAO,SAAS,WAAW,YAAY,oBAAoB;AAAA,EAAA;AAEtE;AAEA,MAAM,uBAAuB,MAAsB;AACjD,QAAM,aAAyC,CAAC;AAEzC,SAAA;AAAA,IACL,SAAS,MAAM,UAAU;AACvB,oBAAc,QAAQ;AAElB,UAAA,CAAC,WAAW,IAAI,GAAG;AACV,mBAAA,IAAI,IAAI,CAAC;AAAA,MAAA;AAGX,iBAAA,IAAI,EAAE,KAAK,QAAQ;AAEvB,aAAA;AAAA,IACT;AAAA,IAEA,MAAM,aAAa,KAAK,MAAM;AACtB,YAAA,QAAoB,IAAI,MAAM;AAG9B,YAAA,SAAS,OAAO,QAAQ;AAE9B,UAAI,WAAW,OAAO;AACpB,eAAO,KAAK;AAAA,MAAA;AAGR,YAAA,kBAAkB,MAAM,KAAK,OAAO,WAAW,MAAM,KAAK,IAAI,IAAI,CAAC;AACzE,YAAM,mBAAoB,QAAQ,cAAc,mBAAmB,CAAC;AAIpE,YAAM,kBAA8B,iBAAiB;AAAA,QACnD,CAAC,KAAK,aAAgC;AAEhC,cAAA,OAAO,aAAa,UAAU;AAChC,kBAAM,gBAAgB,gBAAgB,KAAK,CAAC,OAAO,GAAG,SAAS,QAAQ;AAEvE,gBAAI,eAAe;AACjB,kBAAI,KAAK,aAAa;AAAA,YAAA;AAAA,UACxB,WAIO,OAAO,aAAa,UAAU;AACrC,0BAAc,QAAQ;AAEtB,gBAAI,KAAK,QAAQ;AAAA,UAAA;AAGZ,iBAAA;AAAA,QACT;AAAA,QACA,CAAA;AAAA,MACF;AAEA,iBAAW,YAAY,iBAAiB;AACtC,cAAM,SAAS,MAAM,SAAS,aAAa,GAAG;AAExC,cAAA,EAAE,gBAAgB,OAAO,aAAa,UAAU,MAAM,QAAQ,SAAS,UAAU,CAAC;AAExF,YAAI,UAAU,MAAM;AACX,iBAAA,IAAI,aAAa,KAAK;AAAA,QAAA;AAG/B,YAAI,eAAe;AACjB,cAAI,MAAM,kBAAkB;AAC5B,cAAI,MAAM,OAAO;AAAA,YACf;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAEA,iBAAO,KAAK;AAAA,QAAA;AAAA,MACd;AAGK,aAAA,IAAI,aAAa,gCAAgC;AAAA,IAC1D;AAAA,IAEA,MAAM,OAAO,MAAM,SAAS,IAAI;AAC9B,UAAI,WAAW,OAAO;AACpB;AAAA,MAAA;AAGF,UAAI,CAAC,MAAM;AACH,cAAA,IAAI,OAAO,kBAAkB;AAAA,MAAA;AAGrC,UAAI,OAAO,KAAK,SAAS,WAAW,YAAY;AAC9C,eAAO,KAAK,SAAS,OAAO,MAAM,MAAM;AAAA,MAAA;AAAA,IAC1C;AAAA,EAEJ;AACF;"}
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _ = require("lodash");
4
- const createConfigProvider = (initialConfig = {}, strapi) => {
5
- const state = {
6
- config: { ...initialConfig }
7
- // not deep clone because it would break some config
8
- };
9
- const transformPathString = (path) => {
10
- if (path.startsWith("plugin.")) {
11
- const newPath = path.replace("plugin.", "plugin::");
12
- (strapi?.log?.warn ?? console.warn)(
13
- `Using dot notation for model config namespaces is deprecated, for example "plugin::myplugin" should be used instead of "plugin.myplugin". Modifying requested path ${path} to ${newPath}`
14
- );
15
- return newPath;
16
- }
17
- return path;
18
- };
19
- const transformDeprecatedPaths = (path) => {
20
- if (_.isString(path)) {
21
- return transformPathString(path);
22
- }
23
- if (_.isArray(path)) {
24
- if (path.some((part) => !(_.isString(part) || _.isNumber(part)))) {
25
- return path;
26
- }
27
- return transformPathString(path.join("."));
28
- }
29
- return path;
30
- };
31
- return {
32
- ...state.config,
33
- // TODO: to remove
34
- get(path, defaultValue) {
35
- return _.get(state.config, transformDeprecatedPaths(path), defaultValue);
36
- },
37
- set(path, val) {
38
- _.set(state.config, transformDeprecatedPaths(path), val);
39
- return this;
40
- },
41
- has(path) {
42
- return _.has(state.config, transformDeprecatedPaths(path));
43
- }
44
- };
45
- };
46
- exports.createConfigProvider = createConfigProvider;
47
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sources":["../../src/services/config.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { get, set, has, isString, isNumber, isArray, type PropertyPath } from 'lodash';\n\ntype State = {\n config: Config;\n};\n\ntype Config = Record<string, unknown>;\n\nexport const createConfigProvider = (\n initialConfig: Record<string, unknown> = {},\n strapi?: Core.Strapi\n): Core.ConfigProvider => {\n const state: State = {\n config: { ...initialConfig }, // not deep clone because it would break some config\n };\n\n // Accessing model configs with dot (.) was deprecated between v4->v5, but to avoid a major breaking change\n // we will still support certain namespaces, currently only 'plugin.'\n const transformPathString = (path: string) => {\n if (path.startsWith('plugin.')) {\n const newPath = path.replace('plugin.', 'plugin::');\n\n // strapi logger may not be loaded yet, so fall back to console\n (strapi?.log?.warn ?? console.warn)(\n `Using dot notation for model config namespaces is deprecated, for example \"plugin::myplugin\" should be used instead of \"plugin.myplugin\". Modifying requested path ${path} to ${newPath}`\n );\n return newPath;\n }\n\n return path;\n };\n\n const transformDeprecatedPaths = (path: PropertyPath): PropertyPath => {\n if (isString(path)) {\n return transformPathString(path);\n }\n if (isArray(path)) {\n // if the path is not joinable, we won't apply our deprecation support\n if (path.some((part) => !(isString(part) || isNumber(part)))) {\n return path;\n }\n\n return transformPathString(path.join('.'));\n }\n\n return path;\n };\n\n return {\n ...state.config, // TODO: to remove\n get(path: PropertyPath, defaultValue?: unknown) {\n return get(state.config, transformDeprecatedPaths(path), defaultValue);\n },\n set(path: PropertyPath, val: unknown) {\n set(state.config, transformDeprecatedPaths(path), val);\n return this;\n },\n has(path: PropertyPath) {\n return has(state.config, transformDeprecatedPaths(path));\n },\n };\n};\n"],"names":["isString","isArray","isNumber","get","set","has"],"mappings":";;;AASO,MAAM,uBAAuB,CAClC,gBAAyC,IACzC,WACwB;AACxB,QAAM,QAAe;AAAA,IACnB,QAAQ,EAAE,GAAG,cAAc;AAAA;AAAA,EAC7B;AAIM,QAAA,sBAAsB,CAAC,SAAiB;AACxC,QAAA,KAAK,WAAW,SAAS,GAAG;AAC9B,YAAM,UAAU,KAAK,QAAQ,WAAW,UAAU;AAGjD,OAAA,QAAQ,KAAK,QAAQ,QAAQ;AAAA,QAC5B,sKAAsK,IAAI,OAAO,OAAO;AAAA,MAC1L;AACO,aAAA;AAAA,IAAA;AAGF,WAAA;AAAA,EACT;AAEM,QAAA,2BAA2B,CAAC,SAAqC;AACjE,QAAAA,EAAAA,SAAS,IAAI,GAAG;AAClB,aAAO,oBAAoB,IAAI;AAAA,IAAA;AAE7B,QAAAC,EAAAA,QAAQ,IAAI,GAAG;AAEb,UAAA,KAAK,KAAK,CAAC,SAAS,EAAED,EAAAA,SAAS,IAAI,KAAKE,EAAA,SAAS,IAAI,EAAE,GAAG;AACrD,eAAA;AAAA,MAAA;AAGT,aAAO,oBAAoB,KAAK,KAAK,GAAG,CAAC;AAAA,IAAA;AAGpC,WAAA;AAAA,EACT;AAEO,SAAA;AAAA,IACL,GAAG,MAAM;AAAA;AAAA,IACT,IAAI,MAAoB,cAAwB;AAC9C,aAAOC,EAAAA,IAAI,MAAM,QAAQ,yBAAyB,IAAI,GAAG,YAAY;AAAA,IACvE;AAAA,IACA,IAAI,MAAoB,KAAc;AACpCC,QAAA,IAAI,MAAM,QAAQ,yBAAyB,IAAI,GAAG,GAAG;AAC9C,aAAA;AAAA,IACT;AAAA,IACA,IAAI,MAAoB;AACtB,aAAOC,EAAI,IAAA,MAAM,QAAQ,yBAAyB,IAAI,CAAC;AAAA,IAAA;AAAA,EAE3D;AACF;;"}
@@ -1,47 +0,0 @@
1
- import { get, set, has, isString, isArray, isNumber } from "lodash";
2
- const createConfigProvider = (initialConfig = {}, strapi) => {
3
- const state = {
4
- config: { ...initialConfig }
5
- // not deep clone because it would break some config
6
- };
7
- const transformPathString = (path) => {
8
- if (path.startsWith("plugin.")) {
9
- const newPath = path.replace("plugin.", "plugin::");
10
- (strapi?.log?.warn ?? console.warn)(
11
- `Using dot notation for model config namespaces is deprecated, for example "plugin::myplugin" should be used instead of "plugin.myplugin". Modifying requested path ${path} to ${newPath}`
12
- );
13
- return newPath;
14
- }
15
- return path;
16
- };
17
- const transformDeprecatedPaths = (path) => {
18
- if (isString(path)) {
19
- return transformPathString(path);
20
- }
21
- if (isArray(path)) {
22
- if (path.some((part) => !(isString(part) || isNumber(part)))) {
23
- return path;
24
- }
25
- return transformPathString(path.join("."));
26
- }
27
- return path;
28
- };
29
- return {
30
- ...state.config,
31
- // TODO: to remove
32
- get(path, defaultValue) {
33
- return get(state.config, transformDeprecatedPaths(path), defaultValue);
34
- },
35
- set(path, val) {
36
- set(state.config, transformDeprecatedPaths(path), val);
37
- return this;
38
- },
39
- has(path) {
40
- return has(state.config, transformDeprecatedPaths(path));
41
- }
42
- };
43
- };
44
- export {
45
- createConfigProvider
46
- };
47
- //# sourceMappingURL=config.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.mjs","sources":["../../src/services/config.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { get, set, has, isString, isNumber, isArray, type PropertyPath } from 'lodash';\n\ntype State = {\n config: Config;\n};\n\ntype Config = Record<string, unknown>;\n\nexport const createConfigProvider = (\n initialConfig: Record<string, unknown> = {},\n strapi?: Core.Strapi\n): Core.ConfigProvider => {\n const state: State = {\n config: { ...initialConfig }, // not deep clone because it would break some config\n };\n\n // Accessing model configs with dot (.) was deprecated between v4->v5, but to avoid a major breaking change\n // we will still support certain namespaces, currently only 'plugin.'\n const transformPathString = (path: string) => {\n if (path.startsWith('plugin.')) {\n const newPath = path.replace('plugin.', 'plugin::');\n\n // strapi logger may not be loaded yet, so fall back to console\n (strapi?.log?.warn ?? console.warn)(\n `Using dot notation for model config namespaces is deprecated, for example \"plugin::myplugin\" should be used instead of \"plugin.myplugin\". Modifying requested path ${path} to ${newPath}`\n );\n return newPath;\n }\n\n return path;\n };\n\n const transformDeprecatedPaths = (path: PropertyPath): PropertyPath => {\n if (isString(path)) {\n return transformPathString(path);\n }\n if (isArray(path)) {\n // if the path is not joinable, we won't apply our deprecation support\n if (path.some((part) => !(isString(part) || isNumber(part)))) {\n return path;\n }\n\n return transformPathString(path.join('.'));\n }\n\n return path;\n };\n\n return {\n ...state.config, // TODO: to remove\n get(path: PropertyPath, defaultValue?: unknown) {\n return get(state.config, transformDeprecatedPaths(path), defaultValue);\n },\n set(path: PropertyPath, val: unknown) {\n set(state.config, transformDeprecatedPaths(path), val);\n return this;\n },\n has(path: PropertyPath) {\n return has(state.config, transformDeprecatedPaths(path));\n },\n };\n};\n"],"names":[],"mappings":";AASO,MAAM,uBAAuB,CAClC,gBAAyC,IACzC,WACwB;AACxB,QAAM,QAAe;AAAA,IACnB,QAAQ,EAAE,GAAG,cAAc;AAAA;AAAA,EAC7B;AAIM,QAAA,sBAAsB,CAAC,SAAiB;AACxC,QAAA,KAAK,WAAW,SAAS,GAAG;AAC9B,YAAM,UAAU,KAAK,QAAQ,WAAW,UAAU;AAGjD,OAAA,QAAQ,KAAK,QAAQ,QAAQ;AAAA,QAC5B,sKAAsK,IAAI,OAAO,OAAO;AAAA,MAC1L;AACO,aAAA;AAAA,IAAA;AAGF,WAAA;AAAA,EACT;AAEM,QAAA,2BAA2B,CAAC,SAAqC;AACjE,QAAA,SAAS,IAAI,GAAG;AAClB,aAAO,oBAAoB,IAAI;AAAA,IAAA;AAE7B,QAAA,QAAQ,IAAI,GAAG;AAEb,UAAA,KAAK,KAAK,CAAC,SAAS,EAAE,SAAS,IAAI,KAAK,SAAS,IAAI,EAAE,GAAG;AACrD,eAAA;AAAA,MAAA;AAGT,aAAO,oBAAoB,KAAK,KAAK,GAAG,CAAC;AAAA,IAAA;AAGpC,WAAA;AAAA,EACT;AAEO,SAAA;AAAA,IACL,GAAG,MAAM;AAAA;AAAA,IACT,IAAI,MAAoB,cAAwB;AAC9C,aAAO,IAAI,MAAM,QAAQ,yBAAyB,IAAI,GAAG,YAAY;AAAA,IACvE;AAAA,IACA,IAAI,MAAoB,KAAc;AACpC,UAAI,MAAM,QAAQ,yBAAyB,IAAI,GAAG,GAAG;AAC9C,aAAA;AAAA,IACT;AAAA,IACA,IAAI,MAAoB;AACtB,aAAO,IAAI,MAAM,QAAQ,yBAAyB,IAAI,CAAC;AAAA,IAAA;AAAA,EAE3D;AACF;"}
@@ -1,85 +0,0 @@
1
- "use strict";
2
- const _ = require("lodash");
3
- const strapiUtils = require("@strapi/utils");
4
- const index = require("./permissions/index.js");
5
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
6
- const ___default = /* @__PURE__ */ _interopDefault(_);
7
- const transformRoutePrefixFor = (pluginName) => (route) => {
8
- const prefix = route.config && route.config.prefix;
9
- const path = prefix !== void 0 ? `${prefix}${route.path}` : `/${pluginName}${route.path}`;
10
- return {
11
- ...route,
12
- path
13
- };
14
- };
15
- const filterContentAPI = (route) => route.info.type === "content-api";
16
- const createContentAPI = (strapi) => {
17
- const getRoutesMap = async () => {
18
- const routesMap = {};
19
- ___default.default.forEach(strapi.apis, (api, apiName) => {
20
- const routes = ___default.default.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
- ___default.default.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 = ___default.default.flatMap(plugin.routes, (route) => route.routes.map(transformPrefix)).filter(
41
- filterContentAPI
42
- );
43
- if (routes.length === 0) {
44
- return;
45
- }
46
- const apiPrefix = strapi.config.get("api.rest.prefix");
47
- routesMap[`plugin::${pluginName}`] = routes.map((route) => ({
48
- ...route,
49
- path: `${apiPrefix}${route.path}`
50
- }));
51
- });
52
- return routesMap;
53
- };
54
- const sanitizer = strapiUtils.sanitize.createAPISanitizers({
55
- getModel(uid) {
56
- return strapi.getModel(uid);
57
- },
58
- // NOTE: use lazy access to allow registration of sanitizers after the creation of the container
59
- get sanitizers() {
60
- return {
61
- input: strapi.sanitizers.get("content-api.input"),
62
- output: strapi.sanitizers.get("content-api.output")
63
- };
64
- }
65
- });
66
- const validator = strapiUtils.validate.createAPIValidators({
67
- getModel(uid) {
68
- return strapi.getModel(uid);
69
- },
70
- // NOTE: use lazy access to allow registration of validators after the creation of the container
71
- get validators() {
72
- return {
73
- input: strapi.validators.get("content-api.input")
74
- };
75
- }
76
- });
77
- return {
78
- permissions: index(strapi),
79
- getRoutesMap,
80
- sanitize: sanitizer,
81
- validate: validator
82
- };
83
- };
84
- module.exports = createContentAPI;
85
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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,EACF;AACF;AAEA,MAAM,mBAAmB,CAAC,UAAsB,MAAM,KAAK,SAAS;AAK9D,MAAA,mBAAmB,CAAC,WAAwB;AAChD,QAAM,eAAe,YAAY;AAC/B,UAAM,YAA0C,CAAC;AAEjDA,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,QAAA;AAGR,eAAA;AAAA,MAAA,CACR,EAAE,OAAO,gBAAgB;AAEtB,UAAA,OAAO,WAAW,GAAG;AACvB;AAAA,MAAA;AAGF,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,MAAA,EAC/B;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,MAAA;AAGnE,YAAM,SAASA,WAAA,QAAE,QAAQ,OAAO,QAAQ,CAAC,UAAU,MAAM,OAAO,IAAI,eAAe,CAAC,EAAE;AAAA,QACpF;AAAA,MACF;AAEI,UAAA,OAAO,WAAW,GAAG;AACvB;AAAA,MAAA;AAGF,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,MAAA,EAC/B;AAAA,IAAA,CACH;AAEM,WAAA;AAAA,EACT;AAEM,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,MACpD;AAAA,IAAA;AAAA,EACF,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,MAClD;AAAA,IAAA;AAAA,EACF,CACD;AAEM,SAAA;AAAA,IACL,aAAaC,MAAgC,MAAM;AAAA,IACnD;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AACF;;"}
@@ -1,84 +0,0 @@
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;
20
- }
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
- });
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
- }));
48
- });
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
83
- };
84
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
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,EACF;AACF;AAEA,MAAM,mBAAmB,CAAC,UAAsB,MAAM,KAAK,SAAS;AAK9D,MAAA,mBAAmB,CAAC,WAAwB;AAChD,QAAM,eAAe,YAAY;AAC/B,UAAM,YAA0C,CAAC;AAEjD,MAAE,QAAQ,OAAO,MAAM,CAAC,KAAK,YAAY;AACvC,YAAM,SAAS,EAAE,QAAQ,IAAI,QAAQ,CAAC,UAAU;AAC9C,YAAI,YAAY,OAAO;AACrB,iBAAO,MAAM;AAAA,QAAA;AAGR,eAAA;AAAA,MAAA,CACR,EAAE,OAAO,gBAAgB;AAEtB,UAAA,OAAO,WAAW,GAAG;AACvB;AAAA,MAAA;AAGF,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,MAAA,EAC/B;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,MAAA;AAGnE,YAAM,SAAS,EAAE,QAAQ,OAAO,QAAQ,CAAC,UAAU,MAAM,OAAO,IAAI,eAAe,CAAC,EAAE;AAAA,QACpF;AAAA,MACF;AAEI,UAAA,OAAO,WAAW,GAAG;AACvB;AAAA,MAAA;AAGF,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,MAAA,EAC/B;AAAA,IAAA,CACH;AAEM,WAAA;AAAA,EACT;AAEM,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,MACpD;AAAA,IAAA;AAAA,EACF,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,MAClD;AAAA,IAAA;AAAA,EACF,CACD;AAEM,SAAA;AAAA,IACL,aAAa,gCAAgC,MAAM;AAAA,IACnD;AAAA,IACA,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AACF;"}
@@ -1,7 +0,0 @@
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 });
6
- module.exports = createPermissionEngine;
7
- //# sourceMappingURL=engine.js.map
@@ -1 +0,0 @@
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,6 +0,0 @@
1
- import permissions from "@strapi/permissions";
2
- const createPermissionEngine = ({ providers }) => permissions.engine.new({ providers });
3
- export {
4
- createPermissionEngine as default
5
- };
6
- //# sourceMappingURL=engine.mjs.map
@@ -1 +0,0 @@
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,87 +0,0 @@
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");
31
- };
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;
40
- }
41
- acc[controllerName] = Object.keys(contentApiActions);
42
- return acc;
43
- },
44
- {}
45
- );
46
- if (!___default.default.isEmpty(controllers)) {
47
- actionMap[`${source}::${apiName}`] = { controllers };
48
- }
49
- });
50
- };
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
- };
86
- module.exports = instantiatePermissionsUtilities;
87
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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,IACtC;AAEO,WAAA;AAAA,EAAA;AAGF,SAAA;AACT;AAMF,MAAe,kCAAA,CAACC,YAAwB;AAGtC,QAAM,YAAY;AAAA,IAChB,QAAQC,OAAqB;AAAA,IAC7B,WAAWC,UAAwB;AAAA,EACrC;AAQA,QAAM,gBAAgB,MAAM;AAC1B,UAAM,YAKF,CAAC;AAMC,UAAA,eAAe,CAACH,YAA0D;AAC9E,UAAI,CAACI,WAAAA,QAAE,IAAIJ,SAAQ,UAAU,GAAG;AACvB,eAAA;AAAA,MAAA;AAGT,aAAOA,QAAO,UAAU,EAAE,SAAS,aAAa;AAAA,IAClD;AAKM,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,YAAA;AAGT,gBAAI,cAAc,IAAI,OAAO,KAAK,iBAAiB;AAE5C,mBAAA;AAAA,UACT;AAAA,UACA,CAAA;AAAA,QACF;AAEA,YAAI,CAACA,WAAA,QAAE,QAAQ,WAAW,GAAG;AAC3B,oBAAU,GAAG,MAAM,KAAK,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,QAAA;AAAA,MACrD,CACD;AAAA,IACH;AAEoBH,wBAAAA,QAAO,MAAM,KAAK;AAClBA,wBAAAA,QAAO,SAAS,QAAQ;AAErC,WAAA;AAAA,EACT;AAMA,QAAM,kBAAkB,YAAY;AAClC,UAAM,aAAa,cAAc;AAGjC,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,UAAU,GAAG;AAC/C,YAAA,EAAE,gBAAgB;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,UACF,CAAA;AAAA,QACH;AAAA,MAAA;AAAA,IACF;AAAA,EAEJ;AAIA,QAAMK,WAASC,OAAuB,EAAE,WAAW;AAE5CD,WAAA;AAAA,IACL;AAAA,IACA,gCAAgC,UAAU,MAAM;AAAA,EAClD;AAEO,SAAA;AAAA,IAAA,QACLA;AAAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;"}
@@ -1,86 +0,0 @@
1
- import _ from "lodash";
2
- import createActionProvider from "./providers/action.mjs";
3
- import createConditionProvider from "./providers/condition.mjs";
4
- import createPermissionEngine from "./engine.mjs";
5
- const typeSymbol = Symbol.for("__type__");
6
- const createValidatePermissionHandler = (actionProvider) => ({ permission }) => {
7
- const action = actionProvider.get(permission.action);
8
- if (!action) {
9
- strapi.log.debug(
10
- `Unknown action "${permission.action}" supplied when registering a new permission`
11
- );
12
- return false;
13
- }
14
- return true;
15
- };
16
- const instantiatePermissionsUtilities = (strapi2) => {
17
- const providers = {
18
- action: createActionProvider(),
19
- condition: createConditionProvider()
20
- };
21
- const getActionsMap = () => {
22
- const actionMap = {};
23
- const isContentApi = (action) => {
24
- if (!_.has(action, typeSymbol)) {
25
- return false;
26
- }
27
- return action[typeSymbol].includes("content-api");
28
- };
29
- const registerAPIsActions = (apis, source) => {
30
- _.forEach(apis, (api, apiName) => {
31
- const controllers = _.reduce(
32
- api.controllers,
33
- (acc, controller, controllerName) => {
34
- const contentApiActions = _.pickBy(controller, isContentApi);
35
- if (_.isEmpty(contentApiActions)) {
36
- return acc;
37
- }
38
- acc[controllerName] = Object.keys(contentApiActions);
39
- return acc;
40
- },
41
- {}
42
- );
43
- if (!_.isEmpty(controllers)) {
44
- actionMap[`${source}::${apiName}`] = { controllers };
45
- }
46
- });
47
- };
48
- registerAPIsActions(strapi2.apis, "api");
49
- registerAPIsActions(strapi2.plugins, "plugin");
50
- return actionMap;
51
- };
52
- const registerActions = async () => {
53
- const actionsMap = getActionsMap();
54
- for (const [api, value] of Object.entries(actionsMap)) {
55
- const { controllers } = value;
56
- for (const [controller, actions] of Object.entries(controllers)) {
57
- await Promise.all(
58
- actions.map((action) => {
59
- const actionUID = `${api}.${controller}.${action}`;
60
- return providers.action.register(actionUID, {
61
- api,
62
- controller,
63
- action,
64
- uid: actionUID
65
- });
66
- })
67
- );
68
- }
69
- }
70
- };
71
- const engine = createPermissionEngine({ providers });
72
- engine.on(
73
- "before-format::validate.permission",
74
- createValidatePermissionHandler(providers.action)
75
- );
76
- return {
77
- engine,
78
- providers,
79
- registerActions,
80
- getActionsMap
81
- };
82
- };
83
- export {
84
- instantiatePermissionsUtilities as default
85
- };
86
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","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":["strapi"],"mappings":";;;;AAKA,MAAM,aAAa,OAAO,IAAI,UAAU;AASxC,MAAM,kCACJ,CAAC,mBACD,CAAC,EAAE,iBAAiB;AAClB,QAAM,SAAS,eAAe,IAAI,WAAW,MAAM;AAGnD,MAAI,CAAC,QAAQ;AACX,WAAO,IAAI;AAAA,MACT,mBAAmB,WAAW,MAAM;AAAA,IACtC;AAEO,WAAA;AAAA,EAAA;AAGF,SAAA;AACT;AAMF,MAAe,kCAAA,CAACA,YAAwB;AAGtC,QAAM,YAAY;AAAA,IAChB,QAAQ,qBAAqB;AAAA,IAC7B,WAAW,wBAAwB;AAAA,EACrC;AAQA,QAAM,gBAAgB,MAAM;AAC1B,UAAM,YAKF,CAAC;AAMC,UAAA,eAAe,CAAC,WAA0D;AAC9E,UAAI,CAAC,EAAE,IAAI,QAAQ,UAAU,GAAG;AACvB,eAAA;AAAA,MAAA;AAGT,aAAO,OAAO,UAAU,EAAE,SAAS,aAAa;AAAA,IAClD;AAKM,UAAA,sBAAsB,CAC1B,MACA,WACG;AACH,QAAE,QAAQ,MAAM,CAAC,KAAK,YAAY;AAChC,cAAM,cAAc,EAAE;AAAA,UACpB,IAAI;AAAA,UACJ,CAAC,KAAK,YAAY,mBAAmB;AACnC,kBAAM,oBAAoB,EAAE,OAAO,YAAY,YAAY;AAEvD,gBAAA,EAAE,QAAQ,iBAAiB,GAAG;AACzB,qBAAA;AAAA,YAAA;AAGT,gBAAI,cAAc,IAAI,OAAO,KAAK,iBAAiB;AAE5C,mBAAA;AAAA,UACT;AAAA,UACA,CAAA;AAAA,QACF;AAEA,YAAI,CAAC,EAAE,QAAQ,WAAW,GAAG;AAC3B,oBAAU,GAAG,MAAM,KAAK,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,QAAA;AAAA,MACrD,CACD;AAAA,IACH;AAEoBA,wBAAAA,QAAO,MAAM,KAAK;AAClBA,wBAAAA,QAAO,SAAS,QAAQ;AAErC,WAAA;AAAA,EACT;AAMA,QAAM,kBAAkB,YAAY;AAClC,UAAM,aAAa,cAAc;AAGjC,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,UAAU,GAAG;AAC/C,YAAA,EAAE,gBAAgB;AAGxB,iBAAW,CAAC,YAAY,OAAO,KAAK,OAAO,QAAQ,WAAW,GAAG;AAE/D,cAAM,QAAQ;AAAA,UACZ,QAAQ,IAAI,CAAC,WAAW;AACtB,kBAAM,YAAY,GAAG,GAAG,IAAI,UAAU,IAAI,MAAM;AAEzC,mBAAA,UAAU,OAAO,SAAS,WAAW;AAAA,cAC1C;AAAA,cACA;AAAA,cACA;AAAA,cACA,KAAK;AAAA,YAAA,CACN;AAAA,UACF,CAAA;AAAA,QACH;AAAA,MAAA;AAAA,IACF;AAAA,EAEJ;AAIA,QAAM,SAAS,uBAAuB,EAAE,WAAW;AAE5C,SAAA;AAAA,IACL;AAAA,IACA,gCAAgC,UAAU,MAAM;AAAA,EAClD;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;"}
@@ -1,16 +0,0 @@
1
- "use strict";
2
- const strapiUtils = require("@strapi/utils");
3
- const createActionProvider = (options = {}) => {
4
- const provider = strapiUtils.providerFactory(options);
5
- return {
6
- ...provider,
7
- async register(action, payload) {
8
- if (strapi.isLoaded) {
9
- throw new Error(`You can't register new actions outside the bootstrap function.`);
10
- }
11
- return provider.register(action, payload);
12
- }
13
- };
14
- };
15
- module.exports = createActionProvider;
16
- //# sourceMappingURL=action.js.map