@strapi/core 0.0.0-experimental.4da52d54a4257f3b2c655670b4528aec55c4b1c9 → 0.0.0-experimental.4e03c41e8e44fa7b77c41c3e0edd86c7f1fc9c52

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 (753) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +427 -403
  3. package/dist/Strapi.js.map +1 -1
  4. package/dist/Strapi.mjs +426 -402
  5. package/dist/Strapi.mjs.map +1 -1
  6. package/dist/compile.js +23 -14
  7. package/dist/compile.js.map +1 -1
  8. package/dist/compile.mjs +22 -14
  9. package/dist/compile.mjs.map +1 -1
  10. package/dist/configuration/config-loader.js +110 -97
  11. package/dist/configuration/config-loader.js.map +1 -1
  12. package/dist/configuration/config-loader.mjs +109 -96
  13. package/dist/configuration/config-loader.mjs.map +1 -1
  14. package/dist/configuration/get-dirs.js +31 -29
  15. package/dist/configuration/get-dirs.js.map +1 -1
  16. package/dist/configuration/get-dirs.mjs +30 -30
  17. package/dist/configuration/get-dirs.mjs.map +1 -1
  18. package/dist/configuration/index.d.ts +1 -0
  19. package/dist/configuration/index.d.ts.map +1 -1
  20. package/dist/configuration/index.js +85 -73
  21. package/dist/configuration/index.js.map +1 -1
  22. package/dist/configuration/index.mjs +84 -69
  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 +91 -0
  56. package/dist/core-api/routes/validation/attributes.d.ts.map +1 -0
  57. package/dist/core-api/routes/validation/attributes.js +583 -0
  58. package/dist/core-api/routes/validation/attributes.js.map +1 -0
  59. package/dist/core-api/routes/validation/attributes.mjs +580 -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 -39
  104. package/dist/core-api/service/single-type.js.map +1 -1
  105. package/dist/core-api/service/single-type.mjs +42 -41
  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 -132
  127. package/dist/ee/index.js.map +1 -1
  128. package/dist/ee/index.mjs +170 -134
  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 -122
  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 +154 -80
  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 +153 -82
  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 -60
  404. package/dist/services/cron.js.map +1 -1
  405. package/dist/services/cron.mjs +73 -62
  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.d.ts +1 -1
  420. package/dist/services/document-service/common.d.ts.map +1 -1
  421. package/dist/services/document-service/common.js +5 -4
  422. package/dist/services/document-service/common.js.map +1 -1
  423. package/dist/services/document-service/common.mjs +4 -5
  424. package/dist/services/document-service/common.mjs.map +1 -1
  425. package/dist/services/document-service/components.d.ts.map +1 -1
  426. package/dist/services/document-service/components.js +255 -257
  427. package/dist/services/document-service/components.js.map +1 -1
  428. package/dist/services/document-service/components.mjs +254 -262
  429. package/dist/services/document-service/components.mjs.map +1 -1
  430. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  431. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  432. package/dist/services/document-service/draft-and-publish.js +88 -48
  433. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  434. package/dist/services/document-service/draft-and-publish.mjs +87 -54
  435. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  436. package/dist/services/document-service/entries.d.ts +2 -2
  437. package/dist/services/document-service/entries.d.ts.map +1 -1
  438. package/dist/services/document-service/entries.js +109 -92
  439. package/dist/services/document-service/entries.js.map +1 -1
  440. package/dist/services/document-service/entries.mjs +108 -93
  441. package/dist/services/document-service/entries.mjs.map +1 -1
  442. package/dist/services/document-service/events.d.ts +1 -1
  443. package/dist/services/document-service/events.d.ts.map +1 -1
  444. package/dist/services/document-service/events.js +52 -40
  445. package/dist/services/document-service/events.js.map +1 -1
  446. package/dist/services/document-service/events.mjs +51 -41
  447. package/dist/services/document-service/events.mjs.map +1 -1
  448. package/dist/services/document-service/index.d.ts +2 -1
  449. package/dist/services/document-service/index.d.ts.map +1 -1
  450. package/dist/services/document-service/index.js +53 -32
  451. package/dist/services/document-service/index.js.map +1 -1
  452. package/dist/services/document-service/index.mjs +52 -33
  453. package/dist/services/document-service/index.mjs.map +1 -1
  454. package/dist/services/document-service/internationalization.js +62 -46
  455. package/dist/services/document-service/internationalization.js.map +1 -1
  456. package/dist/services/document-service/internationalization.mjs +61 -50
  457. package/dist/services/document-service/internationalization.mjs.map +1 -1
  458. package/dist/services/document-service/middlewares/errors.js +23 -19
  459. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  460. package/dist/services/document-service/middlewares/errors.mjs +22 -20
  461. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  462. package/dist/services/document-service/middlewares/middleware-manager.js +46 -44
  463. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  464. package/dist/services/document-service/middlewares/middleware-manager.mjs +45 -45
  465. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  466. package/dist/services/document-service/params.js +11 -5
  467. package/dist/services/document-service/params.js.map +1 -1
  468. package/dist/services/document-service/params.mjs +10 -6
  469. package/dist/services/document-service/params.mjs.map +1 -1
  470. package/dist/services/document-service/repository.d.ts.map +1 -1
  471. package/dist/services/document-service/repository.js +354 -304
  472. package/dist/services/document-service/repository.js.map +1 -1
  473. package/dist/services/document-service/repository.mjs +353 -305
  474. package/dist/services/document-service/repository.mjs.map +1 -1
  475. package/dist/services/document-service/transform/data.js +22 -12
  476. package/dist/services/document-service/transform/data.js.map +1 -1
  477. package/dist/services/document-service/transform/data.mjs +21 -13
  478. package/dist/services/document-service/transform/data.mjs.map +1 -1
  479. package/dist/services/document-service/transform/fields.js +26 -17
  480. package/dist/services/document-service/transform/fields.js.map +1 -1
  481. package/dist/services/document-service/transform/fields.mjs +25 -18
  482. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  483. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  484. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  485. package/dist/services/document-service/transform/id-map.js +116 -69
  486. package/dist/services/document-service/transform/id-map.js.map +1 -1
  487. package/dist/services/document-service/transform/id-map.mjs +115 -70
  488. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  489. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  490. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  491. package/dist/services/document-service/transform/id-transform.js +37 -29
  492. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  493. package/dist/services/document-service/transform/id-transform.mjs +36 -30
  494. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  495. package/dist/services/document-service/transform/populate.js +23 -18
  496. package/dist/services/document-service/transform/populate.js.map +1 -1
  497. package/dist/services/document-service/transform/populate.mjs +22 -19
  498. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  499. package/dist/services/document-service/transform/query.js +11 -6
  500. package/dist/services/document-service/transform/query.js.map +1 -1
  501. package/dist/services/document-service/transform/query.mjs +10 -7
  502. package/dist/services/document-service/transform/query.mjs.map +1 -1
  503. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
  504. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  505. package/dist/services/document-service/transform/relations/extract/data-ids.js +71 -48
  506. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  507. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +70 -49
  508. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  509. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  510. package/dist/services/document-service/transform/relations/transform/data-ids.js +97 -63
  511. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  512. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +96 -64
  513. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  514. package/dist/services/document-service/transform/relations/transform/default-locale.js +47 -29
  515. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  516. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +46 -30
  517. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  518. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  519. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  520. package/dist/services/document-service/transform/relations/utils/dp.js +52 -26
  521. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  522. package/dist/services/document-service/transform/relations/utils/dp.mjs +51 -27
  523. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  524. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +1 -1
  525. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  526. package/dist/services/document-service/transform/relations/utils/i18n.js +20 -18
  527. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  528. package/dist/services/document-service/transform/relations/utils/i18n.mjs +19 -21
  529. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  530. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  531. package/dist/services/document-service/transform/relations/utils/map-relation.js +116 -77
  532. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  533. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +115 -79
  534. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  535. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  536. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  537. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  538. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  539. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  540. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  541. package/dist/services/document-service/utils/populate.d.ts +1 -1
  542. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  543. package/dist/services/document-service/utils/populate.js +66 -42
  544. package/dist/services/document-service/utils/populate.js.map +1 -1
  545. package/dist/services/document-service/utils/populate.mjs +65 -43
  546. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  547. package/dist/services/document-service/utils/unidirectional-relations.d.ts +12 -9
  548. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
  549. package/dist/services/document-service/utils/unidirectional-relations.js +110 -52
  550. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
  551. package/dist/services/document-service/utils/unidirectional-relations.mjs +109 -54
  552. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
  553. package/dist/services/entity-service/index.js +230 -161
  554. package/dist/services/entity-service/index.js.map +1 -1
  555. package/dist/services/entity-service/index.mjs +229 -160
  556. package/dist/services/entity-service/index.mjs.map +1 -1
  557. package/dist/services/entity-validator/blocks-validator.js +135 -103
  558. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  559. package/dist/services/entity-validator/blocks-validator.mjs +134 -104
  560. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  561. package/dist/services/entity-validator/index.d.ts +1 -1
  562. package/dist/services/entity-validator/index.d.ts.map +1 -1
  563. package/dist/services/entity-validator/index.js +362 -367
  564. package/dist/services/entity-validator/index.js.map +1 -1
  565. package/dist/services/entity-validator/index.mjs +358 -364
  566. package/dist/services/entity-validator/index.mjs.map +1 -1
  567. package/dist/services/entity-validator/validators.js +268 -210
  568. package/dist/services/entity-validator/validators.js.map +1 -1
  569. package/dist/services/entity-validator/validators.mjs +267 -216
  570. package/dist/services/entity-validator/validators.mjs.map +1 -1
  571. package/dist/services/errors.js +65 -65
  572. package/dist/services/errors.js.map +1 -1
  573. package/dist/services/errors.mjs +64 -66
  574. package/dist/services/errors.mjs.map +1 -1
  575. package/dist/services/event-hub.js +82 -69
  576. package/dist/services/event-hub.js.map +1 -1
  577. package/dist/services/event-hub.mjs +81 -71
  578. package/dist/services/event-hub.mjs.map +1 -1
  579. package/dist/services/features.js +19 -14
  580. package/dist/services/features.js.map +1 -1
  581. package/dist/services/features.mjs +18 -15
  582. package/dist/services/features.mjs.map +1 -1
  583. package/dist/services/fs.js +41 -40
  584. package/dist/services/fs.js.map +1 -1
  585. package/dist/services/fs.mjs +40 -39
  586. package/dist/services/fs.mjs.map +1 -1
  587. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  588. package/dist/services/metrics/admin-user-hash.js +13 -11
  589. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  590. package/dist/services/metrics/admin-user-hash.mjs +12 -10
  591. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  592. package/dist/services/metrics/index.js +46 -40
  593. package/dist/services/metrics/index.js.map +1 -1
  594. package/dist/services/metrics/index.mjs +45 -42
  595. package/dist/services/metrics/index.mjs.map +1 -1
  596. package/dist/services/metrics/is-truthy.js +13 -6
  597. package/dist/services/metrics/is-truthy.js.map +1 -1
  598. package/dist/services/metrics/is-truthy.mjs +12 -6
  599. package/dist/services/metrics/is-truthy.mjs.map +1 -1
  600. package/dist/services/metrics/middleware.d.ts.map +1 -1
  601. package/dist/services/metrics/middleware.js +37 -22
  602. package/dist/services/metrics/middleware.js.map +1 -1
  603. package/dist/services/metrics/middleware.mjs +36 -24
  604. package/dist/services/metrics/middleware.mjs.map +1 -1
  605. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  606. package/dist/services/metrics/rate-limiter.js +24 -19
  607. package/dist/services/metrics/rate-limiter.js.map +1 -1
  608. package/dist/services/metrics/rate-limiter.mjs +23 -21
  609. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  610. package/dist/services/metrics/sender.d.ts.map +1 -1
  611. package/dist/services/metrics/sender.js +78 -69
  612. package/dist/services/metrics/sender.js.map +1 -1
  613. package/dist/services/metrics/sender.mjs +77 -64
  614. package/dist/services/metrics/sender.mjs.map +1 -1
  615. package/dist/services/query-params.js +13 -10
  616. package/dist/services/query-params.js.map +1 -1
  617. package/dist/services/query-params.mjs +12 -12
  618. package/dist/services/query-params.mjs.map +1 -1
  619. package/dist/services/reloader.js +35 -32
  620. package/dist/services/reloader.js.map +1 -1
  621. package/dist/services/reloader.mjs +34 -33
  622. package/dist/services/reloader.mjs.map +1 -1
  623. package/dist/services/request-context.js +11 -8
  624. package/dist/services/request-context.js.map +1 -1
  625. package/dist/services/request-context.mjs +10 -10
  626. package/dist/services/request-context.mjs.map +1 -1
  627. package/dist/services/server/admin-api.js +11 -10
  628. package/dist/services/server/admin-api.js.map +1 -1
  629. package/dist/services/server/admin-api.mjs +10 -11
  630. package/dist/services/server/admin-api.mjs.map +1 -1
  631. package/dist/services/server/api.js +33 -27
  632. package/dist/services/server/api.js.map +1 -1
  633. package/dist/services/server/api.mjs +32 -26
  634. package/dist/services/server/api.mjs.map +1 -1
  635. package/dist/services/server/compose-endpoint.js +116 -105
  636. package/dist/services/server/compose-endpoint.js.map +1 -1
  637. package/dist/services/server/compose-endpoint.mjs +115 -105
  638. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  639. package/dist/services/server/content-api.js +11 -9
  640. package/dist/services/server/content-api.js.map +1 -1
  641. package/dist/services/server/content-api.mjs +10 -10
  642. package/dist/services/server/content-api.mjs.map +1 -1
  643. package/dist/services/server/http-server.js +48 -44
  644. package/dist/services/server/http-server.js.map +1 -1
  645. package/dist/services/server/http-server.mjs +47 -43
  646. package/dist/services/server/http-server.mjs.map +1 -1
  647. package/dist/services/server/index.js +85 -82
  648. package/dist/services/server/index.js.map +1 -1
  649. package/dist/services/server/index.mjs +84 -81
  650. package/dist/services/server/index.mjs.map +1 -1
  651. package/dist/services/server/koa.js +49 -47
  652. package/dist/services/server/koa.js.map +1 -1
  653. package/dist/services/server/koa.mjs +48 -44
  654. package/dist/services/server/koa.mjs.map +1 -1
  655. package/dist/services/server/middleware.js +86 -82
  656. package/dist/services/server/middleware.js.map +1 -1
  657. package/dist/services/server/middleware.mjs +85 -82
  658. package/dist/services/server/middleware.mjs.map +1 -1
  659. package/dist/services/server/policy.js +24 -17
  660. package/dist/services/server/policy.js.map +1 -1
  661. package/dist/services/server/policy.mjs +23 -18
  662. package/dist/services/server/policy.mjs.map +1 -1
  663. package/dist/services/server/register-middlewares.js +68 -61
  664. package/dist/services/server/register-middlewares.js.map +1 -1
  665. package/dist/services/server/register-middlewares.mjs +67 -63
  666. package/dist/services/server/register-middlewares.mjs.map +1 -1
  667. package/dist/services/server/register-routes.js +109 -66
  668. package/dist/services/server/register-routes.js.map +1 -1
  669. package/dist/services/server/register-routes.mjs +108 -66
  670. package/dist/services/server/register-routes.mjs.map +1 -1
  671. package/dist/services/server/routing.d.ts +10 -0
  672. package/dist/services/server/routing.d.ts.map +1 -1
  673. package/dist/services/server/routing.js +100 -81
  674. package/dist/services/server/routing.js.map +1 -1
  675. package/dist/services/server/routing.mjs +99 -81
  676. package/dist/services/server/routing.mjs.map +1 -1
  677. package/dist/services/utils/dynamic-zones.js +13 -14
  678. package/dist/services/utils/dynamic-zones.js.map +1 -1
  679. package/dist/services/utils/dynamic-zones.mjs +12 -16
  680. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  681. package/dist/services/webhook-runner.js +124 -122
  682. package/dist/services/webhook-runner.js.map +1 -1
  683. package/dist/services/webhook-runner.mjs +123 -121
  684. package/dist/services/webhook-runner.mjs.map +1 -1
  685. package/dist/services/webhook-store.js +132 -99
  686. package/dist/services/webhook-store.js.map +1 -1
  687. package/dist/services/webhook-store.mjs +131 -101
  688. package/dist/services/webhook-store.mjs.map +1 -1
  689. package/dist/services/worker-queue.js +44 -49
  690. package/dist/services/worker-queue.js.map +1 -1
  691. package/dist/services/worker-queue.mjs +43 -49
  692. package/dist/services/worker-queue.mjs.map +1 -1
  693. package/dist/utils/convert-custom-field-type.js +17 -20
  694. package/dist/utils/convert-custom-field-type.js.map +1 -1
  695. package/dist/utils/convert-custom-field-type.mjs +16 -21
  696. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  697. package/dist/utils/cron.js +64 -30
  698. package/dist/utils/cron.js.map +1 -1
  699. package/dist/utils/cron.mjs +63 -31
  700. package/dist/utils/cron.mjs.map +1 -1
  701. package/dist/utils/fetch.js +24 -18
  702. package/dist/utils/fetch.js.map +1 -1
  703. package/dist/utils/fetch.mjs +23 -19
  704. package/dist/utils/fetch.mjs.map +1 -1
  705. package/dist/utils/filepath-to-prop-path.js +20 -28
  706. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  707. package/dist/utils/filepath-to-prop-path.mjs +19 -26
  708. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  709. package/dist/utils/is-initialized.js +21 -12
  710. package/dist/utils/is-initialized.js.map +1 -1
  711. package/dist/utils/is-initialized.mjs +20 -13
  712. package/dist/utils/is-initialized.mjs.map +1 -1
  713. package/dist/utils/lifecycles.js +6 -5
  714. package/dist/utils/lifecycles.js.map +1 -1
  715. package/dist/utils/lifecycles.mjs +5 -6
  716. package/dist/utils/lifecycles.mjs.map +1 -1
  717. package/dist/utils/load-config-file.js +40 -38
  718. package/dist/utils/load-config-file.js.map +1 -1
  719. package/dist/utils/load-config-file.mjs +39 -36
  720. package/dist/utils/load-config-file.mjs.map +1 -1
  721. package/dist/utils/load-files.js +40 -35
  722. package/dist/utils/load-files.js.map +1 -1
  723. package/dist/utils/load-files.mjs +39 -32
  724. package/dist/utils/load-files.mjs.map +1 -1
  725. package/dist/utils/open-browser.js +8 -8
  726. package/dist/utils/open-browser.js.map +1 -1
  727. package/dist/utils/open-browser.mjs +7 -7
  728. package/dist/utils/open-browser.mjs.map +1 -1
  729. package/dist/utils/resolve-working-dirs.js +23 -10
  730. package/dist/utils/resolve-working-dirs.js.map +1 -1
  731. package/dist/utils/resolve-working-dirs.mjs +22 -9
  732. package/dist/utils/resolve-working-dirs.mjs.map +1 -1
  733. package/dist/utils/signals.js +20 -14
  734. package/dist/utils/signals.js.map +1 -1
  735. package/dist/utils/signals.mjs +19 -15
  736. package/dist/utils/signals.mjs.map +1 -1
  737. package/dist/utils/startup-logger.d.ts.map +1 -1
  738. package/dist/utils/startup-logger.js +107 -78
  739. package/dist/utils/startup-logger.js.map +1 -1
  740. package/dist/utils/startup-logger.mjs +106 -75
  741. package/dist/utils/startup-logger.mjs.map +1 -1
  742. package/dist/utils/transform-content-types-to-models.d.ts +353 -21
  743. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  744. package/dist/utils/transform-content-types-to-models.js +350 -261
  745. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  746. package/dist/utils/transform-content-types-to-models.mjs +349 -269
  747. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  748. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  749. package/dist/utils/update-notifier/index.js +68 -73
  750. package/dist/utils/update-notifier/index.js.map +1 -1
  751. package/dist/utils/update-notifier/index.mjs +67 -67
  752. package/dist/utils/update-notifier/index.mjs.map +1 -1
  753. package/package.json +29 -29
@@ -0,0 +1,580 @@
1
+ import { relations } from '@strapi/utils';
2
+ import { z } from 'zod';
3
+ import { BOOLEAN_LITERAL_VALUES } from './constants.mjs';
4
+ import { CoreComponentRouteValidator } from './component.mjs';
5
+ import { CoreContentTypeRouteValidator } from './content-type.mjs';
6
+
7
+ /**
8
+ * Maps a Strapi attribute definition to a corresponding Zod validation schema.
9
+ * This function handles various Strapi attribute types and converts them into
10
+ * appropriate Zod validation schemas with their respective constraints.
11
+ *
12
+ * @param attribute - The Strapi attribute configuration object. Contains type information
13
+ * and validation rules for the attribute.
14
+ *
15
+ * @returns A Zod schema that corresponds to the input attribute's type and validation rules
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * // String attribute with constraints
20
+ * const stringAttribute = {
21
+ * type: 'string',
22
+ * minLength: 3,
23
+ * maxLength: 50,
24
+ * required: true
25
+ * };
26
+ * const stringSchema = mapAttributeToSchema(stringAttribute);
27
+ *
28
+ * // Enumeration attribute
29
+ * const enumAttribute = {
30
+ * type: 'enumeration',
31
+ * enum: ['draft', 'published', 'archived']
32
+ * };
33
+ * const enumSchema = mapAttributeToSchema(enumAttribute);
34
+ *
35
+ * // Media attribute with multiple files
36
+ * const mediaAttribute = {
37
+ * type: 'media',
38
+ * multiple: true
39
+ * };
40
+ * const mediaSchema = mapAttributeToSchema(mediaAttribute);
41
+ * ```
42
+ *
43
+ * @throws {Error} Throws an error if an unsupported attribute type is provided
44
+ *
45
+ * @remarks
46
+ * - Complex types (component, relation, dynamic zone) use placeholder schemas
47
+ *
48
+ * @todo: Move to @strapi/utils if needed for other validation
49
+ */ const mapAttributeToSchema = (attribute)=>{
50
+ switch(attribute.type){
51
+ case 'biginteger':
52
+ {
53
+ const { writable, required, min, max, default: defaultValue } = attribute;
54
+ const schema = augmentSchema(z.string(), [
55
+ (schema)=>min !== undefined ? schema.min(min) : schema,
56
+ (schema)=>max !== undefined ? schema.max(max) : schema,
57
+ maybeRequired(required),
58
+ maybeWithDefault(defaultValue),
59
+ maybeReadonly(writable)
60
+ ]);
61
+ return schema.describe('A biginteger field');
62
+ }
63
+ case 'blocks':
64
+ {
65
+ // TODO: better support blocks data structure
66
+ return z.array(z.any()).describe('A blocks field');
67
+ }
68
+ case 'boolean':
69
+ {
70
+ const { writable, required, default: defaultValue } = attribute;
71
+ const schema = augmentSchema(z.boolean(), [
72
+ maybeRequired(required),
73
+ maybeWithDefault(defaultValue),
74
+ maybeReadonly(writable)
75
+ ]);
76
+ return schema.describe('A boolean field');
77
+ }
78
+ case 'component':
79
+ {
80
+ const { _idmap } = z.globalRegistry;
81
+ const set = (id, schema)=>{
82
+ if (_idmap.has(id)) {
83
+ _idmap.delete(id);
84
+ }
85
+ z.globalRegistry.add(schema, {
86
+ id
87
+ });
88
+ };
89
+ const { writable, required, min, max, component, repeatable } = attribute;
90
+ const existsInGlobalRegistry = _idmap.has(component);
91
+ let componentSchema;
92
+ if (existsInGlobalRegistry) {
93
+ componentSchema = _idmap.get(component);
94
+ } else {
95
+ set(component, z.any());
96
+ const validator = new CoreComponentRouteValidator(strapi, component);
97
+ const schema = validator.entry;
98
+ set(component, schema);
99
+ componentSchema = schema;
100
+ }
101
+ const baseSchema = repeatable ? z.array(componentSchema) : componentSchema;
102
+ const schema = augmentSchema(baseSchema, [
103
+ (schema)=>min !== undefined && schema instanceof z.ZodArray ? schema.min(min) : schema,
104
+ (schema)=>max !== undefined && schema instanceof z.ZodArray ? schema.max(max) : schema,
105
+ maybeRequired(required),
106
+ maybeReadonly(writable)
107
+ ]);
108
+ return schema.describe('A component field');
109
+ }
110
+ case 'date':
111
+ {
112
+ const { writable, required, default: defaultValue } = attribute;
113
+ const schema = augmentSchema(z.string(), [
114
+ maybeRequired(required),
115
+ maybeWithDefault(defaultValue),
116
+ maybeReadonly(writable)
117
+ ]);
118
+ return schema.describe('A date field');
119
+ }
120
+ case 'datetime':
121
+ {
122
+ const { writable, required, default: defaultValue } = attribute;
123
+ const baseSchema = z.string();
124
+ const schema = augmentSchema(baseSchema, [
125
+ maybeRequired(required),
126
+ maybeWithDefault(defaultValue),
127
+ maybeReadonly(writable)
128
+ ]);
129
+ return schema.describe('A datetime field');
130
+ }
131
+ case 'decimal':
132
+ {
133
+ const { writable, required, min, max, default: defaultValue } = attribute;
134
+ const schema = augmentSchema(z.number(), [
135
+ maybeWithMinMax(min, max),
136
+ maybeRequired(required),
137
+ maybeWithDefault(defaultValue),
138
+ maybeReadonly(writable)
139
+ ]);
140
+ return schema.describe('A decimal field');
141
+ }
142
+ // TODO(zodV4): use the components' reference type instead of z.any
143
+ // TODO(zodV4): use discriminated unions to handle the different types of components
144
+ case 'dynamiczone':
145
+ {
146
+ const { writable, required, min, max } = attribute;
147
+ const baseSchema = z.array(z.any());
148
+ const schema = augmentSchema(baseSchema, [
149
+ maybeWithMinMax(min, max),
150
+ maybeRequired(required),
151
+ maybeReadonly(writable)
152
+ ]);
153
+ return schema.describe('A dynamic zone field');
154
+ }
155
+ case 'email':
156
+ {
157
+ const { writable, required, default: defaultValue, minLength, maxLength } = attribute;
158
+ const baseSchema = z.string().email();
159
+ const schema = augmentSchema(baseSchema, [
160
+ maybeWithMinMax(minLength, maxLength),
161
+ maybeRequired(required),
162
+ maybeWithDefault(defaultValue),
163
+ maybeReadonly(writable)
164
+ ]);
165
+ return schema.describe('An email field');
166
+ }
167
+ case 'enumeration':
168
+ {
169
+ const { writable, required, default: defaultValue, enum: enumValues } = attribute;
170
+ const baseSchema = z.enum(enumValues);
171
+ const schema = augmentSchema(baseSchema, [
172
+ maybeRequired(required),
173
+ maybeWithDefault(defaultValue),
174
+ maybeReadonly(writable)
175
+ ]);
176
+ return schema.describe('An enum field');
177
+ }
178
+ case 'float':
179
+ {
180
+ const { writable, required, min, max, default: defaultValue } = attribute;
181
+ const schema = augmentSchema(z.number(), [
182
+ maybeWithMinMax(min, max),
183
+ maybeRequired(required),
184
+ maybeReadonly(writable),
185
+ maybeWithDefault(defaultValue)
186
+ ]);
187
+ return schema.describe('A float field');
188
+ }
189
+ case 'integer':
190
+ {
191
+ const { writable, required, min, max, default: defaultValue } = attribute;
192
+ const baseSchema = z.number().int();
193
+ const schema = augmentSchema(baseSchema, [
194
+ maybeWithMinMax(min, max),
195
+ maybeRequired(required),
196
+ maybeReadonly(writable),
197
+ maybeWithDefault(defaultValue)
198
+ ]);
199
+ return schema.describe('A float field');
200
+ }
201
+ // TODO(zodV4): use reference to create fake cyclical JSON values
202
+ // see https://zod.dev/?id=json-type for more info
203
+ case 'json':
204
+ {
205
+ const { writable, required, default: defaultValue } = attribute;
206
+ const schema = augmentSchema(z.any(), [
207
+ maybeRequired(required),
208
+ maybeWithDefault(defaultValue),
209
+ maybeReadonly(writable)
210
+ ]);
211
+ return schema.describe('A JSON field');
212
+ }
213
+ case 'media':
214
+ {
215
+ const { writable, required, multiple } = attribute;
216
+ const baseSchema = multiple ? z.array(z.any()) : z.any();
217
+ const schema = augmentSchema(baseSchema, [
218
+ maybeRequired(required),
219
+ maybeReadonly(writable)
220
+ ]);
221
+ return schema.describe('A media field');
222
+ }
223
+ // TODO(zodV4): handle polymorphic relations using discriminated unions
224
+ case 'relation':
225
+ {
226
+ // Extract writable and required flags from the attribute
227
+ if (!('target' in attribute)) {
228
+ return z.any();
229
+ }
230
+ const { _idmap } = z.globalRegistry;
231
+ const set = (id, schema)=>{
232
+ if (_idmap.has(id)) {
233
+ _idmap.delete(id);
234
+ }
235
+ z.globalRegistry.add(schema, {
236
+ id
237
+ });
238
+ };
239
+ const { writable, required, target } = attribute;
240
+ const existsInGlobalRegistry = _idmap.has(target);
241
+ let targetSchema;
242
+ if (existsInGlobalRegistry) {
243
+ targetSchema = _idmap.get(target);
244
+ } else {
245
+ set(target, z.any());
246
+ const validator = new CoreContentTypeRouteValidator(strapi, target);
247
+ const schema = validator.document;
248
+ set(target, schema);
249
+ targetSchema = schema;
250
+ }
251
+ const baseSchema = relations.isAnyToMany(attribute) ? z.array(targetSchema) : targetSchema;
252
+ // Add required and readonly constraints based on attribute flags
253
+ const schema = augmentSchema(baseSchema, [
254
+ maybeRequired(required),
255
+ maybeReadonly(writable)
256
+ ]);
257
+ return schema.describe('A relational field');
258
+ }
259
+ case 'password':
260
+ case 'text':
261
+ case 'richtext':
262
+ case 'string':
263
+ {
264
+ const { writable, required, default: defaultValue, minLength, maxLength } = attribute;
265
+ const schema = augmentSchema(z.string(), [
266
+ maybeWithMinMax(minLength, maxLength),
267
+ maybeRequired(required),
268
+ maybeWithDefault(defaultValue),
269
+ maybeReadonly(writable)
270
+ ]);
271
+ return schema.describe(`A ${attribute.type} field`);
272
+ }
273
+ case 'time':
274
+ {
275
+ const { writable, required, default: defaultValue } = attribute;
276
+ const schema = augmentSchema(z.string(), [
277
+ maybeRequired(required),
278
+ maybeWithDefault(defaultValue),
279
+ maybeReadonly(writable)
280
+ ]);
281
+ return schema.describe('A time field');
282
+ }
283
+ case 'timestamp':
284
+ {
285
+ const { writable, required, default: defaultValue } = attribute;
286
+ const baseSchema = z.union([
287
+ z.string(),
288
+ z.number()
289
+ ]);
290
+ const schema = augmentSchema(baseSchema, [
291
+ maybeRequired(required),
292
+ maybeWithDefault(defaultValue),
293
+ maybeReadonly(writable)
294
+ ]);
295
+ return schema.describe('A timestamp field');
296
+ }
297
+ case 'uid':
298
+ {
299
+ const { writable, required, default: defaultValue, minLength, maxLength } = attribute;
300
+ const schema = augmentSchema(z.string(), [
301
+ maybeWithMinMax(minLength, maxLength),
302
+ maybeRequired(required),
303
+ maybeWithDefault(defaultValue),
304
+ maybeReadonly(writable)
305
+ ]);
306
+ return schema.describe('A UID field');
307
+ }
308
+ default:
309
+ throw new Error(`Unsupported attribute type: ${attribute.type}`);
310
+ }
311
+ };
312
+ /**
313
+ * Maps a Strapi attribute definition to a corresponding Zod validation schema.
314
+ * This function handles various Strapi attribute types and converts them into
315
+ * appropriate Zod validation schemas with their respective constraints.
316
+ *
317
+ * @param attribute - The Strapi attribute configuration object. Contains type information
318
+ * and validation rules for the attribute.
319
+ *
320
+ * @returns A Zod schema that corresponds to the input attribute's type and validation rules
321
+ *
322
+ * @example
323
+ * ```typescript
324
+ * // String attribute with constraints
325
+ * const stringAttribute = {
326
+ * type: 'string',
327
+ * minLength: 3,
328
+ * maxLength: 50,
329
+ * required: true
330
+ * };
331
+ * const stringSchema = mapAttributeToInputSchema(stringAttribute);
332
+ *
333
+ * // Enumeration attribute
334
+ * const enumAttribute = {
335
+ * type: 'enumeration',
336
+ * enum: ['draft', 'published', 'archived']
337
+ * };
338
+ * const enumSchema = mapAttributeToInputSchema(enumAttribute);
339
+ *
340
+ * // Media attribute with multiple files
341
+ * const mediaAttribute = {
342
+ * type: 'media',
343
+ * multiple: true
344
+ * };
345
+ * const mediaSchema = mapAttributeToInputSchema(mediaAttribute);
346
+ * ```
347
+ *
348
+ * @throws {Error} Throws an error if an unsupported attribute type is provided
349
+ *
350
+ * @remarks
351
+ * - Complex types (component, relation, dynamic zone) use placeholder schemas
352
+ *
353
+ * @todo: Move to @strapi/utils if needed for other validation
354
+ */ const mapAttributeToInputSchema = (attribute)=>{
355
+ switch(attribute.type){
356
+ case 'biginteger':
357
+ {
358
+ const { required, min, max, default: defaultValue } = attribute;
359
+ const schema = augmentSchema(z.string(), [
360
+ (schema)=>min !== undefined ? schema.min(min) : schema,
361
+ (schema)=>max !== undefined ? schema.max(max) : schema,
362
+ maybeRequired(required),
363
+ maybeWithDefault(defaultValue)
364
+ ]);
365
+ return schema.describe('A biginteger field');
366
+ }
367
+ case 'blocks':
368
+ {
369
+ // TODO: better support blocks data structure
370
+ return z.array(z.any()).describe('A blocks field');
371
+ }
372
+ case 'boolean':
373
+ {
374
+ const { required, default: defaultValue } = attribute;
375
+ const baseSchema = z.enum(BOOLEAN_LITERAL_VALUES);
376
+ const schema = augmentSchema(baseSchema, [
377
+ maybeRequired(required),
378
+ maybeWithDefault(defaultValue)
379
+ ]);
380
+ return schema.describe('A boolean field');
381
+ }
382
+ // TODO(zodV4): use the component reference type instead of z.any
383
+ case 'component':
384
+ {
385
+ const { required, repeatable, min, max } = attribute;
386
+ const baseSchema = repeatable ? z.array(z.any()) : z.any();
387
+ const schema = augmentSchema(baseSchema, [
388
+ (schema)=>min !== undefined && schema instanceof z.ZodArray ? schema.min(min) : schema,
389
+ (schema)=>max !== undefined && schema instanceof z.ZodArray ? schema.max(max) : schema,
390
+ maybeRequired(required)
391
+ ]);
392
+ return schema.describe('A component field');
393
+ }
394
+ case 'date':
395
+ {
396
+ const { required, default: defaultValue } = attribute;
397
+ const schema = augmentSchema(z.string(), [
398
+ maybeRequired(required),
399
+ maybeWithDefault(defaultValue)
400
+ ]);
401
+ return schema.describe('A date field');
402
+ }
403
+ case 'datetime':
404
+ {
405
+ const { required, default: defaultValue } = attribute;
406
+ const schema = augmentSchema(z.string(), [
407
+ maybeRequired(required),
408
+ maybeWithDefault(defaultValue)
409
+ ]);
410
+ return schema.describe('A datetime field');
411
+ }
412
+ case 'decimal':
413
+ {
414
+ const { required, min, max, default: defaultValue } = attribute;
415
+ const schema = augmentSchema(z.number(), [
416
+ maybeWithMinMax(min, max),
417
+ maybeRequired(required),
418
+ maybeWithDefault(defaultValue)
419
+ ]);
420
+ return schema.describe('A decimal field');
421
+ }
422
+ // TODO(zodV4): use the components' reference type instead of z.any
423
+ // TODO(zodV4): use discriminated unions to handle the different types of components
424
+ case 'dynamiczone':
425
+ {
426
+ const { required, min, max } = attribute;
427
+ const baseSchema = z.array(z.any());
428
+ const schema = augmentSchema(baseSchema, [
429
+ maybeWithMinMax(min, max),
430
+ maybeRequired(required)
431
+ ]);
432
+ return schema.describe('A dynamic zone field');
433
+ }
434
+ case 'email':
435
+ {
436
+ const { required, default: defaultValue, minLength, maxLength } = attribute;
437
+ const baseSchema = z.string().email();
438
+ const schema = augmentSchema(baseSchema, [
439
+ maybeWithMinMax(minLength, maxLength),
440
+ maybeRequired(required),
441
+ maybeWithDefault(defaultValue)
442
+ ]);
443
+ return schema.describe('An email field');
444
+ }
445
+ case 'enumeration':
446
+ {
447
+ const { required, default: defaultValue, enum: enumValues } = attribute;
448
+ const baseSchema = z.enum(enumValues);
449
+ const schema = augmentSchema(baseSchema, [
450
+ maybeRequired(required),
451
+ maybeWithDefault(defaultValue)
452
+ ]);
453
+ return schema.describe('An enum field');
454
+ }
455
+ case 'float':
456
+ {
457
+ const { required, min, max, default: defaultValue } = attribute;
458
+ const schema = augmentSchema(z.number(), [
459
+ maybeWithMinMax(min, max),
460
+ maybeRequired(required),
461
+ maybeWithDefault(defaultValue)
462
+ ]);
463
+ return schema.describe('A float field');
464
+ }
465
+ case 'integer':
466
+ {
467
+ const { required, min, max, default: defaultValue } = attribute;
468
+ const baseSchema = z.number().int();
469
+ const schema = augmentSchema(baseSchema, [
470
+ maybeWithMinMax(min, max),
471
+ maybeRequired(required),
472
+ maybeWithDefault(defaultValue)
473
+ ]);
474
+ return schema.describe('A float field');
475
+ }
476
+ // TODO(zodV4): use reference to create fake cyclical JSON values
477
+ // see https://zod.dev/?id=json-type for more info
478
+ case 'json':
479
+ {
480
+ const { required, default: defaultValue } = attribute;
481
+ const schema = augmentSchema(z.any(), [
482
+ maybeRequired(required),
483
+ maybeWithDefault(defaultValue)
484
+ ]);
485
+ return schema.describe('A JSON field');
486
+ }
487
+ case 'media':
488
+ {
489
+ const { required, multiple } = attribute;
490
+ const baseSchema = multiple ? z.array(z.any()) : z.any();
491
+ const schema = augmentSchema(baseSchema, [
492
+ maybeRequired(required)
493
+ ]);
494
+ return schema.describe('A media field');
495
+ }
496
+ // TODO(zodV4): use reference for relations types
497
+ // TODO(zodV4): handle polymorphic relations using discriminated unions
498
+ // TODO(zodv4): add the relation ordering API https://docs.strapi.io/cms/api/rest/relations
499
+ case 'relation':
500
+ {
501
+ const { required } = attribute;
502
+ const isToMany = relations.isAnyToMany(attribute);
503
+ const uuid = z.string().uuid();
504
+ const baseSchema = isToMany ? z.array(uuid) : uuid;
505
+ const schema = augmentSchema(baseSchema, [
506
+ maybeRequired(required)
507
+ ]);
508
+ return schema.describe('A relational field');
509
+ }
510
+ case 'password':
511
+ case 'text':
512
+ case 'richtext':
513
+ case 'string':
514
+ {
515
+ const { required, default: defaultValue, minLength, maxLength } = attribute;
516
+ const schema = augmentSchema(z.string(), [
517
+ maybeWithMinMax(minLength, maxLength),
518
+ maybeRequired(required),
519
+ maybeWithDefault(defaultValue)
520
+ ]);
521
+ return schema.describe(`A ${attribute.type} field`);
522
+ }
523
+ case 'time':
524
+ {
525
+ const { required, default: defaultValue } = attribute;
526
+ const schema = augmentSchema(z.string(), [
527
+ maybeRequired(required),
528
+ maybeWithDefault(defaultValue)
529
+ ]);
530
+ return schema.describe('A time field');
531
+ }
532
+ case 'timestamp':
533
+ {
534
+ const { required, default: defaultValue } = attribute;
535
+ const baseSchema = z.union([
536
+ z.string(),
537
+ z.number()
538
+ ]);
539
+ const schema = augmentSchema(baseSchema, [
540
+ maybeRequired(required),
541
+ maybeWithDefault(defaultValue)
542
+ ]);
543
+ return schema.describe('A timestamp field');
544
+ }
545
+ case 'uid':
546
+ {
547
+ const { required, default: defaultValue, minLength, maxLength } = attribute;
548
+ const schema = augmentSchema(z.string(), [
549
+ maybeWithMinMax(minLength, maxLength),
550
+ maybeRequired(required),
551
+ maybeWithDefault(defaultValue)
552
+ ]);
553
+ return schema.describe('A UID field');
554
+ }
555
+ default:
556
+ throw new Error(`Unsupported attribute type: ${attribute.type}`);
557
+ }
558
+ };
559
+ const maybeRequired = (required)=>{
560
+ return (schema)=>required !== true ? schema.optional() : schema;
561
+ };
562
+ const maybeReadonly = (writable)=>{
563
+ return (schema)=>writable !== false ? schema : schema.readonly();
564
+ };
565
+ const maybeWithDefault = (defaultValue)=>{
566
+ return (schema)=>{
567
+ return defaultValue !== undefined ? schema.default(typeof defaultValue === 'function' ? defaultValue() : defaultValue) : schema;
568
+ };
569
+ };
570
+ const maybeWithMinMax = (min, max)=>{
571
+ return (schema)=>{
572
+ return min !== undefined && max !== undefined ? schema.min(min).max(max) : schema;
573
+ };
574
+ };
575
+ const augmentSchema = (schema, modifiers)=>{
576
+ return modifiers.reduce((acc, modifier)=>modifier(acc), schema);
577
+ };
578
+
579
+ export { mapAttributeToInputSchema, mapAttributeToSchema };
580
+ //# sourceMappingURL=attributes.mjs.map
@@ -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 * @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 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 baseSchema = multiple ? z.array(z.any()) : z.any();\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 { _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, target } = attribute as Schema.Attribute.RelationWithTarget;\n\n const existsInGlobalRegistry = _idmap.has(target);\n\n let targetSchema: z.ZodType;\n\n if (existsInGlobalRegistry) {\n targetSchema = _idmap.get(target) as z.ZodType;\n } else {\n set(target, z.any());\n\n const validator = new CoreContentTypeRouteValidator(strapi, target);\n const schema = validator.document;\n\n set(target, schema);\n\n targetSchema = schema;\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"],"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","target","targetSchema","CoreContentTypeRouteValidator","document","relations","isAnyToMany","union","Error","mapAttributeToInputSchema","BOOLEAN_LITERAL_VALUES","isToMany","uuid","optional","readonly","modifiers","reduce","acc","modifier"],"mappings":"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"}