@strapi/core 0.0.0-experimental.25041a58cd2af628963c29620b4657416a4d772e → 0.0.0-experimental.25f7de53c1fc990bbb86d4aa43c379acfa838064

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

Potentially problematic release.


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

Files changed (727) 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 +1 -0
  19. package/dist/configuration/index.d.ts.map +1 -1
  20. package/dist/configuration/index.js +85 -75
  21. package/dist/configuration/index.js.map +1 -1
  22. package/dist/configuration/index.mjs +84 -71
  23. package/dist/configuration/index.mjs.map +1 -1
  24. package/dist/configuration/urls.d.ts.map +1 -1
  25. package/dist/configuration/urls.js +74 -61
  26. package/dist/configuration/urls.js.map +1 -1
  27. package/dist/configuration/urls.mjs +73 -62
  28. package/dist/configuration/urls.mjs.map +1 -1
  29. package/dist/container.js +27 -23
  30. package/dist/container.js.map +1 -1
  31. package/dist/container.mjs +26 -24
  32. package/dist/container.mjs.map +1 -1
  33. package/dist/core-api/controller/collection-type.js +77 -76
  34. package/dist/core-api/controller/collection-type.js.map +1 -1
  35. package/dist/core-api/controller/collection-type.mjs +76 -77
  36. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  37. package/dist/core-api/controller/index.js +63 -48
  38. package/dist/core-api/controller/index.js.map +1 -1
  39. package/dist/core-api/controller/index.mjs +62 -49
  40. package/dist/core-api/controller/index.mjs.map +1 -1
  41. package/dist/core-api/controller/single-type.js +41 -40
  42. package/dist/core-api/controller/single-type.js.map +1 -1
  43. package/dist/core-api/controller/single-type.mjs +40 -41
  44. package/dist/core-api/controller/single-type.mjs.map +1 -1
  45. package/dist/core-api/controller/transform.js +72 -63
  46. package/dist/core-api/controller/transform.js.map +1 -1
  47. package/dist/core-api/controller/transform.mjs +71 -64
  48. package/dist/core-api/controller/transform.mjs.map +1 -1
  49. package/dist/core-api/routes/index.d.ts +4 -22
  50. package/dist/core-api/routes/index.d.ts.map +1 -1
  51. package/dist/core-api/routes/index.js +174 -62
  52. package/dist/core-api/routes/index.js.map +1 -1
  53. package/dist/core-api/routes/index.mjs +172 -62
  54. package/dist/core-api/routes/index.mjs.map +1 -1
  55. package/dist/core-api/routes/validation/common.d.ts +135 -0
  56. package/dist/core-api/routes/validation/common.d.ts.map +1 -0
  57. package/dist/core-api/routes/validation/common.js +201 -0
  58. package/dist/core-api/routes/validation/common.js.map +1 -0
  59. package/dist/core-api/routes/validation/common.mjs +198 -0
  60. package/dist/core-api/routes/validation/common.mjs.map +1 -0
  61. package/dist/core-api/routes/validation/component.d.ts +42 -0
  62. package/dist/core-api/routes/validation/component.d.ts.map +1 -0
  63. package/dist/core-api/routes/validation/content-type.d.ts +139 -0
  64. package/dist/core-api/routes/validation/content-type.d.ts.map +1 -0
  65. package/dist/core-api/routes/validation/content-type.js +176 -0
  66. package/dist/core-api/routes/validation/content-type.js.map +1 -0
  67. package/dist/core-api/routes/validation/content-type.mjs +174 -0
  68. package/dist/core-api/routes/validation/content-type.mjs.map +1 -0
  69. package/dist/core-api/routes/validation/index.d.ts +4 -0
  70. package/dist/core-api/routes/validation/index.d.ts.map +1 -0
  71. package/dist/core-api/service/collection-type.js +73 -60
  72. package/dist/core-api/service/collection-type.js.map +1 -1
  73. package/dist/core-api/service/collection-type.mjs +72 -62
  74. package/dist/core-api/service/collection-type.mjs.map +1 -1
  75. package/dist/core-api/service/core-service.js +9 -8
  76. package/dist/core-api/service/core-service.js.map +1 -1
  77. package/dist/core-api/service/core-service.mjs +8 -9
  78. package/dist/core-api/service/core-service.mjs.map +1 -1
  79. package/dist/core-api/service/index.js +13 -13
  80. package/dist/core-api/service/index.js.map +1 -1
  81. package/dist/core-api/service/index.mjs +12 -14
  82. package/dist/core-api/service/index.mjs.map +1 -1
  83. package/dist/core-api/service/pagination.js +69 -43
  84. package/dist/core-api/service/pagination.js.map +1 -1
  85. package/dist/core-api/service/pagination.mjs +68 -47
  86. package/dist/core-api/service/pagination.mjs.map +1 -1
  87. package/dist/core-api/service/single-type.js +43 -39
  88. package/dist/core-api/service/single-type.js.map +1 -1
  89. package/dist/core-api/service/single-type.mjs +42 -41
  90. package/dist/core-api/service/single-type.mjs.map +1 -1
  91. package/dist/domain/content-type/index.js +95 -100
  92. package/dist/domain/content-type/index.js.map +1 -1
  93. package/dist/domain/content-type/index.mjs +94 -100
  94. package/dist/domain/content-type/index.mjs.map +1 -1
  95. package/dist/domain/content-type/validator.js +84 -69
  96. package/dist/domain/content-type/validator.js.map +1 -1
  97. package/dist/domain/content-type/validator.mjs +83 -68
  98. package/dist/domain/content-type/validator.mjs.map +1 -1
  99. package/dist/domain/module/index.d.ts.map +1 -1
  100. package/dist/domain/module/index.js +112 -100
  101. package/dist/domain/module/index.js.map +1 -1
  102. package/dist/domain/module/index.mjs +111 -99
  103. package/dist/domain/module/index.mjs.map +1 -1
  104. package/dist/domain/module/validation.js +25 -20
  105. package/dist/domain/module/validation.js.map +1 -1
  106. package/dist/domain/module/validation.mjs +24 -21
  107. package/dist/domain/module/validation.mjs.map +1 -1
  108. package/dist/ee/index.d.ts +1 -0
  109. package/dist/ee/index.d.ts.map +1 -1
  110. package/dist/ee/index.js +171 -137
  111. package/dist/ee/index.js.map +1 -1
  112. package/dist/ee/index.mjs +170 -139
  113. package/dist/ee/index.mjs.map +1 -1
  114. package/dist/ee/license.d.ts.map +1 -1
  115. package/dist/ee/license.js +100 -75
  116. package/dist/ee/license.js.map +1 -1
  117. package/dist/ee/license.mjs +99 -76
  118. package/dist/ee/license.mjs.map +1 -1
  119. package/dist/factories.d.ts +3 -1
  120. package/dist/factories.d.ts.map +1 -1
  121. package/dist/factories.js +80 -67
  122. package/dist/factories.js.map +1 -1
  123. package/dist/factories.mjs +77 -70
  124. package/dist/factories.mjs.map +1 -1
  125. package/dist/index.js +29 -26
  126. package/dist/index.js.map +1 -1
  127. package/dist/index.mjs +29 -29
  128. package/dist/index.mjs.map +1 -1
  129. package/dist/loaders/admin.d.ts.map +1 -1
  130. package/dist/loaders/admin.js +21 -20
  131. package/dist/loaders/admin.js.map +1 -1
  132. package/dist/loaders/admin.mjs +20 -20
  133. package/dist/loaders/admin.mjs.map +1 -1
  134. package/dist/loaders/apis.js +143 -120
  135. package/dist/loaders/apis.js.map +1 -1
  136. package/dist/loaders/apis.mjs +142 -119
  137. package/dist/loaders/apis.mjs.map +1 -1
  138. package/dist/loaders/components.js +33 -34
  139. package/dist/loaders/components.js.map +1 -1
  140. package/dist/loaders/components.mjs +32 -34
  141. package/dist/loaders/components.mjs.map +1 -1
  142. package/dist/loaders/index.js +22 -20
  143. package/dist/loaders/index.js.map +1 -1
  144. package/dist/loaders/index.mjs +21 -21
  145. package/dist/loaders/index.mjs.map +1 -1
  146. package/dist/loaders/middlewares.js +29 -25
  147. package/dist/loaders/middlewares.js.map +1 -1
  148. package/dist/loaders/middlewares.mjs +28 -25
  149. package/dist/loaders/middlewares.mjs.map +1 -1
  150. package/dist/loaders/plugins/get-enabled-plugins.js +126 -131
  151. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  152. package/dist/loaders/plugins/get-enabled-plugins.mjs +125 -108
  153. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  154. package/dist/loaders/plugins/get-user-plugins-config.js +25 -24
  155. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  156. package/dist/loaders/plugins/get-user-plugins-config.mjs +24 -23
  157. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  158. package/dist/loaders/plugins/index.js +132 -122
  159. package/dist/loaders/plugins/index.js.map +1 -1
  160. package/dist/loaders/plugins/index.mjs +121 -112
  161. package/dist/loaders/plugins/index.mjs.map +1 -1
  162. package/dist/loaders/policies.js +24 -20
  163. package/dist/loaders/policies.js.map +1 -1
  164. package/dist/loaders/policies.mjs +23 -20
  165. package/dist/loaders/policies.mjs.map +1 -1
  166. package/dist/loaders/sanitizers.js +10 -4
  167. package/dist/loaders/sanitizers.js.map +1 -1
  168. package/dist/loaders/sanitizers.mjs +9 -6
  169. package/dist/loaders/sanitizers.mjs.map +1 -1
  170. package/dist/loaders/src-index.js +35 -27
  171. package/dist/loaders/src-index.js.map +1 -1
  172. package/dist/loaders/src-index.mjs +34 -29
  173. package/dist/loaders/src-index.mjs.map +1 -1
  174. package/dist/loaders/validators.js +9 -4
  175. package/dist/loaders/validators.js.map +1 -1
  176. package/dist/loaders/validators.mjs +8 -6
  177. package/dist/loaders/validators.mjs.map +1 -1
  178. package/dist/middlewares/body.d.ts.map +1 -1
  179. package/dist/middlewares/body.js +58 -54
  180. package/dist/middlewares/body.js.map +1 -1
  181. package/dist/middlewares/body.mjs +57 -51
  182. package/dist/middlewares/body.mjs.map +1 -1
  183. package/dist/middlewares/compression.js +6 -6
  184. package/dist/middlewares/compression.js.map +1 -1
  185. package/dist/middlewares/compression.mjs +5 -5
  186. package/dist/middlewares/compression.mjs.map +1 -1
  187. package/dist/middlewares/cors.js +59 -48
  188. package/dist/middlewares/cors.js.map +1 -1
  189. package/dist/middlewares/cors.mjs +58 -47
  190. package/dist/middlewares/cors.mjs.map +1 -1
  191. package/dist/middlewares/errors.js +32 -30
  192. package/dist/middlewares/errors.js.map +1 -1
  193. package/dist/middlewares/errors.mjs +31 -31
  194. package/dist/middlewares/errors.mjs.map +1 -1
  195. package/dist/middlewares/favicon.js +27 -17
  196. package/dist/middlewares/favicon.js.map +1 -1
  197. package/dist/middlewares/favicon.mjs +26 -16
  198. package/dist/middlewares/favicon.mjs.map +1 -1
  199. package/dist/middlewares/index.js +32 -30
  200. package/dist/middlewares/index.js.map +1 -1
  201. package/dist/middlewares/index.mjs +31 -31
  202. package/dist/middlewares/index.mjs.map +1 -1
  203. package/dist/middlewares/ip.js +6 -6
  204. package/dist/middlewares/ip.js.map +1 -1
  205. package/dist/middlewares/ip.mjs +5 -5
  206. package/dist/middlewares/ip.mjs.map +1 -1
  207. package/dist/middlewares/logger.js +10 -9
  208. package/dist/middlewares/logger.js.map +1 -1
  209. package/dist/middlewares/logger.mjs +9 -10
  210. package/dist/middlewares/logger.mjs.map +1 -1
  211. package/dist/middlewares/powered-by.js +13 -9
  212. package/dist/middlewares/powered-by.js.map +1 -1
  213. package/dist/middlewares/powered-by.mjs +12 -10
  214. package/dist/middlewares/powered-by.mjs.map +1 -1
  215. package/dist/middlewares/public.js +33 -29
  216. package/dist/middlewares/public.js.map +1 -1
  217. package/dist/middlewares/public.mjs +32 -28
  218. package/dist/middlewares/public.mjs.map +1 -1
  219. package/dist/middlewares/query.js +35 -32
  220. package/dist/middlewares/query.js.map +1 -1
  221. package/dist/middlewares/query.mjs +34 -31
  222. package/dist/middlewares/query.mjs.map +1 -1
  223. package/dist/middlewares/response-time.js +10 -9
  224. package/dist/middlewares/response-time.js.map +1 -1
  225. package/dist/middlewares/response-time.mjs +9 -10
  226. package/dist/middlewares/response-time.mjs.map +1 -1
  227. package/dist/middlewares/responses.js +14 -12
  228. package/dist/middlewares/responses.js.map +1 -1
  229. package/dist/middlewares/responses.mjs +13 -13
  230. package/dist/middlewares/responses.mjs.map +1 -1
  231. package/dist/middlewares/security.js +109 -71
  232. package/dist/middlewares/security.js.map +1 -1
  233. package/dist/middlewares/security.mjs +108 -70
  234. package/dist/middlewares/security.mjs.map +1 -1
  235. package/dist/middlewares/session.js +26 -25
  236. package/dist/middlewares/session.js.map +1 -1
  237. package/dist/middlewares/session.mjs +25 -24
  238. package/dist/middlewares/session.mjs.map +1 -1
  239. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +2 -2
  240. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  241. package/dist/migrations/database/5.0.0-discard-drafts.js +152 -90
  242. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  243. package/dist/migrations/database/5.0.0-discard-drafts.mjs +151 -92
  244. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
  245. package/dist/migrations/draft-publish.d.ts +1 -1
  246. package/dist/migrations/draft-publish.d.ts.map +1 -1
  247. package/dist/migrations/draft-publish.js +61 -34
  248. package/dist/migrations/draft-publish.js.map +1 -1
  249. package/dist/migrations/draft-publish.mjs +60 -36
  250. package/dist/migrations/draft-publish.mjs.map +1 -1
  251. package/dist/migrations/i18n.js +62 -45
  252. package/dist/migrations/i18n.js.map +1 -1
  253. package/dist/migrations/i18n.mjs +61 -47
  254. package/dist/migrations/i18n.mjs.map +1 -1
  255. package/dist/migrations/index.js +24 -10
  256. package/dist/migrations/index.js.map +1 -1
  257. package/dist/migrations/index.mjs +23 -12
  258. package/dist/migrations/index.mjs.map +1 -1
  259. package/dist/package.json.js +183 -0
  260. package/dist/package.json.js.map +1 -0
  261. package/dist/package.json.mjs +160 -0
  262. package/dist/package.json.mjs.map +1 -0
  263. package/dist/providers/admin.js +27 -17
  264. package/dist/providers/admin.js.map +1 -1
  265. package/dist/providers/admin.mjs +26 -19
  266. package/dist/providers/admin.mjs.map +1 -1
  267. package/dist/providers/coreStore.js +13 -8
  268. package/dist/providers/coreStore.js.map +1 -1
  269. package/dist/providers/coreStore.mjs +12 -10
  270. package/dist/providers/coreStore.mjs.map +1 -1
  271. package/dist/providers/cron.js +19 -16
  272. package/dist/providers/cron.js.map +1 -1
  273. package/dist/providers/cron.mjs +18 -18
  274. package/dist/providers/cron.mjs.map +1 -1
  275. package/dist/providers/index.js +18 -9
  276. package/dist/providers/index.js.map +1 -1
  277. package/dist/providers/index.mjs +17 -10
  278. package/dist/providers/index.mjs.map +1 -1
  279. package/dist/providers/provider.js +4 -3
  280. package/dist/providers/provider.js.map +1 -1
  281. package/dist/providers/provider.mjs +3 -4
  282. package/dist/providers/provider.mjs.map +1 -1
  283. package/dist/providers/registries.js +37 -32
  284. package/dist/providers/registries.js.map +1 -1
  285. package/dist/providers/registries.mjs +36 -34
  286. package/dist/providers/registries.mjs.map +1 -1
  287. package/dist/providers/telemetry.js +19 -16
  288. package/dist/providers/telemetry.js.map +1 -1
  289. package/dist/providers/telemetry.mjs +18 -18
  290. package/dist/providers/telemetry.mjs.map +1 -1
  291. package/dist/providers/webhooks.js +28 -26
  292. package/dist/providers/webhooks.js.map +1 -1
  293. package/dist/providers/webhooks.mjs +27 -28
  294. package/dist/providers/webhooks.mjs.map +1 -1
  295. package/dist/registries/apis.js +23 -20
  296. package/dist/registries/apis.js.map +1 -1
  297. package/dist/registries/apis.mjs +22 -22
  298. package/dist/registries/apis.mjs.map +1 -1
  299. package/dist/registries/components.js +35 -37
  300. package/dist/registries/components.js.map +1 -1
  301. package/dist/registries/components.mjs +34 -39
  302. package/dist/registries/components.mjs.map +1 -1
  303. package/dist/registries/content-types.js +54 -59
  304. package/dist/registries/content-types.js.map +1 -1
  305. package/dist/registries/content-types.mjs +53 -61
  306. package/dist/registries/content-types.mjs.map +1 -1
  307. package/dist/registries/controllers.js +70 -71
  308. package/dist/registries/controllers.js.map +1 -1
  309. package/dist/registries/controllers.mjs +69 -73
  310. package/dist/registries/controllers.mjs.map +1 -1
  311. package/dist/registries/custom-fields.js +75 -65
  312. package/dist/registries/custom-fields.js.map +1 -1
  313. package/dist/registries/custom-fields.mjs +74 -67
  314. package/dist/registries/custom-fields.mjs.map +1 -1
  315. package/dist/registries/hooks.js +46 -49
  316. package/dist/registries/hooks.js.map +1 -1
  317. package/dist/registries/hooks.mjs +45 -51
  318. package/dist/registries/hooks.mjs.map +1 -1
  319. package/dist/registries/middlewares.js +49 -51
  320. package/dist/registries/middlewares.js.map +1 -1
  321. package/dist/registries/middlewares.mjs +48 -53
  322. package/dist/registries/middlewares.mjs.map +1 -1
  323. package/dist/registries/models.js +14 -13
  324. package/dist/registries/models.js.map +1 -1
  325. package/dist/registries/models.mjs +13 -14
  326. package/dist/registries/models.mjs.map +1 -1
  327. package/dist/registries/modules.js +39 -36
  328. package/dist/registries/modules.js.map +1 -1
  329. package/dist/registries/modules.mjs +38 -38
  330. package/dist/registries/modules.mjs.map +1 -1
  331. package/dist/registries/namespace.js +21 -20
  332. package/dist/registries/namespace.js.map +1 -1
  333. package/dist/registries/namespace.mjs +20 -23
  334. package/dist/registries/namespace.mjs.map +1 -1
  335. package/dist/registries/plugins.js +23 -20
  336. package/dist/registries/plugins.js.map +1 -1
  337. package/dist/registries/plugins.mjs +22 -22
  338. package/dist/registries/plugins.mjs.map +1 -1
  339. package/dist/registries/policies.js +103 -96
  340. package/dist/registries/policies.js.map +1 -1
  341. package/dist/registries/policies.mjs +102 -98
  342. package/dist/registries/policies.mjs.map +1 -1
  343. package/dist/registries/sanitizers.js +23 -22
  344. package/dist/registries/sanitizers.js.map +1 -1
  345. package/dist/registries/sanitizers.mjs +22 -22
  346. package/dist/registries/sanitizers.mjs.map +1 -1
  347. package/dist/registries/services.js +71 -71
  348. package/dist/registries/services.js.map +1 -1
  349. package/dist/registries/services.mjs +70 -73
  350. package/dist/registries/services.mjs.map +1 -1
  351. package/dist/registries/validators.js +23 -22
  352. package/dist/registries/validators.js.map +1 -1
  353. package/dist/registries/validators.mjs +22 -22
  354. package/dist/registries/validators.mjs.map +1 -1
  355. package/dist/services/auth/index.js +74 -74
  356. package/dist/services/auth/index.js.map +1 -1
  357. package/dist/services/auth/index.mjs +73 -74
  358. package/dist/services/auth/index.mjs.map +1 -1
  359. package/dist/services/config.js +47 -43
  360. package/dist/services/config.js.map +1 -1
  361. package/dist/services/config.mjs +46 -44
  362. package/dist/services/config.mjs.map +1 -1
  363. package/dist/services/content-api/index.js +80 -79
  364. package/dist/services/content-api/index.js.map +1 -1
  365. package/dist/services/content-api/index.mjs +79 -79
  366. package/dist/services/content-api/index.mjs.map +1 -1
  367. package/dist/services/content-api/permissions/engine.js +8 -5
  368. package/dist/services/content-api/permissions/engine.js.map +1 -1
  369. package/dist/services/content-api/permissions/engine.mjs +7 -5
  370. package/dist/services/content-api/permissions/engine.mjs.map +1 -1
  371. package/dist/services/content-api/permissions/index.js +101 -81
  372. package/dist/services/content-api/permissions/index.js.map +1 -1
  373. package/dist/services/content-api/permissions/index.mjs +100 -81
  374. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  375. package/dist/services/content-api/permissions/providers/action.js +17 -14
  376. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  377. package/dist/services/content-api/permissions/providers/action.mjs +16 -16
  378. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  379. package/dist/services/content-api/permissions/providers/condition.js +17 -14
  380. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  381. package/dist/services/content-api/permissions/providers/condition.mjs +16 -16
  382. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  383. package/dist/services/core-store.js +115 -95
  384. package/dist/services/core-store.js.map +1 -1
  385. package/dist/services/core-store.mjs +114 -97
  386. package/dist/services/core-store.mjs.map +1 -1
  387. package/dist/services/cron.js +74 -65
  388. package/dist/services/cron.js.map +1 -1
  389. package/dist/services/cron.mjs +73 -67
  390. package/dist/services/cron.mjs.map +1 -1
  391. package/dist/services/custom-fields.js +9 -7
  392. package/dist/services/custom-fields.js.map +1 -1
  393. package/dist/services/custom-fields.mjs +8 -9
  394. package/dist/services/custom-fields.mjs.map +1 -1
  395. package/dist/services/document-service/attributes/index.js +23 -18
  396. package/dist/services/document-service/attributes/index.js.map +1 -1
  397. package/dist/services/document-service/attributes/index.mjs +22 -19
  398. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  399. package/dist/services/document-service/attributes/transforms.js +16 -15
  400. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  401. package/dist/services/document-service/attributes/transforms.mjs +15 -15
  402. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  403. package/dist/services/document-service/common.js +5 -4
  404. package/dist/services/document-service/common.js.map +1 -1
  405. package/dist/services/document-service/common.mjs +4 -5
  406. package/dist/services/document-service/common.mjs.map +1 -1
  407. package/dist/services/document-service/components.d.ts.map +1 -1
  408. package/dist/services/document-service/components.js +255 -257
  409. package/dist/services/document-service/components.js.map +1 -1
  410. package/dist/services/document-service/components.mjs +254 -262
  411. package/dist/services/document-service/components.mjs.map +1 -1
  412. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  413. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  414. package/dist/services/document-service/draft-and-publish.js +88 -48
  415. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  416. package/dist/services/document-service/draft-and-publish.mjs +87 -54
  417. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  418. package/dist/services/document-service/entries.js +109 -91
  419. package/dist/services/document-service/entries.js.map +1 -1
  420. package/dist/services/document-service/entries.mjs +108 -92
  421. package/dist/services/document-service/entries.mjs.map +1 -1
  422. package/dist/services/document-service/events.d.ts +1 -1
  423. package/dist/services/document-service/events.d.ts.map +1 -1
  424. package/dist/services/document-service/events.js +52 -40
  425. package/dist/services/document-service/events.js.map +1 -1
  426. package/dist/services/document-service/events.mjs +51 -41
  427. package/dist/services/document-service/events.mjs.map +1 -1
  428. package/dist/services/document-service/index.js +53 -33
  429. package/dist/services/document-service/index.js.map +1 -1
  430. package/dist/services/document-service/index.mjs +52 -34
  431. package/dist/services/document-service/index.mjs.map +1 -1
  432. package/dist/services/document-service/internationalization.js +62 -46
  433. package/dist/services/document-service/internationalization.js.map +1 -1
  434. package/dist/services/document-service/internationalization.mjs +61 -50
  435. package/dist/services/document-service/internationalization.mjs.map +1 -1
  436. package/dist/services/document-service/middlewares/errors.js +23 -19
  437. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  438. package/dist/services/document-service/middlewares/errors.mjs +22 -20
  439. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  440. package/dist/services/document-service/middlewares/middleware-manager.js +46 -44
  441. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  442. package/dist/services/document-service/middlewares/middleware-manager.mjs +45 -45
  443. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  444. package/dist/services/document-service/params.js +11 -5
  445. package/dist/services/document-service/params.js.map +1 -1
  446. package/dist/services/document-service/params.mjs +10 -6
  447. package/dist/services/document-service/params.mjs.map +1 -1
  448. package/dist/services/document-service/repository.d.ts.map +1 -1
  449. package/dist/services/document-service/repository.js +354 -319
  450. package/dist/services/document-service/repository.js.map +1 -1
  451. package/dist/services/document-service/repository.mjs +353 -320
  452. package/dist/services/document-service/repository.mjs.map +1 -1
  453. package/dist/services/document-service/transform/data.js +22 -12
  454. package/dist/services/document-service/transform/data.js.map +1 -1
  455. package/dist/services/document-service/transform/data.mjs +21 -13
  456. package/dist/services/document-service/transform/data.mjs.map +1 -1
  457. package/dist/services/document-service/transform/fields.js +26 -17
  458. package/dist/services/document-service/transform/fields.js.map +1 -1
  459. package/dist/services/document-service/transform/fields.mjs +25 -18
  460. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  461. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  462. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  463. package/dist/services/document-service/transform/id-map.js +115 -77
  464. package/dist/services/document-service/transform/id-map.js.map +1 -1
  465. package/dist/services/document-service/transform/id-map.mjs +114 -78
  466. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  467. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  468. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  469. package/dist/services/document-service/transform/id-transform.js +37 -29
  470. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  471. package/dist/services/document-service/transform/id-transform.mjs +36 -30
  472. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  473. package/dist/services/document-service/transform/populate.js +23 -18
  474. package/dist/services/document-service/transform/populate.js.map +1 -1
  475. package/dist/services/document-service/transform/populate.mjs +22 -19
  476. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  477. package/dist/services/document-service/transform/query.js +11 -6
  478. package/dist/services/document-service/transform/query.js.map +1 -1
  479. package/dist/services/document-service/transform/query.mjs +10 -7
  480. package/dist/services/document-service/transform/query.mjs.map +1 -1
  481. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
  482. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  483. package/dist/services/document-service/transform/relations/extract/data-ids.js +70 -54
  484. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  485. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +69 -55
  486. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  487. package/dist/services/document-service/transform/relations/transform/data-ids.js +96 -72
  488. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  489. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +95 -73
  490. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  491. package/dist/services/document-service/transform/relations/transform/default-locale.js +47 -29
  492. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  493. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +46 -30
  494. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  495. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  496. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  497. package/dist/services/document-service/transform/relations/utils/dp.js +52 -26
  498. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  499. package/dist/services/document-service/transform/relations/utils/dp.mjs +51 -27
  500. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  501. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +1 -1
  502. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  503. package/dist/services/document-service/transform/relations/utils/i18n.js +20 -18
  504. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  505. package/dist/services/document-service/transform/relations/utils/i18n.mjs +19 -21
  506. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  507. package/dist/services/document-service/transform/relations/utils/map-relation.js +116 -73
  508. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  509. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +115 -75
  510. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  511. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  512. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  513. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  514. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  515. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  516. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  517. package/dist/services/document-service/utils/populate.d.ts +1 -1
  518. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  519. package/dist/services/document-service/utils/populate.js +66 -42
  520. package/dist/services/document-service/utils/populate.js.map +1 -1
  521. package/dist/services/document-service/utils/populate.mjs +65 -43
  522. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  523. package/dist/services/document-service/utils/unidirectional-relations.d.ts +1 -1
  524. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
  525. package/dist/services/document-service/utils/unidirectional-relations.js +109 -62
  526. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
  527. package/dist/services/document-service/utils/unidirectional-relations.mjs +108 -64
  528. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
  529. package/dist/services/entity-service/index.js +230 -161
  530. package/dist/services/entity-service/index.js.map +1 -1
  531. package/dist/services/entity-service/index.mjs +229 -160
  532. package/dist/services/entity-service/index.mjs.map +1 -1
  533. package/dist/services/entity-validator/blocks-validator.js +135 -103
  534. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  535. package/dist/services/entity-validator/blocks-validator.mjs +134 -104
  536. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  537. package/dist/services/entity-validator/index.d.ts +1 -1
  538. package/dist/services/entity-validator/index.d.ts.map +1 -1
  539. package/dist/services/entity-validator/index.js +362 -367
  540. package/dist/services/entity-validator/index.js.map +1 -1
  541. package/dist/services/entity-validator/index.mjs +358 -364
  542. package/dist/services/entity-validator/index.mjs.map +1 -1
  543. package/dist/services/entity-validator/validators.js +268 -210
  544. package/dist/services/entity-validator/validators.js.map +1 -1
  545. package/dist/services/entity-validator/validators.mjs +267 -216
  546. package/dist/services/entity-validator/validators.mjs.map +1 -1
  547. package/dist/services/errors.js +65 -65
  548. package/dist/services/errors.js.map +1 -1
  549. package/dist/services/errors.mjs +64 -66
  550. package/dist/services/errors.mjs.map +1 -1
  551. package/dist/services/event-hub.js +82 -69
  552. package/dist/services/event-hub.js.map +1 -1
  553. package/dist/services/event-hub.mjs +81 -71
  554. package/dist/services/event-hub.mjs.map +1 -1
  555. package/dist/services/features.js +19 -14
  556. package/dist/services/features.js.map +1 -1
  557. package/dist/services/features.mjs +18 -15
  558. package/dist/services/features.mjs.map +1 -1
  559. package/dist/services/fs.js +41 -40
  560. package/dist/services/fs.js.map +1 -1
  561. package/dist/services/fs.mjs +40 -39
  562. package/dist/services/fs.mjs.map +1 -1
  563. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  564. package/dist/services/metrics/admin-user-hash.js +13 -11
  565. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  566. package/dist/services/metrics/admin-user-hash.mjs +12 -10
  567. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  568. package/dist/services/metrics/index.js +46 -40
  569. package/dist/services/metrics/index.js.map +1 -1
  570. package/dist/services/metrics/index.mjs +45 -42
  571. package/dist/services/metrics/index.mjs.map +1 -1
  572. package/dist/services/metrics/is-truthy.js +13 -6
  573. package/dist/services/metrics/is-truthy.js.map +1 -1
  574. package/dist/services/metrics/is-truthy.mjs +12 -6
  575. package/dist/services/metrics/is-truthy.mjs.map +1 -1
  576. package/dist/services/metrics/middleware.d.ts.map +1 -1
  577. package/dist/services/metrics/middleware.js +37 -22
  578. package/dist/services/metrics/middleware.js.map +1 -1
  579. package/dist/services/metrics/middleware.mjs +36 -24
  580. package/dist/services/metrics/middleware.mjs.map +1 -1
  581. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  582. package/dist/services/metrics/rate-limiter.js +24 -19
  583. package/dist/services/metrics/rate-limiter.js.map +1 -1
  584. package/dist/services/metrics/rate-limiter.mjs +23 -21
  585. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  586. package/dist/services/metrics/sender.d.ts.map +1 -1
  587. package/dist/services/metrics/sender.js +78 -69
  588. package/dist/services/metrics/sender.js.map +1 -1
  589. package/dist/services/metrics/sender.mjs +77 -64
  590. package/dist/services/metrics/sender.mjs.map +1 -1
  591. package/dist/services/query-params.js +13 -10
  592. package/dist/services/query-params.js.map +1 -1
  593. package/dist/services/query-params.mjs +12 -12
  594. package/dist/services/query-params.mjs.map +1 -1
  595. package/dist/services/reloader.js +35 -32
  596. package/dist/services/reloader.js.map +1 -1
  597. package/dist/services/reloader.mjs +34 -33
  598. package/dist/services/reloader.mjs.map +1 -1
  599. package/dist/services/request-context.js +11 -8
  600. package/dist/services/request-context.js.map +1 -1
  601. package/dist/services/request-context.mjs +10 -10
  602. package/dist/services/request-context.mjs.map +1 -1
  603. package/dist/services/server/admin-api.js +11 -10
  604. package/dist/services/server/admin-api.js.map +1 -1
  605. package/dist/services/server/admin-api.mjs +10 -11
  606. package/dist/services/server/admin-api.mjs.map +1 -1
  607. package/dist/services/server/api.js +33 -27
  608. package/dist/services/server/api.js.map +1 -1
  609. package/dist/services/server/api.mjs +32 -26
  610. package/dist/services/server/api.mjs.map +1 -1
  611. package/dist/services/server/compose-endpoint.js +116 -105
  612. package/dist/services/server/compose-endpoint.js.map +1 -1
  613. package/dist/services/server/compose-endpoint.mjs +115 -105
  614. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  615. package/dist/services/server/content-api.js +11 -9
  616. package/dist/services/server/content-api.js.map +1 -1
  617. package/dist/services/server/content-api.mjs +10 -10
  618. package/dist/services/server/content-api.mjs.map +1 -1
  619. package/dist/services/server/http-server.js +48 -44
  620. package/dist/services/server/http-server.js.map +1 -1
  621. package/dist/services/server/http-server.mjs +47 -43
  622. package/dist/services/server/http-server.mjs.map +1 -1
  623. package/dist/services/server/index.js +85 -82
  624. package/dist/services/server/index.js.map +1 -1
  625. package/dist/services/server/index.mjs +84 -81
  626. package/dist/services/server/index.mjs.map +1 -1
  627. package/dist/services/server/koa.js +49 -47
  628. package/dist/services/server/koa.js.map +1 -1
  629. package/dist/services/server/koa.mjs +48 -44
  630. package/dist/services/server/koa.mjs.map +1 -1
  631. package/dist/services/server/middleware.js +86 -82
  632. package/dist/services/server/middleware.js.map +1 -1
  633. package/dist/services/server/middleware.mjs +85 -82
  634. package/dist/services/server/middleware.mjs.map +1 -1
  635. package/dist/services/server/policy.js +24 -17
  636. package/dist/services/server/policy.js.map +1 -1
  637. package/dist/services/server/policy.mjs +23 -18
  638. package/dist/services/server/policy.mjs.map +1 -1
  639. package/dist/services/server/register-middlewares.js +68 -61
  640. package/dist/services/server/register-middlewares.js.map +1 -1
  641. package/dist/services/server/register-middlewares.mjs +67 -63
  642. package/dist/services/server/register-middlewares.mjs.map +1 -1
  643. package/dist/services/server/register-routes.js +109 -66
  644. package/dist/services/server/register-routes.js.map +1 -1
  645. package/dist/services/server/register-routes.mjs +108 -66
  646. package/dist/services/server/register-routes.mjs.map +1 -1
  647. package/dist/services/server/routing.d.ts +10 -0
  648. package/dist/services/server/routing.d.ts.map +1 -1
  649. package/dist/services/server/routing.js +100 -81
  650. package/dist/services/server/routing.js.map +1 -1
  651. package/dist/services/server/routing.mjs +99 -81
  652. package/dist/services/server/routing.mjs.map +1 -1
  653. package/dist/services/utils/dynamic-zones.js +13 -14
  654. package/dist/services/utils/dynamic-zones.js.map +1 -1
  655. package/dist/services/utils/dynamic-zones.mjs +12 -16
  656. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  657. package/dist/services/webhook-runner.js +124 -122
  658. package/dist/services/webhook-runner.js.map +1 -1
  659. package/dist/services/webhook-runner.mjs +123 -121
  660. package/dist/services/webhook-runner.mjs.map +1 -1
  661. package/dist/services/webhook-store.js +132 -99
  662. package/dist/services/webhook-store.js.map +1 -1
  663. package/dist/services/webhook-store.mjs +131 -101
  664. package/dist/services/webhook-store.mjs.map +1 -1
  665. package/dist/services/worker-queue.js +44 -49
  666. package/dist/services/worker-queue.js.map +1 -1
  667. package/dist/services/worker-queue.mjs +43 -49
  668. package/dist/services/worker-queue.mjs.map +1 -1
  669. package/dist/utils/convert-custom-field-type.js +17 -20
  670. package/dist/utils/convert-custom-field-type.js.map +1 -1
  671. package/dist/utils/convert-custom-field-type.mjs +16 -21
  672. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  673. package/dist/utils/cron.js +64 -30
  674. package/dist/utils/cron.js.map +1 -1
  675. package/dist/utils/cron.mjs +63 -31
  676. package/dist/utils/cron.mjs.map +1 -1
  677. package/dist/utils/fetch.js +24 -18
  678. package/dist/utils/fetch.js.map +1 -1
  679. package/dist/utils/fetch.mjs +23 -19
  680. package/dist/utils/fetch.mjs.map +1 -1
  681. package/dist/utils/filepath-to-prop-path.js +20 -28
  682. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  683. package/dist/utils/filepath-to-prop-path.mjs +19 -26
  684. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  685. package/dist/utils/is-initialized.js +21 -12
  686. package/dist/utils/is-initialized.js.map +1 -1
  687. package/dist/utils/is-initialized.mjs +20 -13
  688. package/dist/utils/is-initialized.mjs.map +1 -1
  689. package/dist/utils/lifecycles.js +6 -5
  690. package/dist/utils/lifecycles.js.map +1 -1
  691. package/dist/utils/lifecycles.mjs +5 -6
  692. package/dist/utils/lifecycles.mjs.map +1 -1
  693. package/dist/utils/load-config-file.js +40 -38
  694. package/dist/utils/load-config-file.js.map +1 -1
  695. package/dist/utils/load-config-file.mjs +39 -36
  696. package/dist/utils/load-config-file.mjs.map +1 -1
  697. package/dist/utils/load-files.js +40 -35
  698. package/dist/utils/load-files.js.map +1 -1
  699. package/dist/utils/load-files.mjs +39 -32
  700. package/dist/utils/load-files.mjs.map +1 -1
  701. package/dist/utils/open-browser.js +8 -8
  702. package/dist/utils/open-browser.js.map +1 -1
  703. package/dist/utils/open-browser.mjs +7 -7
  704. package/dist/utils/open-browser.mjs.map +1 -1
  705. package/dist/utils/resolve-working-dirs.js +23 -10
  706. package/dist/utils/resolve-working-dirs.js.map +1 -1
  707. package/dist/utils/resolve-working-dirs.mjs +22 -9
  708. package/dist/utils/resolve-working-dirs.mjs.map +1 -1
  709. package/dist/utils/signals.js +20 -14
  710. package/dist/utils/signals.js.map +1 -1
  711. package/dist/utils/signals.mjs +19 -15
  712. package/dist/utils/signals.mjs.map +1 -1
  713. package/dist/utils/startup-logger.d.ts.map +1 -1
  714. package/dist/utils/startup-logger.js +107 -78
  715. package/dist/utils/startup-logger.js.map +1 -1
  716. package/dist/utils/startup-logger.mjs +106 -75
  717. package/dist/utils/startup-logger.mjs.map +1 -1
  718. package/dist/utils/transform-content-types-to-models.js +350 -261
  719. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  720. package/dist/utils/transform-content-types-to-models.mjs +349 -269
  721. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  722. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  723. package/dist/utils/update-notifier/index.js +68 -73
  724. package/dist/utils/update-notifier/index.js.map +1 -1
  725. package/dist/utils/update-notifier/index.mjs +67 -67
  726. package/dist/utils/update-notifier/index.mjs.map +1 -1
  727. package/package.json +27 -27
@@ -0,0 +1,139 @@
1
+ import type { Core, UID } from '@strapi/types';
2
+ import { z } from 'zod';
3
+ import { AbstractCoreRouteValidator } from './common';
4
+ type QueryParam = 'fields' | 'populate' | 'sort';
5
+ /**
6
+ * A validator for core content-type routes.
7
+ *
8
+ * Provides validation schemas and utilities for handling content-type-specific route validation.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const strapi = // ... strapi instance
13
+ * const uid = 'api::article.article'
14
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
15
+ *
16
+ * // Get validation schema for document
17
+ * const documentSchema = validator.document;
18
+ *
19
+ * // Validate query parameters
20
+ * const querySchema = validator.query(['fields', 'populate', 'sort']);
21
+ * ```
22
+ */
23
+ export declare class CoreContentTypeRouteValidator extends AbstractCoreRouteValidator<UID.ContentType> {
24
+ /**
25
+ * Creates a new instance of CoreContentTypeRouteValidator
26
+ *
27
+ * @param strapi - The Strapi instance
28
+ * @param uid - The content-type's unique identifier
29
+ */
30
+ constructor(strapi: Core.Strapi, uid: UID.ContentType);
31
+ /**
32
+ * Generates a validation schema for document IDs
33
+ *
34
+ * @returns A schema that validates UUIDs
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
39
+ * const idSchema = validator.documentID;
40
+ * ```
41
+ */
42
+ get documentID(): z.ZodString;
43
+ /**
44
+ * Generates a comprehensive validation schema for a single document.
45
+ *
46
+ * Combines scalar fields and populatable fields into a single schema.
47
+ *
48
+ * @returns A schema for validating complete documents
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
53
+ * const docSchema = validator.document;
54
+ * ```
55
+ */
56
+ get document(): z.ZodObject<{
57
+ documentId: z.ZodString;
58
+ }, "strip", z.ZodTypeAny, {
59
+ documentId: string;
60
+ }, {
61
+ documentId: string;
62
+ }>;
63
+ /**
64
+ * Generates a validation schema for an array of documents
65
+ *
66
+ * @returns A schema for validating arrays of documents
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
71
+ * const docsSchema = validator.documents;
72
+ * ```
73
+ */
74
+ get documents(): z.ZodArray<z.ZodObject<{
75
+ documentId: z.ZodString;
76
+ }, "strip", z.ZodTypeAny, {
77
+ documentId: string;
78
+ }, {
79
+ documentId: string;
80
+ }>, "many">;
81
+ /**
82
+ * Creates validation schemas for query parameters
83
+ *
84
+ * @param params - Array of query parameters to validate ('fields', 'populate', 'sort', ...)
85
+ * @returns Object containing validation schemas for requested parameters
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
90
+ * const querySchemas = validator.query(['fields', 'populate']);
91
+ * ```
92
+ */
93
+ query(params: QueryParam[]): Partial<Record<QueryParam, z.Schema>>;
94
+ /**
95
+ * Generates a validation schema for field selection in queries
96
+ *
97
+ * @returns A schema for validating field selection
98
+ *
99
+ * @example
100
+ * ```ts
101
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
102
+ * const fieldsSchema = validator.queryFields;
103
+ * ```
104
+ */
105
+ get queryFields(): z.ZodReadonly<z.ZodArray<z.ZodEnum<[string]>, "many">>;
106
+ /**
107
+ * Generates a validation schema for populate operations.
108
+ *
109
+ * Allows wildcard (*), single field, and multiple field population.
110
+ *
111
+ * @returns A schema for validating populate parameters
112
+ *
113
+ * @example
114
+ * ```ts
115
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
116
+ * const populateSchema = validator.queryPopulate;
117
+ * ```
118
+ */
119
+ get queryPopulate(): z.ZodUnion<[z.ZodReadonly<z.ZodLiteral<"*">>, z.ZodReadonly<z.ZodEnum<[string]>>, z.ZodArray<z.ZodEnum<[string]>, "many">]>;
120
+ /**
121
+ * Generates a validation schema for sorting parameters.
122
+ *
123
+ * Allows various sorting formats including single field, multiple fields, and direction specifications
124
+ *
125
+ * @returns A schema for validating sort parameters
126
+ *
127
+ * @example
128
+ * ```ts
129
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
130
+ * const sortSchema = validator.querySort;
131
+ * ```
132
+ *
133
+ * @remarks
134
+ * - Nested sorts are currently not supported
135
+ */
136
+ get querySort(): z.ZodOptional<z.ZodUnion<[z.ZodEnum<[string]>, z.ZodArray<z.ZodEnum<[string]>, "many">, z.ZodRecord<z.ZodEnum<[string]>, z.ZodTypeAny>, z.ZodArray<z.ZodRecord<z.ZodEnum<[string]>, z.ZodTypeAny>, "many">]>>;
137
+ }
138
+ export {};
139
+ //# sourceMappingURL=content-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-type.d.ts","sourceRoot":"","sources":["../../../../src/core-api/routes/validation/content-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,0BAA0B,EAAwB,MAAM,UAAU,CAAC;AAE5E,KAAK,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAEjD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,6BAA8B,SAAQ,0BAA0B,CAAC,GAAG,CAAC,WAAW,CAAC;IAC5F;;;;;OAKG;gBACS,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW;IAIrD;;;;;;;;;;OAUG;IACH,IAAI,UAAU,gBAEb;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,QAAQ;;;;;;OAYX;IAED;;;;;;;;;;OAUG;IACH,IAAI,SAAS;;;;;;gBAEZ;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAalE;;;;;;;;;;OAUG;IACH,IAAI,WAAW,2DAMd;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,aAAa,gIAiBhB;IAED;;;;;;;;;;;;;;;OAeG;IACH,IAAI,SAAS,kNAgBZ;CACF"}
@@ -0,0 +1,176 @@
1
+ 'use strict';
2
+
3
+ var zod = require('zod');
4
+ var common = require('./common.js');
5
+
6
+ /**
7
+ * A validator for core content-type routes.
8
+ *
9
+ * Provides validation schemas and utilities for handling content-type-specific route validation.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * const strapi = // ... strapi instance
14
+ * const uid = 'api::article.article'
15
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
16
+ *
17
+ * // Get validation schema for document
18
+ * const documentSchema = validator.document;
19
+ *
20
+ * // Validate query parameters
21
+ * const querySchema = validator.query(['fields', 'populate', 'sort']);
22
+ * ```
23
+ */ class CoreContentTypeRouteValidator extends common.AbstractCoreRouteValidator {
24
+ /**
25
+ * Generates a validation schema for document IDs
26
+ *
27
+ * @returns A schema that validates UUIDs
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
32
+ * const idSchema = validator.documentID;
33
+ * ```
34
+ */ get documentID() {
35
+ return zod.z.string().uuid().describe('The document ID, represented by a UUID');
36
+ }
37
+ /**
38
+ * Generates a comprehensive validation schema for a single document.
39
+ *
40
+ * Combines scalar fields and populatable fields into a single schema.
41
+ *
42
+ * @returns A schema for validating complete documents
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
47
+ * const docSchema = validator.document;
48
+ * ```
49
+ */ get document() {
50
+ const { _scalarFields, _populatableFields } = this;
51
+ const entries = Object.entries({
52
+ ..._scalarFields,
53
+ ..._populatableFields
54
+ });
55
+ const attributesSchema = entries.reduce((acc, [attributeName, attribute])=>{
56
+ return acc.merge(zod.z.object({
57
+ [attributeName]: common.mapAttributeToSchema(attribute)
58
+ }));
59
+ }, zod.z.object({}));
60
+ const defaultSchema = zod.z.object({
61
+ documentId: this.documentID
62
+ });
63
+ return defaultSchema.merge(attributesSchema);
64
+ }
65
+ /**
66
+ * Generates a validation schema for an array of documents
67
+ *
68
+ * @returns A schema for validating arrays of documents
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
73
+ * const docsSchema = validator.documents;
74
+ * ```
75
+ */ get documents() {
76
+ return zod.z.array(this.document);
77
+ }
78
+ /**
79
+ * Creates validation schemas for query parameters
80
+ *
81
+ * @param params - Array of query parameters to validate ('fields', 'populate', 'sort', ...)
82
+ * @returns Object containing validation schemas for requested parameters
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
87
+ * const querySchemas = validator.query(['fields', 'populate']);
88
+ * ```
89
+ */ query(params) {
90
+ const map = {
91
+ fields: ()=>this.queryFields,
92
+ populate: ()=>this.queryPopulate,
93
+ sort: ()=>this.querySort
94
+ };
95
+ return params.reduce((acc, param)=>({
96
+ ...acc,
97
+ [param]: map[param]()
98
+ }), {});
99
+ }
100
+ /**
101
+ * Generates a validation schema for field selection in queries
102
+ *
103
+ * @returns A schema for validating field selection
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
108
+ * const fieldsSchema = validator.queryFields;
109
+ * ```
110
+ */ get queryFields() {
111
+ return this.scalarFieldsArray.readonly().describe(`The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones`);
112
+ }
113
+ /**
114
+ * Generates a validation schema for populate operations.
115
+ *
116
+ * Allows wildcard (*), single field, and multiple field population.
117
+ *
118
+ * @returns A schema for validating populate parameters
119
+ *
120
+ * @example
121
+ * ```ts
122
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
123
+ * const populateSchema = validator.queryPopulate;
124
+ * ```
125
+ */ get queryPopulate() {
126
+ const wildcardPopulate = zod.z.literal('*').readonly().describe('Populate all the first level relations, components, files, and dynamic zones for the entry');
127
+ const singleFieldPopulate = this.populatableFieldsEnum.readonly().describe('Populate a single relation, component, file, or dynamic zone');
128
+ const multiPopulate = this.populatableFieldsArray.describe('Populate a selection of multiple relations, components, files, or dynamic zones');
129
+ return zod.z.union([
130
+ wildcardPopulate,
131
+ singleFieldPopulate,
132
+ multiPopulate
133
+ ]);
134
+ }
135
+ /**
136
+ * Generates a validation schema for sorting parameters.
137
+ *
138
+ * Allows various sorting formats including single field, multiple fields, and direction specifications
139
+ *
140
+ * @returns A schema for validating sort parameters
141
+ *
142
+ * @example
143
+ * ```ts
144
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
145
+ * const sortSchema = validator.querySort;
146
+ * ```
147
+ *
148
+ * @remarks
149
+ * - Nested sorts are currently not supported
150
+ */ get querySort() {
151
+ const orderDirection = zod.z.enum([
152
+ 'asc',
153
+ 'desc'
154
+ ]);
155
+ // TODO: Handle nested sorts but very low priority, very little usage
156
+ return zod.z.union([
157
+ this.scalarFieldsEnum,
158
+ this.scalarFieldsArray,
159
+ this.fieldRecord(orderDirection),
160
+ zod.z.array(this.fieldRecord(orderDirection))
161
+ ], {
162
+ description: 'Sort Union'
163
+ }).optional().describe('Sort the result');
164
+ }
165
+ /**
166
+ * Creates a new instance of CoreContentTypeRouteValidator
167
+ *
168
+ * @param strapi - The Strapi instance
169
+ * @param uid - The content-type's unique identifier
170
+ */ constructor(strapi, uid){
171
+ super(strapi, uid);
172
+ }
173
+ }
174
+
175
+ exports.CoreContentTypeRouteValidator = CoreContentTypeRouteValidator;
176
+ //# sourceMappingURL=content-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-type.js","sources":["../../../../src/core-api/routes/validation/content-type.ts"],"sourcesContent":["import type { Core, UID } from '@strapi/types';\nimport { z } from 'zod';\n\nimport { AbstractCoreRouteValidator, mapAttributeToSchema } from './common';\n\ntype QueryParam = 'fields' | 'populate' | 'sort';\n\n/**\n * A validator for core content-type routes.\n *\n * Provides validation schemas and utilities for handling content-type-specific route validation.\n *\n * @example\n * ```ts\n * const strapi = // ... strapi instance\n * const uid = 'api::article.article'\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n *\n * // Get validation schema for document\n * const documentSchema = validator.document;\n *\n * // Validate query parameters\n * const querySchema = validator.query(['fields', 'populate', 'sort']);\n * ```\n */\nexport class CoreContentTypeRouteValidator extends AbstractCoreRouteValidator<UID.ContentType> {\n /**\n * Creates a new instance of CoreContentTypeRouteValidator\n *\n * @param strapi - The Strapi instance\n * @param uid - The content-type's unique identifier\n */\n constructor(strapi: Core.Strapi, uid: UID.ContentType) {\n super(strapi, uid);\n }\n\n /**\n * Generates a validation schema for document IDs\n *\n * @returns A schema that validates UUIDs\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const idSchema = validator.documentID;\n * ```\n */\n get documentID() {\n return z.string().uuid().describe('The document ID, represented by a UUID');\n }\n\n /**\n * Generates a comprehensive validation schema for a single document.\n *\n * Combines scalar fields and populatable fields into a single schema.\n *\n * @returns A schema for validating complete documents\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const docSchema = validator.document;\n * ```\n */\n get document() {\n const { _scalarFields, _populatableFields } = this;\n\n const entries = Object.entries({ ..._scalarFields, ..._populatableFields });\n\n const attributesSchema = entries.reduce((acc, [attributeName, attribute]) => {\n return acc.merge(z.object({ [attributeName]: mapAttributeToSchema(attribute) }));\n }, z.object({}));\n\n const defaultSchema = z.object({ documentId: this.documentID });\n\n return defaultSchema.merge(attributesSchema);\n }\n\n /**\n * Generates a validation schema for an array of documents\n *\n * @returns A schema for validating arrays of documents\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const docsSchema = validator.documents;\n * ```\n */\n get documents() {\n return z.array(this.document);\n }\n\n /**\n * Creates validation schemas for query parameters\n *\n * @param params - Array of query parameters to validate ('fields', 'populate', 'sort', ...)\n * @returns Object containing validation schemas for requested parameters\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const querySchemas = validator.query(['fields', 'populate']);\n * ```\n */\n query(params: QueryParam[]): Partial<Record<QueryParam, z.Schema>> {\n const map = {\n fields: () => this.queryFields,\n populate: () => this.queryPopulate,\n sort: () => this.querySort,\n };\n\n return params.reduce(\n (acc, param) => ({ ...acc, [param]: map[param]() }),\n {} as Partial<Record<QueryParam, z.Schema>>\n );\n }\n\n /**\n * Generates a validation schema for field selection in queries\n *\n * @returns A schema for validating field selection\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const fieldsSchema = validator.queryFields;\n * ```\n */\n get queryFields() {\n return this.scalarFieldsArray\n .readonly()\n .describe(\n `The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones`\n );\n }\n\n /**\n * Generates a validation schema for populate operations.\n *\n * Allows wildcard (*), single field, and multiple field population.\n *\n * @returns A schema for validating populate parameters\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const populateSchema = validator.queryPopulate;\n * ```\n */\n get queryPopulate() {\n const wildcardPopulate = z\n .literal('*')\n .readonly()\n .describe(\n 'Populate all the first level relations, components, files, and dynamic zones for the entry'\n );\n\n const singleFieldPopulate = this.populatableFieldsEnum\n .readonly()\n .describe('Populate a single relation, component, file, or dynamic zone');\n\n const multiPopulate = this.populatableFieldsArray.describe(\n 'Populate a selection of multiple relations, components, files, or dynamic zones'\n );\n\n return z.union([wildcardPopulate, singleFieldPopulate, multiPopulate]);\n }\n\n /**\n * Generates a validation schema for sorting parameters.\n *\n * Allows various sorting formats including single field, multiple fields, and direction specifications\n *\n * @returns A schema for validating sort parameters\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const sortSchema = validator.querySort;\n * ```\n *\n * @remarks\n * - Nested sorts are currently not supported\n */\n get querySort() {\n const orderDirection = z.enum(['asc', 'desc']);\n\n // TODO: Handle nested sorts but very low priority, very little usage\n return z\n .union(\n [\n this.scalarFieldsEnum, // 'name' | 'title'\n this.scalarFieldsArray, // ['name', 'title']\n this.fieldRecord(orderDirection), // { name: 'desc' } | { title: 'asc' }\n z.array(this.fieldRecord(orderDirection)), // [{ name: 'desc'}, { title: 'asc' }]\n ],\n { description: 'Sort Union' }\n )\n .optional()\n .describe('Sort the result');\n }\n}\n"],"names":["CoreContentTypeRouteValidator","AbstractCoreRouteValidator","documentID","z","string","uuid","describe","document","_scalarFields","_populatableFields","entries","Object","attributesSchema","reduce","acc","attributeName","attribute","merge","object","mapAttributeToSchema","defaultSchema","documentId","documents","array","query","params","map","fields","queryFields","populate","queryPopulate","sort","querySort","param","scalarFieldsArray","readonly","wildcardPopulate","literal","singleFieldPopulate","populatableFieldsEnum","multiPopulate","populatableFieldsArray","union","orderDirection","enum","scalarFieldsEnum","fieldRecord","description","optional","constructor","strapi","uid"],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ import { z } from 'zod';
2
+ import { AbstractCoreRouteValidator, mapAttributeToSchema } from './common.mjs';
3
+
4
+ /**
5
+ * A validator for core content-type routes.
6
+ *
7
+ * Provides validation schemas and utilities for handling content-type-specific route validation.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * const strapi = // ... strapi instance
12
+ * const uid = 'api::article.article'
13
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
14
+ *
15
+ * // Get validation schema for document
16
+ * const documentSchema = validator.document;
17
+ *
18
+ * // Validate query parameters
19
+ * const querySchema = validator.query(['fields', 'populate', 'sort']);
20
+ * ```
21
+ */ class CoreContentTypeRouteValidator extends AbstractCoreRouteValidator {
22
+ /**
23
+ * Generates a validation schema for document IDs
24
+ *
25
+ * @returns A schema that validates UUIDs
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
30
+ * const idSchema = validator.documentID;
31
+ * ```
32
+ */ get documentID() {
33
+ return z.string().uuid().describe('The document ID, represented by a UUID');
34
+ }
35
+ /**
36
+ * Generates a comprehensive validation schema for a single document.
37
+ *
38
+ * Combines scalar fields and populatable fields into a single schema.
39
+ *
40
+ * @returns A schema for validating complete documents
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
45
+ * const docSchema = validator.document;
46
+ * ```
47
+ */ get document() {
48
+ const { _scalarFields, _populatableFields } = this;
49
+ const entries = Object.entries({
50
+ ..._scalarFields,
51
+ ..._populatableFields
52
+ });
53
+ const attributesSchema = entries.reduce((acc, [attributeName, attribute])=>{
54
+ return acc.merge(z.object({
55
+ [attributeName]: mapAttributeToSchema(attribute)
56
+ }));
57
+ }, z.object({}));
58
+ const defaultSchema = z.object({
59
+ documentId: this.documentID
60
+ });
61
+ return defaultSchema.merge(attributesSchema);
62
+ }
63
+ /**
64
+ * Generates a validation schema for an array of documents
65
+ *
66
+ * @returns A schema for validating arrays of documents
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
71
+ * const docsSchema = validator.documents;
72
+ * ```
73
+ */ get documents() {
74
+ return z.array(this.document);
75
+ }
76
+ /**
77
+ * Creates validation schemas for query parameters
78
+ *
79
+ * @param params - Array of query parameters to validate ('fields', 'populate', 'sort', ...)
80
+ * @returns Object containing validation schemas for requested parameters
81
+ *
82
+ * @example
83
+ * ```ts
84
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
85
+ * const querySchemas = validator.query(['fields', 'populate']);
86
+ * ```
87
+ */ query(params) {
88
+ const map = {
89
+ fields: ()=>this.queryFields,
90
+ populate: ()=>this.queryPopulate,
91
+ sort: ()=>this.querySort
92
+ };
93
+ return params.reduce((acc, param)=>({
94
+ ...acc,
95
+ [param]: map[param]()
96
+ }), {});
97
+ }
98
+ /**
99
+ * Generates a validation schema for field selection in queries
100
+ *
101
+ * @returns A schema for validating field selection
102
+ *
103
+ * @example
104
+ * ```ts
105
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
106
+ * const fieldsSchema = validator.queryFields;
107
+ * ```
108
+ */ get queryFields() {
109
+ return this.scalarFieldsArray.readonly().describe(`The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones`);
110
+ }
111
+ /**
112
+ * Generates a validation schema for populate operations.
113
+ *
114
+ * Allows wildcard (*), single field, and multiple field population.
115
+ *
116
+ * @returns A schema for validating populate parameters
117
+ *
118
+ * @example
119
+ * ```ts
120
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
121
+ * const populateSchema = validator.queryPopulate;
122
+ * ```
123
+ */ get queryPopulate() {
124
+ const wildcardPopulate = z.literal('*').readonly().describe('Populate all the first level relations, components, files, and dynamic zones for the entry');
125
+ const singleFieldPopulate = this.populatableFieldsEnum.readonly().describe('Populate a single relation, component, file, or dynamic zone');
126
+ const multiPopulate = this.populatableFieldsArray.describe('Populate a selection of multiple relations, components, files, or dynamic zones');
127
+ return z.union([
128
+ wildcardPopulate,
129
+ singleFieldPopulate,
130
+ multiPopulate
131
+ ]);
132
+ }
133
+ /**
134
+ * Generates a validation schema for sorting parameters.
135
+ *
136
+ * Allows various sorting formats including single field, multiple fields, and direction specifications
137
+ *
138
+ * @returns A schema for validating sort parameters
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * const validator = new CoreContentTypeRouteValidator(strapi, uid);
143
+ * const sortSchema = validator.querySort;
144
+ * ```
145
+ *
146
+ * @remarks
147
+ * - Nested sorts are currently not supported
148
+ */ get querySort() {
149
+ const orderDirection = z.enum([
150
+ 'asc',
151
+ 'desc'
152
+ ]);
153
+ // TODO: Handle nested sorts but very low priority, very little usage
154
+ return z.union([
155
+ this.scalarFieldsEnum,
156
+ this.scalarFieldsArray,
157
+ this.fieldRecord(orderDirection),
158
+ z.array(this.fieldRecord(orderDirection))
159
+ ], {
160
+ description: 'Sort Union'
161
+ }).optional().describe('Sort the result');
162
+ }
163
+ /**
164
+ * Creates a new instance of CoreContentTypeRouteValidator
165
+ *
166
+ * @param strapi - The Strapi instance
167
+ * @param uid - The content-type's unique identifier
168
+ */ constructor(strapi, uid){
169
+ super(strapi, uid);
170
+ }
171
+ }
172
+
173
+ export { CoreContentTypeRouteValidator };
174
+ //# sourceMappingURL=content-type.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-type.mjs","sources":["../../../../src/core-api/routes/validation/content-type.ts"],"sourcesContent":["import type { Core, UID } from '@strapi/types';\nimport { z } from 'zod';\n\nimport { AbstractCoreRouteValidator, mapAttributeToSchema } from './common';\n\ntype QueryParam = 'fields' | 'populate' | 'sort';\n\n/**\n * A validator for core content-type routes.\n *\n * Provides validation schemas and utilities for handling content-type-specific route validation.\n *\n * @example\n * ```ts\n * const strapi = // ... strapi instance\n * const uid = 'api::article.article'\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n *\n * // Get validation schema for document\n * const documentSchema = validator.document;\n *\n * // Validate query parameters\n * const querySchema = validator.query(['fields', 'populate', 'sort']);\n * ```\n */\nexport class CoreContentTypeRouteValidator extends AbstractCoreRouteValidator<UID.ContentType> {\n /**\n * Creates a new instance of CoreContentTypeRouteValidator\n *\n * @param strapi - The Strapi instance\n * @param uid - The content-type's unique identifier\n */\n constructor(strapi: Core.Strapi, uid: UID.ContentType) {\n super(strapi, uid);\n }\n\n /**\n * Generates a validation schema for document IDs\n *\n * @returns A schema that validates UUIDs\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const idSchema = validator.documentID;\n * ```\n */\n get documentID() {\n return z.string().uuid().describe('The document ID, represented by a UUID');\n }\n\n /**\n * Generates a comprehensive validation schema for a single document.\n *\n * Combines scalar fields and populatable fields into a single schema.\n *\n * @returns A schema for validating complete documents\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const docSchema = validator.document;\n * ```\n */\n get document() {\n const { _scalarFields, _populatableFields } = this;\n\n const entries = Object.entries({ ..._scalarFields, ..._populatableFields });\n\n const attributesSchema = entries.reduce((acc, [attributeName, attribute]) => {\n return acc.merge(z.object({ [attributeName]: mapAttributeToSchema(attribute) }));\n }, z.object({}));\n\n const defaultSchema = z.object({ documentId: this.documentID });\n\n return defaultSchema.merge(attributesSchema);\n }\n\n /**\n * Generates a validation schema for an array of documents\n *\n * @returns A schema for validating arrays of documents\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const docsSchema = validator.documents;\n * ```\n */\n get documents() {\n return z.array(this.document);\n }\n\n /**\n * Creates validation schemas for query parameters\n *\n * @param params - Array of query parameters to validate ('fields', 'populate', 'sort', ...)\n * @returns Object containing validation schemas for requested parameters\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const querySchemas = validator.query(['fields', 'populate']);\n * ```\n */\n query(params: QueryParam[]): Partial<Record<QueryParam, z.Schema>> {\n const map = {\n fields: () => this.queryFields,\n populate: () => this.queryPopulate,\n sort: () => this.querySort,\n };\n\n return params.reduce(\n (acc, param) => ({ ...acc, [param]: map[param]() }),\n {} as Partial<Record<QueryParam, z.Schema>>\n );\n }\n\n /**\n * Generates a validation schema for field selection in queries\n *\n * @returns A schema for validating field selection\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const fieldsSchema = validator.queryFields;\n * ```\n */\n get queryFields() {\n return this.scalarFieldsArray\n .readonly()\n .describe(\n `The fields to return, this doesn't include populatable fields like relations, components, files, or dynamic zones`\n );\n }\n\n /**\n * Generates a validation schema for populate operations.\n *\n * Allows wildcard (*), single field, and multiple field population.\n *\n * @returns A schema for validating populate parameters\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const populateSchema = validator.queryPopulate;\n * ```\n */\n get queryPopulate() {\n const wildcardPopulate = z\n .literal('*')\n .readonly()\n .describe(\n 'Populate all the first level relations, components, files, and dynamic zones for the entry'\n );\n\n const singleFieldPopulate = this.populatableFieldsEnum\n .readonly()\n .describe('Populate a single relation, component, file, or dynamic zone');\n\n const multiPopulate = this.populatableFieldsArray.describe(\n 'Populate a selection of multiple relations, components, files, or dynamic zones'\n );\n\n return z.union([wildcardPopulate, singleFieldPopulate, multiPopulate]);\n }\n\n /**\n * Generates a validation schema for sorting parameters.\n *\n * Allows various sorting formats including single field, multiple fields, and direction specifications\n *\n * @returns A schema for validating sort parameters\n *\n * @example\n * ```ts\n * const validator = new CoreContentTypeRouteValidator(strapi, uid);\n * const sortSchema = validator.querySort;\n * ```\n *\n * @remarks\n * - Nested sorts are currently not supported\n */\n get querySort() {\n const orderDirection = z.enum(['asc', 'desc']);\n\n // TODO: Handle nested sorts but very low priority, very little usage\n return z\n .union(\n [\n this.scalarFieldsEnum, // 'name' | 'title'\n this.scalarFieldsArray, // ['name', 'title']\n this.fieldRecord(orderDirection), // { name: 'desc' } | { title: 'asc' }\n z.array(this.fieldRecord(orderDirection)), // [{ name: 'desc'}, { title: 'asc' }]\n ],\n { description: 'Sort Union' }\n )\n .optional()\n .describe('Sort the result');\n }\n}\n"],"names":["CoreContentTypeRouteValidator","AbstractCoreRouteValidator","documentID","z","string","uuid","describe","document","_scalarFields","_populatableFields","entries","Object","attributesSchema","reduce","acc","attributeName","attribute","merge","object","mapAttributeToSchema","defaultSchema","documentId","documents","array","query","params","map","fields","queryFields","populate","queryPopulate","sort","querySort","param","scalarFieldsArray","readonly","wildcardPopulate","literal","singleFieldPopulate","populatableFieldsEnum","multiPopulate","populatableFieldsArray","union","orderDirection","enum","scalarFieldsEnum","fieldRecord","description","optional","constructor","strapi","uid"],"mappings":";;;AAOA;;;;;;;;;;;;;;;;;IAkBO,MAAMA,6BAAsCC,SAAAA,0BAAAA,CAAAA;AAWjD;;;;;;;;;;AAUC,MACD,IAAIC,UAAa,GAAA;AACf,QAAA,OAAOC,EAAEC,MAAM,EAAA,CAAGC,IAAI,EAAA,CAAGC,QAAQ,CAAC,wCAAA,CAAA;AACpC;AAEA;;;;;;;;;;;;AAYC,MACD,IAAIC,QAAW,GAAA;AACb,QAAA,MAAM,EAAEC,aAAa,EAAEC,kBAAkB,EAAE,GAAG,IAAI;QAElD,MAAMC,OAAAA,GAAUC,MAAOD,CAAAA,OAAO,CAAC;AAAE,YAAA,GAAGF,aAAa;AAAE,YAAA,GAAGC;AAAmB,SAAA,CAAA;QAEzE,MAAMG,gBAAAA,GAAmBF,QAAQG,MAAM,CAAC,CAACC,GAAK,EAAA,CAACC,eAAeC,SAAU,CAAA,GAAA;AACtE,YAAA,OAAOF,GAAIG,CAAAA,KAAK,CAACd,CAAAA,CAAEe,MAAM,CAAC;gBAAE,CAACH,aAAAA,GAAgBI,oBAAqBH,CAAAA,SAAAA;AAAW,aAAA,CAAA,CAAA;SAC5Eb,EAAAA,CAAAA,CAAEe,MAAM,CAAC,EAAC,CAAA,CAAA;QAEb,MAAME,aAAAA,GAAgBjB,CAAEe,CAAAA,MAAM,CAAC;YAAEG,UAAY,EAAA,IAAI,CAACnB;AAAW,SAAA,CAAA;QAE7D,OAAOkB,aAAAA,CAAcH,KAAK,CAACL,gBAAAA,CAAAA;AAC7B;AAEA;;;;;;;;;;AAUC,MACD,IAAIU,SAAY,GAAA;AACd,QAAA,OAAOnB,CAAEoB,CAAAA,KAAK,CAAC,IAAI,CAAChB,QAAQ,CAAA;AAC9B;AAEA;;;;;;;;;;;MAYAiB,KAAAA,CAAMC,MAAoB,EAAyC;AACjE,QAAA,MAAMC,GAAM,GAAA;YACVC,MAAQ,EAAA,IAAM,IAAI,CAACC,WAAW;YAC9BC,QAAU,EAAA,IAAM,IAAI,CAACC,aAAa;YAClCC,IAAM,EAAA,IAAM,IAAI,CAACC;AACnB,SAAA;AAEA,QAAA,OAAOP,OAAOZ,MAAM,CAClB,CAACC,GAAAA,EAAKmB,SAAW;AAAE,gBAAA,GAAGnB,GAAG;AAAE,gBAAA,CAACmB,KAAM,GAAEP,GAAG,CAACO,KAAM,CAAA;AAAG,aAAA,GACjD,EAAC,CAAA;AAEL;AAEA;;;;;;;;;;AAUC,MACD,IAAIL,WAAc,GAAA;QAChB,OAAO,IAAI,CAACM,iBAAiB,CAC1BC,QAAQ,GACR7B,QAAQ,CACP,CAAC,iHAAiH,CAAC,CAAA;AAEzH;AAEA;;;;;;;;;;;;AAYC,MACD,IAAIwB,aAAgB,GAAA;QAClB,MAAMM,gBAAAA,GAAmBjC,EACtBkC,OAAO,CAAC,KACRF,QAAQ,EAAA,CACR7B,QAAQ,CACP,4FAAA,CAAA;QAGJ,MAAMgC,mBAAAA,GAAsB,IAAI,CAACC,qBAAqB,CACnDJ,QAAQ,EAAA,CACR7B,QAAQ,CAAC,8DAAA,CAAA;AAEZ,QAAA,MAAMkC,gBAAgB,IAAI,CAACC,sBAAsB,CAACnC,QAAQ,CACxD,iFAAA,CAAA;QAGF,OAAOH,CAAAA,CAAEuC,KAAK,CAAC;AAACN,YAAAA,gBAAAA;AAAkBE,YAAAA,mBAAAA;AAAqBE,YAAAA;AAAc,SAAA,CAAA;AACvE;AAEA;;;;;;;;;;;;;;;AAeC,MACD,IAAIR,SAAY,GAAA;QACd,MAAMW,cAAAA,GAAiBxC,CAAEyC,CAAAA,IAAI,CAAC;AAAC,YAAA,KAAA;AAAO,YAAA;AAAO,SAAA,CAAA;;QAG7C,OAAOzC,CAAAA,CACJuC,KAAK,CACJ;AACE,YAAA,IAAI,CAACG,gBAAgB;AACrB,YAAA,IAAI,CAACX,iBAAiB;YACtB,IAAI,CAACY,WAAW,CAACH,cAAAA,CAAAA;AACjBxC,YAAAA,CAAAA,CAAEoB,KAAK,CAAC,IAAI,CAACuB,WAAW,CAACH,cAAAA,CAAAA;SAC1B,EACD;YAAEI,WAAa,EAAA;SAEhBC,CAAAA,CAAAA,QAAQ,EACR1C,CAAAA,QAAQ,CAAC,iBAAA,CAAA;AACd;AA/KA;;;;;AAKC,MACD2C,WAAYC,CAAAA,MAAmB,EAAEC,GAAoB,CAAE;AACrD,QAAA,KAAK,CAACD,MAAQC,EAAAA,GAAAA,CAAAA;AAChB;AAwKF;;;;"}
@@ -0,0 +1,4 @@
1
+ export { AbstractCoreRouteValidator, mapAttributeToSchema } from './common';
2
+ export { CoreContentTypeRouteValidator } from './content-type';
3
+ export { CoreComponentRouteValidator } from './component';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core-api/routes/validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC"}