@prismicio/types-internal 2.2.0-traverse.alpha-2 → 2.2.0-traverse.alpha-4

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 (97) hide show
  1. package/lib/content/Document.d.ts +14 -5
  2. package/lib/content/Document.js +19 -74
  3. package/lib/content/fields/slices/Slice/CompositeSliceContent.d.ts +1 -0
  4. package/lib/content/fields/slices/Slice/CompositeSliceContent.js +30 -1
  5. package/lib/content/fields/slices/Slice/SimpleSliceContent.d.ts +1 -0
  6. package/lib/content/fields/slices/Slice/SimpleSliceContent.js +41 -1
  7. package/lib/customtypes/CustomType.d.ts +5 -2
  8. package/lib/customtypes/CustomType.js +1 -1
  9. package/lib/import/converters/fields/nestable/Image.d.ts +3 -1
  10. package/lib/import/converters/fields/nestable/Image.js +18 -2
  11. package/lib/import/converters/fields/nestable/Nestable.js +2 -0
  12. package/lib/import/converters/fields/nestable/RichText.d.ts +4 -0
  13. package/lib/import/converters/fields/nestable/RichText.js +55 -0
  14. package/lib/import/converters/fields/nestable/index.d.ts +1 -0
  15. package/lib/import/converters/fields/nestable/index.js +1 -0
  16. package/lib/import/validators/fields/ImportField.d.ts +6 -0
  17. package/lib/import/validators/fields/ImportSlices/SharedSlice/SharedSlice.js +1 -1
  18. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceType.js +1 -1
  19. package/lib/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceVariation.js +1 -1
  20. package/lib/import/validators/fields/nestable/Embed.d.ts +3 -0
  21. package/lib/import/validators/fields/nestable/Embed.js +3 -8
  22. package/lib/import/validators/fields/nestable/GeoPoint.js +2 -2
  23. package/lib/import/validators/fields/nestable/Image/default.d.ts +22 -0
  24. package/lib/import/validators/fields/nestable/Image/default.js +19 -0
  25. package/lib/import/validators/fields/nestable/Image/index.d.ts +19 -0
  26. package/lib/import/validators/fields/nestable/Image/index.js +22 -22
  27. package/lib/import/validators/fields/nestable/Image/merge.d.ts +23 -0
  28. package/lib/import/validators/fields/nestable/Image/{Decoder.js → merge.js} +18 -14
  29. package/lib/import/validators/fields/nestable/Image/{Validator.d.ts → validators.d.ts} +4 -2
  30. package/lib/import/validators/fields/nestable/Image/{Validator.js → validators.js} +7 -3
  31. package/lib/import/validators/fields/nestable/ImportRichText/ImportBlock.d.ts +6 -0
  32. package/lib/import/validators/fields/nestable/ImportRichText/ImportBlock.js +25 -0
  33. package/lib/import/validators/fields/nestable/ImportRichText/ImportRichText.d.ts +24 -0
  34. package/lib/import/validators/fields/nestable/ImportRichText/ImportRichText.js +26 -0
  35. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportBlockType.d.ts +6 -0
  36. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportBlockType.js +18 -0
  37. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportEmbedBlock.d.ts +10 -0
  38. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportEmbedBlock.js +11 -0
  39. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportImageBlock.d.ts +8 -0
  40. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportImageBlock.js +11 -0
  41. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportTextBlock.d.ts +70 -0
  42. package/lib/import/validators/fields/nestable/ImportRichText/blocks/ImportTextBlock.js +43 -0
  43. package/lib/import/validators/fields/nestable/ImportRichText/blocks/Span.d.ts +65 -0
  44. package/lib/import/validators/fields/nestable/ImportRichText/blocks/Span.js +20 -0
  45. package/lib/import/validators/fields/nestable/ImportRichText/blocks/index.d.ts +4 -0
  46. package/lib/import/validators/fields/nestable/ImportRichText/blocks/index.js +7 -0
  47. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/HyperlinkSpan.d.ts +24 -0
  48. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/HyperlinkSpan.js +18 -0
  49. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/SpanLocation.d.ts +5 -0
  50. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/SpanLocation.js +10 -0
  51. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/TextSpan.d.ts +17 -0
  52. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/TextSpan.js +22 -0
  53. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/index.d.ts +2 -0
  54. package/lib/import/validators/fields/nestable/ImportRichText/blocks/spans/index.js +5 -0
  55. package/lib/import/validators/fields/nestable/ImportRichText/index.d.ts +2 -0
  56. package/lib/import/validators/fields/nestable/ImportRichText/index.js +7 -0
  57. package/lib/import/validators/fields/nestable/Link.d.ts +21 -6
  58. package/lib/import/validators/fields/nestable/Link.js +8 -8
  59. package/lib/import/validators/fields/nestable/Nestable.d.ts +8 -1
  60. package/lib/import/validators/fields/nestable/Nestable.js +5 -1
  61. package/lib/import/validators/fields/nestable/index.d.ts +2 -1
  62. package/lib/import/validators/fields/nestable/index.js +4 -1
  63. package/package.json +1 -1
  64. package/src/content/Document.ts +43 -92
  65. package/src/content/fields/slices/Slice/CompositeSliceContent.ts +37 -1
  66. package/src/content/fields/slices/Slice/SimpleSliceContent.ts +45 -0
  67. package/src/customtypes/CustomType.ts +6 -5
  68. package/src/import/converters/fields/nestable/Image.ts +34 -4
  69. package/src/import/converters/fields/nestable/Nestable.ts +3 -0
  70. package/src/import/converters/fields/nestable/RichText.ts +62 -0
  71. package/src/import/converters/fields/nestable/index.ts +1 -0
  72. package/src/import/validators/fields/ImportSlices/SharedSlice/SharedSlice.ts +1 -1
  73. package/src/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceType.ts +1 -1
  74. package/src/import/validators/fields/ImportSlices/SharedSlice/fields/SharedSliceVariation.ts +1 -1
  75. package/src/import/validators/fields/nestable/Embed.ts +4 -17
  76. package/src/import/validators/fields/nestable/GeoPoint.ts +2 -2
  77. package/src/import/validators/fields/nestable/Image/default.ts +25 -0
  78. package/src/import/validators/fields/nestable/Image/index.ts +34 -36
  79. package/src/import/validators/fields/nestable/Image/{Decoder.ts → merge.ts} +23 -20
  80. package/src/import/validators/fields/nestable/Image/{Validator.ts → validators.ts} +9 -2
  81. package/src/import/validators/fields/nestable/ImportRichText/ImportBlock.ts +39 -0
  82. package/src/import/validators/fields/nestable/ImportRichText/ImportRichText.ts +41 -0
  83. package/src/import/validators/fields/nestable/ImportRichText/blocks/ImportBlockType.ts +44 -0
  84. package/src/import/validators/fields/nestable/ImportRichText/blocks/ImportEmbedBlock.ts +13 -0
  85. package/src/import/validators/fields/nestable/ImportRichText/blocks/ImportImageBlock.ts +13 -0
  86. package/src/import/validators/fields/nestable/ImportRichText/blocks/ImportTextBlock.ts +56 -0
  87. package/src/import/validators/fields/nestable/ImportRichText/blocks/Span.ts +44 -0
  88. package/src/import/validators/fields/nestable/ImportRichText/blocks/index.ts +4 -0
  89. package/src/import/validators/fields/nestable/ImportRichText/blocks/spans/HyperlinkSpan.ts +24 -0
  90. package/src/import/validators/fields/nestable/ImportRichText/blocks/spans/SpanLocation.ts +8 -0
  91. package/src/import/validators/fields/nestable/ImportRichText/blocks/spans/TextSpan.ts +26 -0
  92. package/src/import/validators/fields/nestable/ImportRichText/blocks/spans/index.ts +2 -0
  93. package/src/import/validators/fields/nestable/ImportRichText/index.ts +2 -0
  94. package/src/import/validators/fields/nestable/Link.ts +18 -13
  95. package/src/import/validators/fields/nestable/Nestable.ts +6 -1
  96. package/src/import/validators/fields/nestable/index.ts +2 -1
  97. package/lib/import/validators/fields/nestable/Image/Decoder.d.ts +0 -26
@@ -1,7 +1,7 @@
1
1
  import * as t from "io-ts";
2
2
  import { ContentPath, TraverseSliceContentFn, TraverseWidgetContentFn } from "../_internal/utils";
3
3
  import { WidgetKey } from "../common";
4
- import { StaticCustomType } from "../customtypes";
4
+ import { type StaticWidget, StaticCustomType } from "../customtypes";
5
5
  import { WidgetContent } from "./fields";
6
6
  import { FieldOrSliceType, WithTypes } from "./LegacyContentCtx";
7
7
  export declare const Document: t.RecordC<t.Type<string, string, unknown>, t.UnionC<[t.ExactC<t.TypeC<{
@@ -2454,7 +2454,10 @@ declare function extractMetadata(data: {
2454
2454
  slugs: ReadonlyArray<string>;
2455
2455
  uid: string | undefined;
2456
2456
  };
2457
- declare function parseLegacyDocument(legacyDoc: unknown, customType: StaticCustomType): Document | undefined;
2457
+ declare function parseLegacyDocument(legacyDoc: unknown, customType: {
2458
+ customTypeId: string;
2459
+ fields: Record<string, StaticWidget>;
2460
+ }): Document | undefined;
2458
2461
  declare function encodeToLegacyDocument(document: Document): DocumentLegacy;
2459
2462
  export declare const DocumentLegacy: {
2460
2463
  _codec: (allTypes?: Map<string, "Boolean" | "Color" | "Date" | "Embed" | "GeoPoint" | "Image" | "IntegrationFields" | "Link" | "Number" | "Range" | "StructuredText" | "Select" | "Separator" | "Text" | "Timestamp" | "Group" | "Slice" | "SharedSlice" | "Choice" | "Slices" | "UID"> | undefined) => t.Type<{
@@ -4643,15 +4646,21 @@ export declare const DocumentLegacy: {
4643
4646
  * @param transform: A user function that provides a way to transform any kind of content wherever it is in a structured Prismic object content.
4644
4647
  * @returns a transformed document with the user's transformation applied with the transform function
4645
4648
  */
4646
- export declare function traverseDocument({ document, model, }: {
4649
+ export declare function traverseDocument({ document, customType, }: {
4647
4650
  document: Document;
4648
- model?: StaticCustomType;
4651
+ customType?: StaticCustomType | {
4652
+ customTypeId: string;
4653
+ fields: Record<string, StaticWidget>;
4654
+ } | undefined;
4649
4655
  }): ({ transformWidget, transformSlice, }: {
4650
4656
  transformWidget?: TraverseWidgetContentFn;
4651
4657
  transformSlice?: TraverseSliceContentFn;
4652
4658
  }) => Document;
4653
4659
  export declare function collectWidgets<W extends WidgetContent>(document: Document, is: (content: WidgetContent, path: ContentPath) => content is W): Record<string, W>;
4654
- export declare function migrateDocument(document: Document, model: StaticCustomType): {
4660
+ export declare function migrateDocument(document: Document, customType: StaticCustomType | {
4661
+ customTypeId: string;
4662
+ fields: Record<string, StaticWidget>;
4663
+ }): {
4655
4664
  [x: string]: {
4656
4665
  type: string;
4657
4666
  __TYPE__: "EmptyContent";
@@ -100,14 +100,17 @@ exports.DocumentLegacy = {
100
100
  * @param transform: A user function that provides a way to transform any kind of content wherever it is in a structured Prismic object content.
101
101
  * @returns a transformed document with the user's transformation applied with the transform function
102
102
  */
103
- function traverseDocument({ document, model, }) {
103
+ function traverseDocument({ document, customType, }) {
104
+ const model = customType && customtypes_1.StaticCustomType.is(customType)
105
+ ? simplifyCustomType(customType)
106
+ : customType;
104
107
  return ({ transformWidget = ({ content }) => content, transformSlice = ({ content }) => content, }) => {
105
108
  const fieldModels = model &&
106
- (0, customtypes_1.flattenStaticWidgets)(model).reduce((acc, [key, def]) => ({ ...acc, [key]: def }), {});
109
+ Object.entries(model.fields).reduce((acc, [key, def]) => ({ ...acc, [key]: def }), {});
107
110
  return Object.entries(document).reduce((acc, [key, content]) => {
108
111
  const fieldModel = fieldModels && fieldModels[key];
109
112
  const path = utils_1.ContentPath.make([
110
- { key: model === null || model === void 0 ? void 0 : model.id, type: "CustomType" },
113
+ { key: model === null || model === void 0 ? void 0 : model.customTypeId, type: "CustomType" },
111
114
  { key, type: "Widget" },
112
115
  ]);
113
116
  const transformedWidget = (() => {
@@ -151,6 +154,12 @@ function traverseDocument({ document, model, }) {
151
154
  };
152
155
  }
153
156
  exports.traverseDocument = traverseDocument;
157
+ function simplifyCustomType(customType) {
158
+ return {
159
+ customTypeId: customType === null || customType === void 0 ? void 0 : customType.id,
160
+ fields: Object.fromEntries((0, customtypes_1.flattenStaticWidgets)(customType)),
161
+ };
162
+ }
154
163
  // /**
155
164
  // * The goal is to be able to collect all widgets or slices of a given type at any level of nesting inside a prismic content
156
165
  // *
@@ -171,86 +180,22 @@ function collectWidgets(document, is) {
171
180
  return collected;
172
181
  }
173
182
  exports.collectWidgets = collectWidgets;
174
- function migrateCompositeSlice(model, content) {
175
- return {
176
- key: content.key,
177
- name: model.sliceName,
178
- maybeLabel: content.maybeLabel,
179
- widget: {
180
- __TYPE__: "SharedSliceContent",
181
- variation: model.variationId,
182
- primary: Object.entries(content.widget.nonRepeat).reduce((acc, [fieldKey, fieldContent]) => {
183
- var _a;
184
- return ((_a = model.fields.primary) === null || _a === void 0 ? void 0 : _a[fieldKey])
185
- ? { ...acc, [fieldKey]: fieldContent }
186
- : acc;
187
- }, {}),
188
- items: content.widget.repeat.map((groupItem) => {
189
- return {
190
- __TYPE__: "GroupItemContent",
191
- value: groupItem.value.reduce((acc, [fieldKey, fieldContent]) => {
192
- var _a;
193
- return ((_a = model.fields.items) === null || _a === void 0 ? void 0 : _a[fieldKey])
194
- ? acc.concat([[fieldKey, fieldContent]])
195
- : acc;
196
- }, []),
197
- };
198
- }, []),
199
- },
200
- };
201
- }
202
- function migrateSimpleSlice(model, content) {
203
- var _a;
204
- if (content.widget.__TYPE__ === "GroupContentType") {
205
- return {
206
- key: content.key,
207
- name: model.sliceName,
208
- maybeLabel: content.maybeLabel,
209
- widget: {
210
- __TYPE__: "SharedSliceContent",
211
- variation: model.variationId,
212
- primary: {},
213
- items: content.widget.value.map((groupItem) => {
214
- return {
215
- __TYPE__: "GroupItemContent",
216
- value: groupItem.value.reduce((acc, [fieldKey, fieldContent]) => {
217
- var _a;
218
- return ((_a = model.fields.items) === null || _a === void 0 ? void 0 : _a[fieldKey])
219
- ? acc.concat([[fieldKey, fieldContent]])
220
- : acc;
221
- }, []),
222
- };
223
- }, []),
224
- },
225
- };
226
- }
227
- return {
228
- key: content.key,
229
- name: model.sliceName,
230
- maybeLabel: content.maybeLabel,
231
- widget: {
232
- __TYPE__: "SharedSliceContent",
233
- variation: model.variationId,
234
- primary: ((_a = model.fields.primary) === null || _a === void 0 ? void 0 : _a[content.name])
235
- ? { [content.key]: content.widget }
236
- : {},
237
- items: [],
238
- },
239
- };
240
- }
241
- function migrateDocument(document, model) {
183
+ function migrateDocument(document, customType) {
184
+ const model = customtypes_1.StaticCustomType.is(customType)
185
+ ? simplifyCustomType(customType)
186
+ : customType;
242
187
  const needsMigration = Object.values((0, customtypes_1.collectSharedSlices)(model)).some((slice) => Boolean(slice.legacyPaths));
243
188
  if (!needsMigration)
244
189
  return document;
245
190
  return traverseDocument({
246
191
  document,
247
- model,
192
+ customType,
248
193
  })({
249
194
  transformSlice: ({ content, model }) => {
250
195
  if ((0, fields_1.isCompositeSliceItemContent)(content) && (model === null || model === void 0 ? void 0 : model.type) === "SharedSlice")
251
- return migrateCompositeSlice(model, content);
196
+ return (0, fields_1.migrateCompositeSlice)(model, content);
252
197
  if ((0, fields_1.isSimpleSliceItemContent)(content) && (model === null || model === void 0 ? void 0 : model.type) === "SharedSlice")
253
- return migrateSimpleSlice(model, content);
198
+ return (0, fields_1.migrateSimpleSlice)(model, content);
254
199
  return content;
255
200
  },
256
201
  });
@@ -1709,3 +1709,4 @@ export declare function traverseCompositeSliceContent({ path, sliceKey, sliceNam
1709
1709
  content: CompositeSliceItemContent;
1710
1710
  model?: VariationFields | CompositeSliceFields | undefined;
1711
1711
  }): (transformWidget: TraverseWidgetContentFn, transformSlice: TraverseSliceContentFn) => SharedSliceItemContent | CompositeSliceItemContent | undefined;
1712
+ export declare function migrateCompositeSlice(model: VariationFields, content: CompositeSliceItemContent): SharedSliceItemContent;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.traverseCompositeSliceContent = exports.CompositeSliceContent = exports.CompositeSliceLegacy = exports.isCompositeSliceContent = exports.CompositeSliceContentType = void 0;
3
+ exports.migrateCompositeSlice = exports.traverseCompositeSliceContent = exports.CompositeSliceContent = exports.CompositeSliceLegacy = exports.isCompositeSliceContent = exports.CompositeSliceContentType = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const fp_ts_1 = require("fp-ts");
6
6
  const Either_1 = require("fp-ts/lib/Either");
@@ -131,3 +131,32 @@ function traverseCompositeSliceContent({ path, sliceKey, sliceName, model, conte
131
131
  };
132
132
  }
133
133
  exports.traverseCompositeSliceContent = traverseCompositeSliceContent;
134
+ function migrateCompositeSlice(model, content) {
135
+ return {
136
+ key: content.key,
137
+ name: model.sliceName,
138
+ maybeLabel: content.maybeLabel,
139
+ widget: {
140
+ __TYPE__: "SharedSliceContent",
141
+ variation: model.variationId,
142
+ primary: Object.entries(content.widget.nonRepeat).reduce((acc, [fieldKey, fieldContent]) => {
143
+ var _a;
144
+ return ((_a = model.fields.primary) === null || _a === void 0 ? void 0 : _a[fieldKey])
145
+ ? { ...acc, [fieldKey]: fieldContent }
146
+ : acc;
147
+ }, {}),
148
+ items: content.widget.repeat.map((groupItem) => {
149
+ return {
150
+ __TYPE__: "GroupItemContent",
151
+ value: groupItem.value.reduce((acc, [fieldKey, fieldContent]) => {
152
+ var _a;
153
+ return ((_a = model.fields.items) === null || _a === void 0 ? void 0 : _a[fieldKey])
154
+ ? acc.concat([[fieldKey, fieldContent]])
155
+ : acc;
156
+ }, []),
157
+ };
158
+ }, []),
159
+ },
160
+ };
161
+ }
162
+ exports.migrateCompositeSlice = migrateCompositeSlice;
@@ -1699,3 +1699,4 @@ export declare function traverseSimpleSliceContent({ path, sliceKey, sliceName,
1699
1699
  content: SimpleSliceItemContent;
1700
1700
  model?: VariationFields | Group | NestableWidget | undefined;
1701
1701
  }): (transformWidget: TraverseWidgetContentFn, transformSlice: TraverseSliceContentFn) => SharedSliceItemContent | SimpleSliceItemContent | undefined;
1702
+ export declare function migrateSimpleSlice(model: VariationFields, content: SimpleSliceItemContent): SharedSliceItemContent;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.traverseSimpleSliceContent = exports.SimpleSliceLegacy = exports.isSimpleSliceContent = exports.SimpleSliceContent = void 0;
3
+ exports.migrateSimpleSlice = exports.traverseSimpleSliceContent = exports.SimpleSliceLegacy = exports.isSimpleSliceContent = exports.SimpleSliceContent = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const t = (0, tslib_1.__importStar)(require("io-ts"));
6
6
  const GroupContent_1 = require("../../GroupContent");
@@ -85,3 +85,43 @@ function traverseSimpleSliceContent({ path, sliceKey, sliceName, model, content,
85
85
  };
86
86
  }
87
87
  exports.traverseSimpleSliceContent = traverseSimpleSliceContent;
88
+ function migrateSimpleSlice(model, content) {
89
+ var _a;
90
+ if (content.widget.__TYPE__ === "GroupContentType") {
91
+ return {
92
+ key: content.key,
93
+ name: model.sliceName,
94
+ maybeLabel: content.maybeLabel,
95
+ widget: {
96
+ __TYPE__: "SharedSliceContent",
97
+ variation: model.variationId,
98
+ primary: {},
99
+ items: content.widget.value.map((groupItem) => {
100
+ return {
101
+ __TYPE__: "GroupItemContent",
102
+ value: groupItem.value.reduce((acc, [fieldKey, fieldContent]) => {
103
+ var _a;
104
+ return ((_a = model.fields.items) === null || _a === void 0 ? void 0 : _a[fieldKey])
105
+ ? acc.concat([[fieldKey, fieldContent]])
106
+ : acc;
107
+ }, []),
108
+ };
109
+ }, []),
110
+ },
111
+ };
112
+ }
113
+ return {
114
+ key: content.key,
115
+ name: model.sliceName,
116
+ maybeLabel: content.maybeLabel,
117
+ widget: {
118
+ __TYPE__: "SharedSliceContent",
119
+ variation: model.variationId,
120
+ primary: ((_a = model.fields.primary) === null || _a === void 0 ? void 0 : _a[content.name])
121
+ ? { [content.key]: content.widget }
122
+ : {},
123
+ items: [],
124
+ },
125
+ };
126
+ }
127
+ exports.migrateSimpleSlice = migrateSimpleSlice;
@@ -2398,6 +2398,9 @@ export declare function toStatic(customType: CustomType, sharedSlices: Map<strin
2398
2398
  export declare function validateSlices(customType: CustomType, sharedSlices: Map<string, SharedSlice>): Either<CustomTypeSlicesError, CustomType>;
2399
2399
  export declare function collectWidgets(customType: CustomType, f: (ref: string, widget: DynamicWidget) => DynamicWidget | undefined): CustomType;
2400
2400
  export declare function filterMissingSharedSlices(customType: CustomType, sharedSlices: Map<string, SharedSlice>): CustomType;
2401
- export declare function flattenCustomTypeFields(customType: StaticCustomType): Partial<Record<string, StaticWidget>>;
2402
- export declare function collectSharedSlices(customType: StaticCustomType): Record<string, SharedSlice>;
2401
+ export declare function flattenCustomTypeFields(customType: StaticCustomType): Record<string, StaticWidget>;
2402
+ export declare function collectSharedSlices(customType: {
2403
+ customTypeId: string;
2404
+ fields: Record<string, StaticWidget>;
2405
+ }): Record<string, SharedSlice>;
2403
2406
  export {};
@@ -148,7 +148,7 @@ function flattenCustomTypeFields(customType) {
148
148
  }
149
149
  exports.flattenCustomTypeFields = flattenCustomTypeFields;
150
150
  function collectSharedSlices(customType) {
151
- return flattenStaticWidgets(customType).reduce((acc, [, w]) => {
151
+ return Object.entries(customType.fields).reduce((acc, [, w]) => {
152
152
  var _a;
153
153
  if (w.type === "Slices" || w.type === "Choice") {
154
154
  return {
@@ -1,4 +1,6 @@
1
1
  import type { Asset } from "../../../../common";
2
- import type { ImageContent } from "../../../../content";
2
+ import type { ImageContent, ImageContentView } from "../../../../content";
3
3
  import type { ImportImage } from "../../../validators";
4
+ import type { ImportImageBlock } from "../../../validators/fields/nestable/ImportRichText/blocks";
5
+ export declare const imageBlockConverter: (imageBlock: ImportImageBlock, assets: Record<Asset["id"], Asset | undefined>) => ImageContentView;
4
6
  export declare const imageConverter: (imageField: ImportImage["value"], assets: Record<Asset["id"], Asset | undefined>) => ImageContent | undefined;
@@ -1,10 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.imageConverter = void 0;
3
+ exports.imageConverter = exports.imageBlockConverter = void 0;
4
4
  const common_1 = require("../../../../common");
5
5
  const Objects_1 = require("../../../../utils/Objects");
6
- function convertImage(imageField, image) {
6
+ function convertImage(inputImage, image) {
7
7
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
8
+ // We can do that because anyway all properties being read
9
+ const imageField = {
10
+ ...inputImage,
11
+ edit: "edit" in inputImage
12
+ ? inputImage.edit
13
+ : {
14
+ x: 0,
15
+ y: 0,
16
+ zoom: 1,
17
+ },
18
+ dimensions: "dimensions" in inputImage ? inputImage.dimensions : {},
19
+ };
8
20
  return (0, Objects_1.withOptionals)({
9
21
  origin: {
10
22
  id: image.id,
@@ -41,6 +53,10 @@ function convertThumbnails(imageField, assets) {
41
53
  };
42
54
  }, {});
43
55
  }
56
+ const imageBlockConverter = (imageBlock, assets) => {
57
+ return convertImage(imageBlock, (0, common_1.getAssetOrThrow)(assets)(imageBlock.id));
58
+ };
59
+ exports.imageBlockConverter = imageBlockConverter;
44
60
  // All assets from `imageField` must be present in `assets`
45
61
  // If not then function will throw an error
46
62
  const imageConverter = (imageField, assets) => {
@@ -26,6 +26,8 @@ function convertNestableWidget(field, assets, embeds) {
26
26
  return (0, _1.linkConverter)(field.value, assets);
27
27
  case "Image":
28
28
  return (0, _1.imageConverter)(field.value, assets);
29
+ case "StructuredText":
30
+ return (0, _1.richTextConverter)(field.value, assets, embeds);
29
31
  default:
30
32
  throw new Error(`Unsupported type of nestable converter ${JSON.stringify(field)}`);
31
33
  }
@@ -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,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.richTextConverter = void 0;
4
+ const content_1 = require("../../../../content");
5
+ const Embed_1 = require("./Embed");
6
+ const Image_1 = require("./Image");
7
+ const Link_1 = require("./Link");
8
+ const richTextBlockConverter = (importBlock, assets, embeds) => {
9
+ var _a, _b, _c;
10
+ if (importBlock.type === "image") {
11
+ return {
12
+ type: importBlock.type,
13
+ data: (0, Image_1.imageBlockConverter)(importBlock, assets),
14
+ };
15
+ }
16
+ else if (importBlock.type === "embed") {
17
+ const embedData = (0, Embed_1.embedConverter)(importBlock.oembed, embeds);
18
+ if (!embedData)
19
+ throw new Error("Failed to convert embed data");
20
+ return {
21
+ type: importBlock.type,
22
+ data: embedData,
23
+ };
24
+ }
25
+ else {
26
+ // Text block
27
+ return {
28
+ type: importBlock.type,
29
+ direction: (_a = importBlock.direction) !== null && _a !== void 0 ? _a : "ltr",
30
+ content: {
31
+ text: importBlock.text,
32
+ spans: (_c = (_b = importBlock.spans) === null || _b === void 0 ? void 0 : _b.map((span) => {
33
+ const linkData = span.type === "hyperlink"
34
+ ? (0, Link_1.linkConverter)(span.data, assets)
35
+ : undefined;
36
+ return {
37
+ type: span.type,
38
+ start: span.start,
39
+ end: span.end,
40
+ data: linkData,
41
+ };
42
+ })) !== null && _c !== void 0 ? _c : [],
43
+ },
44
+ };
45
+ }
46
+ };
47
+ const richTextConverter = (richTextField, assets, embeds) => {
48
+ if (richTextField === null)
49
+ return;
50
+ return {
51
+ __TYPE__: content_1.RichTextContentType,
52
+ value: richTextField.map((block) => richTextBlockConverter(block, assets, embeds)),
53
+ };
54
+ };
55
+ exports.richTextConverter = richTextConverter;
@@ -7,6 +7,7 @@ export * from "./Image";
7
7
  export * from "./Link";
8
8
  export * from "./Nestable";
9
9
  export * from "./Number";
10
+ export * from "./RichText";
10
11
  export * from "./Select";
11
12
  export * from "./Text";
12
13
  export * from "./Timestamp";
@@ -10,6 +10,7 @@ const tslib_1 = require("tslib");
10
10
  (0, tslib_1.__exportStar)(require("./Link"), exports);
11
11
  (0, tslib_1.__exportStar)(require("./Nestable"), exports);
12
12
  (0, tslib_1.__exportStar)(require("./Number"), exports);
13
+ (0, tslib_1.__exportStar)(require("./RichText"), exports);
13
14
  (0, tslib_1.__exportStar)(require("./Select"), exports);
14
15
  (0, tslib_1.__exportStar)(require("./Text"), exports);
15
16
  (0, tslib_1.__exportStar)(require("./Timestamp"), exports);
@@ -50,6 +50,9 @@ export declare const ImportField: {
50
50
  }, {
51
51
  link_type: "Document" | "Web" | "Media";
52
52
  } | undefined, unknown> | import("io-ts").Type<{
53
+ type: "StructuredText";
54
+ value: import("./nestable").ImportBlock[] | null;
55
+ }, unknown[] | undefined, unknown> | import("io-ts").Type<{
53
56
  type: "Number";
54
57
  value: number | null;
55
58
  }, number | undefined, unknown> | import("io-ts").Type<{
@@ -74,6 +77,9 @@ export declare const ImportField: {
74
77
  }> | import("fp-ts/lib/Either").Right<{
75
78
  type: "Number";
76
79
  value: number | null;
80
+ }> | import("fp-ts/lib/Either").Right<{
81
+ type: "StructuredText";
82
+ value: import("./nestable").ImportBlock[] | null;
77
83
  }> | import("fp-ts/lib/Either").Right<{
78
84
  type: "Link";
79
85
  value: ({
@@ -8,7 +8,7 @@ const t = (0, tslib_1.__importStar)(require("io-ts"));
8
8
  const validators_1 = require("../../../../../validators");
9
9
  const function_2 = require("../../../../../validators/function");
10
10
  const fields_1 = require("./fields");
11
- const SharedSliceShape = t.type({
11
+ const SharedSliceShape = t.strict({
12
12
  id: fields_1.OptionalSharedSliceId,
13
13
  slice_type: validators_1.NonEmptyString,
14
14
  name: validators_1.String,
@@ -12,7 +12,7 @@ const utils_1 = require("../utils");
12
12
  * slice_type - the validated slice_type
13
13
  * slice - SharedSlice custom type data matching the slice_type. We return it alongside the validated slice_type, because it is needed to decode the 'variation' field in the SharedSlice (see SharedSliceVariation.ts)
14
14
  */
15
- const SharedSliceTypeShape = t.type({
15
+ const SharedSliceTypeShape = t.strict({
16
16
  slice_type: validators_1.NonEmptyString,
17
17
  slice: customtypes_1.SharedSlice,
18
18
  });
@@ -12,7 +12,7 @@ const utils_1 = require("../utils");
12
12
  * variation - the validated variation of the slice
13
13
  * data - Variation data matching the variation. We return it alongside the validated variation, because it is needed to decode the 'primary' and 'items' fields in the SharedSlice.
14
14
  */
15
- const SharedSliceVariationShape = t.type({
15
+ const SharedSliceVariationShape = t.strict({
16
16
  variation: validators_1.NonEmptyString,
17
17
  data: customtypes_1.Variation,
18
18
  });
@@ -1,4 +1,7 @@
1
1
  import * as t from "io-ts";
2
+ export declare const ImportEmbedValue: t.ExactC<t.TypeC<{
3
+ embed_url: t.Type<string, string, unknown>;
4
+ }>>;
2
5
  export declare const ImportEmbed: t.Type<{
3
6
  type: "Embed";
4
7
  value: {
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ImportEmbed = void 0;
3
+ exports.ImportEmbed = exports.ImportEmbedValue = void 0;
4
4
  const tslib_1 = require("tslib");
5
- const Either = (0, tslib_1.__importStar)(require("fp-ts/Either"));
6
- const function_1 = require("fp-ts/lib/function");
7
5
  const t = (0, tslib_1.__importStar)(require("io-ts"));
8
6
  const validators_1 = require("../../../../validators");
9
7
  const ImportContent_1 = require("../ImportContent");
@@ -27,10 +25,7 @@ const EmbedUrl = new t.Type("EmbedUrl", (u) => isValidHttpUrl(u), (u, c) => {
27
25
  return t.failure(u, c, "The value must be a valid http/https url");
28
26
  }
29
27
  }, t.identity);
30
- const EmbedProto = t.type({
28
+ exports.ImportEmbedValue = t.strict({
31
29
  embed_url: EmbedUrl,
32
30
  });
33
- const Embed = new t.Type("ImportEmbedValue", (u) => EmbedProto.is(u), (u) => {
34
- return (0, function_1.pipe)(EmbedProto.decode(u), Either.map((parsed) => ({ embed_url: parsed.embed_url })));
35
- }, t.identity);
36
- exports.ImportEmbed = (0, ImportContent_1.ImportContent)("Embed", (0, validators_1.EmptyObjectOrElse)(Embed));
31
+ exports.ImportEmbed = (0, ImportContent_1.ImportContent)("Embed", (0, validators_1.EmptyObjectOrElse)(exports.ImportEmbedValue));
@@ -6,8 +6,8 @@ const t = (0, tslib_1.__importStar)(require("io-ts"));
6
6
  const validators_1 = require("../../../../validators");
7
7
  const function_1 = require("../../../../validators/function");
8
8
  const ImportContent_1 = require("../ImportContent");
9
- const GeooPoint = (0, function_1.withCustomError)(t.strict({
9
+ const GeoPoint = (0, function_1.withCustomError)(t.strict({
10
10
  latitude: (0, validators_1.NumberRange)(-90, 90, "latitude"),
11
11
  longitude: (0, validators_1.NumberRange)(-180, 180, "longitude"),
12
12
  }), () => "GeoPoint must be an object with the properties `latitude` and `longitude` between the given ranges");
13
- exports.ImportGeoPoint = (0, ImportContent_1.ImportContent)("GeoPoint", (0, validators_1.EmptyObjectOrElse)(GeooPoint));
13
+ exports.ImportGeoPoint = (0, ImportContent_1.ImportContent)("GeoPoint", (0, validators_1.EmptyObjectOrElse)(GeoPoint));
@@ -0,0 +1,22 @@
1
+ import * as t from "io-ts";
2
+ export declare const defaultImportImage: (field?: ({
3
+ type: "Image";
4
+ } & {
5
+ fieldset?: string | null | undefined;
6
+ config?: {
7
+ label?: string | null | undefined;
8
+ placeholder?: string;
9
+ constraint?: {
10
+ width?: number | null;
11
+ height?: number | null;
12
+ };
13
+ thumbnails?: readonly ({
14
+ name: string;
15
+ } & {
16
+ width?: number | null;
17
+ height?: number | null;
18
+ })[];
19
+ };
20
+ }) | undefined) => t.Type<Record<never, never>, {
21
+ [key: string]: unknown;
22
+ }, unknown>;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultImportImage = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const t = (0, tslib_1.__importStar)(require("io-ts"));
6
+ const validators_1 = require("../../../../../validators");
7
+ const function_1 = require("../../../../../validators/function");
8
+ const defaultImportImage = (field) => {
9
+ var _a;
10
+ // If there is not thumbnails we expect an empty object
11
+ if (!((_a = field === null || field === void 0 ? void 0 : field.config) === null || _a === void 0 ? void 0 : _a.thumbnails) || !field.config.thumbnails.length)
12
+ return validators_1.EmptyObject;
13
+ // If there are thumbnails, we expect an object with thumbnails as empty objects
14
+ return (0, function_1.withCustomError)(t.strict(field.config.thumbnails.reduce((acc, thumbnail) => ({
15
+ ...acc,
16
+ [thumbnail.name]: validators_1.EmptyObject,
17
+ }), {})), () => "The value must be an object");
18
+ };
19
+ exports.defaultImportImage = defaultImportImage;
@@ -1,5 +1,24 @@
1
1
  import * as t from "io-ts";
2
2
  import type { ImageFieldWithThumbnails } from "./model";
3
+ export declare const ImageFieldCodec: (field?: ({
4
+ type: "Image";
5
+ } & {
6
+ fieldset?: string | null | undefined;
7
+ config?: {
8
+ label?: string | null | undefined;
9
+ placeholder?: string;
10
+ constraint?: {
11
+ width?: number | null;
12
+ height?: number | null;
13
+ };
14
+ thumbnails?: readonly ({
15
+ name: string;
16
+ } & {
17
+ width?: number | null;
18
+ height?: number | null;
19
+ })[];
20
+ };
21
+ }) | undefined) => t.Type<ImageFieldWithThumbnails, ImageFieldWithThumbnails, unknown>;
3
22
  export declare const ImportImage: (field?: ({
4
23
  type: "Image";
5
24
  } & {