@prismicio/types-internal 2.2.1-alpha.0 → 2.2.1-remove-import.alpha-1

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 (250) hide show
  1. package/lib/common/UUID.d.ts +1 -2
  2. package/lib/content/fields/slices/Slice/CompositeSliceContent.js +1 -2
  3. package/lib/content/fields/slices/Slice/SimpleSliceContent.js +2 -4
  4. package/package.json +1 -1
  5. package/src/common/UUID.ts +1 -1
  6. package/src/content/fields/slices/Slice/CompositeSliceContent.ts +1 -2
  7. package/src/content/fields/slices/Slice/SimpleSliceContent.ts +2 -5
  8. package/lib/import/converters/Document.d.ts +0 -4
  9. package/lib/import/converters/Document.js +0 -21
  10. package/lib/import/converters/fields/Group.d.ts +0 -4
  11. package/lib/import/converters/fields/Group.js +0 -14
  12. package/lib/import/converters/fields/RepeatableZone.d.ts +0 -317
  13. package/lib/import/converters/fields/RepeatableZone.js +0 -15
  14. package/lib/import/converters/fields/RepeatableZoneItem.d.ts +0 -11
  15. package/lib/import/converters/fields/RepeatableZoneItem.js +0 -19
  16. package/lib/import/converters/fields/Slices/SharedSlice.d.ts +0 -4
  17. package/lib/import/converters/fields/Slices/SharedSlice.js +0 -19
  18. package/lib/import/converters/fields/Slices/SharedSliceContent.d.ts +0 -10
  19. package/lib/import/converters/fields/Slices/SharedSliceContent.js +0 -23
  20. package/lib/import/converters/fields/Slices/Slices.d.ts +0 -4
  21. package/lib/import/converters/fields/Slices/Slices.js +0 -16
  22. package/lib/import/converters/fields/Slices/index.d.ts +0 -1
  23. package/lib/import/converters/fields/Slices/index.js +0 -4
  24. package/lib/import/converters/fields/UID.d.ts +0 -3
  25. package/lib/import/converters/fields/UID.js +0 -10
  26. package/lib/import/converters/fields/index.d.ts +0 -4
  27. package/lib/import/converters/fields/index.js +0 -7
  28. package/lib/import/converters/fields/nestable/Boolean.d.ts +0 -3
  29. package/lib/import/converters/fields/nestable/Boolean.js +0 -12
  30. package/lib/import/converters/fields/nestable/Color.d.ts +0 -3
  31. package/lib/import/converters/fields/nestable/Color.js +0 -13
  32. package/lib/import/converters/fields/nestable/Date.d.ts +0 -3
  33. package/lib/import/converters/fields/nestable/Date.js +0 -15
  34. package/lib/import/converters/fields/nestable/Embed.d.ts +0 -4
  35. package/lib/import/converters/fields/nestable/Embed.js +0 -32
  36. package/lib/import/converters/fields/nestable/GeoPoint.d.ts +0 -3
  37. package/lib/import/converters/fields/nestable/GeoPoint.js +0 -15
  38. package/lib/import/converters/fields/nestable/Image.d.ts +0 -28
  39. package/lib/import/converters/fields/nestable/Image.js +0 -67
  40. package/lib/import/converters/fields/nestable/Link.d.ts +0 -4
  41. package/lib/import/converters/fields/nestable/Link.js +0 -70
  42. package/lib/import/converters/fields/nestable/Nestable.d.ts +0 -5
  43. package/lib/import/converters/fields/nestable/Nestable.js +0 -35
  44. package/lib/import/converters/fields/nestable/Number.d.ts +0 -3
  45. package/lib/import/converters/fields/nestable/Number.js +0 -13
  46. package/lib/import/converters/fields/nestable/RichText/embedBlock.d.ts +0 -4
  47. package/lib/import/converters/fields/nestable/RichText/embedBlock.js +0 -14
  48. package/lib/import/converters/fields/nestable/RichText/imageBlock.d.ts +0 -4
  49. package/lib/import/converters/fields/nestable/RichText/imageBlock.js +0 -12
  50. package/lib/import/converters/fields/nestable/RichText/index.d.ts +0 -4
  51. package/lib/import/converters/fields/nestable/RichText/index.js +0 -22
  52. package/lib/import/converters/fields/nestable/RichText/textBlock.d.ts +0 -4
  53. package/lib/import/converters/fields/nestable/RichText/textBlock.js +0 -54
  54. package/lib/import/converters/fields/nestable/Select.d.ts +0 -3
  55. package/lib/import/converters/fields/nestable/Select.js +0 -13
  56. package/lib/import/converters/fields/nestable/Text.d.ts +0 -3
  57. package/lib/import/converters/fields/nestable/Text.js +0 -13
  58. package/lib/import/converters/fields/nestable/Timestamp.d.ts +0 -3
  59. package/lib/import/converters/fields/nestable/Timestamp.js +0 -13
  60. package/lib/import/converters/fields/nestable/index.d.ts +0 -13
  61. package/lib/import/converters/fields/nestable/index.js +0 -16
  62. package/lib/import/converters/index.d.ts +0 -2
  63. package/lib/import/converters/index.js +0 -5
  64. package/lib/import/index.d.ts +0 -2
  65. package/lib/import/index.js +0 -5
  66. package/lib/import/validators/Document.d.ts +0 -6
  67. package/lib/import/validators/Document.js +0 -64
  68. package/lib/import/validators/fields/ImportContent.d.ts +0 -5
  69. package/lib/import/validators/fields/ImportContent.js +0 -21
  70. package/lib/import/validators/fields/ImportField.d.ts +0 -141
  71. package/lib/import/validators/fields/ImportField.js +0 -33
  72. package/lib/import/validators/fields/ImportGroup.d.ts +0 -345
  73. package/lib/import/validators/fields/ImportGroup.js +0 -27
  74. package/lib/import/validators/fields/ImportSlices/ImportSlices.d.ts +0 -8
  75. package/lib/import/validators/fields/ImportSlices/ImportSlices.js +0 -30
  76. package/lib/import/validators/fields/ImportSlices/SharedSlice/SharedSlice.d.ts +0 -16
  77. package/lib/import/validators/fields/ImportSlices/SharedSlice/SharedSlice.js +0 -61
  78. package/lib/import/validators/fields/ImportSlices/SharedSlice/errors.d.ts +0 -4
  79. package/lib/import/validators/fields/ImportSlices/SharedSlice/errors.js +0 -7
  80. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/OptionalSharedSliceId.d.ts +0 -2
  81. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/OptionalSharedSliceId.js +0 -15
  82. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceId.d.ts +0 -9
  83. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceId.js +0 -39
  84. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceType.d.ts +0 -11
  85. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceType.js +0 -24
  86. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceVariation.d.ts +0 -11
  87. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceVariation.js +0 -24
  88. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/index.d.ts +0 -4
  89. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/index.js +0 -7
  90. package/lib/import/validators/fields/ImportSlices/SharedSlice/index.d.ts +0 -3
  91. package/lib/import/validators/fields/ImportSlices/SharedSlice/index.js +0 -6
  92. package/lib/import/validators/fields/ImportSlices/SharedSlice/utils.d.ts +0 -342
  93. package/lib/import/validators/fields/ImportSlices/SharedSlice/utils.js +0 -11
  94. package/lib/import/validators/fields/ImportSlices/index.d.ts +0 -1
  95. package/lib/import/validators/fields/ImportSlices/index.js +0 -4
  96. package/lib/import/validators/fields/ImportSlices/utils.d.ts +0 -4
  97. package/lib/import/validators/fields/ImportSlices/utils.js +0 -35
  98. package/lib/import/validators/fields/RepeatableZone.d.ts +0 -11
  99. package/lib/import/validators/fields/RepeatableZone.js +0 -14
  100. package/lib/import/validators/fields/RepeatableZoneItem.d.ts +0 -11
  101. package/lib/import/validators/fields/RepeatableZoneItem.js +0 -39
  102. package/lib/import/validators/fields/UID.d.ts +0 -6
  103. package/lib/import/validators/fields/UID.js +0 -15
  104. package/lib/import/validators/fields/index.d.ts +0 -4
  105. package/lib/import/validators/fields/index.js +0 -7
  106. package/lib/import/validators/fields/nestable/Boolean.d.ts +0 -6
  107. package/lib/import/validators/fields/nestable/Boolean.js +0 -6
  108. package/lib/import/validators/fields/nestable/Color.d.ts +0 -6
  109. package/lib/import/validators/fields/nestable/Color.js +0 -15
  110. package/lib/import/validators/fields/nestable/Date.d.ts +0 -6
  111. package/lib/import/validators/fields/nestable/Date.js +0 -19
  112. package/lib/import/validators/fields/nestable/Embed.d.ts +0 -13
  113. package/lib/import/validators/fields/nestable/Embed.js +0 -31
  114. package/lib/import/validators/fields/nestable/GeoPoint.d.ts +0 -13
  115. package/lib/import/validators/fields/nestable/GeoPoint.js +0 -13
  116. package/lib/import/validators/fields/nestable/Image/default.d.ts +0 -22
  117. package/lib/import/validators/fields/nestable/Image/default.js +0 -19
  118. package/lib/import/validators/fields/nestable/Image/index.d.ts +0 -26
  119. package/lib/import/validators/fields/nestable/Image/index.js +0 -32
  120. package/lib/import/validators/fields/nestable/Image/merge.d.ts +0 -23
  121. package/lib/import/validators/fields/nestable/Image/merge.js +0 -44
  122. package/lib/import/validators/fields/nestable/Image/model.d.ts +0 -18
  123. package/lib/import/validators/fields/nestable/Image/model.js +0 -2
  124. package/lib/import/validators/fields/nestable/Image/validators.d.ts +0 -132
  125. package/lib/import/validators/fields/nestable/Image/validators.js +0 -43
  126. package/lib/import/validators/fields/nestable/ImportRichText/ImportBlock.d.ts +0 -6
  127. package/lib/import/validators/fields/nestable/ImportRichText/ImportBlock.js +0 -25
  128. package/lib/import/validators/fields/nestable/ImportRichText/ImportRichText.d.ts +0 -24
  129. package/lib/import/validators/fields/nestable/ImportRichText/ImportRichText.js +0 -32
  130. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportBlockType.d.ts +0 -6
  131. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportBlockType.js +0 -18
  132. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportEmbedBlock.d.ts +0 -10
  133. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportEmbedBlock.js +0 -11
  134. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportImageBlock.d.ts +0 -22
  135. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportImageBlock.js +0 -13
  136. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportTextBlock.d.ts +0 -78
  137. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportTextBlock.js +0 -43
  138. package/lib/import/validators/fields/nestable/ImportRichText/blocks/Span.d.ts +0 -79
  139. package/lib/import/validators/fields/nestable/ImportRichText/blocks/Span.js +0 -27
  140. package/lib/import/validators/fields/nestable/ImportRichText/blocks/index.d.ts +0 -4
  141. package/lib/import/validators/fields/nestable/ImportRichText/blocks/index.js +0 -7
  142. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/HyperlinkSpan.d.ts +0 -24
  143. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/HyperlinkSpan.js +0 -18
  144. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/LabelSpan.d.ts +0 -12
  145. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/LabelSpan.js +0 -16
  146. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/SpanLocation.d.ts +0 -5
  147. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/SpanLocation.js +0 -10
  148. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/TextSpan.d.ts +0 -15
  149. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/TextSpan.js +0 -20
  150. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/index.d.ts +0 -2
  151. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/index.js +0 -5
  152. package/lib/import/validators/fields/nestable/ImportRichText/index.d.ts +0 -2
  153. package/lib/import/validators/fields/nestable/ImportRichText/index.js +0 -7
  154. package/lib/import/validators/fields/nestable/Link.d.ts +0 -53
  155. package/lib/import/validators/fields/nestable/Link.js +0 -35
  156. package/lib/import/validators/fields/nestable/Nestable.d.ts +0 -192
  157. package/lib/import/validators/fields/nestable/Nestable.js +0 -71
  158. package/lib/import/validators/fields/nestable/Number.d.ts +0 -17
  159. package/lib/import/validators/fields/nestable/Number.js +0 -17
  160. package/lib/import/validators/fields/nestable/Select.d.ts +0 -16
  161. package/lib/import/validators/fields/nestable/Select.js +0 -19
  162. package/lib/import/validators/fields/nestable/Text.d.ts +0 -6
  163. package/lib/import/validators/fields/nestable/Text.js +0 -6
  164. package/lib/import/validators/fields/nestable/Timestamp.d.ts +0 -7
  165. package/lib/import/validators/fields/nestable/Timestamp.js +0 -19
  166. package/lib/import/validators/fields/nestable/index.d.ts +0 -14
  167. package/lib/import/validators/fields/nestable/index.js +0 -19
  168. package/lib/import/validators/index.d.ts +0 -2
  169. package/lib/import/validators/index.js +0 -5
  170. package/src/import/converters/Document.ts +0 -38
  171. package/src/import/converters/fields/Group.ts +0 -18
  172. package/src/import/converters/fields/RepeatableZone.ts +0 -19
  173. package/src/import/converters/fields/RepeatableZoneItem.ts +0 -32
  174. package/src/import/converters/fields/Slices/SharedSlice.ts +0 -24
  175. package/src/import/converters/fields/Slices/SharedSliceContent.ts +0 -27
  176. package/src/import/converters/fields/Slices/Slices.ts +0 -20
  177. package/src/import/converters/fields/Slices/index.ts +0 -1
  178. package/src/import/converters/fields/UID.ts +0 -9
  179. package/src/import/converters/fields/index.ts +0 -4
  180. package/src/import/converters/fields/nestable/Boolean.ts +0 -13
  181. package/src/import/converters/fields/nestable/Color.ts +0 -14
  182. package/src/import/converters/fields/nestable/Date.ts +0 -17
  183. package/src/import/converters/fields/nestable/Embed.ts +0 -37
  184. package/src/import/converters/fields/nestable/GeoPoint.ts +0 -16
  185. package/src/import/converters/fields/nestable/Image.ts +0 -91
  186. package/src/import/converters/fields/nestable/Link.ts +0 -77
  187. package/src/import/converters/fields/nestable/Nestable.ts +0 -55
  188. package/src/import/converters/fields/nestable/Number.ts +0 -14
  189. package/src/import/converters/fields/nestable/RichText/embedBlock.ts +0 -17
  190. package/src/import/converters/fields/nestable/RichText/imageBlock.ts +0 -17
  191. package/src/import/converters/fields/nestable/RichText/index.ts +0 -23
  192. package/src/import/converters/fields/nestable/RichText/textBlock.ts +0 -62
  193. package/src/import/converters/fields/nestable/Select.ts +0 -14
  194. package/src/import/converters/fields/nestable/Text.ts +0 -14
  195. package/src/import/converters/fields/nestable/Timestamp.ts +0 -14
  196. package/src/import/converters/fields/nestable/index.ts +0 -13
  197. package/src/import/converters/index.ts +0 -2
  198. package/src/import/index.ts +0 -2
  199. package/src/import/validators/Document.ts +0 -103
  200. package/src/import/validators/fields/ImportContent.ts +0 -30
  201. package/src/import/validators/fields/ImportField.ts +0 -36
  202. package/src/import/validators/fields/ImportGroup.ts +0 -45
  203. package/src/import/validators/fields/ImportSlices/ImportSlices.ts +0 -56
  204. package/src/import/validators/fields/ImportSlices/SharedSlice/SharedSlice.ts +0 -104
  205. package/src/import/validators/fields/ImportSlices/SharedSlice/errors.ts +0 -6
  206. package/src/import/validators/fields/ImportSlices/SharedSlice/fields/OptionalSharedSliceId.ts +0 -20
  207. package/src/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceId.ts +0 -65
  208. package/src/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceType.ts +0 -45
  209. package/src/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceVariation.ts +0 -45
  210. package/src/import/validators/fields/ImportSlices/SharedSlice/fields/index.ts +0 -4
  211. package/src/import/validators/fields/ImportSlices/SharedSlice/index.ts +0 -3
  212. package/src/import/validators/fields/ImportSlices/SharedSlice/utils.ts +0 -21
  213. package/src/import/validators/fields/ImportSlices/index.ts +0 -1
  214. package/src/import/validators/fields/ImportSlices/utils.ts +0 -43
  215. package/src/import/validators/fields/RepeatableZone.ts +0 -21
  216. package/src/import/validators/fields/RepeatableZoneItem.ts +0 -64
  217. package/src/import/validators/fields/UID.ts +0 -27
  218. package/src/import/validators/fields/index.ts +0 -4
  219. package/src/import/validators/fields/nestable/Boolean.ts +0 -7
  220. package/src/import/validators/fields/nestable/Color.ts +0 -28
  221. package/src/import/validators/fields/nestable/Date.ts +0 -34
  222. package/src/import/validators/fields/nestable/Embed.ts +0 -41
  223. package/src/import/validators/fields/nestable/GeoPoint.ts +0 -21
  224. package/src/import/validators/fields/nestable/Image/default.ts +0 -22
  225. package/src/import/validators/fields/nestable/Image/index.ts +0 -66
  226. package/src/import/validators/fields/nestable/Image/merge.ts +0 -64
  227. package/src/import/validators/fields/nestable/Image/model.ts +0 -18
  228. package/src/import/validators/fields/nestable/Image/validators.ts +0 -70
  229. package/src/import/validators/fields/nestable/ImportRichText/ImportBlock.ts +0 -39
  230. package/src/import/validators/fields/nestable/ImportRichText/ImportRichText.ts +0 -54
  231. package/src/import/validators/fields/nestable/ImportRichText/blocks/ImportBlockType.ts +0 -44
  232. package/src/import/validators/fields/nestable/ImportRichText/blocks/ImportEmbedBlock.ts +0 -13
  233. package/src/import/validators/fields/nestable/ImportRichText/blocks/ImportImageBlock.ts +0 -17
  234. package/src/import/validators/fields/nestable/ImportRichText/blocks/ImportTextBlock.ts +0 -56
  235. package/src/import/validators/fields/nestable/ImportRichText/blocks/Span.ts +0 -48
  236. package/src/import/validators/fields/nestable/ImportRichText/blocks/index.ts +0 -4
  237. package/src/import/validators/fields/nestable/ImportRichText/blocks/spans/HyperlinkSpan.ts +0 -24
  238. package/src/import/validators/fields/nestable/ImportRichText/blocks/spans/LabelSpan.ts +0 -19
  239. package/src/import/validators/fields/nestable/ImportRichText/blocks/spans/SpanLocation.ts +0 -8
  240. package/src/import/validators/fields/nestable/ImportRichText/blocks/spans/TextSpan.ts +0 -24
  241. package/src/import/validators/fields/nestable/ImportRichText/blocks/spans/index.ts +0 -2
  242. package/src/import/validators/fields/nestable/ImportRichText/index.ts +0 -2
  243. package/src/import/validators/fields/nestable/Link.ts +0 -59
  244. package/src/import/validators/fields/nestable/Nestable.ts +0 -88
  245. package/src/import/validators/fields/nestable/Number.ts +0 -38
  246. package/src/import/validators/fields/nestable/Select.ts +0 -38
  247. package/src/import/validators/fields/nestable/Text.ts +0 -7
  248. package/src/import/validators/fields/nestable/Timestamp.ts +0 -39
  249. package/src/import/validators/fields/nestable/index.ts +0 -14
  250. package/src/import/validators/index.ts +0 -2
@@ -1,64 +0,0 @@
1
- import * as E from "fp-ts/Either"
2
- import { pipe } from "fp-ts/function"
3
- import * as t from "io-ts"
4
-
5
- import { WidgetKey } from "../../../common"
6
- import type { NestableWidget } from "../../../customtypes"
7
- import { withCustomError } from "../../../validators/function"
8
- import { ImportNestable } from "./nestable"
9
-
10
- export type RepeatableZoneItem = Record<WidgetKey, ImportNestable>
11
-
12
- /**
13
- * A custom type for an item of a repeatable zone. This type of structure can be found in the 'primary' and 'items' fields of a slice or in the group field.
14
- *
15
- * @param fieldModels a record of all nestable widgets that can be used in the zone
16
- */
17
- export const RepeatableZoneItem = (
18
- fieldModels: Record<WidgetKey, NestableWidget>,
19
- ) =>
20
- new t.Type<RepeatableZoneItem>(
21
- "RepeatableZoneItem",
22
- (u): u is RepeatableZoneItem =>
23
- t.record(WidgetKey, t.unknown).is(u) &&
24
- Object.values(u).reduce<boolean>(
25
- (acc, value) => acc && ImportNestable.is(value),
26
- true,
27
- ),
28
- (u, c) => {
29
- const codecEntries = Object.entries(fieldModels).map(
30
- ([key, model]) => [key, ImportNestable.getCodec(model)] as const,
31
- )
32
-
33
- const groupCodec = withCustomError(
34
- t.partial({
35
- ...Object.fromEntries(codecEntries),
36
- }),
37
- () => "The value must be an object",
38
- )
39
-
40
- return pipe(
41
- groupCodec.validate(u, c),
42
- E.chain((decodedContent) => {
43
- // Validate if all fields are present in the model
44
- const keys = Object.keys(decodedContent)
45
- const errors: t.Errors = keys.flatMap((key) =>
46
- fieldModels[key]
47
- ? []
48
- : [
49
- {
50
- value: decodedContent[key],
51
- context: c,
52
- message: `The field '${key}' is not defined in the custom type`,
53
- },
54
- ],
55
- )
56
-
57
- return errors.length > 0
58
- ? t.failures(errors)
59
- : t.success(decodedContent as RepeatableZoneItem) // We can never have a key with decoded value 'undefined' so we can ignore the type derived from t.partial
60
- }),
61
- )
62
- },
63
- t.identity,
64
- )
@@ -1,27 +0,0 @@
1
- import * as t from "io-ts"
2
-
3
- import { String } from "../../../validators"
4
- import { ImportContent } from "./ImportContent"
5
-
6
- const regex = /^[a-z0-9-_.]+$/
7
-
8
- const uidValue = String.pipe(
9
- new t.Type<string, string, string>(
10
- "ImportUIDField",
11
- (u: unknown): u is string => String.is(u),
12
- (n: string, c: t.Context) => {
13
- if (regex.test(n)) {
14
- return t.success(n)
15
- }
16
- return t.failure(
17
- n,
18
- c,
19
- "UID can only contain alphanumeric characters, dashes, underscores, and dots",
20
- )
21
- },
22
- t.identity,
23
- ),
24
- )
25
-
26
- export const ImportUID = ImportContent("UID", uidValue)
27
- export type ImportUID = t.TypeOf<typeof ImportUID>
@@ -1,4 +0,0 @@
1
- export * from "./nestable"
2
- export * from "./RepeatableZone"
3
- export * from "./RepeatableZoneItem"
4
- export * from "./UID"
@@ -1,7 +0,0 @@
1
- import type { TypeOf } from "io-ts"
2
-
3
- import { Boolean, NullOrElse } from "../../../../validators"
4
- import { ImportContent } from "../ImportContent"
5
-
6
- export const ImportBoolean = ImportContent("Boolean", NullOrElse(Boolean))
7
- export type ImportBoolean = TypeOf<typeof ImportBoolean>
@@ -1,28 +0,0 @@
1
- import * as t from "io-ts"
2
-
3
- import { HexaColor, HexaColorCode } from "../../../../common/HexaColorCode"
4
- import { NullOrElse, String } from "../../../../validators"
5
- import { ImportContent } from "../ImportContent"
6
-
7
- const colorValue = new t.Type<HexaColorCode, HexaColorCode, string>(
8
- "ImportColorValue",
9
- (u: unknown): u is HexaColorCode => String.is(u) && HexaColor.is(u),
10
- (s: string, c: t.Context) => {
11
- if (!HexaColor.is(s)) {
12
- return t.failure(
13
- s,
14
- c,
15
- "The color value must be an hexadecimal color code",
16
- )
17
- }
18
-
19
- return t.success(s)
20
- },
21
- t.identity,
22
- )
23
-
24
- export const ImportColor = ImportContent(
25
- "Color",
26
- NullOrElse(String.pipe(colorValue)),
27
- )
28
- export type ImportColor = t.TypeOf<typeof ImportColor>
@@ -1,34 +0,0 @@
1
- import { chain } from "fp-ts/Either"
2
- import { pipe } from "fp-ts/function"
3
- import * as t from "io-ts"
4
-
5
- import { NullOrElse, String } from "../../../../validators"
6
- import { ImportContent } from "../ImportContent"
7
- const DATE_INPUT_REGEX = /^(\d{1,4})-(\d{1,2})-(\d{1,2})$/
8
-
9
- const dateValue = new t.Type<Date, Date, unknown>(
10
- "ImportNumberValue",
11
- (u: unknown): u is Date => u instanceof Date,
12
- (u: unknown, c: t.Context) =>
13
- pipe(
14
- String.validate(u, c),
15
- chain((s: string) => {
16
- const date = new Date(s)
17
- const isInvalidDate = isNaN(date.getTime())
18
-
19
- if (isInvalidDate || !DATE_INPUT_REGEX.test(s)) {
20
- return t.failure(
21
- u,
22
- c,
23
- "The value must be a Date in the format YYYY-MM-DD",
24
- )
25
- }
26
-
27
- return t.success(date)
28
- }),
29
- ),
30
- t.identity,
31
- )
32
-
33
- export const ImportDate = ImportContent("Date", NullOrElse(dateValue))
34
- export type ImportDate = t.TypeOf<typeof ImportDate>
@@ -1,41 +0,0 @@
1
- import * as t from "io-ts"
2
-
3
- import { EmptyObjectOrElse } from "../../../../validators"
4
- import { ImportContent } from "../ImportContent"
5
-
6
- type URL = string
7
-
8
- function isValidHttpUrl(param: unknown): param is URL {
9
- try {
10
- if (typeof param !== "string") {
11
- return false
12
- }
13
- const url = new URL(param)
14
- return ["http:", "https:"].includes(url.protocol)
15
- } catch (err) {
16
- return false
17
- }
18
- }
19
-
20
- const EmbedUrl = new t.Type<URL, URL, unknown>(
21
- "EmbedUrl",
22
- (u: unknown): u is URL => isValidHttpUrl(u),
23
- (u: unknown, c: t.Context) => {
24
- if (isValidHttpUrl(u)) {
25
- return t.success(u)
26
- } else {
27
- return t.failure(u, c, "The value must be a valid http/https url")
28
- }
29
- },
30
- t.identity,
31
- )
32
-
33
- export const ImportEmbedValue = t.strict({
34
- embed_url: EmbedUrl,
35
- })
36
-
37
- export const ImportEmbed = ImportContent(
38
- "Embed",
39
- EmptyObjectOrElse(ImportEmbedValue),
40
- )
41
- export type ImportEmbed = t.TypeOf<typeof ImportEmbed>
@@ -1,21 +0,0 @@
1
- import type { TypeOf } from "io-ts"
2
- import * as t from "io-ts"
3
-
4
- import { EmptyObjectOrElse, NumberRange } from "../../../../validators"
5
- import { withCustomError } from "../../../../validators/function"
6
- import { ImportContent } from "../ImportContent"
7
-
8
- const GeoPoint = withCustomError(
9
- t.strict({
10
- latitude: NumberRange(-90, 90, "latitude"),
11
- longitude: NumberRange(-180, 180, "longitude"),
12
- }),
13
- () =>
14
- "GeoPoint must be an object with the properties `latitude` and `longitude` between the given ranges",
15
- )
16
-
17
- export const ImportGeoPoint = ImportContent(
18
- "GeoPoint",
19
- EmptyObjectOrElse(GeoPoint),
20
- )
21
- export type ImportGeoPoint = TypeOf<typeof ImportGeoPoint>
@@ -1,22 +0,0 @@
1
- import * as t from "io-ts"
2
-
3
- import type { Image as ImageDefinition } from "../../../../../customtypes"
4
- import { EmptyObject } from "../../../../../validators"
5
-
6
- export const defaultImportImage = (field?: ImageDefinition) => {
7
- // If there is not thumbnails we expect an empty object
8
- if (!field?.config?.thumbnails || !field.config.thumbnails.length)
9
- return EmptyObject
10
-
11
- // If there are thumbnails, we can expect an object with thumbnails as empty objects,
12
- // however we don't accept any other properties for the empty state
13
- return t.strict(
14
- field.config.thumbnails.reduce(
15
- (acc, thumbnail) => ({
16
- ...acc,
17
- [thumbnail.name]: EmptyObject,
18
- }),
19
- {},
20
- ),
21
- )
22
- }
@@ -1,66 +0,0 @@
1
- import { map } from "fp-ts/Either"
2
- import { pipe } from "fp-ts/function"
3
- import type { Validation } from "io-ts"
4
- import * as t from "io-ts"
5
-
6
- import type { Image as ImageDefinition } from "../../../../../customtypes"
7
- import { DefaultOrElse } from "../../../../../validators"
8
- import { withCustomError } from "../../../../../validators/function"
9
- import { ImportContent } from "../../ImportContent"
10
- import { defaultImportImage } from "./default"
11
- import {
12
- mergeImageViewWithCtConstraints,
13
- mergeThumbnailsWithCtConstraints,
14
- } from "./merge"
15
- import type { ImageFieldWithThumbnails } from "./model"
16
- import { ImportImageWithThumbnails } from "./validators"
17
-
18
- /* For code clarity, the output of this validator will be simplified
19
- *
20
- * Input -> type ImageAPIV2 = ImportImageView & ImportThumbnails
21
- * Output -> type ImageWithThumbnails 👇
22
- */
23
-
24
- const ImageFieldCodec = (field?: ImageDefinition) => {
25
- const ImageCodec = ImportImageWithThumbnails(field)
26
- return new t.Type<ImageFieldWithThumbnails>(
27
- "ImageField",
28
- (u: unknown): u is ImageFieldWithThumbnails => ImageCodec.is(u),
29
- (u: unknown, ctx): Validation<ImageFieldWithThumbnails> =>
30
- pipe(
31
- ImageCodec.validate(u, ctx),
32
- map((imageApiV2) => {
33
- const { id, dimensions, edit, copyright, alt, ...thumbnails } =
34
- imageApiV2
35
-
36
- return {
37
- ...mergeImageViewWithCtConstraints(
38
- imageApiV2,
39
- imageApiV2,
40
- field?.config?.constraint,
41
- ),
42
- thumbnails: mergeThumbnailsWithCtConstraints(
43
- thumbnails,
44
- imageApiV2,
45
- field,
46
- ),
47
- }
48
- }),
49
- ),
50
- t.identity,
51
- )
52
- }
53
-
54
- export const ImportImage = (field?: ImageDefinition) =>
55
- ImportContent(
56
- "Image",
57
- withCustomError(
58
- DefaultOrElse<Record<never, never>, ImageFieldWithThumbnails>(
59
- defaultImportImage(field),
60
- )(ImageFieldCodec(field)),
61
- () => "An image field must be an object",
62
- ),
63
- )
64
- export type ImportImage = t.TypeOf<ReturnType<typeof ImportImage>>
65
-
66
- export * from "./model"
@@ -1,64 +0,0 @@
1
- import type { Image } from "../../../../../customtypes"
2
- import type ImageConstraint from "../../../../../customtypes/widgets/shared/ImageConstraint"
3
- import type { ImageField } from "./model"
4
- import type { ImportImageView, ImportThumbnails } from "./validators"
5
-
6
- /* This function merges user input with custom type constraints.
7
- * If a thumbnails' data are missing (`image`) then the default is used (`defaultImage`)
8
- */
9
- export const mergeImageViewWithCtConstraints = (
10
- image: ImportImageView | undefined,
11
- defaultImage: ImportImageView,
12
- constraints: ImageConstraint | undefined,
13
- ): ImageField => {
14
- const background = image?.edit?.background
15
- const width =
16
- constraints?.width ??
17
- image?.dimensions?.width ??
18
- defaultImage?.dimensions?.width
19
- const height =
20
- constraints?.height ??
21
- image?.dimensions?.height ??
22
- defaultImage?.dimensions?.height
23
- const alt = image?.alt
24
- const copyright = image?.copyright
25
-
26
- return {
27
- id: image?.id ?? defaultImage?.id,
28
- edit: {
29
- x: image?.edit?.x ?? 0,
30
- y: image?.edit?.y ?? 0,
31
- zoom: image?.edit?.zoom ?? 1,
32
- ...(background !== undefined ? { background } : {}),
33
- },
34
- dimensions: {
35
- ...(width !== undefined ? { width } : {}),
36
- ...(height !== undefined ? { height } : {}),
37
- },
38
- ...(alt !== undefined ? { alt } : {}),
39
- ...(copyright !== undefined ? { copyright } : {}),
40
- }
41
- }
42
-
43
- /* This function handles each thumbnail defined in the custom type.
44
- *
45
- * For each of them it merges the user input with custom type constraints.
46
- *
47
- * If a thumbnail is missing, the data from the default image is used.
48
- */
49
- export const mergeThumbnailsWithCtConstraints = (
50
- thumbnails: ImportThumbnails,
51
- defaultImage: ImportImageView,
52
- field?: Image,
53
- ) =>
54
- field?.config?.thumbnails?.reduce(
55
- (acc, thumbnail) => ({
56
- ...acc,
57
- [thumbnail.name]: mergeImageViewWithCtConstraints(
58
- thumbnails[thumbnail.name],
59
- defaultImage,
60
- thumbnail,
61
- ),
62
- }),
63
- {},
64
- ) ?? {}
@@ -1,18 +0,0 @@
1
- export type ImageField = {
2
- id: string
3
- edit: {
4
- x: number
5
- y: number
6
- zoom: number
7
- background?: string
8
- }
9
- dimensions: {
10
- width?: number
11
- height?: number
12
- }
13
- copyright?: string | null
14
- alt?: string | null
15
- }
16
- export type ImageFieldWithThumbnails = ImageField & {
17
- thumbnails: Record<string, ImageField>
18
- }
@@ -1,70 +0,0 @@
1
- import * as t from "io-ts"
2
-
3
- import type {
4
- Image as ImageDefinition,
5
- Thumbnail,
6
- } from "../../../../../customtypes"
7
- import {
8
- Number,
9
- String,
10
- StringOrNull,
11
- } from "../../../../../validators/BasicTypes"
12
- import { withCustomError } from "../../../../../validators/function"
13
-
14
- export const ImportImageViewShape = t.intersection([
15
- t.type({
16
- // Image Id
17
- id: String,
18
- }),
19
- t.partial({
20
- // Dimensions here will be used if they are not defined in the custom type
21
- dimensions: withCustomError(
22
- t.partial({
23
- width: Number,
24
- height: Number,
25
- }),
26
- () => "The value must be an object",
27
- ),
28
- // Crop information
29
- edit: withCustomError(
30
- t.partial({
31
- x: Number,
32
- y: Number,
33
- zoom: Number,
34
- background: String,
35
- }),
36
- () => "The value must be an object",
37
- ),
38
- // Copyrights and alt are set in the Asset by default but they can be overrided
39
- copyright: StringOrNull,
40
- alt: StringOrNull,
41
- }),
42
- ])
43
-
44
- export const ImportImageView = withCustomError(
45
- ImportImageViewShape,
46
- () => "The value must be an object",
47
- )
48
- export type ImportImageView = t.TypeOf<typeof ImportImageView>
49
-
50
- const ImportThumbnails = (thumbnails: readonly Thumbnail[]) =>
51
- t.partial(
52
- thumbnails.reduce<Record<string, typeof ImportImageView>>(
53
- (acc, thumbnail) => ({
54
- ...acc,
55
- [thumbnail.name]: ImportImageView,
56
- }),
57
- {},
58
- ),
59
- ) as t.Type<Record<string, ImportImageView>>
60
-
61
- export type ImportThumbnails = t.TypeOf<ReturnType<typeof ImportThumbnails>>
62
-
63
- export const ImportImageWithThumbnails = (def?: ImageDefinition) =>
64
- withCustomError(
65
- t.intersection([
66
- ImportImageViewShape,
67
- ImportThumbnails(def?.config?.thumbnails ?? []),
68
- ]),
69
- () => "The value must be an object",
70
- )
@@ -1,39 +0,0 @@
1
- import * as t from "io-ts"
2
-
3
- import { withCustomError } from "../../../../../validators/function"
4
- import {
5
- ImportBlockType,
6
- ImportEmbedBlock,
7
- ImportImageBlock,
8
- ImportTextBlock,
9
- } from "./blocks"
10
-
11
- export type ImportBlock = ImportTextBlock | ImportImageBlock | ImportEmbedBlock
12
-
13
- export const ImportBlock = (allowedBlockTypes: string[]) =>
14
- withCustomError(
15
- t
16
- .type({
17
- type: ImportBlockType(allowedBlockTypes),
18
- })
19
- .pipe(
20
- new t.Type<ImportBlock, ImportBlock, { type: ImportBlockType }>(
21
- "ImportBlock",
22
- (u): u is ImportBlock =>
23
- t
24
- .union([ImportTextBlock, ImportImageBlock, ImportEmbedBlock])
25
- .is(u),
26
- (u, c) => {
27
- if (u.type === "image") {
28
- return ImportImageBlock.validate(u, c)
29
- } else if (u.type === "embed") {
30
- return ImportEmbedBlock.validate(u, c)
31
- } else {
32
- return ImportTextBlock.validate(u, c)
33
- }
34
- },
35
- t.identity,
36
- ),
37
- ),
38
- () => "Rich text block must be an object",
39
- )
@@ -1,54 +0,0 @@
1
- import * as E from "fp-ts/Either"
2
- import { pipe } from "fp-ts/function"
3
- import * as t from "io-ts"
4
-
5
- import type { RichText as RichTextCustomType } from "../../../../../customtypes"
6
- import { EmptyArrayOrElse } from "../../../../../validators"
7
- import { withCustomError } from "../../../../../validators/function"
8
- import { ImportContent } from "../../ImportContent"
9
- import { ImportBlock } from "./ImportBlock"
10
-
11
- export const ImportRichText = (customType?: RichTextCustomType) => {
12
- const single = customType?.config?.single?.split(",")
13
- const multi = customType?.config?.multi?.split(",")
14
- const allowedBlockTypes = multi || single
15
-
16
- const isSingleBlockAllowed = multi === undefined && single !== undefined
17
-
18
- const BlockCodec = ImportBlock(allowedBlockTypes ?? [])
19
- const RichTextArrayCodec = withCustomError(
20
- t.array(BlockCodec),
21
- () => "Rich text field must be an array",
22
- )
23
-
24
- return ImportContent(
25
- "StructuredText",
26
- EmptyArrayOrElse(
27
- new t.ArrayType<typeof BlockCodec, ImportBlock[], ImportBlock[]>(
28
- RichTextArrayCodec.name,
29
- (u): u is ImportBlock[] => RichTextArrayCodec.is(u),
30
- (u, c) => {
31
- if (allowedBlockTypes === undefined) {
32
- throw new Error(
33
- "Invalid custom type for the rich text field: the model is missing a 'single' or 'multi' field defining a list of allowed block types",
34
- )
35
- }
36
-
37
- return pipe(
38
- RichTextArrayCodec.validate(u, c),
39
- E.chain((blocks) => {
40
- if (isSingleBlockAllowed && blocks.length > 1) {
41
- return t.failure(blocks, c, "This field only allows one block")
42
- }
43
- return t.success(blocks)
44
- }),
45
- )
46
- },
47
- t.identity,
48
- BlockCodec,
49
- ),
50
- ),
51
- )
52
- }
53
-
54
- export type ImportRichText = t.TypeOf<ReturnType<typeof ImportRichText>>
@@ -1,44 +0,0 @@
1
- import * as E from "fp-ts/Either"
2
- import { pipe } from "fp-ts/function"
3
- import * as t from "io-ts"
4
-
5
- import { withCustomError } from "../../../../../../validators/function"
6
- import { ImportEmbedBlockType } from "./ImportEmbedBlock"
7
- import { ImportImageBlockType } from "./ImportImageBlock"
8
- import { ImportTextBlockType } from "./ImportTextBlock"
9
-
10
- export type ImportBlockType =
11
- | ImportTextBlockType
12
- | ImportImageBlockType
13
- | ImportEmbedBlockType
14
-
15
- const ImportBlockTypeValidator = withCustomError(
16
- t.union([ImportTextBlockType, ImportImageBlockType, ImportEmbedBlockType]),
17
- () =>
18
- `Invalid block type. Supported block types are: ${Object.keys(
19
- ImportTextBlockType.keys,
20
- ).join(", ")}, ${ImportImageBlockType.value}, ${
21
- ImportEmbedBlockType.value
22
- }`,
23
- )
24
-
25
- export const ImportBlockType = (allowedBlockTypes: string[]) =>
26
- new t.Type<ImportBlockType>(
27
- "ImportBlockType",
28
- (u): u is ImportBlockType => ImportBlockTypeValidator.is(u),
29
- (u, c) => {
30
- return pipe(
31
- ImportBlockTypeValidator.validate(u, c),
32
- E.chain((validBlockType) =>
33
- allowedBlockTypes.includes(validBlockType)
34
- ? t.success(validBlockType)
35
- : t.failure(
36
- u,
37
- c,
38
- `The block type '${validBlockType}' is not allowed in your document type. Enable the type for this rich text field to create the document.`,
39
- ),
40
- ),
41
- )
42
- },
43
- t.identity,
44
- )
@@ -1,13 +0,0 @@
1
- import * as t from "io-ts"
2
-
3
- import { ImportEmbedValue } from "../../Embed"
4
-
5
- export const ImportEmbedBlockType = t.literal("embed")
6
- export type ImportEmbedBlockType = t.TypeOf<typeof ImportEmbedBlockType>
7
-
8
- export const ImportEmbedBlock = t.strict({
9
- type: ImportEmbedBlockType,
10
- oembed: ImportEmbedValue,
11
- })
12
-
13
- export type ImportEmbedBlock = t.TypeOf<typeof ImportEmbedBlock>
@@ -1,17 +0,0 @@
1
- import * as t from "io-ts"
2
-
3
- import { ImportImageView } from "../../Image/validators"
4
-
5
- export const ImportImageBlockType = t.literal("image")
6
- export type ImportImageBlockType = t.TypeOf<typeof ImportImageBlockType>
7
-
8
- export const ImportImageBlock = t.exact(
9
- t.intersection([
10
- t.type({
11
- type: ImportImageBlockType,
12
- }),
13
- ImportImageView,
14
- ]),
15
- )
16
-
17
- export type ImportImageBlock = t.TypeOf<typeof ImportImageBlock>