@prismicio/types-internal 3.7.0 → 3.8.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 (33) hide show
  1. package/lib/content/Document.d.ts +114 -42
  2. package/lib/content/fields/RepeatableContent.d.ts +45 -47
  3. package/lib/content/fields/WidgetContent.d.ts +114 -42
  4. package/lib/content/fields/nestable/LinkContent.js +4 -16
  5. package/lib/content/fields/nestable/NestableContent.d.ts +19 -7
  6. package/lib/content/fields/nestable/RichTextContent/TextBlock.d.ts +192 -55
  7. package/lib/content/fields/nestable/RichTextContent/TextBlock.js +10 -10
  8. package/lib/content/fields/nestable/TableContent.d.ts +25 -9
  9. package/lib/content/fields/nestable/TableContent.js +8 -8
  10. package/lib/content/fields/slices/Slice/CompositeSliceContent.d.ts +38 -14
  11. package/lib/content/fields/slices/Slice/RepeatableContent.d.ts +7 -3
  12. package/lib/content/fields/slices/Slice/SharedSliceContent.d.ts +38 -14
  13. package/lib/content/fields/slices/Slice/SimpleSliceContent.d.ts +19 -7
  14. package/lib/content/fields/slices/Slice/SlicePrimaryContent.d.ts +19 -7
  15. package/lib/content/fields/slices/Slice/index.d.ts +65 -25
  16. package/lib/content/fields/slices/SliceItem.d.ts +65 -25
  17. package/lib/content/fields/slices/SlicesContent.d.ts +95 -35
  18. package/lib/content/utils.d.ts +4 -0
  19. package/lib/content/utils.js +16 -1
  20. package/lib/customtypes/widgets/slices/SliceWidget.d.ts +327 -0
  21. package/lib/customtypes/widgets/slices/SliceWidget.js +8 -0
  22. package/package.json +1 -1
  23. package/src/content/fields/nestable/LinkContent.ts +1 -20
  24. package/src/content/fields/nestable/TableContent.ts +37 -29
  25. package/src/content/utils.ts +20 -0
  26. package/lib/content/fields/nestable/RichTextContent/Block.d.ts +0 -1036
  27. package/lib/content/fields/nestable/RichTextContent/Block.js +0 -31
  28. package/lib/content/fields/nestable/RichTextContent/EmbedBlock.d.ts +0 -60
  29. package/lib/content/fields/nestable/RichTextContent/EmbedBlock.js +0 -53
  30. package/lib/content/fields/nestable/RichTextContent/ImageBlock.d.ts +0 -203
  31. package/lib/content/fields/nestable/RichTextContent/ImageBlock.js +0 -36
  32. package/lib/content/fields/nestable/RichTextContent/TableBlock.d.ts +0 -500
  33. package/lib/content/fields/nestable/RichTextContent/TableBlock.js +0 -21
@@ -0,0 +1,327 @@
1
+ import * as t from "io-ts";
2
+ export declare const SliceWidget: t.UnionC<[t.ExactC<t.IntersectionC<[t.TypeC<{
3
+ type: t.LiteralC<"Group">;
4
+ }>, t.PartialC<{
5
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
6
+ icon: t.StringC;
7
+ description: t.StringC;
8
+ config: t.ExactC<t.PartialC<{
9
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
10
+ repeat: t.BooleanC;
11
+ fields: t.RecordC<t.Type<string, string, unknown>, t.UnionC<[t.ExactC<t.IntersectionC<[t.TypeC<{
12
+ type: t.LiteralC<"Color">;
13
+ }>, t.PartialC<{
14
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
15
+ config: t.ExactC<t.PartialC<{
16
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
17
+ placeholder: t.StringC;
18
+ }>>;
19
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
20
+ type: t.LiteralC<"Boolean">;
21
+ }>, t.PartialC<{
22
+ config: t.ExactC<t.PartialC<{
23
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
24
+ default_value: t.BooleanC;
25
+ placeholder_true: t.StringC;
26
+ placeholder_false: t.StringC;
27
+ }>>;
28
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
29
+ type: t.LiteralC<"Embed">;
30
+ }>, t.PartialC<{
31
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
32
+ config: t.ExactC<t.PartialC<{
33
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
34
+ placeholder: t.StringC;
35
+ useAsTitle: t.BooleanC;
36
+ }>>;
37
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
38
+ type: t.LiteralC<"GeoPoint">;
39
+ }>, t.PartialC<{
40
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
41
+ config: t.ExactC<t.PartialC<{
42
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
43
+ }>>;
44
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
45
+ type: t.LiteralC<"Date">;
46
+ }>, t.PartialC<{
47
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
48
+ config: t.ExactC<t.PartialC<{
49
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
50
+ placeholder: t.StringC;
51
+ default: t.StringC;
52
+ }>>;
53
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
54
+ type: t.LiteralC<"Number">;
55
+ }>, t.PartialC<{
56
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
57
+ config: t.ExactC<t.PartialC<{
58
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
59
+ placeholder: t.StringC;
60
+ min: t.UnionC<[t.NumberC, import("io-ts-types").NumberFromStringC]>;
61
+ max: t.UnionC<[t.NumberC, import("io-ts-types").NumberFromStringC]>;
62
+ step: t.UnionC<[t.NumberC, import("io-ts-types").NumberFromStringC]>;
63
+ }>>;
64
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
65
+ type: t.LiteralC<"Range">;
66
+ }>, t.PartialC<{
67
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
68
+ config: t.ExactC<t.PartialC<{
69
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
70
+ placeholder: t.StringC;
71
+ min: t.UnionC<[t.NumberC, import("io-ts-types").NumberFromStringC]>;
72
+ max: t.UnionC<[t.NumberC, import("io-ts-types").NumberFromStringC]>;
73
+ step: t.UnionC<[t.NumberC, import("io-ts-types").NumberFromStringC]>;
74
+ }>>;
75
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
76
+ type: t.LiteralC<"StructuredText">;
77
+ }>, t.PartialC<{
78
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
79
+ config: t.ExactC<t.PartialC<{
80
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
81
+ placeholder: t.StringC;
82
+ useAsTitle: t.BooleanC;
83
+ single: t.Type<string, string, unknown>;
84
+ multi: t.Type<string, string, unknown>;
85
+ imageConstraint: t.PartialC<{
86
+ width: t.Type<number | null, unknown, unknown>;
87
+ height: t.Type<number | null, unknown, unknown>;
88
+ }>;
89
+ labels: t.Type<readonly string[], object, unknown>;
90
+ allowTargetBlank: t.BooleanC;
91
+ }>>;
92
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
93
+ type: t.LiteralC<"Select">;
94
+ }>, t.PartialC<{
95
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
96
+ config: t.ExactC<t.PartialC<{
97
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
98
+ placeholder: t.StringC;
99
+ default_value: t.StringC;
100
+ options: t.ReadonlyArrayC<t.UnionC<[t.StringC, t.Type<string, string, unknown>, t.Type<string, string, unknown>]>>;
101
+ }>>;
102
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
103
+ type: t.LiteralC<"Separator">;
104
+ }>, t.PartialC<{
105
+ config: t.ExactC<t.PartialC<{
106
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
107
+ }>>;
108
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
109
+ type: t.LiteralC<"Text">;
110
+ }>, t.PartialC<{
111
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
112
+ config: t.ExactC<t.PartialC<{
113
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
114
+ useAsTitle: t.BooleanC;
115
+ placeholder: t.StringC;
116
+ }>>;
117
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
118
+ type: t.LiteralC<"Timestamp">;
119
+ }>, t.PartialC<{
120
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
121
+ config: t.ExactC<t.PartialC<{
122
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
123
+ placeholder: t.StringC;
124
+ default: t.StringC;
125
+ }>>;
126
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
127
+ type: t.LiteralC<"Link">;
128
+ }>, t.PartialC<{
129
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
130
+ config: t.ExactC<t.PartialC<{
131
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
132
+ useAsTitle: t.BooleanC;
133
+ placeholder: t.StringC;
134
+ select: t.UnionC<[t.LiteralC<"media">, t.LiteralC<"document">, t.LiteralC<"web">, t.NullC]>;
135
+ customtypes: t.ReadonlyArrayC<t.StringC>;
136
+ masks: t.Type<readonly string[], object, unknown>;
137
+ tags: t.Type<readonly string[], object, unknown>;
138
+ allowTargetBlank: t.BooleanC;
139
+ }>>;
140
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
141
+ type: t.LiteralC<"Image">;
142
+ }>, t.PartialC<{
143
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
144
+ config: t.ExactC<t.PartialC<{
145
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
146
+ placeholder: t.StringC;
147
+ constraint: t.PartialC<{
148
+ width: t.Type<number | null, unknown, unknown>;
149
+ height: t.Type<number | null, unknown, unknown>;
150
+ }>;
151
+ thumbnails: t.ReadonlyArrayC<t.ExactC<t.IntersectionC<[t.TypeC<{
152
+ name: t.StringC;
153
+ }>, t.PartialC<{
154
+ width: t.Type<number | null, unknown, unknown>;
155
+ height: t.Type<number | null, unknown, unknown>;
156
+ }>]>>>;
157
+ }>>;
158
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
159
+ type: t.LiteralC<"IntegrationFields">;
160
+ }>, t.PartialC<{
161
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
162
+ config: t.ExactC<t.PartialC<{
163
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
164
+ placeholder: t.StringC;
165
+ catalog: t.StringC;
166
+ }>>;
167
+ }>]>>]>>;
168
+ }>>;
169
+ }>]>>, t.UnionC<[t.ExactC<t.IntersectionC<[t.TypeC<{
170
+ type: t.LiteralC<"Color">;
171
+ }>, t.PartialC<{
172
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
173
+ config: t.ExactC<t.PartialC<{
174
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
175
+ placeholder: t.StringC;
176
+ }>>;
177
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
178
+ type: t.LiteralC<"Boolean">;
179
+ }>, t.PartialC<{
180
+ config: t.ExactC<t.PartialC<{
181
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
182
+ default_value: t.BooleanC;
183
+ placeholder_true: t.StringC;
184
+ placeholder_false: t.StringC;
185
+ }>>;
186
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
187
+ type: t.LiteralC<"Embed">;
188
+ }>, t.PartialC<{
189
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
190
+ config: t.ExactC<t.PartialC<{
191
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
192
+ placeholder: t.StringC;
193
+ useAsTitle: t.BooleanC;
194
+ }>>;
195
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
196
+ type: t.LiteralC<"GeoPoint">;
197
+ }>, t.PartialC<{
198
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
199
+ config: t.ExactC<t.PartialC<{
200
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
201
+ }>>;
202
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
203
+ type: t.LiteralC<"Date">;
204
+ }>, t.PartialC<{
205
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
206
+ config: t.ExactC<t.PartialC<{
207
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
208
+ placeholder: t.StringC;
209
+ default: t.StringC;
210
+ }>>;
211
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
212
+ type: t.LiteralC<"Number">;
213
+ }>, t.PartialC<{
214
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
215
+ config: t.ExactC<t.PartialC<{
216
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
217
+ placeholder: t.StringC;
218
+ min: t.UnionC<[t.NumberC, import("io-ts-types").NumberFromStringC]>;
219
+ max: t.UnionC<[t.NumberC, import("io-ts-types").NumberFromStringC]>;
220
+ step: t.UnionC<[t.NumberC, import("io-ts-types").NumberFromStringC]>;
221
+ }>>;
222
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
223
+ type: t.LiteralC<"Range">;
224
+ }>, t.PartialC<{
225
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
226
+ config: t.ExactC<t.PartialC<{
227
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
228
+ placeholder: t.StringC;
229
+ min: t.UnionC<[t.NumberC, import("io-ts-types").NumberFromStringC]>;
230
+ max: t.UnionC<[t.NumberC, import("io-ts-types").NumberFromStringC]>;
231
+ step: t.UnionC<[t.NumberC, import("io-ts-types").NumberFromStringC]>;
232
+ }>>;
233
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
234
+ type: t.LiteralC<"StructuredText">;
235
+ }>, t.PartialC<{
236
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
237
+ config: t.ExactC<t.PartialC<{
238
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
239
+ placeholder: t.StringC;
240
+ useAsTitle: t.BooleanC;
241
+ single: t.Type<string, string, unknown>;
242
+ multi: t.Type<string, string, unknown>;
243
+ imageConstraint: t.PartialC<{
244
+ width: t.Type<number | null, unknown, unknown>;
245
+ height: t.Type<number | null, unknown, unknown>;
246
+ }>;
247
+ labels: t.Type<readonly string[], object, unknown>;
248
+ allowTargetBlank: t.BooleanC;
249
+ }>>;
250
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
251
+ type: t.LiteralC<"Select">;
252
+ }>, t.PartialC<{
253
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
254
+ config: t.ExactC<t.PartialC<{
255
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
256
+ placeholder: t.StringC;
257
+ default_value: t.StringC;
258
+ options: t.ReadonlyArrayC<t.UnionC<[t.StringC, t.Type<string, string, unknown>, t.Type<string, string, unknown>]>>;
259
+ }>>;
260
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
261
+ type: t.LiteralC<"Separator">;
262
+ }>, t.PartialC<{
263
+ config: t.ExactC<t.PartialC<{
264
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
265
+ }>>;
266
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
267
+ type: t.LiteralC<"Text">;
268
+ }>, t.PartialC<{
269
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
270
+ config: t.ExactC<t.PartialC<{
271
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
272
+ useAsTitle: t.BooleanC;
273
+ placeholder: t.StringC;
274
+ }>>;
275
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
276
+ type: t.LiteralC<"Timestamp">;
277
+ }>, t.PartialC<{
278
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
279
+ config: t.ExactC<t.PartialC<{
280
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
281
+ placeholder: t.StringC;
282
+ default: t.StringC;
283
+ }>>;
284
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
285
+ type: t.LiteralC<"Link">;
286
+ }>, t.PartialC<{
287
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
288
+ config: t.ExactC<t.PartialC<{
289
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
290
+ useAsTitle: t.BooleanC;
291
+ placeholder: t.StringC;
292
+ select: t.UnionC<[t.LiteralC<"media">, t.LiteralC<"document">, t.LiteralC<"web">, t.NullC]>;
293
+ customtypes: t.ReadonlyArrayC<t.StringC>;
294
+ masks: t.Type<readonly string[], object, unknown>;
295
+ tags: t.Type<readonly string[], object, unknown>;
296
+ allowTargetBlank: t.BooleanC;
297
+ }>>;
298
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
299
+ type: t.LiteralC<"Image">;
300
+ }>, t.PartialC<{
301
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
302
+ config: t.ExactC<t.PartialC<{
303
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
304
+ placeholder: t.StringC;
305
+ constraint: t.PartialC<{
306
+ width: t.Type<number | null, unknown, unknown>;
307
+ height: t.Type<number | null, unknown, unknown>;
308
+ }>;
309
+ thumbnails: t.ReadonlyArrayC<t.ExactC<t.IntersectionC<[t.TypeC<{
310
+ name: t.StringC;
311
+ }>, t.PartialC<{
312
+ width: t.Type<number | null, unknown, unknown>;
313
+ height: t.Type<number | null, unknown, unknown>;
314
+ }>]>>>;
315
+ }>>;
316
+ }>]>>, t.ExactC<t.IntersectionC<[t.TypeC<{
317
+ type: t.LiteralC<"IntegrationFields">;
318
+ }>, t.PartialC<{
319
+ fieldset: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
320
+ config: t.ExactC<t.PartialC<{
321
+ label: t.UnionC<[t.Type<string, string, unknown>, t.NullC, t.UndefinedC]>;
322
+ placeholder: t.StringC;
323
+ catalog: t.StringC;
324
+ }>>;
325
+ }>]>>]>]>;
326
+ export declare type SliceWidget = t.TypeOf<typeof SliceWidget>;
327
+ export declare type SliceFieldTypes = SliceWidget["type"];
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SliceWidget = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const t = (0, tslib_1.__importStar)(require("io-ts"));
6
+ const Group_1 = require("../Group");
7
+ const nestable_1 = require("../nestable");
8
+ exports.SliceWidget = t.union([Group_1.Group, nestable_1.NestableWidget]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prismicio/types-internal",
3
- "version": "3.7.0",
3
+ "version": "3.8.0",
4
4
  "description": "Prismic types for Custom Types and Prismic Data",
5
5
  "keywords": [
6
6
  "typescript",
@@ -26,30 +26,11 @@ import { either } from "fp-ts"
26
26
  import { pipe } from "fp-ts/lib/function"
27
27
  import * as t from "io-ts"
28
28
  import { withFallback } from "io-ts-types"
29
- import { v4 as uuid, validate as validateUuid } from "uuid"
30
29
 
31
30
  import { NonEmptyString, StringOrNull } from "../../../validators"
32
31
  import { nullable } from "../../../validators/function"
33
32
  import type { LegacyContentCtx, WithTypes } from "../../LegacyContentCtx"
34
- import { hasContentType } from "../../utils"
35
-
36
- const isUuid = (input: unknown): input is string =>
37
- typeof input === "string" && validateUuid(input)
38
-
39
- const uuidWithFallback = new t.Type<string, string, unknown>(
40
- "UUID",
41
- isUuid,
42
- (u, c) => {
43
- if (typeof u === "undefined") return t.success(uuid())
44
- if (isUuid(u)) return t.success(u)
45
- return t.failure(u, c)
46
- },
47
- t.identity,
48
- )
49
-
50
- function withKey<C extends t.Mixed>(codec: C) {
51
- return t.intersection([t.strict({ key: uuidWithFallback }), codec])
52
- }
33
+ import { hasContentType, withKey } from "../../utils"
53
34
 
54
35
  // ImageLink.
55
36
 
@@ -11,7 +11,7 @@ import {
11
11
  TableCell as TableCellModel,
12
12
  } from "../../../customtypes"
13
13
  import type { LegacyContentCtx, WithTypes } from "../../LegacyContentCtx"
14
- import { hasContentType } from "../../utils"
14
+ import { hasContentType, withKey } from "../../utils"
15
15
  import { RichTextContent, RichTextLegacyContent } from "./RichTextContent"
16
16
 
17
17
  export const TableContentType = "TableContent"
@@ -19,22 +19,26 @@ export const TableContentType = "TableContent"
19
19
  export const isTableContent = (u: unknown): u is TableContent =>
20
20
  hasContentType(u) && u.__TYPE__ === TableContentType
21
21
 
22
- const TableCell = t.intersection([
23
- t.strict({
24
- type: t.union([t.literal("tableHeader"), t.literal("tableCell")]),
25
- content: RichTextContent,
26
- }),
27
- t.exact(
28
- t.partial({
29
- columnWidth: t.number,
22
+ const TableCell = withKey(
23
+ t.intersection([
24
+ t.strict({
25
+ type: t.union([t.literal("tableHeader"), t.literal("tableCell")]),
26
+ content: RichTextContent,
30
27
  }),
31
- ),
32
- ])
28
+ t.exact(
29
+ t.partial({
30
+ columnWidth: t.number,
31
+ }),
32
+ ),
33
+ ]),
34
+ )
33
35
 
34
- const TableRow = t.strict({
35
- type: t.literal("tableRow"),
36
- content: t.array(TableCell),
37
- })
36
+ const TableRow = withKey(
37
+ t.strict({
38
+ type: t.literal("tableRow"),
39
+ content: t.array(TableCell),
40
+ }),
41
+ )
38
42
 
39
43
  export const TableContent = t.strict({
40
44
  __TYPE__: t.literal(TableContentType),
@@ -44,22 +48,26 @@ export type TableContent = t.TypeOf<typeof TableContent>
44
48
 
45
49
  // Legacy.
46
50
 
47
- const TableCellLegacy = t.intersection([
48
- t.strict({
49
- type: t.union([t.literal("tableHeader"), t.literal("tableCell")]),
50
- content: RichTextLegacyContent,
51
- }),
52
- t.exact(
53
- t.partial({
54
- columnWidth: t.number,
51
+ const TableCellLegacy = withKey(
52
+ t.intersection([
53
+ t.strict({
54
+ type: t.union([t.literal("tableHeader"), t.literal("tableCell")]),
55
+ content: RichTextLegacyContent,
55
56
  }),
56
- ),
57
- ])
57
+ t.exact(
58
+ t.partial({
59
+ columnWidth: t.number,
60
+ }),
61
+ ),
62
+ ]),
63
+ )
58
64
 
59
- const TableRowLegacy = t.strict({
60
- type: t.literal("tableRow"),
61
- content: t.array(TableCellLegacy),
62
- })
65
+ const TableRowLegacy = withKey(
66
+ t.strict({
67
+ type: t.literal("tableRow"),
68
+ content: t.array(TableCellLegacy),
69
+ }),
70
+ )
63
71
 
64
72
  const TableLegacyContent = t.strict({
65
73
  content: t.array(TableRowLegacy),
@@ -1,4 +1,6 @@
1
1
  import { isRight } from "fp-ts/lib/Either"
2
+ import * as t from "io-ts"
3
+ import { v4 as uuid, validate as validateUuid } from "uuid"
2
4
 
3
5
  import { FieldContentType, FieldType } from "./fields"
4
6
 
@@ -17,3 +19,21 @@ type WithContentType = { __TYPE__: string }
17
19
  export function hasContentType(obj: unknown): obj is WithContentType {
18
20
  return typeof obj === "object" && obj !== null && "__TYPE__" in obj
19
21
  }
22
+
23
+ const isUuid = (input: unknown): input is string =>
24
+ typeof input === "string" && validateUuid(input)
25
+
26
+ const uuidWithFallback = new t.Type<string, string, unknown>(
27
+ "UUID",
28
+ isUuid,
29
+ (u, c) => {
30
+ if (typeof u === "undefined") return t.success(uuid())
31
+ if (isUuid(u)) return t.success(u)
32
+ return t.failure(u, c)
33
+ },
34
+ t.identity,
35
+ )
36
+
37
+ export function withKey<C extends t.Mixed>(codec: C) {
38
+ return t.intersection([t.strict({ key: uuidWithFallback }), codec])
39
+ }