@hozu/cli 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/commands/add-widget.d.ts.map +1 -1
  2. package/dist/commands/add-widget.js +5 -4
  3. package/dist/commands/add-widget.js.map +1 -1
  4. package/dist/commands/app.d.ts.map +1 -1
  5. package/dist/commands/app.js +10 -0
  6. package/dist/commands/app.js.map +1 -1
  7. package/dist/commands/build.d.ts.map +1 -1
  8. package/dist/commands/build.js +5 -1
  9. package/dist/commands/build.js.map +1 -1
  10. package/dist/commands/call.d.ts +16 -0
  11. package/dist/commands/call.d.ts.map +1 -0
  12. package/dist/commands/call.js +100 -0
  13. package/dist/commands/call.js.map +1 -0
  14. package/dist/commands/check.d.ts +10 -1
  15. package/dist/commands/check.d.ts.map +1 -1
  16. package/dist/commands/check.js +43 -28
  17. package/dist/commands/check.js.map +1 -1
  18. package/dist/commands/explain.d.ts.map +1 -1
  19. package/dist/commands/explain.js +2 -1
  20. package/dist/commands/explain.js.map +1 -1
  21. package/dist/commands/impact.js +1 -1
  22. package/dist/commands/impact.js.map +1 -1
  23. package/dist/commands/inspect.d.ts.map +1 -1
  24. package/dist/commands/inspect.js +9 -0
  25. package/dist/commands/inspect.js.map +1 -1
  26. package/dist/commands/map.d.ts.map +1 -1
  27. package/dist/commands/map.js +7 -2
  28. package/dist/commands/map.js.map +1 -1
  29. package/dist/commands/migrate.d.ts +17 -16
  30. package/dist/commands/migrate.d.ts.map +1 -1
  31. package/dist/commands/migrate.js +205 -297
  32. package/dist/commands/migrate.js.map +1 -1
  33. package/dist/commands/scaffold.d.ts.map +1 -1
  34. package/dist/commands/scaffold.js +8 -4
  35. package/dist/commands/scaffold.js.map +1 -1
  36. package/dist/contract.d.ts +84 -1
  37. package/dist/contract.d.ts.map +1 -1
  38. package/dist/load.d.ts +2 -1
  39. package/dist/load.d.ts.map +1 -1
  40. package/dist/load.js +5 -4
  41. package/dist/load.js.map +1 -1
  42. package/dist/main.d.ts.map +1 -1
  43. package/dist/main.js +33 -5
  44. package/dist/main.js.map +1 -1
  45. package/dist/migrate/ast.d.ts +31 -0
  46. package/dist/migrate/ast.d.ts.map +1 -0
  47. package/dist/migrate/ast.js +61 -0
  48. package/dist/migrate/ast.js.map +1 -0
  49. package/dist/migrate/record-ir.d.ts +2 -0
  50. package/dist/migrate/record-ir.d.ts.map +1 -0
  51. package/dist/migrate/record-ir.js +16 -0
  52. package/dist/migrate/record-ir.js.map +1 -0
  53. package/dist/migrate/step-0.11.d.ts +15 -0
  54. package/dist/migrate/step-0.11.d.ts.map +1 -0
  55. package/dist/migrate/step-0.11.js +88 -0
  56. package/dist/migrate/step-0.11.js.map +1 -0
  57. package/dist/migrate/step-0.12.d.ts +6 -0
  58. package/dist/migrate/step-0.12.d.ts.map +1 -0
  59. package/dist/migrate/step-0.12.js +14 -0
  60. package/dist/migrate/step-0.12.js.map +1 -0
  61. package/dist/migrate/steps.d.ts +28 -0
  62. package/dist/migrate/steps.d.ts.map +1 -0
  63. package/dist/migrate/steps.js +42 -0
  64. package/dist/migrate/steps.js.map +1 -0
  65. package/dist/output.d.ts.map +1 -1
  66. package/dist/output.js +2 -0
  67. package/dist/output.js.map +1 -1
  68. package/package.json +8 -8
  69. package/schema/call.schema.json +136 -0
  70. package/schema/check.schema.json +26 -2
  71. package/schema/explain.schema.json +14 -1
  72. package/schema/impact.schema.json +22 -1
  73. package/schema/inspect.schema.json +75 -4
  74. package/schema/map.schema.json +17 -0
  75. package/schema/migrate.schema.json +740 -0
  76. package/schema/plan.schema.json +4 -2
  77. package/schema/render.schema.json +3 -1
  78. package/schema/validate.schema.json +3 -1
  79. package/dist/commands/migrate-agent.d.ts +0 -12
  80. package/dist/commands/migrate-agent.d.ts.map +0 -1
  81. package/dist/commands/migrate-agent.js +0 -6
  82. package/dist/commands/migrate-agent.js.map +0 -1
  83. package/dist/commands/migrate-app.d.ts +0 -15
  84. package/dist/commands/migrate-app.d.ts.map +0 -1
  85. package/dist/commands/migrate-app.js +0 -334
  86. package/dist/commands/migrate-app.js.map +0 -1
  87. package/dist/commands/migrate-ast.d.ts +0 -63
  88. package/dist/commands/migrate-ast.d.ts.map +0 -1
  89. package/dist/commands/migrate-ast.js +0 -257
  90. package/dist/commands/migrate-ast.js.map +0 -1
  91. package/dist/commands/migrate-forms.d.ts +0 -4
  92. package/dist/commands/migrate-forms.d.ts.map +0 -1
  93. package/dist/commands/migrate-forms.js +0 -120
  94. package/dist/commands/migrate-forms.js.map +0 -1
  95. package/dist/commands/migrate-freshness.d.ts +0 -4
  96. package/dist/commands/migrate-freshness.d.ts.map +0 -1
  97. package/dist/commands/migrate-freshness.js +0 -47
  98. package/dist/commands/migrate-freshness.js.map +0 -1
  99. package/dist/commands/migrate-head.d.ts +0 -8
  100. package/dist/commands/migrate-head.d.ts.map +0 -1
  101. package/dist/commands/migrate-head.js +0 -132
  102. package/dist/commands/migrate-head.js.map +0 -1
  103. package/dist/commands/migrate-links.d.ts +0 -5
  104. package/dist/commands/migrate-links.d.ts.map +0 -1
  105. package/dist/commands/migrate-links.js +0 -55
  106. package/dist/commands/migrate-links.js.map +0 -1
  107. package/dist/commands/migrate-lists.d.ts +0 -9
  108. package/dist/commands/migrate-lists.d.ts.map +0 -1
  109. package/dist/commands/migrate-lists.js +0 -225
  110. package/dist/commands/migrate-lists.js.map +0 -1
  111. package/dist/commands/migrate-normalize.d.ts +0 -27
  112. package/dist/commands/migrate-normalize.d.ts.map +0 -1
  113. package/dist/commands/migrate-normalize.js +0 -252
  114. package/dist/commands/migrate-normalize.js.map +0 -1
  115. package/dist/commands/migrate-ops.d.ts +0 -4
  116. package/dist/commands/migrate-ops.d.ts.map +0 -1
  117. package/dist/commands/migrate-ops.js +0 -192
  118. package/dist/commands/migrate-ops.js.map +0 -1
  119. package/dist/commands/migrate-parts.d.ts +0 -7
  120. package/dist/commands/migrate-parts.d.ts.map +0 -1
  121. package/dist/commands/migrate-parts.js +0 -166
  122. package/dist/commands/migrate-parts.js.map +0 -1
  123. package/dist/commands/migrate-stale.d.ts +0 -24
  124. package/dist/commands/migrate-stale.d.ts.map +0 -1
  125. package/dist/commands/migrate-stale.js +0 -114
  126. package/dist/commands/migrate-stale.js.map +0 -1
@@ -0,0 +1,740 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$ref": "#/definitions/MigrateOutput",
4
+ "definitions": {
5
+ "MigrateOutput": {
6
+ "type": "object",
7
+ "properties": {
8
+ "ok": {
9
+ "type": "boolean"
10
+ },
11
+ "from": {
12
+ "type": "string",
13
+ "description": "The installed Hozu version (from node_modules/@hozu/core)."
14
+ },
15
+ "to": {
16
+ "type": "string",
17
+ "description": "The CLI's version: where the chain of steps ends."
18
+ },
19
+ "phase": {
20
+ "type": "string",
21
+ "enum": [
22
+ "rewrite",
23
+ "verify",
24
+ "current"
25
+ ],
26
+ "description": "`rewrite`: the source was older than the CLI, so it was rewritten and the dependencies raised. `verify`: the dependencies are current, so the saved IR was compared and the app checked. `current`: nothing to migrate."
27
+ },
28
+ "dryRun": {
29
+ "type": "boolean"
30
+ },
31
+ "steps": {
32
+ "type": "array",
33
+ "items": {
34
+ "type": "object",
35
+ "properties": {
36
+ "from": {
37
+ "type": "string"
38
+ },
39
+ "to": {
40
+ "type": "string"
41
+ },
42
+ "summary": {
43
+ "type": "string"
44
+ }
45
+ },
46
+ "required": [
47
+ "from",
48
+ "to",
49
+ "summary"
50
+ ],
51
+ "additionalProperties": false
52
+ }
53
+ },
54
+ "changed": {
55
+ "type": "array",
56
+ "items": {
57
+ "type": "object",
58
+ "properties": {
59
+ "file": {
60
+ "type": "string"
61
+ },
62
+ "edits": {
63
+ "type": "number"
64
+ }
65
+ },
66
+ "required": [
67
+ "file",
68
+ "edits"
69
+ ],
70
+ "additionalProperties": false
71
+ }
72
+ },
73
+ "notes": {
74
+ "type": "array",
75
+ "items": {
76
+ "$ref": "#/definitions/MigrateNote"
77
+ }
78
+ },
79
+ "packages": {
80
+ "type": "array",
81
+ "items": {
82
+ "type": "object",
83
+ "properties": {
84
+ "name": {
85
+ "type": "string"
86
+ },
87
+ "from": {
88
+ "type": "string"
89
+ },
90
+ "to": {
91
+ "type": "string"
92
+ }
93
+ },
94
+ "required": [
95
+ "name",
96
+ "from",
97
+ "to"
98
+ ],
99
+ "additionalProperties": false
100
+ }
101
+ },
102
+ "record": {
103
+ "type": [
104
+ "string",
105
+ "null"
106
+ ]
107
+ },
108
+ "ir": {
109
+ "type": "object",
110
+ "properties": {
111
+ "compared": {
112
+ "type": "boolean"
113
+ },
114
+ "skipped": {
115
+ "type": [
116
+ "string",
117
+ "null"
118
+ ]
119
+ },
120
+ "differences": {
121
+ "type": "array",
122
+ "items": {
123
+ "type": "string"
124
+ }
125
+ }
126
+ },
127
+ "required": [
128
+ "compared",
129
+ "skipped",
130
+ "differences"
131
+ ],
132
+ "additionalProperties": false
133
+ },
134
+ "guide": {
135
+ "type": "array",
136
+ "items": {
137
+ "type": "string"
138
+ }
139
+ },
140
+ "check": {
141
+ "anyOf": [
142
+ {
143
+ "$ref": "#/definitions/CheckOutput"
144
+ },
145
+ {
146
+ "type": "null"
147
+ }
148
+ ]
149
+ },
150
+ "next": {
151
+ "type": "array",
152
+ "items": {
153
+ "type": "string"
154
+ }
155
+ }
156
+ },
157
+ "required": [
158
+ "ok",
159
+ "from",
160
+ "to",
161
+ "phase",
162
+ "dryRun",
163
+ "steps",
164
+ "changed",
165
+ "notes",
166
+ "packages",
167
+ "record",
168
+ "ir",
169
+ "guide",
170
+ "check",
171
+ "next"
172
+ ],
173
+ "additionalProperties": false
174
+ },
175
+ "MigrateNote": {
176
+ "type": "object",
177
+ "properties": {
178
+ "file": {
179
+ "type": "string"
180
+ },
181
+ "line": {
182
+ "type": "number"
183
+ },
184
+ "message": {
185
+ "type": "string"
186
+ },
187
+ "see": {
188
+ "type": [
189
+ "string",
190
+ "null"
191
+ ]
192
+ }
193
+ },
194
+ "required": [
195
+ "file",
196
+ "line",
197
+ "message",
198
+ "see"
199
+ ],
200
+ "additionalProperties": false
201
+ },
202
+ "CheckOutput": {
203
+ "type": "object",
204
+ "properties": {
205
+ "ok": {
206
+ "type": "boolean"
207
+ },
208
+ "types": {
209
+ "type": "object",
210
+ "properties": {
211
+ "ok": {
212
+ "type": "boolean"
213
+ },
214
+ "skipped": {
215
+ "type": "boolean"
216
+ },
217
+ "errors": {
218
+ "type": "array",
219
+ "items": {
220
+ "$ref": "#/definitions/TypeIssue"
221
+ }
222
+ }
223
+ },
224
+ "required": [
225
+ "ok",
226
+ "skipped",
227
+ "errors"
228
+ ],
229
+ "additionalProperties": false
230
+ },
231
+ "validate": {
232
+ "$ref": "#/definitions/ValidateOutput"
233
+ },
234
+ "overrides": {
235
+ "type": "array",
236
+ "items": {
237
+ "$ref": "#/definitions/CheckOverrides"
238
+ }
239
+ },
240
+ "timings": {
241
+ "type": "object",
242
+ "properties": {
243
+ "types": {
244
+ "type": "number"
245
+ },
246
+ "load": {
247
+ "type": "number"
248
+ },
249
+ "validate": {
250
+ "type": "number"
251
+ }
252
+ },
253
+ "required": [
254
+ "types",
255
+ "load",
256
+ "validate"
257
+ ],
258
+ "additionalProperties": false,
259
+ "description": "Milliseconds; the type check runs in parallel with loading and validating (ADR 0050 D)."
260
+ }
261
+ },
262
+ "required": [
263
+ "ok",
264
+ "types",
265
+ "validate",
266
+ "overrides",
267
+ "timings"
268
+ ],
269
+ "additionalProperties": false
270
+ },
271
+ "TypeIssue": {
272
+ "type": "object",
273
+ "properties": {
274
+ "file": {
275
+ "type": "string"
276
+ },
277
+ "line": {
278
+ "type": "number"
279
+ },
280
+ "column": {
281
+ "type": "number"
282
+ },
283
+ "code": {
284
+ "type": "string"
285
+ },
286
+ "message": {
287
+ "type": "string"
288
+ }
289
+ },
290
+ "required": [
291
+ "file",
292
+ "line",
293
+ "column",
294
+ "code",
295
+ "message"
296
+ ],
297
+ "additionalProperties": false
298
+ },
299
+ "ValidateOutput": {
300
+ "type": "object",
301
+ "properties": {
302
+ "ok": {
303
+ "type": "boolean"
304
+ },
305
+ "hash": {
306
+ "type": "string"
307
+ },
308
+ "summary": {
309
+ "type": "object",
310
+ "properties": {
311
+ "errors": {
312
+ "type": "number"
313
+ },
314
+ "warnings": {
315
+ "type": "number"
316
+ }
317
+ },
318
+ "required": [
319
+ "errors",
320
+ "warnings"
321
+ ],
322
+ "additionalProperties": false
323
+ },
324
+ "coverage": {
325
+ "type": "object",
326
+ "additionalProperties": {
327
+ "$ref": "#/definitions/Coverage"
328
+ }
329
+ },
330
+ "lock": {
331
+ "$ref": "#/definitions/LockState"
332
+ },
333
+ "styles": {
334
+ "type": "string",
335
+ "enum": [
336
+ "checked",
337
+ "unavailable"
338
+ ]
339
+ },
340
+ "diagnostics": {
341
+ "type": "array",
342
+ "items": {
343
+ "$ref": "#/definitions/Diagnostic"
344
+ }
345
+ }
346
+ },
347
+ "required": [
348
+ "ok",
349
+ "hash",
350
+ "summary",
351
+ "coverage",
352
+ "lock",
353
+ "styles",
354
+ "diagnostics"
355
+ ],
356
+ "additionalProperties": false
357
+ },
358
+ "Coverage": {
359
+ "type": "object",
360
+ "properties": {
361
+ "covered": {
362
+ "type": "number"
363
+ },
364
+ "total": {
365
+ "type": "number"
366
+ },
367
+ "transitions": {
368
+ "type": "number"
369
+ }
370
+ },
371
+ "required": [
372
+ "covered",
373
+ "total",
374
+ "transitions"
375
+ ],
376
+ "additionalProperties": false
377
+ },
378
+ "LockState": {
379
+ "type": "string",
380
+ "enum": [
381
+ "missing",
382
+ "current",
383
+ "stale",
384
+ "updated",
385
+ "skipped"
386
+ ]
387
+ },
388
+ "Diagnostic": {
389
+ "type": "object",
390
+ "properties": {
391
+ "code": {
392
+ "$ref": "#/definitions/DiagnosticCode"
393
+ },
394
+ "severity": {
395
+ "$ref": "#/definitions/Severity"
396
+ },
397
+ "message": {
398
+ "type": "string"
399
+ },
400
+ "location": {
401
+ "$ref": "#/definitions/Location"
402
+ },
403
+ "cause": {
404
+ "type": "string"
405
+ },
406
+ "fix": {
407
+ "anyOf": [
408
+ {
409
+ "$ref": "#/definitions/Fix"
410
+ },
411
+ {
412
+ "type": "null"
413
+ }
414
+ ]
415
+ }
416
+ },
417
+ "required": [
418
+ "code",
419
+ "severity",
420
+ "message",
421
+ "location",
422
+ "cause",
423
+ "fix"
424
+ ],
425
+ "additionalProperties": false
426
+ },
427
+ "DiagnosticCode": {
428
+ "type": "string",
429
+ "enum": [
430
+ "HZ001",
431
+ "HZ002",
432
+ "HZ003",
433
+ "HZ004",
434
+ "HZ005",
435
+ "HZ006",
436
+ "HZ007",
437
+ "HZ008",
438
+ "HZ009",
439
+ "HZ010",
440
+ "HZ011",
441
+ "HZ012",
442
+ "HZ013",
443
+ "HZ014",
444
+ "HZ015",
445
+ "HZ016",
446
+ "HZ017",
447
+ "HZ018",
448
+ "HZ019",
449
+ "HZ020",
450
+ "HZ021",
451
+ "HZ022",
452
+ "HZ023",
453
+ "HZ024",
454
+ "HZ025",
455
+ "HZ026",
456
+ "HZ027",
457
+ "HZ028",
458
+ "HZ029",
459
+ "HZ030",
460
+ "HZ031",
461
+ "HZ032",
462
+ "HZ033",
463
+ "HZ034",
464
+ "HZ035",
465
+ "HZ036",
466
+ "HZ037",
467
+ "HZ038",
468
+ "HZ039",
469
+ "HZ040",
470
+ "HZ041",
471
+ "HZ042",
472
+ "HZ043",
473
+ "HZ044",
474
+ "HZ045",
475
+ "HZ046",
476
+ "HZ047",
477
+ "HZ048",
478
+ "HZ049",
479
+ "HZ050",
480
+ "HZ051",
481
+ "HZ052",
482
+ "HZ053",
483
+ "HZ054",
484
+ "HZ055",
485
+ "HZ056",
486
+ "HZ057",
487
+ "HZ058",
488
+ "HZ059",
489
+ "HZ060",
490
+ "HZ061",
491
+ "HZ062",
492
+ "HZ063",
493
+ "HZ064",
494
+ "HZ070",
495
+ "HZ071",
496
+ "HZ072",
497
+ "HZ073",
498
+ "HZ074",
499
+ "HZ075",
500
+ "HZ076",
501
+ "HZ077",
502
+ "HZ078",
503
+ "HZ079",
504
+ "HZ080",
505
+ "HZ081",
506
+ "HZ082"
507
+ ]
508
+ },
509
+ "Severity": {
510
+ "type": "string",
511
+ "enum": [
512
+ "error",
513
+ "warning"
514
+ ]
515
+ },
516
+ "Location": {
517
+ "type": "object",
518
+ "properties": {
519
+ "feature": {
520
+ "type": [
521
+ "string",
522
+ "null"
523
+ ]
524
+ },
525
+ "pointer": {
526
+ "type": "string"
527
+ },
528
+ "source": {
529
+ "anyOf": [
530
+ {
531
+ "$ref": "#/definitions/SourceLoc"
532
+ },
533
+ {
534
+ "type": "null"
535
+ }
536
+ ]
537
+ }
538
+ },
539
+ "required": [
540
+ "feature",
541
+ "pointer",
542
+ "source"
543
+ ],
544
+ "additionalProperties": false
545
+ },
546
+ "SourceLoc": {
547
+ "type": "object",
548
+ "properties": {
549
+ "file": {
550
+ "type": "string"
551
+ },
552
+ "line": {
553
+ "type": "number"
554
+ },
555
+ "column": {
556
+ "type": "number"
557
+ }
558
+ },
559
+ "required": [
560
+ "file",
561
+ "line",
562
+ "column"
563
+ ],
564
+ "additionalProperties": false
565
+ },
566
+ "Fix": {
567
+ "type": "object",
568
+ "properties": {
569
+ "summary": {
570
+ "type": "string"
571
+ },
572
+ "snippet": {
573
+ "type": [
574
+ "string",
575
+ "null"
576
+ ]
577
+ },
578
+ "patch": {
579
+ "anyOf": [
580
+ {
581
+ "type": "array",
582
+ "items": {
583
+ "$ref": "#/definitions/JsonPatchOp"
584
+ }
585
+ },
586
+ {
587
+ "type": "null"
588
+ }
589
+ ]
590
+ }
591
+ },
592
+ "required": [
593
+ "summary",
594
+ "snippet",
595
+ "patch"
596
+ ],
597
+ "additionalProperties": false
598
+ },
599
+ "JsonPatchOp": {
600
+ "anyOf": [
601
+ {
602
+ "type": "object",
603
+ "properties": {
604
+ "op": {
605
+ "type": "string",
606
+ "enum": [
607
+ "add",
608
+ "replace"
609
+ ]
610
+ },
611
+ "path": {
612
+ "type": "string"
613
+ },
614
+ "value": {
615
+ "$ref": "#/definitions/Json"
616
+ }
617
+ },
618
+ "required": [
619
+ "op",
620
+ "path",
621
+ "value"
622
+ ],
623
+ "additionalProperties": false
624
+ },
625
+ {
626
+ "type": "object",
627
+ "properties": {
628
+ "op": {
629
+ "type": "string",
630
+ "const": "remove"
631
+ },
632
+ "path": {
633
+ "type": "string"
634
+ }
635
+ },
636
+ "required": [
637
+ "op",
638
+ "path"
639
+ ],
640
+ "additionalProperties": false
641
+ }
642
+ ]
643
+ },
644
+ "Json": {
645
+ "anyOf": [
646
+ {
647
+ "type": "null"
648
+ },
649
+ {
650
+ "type": "boolean"
651
+ },
652
+ {
653
+ "type": "number"
654
+ },
655
+ {
656
+ "type": "string"
657
+ },
658
+ {
659
+ "type": "array",
660
+ "items": {
661
+ "$ref": "#/definitions/Json"
662
+ }
663
+ },
664
+ {
665
+ "type": "object",
666
+ "additionalProperties": {
667
+ "$ref": "#/definitions/Json"
668
+ }
669
+ }
670
+ ]
671
+ },
672
+ "CheckOverrides": {
673
+ "type": "object",
674
+ "properties": {
675
+ "component": {
676
+ "type": "string"
677
+ },
678
+ "overrides": {
679
+ "type": "number"
680
+ },
681
+ "uses": {
682
+ "type": "array",
683
+ "items": {
684
+ "$ref": "#/definitions/ComponentUseSite"
685
+ }
686
+ }
687
+ },
688
+ "required": [
689
+ "component",
690
+ "overrides",
691
+ "uses"
692
+ ],
693
+ "additionalProperties": false
694
+ },
695
+ "ComponentUseSite": {
696
+ "type": "object",
697
+ "properties": {
698
+ "feature": {
699
+ "type": "string"
700
+ },
701
+ "node": {
702
+ "type": "string"
703
+ },
704
+ "at": {
705
+ "type": [
706
+ "string",
707
+ "null"
708
+ ]
709
+ },
710
+ "variant": {
711
+ "type": "object",
712
+ "additionalProperties": {
713
+ "type": "string"
714
+ }
715
+ },
716
+ "added": {
717
+ "type": "array",
718
+ "items": {
719
+ "type": "string"
720
+ }
721
+ },
722
+ "overrides": {
723
+ "type": "array",
724
+ "items": {
725
+ "type": "string"
726
+ }
727
+ }
728
+ },
729
+ "required": [
730
+ "feature",
731
+ "node",
732
+ "at",
733
+ "variant",
734
+ "added",
735
+ "overrides"
736
+ ],
737
+ "additionalProperties": false
738
+ }
739
+ }
740
+ }