@goodbones/core 0.1.0-beta.2 → 0.1.0-beta.3

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 (33) hide show
  1. package/build/dts/domain/manifest-location.d.ts +2 -0
  2. package/build/dts/domain/manifest-location.d.ts.map +1 -1
  3. package/build/dts/index.d.ts +3 -2
  4. package/build/dts/index.d.ts.map +1 -1
  5. package/build/dts/infrastructure/manifest-file.d.ts +1 -0
  6. package/build/dts/infrastructure/manifest-file.d.ts.map +1 -1
  7. package/build/dts/infrastructure/manifest-include.d.ts +16 -0
  8. package/build/dts/infrastructure/manifest-include.d.ts.map +1 -0
  9. package/build/dts/manifest/json-schema.d.ts +2 -0
  10. package/build/dts/manifest/json-schema.d.ts.map +1 -1
  11. package/build/dts/manifest/manifest.d.ts +1 -1
  12. package/build/dts/manifest/manifest.d.ts.map +1 -1
  13. package/build/esm/domain/manifest-location.js +16 -1
  14. package/build/esm/domain/manifest-location.js.map +1 -1
  15. package/build/esm/index.js +3 -1
  16. package/build/esm/index.js.map +1 -1
  17. package/build/esm/infrastructure/manifest-file.js +31 -17
  18. package/build/esm/infrastructure/manifest-file.js.map +1 -1
  19. package/build/esm/infrastructure/manifest-include.js +187 -0
  20. package/build/esm/infrastructure/manifest-include.js.map +1 -0
  21. package/build/esm/manifest/json-schema.js +72 -17
  22. package/build/esm/manifest/json-schema.js.map +1 -1
  23. package/build/esm/manifest/manifest.js +7 -18
  24. package/build/esm/manifest/manifest.js.map +1 -1
  25. package/package.json +1 -1
  26. package/schema/architecture-node.schema.json +1518 -0
  27. package/schema/architecture.schema.json +1102 -691
  28. package/src/domain/manifest-location.ts +22 -0
  29. package/src/index.ts +13 -1
  30. package/src/infrastructure/manifest-file.ts +37 -17
  31. package/src/infrastructure/manifest-include.ts +318 -0
  32. package/src/manifest/json-schema.ts +83 -18
  33. package/src/manifest/manifest.ts +11 -20
@@ -0,0 +1,1518 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://dataquail.github.io/goodbones/schema/architecture-node.schema.json",
4
+ "title": "Architecture manifest node",
5
+ "description": "One node of an architecture manifest's tree, as a file the manifest includes. See https://dataquail.github.io/goodbones/architecture-rules/manifest/#splitting-the-manifest-include.",
6
+ "type": "object",
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string",
10
+ "description": "For editors. Ignored by the loader."
11
+ },
12
+ "defs": {
13
+ "type": "object",
14
+ "description": "Named fragments, referenced elsewhere in the manifest as `{ use: \"<name>\" }`. A fragment may itself contain `use`. Every file's `defs` share one namespace.",
15
+ "additionalProperties": true
16
+ },
17
+ "message": {
18
+ "type": "string"
19
+ },
20
+ "partial": {
21
+ "type": "boolean"
22
+ },
23
+ "layout": {
24
+ "type": "string",
25
+ "enum": [
26
+ "open"
27
+ ]
28
+ },
29
+ "name": {
30
+ "anyOf": [
31
+ {
32
+ "type": "string",
33
+ "enum": [
34
+ "kebab-case",
35
+ "camelCase",
36
+ "PascalCase",
37
+ "snake_case"
38
+ ]
39
+ },
40
+ {
41
+ "anyOf": [
42
+ {
43
+ "$ref": "#/$defs/Use"
44
+ },
45
+ {
46
+ "$ref": "#/$defs/Include"
47
+ },
48
+ {
49
+ "type": "object",
50
+ "properties": {
51
+ "regex": {
52
+ "type": "string"
53
+ },
54
+ "message": {
55
+ "type": "string"
56
+ }
57
+ },
58
+ "required": [
59
+ "regex"
60
+ ],
61
+ "additionalProperties": false
62
+ }
63
+ ]
64
+ },
65
+ {
66
+ "anyOf": [
67
+ {
68
+ "$ref": "#/$defs/Use"
69
+ },
70
+ {
71
+ "$ref": "#/$defs/Include"
72
+ },
73
+ {
74
+ "type": "object",
75
+ "properties": {
76
+ "like": {
77
+ "type": "string"
78
+ },
79
+ "message": {
80
+ "type": "string"
81
+ }
82
+ },
83
+ "required": [
84
+ "like"
85
+ ],
86
+ "additionalProperties": false
87
+ }
88
+ ]
89
+ }
90
+ ]
91
+ },
92
+ "imports": {
93
+ "anyOf": [
94
+ {
95
+ "$ref": "#/$defs/Use"
96
+ },
97
+ {
98
+ "$ref": "#/$defs/Include"
99
+ },
100
+ {
101
+ "type": "object",
102
+ "properties": {
103
+ "message": {
104
+ "type": "string"
105
+ },
106
+ "allow": {
107
+ "anyOf": [
108
+ {
109
+ "type": "string"
110
+ },
111
+ {
112
+ "anyOf": [
113
+ {
114
+ "$ref": "#/$defs/Include"
115
+ },
116
+ {
117
+ "type": "array",
118
+ "items": {
119
+ "type": "string"
120
+ }
121
+ }
122
+ ]
123
+ }
124
+ ]
125
+ },
126
+ "external": {
127
+ "anyOf": [
128
+ {
129
+ "$ref": "#/$defs/Include"
130
+ },
131
+ {
132
+ "type": "array",
133
+ "items": {
134
+ "type": "string"
135
+ }
136
+ }
137
+ ]
138
+ },
139
+ "deny": {
140
+ "anyOf": [
141
+ {
142
+ "$ref": "#/$defs/Include"
143
+ },
144
+ {
145
+ "type": "array",
146
+ "items": {
147
+ "anyOf": [
148
+ {
149
+ "$ref": "#/$defs/Use"
150
+ },
151
+ {
152
+ "$ref": "#/$defs/Include"
153
+ },
154
+ {
155
+ "type": "object",
156
+ "properties": {
157
+ "match": {
158
+ "anyOf": [
159
+ {
160
+ "type": "string"
161
+ },
162
+ {
163
+ "anyOf": [
164
+ {
165
+ "$ref": "#/$defs/Include"
166
+ },
167
+ {
168
+ "type": "array",
169
+ "items": {
170
+ "type": "string"
171
+ }
172
+ }
173
+ ]
174
+ }
175
+ ]
176
+ },
177
+ "matchNot": {
178
+ "anyOf": [
179
+ {
180
+ "type": "string"
181
+ },
182
+ {
183
+ "anyOf": [
184
+ {
185
+ "$ref": "#/$defs/Include"
186
+ },
187
+ {
188
+ "type": "array",
189
+ "items": {
190
+ "type": "string"
191
+ }
192
+ }
193
+ ]
194
+ }
195
+ ]
196
+ },
197
+ "except": {
198
+ "anyOf": [
199
+ {
200
+ "type": "string"
201
+ },
202
+ {
203
+ "anyOf": [
204
+ {
205
+ "$ref": "#/$defs/Include"
206
+ },
207
+ {
208
+ "type": "array",
209
+ "items": {
210
+ "type": "string"
211
+ }
212
+ }
213
+ ]
214
+ }
215
+ ]
216
+ },
217
+ "message": {
218
+ "type": "string"
219
+ }
220
+ },
221
+ "required": [
222
+ "match",
223
+ "message"
224
+ ],
225
+ "additionalProperties": false
226
+ }
227
+ ]
228
+ }
229
+ }
230
+ ]
231
+ },
232
+ "reset": {
233
+ "type": "boolean"
234
+ },
235
+ "unrestricted": {
236
+ "type": "boolean"
237
+ }
238
+ },
239
+ "additionalProperties": false
240
+ }
241
+ ]
242
+ },
243
+ "importedBy": {
244
+ "anyOf": [
245
+ {
246
+ "$ref": "#/$defs/Use"
247
+ },
248
+ {
249
+ "$ref": "#/$defs/Include"
250
+ },
251
+ {
252
+ "type": "object",
253
+ "properties": {
254
+ "message": {
255
+ "type": "string"
256
+ },
257
+ "allow": {
258
+ "anyOf": [
259
+ {
260
+ "type": "string"
261
+ },
262
+ {
263
+ "anyOf": [
264
+ {
265
+ "$ref": "#/$defs/Include"
266
+ },
267
+ {
268
+ "type": "array",
269
+ "items": {
270
+ "type": "string"
271
+ }
272
+ }
273
+ ]
274
+ }
275
+ ]
276
+ },
277
+ "matchNot": {
278
+ "anyOf": [
279
+ {
280
+ "type": "string"
281
+ },
282
+ {
283
+ "anyOf": [
284
+ {
285
+ "$ref": "#/$defs/Include"
286
+ },
287
+ {
288
+ "type": "array",
289
+ "items": {
290
+ "type": "string"
291
+ }
292
+ }
293
+ ]
294
+ }
295
+ ]
296
+ }
297
+ },
298
+ "required": [
299
+ "message",
300
+ "allow"
301
+ ],
302
+ "additionalProperties": false
303
+ }
304
+ ]
305
+ },
306
+ "members": {
307
+ "anyOf": [
308
+ {
309
+ "$ref": "#/$defs/Include"
310
+ },
311
+ {
312
+ "type": "array",
313
+ "items": {
314
+ "anyOf": [
315
+ {
316
+ "$ref": "#/$defs/Use"
317
+ },
318
+ {
319
+ "$ref": "#/$defs/Include"
320
+ },
321
+ {
322
+ "type": "object",
323
+ "properties": {
324
+ "message": {
325
+ "type": "string"
326
+ },
327
+ "subject": {
328
+ "type": "string",
329
+ "enum": [
330
+ "members",
331
+ "calls"
332
+ ]
333
+ },
334
+ "in": {
335
+ "anyOf": [
336
+ {
337
+ "type": "string"
338
+ },
339
+ {
340
+ "anyOf": [
341
+ {
342
+ "$ref": "#/$defs/Include"
343
+ },
344
+ {
345
+ "type": "array",
346
+ "items": {
347
+ "type": "string"
348
+ }
349
+ }
350
+ ]
351
+ }
352
+ ]
353
+ },
354
+ "declares": {
355
+ "anyOf": [
356
+ {
357
+ "$ref": "#/$defs/Include"
358
+ },
359
+ {
360
+ "type": "array",
361
+ "items": {
362
+ "type": "string",
363
+ "enum": [
364
+ "function",
365
+ "class",
366
+ "variable",
367
+ "type",
368
+ "interface",
369
+ "enum",
370
+ "expression",
371
+ "other"
372
+ ]
373
+ }
374
+ }
375
+ ]
376
+ },
377
+ "match": {
378
+ "anyOf": [
379
+ {
380
+ "type": "string"
381
+ },
382
+ {
383
+ "anyOf": [
384
+ {
385
+ "$ref": "#/$defs/Include"
386
+ },
387
+ {
388
+ "type": "array",
389
+ "items": {
390
+ "type": "string"
391
+ }
392
+ }
393
+ ]
394
+ }
395
+ ]
396
+ },
397
+ "matchNot": {
398
+ "anyOf": [
399
+ {
400
+ "type": "string"
401
+ },
402
+ {
403
+ "anyOf": [
404
+ {
405
+ "$ref": "#/$defs/Include"
406
+ },
407
+ {
408
+ "type": "array",
409
+ "items": {
410
+ "type": "string"
411
+ }
412
+ }
413
+ ]
414
+ }
415
+ ]
416
+ },
417
+ "allow": {
418
+ "anyOf": [
419
+ {
420
+ "type": "string"
421
+ },
422
+ {
423
+ "anyOf": [
424
+ {
425
+ "$ref": "#/$defs/Include"
426
+ },
427
+ {
428
+ "type": "array",
429
+ "items": {
430
+ "type": "string"
431
+ }
432
+ }
433
+ ]
434
+ }
435
+ ]
436
+ },
437
+ "probe": {
438
+ "anyOf": [
439
+ {
440
+ "$ref": "#/$defs/Use"
441
+ },
442
+ {
443
+ "$ref": "#/$defs/Include"
444
+ },
445
+ {
446
+ "type": "object",
447
+ "properties": {
448
+ "source": {
449
+ "type": "string"
450
+ },
451
+ "name": {
452
+ "type": "string"
453
+ }
454
+ },
455
+ "required": [
456
+ "source",
457
+ "name"
458
+ ],
459
+ "additionalProperties": false
460
+ }
461
+ ]
462
+ }
463
+ },
464
+ "required": [
465
+ "message",
466
+ "subject"
467
+ ],
468
+ "additionalProperties": false
469
+ }
470
+ ]
471
+ }
472
+ }
473
+ ]
474
+ },
475
+ "surface": {
476
+ "anyOf": [
477
+ {
478
+ "$ref": "#/$defs/Include"
479
+ },
480
+ {
481
+ "type": "array",
482
+ "items": {
483
+ "anyOf": [
484
+ {
485
+ "$ref": "#/$defs/Use"
486
+ },
487
+ {
488
+ "$ref": "#/$defs/Include"
489
+ },
490
+ {
491
+ "type": "object",
492
+ "properties": {
493
+ "message": {
494
+ "type": "string"
495
+ },
496
+ "kinds": {
497
+ "anyOf": [
498
+ {
499
+ "$ref": "#/$defs/Include"
500
+ },
501
+ {
502
+ "type": "array",
503
+ "items": {
504
+ "type": "string",
505
+ "enum": [
506
+ "named",
507
+ "default",
508
+ "namespace"
509
+ ]
510
+ }
511
+ }
512
+ ]
513
+ },
514
+ "declares": {
515
+ "anyOf": [
516
+ {
517
+ "$ref": "#/$defs/Include"
518
+ },
519
+ {
520
+ "type": "array",
521
+ "items": {
522
+ "type": "string",
523
+ "enum": [
524
+ "function",
525
+ "class",
526
+ "variable",
527
+ "type",
528
+ "interface",
529
+ "enum",
530
+ "expression",
531
+ "other"
532
+ ]
533
+ }
534
+ }
535
+ ]
536
+ },
537
+ "reexport": {
538
+ "type": "boolean"
539
+ },
540
+ "match": {
541
+ "anyOf": [
542
+ {
543
+ "type": "string"
544
+ },
545
+ {
546
+ "anyOf": [
547
+ {
548
+ "$ref": "#/$defs/Include"
549
+ },
550
+ {
551
+ "type": "array",
552
+ "items": {
553
+ "type": "string"
554
+ }
555
+ }
556
+ ]
557
+ }
558
+ ]
559
+ },
560
+ "matchNot": {
561
+ "anyOf": [
562
+ {
563
+ "type": "string"
564
+ },
565
+ {
566
+ "anyOf": [
567
+ {
568
+ "$ref": "#/$defs/Include"
569
+ },
570
+ {
571
+ "type": "array",
572
+ "items": {
573
+ "type": "string"
574
+ }
575
+ }
576
+ ]
577
+ }
578
+ ]
579
+ },
580
+ "forbid": {
581
+ "type": "boolean"
582
+ },
583
+ "allow": {
584
+ "anyOf": [
585
+ {
586
+ "type": "string"
587
+ },
588
+ {
589
+ "anyOf": [
590
+ {
591
+ "$ref": "#/$defs/Include"
592
+ },
593
+ {
594
+ "type": "array",
595
+ "items": {
596
+ "type": "string"
597
+ }
598
+ }
599
+ ]
600
+ }
601
+ ]
602
+ },
603
+ "convention": {
604
+ "anyOf": [
605
+ {
606
+ "type": "string",
607
+ "enum": [
608
+ "kebab-case",
609
+ "camelCase",
610
+ "PascalCase",
611
+ "snake_case"
612
+ ]
613
+ },
614
+ {
615
+ "anyOf": [
616
+ {
617
+ "$ref": "#/$defs/Use"
618
+ },
619
+ {
620
+ "$ref": "#/$defs/Include"
621
+ },
622
+ {
623
+ "type": "object",
624
+ "properties": {
625
+ "regex": {
626
+ "type": "string"
627
+ }
628
+ },
629
+ "required": [
630
+ "regex"
631
+ ],
632
+ "additionalProperties": false
633
+ }
634
+ ]
635
+ }
636
+ ]
637
+ },
638
+ "count": {
639
+ "anyOf": [
640
+ {
641
+ "$ref": "#/$defs/Use"
642
+ },
643
+ {
644
+ "$ref": "#/$defs/Include"
645
+ },
646
+ {
647
+ "type": "object",
648
+ "properties": {
649
+ "min": {
650
+ "type": "number"
651
+ },
652
+ "max": {
653
+ "type": "number"
654
+ }
655
+ },
656
+ "additionalProperties": false
657
+ }
658
+ ]
659
+ },
660
+ "except": {
661
+ "anyOf": [
662
+ {
663
+ "type": "string"
664
+ },
665
+ {
666
+ "anyOf": [
667
+ {
668
+ "$ref": "#/$defs/Include"
669
+ },
670
+ {
671
+ "type": "array",
672
+ "items": {
673
+ "type": "string"
674
+ }
675
+ }
676
+ ]
677
+ }
678
+ ]
679
+ },
680
+ "probe": {
681
+ "anyOf": [
682
+ {
683
+ "$ref": "#/$defs/Use"
684
+ },
685
+ {
686
+ "$ref": "#/$defs/Include"
687
+ },
688
+ {
689
+ "type": "object",
690
+ "properties": {
691
+ "source": {
692
+ "type": "string"
693
+ }
694
+ },
695
+ "required": [
696
+ "source"
697
+ ],
698
+ "additionalProperties": false
699
+ }
700
+ ]
701
+ }
702
+ },
703
+ "required": [
704
+ "message"
705
+ ],
706
+ "additionalProperties": false
707
+ }
708
+ ]
709
+ }
710
+ }
711
+ ]
712
+ },
713
+ "requires": {
714
+ "anyOf": [
715
+ {
716
+ "$ref": "#/$defs/Include"
717
+ },
718
+ {
719
+ "type": "array",
720
+ "items": {
721
+ "type": "string"
722
+ }
723
+ }
724
+ ]
725
+ },
726
+ "requiresNot": {
727
+ "anyOf": [
728
+ {
729
+ "$ref": "#/$defs/Include"
730
+ },
731
+ {
732
+ "type": "array",
733
+ "items": {
734
+ "type": "string"
735
+ }
736
+ }
737
+ ]
738
+ },
739
+ "children": {
740
+ "type": "object",
741
+ "additionalProperties": {
742
+ "$ref": "#/$defs/ManifestNode"
743
+ }
744
+ }
745
+ },
746
+ "additionalProperties": false,
747
+ "$defs": {
748
+ "ManifestNode": {
749
+ "anyOf": [
750
+ {
751
+ "$ref": "#/$defs/Use"
752
+ },
753
+ {
754
+ "$ref": "#/$defs/Include"
755
+ },
756
+ {
757
+ "type": "object",
758
+ "properties": {
759
+ "message": {
760
+ "type": "string"
761
+ },
762
+ "partial": {
763
+ "type": "boolean"
764
+ },
765
+ "layout": {
766
+ "type": "string",
767
+ "enum": [
768
+ "open"
769
+ ]
770
+ },
771
+ "name": {
772
+ "anyOf": [
773
+ {
774
+ "type": "string",
775
+ "enum": [
776
+ "kebab-case",
777
+ "camelCase",
778
+ "PascalCase",
779
+ "snake_case"
780
+ ]
781
+ },
782
+ {
783
+ "anyOf": [
784
+ {
785
+ "$ref": "#/$defs/Use"
786
+ },
787
+ {
788
+ "$ref": "#/$defs/Include"
789
+ },
790
+ {
791
+ "type": "object",
792
+ "properties": {
793
+ "regex": {
794
+ "type": "string"
795
+ },
796
+ "message": {
797
+ "type": "string"
798
+ }
799
+ },
800
+ "required": [
801
+ "regex"
802
+ ],
803
+ "additionalProperties": false
804
+ }
805
+ ]
806
+ },
807
+ {
808
+ "anyOf": [
809
+ {
810
+ "$ref": "#/$defs/Use"
811
+ },
812
+ {
813
+ "$ref": "#/$defs/Include"
814
+ },
815
+ {
816
+ "type": "object",
817
+ "properties": {
818
+ "like": {
819
+ "type": "string"
820
+ },
821
+ "message": {
822
+ "type": "string"
823
+ }
824
+ },
825
+ "required": [
826
+ "like"
827
+ ],
828
+ "additionalProperties": false
829
+ }
830
+ ]
831
+ }
832
+ ]
833
+ },
834
+ "imports": {
835
+ "anyOf": [
836
+ {
837
+ "$ref": "#/$defs/Use"
838
+ },
839
+ {
840
+ "$ref": "#/$defs/Include"
841
+ },
842
+ {
843
+ "type": "object",
844
+ "properties": {
845
+ "message": {
846
+ "type": "string"
847
+ },
848
+ "allow": {
849
+ "anyOf": [
850
+ {
851
+ "type": "string"
852
+ },
853
+ {
854
+ "anyOf": [
855
+ {
856
+ "$ref": "#/$defs/Include"
857
+ },
858
+ {
859
+ "type": "array",
860
+ "items": {
861
+ "type": "string"
862
+ }
863
+ }
864
+ ]
865
+ }
866
+ ]
867
+ },
868
+ "external": {
869
+ "anyOf": [
870
+ {
871
+ "$ref": "#/$defs/Include"
872
+ },
873
+ {
874
+ "type": "array",
875
+ "items": {
876
+ "type": "string"
877
+ }
878
+ }
879
+ ]
880
+ },
881
+ "deny": {
882
+ "anyOf": [
883
+ {
884
+ "$ref": "#/$defs/Include"
885
+ },
886
+ {
887
+ "type": "array",
888
+ "items": {
889
+ "anyOf": [
890
+ {
891
+ "$ref": "#/$defs/Use"
892
+ },
893
+ {
894
+ "$ref": "#/$defs/Include"
895
+ },
896
+ {
897
+ "type": "object",
898
+ "properties": {
899
+ "match": {
900
+ "anyOf": [
901
+ {
902
+ "type": "string"
903
+ },
904
+ {
905
+ "anyOf": [
906
+ {
907
+ "$ref": "#/$defs/Include"
908
+ },
909
+ {
910
+ "type": "array",
911
+ "items": {
912
+ "type": "string"
913
+ }
914
+ }
915
+ ]
916
+ }
917
+ ]
918
+ },
919
+ "matchNot": {
920
+ "anyOf": [
921
+ {
922
+ "type": "string"
923
+ },
924
+ {
925
+ "anyOf": [
926
+ {
927
+ "$ref": "#/$defs/Include"
928
+ },
929
+ {
930
+ "type": "array",
931
+ "items": {
932
+ "type": "string"
933
+ }
934
+ }
935
+ ]
936
+ }
937
+ ]
938
+ },
939
+ "except": {
940
+ "anyOf": [
941
+ {
942
+ "type": "string"
943
+ },
944
+ {
945
+ "anyOf": [
946
+ {
947
+ "$ref": "#/$defs/Include"
948
+ },
949
+ {
950
+ "type": "array",
951
+ "items": {
952
+ "type": "string"
953
+ }
954
+ }
955
+ ]
956
+ }
957
+ ]
958
+ },
959
+ "message": {
960
+ "type": "string"
961
+ }
962
+ },
963
+ "required": [
964
+ "match",
965
+ "message"
966
+ ],
967
+ "additionalProperties": false
968
+ }
969
+ ]
970
+ }
971
+ }
972
+ ]
973
+ },
974
+ "reset": {
975
+ "type": "boolean"
976
+ },
977
+ "unrestricted": {
978
+ "type": "boolean"
979
+ }
980
+ },
981
+ "additionalProperties": false
982
+ }
983
+ ]
984
+ },
985
+ "importedBy": {
986
+ "anyOf": [
987
+ {
988
+ "$ref": "#/$defs/Use"
989
+ },
990
+ {
991
+ "$ref": "#/$defs/Include"
992
+ },
993
+ {
994
+ "type": "object",
995
+ "properties": {
996
+ "message": {
997
+ "type": "string"
998
+ },
999
+ "allow": {
1000
+ "anyOf": [
1001
+ {
1002
+ "type": "string"
1003
+ },
1004
+ {
1005
+ "anyOf": [
1006
+ {
1007
+ "$ref": "#/$defs/Include"
1008
+ },
1009
+ {
1010
+ "type": "array",
1011
+ "items": {
1012
+ "type": "string"
1013
+ }
1014
+ }
1015
+ ]
1016
+ }
1017
+ ]
1018
+ },
1019
+ "matchNot": {
1020
+ "anyOf": [
1021
+ {
1022
+ "type": "string"
1023
+ },
1024
+ {
1025
+ "anyOf": [
1026
+ {
1027
+ "$ref": "#/$defs/Include"
1028
+ },
1029
+ {
1030
+ "type": "array",
1031
+ "items": {
1032
+ "type": "string"
1033
+ }
1034
+ }
1035
+ ]
1036
+ }
1037
+ ]
1038
+ }
1039
+ },
1040
+ "required": [
1041
+ "message",
1042
+ "allow"
1043
+ ],
1044
+ "additionalProperties": false
1045
+ }
1046
+ ]
1047
+ },
1048
+ "members": {
1049
+ "anyOf": [
1050
+ {
1051
+ "$ref": "#/$defs/Include"
1052
+ },
1053
+ {
1054
+ "type": "array",
1055
+ "items": {
1056
+ "anyOf": [
1057
+ {
1058
+ "$ref": "#/$defs/Use"
1059
+ },
1060
+ {
1061
+ "$ref": "#/$defs/Include"
1062
+ },
1063
+ {
1064
+ "type": "object",
1065
+ "properties": {
1066
+ "message": {
1067
+ "type": "string"
1068
+ },
1069
+ "subject": {
1070
+ "type": "string",
1071
+ "enum": [
1072
+ "members",
1073
+ "calls"
1074
+ ]
1075
+ },
1076
+ "in": {
1077
+ "anyOf": [
1078
+ {
1079
+ "type": "string"
1080
+ },
1081
+ {
1082
+ "anyOf": [
1083
+ {
1084
+ "$ref": "#/$defs/Include"
1085
+ },
1086
+ {
1087
+ "type": "array",
1088
+ "items": {
1089
+ "type": "string"
1090
+ }
1091
+ }
1092
+ ]
1093
+ }
1094
+ ]
1095
+ },
1096
+ "declares": {
1097
+ "anyOf": [
1098
+ {
1099
+ "$ref": "#/$defs/Include"
1100
+ },
1101
+ {
1102
+ "type": "array",
1103
+ "items": {
1104
+ "type": "string",
1105
+ "enum": [
1106
+ "function",
1107
+ "class",
1108
+ "variable",
1109
+ "type",
1110
+ "interface",
1111
+ "enum",
1112
+ "expression",
1113
+ "other"
1114
+ ]
1115
+ }
1116
+ }
1117
+ ]
1118
+ },
1119
+ "match": {
1120
+ "anyOf": [
1121
+ {
1122
+ "type": "string"
1123
+ },
1124
+ {
1125
+ "anyOf": [
1126
+ {
1127
+ "$ref": "#/$defs/Include"
1128
+ },
1129
+ {
1130
+ "type": "array",
1131
+ "items": {
1132
+ "type": "string"
1133
+ }
1134
+ }
1135
+ ]
1136
+ }
1137
+ ]
1138
+ },
1139
+ "matchNot": {
1140
+ "anyOf": [
1141
+ {
1142
+ "type": "string"
1143
+ },
1144
+ {
1145
+ "anyOf": [
1146
+ {
1147
+ "$ref": "#/$defs/Include"
1148
+ },
1149
+ {
1150
+ "type": "array",
1151
+ "items": {
1152
+ "type": "string"
1153
+ }
1154
+ }
1155
+ ]
1156
+ }
1157
+ ]
1158
+ },
1159
+ "allow": {
1160
+ "anyOf": [
1161
+ {
1162
+ "type": "string"
1163
+ },
1164
+ {
1165
+ "anyOf": [
1166
+ {
1167
+ "$ref": "#/$defs/Include"
1168
+ },
1169
+ {
1170
+ "type": "array",
1171
+ "items": {
1172
+ "type": "string"
1173
+ }
1174
+ }
1175
+ ]
1176
+ }
1177
+ ]
1178
+ },
1179
+ "probe": {
1180
+ "anyOf": [
1181
+ {
1182
+ "$ref": "#/$defs/Use"
1183
+ },
1184
+ {
1185
+ "$ref": "#/$defs/Include"
1186
+ },
1187
+ {
1188
+ "type": "object",
1189
+ "properties": {
1190
+ "source": {
1191
+ "type": "string"
1192
+ },
1193
+ "name": {
1194
+ "type": "string"
1195
+ }
1196
+ },
1197
+ "required": [
1198
+ "source",
1199
+ "name"
1200
+ ],
1201
+ "additionalProperties": false
1202
+ }
1203
+ ]
1204
+ }
1205
+ },
1206
+ "required": [
1207
+ "message",
1208
+ "subject"
1209
+ ],
1210
+ "additionalProperties": false
1211
+ }
1212
+ ]
1213
+ }
1214
+ }
1215
+ ]
1216
+ },
1217
+ "surface": {
1218
+ "anyOf": [
1219
+ {
1220
+ "$ref": "#/$defs/Include"
1221
+ },
1222
+ {
1223
+ "type": "array",
1224
+ "items": {
1225
+ "anyOf": [
1226
+ {
1227
+ "$ref": "#/$defs/Use"
1228
+ },
1229
+ {
1230
+ "$ref": "#/$defs/Include"
1231
+ },
1232
+ {
1233
+ "type": "object",
1234
+ "properties": {
1235
+ "message": {
1236
+ "type": "string"
1237
+ },
1238
+ "kinds": {
1239
+ "anyOf": [
1240
+ {
1241
+ "$ref": "#/$defs/Include"
1242
+ },
1243
+ {
1244
+ "type": "array",
1245
+ "items": {
1246
+ "type": "string",
1247
+ "enum": [
1248
+ "named",
1249
+ "default",
1250
+ "namespace"
1251
+ ]
1252
+ }
1253
+ }
1254
+ ]
1255
+ },
1256
+ "declares": {
1257
+ "anyOf": [
1258
+ {
1259
+ "$ref": "#/$defs/Include"
1260
+ },
1261
+ {
1262
+ "type": "array",
1263
+ "items": {
1264
+ "type": "string",
1265
+ "enum": [
1266
+ "function",
1267
+ "class",
1268
+ "variable",
1269
+ "type",
1270
+ "interface",
1271
+ "enum",
1272
+ "expression",
1273
+ "other"
1274
+ ]
1275
+ }
1276
+ }
1277
+ ]
1278
+ },
1279
+ "reexport": {
1280
+ "type": "boolean"
1281
+ },
1282
+ "match": {
1283
+ "anyOf": [
1284
+ {
1285
+ "type": "string"
1286
+ },
1287
+ {
1288
+ "anyOf": [
1289
+ {
1290
+ "$ref": "#/$defs/Include"
1291
+ },
1292
+ {
1293
+ "type": "array",
1294
+ "items": {
1295
+ "type": "string"
1296
+ }
1297
+ }
1298
+ ]
1299
+ }
1300
+ ]
1301
+ },
1302
+ "matchNot": {
1303
+ "anyOf": [
1304
+ {
1305
+ "type": "string"
1306
+ },
1307
+ {
1308
+ "anyOf": [
1309
+ {
1310
+ "$ref": "#/$defs/Include"
1311
+ },
1312
+ {
1313
+ "type": "array",
1314
+ "items": {
1315
+ "type": "string"
1316
+ }
1317
+ }
1318
+ ]
1319
+ }
1320
+ ]
1321
+ },
1322
+ "forbid": {
1323
+ "type": "boolean"
1324
+ },
1325
+ "allow": {
1326
+ "anyOf": [
1327
+ {
1328
+ "type": "string"
1329
+ },
1330
+ {
1331
+ "anyOf": [
1332
+ {
1333
+ "$ref": "#/$defs/Include"
1334
+ },
1335
+ {
1336
+ "type": "array",
1337
+ "items": {
1338
+ "type": "string"
1339
+ }
1340
+ }
1341
+ ]
1342
+ }
1343
+ ]
1344
+ },
1345
+ "convention": {
1346
+ "anyOf": [
1347
+ {
1348
+ "type": "string",
1349
+ "enum": [
1350
+ "kebab-case",
1351
+ "camelCase",
1352
+ "PascalCase",
1353
+ "snake_case"
1354
+ ]
1355
+ },
1356
+ {
1357
+ "anyOf": [
1358
+ {
1359
+ "$ref": "#/$defs/Use"
1360
+ },
1361
+ {
1362
+ "$ref": "#/$defs/Include"
1363
+ },
1364
+ {
1365
+ "type": "object",
1366
+ "properties": {
1367
+ "regex": {
1368
+ "type": "string"
1369
+ }
1370
+ },
1371
+ "required": [
1372
+ "regex"
1373
+ ],
1374
+ "additionalProperties": false
1375
+ }
1376
+ ]
1377
+ }
1378
+ ]
1379
+ },
1380
+ "count": {
1381
+ "anyOf": [
1382
+ {
1383
+ "$ref": "#/$defs/Use"
1384
+ },
1385
+ {
1386
+ "$ref": "#/$defs/Include"
1387
+ },
1388
+ {
1389
+ "type": "object",
1390
+ "properties": {
1391
+ "min": {
1392
+ "type": "number"
1393
+ },
1394
+ "max": {
1395
+ "type": "number"
1396
+ }
1397
+ },
1398
+ "additionalProperties": false
1399
+ }
1400
+ ]
1401
+ },
1402
+ "except": {
1403
+ "anyOf": [
1404
+ {
1405
+ "type": "string"
1406
+ },
1407
+ {
1408
+ "anyOf": [
1409
+ {
1410
+ "$ref": "#/$defs/Include"
1411
+ },
1412
+ {
1413
+ "type": "array",
1414
+ "items": {
1415
+ "type": "string"
1416
+ }
1417
+ }
1418
+ ]
1419
+ }
1420
+ ]
1421
+ },
1422
+ "probe": {
1423
+ "anyOf": [
1424
+ {
1425
+ "$ref": "#/$defs/Use"
1426
+ },
1427
+ {
1428
+ "$ref": "#/$defs/Include"
1429
+ },
1430
+ {
1431
+ "type": "object",
1432
+ "properties": {
1433
+ "source": {
1434
+ "type": "string"
1435
+ }
1436
+ },
1437
+ "required": [
1438
+ "source"
1439
+ ],
1440
+ "additionalProperties": false
1441
+ }
1442
+ ]
1443
+ }
1444
+ },
1445
+ "required": [
1446
+ "message"
1447
+ ],
1448
+ "additionalProperties": false
1449
+ }
1450
+ ]
1451
+ }
1452
+ }
1453
+ ]
1454
+ },
1455
+ "requires": {
1456
+ "anyOf": [
1457
+ {
1458
+ "$ref": "#/$defs/Include"
1459
+ },
1460
+ {
1461
+ "type": "array",
1462
+ "items": {
1463
+ "type": "string"
1464
+ }
1465
+ }
1466
+ ]
1467
+ },
1468
+ "requiresNot": {
1469
+ "anyOf": [
1470
+ {
1471
+ "$ref": "#/$defs/Include"
1472
+ },
1473
+ {
1474
+ "type": "array",
1475
+ "items": {
1476
+ "type": "string"
1477
+ }
1478
+ }
1479
+ ]
1480
+ },
1481
+ "children": {
1482
+ "type": "object",
1483
+ "additionalProperties": {
1484
+ "$ref": "#/$defs/ManifestNode"
1485
+ }
1486
+ }
1487
+ },
1488
+ "additionalProperties": false
1489
+ }
1490
+ ]
1491
+ },
1492
+ "Use": {
1493
+ "type": "object",
1494
+ "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.",
1495
+ "properties": {
1496
+ "use": {
1497
+ "type": "string"
1498
+ }
1499
+ },
1500
+ "required": [
1501
+ "use"
1502
+ ]
1503
+ },
1504
+ "Include": {
1505
+ "type": "object",
1506
+ "description": "A reference to another YAML or JSON file, relative to this one. Replaced by that file's whole value before the manifest is decoded; a list item naming a file that holds a list is spliced in. Nothing may be written beside `include`.",
1507
+ "properties": {
1508
+ "include": {
1509
+ "type": "string"
1510
+ }
1511
+ },
1512
+ "required": [
1513
+ "include"
1514
+ ],
1515
+ "additionalProperties": false
1516
+ }
1517
+ }
1518
+ }