@prismicio/types-internal 2.2.1 → 2.3.0

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 (193) hide show
  1. package/lib/content/Document.d.ts +10 -4
  2. package/lib/content/Document.js +45 -11
  3. package/lib/content/fields/GroupContent.d.ts +1 -0
  4. package/lib/content/fields/GroupContent.js +13 -1
  5. package/lib/content/fields/nestable/BooleanContent.d.ts +2 -0
  6. package/lib/content/fields/nestable/BooleanContent.js +11 -1
  7. package/lib/content/fields/nestable/FieldContent/SelectContent.d.ts +2 -0
  8. package/lib/content/fields/nestable/FieldContent/SelectContent.js +12 -1
  9. package/lib/content/fields/nestable/NestableContent.d.ts +2 -0
  10. package/lib/content/fields/nestable/NestableContent.js +12 -1
  11. package/lib/content/fields/slices/Slice/CompositeSliceContent.d.ts +1 -0
  12. package/lib/content/fields/slices/Slice/CompositeSliceContent.js +13 -1
  13. package/lib/content/fields/slices/Slice/SharedSliceContent.d.ts +2 -1
  14. package/lib/content/fields/slices/Slice/SharedSliceContent.js +16 -1
  15. package/lib/content/fields/slices/SliceItem.d.ts +3 -0
  16. package/lib/content/fields/slices/SliceItem.js +24 -1
  17. package/lib/content/fields/slices/SlicesContent.d.ts +1 -0
  18. package/lib/content/fields/slices/SlicesContent.js +23 -1
  19. package/lib/content/fields/withDefaultValues.d.ts +6 -0
  20. package/lib/content/fields/withDefaultValues.js +38 -0
  21. package/lib/import/converters/Document.d.ts +4 -0
  22. package/lib/import/converters/Document.js +21 -0
  23. package/lib/import/converters/fields/Group.d.ts +4 -0
  24. package/lib/import/converters/fields/Group.js +14 -0
  25. package/lib/import/converters/fields/RepeatableZone.d.ts +317 -0
  26. package/lib/import/converters/fields/RepeatableZone.js +15 -0
  27. package/lib/import/converters/fields/RepeatableZoneItem.d.ts +11 -0
  28. package/lib/import/converters/fields/RepeatableZoneItem.js +19 -0
  29. package/lib/import/converters/fields/Slices/SharedSlice.d.ts +4 -0
  30. package/lib/import/converters/fields/Slices/SharedSlice.js +19 -0
  31. package/lib/import/converters/fields/Slices/SharedSliceContent.d.ts +10 -0
  32. package/lib/import/converters/fields/Slices/SharedSliceContent.js +23 -0
  33. package/lib/import/converters/fields/Slices/Slices.d.ts +4 -0
  34. package/lib/import/converters/fields/Slices/Slices.js +16 -0
  35. package/lib/import/converters/fields/Slices/index.d.ts +1 -0
  36. package/lib/import/converters/fields/Slices/index.js +4 -0
  37. package/lib/import/converters/fields/UID.d.ts +3 -0
  38. package/lib/import/converters/fields/UID.js +10 -0
  39. package/lib/import/converters/fields/index.d.ts +4 -0
  40. package/lib/import/converters/fields/index.js +7 -0
  41. package/lib/import/converters/fields/nestable/Boolean.d.ts +3 -0
  42. package/lib/import/converters/fields/nestable/Boolean.js +12 -0
  43. package/lib/import/converters/fields/nestable/Color.d.ts +3 -0
  44. package/lib/import/converters/fields/nestable/Color.js +13 -0
  45. package/lib/import/converters/fields/nestable/Date.d.ts +3 -0
  46. package/lib/import/converters/fields/nestable/Date.js +15 -0
  47. package/lib/import/converters/fields/nestable/Embed.d.ts +4 -0
  48. package/lib/import/converters/fields/nestable/Embed.js +32 -0
  49. package/lib/import/converters/fields/nestable/GeoPoint.d.ts +3 -0
  50. package/lib/import/converters/fields/nestable/GeoPoint.js +15 -0
  51. package/lib/import/converters/fields/nestable/Image.d.ts +28 -0
  52. package/lib/import/converters/fields/nestable/Image.js +67 -0
  53. package/lib/import/converters/fields/nestable/Link.d.ts +4 -0
  54. package/lib/import/converters/fields/nestable/Link.js +70 -0
  55. package/lib/import/converters/fields/nestable/Nestable.d.ts +5 -0
  56. package/lib/import/converters/fields/nestable/Nestable.js +35 -0
  57. package/lib/import/converters/fields/nestable/Number.d.ts +3 -0
  58. package/lib/import/converters/fields/nestable/Number.js +13 -0
  59. package/lib/import/converters/fields/nestable/RichText/embedBlock.d.ts +4 -0
  60. package/lib/import/converters/fields/nestable/RichText/embedBlock.js +14 -0
  61. package/lib/import/converters/fields/nestable/RichText/imageBlock.d.ts +4 -0
  62. package/lib/import/converters/fields/nestable/RichText/imageBlock.js +12 -0
  63. package/lib/import/converters/fields/nestable/RichText/index.d.ts +4 -0
  64. package/lib/import/converters/fields/nestable/RichText/index.js +22 -0
  65. package/lib/import/converters/fields/nestable/RichText/textBlock.d.ts +4 -0
  66. package/lib/import/converters/fields/nestable/RichText/textBlock.js +54 -0
  67. package/lib/import/converters/fields/nestable/Select.d.ts +3 -0
  68. package/lib/import/converters/fields/nestable/Select.js +13 -0
  69. package/lib/import/converters/fields/nestable/Text.d.ts +3 -0
  70. package/lib/import/converters/fields/nestable/Text.js +13 -0
  71. package/lib/import/converters/fields/nestable/Timestamp.d.ts +3 -0
  72. package/lib/import/converters/fields/nestable/Timestamp.js +13 -0
  73. package/lib/import/converters/fields/nestable/index.d.ts +13 -0
  74. package/lib/import/converters/fields/nestable/index.js +16 -0
  75. package/lib/import/converters/index.d.ts +2 -0
  76. package/lib/import/converters/index.js +5 -0
  77. package/lib/import/index.d.ts +2 -0
  78. package/lib/import/index.js +5 -0
  79. package/lib/import/validators/Document.d.ts +6 -0
  80. package/lib/import/validators/Document.js +64 -0
  81. package/lib/import/validators/fields/ImportContent.d.ts +5 -0
  82. package/lib/import/validators/fields/ImportContent.js +21 -0
  83. package/lib/import/validators/fields/ImportField.d.ts +141 -0
  84. package/lib/import/validators/fields/ImportField.js +33 -0
  85. package/lib/import/validators/fields/ImportGroup.d.ts +345 -0
  86. package/lib/import/validators/fields/ImportGroup.js +27 -0
  87. package/lib/import/validators/fields/ImportSlices/ImportSlices.d.ts +8 -0
  88. package/lib/import/validators/fields/ImportSlices/ImportSlices.js +30 -0
  89. package/lib/import/validators/fields/ImportSlices/SharedSlice/SharedSlice.d.ts +16 -0
  90. package/lib/import/validators/fields/ImportSlices/SharedSlice/SharedSlice.js +61 -0
  91. package/lib/import/validators/fields/ImportSlices/SharedSlice/errors.d.ts +4 -0
  92. package/lib/import/validators/fields/ImportSlices/SharedSlice/errors.js +7 -0
  93. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/OptionalSharedSliceId.d.ts +2 -0
  94. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/OptionalSharedSliceId.js +15 -0
  95. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceId.d.ts +9 -0
  96. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceId.js +39 -0
  97. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceType.d.ts +11 -0
  98. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceType.js +24 -0
  99. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceVariation.d.ts +11 -0
  100. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceVariation.js +24 -0
  101. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/index.d.ts +4 -0
  102. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/index.js +7 -0
  103. package/lib/import/validators/fields/ImportSlices/SharedSlice/index.d.ts +3 -0
  104. package/lib/import/validators/fields/ImportSlices/SharedSlice/index.js +6 -0
  105. package/lib/import/validators/fields/ImportSlices/SharedSlice/utils.d.ts +342 -0
  106. package/lib/import/validators/fields/ImportSlices/SharedSlice/utils.js +11 -0
  107. package/lib/import/validators/fields/ImportSlices/index.d.ts +1 -0
  108. package/lib/import/validators/fields/ImportSlices/index.js +4 -0
  109. package/lib/import/validators/fields/ImportSlices/utils.d.ts +4 -0
  110. package/lib/import/validators/fields/ImportSlices/utils.js +35 -0
  111. package/lib/import/validators/fields/RepeatableZone.d.ts +11 -0
  112. package/lib/import/validators/fields/RepeatableZone.js +14 -0
  113. package/lib/import/validators/fields/RepeatableZoneItem.d.ts +11 -0
  114. package/lib/import/validators/fields/RepeatableZoneItem.js +39 -0
  115. package/lib/import/validators/fields/UID.d.ts +6 -0
  116. package/lib/import/validators/fields/UID.js +15 -0
  117. package/lib/import/validators/fields/index.d.ts +4 -0
  118. package/lib/import/validators/fields/index.js +7 -0
  119. package/lib/import/validators/fields/nestable/Boolean.d.ts +6 -0
  120. package/lib/import/validators/fields/nestable/Boolean.js +6 -0
  121. package/lib/import/validators/fields/nestable/Color.d.ts +6 -0
  122. package/lib/import/validators/fields/nestable/Color.js +15 -0
  123. package/lib/import/validators/fields/nestable/Date.d.ts +6 -0
  124. package/lib/import/validators/fields/nestable/Date.js +19 -0
  125. package/lib/import/validators/fields/nestable/Embed.d.ts +13 -0
  126. package/lib/import/validators/fields/nestable/Embed.js +31 -0
  127. package/lib/import/validators/fields/nestable/GeoPoint.d.ts +13 -0
  128. package/lib/import/validators/fields/nestable/GeoPoint.js +13 -0
  129. package/lib/import/validators/fields/nestable/Image/default.d.ts +22 -0
  130. package/lib/import/validators/fields/nestable/Image/default.js +19 -0
  131. package/lib/import/validators/fields/nestable/Image/index.d.ts +26 -0
  132. package/lib/import/validators/fields/nestable/Image/index.js +32 -0
  133. package/lib/import/validators/fields/nestable/Image/merge.d.ts +23 -0
  134. package/lib/import/validators/fields/nestable/Image/merge.js +44 -0
  135. package/lib/import/validators/fields/nestable/Image/model.d.ts +18 -0
  136. package/lib/import/validators/fields/nestable/Image/model.js +2 -0
  137. package/lib/import/validators/fields/nestable/Image/validators.d.ts +132 -0
  138. package/lib/import/validators/fields/nestable/Image/validators.js +43 -0
  139. package/lib/import/validators/fields/nestable/ImportRichText/ImportBlock.d.ts +6 -0
  140. package/lib/import/validators/fields/nestable/ImportRichText/ImportBlock.js +25 -0
  141. package/lib/import/validators/fields/nestable/ImportRichText/ImportRichText.d.ts +24 -0
  142. package/lib/import/validators/fields/nestable/ImportRichText/ImportRichText.js +32 -0
  143. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportBlockType.d.ts +6 -0
  144. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportBlockType.js +18 -0
  145. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportEmbedBlock.d.ts +10 -0
  146. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportEmbedBlock.js +11 -0
  147. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportImageBlock.d.ts +22 -0
  148. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportImageBlock.js +13 -0
  149. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportTextBlock.d.ts +78 -0
  150. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportTextBlock.js +43 -0
  151. package/lib/import/validators/fields/nestable/ImportRichText/blocks/Span.d.ts +79 -0
  152. package/lib/import/validators/fields/nestable/ImportRichText/blocks/Span.js +27 -0
  153. package/lib/import/validators/fields/nestable/ImportRichText/blocks/index.d.ts +4 -0
  154. package/lib/import/validators/fields/nestable/ImportRichText/blocks/index.js +7 -0
  155. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/HyperlinkSpan.d.ts +24 -0
  156. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/HyperlinkSpan.js +18 -0
  157. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/LabelSpan.d.ts +12 -0
  158. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/LabelSpan.js +16 -0
  159. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/SpanLocation.d.ts +5 -0
  160. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/SpanLocation.js +10 -0
  161. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/TextSpan.d.ts +15 -0
  162. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/TextSpan.js +20 -0
  163. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/index.d.ts +2 -0
  164. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/index.js +5 -0
  165. package/lib/import/validators/fields/nestable/ImportRichText/index.d.ts +2 -0
  166. package/lib/import/validators/fields/nestable/ImportRichText/index.js +7 -0
  167. package/lib/import/validators/fields/nestable/Link.d.ts +53 -0
  168. package/lib/import/validators/fields/nestable/Link.js +35 -0
  169. package/lib/import/validators/fields/nestable/Nestable.d.ts +192 -0
  170. package/lib/import/validators/fields/nestable/Nestable.js +71 -0
  171. package/lib/import/validators/fields/nestable/Number.d.ts +17 -0
  172. package/lib/import/validators/fields/nestable/Number.js +17 -0
  173. package/lib/import/validators/fields/nestable/Select.d.ts +16 -0
  174. package/lib/import/validators/fields/nestable/Select.js +19 -0
  175. package/lib/import/validators/fields/nestable/Text.d.ts +6 -0
  176. package/lib/import/validators/fields/nestable/Text.js +6 -0
  177. package/lib/import/validators/fields/nestable/Timestamp.d.ts +7 -0
  178. package/lib/import/validators/fields/nestable/Timestamp.js +19 -0
  179. package/lib/import/validators/fields/nestable/index.d.ts +14 -0
  180. package/lib/import/validators/fields/nestable/index.js +19 -0
  181. package/lib/import/validators/index.d.ts +2 -0
  182. package/lib/import/validators/index.js +5 -0
  183. package/package.json +1 -1
  184. package/src/content/Document.ts +68 -14
  185. package/src/content/fields/GroupContent.ts +16 -0
  186. package/src/content/fields/nestable/BooleanContent.ts +11 -0
  187. package/src/content/fields/nestable/FieldContent/SelectContent.ts +12 -1
  188. package/src/content/fields/nestable/NestableContent.ts +16 -0
  189. package/src/content/fields/slices/Slice/CompositeSliceContent.ts +25 -0
  190. package/src/content/fields/slices/Slice/SharedSliceContent.ts +32 -1
  191. package/src/content/fields/slices/SliceItem.ts +43 -1
  192. package/src/content/fields/slices/SlicesContent.ts +30 -0
  193. package/src/content/fields/withDefaultValues.ts +48 -0
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.imageConverter = exports.convertImageView = void 0;
4
+ const common_1 = require("../../../../common");
5
+ const Objects_1 = require("../../../../utils/Objects");
6
+ function convertImageView(inputImage, image) {
7
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
8
+ // We can do that because anyway all properties being read
9
+ const imageField = {
10
+ ...inputImage,
11
+ edit: {
12
+ x: 0,
13
+ y: 0,
14
+ zoom: 1,
15
+ ...inputImage.edit,
16
+ },
17
+ dimensions: (_a = inputImage.dimensions) !== null && _a !== void 0 ? _a : {},
18
+ };
19
+ return (0, Objects_1.withOptionals)({
20
+ origin: {
21
+ id: image.id,
22
+ url: image.origin_url,
23
+ // All images returned form Asset API should have width and height properties.
24
+ width: (_b = image.width) !== null && _b !== void 0 ? _b : 0,
25
+ height: (_c = image.height) !== null && _c !== void 0 ? _c : 0,
26
+ },
27
+ // All images returned form Asset API should have width and height properties.
28
+ // Image width and height will be only applied if there are no constraints and user didn't overwrite it
29
+ width: (_f = (_e = (_d = imageField === null || imageField === void 0 ? void 0 : imageField.dimensions) === null || _d === void 0 ? void 0 : _d.width) !== null && _e !== void 0 ? _e : image.width) !== null && _f !== void 0 ? _f : 0,
30
+ height: (_j = (_h = (_g = imageField === null || imageField === void 0 ? void 0 : imageField.dimensions) === null || _g === void 0 ? void 0 : _g.height) !== null && _h !== void 0 ? _h : image.height) !== null && _j !== void 0 ? _j : 0,
31
+ // If edit is not provided, we crop constraint width and height from the left upper corner.
32
+ // WARN: If constraints are greater than image dimensions cut outside the image (background will fill extra space).
33
+ edit: {
34
+ zoom: (_l = (_k = imageField.edit) === null || _k === void 0 ? void 0 : _k.zoom) !== null && _l !== void 0 ? _l : 1,
35
+ crop: {
36
+ x: (_o = (_m = imageField.edit) === null || _m === void 0 ? void 0 : _m.x) !== null && _o !== void 0 ? _o : 0,
37
+ y: (_q = (_p = imageField.edit) === null || _p === void 0 ? void 0 : _p.y) !== null && _q !== void 0 ? _q : 0,
38
+ },
39
+ background: (_s = (_r = imageField.edit) === null || _r === void 0 ? void 0 : _r.background) !== null && _s !== void 0 ? _s : (image.extension === "png" ? "transparent" : "#ffffff"),
40
+ },
41
+ url: image.url,
42
+ }, [
43
+ ["alt", (imageField === null || imageField === void 0 ? void 0 : imageField.alt) || image.alt],
44
+ ["credits", (imageField === null || imageField === void 0 ? void 0 : imageField.copyright) || image.credits],
45
+ ]);
46
+ }
47
+ exports.convertImageView = convertImageView;
48
+ function convertThumbnails(imageField, assets) {
49
+ return Object.entries(imageField.thumbnails).reduce((acc, [thumbnailName, thumbnail]) => {
50
+ return {
51
+ ...acc,
52
+ [thumbnailName]: convertImageView(thumbnail, (0, common_1.getAssetOrThrow)(assets)(thumbnail.id)),
53
+ };
54
+ }, {});
55
+ }
56
+ // All assets from `imageField` must be present in `assets`
57
+ // If not then function will throw an error
58
+ const imageConverter = (imageField, assets) => {
59
+ if (!imageField)
60
+ return;
61
+ return {
62
+ ...convertImageView(imageField, (0, common_1.getAssetOrThrow)(assets)(imageField.id)),
63
+ thumbnails: convertThumbnails(imageField, assets),
64
+ __TYPE__: "ImageContent",
65
+ };
66
+ };
67
+ exports.imageConverter = imageConverter;
@@ -0,0 +1,4 @@
1
+ import type { Asset } from "../../../../common";
2
+ import type { LinkContent } from "../../../../content";
3
+ import type { ImportLink } from "../../../validators";
4
+ export declare const linkConverter: (field: ImportLink["value"], assets: Record<string, Asset | undefined>) => LinkContent | undefined;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.linkConverter = void 0;
4
+ const common_1 = require("../../../../common");
5
+ const webLinkConverter = (field) => ({
6
+ value: {
7
+ url: field.url,
8
+ target: field.target,
9
+ __TYPE__: "ExternalLink",
10
+ },
11
+ __TYPE__: "LinkContent",
12
+ });
13
+ const documentLinkConverter = (field) => ({
14
+ value: {
15
+ id: field.id,
16
+ __TYPE__: "DocumentLink",
17
+ },
18
+ __TYPE__: "LinkContent",
19
+ });
20
+ const fileLinkConverter = (field, asset) => {
21
+ var _a;
22
+ return ({
23
+ value: {
24
+ id: field.id,
25
+ url: asset.origin_url,
26
+ name: (_a = asset.filename) !== null && _a !== void 0 ? _a : "unknown.jpg",
27
+ kind: asset.kind,
28
+ size: asset.size ? String(asset.size) : "0",
29
+ __TYPE__: "FileLink",
30
+ },
31
+ __TYPE__: "LinkContent",
32
+ });
33
+ };
34
+ const imageLinkConverter = (field, asset) => {
35
+ var _a, _b, _c;
36
+ return ({
37
+ value: {
38
+ id: field.id,
39
+ url: asset.origin_url,
40
+ height: String((_a = asset.height) !== null && _a !== void 0 ? _a : 1),
41
+ width: String((_b = asset.width) !== null && _b !== void 0 ? _b : 1),
42
+ name: (_c = asset.filename) !== null && _c !== void 0 ? _c : "unknown.jpg",
43
+ kind: asset.kind,
44
+ size: asset.size ? String(asset.size) : "0",
45
+ __TYPE__: "ImageLink",
46
+ },
47
+ __TYPE__: "LinkContent",
48
+ });
49
+ };
50
+ const linkConverter = (field, assets) => {
51
+ if (field === null) {
52
+ return;
53
+ }
54
+ switch (field.link_type) {
55
+ case "Web":
56
+ return webLinkConverter(field);
57
+ case "Document":
58
+ return documentLinkConverter(field);
59
+ case "Media": {
60
+ const asset = (0, common_1.getAssetOrThrow)(assets)(field.id);
61
+ switch (asset.kind) {
62
+ case "all":
63
+ return fileLinkConverter(field, asset);
64
+ case "image":
65
+ return imageLinkConverter(field, asset);
66
+ }
67
+ }
68
+ }
69
+ };
70
+ exports.linkConverter = linkConverter;
@@ -0,0 +1,5 @@
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
+ export declare function convertNestableWidget(field: ImportNestable, assets: Record<Asset["id"], Asset | undefined>, embeds: Record<string, Embed | undefined>): NestableContent | undefined;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertNestableWidget = void 0;
4
+ const _1 = require(".");
5
+ function convertNestableWidget(field, assets, embeds) {
6
+ switch (field.type) {
7
+ case "Boolean":
8
+ return (0, _1.booleanConverter)(field.value);
9
+ case "Color":
10
+ return (0, _1.colorConverter)(field.value);
11
+ case "Select":
12
+ return (0, _1.selectConverter)(field.value);
13
+ case "Number":
14
+ return (0, _1.numberConverter)(field.value);
15
+ case "Text":
16
+ return (0, _1.textConverter)(field.value);
17
+ case "Date":
18
+ return (0, _1.dateConverter)(field.value);
19
+ case "Timestamp":
20
+ return (0, _1.timestampConverter)(field.value);
21
+ case "Embed":
22
+ return (0, _1.embedConverter)(field.value, embeds);
23
+ case "GeoPoint":
24
+ return (0, _1.geopointConverter)(field.value);
25
+ case "Link":
26
+ return (0, _1.linkConverter)(field.value, assets);
27
+ case "Image":
28
+ return (0, _1.imageConverter)(field.value, assets);
29
+ case "StructuredText":
30
+ return (0, _1.richTextConverter)(field.value, assets, embeds);
31
+ default:
32
+ throw new Error(`Unsupported type of nestable converter ${JSON.stringify(field)}`);
33
+ }
34
+ }
35
+ exports.convertNestableWidget = convertNestableWidget;
@@ -0,0 +1,3 @@
1
+ import type { NumberContent } from "../../../../content";
2
+ import type { ImportNumber } from "../../../validators";
3
+ export declare const numberConverter: (field: ImportNumber["value"]) => NumberContent | undefined;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.numberConverter = void 0;
4
+ const numberConverter = (field) => {
5
+ if (field === null)
6
+ return;
7
+ return {
8
+ type: "Number",
9
+ value: field.toString(),
10
+ __TYPE__: "FieldContent",
11
+ };
12
+ };
13
+ exports.numberConverter = numberConverter;
@@ -0,0 +1,4 @@
1
+ import type { Embed } from "../../../../../common";
2
+ import type { EmbedBlock } from "../../../../../content";
3
+ import type { ImportEmbedBlock } from "../../../../validators/fields/nestable/ImportRichText/blocks";
4
+ export declare function embedBlockConverter(block: ImportEmbedBlock, embeds: Record<string, Embed | undefined>): EmbedBlock;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.embedBlockConverter = void 0;
4
+ const Embed_1 = require("../Embed");
5
+ function embedBlockConverter(block, embeds) {
6
+ const embedData = (0, Embed_1.embedConverter)(block.oembed, embeds);
7
+ if (!embedData)
8
+ throw new Error("Failed to convert embed data");
9
+ return {
10
+ type: block.type,
11
+ data: embedData,
12
+ };
13
+ }
14
+ exports.embedBlockConverter = embedBlockConverter;
@@ -0,0 +1,4 @@
1
+ import { Asset } from "../../../../../common";
2
+ import type { ImageBlock } from "../../../../../content";
3
+ import type { ImportImageBlock } from "../../../../validators/fields/nestable/ImportRichText/blocks";
4
+ export declare function imageBlockConverter(block: ImportImageBlock, assets: Record<Asset["id"], Asset | undefined>): ImageBlock;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.imageBlockConverter = void 0;
4
+ const common_1 = require("../../../../../common");
5
+ const Image_1 = require("../Image");
6
+ function imageBlockConverter(block, assets) {
7
+ return {
8
+ type: block.type,
9
+ data: (0, Image_1.convertImageView)(block, (0, common_1.getAssetOrThrow)(assets)(block.id)),
10
+ };
11
+ }
12
+ exports.imageBlockConverter = imageBlockConverter;
@@ -0,0 +1,4 @@
1
+ import type { Asset, Embed } from "../../../../../common";
2
+ import type { RichTextContent } from "../../../../../content";
3
+ import type { ImportRichText } from "../../../../validators";
4
+ export declare const richTextConverter: (richTextField: ImportRichText["value"], assets: Record<Asset["id"], Asset | undefined>, embeds: Record<string, Embed | undefined>) => RichTextContent | undefined;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.richTextConverter = void 0;
4
+ const content_1 = require("../../../../../content");
5
+ const embedBlock_1 = require("./embedBlock");
6
+ const imageBlock_1 = require("./imageBlock");
7
+ const textBlock_1 = require("./textBlock");
8
+ const richTextConverter = (richTextField, assets, embeds) => {
9
+ if (richTextField === null)
10
+ return;
11
+ return {
12
+ __TYPE__: content_1.RichTextContentType,
13
+ value: richTextField.map((block) => {
14
+ if (block.type === "image")
15
+ return (0, imageBlock_1.imageBlockConverter)(block, assets);
16
+ else if (block.type === "embed")
17
+ return (0, embedBlock_1.embedBlockConverter)(block, embeds);
18
+ return (0, textBlock_1.textBlockConverter)(block, assets);
19
+ }),
20
+ };
21
+ };
22
+ exports.richTextConverter = richTextConverter;
@@ -0,0 +1,4 @@
1
+ import type { Asset } from "../../../../../common";
2
+ import type { TextBlock } from "../../../../../content";
3
+ import type { ImportTextBlock } from "../../../../validators/fields/nestable/ImportRichText/blocks";
4
+ export declare function textBlockConverter(block: ImportTextBlock, assets: Record<Asset["id"], Asset | undefined>): TextBlock;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.textBlockConverter = void 0;
4
+ const Link_1 = require("../Link");
5
+ function textBlockConverter(block, assets) {
6
+ return {
7
+ type: block.type,
8
+ content: {
9
+ text: block.text,
10
+ ...(() => {
11
+ if (block.spans) {
12
+ const convertedSpans = spansConverter(block.spans, assets);
13
+ if (!convertedSpans)
14
+ return {};
15
+ return { spans: convertedSpans };
16
+ }
17
+ return {};
18
+ })(),
19
+ },
20
+ ...(block.direction ? { direction: block.direction } : {}),
21
+ };
22
+ }
23
+ exports.textBlockConverter = textBlockConverter;
24
+ function spansConverter(spans, assets) {
25
+ return spans.reduce((acc, span) => {
26
+ switch (span.type) {
27
+ case "em":
28
+ case "strong":
29
+ return [...acc, span];
30
+ case "label":
31
+ return [
32
+ ...acc,
33
+ {
34
+ ...span,
35
+ data: span.data.label,
36
+ },
37
+ ];
38
+ case "hyperlink": {
39
+ const convertedLink = (0, Link_1.linkConverter)(span.data, assets);
40
+ if (!convertedLink)
41
+ return acc;
42
+ return [
43
+ ...acc,
44
+ {
45
+ type: span.type,
46
+ start: span.start,
47
+ end: span.end,
48
+ data: convertedLink.value,
49
+ },
50
+ ];
51
+ }
52
+ }
53
+ }, []);
54
+ }
@@ -0,0 +1,3 @@
1
+ import type { SelectContent } from "../../../../content";
2
+ import type { ImportSelect } from "../../../validators";
3
+ export declare const selectConverter: (field: ImportSelect["value"]) => SelectContent | undefined;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.selectConverter = void 0;
4
+ const selectConverter = (field) => {
5
+ if (field === null)
6
+ return;
7
+ return {
8
+ type: "Select",
9
+ value: field,
10
+ __TYPE__: "FieldContent",
11
+ };
12
+ };
13
+ exports.selectConverter = selectConverter;
@@ -0,0 +1,3 @@
1
+ import type { TextContent } from "../../../../content";
2
+ import type { ImportText } from "../../../validators";
3
+ export declare const textConverter: (field: ImportText["value"]) => TextContent | undefined;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.textConverter = void 0;
4
+ const textConverter = (field) => {
5
+ if (field === null)
6
+ return;
7
+ return {
8
+ type: "Text",
9
+ value: field,
10
+ __TYPE__: "FieldContent",
11
+ };
12
+ };
13
+ exports.textConverter = textConverter;
@@ -0,0 +1,3 @@
1
+ import type { TimestampContent } from "../../../../content";
2
+ import type { ImportTimestamp } from "../../../validators";
3
+ export declare const timestampConverter: (field: ImportTimestamp["value"]) => TimestampContent | undefined;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.timestampConverter = void 0;
4
+ const timestampConverter = (field) => {
5
+ if (field === null)
6
+ return;
7
+ return {
8
+ type: "Timestamp",
9
+ value: field.toISOString(),
10
+ __TYPE__: "FieldContent",
11
+ };
12
+ };
13
+ exports.timestampConverter = timestampConverter;
@@ -0,0 +1,13 @@
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";
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ (0, tslib_1.__exportStar)(require("./Boolean"), exports);
5
+ (0, tslib_1.__exportStar)(require("./Color"), exports);
6
+ (0, tslib_1.__exportStar)(require("./Date"), exports);
7
+ (0, tslib_1.__exportStar)(require("./Embed"), exports);
8
+ (0, tslib_1.__exportStar)(require("./GeoPoint"), exports);
9
+ (0, tslib_1.__exportStar)(require("./Image"), exports);
10
+ (0, tslib_1.__exportStar)(require("./Link"), exports);
11
+ (0, tslib_1.__exportStar)(require("./Nestable"), exports);
12
+ (0, tslib_1.__exportStar)(require("./Number"), exports);
13
+ (0, tslib_1.__exportStar)(require("./RichText"), exports);
14
+ (0, tslib_1.__exportStar)(require("./Select"), exports);
15
+ (0, tslib_1.__exportStar)(require("./Text"), exports);
16
+ (0, tslib_1.__exportStar)(require("./Timestamp"), exports);
@@ -0,0 +1,2 @@
1
+ export * from "./Document";
2
+ export * from "./fields";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ (0, tslib_1.__exportStar)(require("./Document"), exports);
5
+ (0, tslib_1.__exportStar)(require("./fields"), exports);
@@ -0,0 +1,2 @@
1
+ export * from "./converters";
2
+ export * from "./validators";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ (0, tslib_1.__exportStar)(require("./converters"), exports);
5
+ (0, tslib_1.__exportStar)(require("./validators"), exports);
@@ -0,0 +1,6 @@
1
+ import * as t from "io-ts";
2
+ import type { WidgetKey } from "../../common";
3
+ import type { StaticCustomType } from "../../customtypes";
4
+ import { ImportField } from "./fields/ImportField";
5
+ export declare type ImportDocument = Record<WidgetKey, ImportField>;
6
+ export declare const ImportDocument: (customType: StaticCustomType) => t.Type<ImportDocument, ImportDocument, unknown>;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImportDocument = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const fp_ts_1 = require("fp-ts");
6
+ const Either_1 = require("fp-ts/Either");
7
+ const function_1 = require("fp-ts/lib/function");
8
+ const t = (0, tslib_1.__importStar)(require("io-ts"));
9
+ const customtypes_1 = require("../../customtypes");
10
+ const Objects_1 = require("../../utils/Objects");
11
+ const function_2 = require("../../validators/function");
12
+ const ImportField_1 = require("./fields/ImportField");
13
+ const rawImportDocument = (0, function_2.withCustomError)(t.UnknownRecord, () => "document is not an object");
14
+ function validateField(document, customType) {
15
+ return (key, content, model) => {
16
+ // the field is not defined in the custom type -> extra field or typo
17
+ if (!model) {
18
+ const error = {
19
+ value: content,
20
+ context: [{ key: key, type: t.unknown }],
21
+ message: `The field ${key} is not part of the Custom type`,
22
+ };
23
+ return fp_ts_1.either.left([error]);
24
+ }
25
+ // retrieving the right codec then testing out fieldValue with it.
26
+ const { result, codec } = ImportField_1.ImportField.decode(model)(content);
27
+ // error.context is pointing at root when it should point to a `fieldKey`.
28
+ // We need to override the context to make it right.
29
+ if ((0, Either_1.isLeft)(result)) {
30
+ const errors = result.left.map((error) => {
31
+ const contextHead = error.context[0];
32
+ const context = [
33
+ { key: "", actual: document, type: (0, exports.ImportDocument)(customType) },
34
+ contextHead
35
+ ? { ...contextHead, key: key }
36
+ : { key: key, actual: content, type: codec },
37
+ ...error.context.slice(1),
38
+ ];
39
+ return { ...error, context };
40
+ });
41
+ return fp_ts_1.either.left(errors);
42
+ }
43
+ return fp_ts_1.either.right(result.right);
44
+ };
45
+ }
46
+ function validateDocument(customType, rawDoc) {
47
+ const fieldModels = (0, customtypes_1.flattenCustomTypeFields)(customType);
48
+ const { document, errors } = Object.entries(rawDoc).reduce((acc, [fieldKey, fieldValue]) => {
49
+ const parsedField = validateField(rawDoc, customType)(fieldKey, fieldValue, fieldModels[fieldKey]);
50
+ if ((0, Either_1.isLeft)(parsedField))
51
+ return { ...acc, errors: [...acc.errors, ...parsedField.left] };
52
+ return {
53
+ ...acc,
54
+ document: { ...acc.document, [fieldKey]: parsedField.right },
55
+ };
56
+ }, { document: {}, errors: [] });
57
+ if (errors.length > 0)
58
+ return fp_ts_1.either.left(errors);
59
+ return fp_ts_1.either.right(document);
60
+ }
61
+ const ImportDocument = (customType) => new t.Type("ImportDocument", (u) => (0, Objects_1.isObject)(u), (raw) => {
62
+ return (0, function_1.pipe)(rawImportDocument.decode(raw), fp_ts_1.either.chain((doc) => validateDocument(customType, doc)));
63
+ }, t.identity);
64
+ exports.ImportDocument = ImportDocument;
@@ -0,0 +1,5 @@
1
+ import * as t from "io-ts";
2
+ export declare const ImportContent: <T extends "Boolean" | "Color" | "Date" | "Embed" | "GeoPoint" | "Image" | "IntegrationFields" | "Link" | "Number" | "Range" | "StructuredText" | "Select" | "Separator" | "Text" | "Timestamp" | "Group" | "Choice" | "Slices" | "UID", A, O = A>(type: T, valueCodec: t.Type<A, O, unknown>) => t.Type<{
3
+ type: T;
4
+ value: A;
5
+ }, O, unknown>;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImportContent = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const fp_ts_1 = require("fp-ts");
6
+ const function_1 = require("fp-ts/lib/function");
7
+ const t = (0, tslib_1.__importStar)(require("io-ts"));
8
+ const Objects_1 = require("../../../utils/Objects");
9
+ const ImportContent = (type, valueCodec) => new t.Type(`ImportField: ${valueCodec.name}`, (u) => {
10
+ if (!(0, Objects_1.isObject)(u))
11
+ return false;
12
+ return type === u["type"] && valueCodec.is(u["value"]);
13
+ }, (u, c) => {
14
+ return (0, function_1.pipe)(valueCodec.validate(u, c), fp_ts_1.either.map((decodedValue) => {
15
+ return {
16
+ type,
17
+ value: decodedValue,
18
+ };
19
+ }));
20
+ }, (field) => field.value);
21
+ exports.ImportContent = ImportContent;