@strapi/core 0.0.0-experimental.1a574eb92501bf5230c6126b73f8e992690d8da1 → 0.0.0-experimental.1e4c115f717b021ca11c139584d4519db28ba786

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 (709) hide show
  1. package/dist/Strapi.js +455 -0
  2. package/dist/Strapi.js.map +1 -0
  3. package/dist/Strapi.mjs +434 -0
  4. package/dist/Strapi.mjs.map +1 -0
  5. package/dist/compile.js +27 -0
  6. package/dist/compile.js.map +1 -0
  7. package/dist/compile.mjs +25 -0
  8. package/dist/compile.mjs.map +1 -0
  9. package/dist/configuration/config-loader.js +119 -0
  10. package/dist/configuration/config-loader.js.map +1 -0
  11. package/dist/configuration/config-loader.mjs +117 -0
  12. package/dist/configuration/config-loader.mjs.map +1 -0
  13. package/dist/configuration/get-dirs.js +33 -0
  14. package/dist/configuration/get-dirs.js.map +1 -0
  15. package/dist/configuration/get-dirs.mjs +31 -0
  16. package/dist/configuration/get-dirs.mjs.map +1 -0
  17. package/dist/configuration/index.d.ts +1 -0
  18. package/dist/configuration/index.d.ts.map +1 -1
  19. package/dist/configuration/index.js +92 -0
  20. package/dist/configuration/index.js.map +1 -0
  21. package/dist/configuration/index.mjs +90 -0
  22. package/dist/configuration/index.mjs.map +1 -0
  23. package/dist/configuration/urls.d.ts.map +1 -1
  24. package/dist/configuration/urls.js +81 -0
  25. package/dist/configuration/urls.js.map +1 -0
  26. package/dist/configuration/urls.mjs +77 -0
  27. package/dist/configuration/urls.mjs.map +1 -0
  28. package/dist/container.js +34 -0
  29. package/dist/container.js.map +1 -0
  30. package/dist/container.mjs +32 -0
  31. package/dist/container.mjs.map +1 -0
  32. package/dist/core-api/controller/collection-type.js +85 -0
  33. package/dist/core-api/controller/collection-type.js.map +1 -0
  34. package/dist/core-api/controller/collection-type.mjs +83 -0
  35. package/dist/core-api/controller/collection-type.mjs.map +1 -0
  36. package/dist/core-api/controller/index.js +67 -0
  37. package/dist/core-api/controller/index.js.map +1 -0
  38. package/dist/core-api/controller/index.mjs +65 -0
  39. package/dist/core-api/controller/index.mjs.map +1 -0
  40. package/dist/core-api/controller/single-type.js +47 -0
  41. package/dist/core-api/controller/single-type.js.map +1 -0
  42. package/dist/core-api/controller/single-type.mjs +45 -0
  43. package/dist/core-api/controller/single-type.mjs.map +1 -0
  44. package/dist/core-api/controller/transform.js +85 -0
  45. package/dist/core-api/controller/transform.js.map +1 -0
  46. package/dist/core-api/controller/transform.mjs +83 -0
  47. package/dist/core-api/controller/transform.mjs.map +1 -0
  48. package/dist/core-api/routes/index.d.ts +4 -22
  49. package/dist/core-api/routes/index.d.ts.map +1 -1
  50. package/dist/core-api/routes/index.js +192 -0
  51. package/dist/core-api/routes/index.js.map +1 -0
  52. package/dist/core-api/routes/index.mjs +190 -0
  53. package/dist/core-api/routes/index.mjs.map +1 -0
  54. package/dist/core-api/routes/validation/attributes.d.ts +91 -0
  55. package/dist/core-api/routes/validation/attributes.d.ts.map +1 -0
  56. package/dist/core-api/routes/validation/attributes.js +583 -0
  57. package/dist/core-api/routes/validation/attributes.js.map +1 -0
  58. package/dist/core-api/routes/validation/attributes.mjs +580 -0
  59. package/dist/core-api/routes/validation/attributes.mjs.map +1 -0
  60. package/dist/core-api/routes/validation/common.d.ts +103 -0
  61. package/dist/core-api/routes/validation/common.d.ts.map +1 -0
  62. package/dist/core-api/routes/validation/common.js +95 -0
  63. package/dist/core-api/routes/validation/common.js.map +1 -0
  64. package/dist/core-api/routes/validation/common.mjs +93 -0
  65. package/dist/core-api/routes/validation/common.mjs.map +1 -0
  66. package/dist/core-api/routes/validation/component.d.ts +42 -0
  67. package/dist/core-api/routes/validation/component.d.ts.map +1 -0
  68. package/dist/core-api/routes/validation/component.js +59 -0
  69. package/dist/core-api/routes/validation/component.js.map +1 -0
  70. package/dist/core-api/routes/validation/component.mjs +57 -0
  71. package/dist/core-api/routes/validation/component.mjs.map +1 -0
  72. package/dist/core-api/routes/validation/constants.d.ts +2 -0
  73. package/dist/core-api/routes/validation/constants.d.ts.map +1 -0
  74. package/dist/core-api/routes/validation/constants.js +13 -0
  75. package/dist/core-api/routes/validation/constants.js.map +1 -0
  76. package/dist/core-api/routes/validation/constants.mjs +11 -0
  77. package/dist/core-api/routes/validation/constants.mjs.map +1 -0
  78. package/dist/core-api/routes/validation/content-type.d.ts +171 -0
  79. package/dist/core-api/routes/validation/content-type.d.ts.map +1 -0
  80. package/dist/core-api/routes/validation/content-type.js +246 -0
  81. package/dist/core-api/routes/validation/content-type.js.map +1 -0
  82. package/dist/core-api/routes/validation/content-type.mjs +244 -0
  83. package/dist/core-api/routes/validation/content-type.mjs.map +1 -0
  84. package/dist/core-api/routes/validation/index.d.ts +5 -0
  85. package/dist/core-api/routes/validation/index.d.ts.map +1 -0
  86. package/dist/core-api/service/collection-type.js +80 -0
  87. package/dist/core-api/service/collection-type.js.map +1 -0
  88. package/dist/core-api/service/collection-type.mjs +77 -0
  89. package/dist/core-api/service/collection-type.mjs.map +1 -0
  90. package/dist/core-api/service/core-service.js +13 -0
  91. package/dist/core-api/service/core-service.js.map +1 -0
  92. package/dist/core-api/service/core-service.mjs +11 -0
  93. package/dist/core-api/service/core-service.mjs.map +1 -0
  94. package/dist/core-api/service/index.js +16 -0
  95. package/dist/core-api/service/index.js.map +1 -0
  96. package/dist/core-api/service/index.mjs +14 -0
  97. package/dist/core-api/service/index.mjs.map +1 -0
  98. package/dist/core-api/service/pagination.js +78 -0
  99. package/dist/core-api/service/pagination.js.map +1 -0
  100. package/dist/core-api/service/pagination.mjs +73 -0
  101. package/dist/core-api/service/pagination.mjs.map +1 -0
  102. package/dist/core-api/service/single-type.js +50 -0
  103. package/dist/core-api/service/single-type.js.map +1 -0
  104. package/dist/core-api/service/single-type.mjs +47 -0
  105. package/dist/core-api/service/single-type.mjs.map +1 -0
  106. package/dist/domain/content-type/index.js +106 -0
  107. package/dist/domain/content-type/index.js.map +1 -0
  108. package/dist/domain/content-type/index.mjs +103 -0
  109. package/dist/domain/content-type/index.mjs.map +1 -0
  110. package/dist/domain/content-type/validator.js +92 -0
  111. package/dist/domain/content-type/validator.js.map +1 -0
  112. package/dist/domain/content-type/validator.mjs +90 -0
  113. package/dist/domain/content-type/validator.mjs.map +1 -0
  114. package/dist/domain/module/index.d.ts.map +1 -1
  115. package/dist/domain/module/index.js +119 -0
  116. package/dist/domain/module/index.js.map +1 -0
  117. package/dist/domain/module/index.mjs +117 -0
  118. package/dist/domain/module/index.mjs.map +1 -0
  119. package/dist/domain/module/validation.js +30 -0
  120. package/dist/domain/module/validation.js.map +1 -0
  121. package/dist/domain/module/validation.mjs +28 -0
  122. package/dist/domain/module/validation.mjs.map +1 -0
  123. package/dist/ee/index.d.ts +1 -0
  124. package/dist/ee/index.d.ts.map +1 -1
  125. package/dist/ee/index.js +192 -0
  126. package/dist/ee/index.js.map +1 -0
  127. package/dist/ee/index.mjs +190 -0
  128. package/dist/ee/index.mjs.map +1 -0
  129. package/dist/ee/license.d.ts.map +1 -1
  130. package/dist/ee/license.js +116 -0
  131. package/dist/ee/license.js.map +1 -0
  132. package/dist/ee/license.mjs +111 -0
  133. package/dist/ee/license.mjs.map +1 -0
  134. package/dist/factories.d.ts +3 -1
  135. package/dist/factories.d.ts.map +1 -1
  136. package/dist/factories.js +93 -0
  137. package/dist/factories.js.map +1 -0
  138. package/dist/factories.mjs +87 -0
  139. package/dist/factories.mjs.map +1 -0
  140. package/dist/index.js +19 -10099
  141. package/dist/index.js.map +1 -1
  142. package/dist/index.mjs +17 -10076
  143. package/dist/index.mjs.map +1 -1
  144. package/dist/loaders/admin.d.ts.map +1 -1
  145. package/dist/loaders/admin.js +27 -0
  146. package/dist/loaders/admin.js.map +1 -0
  147. package/dist/loaders/admin.mjs +25 -0
  148. package/dist/loaders/admin.mjs.map +1 -0
  149. package/dist/loaders/apis.js +160 -0
  150. package/dist/loaders/apis.js.map +1 -0
  151. package/dist/loaders/apis.mjs +158 -0
  152. package/dist/loaders/apis.mjs.map +1 -0
  153. package/dist/loaders/components.js +37 -0
  154. package/dist/loaders/components.js.map +1 -0
  155. package/dist/loaders/components.mjs +35 -0
  156. package/dist/loaders/components.mjs.map +1 -0
  157. package/dist/loaders/index.js +26 -0
  158. package/dist/loaders/index.js.map +1 -0
  159. package/dist/loaders/index.mjs +24 -0
  160. package/dist/loaders/index.mjs.map +1 -0
  161. package/dist/loaders/middlewares.js +35 -0
  162. package/dist/loaders/middlewares.js.map +1 -0
  163. package/dist/loaders/middlewares.mjs +33 -0
  164. package/dist/loaders/middlewares.mjs.map +1 -0
  165. package/dist/loaders/plugins/get-enabled-plugins.js +136 -0
  166. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -0
  167. package/dist/loaders/plugins/get-enabled-plugins.mjs +134 -0
  168. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -0
  169. package/dist/loaders/plugins/get-user-plugins-config.js +28 -0
  170. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -0
  171. package/dist/loaders/plugins/get-user-plugins-config.mjs +26 -0
  172. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -0
  173. package/dist/loaders/plugins/index.js +155 -0
  174. package/dist/loaders/plugins/index.js.map +1 -0
  175. package/dist/loaders/plugins/index.mjs +134 -0
  176. package/dist/loaders/plugins/index.mjs.map +1 -0
  177. package/dist/loaders/policies.js +29 -0
  178. package/dist/loaders/policies.js.map +1 -0
  179. package/dist/loaders/policies.mjs +27 -0
  180. package/dist/loaders/policies.mjs.map +1 -0
  181. package/dist/loaders/sanitizers.js +12 -0
  182. package/dist/loaders/sanitizers.js.map +1 -0
  183. package/dist/loaders/sanitizers.mjs +10 -0
  184. package/dist/loaders/sanitizers.mjs.map +1 -0
  185. package/dist/loaders/src-index.js +41 -0
  186. package/dist/loaders/src-index.js.map +1 -0
  187. package/dist/loaders/src-index.mjs +39 -0
  188. package/dist/loaders/src-index.mjs.map +1 -0
  189. package/dist/loaders/validators.js +11 -0
  190. package/dist/loaders/validators.js.map +1 -0
  191. package/dist/loaders/validators.mjs +9 -0
  192. package/dist/loaders/validators.mjs.map +1 -0
  193. package/dist/middlewares/body.js +69 -0
  194. package/dist/middlewares/body.js.map +1 -0
  195. package/dist/middlewares/body.mjs +67 -0
  196. package/dist/middlewares/body.mjs.map +1 -0
  197. package/dist/middlewares/compression.js +8 -0
  198. package/dist/middlewares/compression.js.map +1 -0
  199. package/dist/middlewares/compression.mjs +6 -0
  200. package/dist/middlewares/compression.mjs.map +1 -0
  201. package/dist/middlewares/cors.js +64 -0
  202. package/dist/middlewares/cors.js.map +1 -0
  203. package/dist/middlewares/cors.mjs +62 -0
  204. package/dist/middlewares/cors.mjs.map +1 -0
  205. package/dist/middlewares/errors.js +35 -0
  206. package/dist/middlewares/errors.js.map +1 -0
  207. package/dist/middlewares/errors.mjs +33 -0
  208. package/dist/middlewares/errors.mjs.map +1 -0
  209. package/dist/middlewares/favicon.js +32 -0
  210. package/dist/middlewares/favicon.js.map +1 -0
  211. package/dist/middlewares/favicon.mjs +30 -0
  212. package/dist/middlewares/favicon.mjs.map +1 -0
  213. package/dist/middlewares/index.js +36 -0
  214. package/dist/middlewares/index.js.map +1 -0
  215. package/dist/middlewares/index.mjs +34 -0
  216. package/dist/middlewares/index.mjs.map +1 -0
  217. package/dist/middlewares/ip.js +8 -0
  218. package/dist/middlewares/ip.js.map +1 -0
  219. package/dist/middlewares/ip.mjs +6 -0
  220. package/dist/middlewares/ip.mjs.map +1 -0
  221. package/dist/middlewares/logger.js +13 -0
  222. package/dist/middlewares/logger.js.map +1 -0
  223. package/dist/middlewares/logger.mjs +11 -0
  224. package/dist/middlewares/logger.mjs.map +1 -0
  225. package/dist/middlewares/powered-by.js +18 -0
  226. package/dist/middlewares/powered-by.js.map +1 -0
  227. package/dist/middlewares/powered-by.mjs +16 -0
  228. package/dist/middlewares/powered-by.mjs.map +1 -0
  229. package/dist/middlewares/public.js +38 -0
  230. package/dist/middlewares/public.js.map +1 -0
  231. package/dist/middlewares/public.mjs +36 -0
  232. package/dist/middlewares/public.mjs.map +1 -0
  233. package/dist/middlewares/query.js +43 -0
  234. package/dist/middlewares/query.js.map +1 -0
  235. package/dist/middlewares/query.mjs +41 -0
  236. package/dist/middlewares/query.mjs.map +1 -0
  237. package/dist/middlewares/response-time.js +13 -0
  238. package/dist/middlewares/response-time.js.map +1 -0
  239. package/dist/middlewares/response-time.mjs +11 -0
  240. package/dist/middlewares/response-time.mjs.map +1 -0
  241. package/dist/middlewares/responses.js +17 -0
  242. package/dist/middlewares/responses.js.map +1 -0
  243. package/dist/middlewares/responses.mjs +15 -0
  244. package/dist/middlewares/responses.mjs.map +1 -0
  245. package/dist/middlewares/security.js +116 -0
  246. package/dist/middlewares/security.js.map +1 -0
  247. package/dist/middlewares/security.mjs +114 -0
  248. package/dist/middlewares/security.mjs.map +1 -0
  249. package/dist/middlewares/session.js +31 -0
  250. package/dist/middlewares/session.js.map +1 -0
  251. package/dist/middlewares/session.mjs +29 -0
  252. package/dist/middlewares/session.mjs.map +1 -0
  253. package/dist/migrations/database/5.0.0-discard-drafts.js +168 -0
  254. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -0
  255. package/dist/migrations/database/5.0.0-discard-drafts.mjs +165 -0
  256. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -0
  257. package/dist/migrations/draft-publish.js +69 -0
  258. package/dist/migrations/draft-publish.js.map +1 -0
  259. package/dist/migrations/draft-publish.mjs +66 -0
  260. package/dist/migrations/draft-publish.mjs.map +1 -0
  261. package/dist/migrations/i18n.js +71 -0
  262. package/dist/migrations/i18n.js.map +1 -0
  263. package/dist/migrations/i18n.mjs +68 -0
  264. package/dist/migrations/i18n.mjs.map +1 -0
  265. package/dist/migrations/index.js +29 -0
  266. package/dist/migrations/index.js.map +1 -0
  267. package/dist/migrations/index.mjs +26 -0
  268. package/dist/migrations/index.mjs.map +1 -0
  269. package/dist/package.json.js +183 -0
  270. package/dist/package.json.js.map +1 -0
  271. package/dist/package.json.mjs +160 -0
  272. package/dist/package.json.mjs.map +1 -0
  273. package/dist/providers/admin.js +30 -0
  274. package/dist/providers/admin.js.map +1 -0
  275. package/dist/providers/admin.mjs +28 -0
  276. package/dist/providers/admin.mjs.map +1 -0
  277. package/dist/providers/coreStore.js +16 -0
  278. package/dist/providers/coreStore.js.map +1 -0
  279. package/dist/providers/coreStore.mjs +14 -0
  280. package/dist/providers/coreStore.mjs.map +1 -0
  281. package/dist/providers/cron.js +23 -0
  282. package/dist/providers/cron.js.map +1 -0
  283. package/dist/providers/cron.mjs +21 -0
  284. package/dist/providers/cron.mjs.map +1 -0
  285. package/dist/providers/index.js +20 -0
  286. package/dist/providers/index.js.map +1 -0
  287. package/dist/providers/index.mjs +18 -0
  288. package/dist/providers/index.mjs.map +1 -0
  289. package/dist/providers/provider.js +6 -0
  290. package/dist/providers/provider.js.map +1 -0
  291. package/dist/providers/provider.mjs +4 -0
  292. package/dist/providers/provider.mjs.map +1 -0
  293. package/dist/providers/registries.js +40 -0
  294. package/dist/providers/registries.js.map +1 -0
  295. package/dist/providers/registries.mjs +38 -0
  296. package/dist/providers/registries.mjs.map +1 -0
  297. package/dist/providers/telemetry.js +22 -0
  298. package/dist/providers/telemetry.js.map +1 -0
  299. package/dist/providers/telemetry.mjs +20 -0
  300. package/dist/providers/telemetry.mjs.map +1 -0
  301. package/dist/providers/webhooks.js +32 -0
  302. package/dist/providers/webhooks.js.map +1 -0
  303. package/dist/providers/webhooks.mjs +30 -0
  304. package/dist/providers/webhooks.mjs.map +1 -0
  305. package/dist/registries/apis.js +26 -0
  306. package/dist/registries/apis.js.map +1 -0
  307. package/dist/registries/apis.mjs +24 -0
  308. package/dist/registries/apis.mjs.map +1 -0
  309. package/dist/registries/components.js +43 -0
  310. package/dist/registries/components.js.map +1 -0
  311. package/dist/registries/components.mjs +41 -0
  312. package/dist/registries/components.mjs.map +1 -0
  313. package/dist/registries/content-types.js +65 -0
  314. package/dist/registries/content-types.js.map +1 -0
  315. package/dist/registries/content-types.mjs +63 -0
  316. package/dist/registries/content-types.mjs.map +1 -0
  317. package/dist/registries/controllers.js +79 -0
  318. package/dist/registries/controllers.js.map +1 -0
  319. package/dist/registries/controllers.mjs +77 -0
  320. package/dist/registries/controllers.mjs.map +1 -0
  321. package/dist/registries/custom-fields.js +81 -0
  322. package/dist/registries/custom-fields.js.map +1 -0
  323. package/dist/registries/custom-fields.mjs +79 -0
  324. package/dist/registries/custom-fields.mjs.map +1 -0
  325. package/dist/registries/hooks.js +55 -0
  326. package/dist/registries/hooks.js.map +1 -0
  327. package/dist/registries/hooks.mjs +53 -0
  328. package/dist/registries/hooks.mjs.map +1 -0
  329. package/dist/registries/middlewares.js +58 -0
  330. package/dist/registries/middlewares.js.map +1 -0
  331. package/dist/registries/middlewares.mjs +56 -0
  332. package/dist/registries/middlewares.mjs.map +1 -0
  333. package/dist/registries/models.js +17 -0
  334. package/dist/registries/models.js.map +1 -0
  335. package/dist/registries/models.mjs +15 -0
  336. package/dist/registries/models.mjs.map +1 -0
  337. package/dist/registries/modules.js +42 -0
  338. package/dist/registries/modules.js.map +1 -0
  339. package/dist/registries/modules.mjs +40 -0
  340. package/dist/registries/modules.mjs.map +1 -0
  341. package/dist/registries/namespace.js +28 -0
  342. package/dist/registries/namespace.js.map +1 -0
  343. package/dist/registries/namespace.mjs +24 -0
  344. package/dist/registries/namespace.mjs.map +1 -0
  345. package/dist/registries/plugins.js +26 -0
  346. package/dist/registries/plugins.js.map +1 -0
  347. package/dist/registries/plugins.mjs +24 -0
  348. package/dist/registries/plugins.mjs.map +1 -0
  349. package/dist/registries/policies.js +115 -0
  350. package/dist/registries/policies.js.map +1 -0
  351. package/dist/registries/policies.mjs +113 -0
  352. package/dist/registries/policies.mjs.map +1 -0
  353. package/dist/registries/sanitizers.js +26 -0
  354. package/dist/registries/sanitizers.js.map +1 -0
  355. package/dist/registries/sanitizers.mjs +24 -0
  356. package/dist/registries/sanitizers.mjs.map +1 -0
  357. package/dist/registries/services.js +80 -0
  358. package/dist/registries/services.js.map +1 -0
  359. package/dist/registries/services.mjs +78 -0
  360. package/dist/registries/services.mjs.map +1 -0
  361. package/dist/registries/validators.js +26 -0
  362. package/dist/registries/validators.js.map +1 -0
  363. package/dist/registries/validators.mjs +24 -0
  364. package/dist/registries/validators.mjs.map +1 -0
  365. package/dist/services/auth/index.js +81 -0
  366. package/dist/services/auth/index.js.map +1 -0
  367. package/dist/services/auth/index.mjs +79 -0
  368. package/dist/services/auth/index.mjs.map +1 -0
  369. package/dist/services/config.js +51 -0
  370. package/dist/services/config.js.map +1 -0
  371. package/dist/services/config.mjs +49 -0
  372. package/dist/services/config.mjs.map +1 -0
  373. package/dist/services/content-api/index.js +86 -0
  374. package/dist/services/content-api/index.js.map +1 -0
  375. package/dist/services/content-api/index.mjs +84 -0
  376. package/dist/services/content-api/index.mjs.map +1 -0
  377. package/dist/services/content-api/permissions/engine.js +10 -0
  378. package/dist/services/content-api/permissions/engine.js.map +1 -0
  379. package/dist/services/content-api/permissions/engine.mjs +8 -0
  380. package/dist/services/content-api/permissions/engine.mjs.map +1 -0
  381. package/dist/services/content-api/permissions/index.js +107 -0
  382. package/dist/services/content-api/permissions/index.js.map +1 -0
  383. package/dist/services/content-api/permissions/index.mjs +105 -0
  384. package/dist/services/content-api/permissions/index.mjs.map +1 -0
  385. package/dist/services/content-api/permissions/providers/action.js +19 -0
  386. package/dist/services/content-api/permissions/providers/action.js.map +1 -0
  387. package/dist/services/content-api/permissions/providers/action.mjs +17 -0
  388. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -0
  389. package/dist/services/content-api/permissions/providers/condition.js +19 -0
  390. package/dist/services/content-api/permissions/providers/condition.js.map +1 -0
  391. package/dist/services/content-api/permissions/providers/condition.mjs +17 -0
  392. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -0
  393. package/dist/services/core-store.js +127 -0
  394. package/dist/services/core-store.js.map +1 -0
  395. package/dist/services/core-store.mjs +124 -0
  396. package/dist/services/core-store.mjs.map +1 -0
  397. package/dist/services/cron.js +77 -0
  398. package/dist/services/cron.js.map +1 -0
  399. package/dist/services/cron.mjs +75 -0
  400. package/dist/services/cron.mjs.map +1 -0
  401. package/dist/services/custom-fields.js +12 -0
  402. package/dist/services/custom-fields.js.map +1 -0
  403. package/dist/services/custom-fields.mjs +10 -0
  404. package/dist/services/custom-fields.mjs.map +1 -0
  405. package/dist/services/document-service/attributes/index.js +27 -0
  406. package/dist/services/document-service/attributes/index.js.map +1 -0
  407. package/dist/services/document-service/attributes/index.mjs +25 -0
  408. package/dist/services/document-service/attributes/index.mjs.map +1 -0
  409. package/dist/services/document-service/attributes/transforms.js +21 -0
  410. package/dist/services/document-service/attributes/transforms.js.map +1 -0
  411. package/dist/services/document-service/attributes/transforms.mjs +19 -0
  412. package/dist/services/document-service/attributes/transforms.mjs.map +1 -0
  413. package/dist/services/document-service/common.js +8 -0
  414. package/dist/services/document-service/common.js.map +1 -0
  415. package/dist/services/document-service/common.mjs +6 -0
  416. package/dist/services/document-service/common.mjs.map +1 -0
  417. package/dist/services/document-service/components.js +286 -0
  418. package/dist/services/document-service/components.js.map +1 -0
  419. package/dist/services/document-service/components.mjs +278 -0
  420. package/dist/services/document-service/components.mjs.map +1 -0
  421. package/dist/services/document-service/draft-and-publish.js +109 -0
  422. package/dist/services/document-service/draft-and-publish.js.map +1 -0
  423. package/dist/services/document-service/draft-and-publish.mjs +102 -0
  424. package/dist/services/document-service/draft-and-publish.mjs.map +1 -0
  425. package/dist/services/document-service/entries.js +113 -0
  426. package/dist/services/document-service/entries.js.map +1 -0
  427. package/dist/services/document-service/entries.mjs +111 -0
  428. package/dist/services/document-service/entries.mjs.map +1 -0
  429. package/dist/services/document-service/events.js +59 -0
  430. package/dist/services/document-service/events.js.map +1 -0
  431. package/dist/services/document-service/events.mjs +57 -0
  432. package/dist/services/document-service/events.mjs.map +1 -0
  433. package/dist/services/document-service/index.js +56 -0
  434. package/dist/services/document-service/index.js.map +1 -0
  435. package/dist/services/document-service/index.mjs +54 -0
  436. package/dist/services/document-service/index.mjs.map +1 -0
  437. package/dist/services/document-service/internationalization.js +79 -0
  438. package/dist/services/document-service/internationalization.js.map +1 -0
  439. package/dist/services/document-service/internationalization.mjs +74 -0
  440. package/dist/services/document-service/internationalization.mjs.map +1 -0
  441. package/dist/services/document-service/middlewares/errors.js +29 -0
  442. package/dist/services/document-service/middlewares/errors.js.map +1 -0
  443. package/dist/services/document-service/middlewares/errors.mjs +27 -0
  444. package/dist/services/document-service/middlewares/errors.mjs.map +1 -0
  445. package/dist/services/document-service/middlewares/middleware-manager.js +51 -0
  446. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -0
  447. package/dist/services/document-service/middlewares/middleware-manager.mjs +49 -0
  448. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -0
  449. package/dist/services/document-service/params.js +14 -0
  450. package/dist/services/document-service/params.js.map +1 -0
  451. package/dist/services/document-service/params.mjs +12 -0
  452. package/dist/services/document-service/params.mjs.map +1 -0
  453. package/dist/services/document-service/repository.js +364 -0
  454. package/dist/services/document-service/repository.js.map +1 -0
  455. package/dist/services/document-service/repository.mjs +362 -0
  456. package/dist/services/document-service/repository.mjs.map +1 -0
  457. package/dist/services/document-service/transform/data.js +25 -0
  458. package/dist/services/document-service/transform/data.js.map +1 -0
  459. package/dist/services/document-service/transform/data.mjs +23 -0
  460. package/dist/services/document-service/transform/data.mjs.map +1 -0
  461. package/dist/services/document-service/transform/fields.js +33 -0
  462. package/dist/services/document-service/transform/fields.js.map +1 -0
  463. package/dist/services/document-service/transform/fields.mjs +31 -0
  464. package/dist/services/document-service/transform/fields.mjs.map +1 -0
  465. package/dist/services/document-service/transform/id-map.js +125 -0
  466. package/dist/services/document-service/transform/id-map.js.map +1 -0
  467. package/dist/services/document-service/transform/id-map.mjs +123 -0
  468. package/dist/services/document-service/transform/id-map.mjs.map +1 -0
  469. package/dist/services/document-service/transform/id-transform.js +41 -0
  470. package/dist/services/document-service/transform/id-transform.js.map +1 -0
  471. package/dist/services/document-service/transform/id-transform.mjs +39 -0
  472. package/dist/services/document-service/transform/id-transform.mjs.map +1 -0
  473. package/dist/services/document-service/transform/populate.js +26 -0
  474. package/dist/services/document-service/transform/populate.js.map +1 -0
  475. package/dist/services/document-service/transform/populate.mjs +24 -0
  476. package/dist/services/document-service/transform/populate.mjs.map +1 -0
  477. package/dist/services/document-service/transform/query.js +14 -0
  478. package/dist/services/document-service/transform/query.js.map +1 -0
  479. package/dist/services/document-service/transform/query.mjs +12 -0
  480. package/dist/services/document-service/transform/query.mjs.map +1 -0
  481. package/dist/services/document-service/transform/relations/extract/data-ids.js +80 -0
  482. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -0
  483. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +78 -0
  484. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -0
  485. package/dist/services/document-service/transform/relations/transform/data-ids.js +110 -0
  486. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -0
  487. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +108 -0
  488. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -0
  489. package/dist/services/document-service/transform/relations/transform/default-locale.js +50 -0
  490. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -0
  491. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +48 -0
  492. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -0
  493. package/dist/services/document-service/transform/relations/utils/dp.js +56 -0
  494. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -0
  495. package/dist/services/document-service/transform/relations/utils/dp.mjs +54 -0
  496. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -0
  497. package/dist/services/document-service/transform/relations/utils/i18n.js +27 -0
  498. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -0
  499. package/dist/services/document-service/transform/relations/utils/i18n.mjs +23 -0
  500. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -0
  501. package/dist/services/document-service/transform/relations/utils/map-relation.js +130 -0
  502. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -0
  503. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +127 -0
  504. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -0
  505. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  506. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  507. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  508. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  509. package/dist/services/document-service/utils/populate.js +71 -0
  510. package/dist/services/document-service/utils/populate.js.map +1 -0
  511. package/dist/services/document-service/utils/populate.mjs +69 -0
  512. package/dist/services/document-service/utils/populate.mjs.map +1 -0
  513. package/dist/services/document-service/utils/unidirectional-relations.js +116 -0
  514. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
  515. package/dist/services/document-service/utils/unidirectional-relations.mjs +113 -0
  516. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
  517. package/dist/services/entity-service/index.js +238 -0
  518. package/dist/services/entity-service/index.js.map +1 -0
  519. package/dist/services/entity-service/index.mjs +236 -0
  520. package/dist/services/entity-service/index.mjs.map +1 -0
  521. package/dist/services/entity-validator/blocks-validator.js +160 -0
  522. package/dist/services/entity-validator/blocks-validator.js.map +1 -0
  523. package/dist/services/entity-validator/blocks-validator.mjs +158 -0
  524. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -0
  525. package/dist/services/entity-validator/index.js +384 -0
  526. package/dist/services/entity-validator/index.js.map +1 -0
  527. package/dist/services/entity-validator/index.mjs +382 -0
  528. package/dist/services/entity-validator/index.mjs.map +1 -0
  529. package/dist/services/entity-validator/validators.js +299 -0
  530. package/dist/services/entity-validator/validators.js.map +1 -0
  531. package/dist/services/entity-validator/validators.mjs +290 -0
  532. package/dist/services/entity-validator/validators.mjs.map +1 -0
  533. package/dist/services/errors.js +76 -0
  534. package/dist/services/errors.js.map +1 -0
  535. package/dist/services/errors.mjs +72 -0
  536. package/dist/services/errors.mjs.map +1 -0
  537. package/dist/services/event-hub.js +85 -0
  538. package/dist/services/event-hub.js.map +1 -0
  539. package/dist/services/event-hub.mjs +83 -0
  540. package/dist/services/event-hub.mjs.map +1 -0
  541. package/dist/services/features.js +22 -0
  542. package/dist/services/features.js.map +1 -0
  543. package/dist/services/features.mjs +20 -0
  544. package/dist/services/features.mjs.map +1 -0
  545. package/dist/services/fs.js +52 -0
  546. package/dist/services/fs.js.map +1 -0
  547. package/dist/services/fs.mjs +50 -0
  548. package/dist/services/fs.mjs.map +1 -0
  549. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  550. package/dist/services/metrics/admin-user-hash.js +16 -0
  551. package/dist/services/metrics/admin-user-hash.js.map +1 -0
  552. package/dist/services/metrics/admin-user-hash.mjs +14 -0
  553. package/dist/services/metrics/admin-user-hash.mjs.map +1 -0
  554. package/dist/services/metrics/index.js +51 -0
  555. package/dist/services/metrics/index.js.map +1 -0
  556. package/dist/services/metrics/index.mjs +49 -0
  557. package/dist/services/metrics/index.mjs.map +1 -0
  558. package/dist/services/metrics/is-truthy.js +16 -0
  559. package/dist/services/metrics/is-truthy.js.map +1 -0
  560. package/dist/services/metrics/is-truthy.mjs +14 -0
  561. package/dist/services/metrics/is-truthy.mjs.map +1 -0
  562. package/dist/services/metrics/middleware.js +40 -0
  563. package/dist/services/metrics/middleware.js.map +1 -0
  564. package/dist/services/metrics/middleware.mjs +38 -0
  565. package/dist/services/metrics/middleware.mjs.map +1 -0
  566. package/dist/services/metrics/rate-limiter.js +26 -0
  567. package/dist/services/metrics/rate-limiter.js.map +1 -0
  568. package/dist/services/metrics/rate-limiter.mjs +24 -0
  569. package/dist/services/metrics/rate-limiter.mjs.map +1 -0
  570. package/dist/services/metrics/sender.d.ts.map +1 -1
  571. package/dist/services/metrics/sender.js +85 -0
  572. package/dist/services/metrics/sender.js.map +1 -0
  573. package/dist/services/metrics/sender.mjs +83 -0
  574. package/dist/services/metrics/sender.mjs.map +1 -0
  575. package/dist/services/query-params.js +15 -0
  576. package/dist/services/query-params.js.map +1 -0
  577. package/dist/services/query-params.mjs +13 -0
  578. package/dist/services/query-params.mjs.map +1 -0
  579. package/dist/services/reloader.js +39 -0
  580. package/dist/services/reloader.js.map +1 -0
  581. package/dist/services/reloader.mjs +37 -0
  582. package/dist/services/reloader.mjs.map +1 -0
  583. package/dist/services/request-context.js +16 -0
  584. package/dist/services/request-context.js.map +1 -0
  585. package/dist/services/request-context.mjs +14 -0
  586. package/dist/services/request-context.mjs.map +1 -0
  587. package/dist/services/server/admin-api.js +14 -0
  588. package/dist/services/server/admin-api.js.map +1 -0
  589. package/dist/services/server/admin-api.mjs +12 -0
  590. package/dist/services/server/admin-api.mjs.map +1 -0
  591. package/dist/services/server/api.js +36 -0
  592. package/dist/services/server/api.js.map +1 -0
  593. package/dist/services/server/api.mjs +34 -0
  594. package/dist/services/server/api.mjs.map +1 -0
  595. package/dist/services/server/compose-endpoint.js +128 -0
  596. package/dist/services/server/compose-endpoint.js.map +1 -0
  597. package/dist/services/server/compose-endpoint.mjs +126 -0
  598. package/dist/services/server/compose-endpoint.mjs.map +1 -0
  599. package/dist/services/server/content-api.js +14 -0
  600. package/dist/services/server/content-api.js.map +1 -0
  601. package/dist/services/server/content-api.mjs +12 -0
  602. package/dist/services/server/content-api.mjs.map +1 -0
  603. package/dist/services/server/http-server.js +54 -0
  604. package/dist/services/server/http-server.js.map +1 -0
  605. package/dist/services/server/http-server.mjs +52 -0
  606. package/dist/services/server/http-server.mjs.map +1 -0
  607. package/dist/services/server/index.js +90 -0
  608. package/dist/services/server/index.js.map +1 -0
  609. package/dist/services/server/index.mjs +88 -0
  610. package/dist/services/server/index.mjs.map +1 -0
  611. package/dist/services/server/koa.js +54 -0
  612. package/dist/services/server/koa.js.map +1 -0
  613. package/dist/services/server/koa.mjs +52 -0
  614. package/dist/services/server/koa.mjs.map +1 -0
  615. package/dist/services/server/middleware.js +96 -0
  616. package/dist/services/server/middleware.js.map +1 -0
  617. package/dist/services/server/middleware.mjs +93 -0
  618. package/dist/services/server/middleware.mjs.map +1 -0
  619. package/dist/services/server/policy.js +27 -0
  620. package/dist/services/server/policy.js.map +1 -0
  621. package/dist/services/server/policy.mjs +25 -0
  622. package/dist/services/server/policy.mjs.map +1 -0
  623. package/dist/services/server/register-middlewares.js +79 -0
  624. package/dist/services/server/register-middlewares.js.map +1 -0
  625. package/dist/services/server/register-middlewares.mjs +77 -0
  626. package/dist/services/server/register-middlewares.mjs.map +1 -0
  627. package/dist/services/server/register-routes.js +119 -0
  628. package/dist/services/server/register-routes.js.map +1 -0
  629. package/dist/services/server/register-routes.mjs +117 -0
  630. package/dist/services/server/register-routes.mjs.map +1 -0
  631. package/dist/services/server/routing.d.ts +10 -0
  632. package/dist/services/server/routing.d.ts.map +1 -1
  633. package/dist/services/server/routing.js +110 -0
  634. package/dist/services/server/routing.js.map +1 -0
  635. package/dist/services/server/routing.mjs +107 -0
  636. package/dist/services/server/routing.mjs.map +1 -0
  637. package/dist/services/utils/dynamic-zones.js +16 -0
  638. package/dist/services/utils/dynamic-zones.js.map +1 -0
  639. package/dist/services/utils/dynamic-zones.mjs +14 -0
  640. package/dist/services/utils/dynamic-zones.mjs.map +1 -0
  641. package/dist/services/webhook-runner.js +135 -0
  642. package/dist/services/webhook-runner.js.map +1 -0
  643. package/dist/services/webhook-runner.mjs +133 -0
  644. package/dist/services/webhook-runner.mjs.map +1 -0
  645. package/dist/services/webhook-store.js +143 -0
  646. package/dist/services/webhook-store.js.map +1 -0
  647. package/dist/services/webhook-store.mjs +140 -0
  648. package/dist/services/webhook-store.mjs.map +1 -0
  649. package/dist/services/worker-queue.js +51 -0
  650. package/dist/services/worker-queue.js.map +1 -0
  651. package/dist/services/worker-queue.mjs +49 -0
  652. package/dist/services/worker-queue.mjs.map +1 -0
  653. package/dist/utils/convert-custom-field-type.js +21 -0
  654. package/dist/utils/convert-custom-field-type.js.map +1 -0
  655. package/dist/utils/convert-custom-field-type.mjs +19 -0
  656. package/dist/utils/convert-custom-field-type.mjs.map +1 -0
  657. package/dist/utils/cron.js +72 -0
  658. package/dist/utils/cron.js.map +1 -0
  659. package/dist/utils/cron.mjs +70 -0
  660. package/dist/utils/cron.mjs.map +1 -0
  661. package/dist/utils/fetch.js +27 -0
  662. package/dist/utils/fetch.js.map +1 -0
  663. package/dist/utils/fetch.mjs +25 -0
  664. package/dist/utils/fetch.mjs.map +1 -0
  665. package/dist/utils/filepath-to-prop-path.js +25 -0
  666. package/dist/utils/filepath-to-prop-path.js.map +1 -0
  667. package/dist/utils/filepath-to-prop-path.mjs +23 -0
  668. package/dist/utils/filepath-to-prop-path.mjs.map +1 -0
  669. package/dist/utils/is-initialized.js +25 -0
  670. package/dist/utils/is-initialized.js.map +1 -0
  671. package/dist/utils/is-initialized.mjs +23 -0
  672. package/dist/utils/is-initialized.mjs.map +1 -0
  673. package/dist/utils/lifecycles.js +10 -0
  674. package/dist/utils/lifecycles.js.map +1 -0
  675. package/dist/utils/lifecycles.mjs +8 -0
  676. package/dist/utils/lifecycles.mjs.map +1 -0
  677. package/dist/utils/load-config-file.js +47 -0
  678. package/dist/utils/load-config-file.js.map +1 -0
  679. package/dist/utils/load-config-file.mjs +45 -0
  680. package/dist/utils/load-config-file.mjs.map +1 -0
  681. package/dist/utils/load-files.js +44 -0
  682. package/dist/utils/load-files.js.map +1 -0
  683. package/dist/utils/load-files.mjs +42 -0
  684. package/dist/utils/load-files.mjs.map +1 -0
  685. package/dist/utils/open-browser.js +11 -0
  686. package/dist/utils/open-browser.js.map +1 -0
  687. package/dist/utils/open-browser.mjs +9 -0
  688. package/dist/utils/open-browser.mjs.map +1 -0
  689. package/dist/utils/resolve-working-dirs.js +26 -0
  690. package/dist/utils/resolve-working-dirs.js.map +1 -0
  691. package/dist/utils/resolve-working-dirs.mjs +24 -0
  692. package/dist/utils/resolve-working-dirs.mjs.map +1 -0
  693. package/dist/utils/signals.js +23 -0
  694. package/dist/utils/signals.js.map +1 -0
  695. package/dist/utils/signals.mjs +21 -0
  696. package/dist/utils/signals.mjs.map +1 -0
  697. package/dist/utils/startup-logger.js +110 -0
  698. package/dist/utils/startup-logger.js.map +1 -0
  699. package/dist/utils/startup-logger.mjs +108 -0
  700. package/dist/utils/startup-logger.mjs.map +1 -0
  701. package/dist/utils/transform-content-types-to-models.js +377 -0
  702. package/dist/utils/transform-content-types-to-models.js.map +1 -0
  703. package/dist/utils/transform-content-types-to-models.mjs +365 -0
  704. package/dist/utils/transform-content-types-to-models.mjs.map +1 -0
  705. package/dist/utils/update-notifier/index.js +80 -0
  706. package/dist/utils/update-notifier/index.js.map +1 -0
  707. package/dist/utils/update-notifier/index.mjs +78 -0
  708. package/dist/utils/update-notifier/index.mjs.map +1 -0
  709. package/package.json +14 -13
@@ -0,0 +1,583 @@
1
+ 'use strict';
2
+
3
+ var strapiUtils = require('@strapi/utils');
4
+ var zod = require('zod');
5
+ var constants = require('./constants.js');
6
+ var component = require('./component.js');
7
+ var contentType = require('./content-type.js');
8
+
9
+ /**
10
+ * Maps a Strapi attribute definition to a corresponding Zod validation schema.
11
+ * This function handles various Strapi attribute types and converts them into
12
+ * appropriate Zod validation schemas with their respective constraints.
13
+ *
14
+ * @param attribute - The Strapi attribute configuration object. Contains type information
15
+ * and validation rules for the attribute.
16
+ *
17
+ * @returns A Zod schema that corresponds to the input attribute's type and validation rules
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * // String attribute with constraints
22
+ * const stringAttribute = {
23
+ * type: 'string',
24
+ * minLength: 3,
25
+ * maxLength: 50,
26
+ * required: true
27
+ * };
28
+ * const stringSchema = mapAttributeToSchema(stringAttribute);
29
+ *
30
+ * // Enumeration attribute
31
+ * const enumAttribute = {
32
+ * type: 'enumeration',
33
+ * enum: ['draft', 'published', 'archived']
34
+ * };
35
+ * const enumSchema = mapAttributeToSchema(enumAttribute);
36
+ *
37
+ * // Media attribute with multiple files
38
+ * const mediaAttribute = {
39
+ * type: 'media',
40
+ * multiple: true
41
+ * };
42
+ * const mediaSchema = mapAttributeToSchema(mediaAttribute);
43
+ * ```
44
+ *
45
+ * @throws {Error} Throws an error if an unsupported attribute type is provided
46
+ *
47
+ * @remarks
48
+ * - Complex types (component, relation, dynamic zone) use placeholder schemas
49
+ *
50
+ * @todo: Move to @strapi/utils if needed for other validation
51
+ */ const mapAttributeToSchema = (attribute)=>{
52
+ switch(attribute.type){
53
+ case 'biginteger':
54
+ {
55
+ const { writable, required, min, max, default: defaultValue } = attribute;
56
+ const schema = augmentSchema(zod.z.string(), [
57
+ (schema)=>min !== undefined ? schema.min(min) : schema,
58
+ (schema)=>max !== undefined ? schema.max(max) : schema,
59
+ maybeRequired(required),
60
+ maybeWithDefault(defaultValue),
61
+ maybeReadonly(writable)
62
+ ]);
63
+ return schema.describe('A biginteger field');
64
+ }
65
+ case 'blocks':
66
+ {
67
+ // TODO: better support blocks data structure
68
+ return zod.z.array(zod.z.any()).describe('A blocks field');
69
+ }
70
+ case 'boolean':
71
+ {
72
+ const { writable, required, default: defaultValue } = attribute;
73
+ const schema = augmentSchema(zod.z.boolean(), [
74
+ maybeRequired(required),
75
+ maybeWithDefault(defaultValue),
76
+ maybeReadonly(writable)
77
+ ]);
78
+ return schema.describe('A boolean field');
79
+ }
80
+ case 'component':
81
+ {
82
+ const { _idmap } = zod.z.globalRegistry;
83
+ const set = (id, schema)=>{
84
+ if (_idmap.has(id)) {
85
+ _idmap.delete(id);
86
+ }
87
+ zod.z.globalRegistry.add(schema, {
88
+ id
89
+ });
90
+ };
91
+ const { writable, required, min, max, component: component$1, repeatable } = attribute;
92
+ const existsInGlobalRegistry = _idmap.has(component$1);
93
+ let componentSchema;
94
+ if (existsInGlobalRegistry) {
95
+ componentSchema = _idmap.get(component$1);
96
+ } else {
97
+ set(component$1, zod.z.any());
98
+ const validator = new component.CoreComponentRouteValidator(strapi, component$1);
99
+ const schema = validator.entry;
100
+ set(component$1, schema);
101
+ componentSchema = schema;
102
+ }
103
+ const baseSchema = repeatable ? zod.z.array(componentSchema) : componentSchema;
104
+ const schema = augmentSchema(baseSchema, [
105
+ (schema)=>min !== undefined && schema instanceof zod.z.ZodArray ? schema.min(min) : schema,
106
+ (schema)=>max !== undefined && schema instanceof zod.z.ZodArray ? schema.max(max) : schema,
107
+ maybeRequired(required),
108
+ maybeReadonly(writable)
109
+ ]);
110
+ return schema.describe('A component field');
111
+ }
112
+ case 'date':
113
+ {
114
+ const { writable, required, default: defaultValue } = attribute;
115
+ const schema = augmentSchema(zod.z.string(), [
116
+ maybeRequired(required),
117
+ maybeWithDefault(defaultValue),
118
+ maybeReadonly(writable)
119
+ ]);
120
+ return schema.describe('A date field');
121
+ }
122
+ case 'datetime':
123
+ {
124
+ const { writable, required, default: defaultValue } = attribute;
125
+ const baseSchema = zod.z.string();
126
+ const schema = augmentSchema(baseSchema, [
127
+ maybeRequired(required),
128
+ maybeWithDefault(defaultValue),
129
+ maybeReadonly(writable)
130
+ ]);
131
+ return schema.describe('A datetime field');
132
+ }
133
+ case 'decimal':
134
+ {
135
+ const { writable, required, min, max, default: defaultValue } = attribute;
136
+ const schema = augmentSchema(zod.z.number(), [
137
+ maybeWithMinMax(min, max),
138
+ maybeRequired(required),
139
+ maybeWithDefault(defaultValue),
140
+ maybeReadonly(writable)
141
+ ]);
142
+ return schema.describe('A decimal field');
143
+ }
144
+ // TODO(zodV4): use the components' reference type instead of z.any
145
+ // TODO(zodV4): use discriminated unions to handle the different types of components
146
+ case 'dynamiczone':
147
+ {
148
+ const { writable, required, min, max } = attribute;
149
+ const baseSchema = zod.z.array(zod.z.any());
150
+ const schema = augmentSchema(baseSchema, [
151
+ maybeWithMinMax(min, max),
152
+ maybeRequired(required),
153
+ maybeReadonly(writable)
154
+ ]);
155
+ return schema.describe('A dynamic zone field');
156
+ }
157
+ case 'email':
158
+ {
159
+ const { writable, required, default: defaultValue, minLength, maxLength } = attribute;
160
+ const baseSchema = zod.z.string().email();
161
+ const schema = augmentSchema(baseSchema, [
162
+ maybeWithMinMax(minLength, maxLength),
163
+ maybeRequired(required),
164
+ maybeWithDefault(defaultValue),
165
+ maybeReadonly(writable)
166
+ ]);
167
+ return schema.describe('An email field');
168
+ }
169
+ case 'enumeration':
170
+ {
171
+ const { writable, required, default: defaultValue, enum: enumValues } = attribute;
172
+ const baseSchema = zod.z.enum(enumValues);
173
+ const schema = augmentSchema(baseSchema, [
174
+ maybeRequired(required),
175
+ maybeWithDefault(defaultValue),
176
+ maybeReadonly(writable)
177
+ ]);
178
+ return schema.describe('An enum field');
179
+ }
180
+ case 'float':
181
+ {
182
+ const { writable, required, min, max, default: defaultValue } = attribute;
183
+ const schema = augmentSchema(zod.z.number(), [
184
+ maybeWithMinMax(min, max),
185
+ maybeRequired(required),
186
+ maybeReadonly(writable),
187
+ maybeWithDefault(defaultValue)
188
+ ]);
189
+ return schema.describe('A float field');
190
+ }
191
+ case 'integer':
192
+ {
193
+ const { writable, required, min, max, default: defaultValue } = attribute;
194
+ const baseSchema = zod.z.number().int();
195
+ const schema = augmentSchema(baseSchema, [
196
+ maybeWithMinMax(min, max),
197
+ maybeRequired(required),
198
+ maybeReadonly(writable),
199
+ maybeWithDefault(defaultValue)
200
+ ]);
201
+ return schema.describe('A float field');
202
+ }
203
+ // TODO(zodV4): use reference to create fake cyclical JSON values
204
+ // see https://zod.dev/?id=json-type for more info
205
+ case 'json':
206
+ {
207
+ const { writable, required, default: defaultValue } = attribute;
208
+ const schema = augmentSchema(zod.z.any(), [
209
+ maybeRequired(required),
210
+ maybeWithDefault(defaultValue),
211
+ maybeReadonly(writable)
212
+ ]);
213
+ return schema.describe('A JSON field');
214
+ }
215
+ case 'media':
216
+ {
217
+ const { writable, required, multiple } = attribute;
218
+ const baseSchema = multiple ? zod.z.array(zod.z.any()) : zod.z.any();
219
+ const schema = augmentSchema(baseSchema, [
220
+ maybeRequired(required),
221
+ maybeReadonly(writable)
222
+ ]);
223
+ return schema.describe('A media field');
224
+ }
225
+ // TODO(zodV4): handle polymorphic relations using discriminated unions
226
+ case 'relation':
227
+ {
228
+ // Extract writable and required flags from the attribute
229
+ if (!('target' in attribute)) {
230
+ return zod.z.any();
231
+ }
232
+ const { _idmap } = zod.z.globalRegistry;
233
+ const set = (id, schema)=>{
234
+ if (_idmap.has(id)) {
235
+ _idmap.delete(id);
236
+ }
237
+ zod.z.globalRegistry.add(schema, {
238
+ id
239
+ });
240
+ };
241
+ const { writable, required, target } = attribute;
242
+ const existsInGlobalRegistry = _idmap.has(target);
243
+ let targetSchema;
244
+ if (existsInGlobalRegistry) {
245
+ targetSchema = _idmap.get(target);
246
+ } else {
247
+ set(target, zod.z.any());
248
+ const validator = new contentType.CoreContentTypeRouteValidator(strapi, target);
249
+ const schema = validator.document;
250
+ set(target, schema);
251
+ targetSchema = schema;
252
+ }
253
+ const baseSchema = strapiUtils.relations.isAnyToMany(attribute) ? zod.z.array(targetSchema) : targetSchema;
254
+ // Add required and readonly constraints based on attribute flags
255
+ const schema = augmentSchema(baseSchema, [
256
+ maybeRequired(required),
257
+ maybeReadonly(writable)
258
+ ]);
259
+ return schema.describe('A relational field');
260
+ }
261
+ case 'password':
262
+ case 'text':
263
+ case 'richtext':
264
+ case 'string':
265
+ {
266
+ const { writable, required, default: defaultValue, minLength, maxLength } = attribute;
267
+ const schema = augmentSchema(zod.z.string(), [
268
+ maybeWithMinMax(minLength, maxLength),
269
+ maybeRequired(required),
270
+ maybeWithDefault(defaultValue),
271
+ maybeReadonly(writable)
272
+ ]);
273
+ return schema.describe(`A ${attribute.type} field`);
274
+ }
275
+ case 'time':
276
+ {
277
+ const { writable, required, default: defaultValue } = attribute;
278
+ const schema = augmentSchema(zod.z.string(), [
279
+ maybeRequired(required),
280
+ maybeWithDefault(defaultValue),
281
+ maybeReadonly(writable)
282
+ ]);
283
+ return schema.describe('A time field');
284
+ }
285
+ case 'timestamp':
286
+ {
287
+ const { writable, required, default: defaultValue } = attribute;
288
+ const baseSchema = zod.z.union([
289
+ zod.z.string(),
290
+ zod.z.number()
291
+ ]);
292
+ const schema = augmentSchema(baseSchema, [
293
+ maybeRequired(required),
294
+ maybeWithDefault(defaultValue),
295
+ maybeReadonly(writable)
296
+ ]);
297
+ return schema.describe('A timestamp field');
298
+ }
299
+ case 'uid':
300
+ {
301
+ const { writable, required, default: defaultValue, minLength, maxLength } = attribute;
302
+ const schema = augmentSchema(zod.z.string(), [
303
+ maybeWithMinMax(minLength, maxLength),
304
+ maybeRequired(required),
305
+ maybeWithDefault(defaultValue),
306
+ maybeReadonly(writable)
307
+ ]);
308
+ return schema.describe('A UID field');
309
+ }
310
+ default:
311
+ throw new Error(`Unsupported attribute type: ${attribute.type}`);
312
+ }
313
+ };
314
+ /**
315
+ * Maps a Strapi attribute definition to a corresponding Zod validation schema.
316
+ * This function handles various Strapi attribute types and converts them into
317
+ * appropriate Zod validation schemas with their respective constraints.
318
+ *
319
+ * @param attribute - The Strapi attribute configuration object. Contains type information
320
+ * and validation rules for the attribute.
321
+ *
322
+ * @returns A Zod schema that corresponds to the input attribute's type and validation rules
323
+ *
324
+ * @example
325
+ * ```typescript
326
+ * // String attribute with constraints
327
+ * const stringAttribute = {
328
+ * type: 'string',
329
+ * minLength: 3,
330
+ * maxLength: 50,
331
+ * required: true
332
+ * };
333
+ * const stringSchema = mapAttributeToInputSchema(stringAttribute);
334
+ *
335
+ * // Enumeration attribute
336
+ * const enumAttribute = {
337
+ * type: 'enumeration',
338
+ * enum: ['draft', 'published', 'archived']
339
+ * };
340
+ * const enumSchema = mapAttributeToInputSchema(enumAttribute);
341
+ *
342
+ * // Media attribute with multiple files
343
+ * const mediaAttribute = {
344
+ * type: 'media',
345
+ * multiple: true
346
+ * };
347
+ * const mediaSchema = mapAttributeToInputSchema(mediaAttribute);
348
+ * ```
349
+ *
350
+ * @throws {Error} Throws an error if an unsupported attribute type is provided
351
+ *
352
+ * @remarks
353
+ * - Complex types (component, relation, dynamic zone) use placeholder schemas
354
+ *
355
+ * @todo: Move to @strapi/utils if needed for other validation
356
+ */ const mapAttributeToInputSchema = (attribute)=>{
357
+ switch(attribute.type){
358
+ case 'biginteger':
359
+ {
360
+ const { required, min, max, default: defaultValue } = attribute;
361
+ const schema = augmentSchema(zod.z.string(), [
362
+ (schema)=>min !== undefined ? schema.min(min) : schema,
363
+ (schema)=>max !== undefined ? schema.max(max) : schema,
364
+ maybeRequired(required),
365
+ maybeWithDefault(defaultValue)
366
+ ]);
367
+ return schema.describe('A biginteger field');
368
+ }
369
+ case 'blocks':
370
+ {
371
+ // TODO: better support blocks data structure
372
+ return zod.z.array(zod.z.any()).describe('A blocks field');
373
+ }
374
+ case 'boolean':
375
+ {
376
+ const { required, default: defaultValue } = attribute;
377
+ const baseSchema = zod.z.enum(constants.BOOLEAN_LITERAL_VALUES);
378
+ const schema = augmentSchema(baseSchema, [
379
+ maybeRequired(required),
380
+ maybeWithDefault(defaultValue)
381
+ ]);
382
+ return schema.describe('A boolean field');
383
+ }
384
+ // TODO(zodV4): use the component reference type instead of z.any
385
+ case 'component':
386
+ {
387
+ const { required, repeatable, min, max } = attribute;
388
+ const baseSchema = repeatable ? zod.z.array(zod.z.any()) : zod.z.any();
389
+ const schema = augmentSchema(baseSchema, [
390
+ (schema)=>min !== undefined && schema instanceof zod.z.ZodArray ? schema.min(min) : schema,
391
+ (schema)=>max !== undefined && schema instanceof zod.z.ZodArray ? schema.max(max) : schema,
392
+ maybeRequired(required)
393
+ ]);
394
+ return schema.describe('A component field');
395
+ }
396
+ case 'date':
397
+ {
398
+ const { required, default: defaultValue } = attribute;
399
+ const schema = augmentSchema(zod.z.string(), [
400
+ maybeRequired(required),
401
+ maybeWithDefault(defaultValue)
402
+ ]);
403
+ return schema.describe('A date field');
404
+ }
405
+ case 'datetime':
406
+ {
407
+ const { required, default: defaultValue } = attribute;
408
+ const schema = augmentSchema(zod.z.string(), [
409
+ maybeRequired(required),
410
+ maybeWithDefault(defaultValue)
411
+ ]);
412
+ return schema.describe('A datetime field');
413
+ }
414
+ case 'decimal':
415
+ {
416
+ const { required, min, max, default: defaultValue } = attribute;
417
+ const schema = augmentSchema(zod.z.number(), [
418
+ maybeWithMinMax(min, max),
419
+ maybeRequired(required),
420
+ maybeWithDefault(defaultValue)
421
+ ]);
422
+ return schema.describe('A decimal field');
423
+ }
424
+ // TODO(zodV4): use the components' reference type instead of z.any
425
+ // TODO(zodV4): use discriminated unions to handle the different types of components
426
+ case 'dynamiczone':
427
+ {
428
+ const { required, min, max } = attribute;
429
+ const baseSchema = zod.z.array(zod.z.any());
430
+ const schema = augmentSchema(baseSchema, [
431
+ maybeWithMinMax(min, max),
432
+ maybeRequired(required)
433
+ ]);
434
+ return schema.describe('A dynamic zone field');
435
+ }
436
+ case 'email':
437
+ {
438
+ const { required, default: defaultValue, minLength, maxLength } = attribute;
439
+ const baseSchema = zod.z.string().email();
440
+ const schema = augmentSchema(baseSchema, [
441
+ maybeWithMinMax(minLength, maxLength),
442
+ maybeRequired(required),
443
+ maybeWithDefault(defaultValue)
444
+ ]);
445
+ return schema.describe('An email field');
446
+ }
447
+ case 'enumeration':
448
+ {
449
+ const { required, default: defaultValue, enum: enumValues } = attribute;
450
+ const baseSchema = zod.z.enum(enumValues);
451
+ const schema = augmentSchema(baseSchema, [
452
+ maybeRequired(required),
453
+ maybeWithDefault(defaultValue)
454
+ ]);
455
+ return schema.describe('An enum field');
456
+ }
457
+ case 'float':
458
+ {
459
+ const { required, min, max, default: defaultValue } = attribute;
460
+ const schema = augmentSchema(zod.z.number(), [
461
+ maybeWithMinMax(min, max),
462
+ maybeRequired(required),
463
+ maybeWithDefault(defaultValue)
464
+ ]);
465
+ return schema.describe('A float field');
466
+ }
467
+ case 'integer':
468
+ {
469
+ const { required, min, max, default: defaultValue } = attribute;
470
+ const baseSchema = zod.z.number().int();
471
+ const schema = augmentSchema(baseSchema, [
472
+ maybeWithMinMax(min, max),
473
+ maybeRequired(required),
474
+ maybeWithDefault(defaultValue)
475
+ ]);
476
+ return schema.describe('A float field');
477
+ }
478
+ // TODO(zodV4): use reference to create fake cyclical JSON values
479
+ // see https://zod.dev/?id=json-type for more info
480
+ case 'json':
481
+ {
482
+ const { required, default: defaultValue } = attribute;
483
+ const schema = augmentSchema(zod.z.any(), [
484
+ maybeRequired(required),
485
+ maybeWithDefault(defaultValue)
486
+ ]);
487
+ return schema.describe('A JSON field');
488
+ }
489
+ case 'media':
490
+ {
491
+ const { required, multiple } = attribute;
492
+ const baseSchema = multiple ? zod.z.array(zod.z.any()) : zod.z.any();
493
+ const schema = augmentSchema(baseSchema, [
494
+ maybeRequired(required)
495
+ ]);
496
+ return schema.describe('A media field');
497
+ }
498
+ // TODO(zodV4): use reference for relations types
499
+ // TODO(zodV4): handle polymorphic relations using discriminated unions
500
+ // TODO(zodv4): add the relation ordering API https://docs.strapi.io/cms/api/rest/relations
501
+ case 'relation':
502
+ {
503
+ const { required } = attribute;
504
+ const isToMany = strapiUtils.relations.isAnyToMany(attribute);
505
+ const uuid = zod.z.string().uuid();
506
+ const baseSchema = isToMany ? zod.z.array(uuid) : uuid;
507
+ const schema = augmentSchema(baseSchema, [
508
+ maybeRequired(required)
509
+ ]);
510
+ return schema.describe('A relational field');
511
+ }
512
+ case 'password':
513
+ case 'text':
514
+ case 'richtext':
515
+ case 'string':
516
+ {
517
+ const { required, default: defaultValue, minLength, maxLength } = attribute;
518
+ const schema = augmentSchema(zod.z.string(), [
519
+ maybeWithMinMax(minLength, maxLength),
520
+ maybeRequired(required),
521
+ maybeWithDefault(defaultValue)
522
+ ]);
523
+ return schema.describe(`A ${attribute.type} field`);
524
+ }
525
+ case 'time':
526
+ {
527
+ const { required, default: defaultValue } = attribute;
528
+ const schema = augmentSchema(zod.z.string(), [
529
+ maybeRequired(required),
530
+ maybeWithDefault(defaultValue)
531
+ ]);
532
+ return schema.describe('A time field');
533
+ }
534
+ case 'timestamp':
535
+ {
536
+ const { required, default: defaultValue } = attribute;
537
+ const baseSchema = zod.z.union([
538
+ zod.z.string(),
539
+ zod.z.number()
540
+ ]);
541
+ const schema = augmentSchema(baseSchema, [
542
+ maybeRequired(required),
543
+ maybeWithDefault(defaultValue)
544
+ ]);
545
+ return schema.describe('A timestamp field');
546
+ }
547
+ case 'uid':
548
+ {
549
+ const { required, default: defaultValue, minLength, maxLength } = attribute;
550
+ const schema = augmentSchema(zod.z.string(), [
551
+ maybeWithMinMax(minLength, maxLength),
552
+ maybeRequired(required),
553
+ maybeWithDefault(defaultValue)
554
+ ]);
555
+ return schema.describe('A UID field');
556
+ }
557
+ default:
558
+ throw new Error(`Unsupported attribute type: ${attribute.type}`);
559
+ }
560
+ };
561
+ const maybeRequired = (required)=>{
562
+ return (schema)=>required !== true ? schema.optional() : schema;
563
+ };
564
+ const maybeReadonly = (writable)=>{
565
+ return (schema)=>writable !== false ? schema : schema.readonly();
566
+ };
567
+ const maybeWithDefault = (defaultValue)=>{
568
+ return (schema)=>{
569
+ return defaultValue !== undefined ? schema.default(typeof defaultValue === 'function' ? defaultValue() : defaultValue) : schema;
570
+ };
571
+ };
572
+ const maybeWithMinMax = (min, max)=>{
573
+ return (schema)=>{
574
+ return min !== undefined && max !== undefined ? schema.min(min).max(max) : schema;
575
+ };
576
+ };
577
+ const augmentSchema = (schema, modifiers)=>{
578
+ return modifiers.reduce((acc, modifier)=>modifier(acc), schema);
579
+ };
580
+
581
+ exports.mapAttributeToInputSchema = mapAttributeToInputSchema;
582
+ exports.mapAttributeToSchema = mapAttributeToSchema;
583
+ //# sourceMappingURL=attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributes.js","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":";;;;;;;;AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2CaA,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,KAAEC,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,MAAEO,KAAK,CAACP,MAAEQ,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,KAAES,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,MAAEW,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,KAAAA,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,aAAEsB,WAAS,EAAEC,UAAU,EAAE,GAAG5B,SAAAA;gBAEhE,MAAM6B,sBAAAA,GAAyBT,MAAOI,CAAAA,GAAG,CAACG,WAAAA,CAAAA;gBAE1C,IAAIG,eAAAA;AAEJ,gBAAA,IAAID,sBAAwB,EAAA;oBAC1BC,eAAkBV,GAAAA,MAAAA,CAAOW,GAAG,CAACJ,WAAAA,CAAAA;iBACxB,MAAA;oBACLL,GAAIK,CAAAA,WAAAA,EAAWjB,MAAEQ,GAAG,EAAA,CAAA;oBAEpB,MAAMc,SAAAA,GAAY,IAAIC,qCAAAA,CAA4BC,MAAQP,EAAAA,WAAAA,CAAAA;oBAC1D,MAAMnB,MAAAA,GAASwB,UAAUG,KAAK;AAE9Bb,oBAAAA,GAAAA,CAAIK,WAAWnB,EAAAA,MAAAA,CAAAA;oBAEfsB,eAAkBtB,GAAAA,MAAAA;AACpB;AAEA,gBAAA,MAAM4B,UAAaR,GAAAA,UAAAA,GAAalB,KAAEO,CAAAA,KAAK,CAACa,eAAmBA,CAAAA,GAAAA,eAAAA;gBAE3D,MAAMtB,MAAAA,GAASC,cAAc2B,UAAY,EAAA;oBACvC,CAAC5B,MAAAA,GAAYJ,GAAQQ,KAAAA,SAAAA,IAAaJ,MAAkBE,YAAAA,KAAAA,CAAE2B,QAAQ,GAAG7B,MAAAA,CAAOJ,GAAG,CAACA,GAAOI,CAAAA,GAAAA,MAAAA;oBACnF,CAACA,MAAAA,GAAYH,GAAQO,KAAAA,SAAAA,IAAaJ,MAAkBE,YAAAA,KAAAA,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,KAAEC,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,MAAEC,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,KAAE4B,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,KAAAA,CAAEO,KAAK,CAACP,MAAEQ,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,KAAAA,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,KAAEiC,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,KAAE4B,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,KAAAA,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,KAAEQ,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,MAAMoC,UAAAA,GAAaU,WAAWpC,KAAEO,CAAAA,KAAK,CAACP,KAAEQ,CAAAA,GAAG,EAAMR,CAAAA,GAAAA,KAAAA,CAAEQ,GAAG,EAAA;gBAEtD,MAAMV,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,MAAEQ,GAAG,EAAA;AACd;AAEA,gBAAA,MAAM,EAAEE,MAAM,EAAE,GAAGV,MAAEW,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,KAAAA,CAAEW,cAAc,CAACK,GAAG,CAAClB,MAAQ,EAAA;AAAEe,wBAAAA;AAAG,qBAAA,CAAA;AACpC,iBAAA;AAEA,gBAAA,MAAM,EAAErB,QAAQ,EAAEC,QAAQ,EAAE4C,MAAM,EAAE,GAAG/C,SAAAA;gBAEvC,MAAM6B,sBAAAA,GAAyBT,MAAOI,CAAAA,GAAG,CAACuB,MAAAA,CAAAA;gBAE1C,IAAIC,YAAAA;AAEJ,gBAAA,IAAInB,sBAAwB,EAAA;oBAC1BmB,YAAe5B,GAAAA,MAAAA,CAAOW,GAAG,CAACgB,MAAAA,CAAAA;iBACrB,MAAA;oBACLzB,GAAIyB,CAAAA,MAAAA,EAAQrC,MAAEQ,GAAG,EAAA,CAAA;oBAEjB,MAAMc,SAAAA,GAAY,IAAIiB,yCAAAA,CAA8Bf,MAAQa,EAAAA,MAAAA,CAAAA;oBAC5D,MAAMvC,MAAAA,GAASwB,UAAUkB,QAAQ;AAEjC5B,oBAAAA,GAAAA,CAAIyB,MAAQvC,EAAAA,MAAAA,CAAAA;oBAEZwC,YAAexC,GAAAA,MAAAA;AACjB;gBAEA,MAAM4B,UAAAA,GAAae,sBAAUC,WAAW,CAACpD,aAAaU,KAAEO,CAAAA,KAAK,CAAC+B,YAAgBA,CAAAA,GAAAA,YAAAA;;gBAG9E,MAAMxC,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,KAAEC,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,KAAEC,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,KAAE2C,CAAAA,KAAK,CAAC;AAAC3C,oBAAAA,KAAAA,CAAEC,MAAM,EAAA;AAAID,oBAAAA,KAAAA,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,KAAEC,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,IAAIsC,MAAM,CAAC,4BAA4B,EAAE,SAACtD,CAAkBC,IAAI,CAAC,CAAC,CAAA;AAC5E;AACF;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2CasD,MAAAA,yBAAAA,GAA4B,CAACvD,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,KAAEC,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,MAAEO,KAAK,CAACP,MAAEQ,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,KAAEiC,CAAAA,IAAI,CAACa,gCAAAA,CAAAA;gBAE1B,MAAMhD,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,KAAEO,CAAAA,KAAK,CAACP,KAAEQ,CAAAA,GAAG,EAAMR,CAAAA,GAAAA,KAAAA,CAAEQ,GAAG,EAAA;gBAExD,MAAMV,MAAAA,GAASC,cAAc2B,UAAY,EAAA;oBACvC,CAAC5B,MAAAA,GAAYJ,GAAQQ,KAAAA,SAAAA,IAAaJ,MAAkBE,YAAAA,KAAAA,CAAE2B,QAAQ,GAAG7B,MAAAA,CAAOJ,GAAG,CAACA,GAAOI,CAAAA,GAAAA,MAAAA;oBACnF,CAACA,MAAAA,GAAYH,GAAQO,KAAAA,SAAAA,IAAaJ,MAAkBE,YAAAA,KAAAA,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,KAAEC,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,KAAEC,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,KAAE4B,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,KAAAA,CAAEO,KAAK,CAACP,MAAEQ,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,KAAAA,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,KAAEiC,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,KAAE4B,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,KAAAA,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,KAAEQ,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,KAAEO,CAAAA,KAAK,CAACP,KAAEQ,CAAAA,GAAG,EAAMR,CAAAA,GAAAA,KAAAA,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,MAAMyD,QAAAA,GAAWN,qBAAUC,CAAAA,WAAW,CAACpD,SAAAA,CAAAA;AACvC,gBAAA,MAAM0D,IAAOhD,GAAAA,KAAAA,CAAEC,MAAM,EAAA,CAAG+C,IAAI,EAAA;AAC5B,gBAAA,MAAMtB,UAAaqB,GAAAA,QAAAA,GAAW/C,KAAEO,CAAAA,KAAK,CAACyC,IAAQA,CAAAA,GAAAA,IAAAA;gBAE9C,MAAMlD,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,KAAEC,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,KAAEC,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,KAAE2C,CAAAA,KAAK,CAAC;AAAC3C,oBAAAA,KAAAA,CAAEC,MAAM,EAAA;AAAID,oBAAAA,KAAAA,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,KAAEC,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,IAAIsC,MAAM,CAAC,4BAA4B,EAAE,SAACtD,CAAkBC,IAAI,CAAC,CAAC,CAAA;AAC5E;AACF;AAEA,MAAMY,gBAAgB,CAACV,QAAAA,GAAAA;AACrB,IAAA,OAAO,CAAqBK,MAAeL,GAAAA,QAAAA,KAAa,IAAOK,GAAAA,MAAAA,CAAOmD,QAAQ,EAAKnD,GAAAA,MAAAA;AACrF,CAAA;AAEA,MAAMO,gBAAgB,CAACb,QAAAA,GAAAA;AACrB,IAAA,OAAO,CAAqBM,MAAeN,GAAAA,QAAAA,KAAa,KAAQM,GAAAA,MAAAA,GAASA,OAAOoD,QAAQ,EAAA;AAC1F,CAAA;AAEA,MAAM9C,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,MAAWqD,EAAAA,SAAAA,GAAAA;AACpD,IAAA,OAAOA,UAAUC,MAAM,CAAC,CAACC,GAAKC,EAAAA,QAAAA,GAAaA,SAASD,GAAWvD,CAAAA,EAAAA,MAAAA,CAAAA;AACjE,CAAA;;;;;"}