@anvpx/motion-schema 0.0.0-stage → 0.1.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.
@@ -0,0 +1,478 @@
1
+ import { z } from "zod";
2
+ import { type Result } from "./errors.ts";
3
+ /** Manifest format version; a breaking change bumps it. */
4
+ export declare const TEMPLATE_VERSION = 1;
5
+ /**
6
+ * Blueprint scene-prop transforms (`{"$slot": name, "as": ...}`), closed set. `flow-nodes`: labels to
7
+ * `{id,label}`; `flow-edges`: "A>B" or "A>B|label" to `{from,to,label}`; `flow-chain`: labels to a
8
+ * consecutive-edge chain.
9
+ */
10
+ export declare const SLOT_TRANSFORMS: readonly ["flow-nodes", "flow-edges", "flow-chain"];
11
+ /** Length classes of a pacing document. */
12
+ export declare const LENGTH_CLASSES: readonly ["short", "standard", "long"];
13
+ /** Template level `discover`; lengths are derived from its blueprints, never stored. */
14
+ export declare const ManifestDiscoverSchema: z.ZodObject<{
15
+ useCases: z.ZodArray<z.ZodString>;
16
+ audience: z.ZodOptional<z.ZodArray<z.ZodString>>;
17
+ goodFor: z.ZodString;
18
+ notFor: z.ZodOptional<z.ZodString>;
19
+ tags: z.ZodArray<z.ZodString>;
20
+ tone: z.ZodOptional<z.ZodArray<z.ZodString>>;
21
+ aspects: z.ZodOptional<z.ZodArray<z.ZodString>>;
22
+ }, z.core.$strict>;
23
+ /** Blueprint level `discover`; `lengths` are seconds. */
24
+ export declare const BlueprintDiscoverSchema: z.ZodObject<{
25
+ useCases: z.ZodArray<z.ZodString>;
26
+ audience: z.ZodOptional<z.ZodArray<z.ZodString>>;
27
+ goodFor: z.ZodString;
28
+ notFor: z.ZodOptional<z.ZodString>;
29
+ tags: z.ZodArray<z.ZodString>;
30
+ tone: z.ZodOptional<z.ZodArray<z.ZodString>>;
31
+ aspects: z.ZodOptional<z.ZodArray<z.ZodString>>;
32
+ lengths: z.ZodOptional<z.ZodObject<{
33
+ min: z.ZodNumber;
34
+ max: z.ZodNumber;
35
+ }, z.core.$strict>>;
36
+ }, z.core.$strict>;
37
+ export declare const SlotSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
38
+ required: z.ZodOptional<z.ZodBoolean>;
39
+ optional: z.ZodOptional<z.ZodBoolean>;
40
+ type: z.ZodLiteral<"text">;
41
+ min: z.ZodOptional<z.ZodNumber>;
42
+ max: z.ZodOptional<z.ZodNumber>;
43
+ default: z.ZodOptional<z.ZodString>;
44
+ }, z.core.$strict>, z.ZodObject<{
45
+ required: z.ZodOptional<z.ZodBoolean>;
46
+ optional: z.ZodOptional<z.ZodBoolean>;
47
+ type: z.ZodLiteral<"text[]">;
48
+ min: z.ZodOptional<z.ZodNumber>;
49
+ max: z.ZodOptional<z.ZodNumber>;
50
+ itemMax: z.ZodOptional<z.ZodNumber>;
51
+ }, z.core.$strict>, z.ZodObject<{
52
+ required: z.ZodOptional<z.ZodBoolean>;
53
+ optional: z.ZodOptional<z.ZodBoolean>;
54
+ type: z.ZodLiteral<"number">;
55
+ min: z.ZodOptional<z.ZodNumber>;
56
+ max: z.ZodOptional<z.ZodNumber>;
57
+ int: z.ZodOptional<z.ZodBoolean>;
58
+ default: z.ZodOptional<z.ZodNumber>;
59
+ }, z.core.$strict>, z.ZodObject<{
60
+ type: z.ZodLiteral<"enum">;
61
+ values: z.ZodArray<z.ZodString>;
62
+ default: z.ZodOptional<z.ZodString>;
63
+ }, z.core.$strict>, z.ZodObject<{
64
+ required: z.ZodOptional<z.ZodBoolean>;
65
+ optional: z.ZodOptional<z.ZodBoolean>;
66
+ type: z.ZodLiteral<"object">;
67
+ fields: z.ZodRecord<z.ZodString, z.ZodEnum<{
68
+ number: "number";
69
+ text: "text";
70
+ }>>;
71
+ list: z.ZodOptional<z.ZodBoolean>;
72
+ min: z.ZodOptional<z.ZodNumber>;
73
+ max: z.ZodOptional<z.ZodNumber>;
74
+ }, z.core.$strict>], "type">;
75
+ /** A blueprint scene: a storyboard scene whose props may hold `$slot`/`$spread`/`$item` constructs. */
76
+ export declare const BlueprintSceneSchema: z.ZodObject<{
77
+ id: z.ZodString;
78
+ type: z.ZodString;
79
+ duration: z.ZodOptional<z.ZodNumber>;
80
+ narration: z.ZodOptional<z.ZodString>;
81
+ words: z.ZodOptional<z.ZodArray<z.ZodObject<{
82
+ w: z.ZodString;
83
+ start: z.ZodNumber;
84
+ end: z.ZodNumber;
85
+ confidence: z.ZodOptional<z.ZodNumber>;
86
+ }, z.core.$strict>>>;
87
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
88
+ shot: z.ZodOptional<z.ZodEnum<{
89
+ close: "close";
90
+ medium: "medium";
91
+ overhead: "overhead";
92
+ wide: "wide";
93
+ }>>;
94
+ move: z.ZodOptional<z.ZodEnum<{
95
+ orbit: "orbit";
96
+ "pan-l": "pan-l";
97
+ "pan-r": "pan-r";
98
+ "pull-out": "pull-out";
99
+ "push-in": "push-in";
100
+ reveal: "reveal";
101
+ static: "static";
102
+ tilt: "tilt";
103
+ }>>;
104
+ ease: z.ZodOptional<z.ZodEnum<{
105
+ in: "in";
106
+ "in-out": "in-out";
107
+ linear: "linear";
108
+ out: "out";
109
+ "spring-snappy": "spring-snappy";
110
+ "spring-soft": "spring-soft";
111
+ }>>;
112
+ transition: z.ZodOptional<z.ZodEnum<{
113
+ crossfade: "crossfade";
114
+ cut: "cut";
115
+ push: "push";
116
+ wipe: "wipe";
117
+ "zoom-through": "zoom-through";
118
+ }>>;
119
+ focus: z.ZodOptional<z.ZodString>;
120
+ layer: z.ZodOptional<z.ZodEnum<{
121
+ base: "base";
122
+ overlay: "overlay";
123
+ }>>;
124
+ over: z.ZodOptional<z.ZodString>;
125
+ offset: z.ZodOptional<z.ZodNumber>;
126
+ when: z.ZodOptional<z.ZodString>;
127
+ }, z.core.$strict>;
128
+ /** One scene per item of a list slot; `$item` inside refers to the current item, ids get `-<n>`. */
129
+ export declare const BlueprintRepeatSchema: z.ZodObject<{
130
+ $repeat: z.ZodString;
131
+ when: z.ZodOptional<z.ZodString>;
132
+ scene: z.ZodObject<{
133
+ id: z.ZodString;
134
+ type: z.ZodString;
135
+ duration: z.ZodOptional<z.ZodNumber>;
136
+ narration: z.ZodOptional<z.ZodString>;
137
+ words: z.ZodOptional<z.ZodArray<z.ZodObject<{
138
+ w: z.ZodString;
139
+ start: z.ZodNumber;
140
+ end: z.ZodNumber;
141
+ confidence: z.ZodOptional<z.ZodNumber>;
142
+ }, z.core.$strict>>>;
143
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
144
+ shot: z.ZodOptional<z.ZodEnum<{
145
+ close: "close";
146
+ medium: "medium";
147
+ overhead: "overhead";
148
+ wide: "wide";
149
+ }>>;
150
+ move: z.ZodOptional<z.ZodEnum<{
151
+ orbit: "orbit";
152
+ "pan-l": "pan-l";
153
+ "pan-r": "pan-r";
154
+ "pull-out": "pull-out";
155
+ "push-in": "push-in";
156
+ reveal: "reveal";
157
+ static: "static";
158
+ tilt: "tilt";
159
+ }>>;
160
+ ease: z.ZodOptional<z.ZodEnum<{
161
+ in: "in";
162
+ "in-out": "in-out";
163
+ linear: "linear";
164
+ out: "out";
165
+ "spring-snappy": "spring-snappy";
166
+ "spring-soft": "spring-soft";
167
+ }>>;
168
+ transition: z.ZodOptional<z.ZodEnum<{
169
+ crossfade: "crossfade";
170
+ cut: "cut";
171
+ push: "push";
172
+ wipe: "wipe";
173
+ "zoom-through": "zoom-through";
174
+ }>>;
175
+ focus: z.ZodOptional<z.ZodString>;
176
+ layer: z.ZodOptional<z.ZodEnum<{
177
+ base: "base";
178
+ overlay: "overlay";
179
+ }>>;
180
+ over: z.ZodOptional<z.ZodString>;
181
+ offset: z.ZodOptional<z.ZodNumber>;
182
+ when: z.ZodOptional<z.ZodString>;
183
+ }, z.core.$strict>;
184
+ }, z.core.$strict>;
185
+ export declare const BlueprintDocSchema: z.ZodObject<{
186
+ id: z.ZodString;
187
+ purpose: z.ZodString;
188
+ discover: z.ZodOptional<z.ZodObject<{
189
+ useCases: z.ZodArray<z.ZodString>;
190
+ audience: z.ZodOptional<z.ZodArray<z.ZodString>>;
191
+ goodFor: z.ZodString;
192
+ notFor: z.ZodOptional<z.ZodString>;
193
+ tags: z.ZodArray<z.ZodString>;
194
+ tone: z.ZodOptional<z.ZodArray<z.ZodString>>;
195
+ aspects: z.ZodOptional<z.ZodArray<z.ZodString>>;
196
+ lengths: z.ZodOptional<z.ZodObject<{
197
+ min: z.ZodNumber;
198
+ max: z.ZodNumber;
199
+ }, z.core.$strict>>;
200
+ }, z.core.$strict>>;
201
+ slots: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
202
+ required: z.ZodOptional<z.ZodBoolean>;
203
+ optional: z.ZodOptional<z.ZodBoolean>;
204
+ type: z.ZodLiteral<"text">;
205
+ min: z.ZodOptional<z.ZodNumber>;
206
+ max: z.ZodOptional<z.ZodNumber>;
207
+ default: z.ZodOptional<z.ZodString>;
208
+ }, z.core.$strict>, z.ZodObject<{
209
+ required: z.ZodOptional<z.ZodBoolean>;
210
+ optional: z.ZodOptional<z.ZodBoolean>;
211
+ type: z.ZodLiteral<"text[]">;
212
+ min: z.ZodOptional<z.ZodNumber>;
213
+ max: z.ZodOptional<z.ZodNumber>;
214
+ itemMax: z.ZodOptional<z.ZodNumber>;
215
+ }, z.core.$strict>, z.ZodObject<{
216
+ required: z.ZodOptional<z.ZodBoolean>;
217
+ optional: z.ZodOptional<z.ZodBoolean>;
218
+ type: z.ZodLiteral<"number">;
219
+ min: z.ZodOptional<z.ZodNumber>;
220
+ max: z.ZodOptional<z.ZodNumber>;
221
+ int: z.ZodOptional<z.ZodBoolean>;
222
+ default: z.ZodOptional<z.ZodNumber>;
223
+ }, z.core.$strict>, z.ZodObject<{
224
+ type: z.ZodLiteral<"enum">;
225
+ values: z.ZodArray<z.ZodString>;
226
+ default: z.ZodOptional<z.ZodString>;
227
+ }, z.core.$strict>, z.ZodObject<{
228
+ required: z.ZodOptional<z.ZodBoolean>;
229
+ optional: z.ZodOptional<z.ZodBoolean>;
230
+ type: z.ZodLiteral<"object">;
231
+ fields: z.ZodRecord<z.ZodString, z.ZodEnum<{
232
+ number: "number";
233
+ text: "text";
234
+ }>>;
235
+ list: z.ZodOptional<z.ZodBoolean>;
236
+ min: z.ZodOptional<z.ZodNumber>;
237
+ max: z.ZodOptional<z.ZodNumber>;
238
+ }, z.core.$strict>], "type">>;
239
+ example: z.ZodRecord<z.ZodString, z.ZodUnknown>;
240
+ meta: z.ZodOptional<z.ZodObject<{
241
+ title: z.ZodOptional<z.ZodUnknown>;
242
+ lang: z.ZodOptional<z.ZodString>;
243
+ approval: z.ZodOptional<z.ZodEnum<{
244
+ auto: "auto";
245
+ confirm: "confirm";
246
+ }>>;
247
+ }, z.core.$strict>>;
248
+ scenes: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
249
+ $repeat: z.ZodString;
250
+ when: z.ZodOptional<z.ZodString>;
251
+ scene: z.ZodObject<{
252
+ id: z.ZodString;
253
+ type: z.ZodString;
254
+ duration: z.ZodOptional<z.ZodNumber>;
255
+ narration: z.ZodOptional<z.ZodString>;
256
+ words: z.ZodOptional<z.ZodArray<z.ZodObject<{
257
+ w: z.ZodString;
258
+ start: z.ZodNumber;
259
+ end: z.ZodNumber;
260
+ confidence: z.ZodOptional<z.ZodNumber>;
261
+ }, z.core.$strict>>>;
262
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
263
+ shot: z.ZodOptional<z.ZodEnum<{
264
+ close: "close";
265
+ medium: "medium";
266
+ overhead: "overhead";
267
+ wide: "wide";
268
+ }>>;
269
+ move: z.ZodOptional<z.ZodEnum<{
270
+ orbit: "orbit";
271
+ "pan-l": "pan-l";
272
+ "pan-r": "pan-r";
273
+ "pull-out": "pull-out";
274
+ "push-in": "push-in";
275
+ reveal: "reveal";
276
+ static: "static";
277
+ tilt: "tilt";
278
+ }>>;
279
+ ease: z.ZodOptional<z.ZodEnum<{
280
+ in: "in";
281
+ "in-out": "in-out";
282
+ linear: "linear";
283
+ out: "out";
284
+ "spring-snappy": "spring-snappy";
285
+ "spring-soft": "spring-soft";
286
+ }>>;
287
+ transition: z.ZodOptional<z.ZodEnum<{
288
+ crossfade: "crossfade";
289
+ cut: "cut";
290
+ push: "push";
291
+ wipe: "wipe";
292
+ "zoom-through": "zoom-through";
293
+ }>>;
294
+ focus: z.ZodOptional<z.ZodString>;
295
+ layer: z.ZodOptional<z.ZodEnum<{
296
+ base: "base";
297
+ overlay: "overlay";
298
+ }>>;
299
+ over: z.ZodOptional<z.ZodString>;
300
+ offset: z.ZodOptional<z.ZodNumber>;
301
+ when: z.ZodOptional<z.ZodString>;
302
+ }, z.core.$strict>;
303
+ }, z.core.$strict>, z.ZodObject<{
304
+ id: z.ZodString;
305
+ type: z.ZodString;
306
+ duration: z.ZodOptional<z.ZodNumber>;
307
+ narration: z.ZodOptional<z.ZodString>;
308
+ words: z.ZodOptional<z.ZodArray<z.ZodObject<{
309
+ w: z.ZodString;
310
+ start: z.ZodNumber;
311
+ end: z.ZodNumber;
312
+ confidence: z.ZodOptional<z.ZodNumber>;
313
+ }, z.core.$strict>>>;
314
+ props: z.ZodRecord<z.ZodString, z.ZodUnknown>;
315
+ shot: z.ZodOptional<z.ZodEnum<{
316
+ close: "close";
317
+ medium: "medium";
318
+ overhead: "overhead";
319
+ wide: "wide";
320
+ }>>;
321
+ move: z.ZodOptional<z.ZodEnum<{
322
+ orbit: "orbit";
323
+ "pan-l": "pan-l";
324
+ "pan-r": "pan-r";
325
+ "pull-out": "pull-out";
326
+ "push-in": "push-in";
327
+ reveal: "reveal";
328
+ static: "static";
329
+ tilt: "tilt";
330
+ }>>;
331
+ ease: z.ZodOptional<z.ZodEnum<{
332
+ in: "in";
333
+ "in-out": "in-out";
334
+ linear: "linear";
335
+ out: "out";
336
+ "spring-snappy": "spring-snappy";
337
+ "spring-soft": "spring-soft";
338
+ }>>;
339
+ transition: z.ZodOptional<z.ZodEnum<{
340
+ crossfade: "crossfade";
341
+ cut: "cut";
342
+ push: "push";
343
+ wipe: "wipe";
344
+ "zoom-through": "zoom-through";
345
+ }>>;
346
+ focus: z.ZodOptional<z.ZodString>;
347
+ layer: z.ZodOptional<z.ZodEnum<{
348
+ base: "base";
349
+ overlay: "overlay";
350
+ }>>;
351
+ over: z.ZodOptional<z.ZodString>;
352
+ offset: z.ZodOptional<z.ZodNumber>;
353
+ when: z.ZodOptional<z.ZodString>;
354
+ }, z.core.$strict>]>>;
355
+ }, z.core.$strict>;
356
+ export declare const TemplateManifestSchema: z.ZodObject<{
357
+ templateVersion: z.ZodLiteral<1>;
358
+ id: z.ZodString;
359
+ version: z.ZodString;
360
+ title: z.ZodString;
361
+ summary: z.ZodString;
362
+ domains: z.ZodArray<z.ZodString>;
363
+ discover: z.ZodOptional<z.ZodObject<{
364
+ useCases: z.ZodArray<z.ZodString>;
365
+ audience: z.ZodOptional<z.ZodArray<z.ZodString>>;
366
+ goodFor: z.ZodString;
367
+ notFor: z.ZodOptional<z.ZodString>;
368
+ tags: z.ZodArray<z.ZodString>;
369
+ tone: z.ZodOptional<z.ZodArray<z.ZodString>>;
370
+ aspects: z.ZodOptional<z.ZodArray<z.ZodString>>;
371
+ }, z.core.$strict>>;
372
+ requires: z.ZodObject<{
373
+ storyboard: z.ZodNumber;
374
+ scenes: z.ZodArray<z.ZodString>;
375
+ }, z.core.$strict>;
376
+ themes: z.ZodArray<z.ZodObject<{
377
+ id: z.ZodString;
378
+ file: z.ZodString;
379
+ mode: z.ZodEnum<{
380
+ dark: "dark";
381
+ light: "light";
382
+ }>;
383
+ pair: z.ZodOptional<z.ZodString>;
384
+ }, z.core.$strict>>;
385
+ styles: z.ZodArray<z.ZodObject<{
386
+ id: z.ZodString;
387
+ file: z.ZodString;
388
+ }, z.core.$strict>>;
389
+ blueprints: z.ZodArray<z.ZodObject<{
390
+ id: z.ZodString;
391
+ file: z.ZodString;
392
+ }, z.core.$strict>>;
393
+ pacing: z.ZodString;
394
+ copy: z.ZodString;
395
+ license: z.ZodString;
396
+ }, z.core.$strict>;
397
+ export declare const StylePresetSchema: z.ZodObject<{
398
+ id: z.ZodString;
399
+ theme: z.ZodString;
400
+ frame: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
401
+ width: z.ZodNumber;
402
+ height: z.ZodNumber;
403
+ fps: z.ZodNumber;
404
+ }, z.core.$strict>, z.ZodObject<{
405
+ platform: z.ZodString;
406
+ }, z.core.$strict>]>>;
407
+ direction: z.ZodOptional<z.ZodObject<{
408
+ shot: z.ZodOptional<z.ZodEnum<{
409
+ close: "close";
410
+ medium: "medium";
411
+ overhead: "overhead";
412
+ wide: "wide";
413
+ }>>;
414
+ move: z.ZodOptional<z.ZodEnum<{
415
+ orbit: "orbit";
416
+ "pan-l": "pan-l";
417
+ "pan-r": "pan-r";
418
+ "pull-out": "pull-out";
419
+ "push-in": "push-in";
420
+ reveal: "reveal";
421
+ static: "static";
422
+ tilt: "tilt";
423
+ }>>;
424
+ ease: z.ZodOptional<z.ZodEnum<{
425
+ in: "in";
426
+ "in-out": "in-out";
427
+ linear: "linear";
428
+ out: "out";
429
+ "spring-snappy": "spring-snappy";
430
+ "spring-soft": "spring-soft";
431
+ }>>;
432
+ transition: z.ZodOptional<z.ZodEnum<{
433
+ crossfade: "crossfade";
434
+ cut: "cut";
435
+ push: "push";
436
+ wipe: "wipe";
437
+ "zoom-through": "zoom-through";
438
+ }>>;
439
+ }, z.core.$strict>>;
440
+ props: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
441
+ }, z.core.$strict>;
442
+ export declare const PacingDocSchema: z.ZodObject<{
443
+ wordsPerSecond: z.ZodNumber;
444
+ sceneSeconds: z.ZodRecord<z.ZodString, z.ZodObject<{
445
+ short: z.ZodNumber;
446
+ standard: z.ZodNumber;
447
+ long: z.ZodNumber;
448
+ }, z.core.$strict>>;
449
+ lengths: z.ZodObject<{
450
+ short: z.ZodObject<{
451
+ scenes: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
452
+ totalSec: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
453
+ }, z.core.$strict>;
454
+ standard: z.ZodObject<{
455
+ scenes: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
456
+ totalSec: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
457
+ }, z.core.$strict>;
458
+ long: z.ZodObject<{
459
+ scenes: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
460
+ totalSec: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
461
+ }, z.core.$strict>;
462
+ }, z.core.$strict>;
463
+ }, z.core.$strict>;
464
+ export type SlotDef = z.infer<typeof SlotSchema>;
465
+ export type BlueprintScene = z.infer<typeof BlueprintSceneSchema>;
466
+ export type BlueprintRepeat = z.infer<typeof BlueprintRepeatSchema>;
467
+ export type ManifestDiscover = z.infer<typeof ManifestDiscoverSchema>;
468
+ export type BlueprintDiscover = z.infer<typeof BlueprintDiscoverSchema>;
469
+ export type BlueprintDoc = z.infer<typeof BlueprintDocSchema>;
470
+ export type TemplateManifest = z.infer<typeof TemplateManifestSchema>;
471
+ export type StylePreset = z.infer<typeof StylePresetSchema>;
472
+ export type PacingDoc = z.infer<typeof PacingDocSchema>;
473
+ export declare const parseTemplateManifest: (input: unknown) => Result<TemplateManifest>;
474
+ export declare const parseBlueprintDoc: (input: unknown) => Result<BlueprintDoc>;
475
+ export declare const parseStylePreset: (input: unknown) => Result<StylePreset>;
476
+ export declare const parsePacingDoc: (input: unknown) => Result<PacingDoc>;
477
+ /** JSON Schemas of the template documents, for editors and constrained decoding. */
478
+ export declare const templateJsonSchemas: () => Record<string, unknown>;