@xlr-lib/xlr-sdk 0.1.1-next.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.
- package/dist/cjs/index.cjs +992 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/index.legacy-esm.js +961 -0
- package/dist/index.mjs +961 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +38 -0
- package/src/__tests__/__snapshots__/sdk.test.ts.snap +3167 -0
- package/src/__tests__/sdk.test.ts +392 -0
- package/src/__tests__/utils.test.ts +0 -0
- package/src/index.ts +4 -0
- package/src/registry/basic-registry.ts +82 -0
- package/src/registry/index.ts +2 -0
- package/src/registry/types.ts +28 -0
- package/src/sdk.ts +458 -0
- package/src/types.ts +48 -0
- package/src/utils.ts +191 -0
- package/src/validator.ts +542 -0
- package/types/index.d.ts +5 -0
- package/types/registry/basic-registry.d.ts +18 -0
- package/types/registry/index.d.ts +3 -0
- package/types/registry/types.d.ts +23 -0
- package/types/sdk.d.ts +111 -0
- package/types/types.d.ts +32 -0
- package/types/utils.d.ts +13 -0
- package/types/validator.d.ts +27 -0
|
@@ -0,0 +1,3167 @@
|
|
|
1
|
+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
|
+
|
|
3
|
+
exports[`Export Test > Exports Typescript Types With Filters 1`] = `
|
|
4
|
+
"import { Expression, Asset, Binding, AssetWrapper } from "@player-ui/types";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* This is the most generic way of gathering data. The input is bound to a data model using the 'binding' property.
|
|
8
|
+
* Players can get field type information from the 'schema' definition, thus to decide the input controls for visual rendering.
|
|
9
|
+
*/
|
|
10
|
+
export interface InputAsset<AnyTextAsset extends Asset = Asset> extends Asset<'input'> {
|
|
11
|
+
/** Asset container for a field label. */
|
|
12
|
+
label?: AssetWrapper<AnyTextAsset>;
|
|
13
|
+
/** Asset container for a note. */
|
|
14
|
+
note?: AssetWrapper<AnyTextAsset>;
|
|
15
|
+
/** The location in the data-model to store the data */
|
|
16
|
+
binding: Binding;
|
|
17
|
+
/** Optional additional data */
|
|
18
|
+
metaData?: {
|
|
19
|
+
/** Additional data to beacon when this input changes */
|
|
20
|
+
beacon?: string | Record<string, any>;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export interface TextAsset extends Asset<'text'> {
|
|
24
|
+
/** The text to display */
|
|
25
|
+
value: string;
|
|
26
|
+
/** Any modifiers on the text */
|
|
27
|
+
modifiers?: Array<{
|
|
28
|
+
/** The modifier type */
|
|
29
|
+
type: string;
|
|
30
|
+
/** Modifiers can be named when used in strings */
|
|
31
|
+
name?: string;
|
|
32
|
+
[key: string]: unknown;
|
|
33
|
+
} | {
|
|
34
|
+
/** The link type denotes this as a link */
|
|
35
|
+
type: 'link';
|
|
36
|
+
/** An optional expression to run before the link is opened */
|
|
37
|
+
exp?: Expression;
|
|
38
|
+
/** metaData about the link's target */
|
|
39
|
+
metaData: {
|
|
40
|
+
/** The location of the link to load */
|
|
41
|
+
ref: string;
|
|
42
|
+
/** Used to indicate an application specific resolver to use */
|
|
43
|
+
'mime-type'?: string;
|
|
44
|
+
};
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* User actions can be represented in several places.
|
|
49
|
+
* Each view typically has one or more actions that allow the user to navigate away from that view.
|
|
50
|
+
* In addition, several asset types can have actions that apply to that asset only.
|
|
51
|
+
*/
|
|
52
|
+
export interface ActionAsset<AnyTextAsset extends Asset = Asset> extends Asset<'action'> {
|
|
53
|
+
/** The transition value of the action in the state machine */
|
|
54
|
+
value?: string;
|
|
55
|
+
/** A text-like asset for the action's label */
|
|
56
|
+
label?: AssetWrapper<AnyTextAsset>;
|
|
57
|
+
/** An optional expression to execute before transitioning */
|
|
58
|
+
exp?: Expression;
|
|
59
|
+
/** An optional string that describes the action for screen-readers */
|
|
60
|
+
accessibility?: string;
|
|
61
|
+
/** Additional optional data to assist with the action interactions on the page */
|
|
62
|
+
metaData?: {
|
|
63
|
+
/** Additional data to beacon */
|
|
64
|
+
beacon?: string | Record<string, any>;
|
|
65
|
+
/** Force transition to the next view without checking for validation */
|
|
66
|
+
skipValidation?: boolean;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export interface InfoAsset extends Asset<'info'> {
|
|
70
|
+
/** The string value to show */
|
|
71
|
+
title?: AssetWrapper;
|
|
72
|
+
/** subtitle */
|
|
73
|
+
subTitle?: AssetWrapper;
|
|
74
|
+
/** Primary place for info */
|
|
75
|
+
primaryInfo?: AssetWrapper;
|
|
76
|
+
/** List of actions to show at the bottom of the page */
|
|
77
|
+
actions?: Array<AssetWrapper>;
|
|
78
|
+
}
|
|
79
|
+
export interface CollectionAsset extends Asset<'collection'> {
|
|
80
|
+
/** An optional label to title the collection */
|
|
81
|
+
label?: AssetWrapper;
|
|
82
|
+
/** The string value to show */
|
|
83
|
+
values?: Array<AssetWrapper>;
|
|
84
|
+
}"
|
|
85
|
+
`;
|
|
86
|
+
|
|
87
|
+
exports[`Export Test > Exports Typescript Types With Transforms 1`] = `
|
|
88
|
+
"import { Expression, Asset, Binding, AssetWrapper } from "@player-ui/types";
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* This is the most generic way of gathering data. The input is bound to a data model using the 'binding' property.
|
|
92
|
+
* Players can get field type information from the 'schema' definition, thus to decide the input controls for visual rendering.
|
|
93
|
+
*/
|
|
94
|
+
export interface InputAsset<AnyTextAsset extends Asset = Asset> extends Asset<'input'> {
|
|
95
|
+
/** Asset container for a field label. */
|
|
96
|
+
label?: AssetWrapper<AnyTextAsset>;
|
|
97
|
+
/** Asset container for a note. */
|
|
98
|
+
note?: AssetWrapper<AnyTextAsset>;
|
|
99
|
+
/** The location in the data-model to store the data */
|
|
100
|
+
binding: Binding;
|
|
101
|
+
/** Optional additional data */
|
|
102
|
+
metaData?: {
|
|
103
|
+
/** Additional data to beacon when this input changes */
|
|
104
|
+
beacon?: string | Record<string, any>;
|
|
105
|
+
};
|
|
106
|
+
transformed?: true;
|
|
107
|
+
}
|
|
108
|
+
export interface TextAsset extends Asset<'text'> {
|
|
109
|
+
/** The text to display */
|
|
110
|
+
value: string;
|
|
111
|
+
/** Any modifiers on the text */
|
|
112
|
+
modifiers?: Array<{
|
|
113
|
+
/** The modifier type */
|
|
114
|
+
type: string;
|
|
115
|
+
/** Modifiers can be named when used in strings */
|
|
116
|
+
name?: string;
|
|
117
|
+
[key: string]: unknown;
|
|
118
|
+
} | {
|
|
119
|
+
/** The link type denotes this as a link */
|
|
120
|
+
type: 'link';
|
|
121
|
+
/** An optional expression to run before the link is opened */
|
|
122
|
+
exp?: Expression;
|
|
123
|
+
/** metaData about the link's target */
|
|
124
|
+
metaData: {
|
|
125
|
+
/** The location of the link to load */
|
|
126
|
+
ref: string;
|
|
127
|
+
/** Used to indicate an application specific resolver to use */
|
|
128
|
+
'mime-type'?: string;
|
|
129
|
+
};
|
|
130
|
+
}>;
|
|
131
|
+
transformed?: true;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* User actions can be represented in several places.
|
|
135
|
+
* Each view typically has one or more actions that allow the user to navigate away from that view.
|
|
136
|
+
* In addition, several asset types can have actions that apply to that asset only.
|
|
137
|
+
*/
|
|
138
|
+
export interface ActionAsset<AnyTextAsset extends Asset = Asset> extends Asset<'action'> {
|
|
139
|
+
/** The transition value of the action in the state machine */
|
|
140
|
+
value?: string;
|
|
141
|
+
/** A text-like asset for the action's label */
|
|
142
|
+
label?: AssetWrapper<AnyTextAsset>;
|
|
143
|
+
/** An optional expression to execute before transitioning */
|
|
144
|
+
exp?: Expression;
|
|
145
|
+
/** An optional string that describes the action for screen-readers */
|
|
146
|
+
accessibility?: string;
|
|
147
|
+
/** Additional optional data to assist with the action interactions on the page */
|
|
148
|
+
metaData?: {
|
|
149
|
+
/** Additional data to beacon */
|
|
150
|
+
beacon?: string | Record<string, any>;
|
|
151
|
+
/** Force transition to the next view without checking for validation */
|
|
152
|
+
skipValidation?: boolean;
|
|
153
|
+
};
|
|
154
|
+
transformed?: true;
|
|
155
|
+
}
|
|
156
|
+
export interface InfoAsset extends Asset<'info'> {
|
|
157
|
+
/** The string value to show */
|
|
158
|
+
title?: AssetWrapper;
|
|
159
|
+
/** subtitle */
|
|
160
|
+
subTitle?: AssetWrapper;
|
|
161
|
+
/** Primary place for info */
|
|
162
|
+
primaryInfo?: AssetWrapper;
|
|
163
|
+
/** List of actions to show at the bottom of the page */
|
|
164
|
+
actions?: Array<AssetWrapper>;
|
|
165
|
+
transformed?: true;
|
|
166
|
+
}
|
|
167
|
+
export interface CollectionAsset extends Asset<'collection'> {
|
|
168
|
+
/** An optional label to title the collection */
|
|
169
|
+
label?: AssetWrapper;
|
|
170
|
+
/** The string value to show */
|
|
171
|
+
values?: Array<AssetWrapper>;
|
|
172
|
+
transformed?: true;
|
|
173
|
+
}"
|
|
174
|
+
`;
|
|
175
|
+
|
|
176
|
+
exports[`Export Test > Exports Typescript types 1`] = `
|
|
177
|
+
"import { Expression, Asset, Binding, AssetWrapper } from "@player-ui/types";
|
|
178
|
+
|
|
179
|
+
/** An asset is the smallest unit of user interaction in a player view */
|
|
180
|
+
export interface Asset<T extends string = string> {
|
|
181
|
+
/** Each asset requires a unique id per view */
|
|
182
|
+
id: string;
|
|
183
|
+
/** The asset type determines the semantics of how a user interacts with a page */
|
|
184
|
+
type: T;
|
|
185
|
+
[key: string]: unknown;
|
|
186
|
+
}
|
|
187
|
+
/** An asset that contains a Binding. */
|
|
188
|
+
export interface AssetBinding extends Asset {
|
|
189
|
+
/** A binding that points to somewhere in the data model */
|
|
190
|
+
binding: Binding;
|
|
191
|
+
}
|
|
192
|
+
/** A single case statement to use in a switch */
|
|
193
|
+
export interface SwitchCase<T extends Asset = Asset> {
|
|
194
|
+
/** The Asset to use if this case is applicable */
|
|
195
|
+
asset: T;
|
|
196
|
+
/** An expression to execute to determine if this case applies */
|
|
197
|
+
case: Expression | true;
|
|
198
|
+
}
|
|
199
|
+
/** A switch can replace an asset with the applicable case on first render */
|
|
200
|
+
export type Switch<T extends Asset = Asset> = Array<{
|
|
201
|
+
/** The Asset to use if this case is applicable */
|
|
202
|
+
asset: T;
|
|
203
|
+
/** An expression to execute to determine if this case applies */
|
|
204
|
+
case: Expression | true;
|
|
205
|
+
}>;
|
|
206
|
+
/** An object that contains an asset */
|
|
207
|
+
export interface AssetWrapper<T extends Asset = Asset> {
|
|
208
|
+
/** An asset instance */
|
|
209
|
+
asset: T;
|
|
210
|
+
[key: string]: unknown;
|
|
211
|
+
}
|
|
212
|
+
export type AssetWrapperOrSwitch<T extends Asset = Asset> = (AssetWrapper<T> & {
|
|
213
|
+
/** The dynamicSwitch property can't exist at the same time as 'asset' */
|
|
214
|
+
dynamicSwitch?: never;
|
|
215
|
+
/** The staticSwitch property can't exist at the same time as 'asset' */
|
|
216
|
+
staticSwitch?: never;
|
|
217
|
+
}) | ({
|
|
218
|
+
/** A static switch only evaluates the applicable base on first render of the view */
|
|
219
|
+
staticSwitch: Array<{
|
|
220
|
+
/** The Asset to use if this case is applicable */
|
|
221
|
+
asset: T;
|
|
222
|
+
/** An expression to execute to determine if this case applies */
|
|
223
|
+
case: Expression | true;
|
|
224
|
+
}>;
|
|
225
|
+
} & {
|
|
226
|
+
/** The staticSwitch property can't exist at the same time as 'asset' */
|
|
227
|
+
asset?: never;
|
|
228
|
+
/** The staticSwitch property can't exist at the same time as 'dynamicSwitch' */
|
|
229
|
+
dynamicSwitch?: never;
|
|
230
|
+
}) | ({
|
|
231
|
+
/** A dynamic switch re-evaluates the applicable case as data changes */
|
|
232
|
+
dynamicSwitch: Array<{
|
|
233
|
+
/** The Asset to use if this case is applicable */
|
|
234
|
+
asset: T;
|
|
235
|
+
/** An expression to execute to determine if this case applies */
|
|
236
|
+
case: Expression | true;
|
|
237
|
+
}>;
|
|
238
|
+
} & {
|
|
239
|
+
/** The dynamicSwitch property can't exist at the same time as 'asset' */
|
|
240
|
+
asset?: never;
|
|
241
|
+
/** The dynamicSwitch property can't exist at the same time as 'staticSwitch' */
|
|
242
|
+
staticSwitch?: never;
|
|
243
|
+
});
|
|
244
|
+
export type AssetSwitch<T extends Asset = Asset> = {
|
|
245
|
+
/** A static switch only evaluates the applicable base on first render of the view */
|
|
246
|
+
staticSwitch: Array<{
|
|
247
|
+
/** The Asset to use if this case is applicable */
|
|
248
|
+
asset: T;
|
|
249
|
+
/** An expression to execute to determine if this case applies */
|
|
250
|
+
case: Expression | true;
|
|
251
|
+
}>;
|
|
252
|
+
} | {
|
|
253
|
+
/** A dynamic switch re-evaluates the applicable case as data changes */
|
|
254
|
+
dynamicSwitch: Array<{
|
|
255
|
+
/** The Asset to use if this case is applicable */
|
|
256
|
+
asset: T;
|
|
257
|
+
/** An expression to execute to determine if this case applies */
|
|
258
|
+
case: Expression | true;
|
|
259
|
+
}>;
|
|
260
|
+
};
|
|
261
|
+
export interface StaticSwitch<T extends Asset = Asset> {
|
|
262
|
+
/** A static switch only evaluates the applicable base on first render of the view */
|
|
263
|
+
staticSwitch: Array<{
|
|
264
|
+
/** The Asset to use if this case is applicable */
|
|
265
|
+
asset: T;
|
|
266
|
+
/** An expression to execute to determine if this case applies */
|
|
267
|
+
case: Expression | true;
|
|
268
|
+
}>;
|
|
269
|
+
}
|
|
270
|
+
export interface DynamicSwitch<T extends Asset = Asset> {
|
|
271
|
+
/** A dynamic switch re-evaluates the applicable case as data changes */
|
|
272
|
+
dynamicSwitch: Array<{
|
|
273
|
+
/** The Asset to use if this case is applicable */
|
|
274
|
+
asset: T;
|
|
275
|
+
/** An expression to execute to determine if this case applies */
|
|
276
|
+
case: Expression | true;
|
|
277
|
+
}>;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Expressions are a specialized way of executing code.
|
|
281
|
+
* If the expression is a composite, the last expression executed is the return value
|
|
282
|
+
*/
|
|
283
|
+
export type Expression = string | Array<string>;
|
|
284
|
+
export type ExpressionRef = \`@[\${string}]@\`;
|
|
285
|
+
/** Bindings describe locations in the data model. */
|
|
286
|
+
export type Binding = string;
|
|
287
|
+
export type BindingRef = \`{{\${string}}}\`;
|
|
288
|
+
/** The data-model is the location that all user data is stored */
|
|
289
|
+
export type DataModel = Record<any, unknown>;
|
|
290
|
+
/** The navigation section of the flow describes a State Machine for the user. */
|
|
291
|
+
export type Navigation = {
|
|
292
|
+
/** The name of the Flow to begin on */
|
|
293
|
+
BEGIN: string;
|
|
294
|
+
} & Record<string, string | {
|
|
295
|
+
/** The first state to kick off the state machine */
|
|
296
|
+
startState: string;
|
|
297
|
+
/** An optional expression to run when this Flow starts */
|
|
298
|
+
onStart?: Expression | {
|
|
299
|
+
/** The expression to run */
|
|
300
|
+
exp?: Expression;
|
|
301
|
+
};
|
|
302
|
+
/** An optional expression to run when this Flow ends */
|
|
303
|
+
onEnd?: Expression | {
|
|
304
|
+
/** The expression to run */
|
|
305
|
+
exp?: Expression;
|
|
306
|
+
};
|
|
307
|
+
[key: string]: undefined | string | Expression | {
|
|
308
|
+
/** The expression to run */
|
|
309
|
+
exp?: Expression;
|
|
310
|
+
} | ({
|
|
311
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
312
|
+
_comment?: string;
|
|
313
|
+
/** A property to determine the type of state this is */
|
|
314
|
+
state_type: 'VIEW';
|
|
315
|
+
/** An optional expression to run when this view renders */
|
|
316
|
+
onStart?: Expression | {
|
|
317
|
+
/** The expression to run */
|
|
318
|
+
exp?: Expression;
|
|
319
|
+
};
|
|
320
|
+
/** An optional expression to run before view transition */
|
|
321
|
+
onEnd?: Expression | {
|
|
322
|
+
/** The expression to run */
|
|
323
|
+
exp?: Expression;
|
|
324
|
+
};
|
|
325
|
+
exp?: never;
|
|
326
|
+
/** A mapping of transition-name to FlowState name */
|
|
327
|
+
transitions: Record<string, string>;
|
|
328
|
+
/** An id corresponding to a view from the 'views' array */
|
|
329
|
+
ref: string;
|
|
330
|
+
/** View meta-properties */
|
|
331
|
+
attributes?: {
|
|
332
|
+
[key: string]: any;
|
|
333
|
+
};
|
|
334
|
+
} | {
|
|
335
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
336
|
+
_comment?: string;
|
|
337
|
+
/** A property to determine the type of state this is */
|
|
338
|
+
state_type: 'END';
|
|
339
|
+
/** An optional expression to run when this view renders */
|
|
340
|
+
onStart?: Expression | {
|
|
341
|
+
/** The expression to run */
|
|
342
|
+
exp?: Expression;
|
|
343
|
+
};
|
|
344
|
+
/** An optional expression to run before view transition */
|
|
345
|
+
onEnd?: Expression | {
|
|
346
|
+
/** The expression to run */
|
|
347
|
+
exp?: Expression;
|
|
348
|
+
};
|
|
349
|
+
exp?: never;
|
|
350
|
+
/**
|
|
351
|
+
* A description of _how_ the flow ended.
|
|
352
|
+
* If this is a flow started from another flow, the outcome determines the flow transition
|
|
353
|
+
*/
|
|
354
|
+
outcome: string;
|
|
355
|
+
} | {
|
|
356
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
357
|
+
_comment?: string;
|
|
358
|
+
/** A property to determine the type of state this is */
|
|
359
|
+
state_type: 'FLOW';
|
|
360
|
+
/** An optional expression to run when this view renders */
|
|
361
|
+
onStart?: Expression | {
|
|
362
|
+
/** The expression to run */
|
|
363
|
+
exp?: Expression;
|
|
364
|
+
};
|
|
365
|
+
/** An optional expression to run before view transition */
|
|
366
|
+
onEnd?: Expression | {
|
|
367
|
+
/** The expression to run */
|
|
368
|
+
exp?: Expression;
|
|
369
|
+
};
|
|
370
|
+
exp?: never;
|
|
371
|
+
/** A mapping of transition-name to FlowState name */
|
|
372
|
+
transitions: Record<string, string>;
|
|
373
|
+
/** A reference to a FLOW id state to run */
|
|
374
|
+
ref: string;
|
|
375
|
+
} | {
|
|
376
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
377
|
+
_comment?: string;
|
|
378
|
+
/** A property to determine the type of state this is */
|
|
379
|
+
state_type: 'ACTION';
|
|
380
|
+
/** An optional expression to run when this view renders */
|
|
381
|
+
onStart?: Expression | {
|
|
382
|
+
/** The expression to run */
|
|
383
|
+
exp?: Expression;
|
|
384
|
+
};
|
|
385
|
+
/** An optional expression to run before view transition */
|
|
386
|
+
onEnd?: Expression | {
|
|
387
|
+
/** The expression to run */
|
|
388
|
+
exp?: Expression;
|
|
389
|
+
};
|
|
390
|
+
/**
|
|
391
|
+
* An expression to execute.
|
|
392
|
+
* The return value determines the transition to take
|
|
393
|
+
*/
|
|
394
|
+
exp: Expression;
|
|
395
|
+
/** A mapping of transition-name to FlowState name */
|
|
396
|
+
transitions: Record<string, string>;
|
|
397
|
+
} | {
|
|
398
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
399
|
+
_comment?: string;
|
|
400
|
+
/** A property to determine the type of state this is */
|
|
401
|
+
state_type: 'EXTERNAL';
|
|
402
|
+
/** An optional expression to run when this view renders */
|
|
403
|
+
onStart?: Expression | {
|
|
404
|
+
/** The expression to run */
|
|
405
|
+
exp?: Expression;
|
|
406
|
+
};
|
|
407
|
+
/** An optional expression to run before view transition */
|
|
408
|
+
onEnd?: Expression | {
|
|
409
|
+
/** The expression to run */
|
|
410
|
+
exp?: Expression;
|
|
411
|
+
};
|
|
412
|
+
exp?: never;
|
|
413
|
+
/** A mapping of transition-name to FlowState name */
|
|
414
|
+
transitions: Record<string, string>;
|
|
415
|
+
/** A reference for this external state */
|
|
416
|
+
ref: string;
|
|
417
|
+
});
|
|
418
|
+
}>;
|
|
419
|
+
/** An object with an expression in it */
|
|
420
|
+
export interface ExpressionObject {
|
|
421
|
+
/** The expression to run */
|
|
422
|
+
exp?: Expression;
|
|
423
|
+
}
|
|
424
|
+
/** A state machine in the navigation */
|
|
425
|
+
export interface NavigationFlow {
|
|
426
|
+
/** The first state to kick off the state machine */
|
|
427
|
+
startState: string;
|
|
428
|
+
/** An optional expression to run when this Flow starts */
|
|
429
|
+
onStart?: Expression | {
|
|
430
|
+
/** The expression to run */
|
|
431
|
+
exp?: Expression;
|
|
432
|
+
};
|
|
433
|
+
/** An optional expression to run when this Flow ends */
|
|
434
|
+
onEnd?: Expression | {
|
|
435
|
+
/** The expression to run */
|
|
436
|
+
exp?: Expression;
|
|
437
|
+
};
|
|
438
|
+
[key: string]: undefined | string | Expression | {
|
|
439
|
+
/** The expression to run */
|
|
440
|
+
exp?: Expression;
|
|
441
|
+
} | ({
|
|
442
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
443
|
+
_comment?: string;
|
|
444
|
+
/** A property to determine the type of state this is */
|
|
445
|
+
state_type: 'VIEW';
|
|
446
|
+
/** An optional expression to run when this view renders */
|
|
447
|
+
onStart?: Expression | {
|
|
448
|
+
/** The expression to run */
|
|
449
|
+
exp?: Expression;
|
|
450
|
+
};
|
|
451
|
+
/** An optional expression to run before view transition */
|
|
452
|
+
onEnd?: Expression | {
|
|
453
|
+
/** The expression to run */
|
|
454
|
+
exp?: Expression;
|
|
455
|
+
};
|
|
456
|
+
exp?: never;
|
|
457
|
+
/** A mapping of transition-name to FlowState name */
|
|
458
|
+
transitions: Record<string, string>;
|
|
459
|
+
/** An id corresponding to a view from the 'views' array */
|
|
460
|
+
ref: string;
|
|
461
|
+
/** View meta-properties */
|
|
462
|
+
attributes?: {
|
|
463
|
+
[key: string]: any;
|
|
464
|
+
};
|
|
465
|
+
} | {
|
|
466
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
467
|
+
_comment?: string;
|
|
468
|
+
/** A property to determine the type of state this is */
|
|
469
|
+
state_type: 'END';
|
|
470
|
+
/** An optional expression to run when this view renders */
|
|
471
|
+
onStart?: Expression | {
|
|
472
|
+
/** The expression to run */
|
|
473
|
+
exp?: Expression;
|
|
474
|
+
};
|
|
475
|
+
/** An optional expression to run before view transition */
|
|
476
|
+
onEnd?: Expression | {
|
|
477
|
+
/** The expression to run */
|
|
478
|
+
exp?: Expression;
|
|
479
|
+
};
|
|
480
|
+
exp?: never;
|
|
481
|
+
/**
|
|
482
|
+
* A description of _how_ the flow ended.
|
|
483
|
+
* If this is a flow started from another flow, the outcome determines the flow transition
|
|
484
|
+
*/
|
|
485
|
+
outcome: string;
|
|
486
|
+
} | {
|
|
487
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
488
|
+
_comment?: string;
|
|
489
|
+
/** A property to determine the type of state this is */
|
|
490
|
+
state_type: 'FLOW';
|
|
491
|
+
/** An optional expression to run when this view renders */
|
|
492
|
+
onStart?: Expression | {
|
|
493
|
+
/** The expression to run */
|
|
494
|
+
exp?: Expression;
|
|
495
|
+
};
|
|
496
|
+
/** An optional expression to run before view transition */
|
|
497
|
+
onEnd?: Expression | {
|
|
498
|
+
/** The expression to run */
|
|
499
|
+
exp?: Expression;
|
|
500
|
+
};
|
|
501
|
+
exp?: never;
|
|
502
|
+
/** A mapping of transition-name to FlowState name */
|
|
503
|
+
transitions: Record<string, string>;
|
|
504
|
+
/** A reference to a FLOW id state to run */
|
|
505
|
+
ref: string;
|
|
506
|
+
} | {
|
|
507
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
508
|
+
_comment?: string;
|
|
509
|
+
/** A property to determine the type of state this is */
|
|
510
|
+
state_type: 'ACTION';
|
|
511
|
+
/** An optional expression to run when this view renders */
|
|
512
|
+
onStart?: Expression | {
|
|
513
|
+
/** The expression to run */
|
|
514
|
+
exp?: Expression;
|
|
515
|
+
};
|
|
516
|
+
/** An optional expression to run before view transition */
|
|
517
|
+
onEnd?: Expression | {
|
|
518
|
+
/** The expression to run */
|
|
519
|
+
exp?: Expression;
|
|
520
|
+
};
|
|
521
|
+
/**
|
|
522
|
+
* An expression to execute.
|
|
523
|
+
* The return value determines the transition to take
|
|
524
|
+
*/
|
|
525
|
+
exp: Expression;
|
|
526
|
+
/** A mapping of transition-name to FlowState name */
|
|
527
|
+
transitions: Record<string, string>;
|
|
528
|
+
} | {
|
|
529
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
530
|
+
_comment?: string;
|
|
531
|
+
/** A property to determine the type of state this is */
|
|
532
|
+
state_type: 'EXTERNAL';
|
|
533
|
+
/** An optional expression to run when this view renders */
|
|
534
|
+
onStart?: Expression | {
|
|
535
|
+
/** The expression to run */
|
|
536
|
+
exp?: Expression;
|
|
537
|
+
};
|
|
538
|
+
/** An optional expression to run before view transition */
|
|
539
|
+
onEnd?: Expression | {
|
|
540
|
+
/** The expression to run */
|
|
541
|
+
exp?: Expression;
|
|
542
|
+
};
|
|
543
|
+
exp?: never;
|
|
544
|
+
/** A mapping of transition-name to FlowState name */
|
|
545
|
+
transitions: Record<string, string>;
|
|
546
|
+
/** A reference for this external state */
|
|
547
|
+
ref: string;
|
|
548
|
+
});
|
|
549
|
+
}
|
|
550
|
+
export type NavigationFlowTransition = Record<string, string>;
|
|
551
|
+
/** The base representation of a state within a Flow */
|
|
552
|
+
export interface NavigationBaseState<T extends string = any> {
|
|
553
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
554
|
+
_comment?: string;
|
|
555
|
+
/** A property to determine the type of state this is */
|
|
556
|
+
state_type: T;
|
|
557
|
+
/** An optional expression to run when this view renders */
|
|
558
|
+
onStart?: Expression | {
|
|
559
|
+
/** The expression to run */
|
|
560
|
+
exp?: Expression;
|
|
561
|
+
};
|
|
562
|
+
/** An optional expression to run before view transition */
|
|
563
|
+
onEnd?: Expression | {
|
|
564
|
+
/** The expression to run */
|
|
565
|
+
exp?: Expression;
|
|
566
|
+
};
|
|
567
|
+
/**
|
|
568
|
+
* TS gets really confused with both the ActionState and the onStart state both declaring the \`exp\` property
|
|
569
|
+
* So this explicity says there should never be an exp prop on a state node that's not of type 'ACTION'
|
|
570
|
+
*/
|
|
571
|
+
exp?: T extends 'ACTION' ? Expression : never;
|
|
572
|
+
}
|
|
573
|
+
/** A generic state that can transition to another state */
|
|
574
|
+
export interface NavigationFlowTransitionableState<T extends string = any> {
|
|
575
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
576
|
+
_comment?: string;
|
|
577
|
+
/** A property to determine the type of state this is */
|
|
578
|
+
state_type: T;
|
|
579
|
+
/** An optional expression to run when this view renders */
|
|
580
|
+
onStart?: Expression | {
|
|
581
|
+
/** The expression to run */
|
|
582
|
+
exp?: Expression;
|
|
583
|
+
};
|
|
584
|
+
/** An optional expression to run before view transition */
|
|
585
|
+
onEnd?: Expression | {
|
|
586
|
+
/** The expression to run */
|
|
587
|
+
exp?: Expression;
|
|
588
|
+
};
|
|
589
|
+
/**
|
|
590
|
+
* TS gets really confused with both the ActionState and the onStart state both declaring the \`exp\` property
|
|
591
|
+
* So this explicity says there should never be an exp prop on a state node that's not of type 'ACTION'
|
|
592
|
+
*/
|
|
593
|
+
exp?: T extends 'ACTION' ? Expression : never;
|
|
594
|
+
/** A mapping of transition-name to FlowState name */
|
|
595
|
+
transitions: Record<string, string>;
|
|
596
|
+
}
|
|
597
|
+
/** A state representing a view */
|
|
598
|
+
export interface NavigationFlowViewState {
|
|
599
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
600
|
+
_comment?: string;
|
|
601
|
+
/** A property to determine the type of state this is */
|
|
602
|
+
state_type: 'VIEW';
|
|
603
|
+
/** An optional expression to run when this view renders */
|
|
604
|
+
onStart?: Expression | {
|
|
605
|
+
/** The expression to run */
|
|
606
|
+
exp?: Expression;
|
|
607
|
+
};
|
|
608
|
+
/** An optional expression to run before view transition */
|
|
609
|
+
onEnd?: Expression | {
|
|
610
|
+
/** The expression to run */
|
|
611
|
+
exp?: Expression;
|
|
612
|
+
};
|
|
613
|
+
exp?: never;
|
|
614
|
+
/** A mapping of transition-name to FlowState name */
|
|
615
|
+
transitions: Record<string, string>;
|
|
616
|
+
/** An id corresponding to a view from the 'views' array */
|
|
617
|
+
ref: string;
|
|
618
|
+
/** View meta-properties */
|
|
619
|
+
attributes?: {
|
|
620
|
+
[key: string]: any;
|
|
621
|
+
};
|
|
622
|
+
}
|
|
623
|
+
/** An END state of the flow. */
|
|
624
|
+
export interface NavigationFlowEndState {
|
|
625
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
626
|
+
_comment?: string;
|
|
627
|
+
/** A property to determine the type of state this is */
|
|
628
|
+
state_type: 'END';
|
|
629
|
+
/** An optional expression to run when this view renders */
|
|
630
|
+
onStart?: Expression | {
|
|
631
|
+
/** The expression to run */
|
|
632
|
+
exp?: Expression;
|
|
633
|
+
};
|
|
634
|
+
/** An optional expression to run before view transition */
|
|
635
|
+
onEnd?: Expression | {
|
|
636
|
+
/** The expression to run */
|
|
637
|
+
exp?: Expression;
|
|
638
|
+
};
|
|
639
|
+
exp?: never;
|
|
640
|
+
/**
|
|
641
|
+
* A description of _how_ the flow ended.
|
|
642
|
+
* If this is a flow started from another flow, the outcome determines the flow transition
|
|
643
|
+
*/
|
|
644
|
+
outcome: string;
|
|
645
|
+
}
|
|
646
|
+
/** Action states execute an expression to determine the next state to transition to */
|
|
647
|
+
export interface NavigationFlowActionState {
|
|
648
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
649
|
+
_comment?: string;
|
|
650
|
+
/** A property to determine the type of state this is */
|
|
651
|
+
state_type: 'ACTION';
|
|
652
|
+
/** An optional expression to run when this view renders */
|
|
653
|
+
onStart?: Expression | {
|
|
654
|
+
/** The expression to run */
|
|
655
|
+
exp?: Expression;
|
|
656
|
+
};
|
|
657
|
+
/** An optional expression to run before view transition */
|
|
658
|
+
onEnd?: Expression | {
|
|
659
|
+
/** The expression to run */
|
|
660
|
+
exp?: Expression;
|
|
661
|
+
};
|
|
662
|
+
/**
|
|
663
|
+
* An expression to execute.
|
|
664
|
+
* The return value determines the transition to take
|
|
665
|
+
*/
|
|
666
|
+
exp: Expression;
|
|
667
|
+
/** A mapping of transition-name to FlowState name */
|
|
668
|
+
transitions: Record<string, string>;
|
|
669
|
+
}
|
|
670
|
+
/**
|
|
671
|
+
* External Flow states represent states in the FSM that can't be resolved internally in Player.
|
|
672
|
+
* The flow will wait for the embedded application to manage moving to the next state via a transition
|
|
673
|
+
*/
|
|
674
|
+
export interface NavigationFlowExternalState {
|
|
675
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
676
|
+
_comment?: string;
|
|
677
|
+
/** A property to determine the type of state this is */
|
|
678
|
+
state_type: 'EXTERNAL';
|
|
679
|
+
/** An optional expression to run when this view renders */
|
|
680
|
+
onStart?: Expression | {
|
|
681
|
+
/** The expression to run */
|
|
682
|
+
exp?: Expression;
|
|
683
|
+
};
|
|
684
|
+
/** An optional expression to run before view transition */
|
|
685
|
+
onEnd?: Expression | {
|
|
686
|
+
/** The expression to run */
|
|
687
|
+
exp?: Expression;
|
|
688
|
+
};
|
|
689
|
+
exp?: never;
|
|
690
|
+
/** A mapping of transition-name to FlowState name */
|
|
691
|
+
transitions: Record<string, string>;
|
|
692
|
+
/** A reference for this external state */
|
|
693
|
+
ref: string;
|
|
694
|
+
}
|
|
695
|
+
export interface NavigationFlowFlowState {
|
|
696
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
697
|
+
_comment?: string;
|
|
698
|
+
/** A property to determine the type of state this is */
|
|
699
|
+
state_type: 'FLOW';
|
|
700
|
+
/** An optional expression to run when this view renders */
|
|
701
|
+
onStart?: Expression | {
|
|
702
|
+
/** The expression to run */
|
|
703
|
+
exp?: Expression;
|
|
704
|
+
};
|
|
705
|
+
/** An optional expression to run before view transition */
|
|
706
|
+
onEnd?: Expression | {
|
|
707
|
+
/** The expression to run */
|
|
708
|
+
exp?: Expression;
|
|
709
|
+
};
|
|
710
|
+
exp?: never;
|
|
711
|
+
/** A mapping of transition-name to FlowState name */
|
|
712
|
+
transitions: Record<string, string>;
|
|
713
|
+
/** A reference to a FLOW id state to run */
|
|
714
|
+
ref: string;
|
|
715
|
+
}
|
|
716
|
+
export type NavigationFlowState = {
|
|
717
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
718
|
+
_comment?: string;
|
|
719
|
+
/** A property to determine the type of state this is */
|
|
720
|
+
state_type: 'VIEW';
|
|
721
|
+
/** An optional expression to run when this view renders */
|
|
722
|
+
onStart?: Expression | {
|
|
723
|
+
/** The expression to run */
|
|
724
|
+
exp?: Expression;
|
|
725
|
+
};
|
|
726
|
+
/** An optional expression to run before view transition */
|
|
727
|
+
onEnd?: Expression | {
|
|
728
|
+
/** The expression to run */
|
|
729
|
+
exp?: Expression;
|
|
730
|
+
};
|
|
731
|
+
exp?: never;
|
|
732
|
+
/** A mapping of transition-name to FlowState name */
|
|
733
|
+
transitions: Record<string, string>;
|
|
734
|
+
/** An id corresponding to a view from the 'views' array */
|
|
735
|
+
ref: string;
|
|
736
|
+
/** View meta-properties */
|
|
737
|
+
attributes?: {
|
|
738
|
+
[key: string]: any;
|
|
739
|
+
};
|
|
740
|
+
} | {
|
|
741
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
742
|
+
_comment?: string;
|
|
743
|
+
/** A property to determine the type of state this is */
|
|
744
|
+
state_type: 'END';
|
|
745
|
+
/** An optional expression to run when this view renders */
|
|
746
|
+
onStart?: Expression | {
|
|
747
|
+
/** The expression to run */
|
|
748
|
+
exp?: Expression;
|
|
749
|
+
};
|
|
750
|
+
/** An optional expression to run before view transition */
|
|
751
|
+
onEnd?: Expression | {
|
|
752
|
+
/** The expression to run */
|
|
753
|
+
exp?: Expression;
|
|
754
|
+
};
|
|
755
|
+
exp?: never;
|
|
756
|
+
/**
|
|
757
|
+
* A description of _how_ the flow ended.
|
|
758
|
+
* If this is a flow started from another flow, the outcome determines the flow transition
|
|
759
|
+
*/
|
|
760
|
+
outcome: string;
|
|
761
|
+
} | {
|
|
762
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
763
|
+
_comment?: string;
|
|
764
|
+
/** A property to determine the type of state this is */
|
|
765
|
+
state_type: 'FLOW';
|
|
766
|
+
/** An optional expression to run when this view renders */
|
|
767
|
+
onStart?: Expression | {
|
|
768
|
+
/** The expression to run */
|
|
769
|
+
exp?: Expression;
|
|
770
|
+
};
|
|
771
|
+
/** An optional expression to run before view transition */
|
|
772
|
+
onEnd?: Expression | {
|
|
773
|
+
/** The expression to run */
|
|
774
|
+
exp?: Expression;
|
|
775
|
+
};
|
|
776
|
+
exp?: never;
|
|
777
|
+
/** A mapping of transition-name to FlowState name */
|
|
778
|
+
transitions: Record<string, string>;
|
|
779
|
+
/** A reference to a FLOW id state to run */
|
|
780
|
+
ref: string;
|
|
781
|
+
} | {
|
|
782
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
783
|
+
_comment?: string;
|
|
784
|
+
/** A property to determine the type of state this is */
|
|
785
|
+
state_type: 'ACTION';
|
|
786
|
+
/** An optional expression to run when this view renders */
|
|
787
|
+
onStart?: Expression | {
|
|
788
|
+
/** The expression to run */
|
|
789
|
+
exp?: Expression;
|
|
790
|
+
};
|
|
791
|
+
/** An optional expression to run before view transition */
|
|
792
|
+
onEnd?: Expression | {
|
|
793
|
+
/** The expression to run */
|
|
794
|
+
exp?: Expression;
|
|
795
|
+
};
|
|
796
|
+
/**
|
|
797
|
+
* An expression to execute.
|
|
798
|
+
* The return value determines the transition to take
|
|
799
|
+
*/
|
|
800
|
+
exp: Expression;
|
|
801
|
+
/** A mapping of transition-name to FlowState name */
|
|
802
|
+
transitions: Record<string, string>;
|
|
803
|
+
} | {
|
|
804
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
805
|
+
_comment?: string;
|
|
806
|
+
/** A property to determine the type of state this is */
|
|
807
|
+
state_type: 'EXTERNAL';
|
|
808
|
+
/** An optional expression to run when this view renders */
|
|
809
|
+
onStart?: Expression | {
|
|
810
|
+
/** The expression to run */
|
|
811
|
+
exp?: Expression;
|
|
812
|
+
};
|
|
813
|
+
/** An optional expression to run before view transition */
|
|
814
|
+
onEnd?: Expression | {
|
|
815
|
+
/** The expression to run */
|
|
816
|
+
exp?: Expression;
|
|
817
|
+
};
|
|
818
|
+
exp?: never;
|
|
819
|
+
/** A mapping of transition-name to FlowState name */
|
|
820
|
+
transitions: Record<string, string>;
|
|
821
|
+
/** A reference for this external state */
|
|
822
|
+
ref: string;
|
|
823
|
+
};
|
|
824
|
+
/** The data at the end of a flow */
|
|
825
|
+
export interface FlowResult {
|
|
826
|
+
/** The outcome describes _how_ the flow ended (forwards, backwards, etc) */
|
|
827
|
+
endState: {
|
|
828
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
829
|
+
_comment?: string;
|
|
830
|
+
/** A property to determine the type of state this is */
|
|
831
|
+
state_type: 'END';
|
|
832
|
+
/** An optional expression to run when this view renders */
|
|
833
|
+
onStart?: Expression | {
|
|
834
|
+
/** The expression to run */
|
|
835
|
+
exp?: Expression;
|
|
836
|
+
};
|
|
837
|
+
/** An optional expression to run before view transition */
|
|
838
|
+
onEnd?: Expression | {
|
|
839
|
+
/** The expression to run */
|
|
840
|
+
exp?: Expression;
|
|
841
|
+
};
|
|
842
|
+
exp?: never;
|
|
843
|
+
/**
|
|
844
|
+
* A description of _how_ the flow ended.
|
|
845
|
+
* If this is a flow started from another flow, the outcome determines the flow transition
|
|
846
|
+
*/
|
|
847
|
+
outcome: string;
|
|
848
|
+
};
|
|
849
|
+
/** The serialized data-model */
|
|
850
|
+
data?: any;
|
|
851
|
+
}
|
|
852
|
+
/** Any object that contains 1 or more templates */
|
|
853
|
+
export interface Templatable {
|
|
854
|
+
/** A list of templates to process for this node */
|
|
855
|
+
template?: Array<{
|
|
856
|
+
/** A pointer to the data-model containing an array of elements to map over */
|
|
857
|
+
data: Binding;
|
|
858
|
+
/**
|
|
859
|
+
* The template to iterate over using each value in the supplied template data.
|
|
860
|
+
* Any reference to _index_ is replaced with the current iteration index.
|
|
861
|
+
*/
|
|
862
|
+
value: ValueType;
|
|
863
|
+
/** should the template be recomputed when data changes */
|
|
864
|
+
dynamic?: boolean;
|
|
865
|
+
/**
|
|
866
|
+
* A property on the parent object to store the new map under.
|
|
867
|
+
* If it already exists, values are appended to the end.
|
|
868
|
+
*/
|
|
869
|
+
output: Key;
|
|
870
|
+
}>;
|
|
871
|
+
}
|
|
872
|
+
/** A template describes a mapping from a data array -> array of objects */
|
|
873
|
+
export interface Template<ValueType extends any = unknown, Key extends string = string> {
|
|
874
|
+
/** A pointer to the data-model containing an array of elements to map over */
|
|
875
|
+
data: Binding;
|
|
876
|
+
/**
|
|
877
|
+
* The template to iterate over using each value in the supplied template data.
|
|
878
|
+
* Any reference to _index_ is replaced with the current iteration index.
|
|
879
|
+
*/
|
|
880
|
+
value: ValueType;
|
|
881
|
+
/** should the template be recomputed when data changes */
|
|
882
|
+
dynamic?: boolean;
|
|
883
|
+
/**
|
|
884
|
+
* A property on the parent object to store the new map under.
|
|
885
|
+
* If it already exists, values are appended to the end.
|
|
886
|
+
*/
|
|
887
|
+
output: Key;
|
|
888
|
+
}
|
|
889
|
+
export type View<T extends Asset = Asset> = unknown extends Asset ? T & {
|
|
890
|
+
/** Each view can optionally supply a list of validations to run against a particular view */
|
|
891
|
+
validation?: Array<{
|
|
892
|
+
/**
|
|
893
|
+
* The name of the referenced validation type
|
|
894
|
+
* This will be used to lookup the proper handler
|
|
895
|
+
*/
|
|
896
|
+
type: string;
|
|
897
|
+
/** An optional means of overriding the default message if the validation is triggered */
|
|
898
|
+
message?: string;
|
|
899
|
+
/** An optional means of overriding the default severity of the validation if triggered */
|
|
900
|
+
severity?: 'error' | 'warning';
|
|
901
|
+
/** When to run this particular validation */
|
|
902
|
+
trigger?: 'navigation' | 'change' | 'load';
|
|
903
|
+
/** Cross-field references and validation must run against the default (deformatted) value */
|
|
904
|
+
dataTarget?: never;
|
|
905
|
+
/** Where the error should be displayed */
|
|
906
|
+
displayTarget?: 'page' | 'section' | 'field';
|
|
907
|
+
/** The binding to associate this validation with */
|
|
908
|
+
ref?: Binding;
|
|
909
|
+
[key: string]: unknown;
|
|
910
|
+
}>;
|
|
911
|
+
} : T;
|
|
912
|
+
/** The JSON payload for running Player */
|
|
913
|
+
export interface Flow<T extends Asset = Asset> {
|
|
914
|
+
/** A unique identifier for the flow */
|
|
915
|
+
id: string;
|
|
916
|
+
/** A list of views (each with an ID) that can be shown to a user */
|
|
917
|
+
views?: Array<unknown extends Asset ? T & {
|
|
918
|
+
/** Each view can optionally supply a list of validations to run against a particular view */
|
|
919
|
+
validation?: Array<{
|
|
920
|
+
/**
|
|
921
|
+
* The name of the referenced validation type
|
|
922
|
+
* This will be used to lookup the proper handler
|
|
923
|
+
*/
|
|
924
|
+
type: string;
|
|
925
|
+
/** An optional means of overriding the default message if the validation is triggered */
|
|
926
|
+
message?: string;
|
|
927
|
+
/** An optional means of overriding the default severity of the validation if triggered */
|
|
928
|
+
severity?: 'error' | 'warning';
|
|
929
|
+
/** When to run this particular validation */
|
|
930
|
+
trigger?: 'navigation' | 'change' | 'load';
|
|
931
|
+
/** Cross-field references and validation must run against the default (deformatted) value */
|
|
932
|
+
dataTarget?: never;
|
|
933
|
+
/** Where the error should be displayed */
|
|
934
|
+
displayTarget?: 'page' | 'section' | 'field';
|
|
935
|
+
/** The binding to associate this validation with */
|
|
936
|
+
ref?: Binding;
|
|
937
|
+
[key: string]: unknown;
|
|
938
|
+
}>;
|
|
939
|
+
} : T>;
|
|
940
|
+
/**
|
|
941
|
+
* The schema for the supplied (or referenced data).
|
|
942
|
+
* This is used for validation, formatting, etc
|
|
943
|
+
*/
|
|
944
|
+
schema?: {
|
|
945
|
+
/** The ROOT object is the top level object to use */
|
|
946
|
+
ROOT: {
|
|
947
|
+
[key: string]: {
|
|
948
|
+
/** The reference of the base type to use */
|
|
949
|
+
type: string;
|
|
950
|
+
/** The referenced object represents an array rather than an object */
|
|
951
|
+
isArray?: boolean;
|
|
952
|
+
/**
|
|
953
|
+
* Any additional validations that are associated with this property
|
|
954
|
+
* These will add to any base validations associated with the "type"
|
|
955
|
+
*/
|
|
956
|
+
validation?: Array<{
|
|
957
|
+
/**
|
|
958
|
+
* The name of the referenced validation type
|
|
959
|
+
* This will be used to lookup the proper handler
|
|
960
|
+
*/
|
|
961
|
+
type: string;
|
|
962
|
+
/** An optional means of overriding the default message if the validation is triggered */
|
|
963
|
+
message?: string;
|
|
964
|
+
/** An optional means of overriding the default severity of the validation if triggered */
|
|
965
|
+
severity?: 'error' | 'warning';
|
|
966
|
+
/** When to run this particular validation */
|
|
967
|
+
trigger?: 'navigation' | 'change' | 'load';
|
|
968
|
+
/**
|
|
969
|
+
* Each validation is passed the value of the data to run it's validation against.
|
|
970
|
+
* By default, this is the value stored in the data-model (deformatted).
|
|
971
|
+
* In the off chance you'd like this validator to run against the formatted value (the one the user sees), set this option
|
|
972
|
+
*/
|
|
973
|
+
dataTarget?: 'formatted' | 'deformatted';
|
|
974
|
+
/** Where the error should be displayed */
|
|
975
|
+
displayTarget?: 'page' | 'section' | 'field';
|
|
976
|
+
[key: string]: unknown;
|
|
977
|
+
}>;
|
|
978
|
+
/**
|
|
979
|
+
* A reference to a specific data format to use.
|
|
980
|
+
* If none is specified, will fallback to that of the base type
|
|
981
|
+
*/
|
|
982
|
+
format?: {
|
|
983
|
+
/** The name of the formatter (and de-formatter) to use */
|
|
984
|
+
type: string;
|
|
985
|
+
[key: string]: unknown;
|
|
986
|
+
};
|
|
987
|
+
/**
|
|
988
|
+
* A default value for this property.
|
|
989
|
+
* Any reads for this property will result in this default value being written to the model.
|
|
990
|
+
*/
|
|
991
|
+
default?: T;
|
|
992
|
+
[key: string]: unknown;
|
|
993
|
+
};
|
|
994
|
+
};
|
|
995
|
+
[key: string]: {
|
|
996
|
+
[key: string]: {
|
|
997
|
+
/** The reference of the base type to use */
|
|
998
|
+
type: string;
|
|
999
|
+
/** The referenced object represents an array rather than an object */
|
|
1000
|
+
isArray?: boolean;
|
|
1001
|
+
/**
|
|
1002
|
+
* Any additional validations that are associated with this property
|
|
1003
|
+
* These will add to any base validations associated with the "type"
|
|
1004
|
+
*/
|
|
1005
|
+
validation?: Array<{
|
|
1006
|
+
/**
|
|
1007
|
+
* The name of the referenced validation type
|
|
1008
|
+
* This will be used to lookup the proper handler
|
|
1009
|
+
*/
|
|
1010
|
+
type: string;
|
|
1011
|
+
/** An optional means of overriding the default message if the validation is triggered */
|
|
1012
|
+
message?: string;
|
|
1013
|
+
/** An optional means of overriding the default severity of the validation if triggered */
|
|
1014
|
+
severity?: 'error' | 'warning';
|
|
1015
|
+
/** When to run this particular validation */
|
|
1016
|
+
trigger?: 'navigation' | 'change' | 'load';
|
|
1017
|
+
/**
|
|
1018
|
+
* Each validation is passed the value of the data to run it's validation against.
|
|
1019
|
+
* By default, this is the value stored in the data-model (deformatted).
|
|
1020
|
+
* In the off chance you'd like this validator to run against the formatted value (the one the user sees), set this option
|
|
1021
|
+
*/
|
|
1022
|
+
dataTarget?: 'formatted' | 'deformatted';
|
|
1023
|
+
/** Where the error should be displayed */
|
|
1024
|
+
displayTarget?: 'page' | 'section' | 'field';
|
|
1025
|
+
[key: string]: unknown;
|
|
1026
|
+
}>;
|
|
1027
|
+
/**
|
|
1028
|
+
* A reference to a specific data format to use.
|
|
1029
|
+
* If none is specified, will fallback to that of the base type
|
|
1030
|
+
*/
|
|
1031
|
+
format?: {
|
|
1032
|
+
/** The name of the formatter (and de-formatter) to use */
|
|
1033
|
+
type: string;
|
|
1034
|
+
[key: string]: unknown;
|
|
1035
|
+
};
|
|
1036
|
+
/**
|
|
1037
|
+
* A default value for this property.
|
|
1038
|
+
* Any reads for this property will result in this default value being written to the model.
|
|
1039
|
+
*/
|
|
1040
|
+
default?: T;
|
|
1041
|
+
[key: string]: unknown;
|
|
1042
|
+
};
|
|
1043
|
+
};
|
|
1044
|
+
};
|
|
1045
|
+
/** Any initial data that the flow can use */
|
|
1046
|
+
data?: Record<any, unknown>;
|
|
1047
|
+
/** A state machine to drive a user through the experience */
|
|
1048
|
+
navigation: {
|
|
1049
|
+
/** The name of the Flow to begin on */
|
|
1050
|
+
BEGIN: string;
|
|
1051
|
+
} & Record<string, string | {
|
|
1052
|
+
/** The first state to kick off the state machine */
|
|
1053
|
+
startState: string;
|
|
1054
|
+
/** An optional expression to run when this Flow starts */
|
|
1055
|
+
onStart?: Expression | {
|
|
1056
|
+
/** The expression to run */
|
|
1057
|
+
exp?: Expression;
|
|
1058
|
+
};
|
|
1059
|
+
/** An optional expression to run when this Flow ends */
|
|
1060
|
+
onEnd?: Expression | {
|
|
1061
|
+
/** The expression to run */
|
|
1062
|
+
exp?: Expression;
|
|
1063
|
+
};
|
|
1064
|
+
[key: string]: undefined | string | Expression | {
|
|
1065
|
+
/** The expression to run */
|
|
1066
|
+
exp?: Expression;
|
|
1067
|
+
} | ({
|
|
1068
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
1069
|
+
_comment?: string;
|
|
1070
|
+
/** A property to determine the type of state this is */
|
|
1071
|
+
state_type: 'VIEW';
|
|
1072
|
+
/** An optional expression to run when this view renders */
|
|
1073
|
+
onStart?: Expression | {
|
|
1074
|
+
/** The expression to run */
|
|
1075
|
+
exp?: Expression;
|
|
1076
|
+
};
|
|
1077
|
+
/** An optional expression to run before view transition */
|
|
1078
|
+
onEnd?: Expression | {
|
|
1079
|
+
/** The expression to run */
|
|
1080
|
+
exp?: Expression;
|
|
1081
|
+
};
|
|
1082
|
+
exp?: never;
|
|
1083
|
+
/** A mapping of transition-name to FlowState name */
|
|
1084
|
+
transitions: Record<string, string>;
|
|
1085
|
+
/** An id corresponding to a view from the 'views' array */
|
|
1086
|
+
ref: string;
|
|
1087
|
+
/** View meta-properties */
|
|
1088
|
+
attributes?: {
|
|
1089
|
+
[key: string]: any;
|
|
1090
|
+
};
|
|
1091
|
+
} | {
|
|
1092
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
1093
|
+
_comment?: string;
|
|
1094
|
+
/** A property to determine the type of state this is */
|
|
1095
|
+
state_type: 'END';
|
|
1096
|
+
/** An optional expression to run when this view renders */
|
|
1097
|
+
onStart?: Expression | {
|
|
1098
|
+
/** The expression to run */
|
|
1099
|
+
exp?: Expression;
|
|
1100
|
+
};
|
|
1101
|
+
/** An optional expression to run before view transition */
|
|
1102
|
+
onEnd?: Expression | {
|
|
1103
|
+
/** The expression to run */
|
|
1104
|
+
exp?: Expression;
|
|
1105
|
+
};
|
|
1106
|
+
exp?: never;
|
|
1107
|
+
/**
|
|
1108
|
+
* A description of _how_ the flow ended.
|
|
1109
|
+
* If this is a flow started from another flow, the outcome determines the flow transition
|
|
1110
|
+
*/
|
|
1111
|
+
outcome: string;
|
|
1112
|
+
} | {
|
|
1113
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
1114
|
+
_comment?: string;
|
|
1115
|
+
/** A property to determine the type of state this is */
|
|
1116
|
+
state_type: 'FLOW';
|
|
1117
|
+
/** An optional expression to run when this view renders */
|
|
1118
|
+
onStart?: Expression | {
|
|
1119
|
+
/** The expression to run */
|
|
1120
|
+
exp?: Expression;
|
|
1121
|
+
};
|
|
1122
|
+
/** An optional expression to run before view transition */
|
|
1123
|
+
onEnd?: Expression | {
|
|
1124
|
+
/** The expression to run */
|
|
1125
|
+
exp?: Expression;
|
|
1126
|
+
};
|
|
1127
|
+
exp?: never;
|
|
1128
|
+
/** A mapping of transition-name to FlowState name */
|
|
1129
|
+
transitions: Record<string, string>;
|
|
1130
|
+
/** A reference to a FLOW id state to run */
|
|
1131
|
+
ref: string;
|
|
1132
|
+
} | {
|
|
1133
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
1134
|
+
_comment?: string;
|
|
1135
|
+
/** A property to determine the type of state this is */
|
|
1136
|
+
state_type: 'ACTION';
|
|
1137
|
+
/** An optional expression to run when this view renders */
|
|
1138
|
+
onStart?: Expression | {
|
|
1139
|
+
/** The expression to run */
|
|
1140
|
+
exp?: Expression;
|
|
1141
|
+
};
|
|
1142
|
+
/** An optional expression to run before view transition */
|
|
1143
|
+
onEnd?: Expression | {
|
|
1144
|
+
/** The expression to run */
|
|
1145
|
+
exp?: Expression;
|
|
1146
|
+
};
|
|
1147
|
+
/**
|
|
1148
|
+
* An expression to execute.
|
|
1149
|
+
* The return value determines the transition to take
|
|
1150
|
+
*/
|
|
1151
|
+
exp: Expression;
|
|
1152
|
+
/** A mapping of transition-name to FlowState name */
|
|
1153
|
+
transitions: Record<string, string>;
|
|
1154
|
+
} | {
|
|
1155
|
+
/** Add comments that will not be processing, but are useful for code explanation */
|
|
1156
|
+
_comment?: string;
|
|
1157
|
+
/** A property to determine the type of state this is */
|
|
1158
|
+
state_type: 'EXTERNAL';
|
|
1159
|
+
/** An optional expression to run when this view renders */
|
|
1160
|
+
onStart?: Expression | {
|
|
1161
|
+
/** The expression to run */
|
|
1162
|
+
exp?: Expression;
|
|
1163
|
+
};
|
|
1164
|
+
/** An optional expression to run before view transition */
|
|
1165
|
+
onEnd?: Expression | {
|
|
1166
|
+
/** The expression to run */
|
|
1167
|
+
exp?: Expression;
|
|
1168
|
+
};
|
|
1169
|
+
exp?: never;
|
|
1170
|
+
/** A mapping of transition-name to FlowState name */
|
|
1171
|
+
transitions: Record<string, string>;
|
|
1172
|
+
/** A reference for this external state */
|
|
1173
|
+
ref: string;
|
|
1174
|
+
});
|
|
1175
|
+
}>;
|
|
1176
|
+
[key: string]: unknown;
|
|
1177
|
+
}
|
|
1178
|
+
/**
|
|
1179
|
+
* This is the most generic way of gathering data. The input is bound to a data model using the 'binding' property.
|
|
1180
|
+
* Players can get field type information from the 'schema' definition, thus to decide the input controls for visual rendering.
|
|
1181
|
+
*/
|
|
1182
|
+
export interface InputAsset<AnyTextAsset extends Asset = Asset> extends Asset<'input'> {
|
|
1183
|
+
/** Asset container for a field label. */
|
|
1184
|
+
label?: AssetWrapper<AnyTextAsset>;
|
|
1185
|
+
/** Asset container for a note. */
|
|
1186
|
+
note?: AssetWrapper<AnyTextAsset>;
|
|
1187
|
+
/** The location in the data-model to store the data */
|
|
1188
|
+
binding: Binding;
|
|
1189
|
+
/** Optional additional data */
|
|
1190
|
+
metaData?: {
|
|
1191
|
+
/** Additional data to beacon when this input changes */
|
|
1192
|
+
beacon?: string | Record<string, any>;
|
|
1193
|
+
};
|
|
1194
|
+
}
|
|
1195
|
+
export interface TextAsset extends Asset<'text'> {
|
|
1196
|
+
/** The text to display */
|
|
1197
|
+
value: string;
|
|
1198
|
+
/** Any modifiers on the text */
|
|
1199
|
+
modifiers?: Array<{
|
|
1200
|
+
/** The modifier type */
|
|
1201
|
+
type: string;
|
|
1202
|
+
/** Modifiers can be named when used in strings */
|
|
1203
|
+
name?: string;
|
|
1204
|
+
[key: string]: unknown;
|
|
1205
|
+
} | {
|
|
1206
|
+
/** The link type denotes this as a link */
|
|
1207
|
+
type: 'link';
|
|
1208
|
+
/** An optional expression to run before the link is opened */
|
|
1209
|
+
exp?: Expression;
|
|
1210
|
+
/** metaData about the link's target */
|
|
1211
|
+
metaData: {
|
|
1212
|
+
/** The location of the link to load */
|
|
1213
|
+
ref: string;
|
|
1214
|
+
/** Used to indicate an application specific resolver to use */
|
|
1215
|
+
'mime-type'?: string;
|
|
1216
|
+
};
|
|
1217
|
+
}>;
|
|
1218
|
+
}
|
|
1219
|
+
/**
|
|
1220
|
+
* User actions can be represented in several places.
|
|
1221
|
+
* Each view typically has one or more actions that allow the user to navigate away from that view.
|
|
1222
|
+
* In addition, several asset types can have actions that apply to that asset only.
|
|
1223
|
+
*/
|
|
1224
|
+
export interface ActionAsset<AnyTextAsset extends Asset = Asset> extends Asset<'action'> {
|
|
1225
|
+
/** The transition value of the action in the state machine */
|
|
1226
|
+
value?: string;
|
|
1227
|
+
/** A text-like asset for the action's label */
|
|
1228
|
+
label?: AssetWrapper<AnyTextAsset>;
|
|
1229
|
+
/** An optional expression to execute before transitioning */
|
|
1230
|
+
exp?: Expression;
|
|
1231
|
+
/** An optional string that describes the action for screen-readers */
|
|
1232
|
+
accessibility?: string;
|
|
1233
|
+
/** Additional optional data to assist with the action interactions on the page */
|
|
1234
|
+
metaData?: {
|
|
1235
|
+
/** Additional data to beacon */
|
|
1236
|
+
beacon?: string | Record<string, any>;
|
|
1237
|
+
/** Force transition to the next view without checking for validation */
|
|
1238
|
+
skipValidation?: boolean;
|
|
1239
|
+
};
|
|
1240
|
+
}
|
|
1241
|
+
export interface InfoAsset extends Asset<'info'> {
|
|
1242
|
+
/** The string value to show */
|
|
1243
|
+
title?: AssetWrapper;
|
|
1244
|
+
/** subtitle */
|
|
1245
|
+
subTitle?: AssetWrapper;
|
|
1246
|
+
/** Primary place for info */
|
|
1247
|
+
primaryInfo?: AssetWrapper;
|
|
1248
|
+
/** List of actions to show at the bottom of the page */
|
|
1249
|
+
actions?: Array<AssetWrapper>;
|
|
1250
|
+
}
|
|
1251
|
+
export interface CollectionAsset extends Asset<'collection'> {
|
|
1252
|
+
/** An optional label to title the collection */
|
|
1253
|
+
label?: AssetWrapper;
|
|
1254
|
+
/** The string value to show */
|
|
1255
|
+
values?: Array<AssetWrapper>;
|
|
1256
|
+
}"
|
|
1257
|
+
`;
|
|
1258
|
+
|
|
1259
|
+
exports[`Object Recall > Optimized 1`] = `
|
|
1260
|
+
{
|
|
1261
|
+
"additionalProperties": {
|
|
1262
|
+
"type": "unknown",
|
|
1263
|
+
},
|
|
1264
|
+
"description": "This is the most generic way of gathering data. The input is bound to a data model using the 'binding' property.
|
|
1265
|
+
Players can get field type information from the 'schema' definition, thus to decide the input controls for visual rendering.",
|
|
1266
|
+
"extends": undefined,
|
|
1267
|
+
"genericTokens": [
|
|
1268
|
+
{
|
|
1269
|
+
"constraints": {
|
|
1270
|
+
"additionalProperties": {
|
|
1271
|
+
"type": "unknown",
|
|
1272
|
+
},
|
|
1273
|
+
"description": "An asset is the smallest unit of user interaction in a player view",
|
|
1274
|
+
"extends": undefined,
|
|
1275
|
+
"genericTokens": [
|
|
1276
|
+
{
|
|
1277
|
+
"constraints": {
|
|
1278
|
+
"type": "string",
|
|
1279
|
+
},
|
|
1280
|
+
"default": {
|
|
1281
|
+
"type": "string",
|
|
1282
|
+
},
|
|
1283
|
+
"symbol": "T",
|
|
1284
|
+
},
|
|
1285
|
+
],
|
|
1286
|
+
"name": "Asset",
|
|
1287
|
+
"properties": {
|
|
1288
|
+
"id": {
|
|
1289
|
+
"node": {
|
|
1290
|
+
"description": "Each asset requires a unique id per view",
|
|
1291
|
+
"title": "Asset.id",
|
|
1292
|
+
"type": "string",
|
|
1293
|
+
},
|
|
1294
|
+
"required": true,
|
|
1295
|
+
},
|
|
1296
|
+
"type": {
|
|
1297
|
+
"node": {
|
|
1298
|
+
"description": "The asset type determines the semantics of how a user interacts with a page",
|
|
1299
|
+
"title": "Asset.type",
|
|
1300
|
+
"type": "string",
|
|
1301
|
+
},
|
|
1302
|
+
"required": true,
|
|
1303
|
+
},
|
|
1304
|
+
},
|
|
1305
|
+
"source": "src/index.ts",
|
|
1306
|
+
"title": "Asset",
|
|
1307
|
+
"type": "object",
|
|
1308
|
+
},
|
|
1309
|
+
"default": {
|
|
1310
|
+
"additionalProperties": {
|
|
1311
|
+
"type": "unknown",
|
|
1312
|
+
},
|
|
1313
|
+
"description": "An asset is the smallest unit of user interaction in a player view",
|
|
1314
|
+
"extends": undefined,
|
|
1315
|
+
"genericTokens": [
|
|
1316
|
+
{
|
|
1317
|
+
"constraints": {
|
|
1318
|
+
"type": "string",
|
|
1319
|
+
},
|
|
1320
|
+
"default": {
|
|
1321
|
+
"type": "string",
|
|
1322
|
+
},
|
|
1323
|
+
"symbol": "T",
|
|
1324
|
+
},
|
|
1325
|
+
],
|
|
1326
|
+
"name": "Asset",
|
|
1327
|
+
"properties": {
|
|
1328
|
+
"id": {
|
|
1329
|
+
"node": {
|
|
1330
|
+
"description": "Each asset requires a unique id per view",
|
|
1331
|
+
"title": "Asset.id",
|
|
1332
|
+
"type": "string",
|
|
1333
|
+
},
|
|
1334
|
+
"required": true,
|
|
1335
|
+
},
|
|
1336
|
+
"type": {
|
|
1337
|
+
"node": {
|
|
1338
|
+
"description": "The asset type determines the semantics of how a user interacts with a page",
|
|
1339
|
+
"title": "Asset.type",
|
|
1340
|
+
"type": "string",
|
|
1341
|
+
},
|
|
1342
|
+
"required": true,
|
|
1343
|
+
},
|
|
1344
|
+
},
|
|
1345
|
+
"source": "src/index.ts",
|
|
1346
|
+
"title": "Asset",
|
|
1347
|
+
"type": "object",
|
|
1348
|
+
},
|
|
1349
|
+
"symbol": "AnyTextAsset",
|
|
1350
|
+
},
|
|
1351
|
+
],
|
|
1352
|
+
"name": "InputAsset",
|
|
1353
|
+
"properties": {
|
|
1354
|
+
"binding": {
|
|
1355
|
+
"node": {
|
|
1356
|
+
"description": "Bindings describe locations in the data model.",
|
|
1357
|
+
"name": "Binding",
|
|
1358
|
+
"source": "src/index.ts",
|
|
1359
|
+
"title": "Binding",
|
|
1360
|
+
"type": "string",
|
|
1361
|
+
},
|
|
1362
|
+
"required": true,
|
|
1363
|
+
},
|
|
1364
|
+
"id": {
|
|
1365
|
+
"node": {
|
|
1366
|
+
"description": "Each asset requires a unique id per view",
|
|
1367
|
+
"title": "Asset.id",
|
|
1368
|
+
"type": "string",
|
|
1369
|
+
},
|
|
1370
|
+
"required": true,
|
|
1371
|
+
},
|
|
1372
|
+
"label": {
|
|
1373
|
+
"node": {
|
|
1374
|
+
"additionalProperties": {
|
|
1375
|
+
"type": "unknown",
|
|
1376
|
+
},
|
|
1377
|
+
"description": "An object that contains an asset",
|
|
1378
|
+
"extends": undefined,
|
|
1379
|
+
"genericTokens": [],
|
|
1380
|
+
"name": "AssetWrapper",
|
|
1381
|
+
"properties": {
|
|
1382
|
+
"asset": {
|
|
1383
|
+
"node": {
|
|
1384
|
+
"additionalProperties": {
|
|
1385
|
+
"type": "unknown",
|
|
1386
|
+
},
|
|
1387
|
+
"description": "An asset is the smallest unit of user interaction in a player view",
|
|
1388
|
+
"extends": undefined,
|
|
1389
|
+
"genericTokens": [
|
|
1390
|
+
{
|
|
1391
|
+
"constraints": {
|
|
1392
|
+
"type": "string",
|
|
1393
|
+
},
|
|
1394
|
+
"default": {
|
|
1395
|
+
"type": "string",
|
|
1396
|
+
},
|
|
1397
|
+
"symbol": "T",
|
|
1398
|
+
},
|
|
1399
|
+
],
|
|
1400
|
+
"name": "Asset",
|
|
1401
|
+
"properties": {
|
|
1402
|
+
"id": {
|
|
1403
|
+
"node": {
|
|
1404
|
+
"description": "Each asset requires a unique id per view",
|
|
1405
|
+
"title": "Asset.id",
|
|
1406
|
+
"type": "string",
|
|
1407
|
+
},
|
|
1408
|
+
"required": true,
|
|
1409
|
+
},
|
|
1410
|
+
"type": {
|
|
1411
|
+
"node": {
|
|
1412
|
+
"description": "The asset type determines the semantics of how a user interacts with a page",
|
|
1413
|
+
"title": "Asset.type",
|
|
1414
|
+
"type": "string",
|
|
1415
|
+
},
|
|
1416
|
+
"required": true,
|
|
1417
|
+
},
|
|
1418
|
+
},
|
|
1419
|
+
"source": "src/index.ts",
|
|
1420
|
+
"title": "Asset",
|
|
1421
|
+
"type": "object",
|
|
1422
|
+
},
|
|
1423
|
+
"required": true,
|
|
1424
|
+
},
|
|
1425
|
+
},
|
|
1426
|
+
"source": "src/index.ts",
|
|
1427
|
+
"title": "AssetWrapper",
|
|
1428
|
+
"type": "object",
|
|
1429
|
+
},
|
|
1430
|
+
"required": false,
|
|
1431
|
+
},
|
|
1432
|
+
"metaData": {
|
|
1433
|
+
"node": {
|
|
1434
|
+
"additionalProperties": false,
|
|
1435
|
+
"description": "Optional additional data",
|
|
1436
|
+
"extends": undefined,
|
|
1437
|
+
"properties": {
|
|
1438
|
+
"beacon": {
|
|
1439
|
+
"node": {
|
|
1440
|
+
"description": "Additional data to beacon when this input changes",
|
|
1441
|
+
"name": "BeaconDataType",
|
|
1442
|
+
"or": [
|
|
1443
|
+
{
|
|
1444
|
+
"title": "BeaconDataType",
|
|
1445
|
+
"type": "string",
|
|
1446
|
+
},
|
|
1447
|
+
{
|
|
1448
|
+
"keyType": {
|
|
1449
|
+
"type": "string",
|
|
1450
|
+
},
|
|
1451
|
+
"title": "BeaconDataType",
|
|
1452
|
+
"type": "record",
|
|
1453
|
+
"valueType": {
|
|
1454
|
+
"type": "any",
|
|
1455
|
+
},
|
|
1456
|
+
},
|
|
1457
|
+
],
|
|
1458
|
+
"source": "/private/var/tmp/_bazel_kreddy8/6fc13ccb395252816f0c23d8394e8532/sandbox/darwin-sandbox/134/execroot/player/node_modules/@player-ui/beacon-plugin/dist/index.d.ts",
|
|
1459
|
+
"title": "InputAsset.metaData.beacon",
|
|
1460
|
+
"type": "or",
|
|
1461
|
+
},
|
|
1462
|
+
"required": false,
|
|
1463
|
+
},
|
|
1464
|
+
},
|
|
1465
|
+
"title": "InputAsset.metaData",
|
|
1466
|
+
"type": "object",
|
|
1467
|
+
},
|
|
1468
|
+
"required": false,
|
|
1469
|
+
},
|
|
1470
|
+
"note": {
|
|
1471
|
+
"node": {
|
|
1472
|
+
"additionalProperties": {
|
|
1473
|
+
"type": "unknown",
|
|
1474
|
+
},
|
|
1475
|
+
"description": "An object that contains an asset",
|
|
1476
|
+
"extends": undefined,
|
|
1477
|
+
"genericTokens": [],
|
|
1478
|
+
"name": "AssetWrapper",
|
|
1479
|
+
"properties": {
|
|
1480
|
+
"asset": {
|
|
1481
|
+
"node": {
|
|
1482
|
+
"additionalProperties": {
|
|
1483
|
+
"type": "unknown",
|
|
1484
|
+
},
|
|
1485
|
+
"description": "An asset is the smallest unit of user interaction in a player view",
|
|
1486
|
+
"extends": undefined,
|
|
1487
|
+
"genericTokens": [
|
|
1488
|
+
{
|
|
1489
|
+
"constraints": {
|
|
1490
|
+
"type": "string",
|
|
1491
|
+
},
|
|
1492
|
+
"default": {
|
|
1493
|
+
"type": "string",
|
|
1494
|
+
},
|
|
1495
|
+
"symbol": "T",
|
|
1496
|
+
},
|
|
1497
|
+
],
|
|
1498
|
+
"name": "Asset",
|
|
1499
|
+
"properties": {
|
|
1500
|
+
"id": {
|
|
1501
|
+
"node": {
|
|
1502
|
+
"description": "Each asset requires a unique id per view",
|
|
1503
|
+
"title": "Asset.id",
|
|
1504
|
+
"type": "string",
|
|
1505
|
+
},
|
|
1506
|
+
"required": true,
|
|
1507
|
+
},
|
|
1508
|
+
"type": {
|
|
1509
|
+
"node": {
|
|
1510
|
+
"description": "The asset type determines the semantics of how a user interacts with a page",
|
|
1511
|
+
"title": "Asset.type",
|
|
1512
|
+
"type": "string",
|
|
1513
|
+
},
|
|
1514
|
+
"required": true,
|
|
1515
|
+
},
|
|
1516
|
+
},
|
|
1517
|
+
"source": "src/index.ts",
|
|
1518
|
+
"title": "Asset",
|
|
1519
|
+
"type": "object",
|
|
1520
|
+
},
|
|
1521
|
+
"required": true,
|
|
1522
|
+
},
|
|
1523
|
+
},
|
|
1524
|
+
"source": "src/index.ts",
|
|
1525
|
+
"title": "AssetWrapper",
|
|
1526
|
+
"type": "object",
|
|
1527
|
+
},
|
|
1528
|
+
"required": false,
|
|
1529
|
+
},
|
|
1530
|
+
"type": {
|
|
1531
|
+
"node": {
|
|
1532
|
+
"const": "input",
|
|
1533
|
+
"description": "The asset type determines the semantics of how a user interacts with a page",
|
|
1534
|
+
"title": "Asset.type",
|
|
1535
|
+
"type": "string",
|
|
1536
|
+
},
|
|
1537
|
+
"required": true,
|
|
1538
|
+
},
|
|
1539
|
+
},
|
|
1540
|
+
"source": "src/index.ts",
|
|
1541
|
+
"title": "Asset",
|
|
1542
|
+
"type": "object",
|
|
1543
|
+
}
|
|
1544
|
+
`;
|
|
1545
|
+
|
|
1546
|
+
exports[`Object Recall > Processed 1`] = `
|
|
1547
|
+
{
|
|
1548
|
+
"additionalProperties": {
|
|
1549
|
+
"type": "unknown",
|
|
1550
|
+
},
|
|
1551
|
+
"description": "This is the most generic way of gathering data. The input is bound to a data model using the 'binding' property.
|
|
1552
|
+
Players can get field type information from the 'schema' definition, thus to decide the input controls for visual rendering.",
|
|
1553
|
+
"extends": undefined,
|
|
1554
|
+
"genericTokens": [
|
|
1555
|
+
{
|
|
1556
|
+
"constraints": {
|
|
1557
|
+
"ref": "Asset",
|
|
1558
|
+
"type": "ref",
|
|
1559
|
+
},
|
|
1560
|
+
"default": {
|
|
1561
|
+
"ref": "Asset",
|
|
1562
|
+
"type": "ref",
|
|
1563
|
+
},
|
|
1564
|
+
"symbol": "AnyTextAsset",
|
|
1565
|
+
},
|
|
1566
|
+
],
|
|
1567
|
+
"name": "InputAsset",
|
|
1568
|
+
"properties": {
|
|
1569
|
+
"binding": {
|
|
1570
|
+
"node": {
|
|
1571
|
+
"description": "The location in the data-model to store the data",
|
|
1572
|
+
"ref": "Binding",
|
|
1573
|
+
"title": "InputAsset.binding",
|
|
1574
|
+
"type": "ref",
|
|
1575
|
+
},
|
|
1576
|
+
"required": true,
|
|
1577
|
+
},
|
|
1578
|
+
"id": {
|
|
1579
|
+
"node": {
|
|
1580
|
+
"description": "Each asset requires a unique id per view",
|
|
1581
|
+
"title": "Asset.id",
|
|
1582
|
+
"type": "string",
|
|
1583
|
+
},
|
|
1584
|
+
"required": true,
|
|
1585
|
+
},
|
|
1586
|
+
"label": {
|
|
1587
|
+
"node": {
|
|
1588
|
+
"description": "Asset container for a field label.",
|
|
1589
|
+
"genericArguments": [
|
|
1590
|
+
{
|
|
1591
|
+
"ref": "Asset",
|
|
1592
|
+
"type": "ref",
|
|
1593
|
+
},
|
|
1594
|
+
],
|
|
1595
|
+
"ref": "AssetWrapper<AnyTextAsset>",
|
|
1596
|
+
"title": "InputAsset.label",
|
|
1597
|
+
"type": "ref",
|
|
1598
|
+
},
|
|
1599
|
+
"required": false,
|
|
1600
|
+
},
|
|
1601
|
+
"metaData": {
|
|
1602
|
+
"node": {
|
|
1603
|
+
"additionalProperties": false,
|
|
1604
|
+
"description": "Optional additional data",
|
|
1605
|
+
"extends": undefined,
|
|
1606
|
+
"properties": {
|
|
1607
|
+
"beacon": {
|
|
1608
|
+
"node": {
|
|
1609
|
+
"description": "Additional data to beacon when this input changes",
|
|
1610
|
+
"name": "BeaconDataType",
|
|
1611
|
+
"or": [
|
|
1612
|
+
{
|
|
1613
|
+
"title": "BeaconDataType",
|
|
1614
|
+
"type": "string",
|
|
1615
|
+
},
|
|
1616
|
+
{
|
|
1617
|
+
"keyType": {
|
|
1618
|
+
"type": "string",
|
|
1619
|
+
},
|
|
1620
|
+
"title": "BeaconDataType",
|
|
1621
|
+
"type": "record",
|
|
1622
|
+
"valueType": {
|
|
1623
|
+
"type": "any",
|
|
1624
|
+
},
|
|
1625
|
+
},
|
|
1626
|
+
],
|
|
1627
|
+
"source": "/private/var/tmp/_bazel_kreddy8/6fc13ccb395252816f0c23d8394e8532/sandbox/darwin-sandbox/134/execroot/player/node_modules/@player-ui/beacon-plugin/dist/index.d.ts",
|
|
1628
|
+
"title": "InputAsset.metaData.beacon",
|
|
1629
|
+
"type": "or",
|
|
1630
|
+
},
|
|
1631
|
+
"required": false,
|
|
1632
|
+
},
|
|
1633
|
+
},
|
|
1634
|
+
"title": "InputAsset.metaData",
|
|
1635
|
+
"type": "object",
|
|
1636
|
+
},
|
|
1637
|
+
"required": false,
|
|
1638
|
+
},
|
|
1639
|
+
"note": {
|
|
1640
|
+
"node": {
|
|
1641
|
+
"description": "Asset container for a note.",
|
|
1642
|
+
"genericArguments": [
|
|
1643
|
+
{
|
|
1644
|
+
"ref": "Asset",
|
|
1645
|
+
"type": "ref",
|
|
1646
|
+
},
|
|
1647
|
+
],
|
|
1648
|
+
"ref": "AssetWrapper<AnyTextAsset>",
|
|
1649
|
+
"title": "InputAsset.note",
|
|
1650
|
+
"type": "ref",
|
|
1651
|
+
},
|
|
1652
|
+
"required": false,
|
|
1653
|
+
},
|
|
1654
|
+
"type": {
|
|
1655
|
+
"node": {
|
|
1656
|
+
"const": "input",
|
|
1657
|
+
"description": "The asset type determines the semantics of how a user interacts with a page",
|
|
1658
|
+
"title": "Asset.type",
|
|
1659
|
+
"type": "string",
|
|
1660
|
+
},
|
|
1661
|
+
"required": true,
|
|
1662
|
+
},
|
|
1663
|
+
},
|
|
1664
|
+
"source": "src/index.ts",
|
|
1665
|
+
"title": "Asset",
|
|
1666
|
+
"type": "object",
|
|
1667
|
+
}
|
|
1668
|
+
`;
|
|
1669
|
+
|
|
1670
|
+
exports[`Object Recall > Raw 1`] = `
|
|
1671
|
+
{
|
|
1672
|
+
"additionalProperties": false,
|
|
1673
|
+
"description": "This is the most generic way of gathering data. The input is bound to a data model using the 'binding' property.
|
|
1674
|
+
Players can get field type information from the 'schema' definition, thus to decide the input controls for visual rendering.",
|
|
1675
|
+
"extends": {
|
|
1676
|
+
"genericArguments": [
|
|
1677
|
+
{
|
|
1678
|
+
"const": "input",
|
|
1679
|
+
"type": "string",
|
|
1680
|
+
},
|
|
1681
|
+
],
|
|
1682
|
+
"ref": "Asset<'input'>",
|
|
1683
|
+
"type": "ref",
|
|
1684
|
+
},
|
|
1685
|
+
"genericTokens": [
|
|
1686
|
+
{
|
|
1687
|
+
"constraints": {
|
|
1688
|
+
"ref": "Asset",
|
|
1689
|
+
"type": "ref",
|
|
1690
|
+
},
|
|
1691
|
+
"default": {
|
|
1692
|
+
"ref": "Asset",
|
|
1693
|
+
"type": "ref",
|
|
1694
|
+
},
|
|
1695
|
+
"symbol": "AnyTextAsset",
|
|
1696
|
+
},
|
|
1697
|
+
],
|
|
1698
|
+
"name": "InputAsset",
|
|
1699
|
+
"properties": {
|
|
1700
|
+
"binding": {
|
|
1701
|
+
"node": {
|
|
1702
|
+
"description": "The location in the data-model to store the data",
|
|
1703
|
+
"ref": "Binding",
|
|
1704
|
+
"title": "InputAsset.binding",
|
|
1705
|
+
"type": "ref",
|
|
1706
|
+
},
|
|
1707
|
+
"required": true,
|
|
1708
|
+
},
|
|
1709
|
+
"label": {
|
|
1710
|
+
"node": {
|
|
1711
|
+
"description": "Asset container for a field label.",
|
|
1712
|
+
"genericArguments": [
|
|
1713
|
+
{
|
|
1714
|
+
"ref": "AnyTextAsset",
|
|
1715
|
+
"type": "ref",
|
|
1716
|
+
},
|
|
1717
|
+
],
|
|
1718
|
+
"ref": "AssetWrapper<AnyTextAsset>",
|
|
1719
|
+
"title": "InputAsset.label",
|
|
1720
|
+
"type": "ref",
|
|
1721
|
+
},
|
|
1722
|
+
"required": false,
|
|
1723
|
+
},
|
|
1724
|
+
"metaData": {
|
|
1725
|
+
"node": {
|
|
1726
|
+
"additionalProperties": false,
|
|
1727
|
+
"description": "Optional additional data",
|
|
1728
|
+
"properties": {
|
|
1729
|
+
"beacon": {
|
|
1730
|
+
"node": {
|
|
1731
|
+
"description": "Additional data to beacon when this input changes",
|
|
1732
|
+
"name": "BeaconDataType",
|
|
1733
|
+
"or": [
|
|
1734
|
+
{
|
|
1735
|
+
"title": "BeaconDataType",
|
|
1736
|
+
"type": "string",
|
|
1737
|
+
},
|
|
1738
|
+
{
|
|
1739
|
+
"keyType": {
|
|
1740
|
+
"type": "string",
|
|
1741
|
+
},
|
|
1742
|
+
"title": "BeaconDataType",
|
|
1743
|
+
"type": "record",
|
|
1744
|
+
"valueType": {
|
|
1745
|
+
"type": "any",
|
|
1746
|
+
},
|
|
1747
|
+
},
|
|
1748
|
+
],
|
|
1749
|
+
"source": "/private/var/tmp/_bazel_kreddy8/6fc13ccb395252816f0c23d8394e8532/sandbox/darwin-sandbox/134/execroot/player/node_modules/@player-ui/beacon-plugin/dist/index.d.ts",
|
|
1750
|
+
"title": "InputAsset.metaData.beacon",
|
|
1751
|
+
"type": "or",
|
|
1752
|
+
},
|
|
1753
|
+
"required": false,
|
|
1754
|
+
},
|
|
1755
|
+
},
|
|
1756
|
+
"title": "InputAsset.metaData",
|
|
1757
|
+
"type": "object",
|
|
1758
|
+
},
|
|
1759
|
+
"required": false,
|
|
1760
|
+
},
|
|
1761
|
+
"note": {
|
|
1762
|
+
"node": {
|
|
1763
|
+
"description": "Asset container for a note.",
|
|
1764
|
+
"genericArguments": [
|
|
1765
|
+
{
|
|
1766
|
+
"ref": "AnyTextAsset",
|
|
1767
|
+
"type": "ref",
|
|
1768
|
+
},
|
|
1769
|
+
],
|
|
1770
|
+
"ref": "AssetWrapper<AnyTextAsset>",
|
|
1771
|
+
"title": "InputAsset.note",
|
|
1772
|
+
"type": "ref",
|
|
1773
|
+
},
|
|
1774
|
+
"required": false,
|
|
1775
|
+
},
|
|
1776
|
+
},
|
|
1777
|
+
"source": "/private/var/tmp/_bazel_kreddy8/6fc13ccb395252816f0c23d8394e8532/sandbox/darwin-sandbox/134/execroot/player/node_modules/@player-ui/reference-assets-plugin/dist/index.d.ts",
|
|
1778
|
+
"title": "InputAsset",
|
|
1779
|
+
"type": "object",
|
|
1780
|
+
}
|
|
1781
|
+
`;
|
|
1782
|
+
|
|
1783
|
+
exports[`Validation > Basic Validation By Name 1`] = `
|
|
1784
|
+
[
|
|
1785
|
+
{
|
|
1786
|
+
"expected": "string",
|
|
1787
|
+
"message": "Expected type "string" but got "number"",
|
|
1788
|
+
"node": {
|
|
1789
|
+
"children": [
|
|
1790
|
+
{
|
|
1791
|
+
"length": 4,
|
|
1792
|
+
"offset": 13,
|
|
1793
|
+
"parent": [Circular],
|
|
1794
|
+
"type": "string",
|
|
1795
|
+
"value": "id",
|
|
1796
|
+
},
|
|
1797
|
+
{
|
|
1798
|
+
"length": 1,
|
|
1799
|
+
"offset": 19,
|
|
1800
|
+
"parent": [Circular],
|
|
1801
|
+
"type": "number",
|
|
1802
|
+
"value": 1,
|
|
1803
|
+
},
|
|
1804
|
+
],
|
|
1805
|
+
"colonOffset": 17,
|
|
1806
|
+
"length": 7,
|
|
1807
|
+
"offset": 13,
|
|
1808
|
+
"parent": {
|
|
1809
|
+
"children": [
|
|
1810
|
+
[Circular],
|
|
1811
|
+
{
|
|
1812
|
+
"children": [
|
|
1813
|
+
{
|
|
1814
|
+
"length": 6,
|
|
1815
|
+
"offset": 28,
|
|
1816
|
+
"parent": [Circular],
|
|
1817
|
+
"type": "string",
|
|
1818
|
+
"value": "type",
|
|
1819
|
+
},
|
|
1820
|
+
{
|
|
1821
|
+
"length": 7,
|
|
1822
|
+
"offset": 36,
|
|
1823
|
+
"parent": [Circular],
|
|
1824
|
+
"type": "string",
|
|
1825
|
+
"value": "input",
|
|
1826
|
+
},
|
|
1827
|
+
],
|
|
1828
|
+
"colonOffset": 34,
|
|
1829
|
+
"length": 15,
|
|
1830
|
+
"offset": 28,
|
|
1831
|
+
"parent": [Circular],
|
|
1832
|
+
"type": "property",
|
|
1833
|
+
},
|
|
1834
|
+
{
|
|
1835
|
+
"children": [
|
|
1836
|
+
{
|
|
1837
|
+
"length": 9,
|
|
1838
|
+
"offset": 51,
|
|
1839
|
+
"parent": [Circular],
|
|
1840
|
+
"type": "string",
|
|
1841
|
+
"value": "binding",
|
|
1842
|
+
},
|
|
1843
|
+
{
|
|
1844
|
+
"length": 11,
|
|
1845
|
+
"offset": 62,
|
|
1846
|
+
"parent": [Circular],
|
|
1847
|
+
"type": "string",
|
|
1848
|
+
"value": "some.data",
|
|
1849
|
+
},
|
|
1850
|
+
],
|
|
1851
|
+
"colonOffset": 60,
|
|
1852
|
+
"length": 22,
|
|
1853
|
+
"offset": 51,
|
|
1854
|
+
"parent": [Circular],
|
|
1855
|
+
"type": "property",
|
|
1856
|
+
},
|
|
1857
|
+
{
|
|
1858
|
+
"children": [
|
|
1859
|
+
{
|
|
1860
|
+
"length": 7,
|
|
1861
|
+
"offset": 81,
|
|
1862
|
+
"parent": [Circular],
|
|
1863
|
+
"type": "string",
|
|
1864
|
+
"value": "label",
|
|
1865
|
+
},
|
|
1866
|
+
{
|
|
1867
|
+
"children": [
|
|
1868
|
+
{
|
|
1869
|
+
"children": [
|
|
1870
|
+
{
|
|
1871
|
+
"length": 7,
|
|
1872
|
+
"offset": 100,
|
|
1873
|
+
"parent": [Circular],
|
|
1874
|
+
"type": "string",
|
|
1875
|
+
"value": "asset",
|
|
1876
|
+
},
|
|
1877
|
+
{
|
|
1878
|
+
"children": [
|
|
1879
|
+
{
|
|
1880
|
+
"children": [
|
|
1881
|
+
{
|
|
1882
|
+
"length": 7,
|
|
1883
|
+
"offset": 121,
|
|
1884
|
+
"parent": [Circular],
|
|
1885
|
+
"type": "string",
|
|
1886
|
+
"value": "value",
|
|
1887
|
+
},
|
|
1888
|
+
{
|
|
1889
|
+
"length": 17,
|
|
1890
|
+
"offset": 130,
|
|
1891
|
+
"parent": [Circular],
|
|
1892
|
+
"type": "string",
|
|
1893
|
+
"value": "{{input.label}}",
|
|
1894
|
+
},
|
|
1895
|
+
],
|
|
1896
|
+
"colonOffset": 128,
|
|
1897
|
+
"length": 26,
|
|
1898
|
+
"offset": 121,
|
|
1899
|
+
"parent": [Circular],
|
|
1900
|
+
"type": "property",
|
|
1901
|
+
},
|
|
1902
|
+
],
|
|
1903
|
+
"length": 48,
|
|
1904
|
+
"offset": 109,
|
|
1905
|
+
"parent": [Circular],
|
|
1906
|
+
"type": "object",
|
|
1907
|
+
},
|
|
1908
|
+
],
|
|
1909
|
+
"colonOffset": 107,
|
|
1910
|
+
"length": 57,
|
|
1911
|
+
"offset": 100,
|
|
1912
|
+
"parent": [Circular],
|
|
1913
|
+
"type": "property",
|
|
1914
|
+
},
|
|
1915
|
+
],
|
|
1916
|
+
"length": 75,
|
|
1917
|
+
"offset": 90,
|
|
1918
|
+
"parent": [Circular],
|
|
1919
|
+
"type": "object",
|
|
1920
|
+
},
|
|
1921
|
+
],
|
|
1922
|
+
"colonOffset": 88,
|
|
1923
|
+
"length": 84,
|
|
1924
|
+
"offset": 81,
|
|
1925
|
+
"parent": [Circular],
|
|
1926
|
+
"type": "property",
|
|
1927
|
+
},
|
|
1928
|
+
],
|
|
1929
|
+
"length": 165,
|
|
1930
|
+
"offset": 5,
|
|
1931
|
+
"type": "object",
|
|
1932
|
+
},
|
|
1933
|
+
"type": "property",
|
|
1934
|
+
},
|
|
1935
|
+
"severity": 1,
|
|
1936
|
+
"type": "type",
|
|
1937
|
+
},
|
|
1938
|
+
{
|
|
1939
|
+
"message": "Property "id" missing from type "Asset"",
|
|
1940
|
+
"node": {
|
|
1941
|
+
"children": [
|
|
1942
|
+
{
|
|
1943
|
+
"children": [
|
|
1944
|
+
{
|
|
1945
|
+
"length": 7,
|
|
1946
|
+
"offset": 121,
|
|
1947
|
+
"parent": [Circular],
|
|
1948
|
+
"type": "string",
|
|
1949
|
+
"value": "value",
|
|
1950
|
+
},
|
|
1951
|
+
{
|
|
1952
|
+
"length": 17,
|
|
1953
|
+
"offset": 130,
|
|
1954
|
+
"parent": [Circular],
|
|
1955
|
+
"type": "string",
|
|
1956
|
+
"value": "{{input.label}}",
|
|
1957
|
+
},
|
|
1958
|
+
],
|
|
1959
|
+
"colonOffset": 128,
|
|
1960
|
+
"length": 26,
|
|
1961
|
+
"offset": 121,
|
|
1962
|
+
"parent": [Circular],
|
|
1963
|
+
"type": "property",
|
|
1964
|
+
},
|
|
1965
|
+
],
|
|
1966
|
+
"length": 48,
|
|
1967
|
+
"offset": 109,
|
|
1968
|
+
"parent": {
|
|
1969
|
+
"children": [
|
|
1970
|
+
{
|
|
1971
|
+
"length": 7,
|
|
1972
|
+
"offset": 100,
|
|
1973
|
+
"parent": [Circular],
|
|
1974
|
+
"type": "string",
|
|
1975
|
+
"value": "asset",
|
|
1976
|
+
},
|
|
1977
|
+
[Circular],
|
|
1978
|
+
],
|
|
1979
|
+
"colonOffset": 107,
|
|
1980
|
+
"length": 57,
|
|
1981
|
+
"offset": 100,
|
|
1982
|
+
"parent": {
|
|
1983
|
+
"children": [
|
|
1984
|
+
[Circular],
|
|
1985
|
+
],
|
|
1986
|
+
"length": 75,
|
|
1987
|
+
"offset": 90,
|
|
1988
|
+
"parent": {
|
|
1989
|
+
"children": [
|
|
1990
|
+
{
|
|
1991
|
+
"length": 7,
|
|
1992
|
+
"offset": 81,
|
|
1993
|
+
"parent": [Circular],
|
|
1994
|
+
"type": "string",
|
|
1995
|
+
"value": "label",
|
|
1996
|
+
},
|
|
1997
|
+
[Circular],
|
|
1998
|
+
],
|
|
1999
|
+
"colonOffset": 88,
|
|
2000
|
+
"length": 84,
|
|
2001
|
+
"offset": 81,
|
|
2002
|
+
"parent": {
|
|
2003
|
+
"children": [
|
|
2004
|
+
{
|
|
2005
|
+
"children": [
|
|
2006
|
+
{
|
|
2007
|
+
"length": 4,
|
|
2008
|
+
"offset": 13,
|
|
2009
|
+
"parent": [Circular],
|
|
2010
|
+
"type": "string",
|
|
2011
|
+
"value": "id",
|
|
2012
|
+
},
|
|
2013
|
+
{
|
|
2014
|
+
"length": 1,
|
|
2015
|
+
"offset": 19,
|
|
2016
|
+
"parent": [Circular],
|
|
2017
|
+
"type": "number",
|
|
2018
|
+
"value": 1,
|
|
2019
|
+
},
|
|
2020
|
+
],
|
|
2021
|
+
"colonOffset": 17,
|
|
2022
|
+
"length": 7,
|
|
2023
|
+
"offset": 13,
|
|
2024
|
+
"parent": [Circular],
|
|
2025
|
+
"type": "property",
|
|
2026
|
+
},
|
|
2027
|
+
{
|
|
2028
|
+
"children": [
|
|
2029
|
+
{
|
|
2030
|
+
"length": 6,
|
|
2031
|
+
"offset": 28,
|
|
2032
|
+
"parent": [Circular],
|
|
2033
|
+
"type": "string",
|
|
2034
|
+
"value": "type",
|
|
2035
|
+
},
|
|
2036
|
+
{
|
|
2037
|
+
"length": 7,
|
|
2038
|
+
"offset": 36,
|
|
2039
|
+
"parent": [Circular],
|
|
2040
|
+
"type": "string",
|
|
2041
|
+
"value": "input",
|
|
2042
|
+
},
|
|
2043
|
+
],
|
|
2044
|
+
"colonOffset": 34,
|
|
2045
|
+
"length": 15,
|
|
2046
|
+
"offset": 28,
|
|
2047
|
+
"parent": [Circular],
|
|
2048
|
+
"type": "property",
|
|
2049
|
+
},
|
|
2050
|
+
{
|
|
2051
|
+
"children": [
|
|
2052
|
+
{
|
|
2053
|
+
"length": 9,
|
|
2054
|
+
"offset": 51,
|
|
2055
|
+
"parent": [Circular],
|
|
2056
|
+
"type": "string",
|
|
2057
|
+
"value": "binding",
|
|
2058
|
+
},
|
|
2059
|
+
{
|
|
2060
|
+
"length": 11,
|
|
2061
|
+
"offset": 62,
|
|
2062
|
+
"parent": [Circular],
|
|
2063
|
+
"type": "string",
|
|
2064
|
+
"value": "some.data",
|
|
2065
|
+
},
|
|
2066
|
+
],
|
|
2067
|
+
"colonOffset": 60,
|
|
2068
|
+
"length": 22,
|
|
2069
|
+
"offset": 51,
|
|
2070
|
+
"parent": [Circular],
|
|
2071
|
+
"type": "property",
|
|
2072
|
+
},
|
|
2073
|
+
[Circular],
|
|
2074
|
+
],
|
|
2075
|
+
"length": 165,
|
|
2076
|
+
"offset": 5,
|
|
2077
|
+
"type": "object",
|
|
2078
|
+
},
|
|
2079
|
+
"type": "property",
|
|
2080
|
+
},
|
|
2081
|
+
"type": "object",
|
|
2082
|
+
},
|
|
2083
|
+
"type": "property",
|
|
2084
|
+
},
|
|
2085
|
+
"type": "object",
|
|
2086
|
+
},
|
|
2087
|
+
"severity": 1,
|
|
2088
|
+
"type": "missing",
|
|
2089
|
+
},
|
|
2090
|
+
{
|
|
2091
|
+
"message": "Property "type" missing from type "Asset"",
|
|
2092
|
+
"node": {
|
|
2093
|
+
"children": [
|
|
2094
|
+
{
|
|
2095
|
+
"children": [
|
|
2096
|
+
{
|
|
2097
|
+
"length": 7,
|
|
2098
|
+
"offset": 121,
|
|
2099
|
+
"parent": [Circular],
|
|
2100
|
+
"type": "string",
|
|
2101
|
+
"value": "value",
|
|
2102
|
+
},
|
|
2103
|
+
{
|
|
2104
|
+
"length": 17,
|
|
2105
|
+
"offset": 130,
|
|
2106
|
+
"parent": [Circular],
|
|
2107
|
+
"type": "string",
|
|
2108
|
+
"value": "{{input.label}}",
|
|
2109
|
+
},
|
|
2110
|
+
],
|
|
2111
|
+
"colonOffset": 128,
|
|
2112
|
+
"length": 26,
|
|
2113
|
+
"offset": 121,
|
|
2114
|
+
"parent": [Circular],
|
|
2115
|
+
"type": "property",
|
|
2116
|
+
},
|
|
2117
|
+
],
|
|
2118
|
+
"length": 48,
|
|
2119
|
+
"offset": 109,
|
|
2120
|
+
"parent": {
|
|
2121
|
+
"children": [
|
|
2122
|
+
{
|
|
2123
|
+
"length": 7,
|
|
2124
|
+
"offset": 100,
|
|
2125
|
+
"parent": [Circular],
|
|
2126
|
+
"type": "string",
|
|
2127
|
+
"value": "asset",
|
|
2128
|
+
},
|
|
2129
|
+
[Circular],
|
|
2130
|
+
],
|
|
2131
|
+
"colonOffset": 107,
|
|
2132
|
+
"length": 57,
|
|
2133
|
+
"offset": 100,
|
|
2134
|
+
"parent": {
|
|
2135
|
+
"children": [
|
|
2136
|
+
[Circular],
|
|
2137
|
+
],
|
|
2138
|
+
"length": 75,
|
|
2139
|
+
"offset": 90,
|
|
2140
|
+
"parent": {
|
|
2141
|
+
"children": [
|
|
2142
|
+
{
|
|
2143
|
+
"length": 7,
|
|
2144
|
+
"offset": 81,
|
|
2145
|
+
"parent": [Circular],
|
|
2146
|
+
"type": "string",
|
|
2147
|
+
"value": "label",
|
|
2148
|
+
},
|
|
2149
|
+
[Circular],
|
|
2150
|
+
],
|
|
2151
|
+
"colonOffset": 88,
|
|
2152
|
+
"length": 84,
|
|
2153
|
+
"offset": 81,
|
|
2154
|
+
"parent": {
|
|
2155
|
+
"children": [
|
|
2156
|
+
{
|
|
2157
|
+
"children": [
|
|
2158
|
+
{
|
|
2159
|
+
"length": 4,
|
|
2160
|
+
"offset": 13,
|
|
2161
|
+
"parent": [Circular],
|
|
2162
|
+
"type": "string",
|
|
2163
|
+
"value": "id",
|
|
2164
|
+
},
|
|
2165
|
+
{
|
|
2166
|
+
"length": 1,
|
|
2167
|
+
"offset": 19,
|
|
2168
|
+
"parent": [Circular],
|
|
2169
|
+
"type": "number",
|
|
2170
|
+
"value": 1,
|
|
2171
|
+
},
|
|
2172
|
+
],
|
|
2173
|
+
"colonOffset": 17,
|
|
2174
|
+
"length": 7,
|
|
2175
|
+
"offset": 13,
|
|
2176
|
+
"parent": [Circular],
|
|
2177
|
+
"type": "property",
|
|
2178
|
+
},
|
|
2179
|
+
{
|
|
2180
|
+
"children": [
|
|
2181
|
+
{
|
|
2182
|
+
"length": 6,
|
|
2183
|
+
"offset": 28,
|
|
2184
|
+
"parent": [Circular],
|
|
2185
|
+
"type": "string",
|
|
2186
|
+
"value": "type",
|
|
2187
|
+
},
|
|
2188
|
+
{
|
|
2189
|
+
"length": 7,
|
|
2190
|
+
"offset": 36,
|
|
2191
|
+
"parent": [Circular],
|
|
2192
|
+
"type": "string",
|
|
2193
|
+
"value": "input",
|
|
2194
|
+
},
|
|
2195
|
+
],
|
|
2196
|
+
"colonOffset": 34,
|
|
2197
|
+
"length": 15,
|
|
2198
|
+
"offset": 28,
|
|
2199
|
+
"parent": [Circular],
|
|
2200
|
+
"type": "property",
|
|
2201
|
+
},
|
|
2202
|
+
{
|
|
2203
|
+
"children": [
|
|
2204
|
+
{
|
|
2205
|
+
"length": 9,
|
|
2206
|
+
"offset": 51,
|
|
2207
|
+
"parent": [Circular],
|
|
2208
|
+
"type": "string",
|
|
2209
|
+
"value": "binding",
|
|
2210
|
+
},
|
|
2211
|
+
{
|
|
2212
|
+
"length": 11,
|
|
2213
|
+
"offset": 62,
|
|
2214
|
+
"parent": [Circular],
|
|
2215
|
+
"type": "string",
|
|
2216
|
+
"value": "some.data",
|
|
2217
|
+
},
|
|
2218
|
+
],
|
|
2219
|
+
"colonOffset": 60,
|
|
2220
|
+
"length": 22,
|
|
2221
|
+
"offset": 51,
|
|
2222
|
+
"parent": [Circular],
|
|
2223
|
+
"type": "property",
|
|
2224
|
+
},
|
|
2225
|
+
[Circular],
|
|
2226
|
+
],
|
|
2227
|
+
"length": 165,
|
|
2228
|
+
"offset": 5,
|
|
2229
|
+
"type": "object",
|
|
2230
|
+
},
|
|
2231
|
+
"type": "property",
|
|
2232
|
+
},
|
|
2233
|
+
"type": "object",
|
|
2234
|
+
},
|
|
2235
|
+
"type": "property",
|
|
2236
|
+
},
|
|
2237
|
+
"type": "object",
|
|
2238
|
+
},
|
|
2239
|
+
"severity": 1,
|
|
2240
|
+
"type": "missing",
|
|
2241
|
+
},
|
|
2242
|
+
]
|
|
2243
|
+
`;
|
|
2244
|
+
|
|
2245
|
+
exports[`Validation > Basic Validation By Type (optimized) 1`] = `
|
|
2246
|
+
[
|
|
2247
|
+
{
|
|
2248
|
+
"expected": "string",
|
|
2249
|
+
"message": "Expected type "string" but got "number"",
|
|
2250
|
+
"node": {
|
|
2251
|
+
"children": [
|
|
2252
|
+
{
|
|
2253
|
+
"length": 4,
|
|
2254
|
+
"offset": 13,
|
|
2255
|
+
"parent": [Circular],
|
|
2256
|
+
"type": "string",
|
|
2257
|
+
"value": "id",
|
|
2258
|
+
},
|
|
2259
|
+
{
|
|
2260
|
+
"length": 1,
|
|
2261
|
+
"offset": 19,
|
|
2262
|
+
"parent": [Circular],
|
|
2263
|
+
"type": "number",
|
|
2264
|
+
"value": 1,
|
|
2265
|
+
},
|
|
2266
|
+
],
|
|
2267
|
+
"colonOffset": 17,
|
|
2268
|
+
"length": 7,
|
|
2269
|
+
"offset": 13,
|
|
2270
|
+
"parent": {
|
|
2271
|
+
"children": [
|
|
2272
|
+
[Circular],
|
|
2273
|
+
{
|
|
2274
|
+
"children": [
|
|
2275
|
+
{
|
|
2276
|
+
"length": 6,
|
|
2277
|
+
"offset": 28,
|
|
2278
|
+
"parent": [Circular],
|
|
2279
|
+
"type": "string",
|
|
2280
|
+
"value": "type",
|
|
2281
|
+
},
|
|
2282
|
+
{
|
|
2283
|
+
"length": 7,
|
|
2284
|
+
"offset": 36,
|
|
2285
|
+
"parent": [Circular],
|
|
2286
|
+
"type": "string",
|
|
2287
|
+
"value": "input",
|
|
2288
|
+
},
|
|
2289
|
+
],
|
|
2290
|
+
"colonOffset": 34,
|
|
2291
|
+
"length": 15,
|
|
2292
|
+
"offset": 28,
|
|
2293
|
+
"parent": [Circular],
|
|
2294
|
+
"type": "property",
|
|
2295
|
+
},
|
|
2296
|
+
{
|
|
2297
|
+
"children": [
|
|
2298
|
+
{
|
|
2299
|
+
"length": 9,
|
|
2300
|
+
"offset": 51,
|
|
2301
|
+
"parent": [Circular],
|
|
2302
|
+
"type": "string",
|
|
2303
|
+
"value": "binding",
|
|
2304
|
+
},
|
|
2305
|
+
{
|
|
2306
|
+
"length": 11,
|
|
2307
|
+
"offset": 62,
|
|
2308
|
+
"parent": [Circular],
|
|
2309
|
+
"type": "string",
|
|
2310
|
+
"value": "some.data",
|
|
2311
|
+
},
|
|
2312
|
+
],
|
|
2313
|
+
"colonOffset": 60,
|
|
2314
|
+
"length": 22,
|
|
2315
|
+
"offset": 51,
|
|
2316
|
+
"parent": [Circular],
|
|
2317
|
+
"type": "property",
|
|
2318
|
+
},
|
|
2319
|
+
{
|
|
2320
|
+
"children": [
|
|
2321
|
+
{
|
|
2322
|
+
"length": 7,
|
|
2323
|
+
"offset": 81,
|
|
2324
|
+
"parent": [Circular],
|
|
2325
|
+
"type": "string",
|
|
2326
|
+
"value": "label",
|
|
2327
|
+
},
|
|
2328
|
+
{
|
|
2329
|
+
"children": [
|
|
2330
|
+
{
|
|
2331
|
+
"children": [
|
|
2332
|
+
{
|
|
2333
|
+
"length": 7,
|
|
2334
|
+
"offset": 100,
|
|
2335
|
+
"parent": [Circular],
|
|
2336
|
+
"type": "string",
|
|
2337
|
+
"value": "asset",
|
|
2338
|
+
},
|
|
2339
|
+
{
|
|
2340
|
+
"children": [
|
|
2341
|
+
{
|
|
2342
|
+
"children": [
|
|
2343
|
+
{
|
|
2344
|
+
"length": 7,
|
|
2345
|
+
"offset": 121,
|
|
2346
|
+
"parent": [Circular],
|
|
2347
|
+
"type": "string",
|
|
2348
|
+
"value": "value",
|
|
2349
|
+
},
|
|
2350
|
+
{
|
|
2351
|
+
"length": 17,
|
|
2352
|
+
"offset": 130,
|
|
2353
|
+
"parent": [Circular],
|
|
2354
|
+
"type": "string",
|
|
2355
|
+
"value": "{{input.label}}",
|
|
2356
|
+
},
|
|
2357
|
+
],
|
|
2358
|
+
"colonOffset": 128,
|
|
2359
|
+
"length": 26,
|
|
2360
|
+
"offset": 121,
|
|
2361
|
+
"parent": [Circular],
|
|
2362
|
+
"type": "property",
|
|
2363
|
+
},
|
|
2364
|
+
],
|
|
2365
|
+
"length": 48,
|
|
2366
|
+
"offset": 109,
|
|
2367
|
+
"parent": [Circular],
|
|
2368
|
+
"type": "object",
|
|
2369
|
+
},
|
|
2370
|
+
],
|
|
2371
|
+
"colonOffset": 107,
|
|
2372
|
+
"length": 57,
|
|
2373
|
+
"offset": 100,
|
|
2374
|
+
"parent": [Circular],
|
|
2375
|
+
"type": "property",
|
|
2376
|
+
},
|
|
2377
|
+
],
|
|
2378
|
+
"length": 75,
|
|
2379
|
+
"offset": 90,
|
|
2380
|
+
"parent": [Circular],
|
|
2381
|
+
"type": "object",
|
|
2382
|
+
},
|
|
2383
|
+
],
|
|
2384
|
+
"colonOffset": 88,
|
|
2385
|
+
"length": 84,
|
|
2386
|
+
"offset": 81,
|
|
2387
|
+
"parent": [Circular],
|
|
2388
|
+
"type": "property",
|
|
2389
|
+
},
|
|
2390
|
+
],
|
|
2391
|
+
"length": 165,
|
|
2392
|
+
"offset": 5,
|
|
2393
|
+
"type": "object",
|
|
2394
|
+
},
|
|
2395
|
+
"type": "property",
|
|
2396
|
+
},
|
|
2397
|
+
"severity": 1,
|
|
2398
|
+
"type": "type",
|
|
2399
|
+
},
|
|
2400
|
+
{
|
|
2401
|
+
"message": "Property "id" missing from type "Asset"",
|
|
2402
|
+
"node": {
|
|
2403
|
+
"children": [
|
|
2404
|
+
{
|
|
2405
|
+
"children": [
|
|
2406
|
+
{
|
|
2407
|
+
"length": 7,
|
|
2408
|
+
"offset": 121,
|
|
2409
|
+
"parent": [Circular],
|
|
2410
|
+
"type": "string",
|
|
2411
|
+
"value": "value",
|
|
2412
|
+
},
|
|
2413
|
+
{
|
|
2414
|
+
"length": 17,
|
|
2415
|
+
"offset": 130,
|
|
2416
|
+
"parent": [Circular],
|
|
2417
|
+
"type": "string",
|
|
2418
|
+
"value": "{{input.label}}",
|
|
2419
|
+
},
|
|
2420
|
+
],
|
|
2421
|
+
"colonOffset": 128,
|
|
2422
|
+
"length": 26,
|
|
2423
|
+
"offset": 121,
|
|
2424
|
+
"parent": [Circular],
|
|
2425
|
+
"type": "property",
|
|
2426
|
+
},
|
|
2427
|
+
],
|
|
2428
|
+
"length": 48,
|
|
2429
|
+
"offset": 109,
|
|
2430
|
+
"parent": {
|
|
2431
|
+
"children": [
|
|
2432
|
+
{
|
|
2433
|
+
"length": 7,
|
|
2434
|
+
"offset": 100,
|
|
2435
|
+
"parent": [Circular],
|
|
2436
|
+
"type": "string",
|
|
2437
|
+
"value": "asset",
|
|
2438
|
+
},
|
|
2439
|
+
[Circular],
|
|
2440
|
+
],
|
|
2441
|
+
"colonOffset": 107,
|
|
2442
|
+
"length": 57,
|
|
2443
|
+
"offset": 100,
|
|
2444
|
+
"parent": {
|
|
2445
|
+
"children": [
|
|
2446
|
+
[Circular],
|
|
2447
|
+
],
|
|
2448
|
+
"length": 75,
|
|
2449
|
+
"offset": 90,
|
|
2450
|
+
"parent": {
|
|
2451
|
+
"children": [
|
|
2452
|
+
{
|
|
2453
|
+
"length": 7,
|
|
2454
|
+
"offset": 81,
|
|
2455
|
+
"parent": [Circular],
|
|
2456
|
+
"type": "string",
|
|
2457
|
+
"value": "label",
|
|
2458
|
+
},
|
|
2459
|
+
[Circular],
|
|
2460
|
+
],
|
|
2461
|
+
"colonOffset": 88,
|
|
2462
|
+
"length": 84,
|
|
2463
|
+
"offset": 81,
|
|
2464
|
+
"parent": {
|
|
2465
|
+
"children": [
|
|
2466
|
+
{
|
|
2467
|
+
"children": [
|
|
2468
|
+
{
|
|
2469
|
+
"length": 4,
|
|
2470
|
+
"offset": 13,
|
|
2471
|
+
"parent": [Circular],
|
|
2472
|
+
"type": "string",
|
|
2473
|
+
"value": "id",
|
|
2474
|
+
},
|
|
2475
|
+
{
|
|
2476
|
+
"length": 1,
|
|
2477
|
+
"offset": 19,
|
|
2478
|
+
"parent": [Circular],
|
|
2479
|
+
"type": "number",
|
|
2480
|
+
"value": 1,
|
|
2481
|
+
},
|
|
2482
|
+
],
|
|
2483
|
+
"colonOffset": 17,
|
|
2484
|
+
"length": 7,
|
|
2485
|
+
"offset": 13,
|
|
2486
|
+
"parent": [Circular],
|
|
2487
|
+
"type": "property",
|
|
2488
|
+
},
|
|
2489
|
+
{
|
|
2490
|
+
"children": [
|
|
2491
|
+
{
|
|
2492
|
+
"length": 6,
|
|
2493
|
+
"offset": 28,
|
|
2494
|
+
"parent": [Circular],
|
|
2495
|
+
"type": "string",
|
|
2496
|
+
"value": "type",
|
|
2497
|
+
},
|
|
2498
|
+
{
|
|
2499
|
+
"length": 7,
|
|
2500
|
+
"offset": 36,
|
|
2501
|
+
"parent": [Circular],
|
|
2502
|
+
"type": "string",
|
|
2503
|
+
"value": "input",
|
|
2504
|
+
},
|
|
2505
|
+
],
|
|
2506
|
+
"colonOffset": 34,
|
|
2507
|
+
"length": 15,
|
|
2508
|
+
"offset": 28,
|
|
2509
|
+
"parent": [Circular],
|
|
2510
|
+
"type": "property",
|
|
2511
|
+
},
|
|
2512
|
+
{
|
|
2513
|
+
"children": [
|
|
2514
|
+
{
|
|
2515
|
+
"length": 9,
|
|
2516
|
+
"offset": 51,
|
|
2517
|
+
"parent": [Circular],
|
|
2518
|
+
"type": "string",
|
|
2519
|
+
"value": "binding",
|
|
2520
|
+
},
|
|
2521
|
+
{
|
|
2522
|
+
"length": 11,
|
|
2523
|
+
"offset": 62,
|
|
2524
|
+
"parent": [Circular],
|
|
2525
|
+
"type": "string",
|
|
2526
|
+
"value": "some.data",
|
|
2527
|
+
},
|
|
2528
|
+
],
|
|
2529
|
+
"colonOffset": 60,
|
|
2530
|
+
"length": 22,
|
|
2531
|
+
"offset": 51,
|
|
2532
|
+
"parent": [Circular],
|
|
2533
|
+
"type": "property",
|
|
2534
|
+
},
|
|
2535
|
+
[Circular],
|
|
2536
|
+
],
|
|
2537
|
+
"length": 165,
|
|
2538
|
+
"offset": 5,
|
|
2539
|
+
"type": "object",
|
|
2540
|
+
},
|
|
2541
|
+
"type": "property",
|
|
2542
|
+
},
|
|
2543
|
+
"type": "object",
|
|
2544
|
+
},
|
|
2545
|
+
"type": "property",
|
|
2546
|
+
},
|
|
2547
|
+
"type": "object",
|
|
2548
|
+
},
|
|
2549
|
+
"severity": 1,
|
|
2550
|
+
"type": "missing",
|
|
2551
|
+
},
|
|
2552
|
+
{
|
|
2553
|
+
"message": "Property "type" missing from type "Asset"",
|
|
2554
|
+
"node": {
|
|
2555
|
+
"children": [
|
|
2556
|
+
{
|
|
2557
|
+
"children": [
|
|
2558
|
+
{
|
|
2559
|
+
"length": 7,
|
|
2560
|
+
"offset": 121,
|
|
2561
|
+
"parent": [Circular],
|
|
2562
|
+
"type": "string",
|
|
2563
|
+
"value": "value",
|
|
2564
|
+
},
|
|
2565
|
+
{
|
|
2566
|
+
"length": 17,
|
|
2567
|
+
"offset": 130,
|
|
2568
|
+
"parent": [Circular],
|
|
2569
|
+
"type": "string",
|
|
2570
|
+
"value": "{{input.label}}",
|
|
2571
|
+
},
|
|
2572
|
+
],
|
|
2573
|
+
"colonOffset": 128,
|
|
2574
|
+
"length": 26,
|
|
2575
|
+
"offset": 121,
|
|
2576
|
+
"parent": [Circular],
|
|
2577
|
+
"type": "property",
|
|
2578
|
+
},
|
|
2579
|
+
],
|
|
2580
|
+
"length": 48,
|
|
2581
|
+
"offset": 109,
|
|
2582
|
+
"parent": {
|
|
2583
|
+
"children": [
|
|
2584
|
+
{
|
|
2585
|
+
"length": 7,
|
|
2586
|
+
"offset": 100,
|
|
2587
|
+
"parent": [Circular],
|
|
2588
|
+
"type": "string",
|
|
2589
|
+
"value": "asset",
|
|
2590
|
+
},
|
|
2591
|
+
[Circular],
|
|
2592
|
+
],
|
|
2593
|
+
"colonOffset": 107,
|
|
2594
|
+
"length": 57,
|
|
2595
|
+
"offset": 100,
|
|
2596
|
+
"parent": {
|
|
2597
|
+
"children": [
|
|
2598
|
+
[Circular],
|
|
2599
|
+
],
|
|
2600
|
+
"length": 75,
|
|
2601
|
+
"offset": 90,
|
|
2602
|
+
"parent": {
|
|
2603
|
+
"children": [
|
|
2604
|
+
{
|
|
2605
|
+
"length": 7,
|
|
2606
|
+
"offset": 81,
|
|
2607
|
+
"parent": [Circular],
|
|
2608
|
+
"type": "string",
|
|
2609
|
+
"value": "label",
|
|
2610
|
+
},
|
|
2611
|
+
[Circular],
|
|
2612
|
+
],
|
|
2613
|
+
"colonOffset": 88,
|
|
2614
|
+
"length": 84,
|
|
2615
|
+
"offset": 81,
|
|
2616
|
+
"parent": {
|
|
2617
|
+
"children": [
|
|
2618
|
+
{
|
|
2619
|
+
"children": [
|
|
2620
|
+
{
|
|
2621
|
+
"length": 4,
|
|
2622
|
+
"offset": 13,
|
|
2623
|
+
"parent": [Circular],
|
|
2624
|
+
"type": "string",
|
|
2625
|
+
"value": "id",
|
|
2626
|
+
},
|
|
2627
|
+
{
|
|
2628
|
+
"length": 1,
|
|
2629
|
+
"offset": 19,
|
|
2630
|
+
"parent": [Circular],
|
|
2631
|
+
"type": "number",
|
|
2632
|
+
"value": 1,
|
|
2633
|
+
},
|
|
2634
|
+
],
|
|
2635
|
+
"colonOffset": 17,
|
|
2636
|
+
"length": 7,
|
|
2637
|
+
"offset": 13,
|
|
2638
|
+
"parent": [Circular],
|
|
2639
|
+
"type": "property",
|
|
2640
|
+
},
|
|
2641
|
+
{
|
|
2642
|
+
"children": [
|
|
2643
|
+
{
|
|
2644
|
+
"length": 6,
|
|
2645
|
+
"offset": 28,
|
|
2646
|
+
"parent": [Circular],
|
|
2647
|
+
"type": "string",
|
|
2648
|
+
"value": "type",
|
|
2649
|
+
},
|
|
2650
|
+
{
|
|
2651
|
+
"length": 7,
|
|
2652
|
+
"offset": 36,
|
|
2653
|
+
"parent": [Circular],
|
|
2654
|
+
"type": "string",
|
|
2655
|
+
"value": "input",
|
|
2656
|
+
},
|
|
2657
|
+
],
|
|
2658
|
+
"colonOffset": 34,
|
|
2659
|
+
"length": 15,
|
|
2660
|
+
"offset": 28,
|
|
2661
|
+
"parent": [Circular],
|
|
2662
|
+
"type": "property",
|
|
2663
|
+
},
|
|
2664
|
+
{
|
|
2665
|
+
"children": [
|
|
2666
|
+
{
|
|
2667
|
+
"length": 9,
|
|
2668
|
+
"offset": 51,
|
|
2669
|
+
"parent": [Circular],
|
|
2670
|
+
"type": "string",
|
|
2671
|
+
"value": "binding",
|
|
2672
|
+
},
|
|
2673
|
+
{
|
|
2674
|
+
"length": 11,
|
|
2675
|
+
"offset": 62,
|
|
2676
|
+
"parent": [Circular],
|
|
2677
|
+
"type": "string",
|
|
2678
|
+
"value": "some.data",
|
|
2679
|
+
},
|
|
2680
|
+
],
|
|
2681
|
+
"colonOffset": 60,
|
|
2682
|
+
"length": 22,
|
|
2683
|
+
"offset": 51,
|
|
2684
|
+
"parent": [Circular],
|
|
2685
|
+
"type": "property",
|
|
2686
|
+
},
|
|
2687
|
+
[Circular],
|
|
2688
|
+
],
|
|
2689
|
+
"length": 165,
|
|
2690
|
+
"offset": 5,
|
|
2691
|
+
"type": "object",
|
|
2692
|
+
},
|
|
2693
|
+
"type": "property",
|
|
2694
|
+
},
|
|
2695
|
+
"type": "object",
|
|
2696
|
+
},
|
|
2697
|
+
"type": "property",
|
|
2698
|
+
},
|
|
2699
|
+
"type": "object",
|
|
2700
|
+
},
|
|
2701
|
+
"severity": 1,
|
|
2702
|
+
"type": "missing",
|
|
2703
|
+
},
|
|
2704
|
+
]
|
|
2705
|
+
`;
|
|
2706
|
+
|
|
2707
|
+
exports[`Validation > Basic Validation By Type (unoptimized) 1`] = `
|
|
2708
|
+
[
|
|
2709
|
+
{
|
|
2710
|
+
"expected": "string",
|
|
2711
|
+
"message": "Expected type "string" but got "number"",
|
|
2712
|
+
"node": {
|
|
2713
|
+
"children": [
|
|
2714
|
+
{
|
|
2715
|
+
"length": 4,
|
|
2716
|
+
"offset": 13,
|
|
2717
|
+
"parent": [Circular],
|
|
2718
|
+
"type": "string",
|
|
2719
|
+
"value": "id",
|
|
2720
|
+
},
|
|
2721
|
+
{
|
|
2722
|
+
"length": 1,
|
|
2723
|
+
"offset": 19,
|
|
2724
|
+
"parent": [Circular],
|
|
2725
|
+
"type": "number",
|
|
2726
|
+
"value": 1,
|
|
2727
|
+
},
|
|
2728
|
+
],
|
|
2729
|
+
"colonOffset": 17,
|
|
2730
|
+
"length": 7,
|
|
2731
|
+
"offset": 13,
|
|
2732
|
+
"parent": {
|
|
2733
|
+
"children": [
|
|
2734
|
+
[Circular],
|
|
2735
|
+
{
|
|
2736
|
+
"children": [
|
|
2737
|
+
{
|
|
2738
|
+
"length": 6,
|
|
2739
|
+
"offset": 28,
|
|
2740
|
+
"parent": [Circular],
|
|
2741
|
+
"type": "string",
|
|
2742
|
+
"value": "type",
|
|
2743
|
+
},
|
|
2744
|
+
{
|
|
2745
|
+
"length": 7,
|
|
2746
|
+
"offset": 36,
|
|
2747
|
+
"parent": [Circular],
|
|
2748
|
+
"type": "string",
|
|
2749
|
+
"value": "input",
|
|
2750
|
+
},
|
|
2751
|
+
],
|
|
2752
|
+
"colonOffset": 34,
|
|
2753
|
+
"length": 15,
|
|
2754
|
+
"offset": 28,
|
|
2755
|
+
"parent": [Circular],
|
|
2756
|
+
"type": "property",
|
|
2757
|
+
},
|
|
2758
|
+
{
|
|
2759
|
+
"children": [
|
|
2760
|
+
{
|
|
2761
|
+
"length": 9,
|
|
2762
|
+
"offset": 51,
|
|
2763
|
+
"parent": [Circular],
|
|
2764
|
+
"type": "string",
|
|
2765
|
+
"value": "binding",
|
|
2766
|
+
},
|
|
2767
|
+
{
|
|
2768
|
+
"length": 11,
|
|
2769
|
+
"offset": 62,
|
|
2770
|
+
"parent": [Circular],
|
|
2771
|
+
"type": "string",
|
|
2772
|
+
"value": "some.data",
|
|
2773
|
+
},
|
|
2774
|
+
],
|
|
2775
|
+
"colonOffset": 60,
|
|
2776
|
+
"length": 22,
|
|
2777
|
+
"offset": 51,
|
|
2778
|
+
"parent": [Circular],
|
|
2779
|
+
"type": "property",
|
|
2780
|
+
},
|
|
2781
|
+
{
|
|
2782
|
+
"children": [
|
|
2783
|
+
{
|
|
2784
|
+
"length": 7,
|
|
2785
|
+
"offset": 81,
|
|
2786
|
+
"parent": [Circular],
|
|
2787
|
+
"type": "string",
|
|
2788
|
+
"value": "label",
|
|
2789
|
+
},
|
|
2790
|
+
{
|
|
2791
|
+
"children": [
|
|
2792
|
+
{
|
|
2793
|
+
"children": [
|
|
2794
|
+
{
|
|
2795
|
+
"length": 7,
|
|
2796
|
+
"offset": 100,
|
|
2797
|
+
"parent": [Circular],
|
|
2798
|
+
"type": "string",
|
|
2799
|
+
"value": "asset",
|
|
2800
|
+
},
|
|
2801
|
+
{
|
|
2802
|
+
"children": [
|
|
2803
|
+
{
|
|
2804
|
+
"children": [
|
|
2805
|
+
{
|
|
2806
|
+
"length": 7,
|
|
2807
|
+
"offset": 121,
|
|
2808
|
+
"parent": [Circular],
|
|
2809
|
+
"type": "string",
|
|
2810
|
+
"value": "value",
|
|
2811
|
+
},
|
|
2812
|
+
{
|
|
2813
|
+
"length": 17,
|
|
2814
|
+
"offset": 130,
|
|
2815
|
+
"parent": [Circular],
|
|
2816
|
+
"type": "string",
|
|
2817
|
+
"value": "{{input.label}}",
|
|
2818
|
+
},
|
|
2819
|
+
],
|
|
2820
|
+
"colonOffset": 128,
|
|
2821
|
+
"length": 26,
|
|
2822
|
+
"offset": 121,
|
|
2823
|
+
"parent": [Circular],
|
|
2824
|
+
"type": "property",
|
|
2825
|
+
},
|
|
2826
|
+
],
|
|
2827
|
+
"length": 48,
|
|
2828
|
+
"offset": 109,
|
|
2829
|
+
"parent": [Circular],
|
|
2830
|
+
"type": "object",
|
|
2831
|
+
},
|
|
2832
|
+
],
|
|
2833
|
+
"colonOffset": 107,
|
|
2834
|
+
"length": 57,
|
|
2835
|
+
"offset": 100,
|
|
2836
|
+
"parent": [Circular],
|
|
2837
|
+
"type": "property",
|
|
2838
|
+
},
|
|
2839
|
+
],
|
|
2840
|
+
"length": 75,
|
|
2841
|
+
"offset": 90,
|
|
2842
|
+
"parent": [Circular],
|
|
2843
|
+
"type": "object",
|
|
2844
|
+
},
|
|
2845
|
+
],
|
|
2846
|
+
"colonOffset": 88,
|
|
2847
|
+
"length": 84,
|
|
2848
|
+
"offset": 81,
|
|
2849
|
+
"parent": [Circular],
|
|
2850
|
+
"type": "property",
|
|
2851
|
+
},
|
|
2852
|
+
],
|
|
2853
|
+
"length": 165,
|
|
2854
|
+
"offset": 5,
|
|
2855
|
+
"type": "object",
|
|
2856
|
+
},
|
|
2857
|
+
"type": "property",
|
|
2858
|
+
},
|
|
2859
|
+
"severity": 1,
|
|
2860
|
+
"type": "type",
|
|
2861
|
+
},
|
|
2862
|
+
{
|
|
2863
|
+
"message": "Property "id" missing from type "Asset"",
|
|
2864
|
+
"node": {
|
|
2865
|
+
"children": [
|
|
2866
|
+
{
|
|
2867
|
+
"children": [
|
|
2868
|
+
{
|
|
2869
|
+
"length": 7,
|
|
2870
|
+
"offset": 121,
|
|
2871
|
+
"parent": [Circular],
|
|
2872
|
+
"type": "string",
|
|
2873
|
+
"value": "value",
|
|
2874
|
+
},
|
|
2875
|
+
{
|
|
2876
|
+
"length": 17,
|
|
2877
|
+
"offset": 130,
|
|
2878
|
+
"parent": [Circular],
|
|
2879
|
+
"type": "string",
|
|
2880
|
+
"value": "{{input.label}}",
|
|
2881
|
+
},
|
|
2882
|
+
],
|
|
2883
|
+
"colonOffset": 128,
|
|
2884
|
+
"length": 26,
|
|
2885
|
+
"offset": 121,
|
|
2886
|
+
"parent": [Circular],
|
|
2887
|
+
"type": "property",
|
|
2888
|
+
},
|
|
2889
|
+
],
|
|
2890
|
+
"length": 48,
|
|
2891
|
+
"offset": 109,
|
|
2892
|
+
"parent": {
|
|
2893
|
+
"children": [
|
|
2894
|
+
{
|
|
2895
|
+
"length": 7,
|
|
2896
|
+
"offset": 100,
|
|
2897
|
+
"parent": [Circular],
|
|
2898
|
+
"type": "string",
|
|
2899
|
+
"value": "asset",
|
|
2900
|
+
},
|
|
2901
|
+
[Circular],
|
|
2902
|
+
],
|
|
2903
|
+
"colonOffset": 107,
|
|
2904
|
+
"length": 57,
|
|
2905
|
+
"offset": 100,
|
|
2906
|
+
"parent": {
|
|
2907
|
+
"children": [
|
|
2908
|
+
[Circular],
|
|
2909
|
+
],
|
|
2910
|
+
"length": 75,
|
|
2911
|
+
"offset": 90,
|
|
2912
|
+
"parent": {
|
|
2913
|
+
"children": [
|
|
2914
|
+
{
|
|
2915
|
+
"length": 7,
|
|
2916
|
+
"offset": 81,
|
|
2917
|
+
"parent": [Circular],
|
|
2918
|
+
"type": "string",
|
|
2919
|
+
"value": "label",
|
|
2920
|
+
},
|
|
2921
|
+
[Circular],
|
|
2922
|
+
],
|
|
2923
|
+
"colonOffset": 88,
|
|
2924
|
+
"length": 84,
|
|
2925
|
+
"offset": 81,
|
|
2926
|
+
"parent": {
|
|
2927
|
+
"children": [
|
|
2928
|
+
{
|
|
2929
|
+
"children": [
|
|
2930
|
+
{
|
|
2931
|
+
"length": 4,
|
|
2932
|
+
"offset": 13,
|
|
2933
|
+
"parent": [Circular],
|
|
2934
|
+
"type": "string",
|
|
2935
|
+
"value": "id",
|
|
2936
|
+
},
|
|
2937
|
+
{
|
|
2938
|
+
"length": 1,
|
|
2939
|
+
"offset": 19,
|
|
2940
|
+
"parent": [Circular],
|
|
2941
|
+
"type": "number",
|
|
2942
|
+
"value": 1,
|
|
2943
|
+
},
|
|
2944
|
+
],
|
|
2945
|
+
"colonOffset": 17,
|
|
2946
|
+
"length": 7,
|
|
2947
|
+
"offset": 13,
|
|
2948
|
+
"parent": [Circular],
|
|
2949
|
+
"type": "property",
|
|
2950
|
+
},
|
|
2951
|
+
{
|
|
2952
|
+
"children": [
|
|
2953
|
+
{
|
|
2954
|
+
"length": 6,
|
|
2955
|
+
"offset": 28,
|
|
2956
|
+
"parent": [Circular],
|
|
2957
|
+
"type": "string",
|
|
2958
|
+
"value": "type",
|
|
2959
|
+
},
|
|
2960
|
+
{
|
|
2961
|
+
"length": 7,
|
|
2962
|
+
"offset": 36,
|
|
2963
|
+
"parent": [Circular],
|
|
2964
|
+
"type": "string",
|
|
2965
|
+
"value": "input",
|
|
2966
|
+
},
|
|
2967
|
+
],
|
|
2968
|
+
"colonOffset": 34,
|
|
2969
|
+
"length": 15,
|
|
2970
|
+
"offset": 28,
|
|
2971
|
+
"parent": [Circular],
|
|
2972
|
+
"type": "property",
|
|
2973
|
+
},
|
|
2974
|
+
{
|
|
2975
|
+
"children": [
|
|
2976
|
+
{
|
|
2977
|
+
"length": 9,
|
|
2978
|
+
"offset": 51,
|
|
2979
|
+
"parent": [Circular],
|
|
2980
|
+
"type": "string",
|
|
2981
|
+
"value": "binding",
|
|
2982
|
+
},
|
|
2983
|
+
{
|
|
2984
|
+
"length": 11,
|
|
2985
|
+
"offset": 62,
|
|
2986
|
+
"parent": [Circular],
|
|
2987
|
+
"type": "string",
|
|
2988
|
+
"value": "some.data",
|
|
2989
|
+
},
|
|
2990
|
+
],
|
|
2991
|
+
"colonOffset": 60,
|
|
2992
|
+
"length": 22,
|
|
2993
|
+
"offset": 51,
|
|
2994
|
+
"parent": [Circular],
|
|
2995
|
+
"type": "property",
|
|
2996
|
+
},
|
|
2997
|
+
[Circular],
|
|
2998
|
+
],
|
|
2999
|
+
"length": 165,
|
|
3000
|
+
"offset": 5,
|
|
3001
|
+
"type": "object",
|
|
3002
|
+
},
|
|
3003
|
+
"type": "property",
|
|
3004
|
+
},
|
|
3005
|
+
"type": "object",
|
|
3006
|
+
},
|
|
3007
|
+
"type": "property",
|
|
3008
|
+
},
|
|
3009
|
+
"type": "object",
|
|
3010
|
+
},
|
|
3011
|
+
"severity": 1,
|
|
3012
|
+
"type": "missing",
|
|
3013
|
+
},
|
|
3014
|
+
{
|
|
3015
|
+
"message": "Property "type" missing from type "Asset"",
|
|
3016
|
+
"node": {
|
|
3017
|
+
"children": [
|
|
3018
|
+
{
|
|
3019
|
+
"children": [
|
|
3020
|
+
{
|
|
3021
|
+
"length": 7,
|
|
3022
|
+
"offset": 121,
|
|
3023
|
+
"parent": [Circular],
|
|
3024
|
+
"type": "string",
|
|
3025
|
+
"value": "value",
|
|
3026
|
+
},
|
|
3027
|
+
{
|
|
3028
|
+
"length": 17,
|
|
3029
|
+
"offset": 130,
|
|
3030
|
+
"parent": [Circular],
|
|
3031
|
+
"type": "string",
|
|
3032
|
+
"value": "{{input.label}}",
|
|
3033
|
+
},
|
|
3034
|
+
],
|
|
3035
|
+
"colonOffset": 128,
|
|
3036
|
+
"length": 26,
|
|
3037
|
+
"offset": 121,
|
|
3038
|
+
"parent": [Circular],
|
|
3039
|
+
"type": "property",
|
|
3040
|
+
},
|
|
3041
|
+
],
|
|
3042
|
+
"length": 48,
|
|
3043
|
+
"offset": 109,
|
|
3044
|
+
"parent": {
|
|
3045
|
+
"children": [
|
|
3046
|
+
{
|
|
3047
|
+
"length": 7,
|
|
3048
|
+
"offset": 100,
|
|
3049
|
+
"parent": [Circular],
|
|
3050
|
+
"type": "string",
|
|
3051
|
+
"value": "asset",
|
|
3052
|
+
},
|
|
3053
|
+
[Circular],
|
|
3054
|
+
],
|
|
3055
|
+
"colonOffset": 107,
|
|
3056
|
+
"length": 57,
|
|
3057
|
+
"offset": 100,
|
|
3058
|
+
"parent": {
|
|
3059
|
+
"children": [
|
|
3060
|
+
[Circular],
|
|
3061
|
+
],
|
|
3062
|
+
"length": 75,
|
|
3063
|
+
"offset": 90,
|
|
3064
|
+
"parent": {
|
|
3065
|
+
"children": [
|
|
3066
|
+
{
|
|
3067
|
+
"length": 7,
|
|
3068
|
+
"offset": 81,
|
|
3069
|
+
"parent": [Circular],
|
|
3070
|
+
"type": "string",
|
|
3071
|
+
"value": "label",
|
|
3072
|
+
},
|
|
3073
|
+
[Circular],
|
|
3074
|
+
],
|
|
3075
|
+
"colonOffset": 88,
|
|
3076
|
+
"length": 84,
|
|
3077
|
+
"offset": 81,
|
|
3078
|
+
"parent": {
|
|
3079
|
+
"children": [
|
|
3080
|
+
{
|
|
3081
|
+
"children": [
|
|
3082
|
+
{
|
|
3083
|
+
"length": 4,
|
|
3084
|
+
"offset": 13,
|
|
3085
|
+
"parent": [Circular],
|
|
3086
|
+
"type": "string",
|
|
3087
|
+
"value": "id",
|
|
3088
|
+
},
|
|
3089
|
+
{
|
|
3090
|
+
"length": 1,
|
|
3091
|
+
"offset": 19,
|
|
3092
|
+
"parent": [Circular],
|
|
3093
|
+
"type": "number",
|
|
3094
|
+
"value": 1,
|
|
3095
|
+
},
|
|
3096
|
+
],
|
|
3097
|
+
"colonOffset": 17,
|
|
3098
|
+
"length": 7,
|
|
3099
|
+
"offset": 13,
|
|
3100
|
+
"parent": [Circular],
|
|
3101
|
+
"type": "property",
|
|
3102
|
+
},
|
|
3103
|
+
{
|
|
3104
|
+
"children": [
|
|
3105
|
+
{
|
|
3106
|
+
"length": 6,
|
|
3107
|
+
"offset": 28,
|
|
3108
|
+
"parent": [Circular],
|
|
3109
|
+
"type": "string",
|
|
3110
|
+
"value": "type",
|
|
3111
|
+
},
|
|
3112
|
+
{
|
|
3113
|
+
"length": 7,
|
|
3114
|
+
"offset": 36,
|
|
3115
|
+
"parent": [Circular],
|
|
3116
|
+
"type": "string",
|
|
3117
|
+
"value": "input",
|
|
3118
|
+
},
|
|
3119
|
+
],
|
|
3120
|
+
"colonOffset": 34,
|
|
3121
|
+
"length": 15,
|
|
3122
|
+
"offset": 28,
|
|
3123
|
+
"parent": [Circular],
|
|
3124
|
+
"type": "property",
|
|
3125
|
+
},
|
|
3126
|
+
{
|
|
3127
|
+
"children": [
|
|
3128
|
+
{
|
|
3129
|
+
"length": 9,
|
|
3130
|
+
"offset": 51,
|
|
3131
|
+
"parent": [Circular],
|
|
3132
|
+
"type": "string",
|
|
3133
|
+
"value": "binding",
|
|
3134
|
+
},
|
|
3135
|
+
{
|
|
3136
|
+
"length": 11,
|
|
3137
|
+
"offset": 62,
|
|
3138
|
+
"parent": [Circular],
|
|
3139
|
+
"type": "string",
|
|
3140
|
+
"value": "some.data",
|
|
3141
|
+
},
|
|
3142
|
+
],
|
|
3143
|
+
"colonOffset": 60,
|
|
3144
|
+
"length": 22,
|
|
3145
|
+
"offset": 51,
|
|
3146
|
+
"parent": [Circular],
|
|
3147
|
+
"type": "property",
|
|
3148
|
+
},
|
|
3149
|
+
[Circular],
|
|
3150
|
+
],
|
|
3151
|
+
"length": 165,
|
|
3152
|
+
"offset": 5,
|
|
3153
|
+
"type": "object",
|
|
3154
|
+
},
|
|
3155
|
+
"type": "property",
|
|
3156
|
+
},
|
|
3157
|
+
"type": "object",
|
|
3158
|
+
},
|
|
3159
|
+
"type": "property",
|
|
3160
|
+
},
|
|
3161
|
+
"type": "object",
|
|
3162
|
+
},
|
|
3163
|
+
"severity": 1,
|
|
3164
|
+
"type": "missing",
|
|
3165
|
+
},
|
|
3166
|
+
]
|
|
3167
|
+
`;
|