@prismicio/types-internal 3.17.0 → 4.0.0-canary.4689e2d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (769) hide show
  1. package/README.md +36 -20
  2. package/dist/_virtual/_rolldown/runtime.js +13 -0
  3. package/dist/common/asset.d.ts +22 -0
  4. package/dist/common/asset.d.ts.map +1 -0
  5. package/dist/common/asset.js +21 -0
  6. package/dist/common/asset.js.map +1 -0
  7. package/dist/common/embed.d.ts +21 -0
  8. package/dist/common/embed.d.ts.map +1 -0
  9. package/dist/common/embed.js +20 -0
  10. package/dist/common/embed.js.map +1 -0
  11. package/dist/common/hexaColorCode.d.ts +8 -0
  12. package/dist/common/hexaColorCode.d.ts.map +1 -0
  13. package/dist/common/hexaColorCode.js +8 -0
  14. package/dist/common/hexaColorCode.js.map +1 -0
  15. package/dist/common/nonEmptyString.d.ts +8 -0
  16. package/dist/common/nonEmptyString.d.ts.map +1 -0
  17. package/dist/common/nonEmptyString.js +7 -0
  18. package/dist/common/nonEmptyString.js.map +1 -0
  19. package/dist/common/widgetKey.d.ts +8 -0
  20. package/dist/common/widgetKey.d.ts.map +1 -0
  21. package/dist/common/widgetKey.js +8 -0
  22. package/dist/common/widgetKey.js.map +1 -0
  23. package/dist/content/boolean.d.ts +11 -0
  24. package/dist/content/boolean.d.ts.map +1 -0
  25. package/dist/content/boolean.js +11 -0
  26. package/dist/content/boolean.js.map +1 -0
  27. package/dist/content/codec/boolean.js +31 -0
  28. package/dist/content/codec/boolean.js.map +1 -0
  29. package/dist/content/codec/document.js +49 -0
  30. package/dist/content/codec/document.js.map +1 -0
  31. package/dist/content/codec/embed.js +42 -0
  32. package/dist/content/codec/embed.js.map +1 -0
  33. package/dist/content/codec/empty.js +35 -0
  34. package/dist/content/codec/empty.js.map +1 -0
  35. package/dist/content/codec/field.js +41 -0
  36. package/dist/content/codec/field.js.map +1 -0
  37. package/dist/content/codec/geopoint.js +32 -0
  38. package/dist/content/codec/geopoint.js.map +1 -0
  39. package/dist/content/codec/group.js +127 -0
  40. package/dist/content/codec/group.js.map +1 -0
  41. package/dist/content/codec/image.js +44 -0
  42. package/dist/content/codec/image.js.map +1 -0
  43. package/dist/content/codec/integrationField.js +31 -0
  44. package/dist/content/codec/integrationField.js.map +1 -0
  45. package/dist/content/codec/legacyContentCtx.d.ts +50 -0
  46. package/dist/content/codec/legacyContentCtx.d.ts.map +1 -0
  47. package/dist/content/codec/legacyContentCtx.js +68 -0
  48. package/dist/content/codec/legacyContentCtx.js.map +1 -0
  49. package/dist/content/codec/link.js +93 -0
  50. package/dist/content/codec/link.js.map +1 -0
  51. package/dist/content/codec/nestable.js +91 -0
  52. package/dist/content/codec/nestable.js.map +1 -0
  53. package/dist/content/codec/repeatable.js +56 -0
  54. package/dist/content/codec/repeatable.js.map +1 -0
  55. package/dist/content/codec/richText.js +87 -0
  56. package/dist/content/codec/richText.js.map +1 -0
  57. package/dist/content/codec/separator.js +26 -0
  58. package/dist/content/codec/separator.js.map +1 -0
  59. package/dist/content/codec/slice.js +220 -0
  60. package/dist/content/codec/slice.js.map +1 -0
  61. package/dist/content/codec/slices.js +106 -0
  62. package/dist/content/codec/slices.js.map +1 -0
  63. package/dist/content/codec/table.js +56 -0
  64. package/dist/content/codec/table.js.map +1 -0
  65. package/dist/content/codec/uid.js +31 -0
  66. package/dist/content/codec/uid.js.map +1 -0
  67. package/dist/content/codec/widget.js +39 -0
  68. package/dist/content/codec/widget.js.map +1 -0
  69. package/dist/content/document.d.ts +9 -0
  70. package/dist/content/document.d.ts.map +1 -0
  71. package/dist/content/document.js +9 -0
  72. package/dist/content/document.js.map +1 -0
  73. package/dist/content/embed.d.ts +24 -0
  74. package/dist/content/embed.d.ts.map +1 -0
  75. package/dist/content/embed.js +12 -0
  76. package/dist/content/embed.js.map +1 -0
  77. package/dist/content/empty.d.ts +11 -0
  78. package/dist/content/empty.d.ts.map +1 -0
  79. package/dist/content/empty.js +11 -0
  80. package/dist/content/empty.js.map +1 -0
  81. package/dist/content/field.d.ts +49 -0
  82. package/dist/content/field.d.ts.map +1 -0
  83. package/dist/content/field.js +52 -0
  84. package/dist/content/field.js.map +1 -0
  85. package/dist/content/geopoint.d.ts +14 -0
  86. package/dist/content/geopoint.d.ts.map +1 -0
  87. package/dist/content/geopoint.js +9 -0
  88. package/dist/content/geopoint.js.map +1 -0
  89. package/dist/content/group.d.ts +19 -0
  90. package/dist/content/group.d.ts.map +1 -0
  91. package/dist/content/group.js +19 -0
  92. package/dist/content/group.js.map +1 -0
  93. package/dist/content/image.d.ts +54 -0
  94. package/dist/content/image.d.ts.map +1 -0
  95. package/dist/content/image.js +10 -0
  96. package/dist/content/image.js.map +1 -0
  97. package/dist/content/integrationField.d.ts +11 -0
  98. package/dist/content/integrationField.d.ts.map +1 -0
  99. package/dist/content/integrationField.js +11 -0
  100. package/dist/content/integrationField.js.map +1 -0
  101. package/dist/content/legacy/boolean.d.ts +1 -0
  102. package/dist/content/legacy/boolean.js +7 -0
  103. package/dist/content/legacy/boolean.js.map +1 -0
  104. package/dist/content/legacy/document.d.ts +8 -0
  105. package/dist/content/legacy/document.d.ts.map +1 -0
  106. package/dist/content/legacy/document.js +15 -0
  107. package/dist/content/legacy/document.js.map +1 -0
  108. package/dist/content/legacy/embed.d.ts +1 -0
  109. package/dist/content/legacy/embed.js +23 -0
  110. package/dist/content/legacy/embed.js.map +1 -0
  111. package/dist/content/legacy/empty.d.ts +1 -0
  112. package/dist/content/legacy/empty.js +7 -0
  113. package/dist/content/legacy/empty.js.map +1 -0
  114. package/dist/content/legacy/field.d.ts +1 -0
  115. package/dist/content/legacy/field.js +7 -0
  116. package/dist/content/legacy/field.js.map +1 -0
  117. package/dist/content/legacy/geopoint.d.ts +1 -0
  118. package/dist/content/legacy/geopoint.js +10 -0
  119. package/dist/content/legacy/geopoint.js.map +1 -0
  120. package/dist/content/legacy/group.d.ts +9 -0
  121. package/dist/content/legacy/group.d.ts.map +1 -0
  122. package/dist/content/legacy/group.js +10 -0
  123. package/dist/content/legacy/group.js.map +1 -0
  124. package/dist/content/legacy/image.d.ts +28 -0
  125. package/dist/content/legacy/image.d.ts.map +1 -0
  126. package/dist/content/legacy/image.js +33 -0
  127. package/dist/content/legacy/image.js.map +1 -0
  128. package/dist/content/legacy/integrationField.d.ts +1 -0
  129. package/dist/content/legacy/integrationField.js +7 -0
  130. package/dist/content/legacy/integrationField.js.map +1 -0
  131. package/dist/content/legacy/link.d.ts +41 -0
  132. package/dist/content/legacy/link.d.ts.map +1 -0
  133. package/dist/content/legacy/link.js +88 -0
  134. package/dist/content/legacy/link.js.map +1 -0
  135. package/dist/content/legacy/nestable.d.ts +1 -0
  136. package/dist/content/legacy/nestable.js +32 -0
  137. package/dist/content/legacy/nestable.js.map +1 -0
  138. package/dist/content/legacy/repeatable.d.ts +1 -0
  139. package/dist/content/legacy/repeatable.js +7 -0
  140. package/dist/content/legacy/repeatable.js.map +1 -0
  141. package/dist/content/legacy/richText.d.ts +110 -0
  142. package/dist/content/legacy/richText.d.ts.map +1 -0
  143. package/dist/content/legacy/richText.js +100 -0
  144. package/dist/content/legacy/richText.js.map +1 -0
  145. package/dist/content/legacy/separator.d.ts +1 -0
  146. package/dist/content/legacy/separator.js +7 -0
  147. package/dist/content/legacy/separator.js.map +1 -0
  148. package/dist/content/legacy/slice.js +22 -0
  149. package/dist/content/legacy/slice.js.map +1 -0
  150. package/dist/content/legacy/slices.js +13 -0
  151. package/dist/content/legacy/slices.js.map +1 -0
  152. package/dist/content/legacy/table.d.ts +1 -0
  153. package/dist/content/legacy/table.js +19 -0
  154. package/dist/content/legacy/table.js.map +1 -0
  155. package/dist/content/legacy/uid.js +7 -0
  156. package/dist/content/legacy/uid.js.map +1 -0
  157. package/dist/content/link.d.ts +140 -0
  158. package/dist/content/link.d.ts.map +1 -0
  159. package/dist/content/link.js +53 -0
  160. package/dist/content/link.js.map +1 -0
  161. package/dist/content/nestable.d.ts +19 -0
  162. package/dist/content/nestable.d.ts.map +1 -0
  163. package/dist/content/nestable.js +56 -0
  164. package/dist/content/nestable.js.map +1 -0
  165. package/dist/content/repeatable.d.ts +32 -0
  166. package/dist/content/repeatable.d.ts.map +1 -0
  167. package/dist/content/repeatable.js +17 -0
  168. package/dist/content/repeatable.js.map +1 -0
  169. package/dist/content/richText.d.ts +91 -0
  170. package/dist/content/richText.d.ts.map +1 -0
  171. package/dist/content/richText.js +24 -0
  172. package/dist/content/richText.js.map +1 -0
  173. package/dist/content/separator.d.ts +10 -0
  174. package/dist/content/separator.d.ts.map +1 -0
  175. package/dist/content/separator.js +8 -0
  176. package/dist/content/separator.js.map +1 -0
  177. package/dist/content/slice.d.ts +24 -0
  178. package/dist/content/slice.d.ts.map +1 -0
  179. package/dist/content/slice.js +27 -0
  180. package/dist/content/slice.js.map +1 -0
  181. package/dist/content/slices.d.ts +56 -0
  182. package/dist/content/slices.d.ts.map +1 -0
  183. package/dist/content/slices.js +24 -0
  184. package/dist/content/slices.js.map +1 -0
  185. package/dist/content/table.d.ts +21 -0
  186. package/dist/content/table.d.ts.map +1 -0
  187. package/dist/content/table.js +13 -0
  188. package/dist/content/table.js.map +1 -0
  189. package/dist/content/uid.d.ts +11 -0
  190. package/dist/content/uid.d.ts.map +1 -0
  191. package/dist/content/uid.js +11 -0
  192. package/dist/content/uid.js.map +1 -0
  193. package/dist/content/widget.d.ts +11 -0
  194. package/dist/content/widget.d.ts.map +1 -0
  195. package/dist/content/widget.js +16 -0
  196. package/dist/content/widget.js.map +1 -0
  197. package/dist/helpers/contentPath.d.ts +15 -0
  198. package/dist/helpers/contentPath.d.ts.map +1 -0
  199. package/dist/helpers/contentPath.js +30 -0
  200. package/dist/helpers/contentPath.js.map +1 -0
  201. package/dist/helpers/customTypeModel.d.ts +15 -0
  202. package/dist/helpers/customTypeModel.d.ts.map +1 -0
  203. package/dist/helpers/customTypeModel.js +85 -0
  204. package/dist/helpers/customTypeModel.js.map +1 -0
  205. package/dist/helpers/documentContent.d.ts +20 -0
  206. package/dist/helpers/documentContent.d.ts.map +1 -0
  207. package/dist/helpers/documentContent.js +64 -0
  208. package/dist/helpers/documentContent.js.map +1 -0
  209. package/dist/helpers/imageContent.d.ts +33 -0
  210. package/dist/helpers/imageContent.d.ts.map +1 -0
  211. package/dist/helpers/imageContent.js +55 -0
  212. package/dist/helpers/imageContent.js.map +1 -0
  213. package/dist/helpers/sliceContent.d.ts +12 -0
  214. package/dist/helpers/sliceContent.d.ts.map +1 -0
  215. package/dist/helpers/sliceContent.js +60 -0
  216. package/dist/helpers/sliceContent.js.map +1 -0
  217. package/dist/helpers/traverseContent.d.ts +84 -0
  218. package/dist/helpers/traverseContent.d.ts.map +1 -0
  219. package/dist/helpers/traverseContent.js +376 -0
  220. package/dist/helpers/traverseContent.js.map +1 -0
  221. package/dist/helpers/traverseContentWithModel.d.ts +84 -0
  222. package/dist/helpers/traverseContentWithModel.d.ts.map +1 -0
  223. package/dist/helpers/traverseContentWithModel.js +388 -0
  224. package/dist/helpers/traverseContentWithModel.js.map +1 -0
  225. package/dist/helpers/withDefaultContent.d.ts +21 -0
  226. package/dist/helpers/withDefaultContent.d.ts.map +1 -0
  227. package/dist/helpers/withDefaultContent.js +120 -0
  228. package/dist/helpers/withDefaultContent.js.map +1 -0
  229. package/dist/index.d.ts +59 -0
  230. package/dist/index.js +14 -0
  231. package/dist/io-ts.d.ts +4792 -0
  232. package/dist/io-ts.d.ts.map +1 -0
  233. package/dist/io-ts.js +224 -0
  234. package/dist/io-ts.js.map +1 -0
  235. package/dist/model/boolean.d.ts +16 -0
  236. package/dist/model/boolean.d.ts.map +1 -0
  237. package/dist/model/boolean.js +16 -0
  238. package/dist/model/boolean.js.map +1 -0
  239. package/dist/model/color.d.ts +15 -0
  240. package/dist/model/color.d.ts.map +1 -0
  241. package/dist/model/color.js +15 -0
  242. package/dist/model/color.js.map +1 -0
  243. package/dist/model/customType.d.ts +31 -0
  244. package/dist/model/customType.d.ts.map +1 -0
  245. package/dist/model/customType.js +18 -0
  246. package/dist/model/customType.js.map +1 -0
  247. package/dist/model/date.d.ts +16 -0
  248. package/dist/model/date.d.ts.map +1 -0
  249. package/dist/model/date.js +16 -0
  250. package/dist/model/date.js.map +1 -0
  251. package/dist/model/embed.d.ts +16 -0
  252. package/dist/model/embed.d.ts.map +1 -0
  253. package/dist/model/embed.js +16 -0
  254. package/dist/model/embed.js.map +1 -0
  255. package/dist/model/geopoint.d.ts +14 -0
  256. package/dist/model/geopoint.d.ts.map +1 -0
  257. package/dist/model/geopoint.js +12 -0
  258. package/dist/model/geopoint.js.map +1 -0
  259. package/dist/model/group.d.ts +567 -0
  260. package/dist/model/group.d.ts.map +1 -0
  261. package/dist/model/group.js +23 -0
  262. package/dist/model/group.js.map +1 -0
  263. package/dist/model/image.d.ts +24 -0
  264. package/dist/model/image.d.ts.map +1 -0
  265. package/dist/model/image.js +41 -0
  266. package/dist/model/image.js.map +1 -0
  267. package/dist/model/integrationField.d.ts +16 -0
  268. package/dist/model/integrationField.d.ts.map +1 -0
  269. package/dist/model/integrationField.js +16 -0
  270. package/dist/model/integrationField.js.map +1 -0
  271. package/dist/model/link.d.ts +48 -0
  272. package/dist/model/link.d.ts.map +1 -0
  273. package/dist/model/link.js +94 -0
  274. package/dist/model/link.js.map +1 -0
  275. package/dist/model/nestable.d.ts +23 -0
  276. package/dist/model/nestable.d.ts.map +1 -0
  277. package/dist/model/nestable.js +40 -0
  278. package/dist/model/nestable.js.map +1 -0
  279. package/dist/model/number.d.ts +18 -0
  280. package/dist/model/number.d.ts.map +1 -0
  281. package/dist/model/number.js +19 -0
  282. package/dist/model/number.js.map +1 -0
  283. package/dist/model/range.d.ts +18 -0
  284. package/dist/model/range.d.ts.map +1 -0
  285. package/dist/model/range.js +19 -0
  286. package/dist/model/range.js.map +1 -0
  287. package/dist/model/richText.d.ts +43 -0
  288. package/dist/model/richText.d.ts.map +1 -0
  289. package/dist/model/richText.js +73 -0
  290. package/dist/model/richText.js.map +1 -0
  291. package/dist/model/section.d.ts +11 -0
  292. package/dist/model/section.d.ts.map +1 -0
  293. package/dist/model/section.js +10 -0
  294. package/dist/model/section.js.map +1 -0
  295. package/dist/model/select.d.ts +17 -0
  296. package/dist/model/select.d.ts.map +1 -0
  297. package/dist/model/select.js +22 -0
  298. package/dist/model/select.js.map +1 -0
  299. package/dist/model/separator.d.ts +13 -0
  300. package/dist/model/separator.d.ts.map +1 -0
  301. package/dist/model/separator.js +11 -0
  302. package/dist/model/separator.js.map +1 -0
  303. package/dist/model/slice.d.ts +2084 -0
  304. package/dist/model/slice.d.ts.map +1 -0
  305. package/dist/model/slice.js +68 -0
  306. package/dist/model/slice.js.map +1 -0
  307. package/dist/model/slices.d.ts +33 -0
  308. package/dist/model/slices.d.ts.map +1 -0
  309. package/dist/model/slices.js +29 -0
  310. package/dist/model/slices.js.map +1 -0
  311. package/dist/model/table.d.ts +14 -0
  312. package/dist/model/table.d.ts.map +1 -0
  313. package/dist/model/table.js +22 -0
  314. package/dist/model/table.js.map +1 -0
  315. package/dist/model/text.d.ts +16 -0
  316. package/dist/model/text.d.ts.map +1 -0
  317. package/dist/model/text.js +16 -0
  318. package/dist/model/text.js.map +1 -0
  319. package/dist/model/timestamp.d.ts +16 -0
  320. package/dist/model/timestamp.d.ts.map +1 -0
  321. package/dist/model/timestamp.js +16 -0
  322. package/dist/model/timestamp.js.map +1 -0
  323. package/dist/model/uid.d.ts +16 -0
  324. package/dist/model/uid.d.ts.map +1 -0
  325. package/dist/model/uid.js +16 -0
  326. package/dist/model/uid.js.map +1 -0
  327. package/dist/model/widget.d.ts +58 -0
  328. package/dist/model/widget.d.ts.map +1 -0
  329. package/dist/model/widget.js +50 -0
  330. package/dist/model/widget.js.map +1 -0
  331. package/dist/zod4.d.ts +2840 -0
  332. package/dist/zod4.d.ts.map +1 -0
  333. package/dist/zod4.js +136 -0
  334. package/dist/zod4.js.map +1 -0
  335. package/package.json +62 -58
  336. package/src/common/asset.ts +29 -0
  337. package/src/common/embed.ts +27 -0
  338. package/src/common/hexaColorCode.ts +11 -0
  339. package/src/common/nonEmptyString.ts +9 -0
  340. package/src/common/widgetKey.ts +11 -0
  341. package/src/content/boolean.ts +10 -0
  342. package/src/content/codec/boolean.ts +38 -0
  343. package/src/content/codec/document.ts +60 -0
  344. package/src/content/codec/embed.ts +55 -0
  345. package/src/content/codec/empty.ts +49 -0
  346. package/src/content/codec/field.ts +96 -0
  347. package/src/content/codec/geopoint.ts +40 -0
  348. package/src/content/codec/group.ts +163 -0
  349. package/src/content/codec/image.ts +50 -0
  350. package/src/content/codec/integrationField.ts +38 -0
  351. package/src/content/{LegacyContentCtx.ts → codec/legacyContentCtx.ts} +17 -17
  352. package/src/content/codec/link.ts +103 -0
  353. package/src/content/codec/nestable.ts +146 -0
  354. package/src/content/codec/repeatable.ts +68 -0
  355. package/src/content/codec/richText.ts +117 -0
  356. package/src/content/codec/separator.ts +33 -0
  357. package/src/content/codec/slice.ts +276 -0
  358. package/src/content/codec/slices.ts +130 -0
  359. package/src/content/codec/table.ts +65 -0
  360. package/src/content/codec/uid.ts +36 -0
  361. package/src/content/codec/widget.ts +58 -0
  362. package/src/content/document.ts +8 -0
  363. package/src/content/embed.ts +12 -0
  364. package/src/content/empty.ts +10 -0
  365. package/src/content/field.ts +80 -0
  366. package/src/content/geopoint.ts +11 -0
  367. package/src/content/group.ts +46 -0
  368. package/src/content/image.ts +15 -0
  369. package/src/content/integrationField.ts +10 -0
  370. package/src/content/legacy/boolean.ts +5 -0
  371. package/src/content/legacy/document.ts +25 -0
  372. package/src/content/legacy/embed.ts +23 -0
  373. package/src/content/legacy/empty.ts +10 -0
  374. package/src/content/legacy/field.ts +8 -0
  375. package/src/content/legacy/geopoint.ts +10 -0
  376. package/src/content/legacy/group.ts +23 -0
  377. package/src/content/legacy/image.ts +43 -0
  378. package/src/content/legacy/integrationField.ts +5 -0
  379. package/src/content/legacy/link.ts +194 -0
  380. package/src/content/legacy/nestable.ts +55 -0
  381. package/src/content/legacy/repeatable.ts +7 -0
  382. package/src/content/legacy/richText.ts +200 -0
  383. package/src/content/legacy/separator.ts +6 -0
  384. package/src/content/legacy/slice.ts +38 -0
  385. package/src/content/legacy/slices.ts +17 -0
  386. package/src/content/legacy/table.ts +39 -0
  387. package/src/content/legacy/uid.ts +6 -0
  388. package/src/content/legacy/widget.ts +19 -0
  389. package/src/content/link.ts +165 -0
  390. package/src/content/nestable.ts +107 -0
  391. package/src/content/repeatable.ts +21 -0
  392. package/src/content/richText.ts +60 -0
  393. package/src/content/separator.ts +9 -0
  394. package/src/content/slice.ts +41 -0
  395. package/src/content/slices.ts +57 -0
  396. package/src/content/table.ts +14 -0
  397. package/src/content/uid.ts +10 -0
  398. package/src/content/widget.ts +21 -0
  399. package/src/helpers/contentPath.ts +35 -0
  400. package/src/helpers/customTypeModel.ts +113 -0
  401. package/src/helpers/documentContent.ts +108 -0
  402. package/src/helpers/imageContent.ts +84 -0
  403. package/src/helpers/sliceContent.ts +86 -0
  404. package/src/helpers/traverseContent.ts +597 -0
  405. package/src/helpers/traverseContentWithModel.ts +616 -0
  406. package/src/helpers/withDefaultContent.ts +180 -0
  407. package/src/index.ts +136 -0
  408. package/src/io-ts.ts +363 -0
  409. package/src/model/boolean.ts +15 -0
  410. package/src/model/color.ts +14 -0
  411. package/src/model/customType.ts +26 -0
  412. package/src/model/date.ts +15 -0
  413. package/src/model/diff/index.ts +4 -0
  414. package/src/{customtypes/diff/SharedSlice.ts → model/diff/sharedSlice.ts} +16 -18
  415. package/src/model/diff/utils.ts +45 -0
  416. package/src/model/diff/variation.ts +155 -0
  417. package/src/model/diff/widgets.ts +15 -0
  418. package/src/model/embed.ts +15 -0
  419. package/src/model/geopoint.ts +13 -0
  420. package/src/model/group.ts +39 -0
  421. package/src/model/image.ts +54 -0
  422. package/src/model/integrationField.ts +15 -0
  423. package/src/model/link.ts +141 -0
  424. package/src/model/nestable.ts +71 -0
  425. package/src/model/number.ts +26 -0
  426. package/src/model/range.ts +26 -0
  427. package/src/model/richText.ts +109 -0
  428. package/src/model/section.ts +12 -0
  429. package/src/model/select.ts +30 -0
  430. package/src/model/separator.ts +12 -0
  431. package/src/model/slice.ts +131 -0
  432. package/src/model/slices.ts +54 -0
  433. package/src/model/table.ts +29 -0
  434. package/src/model/text.ts +15 -0
  435. package/src/model/timestamp.ts +15 -0
  436. package/src/model/uid.ts +15 -0
  437. package/src/model/widget.ts +67 -0
  438. package/src/zod4.ts +199 -0
  439. package/lib/common/Asset.d.ts +0 -16
  440. package/lib/common/Asset.js +0 -11
  441. package/lib/common/Embed.d.ts +0 -15
  442. package/lib/common/Embed.js +0 -10
  443. package/lib/common/HexaColorCode.d.ts +0 -4
  444. package/lib/common/HexaColorCode.js +0 -7
  445. package/lib/common/UUID.d.ts +0 -6
  446. package/lib/common/UUID.js +0 -8
  447. package/lib/common/WidgetKey.d.ts +0 -3
  448. package/lib/common/WidgetKey.js +0 -8
  449. package/lib/common/index.d.ts +0 -3
  450. package/lib/common/index.js +0 -6
  451. package/lib/content/Document.d.ts +0 -11813
  452. package/lib/content/Document.js +0 -364
  453. package/lib/content/LegacyContentCtx.d.ts +0 -64
  454. package/lib/content/LegacyContentCtx.js +0 -130
  455. package/lib/content/fields/EmptyContent.d.ts +0 -16
  456. package/lib/content/fields/EmptyContent.js +0 -30
  457. package/lib/content/fields/GroupContent.d.ts +0 -53
  458. package/lib/content/fields/GroupContent.js +0 -307
  459. package/lib/content/fields/UIDContent.d.ts +0 -16
  460. package/lib/content/fields/UIDContent.js +0 -25
  461. package/lib/content/fields/WidgetContent.d.ts +0 -11749
  462. package/lib/content/fields/WidgetContent.js +0 -57
  463. package/lib/content/fields/index.d.ts +0 -6
  464. package/lib/content/fields/index.js +0 -9
  465. package/lib/content/fields/nestable/BooleanContent.d.ts +0 -18
  466. package/lib/content/fields/nestable/BooleanContent.js +0 -35
  467. package/lib/content/fields/nestable/EmbedContent.d.ts +0 -78
  468. package/lib/content/fields/nestable/EmbedContent.js +0 -56
  469. package/lib/content/fields/nestable/FieldContent/ColorContent.d.ts +0 -18
  470. package/lib/content/fields/nestable/FieldContent/ColorContent.js +0 -35
  471. package/lib/content/fields/nestable/FieldContent/DateContent.d.ts +0 -18
  472. package/lib/content/fields/nestable/FieldContent/DateContent.js +0 -35
  473. package/lib/content/fields/nestable/FieldContent/NumberContent.d.ts +0 -18
  474. package/lib/content/fields/nestable/FieldContent/NumberContent.js +0 -35
  475. package/lib/content/fields/nestable/FieldContent/RangeContent.d.ts +0 -18
  476. package/lib/content/fields/nestable/FieldContent/RangeContent.js +0 -35
  477. package/lib/content/fields/nestable/FieldContent/SelectContent.d.ts +0 -20
  478. package/lib/content/fields/nestable/FieldContent/SelectContent.js +0 -46
  479. package/lib/content/fields/nestable/FieldContent/TextContent.d.ts +0 -18
  480. package/lib/content/fields/nestable/FieldContent/TextContent.js +0 -35
  481. package/lib/content/fields/nestable/FieldContent/TimestampContent.d.ts +0 -18
  482. package/lib/content/fields/nestable/FieldContent/TimestampContent.js +0 -35
  483. package/lib/content/fields/nestable/FieldContent/common.d.ts +0 -1
  484. package/lib/content/fields/nestable/FieldContent/common.js +0 -4
  485. package/lib/content/fields/nestable/FieldContent/index.d.ts +0 -49
  486. package/lib/content/fields/nestable/FieldContent/index.js +0 -38
  487. package/lib/content/fields/nestable/GeoPointContent.d.ts +0 -33
  488. package/lib/content/fields/nestable/GeoPointContent.js +0 -31
  489. package/lib/content/fields/nestable/ImageContent.d.ts +0 -252
  490. package/lib/content/fields/nestable/ImageContent.js +0 -122
  491. package/lib/content/fields/nestable/IntegrationFieldContent.d.ts +0 -16
  492. package/lib/content/fields/nestable/IntegrationFieldContent.js +0 -28
  493. package/lib/content/fields/nestable/LinkContent.d.ts +0 -919
  494. package/lib/content/fields/nestable/LinkContent.js +0 -399
  495. package/lib/content/fields/nestable/NestableContent.d.ts +0 -1953
  496. package/lib/content/fields/nestable/NestableContent.js +0 -167
  497. package/lib/content/fields/nestable/RepeatableContent.d.ts +0 -182
  498. package/lib/content/fields/nestable/RepeatableContent.js +0 -146
  499. package/lib/content/fields/nestable/RichTextContent/Blocks.d.ts +0 -1261
  500. package/lib/content/fields/nestable/RichTextContent/Blocks.js +0 -170
  501. package/lib/content/fields/nestable/RichTextContent/index.d.ts +0 -1004
  502. package/lib/content/fields/nestable/RichTextContent/index.js +0 -28
  503. package/lib/content/fields/nestable/SeparatorContent.d.ts +0 -13
  504. package/lib/content/fields/nestable/SeparatorContent.js +0 -22
  505. package/lib/content/fields/nestable/TableContent.d.ts +0 -776
  506. package/lib/content/fields/nestable/TableContent.js +0 -167
  507. package/lib/content/fields/nestable/index.d.ts +0 -12
  508. package/lib/content/fields/nestable/index.js +0 -15
  509. package/lib/content/fields/slices/Slice/CompositeSliceContent.d.ts +0 -3934
  510. package/lib/content/fields/slices/Slice/CompositeSliceContent.js +0 -195
  511. package/lib/content/fields/slices/Slice/RepeatableContent.d.ts +0 -774
  512. package/lib/content/fields/slices/Slice/RepeatableContent.js +0 -21
  513. package/lib/content/fields/slices/Slice/SharedSliceContent.d.ts +0 -3937
  514. package/lib/content/fields/slices/Slice/SharedSliceContent.js +0 -215
  515. package/lib/content/fields/slices/Slice/SimpleSliceContent.d.ts +0 -1962
  516. package/lib/content/fields/slices/Slice/SimpleSliceContent.js +0 -130
  517. package/lib/content/fields/slices/Slice/SlicePrimaryContent.d.ts +0 -1952
  518. package/lib/content/fields/slices/Slice/SlicePrimaryContent.js +0 -30
  519. package/lib/content/fields/slices/Slice/index.d.ts +0 -6810
  520. package/lib/content/fields/slices/Slice/index.js +0 -45
  521. package/lib/content/fields/slices/SliceItem.d.ts +0 -6846
  522. package/lib/content/fields/slices/SliceItem.js +0 -116
  523. package/lib/content/fields/slices/SlicesContent.d.ts +0 -9827
  524. package/lib/content/fields/slices/SlicesContent.js +0 -465
  525. package/lib/content/fields/slices/index.d.ts +0 -3
  526. package/lib/content/fields/slices/index.js +0 -6
  527. package/lib/content/fields/withDefaultValues.d.ts +0 -9
  528. package/lib/content/fields/withDefaultValues.js +0 -79
  529. package/lib/content/helpers.d.ts +0 -9
  530. package/lib/content/helpers.js +0 -22
  531. package/lib/content/index.d.ts +0 -4
  532. package/lib/content/index.js +0 -7
  533. package/lib/content/utils.d.ts +0 -50
  534. package/lib/content/utils.js +0 -35
  535. package/lib/customtypes/CustomType.d.ts +0 -3680
  536. package/lib/customtypes/CustomType.js +0 -184
  537. package/lib/customtypes/Section.d.ts +0 -3635
  538. package/lib/customtypes/Section.js +0 -66
  539. package/lib/customtypes/diff/Changes.d.ts +0 -17
  540. package/lib/customtypes/diff/Changes.js +0 -9
  541. package/lib/customtypes/diff/SharedSlice.d.ts +0 -1624
  542. package/lib/customtypes/diff/SharedSlice.js +0 -55
  543. package/lib/customtypes/diff/Variation.d.ts +0 -1605
  544. package/lib/customtypes/diff/Variation.js +0 -113
  545. package/lib/customtypes/diff/Widgets.d.ts +0 -11
  546. package/lib/customtypes/diff/Widgets.js +0 -2
  547. package/lib/customtypes/diff/index.d.ts +0 -4
  548. package/lib/customtypes/diff/index.js +0 -7
  549. package/lib/customtypes/index.d.ts +0 -4
  550. package/lib/customtypes/index.js +0 -7
  551. package/lib/customtypes/widgets/Group.d.ts +0 -1352
  552. package/lib/customtypes/widgets/Group.js +0 -92
  553. package/lib/customtypes/widgets/UID.d.ts +0 -19
  554. package/lib/customtypes/widgets/UID.js +0 -21
  555. package/lib/customtypes/widgets/Widget.d.ts +0 -4457
  556. package/lib/customtypes/widgets/Widget.js +0 -49
  557. package/lib/customtypes/widgets/index.d.ts +0 -6
  558. package/lib/customtypes/widgets/index.js +0 -9
  559. package/lib/customtypes/widgets/nestable/BooleanField.d.ts +0 -20
  560. package/lib/customtypes/widgets/nestable/BooleanField.js +0 -21
  561. package/lib/customtypes/widgets/nestable/Color.d.ts +0 -17
  562. package/lib/customtypes/widgets/nestable/Color.js +0 -20
  563. package/lib/customtypes/widgets/nestable/Date.d.ts +0 -19
  564. package/lib/customtypes/widgets/nestable/Date.js +0 -21
  565. package/lib/customtypes/widgets/nestable/Embed.d.ts +0 -19
  566. package/lib/customtypes/widgets/nestable/Embed.js +0 -21
  567. package/lib/customtypes/widgets/nestable/GeoPoint.d.ts +0 -15
  568. package/lib/customtypes/widgets/nestable/GeoPoint.js +0 -19
  569. package/lib/customtypes/widgets/nestable/Image.d.ts +0 -44
  570. package/lib/customtypes/widgets/nestable/Image.js +0 -29
  571. package/lib/customtypes/widgets/nestable/IntegrationField.d.ts +0 -19
  572. package/lib/customtypes/widgets/nestable/IntegrationField.js +0 -21
  573. package/lib/customtypes/widgets/nestable/Link.d.ts +0 -196
  574. package/lib/customtypes/widgets/nestable/Link.js +0 -167
  575. package/lib/customtypes/widgets/nestable/NestableWidget.d.ts +0 -217
  576. package/lib/customtypes/widgets/nestable/NestableWidget.js +0 -39
  577. package/lib/customtypes/widgets/nestable/Number.d.ts +0 -23
  578. package/lib/customtypes/widgets/nestable/Number.js +0 -24
  579. package/lib/customtypes/widgets/nestable/Range.d.ts +0 -23
  580. package/lib/customtypes/widgets/nestable/Range.js +0 -24
  581. package/lib/customtypes/widgets/nestable/RichText.d.ts +0 -73
  582. package/lib/customtypes/widgets/nestable/RichText.js +0 -131
  583. package/lib/customtypes/widgets/nestable/Select.d.ts +0 -21
  584. package/lib/customtypes/widgets/nestable/Select.js +0 -22
  585. package/lib/customtypes/widgets/nestable/Separator.d.ts +0 -14
  586. package/lib/customtypes/widgets/nestable/Separator.js +0 -18
  587. package/lib/customtypes/widgets/nestable/Table.d.ts +0 -21
  588. package/lib/customtypes/widgets/nestable/Table.js +0 -30
  589. package/lib/customtypes/widgets/nestable/Text.d.ts +0 -19
  590. package/lib/customtypes/widgets/nestable/Text.js +0 -21
  591. package/lib/customtypes/widgets/nestable/Timestamp.d.ts +0 -19
  592. package/lib/customtypes/widgets/nestable/Timestamp.js +0 -21
  593. package/lib/customtypes/widgets/nestable/index.d.ts +0 -17
  594. package/lib/customtypes/widgets/nestable/index.js +0 -20
  595. package/lib/customtypes/widgets/shared/ImageConstraint.d.ts +0 -7
  596. package/lib/customtypes/widgets/shared/ImageConstraint.js +0 -31
  597. package/lib/customtypes/widgets/shared/index.d.ts +0 -1
  598. package/lib/customtypes/widgets/shared/index.js +0 -8
  599. package/lib/customtypes/widgets/slices/CompositeSlice.d.ts +0 -455
  600. package/lib/customtypes/widgets/slices/CompositeSlice.js +0 -63
  601. package/lib/customtypes/widgets/slices/LegacySlice.d.ts +0 -442
  602. package/lib/customtypes/widgets/slices/LegacySlice.js +0 -12
  603. package/lib/customtypes/widgets/slices/SharedSlice.d.ts +0 -1807
  604. package/lib/customtypes/widgets/slices/SharedSlice.js +0 -118
  605. package/lib/customtypes/widgets/slices/SharedSliceRef.d.ts +0 -5
  606. package/lib/customtypes/widgets/slices/SharedSliceRef.js +0 -9
  607. package/lib/customtypes/widgets/slices/Slice.d.ts +0 -6
  608. package/lib/customtypes/widgets/slices/Slice.js +0 -2
  609. package/lib/customtypes/widgets/slices/SlicePrimaryWidget.d.ts +0 -1259
  610. package/lib/customtypes/widgets/slices/SlicePrimaryWidget.js +0 -10
  611. package/lib/customtypes/widgets/slices/Slices.d.ts +0 -5917
  612. package/lib/customtypes/widgets/slices/Slices.js +0 -146
  613. package/lib/customtypes/widgets/slices/SlicesTypes.d.ts +0 -6
  614. package/lib/customtypes/widgets/slices/SlicesTypes.js +0 -11
  615. package/lib/customtypes/widgets/slices/index.d.ts +0 -8
  616. package/lib/customtypes/widgets/slices/index.js +0 -11
  617. package/lib/utils/Arrays.d.ts +0 -1
  618. package/lib/utils/Arrays.js +0 -13
  619. package/lib/utils/DocumentId.d.ts +0 -2
  620. package/lib/utils/DocumentId.js +0 -7
  621. package/lib/utils/Fields.d.ts +0 -6
  622. package/lib/utils/Fields.js +0 -2
  623. package/lib/utils/Objects.d.ts +0 -8
  624. package/lib/utils/Objects.js +0 -42
  625. package/lib/utils/index.d.ts +0 -4
  626. package/lib/utils/index.js +0 -8
  627. package/lib/validators/BasicTypes.d.ts +0 -10
  628. package/lib/validators/BasicTypes.js +0 -25
  629. package/lib/validators/DateFromString.d.ts +0 -3
  630. package/lib/validators/DateFromString.js +0 -11
  631. package/lib/validators/DateFromStringOrNumber.d.ts +0 -3
  632. package/lib/validators/DateFromStringOrNumber.js +0 -10
  633. package/lib/validators/DateFromTsMs.d.ts +0 -3
  634. package/lib/validators/DateFromTsMs.js +0 -10
  635. package/lib/validators/DefaultOrElse.d.ts +0 -5
  636. package/lib/validators/DefaultOrElse.js +0 -21
  637. package/lib/validators/IntFromNumber.d.ts +0 -5
  638. package/lib/validators/IntFromNumber.js +0 -14
  639. package/lib/validators/IntFromPixels.d.ts +0 -8
  640. package/lib/validators/IntFromPixels.js +0 -24
  641. package/lib/validators/NonEmptyString.d.ts +0 -3
  642. package/lib/validators/NonEmptyString.js +0 -6
  643. package/lib/validators/NonEmptyStringOrNull.d.ts +0 -3
  644. package/lib/validators/NonEmptyStringOrNull.js +0 -15
  645. package/lib/validators/NumberOrNull.d.ts +0 -3
  646. package/lib/validators/NumberOrNull.js +0 -6
  647. package/lib/validators/NumberRange.d.ts +0 -32
  648. package/lib/validators/NumberRange.js +0 -40
  649. package/lib/validators/StringFromBoolean.d.ts +0 -5
  650. package/lib/validators/StringFromBoolean.js +0 -10
  651. package/lib/validators/StringFromNumber.d.ts +0 -5
  652. package/lib/validators/StringFromNumber.js +0 -10
  653. package/lib/validators/StringOrNull.d.ts +0 -3
  654. package/lib/validators/StringOrNull.js +0 -6
  655. package/lib/validators/TrimmedString.d.ts +0 -5
  656. package/lib/validators/TrimmedString.js +0 -23
  657. package/lib/validators/function.d.ts +0 -34
  658. package/lib/validators/function.js +0 -100
  659. package/lib/validators/index.d.ts +0 -15
  660. package/lib/validators/index.js +0 -31
  661. package/src/common/Asset.ts +0 -25
  662. package/src/common/Embed.ts +0 -22
  663. package/src/common/HexaColorCode.ts +0 -11
  664. package/src/common/UUID.ts +0 -19
  665. package/src/common/WidgetKey.ts +0 -13
  666. package/src/common/index.ts +0 -3
  667. package/src/content/Document.ts +0 -539
  668. package/src/content/fields/EmptyContent.ts +0 -45
  669. package/src/content/fields/GroupContent.ts +0 -466
  670. package/src/content/fields/UIDContent.ts +0 -42
  671. package/src/content/fields/WidgetContent.ts +0 -76
  672. package/src/content/fields/index.ts +0 -6
  673. package/src/content/fields/nestable/BooleanContent.ts +0 -52
  674. package/src/content/fields/nestable/EmbedContent.ts +0 -74
  675. package/src/content/fields/nestable/FieldContent/ColorContent.ts +0 -49
  676. package/src/content/fields/nestable/FieldContent/DateContent.ts +0 -49
  677. package/src/content/fields/nestable/FieldContent/NumberContent.ts +0 -49
  678. package/src/content/fields/nestable/FieldContent/RangeContent.ts +0 -49
  679. package/src/content/fields/nestable/FieldContent/SelectContent.ts +0 -60
  680. package/src/content/fields/nestable/FieldContent/TextContent.ts +0 -49
  681. package/src/content/fields/nestable/FieldContent/TimestampContent.ts +0 -49
  682. package/src/content/fields/nestable/FieldContent/common.ts +0 -1
  683. package/src/content/fields/nestable/FieldContent/index.ts +0 -40
  684. package/src/content/fields/nestable/GeoPointContent.ts +0 -48
  685. package/src/content/fields/nestable/ImageContent.ts +0 -196
  686. package/src/content/fields/nestable/IntegrationFieldContent.ts +0 -51
  687. package/src/content/fields/nestable/LinkContent.ts +0 -651
  688. package/src/content/fields/nestable/NestableContent.ts +0 -241
  689. package/src/content/fields/nestable/RepeatableContent.ts +0 -224
  690. package/src/content/fields/nestable/RichTextContent/Blocks.ts +0 -238
  691. package/src/content/fields/nestable/RichTextContent/index.ts +0 -42
  692. package/src/content/fields/nestable/SeparatorContent.ts +0 -34
  693. package/src/content/fields/nestable/TableContent.ts +0 -234
  694. package/src/content/fields/nestable/index.ts +0 -12
  695. package/src/content/fields/slices/Slice/CompositeSliceContent.ts +0 -293
  696. package/src/content/fields/slices/Slice/RepeatableContent.ts +0 -29
  697. package/src/content/fields/slices/Slice/SharedSliceContent.ts +0 -305
  698. package/src/content/fields/slices/Slice/SimpleSliceContent.ts +0 -180
  699. package/src/content/fields/slices/Slice/SlicePrimaryContent.ts +0 -40
  700. package/src/content/fields/slices/Slice/index.ts +0 -52
  701. package/src/content/fields/slices/SliceItem.ts +0 -184
  702. package/src/content/fields/slices/SlicesContent.ts +0 -677
  703. package/src/content/fields/slices/index.ts +0 -3
  704. package/src/content/fields/withDefaultValues.ts +0 -119
  705. package/src/content/helpers.ts +0 -25
  706. package/src/content/index.ts +0 -4
  707. package/src/content/utils.ts +0 -145
  708. package/src/customtypes/CustomType.ts +0 -280
  709. package/src/customtypes/Section.ts +0 -98
  710. package/src/customtypes/diff/Variation.ts +0 -167
  711. package/src/customtypes/diff/Widgets.ts +0 -17
  712. package/src/customtypes/diff/index.ts +0 -4
  713. package/src/customtypes/index.ts +0 -4
  714. package/src/customtypes/widgets/Group.ts +0 -120
  715. package/src/customtypes/widgets/UID.ts +0 -27
  716. package/src/customtypes/widgets/Widget.ts +0 -83
  717. package/src/customtypes/widgets/index.ts +0 -6
  718. package/src/customtypes/widgets/nestable/BooleanField.ts +0 -29
  719. package/src/customtypes/widgets/nestable/Color.ts +0 -25
  720. package/src/customtypes/widgets/nestable/Date.ts +0 -27
  721. package/src/customtypes/widgets/nestable/Embed.ts +0 -27
  722. package/src/customtypes/widgets/nestable/GeoPoint.ts +0 -25
  723. package/src/customtypes/widgets/nestable/Image.ts +0 -39
  724. package/src/customtypes/widgets/nestable/IntegrationField.ts +0 -26
  725. package/src/customtypes/widgets/nestable/Link.ts +0 -313
  726. package/src/customtypes/widgets/nestable/NestableWidget.ts +0 -40
  727. package/src/customtypes/widgets/nestable/Number.ts +0 -30
  728. package/src/customtypes/widgets/nestable/Range.ts +0 -30
  729. package/src/customtypes/widgets/nestable/RichText.ts +0 -215
  730. package/src/customtypes/widgets/nestable/Select.ts +0 -34
  731. package/src/customtypes/widgets/nestable/Separator.ts +0 -24
  732. package/src/customtypes/widgets/nestable/Table.ts +0 -38
  733. package/src/customtypes/widgets/nestable/Text.ts +0 -27
  734. package/src/customtypes/widgets/nestable/Timestamp.ts +0 -27
  735. package/src/customtypes/widgets/nestable/index.ts +0 -17
  736. package/src/customtypes/widgets/shared/ImageConstraint.ts +0 -41
  737. package/src/customtypes/widgets/shared/index.ts +0 -1
  738. package/src/customtypes/widgets/slices/CompositeSlice.ts +0 -79
  739. package/src/customtypes/widgets/slices/LegacySlice.ts +0 -15
  740. package/src/customtypes/widgets/slices/SharedSlice.ts +0 -152
  741. package/src/customtypes/widgets/slices/SharedSliceRef.ts +0 -10
  742. package/src/customtypes/widgets/slices/Slice.ts +0 -7
  743. package/src/customtypes/widgets/slices/SlicePrimaryWidget.ts +0 -12
  744. package/src/customtypes/widgets/slices/Slices.ts +0 -184
  745. package/src/customtypes/widgets/slices/SlicesTypes.ts +0 -11
  746. package/src/customtypes/widgets/slices/index.ts +0 -8
  747. package/src/utils/Arrays.ts +0 -12
  748. package/src/utils/DocumentId.ts +0 -8
  749. package/src/utils/Fields.ts +0 -4
  750. package/src/utils/Objects.ts +0 -53
  751. package/src/utils/index.ts +0 -4
  752. package/src/validators/BasicTypes.ts +0 -55
  753. package/src/validators/DateFromString.ts +0 -19
  754. package/src/validators/DateFromStringOrNumber.ts +0 -17
  755. package/src/validators/DateFromTsMs.ts +0 -17
  756. package/src/validators/DefaultOrElse.ts +0 -24
  757. package/src/validators/IntFromNumber.ts +0 -22
  758. package/src/validators/IntFromPixels.ts +0 -32
  759. package/src/validators/NonEmptyString.ts +0 -8
  760. package/src/validators/NonEmptyStringOrNull.ts +0 -22
  761. package/src/validators/NumberOrNull.ts +0 -5
  762. package/src/validators/NumberRange.ts +0 -51
  763. package/src/validators/StringFromBoolean.ts +0 -19
  764. package/src/validators/StringFromNumber.ts +0 -19
  765. package/src/validators/StringOrNull.ts +0 -5
  766. package/src/validators/TrimmedString.ts +0 -33
  767. package/src/validators/function.ts +0 -115
  768. package/src/validators/index.ts +0 -15
  769. /package/src/{customtypes/diff/Changes.ts → model/diff/changes.ts} +0 -0
@@ -0,0 +1,15 @@
1
+ import { z } from "zod/mini"
2
+
3
+ const BooleanConfigSchema = z.object({
4
+ label: z.nullish(z.string()),
5
+ default_value: z.optional(z.boolean()),
6
+ placeholder_true: z.optional(z.string()),
7
+ placeholder_false: z.optional(z.string()),
8
+ })
9
+
10
+ export const BooleanModelSchema = z.object({
11
+ type: z.literal("Boolean"),
12
+ config: z.optional(BooleanConfigSchema),
13
+ })
14
+
15
+ export type BooleanModel = z.infer<typeof BooleanModelSchema>
@@ -0,0 +1,14 @@
1
+ import { z } from "zod/mini"
2
+
3
+ const ColorConfigSchema = z.object({
4
+ label: z.nullish(z.string()),
5
+ placeholder: z.optional(z.string()),
6
+ })
7
+
8
+ export const ColorModelSchema = z.object({
9
+ type: z.literal("Color"),
10
+ fieldset: z.nullish(z.string()),
11
+ config: z.optional(ColorConfigSchema),
12
+ })
13
+
14
+ export type ColorModel = z.infer<typeof ColorModelSchema>
@@ -0,0 +1,26 @@
1
+ import { z } from "zod/mini"
2
+
3
+ import { DynamicSectionModelSchema, StaticSectionModelSchema } from "./section"
4
+
5
+ // CustomTypeFormat - "page" | "custom"
6
+ export const CustomTypeFormatSchema = z.enum(["page", "custom"])
7
+ export type CustomTypeFormat = z.infer<typeof CustomTypeFormatSchema>
8
+
9
+ // Factory to create CustomType schema with configurable section type
10
+ const createCustomTypeSchema = <T extends z.ZodMiniType>(sectionSchema: T) =>
11
+ z.object({
12
+ id: z.string(),
13
+ label: z.nullish(z.string()),
14
+ repeatable: z._default(z.boolean(), true),
15
+ json: z.record(z.string(), sectionSchema),
16
+ status: z._default(z.boolean(), true),
17
+ format: z._default(CustomTypeFormatSchema, "custom"),
18
+ })
19
+
20
+ // StaticCustomType - uses StaticSection (with full SharedSlice definitions)
21
+ export const StaticCustomTypeModelSchema = createCustomTypeSchema(StaticSectionModelSchema)
22
+ export type StaticCustomTypeModel = z.infer<typeof StaticCustomTypeModelSchema>
23
+
24
+ // CustomType (dynamic) - uses DynamicSection (with SharedSliceRef references)
25
+ export const CustomTypeModelSchema = createCustomTypeSchema(DynamicSectionModelSchema)
26
+ export type CustomTypeModel = z.infer<typeof CustomTypeModelSchema>
@@ -0,0 +1,15 @@
1
+ import { z } from "zod/mini"
2
+
3
+ const DateConfigSchema = z.object({
4
+ label: z.nullish(z.string()),
5
+ placeholder: z.optional(z.string()),
6
+ default: z.optional(z.string()),
7
+ })
8
+
9
+ export const DateModelSchema = z.object({
10
+ type: z.literal("Date"),
11
+ fieldset: z.nullish(z.string()),
12
+ config: z.optional(DateConfigSchema),
13
+ })
14
+
15
+ export type DateModel = z.infer<typeof DateModelSchema>
@@ -0,0 +1,4 @@
1
+ export * from "./changes"
2
+ export * from "./sharedSlice"
3
+ export * from "./variation"
4
+ export * from "./widgets"
@@ -1,11 +1,11 @@
1
- import { Arrays, Objects } from "../../utils"
2
- import type { SharedSlice, Variation } from "../widgets/slices"
3
- import { type DiffChange, DiffOperation } from "./Changes"
4
- import { VariationComparator, VariationDiff } from "./Variation"
1
+ import type { SharedSliceModel, SharedSliceModelVariation } from "../slice"
2
+ import { type DiffChange, DiffOperation } from "./changes"
3
+ import { isNotEmpty, toRecord, zipObjects } from "./utils"
4
+ import { type VariationDiff, VariationComparator } from "./variation"
5
5
 
6
- export type SliceMetadata = Omit<SharedSlice, "variations">
6
+ export type SliceMetadata = Omit<SharedSliceModel, "variations">
7
7
  export type SliceDiff = DiffChange<
8
- SharedSlice,
8
+ SharedSliceModel,
9
9
  Partial<
10
10
  SliceMetadata & {
11
11
  variations?: Partial<Record<string, VariationDiff>>
@@ -14,13 +14,13 @@ export type SliceDiff = DiffChange<
14
14
  >
15
15
 
16
16
  function compareSliceMeta(
17
- sliceA?: SharedSlice,
18
- sliceB?: SharedSlice,
17
+ sliceA?: SharedSliceModel,
18
+ sliceB?: SharedSliceModel,
19
19
  ): Partial<SliceMetadata> {
20
- const zippedSlices = Objects.zipObjects(sliceA, sliceB)
20
+ const zippedSlices = zipObjects(sliceA, sliceB)
21
21
 
22
22
  return Object.entries(zippedSlices).reduce((acc, [key, value]) => {
23
- if (key === `variations`) return acc
23
+ if (key === "variations") return acc
24
24
 
25
25
  if (value?.left === value?.right) return acc
26
26
  return { ...acc, [key]: value?.right }
@@ -28,7 +28,7 @@ function compareSliceMeta(
28
28
  }
29
29
 
30
30
  export const SliceComparator = {
31
- compare(sliceA?: SharedSlice, sliceB?: SharedSlice): SliceDiff | undefined {
31
+ compare(sliceA?: SharedSliceModel, sliceB?: SharedSliceModel): SliceDiff | undefined {
32
32
  if (!sliceA && sliceB)
33
33
  return {
34
34
  op: DiffOperation.Added,
@@ -41,9 +41,9 @@ export const SliceComparator = {
41
41
 
42
42
  const diffMeta = compareSliceMeta(sliceA, sliceB)
43
43
 
44
- const zippedSlices = Objects.zipObjects<Variation>(
45
- sliceA && Arrays.toRecord(sliceA.variations, (v) => v.id),
46
- sliceB && Arrays.toRecord(sliceB.variations, (v) => v.id),
44
+ const zippedSlices = zipObjects<SharedSliceModelVariation>(
45
+ sliceA && toRecord(sliceA.variations, (v) => v.id),
46
+ sliceB && toRecord(sliceB.variations, (v) => v.id),
47
47
  )
48
48
 
49
49
  const diffVariations = Object.entries(zippedSlices).reduce<
@@ -61,12 +61,10 @@ export const SliceComparator = {
61
61
 
62
62
  const diffSlice = {
63
63
  ...diffMeta,
64
- ...(Objects.isNotEmpty(diffVariations)
65
- ? { variations: diffVariations }
66
- : {}),
64
+ ...(isNotEmpty(diffVariations) ? { variations: diffVariations } : {}),
67
65
  }
68
66
 
69
- if (Objects.isNotEmpty(diffSlice)) {
67
+ if (isNotEmpty(diffSlice)) {
70
68
  return {
71
69
  op: DiffOperation.Updated,
72
70
  value: diffSlice,
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Zips two objects together by their keys, creating an object with
3
+ * both left and right values for each key.
4
+ */
5
+ export function zipObjects<A, B = A>(
6
+ objLeft?: Partial<Record<string, A>> | undefined,
7
+ objRight?: Partial<Record<string, B>> | undefined,
8
+ ): Partial<Record<string, { left?: A | undefined; right?: B | undefined }>> {
9
+ const allKeys = [...new Set(Object.keys(objLeft || {}).concat(Object.keys(objRight || {})))]
10
+
11
+ return allKeys.reduce<Record<string, { left?: A | undefined; right?: B | undefined }>>(
12
+ (acc, key) => {
13
+ const left = objLeft?.[key]
14
+ const right = objRight?.[key]
15
+ return {
16
+ ...acc,
17
+ [key]: { left, right },
18
+ }
19
+ },
20
+ {},
21
+ )
22
+ }
23
+
24
+ /**
25
+ * Returns true if the object has at least one key.
26
+ */
27
+ export function isNotEmpty<A extends object>(obj: A): boolean {
28
+ return Boolean(Object.keys(obj).length)
29
+ }
30
+
31
+ /**
32
+ * Converts an array to a record using the provided key function.
33
+ */
34
+ export function toRecord<A extends object>(
35
+ arr: ReadonlyArray<A>,
36
+ key: (obj: A) => string,
37
+ ): Record<string, A> {
38
+ return arr.reduce<Record<string, A>>((acc, entry) => {
39
+ const k = key(entry)
40
+ return {
41
+ ...acc,
42
+ [k]: entry,
43
+ }
44
+ }, {})
45
+ }
@@ -0,0 +1,155 @@
1
+ import type { GroupModel } from "../group"
2
+ import { GroupFieldType } from "../group"
3
+ import type { NestableModel } from "../nestable"
4
+ import type { SharedSliceModelVariation } from "../slice"
5
+ import { type DiffChange, DiffOperation } from "./changes"
6
+ import { isNotEmpty, zipObjects } from "./utils"
7
+ import type {
8
+ GroupWidgetWithFieldsDiff,
9
+ NestableWidgetDiff,
10
+ SlicePrimaryWidgetDiff,
11
+ } from "./widgets"
12
+
13
+ export type VariationMetadata = Omit<SharedSliceModelVariation, "primary" | "items">
14
+ export type VariationDiff = DiffChange<
15
+ SharedSliceModelVariation,
16
+ Partial<VariationMetadata> & {
17
+ primary?: Record<string, SlicePrimaryWidgetDiff>
18
+ items?: Record<string, NestableWidgetDiff>
19
+ }
20
+ >
21
+
22
+ function compareVariationMeta(
23
+ variationA?: SharedSliceModelVariation,
24
+ variationB?: SharedSliceModelVariation,
25
+ ): Partial<VariationMetadata> {
26
+ const zippedVariations = zipObjects(variationA, variationB)
27
+
28
+ return Object.entries(zippedVariations).reduce((acc, [key, value]) => {
29
+ if (key === "primary" || key === "items") return acc
30
+
31
+ if (value?.left === value?.right) return acc
32
+ return { ...acc, [key]: value?.right }
33
+ }, {})
34
+ }
35
+
36
+ function compareWidgets<TWidget extends NestableModel | GroupModel>(
37
+ widgetsA?: { [key: string]: TWidget },
38
+ widgetsB?: { [key: string]: TWidget },
39
+ ):
40
+ | Record<string, TWidget extends GroupModel ? SlicePrimaryWidgetDiff : NestableWidgetDiff>
41
+ | undefined {
42
+ const zippedWidgets = zipObjects(widgetsA, widgetsB)
43
+
44
+ const diffWidgets = Object.entries(zippedWidgets).reduce((acc, [widgetKey, widgetValue]) => {
45
+ if (JSON.stringify(widgetValue?.left) === JSON.stringify(widgetValue?.right)) return acc
46
+
47
+ const changes = (() => {
48
+ if (!widgetValue?.left && !widgetValue?.right) return
49
+
50
+ if (widgetValue?.left && !widgetValue.right) {
51
+ return {
52
+ op: DiffOperation.Removed,
53
+ }
54
+ }
55
+
56
+ if (!widgetValue?.left && widgetValue?.right) {
57
+ if (widgetValue.right?.type === GroupFieldType) {
58
+ const group: GroupWidgetWithFieldsDiff = {
59
+ ...widgetValue.right,
60
+ config: {
61
+ ...widgetValue.right.config,
62
+ fields: {},
63
+ },
64
+ }
65
+ // On added groups, this basically marks all fields in the group as added
66
+ group.config.fields = compareWidgets(undefined, widgetValue.right.config?.fields) || {}
67
+
68
+ return {
69
+ op: DiffOperation.Added,
70
+ value: group,
71
+ }
72
+ }
73
+
74
+ return {
75
+ op: DiffOperation.Added,
76
+ value: widgetValue.right,
77
+ }
78
+ }
79
+
80
+ if (widgetValue.right?.type === GroupFieldType) {
81
+ const group: GroupWidgetWithFieldsDiff = {
82
+ ...widgetValue.right,
83
+ config: {
84
+ ...widgetValue.right.config,
85
+ fields: {},
86
+ },
87
+ }
88
+ // On updated groups, this also compares the fields inside the group
89
+ group.config.fields =
90
+ compareWidgets(
91
+ widgetValue.left?.type === GroupFieldType
92
+ ? widgetValue.left?.config?.fields
93
+ : undefined,
94
+ widgetValue.right.config?.fields,
95
+ ) || {}
96
+
97
+ return {
98
+ op: DiffOperation.Updated,
99
+ value: group,
100
+ }
101
+ }
102
+
103
+ return {
104
+ op: DiffOperation.Updated,
105
+ value: widgetValue.right,
106
+ }
107
+ })()
108
+
109
+ if (!changes) return acc
110
+
111
+ return {
112
+ ...acc,
113
+ [widgetKey]: changes,
114
+ }
115
+ }, {})
116
+
117
+ return isNotEmpty(diffWidgets) ? diffWidgets : undefined
118
+ }
119
+
120
+ export const VariationComparator = {
121
+ compare(
122
+ variationA?: SharedSliceModelVariation,
123
+ variationB?: SharedSliceModelVariation,
124
+ ): VariationDiff | undefined {
125
+ if (variationA && !variationB)
126
+ return {
127
+ op: DiffOperation.Removed,
128
+ }
129
+ if (!variationA && variationB) {
130
+ return {
131
+ op: DiffOperation.Added,
132
+ value: variationB,
133
+ }
134
+ }
135
+
136
+ const diffMeta = compareVariationMeta(variationA, variationB)
137
+
138
+ const diffPrimary = compareWidgets(variationA?.primary, variationB?.primary)
139
+ const diffItems = compareWidgets(variationA?.items, variationB?.items)
140
+
141
+ const diffVariation = {
142
+ ...diffMeta,
143
+ ...(diffPrimary ? { primary: diffPrimary } : {}),
144
+ ...(diffItems ? { items: diffItems } : {}),
145
+ }
146
+
147
+ if (isNotEmpty(diffVariation)) {
148
+ return {
149
+ op: DiffOperation.Updated,
150
+ value: diffVariation,
151
+ }
152
+ }
153
+ return undefined
154
+ },
155
+ }
@@ -0,0 +1,15 @@
1
+ import type { GroupModel } from "../group"
2
+ import type { NestableModel } from "../nestable"
3
+ import type { DiffChange } from "./changes"
4
+
5
+ export type NestableWidgetDiff = DiffChange<NestableModel, NestableModel>
6
+
7
+ export type GroupWidgetWithFieldsDiff = Omit<GroupModel, "config"> & {
8
+ config: Omit<NonNullable<GroupModel["config"]>, "fields"> & {
9
+ fields?: Record<string, GroupWidgetDiff | NestableWidgetDiff>
10
+ }
11
+ }
12
+
13
+ export type GroupWidgetDiff = DiffChange<GroupWidgetWithFieldsDiff, GroupWidgetWithFieldsDiff>
14
+
15
+ export type SlicePrimaryWidgetDiff = NestableWidgetDiff | GroupWidgetDiff
@@ -0,0 +1,15 @@
1
+ import { z } from "zod/mini"
2
+
3
+ const EmbedConfigSchema = z.object({
4
+ label: z.nullish(z.string()),
5
+ placeholder: z.optional(z.string()),
6
+ useAsTitle: z.optional(z.boolean()),
7
+ })
8
+
9
+ export const EmbedModelSchema = z.object({
10
+ type: z.literal("Embed"),
11
+ fieldset: z.nullish(z.string()),
12
+ config: z.optional(EmbedConfigSchema),
13
+ })
14
+
15
+ export type EmbedModel = z.infer<typeof EmbedModelSchema>
@@ -0,0 +1,13 @@
1
+ import { z } from "zod/mini"
2
+
3
+ const GeoPointConfigSchema = z.object({
4
+ label: z.nullish(z.string()),
5
+ })
6
+
7
+ export const GeoPointModelSchema = z.object({
8
+ type: z.literal("GeoPoint"),
9
+ fieldset: z.nullish(z.string()),
10
+ config: z.optional(GeoPointConfigSchema),
11
+ })
12
+
13
+ export type GeoPointModel = z.infer<typeof GeoPointModelSchema>
@@ -0,0 +1,39 @@
1
+ import { z } from "zod/mini"
2
+
3
+ import { WidgetKeySchema } from "../common/widgetKey"
4
+ import type { NestableModel } from "./nestable"
5
+ import { NestableModelSchema } from "./nestable"
6
+
7
+ export const GroupFieldType = "Group"
8
+
9
+ // Factory to create group config schema with configurable widget types
10
+ const createGroupConfigSchema = <TWidgets extends z.ZodMiniType>(widgets: TWidgets) =>
11
+ z.object({
12
+ label: z.nullish(z.string()),
13
+ repeat: z.optional(z.boolean()),
14
+ fields: z.optional(z.record(WidgetKeySchema, widgets)),
15
+ })
16
+
17
+ // Factory to create group schema with configurable widget types
18
+ const createGroupSchema = <TWidgets extends z.ZodMiniType>(widgets: TWidgets) =>
19
+ z.object({
20
+ type: z.literal(GroupFieldType),
21
+ fieldset: z.nullish(z.string()),
22
+ icon: z.optional(z.string()),
23
+ description: z.optional(z.string()),
24
+ config: z.optional(createGroupConfigSchema(widgets)),
25
+ })
26
+
27
+ // NestedGroup - only allows Nestable in fields (no further nesting)
28
+ export const NestedGroupModelSchema = createGroupSchema(NestableModelSchema)
29
+
30
+ export type NestedGroupModel = z.infer<typeof NestedGroupModelSchema>
31
+
32
+ // Group - allows Nestable | NestedGroup in fields (max 2 levels of nesting)
33
+ export const GroupModelSchema = createGroupSchema(
34
+ z.union([NestableModelSchema, NestedGroupModelSchema]) as z.ZodMiniType<
35
+ NestableModel | NestedGroupModel
36
+ >,
37
+ )
38
+
39
+ export type GroupModel = z.infer<typeof GroupModelSchema>
@@ -0,0 +1,54 @@
1
+ import { z } from "zod/mini"
2
+
3
+ /**
4
+ * SideConstraint accepts multiple input formats and normalizes to number | null:
5
+ * - Integer values
6
+ * - String integers (e.g., "100")
7
+ * - Pixel strings (e.g., "100px")
8
+ * - "auto" or "" → null
9
+ * - null
10
+ */
11
+ export const SideConstraintSchema: z.ZodMiniType<number | null> = z.union([
12
+ z.pipe(
13
+ z.literal("auto"),
14
+ z.transform(() => null),
15
+ ),
16
+ z.pipe(
17
+ z.literal(""),
18
+ z.transform(() => null),
19
+ ),
20
+ z.null(),
21
+ z.number().check(z.int()),
22
+ z.pipe(
23
+ z.string(),
24
+ z.transform((s: string) => parseInt(s.replace("px", ""), 10)),
25
+ ),
26
+ ])
27
+
28
+ export const ImageConstraintSchema = z.object({
29
+ width: z.optional(SideConstraintSchema),
30
+ height: z.optional(SideConstraintSchema),
31
+ })
32
+
33
+ export type ImageConstraint = z.infer<typeof ImageConstraintSchema>
34
+
35
+ const ThumbnailSchema = z.object({
36
+ name: z.string(),
37
+ width: z.optional(SideConstraintSchema),
38
+ height: z.optional(SideConstraintSchema),
39
+ })
40
+
41
+ const ImageConfigSchema = z.object({
42
+ label: z.nullish(z.string()),
43
+ placeholder: z.optional(z.string()),
44
+ constraint: z.optional(ImageConstraintSchema),
45
+ thumbnails: z.optional(z.array(ThumbnailSchema)),
46
+ })
47
+
48
+ export const ImageModelSchema = z.object({
49
+ type: z.literal("Image"),
50
+ fieldset: z.nullish(z.string()),
51
+ config: z.optional(ImageConfigSchema),
52
+ })
53
+
54
+ export type ImageModel = z.infer<typeof ImageModelSchema>
@@ -0,0 +1,15 @@
1
+ import { z } from "zod/mini"
2
+
3
+ const IntegrationFieldConfigSchema = z.object({
4
+ label: z.nullish(z.string()),
5
+ placeholder: z.optional(z.string()),
6
+ catalog: z.optional(z.string()),
7
+ })
8
+
9
+ export const IntegrationFieldModelSchema = z.object({
10
+ type: z.literal("IntegrationFields"),
11
+ fieldset: z.nullish(z.string()),
12
+ config: z.optional(IntegrationFieldConfigSchema),
13
+ })
14
+
15
+ export type IntegrationFieldModel = z.infer<typeof IntegrationFieldModelSchema>
@@ -0,0 +1,141 @@
1
+ import { z } from "zod/mini"
2
+
3
+ // Accepts string | string[], normalizes string to [string]
4
+ const MasksArrayStringSchema = z.pipe(
5
+ z.union([z.array(z.string()), z.string()]),
6
+ z.transform((val): string[] => (typeof val === "string" ? [val] : val)),
7
+ )
8
+
9
+ // --- CustomTypes hierarchy (field selection in content relationship fields) ---
10
+
11
+ // Level 2
12
+
13
+ const noDuplicateStrings = z.refine(
14
+ (arr) => new Set(arr as string[]).size === (arr as string[]).length,
15
+ "Fields have duplicates.",
16
+ )
17
+
18
+ const CustomTypeLevel2FieldGroupFieldsSchema = z.array(z.string()).check(noDuplicateStrings)
19
+
20
+ const CustomTypeLevel2FieldSchema = z.union([
21
+ z.object({ id: z.string(), fields: CustomTypeLevel2FieldGroupFieldsSchema }),
22
+ z.string(),
23
+ ])
24
+
25
+ const noDuplicateIds = (items: unknown) => {
26
+ const arr = items as { id: string }[] | string[]
27
+ const ids = new Set(arr.map((item) => (typeof item === "string" ? item : item.id)))
28
+ return ids.size === arr.length
29
+ }
30
+
31
+ const CustomTypeLevel2FieldsSchema = z
32
+ .array(CustomTypeLevel2FieldSchema)
33
+ .check(z.refine(noDuplicateIds, "Fields have duplicates."))
34
+
35
+ const CustomTypeLevel2Schema = z.union([
36
+ z.string(),
37
+ z.object({ id: z.string(), fields: CustomTypeLevel2FieldsSchema }),
38
+ ])
39
+
40
+ const CustomTypesLevel2Schema = z
41
+ .array(CustomTypeLevel2Schema)
42
+ .check(z.refine(noDuplicateIds, "Custom types have duplicates."))
43
+
44
+ // Level 1
45
+
46
+ const CustomTypeLevel1FieldCustomTypesSchema = z.object({
47
+ id: z.string(),
48
+ customtypes: CustomTypesLevel2Schema,
49
+ })
50
+
51
+ const CustomTypeLevel1FieldGroupFieldSchema = z.union([
52
+ CustomTypeLevel1FieldCustomTypesSchema,
53
+ z.string(),
54
+ ])
55
+
56
+ const CustomTypeLevel1FieldGroupFieldsSchema = z
57
+ .array(CustomTypeLevel1FieldGroupFieldSchema)
58
+ .check(z.refine(noDuplicateIds, "Fields have duplicates."))
59
+
60
+ const CustomTypeLevel1FieldSchema = z.union([
61
+ z.object({
62
+ id: z.string(),
63
+ fields: CustomTypeLevel1FieldGroupFieldsSchema,
64
+ }),
65
+ CustomTypeLevel1FieldCustomTypesSchema,
66
+ z.string(),
67
+ ])
68
+
69
+ const CustomTypeLevel1FieldsSchema = z
70
+ .array(CustomTypeLevel1FieldSchema)
71
+ .check(z.refine(noDuplicateIds, "Fields have duplicates."))
72
+
73
+ const CustomTypeLevel1Schema = z.union([
74
+ z.string(),
75
+ z.object({ id: z.string(), fields: CustomTypeLevel1FieldsSchema }),
76
+ ])
77
+
78
+ const CustomTypesSchema = z.array(CustomTypeLevel1Schema).check(({ value, issues }) => {
79
+ const cts = value as ({ id: string } | string)[]
80
+ const push = (message: string) => issues.push({ code: "custom", input: value, message })
81
+ const strings = new Set<string>()
82
+ const objects = new Set<string>()
83
+ for (const ct of cts) {
84
+ let failed = false
85
+ if (typeof ct === "string") {
86
+ failed = objects.has(ct)
87
+ strings.add(ct)
88
+ } else {
89
+ const { id } = ct
90
+ failed = strings.has(id) || objects.has(id)
91
+ objects.add(id)
92
+ }
93
+ if (failed) {
94
+ push("Custom types have duplicates.")
95
+ return
96
+ }
97
+ }
98
+ if (objects.size > 1) {
99
+ push("Cannot have multiple custom types with fields selection.")
100
+ return
101
+ }
102
+ if (strings.size > 0 && objects.size > 0) {
103
+ push("Cannot mix custom types as strings and objects with fields.")
104
+ }
105
+ })
106
+
107
+ // --- Select with fallback to null ---
108
+
109
+ const SelectWithFallbackSchema = z.pipe(
110
+ z.unknown(),
111
+ z.transform((val): "media" | "document" | "web" | null => {
112
+ if (val === "media" || val === "document" || val === "web" || val === null) {
113
+ return val
114
+ }
115
+ return null
116
+ }),
117
+ )
118
+
119
+ // --- LinkConfig and Link ---
120
+
121
+ const LinkConfigSchema = z.object({
122
+ label: z.nullish(z.string()),
123
+ useAsTitle: z.optional(z.boolean()),
124
+ placeholder: z.optional(z.string()),
125
+ select: z.optional(SelectWithFallbackSchema),
126
+ customtypes: z.optional(CustomTypesSchema),
127
+ masks: z.optional(MasksArrayStringSchema),
128
+ tags: z.optional(MasksArrayStringSchema),
129
+ allowTargetBlank: z.optional(z.boolean()),
130
+ allowText: z.optional(z.boolean()),
131
+ repeat: z.optional(z.boolean()),
132
+ variants: z.optional(z.array(z.string())),
133
+ })
134
+
135
+ export const LinkModelSchema = z.object({
136
+ type: z.literal("Link"),
137
+ fieldset: z.nullish(z.string()),
138
+ config: z.optional(LinkConfigSchema),
139
+ })
140
+
141
+ export type LinkModel = z.infer<typeof LinkModelSchema>