@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
package/src/index.ts ADDED
@@ -0,0 +1,78 @@
1
+ // Common
2
+ export type { Asset } from "./common/asset"
3
+ export type { Embed } from "./common/embed"
4
+ export type { HexaColorCode } from "./common/hexaColorCode"
5
+ export type { NonEmptyString } from "./common/nonEmptyString"
6
+ export type { WidgetKey } from "./common/widgetKey"
7
+
8
+ // Content
9
+ export type { BooleanContent } from "./content/boolean"
10
+ export type { DocumentContent } from "./content/document"
11
+ export type { EmbedContent } from "./content/embed"
12
+ export type { EmptyContent } from "./content/empty"
13
+ export type {
14
+ ColorContent,
15
+ DateContent,
16
+ NumberContent,
17
+ RangeContent,
18
+ SelectContent,
19
+ TextContent,
20
+ TimestampContent,
21
+ FieldContent,
22
+ } from "./content/field"
23
+ export type { GeoPointContent } from "./content/geopoint"
24
+ export type { GroupContent, GroupItemContent } from "./content/group"
25
+ export type { ImageContent } from "./content/image"
26
+ export type { IntegrationFieldContent } from "./content/integrationField"
27
+ export type { LinkContent } from "./content/link"
28
+ export type { NestableContent } from "./content/nestable"
29
+ export type { RepeatableContent } from "./content/repeatable"
30
+ export type { RichTextContent } from "./content/richText"
31
+ export type { SeparatorContent } from "./content/separator"
32
+ export type {
33
+ SimpleSliceContent,
34
+ CompositeSliceContent,
35
+ SharedSliceContent,
36
+ SliceContent,
37
+ } from "./content/slice"
38
+ export type { SliceItemContent, SlicesContent } from "./content/slices"
39
+ export type { TableContent } from "./content/table"
40
+ export type { UIDContent } from "./content/uid"
41
+ export type { WidgetContent } from "./content/widget"
42
+
43
+ // Model
44
+ export type { BooleanModel } from "./model/boolean"
45
+ export type { ColorModel } from "./model/color"
46
+ export type { StaticCustomTypeModel, CustomTypeModel } from "./model/customType"
47
+ export type { DateModel } from "./model/date"
48
+ export type { EmbedModel } from "./model/embed"
49
+ export type { GeoPointModel } from "./model/geopoint"
50
+ export type { GroupModel, NestedGroupModel } from "./model/group"
51
+ export type { ImageModel } from "./model/image"
52
+ export type { IntegrationFieldModel } from "./model/integrationField"
53
+ export type { LinkModel } from "./model/link"
54
+ export type { NestableModel } from "./model/nestable"
55
+ export type { NumberModel } from "./model/number"
56
+ export type { RangeModel } from "./model/range"
57
+ export type { RichTextModel } from "./model/richText"
58
+ export type { StaticSectionModel, DynamicSectionModel } from "./model/section"
59
+ export type { SelectModel } from "./model/select"
60
+ export type { SeparatorModel } from "./model/separator"
61
+ export type {
62
+ LegacySliceModel,
63
+ CompositeSliceModel,
64
+ SharedSliceModel,
65
+ SharedSliceRefModel,
66
+ StaticSliceModel,
67
+ DynamicSliceModel,
68
+ SlicesTypesModel,
69
+ } from "./model/slice"
70
+ export type { DynamicSlicesModel, StaticSlicesModel } from "./model/slices"
71
+ export type { TableModel } from "./model/table"
72
+ export type { TextModel } from "./model/text"
73
+ export type { TimestampModel } from "./model/timestamp"
74
+ export type { UIDModel } from "./model/uid"
75
+ export type { StaticWidgetModel, DynamicWidgetModel, FieldType } from "./model/widget"
76
+
77
+ // Legacy
78
+ export { LegacyContentCtx, getFieldCtx, defaultCtx } from "./content/codec/legacyContentCtx"
package/src/io-ts.ts ADDED
@@ -0,0 +1,313 @@
1
+ import * as t from "io-ts"
2
+ import type { ZodMiniType } from "zod/mini"
3
+
4
+ // Common
5
+ import { AssetSchema } from "./common/asset"
6
+ import { EmbedSchema } from "./common/embed"
7
+ import { HexaColorCodeSchema } from "./common/hexaColorCode"
8
+ import { NonEmptyStringSchema } from "./common/nonEmptyString"
9
+ import { WidgetKeySchema } from "./common/widgetKey"
10
+ // Content
11
+ import { BooleanContentSchema } from "./content/boolean"
12
+ import { BooleanLegacyCodec } from "./content/codec/boolean"
13
+ import { DocumentLegacyCodec } from "./content/codec/document"
14
+ import { EmbedLegacyCodec } from "./content/codec/embed"
15
+ import { EmptyLegacyCodec } from "./content/codec/empty"
16
+ import {
17
+ ColorLegacyCodec,
18
+ DateLegacyCodec,
19
+ NumberLegacyCodec,
20
+ RangeLegacyCodec,
21
+ SelectLegacyCodec,
22
+ TextLegacyCodec,
23
+ TimestampLegacyCodec,
24
+ } from "./content/codec/field"
25
+ import { GeoPointLegacyCodec } from "./content/codec/geopoint"
26
+ import { GroupItemLegacyCodec, GroupLegacyCodec } from "./content/codec/group"
27
+ import { ImageLegacyCodec } from "./content/codec/image"
28
+ import { IntegrationFieldLegacyCodec } from "./content/codec/integrationField"
29
+ import type { LegacyCodec } from "./content/codec/legacyContentCtx"
30
+ import { LinkLegacyCodec } from "./content/codec/link"
31
+ import { NestableLegacyCodec } from "./content/codec/nestable"
32
+ import { RepeatableLegacyCodec } from "./content/codec/repeatable"
33
+ import { RichTextLegacyCodec } from "./content/codec/richText"
34
+ import { SeparatorLegacyCodec } from "./content/codec/separator"
35
+ import {
36
+ CompositeSliceLegacyCodec,
37
+ SharedSliceLegacyCodec,
38
+ SimpleSliceLegacyCodec,
39
+ SliceLegacyCodec,
40
+ } from "./content/codec/slice"
41
+ import { SliceItemLegacyCodec, SlicesLegacyCodec } from "./content/codec/slices"
42
+ import { TableLegacyCodec } from "./content/codec/table"
43
+ import { UIDLegacyCodec } from "./content/codec/uid"
44
+ import { WidgetLegacyCodec } from "./content/codec/widget"
45
+ import { DocumentContentSchema } from "./content/document"
46
+ import { EmbedContentSchema } from "./content/embed"
47
+ import { EmptyContentSchema } from "./content/empty"
48
+ import {
49
+ ColorContentSchema,
50
+ DateContentSchema,
51
+ NumberContentSchema,
52
+ RangeContentSchema,
53
+ SelectContentSchema,
54
+ TextContentSchema,
55
+ TimestampContentSchema,
56
+ FieldContentSchema,
57
+ } from "./content/field"
58
+ import { GeoPointContentSchema } from "./content/geopoint"
59
+ import { GroupContentSchema, GroupItemContentSchema } from "./content/group"
60
+ import { ImageContentSchema } from "./content/image"
61
+ import { IntegrationFieldContentSchema } from "./content/integrationField"
62
+ import { LinkContentSchema } from "./content/link"
63
+ import { NestableContentSchema } from "./content/nestable"
64
+ import { RepeatableContentSchema } from "./content/repeatable"
65
+ import { RichTextContentSchema } from "./content/richText"
66
+ import { SeparatorContentSchema } from "./content/separator"
67
+ import {
68
+ SimpleSliceContentSchema,
69
+ CompositeSliceContentSchema,
70
+ SharedSliceContentSchema,
71
+ SliceContentSchema,
72
+ } from "./content/slice"
73
+ import { SliceItemContentSchema, SlicesContentSchema } from "./content/slices"
74
+ import { TableContentSchema } from "./content/table"
75
+ import { UIDContentSchema } from "./content/uid"
76
+ import { WidgetContentSchema } from "./content/widget"
77
+ // Model
78
+ import { BooleanModelSchema } from "./model/boolean"
79
+ import { ColorModelSchema } from "./model/color"
80
+ import { StaticCustomTypeModelSchema, CustomTypeModelSchema } from "./model/customType"
81
+ import { DateModelSchema } from "./model/date"
82
+ import { EmbedModelSchema } from "./model/embed"
83
+ import { GeoPointModelSchema } from "./model/geopoint"
84
+ import { GroupModelSchema, NestedGroupModelSchema } from "./model/group"
85
+ import { ImageModelSchema } from "./model/image"
86
+ import { IntegrationFieldModelSchema } from "./model/integrationField"
87
+ import { LinkModelSchema } from "./model/link"
88
+ import { NestableModelSchema } from "./model/nestable"
89
+ import { NumberModelSchema } from "./model/number"
90
+ import { RangeModelSchema } from "./model/range"
91
+ import { RichTextModelSchema } from "./model/richText"
92
+ import { StaticSectionModelSchema, DynamicSectionModelSchema } from "./model/section"
93
+ import { SelectModelSchema } from "./model/select"
94
+ import { SeparatorModelSchema } from "./model/separator"
95
+ import {
96
+ LegacySliceModelSchema,
97
+ CompositeSliceModelSchema,
98
+ SharedSliceModelSchema,
99
+ SharedSliceRefModelSchema,
100
+ StaticSliceModelSchema,
101
+ DynamicSliceModelSchema,
102
+ } from "./model/slice"
103
+ import { DynamicSlicesModelSchema, StaticSlicesModelSchema } from "./model/slices"
104
+ import { TableModelSchema } from "./model/table"
105
+ import { TextModelSchema } from "./model/text"
106
+ import { TimestampModelSchema } from "./model/timestamp"
107
+ import { UIDModelSchema } from "./model/uid"
108
+ import { StaticWidgetModelSchema, DynamicWidgetModelSchema, FieldTypeSchema } from "./model/widget"
109
+
110
+ // Common
111
+ export const Asset = toIOTS(AssetSchema)
112
+ export const Embed = toIOTS(EmbedSchema)
113
+ export const HexaColorCode = toIOTS(HexaColorCodeSchema)
114
+ export const NonEmptyString = toIOTS(NonEmptyStringSchema)
115
+ export const WidgetKey = toIOTS(WidgetKeySchema)
116
+
117
+ // Content
118
+ export const BooleanContent = toIOTS(BooleanContentSchema)
119
+ export const ColorContent = toIOTS(ColorContentSchema)
120
+ export const DateContent = toIOTS(DateContentSchema)
121
+ export const EmptyContent = toIOTS(EmptyContentSchema)
122
+ export const GeoPointContent = toIOTS(GeoPointContentSchema)
123
+ export const LinkContent = toIOTS(LinkContentSchema)
124
+ export const NumberContent = toIOTS(NumberContentSchema)
125
+ export const RangeContent = toIOTS(RangeContentSchema)
126
+ export const SelectContent = toIOTS(SelectContentSchema)
127
+ export const SeparatorContent = toIOTS(SeparatorContentSchema)
128
+ export const SharedSliceContent = toIOTS(SharedSliceContentSchema)
129
+ export const TextContent = toIOTS(TextContentSchema)
130
+ export const TimestampContent = toIOTS(TimestampContentSchema)
131
+ export const FieldContent = toIOTS(FieldContentSchema)
132
+ export const UIDContent = toIOTS(UIDContentSchema)
133
+ export const IntegrationFieldContent = toIOTS(IntegrationFieldContentSchema)
134
+ export const EmbedContent = toIOTS(EmbedContentSchema)
135
+ export const ImageContent = toIOTS(ImageContentSchema)
136
+ export const RichTextContent = toIOTS(RichTextContentSchema)
137
+ export const TableContent = toIOTS(TableContentSchema)
138
+ export const RepeatableContent = toIOTS(RepeatableContentSchema)
139
+ export const NestableContent = toIOTS(NestableContentSchema)
140
+ export const GroupContent = toIOTS(GroupContentSchema)
141
+ export const GroupItemContent = toIOTS(GroupItemContentSchema)
142
+ export const CompositeSliceContent = toIOTS(CompositeSliceContentSchema)
143
+ export const SimpleSliceContent = toIOTS(SimpleSliceContentSchema)
144
+ export const SliceContent = toIOTS(SliceContentSchema)
145
+ export const SliceItemContent = toIOTS(SliceItemContentSchema)
146
+ export const SlicesContent = toIOTS(SlicesContentSchema)
147
+ export const WidgetContent = toIOTS(WidgetContentSchema)
148
+ export const DocumentContent = toIOTS(DocumentContentSchema)
149
+
150
+ // Content legacy
151
+ export const BooleanLegacy = toIOTSCodec(BooleanLegacyCodec)
152
+ export const EmptyLegacy = toIOTSCodec(EmptyLegacyCodec)
153
+ export const TextLegacy = toIOTSCodec(TextLegacyCodec)
154
+ export const ColorLegacy = toIOTSCodec(ColorLegacyCodec)
155
+ export const DateLegacy = toIOTSCodec(DateLegacyCodec)
156
+ export const TimestampLegacy = toIOTSCodec(TimestampLegacyCodec)
157
+ export const NumberLegacy = toIOTSCodec(NumberLegacyCodec)
158
+ export const RangeLegacy = toIOTSCodec(RangeLegacyCodec)
159
+ export const SelectLegacy = toIOTSCodec(SelectLegacyCodec)
160
+ export const GeoPointLegacy = toIOTSCodec(GeoPointLegacyCodec)
161
+ export const EmbedLegacy = toIOTSCodec(EmbedLegacyCodec)
162
+ export const ImageLegacy = toIOTSCodec(ImageLegacyCodec)
163
+ export const LinkLegacy = toIOTSCodec(LinkLegacyCodec)
164
+ export const RepeatableLegacy = toIOTSCodec(RepeatableLegacyCodec)
165
+ export const RichTextLegacy = toIOTSCodec(RichTextLegacyCodec)
166
+ export const SeparatorLegacy = toIOTSCodec(SeparatorLegacyCodec)
167
+ export const IntegrationFieldLegacy = toIOTSCodec(IntegrationFieldLegacyCodec)
168
+ export const TableLegacy = toIOTSCodec(TableLegacyCodec)
169
+ export const NestableLegacy = toIOTSCodec(NestableLegacyCodec)
170
+ export const UIDLegacy = toIOTSCodec(UIDLegacyCodec)
171
+ export const GroupItemLegacy = toIOTSCodec(GroupItemLegacyCodec)
172
+ export const GroupLegacy = toIOTSCodec(GroupLegacyCodec)
173
+ export const SimpleSliceLegacy = toIOTSCodec(SimpleSliceLegacyCodec)
174
+ export const CompositeSliceLegacy = toIOTSCodec(CompositeSliceLegacyCodec)
175
+ export const SharedSliceLegacy = toIOTSCodec(SharedSliceLegacyCodec)
176
+ export const SliceLegacy = toIOTSCodec(SliceLegacyCodec)
177
+ export const SliceItemLegacy = toIOTSCodec(SliceItemLegacyCodec)
178
+ export const SlicesLegacy = toIOTSCodec(SlicesLegacyCodec)
179
+ export const WidgetLegacy = toIOTSCodec(WidgetLegacyCodec)
180
+ export const DocumentLegacy = toIOTSCodec(DocumentLegacyCodec)
181
+
182
+ // Model
183
+ export const BooleanModel = toIOTS(BooleanModelSchema)
184
+ export const ColorModel = toIOTS(ColorModelSchema)
185
+ export const DateModel = toIOTS(DateModelSchema)
186
+ export const EmbedModel = toIOTS(EmbedModelSchema)
187
+ export const GeoPointModel = toIOTS(GeoPointModelSchema)
188
+ export const ImageModel = toIOTS(ImageModelSchema)
189
+ export const IntegrationFieldModel = toIOTS(IntegrationFieldModelSchema)
190
+ export const LinkModel = toIOTS(LinkModelSchema)
191
+ export const NestableModel = toIOTS(NestableModelSchema)
192
+ export const NumberModel = toIOTS(NumberModelSchema)
193
+ export const RangeModel = toIOTS(RangeModelSchema)
194
+ export const RichTextModel = toIOTS(RichTextModelSchema)
195
+ export const SelectModel = toIOTS(SelectModelSchema)
196
+ export const SeparatorModel = toIOTS(SeparatorModelSchema)
197
+ export const SharedSliceModel = toIOTS(SharedSliceModelSchema)
198
+ export const TableModel = toIOTS(TableModelSchema)
199
+ export const TextModel = toIOTS(TextModelSchema)
200
+ export const TimestampModel = toIOTS(TimestampModelSchema)
201
+ export const UIDModel = toIOTS(UIDModelSchema)
202
+ export const GroupModel = toIOTS(GroupModelSchema)
203
+ export const NestedGroupModel = toIOTS(NestedGroupModelSchema)
204
+ export const SharedSliceRefModel = toIOTS(SharedSliceRefModelSchema)
205
+ export const CompositeSliceModel = toIOTS(CompositeSliceModelSchema)
206
+ export const LegacySliceModel = toIOTS(LegacySliceModelSchema)
207
+ export const DynamicSliceModel = toIOTS(DynamicSliceModelSchema)
208
+ export const StaticSliceModel = toIOTS(StaticSliceModelSchema)
209
+ export const DynamicSlicesModel = toIOTS(DynamicSlicesModelSchema)
210
+ export const StaticSlicesModel = toIOTS(StaticSlicesModelSchema)
211
+ export const StaticWidgetModel = toIOTS(StaticWidgetModelSchema)
212
+ export const DynamicWidgetModel = toIOTS(DynamicWidgetModelSchema)
213
+ export const FieldType = toIOTS(FieldTypeSchema)
214
+ export const StaticSectionModel = toIOTS(StaticSectionModelSchema)
215
+ export const DynamicSectionModel = toIOTS(DynamicSectionModelSchema)
216
+ export const StaticCustomTypeModel = toIOTS(StaticCustomTypeModelSchema)
217
+ export const CustomTypeModel = toIOTS(CustomTypeModelSchema)
218
+
219
+ function toIOTS<T>(type: ZodMiniType<T>): t.Type<T> {
220
+ return new t.Type<T>(
221
+ "Type",
222
+ (input): input is T => type.safeParse(input).success,
223
+ (input, context) => {
224
+ const result = type.safeParse(input)
225
+ return result.success
226
+ ? t.success(result.data)
227
+ : t.failure(
228
+ input,
229
+ context,
230
+ result.error.issues.map((issue) => formatIssue(issue, input)).join("\n"),
231
+ )
232
+ },
233
+ t.identity,
234
+ )
235
+ }
236
+
237
+ function toIOTSCodec<TArgs extends unknown[], A, LegacyRaw, AllowUndefined extends boolean>(
238
+ codecFactory: (...args: TArgs) => LegacyCodec<A, LegacyRaw, AllowUndefined>,
239
+ ): (
240
+ ...args: TArgs
241
+ ) => t.Type<A, ReturnType<LegacyCodec<A, LegacyRaw, AllowUndefined>["encode"]>, unknown> {
242
+ return (...args: TArgs) => {
243
+ const codec = codecFactory(...args)
244
+ return new t.Type<A, ReturnType<LegacyCodec<A, LegacyRaw, AllowUndefined>["encode"]>, unknown>(
245
+ codec.name,
246
+ codec.is,
247
+ (input, context) => {
248
+ const result = codec.decode(input)
249
+ return result.success
250
+ ? t.success(result.data)
251
+ : t.failure(
252
+ input,
253
+ context,
254
+ result.error.issues.map((issue) => formatIssue(issue, input)).join("\n"),
255
+ )
256
+ },
257
+ codec.encode,
258
+ )
259
+ }
260
+ }
261
+
262
+ interface ZodIssue {
263
+ code: string
264
+ message: string
265
+ path?: PropertyKey[]
266
+ expected?: string
267
+ values?: unknown[]
268
+ keys?: string[]
269
+ }
270
+
271
+ function resolveValue(input: unknown, path: PropertyKey[]): unknown {
272
+ let current = input
273
+ for (const key of path) {
274
+ if (current == null || typeof current !== "object") return undefined
275
+ current = (current as Record<PropertyKey, unknown>)[key]
276
+ }
277
+ return current
278
+ }
279
+
280
+ function formatValue(value: unknown): string {
281
+ if (value === null) return "null"
282
+ if (value === undefined) return "undefined"
283
+ if (typeof value === "string") return JSON.stringify(value)
284
+ return String(value)
285
+ }
286
+
287
+ function formatIssue(issue: ZodIssue, input: unknown): string {
288
+ if (issue.code === "custom" && issue.message !== "Invalid input") {
289
+ return issue.message
290
+ }
291
+
292
+ const value = resolveValue(input, issue.path ?? [])
293
+ const pathStr = issue.path?.length ? issue.path.join(".") : undefined
294
+
295
+ if (issue.code === "invalid_value" && issue.values) {
296
+ const expected = issue.values.map(formatValue).join(", ")
297
+ return pathStr
298
+ ? `Invalid value ${formatValue(value)} at .${pathStr}: expected ${expected}`
299
+ : `Invalid value ${formatValue(value)}: expected ${expected}`
300
+ }
301
+
302
+ if (issue.code === "invalid_type" && issue.expected) {
303
+ return pathStr
304
+ ? `Invalid value ${formatValue(value)} at .${pathStr}: expected ${issue.expected}`
305
+ : `Invalid value ${formatValue(value)}: expected ${issue.expected}`
306
+ }
307
+
308
+ if (issue.code === "unrecognized_keys" && issue.keys) {
309
+ return `Unrecognized key(s): ${issue.keys.join(", ")}`
310
+ }
311
+
312
+ return issue.message
313
+ }
@@ -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, Variation } 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<Variation>(
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
+ }