@prismicio/types-internal 2.2.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.
- package/lib/common/UUID.d.ts +1 -2
- package/package.json +1 -1
- package/src/common/UUID.ts +1 -1
- package/lib/import/converters/Document.d.ts +0 -4
- package/lib/import/converters/Document.js +0 -21
- package/lib/import/converters/fields/Group.d.ts +0 -4
- package/lib/import/converters/fields/Group.js +0 -14
- package/lib/import/converters/fields/RepeatableZone.d.ts +0 -317
- package/lib/import/converters/fields/RepeatableZone.js +0 -15
- package/lib/import/converters/fields/RepeatableZoneItem.d.ts +0 -11
- package/lib/import/converters/fields/RepeatableZoneItem.js +0 -19
- package/lib/import/converters/fields/Slices/SharedSlice.d.ts +0 -4
- package/lib/import/converters/fields/Slices/SharedSlice.js +0 -19
- package/lib/import/converters/fields/Slices/SharedSliceContent.d.ts +0 -10
- package/lib/import/converters/fields/Slices/SharedSliceContent.js +0 -23
- package/lib/import/converters/fields/Slices/Slices.d.ts +0 -4
- package/lib/import/converters/fields/Slices/Slices.js +0 -16
- package/lib/import/converters/fields/Slices/index.d.ts +0 -1
- package/lib/import/converters/fields/Slices/index.js +0 -4
- package/lib/import/converters/fields/UID.d.ts +0 -3
- package/lib/import/converters/fields/UID.js +0 -10
- package/lib/import/converters/fields/index.d.ts +0 -4
- package/lib/import/converters/fields/index.js +0 -7
- package/lib/import/converters/fields/nestable/Boolean.d.ts +0 -3
- package/lib/import/converters/fields/nestable/Boolean.js +0 -12
- package/lib/import/converters/fields/nestable/Color.d.ts +0 -3
- package/lib/import/converters/fields/nestable/Color.js +0 -13
- package/lib/import/converters/fields/nestable/Date.d.ts +0 -3
- package/lib/import/converters/fields/nestable/Date.js +0 -15
- package/lib/import/converters/fields/nestable/Embed.d.ts +0 -4
- package/lib/import/converters/fields/nestable/Embed.js +0 -32
- package/lib/import/converters/fields/nestable/GeoPoint.d.ts +0 -3
- package/lib/import/converters/fields/nestable/GeoPoint.js +0 -15
- package/lib/import/converters/fields/nestable/Image.d.ts +0 -28
- package/lib/import/converters/fields/nestable/Image.js +0 -67
- package/lib/import/converters/fields/nestable/Link.d.ts +0 -4
- package/lib/import/converters/fields/nestable/Link.js +0 -70
- package/lib/import/converters/fields/nestable/Nestable.d.ts +0 -5
- package/lib/import/converters/fields/nestable/Nestable.js +0 -35
- package/lib/import/converters/fields/nestable/Number.d.ts +0 -3
- package/lib/import/converters/fields/nestable/Number.js +0 -13
- package/lib/import/converters/fields/nestable/RichText/embedBlock.d.ts +0 -4
- package/lib/import/converters/fields/nestable/RichText/embedBlock.js +0 -14
- package/lib/import/converters/fields/nestable/RichText/imageBlock.d.ts +0 -4
- package/lib/import/converters/fields/nestable/RichText/imageBlock.js +0 -12
- package/lib/import/converters/fields/nestable/RichText/index.d.ts +0 -4
- package/lib/import/converters/fields/nestable/RichText/index.js +0 -22
- package/lib/import/converters/fields/nestable/RichText/textBlock.d.ts +0 -4
- package/lib/import/converters/fields/nestable/RichText/textBlock.js +0 -54
- package/lib/import/converters/fields/nestable/Select.d.ts +0 -3
- package/lib/import/converters/fields/nestable/Select.js +0 -13
- package/lib/import/converters/fields/nestable/Text.d.ts +0 -3
- package/lib/import/converters/fields/nestable/Text.js +0 -13
- package/lib/import/converters/fields/nestable/Timestamp.d.ts +0 -3
- package/lib/import/converters/fields/nestable/Timestamp.js +0 -13
- package/lib/import/converters/fields/nestable/index.d.ts +0 -13
- package/lib/import/converters/fields/nestable/index.js +0 -16
- package/lib/import/converters/index.d.ts +0 -2
- package/lib/import/converters/index.js +0 -5
- package/lib/import/index.d.ts +0 -2
- package/lib/import/index.js +0 -5
- package/lib/import/validators/Document.d.ts +0 -6
- package/lib/import/validators/Document.js +0 -64
- package/lib/import/validators/fields/ImportContent.d.ts +0 -5
- package/lib/import/validators/fields/ImportContent.js +0 -21
- package/lib/import/validators/fields/ImportField.d.ts +0 -141
- package/lib/import/validators/fields/ImportField.js +0 -33
- package/lib/import/validators/fields/ImportGroup.d.ts +0 -345
- package/lib/import/validators/fields/ImportGroup.js +0 -27
- package/lib/import/validators/fields/ImportSlices/ImportSlices.d.ts +0 -8
- package/lib/import/validators/fields/ImportSlices/ImportSlices.js +0 -30
- package/lib/import/validators/fields/ImportSlices/SharedSlice/SharedSlice.d.ts +0 -16
- package/lib/import/validators/fields/ImportSlices/SharedSlice/SharedSlice.js +0 -61
- package/lib/import/validators/fields/ImportSlices/SharedSlice/errors.d.ts +0 -4
- package/lib/import/validators/fields/ImportSlices/SharedSlice/errors.js +0 -7
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/OptionalSharedSliceId.d.ts +0 -2
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/OptionalSharedSliceId.js +0 -15
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceContent/SharedSliceContent.d.ts +0 -17
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceContent/SharedSliceContent.js +0 -30
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceContent/SharedSliceContentEntry.d.ts +0 -43
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceContent/SharedSliceContentEntry.js +0 -69
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceContent/errors.d.ts +0 -4
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceContent/errors.js +0 -6
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceContent/index.d.ts +0 -2
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceContent/index.js +0 -5
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceContent/types.d.ts +0 -1
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceContent/types.js +0 -2
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceId.d.ts +0 -9
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceId.js +0 -39
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceType.d.ts +0 -11
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceType.js +0 -24
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceVariation.d.ts +0 -11
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceVariation.js +0 -24
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/index.d.ts +0 -4
- package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/index.js +0 -7
- package/lib/import/validators/fields/ImportSlices/SharedSlice/index.d.ts +0 -3
- package/lib/import/validators/fields/ImportSlices/SharedSlice/index.js +0 -6
- package/lib/import/validators/fields/ImportSlices/SharedSlice/utils.d.ts +0 -342
- package/lib/import/validators/fields/ImportSlices/SharedSlice/utils.js +0 -11
- package/lib/import/validators/fields/ImportSlices/index.d.ts +0 -1
- package/lib/import/validators/fields/ImportSlices/index.js +0 -4
- package/lib/import/validators/fields/ImportSlices/utils.d.ts +0 -4
- package/lib/import/validators/fields/ImportSlices/utils.js +0 -35
- package/lib/import/validators/fields/RepeatableZone.d.ts +0 -11
- package/lib/import/validators/fields/RepeatableZone.js +0 -14
- package/lib/import/validators/fields/RepeatableZoneItem.d.ts +0 -11
- package/lib/import/validators/fields/RepeatableZoneItem.js +0 -39
- package/lib/import/validators/fields/UID.d.ts +0 -6
- package/lib/import/validators/fields/UID.js +0 -15
- package/lib/import/validators/fields/index.d.ts +0 -4
- package/lib/import/validators/fields/index.js +0 -7
- package/lib/import/validators/fields/nestable/Boolean.d.ts +0 -6
- package/lib/import/validators/fields/nestable/Boolean.js +0 -6
- package/lib/import/validators/fields/nestable/Color.d.ts +0 -6
- package/lib/import/validators/fields/nestable/Color.js +0 -15
- package/lib/import/validators/fields/nestable/Date.d.ts +0 -6
- package/lib/import/validators/fields/nestable/Date.js +0 -19
- package/lib/import/validators/fields/nestable/Embed.d.ts +0 -13
- package/lib/import/validators/fields/nestable/Embed.js +0 -31
- package/lib/import/validators/fields/nestable/GeoPoint.d.ts +0 -13
- package/lib/import/validators/fields/nestable/GeoPoint.js +0 -13
- package/lib/import/validators/fields/nestable/Image/default.d.ts +0 -22
- package/lib/import/validators/fields/nestable/Image/default.js +0 -19
- package/lib/import/validators/fields/nestable/Image/index.d.ts +0 -45
- package/lib/import/validators/fields/nestable/Image/index.js +0 -41
- package/lib/import/validators/fields/nestable/Image/merge.d.ts +0 -23
- package/lib/import/validators/fields/nestable/Image/merge.js +0 -44
- package/lib/import/validators/fields/nestable/Image/model.d.ts +0 -18
- package/lib/import/validators/fields/nestable/Image/model.js +0 -2
- package/lib/import/validators/fields/nestable/Image/validators.d.ts +0 -35
- package/lib/import/validators/fields/nestable/Image/validators.js +0 -31
- package/lib/import/validators/fields/nestable/ImportRichText/ImportBlock.d.ts +0 -6
- package/lib/import/validators/fields/nestable/ImportRichText/ImportBlock.js +0 -25
- package/lib/import/validators/fields/nestable/ImportRichText/ImportRichText.d.ts +0 -24
- package/lib/import/validators/fields/nestable/ImportRichText/ImportRichText.js +0 -32
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportBlockType.d.ts +0 -6
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportBlockType.js +0 -18
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportEmbedBlock.d.ts +0 -10
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportEmbedBlock.js +0 -11
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportImageBlock.d.ts +0 -22
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportImageBlock.js +0 -13
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportTextBlock.d.ts +0 -78
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportTextBlock.js +0 -43
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/Span.d.ts +0 -79
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/Span.js +0 -27
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/index.d.ts +0 -4
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/index.js +0 -7
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/HyperlinkSpan.d.ts +0 -24
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/HyperlinkSpan.js +0 -18
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/LabelSpan.d.ts +0 -12
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/LabelSpan.js +0 -16
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/SpanLocation.d.ts +0 -5
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/SpanLocation.js +0 -10
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/TextSpan.d.ts +0 -15
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/TextSpan.js +0 -20
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/index.d.ts +0 -2
- package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/index.js +0 -5
- package/lib/import/validators/fields/nestable/ImportRichText/index.d.ts +0 -2
- package/lib/import/validators/fields/nestable/ImportRichText/index.js +0 -7
- package/lib/import/validators/fields/nestable/Link.d.ts +0 -53
- package/lib/import/validators/fields/nestable/Link.js +0 -35
- package/lib/import/validators/fields/nestable/Nestable.d.ts +0 -192
- package/lib/import/validators/fields/nestable/Nestable.js +0 -71
- package/lib/import/validators/fields/nestable/Number.d.ts +0 -17
- package/lib/import/validators/fields/nestable/Number.js +0 -17
- package/lib/import/validators/fields/nestable/Select.d.ts +0 -16
- package/lib/import/validators/fields/nestable/Select.js +0 -19
- package/lib/import/validators/fields/nestable/Text.d.ts +0 -6
- package/lib/import/validators/fields/nestable/Text.js +0 -6
- package/lib/import/validators/fields/nestable/Timestamp.d.ts +0 -7
- package/lib/import/validators/fields/nestable/Timestamp.js +0 -19
- package/lib/import/validators/fields/nestable/index.d.ts +0 -14
- package/lib/import/validators/fields/nestable/index.js +0 -19
- package/lib/import/validators/index.d.ts +0 -2
- package/lib/import/validators/index.js +0 -5
- package/lib/utils/io-ts.d.ts +0 -2
- package/lib/utils/io-ts.js +0 -22
- package/src/import/converters/Document.ts +0 -38
- package/src/import/converters/fields/Group.ts +0 -18
- package/src/import/converters/fields/RepeatableZone.ts +0 -19
- package/src/import/converters/fields/RepeatableZoneItem.ts +0 -32
- package/src/import/converters/fields/Slices/SharedSlice.ts +0 -24
- package/src/import/converters/fields/Slices/SharedSliceContent.ts +0 -27
- package/src/import/converters/fields/Slices/Slices.ts +0 -20
- package/src/import/converters/fields/Slices/index.ts +0 -1
- package/src/import/converters/fields/UID.ts +0 -9
- package/src/import/converters/fields/index.ts +0 -4
- package/src/import/converters/fields/nestable/Boolean.ts +0 -13
- package/src/import/converters/fields/nestable/Color.ts +0 -14
- package/src/import/converters/fields/nestable/Date.ts +0 -17
- package/src/import/converters/fields/nestable/Embed.ts +0 -37
- package/src/import/converters/fields/nestable/GeoPoint.ts +0 -16
- package/src/import/converters/fields/nestable/Image.ts +0 -91
- package/src/import/converters/fields/nestable/Link.ts +0 -77
- package/src/import/converters/fields/nestable/Nestable.ts +0 -55
- package/src/import/converters/fields/nestable/Number.ts +0 -14
- package/src/import/converters/fields/nestable/RichText/embedBlock.ts +0 -17
- package/src/import/converters/fields/nestable/RichText/imageBlock.ts +0 -17
- package/src/import/converters/fields/nestable/RichText/index.ts +0 -23
- package/src/import/converters/fields/nestable/RichText/textBlock.ts +0 -62
- package/src/import/converters/fields/nestable/Select.ts +0 -14
- package/src/import/converters/fields/nestable/Text.ts +0 -14
- package/src/import/converters/fields/nestable/Timestamp.ts +0 -14
- package/src/import/converters/fields/nestable/index.ts +0 -13
- package/src/import/converters/index.ts +0 -2
- package/src/import/index.ts +0 -2
- package/src/import/validators/Document.ts +0 -103
- package/src/import/validators/fields/ImportContent.ts +0 -30
- package/src/import/validators/fields/ImportField.ts +0 -36
- package/src/import/validators/fields/ImportGroup.ts +0 -45
- package/src/import/validators/fields/ImportSlices/ImportSlices.ts +0 -56
- package/src/import/validators/fields/ImportSlices/SharedSlice/SharedSlice.ts +0 -104
- package/src/import/validators/fields/ImportSlices/SharedSlice/errors.ts +0 -6
- package/src/import/validators/fields/ImportSlices/SharedSlice/fields/OptionalSharedSliceId.ts +0 -20
- package/src/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceId.ts +0 -65
- package/src/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceType.ts +0 -45
- package/src/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceVariation.ts +0 -45
- package/src/import/validators/fields/ImportSlices/SharedSlice/fields/index.ts +0 -4
- package/src/import/validators/fields/ImportSlices/SharedSlice/index.ts +0 -3
- package/src/import/validators/fields/ImportSlices/SharedSlice/utils.ts +0 -21
- package/src/import/validators/fields/ImportSlices/index.ts +0 -1
- package/src/import/validators/fields/ImportSlices/utils.ts +0 -43
- package/src/import/validators/fields/RepeatableZone.ts +0 -21
- package/src/import/validators/fields/RepeatableZoneItem.ts +0 -64
- package/src/import/validators/fields/UID.ts +0 -27
- package/src/import/validators/fields/index.ts +0 -4
- package/src/import/validators/fields/nestable/Boolean.ts +0 -7
- package/src/import/validators/fields/nestable/Color.ts +0 -28
- package/src/import/validators/fields/nestable/Date.ts +0 -34
- package/src/import/validators/fields/nestable/Embed.ts +0 -41
- package/src/import/validators/fields/nestable/GeoPoint.ts +0 -21
- package/src/import/validators/fields/nestable/Image/default.ts +0 -25
- package/src/import/validators/fields/nestable/Image/index.ts +0 -73
- package/src/import/validators/fields/nestable/Image/merge.ts +0 -64
- package/src/import/validators/fields/nestable/Image/model.ts +0 -18
- package/src/import/validators/fields/nestable/Image/validators.ts +0 -45
- package/src/import/validators/fields/nestable/ImportRichText/ImportBlock.ts +0 -39
- package/src/import/validators/fields/nestable/ImportRichText/ImportRichText.ts +0 -54
- package/src/import/validators/fields/nestable/ImportRichText/blocks/ImportBlockType.ts +0 -44
- package/src/import/validators/fields/nestable/ImportRichText/blocks/ImportEmbedBlock.ts +0 -13
- package/src/import/validators/fields/nestable/ImportRichText/blocks/ImportImageBlock.ts +0 -17
- package/src/import/validators/fields/nestable/ImportRichText/blocks/ImportTextBlock.ts +0 -56
- package/src/import/validators/fields/nestable/ImportRichText/blocks/Span.ts +0 -48
- package/src/import/validators/fields/nestable/ImportRichText/blocks/index.ts +0 -4
- package/src/import/validators/fields/nestable/ImportRichText/blocks/spans/HyperlinkSpan.ts +0 -24
- package/src/import/validators/fields/nestable/ImportRichText/blocks/spans/LabelSpan.ts +0 -19
- package/src/import/validators/fields/nestable/ImportRichText/blocks/spans/SpanLocation.ts +0 -8
- package/src/import/validators/fields/nestable/ImportRichText/blocks/spans/TextSpan.ts +0 -24
- package/src/import/validators/fields/nestable/ImportRichText/blocks/spans/index.ts +0 -2
- package/src/import/validators/fields/nestable/ImportRichText/index.ts +0 -2
- package/src/import/validators/fields/nestable/Link.ts +0 -59
- package/src/import/validators/fields/nestable/Nestable.ts +0 -88
- package/src/import/validators/fields/nestable/Number.ts +0 -38
- package/src/import/validators/fields/nestable/Select.ts +0 -38
- package/src/import/validators/fields/nestable/Text.ts +0 -7
- package/src/import/validators/fields/nestable/Timestamp.ts +0 -39
- package/src/import/validators/fields/nestable/index.ts +0 -14
- package/src/import/validators/index.ts +0 -2
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import type { Asset } from "../../../../common"
|
|
2
|
-
import type { Embed } from "../../../../common/Embed"
|
|
3
|
-
import type { NestableContent } from "../../../../content"
|
|
4
|
-
import type { ImportNestable } from "../../../validators"
|
|
5
|
-
import {
|
|
6
|
-
booleanConverter,
|
|
7
|
-
colorConverter,
|
|
8
|
-
dateConverter,
|
|
9
|
-
embedConverter,
|
|
10
|
-
geopointConverter,
|
|
11
|
-
imageConverter,
|
|
12
|
-
linkConverter,
|
|
13
|
-
numberConverter,
|
|
14
|
-
richTextConverter,
|
|
15
|
-
selectConverter,
|
|
16
|
-
textConverter,
|
|
17
|
-
timestampConverter,
|
|
18
|
-
} from "."
|
|
19
|
-
|
|
20
|
-
export function convertNestableWidget(
|
|
21
|
-
field: ImportNestable,
|
|
22
|
-
assets: Record<Asset["id"], Asset | undefined>,
|
|
23
|
-
embeds: Record<string, Embed | undefined>,
|
|
24
|
-
): NestableContent | undefined {
|
|
25
|
-
switch (field.type) {
|
|
26
|
-
case "Boolean":
|
|
27
|
-
return booleanConverter(field.value)
|
|
28
|
-
case "Color":
|
|
29
|
-
return colorConverter(field.value)
|
|
30
|
-
case "Select":
|
|
31
|
-
return selectConverter(field.value)
|
|
32
|
-
case "Number":
|
|
33
|
-
return numberConverter(field.value)
|
|
34
|
-
case "Text":
|
|
35
|
-
return textConverter(field.value)
|
|
36
|
-
case "Date":
|
|
37
|
-
return dateConverter(field.value)
|
|
38
|
-
case "Timestamp":
|
|
39
|
-
return timestampConverter(field.value)
|
|
40
|
-
case "Embed":
|
|
41
|
-
return embedConverter(field.value, embeds)
|
|
42
|
-
case "GeoPoint":
|
|
43
|
-
return geopointConverter(field.value)
|
|
44
|
-
case "Link":
|
|
45
|
-
return linkConverter(field.value, assets)
|
|
46
|
-
case "Image":
|
|
47
|
-
return imageConverter(field.value, assets)
|
|
48
|
-
case "StructuredText":
|
|
49
|
-
return richTextConverter(field.value, assets, embeds)
|
|
50
|
-
default:
|
|
51
|
-
throw new Error(
|
|
52
|
-
`Unsupported type of nestable converter ${JSON.stringify(field)}`,
|
|
53
|
-
)
|
|
54
|
-
}
|
|
55
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { NumberContent } from "../../../../content"
|
|
2
|
-
import type { ImportNumber } from "../../../validators"
|
|
3
|
-
|
|
4
|
-
export const numberConverter = (
|
|
5
|
-
field: ImportNumber["value"],
|
|
6
|
-
): NumberContent | undefined => {
|
|
7
|
-
if (field === null) return
|
|
8
|
-
|
|
9
|
-
return {
|
|
10
|
-
type: "Number",
|
|
11
|
-
value: field.toString(),
|
|
12
|
-
__TYPE__: "FieldContent",
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { Embed } from "../../../../../common"
|
|
2
|
-
import type { EmbedBlock } from "../../../../../content"
|
|
3
|
-
import type { ImportEmbedBlock } from "../../../../validators/fields/nestable/ImportRichText/blocks"
|
|
4
|
-
import { embedConverter } from "../Embed"
|
|
5
|
-
|
|
6
|
-
export function embedBlockConverter(
|
|
7
|
-
block: ImportEmbedBlock,
|
|
8
|
-
embeds: Record<string, Embed | undefined>,
|
|
9
|
-
): EmbedBlock {
|
|
10
|
-
const embedData = embedConverter(block.oembed, embeds)
|
|
11
|
-
|
|
12
|
-
if (!embedData) throw new Error("Failed to convert embed data")
|
|
13
|
-
return {
|
|
14
|
-
type: block.type,
|
|
15
|
-
data: embedData,
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Asset, getAssetOrThrow } from "../../../../../common"
|
|
2
|
-
import type { ImageBlock } from "../../../../../content"
|
|
3
|
-
import type { ImportImageBlock } from "../../../../validators/fields/nestable/ImportRichText/blocks"
|
|
4
|
-
import { convertImageView } from "../Image"
|
|
5
|
-
|
|
6
|
-
export function imageBlockConverter(
|
|
7
|
-
block: ImportImageBlock,
|
|
8
|
-
assets: Record<Asset["id"], Asset | undefined>,
|
|
9
|
-
): ImageBlock {
|
|
10
|
-
return {
|
|
11
|
-
type: block.type,
|
|
12
|
-
data: convertImageView<ImportImageBlock>(
|
|
13
|
-
block,
|
|
14
|
-
getAssetOrThrow(assets)(block.id),
|
|
15
|
-
),
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { Asset, Embed } from "../../../../../common"
|
|
2
|
-
import type { RichTextContent } from "../../../../../content"
|
|
3
|
-
import { RichTextContentType } from "../../../../../content"
|
|
4
|
-
import type { ImportRichText } from "../../../../validators"
|
|
5
|
-
import { embedBlockConverter } from "./embedBlock"
|
|
6
|
-
import { imageBlockConverter } from "./imageBlock"
|
|
7
|
-
import { textBlockConverter } from "./textBlock"
|
|
8
|
-
|
|
9
|
-
export const richTextConverter = (
|
|
10
|
-
richTextField: ImportRichText["value"],
|
|
11
|
-
assets: Record<Asset["id"], Asset | undefined>,
|
|
12
|
-
embeds: Record<string, Embed | undefined>,
|
|
13
|
-
): RichTextContent | undefined => {
|
|
14
|
-
if (richTextField === null) return
|
|
15
|
-
return {
|
|
16
|
-
__TYPE__: RichTextContentType,
|
|
17
|
-
value: richTextField.map((block) => {
|
|
18
|
-
if (block.type === "image") return imageBlockConverter(block, assets)
|
|
19
|
-
else if (block.type === "embed") return embedBlockConverter(block, embeds)
|
|
20
|
-
return textBlockConverter(block, assets)
|
|
21
|
-
}),
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import type { Asset } from "../../../../../common"
|
|
2
|
-
import type { Span, TextBlock } from "../../../../../content"
|
|
3
|
-
import type { ImportTextBlock } from "../../../../validators/fields/nestable/ImportRichText/blocks"
|
|
4
|
-
import { linkConverter } from "../Link"
|
|
5
|
-
|
|
6
|
-
export function textBlockConverter(
|
|
7
|
-
block: ImportTextBlock,
|
|
8
|
-
assets: Record<Asset["id"], Asset | undefined>,
|
|
9
|
-
): TextBlock {
|
|
10
|
-
return {
|
|
11
|
-
type: block.type,
|
|
12
|
-
content: {
|
|
13
|
-
text: block.text,
|
|
14
|
-
...(() => {
|
|
15
|
-
if (block.spans) {
|
|
16
|
-
const convertedSpans = spansConverter(block.spans, assets)
|
|
17
|
-
if (!convertedSpans) return {}
|
|
18
|
-
|
|
19
|
-
return { spans: convertedSpans }
|
|
20
|
-
}
|
|
21
|
-
return {}
|
|
22
|
-
})(),
|
|
23
|
-
},
|
|
24
|
-
...(block.direction ? { direction: block.direction } : {}),
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
function spansConverter(
|
|
29
|
-
spans: NonNullable<ImportTextBlock["spans"]>,
|
|
30
|
-
assets: Record<Asset["id"], Asset | undefined>,
|
|
31
|
-
): Span[] {
|
|
32
|
-
return spans.reduce<Span[]>((acc, span) => {
|
|
33
|
-
switch (span.type) {
|
|
34
|
-
case "em":
|
|
35
|
-
case "strong":
|
|
36
|
-
return [...acc, span]
|
|
37
|
-
case "label":
|
|
38
|
-
return [
|
|
39
|
-
...acc,
|
|
40
|
-
{
|
|
41
|
-
...span,
|
|
42
|
-
data: span.data.label,
|
|
43
|
-
},
|
|
44
|
-
]
|
|
45
|
-
|
|
46
|
-
case "hyperlink": {
|
|
47
|
-
const convertedLink = linkConverter(span.data, assets)
|
|
48
|
-
if (!convertedLink) return acc
|
|
49
|
-
|
|
50
|
-
return [
|
|
51
|
-
...acc,
|
|
52
|
-
{
|
|
53
|
-
type: span.type,
|
|
54
|
-
start: span.start,
|
|
55
|
-
end: span.end,
|
|
56
|
-
data: convertedLink.value,
|
|
57
|
-
},
|
|
58
|
-
]
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}, [])
|
|
62
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { SelectContent } from "../../../../content"
|
|
2
|
-
import type { ImportSelect } from "../../../validators"
|
|
3
|
-
|
|
4
|
-
export const selectConverter = (
|
|
5
|
-
field: ImportSelect["value"],
|
|
6
|
-
): SelectContent | undefined => {
|
|
7
|
-
if (field === null) return
|
|
8
|
-
|
|
9
|
-
return {
|
|
10
|
-
type: "Select",
|
|
11
|
-
value: field,
|
|
12
|
-
__TYPE__: "FieldContent",
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { TextContent } from "../../../../content"
|
|
2
|
-
import type { ImportText } from "../../../validators"
|
|
3
|
-
|
|
4
|
-
export const textConverter = (
|
|
5
|
-
field: ImportText["value"],
|
|
6
|
-
): TextContent | undefined => {
|
|
7
|
-
if (field === null) return
|
|
8
|
-
|
|
9
|
-
return {
|
|
10
|
-
type: "Text",
|
|
11
|
-
value: field,
|
|
12
|
-
__TYPE__: "FieldContent",
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { TimestampContent } from "../../../../content"
|
|
2
|
-
import type { ImportTimestamp } from "../../../validators"
|
|
3
|
-
|
|
4
|
-
export const timestampConverter = (
|
|
5
|
-
field: ImportTimestamp["value"],
|
|
6
|
-
): TimestampContent | undefined => {
|
|
7
|
-
if (field === null) return
|
|
8
|
-
|
|
9
|
-
return {
|
|
10
|
-
type: "Timestamp",
|
|
11
|
-
value: field.toISOString(),
|
|
12
|
-
__TYPE__: "FieldContent",
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export * from "./Boolean"
|
|
2
|
-
export * from "./Color"
|
|
3
|
-
export * from "./Date"
|
|
4
|
-
export * from "./Embed"
|
|
5
|
-
export * from "./GeoPoint"
|
|
6
|
-
export * from "./Image"
|
|
7
|
-
export * from "./Link"
|
|
8
|
-
export * from "./Nestable"
|
|
9
|
-
export * from "./Number"
|
|
10
|
-
export * from "./RichText"
|
|
11
|
-
export * from "./Select"
|
|
12
|
-
export * from "./Text"
|
|
13
|
-
export * from "./Timestamp"
|
package/src/import/index.ts
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { either } from "fp-ts"
|
|
2
|
-
import { Either, isLeft } from "fp-ts/Either"
|
|
3
|
-
import { pipe } from "fp-ts/lib/function"
|
|
4
|
-
import * as t from "io-ts"
|
|
5
|
-
|
|
6
|
-
import type { WidgetKey } from "../../common"
|
|
7
|
-
import type { StaticCustomType, StaticWidget } from "../../customtypes"
|
|
8
|
-
import { flattenCustomTypeFields } from "../../customtypes"
|
|
9
|
-
import { isObject } from "../../utils/Objects"
|
|
10
|
-
import { withCustomError } from "../../validators/function"
|
|
11
|
-
import { ImportField } from "./fields/ImportField"
|
|
12
|
-
|
|
13
|
-
const rawImportDocument = withCustomError(
|
|
14
|
-
t.UnknownRecord,
|
|
15
|
-
() => "document is not an object",
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
function validateField(
|
|
19
|
-
document: Record<string, unknown>,
|
|
20
|
-
customType: StaticCustomType,
|
|
21
|
-
) {
|
|
22
|
-
return (
|
|
23
|
-
key: string,
|
|
24
|
-
content: unknown,
|
|
25
|
-
model?: StaticWidget,
|
|
26
|
-
): Either<t.Errors, ImportField> => {
|
|
27
|
-
// the field is not defined in the custom type -> extra field or typo
|
|
28
|
-
if (!model) {
|
|
29
|
-
const error: t.ValidationError = {
|
|
30
|
-
value: content,
|
|
31
|
-
context: [{ key: key, type: t.unknown }],
|
|
32
|
-
message: `The field ${key} is not part of the Custom type`,
|
|
33
|
-
}
|
|
34
|
-
return either.left([error])
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// retrieving the right codec then testing out fieldValue with it.
|
|
38
|
-
const { result, codec } = ImportField.decode(model)(content)
|
|
39
|
-
|
|
40
|
-
// error.context is pointing at root when it should point to a `fieldKey`.
|
|
41
|
-
// We need to override the context to make it right.
|
|
42
|
-
if (isLeft(result)) {
|
|
43
|
-
const errors: t.Errors = result.left.map((error) => {
|
|
44
|
-
const contextHead = error.context[0]
|
|
45
|
-
const context = [
|
|
46
|
-
{ key: "", actual: document, type: ImportDocument(customType) },
|
|
47
|
-
contextHead
|
|
48
|
-
? { ...contextHead, key: key }
|
|
49
|
-
: { key: key, actual: content, type: codec },
|
|
50
|
-
...error.context.slice(1),
|
|
51
|
-
]
|
|
52
|
-
|
|
53
|
-
return { ...error, context }
|
|
54
|
-
})
|
|
55
|
-
return either.left(errors)
|
|
56
|
-
}
|
|
57
|
-
return either.right(result.right)
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function validateDocument(
|
|
62
|
-
customType: StaticCustomType,
|
|
63
|
-
rawDoc: Record<string, unknown>,
|
|
64
|
-
) {
|
|
65
|
-
const fieldModels = flattenCustomTypeFields(customType)
|
|
66
|
-
const { document, errors } = Object.entries(rawDoc).reduce<{
|
|
67
|
-
document: ImportDocument
|
|
68
|
-
errors: t.Errors
|
|
69
|
-
}>(
|
|
70
|
-
(acc, [fieldKey, fieldValue]) => {
|
|
71
|
-
const parsedField = validateField(rawDoc, customType)(
|
|
72
|
-
fieldKey,
|
|
73
|
-
fieldValue,
|
|
74
|
-
fieldModels[fieldKey],
|
|
75
|
-
)
|
|
76
|
-
|
|
77
|
-
if (isLeft(parsedField))
|
|
78
|
-
return { ...acc, errors: [...acc.errors, ...parsedField.left] }
|
|
79
|
-
|
|
80
|
-
return {
|
|
81
|
-
...acc,
|
|
82
|
-
document: { ...acc.document, [fieldKey]: parsedField.right },
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
{ document: {}, errors: [] },
|
|
86
|
-
)
|
|
87
|
-
if (errors.length > 0) return either.left(errors)
|
|
88
|
-
return either.right(document)
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
export type ImportDocument = Record<WidgetKey, ImportField>
|
|
92
|
-
export const ImportDocument = (customType: StaticCustomType) =>
|
|
93
|
-
new t.Type<ImportDocument, ImportDocument, unknown>(
|
|
94
|
-
"ImportDocument",
|
|
95
|
-
(u): u is ImportDocument => isObject(u),
|
|
96
|
-
(raw: unknown) => {
|
|
97
|
-
return pipe(
|
|
98
|
-
rawImportDocument.decode(raw),
|
|
99
|
-
either.chain((doc) => validateDocument(customType, doc)),
|
|
100
|
-
)
|
|
101
|
-
},
|
|
102
|
-
t.identity,
|
|
103
|
-
)
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { either } from "fp-ts"
|
|
2
|
-
import { pipe } from "fp-ts/lib/function"
|
|
3
|
-
import * as t from "io-ts"
|
|
4
|
-
|
|
5
|
-
import type { FieldType } from "../../../customtypes"
|
|
6
|
-
import { isObject } from "../../../utils/Objects"
|
|
7
|
-
|
|
8
|
-
export const ImportContent = <T extends FieldType, A, O = A>(
|
|
9
|
-
type: T,
|
|
10
|
-
valueCodec: t.Type<A, O>,
|
|
11
|
-
) =>
|
|
12
|
-
new t.Type<{ type: T; value: A }, O>(
|
|
13
|
-
`ImportField: ${valueCodec.name}`,
|
|
14
|
-
(u: unknown): u is { type: T; value: A } => {
|
|
15
|
-
if (!isObject(u)) return false
|
|
16
|
-
return type === u["type"] && valueCodec.is(u["value"])
|
|
17
|
-
},
|
|
18
|
-
(u: unknown, c) => {
|
|
19
|
-
return pipe(
|
|
20
|
-
valueCodec.validate(u, c),
|
|
21
|
-
either.map((decodedValue) => {
|
|
22
|
-
return {
|
|
23
|
-
type,
|
|
24
|
-
value: decodedValue,
|
|
25
|
-
}
|
|
26
|
-
}),
|
|
27
|
-
)
|
|
28
|
-
},
|
|
29
|
-
(field) => field.value as unknown as O,
|
|
30
|
-
)
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { StaticWidget } from "../../../customtypes"
|
|
2
|
-
import { ImportGroup } from "./ImportGroup"
|
|
3
|
-
import { ImportSlices } from "./ImportSlices"
|
|
4
|
-
import { ImportNestable } from "./nestable"
|
|
5
|
-
|
|
6
|
-
export type ImportField = ImportSlices | ImportNestable | ImportGroup
|
|
7
|
-
|
|
8
|
-
export const ImportField = {
|
|
9
|
-
is(u: unknown): u is ImportField {
|
|
10
|
-
return ImportField.is(u)
|
|
11
|
-
},
|
|
12
|
-
decode: (field: StaticWidget) => {
|
|
13
|
-
return (content: unknown) => {
|
|
14
|
-
switch (field.type) {
|
|
15
|
-
case "UID":
|
|
16
|
-
throw new Error(
|
|
17
|
-
`The field '${field.type}' should be put at the root level of the document`,
|
|
18
|
-
)
|
|
19
|
-
case "Slices":
|
|
20
|
-
return {
|
|
21
|
-
codec: ImportSlices(field),
|
|
22
|
-
result: ImportSlices(field).decode(content),
|
|
23
|
-
}
|
|
24
|
-
case "Group":
|
|
25
|
-
return {
|
|
26
|
-
codec: ImportGroup(field),
|
|
27
|
-
result: ImportGroup(field).decode(content),
|
|
28
|
-
}
|
|
29
|
-
case "Choice":
|
|
30
|
-
throw new Error(`Unsupported type of field ${field.type}`)
|
|
31
|
-
default:
|
|
32
|
-
return ImportNestable.decode(field)(content)
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
}
|
|
@@ -1,45 +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 { Group } from "../../../customtypes"
|
|
6
|
-
import { EmptyArrayOrElse } from "../../../validators"
|
|
7
|
-
import { withCustomError } from "../../../validators/function"
|
|
8
|
-
import { ImportContent } from "./ImportContent"
|
|
9
|
-
import { RepeatableZone } from "./RepeatableZone"
|
|
10
|
-
|
|
11
|
-
export const ImportGroupValue = (groupCustomType?: Group) => {
|
|
12
|
-
const fieldsModel = groupCustomType?.config?.fields ?? {}
|
|
13
|
-
const groupArrayCodec = RepeatableZone(fieldsModel)
|
|
14
|
-
|
|
15
|
-
return withCustomError(
|
|
16
|
-
new t.Type<RepeatableZone>(
|
|
17
|
-
groupArrayCodec.name,
|
|
18
|
-
groupArrayCodec.is,
|
|
19
|
-
(u, c) =>
|
|
20
|
-
pipe(
|
|
21
|
-
groupArrayCodec.validate(u, c),
|
|
22
|
-
E.chain((groups) => {
|
|
23
|
-
if (
|
|
24
|
-
groupCustomType?.config?.repeat === false &&
|
|
25
|
-
groups.length > 1
|
|
26
|
-
) {
|
|
27
|
-
return t.failure(
|
|
28
|
-
groups,
|
|
29
|
-
c,
|
|
30
|
-
"The custom type for this group field does not allow multiple group items",
|
|
31
|
-
)
|
|
32
|
-
}
|
|
33
|
-
return t.success(groups)
|
|
34
|
-
}),
|
|
35
|
-
),
|
|
36
|
-
t.identity,
|
|
37
|
-
),
|
|
38
|
-
() => "The group field value must be an array",
|
|
39
|
-
)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export const ImportGroup = (groupCustomType?: Group) =>
|
|
43
|
-
ImportContent("Group", EmptyArrayOrElse(ImportGroupValue(groupCustomType)))
|
|
44
|
-
|
|
45
|
-
export type ImportGroup = t.TypeOf<ReturnType<typeof ImportGroup>>
|
|
@@ -1,56 +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 { StaticSlices } from "../../../../customtypes"
|
|
6
|
-
import { EmptyArrayOrElse } from "../../../../validators"
|
|
7
|
-
import { ImportContent } from "../ImportContent"
|
|
8
|
-
import { SharedSlice } from "./SharedSlice"
|
|
9
|
-
import {
|
|
10
|
-
extractSupportedSlices,
|
|
11
|
-
findImportSharedSliceDuplicateIds,
|
|
12
|
-
} from "./utils"
|
|
13
|
-
|
|
14
|
-
export const ImportSlices = (staticSlices: StaticSlices) => {
|
|
15
|
-
const supportedSlices = extractSupportedSlices(staticSlices)
|
|
16
|
-
|
|
17
|
-
// For now we only support the SharedSlice, however if we want to support more in the future
|
|
18
|
-
// we would have to change the codec here to something like this: t.array(t.union([ImportSharedSlice(sharedSlices), NewSliceCodec(newSliceCustomTypes)])).
|
|
19
|
-
const SharedSliceCodec = SharedSlice(supportedSlices)
|
|
20
|
-
const SlicesArrayCodec = t.array(SharedSliceCodec)
|
|
21
|
-
|
|
22
|
-
return ImportContent(
|
|
23
|
-
"Slices",
|
|
24
|
-
EmptyArrayOrElse(
|
|
25
|
-
new t.ArrayType<typeof SharedSliceCodec, SharedSlice[]>(
|
|
26
|
-
SlicesArrayCodec.name,
|
|
27
|
-
(u): u is SharedSlice[] => SlicesArrayCodec.is(u),
|
|
28
|
-
(u, c) => {
|
|
29
|
-
return pipe(
|
|
30
|
-
SlicesArrayCodec.validate(u, c),
|
|
31
|
-
E.chain((slices) => {
|
|
32
|
-
// This part might not make sense for all Slice types in the future, but for now we only support the SharedSlice
|
|
33
|
-
// In case we support more in the future, we would have to filter only the relevant type for this check
|
|
34
|
-
const sharedSliceDuplicates =
|
|
35
|
-
findImportSharedSliceDuplicateIds(slices)
|
|
36
|
-
if (sharedSliceDuplicates.length > 0) {
|
|
37
|
-
return t.failure(
|
|
38
|
-
slices,
|
|
39
|
-
[],
|
|
40
|
-
`Duplicate slice IDs detected: ${sharedSliceDuplicates.join(
|
|
41
|
-
", ",
|
|
42
|
-
)}`,
|
|
43
|
-
)
|
|
44
|
-
}
|
|
45
|
-
return t.success(slices)
|
|
46
|
-
}),
|
|
47
|
-
)
|
|
48
|
-
},
|
|
49
|
-
t.identity,
|
|
50
|
-
SharedSliceCodec,
|
|
51
|
-
),
|
|
52
|
-
),
|
|
53
|
-
)
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export type ImportSlices = t.TypeOf<ReturnType<typeof ImportSlices>>
|
|
@@ -1,104 +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 { SharedSlice as SharedSliceCustomType } from "../../../../../customtypes"
|
|
6
|
-
import { NonEmptyString, String } from "../../../../../validators"
|
|
7
|
-
import { RepeatableZone } from "../../RepeatableZone"
|
|
8
|
-
import { RepeatableZoneItem } from "../../RepeatableZoneItem"
|
|
9
|
-
import {
|
|
10
|
-
OptionalSharedSliceId,
|
|
11
|
-
SharedSliceId,
|
|
12
|
-
SharedSliceType,
|
|
13
|
-
SharedSliceVariation,
|
|
14
|
-
} from "./fields"
|
|
15
|
-
|
|
16
|
-
export type SharedSlice = {
|
|
17
|
-
id: SharedSliceId | null | undefined
|
|
18
|
-
slice_type: string
|
|
19
|
-
name: string
|
|
20
|
-
variation: string
|
|
21
|
-
primary: RepeatableZoneItem | null | undefined
|
|
22
|
-
items: RepeatableZone | null | undefined
|
|
23
|
-
slice_label: string | null | undefined
|
|
24
|
-
version: string | null | undefined
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const SharedSliceShape = t.strict({
|
|
28
|
-
id: OptionalSharedSliceId,
|
|
29
|
-
slice_type: NonEmptyString,
|
|
30
|
-
name: String,
|
|
31
|
-
variation: NonEmptyString,
|
|
32
|
-
primary: t.union([t.undefined, t.null, t.record(NonEmptyString, t.unknown)]),
|
|
33
|
-
items: t.union([
|
|
34
|
-
t.undefined,
|
|
35
|
-
t.null,
|
|
36
|
-
t.array(t.record(NonEmptyString, t.unknown)),
|
|
37
|
-
]),
|
|
38
|
-
slice_label: t.union([t.undefined, t.null, String]),
|
|
39
|
-
version: t.union([t.undefined, t.null, String]),
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
export const SharedSlice = (sharedSlices: SharedSliceCustomType[]) =>
|
|
43
|
-
new t.Type<SharedSlice>(
|
|
44
|
-
"SharedSlice",
|
|
45
|
-
(u): u is SharedSlice => SharedSliceShape.is(u),
|
|
46
|
-
(u, c) =>
|
|
47
|
-
pipe(
|
|
48
|
-
// We validate the base fields that we can validate directly based on the provided 'sharedSlices'
|
|
49
|
-
t
|
|
50
|
-
.type({
|
|
51
|
-
id: OptionalSharedSliceId,
|
|
52
|
-
slice_type: SharedSliceType(sharedSlices),
|
|
53
|
-
slice_label: t.union([t.undefined, t.null, String]),
|
|
54
|
-
version: t.union([t.undefined, t.null, String]),
|
|
55
|
-
})
|
|
56
|
-
.validate(u, c),
|
|
57
|
-
E.chain((decoded) =>
|
|
58
|
-
pipe(
|
|
59
|
-
// We validate the 'variation' field, for which we need the SharedSlice custom type retrieved in the first step
|
|
60
|
-
t
|
|
61
|
-
.type({
|
|
62
|
-
variation: SharedSliceVariation(decoded.slice_type.data),
|
|
63
|
-
})
|
|
64
|
-
.validate(u, c),
|
|
65
|
-
E.map(({ variation }) => ({ ...decoded, variation })),
|
|
66
|
-
),
|
|
67
|
-
),
|
|
68
|
-
E.chain((decoded) =>
|
|
69
|
-
pipe(
|
|
70
|
-
// We validate the 'primary' and 'items' content fields, for which we need the Variation custom type retrieved in the previous step
|
|
71
|
-
t
|
|
72
|
-
.partial({
|
|
73
|
-
primary: RepeatableZoneItem(
|
|
74
|
-
decoded.variation.data.primary ?? {},
|
|
75
|
-
),
|
|
76
|
-
items: RepeatableZone(decoded.variation.data.items ?? {}),
|
|
77
|
-
})
|
|
78
|
-
.validate(u, c),
|
|
79
|
-
E.map(({ primary, items }) => ({ ...decoded, primary, items })),
|
|
80
|
-
),
|
|
81
|
-
),
|
|
82
|
-
E.map(
|
|
83
|
-
({
|
|
84
|
-
id,
|
|
85
|
-
slice_type,
|
|
86
|
-
variation,
|
|
87
|
-
primary,
|
|
88
|
-
items,
|
|
89
|
-
slice_label,
|
|
90
|
-
version,
|
|
91
|
-
}) => ({
|
|
92
|
-
id,
|
|
93
|
-
slice_type: slice_type.slice_type,
|
|
94
|
-
name: slice_type.data.name,
|
|
95
|
-
variation: variation.variation,
|
|
96
|
-
primary,
|
|
97
|
-
items,
|
|
98
|
-
slice_label,
|
|
99
|
-
version: version ?? variation.data.version,
|
|
100
|
-
}),
|
|
101
|
-
),
|
|
102
|
-
),
|
|
103
|
-
t.identity,
|
|
104
|
-
)
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export const SharedSliceErrors = {
|
|
2
|
-
SliceTypeNotFound: (slice_type: string) =>
|
|
3
|
-
`Shared slice '${slice_type}' not found in this slice zone in the document's custom type`,
|
|
4
|
-
VariationNotFound: (variation: string, slice_type: string) =>
|
|
5
|
-
`Variation '${variation}' not found for Slice '${slice_type}'`,
|
|
6
|
-
} as const
|
package/src/import/validators/fields/ImportSlices/SharedSlice/fields/OptionalSharedSliceId.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import * as t from "io-ts"
|
|
2
|
-
|
|
3
|
-
import { SharedSliceId } from "./SharedSliceId"
|
|
4
|
-
|
|
5
|
-
// Wrapping the 'SharedSliceId' codec in an optional codec here for the sake of error reporting.
|
|
6
|
-
// When using t.union([t.undefined, t.null, SharedSliceId]) we get a nested error context
|
|
7
|
-
// with the actual decoding error at position 2 in the context array.
|
|
8
|
-
// To avoid mutating the error context we create this new wrapper codec so that the error context will always have desired depth.
|
|
9
|
-
export const OptionalSharedSliceId = new t.Type<
|
|
10
|
-
SharedSliceId | null | undefined
|
|
11
|
-
>(
|
|
12
|
-
"OptionalSharedSliceId",
|
|
13
|
-
(u): u is SharedSliceId | null | undefined =>
|
|
14
|
-
u === null || u === undefined || SharedSliceId.is(u),
|
|
15
|
-
(u, c) => {
|
|
16
|
-
if (u === null || u === undefined) return t.success(u)
|
|
17
|
-
return SharedSliceId.validate(u, c)
|
|
18
|
-
},
|
|
19
|
-
t.identity,
|
|
20
|
-
)
|