@prismicio/types-internal 3.17.0 → 4.0.0-canary.72def6d

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 (709) hide show
  1. package/README.md +41 -25
  2. package/dist/common/asset.d.ts +22 -0
  3. package/dist/common/asset.d.ts.map +1 -0
  4. package/dist/common/asset.js +21 -0
  5. package/dist/common/asset.js.map +1 -0
  6. package/dist/common/embed.d.ts +21 -0
  7. package/dist/common/embed.d.ts.map +1 -0
  8. package/dist/common/embed.js +20 -0
  9. package/dist/common/embed.js.map +1 -0
  10. package/dist/common/hexaColorCode.d.ts +8 -0
  11. package/dist/common/hexaColorCode.d.ts.map +1 -0
  12. package/dist/common/hexaColorCode.js +8 -0
  13. package/dist/common/hexaColorCode.js.map +1 -0
  14. package/dist/common/nonEmptyString.d.ts +8 -0
  15. package/dist/common/nonEmptyString.d.ts.map +1 -0
  16. package/dist/common/nonEmptyString.js +7 -0
  17. package/dist/common/nonEmptyString.js.map +1 -0
  18. package/dist/common/widgetKey.d.ts +8 -0
  19. package/dist/common/widgetKey.d.ts.map +1 -0
  20. package/dist/common/widgetKey.js +8 -0
  21. package/dist/common/widgetKey.js.map +1 -0
  22. package/dist/content/boolean.d.ts +11 -0
  23. package/dist/content/boolean.d.ts.map +1 -0
  24. package/dist/content/boolean.js +11 -0
  25. package/dist/content/boolean.js.map +1 -0
  26. package/dist/content/codec/boolean.js +31 -0
  27. package/dist/content/codec/boolean.js.map +1 -0
  28. package/dist/content/codec/document.js +49 -0
  29. package/dist/content/codec/document.js.map +1 -0
  30. package/dist/content/codec/embed.js +42 -0
  31. package/dist/content/codec/embed.js.map +1 -0
  32. package/dist/content/codec/empty.js +35 -0
  33. package/dist/content/codec/empty.js.map +1 -0
  34. package/dist/content/codec/field.js +41 -0
  35. package/dist/content/codec/field.js.map +1 -0
  36. package/dist/content/codec/geopoint.js +32 -0
  37. package/dist/content/codec/geopoint.js.map +1 -0
  38. package/dist/content/codec/group.js +127 -0
  39. package/dist/content/codec/group.js.map +1 -0
  40. package/dist/content/codec/image.js +44 -0
  41. package/dist/content/codec/image.js.map +1 -0
  42. package/dist/content/codec/integrationField.js +31 -0
  43. package/dist/content/codec/integrationField.js.map +1 -0
  44. package/dist/content/codec/legacyContentCtx.d.ts +72 -0
  45. package/dist/content/codec/legacyContentCtx.d.ts.map +1 -0
  46. package/dist/content/codec/legacyContentCtx.js +76 -0
  47. package/dist/content/codec/legacyContentCtx.js.map +1 -0
  48. package/dist/content/codec/link.js +93 -0
  49. package/dist/content/codec/link.js.map +1 -0
  50. package/dist/content/codec/nestable.js +91 -0
  51. package/dist/content/codec/nestable.js.map +1 -0
  52. package/dist/content/codec/repeatable.js +56 -0
  53. package/dist/content/codec/repeatable.js.map +1 -0
  54. package/dist/content/codec/richText.js +87 -0
  55. package/dist/content/codec/richText.js.map +1 -0
  56. package/dist/content/codec/separator.js +26 -0
  57. package/dist/content/codec/separator.js.map +1 -0
  58. package/dist/content/codec/slice.js +220 -0
  59. package/dist/content/codec/slice.js.map +1 -0
  60. package/dist/content/codec/slices.js +106 -0
  61. package/dist/content/codec/slices.js.map +1 -0
  62. package/dist/content/codec/table.js +56 -0
  63. package/dist/content/codec/table.js.map +1 -0
  64. package/dist/content/codec/uid.js +31 -0
  65. package/dist/content/codec/uid.js.map +1 -0
  66. package/dist/content/codec/widget.js +39 -0
  67. package/dist/content/codec/widget.js.map +1 -0
  68. package/dist/content/document.d.ts +3026 -0
  69. package/dist/content/document.d.ts.map +1 -0
  70. package/dist/content/document.js +9 -0
  71. package/dist/content/document.js.map +1 -0
  72. package/dist/content/embed.d.ts +24 -0
  73. package/dist/content/embed.d.ts.map +1 -0
  74. package/dist/content/embed.js +12 -0
  75. package/dist/content/embed.js.map +1 -0
  76. package/dist/content/empty.d.ts +11 -0
  77. package/dist/content/empty.d.ts.map +1 -0
  78. package/dist/content/empty.js +11 -0
  79. package/dist/content/empty.js.map +1 -0
  80. package/dist/content/field.d.ts +78 -0
  81. package/dist/content/field.d.ts.map +1 -0
  82. package/dist/content/field.js +52 -0
  83. package/dist/content/field.js.map +1 -0
  84. package/dist/content/geopoint.d.ts +14 -0
  85. package/dist/content/geopoint.d.ts.map +1 -0
  86. package/dist/content/geopoint.js +9 -0
  87. package/dist/content/geopoint.js.map +1 -0
  88. package/dist/content/group.d.ts +18 -0
  89. package/dist/content/group.d.ts.map +1 -0
  90. package/dist/content/group.js +19 -0
  91. package/dist/content/group.js.map +1 -0
  92. package/dist/content/image.d.ts +52 -0
  93. package/dist/content/image.d.ts.map +1 -0
  94. package/dist/content/image.js +10 -0
  95. package/dist/content/image.js.map +1 -0
  96. package/dist/content/integrationField.d.ts +11 -0
  97. package/dist/content/integrationField.d.ts.map +1 -0
  98. package/dist/content/integrationField.js +11 -0
  99. package/dist/content/integrationField.js.map +1 -0
  100. package/dist/content/legacy/boolean.js +7 -0
  101. package/dist/content/legacy/boolean.js.map +1 -0
  102. package/dist/content/legacy/document.js +15 -0
  103. package/dist/content/legacy/document.js.map +1 -0
  104. package/dist/content/legacy/embed.js +23 -0
  105. package/dist/content/legacy/embed.js.map +1 -0
  106. package/dist/content/legacy/empty.js +7 -0
  107. package/dist/content/legacy/empty.js.map +1 -0
  108. package/dist/content/legacy/field.js +7 -0
  109. package/dist/content/legacy/field.js.map +1 -0
  110. package/dist/content/legacy/geopoint.js +10 -0
  111. package/dist/content/legacy/geopoint.js.map +1 -0
  112. package/dist/content/legacy/group.js +10 -0
  113. package/dist/content/legacy/group.js.map +1 -0
  114. package/dist/content/legacy/image.d.ts +1 -0
  115. package/dist/content/legacy/image.js +33 -0
  116. package/dist/content/legacy/image.js.map +1 -0
  117. package/dist/content/legacy/integrationField.js +7 -0
  118. package/dist/content/legacy/integrationField.js.map +1 -0
  119. package/dist/content/legacy/link.js +88 -0
  120. package/dist/content/legacy/link.js.map +1 -0
  121. package/dist/content/legacy/nestable.js +32 -0
  122. package/dist/content/legacy/nestable.js.map +1 -0
  123. package/dist/content/legacy/repeatable.js +13 -0
  124. package/dist/content/legacy/repeatable.js.map +1 -0
  125. package/dist/content/legacy/richText.js +100 -0
  126. package/dist/content/legacy/richText.js.map +1 -0
  127. package/dist/content/legacy/separator.js +7 -0
  128. package/dist/content/legacy/separator.js.map +1 -0
  129. package/dist/content/legacy/slice.js +23 -0
  130. package/dist/content/legacy/slice.js.map +1 -0
  131. package/dist/content/legacy/slices.js +13 -0
  132. package/dist/content/legacy/slices.js.map +1 -0
  133. package/dist/content/legacy/table.js +19 -0
  134. package/dist/content/legacy/table.js.map +1 -0
  135. package/dist/content/legacy/uid.js +7 -0
  136. package/dist/content/legacy/uid.js.map +1 -0
  137. package/dist/content/link.d.ts +188 -0
  138. package/dist/content/link.d.ts.map +1 -0
  139. package/dist/content/link.js +50 -0
  140. package/dist/content/link.js.map +1 -0
  141. package/dist/content/nestable.d.ts +755 -0
  142. package/dist/content/nestable.d.ts.map +1 -0
  143. package/dist/content/nestable.js +38 -0
  144. package/dist/content/nestable.js.map +1 -0
  145. package/dist/content/repeatable.d.ts +192 -0
  146. package/dist/content/repeatable.d.ts.map +1 -0
  147. package/dist/content/repeatable.js +13 -0
  148. package/dist/content/repeatable.js.map +1 -0
  149. package/dist/content/richText.d.ts +141 -0
  150. package/dist/content/richText.d.ts.map +1 -0
  151. package/dist/content/richText.js +23 -0
  152. package/dist/content/richText.js.map +1 -0
  153. package/dist/content/separator.d.ts +10 -0
  154. package/dist/content/separator.d.ts.map +1 -0
  155. package/dist/content/separator.js +8 -0
  156. package/dist/content/separator.js.map +1 -0
  157. package/dist/content/slice.d.ts +4527 -0
  158. package/dist/content/slice.d.ts.map +1 -0
  159. package/dist/content/slice.js +27 -0
  160. package/dist/content/slice.js.map +1 -0
  161. package/dist/content/slices.d.ts +4536 -0
  162. package/dist/content/slices.d.ts.map +1 -0
  163. package/dist/content/slices.js +18 -0
  164. package/dist/content/slices.js.map +1 -0
  165. package/dist/content/table.d.ts +153 -0
  166. package/dist/content/table.d.ts.map +1 -0
  167. package/dist/content/table.js +13 -0
  168. package/dist/content/table.js.map +1 -0
  169. package/dist/content/uid.d.ts +11 -0
  170. package/dist/content/uid.d.ts.map +1 -0
  171. package/dist/content/uid.js +11 -0
  172. package/dist/content/uid.js.map +1 -0
  173. package/dist/content/widget.d.ts +3026 -0
  174. package/dist/content/widget.d.ts.map +1 -0
  175. package/dist/content/widget.js +16 -0
  176. package/dist/content/widget.js.map +1 -0
  177. package/dist/index.d.ts +50 -0
  178. package/dist/index.js +2 -0
  179. package/dist/io-ts.d.ts +68728 -0
  180. package/dist/io-ts.d.ts.map +1 -0
  181. package/dist/io-ts.js +215 -0
  182. package/dist/io-ts.js.map +1 -0
  183. package/dist/model/boolean.d.ts +16 -0
  184. package/dist/model/boolean.d.ts.map +1 -0
  185. package/dist/model/boolean.js +16 -0
  186. package/dist/model/boolean.js.map +1 -0
  187. package/dist/model/color.d.ts +15 -0
  188. package/dist/model/color.d.ts.map +1 -0
  189. package/dist/model/color.js +15 -0
  190. package/dist/model/color.js.map +1 -0
  191. package/dist/model/customType.d.ts +3357 -0
  192. package/dist/model/customType.d.ts.map +1 -0
  193. package/dist/model/customType.js +18 -0
  194. package/dist/model/customType.js.map +1 -0
  195. package/dist/model/date.d.ts +16 -0
  196. package/dist/model/date.d.ts.map +1 -0
  197. package/dist/model/date.js +16 -0
  198. package/dist/model/date.js.map +1 -0
  199. package/dist/model/embed.d.ts +16 -0
  200. package/dist/model/embed.d.ts.map +1 -0
  201. package/dist/model/embed.js +16 -0
  202. package/dist/model/embed.js.map +1 -0
  203. package/dist/model/geopoint.d.ts +14 -0
  204. package/dist/model/geopoint.d.ts.map +1 -0
  205. package/dist/model/geopoint.js +12 -0
  206. package/dist/model/geopoint.js.map +1 -0
  207. package/dist/model/group.d.ts +568 -0
  208. package/dist/model/group.d.ts.map +1 -0
  209. package/dist/model/group.js +23 -0
  210. package/dist/model/group.js.map +1 -0
  211. package/dist/model/image.d.ts +24 -0
  212. package/dist/model/image.d.ts.map +1 -0
  213. package/dist/model/image.js +41 -0
  214. package/dist/model/image.js.map +1 -0
  215. package/dist/model/integrationField.d.ts +16 -0
  216. package/dist/model/integrationField.d.ts.map +1 -0
  217. package/dist/model/integrationField.js +16 -0
  218. package/dist/model/integrationField.js.map +1 -0
  219. package/dist/model/link.d.ts +48 -0
  220. package/dist/model/link.d.ts.map +1 -0
  221. package/dist/model/link.js +94 -0
  222. package/dist/model/link.js.map +1 -0
  223. package/dist/model/nestable.d.ts +184 -0
  224. package/dist/model/nestable.d.ts.map +1 -0
  225. package/dist/model/nestable.js +40 -0
  226. package/dist/model/nestable.js.map +1 -0
  227. package/dist/model/number.d.ts +18 -0
  228. package/dist/model/number.d.ts.map +1 -0
  229. package/dist/model/number.js +19 -0
  230. package/dist/model/number.js.map +1 -0
  231. package/dist/model/range.d.ts +18 -0
  232. package/dist/model/range.d.ts.map +1 -0
  233. package/dist/model/range.js +19 -0
  234. package/dist/model/range.js.map +1 -0
  235. package/dist/model/richText.d.ts +28 -0
  236. package/dist/model/richText.d.ts.map +1 -0
  237. package/dist/model/richText.js +72 -0
  238. package/dist/model/richText.js.map +1 -0
  239. package/dist/model/section.d.ts +3337 -0
  240. package/dist/model/section.d.ts.map +1 -0
  241. package/dist/model/section.js +10 -0
  242. package/dist/model/section.js.map +1 -0
  243. package/dist/model/select.d.ts +17 -0
  244. package/dist/model/select.d.ts.map +1 -0
  245. package/dist/model/select.js +22 -0
  246. package/dist/model/select.js.map +1 -0
  247. package/dist/model/separator.d.ts +13 -0
  248. package/dist/model/separator.d.ts.map +1 -0
  249. package/dist/model/separator.js +11 -0
  250. package/dist/model/separator.js.map +1 -0
  251. package/dist/model/slice.d.ts +3681 -0
  252. package/dist/model/slice.d.ts.map +1 -0
  253. package/dist/model/slice.js +54 -0
  254. package/dist/model/slice.js.map +1 -0
  255. package/dist/model/slices.d.ts +2225 -0
  256. package/dist/model/slices.d.ts.map +1 -0
  257. package/dist/model/slices.js +29 -0
  258. package/dist/model/slices.js.map +1 -0
  259. package/dist/model/table.d.ts +13 -0
  260. package/dist/model/table.d.ts.map +1 -0
  261. package/dist/model/table.js +17 -0
  262. package/dist/model/table.js.map +1 -0
  263. package/dist/model/text.d.ts +16 -0
  264. package/dist/model/text.d.ts.map +1 -0
  265. package/dist/model/text.js +16 -0
  266. package/dist/model/text.js.map +1 -0
  267. package/dist/model/timestamp.d.ts +16 -0
  268. package/dist/model/timestamp.d.ts.map +1 -0
  269. package/dist/model/timestamp.js +16 -0
  270. package/dist/model/timestamp.js.map +1 -0
  271. package/dist/model/uid.d.ts +16 -0
  272. package/dist/model/uid.d.ts.map +1 -0
  273. package/dist/model/uid.js +16 -0
  274. package/dist/model/uid.js.map +1 -0
  275. package/dist/model/widget.d.ts +3360 -0
  276. package/dist/model/widget.d.ts.map +1 -0
  277. package/dist/model/widget.js +44 -0
  278. package/dist/model/widget.js.map +1 -0
  279. package/dist/zod4.d.ts +33521 -0
  280. package/dist/zod4.d.ts.map +1 -0
  281. package/dist/zod4.js +127 -0
  282. package/dist/zod4.js.map +1 -0
  283. package/package.json +54 -58
  284. package/src/common/asset.ts +29 -0
  285. package/src/common/embed.ts +27 -0
  286. package/src/common/hexaColorCode.ts +11 -0
  287. package/src/common/nonEmptyString.ts +9 -0
  288. package/src/common/widgetKey.ts +11 -0
  289. package/src/content/boolean.ts +23 -0
  290. package/src/content/codec/boolean.ts +38 -0
  291. package/src/content/codec/document.ts +60 -0
  292. package/src/content/codec/embed.ts +55 -0
  293. package/src/content/codec/empty.ts +49 -0
  294. package/src/content/codec/field.ts +96 -0
  295. package/src/content/codec/geopoint.ts +40 -0
  296. package/src/content/codec/group.ts +163 -0
  297. package/src/content/codec/image.ts +50 -0
  298. package/src/content/codec/integrationField.ts +38 -0
  299. package/src/content/{LegacyContentCtx.ts → codec/legacyContentCtx.ts} +25 -15
  300. package/src/content/codec/link.ts +103 -0
  301. package/src/content/codec/nestable.ts +146 -0
  302. package/src/content/codec/repeatable.ts +68 -0
  303. package/src/content/codec/richText.ts +113 -0
  304. package/src/content/codec/separator.ts +33 -0
  305. package/src/content/codec/slice.ts +274 -0
  306. package/src/content/codec/slices.ts +130 -0
  307. package/src/content/codec/table.ts +65 -0
  308. package/src/content/codec/uid.ts +36 -0
  309. package/src/content/codec/widget.ts +58 -0
  310. package/src/content/document.ts +8 -0
  311. package/src/content/embed.ts +12 -0
  312. package/src/content/empty.ts +10 -0
  313. package/src/content/field.ts +87 -0
  314. package/src/content/geopoint.ts +11 -0
  315. package/src/content/group.ts +96 -0
  316. package/src/content/image.ts +103 -0
  317. package/src/content/integrationField.ts +10 -0
  318. package/src/content/legacy/boolean.ts +5 -0
  319. package/src/content/legacy/document.ts +25 -0
  320. package/src/content/legacy/embed.ts +23 -0
  321. package/src/content/legacy/empty.ts +10 -0
  322. package/src/content/legacy/field.ts +8 -0
  323. package/src/content/legacy/geopoint.ts +10 -0
  324. package/src/content/legacy/group.ts +15 -0
  325. package/src/content/legacy/image.ts +43 -0
  326. package/src/content/legacy/integrationField.ts +5 -0
  327. package/src/content/legacy/link.ts +171 -0
  328. package/src/content/legacy/nestable.ts +31 -0
  329. package/src/content/legacy/repeatable.ts +20 -0
  330. package/src/content/legacy/richText.ts +165 -0
  331. package/src/content/legacy/separator.ts +6 -0
  332. package/src/content/legacy/slice.ts +37 -0
  333. package/src/content/legacy/slices.ts +17 -0
  334. package/src/content/legacy/table.ts +39 -0
  335. package/src/content/legacy/uid.ts +6 -0
  336. package/src/content/legacy/widget.ts +15 -0
  337. package/src/content/link.ts +131 -0
  338. package/src/content/nestable.ts +64 -0
  339. package/src/content/repeatable.ts +13 -0
  340. package/src/content/richText.ts +32 -0
  341. package/src/content/separator.ts +9 -0
  342. package/src/content/slice.ts +41 -0
  343. package/src/content/slices.ts +23 -0
  344. package/src/content/table.ts +14 -0
  345. package/src/content/uid.ts +10 -0
  346. package/src/content/utils.ts +37 -105
  347. package/src/content/widget.ts +17 -0
  348. package/src/content/{fields/withDefaultValues.ts → withDefaultValues.ts} +34 -39
  349. package/src/index.ts +78 -0
  350. package/src/io-ts.ts +313 -0
  351. package/src/model/boolean.ts +15 -0
  352. package/src/model/color.ts +14 -0
  353. package/src/model/customType.ts +26 -0
  354. package/src/model/date.ts +15 -0
  355. package/src/model/diff/index.ts +4 -0
  356. package/src/{customtypes/diff/SharedSlice.ts → model/diff/sharedSlice.ts} +16 -18
  357. package/src/model/diff/utils.ts +45 -0
  358. package/src/model/diff/variation.ts +152 -0
  359. package/src/model/diff/widgets.ts +15 -0
  360. package/src/model/embed.ts +15 -0
  361. package/src/model/geopoint.ts +13 -0
  362. package/src/model/group.ts +36 -0
  363. package/src/model/image.ts +54 -0
  364. package/src/model/integrationField.ts +15 -0
  365. package/src/model/link.ts +147 -0
  366. package/src/model/nestable.ts +39 -0
  367. package/src/model/number.ts +26 -0
  368. package/src/model/range.ts +26 -0
  369. package/src/model/richText.ts +106 -0
  370. package/src/model/section.ts +12 -0
  371. package/src/model/select.ts +30 -0
  372. package/src/model/separator.ts +12 -0
  373. package/src/model/slice.ts +94 -0
  374. package/src/model/slices.ts +54 -0
  375. package/src/model/table.ts +20 -0
  376. package/src/model/text.ts +15 -0
  377. package/src/model/timestamp.ts +15 -0
  378. package/src/model/uid.ts +15 -0
  379. package/src/model/widget.ts +52 -0
  380. package/src/zod4.ts +153 -0
  381. package/lib/common/Asset.d.ts +0 -16
  382. package/lib/common/Asset.js +0 -11
  383. package/lib/common/Embed.d.ts +0 -15
  384. package/lib/common/Embed.js +0 -10
  385. package/lib/common/HexaColorCode.d.ts +0 -4
  386. package/lib/common/HexaColorCode.js +0 -7
  387. package/lib/common/UUID.d.ts +0 -6
  388. package/lib/common/UUID.js +0 -8
  389. package/lib/common/WidgetKey.d.ts +0 -3
  390. package/lib/common/WidgetKey.js +0 -8
  391. package/lib/common/index.d.ts +0 -3
  392. package/lib/common/index.js +0 -6
  393. package/lib/content/Document.d.ts +0 -11813
  394. package/lib/content/Document.js +0 -364
  395. package/lib/content/LegacyContentCtx.d.ts +0 -64
  396. package/lib/content/LegacyContentCtx.js +0 -130
  397. package/lib/content/fields/EmptyContent.d.ts +0 -16
  398. package/lib/content/fields/EmptyContent.js +0 -30
  399. package/lib/content/fields/GroupContent.d.ts +0 -53
  400. package/lib/content/fields/GroupContent.js +0 -307
  401. package/lib/content/fields/UIDContent.d.ts +0 -16
  402. package/lib/content/fields/UIDContent.js +0 -25
  403. package/lib/content/fields/WidgetContent.d.ts +0 -11749
  404. package/lib/content/fields/WidgetContent.js +0 -57
  405. package/lib/content/fields/index.d.ts +0 -6
  406. package/lib/content/fields/index.js +0 -9
  407. package/lib/content/fields/nestable/BooleanContent.d.ts +0 -18
  408. package/lib/content/fields/nestable/BooleanContent.js +0 -35
  409. package/lib/content/fields/nestable/EmbedContent.d.ts +0 -78
  410. package/lib/content/fields/nestable/EmbedContent.js +0 -56
  411. package/lib/content/fields/nestable/FieldContent/ColorContent.d.ts +0 -18
  412. package/lib/content/fields/nestable/FieldContent/ColorContent.js +0 -35
  413. package/lib/content/fields/nestable/FieldContent/DateContent.d.ts +0 -18
  414. package/lib/content/fields/nestable/FieldContent/DateContent.js +0 -35
  415. package/lib/content/fields/nestable/FieldContent/NumberContent.d.ts +0 -18
  416. package/lib/content/fields/nestable/FieldContent/NumberContent.js +0 -35
  417. package/lib/content/fields/nestable/FieldContent/RangeContent.d.ts +0 -18
  418. package/lib/content/fields/nestable/FieldContent/RangeContent.js +0 -35
  419. package/lib/content/fields/nestable/FieldContent/SelectContent.d.ts +0 -20
  420. package/lib/content/fields/nestable/FieldContent/SelectContent.js +0 -46
  421. package/lib/content/fields/nestable/FieldContent/TextContent.d.ts +0 -18
  422. package/lib/content/fields/nestable/FieldContent/TextContent.js +0 -35
  423. package/lib/content/fields/nestable/FieldContent/TimestampContent.d.ts +0 -18
  424. package/lib/content/fields/nestable/FieldContent/TimestampContent.js +0 -35
  425. package/lib/content/fields/nestable/FieldContent/common.d.ts +0 -1
  426. package/lib/content/fields/nestable/FieldContent/common.js +0 -4
  427. package/lib/content/fields/nestable/FieldContent/index.d.ts +0 -49
  428. package/lib/content/fields/nestable/FieldContent/index.js +0 -38
  429. package/lib/content/fields/nestable/GeoPointContent.d.ts +0 -33
  430. package/lib/content/fields/nestable/GeoPointContent.js +0 -31
  431. package/lib/content/fields/nestable/ImageContent.d.ts +0 -252
  432. package/lib/content/fields/nestable/ImageContent.js +0 -122
  433. package/lib/content/fields/nestable/IntegrationFieldContent.d.ts +0 -16
  434. package/lib/content/fields/nestable/IntegrationFieldContent.js +0 -28
  435. package/lib/content/fields/nestable/LinkContent.d.ts +0 -919
  436. package/lib/content/fields/nestable/LinkContent.js +0 -399
  437. package/lib/content/fields/nestable/NestableContent.d.ts +0 -1953
  438. package/lib/content/fields/nestable/NestableContent.js +0 -167
  439. package/lib/content/fields/nestable/RepeatableContent.d.ts +0 -182
  440. package/lib/content/fields/nestable/RepeatableContent.js +0 -146
  441. package/lib/content/fields/nestable/RichTextContent/Blocks.d.ts +0 -1261
  442. package/lib/content/fields/nestable/RichTextContent/Blocks.js +0 -170
  443. package/lib/content/fields/nestable/RichTextContent/index.d.ts +0 -1004
  444. package/lib/content/fields/nestable/RichTextContent/index.js +0 -28
  445. package/lib/content/fields/nestable/SeparatorContent.d.ts +0 -13
  446. package/lib/content/fields/nestable/SeparatorContent.js +0 -22
  447. package/lib/content/fields/nestable/TableContent.d.ts +0 -776
  448. package/lib/content/fields/nestable/TableContent.js +0 -167
  449. package/lib/content/fields/nestable/index.d.ts +0 -12
  450. package/lib/content/fields/nestable/index.js +0 -15
  451. package/lib/content/fields/slices/Slice/CompositeSliceContent.d.ts +0 -3934
  452. package/lib/content/fields/slices/Slice/CompositeSliceContent.js +0 -195
  453. package/lib/content/fields/slices/Slice/RepeatableContent.d.ts +0 -774
  454. package/lib/content/fields/slices/Slice/RepeatableContent.js +0 -21
  455. package/lib/content/fields/slices/Slice/SharedSliceContent.d.ts +0 -3937
  456. package/lib/content/fields/slices/Slice/SharedSliceContent.js +0 -215
  457. package/lib/content/fields/slices/Slice/SimpleSliceContent.d.ts +0 -1962
  458. package/lib/content/fields/slices/Slice/SimpleSliceContent.js +0 -130
  459. package/lib/content/fields/slices/Slice/SlicePrimaryContent.d.ts +0 -1952
  460. package/lib/content/fields/slices/Slice/SlicePrimaryContent.js +0 -30
  461. package/lib/content/fields/slices/Slice/index.d.ts +0 -6810
  462. package/lib/content/fields/slices/Slice/index.js +0 -45
  463. package/lib/content/fields/slices/SliceItem.d.ts +0 -6846
  464. package/lib/content/fields/slices/SliceItem.js +0 -116
  465. package/lib/content/fields/slices/SlicesContent.d.ts +0 -9827
  466. package/lib/content/fields/slices/SlicesContent.js +0 -465
  467. package/lib/content/fields/slices/index.d.ts +0 -3
  468. package/lib/content/fields/slices/index.js +0 -6
  469. package/lib/content/fields/withDefaultValues.d.ts +0 -9
  470. package/lib/content/fields/withDefaultValues.js +0 -79
  471. package/lib/content/helpers.d.ts +0 -9
  472. package/lib/content/helpers.js +0 -22
  473. package/lib/content/index.d.ts +0 -4
  474. package/lib/content/index.js +0 -7
  475. package/lib/content/utils.d.ts +0 -50
  476. package/lib/content/utils.js +0 -35
  477. package/lib/customtypes/CustomType.d.ts +0 -3680
  478. package/lib/customtypes/CustomType.js +0 -184
  479. package/lib/customtypes/Section.d.ts +0 -3635
  480. package/lib/customtypes/Section.js +0 -66
  481. package/lib/customtypes/diff/Changes.d.ts +0 -17
  482. package/lib/customtypes/diff/Changes.js +0 -9
  483. package/lib/customtypes/diff/SharedSlice.d.ts +0 -1624
  484. package/lib/customtypes/diff/SharedSlice.js +0 -55
  485. package/lib/customtypes/diff/Variation.d.ts +0 -1605
  486. package/lib/customtypes/diff/Variation.js +0 -113
  487. package/lib/customtypes/diff/Widgets.d.ts +0 -11
  488. package/lib/customtypes/diff/Widgets.js +0 -2
  489. package/lib/customtypes/diff/index.d.ts +0 -4
  490. package/lib/customtypes/diff/index.js +0 -7
  491. package/lib/customtypes/index.d.ts +0 -4
  492. package/lib/customtypes/index.js +0 -7
  493. package/lib/customtypes/widgets/Group.d.ts +0 -1352
  494. package/lib/customtypes/widgets/Group.js +0 -92
  495. package/lib/customtypes/widgets/UID.d.ts +0 -19
  496. package/lib/customtypes/widgets/UID.js +0 -21
  497. package/lib/customtypes/widgets/Widget.d.ts +0 -4457
  498. package/lib/customtypes/widgets/Widget.js +0 -49
  499. package/lib/customtypes/widgets/index.d.ts +0 -6
  500. package/lib/customtypes/widgets/index.js +0 -9
  501. package/lib/customtypes/widgets/nestable/BooleanField.d.ts +0 -20
  502. package/lib/customtypes/widgets/nestable/BooleanField.js +0 -21
  503. package/lib/customtypes/widgets/nestable/Color.d.ts +0 -17
  504. package/lib/customtypes/widgets/nestable/Color.js +0 -20
  505. package/lib/customtypes/widgets/nestable/Date.d.ts +0 -19
  506. package/lib/customtypes/widgets/nestable/Date.js +0 -21
  507. package/lib/customtypes/widgets/nestable/Embed.d.ts +0 -19
  508. package/lib/customtypes/widgets/nestable/Embed.js +0 -21
  509. package/lib/customtypes/widgets/nestable/GeoPoint.d.ts +0 -15
  510. package/lib/customtypes/widgets/nestable/GeoPoint.js +0 -19
  511. package/lib/customtypes/widgets/nestable/Image.d.ts +0 -44
  512. package/lib/customtypes/widgets/nestable/Image.js +0 -29
  513. package/lib/customtypes/widgets/nestable/IntegrationField.d.ts +0 -19
  514. package/lib/customtypes/widgets/nestable/IntegrationField.js +0 -21
  515. package/lib/customtypes/widgets/nestable/Link.d.ts +0 -196
  516. package/lib/customtypes/widgets/nestable/Link.js +0 -167
  517. package/lib/customtypes/widgets/nestable/NestableWidget.d.ts +0 -217
  518. package/lib/customtypes/widgets/nestable/NestableWidget.js +0 -39
  519. package/lib/customtypes/widgets/nestable/Number.d.ts +0 -23
  520. package/lib/customtypes/widgets/nestable/Number.js +0 -24
  521. package/lib/customtypes/widgets/nestable/Range.d.ts +0 -23
  522. package/lib/customtypes/widgets/nestable/Range.js +0 -24
  523. package/lib/customtypes/widgets/nestable/RichText.d.ts +0 -73
  524. package/lib/customtypes/widgets/nestable/RichText.js +0 -131
  525. package/lib/customtypes/widgets/nestable/Select.d.ts +0 -21
  526. package/lib/customtypes/widgets/nestable/Select.js +0 -22
  527. package/lib/customtypes/widgets/nestable/Separator.d.ts +0 -14
  528. package/lib/customtypes/widgets/nestable/Separator.js +0 -18
  529. package/lib/customtypes/widgets/nestable/Table.d.ts +0 -21
  530. package/lib/customtypes/widgets/nestable/Table.js +0 -30
  531. package/lib/customtypes/widgets/nestable/Text.d.ts +0 -19
  532. package/lib/customtypes/widgets/nestable/Text.js +0 -21
  533. package/lib/customtypes/widgets/nestable/Timestamp.d.ts +0 -19
  534. package/lib/customtypes/widgets/nestable/Timestamp.js +0 -21
  535. package/lib/customtypes/widgets/nestable/index.d.ts +0 -17
  536. package/lib/customtypes/widgets/nestable/index.js +0 -20
  537. package/lib/customtypes/widgets/shared/ImageConstraint.d.ts +0 -7
  538. package/lib/customtypes/widgets/shared/ImageConstraint.js +0 -31
  539. package/lib/customtypes/widgets/shared/index.d.ts +0 -1
  540. package/lib/customtypes/widgets/shared/index.js +0 -8
  541. package/lib/customtypes/widgets/slices/CompositeSlice.d.ts +0 -455
  542. package/lib/customtypes/widgets/slices/CompositeSlice.js +0 -63
  543. package/lib/customtypes/widgets/slices/LegacySlice.d.ts +0 -442
  544. package/lib/customtypes/widgets/slices/LegacySlice.js +0 -12
  545. package/lib/customtypes/widgets/slices/SharedSlice.d.ts +0 -1807
  546. package/lib/customtypes/widgets/slices/SharedSlice.js +0 -118
  547. package/lib/customtypes/widgets/slices/SharedSliceRef.d.ts +0 -5
  548. package/lib/customtypes/widgets/slices/SharedSliceRef.js +0 -9
  549. package/lib/customtypes/widgets/slices/Slice.d.ts +0 -6
  550. package/lib/customtypes/widgets/slices/Slice.js +0 -2
  551. package/lib/customtypes/widgets/slices/SlicePrimaryWidget.d.ts +0 -1259
  552. package/lib/customtypes/widgets/slices/SlicePrimaryWidget.js +0 -10
  553. package/lib/customtypes/widgets/slices/Slices.d.ts +0 -5917
  554. package/lib/customtypes/widgets/slices/Slices.js +0 -146
  555. package/lib/customtypes/widgets/slices/SlicesTypes.d.ts +0 -6
  556. package/lib/customtypes/widgets/slices/SlicesTypes.js +0 -11
  557. package/lib/customtypes/widgets/slices/index.d.ts +0 -8
  558. package/lib/customtypes/widgets/slices/index.js +0 -11
  559. package/lib/utils/Arrays.d.ts +0 -1
  560. package/lib/utils/Arrays.js +0 -13
  561. package/lib/utils/DocumentId.d.ts +0 -2
  562. package/lib/utils/DocumentId.js +0 -7
  563. package/lib/utils/Fields.d.ts +0 -6
  564. package/lib/utils/Fields.js +0 -2
  565. package/lib/utils/Objects.d.ts +0 -8
  566. package/lib/utils/Objects.js +0 -42
  567. package/lib/utils/index.d.ts +0 -4
  568. package/lib/utils/index.js +0 -8
  569. package/lib/validators/BasicTypes.d.ts +0 -10
  570. package/lib/validators/BasicTypes.js +0 -25
  571. package/lib/validators/DateFromString.d.ts +0 -3
  572. package/lib/validators/DateFromString.js +0 -11
  573. package/lib/validators/DateFromStringOrNumber.d.ts +0 -3
  574. package/lib/validators/DateFromStringOrNumber.js +0 -10
  575. package/lib/validators/DateFromTsMs.d.ts +0 -3
  576. package/lib/validators/DateFromTsMs.js +0 -10
  577. package/lib/validators/DefaultOrElse.d.ts +0 -5
  578. package/lib/validators/DefaultOrElse.js +0 -21
  579. package/lib/validators/IntFromNumber.d.ts +0 -5
  580. package/lib/validators/IntFromNumber.js +0 -14
  581. package/lib/validators/IntFromPixels.d.ts +0 -8
  582. package/lib/validators/IntFromPixels.js +0 -24
  583. package/lib/validators/NonEmptyString.d.ts +0 -3
  584. package/lib/validators/NonEmptyString.js +0 -6
  585. package/lib/validators/NonEmptyStringOrNull.d.ts +0 -3
  586. package/lib/validators/NonEmptyStringOrNull.js +0 -15
  587. package/lib/validators/NumberOrNull.d.ts +0 -3
  588. package/lib/validators/NumberOrNull.js +0 -6
  589. package/lib/validators/NumberRange.d.ts +0 -32
  590. package/lib/validators/NumberRange.js +0 -40
  591. package/lib/validators/StringFromBoolean.d.ts +0 -5
  592. package/lib/validators/StringFromBoolean.js +0 -10
  593. package/lib/validators/StringFromNumber.d.ts +0 -5
  594. package/lib/validators/StringFromNumber.js +0 -10
  595. package/lib/validators/StringOrNull.d.ts +0 -3
  596. package/lib/validators/StringOrNull.js +0 -6
  597. package/lib/validators/TrimmedString.d.ts +0 -5
  598. package/lib/validators/TrimmedString.js +0 -23
  599. package/lib/validators/function.d.ts +0 -34
  600. package/lib/validators/function.js +0 -100
  601. package/lib/validators/index.d.ts +0 -15
  602. package/lib/validators/index.js +0 -31
  603. package/src/common/Asset.ts +0 -25
  604. package/src/common/Embed.ts +0 -22
  605. package/src/common/HexaColorCode.ts +0 -11
  606. package/src/common/UUID.ts +0 -19
  607. package/src/common/WidgetKey.ts +0 -13
  608. package/src/common/index.ts +0 -3
  609. package/src/content/Document.ts +0 -539
  610. package/src/content/fields/EmptyContent.ts +0 -45
  611. package/src/content/fields/GroupContent.ts +0 -466
  612. package/src/content/fields/UIDContent.ts +0 -42
  613. package/src/content/fields/WidgetContent.ts +0 -76
  614. package/src/content/fields/index.ts +0 -6
  615. package/src/content/fields/nestable/BooleanContent.ts +0 -52
  616. package/src/content/fields/nestable/EmbedContent.ts +0 -74
  617. package/src/content/fields/nestable/FieldContent/ColorContent.ts +0 -49
  618. package/src/content/fields/nestable/FieldContent/DateContent.ts +0 -49
  619. package/src/content/fields/nestable/FieldContent/NumberContent.ts +0 -49
  620. package/src/content/fields/nestable/FieldContent/RangeContent.ts +0 -49
  621. package/src/content/fields/nestable/FieldContent/SelectContent.ts +0 -60
  622. package/src/content/fields/nestable/FieldContent/TextContent.ts +0 -49
  623. package/src/content/fields/nestable/FieldContent/TimestampContent.ts +0 -49
  624. package/src/content/fields/nestable/FieldContent/common.ts +0 -1
  625. package/src/content/fields/nestable/FieldContent/index.ts +0 -40
  626. package/src/content/fields/nestable/GeoPointContent.ts +0 -48
  627. package/src/content/fields/nestable/ImageContent.ts +0 -196
  628. package/src/content/fields/nestable/IntegrationFieldContent.ts +0 -51
  629. package/src/content/fields/nestable/LinkContent.ts +0 -651
  630. package/src/content/fields/nestable/NestableContent.ts +0 -241
  631. package/src/content/fields/nestable/RepeatableContent.ts +0 -224
  632. package/src/content/fields/nestable/RichTextContent/Blocks.ts +0 -238
  633. package/src/content/fields/nestable/RichTextContent/index.ts +0 -42
  634. package/src/content/fields/nestable/SeparatorContent.ts +0 -34
  635. package/src/content/fields/nestable/TableContent.ts +0 -234
  636. package/src/content/fields/nestable/index.ts +0 -12
  637. package/src/content/fields/slices/Slice/CompositeSliceContent.ts +0 -293
  638. package/src/content/fields/slices/Slice/RepeatableContent.ts +0 -29
  639. package/src/content/fields/slices/Slice/SharedSliceContent.ts +0 -305
  640. package/src/content/fields/slices/Slice/SimpleSliceContent.ts +0 -180
  641. package/src/content/fields/slices/Slice/SlicePrimaryContent.ts +0 -40
  642. package/src/content/fields/slices/Slice/index.ts +0 -52
  643. package/src/content/fields/slices/SliceItem.ts +0 -184
  644. package/src/content/fields/slices/SlicesContent.ts +0 -677
  645. package/src/content/fields/slices/index.ts +0 -3
  646. package/src/content/helpers.ts +0 -25
  647. package/src/content/index.ts +0 -4
  648. package/src/customtypes/CustomType.ts +0 -280
  649. package/src/customtypes/Section.ts +0 -98
  650. package/src/customtypes/diff/Variation.ts +0 -167
  651. package/src/customtypes/diff/Widgets.ts +0 -17
  652. package/src/customtypes/diff/index.ts +0 -4
  653. package/src/customtypes/index.ts +0 -4
  654. package/src/customtypes/widgets/Group.ts +0 -120
  655. package/src/customtypes/widgets/UID.ts +0 -27
  656. package/src/customtypes/widgets/Widget.ts +0 -83
  657. package/src/customtypes/widgets/index.ts +0 -6
  658. package/src/customtypes/widgets/nestable/BooleanField.ts +0 -29
  659. package/src/customtypes/widgets/nestable/Color.ts +0 -25
  660. package/src/customtypes/widgets/nestable/Date.ts +0 -27
  661. package/src/customtypes/widgets/nestable/Embed.ts +0 -27
  662. package/src/customtypes/widgets/nestable/GeoPoint.ts +0 -25
  663. package/src/customtypes/widgets/nestable/Image.ts +0 -39
  664. package/src/customtypes/widgets/nestable/IntegrationField.ts +0 -26
  665. package/src/customtypes/widgets/nestable/Link.ts +0 -313
  666. package/src/customtypes/widgets/nestable/NestableWidget.ts +0 -40
  667. package/src/customtypes/widgets/nestable/Number.ts +0 -30
  668. package/src/customtypes/widgets/nestable/Range.ts +0 -30
  669. package/src/customtypes/widgets/nestable/RichText.ts +0 -215
  670. package/src/customtypes/widgets/nestable/Select.ts +0 -34
  671. package/src/customtypes/widgets/nestable/Separator.ts +0 -24
  672. package/src/customtypes/widgets/nestable/Table.ts +0 -38
  673. package/src/customtypes/widgets/nestable/Text.ts +0 -27
  674. package/src/customtypes/widgets/nestable/Timestamp.ts +0 -27
  675. package/src/customtypes/widgets/nestable/index.ts +0 -17
  676. package/src/customtypes/widgets/shared/ImageConstraint.ts +0 -41
  677. package/src/customtypes/widgets/shared/index.ts +0 -1
  678. package/src/customtypes/widgets/slices/CompositeSlice.ts +0 -79
  679. package/src/customtypes/widgets/slices/LegacySlice.ts +0 -15
  680. package/src/customtypes/widgets/slices/SharedSlice.ts +0 -152
  681. package/src/customtypes/widgets/slices/SharedSliceRef.ts +0 -10
  682. package/src/customtypes/widgets/slices/Slice.ts +0 -7
  683. package/src/customtypes/widgets/slices/SlicePrimaryWidget.ts +0 -12
  684. package/src/customtypes/widgets/slices/Slices.ts +0 -184
  685. package/src/customtypes/widgets/slices/SlicesTypes.ts +0 -11
  686. package/src/customtypes/widgets/slices/index.ts +0 -8
  687. package/src/utils/Arrays.ts +0 -12
  688. package/src/utils/DocumentId.ts +0 -8
  689. package/src/utils/Fields.ts +0 -4
  690. package/src/utils/Objects.ts +0 -53
  691. package/src/utils/index.ts +0 -4
  692. package/src/validators/BasicTypes.ts +0 -55
  693. package/src/validators/DateFromString.ts +0 -19
  694. package/src/validators/DateFromStringOrNumber.ts +0 -17
  695. package/src/validators/DateFromTsMs.ts +0 -17
  696. package/src/validators/DefaultOrElse.ts +0 -24
  697. package/src/validators/IntFromNumber.ts +0 -22
  698. package/src/validators/IntFromPixels.ts +0 -32
  699. package/src/validators/NonEmptyString.ts +0 -8
  700. package/src/validators/NonEmptyStringOrNull.ts +0 -22
  701. package/src/validators/NumberOrNull.ts +0 -5
  702. package/src/validators/NumberRange.ts +0 -51
  703. package/src/validators/StringFromBoolean.ts +0 -19
  704. package/src/validators/StringFromNumber.ts +0 -19
  705. package/src/validators/StringOrNull.ts +0 -5
  706. package/src/validators/TrimmedString.ts +0 -33
  707. package/src/validators/function.ts +0 -115
  708. package/src/validators/index.ts +0 -15
  709. /package/src/{customtypes/diff/Changes.ts → model/diff/changes.ts} +0 -0
@@ -0,0 +1,152 @@
1
+ import type { GroupModel } from "../group"
2
+ import { GroupFieldType } from "../group"
3
+ import type { NestableModel } from "../nestable"
4
+ import type { Variation } 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<Variation, "primary" | "items">
14
+ export type VariationDiff = DiffChange<
15
+ Variation,
16
+ Partial<VariationMetadata> & {
17
+ primary?: Record<string, SlicePrimaryWidgetDiff>
18
+ items?: Record<string, NestableWidgetDiff>
19
+ }
20
+ >
21
+
22
+ function compareVariationMeta(
23
+ variationA?: Variation,
24
+ variationB?: Variation,
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(variationA?: Variation, variationB?: Variation): VariationDiff | undefined {
122
+ if (variationA && !variationB)
123
+ return {
124
+ op: DiffOperation.Removed,
125
+ }
126
+ if (!variationA && variationB) {
127
+ return {
128
+ op: DiffOperation.Added,
129
+ value: variationB,
130
+ }
131
+ }
132
+
133
+ const diffMeta = compareVariationMeta(variationA, variationB)
134
+
135
+ const diffPrimary = compareWidgets(variationA?.primary, variationB?.primary)
136
+ const diffItems = compareWidgets(variationA?.items, variationB?.items)
137
+
138
+ const diffVariation = {
139
+ ...diffMeta,
140
+ ...(diffPrimary ? { primary: diffPrimary } : {}),
141
+ ...(diffItems ? { items: diffItems } : {}),
142
+ }
143
+
144
+ if (isNotEmpty(diffVariation)) {
145
+ return {
146
+ op: DiffOperation.Updated,
147
+ value: diffVariation,
148
+ }
149
+ }
150
+ return undefined
151
+ },
152
+ }
@@ -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,36 @@
1
+ import { z } from "zod/mini"
2
+
3
+ import { WidgetKeySchema } from "../common/widgetKey"
4
+ import { NestableModelSchema } from "./nestable"
5
+
6
+ export const GroupFieldType = "Group"
7
+
8
+ // Factory to create group config schema with configurable widget types
9
+ const createGroupConfigSchema = <TWidgets extends z.ZodMiniType>(widgets: TWidgets) =>
10
+ z.object({
11
+ label: z.nullish(z.string()),
12
+ repeat: z.optional(z.boolean()),
13
+ fields: z.optional(z.record(WidgetKeySchema, widgets)),
14
+ })
15
+
16
+ // Factory to create group schema with configurable widget types
17
+ const createGroupSchema = <TWidgets extends z.ZodMiniType>(widgets: TWidgets) =>
18
+ z.object({
19
+ type: z.literal(GroupFieldType),
20
+ fieldset: z.nullish(z.string()),
21
+ icon: z.optional(z.string()),
22
+ description: z.optional(z.string()),
23
+ config: z.optional(createGroupConfigSchema(widgets)),
24
+ })
25
+
26
+ // NestedGroup - only allows Nestable in fields (no further nesting)
27
+ export const NestedGroupModelSchema = createGroupSchema(NestableModelSchema)
28
+
29
+ export type NestedGroupModel = z.infer<typeof NestedGroupModelSchema>
30
+
31
+ // Group - allows Nestable | NestedGroup in fields (max 2 levels of nesting)
32
+ export const GroupModelSchema = createGroupSchema(
33
+ z.union([NestableModelSchema, NestedGroupModelSchema]),
34
+ )
35
+
36
+ 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.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,147 @@
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): readonly 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.readonly(
19
+ z.array(z.string()).check(noDuplicateStrings),
20
+ )
21
+
22
+ const CustomTypeLevel2FieldSchema = z.union([
23
+ z.object({ id: z.string(), fields: CustomTypeLevel2FieldGroupFieldsSchema }),
24
+ z.string(),
25
+ ])
26
+
27
+ const noDuplicateIds = (items: unknown) => {
28
+ const arr = items as { id: string }[] | string[]
29
+ const ids = new Set(arr.map((item) => (typeof item === "string" ? item : item.id)))
30
+ return ids.size === arr.length
31
+ }
32
+
33
+ const CustomTypeLevel2FieldsSchema = z.readonly(
34
+ z.array(CustomTypeLevel2FieldSchema).check(z.refine(noDuplicateIds, "Fields have duplicates.")),
35
+ )
36
+
37
+ const CustomTypeLevel2Schema = z.union([
38
+ z.string(),
39
+ z.object({ id: z.string(), fields: CustomTypeLevel2FieldsSchema }),
40
+ ])
41
+
42
+ const CustomTypesLevel2Schema = z.readonly(
43
+ z.array(CustomTypeLevel2Schema).check(z.refine(noDuplicateIds, "Custom types have duplicates.")),
44
+ )
45
+
46
+ // Level 1
47
+
48
+ const CustomTypeLevel1FieldCustomTypesSchema = z.object({
49
+ id: z.string(),
50
+ customtypes: CustomTypesLevel2Schema,
51
+ })
52
+
53
+ const CustomTypeLevel1FieldGroupFieldSchema = z.union([
54
+ CustomTypeLevel1FieldCustomTypesSchema,
55
+ z.string(),
56
+ ])
57
+
58
+ const CustomTypeLevel1FieldGroupFieldsSchema = z.readonly(
59
+ z
60
+ .array(CustomTypeLevel1FieldGroupFieldSchema)
61
+ .check(z.refine(noDuplicateIds, "Fields have duplicates.")),
62
+ )
63
+
64
+ const CustomTypeLevel1FieldSchema = z.union([
65
+ z.object({
66
+ id: z.string(),
67
+ fields: CustomTypeLevel1FieldGroupFieldsSchema,
68
+ }),
69
+ CustomTypeLevel1FieldCustomTypesSchema,
70
+ z.string(),
71
+ ])
72
+
73
+ const CustomTypeLevel1FieldsSchema = z.readonly(
74
+ z.array(CustomTypeLevel1FieldSchema).check(z.refine(noDuplicateIds, "Fields have duplicates.")),
75
+ )
76
+
77
+ const CustomTypeLevel1Schema = z.union([
78
+ z.string(),
79
+ z.object({ id: z.string(), fields: CustomTypeLevel1FieldsSchema }),
80
+ ])
81
+
82
+ const CustomTypesSchema = z.readonly(
83
+ z.array(CustomTypeLevel1Schema).check(({ value, issues }) => {
84
+ const cts = value as ({ id: string } | string)[]
85
+ const push = (message: string) => issues.push({ code: "custom", input: value, message })
86
+ const strings = new Set<string>()
87
+ const objects = new Set<string>()
88
+ for (const ct of cts) {
89
+ let failed = false
90
+ if (typeof ct === "string") {
91
+ failed = objects.has(ct)
92
+ strings.add(ct)
93
+ } else {
94
+ const { id } = ct
95
+ failed = strings.has(id) || objects.has(id)
96
+ objects.add(id)
97
+ }
98
+ if (failed) {
99
+ push("Custom types have duplicates.")
100
+ return
101
+ }
102
+ }
103
+ if (objects.size > 1) {
104
+ push("Cannot have multiple custom types with fields selection.")
105
+ return
106
+ }
107
+ if (strings.size > 0 && objects.size > 0) {
108
+ push("Cannot mix custom types as strings and objects with fields.")
109
+ }
110
+ }),
111
+ )
112
+
113
+ // --- Select with fallback to null ---
114
+
115
+ const SelectWithFallbackSchema = z.pipe(
116
+ z.unknown(),
117
+ z.transform((val): "media" | "document" | "web" | null => {
118
+ if (val === "media" || val === "document" || val === "web" || val === null) {
119
+ return val
120
+ }
121
+ return null
122
+ }),
123
+ )
124
+
125
+ // --- LinkConfig and Link ---
126
+
127
+ const LinkConfigSchema = z.object({
128
+ label: z.nullish(z.string()),
129
+ useAsTitle: z.optional(z.boolean()),
130
+ placeholder: z.optional(z.string()),
131
+ select: z.optional(SelectWithFallbackSchema),
132
+ customtypes: z.optional(CustomTypesSchema),
133
+ masks: z.optional(MasksArrayStringSchema),
134
+ tags: z.optional(MasksArrayStringSchema),
135
+ allowTargetBlank: z.optional(z.boolean()),
136
+ allowText: z.optional(z.boolean()),
137
+ repeat: z.optional(z.boolean()),
138
+ variants: z.optional(z.array(z.string())),
139
+ })
140
+
141
+ export const LinkModelSchema = z.object({
142
+ type: z.literal("Link"),
143
+ fieldset: z.nullish(z.string()),
144
+ config: z.optional(LinkConfigSchema),
145
+ })
146
+
147
+ export type LinkModel = z.infer<typeof LinkModelSchema>
@@ -0,0 +1,39 @@
1
+ import { z } from "zod/mini"
2
+
3
+ import { BooleanModelSchema } from "./boolean"
4
+ import { ColorModelSchema } from "./color"
5
+ import { DateModelSchema } from "./date"
6
+ import { EmbedModelSchema } from "./embed"
7
+ import { GeoPointModelSchema } from "./geopoint"
8
+ import { ImageModelSchema } from "./image"
9
+ import { IntegrationFieldModelSchema } from "./integrationField"
10
+ import { LinkModelSchema } from "./link"
11
+ import { NumberModelSchema } from "./number"
12
+ import { RangeModelSchema } from "./range"
13
+ import { RichTextModelSchema } from "./richText"
14
+ import { SelectModelSchema } from "./select"
15
+ import { SeparatorModelSchema } from "./separator"
16
+ import { TableModelSchema } from "./table"
17
+ import { TextModelSchema } from "./text"
18
+ import { TimestampModelSchema } from "./timestamp"
19
+
20
+ export const NestableModelSchema = z.union([
21
+ BooleanModelSchema,
22
+ ColorModelSchema,
23
+ DateModelSchema,
24
+ EmbedModelSchema,
25
+ GeoPointModelSchema,
26
+ ImageModelSchema,
27
+ IntegrationFieldModelSchema,
28
+ LinkModelSchema,
29
+ NumberModelSchema,
30
+ RangeModelSchema,
31
+ RichTextModelSchema,
32
+ SelectModelSchema,
33
+ SeparatorModelSchema,
34
+ TableModelSchema,
35
+ TextModelSchema,
36
+ TimestampModelSchema,
37
+ ])
38
+
39
+ export type NestableModel = z.infer<typeof NestableModelSchema>
@@ -0,0 +1,26 @@
1
+ import { z } from "zod/mini"
2
+
3
+ // Accepts number directly or string that parses to number (like io-ts NumberFromString)
4
+ const NumberOrStringToNumber = z.union([
5
+ z.number(),
6
+ z.pipe(
7
+ z.string(),
8
+ z.transform((s) => Number(s)),
9
+ ),
10
+ ])
11
+
12
+ const NumberConfigSchema = z.object({
13
+ label: z.nullish(z.string()),
14
+ placeholder: z.optional(z.string()),
15
+ min: z.optional(NumberOrStringToNumber),
16
+ max: z.optional(NumberOrStringToNumber),
17
+ step: z.optional(NumberOrStringToNumber),
18
+ })
19
+
20
+ export const NumberModelSchema = z.object({
21
+ type: z.literal("Number"),
22
+ fieldset: z.nullish(z.string()),
23
+ config: z.optional(NumberConfigSchema),
24
+ })
25
+
26
+ export type NumberModel = z.infer<typeof NumberModelSchema>
@@ -0,0 +1,26 @@
1
+ import { z } from "zod/mini"
2
+
3
+ // Accepts number directly or string that parses to number (like io-ts NumberFromString)
4
+ const NumberOrStringToNumber = z.union([
5
+ z.number(),
6
+ z.pipe(
7
+ z.string(),
8
+ z.transform((s) => Number(s)),
9
+ ),
10
+ ])
11
+
12
+ const RangeConfigSchema = z.object({
13
+ label: z.nullish(z.string()),
14
+ placeholder: z.optional(z.string()),
15
+ min: z.optional(NumberOrStringToNumber),
16
+ max: z.optional(NumberOrStringToNumber),
17
+ step: z.optional(NumberOrStringToNumber),
18
+ })
19
+
20
+ export const RangeModelSchema = z.object({
21
+ type: z.literal("Range"),
22
+ fieldset: z.nullish(z.string()),
23
+ config: z.optional(RangeConfigSchema),
24
+ })
25
+
26
+ export type RangeModel = z.infer<typeof RangeModelSchema>
@@ -0,0 +1,106 @@
1
+ import { z } from "zod/mini"
2
+
3
+ import { ImageConstraintSchema } from "./image"
4
+
5
+ export const RichTextFieldType = "StructuredText"
6
+
7
+ export const DEFAULT_OPTION = "paragraph"
8
+
9
+ export const RichTextNodeType = {
10
+ heading1: "heading1",
11
+ heading2: "heading2",
12
+ heading3: "heading3",
13
+ heading4: "heading4",
14
+ heading5: "heading5",
15
+ heading6: "heading6",
16
+ paragraph: "paragraph",
17
+ preformatted: "preformatted",
18
+ orderedList: "o-list-item",
19
+ list: "list-item",
20
+ image: "image",
21
+ embed: "embed",
22
+ hyperlink: "hyperlink",
23
+ strong: "strong",
24
+ em: "em",
25
+ rtl: "rtl",
26
+ } as const
27
+
28
+ const VALID_NODE_TYPES = Object.values(RichTextNodeType)
29
+
30
+ /**
31
+ * RichTextOptions parses comma-separated node types, filters invalid ones,
32
+ * and defaults to "paragraph" if empty or null.
33
+ */
34
+ const RichTextOptionsSchema = z.pipe(
35
+ z.union([z.string(), z.null()]),
36
+ z.transform((s: string | null) => {
37
+ if (!s) return DEFAULT_OPTION
38
+ const entries = s.split(",").map((e: string) => e.trim())
39
+ const filtered = entries.filter((e: string) =>
40
+ VALID_NODE_TYPES.includes(e as (typeof VALID_NODE_TYPES)[number]),
41
+ )
42
+ return filtered.length ? filtered.join(",") : DEFAULT_OPTION
43
+ }),
44
+ )
45
+
46
+ /**
47
+ * RichTextLabels accepts multiple formats and normalizes to string[]:
48
+ * - null → []
49
+ * - "label" → ["label"]
50
+ * - ["a", "b"] → ["a", "b"]
51
+ * - { "": [{name: "a"}], "key": [{name: "b"}] } → ["a", "b"] (legacy format)
52
+ */
53
+ const LegacyLabelsFormat = z.record(z.string(), z.array(z.object({ name: z.string() })))
54
+
55
+ const RichTextLabelsSchema = z.pipe(
56
+ z.union([
57
+ z.pipe(
58
+ z.null(),
59
+ z.transform(() => [] as string[]),
60
+ ),
61
+ z.pipe(
62
+ z.string(),
63
+ z.transform((s: string) => [s]),
64
+ ),
65
+ z.array(z.string()),
66
+ z.pipe(
67
+ LegacyLabelsFormat,
68
+ z.transform((obj: Record<string, Array<{ name: string }>>) => {
69
+ const entries = Object.entries(obj)
70
+ if (!entries.length) return [] as string[]
71
+
72
+ // Handle legacy format with empty key
73
+ if (obj[""]) {
74
+ return obj[""].map((l: { name: string }) => l.name)
75
+ }
76
+
77
+ // Convert all entries to flat array of names
78
+ return entries
79
+ .reduce<string[]>((acc, [, labelsEntries]) => {
80
+ return acc.concat(labelsEntries.map((l: { name: string }) => l.name))
81
+ }, [])
82
+ .filter(Boolean)
83
+ }),
84
+ ),
85
+ ]),
86
+ z.transform((result: string[]) => result as readonly string[]),
87
+ )
88
+
89
+ const RichTextConfigSchema = z.object({
90
+ label: z.nullish(z.string()),
91
+ placeholder: z.optional(z.string()),
92
+ useAsTitle: z.optional(z.boolean()),
93
+ single: z.optional(RichTextOptionsSchema),
94
+ multi: z.optional(RichTextOptionsSchema),
95
+ imageConstraint: z.optional(ImageConstraintSchema),
96
+ labels: z.optional(RichTextLabelsSchema),
97
+ allowTargetBlank: z.optional(z.boolean()),
98
+ })
99
+
100
+ export const RichTextModelSchema = z.object({
101
+ type: z.literal(RichTextFieldType),
102
+ fieldset: z.nullish(z.string()),
103
+ config: z.optional(RichTextConfigSchema),
104
+ })
105
+
106
+ export type RichTextModel = z.infer<typeof RichTextModelSchema>
@@ -0,0 +1,12 @@
1
+ import { z } from "zod/mini"
2
+
3
+ import { WidgetKeySchema } from "../common/widgetKey"
4
+ import { DynamicWidgetModelSchema, StaticWidgetModelSchema } from "./widget"
5
+
6
+ // StaticSection = Record<WidgetKey, StaticWidget>
7
+ export const StaticSectionModelSchema = z.record(WidgetKeySchema, StaticWidgetModelSchema)
8
+ export type StaticSectionModel = z.infer<typeof StaticSectionModelSchema>
9
+
10
+ // DynamicSection = Record<WidgetKey, DynamicWidget>
11
+ export const DynamicSectionModelSchema = z.record(WidgetKeySchema, DynamicWidgetModelSchema)
12
+ export type DynamicSectionModel = z.infer<typeof DynamicSectionModelSchema>
@@ -0,0 +1,30 @@
1
+ import { z } from "zod/mini"
2
+
3
+ // Options can be string, number, or boolean - all coerced to string
4
+ // Matches io-ts behavior: t.union([t.string, StringFromNumber, StringFromBoolean])
5
+ const SelectOptionSchema = z.union([
6
+ z.string(),
7
+ z.pipe(
8
+ z.number(),
9
+ z.transform((n) => n.toString()),
10
+ ),
11
+ z.pipe(
12
+ z.boolean(),
13
+ z.transform((b) => b.toString()),
14
+ ),
15
+ ])
16
+
17
+ const SelectConfigSchema = z.object({
18
+ label: z.nullish(z.string()),
19
+ placeholder: z.optional(z.string()),
20
+ default_value: z.optional(z.string()),
21
+ options: z.optional(z.readonly(z.array(SelectOptionSchema))),
22
+ })
23
+
24
+ export const SelectModelSchema = z.object({
25
+ type: z.literal("Select"),
26
+ fieldset: z.nullish(z.string()),
27
+ config: z.optional(SelectConfigSchema),
28
+ })
29
+
30
+ export type SelectModel = z.infer<typeof SelectModelSchema>