@storyblok/schema 0.1.0-alpha.0 → 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +29 -0
  2. package/dist/generated/capi/types.gen.d.cts +1 -126
  3. package/dist/generated/capi/types.gen.d.mts +1 -126
  4. package/dist/generated/mapi/_internal.gen.d.cts +1 -171
  5. package/dist/generated/mapi/_internal.gen.d.mts +1 -171
  6. package/dist/generated/overlay/zod.gen.cjs +409 -0
  7. package/dist/generated/overlay/zod.gen.cjs.map +1 -0
  8. package/dist/generated/overlay/zod.gen.mjs +403 -0
  9. package/dist/generated/overlay/zod.gen.mjs.map +1 -0
  10. package/dist/generated/types/block.d.cts +27 -14
  11. package/dist/generated/types/block.d.mts +27 -14
  12. package/dist/generated/types/field.d.cts +28 -13
  13. package/dist/generated/types/field.d.mts +28 -13
  14. package/dist/generated/types/mapi-story.d.cts +5 -9
  15. package/dist/generated/types/mapi-story.d.mts +5 -9
  16. package/dist/helpers/define-block.cjs +10 -28
  17. package/dist/helpers/define-block.cjs.map +1 -1
  18. package/dist/helpers/define-block.d.cts +14 -31
  19. package/dist/helpers/define-block.d.mts +14 -31
  20. package/dist/helpers/define-block.mjs +11 -27
  21. package/dist/helpers/define-block.mjs.map +1 -1
  22. package/dist/helpers/define-datasource.cjs +0 -16
  23. package/dist/helpers/define-datasource.cjs.map +1 -1
  24. package/dist/helpers/define-datasource.d.cts +14 -23
  25. package/dist/helpers/define-datasource.d.mts +14 -23
  26. package/dist/helpers/define-datasource.mjs +1 -15
  27. package/dist/helpers/define-datasource.mjs.map +1 -1
  28. package/dist/helpers/define-field.cjs +11 -11
  29. package/dist/helpers/define-field.cjs.map +1 -1
  30. package/dist/helpers/define-field.d.cts +46 -85
  31. package/dist/helpers/define-field.d.mts +46 -85
  32. package/dist/helpers/define-field.mjs +12 -11
  33. package/dist/helpers/define-field.mjs.map +1 -1
  34. package/dist/helpers/schema-type.d.cts +5 -9
  35. package/dist/helpers/schema-type.d.mts +5 -9
  36. package/dist/index.cjs +6 -47
  37. package/dist/index.d.cts +11 -20
  38. package/dist/index.d.mts +11 -20
  39. package/dist/index.mjs +6 -15
  40. package/dist/utils/is-record.cjs +10 -0
  41. package/dist/utils/is-record.cjs.map +1 -0
  42. package/dist/utils/is-record.mjs +9 -0
  43. package/dist/utils/is-record.mjs.map +1 -0
  44. package/dist/validators/create-story-validator.cjs +37 -0
  45. package/dist/validators/create-story-validator.cjs.map +1 -0
  46. package/dist/validators/create-story-validator.d.cts +18 -0
  47. package/dist/validators/create-story-validator.d.mts +18 -0
  48. package/dist/validators/create-story-validator.mjs +37 -0
  49. package/dist/validators/create-story-validator.mjs.map +1 -0
  50. package/dist/validators/internal-schemas.cjs +1 -0
  51. package/dist/validators/internal-schemas.mjs +3 -0
  52. package/dist/validators/shapes.cjs +12 -0
  53. package/dist/validators/shapes.cjs.map +1 -0
  54. package/dist/validators/shapes.d.cts +62 -0
  55. package/dist/validators/shapes.d.mts +62 -0
  56. package/dist/validators/shapes.mjs +12 -0
  57. package/dist/validators/shapes.mjs.map +1 -0
  58. package/dist/validators/types.d.cts +25 -0
  59. package/dist/validators/types.d.mts +25 -0
  60. package/dist/validators/validate-schema.cjs +125 -0
  61. package/dist/validators/validate-schema.cjs.map +1 -0
  62. package/dist/validators/validate-schema.d.cts +18 -0
  63. package/dist/validators/validate-schema.d.mts +18 -0
  64. package/dist/validators/validate-schema.mjs +125 -0
  65. package/dist/validators/validate-schema.mjs.map +1 -0
  66. package/dist/validators/validate-story.cjs +257 -0
  67. package/dist/validators/validate-story.cjs.map +1 -0
  68. package/dist/validators/validate-story.d.cts +17 -0
  69. package/dist/validators/validate-story.d.mts +17 -0
  70. package/dist/validators/validate-story.mjs +257 -0
  71. package/dist/validators/validate-story.mjs.map +1 -0
  72. package/package.json +5 -1
  73. package/dist/generated/mapi/types.gen.d.cts +0 -1272
  74. package/dist/generated/mapi/types.gen.d.mts +0 -1272
  75. package/dist/helpers/create-story-helpers.cjs +0 -42
  76. package/dist/helpers/create-story-helpers.cjs.map +0 -1
  77. package/dist/helpers/create-story-helpers.d.cts +0 -50
  78. package/dist/helpers/create-story-helpers.d.mts +0 -50
  79. package/dist/helpers/create-story-helpers.mjs +0 -42
  80. package/dist/helpers/create-story-helpers.mjs.map +0 -1
  81. package/dist/helpers/define-asset-folder.cjs +0 -46
  82. package/dist/helpers/define-asset-folder.cjs.map +0 -1
  83. package/dist/helpers/define-asset-folder.d.cts +0 -33
  84. package/dist/helpers/define-asset-folder.d.mts +0 -33
  85. package/dist/helpers/define-asset-folder.mjs +0 -43
  86. package/dist/helpers/define-asset-folder.mjs.map +0 -1
  87. package/dist/helpers/define-asset.cjs +0 -60
  88. package/dist/helpers/define-asset.cjs.map +0 -1
  89. package/dist/helpers/define-asset.d.cts +0 -32
  90. package/dist/helpers/define-asset.d.mts +0 -32
  91. package/dist/helpers/define-asset.mjs +0 -57
  92. package/dist/helpers/define-asset.mjs.map +0 -1
  93. package/dist/helpers/define-block-folder.cjs +0 -44
  94. package/dist/helpers/define-block-folder.cjs.map +0 -1
  95. package/dist/helpers/define-block-folder.d.cts +0 -34
  96. package/dist/helpers/define-block-folder.d.mts +0 -34
  97. package/dist/helpers/define-block-folder.mjs +0 -41
  98. package/dist/helpers/define-block-folder.mjs.map +0 -1
  99. package/dist/helpers/define-datasource-entry.cjs +0 -47
  100. package/dist/helpers/define-datasource-entry.cjs.map +0 -1
  101. package/dist/helpers/define-datasource-entry.d.cts +0 -49
  102. package/dist/helpers/define-datasource-entry.d.mts +0 -49
  103. package/dist/helpers/define-datasource-entry.mjs +0 -43
  104. package/dist/helpers/define-datasource-entry.mjs.map +0 -1
  105. package/dist/helpers/define-internal-tag.cjs +0 -41
  106. package/dist/helpers/define-internal-tag.cjs.map +0 -1
  107. package/dist/helpers/define-internal-tag.d.cts +0 -34
  108. package/dist/helpers/define-internal-tag.d.mts +0 -34
  109. package/dist/helpers/define-internal-tag.mjs +0 -38
  110. package/dist/helpers/define-internal-tag.mjs.map +0 -1
  111. package/dist/helpers/define-link.cjs +0 -23
  112. package/dist/helpers/define-link.cjs.map +0 -1
  113. package/dist/helpers/define-link.d.cts +0 -32
  114. package/dist/helpers/define-link.d.mts +0 -32
  115. package/dist/helpers/define-link.mjs +0 -22
  116. package/dist/helpers/define-link.mjs.map +0 -1
  117. package/dist/helpers/define-preset.cjs +0 -44
  118. package/dist/helpers/define-preset.cjs.map +0 -1
  119. package/dist/helpers/define-preset.d.cts +0 -35
  120. package/dist/helpers/define-preset.d.mts +0 -35
  121. package/dist/helpers/define-preset.mjs +0 -41
  122. package/dist/helpers/define-preset.mjs.map +0 -1
  123. package/dist/helpers/define-space.cjs +0 -47
  124. package/dist/helpers/define-space.cjs.map +0 -1
  125. package/dist/helpers/define-space.d.cts +0 -31
  126. package/dist/helpers/define-space.d.mts +0 -31
  127. package/dist/helpers/define-space.mjs +0 -44
  128. package/dist/helpers/define-space.mjs.map +0 -1
  129. package/dist/helpers/define-story.cjs +0 -122
  130. package/dist/helpers/define-story.cjs.map +0 -1
  131. package/dist/helpers/define-story.d.cts +0 -135
  132. package/dist/helpers/define-story.d.mts +0 -135
  133. package/dist/helpers/define-story.mjs +0 -118
  134. package/dist/helpers/define-story.mjs.map +0 -1
  135. package/dist/helpers/define-tag.cjs +0 -13
  136. package/dist/helpers/define-tag.cjs.map +0 -1
  137. package/dist/helpers/define-tag.d.cts +0 -23
  138. package/dist/helpers/define-tag.d.mts +0 -23
  139. package/dist/helpers/define-tag.mjs +0 -12
  140. package/dist/helpers/define-tag.mjs.map +0 -1
  141. package/dist/helpers/define-user.cjs +0 -50
  142. package/dist/helpers/define-user.cjs.map +0 -1
  143. package/dist/helpers/define-user.d.cts +0 -26
  144. package/dist/helpers/define-user.d.mts +0 -26
  145. package/dist/helpers/define-user.mjs +0 -48
  146. package/dist/helpers/define-user.mjs.map +0 -1
@@ -0,0 +1,403 @@
1
+ import * as z from "zod";
2
+
3
+ //#region src/generated/overlay/zod.gen.ts
4
+ /**
5
+ * Universal identity and display properties shared by every field type
6
+ */
7
+ const zBaseFieldRoot = z.object({
8
+ type: z.optional(z.string()),
9
+ id: z.optional(z.string()),
10
+ display_name: z.optional(z.string()),
11
+ description: z.optional(z.string()),
12
+ tooltip: z.optional(z.boolean()),
13
+ pos: z.optional(z.int()),
14
+ conditional_settings: z.optional(z.array(z.record(z.string(), z.unknown())))
15
+ });
16
+ const zSectionFieldRoot = zBaseFieldRoot.and(z.object({
17
+ type: z.enum(["section"]),
18
+ keys: z.optional(z.array(z.string())),
19
+ fieldset: z.optional(z.object({
20
+ title: z.optional(z.string()),
21
+ description: z.optional(z.string()),
22
+ collapsible: z.optional(z.boolean()),
23
+ collapsed: z.optional(z.boolean())
24
+ }))
25
+ }));
26
+ const zTabFieldRoot = zBaseFieldRoot.and(z.object({
27
+ type: z.enum(["tab"]),
28
+ keys: z.optional(z.array(z.string()))
29
+ }));
30
+ /**
31
+ * Properties shared by content-bearing fields (i.e. fields that hold a value).
32
+ * Layout-only field types like `section` and `tab` do not include these.
33
+ *
34
+ */
35
+ const zValueFieldRoot = z.object({
36
+ required: z.optional(z.boolean()),
37
+ regex: z.optional(z.string()),
38
+ default_value: z.optional(z.string()),
39
+ translatable: z.optional(z.boolean()),
40
+ no_translate: z.optional(z.boolean()),
41
+ exclude_from_ai_translation: z.optional(z.boolean()),
42
+ exclude_from_merge: z.optional(z.boolean()),
43
+ exclude_from_overwrite: z.optional(z.boolean()),
44
+ force_merge: z.optional(z.boolean())
45
+ });
46
+ const zAssetFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({
47
+ type: z.enum(["asset"]),
48
+ filetypes: z.optional(z.array(z.string())),
49
+ asset_folder_id: z.optional(z.int()),
50
+ allow_external_url: z.optional(z.boolean()),
51
+ height: z.optional(z.int()),
52
+ width: z.optional(z.int()),
53
+ restrict_assets: z.optional(z.boolean()),
54
+ asset_whitelist: z.optional(z.array(z.string()))
55
+ }));
56
+ const zBloksFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({
57
+ type: z.enum(["bloks"]),
58
+ restrict_type: z.optional(z.string()),
59
+ restrict_components: z.optional(z.boolean()),
60
+ component_whitelist: z.optional(z.array(z.string())),
61
+ component_denylist: z.optional(z.array(z.string())),
62
+ component_tag_whitelist: z.optional(z.array(z.int())),
63
+ component_tag_denylist: z.optional(z.array(z.int())),
64
+ component_group_whitelist: z.optional(z.array(z.string())),
65
+ component_group_denylist: z.optional(z.array(z.string())),
66
+ minimum: z.optional(z.int()),
67
+ maximum: z.optional(z.int()),
68
+ maximum_entries: z.optional(z.int()),
69
+ minimum_entries: z.optional(z.int())
70
+ }));
71
+ const zBooleanFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({
72
+ type: z.enum(["boolean"]),
73
+ inline_label: z.optional(z.boolean())
74
+ }));
75
+ const zCustomFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({
76
+ type: z.enum(["custom"]),
77
+ field_type: z.optional(z.string()),
78
+ options: z.optional(z.array(z.object({
79
+ name: z.optional(z.string()),
80
+ value: z.optional(z.string())
81
+ }))),
82
+ required_fields: z.optional(z.string()),
83
+ source: z.optional(z.enum(["self", "internal"])),
84
+ datasource_slug: z.optional(z.string()),
85
+ external_datasource: z.optional(z.string())
86
+ }));
87
+ const zDatetimeFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({
88
+ type: z.enum(["datetime"]),
89
+ disable_time: z.optional(z.boolean())
90
+ }));
91
+ const zMarkdownFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({
92
+ type: z.enum(["markdown"]),
93
+ rich_markdown: z.optional(z.boolean()),
94
+ rtl: z.optional(z.boolean()),
95
+ customize_toolbar: z.optional(z.boolean()),
96
+ toolbar: z.optional(z.array(z.enum([
97
+ "bold",
98
+ "italic",
99
+ "inlinecode",
100
+ "code",
101
+ "h1",
102
+ "h2",
103
+ "h3",
104
+ "h4",
105
+ "h5",
106
+ "h6",
107
+ "list",
108
+ "olist",
109
+ "quote",
110
+ "hrule",
111
+ "link",
112
+ "image",
113
+ "paragraph",
114
+ "help",
115
+ "toggle-richtext",
116
+ "auto",
117
+ "ltr",
118
+ "rtl"
119
+ ]))),
120
+ allow_multiline: z.optional(z.boolean()),
121
+ max_length: z.optional(z.int())
122
+ }));
123
+ const zMultiassetFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({
124
+ type: z.enum(["multiasset"]),
125
+ filetypes: z.optional(z.array(z.string())),
126
+ asset_folder_id: z.optional(z.int()),
127
+ allow_external_url: z.optional(z.boolean()),
128
+ height: z.optional(z.int()),
129
+ width: z.optional(z.int()),
130
+ restrict_assets: z.optional(z.boolean()),
131
+ asset_whitelist: z.optional(z.array(z.string())),
132
+ maximum_entries: z.optional(z.int()),
133
+ minimum_entries: z.optional(z.int())
134
+ }));
135
+ const zMultilinkFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({
136
+ type: z.enum(["multilink"]),
137
+ restrict_content_types: z.optional(z.boolean()),
138
+ component_whitelist: z.optional(z.array(z.string())),
139
+ allow_target_blank: z.optional(z.boolean()),
140
+ allow_custom_attributes: z.optional(z.boolean()),
141
+ force_link_scope: z.optional(z.boolean()),
142
+ link_scope: z.optional(z.string()),
143
+ show_anchor: z.optional(z.boolean()),
144
+ email_link_type: z.optional(z.boolean()),
145
+ asset_link_type: z.optional(z.boolean())
146
+ }));
147
+ const zNumberFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({
148
+ type: z.enum(["number"]),
149
+ min_value: z.optional(z.number()),
150
+ max_value: z.optional(z.number()),
151
+ decimals: z.optional(z.int()),
152
+ steps: z.optional(z.number())
153
+ }));
154
+ const zOptionFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({
155
+ type: z.enum(["option"]),
156
+ options: z.optional(z.array(z.object({
157
+ _uid: z.optional(z.string()),
158
+ name: z.optional(z.string()),
159
+ value: z.optional(z.string())
160
+ }))),
161
+ source: z.optional(z.string()),
162
+ datasource_slug: z.optional(z.string()),
163
+ external_datasource: z.optional(z.string()),
164
+ folder_slug: z.optional(z.string()),
165
+ filter_content_type: z.optional(z.array(z.string())),
166
+ exclude_empty_option: z.optional(z.boolean()),
167
+ include_empty_option: z.optional(z.boolean()),
168
+ use_uuid: z.optional(z.boolean()),
169
+ entry_appearance: z.optional(z.string()),
170
+ allow_advanced_search: z.optional(z.boolean()),
171
+ max_options: z.optional(z.string()),
172
+ min_options: z.optional(z.string()),
173
+ multiple: z.optional(z.boolean())
174
+ }));
175
+ const zOptionsFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({
176
+ type: z.enum(["options"]),
177
+ options: z.optional(z.array(z.object({
178
+ _uid: z.optional(z.string()),
179
+ name: z.optional(z.string()),
180
+ value: z.optional(z.string())
181
+ }))),
182
+ source: z.optional(z.string()),
183
+ datasource_slug: z.optional(z.string()),
184
+ external_datasource: z.optional(z.string()),
185
+ folder_slug: z.optional(z.string()),
186
+ filter_content_type: z.optional(z.array(z.string())),
187
+ use_uuid: z.optional(z.boolean()),
188
+ is_reference_type: z.optional(z.boolean()),
189
+ entry_appearance: z.optional(z.string()),
190
+ allow_advanced_search: z.optional(z.boolean()),
191
+ max_options: z.optional(z.string()),
192
+ min_options: z.optional(z.string()),
193
+ multiple: z.optional(z.boolean())
194
+ }));
195
+ const zRichtextFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({
196
+ type: z.enum(["richtext"]),
197
+ customize_toolbar: z.optional(z.boolean()),
198
+ toolbar: z.optional(z.array(z.enum([
199
+ "ai-complete",
200
+ "ai-shorten",
201
+ "ai-extend",
202
+ "ai-rephrase",
203
+ "ai-summarize",
204
+ "ai-simplify",
205
+ "ai-tone",
206
+ "ai-emoji",
207
+ "ai-translate",
208
+ "ai-tldr",
209
+ "ai-spelling",
210
+ "blok",
211
+ "ltr",
212
+ "rtl",
213
+ "export",
214
+ "import",
215
+ "bold",
216
+ "list",
217
+ "inlinecode",
218
+ "code",
219
+ "color",
220
+ "copy",
221
+ "cut",
222
+ "emoji",
223
+ "h1",
224
+ "h2",
225
+ "h3",
226
+ "h4",
227
+ "h5",
228
+ "h6",
229
+ "highlight",
230
+ "unset",
231
+ "hrule",
232
+ "image",
233
+ "italic",
234
+ "link",
235
+ "anchor",
236
+ "olist",
237
+ "paragraph",
238
+ "paste-action",
239
+ "paste",
240
+ "quote",
241
+ "redo",
242
+ "strike",
243
+ "subscript",
244
+ "superscript",
245
+ "underline",
246
+ "undo",
247
+ "align-left",
248
+ "align-center",
249
+ "align-right",
250
+ "align-justify"
251
+ ]))),
252
+ style_options: z.optional(z.array(z.object({
253
+ _uid: z.optional(z.string()),
254
+ name: z.optional(z.string()),
255
+ value: z.optional(z.string())
256
+ }))),
257
+ restrict_type: z.optional(z.string()),
258
+ restrict_components: z.optional(z.boolean()),
259
+ component_whitelist: z.optional(z.array(z.string())),
260
+ component_denylist: z.optional(z.array(z.string())),
261
+ component_tag_whitelist: z.optional(z.array(z.int())),
262
+ component_tag_denylist: z.optional(z.array(z.int())),
263
+ component_group_whitelist: z.optional(z.array(z.string())),
264
+ component_group_denylist: z.optional(z.array(z.string())),
265
+ allow_target_blank: z.optional(z.boolean()),
266
+ allow_custom_attributes: z.optional(z.boolean())
267
+ }));
268
+ const zTableFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({ type: z.enum(["table"]) }));
269
+ const zTextFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({
270
+ type: z.enum(["text"]),
271
+ max_length: z.optional(z.int()),
272
+ maxlength: z.optional(z.int()),
273
+ minlength: z.optional(z.int()),
274
+ size: z.optional(z.string()),
275
+ rtl: z.optional(z.boolean())
276
+ }));
277
+ const zTextareaFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({
278
+ type: z.enum(["textarea"]),
279
+ max_length: z.optional(z.int()),
280
+ maxlength: z.optional(z.int()),
281
+ minlength: z.optional(z.int()),
282
+ size: z.optional(z.string()),
283
+ rtl: z.optional(z.boolean()),
284
+ rich_text: z.optional(z.boolean()),
285
+ markdown: z.optional(z.boolean())
286
+ }));
287
+ /**
288
+ * A component schema field. Discriminated by the literal `type` enum on each variant.
289
+ */
290
+ const zComponentSchemaField = z.union([
291
+ zTextFieldRoot,
292
+ zTextareaFieldRoot,
293
+ zRichtextFieldRoot,
294
+ zMarkdownFieldRoot,
295
+ zNumberFieldRoot,
296
+ zDatetimeFieldRoot,
297
+ zBooleanFieldRoot,
298
+ zOptionFieldRoot,
299
+ zOptionsFieldRoot,
300
+ zAssetFieldRoot,
301
+ zMultiassetFieldRoot,
302
+ zMultilinkFieldRoot,
303
+ zBloksFieldRoot,
304
+ zTableFieldRoot,
305
+ zSectionFieldRoot,
306
+ zTabFieldRoot,
307
+ zCustomFieldRoot
308
+ ]);
309
+ /**
310
+ * Asset field type - single asset (image, video, audio, or document)
311
+ */
312
+ const zAssetFieldValueRoot = z.object({
313
+ fieldtype: z.enum(["asset"]),
314
+ id: z.union([z.int(), z.null()]),
315
+ alt: z.union([z.string(), z.null()]),
316
+ name: z.optional(z.string()),
317
+ focus: z.optional(z.union([z.string(), z.null()])),
318
+ title: z.optional(z.union([z.string(), z.null()])),
319
+ source: z.optional(z.union([z.string(), z.null()])),
320
+ filename: z.string(),
321
+ copyright: z.optional(z.union([z.string(), z.null()])),
322
+ meta_data: z.optional(z.record(z.string(), z.unknown())),
323
+ is_external_url: z.optional(z.boolean())
324
+ });
325
+ const zAssetFieldValue = zAssetFieldValueRoot;
326
+ /**
327
+ * Multilink field type - link to internal stories, external URLs, emails, etc.
328
+ */
329
+ const zMultilinkFieldValueRoot = z.object({
330
+ fieldtype: z.enum(["multilink"]),
331
+ id: z.string(),
332
+ url: z.string(),
333
+ linktype: z.enum([
334
+ "story",
335
+ "url",
336
+ "email",
337
+ "asset"
338
+ ]),
339
+ cached_url: z.string(),
340
+ anchor: z.optional(z.union([z.string(), z.null()])),
341
+ target: z.optional(z.union([
342
+ z.literal("_self"),
343
+ z.literal("_blank"),
344
+ z.null()
345
+ ]))
346
+ });
347
+ const zMultilinkFieldValue = zMultilinkFieldValueRoot;
348
+ /**
349
+ * Plugin/Custom field type - field plugin with custom structure
350
+ */
351
+ const zPluginFieldValueRoot = z.object({
352
+ plugin: z.string(),
353
+ _uid: z.optional(z.uuid())
354
+ });
355
+ const zPluginFieldValue = zPluginFieldValueRoot;
356
+ /**
357
+ * Richtext field type - structured rich text document (ProseMirror format)
358
+ */
359
+ const zRichtextFieldValueRoot = z.object({
360
+ type: z.enum(["doc"]),
361
+ content: z.optional(z.array(z.record(z.string(), z.unknown())))
362
+ });
363
+ const zRichtextFieldValue = zRichtextFieldValueRoot;
364
+ /**
365
+ * Table field type - structured table data
366
+ */
367
+ const zTableFieldValueRoot = z.object({
368
+ thead: z.array(z.object({
369
+ _uid: z.string(),
370
+ component: z.enum(["_table_head"]),
371
+ value: z.optional(z.string())
372
+ })),
373
+ tbody: z.array(z.object({
374
+ _uid: z.string(),
375
+ component: z.enum(["_table_row"]),
376
+ body: z.optional(z.array(z.object({
377
+ _uid: z.string(),
378
+ component: z.enum(["_table_col"]),
379
+ value: z.optional(z.string())
380
+ })))
381
+ }))
382
+ });
383
+ const zTableFieldValue = zTableFieldValueRoot;
384
+ /**
385
+ * Content object for creating or updating a component instance. Contains a component technical name and dynamic fields whose values depend on the component's schema field types. The _uid is optional — Storyblok will auto-generate one if not provided.
386
+ */
387
+ const zBlockContentInputRoot = z.object({
388
+ _uid: z.optional(z.string()),
389
+ component: z.string(),
390
+ _editable: z.optional(z.string())
391
+ });
392
+ /**
393
+ * Content object representing a component instance. Contains a _uid, a component technical name, and dynamic fields whose values depend on the component's schema field types (text, textarea, richtext, markdown, number, datetime, boolean, option, options, asset, multiasset, multilink, bloks, table, section, custom/plugin).
394
+ */
395
+ const zBlockContentRoot = z.object({
396
+ _uid: z.string(),
397
+ component: z.string(),
398
+ _editable: z.optional(z.string())
399
+ });
400
+
401
+ //#endregion
402
+ export { zAssetFieldValue, zMultilinkFieldValue, zPluginFieldValue, zRichtextFieldValue, zTableFieldValue };
403
+ //# sourceMappingURL=zod.gen.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod.gen.mjs","names":[],"sources":["../../../src/generated/overlay/zod.gen.ts"],"sourcesContent":["// Generated by @storyblok/openapi-codegen. Do not edit by hand.\n// Internal Zod v4 schemas — imported only by runtime validators, never by public types.\n\n// This file is auto-generated by @hey-api/openapi-ts\n\nimport * as z from 'zod';\n\n/**\n * Universal identity and display properties shared by every field type\n */\nexport const zBaseFieldRoot = z.object({\n type: z.optional(z.string()),\n id: z.optional(z.string()),\n display_name: z.optional(z.string()),\n description: z.optional(z.string()),\n tooltip: z.optional(z.boolean()),\n pos: z.optional(z.int()),\n conditional_settings: z.optional(z.array(z.record(z.string(), z.unknown())))\n});\n\nexport const zSectionFieldRoot = zBaseFieldRoot.and(z.object({\n type: z.enum(['section']),\n keys: z.optional(z.array(z.string())),\n fieldset: z.optional(z.object({\n title: z.optional(z.string()),\n description: z.optional(z.string()),\n collapsible: z.optional(z.boolean()),\n collapsed: z.optional(z.boolean())\n }))\n}));\n\nexport const zTabFieldRoot = zBaseFieldRoot.and(z.object({\n type: z.enum(['tab']),\n keys: z.optional(z.array(z.string()))\n}));\n\n/**\n * Properties shared by content-bearing fields (i.e. fields that hold a value).\n * Layout-only field types like `section` and `tab` do not include these.\n *\n */\nexport const zValueFieldRoot = z.object({\n required: z.optional(z.boolean()),\n regex: z.optional(z.string()),\n default_value: z.optional(z.string()),\n translatable: z.optional(z.boolean()),\n no_translate: z.optional(z.boolean()),\n exclude_from_ai_translation: z.optional(z.boolean()),\n exclude_from_merge: z.optional(z.boolean()),\n exclude_from_overwrite: z.optional(z.boolean()),\n force_merge: z.optional(z.boolean())\n});\n\nexport const zAssetFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({\n type: z.enum(['asset']),\n filetypes: z.optional(z.array(z.string())),\n asset_folder_id: z.optional(z.int()),\n allow_external_url: z.optional(z.boolean()),\n height: z.optional(z.int()),\n width: z.optional(z.int()),\n restrict_assets: z.optional(z.boolean()),\n asset_whitelist: z.optional(z.array(z.string()))\n}));\n\nexport const zBloksFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({\n type: z.enum(['bloks']),\n restrict_type: z.optional(z.string()),\n restrict_components: z.optional(z.boolean()),\n component_whitelist: z.optional(z.array(z.string())),\n component_denylist: z.optional(z.array(z.string())),\n component_tag_whitelist: z.optional(z.array(z.int())),\n component_tag_denylist: z.optional(z.array(z.int())),\n component_group_whitelist: z.optional(z.array(z.string())),\n component_group_denylist: z.optional(z.array(z.string())),\n minimum: z.optional(z.int()),\n maximum: z.optional(z.int()),\n maximum_entries: z.optional(z.int()),\n minimum_entries: z.optional(z.int())\n}));\n\nexport const zBooleanFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({\n type: z.enum(['boolean']),\n inline_label: z.optional(z.boolean())\n}));\n\nexport const zCustomFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({\n type: z.enum(['custom']),\n field_type: z.optional(z.string()),\n options: z.optional(z.array(z.object({\n name: z.optional(z.string()),\n value: z.optional(z.string())\n }))),\n required_fields: z.optional(z.string()),\n source: z.optional(z.enum(['self', 'internal'])),\n datasource_slug: z.optional(z.string()),\n external_datasource: z.optional(z.string())\n}));\n\nexport const zDatetimeFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({\n type: z.enum(['datetime']),\n disable_time: z.optional(z.boolean())\n}));\n\nexport const zMarkdownFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({\n type: z.enum(['markdown']),\n rich_markdown: z.optional(z.boolean()),\n rtl: z.optional(z.boolean()),\n customize_toolbar: z.optional(z.boolean()),\n toolbar: z.optional(z.array(z.enum([\n 'bold',\n 'italic',\n 'inlinecode',\n 'code',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'list',\n 'olist',\n 'quote',\n 'hrule',\n 'link',\n 'image',\n 'paragraph',\n 'help',\n 'toggle-richtext',\n 'auto',\n 'ltr',\n 'rtl'\n ]))),\n allow_multiline: z.optional(z.boolean()),\n max_length: z.optional(z.int())\n}));\n\nexport const zMultiassetFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({\n type: z.enum(['multiasset']),\n filetypes: z.optional(z.array(z.string())),\n asset_folder_id: z.optional(z.int()),\n allow_external_url: z.optional(z.boolean()),\n height: z.optional(z.int()),\n width: z.optional(z.int()),\n restrict_assets: z.optional(z.boolean()),\n asset_whitelist: z.optional(z.array(z.string())),\n maximum_entries: z.optional(z.int()),\n minimum_entries: z.optional(z.int())\n}));\n\nexport const zMultilinkFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({\n type: z.enum(['multilink']),\n restrict_content_types: z.optional(z.boolean()),\n component_whitelist: z.optional(z.array(z.string())),\n allow_target_blank: z.optional(z.boolean()),\n allow_custom_attributes: z.optional(z.boolean()),\n force_link_scope: z.optional(z.boolean()),\n link_scope: z.optional(z.string()),\n show_anchor: z.optional(z.boolean()),\n email_link_type: z.optional(z.boolean()),\n asset_link_type: z.optional(z.boolean())\n}));\n\nexport const zNumberFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({\n type: z.enum(['number']),\n min_value: z.optional(z.number()),\n max_value: z.optional(z.number()),\n decimals: z.optional(z.int()),\n steps: z.optional(z.number())\n}));\n\nexport const zOptionFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({\n type: z.enum(['option']),\n options: z.optional(z.array(z.object({\n _uid: z.optional(z.string()),\n name: z.optional(z.string()),\n value: z.optional(z.string())\n }))),\n source: z.optional(z.string()),\n datasource_slug: z.optional(z.string()),\n external_datasource: z.optional(z.string()),\n folder_slug: z.optional(z.string()),\n filter_content_type: z.optional(z.array(z.string())),\n exclude_empty_option: z.optional(z.boolean()),\n include_empty_option: z.optional(z.boolean()),\n use_uuid: z.optional(z.boolean()),\n entry_appearance: z.optional(z.string()),\n allow_advanced_search: z.optional(z.boolean()),\n max_options: z.optional(z.string()),\n min_options: z.optional(z.string()),\n multiple: z.optional(z.boolean())\n}));\n\nexport const zOptionsFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({\n type: z.enum(['options']),\n options: z.optional(z.array(z.object({\n _uid: z.optional(z.string()),\n name: z.optional(z.string()),\n value: z.optional(z.string())\n }))),\n source: z.optional(z.string()),\n datasource_slug: z.optional(z.string()),\n external_datasource: z.optional(z.string()),\n folder_slug: z.optional(z.string()),\n filter_content_type: z.optional(z.array(z.string())),\n use_uuid: z.optional(z.boolean()),\n is_reference_type: z.optional(z.boolean()),\n entry_appearance: z.optional(z.string()),\n allow_advanced_search: z.optional(z.boolean()),\n max_options: z.optional(z.string()),\n min_options: z.optional(z.string()),\n multiple: z.optional(z.boolean())\n}));\n\nexport const zRichtextFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({\n type: z.enum(['richtext']),\n customize_toolbar: z.optional(z.boolean()),\n toolbar: z.optional(z.array(z.enum([\n 'ai-complete',\n 'ai-shorten',\n 'ai-extend',\n 'ai-rephrase',\n 'ai-summarize',\n 'ai-simplify',\n 'ai-tone',\n 'ai-emoji',\n 'ai-translate',\n 'ai-tldr',\n 'ai-spelling',\n 'blok',\n 'ltr',\n 'rtl',\n 'export',\n 'import',\n 'bold',\n 'list',\n 'inlinecode',\n 'code',\n 'color',\n 'copy',\n 'cut',\n 'emoji',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'highlight',\n 'unset',\n 'hrule',\n 'image',\n 'italic',\n 'link',\n 'anchor',\n 'olist',\n 'paragraph',\n 'paste-action',\n 'paste',\n 'quote',\n 'redo',\n 'strike',\n 'subscript',\n 'superscript',\n 'underline',\n 'undo',\n 'align-left',\n 'align-center',\n 'align-right',\n 'align-justify'\n ]))),\n style_options: z.optional(z.array(z.object({\n _uid: z.optional(z.string()),\n name: z.optional(z.string()),\n value: z.optional(z.string())\n }))),\n restrict_type: z.optional(z.string()),\n restrict_components: z.optional(z.boolean()),\n component_whitelist: z.optional(z.array(z.string())),\n component_denylist: z.optional(z.array(z.string())),\n component_tag_whitelist: z.optional(z.array(z.int())),\n component_tag_denylist: z.optional(z.array(z.int())),\n component_group_whitelist: z.optional(z.array(z.string())),\n component_group_denylist: z.optional(z.array(z.string())),\n allow_target_blank: z.optional(z.boolean()),\n allow_custom_attributes: z.optional(z.boolean())\n}));\n\nexport const zTableFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({\n type: z.enum(['table'])\n}));\n\nexport const zTextFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({\n type: z.enum(['text']),\n max_length: z.optional(z.int()),\n maxlength: z.optional(z.int()),\n minlength: z.optional(z.int()),\n size: z.optional(z.string()),\n rtl: z.optional(z.boolean())\n}));\n\nexport const zTextareaFieldRoot = zBaseFieldRoot.and(zValueFieldRoot).and(z.object({\n type: z.enum(['textarea']),\n max_length: z.optional(z.int()),\n maxlength: z.optional(z.int()),\n minlength: z.optional(z.int()),\n size: z.optional(z.string()),\n rtl: z.optional(z.boolean()),\n rich_text: z.optional(z.boolean()),\n markdown: z.optional(z.boolean())\n}));\n\n/**\n * A component schema field. Discriminated by the literal `type` enum on each variant.\n */\nexport const zComponentSchemaField = z.union([\n zTextFieldRoot,\n zTextareaFieldRoot,\n zRichtextFieldRoot,\n zMarkdownFieldRoot,\n zNumberFieldRoot,\n zDatetimeFieldRoot,\n zBooleanFieldRoot,\n zOptionFieldRoot,\n zOptionsFieldRoot,\n zAssetFieldRoot,\n zMultiassetFieldRoot,\n zMultilinkFieldRoot,\n zBloksFieldRoot,\n zTableFieldRoot,\n zSectionFieldRoot,\n zTabFieldRoot,\n zCustomFieldRoot\n]);\n\n/**\n * Asset field type - single asset (image, video, audio, or document)\n */\nexport const zAssetFieldValueRoot = z.object({\n fieldtype: z.enum(['asset']),\n id: z.union([\n z.int(),\n z.null()\n ]),\n alt: z.union([\n z.string(),\n z.null()\n ]),\n name: z.optional(z.string()),\n focus: z.optional(z.union([\n z.string(),\n z.null()\n ])),\n title: z.optional(z.union([\n z.string(),\n z.null()\n ])),\n source: z.optional(z.union([\n z.string(),\n z.null()\n ])),\n filename: z.string(),\n copyright: z.optional(z.union([\n z.string(),\n z.null()\n ])),\n meta_data: z.optional(z.record(z.string(), z.unknown())),\n is_external_url: z.optional(z.boolean())\n});\n\nexport const zAssetFieldValue = zAssetFieldValueRoot;\n\n/**\n * Multilink field type - link to internal stories, external URLs, emails, etc.\n */\nexport const zMultilinkFieldValueRoot = z.object({\n fieldtype: z.enum(['multilink']),\n id: z.string(),\n url: z.string(),\n linktype: z.enum([\n 'story',\n 'url',\n 'email',\n 'asset'\n ]),\n cached_url: z.string(),\n anchor: z.optional(z.union([\n z.string(),\n z.null()\n ])),\n target: z.optional(z.union([\n z.literal('_self'),\n z.literal('_blank'),\n z.null()\n ]))\n});\n\nexport const zMultilinkFieldValue = zMultilinkFieldValueRoot;\n\n/**\n * Plugin/Custom field type - field plugin with custom structure\n */\nexport const zPluginFieldValueRoot = z.object({\n plugin: z.string(),\n _uid: z.optional(z.uuid())\n});\n\nexport const zPluginFieldValue = zPluginFieldValueRoot;\n\n/**\n * Richtext field type - structured rich text document (ProseMirror format)\n */\nexport const zRichtextFieldValueRoot = z.object({\n type: z.enum(['doc']),\n content: z.optional(z.array(z.record(z.string(), z.unknown())))\n});\n\nexport const zRichtextFieldValue = zRichtextFieldValueRoot;\n\n/**\n * Table field type - structured table data\n */\nexport const zTableFieldValueRoot = z.object({\n thead: z.array(z.object({\n _uid: z.string(),\n component: z.enum(['_table_head']),\n value: z.optional(z.string())\n })),\n tbody: z.array(z.object({\n _uid: z.string(),\n component: z.enum(['_table_row']),\n body: z.optional(z.array(z.object({\n _uid: z.string(),\n component: z.enum(['_table_col']),\n value: z.optional(z.string())\n })))\n }))\n});\n\nexport const zTableFieldValue = zTableFieldValueRoot;\n\n/**\n * Content object for creating or updating a component instance. Contains a component technical name and dynamic fields whose values depend on the component's schema field types. The _uid is optional — Storyblok will auto-generate one if not provided.\n */\nexport const zBlockContentInputRoot = z.object({\n _uid: z.optional(z.string()),\n component: z.string(),\n _editable: z.optional(z.string())\n});\n\nexport const zBlockContentInput = zBlockContentInputRoot;\n\n/**\n * Content object representing a component instance. Contains a _uid, a component technical name, and dynamic fields whose values depend on the component's schema field types (text, textarea, richtext, markdown, number, datetime, boolean, option, options, asset, multiasset, multilink, bloks, table, section, custom/plugin).\n */\nexport const zBlockContentRoot = z.object({\n _uid: z.string(),\n component: z.string(),\n _editable: z.optional(z.string())\n});\n\nexport const zBlockContent = zBlockContentRoot;\n"],"mappings":"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"}
@@ -1,26 +1,39 @@
1
- import { Component, ComponentCreate, ComponentUpdate } from "../mapi/_internal.gen.cjs";
1
+ import { Component } from "../mapi/_internal.gen.cjs";
2
2
  import { Field } from "../overlay/_internal.gen.cjs";
3
3
  import { Override } from "./_utils.cjs";
4
4
 
5
5
  //#region src/generated/types/block.d.ts
6
- /** Input form: an ordered array of named fields. The array index becomes `pos`. */
7
- type BlockSchemaInput = ReadonlyArray<Field & {
6
+ /**
7
+ * Ordered array of named fields — the content-shape DSL form `defineBlock`
8
+ * accepts and returns. A field's position in the array sets the order it appears
9
+ * in the editor (mapped to the wire `pos` on push).
10
+ */
11
+ type BlockFields = ReadonlyArray<Field & {
8
12
  name: string;
13
+ pos?: number;
9
14
  required?: boolean;
10
15
  }>;
11
- /** Wire form: the MAPI object map keyed by field name. This is what `defineBlock` returns. */
12
- type BlockSchema = Record<string, Field & {
13
- required?: boolean;
14
- }>;
15
- /** Converts an array-form schema input into the wire-shape object map at the type level. */
16
- type SchemaArrayToRecord<T extends BlockSchemaInput> = { [F in T[number] as F['name']]: Omit<F, 'name'> };
17
- /** A Storyblok block. */
18
- type Block<TName extends string = string, TBlockSchema extends BlockSchema = BlockSchema, TIsRoot extends boolean = boolean, TIsNestable extends boolean = boolean, TComponentGroupUuid extends string | null = string | null> = Override<Component, {
16
+ /**
17
+ * A Storyblok block: a named, ordered set of content fields. Uses the
18
+ * content-shape DSL `fields` array rather than the MAPI wire `schema` record.
19
+ */
20
+ type Block<TName extends string = string, TFields extends BlockFields = BlockFields, TIsRoot extends boolean = boolean, TIsNestable extends boolean = boolean> = Override<Omit<Component, 'schema' | 'component_group_uuid'>, {
19
21
  name: TName;
20
- schema: TBlockSchema;
22
+ fields: TFields;
21
23
  is_root?: TIsRoot;
22
24
  is_nestable?: TIsNestable;
23
- component_group_uuid?: TComponentGroupUuid;
25
+ /**
26
+ * Escape hatch for pinning this block to a Storyblok UI-managed component
27
+ * group by UUID. Component groups are normally maintained in code via the
28
+ * schema directory layout; set this only if you intentionally manage groups
29
+ * in the Storyblok UI, and fill in the group UUID yourself. When set,
30
+ * `schema push` diffs it and sends it to the Management API; when omitted,
31
+ * the block's remote group is left untouched.
32
+ *
33
+ * @deprecated Prefer maintaining component groups in code through the
34
+ * directory layout.
35
+ */
36
+ component_group_uuid?: string | null;
24
37
  }>;
25
38
  /**
26
39
  * A root {@link Block} (`is_root: true`). Given a union of blocks, narrows to
@@ -42,5 +55,5 @@ type NestableBlock<T extends Block = Block & {
42
55
  is_nestable: true;
43
56
  }>;
44
57
  //#endregion
45
- export { Block, BlockSchema, BlockSchemaInput, NestableBlock, RootBlock, SchemaArrayToRecord };
58
+ export { Block, BlockFields, NestableBlock, RootBlock };
46
59
  //# sourceMappingURL=block.d.cts.map
@@ -1,26 +1,39 @@
1
- import { Component, ComponentCreate, ComponentUpdate } from "../mapi/_internal.gen.mjs";
1
+ import { Component } from "../mapi/_internal.gen.mjs";
2
2
  import { Field } from "../overlay/_internal.gen.mjs";
3
3
  import { Override } from "./_utils.mjs";
4
4
 
5
5
  //#region src/generated/types/block.d.ts
6
- /** Input form: an ordered array of named fields. The array index becomes `pos`. */
7
- type BlockSchemaInput = ReadonlyArray<Field & {
6
+ /**
7
+ * Ordered array of named fields — the content-shape DSL form `defineBlock`
8
+ * accepts and returns. A field's position in the array sets the order it appears
9
+ * in the editor (mapped to the wire `pos` on push).
10
+ */
11
+ type BlockFields = ReadonlyArray<Field & {
8
12
  name: string;
13
+ pos?: number;
9
14
  required?: boolean;
10
15
  }>;
11
- /** Wire form: the MAPI object map keyed by field name. This is what `defineBlock` returns. */
12
- type BlockSchema = Record<string, Field & {
13
- required?: boolean;
14
- }>;
15
- /** Converts an array-form schema input into the wire-shape object map at the type level. */
16
- type SchemaArrayToRecord<T extends BlockSchemaInput> = { [F in T[number] as F['name']]: Omit<F, 'name'> };
17
- /** A Storyblok block. */
18
- type Block<TName extends string = string, TBlockSchema extends BlockSchema = BlockSchema, TIsRoot extends boolean = boolean, TIsNestable extends boolean = boolean, TComponentGroupUuid extends string | null = string | null> = Override<Component, {
16
+ /**
17
+ * A Storyblok block: a named, ordered set of content fields. Uses the
18
+ * content-shape DSL `fields` array rather than the MAPI wire `schema` record.
19
+ */
20
+ type Block<TName extends string = string, TFields extends BlockFields = BlockFields, TIsRoot extends boolean = boolean, TIsNestable extends boolean = boolean> = Override<Omit<Component, 'schema' | 'component_group_uuid'>, {
19
21
  name: TName;
20
- schema: TBlockSchema;
22
+ fields: TFields;
21
23
  is_root?: TIsRoot;
22
24
  is_nestable?: TIsNestable;
23
- component_group_uuid?: TComponentGroupUuid;
25
+ /**
26
+ * Escape hatch for pinning this block to a Storyblok UI-managed component
27
+ * group by UUID. Component groups are normally maintained in code via the
28
+ * schema directory layout; set this only if you intentionally manage groups
29
+ * in the Storyblok UI, and fill in the group UUID yourself. When set,
30
+ * `schema push` diffs it and sends it to the Management API; when omitted,
31
+ * the block's remote group is left untouched.
32
+ *
33
+ * @deprecated Prefer maintaining component groups in code through the
34
+ * directory layout.
35
+ */
36
+ component_group_uuid?: string | null;
24
37
  }>;
25
38
  /**
26
39
  * A root {@link Block} (`is_root: true`). Given a union of blocks, narrows to
@@ -42,5 +55,5 @@ type NestableBlock<T extends Block = Block & {
42
55
  is_nestable: true;
43
56
  }>;
44
57
  //#endregion
45
- export { Block, BlockSchema, BlockSchemaInput, NestableBlock, RootBlock, SchemaArrayToRecord };
58
+ export { Block, BlockFields, NestableBlock, RootBlock };
46
59
  //# sourceMappingURL=block.d.mts.map
@@ -1,6 +1,6 @@
1
1
  import { AssetFieldValue, BlockContentBase, BlockContentInputBase, Field, MultilinkFieldValue, PluginFieldValue, RichtextFieldValue, TableFieldValue } from "../overlay/_internal.gen.cjs";
2
2
  import { Prettify } from "./_utils.cjs";
3
- import { Block } from "./block.cjs";
3
+ import { Block, BlockFields } from "./block.cjs";
4
4
 
5
5
  //#region src/generated/types/field.d.ts
6
6
  /**
@@ -11,27 +11,42 @@ import { Block } from "./block.cjs";
11
11
  type NoBlocks = false;
12
12
  /** True when `T` is the un-narrowed base `Block` (i.e. no specific block was supplied). */
13
13
  type IsBaseBlock<T> = [Block] extends [T] ? true : false;
14
- type RequiredFieldKeys<T> = { [K in keyof T]: T[K] extends {
14
+ /**
15
+ * Maps a block's ordered `fields` array to its read content object, splitting
16
+ * required (`required: true`) from optional fields. Each `F` is a member of the
17
+ * field union, so it provably satisfies `FieldValue`'s `Field` constraint.
18
+ */
19
+ type ContentFields<TFields extends BlockFields, TBlocks> = Prettify<{ [F in TFields[number] as F extends {
20
+ required: true;
21
+ } ? F['name'] : never]: FieldValue<F, TBlocks> } & { [F in TFields[number] as F extends {
22
+ required: true;
23
+ } ? never : F['name']]?: FieldValue<F, TBlocks> | null }>;
24
+ /** Input (write) variant of {@link ContentFields}, resolving each field via {@link FieldValueInput}. */
25
+ type ContentFieldsInput<TFields extends BlockFields, TBlocks> = Prettify<{ [F in TFields[number] as F extends {
26
+ required: true;
27
+ } ? F['name'] : never]: FieldValueInput<F, TBlocks> } & { [F in TFields[number] as F extends {
15
28
  required: true;
16
- } ? K : never }[keyof T];
17
- type OptionalFieldKeys<T> = Exclude<keyof T, RequiredFieldKeys<T>>;
29
+ } ? never : F['name']]?: FieldValueInput<F, TBlocks> | null }>;
18
30
  /**
19
31
  * Content object for a single block instance as returned by the Storyblok
20
32
  * Content Delivery API. Without a `TBlock` argument, this is the loose
21
33
  * runtime shape (any block, `_editable` optional). With a schema-typed
22
- * `TBlock`, fields are narrowed per the block's schema.
34
+ * `TBlock`, fields are narrowed per the block's `fields`.
23
35
  */
24
36
  type BlockContent<TBlock extends Block = Block, TBlocks = NoBlocks> = IsBaseBlock<TBlock> extends true ? BlockContentBase : TBlock extends any ? Prettify<{
25
37
  _uid: string;
26
38
  component: TBlock['name'];
27
39
  _editable?: string;
28
- } & { [K in RequiredFieldKeys<TBlock['schema']>]: FieldValue<NonNullable<TBlock['schema'][K]>, TBlocks> } & { [K in OptionalFieldKeys<TBlock['schema']>]?: FieldValue<NonNullable<TBlock['schema'][K]>, TBlocks> | null }> : never;
40
+ } & ContentFields<TBlock['fields'], TBlocks>> : never;
29
41
  /** Input variant of {@link BlockContent} for write operations (creating/updating stories via the MAPI). `_uid` is optional. */
30
42
  type BlockContentInput<TBlock extends Block = Block, TBlocks = NoBlocks> = IsBaseBlock<TBlock> extends true ? BlockContentInputBase : TBlock extends any ? Prettify<{
31
43
  _uid?: string;
32
44
  component: TBlock['name'];
33
45
  _editable?: string;
34
- } & { [K in RequiredFieldKeys<TBlock['schema']>]: FieldValueInput<NonNullable<TBlock['schema'][K]>, TBlocks> } & { [K in OptionalFieldKeys<TBlock['schema']>]?: FieldValueInput<NonNullable<TBlock['schema'][K]>, TBlocks> | null }> : never;
46
+ } & ContentFieldsInput<TBlock['fields'], TBlocks>> : never;
47
+ type BlocksFieldValue<TBlock extends Block = Block, TBlocks = NoBlocks> = BlockContent<TBlock, TBlocks>[];
48
+ /** Union of all valid Storyblok field type discriminants (e.g., `text`, `bloks`). */
49
+ type FieldType = Field['type'];
35
50
  interface FieldTypeValueMap {
36
51
  text: string;
37
52
  textarea: string;
@@ -56,19 +71,19 @@ type IsNestable<T> = T extends {
56
71
  } ? false : T extends {
57
72
  is_nestable: true;
58
73
  } ? true : true;
59
- type ApplyWhitelist<TField, TBlocks> = TField extends {
60
- component_whitelist: ReadonlyArray<infer TWhitelisted extends string>;
74
+ type ApplyAllow<TField, TBlocks> = TField extends {
75
+ allow: ReadonlyArray<infer TAllowed extends string>;
61
76
  } ? Extract<TBlocks, {
62
- name: TWhitelisted;
77
+ name: TAllowed;
63
78
  }> : TBlocks extends any ? IsNestable<TBlocks> extends true ? TBlocks : never : never;
64
79
  /** Resolves a field definition to its runtime content value type (read). */
65
80
  type FieldValue<TField extends Field = Field, TBlocks = NoBlocks> = Prettify<TField extends {
66
81
  type: 'bloks';
67
- } ? [TBlocks] extends [never] ? BlockContentBase[] : [TBlocks] extends [Block] ? BlockContent<ApplyWhitelist<TField, TBlocks>, TBlocks>[] : BlockContentBase[] : FieldTypeValueMap[TField['type']]>;
82
+ } ? [TBlocks] extends [never] ? BlockContentBase[] : [TBlocks] extends [Block] ? BlockContent<ApplyAllow<TField, TBlocks>, TBlocks>[] : BlockContentBase[] : FieldTypeValueMap[TField['type']]>;
68
83
  /** Resolves a field definition to its input value type (write). */
69
84
  type FieldValueInput<TField extends Field = Field, TBlocks = NoBlocks> = Prettify<TField extends {
70
85
  type: 'bloks';
71
- } ? [TBlocks] extends [never] ? BlockContentInputBase[] : [TBlocks] extends [Block] ? BlockContentInput<ApplyWhitelist<TField, TBlocks>, TBlocks>[] : BlockContentInputBase[] : FieldTypeValueMap[TField['type']]>;
86
+ } ? [TBlocks] extends [never] ? BlockContentInputBase[] : [TBlocks] extends [Block] ? BlockContentInput<ApplyAllow<TField, TBlocks>, TBlocks>[] : BlockContentInputBase[] : FieldTypeValueMap[TField['type']]>;
72
87
  //#endregion
73
- export { BlockContent, BlockContentInput };
88
+ export { BlockContent, BlockContentInput, BlocksFieldValue, FieldType, FieldValue, FieldValueInput };
74
89
  //# sourceMappingURL=field.d.cts.map