@wildwinter/toolkit 0.2.0 → 0.2.2

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.
@@ -3,261 +3,1126 @@
3
3
  "cases": [
4
4
  {
5
5
  "name": "a minimal manifest passes",
6
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
7
- "targets": { "storylets": { "card": { "fields": [{ "name": "mood", "type": "text" }] } } } },
6
+ "manifest": {
7
+ "schema": "wildwinter/extension@0",
8
+ "id": "probe",
9
+ "name": "Probe",
10
+ "version": "1.0.0",
11
+ "targets": {
12
+ "storylets": {
13
+ "card": {
14
+ "fields": [
15
+ {
16
+ "name": "mood",
17
+ "type": "text"
18
+ }
19
+ ]
20
+ }
21
+ }
22
+ }
23
+ },
8
24
  "problems": []
9
25
  },
10
26
  {
11
27
  "name": "every type, a claim and a setting pass together",
12
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "2.1.0",
28
+ "manifest": {
29
+ "schema": "wildwinter/extension@0",
30
+ "id": "probe",
31
+ "name": "Probe",
32
+ "version": "2.1.0",
13
33
  "docs": "https://example.com/probe",
14
- "settings": [{ "name": "moodField", "label": "Mood field", "default": "mood" }],
34
+ "settings": [
35
+ {
36
+ "name": "moodField",
37
+ "label": "Mood field",
38
+ "default": "mood"
39
+ }
40
+ ],
15
41
  "targets": {
16
42
  "storylets": {
17
43
  "card": {
18
44
  "fields": [
19
- { "name": "note", "type": "text", "label": "Note", "help": "A line for the crew." },
20
- { "name": "body", "type": "multiline", "editorOnly": true },
21
- { "name": "weight", "type": "number", "min": 0, "max": 10, "default": 1 },
22
- { "name": "loud", "type": "boolean", "required": true },
23
- { "name": "tone", "type": "enum", "values": ["calm", "tense"], "valueHelp": { "calm": "Unhurried." } },
24
- { "name": "marks", "type": "flags", "values": ["night", "rain"], "default": ["rain"] },
25
- { "name": "act", "type": "quality", "stages": ["setup", "turn", "close"], "renamedStages": { "opening": "setup" } },
26
- { "name": "next", "type": "reference", "to": "card" },
27
- { "name": "cue", "type": "record", "fields": [{ "name": "sound", "type": "text" }, { "name": "gain", "type": "number" }] },
28
- { "name": "byTag", "type": "map", "key": { "type": "reference", "to": "tag" }, "of": { "type": "number" } },
29
- { "name": "byName", "type": "map", "key": { "type": "text" }, "of": { "type": "record", "fields": [{ "name": "look", "type": "text" }] } },
30
- { "name": "beats", "type": "list", "id": "id", "of": { "type": "record", "fields": [{ "name": "id", "type": "text" }, { "name": "at", "type": "number" }] } },
31
- { "name": "words", "type": "list", "of": { "type": "text" } }
45
+ {
46
+ "name": "note",
47
+ "type": "text",
48
+ "label": "Note",
49
+ "help": "A line for the crew."
50
+ },
51
+ {
52
+ "name": "body",
53
+ "type": "multiline",
54
+ "editorOnly": true
55
+ },
56
+ {
57
+ "name": "weight",
58
+ "type": "number",
59
+ "min": 0,
60
+ "max": 10,
61
+ "default": 1
62
+ },
63
+ {
64
+ "name": "loud",
65
+ "type": "boolean",
66
+ "required": true
67
+ },
68
+ {
69
+ "name": "tone",
70
+ "type": "enum",
71
+ "values": [
72
+ "calm",
73
+ "tense"
74
+ ],
75
+ "valueHelp": {
76
+ "calm": "Unhurried."
77
+ }
78
+ },
79
+ {
80
+ "name": "marks",
81
+ "type": "flags",
82
+ "values": [
83
+ "night",
84
+ "rain"
85
+ ],
86
+ "default": [
87
+ "rain"
88
+ ]
89
+ },
90
+ {
91
+ "name": "act",
92
+ "type": "quality",
93
+ "stages": [
94
+ "setup",
95
+ "turn",
96
+ "close"
97
+ ],
98
+ "renamedStages": {
99
+ "opening": "setup"
100
+ }
101
+ },
102
+ {
103
+ "name": "next",
104
+ "type": "reference",
105
+ "to": "card"
106
+ },
107
+ {
108
+ "name": "cue",
109
+ "type": "record",
110
+ "fields": [
111
+ {
112
+ "name": "sound",
113
+ "type": "text"
114
+ },
115
+ {
116
+ "name": "gain",
117
+ "type": "number"
118
+ }
119
+ ]
120
+ },
121
+ {
122
+ "name": "byTag",
123
+ "type": "map",
124
+ "key": {
125
+ "type": "reference",
126
+ "to": "tag"
127
+ },
128
+ "of": {
129
+ "type": "number"
130
+ }
131
+ },
132
+ {
133
+ "name": "byName",
134
+ "type": "map",
135
+ "key": {
136
+ "type": "text"
137
+ },
138
+ "of": {
139
+ "type": "record",
140
+ "fields": [
141
+ {
142
+ "name": "look",
143
+ "type": "text"
144
+ }
145
+ ]
146
+ }
147
+ },
148
+ {
149
+ "name": "beats",
150
+ "type": "list",
151
+ "id": "id",
152
+ "of": {
153
+ "type": "record",
154
+ "fields": [
155
+ {
156
+ "name": "id",
157
+ "type": "text"
158
+ },
159
+ {
160
+ "name": "at",
161
+ "type": "number"
162
+ }
163
+ ]
164
+ }
165
+ },
166
+ {
167
+ "name": "words",
168
+ "type": "list",
169
+ "of": {
170
+ "type": "text"
171
+ }
172
+ }
32
173
  ],
33
- "claims": [{ "setting": "moodField", "type": "enum", "values": ["calm", "tense"], "help": "The card's mood." }]
174
+ "claims": [
175
+ {
176
+ "setting": "moodField",
177
+ "type": "enum",
178
+ "values": [
179
+ "calm",
180
+ "tense"
181
+ ],
182
+ "help": "The card's mood."
183
+ }
184
+ ]
34
185
  },
35
- "project": { "fields": [{ "name": "studio", "type": "text" }] }
186
+ "project": {
187
+ "fields": [
188
+ {
189
+ "name": "studio",
190
+ "type": "text"
191
+ }
192
+ ]
193
+ }
36
194
  },
37
- "patter": { "line": { "fields": [{ "name": "to", "type": "reference", "to": "cast" }] } }
38
- } },
195
+ "patter": {
196
+ "line": {
197
+ "fields": [
198
+ {
199
+ "name": "to",
200
+ "type": "reference",
201
+ "to": "cast"
202
+ }
203
+ ]
204
+ }
205
+ }
206
+ }
207
+ },
39
208
  "problems": []
40
209
  },
41
210
  {
42
211
  "name": "identity is checked",
43
- "manifest": { "schema": "wildwinter/extension@1", "id": "Probe Two", "name": " ", "version": "1.0", "docs": 3,
44
- "targets": { "storylets": { "card": { "fields": [] } } } },
212
+ "manifest": {
213
+ "schema": "wildwinter/extension@1",
214
+ "id": "Probe Two",
215
+ "name": " ",
216
+ "version": "1.0",
217
+ "docs": 3,
218
+ "targets": {
219
+ "storylets": {
220
+ "card": {
221
+ "fields": []
222
+ }
223
+ }
224
+ }
225
+ },
45
226
  "problems": [
46
- { "path": "schema", "code": "schema" },
47
- { "path": "id", "code": "id" },
48
- { "path": "name", "code": "name" },
49
- { "path": "version", "code": "version" },
50
- { "path": "docs", "code": "docs" }
227
+ {
228
+ "path": "schema",
229
+ "code": "schema"
230
+ },
231
+ {
232
+ "path": "id",
233
+ "code": "id"
234
+ },
235
+ {
236
+ "path": "name",
237
+ "code": "name"
238
+ },
239
+ {
240
+ "path": "version",
241
+ "code": "version"
242
+ },
243
+ {
244
+ "path": "docs",
245
+ "code": "docs"
246
+ }
51
247
  ]
52
248
  },
53
249
  {
54
250
  "name": "a manifest must target something it knows",
55
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
56
- "targets": { "ink": { "knot": {} }, "storylets": { "scene": {} } } },
251
+ "manifest": {
252
+ "schema": "wildwinter/extension@0",
253
+ "id": "probe",
254
+ "name": "Probe",
255
+ "version": "1.0.0",
256
+ "targets": {
257
+ "ink": {
258
+ "knot": {}
259
+ },
260
+ "storylets": {
261
+ "scene": {}
262
+ }
263
+ }
264
+ },
57
265
  "problems": [
58
- { "path": "targets.ink", "code": "unknown-host" },
59
- { "path": "targets.storylets.scene", "code": "unknown-kind" }
266
+ {
267
+ "path": "targets.ink",
268
+ "code": "unknown-host"
269
+ },
270
+ {
271
+ "path": "targets.storylets.scene",
272
+ "code": "unknown-kind"
273
+ }
60
274
  ]
61
275
  },
62
276
  {
63
277
  "name": "no targets at all",
64
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0", "targets": {} },
65
- "problems": [{ "path": "targets", "code": "no-targets" }]
278
+ "manifest": {
279
+ "schema": "wildwinter/extension@0",
280
+ "id": "probe",
281
+ "name": "Probe",
282
+ "version": "1.0.0",
283
+ "targets": {}
284
+ },
285
+ "problems": [
286
+ {
287
+ "path": "targets",
288
+ "code": "no-targets"
289
+ }
290
+ ]
66
291
  },
67
292
  {
68
293
  "name": "field names are identifiers, once each",
69
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
70
- "targets": { "storylets": { "card": { "fields": [
71
- { "name": "mood", "type": "text" }, { "name": "mood", "type": "number" }, { "name": "9lives", "type": "text" }
72
- ] } } } },
294
+ "manifest": {
295
+ "schema": "wildwinter/extension@0",
296
+ "id": "probe",
297
+ "name": "Probe",
298
+ "version": "1.0.0",
299
+ "targets": {
300
+ "storylets": {
301
+ "card": {
302
+ "fields": [
303
+ {
304
+ "name": "mood",
305
+ "type": "text"
306
+ },
307
+ {
308
+ "name": "mood",
309
+ "type": "number"
310
+ },
311
+ {
312
+ "name": "9lives",
313
+ "type": "text"
314
+ }
315
+ ]
316
+ }
317
+ }
318
+ }
319
+ },
73
320
  "problems": [
74
- { "path": "targets.storylets.card.fields[1].name", "code": "duplicate-field" },
75
- { "path": "targets.storylets.card.fields[2].name", "code": "field-name" }
321
+ {
322
+ "path": "targets.storylets.card.fields[1].name",
323
+ "code": "duplicate-field"
324
+ },
325
+ {
326
+ "path": "targets.storylets.card.fields[2].name",
327
+ "code": "field-name"
328
+ }
76
329
  ]
77
330
  },
78
331
  {
79
332
  "name": "the text type is spelled text, and an unknown type is refused",
80
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
81
- "targets": { "storylets": { "card": { "fields": [
82
- { "name": "a", "type": "string" }, { "name": "b", "type": "colour" }
83
- ] } } } },
333
+ "manifest": {
334
+ "schema": "wildwinter/extension@0",
335
+ "id": "probe",
336
+ "name": "Probe",
337
+ "version": "1.0.0",
338
+ "targets": {
339
+ "storylets": {
340
+ "card": {
341
+ "fields": [
342
+ {
343
+ "name": "a",
344
+ "type": "string"
345
+ },
346
+ {
347
+ "name": "b",
348
+ "type": "colour"
349
+ }
350
+ ]
351
+ }
352
+ }
353
+ }
354
+ },
84
355
  "problems": [
85
- { "path": "targets.storylets.card.fields[0].type", "code": "string-type" },
86
- { "path": "targets.storylets.card.fields[1].type", "code": "unknown-type" }
356
+ {
357
+ "path": "targets.storylets.card.fields[0].type",
358
+ "code": "string-type"
359
+ },
360
+ {
361
+ "path": "targets.storylets.card.fields[1].type",
362
+ "code": "unknown-type"
363
+ }
87
364
  ]
88
365
  },
89
366
  {
90
367
  "name": "enum and flags values: some, none empty, none twice",
91
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
92
- "targets": { "storylets": { "card": { "fields": [
93
- { "name": "a", "type": "enum", "values": [] },
94
- { "name": "b", "type": "flags", "values": ["x", "", "x"] },
95
- { "name": "c", "type": "enum" }
96
- ] } } } },
368
+ "manifest": {
369
+ "schema": "wildwinter/extension@0",
370
+ "id": "probe",
371
+ "name": "Probe",
372
+ "version": "1.0.0",
373
+ "targets": {
374
+ "storylets": {
375
+ "card": {
376
+ "fields": [
377
+ {
378
+ "name": "a",
379
+ "type": "enum",
380
+ "values": []
381
+ },
382
+ {
383
+ "name": "b",
384
+ "type": "flags",
385
+ "values": [
386
+ "x",
387
+ "",
388
+ "x"
389
+ ]
390
+ },
391
+ {
392
+ "name": "c",
393
+ "type": "enum"
394
+ }
395
+ ]
396
+ }
397
+ }
398
+ }
399
+ },
97
400
  "problems": [
98
- { "path": "targets.storylets.card.fields[0].values", "code": "values-empty" },
99
- { "path": "targets.storylets.card.fields[1].values[1]", "code": "value-empty" },
100
- { "path": "targets.storylets.card.fields[1].values[2]", "code": "value-duplicate" },
101
- { "path": "targets.storylets.card.fields[2].values", "code": "values-empty" }
401
+ {
402
+ "path": "targets.storylets.card.fields[0].values",
403
+ "code": "values-empty"
404
+ },
405
+ {
406
+ "path": "targets.storylets.card.fields[1].values[1]",
407
+ "code": "value-empty"
408
+ },
409
+ {
410
+ "path": "targets.storylets.card.fields[1].values[2]",
411
+ "code": "value-duplicate"
412
+ },
413
+ {
414
+ "path": "targets.storylets.card.fields[2].values",
415
+ "code": "values-empty"
416
+ }
102
417
  ]
103
418
  },
104
419
  {
105
420
  "name": "a quality's ladder follows the kernel's rule",
106
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
107
- "targets": { "storylets": { "card": { "fields": [
108
- { "name": "a", "type": "quality", "stages": ["only"] },
109
- { "name": "b", "type": "quality", "stages": ["x", "x"] },
110
- { "name": "c", "type": "quality", "stages": ["x", "y"], "default": "z" }
111
- ] } } } },
421
+ "manifest": {
422
+ "schema": "wildwinter/extension@0",
423
+ "id": "probe",
424
+ "name": "Probe",
425
+ "version": "1.0.0",
426
+ "targets": {
427
+ "storylets": {
428
+ "card": {
429
+ "fields": [
430
+ {
431
+ "name": "a",
432
+ "type": "quality",
433
+ "stages": [
434
+ "only"
435
+ ]
436
+ },
437
+ {
438
+ "name": "b",
439
+ "type": "quality",
440
+ "stages": [
441
+ "x",
442
+ "x"
443
+ ]
444
+ },
445
+ {
446
+ "name": "c",
447
+ "type": "quality",
448
+ "stages": [
449
+ "x",
450
+ "y"
451
+ ],
452
+ "default": "z"
453
+ }
454
+ ]
455
+ }
456
+ }
457
+ }
458
+ },
112
459
  "problems": [
113
- { "path": "targets.storylets.card.fields[0].stages", "code": "quality-too-few-stages" },
114
- { "path": "targets.storylets.card.fields[1].stages", "code": "quality-duplicate-stage" },
115
- { "path": "targets.storylets.card.fields[2].default", "code": "default-misfit" }
460
+ {
461
+ "path": "targets.storylets.card.fields[0].stages",
462
+ "code": "quality-too-few-stages"
463
+ },
464
+ {
465
+ "path": "targets.storylets.card.fields[1].stages",
466
+ "code": "quality-duplicate-stage"
467
+ },
468
+ {
469
+ "path": "targets.storylets.card.fields[2].default",
470
+ "code": "default-misfit"
471
+ }
116
472
  ]
117
473
  },
118
474
  {
119
475
  "name": "renamed stages map old names to current stages",
120
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
121
- "targets": { "storylets": { "card": { "fields": [
122
- { "name": "act", "type": "quality", "stages": ["setup", "turn"], "renamedStages": { "turn": "setup", "old": "gone" } },
123
- { "name": "tone", "type": "enum", "values": ["a", "b"], "renamedStages": { "x": "a" } }
124
- ] } } } },
476
+ "manifest": {
477
+ "schema": "wildwinter/extension@0",
478
+ "id": "probe",
479
+ "name": "Probe",
480
+ "version": "1.0.0",
481
+ "targets": {
482
+ "storylets": {
483
+ "card": {
484
+ "fields": [
485
+ {
486
+ "name": "act",
487
+ "type": "quality",
488
+ "stages": [
489
+ "setup",
490
+ "turn"
491
+ ],
492
+ "renamedStages": {
493
+ "turn": "setup",
494
+ "old": "gone"
495
+ }
496
+ },
497
+ {
498
+ "name": "tone",
499
+ "type": "enum",
500
+ "values": [
501
+ "a",
502
+ "b"
503
+ ],
504
+ "renamedStages": {
505
+ "x": "a"
506
+ }
507
+ }
508
+ ]
509
+ }
510
+ }
511
+ }
512
+ },
125
513
  "problems": [
126
- { "path": "targets.storylets.card.fields[0].renamedStages.turn", "code": "renamed-stages" },
127
- { "path": "targets.storylets.card.fields[0].renamedStages.old", "code": "renamed-stages" },
128
- { "path": "targets.storylets.card.fields[1].renamedStages", "code": "renamed-stages" }
514
+ {
515
+ "path": "targets.storylets.card.fields[0].renamedStages.turn",
516
+ "code": "renamed-stages"
517
+ },
518
+ {
519
+ "path": "targets.storylets.card.fields[0].renamedStages.old",
520
+ "code": "renamed-stages"
521
+ },
522
+ {
523
+ "path": "targets.storylets.card.fields[1].renamedStages",
524
+ "code": "renamed-stages"
525
+ }
129
526
  ]
130
527
  },
131
528
  {
132
529
  "name": "value help names only values the field has",
133
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
134
- "targets": { "storylets": { "card": { "fields": [
135
- { "name": "tone", "type": "enum", "values": ["a", "b"], "valueHelp": { "a": "Fine.", "c": "No such value." } },
136
- { "name": "n", "type": "number", "valueHelp": { "1": "One." } }
137
- ] } } } },
530
+ "manifest": {
531
+ "schema": "wildwinter/extension@0",
532
+ "id": "probe",
533
+ "name": "Probe",
534
+ "version": "1.0.0",
535
+ "targets": {
536
+ "storylets": {
537
+ "card": {
538
+ "fields": [
539
+ {
540
+ "name": "tone",
541
+ "type": "enum",
542
+ "values": [
543
+ "a",
544
+ "b"
545
+ ],
546
+ "valueHelp": {
547
+ "a": "Fine.",
548
+ "c": "No such value."
549
+ }
550
+ },
551
+ {
552
+ "name": "n",
553
+ "type": "number",
554
+ "valueHelp": {
555
+ "1": "One."
556
+ }
557
+ }
558
+ ]
559
+ }
560
+ }
561
+ }
562
+ },
138
563
  "problems": [
139
- { "path": "targets.storylets.card.fields[0].valueHelp.c", "code": "value-help" },
140
- { "path": "targets.storylets.card.fields[1].valueHelp", "code": "value-help" }
564
+ {
565
+ "path": "targets.storylets.card.fields[0].valueHelp.c",
566
+ "code": "value-help"
567
+ },
568
+ {
569
+ "path": "targets.storylets.card.fields[1].valueHelp",
570
+ "code": "value-help"
571
+ }
141
572
  ]
142
573
  },
143
574
  {
144
575
  "name": "a reference names a kind its host can point at",
145
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
576
+ "manifest": {
577
+ "schema": "wildwinter/extension@0",
578
+ "id": "probe",
579
+ "name": "Probe",
580
+ "version": "1.0.0",
146
581
  "targets": {
147
- "storylets": { "card": { "fields": [{ "name": "who", "type": "reference", "to": "cast" }, { "name": "where", "type": "reference" }] } },
148
- "patter": { "line": { "fields": [{ "name": "card", "type": "reference", "to": "card" }] } }
149
- } },
582
+ "storylets": {
583
+ "card": {
584
+ "fields": [
585
+ {
586
+ "name": "who",
587
+ "type": "reference",
588
+ "to": "cast"
589
+ },
590
+ {
591
+ "name": "where",
592
+ "type": "reference"
593
+ }
594
+ ]
595
+ }
596
+ },
597
+ "patter": {
598
+ "line": {
599
+ "fields": [
600
+ {
601
+ "name": "card",
602
+ "type": "reference",
603
+ "to": "card"
604
+ }
605
+ ]
606
+ }
607
+ }
608
+ }
609
+ },
150
610
  "problems": [
151
- { "path": "targets.storylets.card.fields[0].to", "code": "reference-to" },
152
- { "path": "targets.storylets.card.fields[1].to", "code": "reference-to" },
153
- { "path": "targets.patter.line.fields[0].to", "code": "reference-to" }
611
+ {
612
+ "path": "targets.storylets.card.fields[0].to",
613
+ "code": "reference-to"
614
+ },
615
+ {
616
+ "path": "targets.storylets.card.fields[1].to",
617
+ "code": "reference-to"
618
+ },
619
+ {
620
+ "path": "targets.patter.line.fields[0].to",
621
+ "code": "reference-to"
622
+ }
154
623
  ]
155
624
  },
156
625
  {
157
626
  "name": "structured types need their parts",
158
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
159
- "targets": { "storylets": { "card": { "fields": [
160
- { "name": "r", "type": "record", "fields": [] },
161
- { "name": "m", "type": "map", "key": { "type": "number" }, "of": { "type": "text" } },
162
- { "name": "m2", "type": "map", "key": { "type": "text" } },
163
- { "name": "l", "type": "list", "id": "id", "of": { "type": "record", "fields": [{ "name": "at", "type": "number" }] } },
164
- { "name": "l2", "type": "list", "id": "id", "of": { "type": "text" } },
165
- { "name": "l3", "type": "list" }
166
- ] } } } },
627
+ "manifest": {
628
+ "schema": "wildwinter/extension@0",
629
+ "id": "probe",
630
+ "name": "Probe",
631
+ "version": "1.0.0",
632
+ "targets": {
633
+ "storylets": {
634
+ "card": {
635
+ "fields": [
636
+ {
637
+ "name": "r",
638
+ "type": "record",
639
+ "fields": []
640
+ },
641
+ {
642
+ "name": "m",
643
+ "type": "map",
644
+ "key": {
645
+ "type": "number"
646
+ },
647
+ "of": {
648
+ "type": "text"
649
+ }
650
+ },
651
+ {
652
+ "name": "m2",
653
+ "type": "map",
654
+ "key": {
655
+ "type": "text"
656
+ }
657
+ },
658
+ {
659
+ "name": "l",
660
+ "type": "list",
661
+ "id": "id",
662
+ "of": {
663
+ "type": "record",
664
+ "fields": [
665
+ {
666
+ "name": "at",
667
+ "type": "number"
668
+ }
669
+ ]
670
+ }
671
+ },
672
+ {
673
+ "name": "l2",
674
+ "type": "list",
675
+ "id": "id",
676
+ "of": {
677
+ "type": "text"
678
+ }
679
+ },
680
+ {
681
+ "name": "l3",
682
+ "type": "list"
683
+ }
684
+ ]
685
+ }
686
+ }
687
+ }
688
+ },
167
689
  "problems": [
168
- { "path": "targets.storylets.card.fields[0].fields", "code": "record-empty" },
169
- { "path": "targets.storylets.card.fields[1].key", "code": "map-key" },
170
- { "path": "targets.storylets.card.fields[2].of", "code": "missing-of" },
171
- { "path": "targets.storylets.card.fields[3].id", "code": "list-id" },
172
- { "path": "targets.storylets.card.fields[4].id", "code": "list-id" },
173
- { "path": "targets.storylets.card.fields[5].of", "code": "missing-of" }
690
+ {
691
+ "path": "targets.storylets.card.fields[0].fields",
692
+ "code": "record-empty"
693
+ },
694
+ {
695
+ "path": "targets.storylets.card.fields[1].key",
696
+ "code": "map-key"
697
+ },
698
+ {
699
+ "path": "targets.storylets.card.fields[2].of",
700
+ "code": "missing-of"
701
+ },
702
+ {
703
+ "path": "targets.storylets.card.fields[3].id",
704
+ "code": "list-id"
705
+ },
706
+ {
707
+ "path": "targets.storylets.card.fields[4].id",
708
+ "code": "list-id"
709
+ },
710
+ {
711
+ "path": "targets.storylets.card.fields[5].of",
712
+ "code": "missing-of"
713
+ }
174
714
  ]
175
715
  },
176
716
  {
177
717
  "name": "problems inside a structured type are found where they are",
178
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
179
- "targets": { "storylets": { "card": { "fields": [
180
- { "name": "m", "type": "map", "key": { "type": "text" }, "of": { "type": "record", "fields": [
181
- { "name": "a", "type": "enum", "values": [] }, { "name": "a", "type": "text", "editorOnly": true }
182
- ] } }
183
- ] } } } },
718
+ "manifest": {
719
+ "schema": "wildwinter/extension@0",
720
+ "id": "probe",
721
+ "name": "Probe",
722
+ "version": "1.0.0",
723
+ "targets": {
724
+ "storylets": {
725
+ "card": {
726
+ "fields": [
727
+ {
728
+ "name": "m",
729
+ "type": "map",
730
+ "key": {
731
+ "type": "text"
732
+ },
733
+ "of": {
734
+ "type": "record",
735
+ "fields": [
736
+ {
737
+ "name": "a",
738
+ "type": "enum",
739
+ "values": []
740
+ },
741
+ {
742
+ "name": "a",
743
+ "type": "text",
744
+ "editorOnly": true
745
+ }
746
+ ]
747
+ }
748
+ }
749
+ ]
750
+ }
751
+ }
752
+ }
753
+ },
184
754
  "problems": [
185
- { "path": "targets.storylets.card.fields[0].of.fields[0].values", "code": "values-empty" },
186
- { "path": "targets.storylets.card.fields[0].of.fields[1].name", "code": "duplicate-field" },
187
- { "path": "targets.storylets.card.fields[0].of.fields[1].editorOnly", "code": "editor-only-nested" }
755
+ {
756
+ "path": "targets.storylets.card.fields[0].of.fields[0].values",
757
+ "code": "values-empty"
758
+ },
759
+ {
760
+ "path": "targets.storylets.card.fields[0].of.fields[1].name",
761
+ "code": "duplicate-field"
762
+ },
763
+ {
764
+ "path": "targets.storylets.card.fields[0].of.fields[1].editorOnly",
765
+ "code": "editor-only-nested"
766
+ }
188
767
  ]
189
768
  },
190
769
  {
191
770
  "name": "a given default must fit, in every type",
192
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
193
- "targets": { "storylets": { "card": { "fields": [
194
- { "name": "a", "type": "number", "default": "1" },
195
- { "name": "b", "type": "enum", "values": ["x"], "default": "y" },
196
- { "name": "c", "type": "enum", "values": ["x"], "default": "" },
197
- { "name": "d", "type": "flags", "values": ["x"], "default": ["x", "z"] },
198
- { "name": "e", "type": "number", "min": 1, "default": 0 },
199
- { "name": "f", "type": "record", "fields": [{ "name": "g", "type": "boolean" }], "default": { "g": 1 } },
200
- { "name": "h", "type": "list", "of": { "type": "number" }, "default": [1, "2"] }
201
- ] } } } },
771
+ "manifest": {
772
+ "schema": "wildwinter/extension@0",
773
+ "id": "probe",
774
+ "name": "Probe",
775
+ "version": "1.0.0",
776
+ "targets": {
777
+ "storylets": {
778
+ "card": {
779
+ "fields": [
780
+ {
781
+ "name": "a",
782
+ "type": "number",
783
+ "default": "1"
784
+ },
785
+ {
786
+ "name": "b",
787
+ "type": "enum",
788
+ "values": [
789
+ "x"
790
+ ],
791
+ "default": "y"
792
+ },
793
+ {
794
+ "name": "c",
795
+ "type": "enum",
796
+ "values": [
797
+ "x"
798
+ ],
799
+ "default": ""
800
+ },
801
+ {
802
+ "name": "d",
803
+ "type": "flags",
804
+ "values": [
805
+ "x"
806
+ ],
807
+ "default": [
808
+ "x",
809
+ "z"
810
+ ]
811
+ },
812
+ {
813
+ "name": "e",
814
+ "type": "number",
815
+ "min": 1,
816
+ "default": 0
817
+ },
818
+ {
819
+ "name": "f",
820
+ "type": "record",
821
+ "fields": [
822
+ {
823
+ "name": "g",
824
+ "type": "boolean"
825
+ }
826
+ ],
827
+ "default": {
828
+ "g": 1
829
+ }
830
+ },
831
+ {
832
+ "name": "h",
833
+ "type": "list",
834
+ "of": {
835
+ "type": "number"
836
+ },
837
+ "default": [
838
+ 1,
839
+ "2"
840
+ ]
841
+ }
842
+ ]
843
+ }
844
+ }
845
+ }
846
+ },
202
847
  "problems": [
203
- { "path": "targets.storylets.card.fields[0].default", "code": "default-misfit" },
204
- { "path": "targets.storylets.card.fields[1].default", "code": "default-misfit" },
205
- { "path": "targets.storylets.card.fields[3].default", "code": "default-misfit" },
206
- { "path": "targets.storylets.card.fields[4].default", "code": "default-misfit" },
207
- { "path": "targets.storylets.card.fields[5].default", "code": "default-misfit" },
208
- { "path": "targets.storylets.card.fields[6].default", "code": "default-misfit" }
848
+ {
849
+ "path": "targets.storylets.card.fields[0].default",
850
+ "code": "default-misfit"
851
+ },
852
+ {
853
+ "path": "targets.storylets.card.fields[1].default",
854
+ "code": "default-misfit"
855
+ },
856
+ {
857
+ "path": "targets.storylets.card.fields[3].default",
858
+ "code": "default-misfit"
859
+ },
860
+ {
861
+ "path": "targets.storylets.card.fields[4].default",
862
+ "code": "default-misfit"
863
+ },
864
+ {
865
+ "path": "targets.storylets.card.fields[5].default",
866
+ "code": "default-misfit"
867
+ },
868
+ {
869
+ "path": "targets.storylets.card.fields[6].default",
870
+ "code": "default-misfit"
871
+ }
209
872
  ]
210
873
  },
211
874
  {
212
875
  "name": "ranges apply to numbers and run upwards",
213
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
214
- "targets": { "storylets": { "card": { "fields": [
215
- { "name": "a", "type": "number", "min": 5, "max": 1 },
216
- { "name": "b", "type": "text", "max": 3 }
217
- ] } } } },
876
+ "manifest": {
877
+ "schema": "wildwinter/extension@0",
878
+ "id": "probe",
879
+ "name": "Probe",
880
+ "version": "1.0.0",
881
+ "targets": {
882
+ "storylets": {
883
+ "card": {
884
+ "fields": [
885
+ {
886
+ "name": "a",
887
+ "type": "number",
888
+ "min": 5,
889
+ "max": 1
890
+ },
891
+ {
892
+ "name": "b",
893
+ "type": "text",
894
+ "max": 3
895
+ }
896
+ ]
897
+ }
898
+ }
899
+ }
900
+ },
218
901
  "problems": [
219
- { "path": "targets.storylets.card.fields[0].max", "code": "range" },
220
- { "path": "targets.storylets.card.fields[1].max", "code": "range" }
902
+ {
903
+ "path": "targets.storylets.card.fields[0].max",
904
+ "code": "range"
905
+ },
906
+ {
907
+ "path": "targets.storylets.card.fields[1].max",
908
+ "code": "range"
909
+ }
221
910
  ]
222
911
  },
223
912
  {
224
913
  "name": "a misspelt attribute is a warning, not silence",
225
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
226
- "targets": { "storylets": { "card": { "fields": [{ "name": "a", "type": "text", "requird": true }] } } } },
227
- "problems": [{ "path": "targets.storylets.card.fields[0].requird", "code": "unknown-key", "severity": "warning" }]
914
+ "manifest": {
915
+ "schema": "wildwinter/extension@0",
916
+ "id": "probe",
917
+ "name": "Probe",
918
+ "version": "1.0.0",
919
+ "targets": {
920
+ "storylets": {
921
+ "card": {
922
+ "fields": [
923
+ {
924
+ "name": "a",
925
+ "type": "text",
926
+ "requird": true
927
+ }
928
+ ]
929
+ }
930
+ }
931
+ }
932
+ },
933
+ "problems": [
934
+ {
935
+ "path": "targets.storylets.card.fields[0].requird",
936
+ "code": "unknown-key",
937
+ "severity": "warning"
938
+ }
939
+ ]
228
940
  },
229
941
  {
230
942
  "name": "claims: a claimable kind, a declared setting, a scalar, once per setting",
231
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
232
- "settings": [{ "name": "moodField", "default": "mood" }],
943
+ "manifest": {
944
+ "schema": "wildwinter/extension@0",
945
+ "id": "probe",
946
+ "name": "Probe",
947
+ "version": "1.0.0",
948
+ "settings": [
949
+ {
950
+ "name": "moodField",
951
+ "default": "mood"
952
+ }
953
+ ],
233
954
  "targets": {
234
955
  "storylets": {
235
- "deck": { "claims": [{ "setting": "moodField", "type": "text" }] },
236
- "card": { "claims": [
237
- { "setting": "moodField", "type": "text" },
238
- { "setting": "moodField", "type": "text" },
239
- { "setting": "nope", "type": "text" },
240
- { "setting": "moodField", "type": "record", "fields": [{ "name": "a", "type": "text" }] }
241
- ] }
956
+ "deck": {
957
+ "claims": [
958
+ {
959
+ "setting": "moodField",
960
+ "type": "text"
961
+ }
962
+ ]
963
+ },
964
+ "card": {
965
+ "claims": [
966
+ {
967
+ "setting": "moodField",
968
+ "type": "text"
969
+ },
970
+ {
971
+ "setting": "moodField",
972
+ "type": "text"
973
+ },
974
+ {
975
+ "setting": "nope",
976
+ "type": "text"
977
+ },
978
+ {
979
+ "setting": "moodField",
980
+ "type": "record",
981
+ "fields": [
982
+ {
983
+ "name": "a",
984
+ "type": "text"
985
+ }
986
+ ]
987
+ }
988
+ ]
989
+ }
242
990
  }
243
- } },
991
+ }
992
+ },
244
993
  "problems": [
245
- { "path": "targets.storylets.deck.claims[0]", "code": "claim-kind" },
246
- { "path": "targets.storylets.card.claims[1].setting", "code": "claim-duplicate" },
247
- { "path": "targets.storylets.card.claims[2].setting", "code": "claim-setting" },
248
- { "path": "targets.storylets.card.claims[3].type", "code": "claim-type" },
249
- { "path": "targets.storylets.card.claims[3].setting", "code": "claim-duplicate" }
994
+ {
995
+ "path": "targets.storylets.deck.claims[0]",
996
+ "code": "claim-kind"
997
+ },
998
+ {
999
+ "path": "targets.storylets.card.claims[1].setting",
1000
+ "code": "claim-duplicate"
1001
+ },
1002
+ {
1003
+ "path": "targets.storylets.card.claims[2].setting",
1004
+ "code": "claim-setting"
1005
+ },
1006
+ {
1007
+ "path": "targets.storylets.card.claims[3].type",
1008
+ "code": "claim-type"
1009
+ },
1010
+ {
1011
+ "path": "targets.storylets.card.claims[3].setting",
1012
+ "code": "claim-duplicate"
1013
+ }
250
1014
  ]
251
1015
  },
252
1016
  {
253
1017
  "name": "settings: named once each, defaulting to a field name",
254
- "manifest": { "schema": "wildwinter/extension@0", "id": "probe", "name": "Probe", "version": "1.0.0",
255
- "settings": [{ "name": "a", "default": "x" }, { "name": "a", "default": "y" }, { "name": "b" }, { "name": "c", "default": "not a name" }],
256
- "targets": { "storylets": { "card": {} } } },
1018
+ "manifest": {
1019
+ "schema": "wildwinter/extension@0",
1020
+ "id": "probe",
1021
+ "name": "Probe",
1022
+ "version": "1.0.0",
1023
+ "settings": [
1024
+ {
1025
+ "name": "a",
1026
+ "default": "x"
1027
+ },
1028
+ {
1029
+ "name": "a",
1030
+ "default": "y"
1031
+ },
1032
+ {
1033
+ "name": "b"
1034
+ },
1035
+ {
1036
+ "name": "c",
1037
+ "default": "not a name"
1038
+ }
1039
+ ],
1040
+ "targets": {
1041
+ "storylets": {
1042
+ "card": {}
1043
+ }
1044
+ }
1045
+ },
1046
+ "problems": [
1047
+ {
1048
+ "path": "settings[1].name",
1049
+ "code": "setting-duplicate"
1050
+ },
1051
+ {
1052
+ "path": "settings[2].default",
1053
+ "code": "setting-default"
1054
+ },
1055
+ {
1056
+ "path": "settings[3].default",
1057
+ "code": "setting-default"
1058
+ }
1059
+ ]
1060
+ },
1061
+ {
1062
+ "name": "an enum claim may leave out its values, and its value help may describe values the host does not declare",
1063
+ "manifest": {
1064
+ "schema": "wildwinter/extension@0",
1065
+ "id": "probe",
1066
+ "name": "Probe",
1067
+ "version": "1.0.0",
1068
+ "settings": [
1069
+ {
1070
+ "name": "moodField",
1071
+ "default": "mood"
1072
+ }
1073
+ ],
1074
+ "targets": {
1075
+ "storylets": {
1076
+ "card": {
1077
+ "claims": [
1078
+ {
1079
+ "setting": "moodField",
1080
+ "type": "enum",
1081
+ "label": "Mood",
1082
+ "valueHelp": {
1083
+ "calm": "Unhurried.",
1084
+ "wild": "Not one the host has."
1085
+ }
1086
+ }
1087
+ ]
1088
+ }
1089
+ }
1090
+ }
1091
+ },
1092
+ "problems": []
1093
+ },
1094
+ {
1095
+ "name": "an enum field of the extension's own still lists its values",
1096
+ "manifest": {
1097
+ "schema": "wildwinter/extension@0",
1098
+ "id": "probe",
1099
+ "name": "Probe",
1100
+ "version": "1.0.0",
1101
+ "targets": {
1102
+ "storylets": {
1103
+ "card": {
1104
+ "fields": [
1105
+ {
1106
+ "name": "tone",
1107
+ "type": "enum",
1108
+ "valueHelp": {
1109
+ "calm": "x"
1110
+ }
1111
+ }
1112
+ ]
1113
+ }
1114
+ }
1115
+ }
1116
+ },
257
1117
  "problems": [
258
- { "path": "settings[1].name", "code": "setting-duplicate" },
259
- { "path": "settings[2].default", "code": "setting-default" },
260
- { "path": "settings[3].default", "code": "setting-default" }
1118
+ {
1119
+ "path": "targets.storylets.card.fields[0].values",
1120
+ "code": "values-empty"
1121
+ },
1122
+ {
1123
+ "path": "targets.storylets.card.fields[0].valueHelp",
1124
+ "code": "value-help"
1125
+ }
261
1126
  ]
262
1127
  }
263
1128
  ]