@strapi/core 0.0.0-experimental.3218535c8b12e654be4191f9c36c07b43861b437 → 0.0.0-experimental.32a96e212ac6550182455c62b032966a13f0a362

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 (742) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +427 -406
  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 -96
  11. package/dist/configuration/config-loader.js.map +1 -1
  12. package/dist/configuration/config-loader.mjs +109 -95
  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 -78
  21. package/dist/configuration/index.js.map +1 -1
  22. package/dist/configuration/index.mjs +84 -74
  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 +187 -62
  52. package/dist/core-api/routes/index.js.map +1 -1
  53. package/dist/core-api/routes/index.mjs +185 -62
  54. package/dist/core-api/routes/index.mjs.map +1 -1
  55. package/dist/core-api/routes/validation/attributes.d.ts +88 -0
  56. package/dist/core-api/routes/validation/attributes.d.ts.map +1 -0
  57. package/dist/core-api/routes/validation/attributes.js +588 -0
  58. package/dist/core-api/routes/validation/attributes.js.map +1 -0
  59. package/dist/core-api/routes/validation/attributes.mjs +585 -0
  60. package/dist/core-api/routes/validation/attributes.mjs.map +1 -0
  61. package/dist/core-api/routes/validation/common.d.ts +103 -0
  62. package/dist/core-api/routes/validation/common.d.ts.map +1 -0
  63. package/dist/core-api/routes/validation/common.js +95 -0
  64. package/dist/core-api/routes/validation/common.js.map +1 -0
  65. package/dist/core-api/routes/validation/common.mjs +93 -0
  66. package/dist/core-api/routes/validation/common.mjs.map +1 -0
  67. package/dist/core-api/routes/validation/component.d.ts +42 -0
  68. package/dist/core-api/routes/validation/component.d.ts.map +1 -0
  69. package/dist/core-api/routes/validation/component.js +59 -0
  70. package/dist/core-api/routes/validation/component.js.map +1 -0
  71. package/dist/core-api/routes/validation/component.mjs +57 -0
  72. package/dist/core-api/routes/validation/component.mjs.map +1 -0
  73. package/dist/core-api/routes/validation/constants.d.ts +2 -0
  74. package/dist/core-api/routes/validation/constants.d.ts.map +1 -0
  75. package/dist/core-api/routes/validation/constants.js +13 -0
  76. package/dist/core-api/routes/validation/constants.js.map +1 -0
  77. package/dist/core-api/routes/validation/constants.mjs +11 -0
  78. package/dist/core-api/routes/validation/constants.mjs.map +1 -0
  79. package/dist/core-api/routes/validation/content-type.d.ts +171 -0
  80. package/dist/core-api/routes/validation/content-type.d.ts.map +1 -0
  81. package/dist/core-api/routes/validation/content-type.js +246 -0
  82. package/dist/core-api/routes/validation/content-type.js.map +1 -0
  83. package/dist/core-api/routes/validation/content-type.mjs +244 -0
  84. package/dist/core-api/routes/validation/content-type.mjs.map +1 -0
  85. package/dist/core-api/routes/validation/index.d.ts +5 -0
  86. package/dist/core-api/routes/validation/index.d.ts.map +1 -0
  87. package/dist/core-api/service/collection-type.js +73 -60
  88. package/dist/core-api/service/collection-type.js.map +1 -1
  89. package/dist/core-api/service/collection-type.mjs +72 -62
  90. package/dist/core-api/service/collection-type.mjs.map +1 -1
  91. package/dist/core-api/service/core-service.js +9 -8
  92. package/dist/core-api/service/core-service.js.map +1 -1
  93. package/dist/core-api/service/core-service.mjs +8 -9
  94. package/dist/core-api/service/core-service.mjs.map +1 -1
  95. package/dist/core-api/service/index.js +13 -13
  96. package/dist/core-api/service/index.js.map +1 -1
  97. package/dist/core-api/service/index.mjs +12 -14
  98. package/dist/core-api/service/index.mjs.map +1 -1
  99. package/dist/core-api/service/pagination.js +69 -43
  100. package/dist/core-api/service/pagination.js.map +1 -1
  101. package/dist/core-api/service/pagination.mjs +68 -47
  102. package/dist/core-api/service/pagination.mjs.map +1 -1
  103. package/dist/core-api/service/single-type.js +43 -38
  104. package/dist/core-api/service/single-type.js.map +1 -1
  105. package/dist/core-api/service/single-type.mjs +42 -40
  106. package/dist/core-api/service/single-type.mjs.map +1 -1
  107. package/dist/domain/content-type/index.js +95 -100
  108. package/dist/domain/content-type/index.js.map +1 -1
  109. package/dist/domain/content-type/index.mjs +94 -100
  110. package/dist/domain/content-type/index.mjs.map +1 -1
  111. package/dist/domain/content-type/validator.js +84 -69
  112. package/dist/domain/content-type/validator.js.map +1 -1
  113. package/dist/domain/content-type/validator.mjs +83 -68
  114. package/dist/domain/content-type/validator.mjs.map +1 -1
  115. package/dist/domain/module/index.d.ts.map +1 -1
  116. package/dist/domain/module/index.js +112 -100
  117. package/dist/domain/module/index.js.map +1 -1
  118. package/dist/domain/module/index.mjs +111 -99
  119. package/dist/domain/module/index.mjs.map +1 -1
  120. package/dist/domain/module/validation.js +25 -20
  121. package/dist/domain/module/validation.js.map +1 -1
  122. package/dist/domain/module/validation.mjs +24 -21
  123. package/dist/domain/module/validation.mjs.map +1 -1
  124. package/dist/ee/index.d.ts +1 -0
  125. package/dist/ee/index.d.ts.map +1 -1
  126. package/dist/ee/index.js +171 -137
  127. package/dist/ee/index.js.map +1 -1
  128. package/dist/ee/index.mjs +170 -139
  129. package/dist/ee/index.mjs.map +1 -1
  130. package/dist/ee/license.d.ts.map +1 -1
  131. package/dist/ee/license.js +100 -75
  132. package/dist/ee/license.js.map +1 -1
  133. package/dist/ee/license.mjs +99 -76
  134. package/dist/ee/license.mjs.map +1 -1
  135. package/dist/factories.d.ts +3 -1
  136. package/dist/factories.d.ts.map +1 -1
  137. package/dist/factories.js +80 -67
  138. package/dist/factories.js.map +1 -1
  139. package/dist/factories.mjs +77 -70
  140. package/dist/factories.mjs.map +1 -1
  141. package/dist/index.js +29 -26
  142. package/dist/index.js.map +1 -1
  143. package/dist/index.mjs +29 -29
  144. package/dist/index.mjs.map +1 -1
  145. package/dist/loaders/admin.d.ts.map +1 -1
  146. package/dist/loaders/admin.js +21 -20
  147. package/dist/loaders/admin.js.map +1 -1
  148. package/dist/loaders/admin.mjs +20 -20
  149. package/dist/loaders/admin.mjs.map +1 -1
  150. package/dist/loaders/apis.js +143 -120
  151. package/dist/loaders/apis.js.map +1 -1
  152. package/dist/loaders/apis.mjs +142 -119
  153. package/dist/loaders/apis.mjs.map +1 -1
  154. package/dist/loaders/components.js +33 -34
  155. package/dist/loaders/components.js.map +1 -1
  156. package/dist/loaders/components.mjs +32 -34
  157. package/dist/loaders/components.mjs.map +1 -1
  158. package/dist/loaders/index.js +22 -20
  159. package/dist/loaders/index.js.map +1 -1
  160. package/dist/loaders/index.mjs +21 -21
  161. package/dist/loaders/index.mjs.map +1 -1
  162. package/dist/loaders/middlewares.js +29 -25
  163. package/dist/loaders/middlewares.js.map +1 -1
  164. package/dist/loaders/middlewares.mjs +28 -25
  165. package/dist/loaders/middlewares.mjs.map +1 -1
  166. package/dist/loaders/plugins/get-enabled-plugins.js +126 -131
  167. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  168. package/dist/loaders/plugins/get-enabled-plugins.mjs +125 -108
  169. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  170. package/dist/loaders/plugins/get-user-plugins-config.js +25 -24
  171. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  172. package/dist/loaders/plugins/get-user-plugins-config.mjs +24 -23
  173. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  174. package/dist/loaders/plugins/index.js +132 -121
  175. package/dist/loaders/plugins/index.js.map +1 -1
  176. package/dist/loaders/plugins/index.mjs +121 -112
  177. package/dist/loaders/plugins/index.mjs.map +1 -1
  178. package/dist/loaders/policies.js +24 -20
  179. package/dist/loaders/policies.js.map +1 -1
  180. package/dist/loaders/policies.mjs +23 -20
  181. package/dist/loaders/policies.mjs.map +1 -1
  182. package/dist/loaders/sanitizers.js +10 -4
  183. package/dist/loaders/sanitizers.js.map +1 -1
  184. package/dist/loaders/sanitizers.mjs +9 -6
  185. package/dist/loaders/sanitizers.mjs.map +1 -1
  186. package/dist/loaders/src-index.js +35 -27
  187. package/dist/loaders/src-index.js.map +1 -1
  188. package/dist/loaders/src-index.mjs +34 -29
  189. package/dist/loaders/src-index.mjs.map +1 -1
  190. package/dist/loaders/validators.js +9 -4
  191. package/dist/loaders/validators.js.map +1 -1
  192. package/dist/loaders/validators.mjs +8 -6
  193. package/dist/loaders/validators.mjs.map +1 -1
  194. package/dist/middlewares/body.d.ts.map +1 -1
  195. package/dist/middlewares/body.js +58 -54
  196. package/dist/middlewares/body.js.map +1 -1
  197. package/dist/middlewares/body.mjs +57 -51
  198. package/dist/middlewares/body.mjs.map +1 -1
  199. package/dist/middlewares/compression.js +6 -6
  200. package/dist/middlewares/compression.js.map +1 -1
  201. package/dist/middlewares/compression.mjs +5 -5
  202. package/dist/middlewares/compression.mjs.map +1 -1
  203. package/dist/middlewares/cors.js +59 -48
  204. package/dist/middlewares/cors.js.map +1 -1
  205. package/dist/middlewares/cors.mjs +58 -47
  206. package/dist/middlewares/cors.mjs.map +1 -1
  207. package/dist/middlewares/errors.js +32 -30
  208. package/dist/middlewares/errors.js.map +1 -1
  209. package/dist/middlewares/errors.mjs +31 -31
  210. package/dist/middlewares/errors.mjs.map +1 -1
  211. package/dist/middlewares/favicon.js +27 -17
  212. package/dist/middlewares/favicon.js.map +1 -1
  213. package/dist/middlewares/favicon.mjs +26 -16
  214. package/dist/middlewares/favicon.mjs.map +1 -1
  215. package/dist/middlewares/index.js +32 -30
  216. package/dist/middlewares/index.js.map +1 -1
  217. package/dist/middlewares/index.mjs +31 -31
  218. package/dist/middlewares/index.mjs.map +1 -1
  219. package/dist/middlewares/ip.js +6 -6
  220. package/dist/middlewares/ip.js.map +1 -1
  221. package/dist/middlewares/ip.mjs +5 -5
  222. package/dist/middlewares/ip.mjs.map +1 -1
  223. package/dist/middlewares/logger.js +10 -9
  224. package/dist/middlewares/logger.js.map +1 -1
  225. package/dist/middlewares/logger.mjs +9 -10
  226. package/dist/middlewares/logger.mjs.map +1 -1
  227. package/dist/middlewares/powered-by.js +13 -9
  228. package/dist/middlewares/powered-by.js.map +1 -1
  229. package/dist/middlewares/powered-by.mjs +12 -10
  230. package/dist/middlewares/powered-by.mjs.map +1 -1
  231. package/dist/middlewares/public.js +33 -29
  232. package/dist/middlewares/public.js.map +1 -1
  233. package/dist/middlewares/public.mjs +32 -28
  234. package/dist/middlewares/public.mjs.map +1 -1
  235. package/dist/middlewares/query.js +35 -32
  236. package/dist/middlewares/query.js.map +1 -1
  237. package/dist/middlewares/query.mjs +34 -31
  238. package/dist/middlewares/query.mjs.map +1 -1
  239. package/dist/middlewares/response-time.js +10 -9
  240. package/dist/middlewares/response-time.js.map +1 -1
  241. package/dist/middlewares/response-time.mjs +9 -10
  242. package/dist/middlewares/response-time.mjs.map +1 -1
  243. package/dist/middlewares/responses.js +14 -12
  244. package/dist/middlewares/responses.js.map +1 -1
  245. package/dist/middlewares/responses.mjs +13 -13
  246. package/dist/middlewares/responses.mjs.map +1 -1
  247. package/dist/middlewares/security.js +109 -71
  248. package/dist/middlewares/security.js.map +1 -1
  249. package/dist/middlewares/security.mjs +108 -70
  250. package/dist/middlewares/security.mjs.map +1 -1
  251. package/dist/middlewares/session.js +26 -25
  252. package/dist/middlewares/session.js.map +1 -1
  253. package/dist/middlewares/session.mjs +25 -24
  254. package/dist/middlewares/session.mjs.map +1 -1
  255. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +2 -2
  256. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  257. package/dist/migrations/database/5.0.0-discard-drafts.js +152 -90
  258. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  259. package/dist/migrations/database/5.0.0-discard-drafts.mjs +151 -92
  260. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
  261. package/dist/migrations/draft-publish.d.ts +1 -1
  262. package/dist/migrations/draft-publish.d.ts.map +1 -1
  263. package/dist/migrations/draft-publish.js +61 -34
  264. package/dist/migrations/draft-publish.js.map +1 -1
  265. package/dist/migrations/draft-publish.mjs +60 -36
  266. package/dist/migrations/draft-publish.mjs.map +1 -1
  267. package/dist/migrations/i18n.js +62 -45
  268. package/dist/migrations/i18n.js.map +1 -1
  269. package/dist/migrations/i18n.mjs +61 -47
  270. package/dist/migrations/i18n.mjs.map +1 -1
  271. package/dist/migrations/index.js +24 -10
  272. package/dist/migrations/index.js.map +1 -1
  273. package/dist/migrations/index.mjs +23 -12
  274. package/dist/migrations/index.mjs.map +1 -1
  275. package/dist/package.json.js +183 -0
  276. package/dist/package.json.js.map +1 -0
  277. package/dist/package.json.mjs +160 -0
  278. package/dist/package.json.mjs.map +1 -0
  279. package/dist/providers/admin.js +27 -17
  280. package/dist/providers/admin.js.map +1 -1
  281. package/dist/providers/admin.mjs +26 -19
  282. package/dist/providers/admin.mjs.map +1 -1
  283. package/dist/providers/coreStore.js +13 -8
  284. package/dist/providers/coreStore.js.map +1 -1
  285. package/dist/providers/coreStore.mjs +12 -10
  286. package/dist/providers/coreStore.mjs.map +1 -1
  287. package/dist/providers/cron.js +19 -16
  288. package/dist/providers/cron.js.map +1 -1
  289. package/dist/providers/cron.mjs +18 -18
  290. package/dist/providers/cron.mjs.map +1 -1
  291. package/dist/providers/index.js +18 -9
  292. package/dist/providers/index.js.map +1 -1
  293. package/dist/providers/index.mjs +17 -10
  294. package/dist/providers/index.mjs.map +1 -1
  295. package/dist/providers/provider.js +4 -3
  296. package/dist/providers/provider.js.map +1 -1
  297. package/dist/providers/provider.mjs +3 -4
  298. package/dist/providers/provider.mjs.map +1 -1
  299. package/dist/providers/registries.js +37 -32
  300. package/dist/providers/registries.js.map +1 -1
  301. package/dist/providers/registries.mjs +36 -34
  302. package/dist/providers/registries.mjs.map +1 -1
  303. package/dist/providers/telemetry.js +19 -16
  304. package/dist/providers/telemetry.js.map +1 -1
  305. package/dist/providers/telemetry.mjs +18 -18
  306. package/dist/providers/telemetry.mjs.map +1 -1
  307. package/dist/providers/webhooks.js +28 -26
  308. package/dist/providers/webhooks.js.map +1 -1
  309. package/dist/providers/webhooks.mjs +27 -28
  310. package/dist/providers/webhooks.mjs.map +1 -1
  311. package/dist/registries/apis.js +23 -20
  312. package/dist/registries/apis.js.map +1 -1
  313. package/dist/registries/apis.mjs +22 -22
  314. package/dist/registries/apis.mjs.map +1 -1
  315. package/dist/registries/components.js +35 -37
  316. package/dist/registries/components.js.map +1 -1
  317. package/dist/registries/components.mjs +34 -39
  318. package/dist/registries/components.mjs.map +1 -1
  319. package/dist/registries/content-types.js +54 -59
  320. package/dist/registries/content-types.js.map +1 -1
  321. package/dist/registries/content-types.mjs +53 -61
  322. package/dist/registries/content-types.mjs.map +1 -1
  323. package/dist/registries/controllers.js +70 -71
  324. package/dist/registries/controllers.js.map +1 -1
  325. package/dist/registries/controllers.mjs +69 -73
  326. package/dist/registries/controllers.mjs.map +1 -1
  327. package/dist/registries/custom-fields.js +75 -65
  328. package/dist/registries/custom-fields.js.map +1 -1
  329. package/dist/registries/custom-fields.mjs +74 -67
  330. package/dist/registries/custom-fields.mjs.map +1 -1
  331. package/dist/registries/hooks.js +46 -49
  332. package/dist/registries/hooks.js.map +1 -1
  333. package/dist/registries/hooks.mjs +45 -51
  334. package/dist/registries/hooks.mjs.map +1 -1
  335. package/dist/registries/middlewares.js +49 -51
  336. package/dist/registries/middlewares.js.map +1 -1
  337. package/dist/registries/middlewares.mjs +48 -53
  338. package/dist/registries/middlewares.mjs.map +1 -1
  339. package/dist/registries/models.js +14 -13
  340. package/dist/registries/models.js.map +1 -1
  341. package/dist/registries/models.mjs +13 -14
  342. package/dist/registries/models.mjs.map +1 -1
  343. package/dist/registries/modules.js +39 -36
  344. package/dist/registries/modules.js.map +1 -1
  345. package/dist/registries/modules.mjs +38 -38
  346. package/dist/registries/modules.mjs.map +1 -1
  347. package/dist/registries/namespace.js +21 -20
  348. package/dist/registries/namespace.js.map +1 -1
  349. package/dist/registries/namespace.mjs +20 -23
  350. package/dist/registries/namespace.mjs.map +1 -1
  351. package/dist/registries/plugins.js +23 -20
  352. package/dist/registries/plugins.js.map +1 -1
  353. package/dist/registries/plugins.mjs +22 -22
  354. package/dist/registries/plugins.mjs.map +1 -1
  355. package/dist/registries/policies.js +103 -96
  356. package/dist/registries/policies.js.map +1 -1
  357. package/dist/registries/policies.mjs +102 -98
  358. package/dist/registries/policies.mjs.map +1 -1
  359. package/dist/registries/sanitizers.js +23 -22
  360. package/dist/registries/sanitizers.js.map +1 -1
  361. package/dist/registries/sanitizers.mjs +22 -22
  362. package/dist/registries/sanitizers.mjs.map +1 -1
  363. package/dist/registries/services.js +71 -71
  364. package/dist/registries/services.js.map +1 -1
  365. package/dist/registries/services.mjs +70 -73
  366. package/dist/registries/services.mjs.map +1 -1
  367. package/dist/registries/validators.js +23 -22
  368. package/dist/registries/validators.js.map +1 -1
  369. package/dist/registries/validators.mjs +22 -22
  370. package/dist/registries/validators.mjs.map +1 -1
  371. package/dist/services/auth/index.js +74 -74
  372. package/dist/services/auth/index.js.map +1 -1
  373. package/dist/services/auth/index.mjs +73 -74
  374. package/dist/services/auth/index.mjs.map +1 -1
  375. package/dist/services/config.js +47 -43
  376. package/dist/services/config.js.map +1 -1
  377. package/dist/services/config.mjs +46 -44
  378. package/dist/services/config.mjs.map +1 -1
  379. package/dist/services/content-api/index.js +80 -79
  380. package/dist/services/content-api/index.js.map +1 -1
  381. package/dist/services/content-api/index.mjs +79 -79
  382. package/dist/services/content-api/index.mjs.map +1 -1
  383. package/dist/services/content-api/permissions/engine.js +8 -5
  384. package/dist/services/content-api/permissions/engine.js.map +1 -1
  385. package/dist/services/content-api/permissions/engine.mjs +7 -5
  386. package/dist/services/content-api/permissions/engine.mjs.map +1 -1
  387. package/dist/services/content-api/permissions/index.js +101 -81
  388. package/dist/services/content-api/permissions/index.js.map +1 -1
  389. package/dist/services/content-api/permissions/index.mjs +100 -81
  390. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  391. package/dist/services/content-api/permissions/providers/action.js +17 -14
  392. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  393. package/dist/services/content-api/permissions/providers/action.mjs +16 -16
  394. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  395. package/dist/services/content-api/permissions/providers/condition.js +17 -14
  396. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  397. package/dist/services/content-api/permissions/providers/condition.mjs +16 -16
  398. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  399. package/dist/services/core-store.js +115 -95
  400. package/dist/services/core-store.js.map +1 -1
  401. package/dist/services/core-store.mjs +114 -97
  402. package/dist/services/core-store.mjs.map +1 -1
  403. package/dist/services/cron.js +74 -64
  404. package/dist/services/cron.js.map +1 -1
  405. package/dist/services/cron.mjs +73 -66
  406. package/dist/services/cron.mjs.map +1 -1
  407. package/dist/services/custom-fields.js +9 -7
  408. package/dist/services/custom-fields.js.map +1 -1
  409. package/dist/services/custom-fields.mjs +8 -9
  410. package/dist/services/custom-fields.mjs.map +1 -1
  411. package/dist/services/document-service/attributes/index.js +23 -18
  412. package/dist/services/document-service/attributes/index.js.map +1 -1
  413. package/dist/services/document-service/attributes/index.mjs +22 -19
  414. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  415. package/dist/services/document-service/attributes/transforms.js +16 -15
  416. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  417. package/dist/services/document-service/attributes/transforms.mjs +15 -15
  418. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  419. package/dist/services/document-service/common.js +5 -4
  420. package/dist/services/document-service/common.js.map +1 -1
  421. package/dist/services/document-service/common.mjs +4 -5
  422. package/dist/services/document-service/common.mjs.map +1 -1
  423. package/dist/services/document-service/components.d.ts.map +1 -1
  424. package/dist/services/document-service/components.js +255 -257
  425. package/dist/services/document-service/components.js.map +1 -1
  426. package/dist/services/document-service/components.mjs +254 -262
  427. package/dist/services/document-service/components.mjs.map +1 -1
  428. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  429. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  430. package/dist/services/document-service/draft-and-publish.js +88 -48
  431. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  432. package/dist/services/document-service/draft-and-publish.mjs +87 -54
  433. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  434. package/dist/services/document-service/entries.js +109 -91
  435. package/dist/services/document-service/entries.js.map +1 -1
  436. package/dist/services/document-service/entries.mjs +108 -92
  437. package/dist/services/document-service/entries.mjs.map +1 -1
  438. package/dist/services/document-service/events.d.ts +1 -1
  439. package/dist/services/document-service/events.d.ts.map +1 -1
  440. package/dist/services/document-service/events.js +52 -40
  441. package/dist/services/document-service/events.js.map +1 -1
  442. package/dist/services/document-service/events.mjs +51 -41
  443. package/dist/services/document-service/events.mjs.map +1 -1
  444. package/dist/services/document-service/index.js +53 -33
  445. package/dist/services/document-service/index.js.map +1 -1
  446. package/dist/services/document-service/index.mjs +52 -34
  447. package/dist/services/document-service/index.mjs.map +1 -1
  448. package/dist/services/document-service/internationalization.js +62 -46
  449. package/dist/services/document-service/internationalization.js.map +1 -1
  450. package/dist/services/document-service/internationalization.mjs +61 -50
  451. package/dist/services/document-service/internationalization.mjs.map +1 -1
  452. package/dist/services/document-service/middlewares/errors.js +23 -19
  453. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  454. package/dist/services/document-service/middlewares/errors.mjs +22 -20
  455. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  456. package/dist/services/document-service/middlewares/middleware-manager.js +46 -44
  457. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  458. package/dist/services/document-service/middlewares/middleware-manager.mjs +45 -45
  459. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  460. package/dist/services/document-service/params.js +11 -5
  461. package/dist/services/document-service/params.js.map +1 -1
  462. package/dist/services/document-service/params.mjs +10 -6
  463. package/dist/services/document-service/params.mjs.map +1 -1
  464. package/dist/services/document-service/repository.d.ts.map +1 -1
  465. package/dist/services/document-service/repository.js +354 -319
  466. package/dist/services/document-service/repository.js.map +1 -1
  467. package/dist/services/document-service/repository.mjs +353 -320
  468. package/dist/services/document-service/repository.mjs.map +1 -1
  469. package/dist/services/document-service/transform/data.js +22 -12
  470. package/dist/services/document-service/transform/data.js.map +1 -1
  471. package/dist/services/document-service/transform/data.mjs +21 -13
  472. package/dist/services/document-service/transform/data.mjs.map +1 -1
  473. package/dist/services/document-service/transform/fields.js +26 -17
  474. package/dist/services/document-service/transform/fields.js.map +1 -1
  475. package/dist/services/document-service/transform/fields.mjs +25 -18
  476. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  477. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  478. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  479. package/dist/services/document-service/transform/id-map.js +115 -75
  480. package/dist/services/document-service/transform/id-map.js.map +1 -1
  481. package/dist/services/document-service/transform/id-map.mjs +114 -76
  482. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  483. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  484. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  485. package/dist/services/document-service/transform/id-transform.js +37 -29
  486. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  487. package/dist/services/document-service/transform/id-transform.mjs +36 -30
  488. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  489. package/dist/services/document-service/transform/populate.js +23 -18
  490. package/dist/services/document-service/transform/populate.js.map +1 -1
  491. package/dist/services/document-service/transform/populate.mjs +22 -19
  492. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  493. package/dist/services/document-service/transform/query.js +11 -6
  494. package/dist/services/document-service/transform/query.js.map +1 -1
  495. package/dist/services/document-service/transform/query.mjs +10 -7
  496. package/dist/services/document-service/transform/query.mjs.map +1 -1
  497. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
  498. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  499. package/dist/services/document-service/transform/relations/extract/data-ids.js +70 -54
  500. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  501. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +69 -55
  502. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  503. package/dist/services/document-service/transform/relations/transform/data-ids.js +96 -71
  504. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  505. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +95 -72
  506. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  507. package/dist/services/document-service/transform/relations/transform/default-locale.js +47 -29
  508. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  509. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +46 -30
  510. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  511. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  512. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  513. package/dist/services/document-service/transform/relations/utils/dp.js +52 -26
  514. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  515. package/dist/services/document-service/transform/relations/utils/dp.mjs +51 -27
  516. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  517. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +1 -1
  518. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  519. package/dist/services/document-service/transform/relations/utils/i18n.js +20 -18
  520. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  521. package/dist/services/document-service/transform/relations/utils/i18n.mjs +19 -21
  522. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  523. package/dist/services/document-service/transform/relations/utils/map-relation.js +116 -70
  524. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  525. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +115 -72
  526. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  527. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  528. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  529. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  530. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  531. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  532. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  533. package/dist/services/document-service/utils/populate.d.ts +1 -1
  534. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  535. package/dist/services/document-service/utils/populate.js +66 -42
  536. package/dist/services/document-service/utils/populate.js.map +1 -1
  537. package/dist/services/document-service/utils/populate.mjs +65 -43
  538. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  539. package/dist/services/document-service/utils/unidirectional-relations.d.ts +1 -1
  540. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
  541. package/dist/services/document-service/utils/unidirectional-relations.js +110 -62
  542. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
  543. package/dist/services/document-service/utils/unidirectional-relations.mjs +109 -64
  544. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
  545. package/dist/services/entity-service/index.js +230 -161
  546. package/dist/services/entity-service/index.js.map +1 -1
  547. package/dist/services/entity-service/index.mjs +229 -160
  548. package/dist/services/entity-service/index.mjs.map +1 -1
  549. package/dist/services/entity-validator/blocks-validator.js +135 -103
  550. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  551. package/dist/services/entity-validator/blocks-validator.mjs +134 -104
  552. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  553. package/dist/services/entity-validator/index.d.ts +1 -1
  554. package/dist/services/entity-validator/index.d.ts.map +1 -1
  555. package/dist/services/entity-validator/index.js +362 -367
  556. package/dist/services/entity-validator/index.js.map +1 -1
  557. package/dist/services/entity-validator/index.mjs +358 -364
  558. package/dist/services/entity-validator/index.mjs.map +1 -1
  559. package/dist/services/entity-validator/validators.js +268 -210
  560. package/dist/services/entity-validator/validators.js.map +1 -1
  561. package/dist/services/entity-validator/validators.mjs +267 -216
  562. package/dist/services/entity-validator/validators.mjs.map +1 -1
  563. package/dist/services/errors.js +65 -65
  564. package/dist/services/errors.js.map +1 -1
  565. package/dist/services/errors.mjs +64 -66
  566. package/dist/services/errors.mjs.map +1 -1
  567. package/dist/services/event-hub.js +82 -69
  568. package/dist/services/event-hub.js.map +1 -1
  569. package/dist/services/event-hub.mjs +81 -71
  570. package/dist/services/event-hub.mjs.map +1 -1
  571. package/dist/services/features.js +19 -14
  572. package/dist/services/features.js.map +1 -1
  573. package/dist/services/features.mjs +18 -15
  574. package/dist/services/features.mjs.map +1 -1
  575. package/dist/services/fs.js +41 -40
  576. package/dist/services/fs.js.map +1 -1
  577. package/dist/services/fs.mjs +40 -39
  578. package/dist/services/fs.mjs.map +1 -1
  579. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  580. package/dist/services/metrics/admin-user-hash.js +13 -11
  581. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  582. package/dist/services/metrics/admin-user-hash.mjs +12 -10
  583. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  584. package/dist/services/metrics/index.js +46 -39
  585. package/dist/services/metrics/index.js.map +1 -1
  586. package/dist/services/metrics/index.mjs +45 -41
  587. package/dist/services/metrics/index.mjs.map +1 -1
  588. package/dist/services/metrics/is-truthy.js +13 -6
  589. package/dist/services/metrics/is-truthy.js.map +1 -1
  590. package/dist/services/metrics/is-truthy.mjs +12 -6
  591. package/dist/services/metrics/is-truthy.mjs.map +1 -1
  592. package/dist/services/metrics/middleware.d.ts.map +1 -1
  593. package/dist/services/metrics/middleware.js +37 -22
  594. package/dist/services/metrics/middleware.js.map +1 -1
  595. package/dist/services/metrics/middleware.mjs +36 -24
  596. package/dist/services/metrics/middleware.mjs.map +1 -1
  597. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  598. package/dist/services/metrics/rate-limiter.js +24 -19
  599. package/dist/services/metrics/rate-limiter.js.map +1 -1
  600. package/dist/services/metrics/rate-limiter.mjs +23 -21
  601. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  602. package/dist/services/metrics/sender.d.ts.map +1 -1
  603. package/dist/services/metrics/sender.js +78 -69
  604. package/dist/services/metrics/sender.js.map +1 -1
  605. package/dist/services/metrics/sender.mjs +77 -64
  606. package/dist/services/metrics/sender.mjs.map +1 -1
  607. package/dist/services/query-params.js +13 -10
  608. package/dist/services/query-params.js.map +1 -1
  609. package/dist/services/query-params.mjs +12 -12
  610. package/dist/services/query-params.mjs.map +1 -1
  611. package/dist/services/reloader.js +35 -32
  612. package/dist/services/reloader.js.map +1 -1
  613. package/dist/services/reloader.mjs +34 -33
  614. package/dist/services/reloader.mjs.map +1 -1
  615. package/dist/services/request-context.js +11 -8
  616. package/dist/services/request-context.js.map +1 -1
  617. package/dist/services/request-context.mjs +10 -10
  618. package/dist/services/request-context.mjs.map +1 -1
  619. package/dist/services/server/admin-api.js +11 -10
  620. package/dist/services/server/admin-api.js.map +1 -1
  621. package/dist/services/server/admin-api.mjs +10 -11
  622. package/dist/services/server/admin-api.mjs.map +1 -1
  623. package/dist/services/server/api.js +33 -27
  624. package/dist/services/server/api.js.map +1 -1
  625. package/dist/services/server/api.mjs +32 -26
  626. package/dist/services/server/api.mjs.map +1 -1
  627. package/dist/services/server/compose-endpoint.js +116 -105
  628. package/dist/services/server/compose-endpoint.js.map +1 -1
  629. package/dist/services/server/compose-endpoint.mjs +115 -105
  630. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  631. package/dist/services/server/content-api.js +11 -9
  632. package/dist/services/server/content-api.js.map +1 -1
  633. package/dist/services/server/content-api.mjs +10 -10
  634. package/dist/services/server/content-api.mjs.map +1 -1
  635. package/dist/services/server/http-server.js +48 -44
  636. package/dist/services/server/http-server.js.map +1 -1
  637. package/dist/services/server/http-server.mjs +47 -43
  638. package/dist/services/server/http-server.mjs.map +1 -1
  639. package/dist/services/server/index.js +85 -82
  640. package/dist/services/server/index.js.map +1 -1
  641. package/dist/services/server/index.mjs +84 -81
  642. package/dist/services/server/index.mjs.map +1 -1
  643. package/dist/services/server/koa.js +49 -47
  644. package/dist/services/server/koa.js.map +1 -1
  645. package/dist/services/server/koa.mjs +48 -44
  646. package/dist/services/server/koa.mjs.map +1 -1
  647. package/dist/services/server/middleware.js +86 -82
  648. package/dist/services/server/middleware.js.map +1 -1
  649. package/dist/services/server/middleware.mjs +85 -82
  650. package/dist/services/server/middleware.mjs.map +1 -1
  651. package/dist/services/server/policy.js +24 -17
  652. package/dist/services/server/policy.js.map +1 -1
  653. package/dist/services/server/policy.mjs +23 -18
  654. package/dist/services/server/policy.mjs.map +1 -1
  655. package/dist/services/server/register-middlewares.js +68 -61
  656. package/dist/services/server/register-middlewares.js.map +1 -1
  657. package/dist/services/server/register-middlewares.mjs +67 -63
  658. package/dist/services/server/register-middlewares.mjs.map +1 -1
  659. package/dist/services/server/register-routes.js +109 -66
  660. package/dist/services/server/register-routes.js.map +1 -1
  661. package/dist/services/server/register-routes.mjs +108 -66
  662. package/dist/services/server/register-routes.mjs.map +1 -1
  663. package/dist/services/server/routing.d.ts +10 -0
  664. package/dist/services/server/routing.d.ts.map +1 -1
  665. package/dist/services/server/routing.js +100 -81
  666. package/dist/services/server/routing.js.map +1 -1
  667. package/dist/services/server/routing.mjs +99 -81
  668. package/dist/services/server/routing.mjs.map +1 -1
  669. package/dist/services/utils/dynamic-zones.js +13 -14
  670. package/dist/services/utils/dynamic-zones.js.map +1 -1
  671. package/dist/services/utils/dynamic-zones.mjs +12 -16
  672. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  673. package/dist/services/webhook-runner.js +124 -122
  674. package/dist/services/webhook-runner.js.map +1 -1
  675. package/dist/services/webhook-runner.mjs +123 -121
  676. package/dist/services/webhook-runner.mjs.map +1 -1
  677. package/dist/services/webhook-store.js +132 -99
  678. package/dist/services/webhook-store.js.map +1 -1
  679. package/dist/services/webhook-store.mjs +131 -101
  680. package/dist/services/webhook-store.mjs.map +1 -1
  681. package/dist/services/worker-queue.js +44 -49
  682. package/dist/services/worker-queue.js.map +1 -1
  683. package/dist/services/worker-queue.mjs +43 -49
  684. package/dist/services/worker-queue.mjs.map +1 -1
  685. package/dist/utils/convert-custom-field-type.js +17 -20
  686. package/dist/utils/convert-custom-field-type.js.map +1 -1
  687. package/dist/utils/convert-custom-field-type.mjs +16 -21
  688. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  689. package/dist/utils/cron.js +64 -30
  690. package/dist/utils/cron.js.map +1 -1
  691. package/dist/utils/cron.mjs +63 -31
  692. package/dist/utils/cron.mjs.map +1 -1
  693. package/dist/utils/fetch.js +24 -18
  694. package/dist/utils/fetch.js.map +1 -1
  695. package/dist/utils/fetch.mjs +23 -19
  696. package/dist/utils/fetch.mjs.map +1 -1
  697. package/dist/utils/filepath-to-prop-path.js +20 -28
  698. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  699. package/dist/utils/filepath-to-prop-path.mjs +19 -26
  700. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  701. package/dist/utils/is-initialized.js +21 -12
  702. package/dist/utils/is-initialized.js.map +1 -1
  703. package/dist/utils/is-initialized.mjs +20 -13
  704. package/dist/utils/is-initialized.mjs.map +1 -1
  705. package/dist/utils/lifecycles.js +6 -5
  706. package/dist/utils/lifecycles.js.map +1 -1
  707. package/dist/utils/lifecycles.mjs +5 -6
  708. package/dist/utils/lifecycles.mjs.map +1 -1
  709. package/dist/utils/load-config-file.js +40 -38
  710. package/dist/utils/load-config-file.js.map +1 -1
  711. package/dist/utils/load-config-file.mjs +39 -36
  712. package/dist/utils/load-config-file.mjs.map +1 -1
  713. package/dist/utils/load-files.js +40 -34
  714. package/dist/utils/load-files.js.map +1 -1
  715. package/dist/utils/load-files.mjs +39 -31
  716. package/dist/utils/load-files.mjs.map +1 -1
  717. package/dist/utils/open-browser.js +8 -8
  718. package/dist/utils/open-browser.js.map +1 -1
  719. package/dist/utils/open-browser.mjs +7 -7
  720. package/dist/utils/open-browser.mjs.map +1 -1
  721. package/dist/utils/resolve-working-dirs.js +23 -10
  722. package/dist/utils/resolve-working-dirs.js.map +1 -1
  723. package/dist/utils/resolve-working-dirs.mjs +22 -9
  724. package/dist/utils/resolve-working-dirs.mjs.map +1 -1
  725. package/dist/utils/signals.js +20 -14
  726. package/dist/utils/signals.js.map +1 -1
  727. package/dist/utils/signals.mjs +19 -15
  728. package/dist/utils/signals.mjs.map +1 -1
  729. package/dist/utils/startup-logger.js +107 -83
  730. package/dist/utils/startup-logger.js.map +1 -1
  731. package/dist/utils/startup-logger.mjs +106 -80
  732. package/dist/utils/startup-logger.mjs.map +1 -1
  733. package/dist/utils/transform-content-types-to-models.js +350 -261
  734. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  735. package/dist/utils/transform-content-types-to-models.mjs +349 -269
  736. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  737. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  738. package/dist/utils/update-notifier/index.js +68 -73
  739. package/dist/utils/update-notifier/index.js.map +1 -1
  740. package/dist/utils/update-notifier/index.mjs +67 -67
  741. package/dist/utils/update-notifier/index.mjs.map +1 -1
  742. package/package.json +27 -27
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributes.mjs","sources":["../../../../src/core-api/routes/validation/attributes.ts"],"sourcesContent":["import type { Schema } from '@strapi/types';\n\nimport { relations } from '@strapi/utils';\nimport { z } from 'zod';\n\nimport { BOOLEAN_LITERAL_VALUES } from './constants';\nimport { CoreComponentRouteValidator } from './component';\nimport { CoreContentTypeRouteValidator } from './content-type';\n\n/**\n * Maps a Strapi attribute definition to a corresponding Zod validation schema.\n * This function handles various Strapi attribute types and converts them into\n * appropriate Zod validation schemas with their respective constraints.\n *\n * @param attribute - The Strapi attribute configuration object. Contains type information\n * and validation rules for the attribute.\n *\n * @returns A Zod schema that corresponds to the input attribute's type and validation rules\n *\n * @example\n * ```typescript\n * // String attribute with constraints\n * const stringAttribute = {\n * type: 'string',\n * minLength: 3,\n * maxLength: 50,\n * required: true\n * };\n * const stringSchema = mapAttributeToSchema(stringAttribute);\n *\n * // Enumeration attribute\n * const enumAttribute = {\n * type: 'enumeration',\n * enum: ['draft', 'published', 'archived']\n * };\n * const enumSchema = mapAttributeToSchema(enumAttribute);\n *\n * // Media attribute with multiple files\n * const mediaAttribute = {\n * type: 'media',\n * multiple: true\n * };\n * const mediaSchema = mapAttributeToSchema(mediaAttribute);\n * ```\n *\n * @throws {Error} Throws an error if an unsupported attribute type is provided\n *\n * @todo: Move to @strapi/utils if needed for other validation\n */\nexport const mapAttributeToSchema = (attribute: Schema.Attribute.AnyAttribute): z.Schema => {\n switch (attribute.type) {\n case 'biginteger': {\n const { writable, required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n (schema) => (min !== undefined ? schema.min(min as unknown as number) : schema),\n (schema) => (max !== undefined ? schema.max(max as unknown as number) : schema),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A biginteger field');\n }\n case 'blocks': {\n // TODO: better support blocks data structure\n return z.array(z.any()).describe('A blocks field');\n }\n case 'boolean': {\n const { writable, required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.boolean(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A boolean field');\n }\n case 'component': {\n const { _idmap } = z.globalRegistry;\n\n const set = (id: string, schema: z.ZodType) => {\n if (_idmap.has(id)) {\n _idmap.delete(id);\n }\n\n z.globalRegistry.add(schema, { id });\n };\n\n const { writable, required, min, max, component, repeatable } = attribute;\n\n const existsInGlobalRegistry = _idmap.has(component);\n\n let componentSchema: z.ZodType;\n\n if (existsInGlobalRegistry) {\n componentSchema = _idmap.get(component) as z.ZodType;\n } else {\n set(component, z.any());\n\n const validator = new CoreComponentRouteValidator(strapi, component);\n const schema = validator.entry;\n\n set(component, schema);\n\n componentSchema = schema;\n }\n\n const baseSchema = repeatable ? z.array(componentSchema) : componentSchema;\n\n const schema = augmentSchema(baseSchema, [\n (schema) => (min !== undefined && schema instanceof z.ZodArray ? schema.min(min) : schema),\n (schema) => (max !== undefined && schema instanceof z.ZodArray ? schema.max(max) : schema),\n maybeRequired(required),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A component field');\n }\n case 'date': {\n const { writable, required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A date field');\n }\n case 'datetime': {\n const { writable, required, default: defaultValue } = attribute;\n\n const baseSchema = z.string();\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A datetime field');\n }\n case 'decimal': {\n const { writable, required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.number(), [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A decimal field');\n }\n // TODO(zodV4): use the components' reference type instead of z.any\n // TODO(zodV4): use discriminated unions to handle the different types of components\n case 'dynamiczone': {\n const { writable, required, min, max } = attribute;\n\n const baseSchema = z.array(z.any());\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A dynamic zone field');\n }\n case 'email': {\n const { writable, required, default: defaultValue, minLength, maxLength } = attribute;\n\n const baseSchema = z.string().email();\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('An email field');\n }\n case 'enumeration': {\n const { writable, required, default: defaultValue, enum: enumValues } = attribute;\n\n const baseSchema = z.enum(enumValues as [string]);\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('An enum field');\n }\n case 'float': {\n const { writable, required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.number(), [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeReadonly(writable),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A float field');\n }\n case 'integer': {\n const { writable, required, min, max, default: defaultValue } = attribute;\n\n const baseSchema = z.number().int();\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeReadonly(writable),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A float field');\n }\n // TODO(zodV4): use reference to create fake cyclical JSON values\n // see https://zod.dev/?id=json-type for more info\n case 'json': {\n const { writable, required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.any(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A JSON field');\n }\n case 'media': {\n const { writable, required, multiple } = attribute;\n\n const uploadPlugin = strapi.plugin('upload');\n // @ts-expect-error there is a mismatch between a raw module and a loader module\n const fileSchema = uploadPlugin.contentTypes.file as Struct.ContentTypeSchema;\n\n const mediaSchema = safeSchemaCreation(\n fileSchema.uid,\n () => new CoreContentTypeRouteValidator(strapi, fileSchema.uid).document\n );\n\n const baseSchema = multiple ? z.array(mediaSchema) : mediaSchema;\n\n const schema = augmentSchema(baseSchema, [maybeRequired(required), maybeReadonly(writable)]);\n\n return schema.describe('A media field');\n }\n // TODO(zodV4): handle polymorphic relations using discriminated unions\n case 'relation': {\n // Extract writable and required flags from the attribute\n if (!('target' in attribute)) {\n return z.any();\n }\n\n const { writable, required, target } = attribute as Schema.Attribute.RelationWithTarget;\n\n const targetSchema = safeSchemaCreation(\n target,\n () => new CoreContentTypeRouteValidator(strapi, target).document\n );\n\n const baseSchema = relations.isAnyToMany(attribute) ? z.array(targetSchema) : targetSchema;\n\n // Add required and readonly constraints based on attribute flags\n const schema = augmentSchema(baseSchema, [maybeRequired(required), maybeReadonly(writable)]);\n\n return schema.describe('A relational field');\n }\n case 'password':\n case 'text':\n case 'richtext':\n case 'string': {\n const { writable, required, default: defaultValue, minLength, maxLength } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe(`A ${attribute.type} field`);\n }\n case 'time': {\n const { writable, required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A time field');\n }\n case 'timestamp': {\n const { writable, required, default: defaultValue } = attribute;\n\n const baseSchema = z.union([z.string(), z.number()]);\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A timestamp field');\n }\n case 'uid': {\n const { writable, required, default: defaultValue, minLength, maxLength } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n maybeReadonly(writable),\n ]);\n\n return schema.describe('A UID field');\n }\n default:\n throw new Error(`Unsupported attribute type: ${(attribute as any).type}`);\n }\n};\n\n/**\n * Maps a Strapi attribute definition to a corresponding Zod validation schema.\n * This function handles various Strapi attribute types and converts them into\n * appropriate Zod validation schemas with their respective constraints.\n *\n * @param attribute - The Strapi attribute configuration object. Contains type information\n * and validation rules for the attribute.\n *\n * @returns A Zod schema that corresponds to the input attribute's type and validation rules\n *\n * @example\n * ```typescript\n * // String attribute with constraints\n * const stringAttribute = {\n * type: 'string',\n * minLength: 3,\n * maxLength: 50,\n * required: true\n * };\n * const stringSchema = mapAttributeToInputSchema(stringAttribute);\n *\n * // Enumeration attribute\n * const enumAttribute = {\n * type: 'enumeration',\n * enum: ['draft', 'published', 'archived']\n * };\n * const enumSchema = mapAttributeToInputSchema(enumAttribute);\n *\n * // Media attribute with multiple files\n * const mediaAttribute = {\n * type: 'media',\n * multiple: true\n * };\n * const mediaSchema = mapAttributeToInputSchema(mediaAttribute);\n * ```\n *\n * @throws {Error} Throws an error if an unsupported attribute type is provided\n *\n * @remarks\n * - Complex types (component, relation, dynamic zone) use placeholder schemas\n *\n * @todo: Move to @strapi/utils if needed for other validation\n */\nexport const mapAttributeToInputSchema = (attribute: Schema.Attribute.AnyAttribute): z.Schema => {\n switch (attribute.type) {\n case 'biginteger': {\n const { required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n (schema) => (min !== undefined ? schema.min(min as unknown as number) : schema),\n (schema) => (max !== undefined ? schema.max(max as unknown as number) : schema),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A biginteger field');\n }\n case 'blocks': {\n // TODO: better support blocks data structure\n return z.array(z.any()).describe('A blocks field');\n }\n case 'boolean': {\n const { required, default: defaultValue } = attribute;\n\n const baseSchema = z.enum(BOOLEAN_LITERAL_VALUES);\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A boolean field');\n }\n // TODO(zodV4): use the component reference type instead of z.any\n case 'component': {\n const { required, repeatable, min, max } = attribute;\n\n const baseSchema = repeatable ? z.array(z.any()) : z.any();\n\n const schema = augmentSchema(baseSchema, [\n (schema) => (min !== undefined && schema instanceof z.ZodArray ? schema.min(min) : schema),\n (schema) => (max !== undefined && schema instanceof z.ZodArray ? schema.max(max) : schema),\n maybeRequired(required),\n ]);\n\n return schema.describe('A component field');\n }\n case 'date': {\n const { required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A date field');\n }\n case 'datetime': {\n const { required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A datetime field');\n }\n case 'decimal': {\n const { required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.number(), [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A decimal field');\n }\n // TODO(zodV4): use the components' reference type instead of z.any\n // TODO(zodV4): use discriminated unions to handle the different types of components\n case 'dynamiczone': {\n const { required, min, max } = attribute;\n\n const baseSchema = z.array(z.any());\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n ]);\n\n return schema.describe('A dynamic zone field');\n }\n case 'email': {\n const { required, default: defaultValue, minLength, maxLength } = attribute;\n\n const baseSchema = z.string().email();\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('An email field');\n }\n case 'enumeration': {\n const { required, default: defaultValue, enum: enumValues } = attribute;\n\n const baseSchema = z.enum(enumValues as [string]);\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('An enum field');\n }\n case 'float': {\n const { required, min, max, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.number(), [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A float field');\n }\n case 'integer': {\n const { required, min, max, default: defaultValue } = attribute;\n\n const baseSchema = z.number().int();\n\n const schema = augmentSchema(baseSchema, [\n maybeWithMinMax(min, max),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A float field');\n }\n // TODO(zodV4): use reference to create fake cyclical JSON values\n // see https://zod.dev/?id=json-type for more info\n case 'json': {\n const { required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.any(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A JSON field');\n }\n case 'media': {\n const { required, multiple } = attribute;\n\n const baseSchema = multiple ? z.array(z.any()) : z.any();\n\n const schema = augmentSchema(baseSchema, [maybeRequired(required)]);\n\n return schema.describe('A media field');\n }\n // TODO(zodV4): use reference for relations types\n // TODO(zodV4): handle polymorphic relations using discriminated unions\n // TODO(zodv4): add the relation ordering API https://docs.strapi.io/cms/api/rest/relations\n case 'relation': {\n const { required } = attribute;\n\n const isToMany = relations.isAnyToMany(attribute);\n const uuid = z.string().uuid();\n const baseSchema = isToMany ? z.array(uuid) : uuid;\n\n const schema = augmentSchema(baseSchema, [maybeRequired(required)]);\n\n return schema.describe('A relational field');\n }\n case 'password':\n case 'text':\n case 'richtext':\n case 'string': {\n const { required, default: defaultValue, minLength, maxLength } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe(`A ${attribute.type} field`);\n }\n case 'time': {\n const { required, default: defaultValue } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A time field');\n }\n case 'timestamp': {\n const { required, default: defaultValue } = attribute;\n\n const baseSchema = z.union([z.string(), z.number()]);\n\n const schema = augmentSchema(baseSchema, [\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A timestamp field');\n }\n case 'uid': {\n const { required, default: defaultValue, minLength, maxLength } = attribute;\n\n const schema = augmentSchema(z.string(), [\n maybeWithMinMax(minLength, maxLength),\n maybeRequired(required),\n maybeWithDefault(defaultValue),\n ]);\n\n return schema.describe('A UID field');\n }\n default:\n throw new Error(`Unsupported attribute type: ${(attribute as any).type}`);\n }\n};\n\nconst maybeRequired = (required?: boolean) => {\n return <T extends z.Schema>(schema: T) => (required !== true ? schema.optional() : schema);\n};\n\nconst maybeReadonly = (writable?: boolean) => {\n return <T extends z.Schema>(schema: T) => (writable !== false ? schema : schema.readonly());\n};\n\nconst maybeWithDefault = (defaultValue?: unknown) => {\n return <T extends z.Schema>(schema: T) => {\n return defaultValue !== undefined\n ? schema.default(typeof defaultValue === 'function' ? defaultValue() : defaultValue)\n : schema;\n };\n};\n\nconst maybeWithMinMax = (min?: number, max?: number) => {\n return <R extends z.ZodString | z.ZodNumber | z.ZodArray<z.ZodAny>>(schema: R) => {\n return min !== undefined && max !== undefined ? schema.min(min).max(max) : schema;\n };\n};\n\nconst augmentSchema = <T extends z.Schema>(schema: T, modifiers: ((schema: T) => z.Schema)[]) => {\n return modifiers.reduce((acc, modifier) => modifier(acc) as T, schema);\n};\n\nconst safeGlobalRegistrySet = (id: string, schema: z.ZodType) => {\n const { _idmap } = z.globalRegistry;\n\n // Allow safe overrides in the ID map\n if (_idmap.has(id)) {\n _idmap.delete(id);\n }\n\n z.globalRegistry.add(schema, { id });\n};\n\nconst safeSchemaCreation = (id: string, callback: () => z.ZodType) => {\n const { _idmap } = z.globalRegistry;\n\n const existsInGlobalRegistry = _idmap.has(id);\n\n if (existsInGlobalRegistry) {\n return _idmap.get(id) as z.ZodType;\n }\n\n // Temporary any placeholder before replacing with the actual schema type\n // Used to prevent infinite loops in cyclical data structures\n safeGlobalRegistrySet(id, z.any());\n\n const schema = callback();\n\n safeGlobalRegistrySet(id, schema);\n\n return schema;\n};\n"],"names":["mapAttributeToSchema","attribute","type","writable","required","min","max","default","defaultValue","schema","augmentSchema","z","string","undefined","maybeRequired","maybeWithDefault","maybeReadonly","describe","array","any","boolean","_idmap","globalRegistry","set","id","has","delete","add","component","repeatable","existsInGlobalRegistry","componentSchema","get","validator","CoreComponentRouteValidator","strapi","entry","baseSchema","ZodArray","number","maybeWithMinMax","minLength","maxLength","email","enum","enumValues","int","multiple","uploadPlugin","plugin","fileSchema","contentTypes","file","mediaSchema","safeSchemaCreation","uid","CoreContentTypeRouteValidator","document","target","targetSchema","relations","isAnyToMany","union","Error","mapAttributeToInputSchema","BOOLEAN_LITERAL_VALUES","isToMany","uuid","optional","readonly","modifiers","reduce","acc","modifier","safeGlobalRegistrySet","callback"],"mappings":";;;;;;AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwCaA,MAAAA,oBAAAA,GAAuB,CAACC,SAAAA,GAAAA;AACnC,IAAA,OAAQA,UAAUC,IAAI;QACpB,KAAK,YAAA;AAAc,YAAA;AACjB,gBAAA,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,GAAG,EAAEC,OAAAA,EAASC,YAAY,EAAE,GAAGP,SAAAA;AAEhE,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAEC,CAAAA,MAAM,EAAI,EAAA;AACvC,oBAAA,CAACH,SAAYJ,GAAQQ,KAAAA,SAAAA,GAAYJ,MAAOJ,CAAAA,GAAG,CAACA,GAA4BI,CAAAA,GAAAA,MAAAA;AACxE,oBAAA,CAACA,SAAYH,GAAQO,KAAAA,SAAAA,GAAYJ,MAAOH,CAAAA,GAAG,CAACA,GAA4BG,CAAAA,GAAAA,MAAAA;oBACxEK,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA,CAAAA;oBACjBQ,aAAcb,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,oBAAA,CAAA;AACzB;QACA,KAAK,QAAA;AAAU,YAAA;;AAEb,gBAAA,OAAON,EAAEO,KAAK,CAACP,EAAEQ,GAAG,EAAA,CAAA,CAAIF,QAAQ,CAAC,gBAAA,CAAA;AACnC;QACA,KAAK,SAAA;AAAW,YAAA;gBACd,MAAM,EAAEd,QAAQ,EAAEC,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAE,GAAGP,SAAAA;AAEtD,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAES,CAAAA,OAAO,EAAI,EAAA;oBACxCN,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA,CAAAA;oBACjBQ,aAAcb,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,iBAAA,CAAA;AACzB;QACA,KAAK,WAAA;AAAa,YAAA;AAChB,gBAAA,MAAM,EAAEI,MAAM,EAAE,GAAGV,EAAEW,cAAc;gBAEnC,MAAMC,GAAAA,GAAM,CAACC,EAAYf,EAAAA,MAAAA,GAAAA;oBACvB,IAAIY,MAAAA,CAAOI,GAAG,CAACD,EAAK,CAAA,EAAA;AAClBH,wBAAAA,MAAAA,CAAOK,MAAM,CAACF,EAAAA,CAAAA;AAChB;AAEAb,oBAAAA,CAAAA,CAAEW,cAAc,CAACK,GAAG,CAAClB,MAAQ,EAAA;AAAEe,wBAAAA;AAAG,qBAAA,CAAA;AACpC,iBAAA;AAEA,gBAAA,MAAM,EAAErB,QAAQ,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,GAAG,EAAEsB,SAAS,EAAEC,UAAU,EAAE,GAAG5B,SAAAA;gBAEhE,MAAM6B,sBAAAA,GAAyBT,MAAOI,CAAAA,GAAG,CAACG,SAAAA,CAAAA;gBAE1C,IAAIG,eAAAA;AAEJ,gBAAA,IAAID,sBAAwB,EAAA;oBAC1BC,eAAkBV,GAAAA,MAAAA,CAAOW,GAAG,CAACJ,SAAAA,CAAAA;iBACxB,MAAA;oBACLL,GAAIK,CAAAA,SAAAA,EAAWjB,EAAEQ,GAAG,EAAA,CAAA;oBAEpB,MAAMc,SAAAA,GAAY,IAAIC,2BAAAA,CAA4BC,MAAQP,EAAAA,SAAAA,CAAAA;oBAC1D,MAAMnB,MAAAA,GAASwB,UAAUG,KAAK;AAE9Bb,oBAAAA,GAAAA,CAAIK,SAAWnB,EAAAA,MAAAA,CAAAA;oBAEfsB,eAAkBtB,GAAAA,MAAAA;AACpB;AAEA,gBAAA,MAAM4B,UAAaR,GAAAA,UAAAA,GAAalB,CAAEO,CAAAA,KAAK,CAACa,eAAmBA,CAAAA,GAAAA,eAAAA;gBAE3D,MAAMtB,MAAAA,GAASC,cAAc2B,UAAY,EAAA;oBACvC,CAAC5B,MAAAA,GAAYJ,GAAQQ,KAAAA,SAAAA,IAAaJ,MAAkBE,YAAAA,CAAAA,CAAE2B,QAAQ,GAAG7B,MAAAA,CAAOJ,GAAG,CAACA,GAAOI,CAAAA,GAAAA,MAAAA;oBACnF,CAACA,MAAAA,GAAYH,GAAQO,KAAAA,SAAAA,IAAaJ,MAAkBE,YAAAA,CAAAA,CAAE2B,QAAQ,GAAG7B,MAAAA,CAAOH,GAAG,CAACA,GAAOG,CAAAA,GAAAA,MAAAA;oBACnFK,aAAcV,CAAAA,QAAAA,CAAAA;oBACdY,aAAcb,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,mBAAA,CAAA;AACzB;QACA,KAAK,MAAA;AAAQ,YAAA;gBACX,MAAM,EAAEd,QAAQ,EAAEC,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAE,GAAGP,SAAAA;AAEtD,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAEC,CAAAA,MAAM,EAAI,EAAA;oBACvCE,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA,CAAAA;oBACjBQ,aAAcb,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,cAAA,CAAA;AACzB;QACA,KAAK,UAAA;AAAY,YAAA;gBACf,MAAM,EAAEd,QAAQ,EAAEC,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAE,GAAGP,SAAAA;gBAEtD,MAAMoC,UAAAA,GAAa1B,EAAEC,MAAM,EAAA;gBAE3B,MAAMH,MAAAA,GAASC,cAAc2B,UAAY,EAAA;oBACvCvB,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA,CAAAA;oBACjBQ,aAAcb,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,kBAAA,CAAA;AACzB;QACA,KAAK,SAAA;AAAW,YAAA;AACd,gBAAA,MAAM,EAAEd,QAAQ,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,GAAG,EAAEC,OAAAA,EAASC,YAAY,EAAE,GAAGP,SAAAA;AAEhE,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAE4B,CAAAA,MAAM,EAAI,EAAA;AACvCC,oBAAAA,eAAAA,CAAgBnC,GAAKC,EAAAA,GAAAA,CAAAA;oBACrBQ,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA,CAAAA;oBACjBQ,aAAcb,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,iBAAA,CAAA;AACzB;;;QAGA,KAAK,aAAA;AAAe,YAAA;gBAClB,MAAM,EAAEd,QAAQ,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,GAAG,EAAE,GAAGL,SAAAA;AAEzC,gBAAA,MAAMoC,UAAa1B,GAAAA,CAAAA,CAAEO,KAAK,CAACP,EAAEQ,GAAG,EAAA,CAAA;gBAEhC,MAAMV,MAAAA,GAASC,cAAc2B,UAAY,EAAA;AACvCG,oBAAAA,eAAAA,CAAgBnC,GAAKC,EAAAA,GAAAA,CAAAA;oBACrBQ,aAAcV,CAAAA,QAAAA,CAAAA;oBACdY,aAAcb,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,sBAAA,CAAA;AACzB;QACA,KAAK,OAAA;AAAS,YAAA;AACZ,gBAAA,MAAM,EAAEd,QAAQ,EAAEC,QAAQ,EAAEG,OAAAA,EAASC,YAAY,EAAEiC,SAAS,EAAEC,SAAS,EAAE,GAAGzC,SAAAA;AAE5E,gBAAA,MAAMoC,UAAa1B,GAAAA,CAAAA,CAAEC,MAAM,EAAA,CAAG+B,KAAK,EAAA;gBAEnC,MAAMlC,MAAAA,GAASC,cAAc2B,UAAY,EAAA;AACvCG,oBAAAA,eAAAA,CAAgBC,SAAWC,EAAAA,SAAAA,CAAAA;oBAC3B5B,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA,CAAAA;oBACjBQ,aAAcb,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,gBAAA,CAAA;AACzB;QACA,KAAK,aAAA;AAAe,YAAA;gBAClB,MAAM,EAAEd,QAAQ,EAAEC,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAEoC,IAAAA,EAAMC,UAAU,EAAE,GAAG5C,SAAAA;gBAExE,MAAMoC,UAAAA,GAAa1B,CAAEiC,CAAAA,IAAI,CAACC,UAAAA,CAAAA;gBAE1B,MAAMpC,MAAAA,GAASC,cAAc2B,UAAY,EAAA;oBACvCvB,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA,CAAAA;oBACjBQ,aAAcb,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,eAAA,CAAA;AACzB;QACA,KAAK,OAAA;AAAS,YAAA;AACZ,gBAAA,MAAM,EAAEd,QAAQ,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,GAAG,EAAEC,OAAAA,EAASC,YAAY,EAAE,GAAGP,SAAAA;AAEhE,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAE4B,CAAAA,MAAM,EAAI,EAAA;AACvCC,oBAAAA,eAAAA,CAAgBnC,GAAKC,EAAAA,GAAAA,CAAAA;oBACrBQ,aAAcV,CAAAA,QAAAA,CAAAA;oBACdY,aAAcb,CAAAA,QAAAA,CAAAA;oBACdY,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,eAAA,CAAA;AACzB;QACA,KAAK,SAAA;AAAW,YAAA;AACd,gBAAA,MAAM,EAAEd,QAAQ,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,GAAG,EAAEC,OAAAA,EAASC,YAAY,EAAE,GAAGP,SAAAA;AAEhE,gBAAA,MAAMoC,UAAa1B,GAAAA,CAAAA,CAAE4B,MAAM,EAAA,CAAGO,GAAG,EAAA;gBAEjC,MAAMrC,MAAAA,GAASC,cAAc2B,UAAY,EAAA;AACvCG,oBAAAA,eAAAA,CAAgBnC,GAAKC,EAAAA,GAAAA,CAAAA;oBACrBQ,aAAcV,CAAAA,QAAAA,CAAAA;oBACdY,aAAcb,CAAAA,QAAAA,CAAAA;oBACdY,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,eAAA,CAAA;AACzB;;;QAGA,KAAK,MAAA;AAAQ,YAAA;gBACX,MAAM,EAAEd,QAAQ,EAAEC,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAE,GAAGP,SAAAA;AAEtD,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAEQ,CAAAA,GAAG,EAAI,EAAA;oBACpCL,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA,CAAAA;oBACjBQ,aAAcb,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,cAAA,CAAA;AACzB;QACA,KAAK,OAAA;AAAS,YAAA;AACZ,gBAAA,MAAM,EAAEd,QAAQ,EAAEC,QAAQ,EAAE2C,QAAQ,EAAE,GAAG9C,SAAAA;gBAEzC,MAAM+C,YAAAA,GAAeb,MAAOc,CAAAA,MAAM,CAAC,QAAA,CAAA;;AAEnC,gBAAA,MAAMC,UAAaF,GAAAA,YAAAA,CAAaG,YAAY,CAACC,IAAI;AAEjD,gBAAA,MAAMC,WAAcC,GAAAA,kBAAAA,CAClBJ,UAAWK,CAAAA,GAAG,EACd,IAAM,IAAIC,6BAAAA,CAA8BrB,MAAQe,EAAAA,UAAAA,CAAWK,GAAG,CAAA,CAAEE,QAAQ,CAAA;AAG1E,gBAAA,MAAMpB,UAAaU,GAAAA,QAAAA,GAAWpC,CAAEO,CAAAA,KAAK,CAACmC,WAAeA,CAAAA,GAAAA,WAAAA;gBAErD,MAAM5C,MAAAA,GAASC,cAAc2B,UAAY,EAAA;oBAACvB,aAAcV,CAAAA,QAAAA,CAAAA;oBAAWY,aAAcb,CAAAA,QAAAA;AAAU,iBAAA,CAAA;gBAE3F,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,eAAA,CAAA;AACzB;;QAEA,KAAK,UAAA;AAAY,YAAA;;AAEf,gBAAA,IAAI,EAAE,QAAYhB,IAAAA,SAAQ,CAAI,EAAA;AAC5B,oBAAA,OAAOU,EAAEQ,GAAG,EAAA;AACd;AAEA,gBAAA,MAAM,EAAEhB,QAAQ,EAAEC,QAAQ,EAAEsD,MAAM,EAAE,GAAGzD,SAAAA;gBAEvC,MAAM0D,YAAAA,GAAeL,mBACnBI,MACA,EAAA,IAAM,IAAIF,6BAA8BrB,CAAAA,MAAAA,EAAQuB,QAAQD,QAAQ,CAAA;gBAGlE,MAAMpB,UAAAA,GAAauB,UAAUC,WAAW,CAAC5D,aAAaU,CAAEO,CAAAA,KAAK,CAACyC,YAAgBA,CAAAA,GAAAA,YAAAA;;gBAG9E,MAAMlD,MAAAA,GAASC,cAAc2B,UAAY,EAAA;oBAACvB,aAAcV,CAAAA,QAAAA,CAAAA;oBAAWY,aAAcb,CAAAA,QAAAA;AAAU,iBAAA,CAAA;gBAE3F,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,oBAAA,CAAA;AACzB;QACA,KAAK,UAAA;QACL,KAAK,MAAA;QACL,KAAK,UAAA;QACL,KAAK,QAAA;AAAU,YAAA;AACb,gBAAA,MAAM,EAAEd,QAAQ,EAAEC,QAAQ,EAAEG,OAAAA,EAASC,YAAY,EAAEiC,SAAS,EAAEC,SAAS,EAAE,GAAGzC,SAAAA;AAE5E,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAEC,CAAAA,MAAM,EAAI,EAAA;AACvC4B,oBAAAA,eAAAA,CAAgBC,SAAWC,EAAAA,SAAAA,CAAAA;oBAC3B5B,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA,CAAAA;oBACjBQ,aAAcb,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,CAAC,EAAE,EAAEhB,SAAUC,CAAAA,IAAI,CAAC,MAAM,CAAC,CAAA;AACpD;QACA,KAAK,MAAA;AAAQ,YAAA;gBACX,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAE,GAAGP,SAAAA;AAEtD,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAEC,CAAAA,MAAM,EAAI,EAAA;oBACvCE,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA,CAAAA;oBACjBQ,aAAcb,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,cAAA,CAAA;AACzB;QACA,KAAK,WAAA;AAAa,YAAA;gBAChB,MAAM,EAAEd,QAAQ,EAAEC,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAE,GAAGP,SAAAA;gBAEtD,MAAMoC,UAAAA,GAAa1B,CAAEmD,CAAAA,KAAK,CAAC;AAACnD,oBAAAA,CAAAA,CAAEC,MAAM,EAAA;AAAID,oBAAAA,CAAAA,CAAE4B,MAAM;AAAG,iBAAA,CAAA;gBAEnD,MAAM9B,MAAAA,GAASC,cAAc2B,UAAY,EAAA;oBACvCvB,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA,CAAAA;oBACjBQ,aAAcb,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,mBAAA,CAAA;AACzB;QACA,KAAK,KAAA;AAAO,YAAA;AACV,gBAAA,MAAM,EAAEd,QAAQ,EAAEC,QAAQ,EAAEG,OAAAA,EAASC,YAAY,EAAEiC,SAAS,EAAEC,SAAS,EAAE,GAAGzC,SAAAA;AAE5E,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAEC,CAAAA,MAAM,EAAI,EAAA;AACvC4B,oBAAAA,eAAAA,CAAgBC,SAAWC,EAAAA,SAAAA,CAAAA;oBAC3B5B,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA,CAAAA;oBACjBQ,aAAcb,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOM,MAAAA,CAAOQ,QAAQ,CAAC,aAAA,CAAA;AACzB;AACA,QAAA;YACE,MAAM,IAAI8C,MAAM,CAAC,4BAA4B,EAAE,SAAC9D,CAAkBC,IAAI,CAAC,CAAC,CAAA;AAC5E;AACF;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2Ca8D,MAAAA,yBAAAA,GAA4B,CAAC/D,SAAAA,GAAAA;AACxC,IAAA,OAAQA,UAAUC,IAAI;QACpB,KAAK,YAAA;AAAc,YAAA;gBACjB,MAAM,EAAEE,QAAQ,EAAEC,GAAG,EAAEC,GAAG,EAAEC,OAAAA,EAASC,YAAY,EAAE,GAAGP,SAAAA;AAEtD,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAEC,CAAAA,MAAM,EAAI,EAAA;AACvC,oBAAA,CAACH,SAAYJ,GAAQQ,KAAAA,SAAAA,GAAYJ,MAAOJ,CAAAA,GAAG,CAACA,GAA4BI,CAAAA,GAAAA,MAAAA;AACxE,oBAAA,CAACA,SAAYH,GAAQO,KAAAA,SAAAA,GAAYJ,MAAOH,CAAAA,GAAG,CAACA,GAA4BG,CAAAA,GAAAA,MAAAA;oBACxEK,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,oBAAA,CAAA;AACzB;QACA,KAAK,QAAA;AAAU,YAAA;;AAEb,gBAAA,OAAON,EAAEO,KAAK,CAACP,EAAEQ,GAAG,EAAA,CAAA,CAAIF,QAAQ,CAAC,gBAAA,CAAA;AACnC;QACA,KAAK,SAAA;AAAW,YAAA;AACd,gBAAA,MAAM,EAAEb,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAE,GAAGP,SAAAA;gBAE5C,MAAMoC,UAAAA,GAAa1B,CAAEiC,CAAAA,IAAI,CAACqB,sBAAAA,CAAAA;gBAE1B,MAAMxD,MAAAA,GAASC,cAAc2B,UAAY,EAAA;oBACvCvB,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,iBAAA,CAAA;AACzB;;QAEA,KAAK,WAAA;AAAa,YAAA;gBAChB,MAAM,EAAEb,QAAQ,EAAEyB,UAAU,EAAExB,GAAG,EAAEC,GAAG,EAAE,GAAGL,SAAAA;gBAE3C,MAAMoC,UAAAA,GAAaR,aAAalB,CAAEO,CAAAA,KAAK,CAACP,CAAEQ,CAAAA,GAAG,EAAMR,CAAAA,GAAAA,CAAAA,CAAEQ,GAAG,EAAA;gBAExD,MAAMV,MAAAA,GAASC,cAAc2B,UAAY,EAAA;oBACvC,CAAC5B,MAAAA,GAAYJ,GAAQQ,KAAAA,SAAAA,IAAaJ,MAAkBE,YAAAA,CAAAA,CAAE2B,QAAQ,GAAG7B,MAAAA,CAAOJ,GAAG,CAACA,GAAOI,CAAAA,GAAAA,MAAAA;oBACnF,CAACA,MAAAA,GAAYH,GAAQO,KAAAA,SAAAA,IAAaJ,MAAkBE,YAAAA,CAAAA,CAAE2B,QAAQ,GAAG7B,MAAAA,CAAOH,GAAG,CAACA,GAAOG,CAAAA,GAAAA,MAAAA;oBACnFK,aAAcV,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOK,MAAAA,CAAOQ,QAAQ,CAAC,mBAAA,CAAA;AACzB;QACA,KAAK,MAAA;AAAQ,YAAA;AACX,gBAAA,MAAM,EAAEb,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAE,GAAGP,SAAAA;AAE5C,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAEC,CAAAA,MAAM,EAAI,EAAA;oBACvCE,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,cAAA,CAAA;AACzB;QACA,KAAK,UAAA;AAAY,YAAA;AACf,gBAAA,MAAM,EAAEb,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAE,GAAGP,SAAAA;AAE5C,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAEC,CAAAA,MAAM,EAAI,EAAA;oBACvCE,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,kBAAA,CAAA;AACzB;QACA,KAAK,SAAA;AAAW,YAAA;gBACd,MAAM,EAAEb,QAAQ,EAAEC,GAAG,EAAEC,GAAG,EAAEC,OAAAA,EAASC,YAAY,EAAE,GAAGP,SAAAA;AAEtD,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAE4B,CAAAA,MAAM,EAAI,EAAA;AACvCC,oBAAAA,eAAAA,CAAgBnC,GAAKC,EAAAA,GAAAA,CAAAA;oBACrBQ,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,iBAAA,CAAA;AACzB;;;QAGA,KAAK,aAAA;AAAe,YAAA;AAClB,gBAAA,MAAM,EAAEb,QAAQ,EAAEC,GAAG,EAAEC,GAAG,EAAE,GAAGL,SAAAA;AAE/B,gBAAA,MAAMoC,UAAa1B,GAAAA,CAAAA,CAAEO,KAAK,CAACP,EAAEQ,GAAG,EAAA,CAAA;gBAEhC,MAAMV,MAAAA,GAASC,cAAc2B,UAAY,EAAA;AACvCG,oBAAAA,eAAAA,CAAgBnC,GAAKC,EAAAA,GAAAA,CAAAA;oBACrBQ,aAAcV,CAAAA,QAAAA;AACf,iBAAA,CAAA;gBAED,OAAOK,MAAAA,CAAOQ,QAAQ,CAAC,sBAAA,CAAA;AACzB;QACA,KAAK,OAAA;AAAS,YAAA;gBACZ,MAAM,EAAEb,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAEiC,SAAS,EAAEC,SAAS,EAAE,GAAGzC,SAAAA;AAElE,gBAAA,MAAMoC,UAAa1B,GAAAA,CAAAA,CAAEC,MAAM,EAAA,CAAG+B,KAAK,EAAA;gBAEnC,MAAMlC,MAAAA,GAASC,cAAc2B,UAAY,EAAA;AACvCG,oBAAAA,eAAAA,CAAgBC,SAAWC,EAAAA,SAAAA,CAAAA;oBAC3B5B,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,gBAAA,CAAA;AACzB;QACA,KAAK,aAAA;AAAe,YAAA;gBAClB,MAAM,EAAEb,QAAQ,EAAEG,OAAAA,EAASC,YAAY,EAAEoC,IAAAA,EAAMC,UAAU,EAAE,GAAG5C,SAAAA;gBAE9D,MAAMoC,UAAAA,GAAa1B,CAAEiC,CAAAA,IAAI,CAACC,UAAAA,CAAAA;gBAE1B,MAAMpC,MAAAA,GAASC,cAAc2B,UAAY,EAAA;oBACvCvB,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,eAAA,CAAA;AACzB;QACA,KAAK,OAAA;AAAS,YAAA;gBACZ,MAAM,EAAEb,QAAQ,EAAEC,GAAG,EAAEC,GAAG,EAAEC,OAAAA,EAASC,YAAY,EAAE,GAAGP,SAAAA;AAEtD,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAE4B,CAAAA,MAAM,EAAI,EAAA;AACvCC,oBAAAA,eAAAA,CAAgBnC,GAAKC,EAAAA,GAAAA,CAAAA;oBACrBQ,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,eAAA,CAAA;AACzB;QACA,KAAK,SAAA;AAAW,YAAA;gBACd,MAAM,EAAEb,QAAQ,EAAEC,GAAG,EAAEC,GAAG,EAAEC,OAAAA,EAASC,YAAY,EAAE,GAAGP,SAAAA;AAEtD,gBAAA,MAAMoC,UAAa1B,GAAAA,CAAAA,CAAE4B,MAAM,EAAA,CAAGO,GAAG,EAAA;gBAEjC,MAAMrC,MAAAA,GAASC,cAAc2B,UAAY,EAAA;AACvCG,oBAAAA,eAAAA,CAAgBnC,GAAKC,EAAAA,GAAAA,CAAAA;oBACrBQ,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,eAAA,CAAA;AACzB;;;QAGA,KAAK,MAAA;AAAQ,YAAA;AACX,gBAAA,MAAM,EAAEb,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAE,GAAGP,SAAAA;AAE5C,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAEQ,CAAAA,GAAG,EAAI,EAAA;oBACpCL,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,cAAA,CAAA;AACzB;QACA,KAAK,OAAA;AAAS,YAAA;AACZ,gBAAA,MAAM,EAAEb,QAAQ,EAAE2C,QAAQ,EAAE,GAAG9C,SAAAA;gBAE/B,MAAMoC,UAAAA,GAAaU,WAAWpC,CAAEO,CAAAA,KAAK,CAACP,CAAEQ,CAAAA,GAAG,EAAMR,CAAAA,GAAAA,CAAAA,CAAEQ,GAAG,EAAA;gBAEtD,MAAMV,MAAAA,GAASC,cAAc2B,UAAY,EAAA;oBAACvB,aAAcV,CAAAA,QAAAA;AAAU,iBAAA,CAAA;gBAElE,OAAOK,MAAAA,CAAOQ,QAAQ,CAAC,eAAA,CAAA;AACzB;;;;QAIA,KAAK,UAAA;AAAY,YAAA;gBACf,MAAM,EAAEb,QAAQ,EAAE,GAAGH,SAAAA;gBAErB,MAAMiE,QAAAA,GAAWN,SAAUC,CAAAA,WAAW,CAAC5D,SAAAA,CAAAA;AACvC,gBAAA,MAAMkE,IAAOxD,GAAAA,CAAAA,CAAEC,MAAM,EAAA,CAAGuD,IAAI,EAAA;AAC5B,gBAAA,MAAM9B,UAAa6B,GAAAA,QAAAA,GAAWvD,CAAEO,CAAAA,KAAK,CAACiD,IAAQA,CAAAA,GAAAA,IAAAA;gBAE9C,MAAM1D,MAAAA,GAASC,cAAc2B,UAAY,EAAA;oBAACvB,aAAcV,CAAAA,QAAAA;AAAU,iBAAA,CAAA;gBAElE,OAAOK,MAAAA,CAAOQ,QAAQ,CAAC,oBAAA,CAAA;AACzB;QACA,KAAK,UAAA;QACL,KAAK,MAAA;QACL,KAAK,UAAA;QACL,KAAK,QAAA;AAAU,YAAA;gBACb,MAAM,EAAEb,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAEiC,SAAS,EAAEC,SAAS,EAAE,GAAGzC,SAAAA;AAElE,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAEC,CAAAA,MAAM,EAAI,EAAA;AACvC4B,oBAAAA,eAAAA,CAAgBC,SAAWC,EAAAA,SAAAA,CAAAA;oBAC3B5B,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,CAAC,EAAE,EAAEhB,SAAUC,CAAAA,IAAI,CAAC,MAAM,CAAC,CAAA;AACpD;QACA,KAAK,MAAA;AAAQ,YAAA;AACX,gBAAA,MAAM,EAAEE,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAE,GAAGP,SAAAA;AAE5C,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAEC,CAAAA,MAAM,EAAI,EAAA;oBACvCE,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,cAAA,CAAA;AACzB;QACA,KAAK,WAAA;AAAa,YAAA;AAChB,gBAAA,MAAM,EAAEb,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAE,GAAGP,SAAAA;gBAE5C,MAAMoC,UAAAA,GAAa1B,CAAEmD,CAAAA,KAAK,CAAC;AAACnD,oBAAAA,CAAAA,CAAEC,MAAM,EAAA;AAAID,oBAAAA,CAAAA,CAAE4B,MAAM;AAAG,iBAAA,CAAA;gBAEnD,MAAM9B,MAAAA,GAASC,cAAc2B,UAAY,EAAA;oBACvCvB,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,mBAAA,CAAA;AACzB;QACA,KAAK,KAAA;AAAO,YAAA;gBACV,MAAM,EAAEb,QAAQ,EAAEG,OAASC,EAAAA,YAAY,EAAEiC,SAAS,EAAEC,SAAS,EAAE,GAAGzC,SAAAA;AAElE,gBAAA,MAAMQ,MAASC,GAAAA,aAAAA,CAAcC,CAAEC,CAAAA,MAAM,EAAI,EAAA;AACvC4B,oBAAAA,eAAAA,CAAgBC,SAAWC,EAAAA,SAAAA,CAAAA;oBAC3B5B,aAAcV,CAAAA,QAAAA,CAAAA;oBACdW,gBAAiBP,CAAAA,YAAAA;AAClB,iBAAA,CAAA;gBAED,OAAOC,MAAAA,CAAOQ,QAAQ,CAAC,aAAA,CAAA;AACzB;AACA,QAAA;YACE,MAAM,IAAI8C,MAAM,CAAC,4BAA4B,EAAE,SAAC9D,CAAkBC,IAAI,CAAC,CAAC,CAAA;AAC5E;AACF;AAEA,MAAMY,gBAAgB,CAACV,QAAAA,GAAAA;AACrB,IAAA,OAAO,CAAqBK,MAAeL,GAAAA,QAAAA,KAAa,IAAOK,GAAAA,MAAAA,CAAO2D,QAAQ,EAAK3D,GAAAA,MAAAA;AACrF,CAAA;AAEA,MAAMO,gBAAgB,CAACb,QAAAA,GAAAA;AACrB,IAAA,OAAO,CAAqBM,MAAeN,GAAAA,QAAAA,KAAa,KAAQM,GAAAA,MAAAA,GAASA,OAAO4D,QAAQ,EAAA;AAC1F,CAAA;AAEA,MAAMtD,mBAAmB,CAACP,YAAAA,GAAAA;AACxB,IAAA,OAAO,CAAqBC,MAAAA,GAAAA;QAC1B,OAAOD,YAAAA,KAAiBK,YACpBJ,MAAOF,CAAAA,OAAO,CAAC,OAAOC,YAAAA,KAAiB,UAAaA,GAAAA,YAAAA,EAAAA,GAAiBA,YACrEC,CAAAA,GAAAA,MAAAA;AACN,KAAA;AACF,CAAA;AAEA,MAAM+B,eAAAA,GAAkB,CAACnC,GAAcC,EAAAA,GAAAA,GAAAA;AACrC,IAAA,OAAO,CAA6DG,MAAAA,GAAAA;QAClE,OAAOJ,GAAAA,KAAQQ,SAAaP,IAAAA,GAAAA,KAAQO,SAAYJ,GAAAA,MAAAA,CAAOJ,GAAG,CAACA,GAAAA,CAAAA,CAAKC,GAAG,CAACA,GAAOG,CAAAA,GAAAA,MAAAA;AAC7E,KAAA;AACF,CAAA;AAEA,MAAMC,aAAAA,GAAgB,CAAqBD,MAAW6D,EAAAA,SAAAA,GAAAA;AACpD,IAAA,OAAOA,UAAUC,MAAM,CAAC,CAACC,GAAKC,EAAAA,QAAAA,GAAaA,SAASD,GAAW/D,CAAAA,EAAAA,MAAAA,CAAAA;AACjE,CAAA;AAEA,MAAMiE,qBAAAA,GAAwB,CAAClD,EAAYf,EAAAA,MAAAA,GAAAA;AACzC,IAAA,MAAM,EAAEY,MAAM,EAAE,GAAGV,EAAEW,cAAc;;IAGnC,IAAID,MAAAA,CAAOI,GAAG,CAACD,EAAK,CAAA,EAAA;AAClBH,QAAAA,MAAAA,CAAOK,MAAM,CAACF,EAAAA,CAAAA;AAChB;AAEAb,IAAAA,CAAAA,CAAEW,cAAc,CAACK,GAAG,CAAClB,MAAQ,EAAA;AAAEe,QAAAA;AAAG,KAAA,CAAA;AACpC,CAAA;AAEA,MAAM8B,kBAAAA,GAAqB,CAAC9B,EAAYmD,EAAAA,QAAAA,GAAAA;AACtC,IAAA,MAAM,EAAEtD,MAAM,EAAE,GAAGV,EAAEW,cAAc;IAEnC,MAAMQ,sBAAAA,GAAyBT,MAAOI,CAAAA,GAAG,CAACD,EAAAA,CAAAA;AAE1C,IAAA,IAAIM,sBAAwB,EAAA;QAC1B,OAAOT,MAAAA,CAAOW,GAAG,CAACR,EAAAA,CAAAA;AACpB;;;IAIAkD,qBAAsBlD,CAAAA,EAAAA,EAAIb,EAAEQ,GAAG,EAAA,CAAA;AAE/B,IAAA,MAAMV,MAASkE,GAAAA,QAAAA,EAAAA;AAEfD,IAAAA,qBAAAA,CAAsBlD,EAAIf,EAAAA,MAAAA,CAAAA;IAE1B,OAAOA,MAAAA;AACT,CAAA;;;;"}
@@ -0,0 +1,103 @@
1
+ import type { Core, UID } from '@strapi/types';
2
+ import { z } from 'zod';
3
+ /**
4
+ * AbstractCoreRouteValidator provides the foundation for validating and managing core routes within a Strapi context for a specific model.
5
+ *
6
+ * This abstract class facilitates validation logic for scalar and populatable fields defined in a model schema.
7
+ *
8
+ * It uses runtime information about Strapi models to derive and expose schema validations.
9
+ *
10
+ * @template {UID.Schema} T Representing the schema identifier to be validated.
11
+ */
12
+ export declare abstract class AbstractCoreRouteValidator<T extends UID.Schema> {
13
+ /**
14
+ * The `_strapi` variable serves as a reference to the core Strapi instance.
15
+ * It is used for interacting with the loaded model.
16
+ */
17
+ protected readonly _strapi: Core.Strapi;
18
+ /**
19
+ * A unique identifier used to represent a model within Strapi.
20
+ *
21
+ * The type of the identifier is generic to allow flexibility and ensure type safety
22
+ * when working with either content-types or components.
23
+ */
24
+ protected readonly _uid: T;
25
+ /**
26
+ * Protected constructor for initializing the class with the provided Strapi instance and unique identifier (UID).
27
+ *
28
+ * @param strapi The Strapi instance to be used.
29
+ * @param uid The unique identifier for the instance.
30
+ */
31
+ protected constructor(strapi: Core.Strapi, uid: T);
32
+ /**
33
+ * Retrieves an enum schema constructed from the keys of the scalar fields.
34
+ *
35
+ * @return A Zod enum containing the keys from the scalar fields.
36
+ */
37
+ get scalarFieldsEnum(): z.ZodEnum<{
38
+ [x: string]: string;
39
+ }>;
40
+ /**
41
+ * Retrieves an enum schema constructed from the keys of fields that can be populated (relations, components, files, etc.)
42
+ *
43
+ * @return A ZodEnum object containing the list of populatable field keys.
44
+ */
45
+ get populatableFieldsEnum(): z.ZodEnum<{
46
+ [x: string]: string;
47
+ }>;
48
+ /**
49
+ * Retrieves an array representation of the scalar fields.
50
+ *
51
+ * @return An array containing the scalar fields as defined by {@link scalarFieldsEnum}.
52
+ */
53
+ get scalarFieldsArray(): z.ZodArray<z.ZodEnum<{
54
+ [x: string]: string;
55
+ }>>;
56
+ /**
57
+ * Retrieves an array of populatable fields.
58
+ *
59
+ * @return A Zod array schema representing the available populatable fields as defined by {@link populatableFieldsEnum}.
60
+ */
61
+ get populatableFieldsArray(): z.ZodArray<z.ZodEnum<{
62
+ [x: string]: string;
63
+ }>>;
64
+ /**
65
+ * Retrieves the schema associated with the current model.
66
+ *
67
+ * The schema represents the structural definition of the model,
68
+ * as retrieved from the Strapi model associated with the given UID.
69
+ *
70
+ * @return The schema of the model retrieved from Strapi.
71
+ */
72
+ protected get _schema(): T extends UID.ContentType ? import("@strapi/types/dist/schema").ContentType<T> : T extends `${string}.${string}` ? import("@strapi/types/dist/schema").Component<T> : never;
73
+ /**
74
+ * Retrieves scalar fields from the object's schema attributes.
75
+ *
76
+ * Filters the schema attributes to include only those that are scalar and not private.
77
+ *
78
+ * @return An object composed of scalar fields from the schema attributes.
79
+ */
80
+ protected get _scalarFields(): {
81
+ [k: string]: import("@strapi/types/dist/schema/attribute").AnyAttribute;
82
+ };
83
+ /**
84
+ * Retrieves the populatable fields from the schema attributes.
85
+ *
86
+ * Filters the schema attributes to include only those that are populatable and not private.
87
+ *
88
+ * @return An object containing the populatable fields derived from the schema attributes.
89
+ */
90
+ protected get _populatableFields(): {
91
+ [k: string]: import("@strapi/types/dist/schema/attribute").AnyAttribute;
92
+ };
93
+ /**
94
+ * Creates a Zod schema as a record with scalar fields as keys and the specified type as values.
95
+ *
96
+ * @param type - The Zod type to use for the record's values.
97
+ * @return A Zod record schema with scalar fields as keys and the specified type as values.
98
+ */
99
+ fieldRecord(type: z.ZodTypeAny): z.ZodRecord<z.ZodEnum<{
100
+ [x: string]: string;
101
+ }>, z.ZodType<unknown, unknown>>;
102
+ }
103
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/core-api/routes/validation/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,8BAAsB,0BAA0B,CAAC,CAAC,SAAS,GAAG,CAAC,MAAM;IACnE;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;IAExC;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAE3B;;;;;OAKG;IACH,SAAS,aAAa,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;IAKjD;;;;OAIG;IACH,IAAW,gBAAgB;;OAE1B;IAED;;;;OAIG;IACH,IAAW,qBAAqB;;OAE/B;IAED;;;;OAIG;IACH,IAAW,iBAAiB;;QAE3B;IAED;;;;OAIG;IACH,IAAW,sBAAsB;;QAEhC;IAED;;;;;;;OAOG;IACH,SAAS,KAAK,OAAO,gLAEpB;IAED;;;;;;OAMG;IACH,SAAS,KAAK,aAAa;;MAQ1B;IAED;;;;;;OAMG;IACH,SAAS,KAAK,kBAAkB;;MAQ/B;IAED;;;;;OAKG;IACI,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU;;;CAGtC"}
@@ -0,0 +1,95 @@
1
+ 'use strict';
2
+
3
+ var strapiUtils = require('@strapi/utils');
4
+ var zod = require('zod');
5
+
6
+ /**
7
+ * AbstractCoreRouteValidator provides the foundation for validating and managing core routes within a Strapi context for a specific model.
8
+ *
9
+ * This abstract class facilitates validation logic for scalar and populatable fields defined in a model schema.
10
+ *
11
+ * It uses runtime information about Strapi models to derive and expose schema validations.
12
+ *
13
+ * @template {UID.Schema} T Representing the schema identifier to be validated.
14
+ */ class AbstractCoreRouteValidator {
15
+ /**
16
+ * Retrieves an enum schema constructed from the keys of the scalar fields.
17
+ *
18
+ * @return A Zod enum containing the keys from the scalar fields.
19
+ */ get scalarFieldsEnum() {
20
+ return zod.z.enum(Object.keys(this._scalarFields));
21
+ }
22
+ /**
23
+ * Retrieves an enum schema constructed from the keys of fields that can be populated (relations, components, files, etc.)
24
+ *
25
+ * @return A ZodEnum object containing the list of populatable field keys.
26
+ */ get populatableFieldsEnum() {
27
+ return zod.z.enum(Object.keys(this._populatableFields));
28
+ }
29
+ /**
30
+ * Retrieves an array representation of the scalar fields.
31
+ *
32
+ * @return An array containing the scalar fields as defined by {@link scalarFieldsEnum}.
33
+ */ get scalarFieldsArray() {
34
+ return zod.z.array(this.scalarFieldsEnum);
35
+ }
36
+ /**
37
+ * Retrieves an array of populatable fields.
38
+ *
39
+ * @return A Zod array schema representing the available populatable fields as defined by {@link populatableFieldsEnum}.
40
+ */ get populatableFieldsArray() {
41
+ return zod.z.array(this.populatableFieldsEnum);
42
+ }
43
+ /**
44
+ * Retrieves the schema associated with the current model.
45
+ *
46
+ * The schema represents the structural definition of the model,
47
+ * as retrieved from the Strapi model associated with the given UID.
48
+ *
49
+ * @return The schema of the model retrieved from Strapi.
50
+ */ get _schema() {
51
+ return this._strapi.getModel(this._uid);
52
+ }
53
+ /**
54
+ * Retrieves scalar fields from the object's schema attributes.
55
+ *
56
+ * Filters the schema attributes to include only those that are scalar and not private.
57
+ *
58
+ * @return An object composed of scalar fields from the schema attributes.
59
+ */ get _scalarFields() {
60
+ const attributes = Object.entries(this._schema.attributes);
61
+ const scalarEntries = attributes.filter(([, attribute])=>strapiUtils.contentTypes.isScalarAttribute(attribute)).filter(([attributeName])=>!strapiUtils.contentTypes.isPrivateAttribute(this._schema, attributeName));
62
+ return Object.fromEntries(scalarEntries);
63
+ }
64
+ /**
65
+ * Retrieves the populatable fields from the schema attributes.
66
+ *
67
+ * Filters the schema attributes to include only those that are populatable and not private.
68
+ *
69
+ * @return An object containing the populatable fields derived from the schema attributes.
70
+ */ get _populatableFields() {
71
+ const attributes = Object.entries(this._schema.attributes);
72
+ const populatableEntries = attributes.filter(([, attribute])=>!strapiUtils.contentTypes.isScalarAttribute(attribute)).filter(([attributeName])=>!strapiUtils.contentTypes.isPrivateAttribute(this._schema, attributeName));
73
+ return Object.fromEntries(populatableEntries);
74
+ }
75
+ /**
76
+ * Creates a Zod schema as a record with scalar fields as keys and the specified type as values.
77
+ *
78
+ * @param type - The Zod type to use for the record's values.
79
+ * @return A Zod record schema with scalar fields as keys and the specified type as values.
80
+ */ fieldRecord(type) {
81
+ return zod.z.record(this.scalarFieldsEnum, type);
82
+ }
83
+ /**
84
+ * Protected constructor for initializing the class with the provided Strapi instance and unique identifier (UID).
85
+ *
86
+ * @param strapi The Strapi instance to be used.
87
+ * @param uid The unique identifier for the instance.
88
+ */ constructor(strapi, uid){
89
+ this._strapi = strapi;
90
+ this._uid = uid;
91
+ }
92
+ }
93
+
94
+ exports.AbstractCoreRouteValidator = AbstractCoreRouteValidator;
95
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sources":["../../../../src/core-api/routes/validation/common.ts"],"sourcesContent":["import type { Core, UID } from '@strapi/types';\n\nimport { contentTypes } from '@strapi/utils';\nimport { z } from 'zod';\n\n/**\n * AbstractCoreRouteValidator provides the foundation for validating and managing core routes within a Strapi context for a specific model.\n *\n * This abstract class facilitates validation logic for scalar and populatable fields defined in a model schema.\n *\n * It uses runtime information about Strapi models to derive and expose schema validations.\n *\n * @template {UID.Schema} T Representing the schema identifier to be validated.\n */\nexport abstract class AbstractCoreRouteValidator<T extends UID.Schema> {\n /**\n * The `_strapi` variable serves as a reference to the core Strapi instance.\n * It is used for interacting with the loaded model.\n */\n protected readonly _strapi: Core.Strapi;\n\n /**\n * A unique identifier used to represent a model within Strapi.\n *\n * The type of the identifier is generic to allow flexibility and ensure type safety\n * when working with either content-types or components.\n */\n protected readonly _uid: T;\n\n /**\n * Protected constructor for initializing the class with the provided Strapi instance and unique identifier (UID).\n *\n * @param strapi The Strapi instance to be used.\n * @param uid The unique identifier for the instance.\n */\n protected constructor(strapi: Core.Strapi, uid: T) {\n this._strapi = strapi;\n this._uid = uid;\n }\n\n /**\n * Retrieves an enum schema constructed from the keys of the scalar fields.\n *\n * @return A Zod enum containing the keys from the scalar fields.\n */\n public get scalarFieldsEnum() {\n return z.enum(Object.keys(this._scalarFields) as [string]);\n }\n\n /**\n * Retrieves an enum schema constructed from the keys of fields that can be populated (relations, components, files, etc.)\n *\n * @return A ZodEnum object containing the list of populatable field keys.\n */\n public get populatableFieldsEnum() {\n return z.enum(Object.keys(this._populatableFields) as [string]);\n }\n\n /**\n * Retrieves an array representation of the scalar fields.\n *\n * @return An array containing the scalar fields as defined by {@link scalarFieldsEnum}.\n */\n public get scalarFieldsArray() {\n return z.array(this.scalarFieldsEnum);\n }\n\n /**\n * Retrieves an array of populatable fields.\n *\n * @return A Zod array schema representing the available populatable fields as defined by {@link populatableFieldsEnum}.\n */\n public get populatableFieldsArray() {\n return z.array(this.populatableFieldsEnum);\n }\n\n /**\n * Retrieves the schema associated with the current model.\n *\n * The schema represents the structural definition of the model,\n * as retrieved from the Strapi model associated with the given UID.\n *\n * @return The schema of the model retrieved from Strapi.\n */\n protected get _schema() {\n return this._strapi.getModel(this._uid);\n }\n\n /**\n * Retrieves scalar fields from the object's schema attributes.\n *\n * Filters the schema attributes to include only those that are scalar and not private.\n *\n * @return An object composed of scalar fields from the schema attributes.\n */\n protected get _scalarFields() {\n const attributes = Object.entries(this._schema.attributes);\n\n const scalarEntries = attributes\n .filter(([, attribute]) => contentTypes.isScalarAttribute(attribute))\n .filter(([attributeName]) => !contentTypes.isPrivateAttribute(this._schema, attributeName));\n\n return Object.fromEntries(scalarEntries);\n }\n\n /**\n * Retrieves the populatable fields from the schema attributes.\n *\n * Filters the schema attributes to include only those that are populatable and not private.\n *\n * @return An object containing the populatable fields derived from the schema attributes.\n */\n protected get _populatableFields() {\n const attributes = Object.entries(this._schema.attributes);\n\n const populatableEntries = attributes\n .filter(([, attribute]) => !contentTypes.isScalarAttribute(attribute))\n .filter(([attributeName]) => !contentTypes.isPrivateAttribute(this._schema, attributeName));\n\n return Object.fromEntries(populatableEntries);\n }\n\n /**\n * Creates a Zod schema as a record with scalar fields as keys and the specified type as values.\n *\n * @param type - The Zod type to use for the record's values.\n * @return A Zod record schema with scalar fields as keys and the specified type as values.\n */\n public fieldRecord(type: z.ZodTypeAny) {\n return z.record(this.scalarFieldsEnum, type);\n }\n}\n"],"names":["AbstractCoreRouteValidator","scalarFieldsEnum","z","enum","Object","keys","_scalarFields","populatableFieldsEnum","_populatableFields","scalarFieldsArray","array","populatableFieldsArray","_schema","_strapi","getModel","_uid","attributes","entries","scalarEntries","filter","attribute","contentTypes","isScalarAttribute","attributeName","isPrivateAttribute","fromEntries","populatableEntries","fieldRecord","type","record","strapi","uid"],"mappings":";;;;;AAKA;;;;;;;;AAQC,IACM,MAAeA,0BAAAA,CAAAA;AA0BpB;;;;AAIC,MACD,IAAWC,gBAAmB,GAAA;QAC5B,OAAOC,KAAAA,CAAEC,IAAI,CAACC,MAAAA,CAAOC,IAAI,CAAC,IAAI,CAACC,aAAa,CAAA,CAAA;AAC9C;AAEA;;;;AAIC,MACD,IAAWC,qBAAwB,GAAA;QACjC,OAAOL,KAAAA,CAAEC,IAAI,CAACC,MAAAA,CAAOC,IAAI,CAAC,IAAI,CAACG,kBAAkB,CAAA,CAAA;AACnD;AAEA;;;;AAIC,MACD,IAAWC,iBAAoB,GAAA;AAC7B,QAAA,OAAOP,KAAEQ,CAAAA,KAAK,CAAC,IAAI,CAACT,gBAAgB,CAAA;AACtC;AAEA;;;;AAIC,MACD,IAAWU,sBAAyB,GAAA;AAClC,QAAA,OAAOT,KAAEQ,CAAAA,KAAK,CAAC,IAAI,CAACH,qBAAqB,CAAA;AAC3C;AAEA;;;;;;;AAOC,MACD,IAAcK,OAAU,GAAA;QACtB,OAAO,IAAI,CAACC,OAAO,CAACC,QAAQ,CAAC,IAAI,CAACC,IAAI,CAAA;AACxC;AAEA;;;;;;AAMC,MACD,IAAcT,aAAgB,GAAA;QAC5B,MAAMU,UAAAA,GAAaZ,OAAOa,OAAO,CAAC,IAAI,CAACL,OAAO,CAACI,UAAU,CAAA;QAEzD,MAAME,aAAAA,GAAgBF,UACnBG,CAAAA,MAAM,CAAC,CAAC,GAAGC,SAAU,CAAA,GAAKC,wBAAaC,CAAAA,iBAAiB,CAACF,SAAAA,CAAAA,CAAAA,CACzDD,MAAM,CAAC,CAAC,CAACI,aAAAA,CAAc,GAAK,CAACF,wBAAaG,CAAAA,kBAAkB,CAAC,IAAI,CAACZ,OAAO,EAAEW,aAAAA,CAAAA,CAAAA;QAE9E,OAAOnB,MAAAA,CAAOqB,WAAW,CAACP,aAAAA,CAAAA;AAC5B;AAEA;;;;;;AAMC,MACD,IAAcV,kBAAqB,GAAA;QACjC,MAAMQ,UAAAA,GAAaZ,OAAOa,OAAO,CAAC,IAAI,CAACL,OAAO,CAACI,UAAU,CAAA;QAEzD,MAAMU,kBAAAA,GAAqBV,UACxBG,CAAAA,MAAM,CAAC,CAAC,GAAGC,SAAAA,CAAU,GAAK,CAACC,wBAAaC,CAAAA,iBAAiB,CAACF,SAAAA,CAAAA,CAAAA,CAC1DD,MAAM,CAAC,CAAC,CAACI,aAAAA,CAAc,GAAK,CAACF,wBAAaG,CAAAA,kBAAkB,CAAC,IAAI,CAACZ,OAAO,EAAEW,aAAAA,CAAAA,CAAAA;QAE9E,OAAOnB,MAAAA,CAAOqB,WAAW,CAACC,kBAAAA,CAAAA;AAC5B;AAEA;;;;;MAMOC,WAAYC,CAAAA,IAAkB,EAAE;AACrC,QAAA,OAAO1B,MAAE2B,MAAM,CAAC,IAAI,CAAC5B,gBAAgB,EAAE2B,IAAAA,CAAAA;AACzC;AArGA;;;;;AAKC,MACD,WAAsBE,CAAAA,MAAmB,EAAEC,GAAM,CAAE;QACjD,IAAI,CAAClB,OAAO,GAAGiB,MAAAA;QACf,IAAI,CAACf,IAAI,GAAGgB,GAAAA;AACd;AA6FF;;;;"}
@@ -0,0 +1,93 @@
1
+ import { contentTypes } from '@strapi/utils';
2
+ import { z } from 'zod';
3
+
4
+ /**
5
+ * AbstractCoreRouteValidator provides the foundation for validating and managing core routes within a Strapi context for a specific model.
6
+ *
7
+ * This abstract class facilitates validation logic for scalar and populatable fields defined in a model schema.
8
+ *
9
+ * It uses runtime information about Strapi models to derive and expose schema validations.
10
+ *
11
+ * @template {UID.Schema} T Representing the schema identifier to be validated.
12
+ */ class AbstractCoreRouteValidator {
13
+ /**
14
+ * Retrieves an enum schema constructed from the keys of the scalar fields.
15
+ *
16
+ * @return A Zod enum containing the keys from the scalar fields.
17
+ */ get scalarFieldsEnum() {
18
+ return z.enum(Object.keys(this._scalarFields));
19
+ }
20
+ /**
21
+ * Retrieves an enum schema constructed from the keys of fields that can be populated (relations, components, files, etc.)
22
+ *
23
+ * @return A ZodEnum object containing the list of populatable field keys.
24
+ */ get populatableFieldsEnum() {
25
+ return z.enum(Object.keys(this._populatableFields));
26
+ }
27
+ /**
28
+ * Retrieves an array representation of the scalar fields.
29
+ *
30
+ * @return An array containing the scalar fields as defined by {@link scalarFieldsEnum}.
31
+ */ get scalarFieldsArray() {
32
+ return z.array(this.scalarFieldsEnum);
33
+ }
34
+ /**
35
+ * Retrieves an array of populatable fields.
36
+ *
37
+ * @return A Zod array schema representing the available populatable fields as defined by {@link populatableFieldsEnum}.
38
+ */ get populatableFieldsArray() {
39
+ return z.array(this.populatableFieldsEnum);
40
+ }
41
+ /**
42
+ * Retrieves the schema associated with the current model.
43
+ *
44
+ * The schema represents the structural definition of the model,
45
+ * as retrieved from the Strapi model associated with the given UID.
46
+ *
47
+ * @return The schema of the model retrieved from Strapi.
48
+ */ get _schema() {
49
+ return this._strapi.getModel(this._uid);
50
+ }
51
+ /**
52
+ * Retrieves scalar fields from the object's schema attributes.
53
+ *
54
+ * Filters the schema attributes to include only those that are scalar and not private.
55
+ *
56
+ * @return An object composed of scalar fields from the schema attributes.
57
+ */ get _scalarFields() {
58
+ const attributes = Object.entries(this._schema.attributes);
59
+ const scalarEntries = attributes.filter(([, attribute])=>contentTypes.isScalarAttribute(attribute)).filter(([attributeName])=>!contentTypes.isPrivateAttribute(this._schema, attributeName));
60
+ return Object.fromEntries(scalarEntries);
61
+ }
62
+ /**
63
+ * Retrieves the populatable fields from the schema attributes.
64
+ *
65
+ * Filters the schema attributes to include only those that are populatable and not private.
66
+ *
67
+ * @return An object containing the populatable fields derived from the schema attributes.
68
+ */ get _populatableFields() {
69
+ const attributes = Object.entries(this._schema.attributes);
70
+ const populatableEntries = attributes.filter(([, attribute])=>!contentTypes.isScalarAttribute(attribute)).filter(([attributeName])=>!contentTypes.isPrivateAttribute(this._schema, attributeName));
71
+ return Object.fromEntries(populatableEntries);
72
+ }
73
+ /**
74
+ * Creates a Zod schema as a record with scalar fields as keys and the specified type as values.
75
+ *
76
+ * @param type - The Zod type to use for the record's values.
77
+ * @return A Zod record schema with scalar fields as keys and the specified type as values.
78
+ */ fieldRecord(type) {
79
+ return z.record(this.scalarFieldsEnum, type);
80
+ }
81
+ /**
82
+ * Protected constructor for initializing the class with the provided Strapi instance and unique identifier (UID).
83
+ *
84
+ * @param strapi The Strapi instance to be used.
85
+ * @param uid The unique identifier for the instance.
86
+ */ constructor(strapi, uid){
87
+ this._strapi = strapi;
88
+ this._uid = uid;
89
+ }
90
+ }
91
+
92
+ export { AbstractCoreRouteValidator };
93
+ //# sourceMappingURL=common.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.mjs","sources":["../../../../src/core-api/routes/validation/common.ts"],"sourcesContent":["import type { Core, UID } from '@strapi/types';\n\nimport { contentTypes } from '@strapi/utils';\nimport { z } from 'zod';\n\n/**\n * AbstractCoreRouteValidator provides the foundation for validating and managing core routes within a Strapi context for a specific model.\n *\n * This abstract class facilitates validation logic for scalar and populatable fields defined in a model schema.\n *\n * It uses runtime information about Strapi models to derive and expose schema validations.\n *\n * @template {UID.Schema} T Representing the schema identifier to be validated.\n */\nexport abstract class AbstractCoreRouteValidator<T extends UID.Schema> {\n /**\n * The `_strapi` variable serves as a reference to the core Strapi instance.\n * It is used for interacting with the loaded model.\n */\n protected readonly _strapi: Core.Strapi;\n\n /**\n * A unique identifier used to represent a model within Strapi.\n *\n * The type of the identifier is generic to allow flexibility and ensure type safety\n * when working with either content-types or components.\n */\n protected readonly _uid: T;\n\n /**\n * Protected constructor for initializing the class with the provided Strapi instance and unique identifier (UID).\n *\n * @param strapi The Strapi instance to be used.\n * @param uid The unique identifier for the instance.\n */\n protected constructor(strapi: Core.Strapi, uid: T) {\n this._strapi = strapi;\n this._uid = uid;\n }\n\n /**\n * Retrieves an enum schema constructed from the keys of the scalar fields.\n *\n * @return A Zod enum containing the keys from the scalar fields.\n */\n public get scalarFieldsEnum() {\n return z.enum(Object.keys(this._scalarFields) as [string]);\n }\n\n /**\n * Retrieves an enum schema constructed from the keys of fields that can be populated (relations, components, files, etc.)\n *\n * @return A ZodEnum object containing the list of populatable field keys.\n */\n public get populatableFieldsEnum() {\n return z.enum(Object.keys(this._populatableFields) as [string]);\n }\n\n /**\n * Retrieves an array representation of the scalar fields.\n *\n * @return An array containing the scalar fields as defined by {@link scalarFieldsEnum}.\n */\n public get scalarFieldsArray() {\n return z.array(this.scalarFieldsEnum);\n }\n\n /**\n * Retrieves an array of populatable fields.\n *\n * @return A Zod array schema representing the available populatable fields as defined by {@link populatableFieldsEnum}.\n */\n public get populatableFieldsArray() {\n return z.array(this.populatableFieldsEnum);\n }\n\n /**\n * Retrieves the schema associated with the current model.\n *\n * The schema represents the structural definition of the model,\n * as retrieved from the Strapi model associated with the given UID.\n *\n * @return The schema of the model retrieved from Strapi.\n */\n protected get _schema() {\n return this._strapi.getModel(this._uid);\n }\n\n /**\n * Retrieves scalar fields from the object's schema attributes.\n *\n * Filters the schema attributes to include only those that are scalar and not private.\n *\n * @return An object composed of scalar fields from the schema attributes.\n */\n protected get _scalarFields() {\n const attributes = Object.entries(this._schema.attributes);\n\n const scalarEntries = attributes\n .filter(([, attribute]) => contentTypes.isScalarAttribute(attribute))\n .filter(([attributeName]) => !contentTypes.isPrivateAttribute(this._schema, attributeName));\n\n return Object.fromEntries(scalarEntries);\n }\n\n /**\n * Retrieves the populatable fields from the schema attributes.\n *\n * Filters the schema attributes to include only those that are populatable and not private.\n *\n * @return An object containing the populatable fields derived from the schema attributes.\n */\n protected get _populatableFields() {\n const attributes = Object.entries(this._schema.attributes);\n\n const populatableEntries = attributes\n .filter(([, attribute]) => !contentTypes.isScalarAttribute(attribute))\n .filter(([attributeName]) => !contentTypes.isPrivateAttribute(this._schema, attributeName));\n\n return Object.fromEntries(populatableEntries);\n }\n\n /**\n * Creates a Zod schema as a record with scalar fields as keys and the specified type as values.\n *\n * @param type - The Zod type to use for the record's values.\n * @return A Zod record schema with scalar fields as keys and the specified type as values.\n */\n public fieldRecord(type: z.ZodTypeAny) {\n return z.record(this.scalarFieldsEnum, type);\n }\n}\n"],"names":["AbstractCoreRouteValidator","scalarFieldsEnum","z","enum","Object","keys","_scalarFields","populatableFieldsEnum","_populatableFields","scalarFieldsArray","array","populatableFieldsArray","_schema","_strapi","getModel","_uid","attributes","entries","scalarEntries","filter","attribute","contentTypes","isScalarAttribute","attributeName","isPrivateAttribute","fromEntries","populatableEntries","fieldRecord","type","record","strapi","uid"],"mappings":";;;AAKA;;;;;;;;AAQC,IACM,MAAeA,0BAAAA,CAAAA;AA0BpB;;;;AAIC,MACD,IAAWC,gBAAmB,GAAA;QAC5B,OAAOC,CAAAA,CAAEC,IAAI,CAACC,MAAAA,CAAOC,IAAI,CAAC,IAAI,CAACC,aAAa,CAAA,CAAA;AAC9C;AAEA;;;;AAIC,MACD,IAAWC,qBAAwB,GAAA;QACjC,OAAOL,CAAAA,CAAEC,IAAI,CAACC,MAAAA,CAAOC,IAAI,CAAC,IAAI,CAACG,kBAAkB,CAAA,CAAA;AACnD;AAEA;;;;AAIC,MACD,IAAWC,iBAAoB,GAAA;AAC7B,QAAA,OAAOP,CAAEQ,CAAAA,KAAK,CAAC,IAAI,CAACT,gBAAgB,CAAA;AACtC;AAEA;;;;AAIC,MACD,IAAWU,sBAAyB,GAAA;AAClC,QAAA,OAAOT,CAAEQ,CAAAA,KAAK,CAAC,IAAI,CAACH,qBAAqB,CAAA;AAC3C;AAEA;;;;;;;AAOC,MACD,IAAcK,OAAU,GAAA;QACtB,OAAO,IAAI,CAACC,OAAO,CAACC,QAAQ,CAAC,IAAI,CAACC,IAAI,CAAA;AACxC;AAEA;;;;;;AAMC,MACD,IAAcT,aAAgB,GAAA;QAC5B,MAAMU,UAAAA,GAAaZ,OAAOa,OAAO,CAAC,IAAI,CAACL,OAAO,CAACI,UAAU,CAAA;QAEzD,MAAME,aAAAA,GAAgBF,UACnBG,CAAAA,MAAM,CAAC,CAAC,GAAGC,SAAU,CAAA,GAAKC,YAAaC,CAAAA,iBAAiB,CAACF,SAAAA,CAAAA,CAAAA,CACzDD,MAAM,CAAC,CAAC,CAACI,aAAAA,CAAc,GAAK,CAACF,YAAaG,CAAAA,kBAAkB,CAAC,IAAI,CAACZ,OAAO,EAAEW,aAAAA,CAAAA,CAAAA;QAE9E,OAAOnB,MAAAA,CAAOqB,WAAW,CAACP,aAAAA,CAAAA;AAC5B;AAEA;;;;;;AAMC,MACD,IAAcV,kBAAqB,GAAA;QACjC,MAAMQ,UAAAA,GAAaZ,OAAOa,OAAO,CAAC,IAAI,CAACL,OAAO,CAACI,UAAU,CAAA;QAEzD,MAAMU,kBAAAA,GAAqBV,UACxBG,CAAAA,MAAM,CAAC,CAAC,GAAGC,SAAAA,CAAU,GAAK,CAACC,YAAaC,CAAAA,iBAAiB,CAACF,SAAAA,CAAAA,CAAAA,CAC1DD,MAAM,CAAC,CAAC,CAACI,aAAAA,CAAc,GAAK,CAACF,YAAaG,CAAAA,kBAAkB,CAAC,IAAI,CAACZ,OAAO,EAAEW,aAAAA,CAAAA,CAAAA;QAE9E,OAAOnB,MAAAA,CAAOqB,WAAW,CAACC,kBAAAA,CAAAA;AAC5B;AAEA;;;;;MAMOC,WAAYC,CAAAA,IAAkB,EAAE;AACrC,QAAA,OAAO1B,EAAE2B,MAAM,CAAC,IAAI,CAAC5B,gBAAgB,EAAE2B,IAAAA,CAAAA;AACzC;AArGA;;;;;AAKC,MACD,WAAsBE,CAAAA,MAAmB,EAAEC,GAAM,CAAE;QACjD,IAAI,CAAClB,OAAO,GAAGiB,MAAAA;QACf,IAAI,CAACf,IAAI,GAAGgB,GAAAA;AACd;AA6FF;;;;"}
@@ -0,0 +1,42 @@
1
+ import type { Core, UID } from '@strapi/types';
2
+ import { z } from 'zod';
3
+ import { AbstractCoreRouteValidator } from './common';
4
+ /**
5
+ * A component validator for core content-type routes.
6
+ *
7
+ * Provides validation schemas and utilities for handling component-specific validation in content-type routes.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * const strapi = // ... strapi instance
12
+ * const uid = 'api::article.article'
13
+ * const validator = new CoreComponentRouteValidator(strapi, uid);
14
+ *
15
+ * // Get validation schema for a component entry
16
+ * const componentSchema = validator.component;
17
+ * ```
18
+ */
19
+ export declare class CoreComponentRouteValidator extends AbstractCoreRouteValidator<UID.Component> {
20
+ /**
21
+ * Creates a new instance of CoreComponentRouteValidator
22
+ *
23
+ * @param strapi - The Strapi instance
24
+ * @param uid - The component's unique identifier
25
+ */
26
+ constructor(strapi: Core.Strapi, uid: UID.Component);
27
+ /**
28
+ * Generates a comprehensive validation schema for a single component entry.
29
+ *
30
+ * Combines scalar fields and populatable fields into a single schema.
31
+ *
32
+ * @returns A schema for validating complete entries
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * const validator = new CoreComponentRouteValidator(strapi, uid);
37
+ * const entrySchema = validator.entry;
38
+ * ```
39
+ */
40
+ get entry(): z.ZodObject<{}, {}, {}>;
41
+ }
42
+ //# sourceMappingURL=component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../src/core-api/routes/validation/component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,2BAA4B,SAAQ,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC;IACxF;;;;;OAKG;gBACS,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS;IAInD;;;;;;;;;;;;OAYG;IACH,IAAI,KAAK,4BAYR;CACF"}
@@ -0,0 +1,59 @@
1
+ 'use strict';
2
+
3
+ var zod = require('zod');
4
+ var attributes = require('./attributes.js');
5
+ var common = require('./common.js');
6
+
7
+ /**
8
+ * A component validator for core content-type routes.
9
+ *
10
+ * Provides validation schemas and utilities for handling component-specific validation in content-type routes.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * const strapi = // ... strapi instance
15
+ * const uid = 'api::article.article'
16
+ * const validator = new CoreComponentRouteValidator(strapi, uid);
17
+ *
18
+ * // Get validation schema for a component entry
19
+ * const componentSchema = validator.component;
20
+ * ```
21
+ */ class CoreComponentRouteValidator extends common.AbstractCoreRouteValidator {
22
+ /**
23
+ * Generates a comprehensive validation schema for a single component entry.
24
+ *
25
+ * Combines scalar fields and populatable fields into a single schema.
26
+ *
27
+ * @returns A schema for validating complete entries
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const validator = new CoreComponentRouteValidator(strapi, uid);
32
+ * const entrySchema = validator.entry;
33
+ * ```
34
+ */ get entry() {
35
+ const { _scalarFields, _populatableFields } = this;
36
+ const entries = Object.entries({
37
+ ..._scalarFields,
38
+ ..._populatableFields
39
+ });
40
+ return entries.reduce((acc, [attributeName, attribute])=>{
41
+ return acc.extend({
42
+ get [attributeName] () {
43
+ return attributes.mapAttributeToSchema(attribute);
44
+ }
45
+ });
46
+ }, zod.z.object());
47
+ }
48
+ /**
49
+ * Creates a new instance of CoreComponentRouteValidator
50
+ *
51
+ * @param strapi - The Strapi instance
52
+ * @param uid - The component's unique identifier
53
+ */ constructor(strapi, uid){
54
+ super(strapi, uid);
55
+ }
56
+ }
57
+
58
+ exports.CoreComponentRouteValidator = CoreComponentRouteValidator;
59
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sources":["../../../../src/core-api/routes/validation/component.ts"],"sourcesContent":["import type { Core, UID } from '@strapi/types';\nimport { z } from 'zod';\n\nimport { mapAttributeToSchema } from './attributes';\nimport { AbstractCoreRouteValidator } from './common';\n\n/**\n * A component validator for core content-type routes.\n *\n * Provides validation schemas and utilities for handling component-specific validation in content-type routes.\n *\n * @example\n * ```ts\n * const strapi = // ... strapi instance\n * const uid = 'api::article.article'\n * const validator = new CoreComponentRouteValidator(strapi, uid);\n *\n * // Get validation schema for a component entry\n * const componentSchema = validator.component;\n * ```\n */\nexport class CoreComponentRouteValidator extends AbstractCoreRouteValidator<UID.Component> {\n /**\n * Creates a new instance of CoreComponentRouteValidator\n *\n * @param strapi - The Strapi instance\n * @param uid - The component's unique identifier\n */\n constructor(strapi: Core.Strapi, uid: UID.Component) {\n super(strapi, uid);\n }\n\n /**\n * Generates a comprehensive validation schema for a single component entry.\n *\n * Combines scalar fields and populatable fields into a single schema.\n *\n * @returns A schema for validating complete entries\n *\n * @example\n * ```ts\n * const validator = new CoreComponentRouteValidator(strapi, uid);\n * const entrySchema = validator.entry;\n * ```\n */\n get entry() {\n const { _scalarFields, _populatableFields } = this;\n\n const entries = Object.entries({ ..._scalarFields, ..._populatableFields });\n\n return entries.reduce((acc, [attributeName, attribute]) => {\n return acc.extend({\n get [attributeName]() {\n return mapAttributeToSchema(attribute);\n },\n });\n }, z.object());\n }\n}\n"],"names":["CoreComponentRouteValidator","AbstractCoreRouteValidator","entry","_scalarFields","_populatableFields","entries","Object","reduce","acc","attributeName","attribute","extend","mapAttributeToSchema","z","object","constructor","strapi","uid"],"mappings":";;;;;;AAMA;;;;;;;;;;;;;;IAeO,MAAMA,2BAAoCC,SAAAA,iCAAAA,CAAAA;AAW/C;;;;;;;;;;;;AAYC,MACD,IAAIC,KAAQ,GAAA;AACV,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;AAEzE,QAAA,OAAOC,QAAQE,MAAM,CAAC,CAACC,GAAK,EAAA,CAACC,eAAeC,SAAU,CAAA,GAAA;YACpD,OAAOF,GAAAA,CAAIG,MAAM,CAAC;gBAChB,KAAKF,eAAiB,GAAA;AACpB,oBAAA,OAAOG,+BAAqBF,CAAAA,SAAAA,CAAAA;AAC9B;AACF,aAAA,CAAA;AACF,SAAA,EAAGG,MAAEC,MAAM,EAAA,CAAA;AACb;AAnCA;;;;;AAKC,MACDC,WAAYC,CAAAA,MAAmB,EAAEC,GAAkB,CAAE;AACnD,QAAA,KAAK,CAACD,MAAQC,EAAAA,GAAAA,CAAAA;AAChB;AA4BF;;;;"}
@@ -0,0 +1,57 @@
1
+ import { z } from 'zod';
2
+ import { mapAttributeToSchema } from './attributes.mjs';
3
+ import { AbstractCoreRouteValidator } from './common.mjs';
4
+
5
+ /**
6
+ * A component validator for core content-type routes.
7
+ *
8
+ * Provides validation schemas and utilities for handling component-specific validation in content-type routes.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const strapi = // ... strapi instance
13
+ * const uid = 'api::article.article'
14
+ * const validator = new CoreComponentRouteValidator(strapi, uid);
15
+ *
16
+ * // Get validation schema for a component entry
17
+ * const componentSchema = validator.component;
18
+ * ```
19
+ */ class CoreComponentRouteValidator extends AbstractCoreRouteValidator {
20
+ /**
21
+ * Generates a comprehensive validation schema for a single component entry.
22
+ *
23
+ * Combines scalar fields and populatable fields into a single schema.
24
+ *
25
+ * @returns A schema for validating complete entries
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * const validator = new CoreComponentRouteValidator(strapi, uid);
30
+ * const entrySchema = validator.entry;
31
+ * ```
32
+ */ get entry() {
33
+ const { _scalarFields, _populatableFields } = this;
34
+ const entries = Object.entries({
35
+ ..._scalarFields,
36
+ ..._populatableFields
37
+ });
38
+ return entries.reduce((acc, [attributeName, attribute])=>{
39
+ return acc.extend({
40
+ get [attributeName] () {
41
+ return mapAttributeToSchema(attribute);
42
+ }
43
+ });
44
+ }, z.object());
45
+ }
46
+ /**
47
+ * Creates a new instance of CoreComponentRouteValidator
48
+ *
49
+ * @param strapi - The Strapi instance
50
+ * @param uid - The component's unique identifier
51
+ */ constructor(strapi, uid){
52
+ super(strapi, uid);
53
+ }
54
+ }
55
+
56
+ export { CoreComponentRouteValidator };
57
+ //# sourceMappingURL=component.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.mjs","sources":["../../../../src/core-api/routes/validation/component.ts"],"sourcesContent":["import type { Core, UID } from '@strapi/types';\nimport { z } from 'zod';\n\nimport { mapAttributeToSchema } from './attributes';\nimport { AbstractCoreRouteValidator } from './common';\n\n/**\n * A component validator for core content-type routes.\n *\n * Provides validation schemas and utilities for handling component-specific validation in content-type routes.\n *\n * @example\n * ```ts\n * const strapi = // ... strapi instance\n * const uid = 'api::article.article'\n * const validator = new CoreComponentRouteValidator(strapi, uid);\n *\n * // Get validation schema for a component entry\n * const componentSchema = validator.component;\n * ```\n */\nexport class CoreComponentRouteValidator extends AbstractCoreRouteValidator<UID.Component> {\n /**\n * Creates a new instance of CoreComponentRouteValidator\n *\n * @param strapi - The Strapi instance\n * @param uid - The component's unique identifier\n */\n constructor(strapi: Core.Strapi, uid: UID.Component) {\n super(strapi, uid);\n }\n\n /**\n * Generates a comprehensive validation schema for a single component entry.\n *\n * Combines scalar fields and populatable fields into a single schema.\n *\n * @returns A schema for validating complete entries\n *\n * @example\n * ```ts\n * const validator = new CoreComponentRouteValidator(strapi, uid);\n * const entrySchema = validator.entry;\n * ```\n */\n get entry() {\n const { _scalarFields, _populatableFields } = this;\n\n const entries = Object.entries({ ..._scalarFields, ..._populatableFields });\n\n return entries.reduce((acc, [attributeName, attribute]) => {\n return acc.extend({\n get [attributeName]() {\n return mapAttributeToSchema(attribute);\n },\n });\n }, z.object());\n }\n}\n"],"names":["CoreComponentRouteValidator","AbstractCoreRouteValidator","entry","_scalarFields","_populatableFields","entries","Object","reduce","acc","attributeName","attribute","extend","mapAttributeToSchema","z","object","constructor","strapi","uid"],"mappings":";;;;AAMA;;;;;;;;;;;;;;IAeO,MAAMA,2BAAoCC,SAAAA,0BAAAA,CAAAA;AAW/C;;;;;;;;;;;;AAYC,MACD,IAAIC,KAAQ,GAAA;AACV,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;AAEzE,QAAA,OAAOC,QAAQE,MAAM,CAAC,CAACC,GAAK,EAAA,CAACC,eAAeC,SAAU,CAAA,GAAA;YACpD,OAAOF,GAAAA,CAAIG,MAAM,CAAC;gBAChB,KAAKF,eAAiB,GAAA;AACpB,oBAAA,OAAOG,oBAAqBF,CAAAA,SAAAA,CAAAA;AAC9B;AACF,aAAA,CAAA;AACF,SAAA,EAAGG,EAAEC,MAAM,EAAA,CAAA;AACb;AAnCA;;;;;AAKC,MACDC,WAAYC,CAAAA,MAAmB,EAAEC,GAAkB,CAAE;AACnD,QAAA,KAAK,CAACD,MAAQC,EAAAA,GAAAA,CAAAA;AAChB;AA4BF;;;;"}
@@ -0,0 +1,2 @@
1
+ export declare const BOOLEAN_LITERAL_VALUES: readonly ["t", "1", "true", "f", "0", "false"];
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/core-api/routes/validation/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,gDAAiD,CAAC"}
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const BOOLEAN_LITERAL_VALUES = [
4
+ 't',
5
+ '1',
6
+ 'true',
7
+ 'f',
8
+ '0',
9
+ 'false'
10
+ ];
11
+
12
+ exports.BOOLEAN_LITERAL_VALUES = BOOLEAN_LITERAL_VALUES;
13
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sources":["../../../../src/core-api/routes/validation/constants.ts"],"sourcesContent":["export const BOOLEAN_LITERAL_VALUES = ['t', '1', 'true', 'f', '0', 'false'] as const;\n"],"names":["BOOLEAN_LITERAL_VALUES"],"mappings":";;MAAaA,sBAAyB,GAAA;AAAC,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,MAAA;AAAQ,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA;;;;;"}