@goodbones/core 0.1.0-beta.1 → 0.1.0-beta.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.
Files changed (37) hide show
  1. package/build/dts/domain/manifest-location.d.ts +7 -0
  2. package/build/dts/domain/manifest-location.d.ts.map +1 -0
  3. package/build/dts/index.d.ts +5 -2
  4. package/build/dts/index.d.ts.map +1 -1
  5. package/build/dts/infrastructure/manifest-file.d.ts +10 -2
  6. package/build/dts/infrastructure/manifest-file.d.ts.map +1 -1
  7. package/build/dts/load/policy.d.ts +2 -0
  8. package/build/dts/load/policy.d.ts.map +1 -1
  9. package/build/dts/manifest/expand.d.ts +26 -0
  10. package/build/dts/manifest/expand.d.ts.map +1 -0
  11. package/build/dts/manifest/json-schema.d.ts +8 -0
  12. package/build/dts/manifest/json-schema.d.ts.map +1 -0
  13. package/build/dts/manifest/manifest.d.ts +5 -1
  14. package/build/dts/manifest/manifest.d.ts.map +1 -1
  15. package/build/esm/domain/manifest-location.js +6 -0
  16. package/build/esm/domain/manifest-location.js.map +1 -0
  17. package/build/esm/index.js +3 -1
  18. package/build/esm/index.js.map +1 -1
  19. package/build/esm/infrastructure/manifest-file.js +144 -7
  20. package/build/esm/infrastructure/manifest-file.js.map +1 -1
  21. package/build/esm/load/policy.js +1 -1
  22. package/build/esm/load/policy.js.map +1 -1
  23. package/build/esm/manifest/expand.js +111 -0
  24. package/build/esm/manifest/expand.js.map +1 -0
  25. package/build/esm/manifest/json-schema.js +76 -0
  26. package/build/esm/manifest/json-schema.js.map +1 -0
  27. package/build/esm/manifest/manifest.js +69 -4
  28. package/build/esm/manifest/manifest.js.map +1 -1
  29. package/package.json +7 -3
  30. package/schema/architecture.schema.json +1089 -0
  31. package/src/domain/manifest-location.ts +19 -0
  32. package/src/index.ts +22 -1
  33. package/src/infrastructure/manifest-file.ts +184 -8
  34. package/src/load/policy.ts +5 -1
  35. package/src/manifest/expand.ts +174 -0
  36. package/src/manifest/json-schema.ts +99 -0
  37. package/src/manifest/manifest.ts +110 -9
@@ -0,0 +1,1089 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://dataquail.github.io/goodbones/schema/architecture.schema.json",
4
+ "title": "Architecture manifest",
5
+ "description": "One manifest of a repository's architecture, read by @goodbones/cli and @goodbones/oxlint. See https://dataquail.github.io/goodbones/architecture-rules/manifest/.",
6
+ "type": "object",
7
+ "required": [
8
+ "resolve",
9
+ "tree"
10
+ ],
11
+ "additionalProperties": false,
12
+ "properties": {
13
+ "$schema": {
14
+ "type": "string",
15
+ "description": "For editors. Ignored by the loader."
16
+ },
17
+ "defs": {
18
+ "type": "object",
19
+ "description": "Named fragments, referenced elsewhere in the manifest as `{ use: \"<name>\" }`. A fragment may itself contain `use`.",
20
+ "additionalProperties": true
21
+ },
22
+ "resolve": {
23
+ "anyOf": [
24
+ {
25
+ "$ref": "#/$defs/Use"
26
+ },
27
+ {
28
+ "type": "object",
29
+ "properties": {
30
+ "scopes": {
31
+ "type": "array",
32
+ "items": {
33
+ "anyOf": [
34
+ {
35
+ "$ref": "#/$defs/Use"
36
+ },
37
+ {
38
+ "type": "object",
39
+ "properties": {
40
+ "files": {
41
+ "type": "string"
42
+ },
43
+ "language": {
44
+ "type": "string"
45
+ },
46
+ "options": {}
47
+ },
48
+ "required": [
49
+ "files",
50
+ "language"
51
+ ],
52
+ "additionalProperties": false
53
+ }
54
+ ]
55
+ }
56
+ },
57
+ "unresolved": {
58
+ "type": "string",
59
+ "enum": [
60
+ "error",
61
+ "off"
62
+ ]
63
+ },
64
+ "ignoreUnresolved": {
65
+ "type": "array",
66
+ "items": {
67
+ "type": "string"
68
+ }
69
+ }
70
+ },
71
+ "required": [
72
+ "scopes"
73
+ ],
74
+ "additionalProperties": false
75
+ }
76
+ ]
77
+ },
78
+ "baseline": {
79
+ "type": "string"
80
+ },
81
+ "deny": {
82
+ "type": "array",
83
+ "items": {
84
+ "anyOf": [
85
+ {
86
+ "$ref": "#/$defs/Use"
87
+ },
88
+ {
89
+ "type": "object",
90
+ "properties": {
91
+ "match": {
92
+ "anyOf": [
93
+ {
94
+ "type": "string"
95
+ },
96
+ {
97
+ "type": "array",
98
+ "items": {
99
+ "type": "string"
100
+ }
101
+ }
102
+ ]
103
+ },
104
+ "matchNot": {
105
+ "anyOf": [
106
+ {
107
+ "type": "string"
108
+ },
109
+ {
110
+ "type": "array",
111
+ "items": {
112
+ "type": "string"
113
+ }
114
+ }
115
+ ]
116
+ },
117
+ "except": {
118
+ "anyOf": [
119
+ {
120
+ "type": "string"
121
+ },
122
+ {
123
+ "type": "array",
124
+ "items": {
125
+ "type": "string"
126
+ }
127
+ }
128
+ ]
129
+ },
130
+ "message": {
131
+ "type": "string"
132
+ }
133
+ },
134
+ "required": [
135
+ "match",
136
+ "message"
137
+ ],
138
+ "additionalProperties": false
139
+ }
140
+ ]
141
+ }
142
+ },
143
+ "exports": {
144
+ "type": "array",
145
+ "items": {
146
+ "anyOf": [
147
+ {
148
+ "$ref": "#/$defs/Use"
149
+ },
150
+ {
151
+ "type": "object",
152
+ "properties": {
153
+ "name": {
154
+ "type": "string"
155
+ },
156
+ "message": {
157
+ "type": "string"
158
+ },
159
+ "module": {
160
+ "anyOf": [
161
+ {
162
+ "type": "string"
163
+ },
164
+ {
165
+ "type": "array",
166
+ "items": {
167
+ "type": "string"
168
+ }
169
+ }
170
+ ]
171
+ },
172
+ "symbols": {
173
+ "type": "array",
174
+ "items": {
175
+ "type": "string"
176
+ }
177
+ },
178
+ "kinds": {
179
+ "type": "array",
180
+ "items": {
181
+ "type": "string",
182
+ "enum": [
183
+ "named",
184
+ "default",
185
+ "namespace"
186
+ ]
187
+ }
188
+ },
189
+ "except": {
190
+ "anyOf": [
191
+ {
192
+ "type": "string"
193
+ },
194
+ {
195
+ "type": "array",
196
+ "items": {
197
+ "type": "string"
198
+ }
199
+ }
200
+ ]
201
+ },
202
+ "fix": {
203
+ "type": "string",
204
+ "enum": [
205
+ "subpath-namespace-import"
206
+ ]
207
+ },
208
+ "probe": {
209
+ "anyOf": [
210
+ {
211
+ "$ref": "#/$defs/Use"
212
+ },
213
+ {
214
+ "type": "object",
215
+ "properties": {
216
+ "source": {
217
+ "type": "string"
218
+ },
219
+ "symbol": {
220
+ "type": "string"
221
+ }
222
+ },
223
+ "required": [
224
+ "source",
225
+ "symbol"
226
+ ],
227
+ "additionalProperties": false
228
+ }
229
+ ]
230
+ }
231
+ },
232
+ "required": [
233
+ "name",
234
+ "message",
235
+ "module"
236
+ ],
237
+ "additionalProperties": false
238
+ }
239
+ ]
240
+ }
241
+ },
242
+ "graph": {
243
+ "anyOf": [
244
+ {
245
+ "$ref": "#/$defs/Use"
246
+ },
247
+ {
248
+ "type": "object",
249
+ "properties": {
250
+ "cycles": {
251
+ "type": "array",
252
+ "items": {
253
+ "anyOf": [
254
+ {
255
+ "$ref": "#/$defs/Use"
256
+ },
257
+ {
258
+ "type": "object",
259
+ "properties": {
260
+ "name": {
261
+ "type": "string"
262
+ },
263
+ "message": {
264
+ "type": "string"
265
+ },
266
+ "within": {
267
+ "anyOf": [
268
+ {
269
+ "type": "string"
270
+ },
271
+ {
272
+ "type": "array",
273
+ "items": {
274
+ "type": "string"
275
+ }
276
+ }
277
+ ]
278
+ },
279
+ "withinNot": {
280
+ "anyOf": [
281
+ {
282
+ "type": "string"
283
+ },
284
+ {
285
+ "type": "array",
286
+ "items": {
287
+ "type": "string"
288
+ }
289
+ }
290
+ ]
291
+ }
292
+ },
293
+ "required": [
294
+ "name",
295
+ "message",
296
+ "within"
297
+ ],
298
+ "additionalProperties": false
299
+ }
300
+ ]
301
+ }
302
+ },
303
+ "orphans": {
304
+ "type": "array",
305
+ "items": {
306
+ "anyOf": [
307
+ {
308
+ "$ref": "#/$defs/Use"
309
+ },
310
+ {
311
+ "type": "object",
312
+ "properties": {
313
+ "name": {
314
+ "type": "string"
315
+ },
316
+ "message": {
317
+ "type": "string"
318
+ },
319
+ "within": {
320
+ "anyOf": [
321
+ {
322
+ "type": "string"
323
+ },
324
+ {
325
+ "type": "array",
326
+ "items": {
327
+ "type": "string"
328
+ }
329
+ }
330
+ ]
331
+ },
332
+ "withinNot": {
333
+ "anyOf": [
334
+ {
335
+ "type": "string"
336
+ },
337
+ {
338
+ "type": "array",
339
+ "items": {
340
+ "type": "string"
341
+ }
342
+ }
343
+ ]
344
+ },
345
+ "entry": {
346
+ "anyOf": [
347
+ {
348
+ "type": "string"
349
+ },
350
+ {
351
+ "type": "array",
352
+ "items": {
353
+ "type": "string"
354
+ }
355
+ }
356
+ ]
357
+ }
358
+ },
359
+ "required": [
360
+ "name",
361
+ "message",
362
+ "within",
363
+ "entry"
364
+ ],
365
+ "additionalProperties": false
366
+ }
367
+ ]
368
+ }
369
+ },
370
+ "reach": {
371
+ "type": "array",
372
+ "items": {
373
+ "anyOf": [
374
+ {
375
+ "$ref": "#/$defs/Use"
376
+ },
377
+ {
378
+ "type": "object",
379
+ "properties": {
380
+ "name": {
381
+ "type": "string"
382
+ },
383
+ "message": {
384
+ "type": "string"
385
+ },
386
+ "from": {
387
+ "anyOf": [
388
+ {
389
+ "type": "string"
390
+ },
391
+ {
392
+ "type": "array",
393
+ "items": {
394
+ "type": "string"
395
+ }
396
+ }
397
+ ]
398
+ },
399
+ "fromNot": {
400
+ "anyOf": [
401
+ {
402
+ "type": "string"
403
+ },
404
+ {
405
+ "type": "array",
406
+ "items": {
407
+ "type": "string"
408
+ }
409
+ }
410
+ ]
411
+ },
412
+ "to": {
413
+ "anyOf": [
414
+ {
415
+ "type": "string"
416
+ },
417
+ {
418
+ "type": "array",
419
+ "items": {
420
+ "type": "string"
421
+ }
422
+ }
423
+ ]
424
+ },
425
+ "toNot": {
426
+ "anyOf": [
427
+ {
428
+ "type": "string"
429
+ },
430
+ {
431
+ "type": "array",
432
+ "items": {
433
+ "type": "string"
434
+ }
435
+ }
436
+ ]
437
+ },
438
+ "via": {
439
+ "anyOf": [
440
+ {
441
+ "type": "string"
442
+ },
443
+ {
444
+ "type": "array",
445
+ "items": {
446
+ "type": "string"
447
+ }
448
+ }
449
+ ]
450
+ }
451
+ },
452
+ "required": [
453
+ "name",
454
+ "message",
455
+ "from",
456
+ "to"
457
+ ],
458
+ "additionalProperties": false
459
+ }
460
+ ]
461
+ }
462
+ }
463
+ },
464
+ "additionalProperties": false
465
+ }
466
+ ]
467
+ },
468
+ "limits": {
469
+ "anyOf": [
470
+ {
471
+ "$ref": "#/$defs/Use"
472
+ },
473
+ {
474
+ "type": "object",
475
+ "properties": {
476
+ "unrestricted": {
477
+ "type": "number"
478
+ },
479
+ "partial": {
480
+ "type": "number"
481
+ },
482
+ "coverage": {
483
+ "anyOf": [
484
+ {
485
+ "$ref": "#/$defs/Use"
486
+ },
487
+ {
488
+ "type": "object",
489
+ "properties": {
490
+ "imports": {
491
+ "type": "number"
492
+ },
493
+ "structure": {
494
+ "type": "number"
495
+ },
496
+ "members": {
497
+ "type": "number"
498
+ },
499
+ "surface": {
500
+ "type": "number"
501
+ },
502
+ "graph": {
503
+ "type": "number"
504
+ }
505
+ },
506
+ "additionalProperties": false
507
+ }
508
+ ]
509
+ }
510
+ },
511
+ "additionalProperties": false
512
+ }
513
+ ]
514
+ },
515
+ "aliases": {
516
+ "type": "object",
517
+ "additionalProperties": {
518
+ "type": "string"
519
+ }
520
+ },
521
+ "tree": {
522
+ "type": "object",
523
+ "additionalProperties": {
524
+ "$ref": "#/$defs/ManifestNode"
525
+ }
526
+ }
527
+ },
528
+ "$defs": {
529
+ "ManifestNode": {
530
+ "anyOf": [
531
+ {
532
+ "$ref": "#/$defs/Use"
533
+ },
534
+ {
535
+ "type": "object",
536
+ "properties": {
537
+ "message": {
538
+ "type": "string"
539
+ },
540
+ "partial": {
541
+ "type": "boolean"
542
+ },
543
+ "layout": {
544
+ "type": "string",
545
+ "enum": [
546
+ "open"
547
+ ]
548
+ },
549
+ "name": {
550
+ "anyOf": [
551
+ {
552
+ "type": "string",
553
+ "enum": [
554
+ "kebab-case",
555
+ "camelCase",
556
+ "PascalCase",
557
+ "snake_case"
558
+ ]
559
+ },
560
+ {
561
+ "anyOf": [
562
+ {
563
+ "$ref": "#/$defs/Use"
564
+ },
565
+ {
566
+ "type": "object",
567
+ "properties": {
568
+ "regex": {
569
+ "type": "string"
570
+ },
571
+ "message": {
572
+ "type": "string"
573
+ }
574
+ },
575
+ "required": [
576
+ "regex"
577
+ ],
578
+ "additionalProperties": false
579
+ }
580
+ ]
581
+ },
582
+ {
583
+ "anyOf": [
584
+ {
585
+ "$ref": "#/$defs/Use"
586
+ },
587
+ {
588
+ "type": "object",
589
+ "properties": {
590
+ "like": {
591
+ "type": "string"
592
+ },
593
+ "message": {
594
+ "type": "string"
595
+ }
596
+ },
597
+ "required": [
598
+ "like"
599
+ ],
600
+ "additionalProperties": false
601
+ }
602
+ ]
603
+ }
604
+ ]
605
+ },
606
+ "imports": {
607
+ "anyOf": [
608
+ {
609
+ "$ref": "#/$defs/Use"
610
+ },
611
+ {
612
+ "type": "object",
613
+ "properties": {
614
+ "message": {
615
+ "type": "string"
616
+ },
617
+ "allow": {
618
+ "anyOf": [
619
+ {
620
+ "type": "string"
621
+ },
622
+ {
623
+ "type": "array",
624
+ "items": {
625
+ "type": "string"
626
+ }
627
+ }
628
+ ]
629
+ },
630
+ "external": {
631
+ "type": "array",
632
+ "items": {
633
+ "type": "string"
634
+ }
635
+ },
636
+ "deny": {
637
+ "type": "array",
638
+ "items": {
639
+ "anyOf": [
640
+ {
641
+ "$ref": "#/$defs/Use"
642
+ },
643
+ {
644
+ "type": "object",
645
+ "properties": {
646
+ "match": {
647
+ "anyOf": [
648
+ {
649
+ "type": "string"
650
+ },
651
+ {
652
+ "type": "array",
653
+ "items": {
654
+ "type": "string"
655
+ }
656
+ }
657
+ ]
658
+ },
659
+ "matchNot": {
660
+ "anyOf": [
661
+ {
662
+ "type": "string"
663
+ },
664
+ {
665
+ "type": "array",
666
+ "items": {
667
+ "type": "string"
668
+ }
669
+ }
670
+ ]
671
+ },
672
+ "except": {
673
+ "anyOf": [
674
+ {
675
+ "type": "string"
676
+ },
677
+ {
678
+ "type": "array",
679
+ "items": {
680
+ "type": "string"
681
+ }
682
+ }
683
+ ]
684
+ },
685
+ "message": {
686
+ "type": "string"
687
+ }
688
+ },
689
+ "required": [
690
+ "match",
691
+ "message"
692
+ ],
693
+ "additionalProperties": false
694
+ }
695
+ ]
696
+ }
697
+ },
698
+ "reset": {
699
+ "type": "boolean"
700
+ },
701
+ "unrestricted": {
702
+ "type": "boolean"
703
+ }
704
+ },
705
+ "additionalProperties": false
706
+ }
707
+ ]
708
+ },
709
+ "importedBy": {
710
+ "anyOf": [
711
+ {
712
+ "$ref": "#/$defs/Use"
713
+ },
714
+ {
715
+ "type": "object",
716
+ "properties": {
717
+ "message": {
718
+ "type": "string"
719
+ },
720
+ "allow": {
721
+ "anyOf": [
722
+ {
723
+ "type": "string"
724
+ },
725
+ {
726
+ "type": "array",
727
+ "items": {
728
+ "type": "string"
729
+ }
730
+ }
731
+ ]
732
+ },
733
+ "matchNot": {
734
+ "anyOf": [
735
+ {
736
+ "type": "string"
737
+ },
738
+ {
739
+ "type": "array",
740
+ "items": {
741
+ "type": "string"
742
+ }
743
+ }
744
+ ]
745
+ }
746
+ },
747
+ "required": [
748
+ "message",
749
+ "allow"
750
+ ],
751
+ "additionalProperties": false
752
+ }
753
+ ]
754
+ },
755
+ "members": {
756
+ "type": "array",
757
+ "items": {
758
+ "anyOf": [
759
+ {
760
+ "$ref": "#/$defs/Use"
761
+ },
762
+ {
763
+ "type": "object",
764
+ "properties": {
765
+ "message": {
766
+ "type": "string"
767
+ },
768
+ "subject": {
769
+ "type": "string",
770
+ "enum": [
771
+ "members",
772
+ "calls"
773
+ ]
774
+ },
775
+ "in": {
776
+ "anyOf": [
777
+ {
778
+ "type": "string"
779
+ },
780
+ {
781
+ "type": "array",
782
+ "items": {
783
+ "type": "string"
784
+ }
785
+ }
786
+ ]
787
+ },
788
+ "declares": {
789
+ "type": "array",
790
+ "items": {
791
+ "type": "string",
792
+ "enum": [
793
+ "function",
794
+ "class",
795
+ "variable",
796
+ "type",
797
+ "interface",
798
+ "enum",
799
+ "expression",
800
+ "other"
801
+ ]
802
+ }
803
+ },
804
+ "match": {
805
+ "anyOf": [
806
+ {
807
+ "type": "string"
808
+ },
809
+ {
810
+ "type": "array",
811
+ "items": {
812
+ "type": "string"
813
+ }
814
+ }
815
+ ]
816
+ },
817
+ "matchNot": {
818
+ "anyOf": [
819
+ {
820
+ "type": "string"
821
+ },
822
+ {
823
+ "type": "array",
824
+ "items": {
825
+ "type": "string"
826
+ }
827
+ }
828
+ ]
829
+ },
830
+ "allow": {
831
+ "anyOf": [
832
+ {
833
+ "type": "string"
834
+ },
835
+ {
836
+ "type": "array",
837
+ "items": {
838
+ "type": "string"
839
+ }
840
+ }
841
+ ]
842
+ },
843
+ "probe": {
844
+ "anyOf": [
845
+ {
846
+ "$ref": "#/$defs/Use"
847
+ },
848
+ {
849
+ "type": "object",
850
+ "properties": {
851
+ "source": {
852
+ "type": "string"
853
+ },
854
+ "name": {
855
+ "type": "string"
856
+ }
857
+ },
858
+ "required": [
859
+ "source",
860
+ "name"
861
+ ],
862
+ "additionalProperties": false
863
+ }
864
+ ]
865
+ }
866
+ },
867
+ "required": [
868
+ "message",
869
+ "subject"
870
+ ],
871
+ "additionalProperties": false
872
+ }
873
+ ]
874
+ }
875
+ },
876
+ "surface": {
877
+ "type": "array",
878
+ "items": {
879
+ "anyOf": [
880
+ {
881
+ "$ref": "#/$defs/Use"
882
+ },
883
+ {
884
+ "type": "object",
885
+ "properties": {
886
+ "message": {
887
+ "type": "string"
888
+ },
889
+ "kinds": {
890
+ "type": "array",
891
+ "items": {
892
+ "type": "string",
893
+ "enum": [
894
+ "named",
895
+ "default",
896
+ "namespace"
897
+ ]
898
+ }
899
+ },
900
+ "declares": {
901
+ "type": "array",
902
+ "items": {
903
+ "type": "string",
904
+ "enum": [
905
+ "function",
906
+ "class",
907
+ "variable",
908
+ "type",
909
+ "interface",
910
+ "enum",
911
+ "expression",
912
+ "other"
913
+ ]
914
+ }
915
+ },
916
+ "reexport": {
917
+ "type": "boolean"
918
+ },
919
+ "match": {
920
+ "anyOf": [
921
+ {
922
+ "type": "string"
923
+ },
924
+ {
925
+ "type": "array",
926
+ "items": {
927
+ "type": "string"
928
+ }
929
+ }
930
+ ]
931
+ },
932
+ "matchNot": {
933
+ "anyOf": [
934
+ {
935
+ "type": "string"
936
+ },
937
+ {
938
+ "type": "array",
939
+ "items": {
940
+ "type": "string"
941
+ }
942
+ }
943
+ ]
944
+ },
945
+ "forbid": {
946
+ "type": "boolean"
947
+ },
948
+ "allow": {
949
+ "anyOf": [
950
+ {
951
+ "type": "string"
952
+ },
953
+ {
954
+ "type": "array",
955
+ "items": {
956
+ "type": "string"
957
+ }
958
+ }
959
+ ]
960
+ },
961
+ "convention": {
962
+ "anyOf": [
963
+ {
964
+ "type": "string",
965
+ "enum": [
966
+ "kebab-case",
967
+ "camelCase",
968
+ "PascalCase",
969
+ "snake_case"
970
+ ]
971
+ },
972
+ {
973
+ "anyOf": [
974
+ {
975
+ "$ref": "#/$defs/Use"
976
+ },
977
+ {
978
+ "type": "object",
979
+ "properties": {
980
+ "regex": {
981
+ "type": "string"
982
+ }
983
+ },
984
+ "required": [
985
+ "regex"
986
+ ],
987
+ "additionalProperties": false
988
+ }
989
+ ]
990
+ }
991
+ ]
992
+ },
993
+ "count": {
994
+ "anyOf": [
995
+ {
996
+ "$ref": "#/$defs/Use"
997
+ },
998
+ {
999
+ "type": "object",
1000
+ "properties": {
1001
+ "min": {
1002
+ "type": "number"
1003
+ },
1004
+ "max": {
1005
+ "type": "number"
1006
+ }
1007
+ },
1008
+ "additionalProperties": false
1009
+ }
1010
+ ]
1011
+ },
1012
+ "except": {
1013
+ "anyOf": [
1014
+ {
1015
+ "type": "string"
1016
+ },
1017
+ {
1018
+ "type": "array",
1019
+ "items": {
1020
+ "type": "string"
1021
+ }
1022
+ }
1023
+ ]
1024
+ },
1025
+ "probe": {
1026
+ "anyOf": [
1027
+ {
1028
+ "$ref": "#/$defs/Use"
1029
+ },
1030
+ {
1031
+ "type": "object",
1032
+ "properties": {
1033
+ "source": {
1034
+ "type": "string"
1035
+ }
1036
+ },
1037
+ "required": [
1038
+ "source"
1039
+ ],
1040
+ "additionalProperties": false
1041
+ }
1042
+ ]
1043
+ }
1044
+ },
1045
+ "required": [
1046
+ "message"
1047
+ ],
1048
+ "additionalProperties": false
1049
+ }
1050
+ ]
1051
+ }
1052
+ },
1053
+ "requires": {
1054
+ "type": "array",
1055
+ "items": {
1056
+ "type": "string"
1057
+ }
1058
+ },
1059
+ "requiresNot": {
1060
+ "type": "array",
1061
+ "items": {
1062
+ "type": "string"
1063
+ }
1064
+ },
1065
+ "children": {
1066
+ "type": "object",
1067
+ "additionalProperties": {
1068
+ "$ref": "#/$defs/ManifestNode"
1069
+ }
1070
+ }
1071
+ },
1072
+ "additionalProperties": false
1073
+ }
1074
+ ]
1075
+ },
1076
+ "Use": {
1077
+ "type": "object",
1078
+ "description": "A reference to a fragment under the top-level `defs`. Replaced by a copy of the fragment before the manifest is decoded; any other key written beside `use` overrides the fragment's key of the same name.",
1079
+ "properties": {
1080
+ "use": {
1081
+ "type": "string"
1082
+ }
1083
+ },
1084
+ "required": [
1085
+ "use"
1086
+ ]
1087
+ }
1088
+ }
1089
+ }