@webpieces/tooling-testkit 0.0.1

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.
@@ -0,0 +1,2525 @@
1
+ {
2
+ "schemas": {
3
+ "max-method-lines": {
4
+ "mode": {
5
+ "type": "string",
6
+ "enumValues": [
7
+ "OFF",
8
+ "NEW_METHODS",
9
+ "NEW_AND_MODIFIED_METHODS",
10
+ "NEW_AND_MODIFIED_FILES"
11
+ ],
12
+ "optional": false,
13
+ "nullable": false,
14
+ "nonEmpty": false
15
+ },
16
+ "limit": {
17
+ "type": "number",
18
+ "optional": true,
19
+ "nullable": false,
20
+ "nonEmpty": false
21
+ },
22
+ "disableAllowed": {
23
+ "type": "boolean",
24
+ "optional": true,
25
+ "nullable": false,
26
+ "nonEmpty": false
27
+ },
28
+ "turnOffRuleUntilEpoch": {
29
+ "type": "number",
30
+ "optional": false,
31
+ "nullable": false,
32
+ "nonEmpty": false
33
+ },
34
+ "turnOffRuleWhileOnBranch": {
35
+ "type": "string",
36
+ "optional": false,
37
+ "nullable": true,
38
+ "nonEmpty": false
39
+ }
40
+ },
41
+ "max-file-lines": {
42
+ "mode": {
43
+ "type": "string",
44
+ "enumValues": [
45
+ "OFF",
46
+ "NEW_AND_MODIFIED_FILES"
47
+ ],
48
+ "optional": false,
49
+ "nullable": false,
50
+ "nonEmpty": false
51
+ },
52
+ "limit": {
53
+ "type": "number",
54
+ "optional": true,
55
+ "nullable": false,
56
+ "nonEmpty": false
57
+ },
58
+ "disableAllowed": {
59
+ "type": "boolean",
60
+ "optional": true,
61
+ "nullable": false,
62
+ "nonEmpty": false
63
+ },
64
+ "allowedPaths": {
65
+ "type": "string[]",
66
+ "optional": true,
67
+ "nullable": false,
68
+ "nonEmpty": false
69
+ },
70
+ "turnOffRuleUntilEpoch": {
71
+ "type": "number",
72
+ "optional": false,
73
+ "nullable": false,
74
+ "nonEmpty": false
75
+ },
76
+ "turnOffRuleWhileOnBranch": {
77
+ "type": "string",
78
+ "optional": false,
79
+ "nullable": true,
80
+ "nonEmpty": false
81
+ }
82
+ },
83
+ "require-return-type": {
84
+ "mode": {
85
+ "type": "string",
86
+ "enumValues": [
87
+ "OFF",
88
+ "NEW_METHODS",
89
+ "NEW_AND_MODIFIED_METHODS",
90
+ "NEW_AND_MODIFIED_FILES"
91
+ ],
92
+ "optional": false,
93
+ "nullable": false,
94
+ "nonEmpty": false
95
+ },
96
+ "disableAllowed": {
97
+ "type": "boolean",
98
+ "optional": true,
99
+ "nullable": false,
100
+ "nonEmpty": false
101
+ },
102
+ "turnOffRuleUntilEpoch": {
103
+ "type": "number",
104
+ "optional": false,
105
+ "nullable": false,
106
+ "nonEmpty": false
107
+ },
108
+ "turnOffRuleWhileOnBranch": {
109
+ "type": "string",
110
+ "optional": false,
111
+ "nullable": true,
112
+ "nonEmpty": false
113
+ }
114
+ },
115
+ "no-inline-type-literals": {
116
+ "mode": {
117
+ "type": "string",
118
+ "enumValues": [
119
+ "OFF",
120
+ "NEW_METHODS",
121
+ "NEW_AND_MODIFIED_METHODS",
122
+ "NEW_AND_MODIFIED_FILES"
123
+ ],
124
+ "optional": false,
125
+ "nullable": false,
126
+ "nonEmpty": false
127
+ },
128
+ "disableAllowed": {
129
+ "type": "boolean",
130
+ "optional": true,
131
+ "nullable": false,
132
+ "nonEmpty": false
133
+ },
134
+ "turnOffRuleUntilEpoch": {
135
+ "type": "number",
136
+ "optional": false,
137
+ "nullable": false,
138
+ "nonEmpty": false
139
+ },
140
+ "turnOffRuleWhileOnBranch": {
141
+ "type": "string",
142
+ "optional": false,
143
+ "nullable": true,
144
+ "nonEmpty": false
145
+ }
146
+ },
147
+ "no-any-unknown": {
148
+ "mode": {
149
+ "type": "string",
150
+ "enumValues": [
151
+ "OFF",
152
+ "NEW_AND_MODIFIED_CODE",
153
+ "NEW_AND_MODIFIED_FILES",
154
+ "MODIFIED_PROJECTS",
155
+ "RUN_EVERY_TIME"
156
+ ],
157
+ "optional": false,
158
+ "nullable": false,
159
+ "nonEmpty": false
160
+ },
161
+ "disableAllowed": {
162
+ "type": "boolean",
163
+ "optional": true,
164
+ "nullable": false,
165
+ "nonEmpty": false
166
+ },
167
+ "turnOffRuleUntilEpoch": {
168
+ "type": "number",
169
+ "optional": false,
170
+ "nullable": false,
171
+ "nonEmpty": false
172
+ },
173
+ "turnOffRuleWhileOnBranch": {
174
+ "type": "string",
175
+ "optional": false,
176
+ "nullable": true,
177
+ "nonEmpty": false
178
+ }
179
+ },
180
+ "no-implicit-any": {
181
+ "mode": {
182
+ "type": "string",
183
+ "enumValues": [
184
+ "OFF",
185
+ "NEW_AND_MODIFIED_CODE",
186
+ "NEW_AND_MODIFIED_FILES",
187
+ "MODIFIED_PROJECTS",
188
+ "RUN_EVERY_TIME"
189
+ ],
190
+ "optional": false,
191
+ "nullable": false,
192
+ "nonEmpty": false
193
+ },
194
+ "disableAllowed": {
195
+ "type": "boolean",
196
+ "optional": true,
197
+ "nullable": false,
198
+ "nonEmpty": false
199
+ },
200
+ "turnOffRuleUntilEpoch": {
201
+ "type": "number",
202
+ "optional": false,
203
+ "nullable": false,
204
+ "nonEmpty": false
205
+ },
206
+ "turnOffRuleWhileOnBranch": {
207
+ "type": "string",
208
+ "optional": false,
209
+ "nullable": true,
210
+ "nonEmpty": false
211
+ }
212
+ },
213
+ "prisma-validate-dtos": {
214
+ "mode": {
215
+ "type": "string",
216
+ "enumValues": [
217
+ "OFF",
218
+ "MODIFIED_CLASS",
219
+ "NEW_AND_MODIFIED_FILES"
220
+ ],
221
+ "optional": false,
222
+ "nullable": false,
223
+ "nonEmpty": false
224
+ },
225
+ "disableAllowed": {
226
+ "type": "boolean",
227
+ "optional": true,
228
+ "nullable": false,
229
+ "nonEmpty": false
230
+ },
231
+ "prismaSchemaPath": {
232
+ "type": "string",
233
+ "optional": true,
234
+ "nullable": false,
235
+ "nonEmpty": false
236
+ },
237
+ "dtoSourcePaths": {
238
+ "type": "string[]",
239
+ "optional": true,
240
+ "nullable": false,
241
+ "nonEmpty": false
242
+ },
243
+ "turnOffRuleUntilEpoch": {
244
+ "type": "number",
245
+ "optional": false,
246
+ "nullable": false,
247
+ "nonEmpty": false
248
+ },
249
+ "turnOffRuleWhileOnBranch": {
250
+ "type": "string",
251
+ "optional": false,
252
+ "nullable": true,
253
+ "nonEmpty": false
254
+ }
255
+ },
256
+ "prisma-converter": {
257
+ "mode": {
258
+ "type": "string",
259
+ "enumValues": [
260
+ "OFF",
261
+ "NEW_AND_MODIFIED_METHODS",
262
+ "NEW_AND_MODIFIED_FILES"
263
+ ],
264
+ "optional": false,
265
+ "nullable": false,
266
+ "nonEmpty": false
267
+ },
268
+ "disableAllowed": {
269
+ "type": "boolean",
270
+ "optional": true,
271
+ "nullable": false,
272
+ "nonEmpty": false
273
+ },
274
+ "schemaPath": {
275
+ "type": "string",
276
+ "optional": true,
277
+ "nullable": false,
278
+ "nonEmpty": false
279
+ },
280
+ "convertersPaths": {
281
+ "type": "string[]",
282
+ "optional": true,
283
+ "nullable": false,
284
+ "nonEmpty": false
285
+ },
286
+ "enforcePaths": {
287
+ "type": "string[]",
288
+ "optional": true,
289
+ "nullable": false,
290
+ "nonEmpty": false
291
+ },
292
+ "turnOffRuleUntilEpoch": {
293
+ "type": "number",
294
+ "optional": false,
295
+ "nullable": false,
296
+ "nonEmpty": false
297
+ },
298
+ "turnOffRuleWhileOnBranch": {
299
+ "type": "string",
300
+ "optional": false,
301
+ "nullable": true,
302
+ "nonEmpty": false
303
+ }
304
+ },
305
+ "no-destructure": {
306
+ "mode": {
307
+ "type": "string",
308
+ "enumValues": [
309
+ "OFF",
310
+ "NEW_AND_MODIFIED_CODE",
311
+ "NEW_AND_MODIFIED_FILES",
312
+ "MODIFIED_PROJECTS",
313
+ "RUN_EVERY_TIME"
314
+ ],
315
+ "optional": false,
316
+ "nullable": false,
317
+ "nonEmpty": false
318
+ },
319
+ "allowTopLevel": {
320
+ "type": "boolean",
321
+ "optional": true,
322
+ "nullable": false,
323
+ "nonEmpty": false
324
+ },
325
+ "disableAllowed": {
326
+ "type": "boolean",
327
+ "optional": true,
328
+ "nullable": false,
329
+ "nonEmpty": false
330
+ },
331
+ "allowedPaths": {
332
+ "type": "string[]",
333
+ "optional": true,
334
+ "nullable": false,
335
+ "nonEmpty": false
336
+ },
337
+ "turnOffRuleUntilEpoch": {
338
+ "type": "number",
339
+ "optional": false,
340
+ "nullable": false,
341
+ "nonEmpty": false
342
+ },
343
+ "turnOffRuleWhileOnBranch": {
344
+ "type": "string",
345
+ "optional": false,
346
+ "nullable": true,
347
+ "nonEmpty": false
348
+ }
349
+ },
350
+ "no-unmanaged-exceptions": {
351
+ "mode": {
352
+ "type": "string",
353
+ "enumValues": [
354
+ "OFF",
355
+ "NEW_AND_MODIFIED_CODE",
356
+ "NEW_AND_MODIFIED_FILES",
357
+ "MODIFIED_PROJECTS",
358
+ "RUN_EVERY_TIME"
359
+ ],
360
+ "optional": false,
361
+ "nullable": false,
362
+ "nonEmpty": false
363
+ },
364
+ "disableAllowed": {
365
+ "type": "boolean",
366
+ "optional": true,
367
+ "nullable": false,
368
+ "nonEmpty": false
369
+ },
370
+ "turnOffRuleUntilEpoch": {
371
+ "type": "number",
372
+ "optional": false,
373
+ "nullable": false,
374
+ "nonEmpty": false
375
+ },
376
+ "turnOffRuleWhileOnBranch": {
377
+ "type": "string",
378
+ "optional": false,
379
+ "nullable": true,
380
+ "nonEmpty": false
381
+ }
382
+ },
383
+ "catch-error-pattern": {
384
+ "mode": {
385
+ "type": "string",
386
+ "enumValues": [
387
+ "OFF",
388
+ "NEW_AND_MODIFIED_CODE",
389
+ "NEW_AND_MODIFIED_FILES",
390
+ "MODIFIED_PROJECTS",
391
+ "RUN_EVERY_TIME"
392
+ ],
393
+ "optional": false,
394
+ "nullable": false,
395
+ "nonEmpty": false
396
+ },
397
+ "disableAllowed": {
398
+ "type": "boolean",
399
+ "optional": true,
400
+ "nullable": false,
401
+ "nonEmpty": false
402
+ },
403
+ "turnOffRuleUntilEpoch": {
404
+ "type": "number",
405
+ "optional": false,
406
+ "nullable": false,
407
+ "nonEmpty": false
408
+ },
409
+ "turnOffRuleWhileOnBranch": {
410
+ "type": "string",
411
+ "optional": false,
412
+ "nullable": true,
413
+ "nonEmpty": false
414
+ }
415
+ },
416
+ "throw-cause-required": {
417
+ "mode": {
418
+ "type": "string",
419
+ "enumValues": [
420
+ "OFF",
421
+ "NEW_AND_MODIFIED_CODE"
422
+ ],
423
+ "optional": false,
424
+ "nullable": false,
425
+ "nonEmpty": false
426
+ },
427
+ "disableAllowed": {
428
+ "type": "boolean",
429
+ "optional": true,
430
+ "nullable": false,
431
+ "nonEmpty": false
432
+ },
433
+ "turnOffRuleUntilEpoch": {
434
+ "type": "number",
435
+ "optional": false,
436
+ "nullable": false,
437
+ "nonEmpty": false
438
+ },
439
+ "turnOffRuleWhileOnBranch": {
440
+ "type": "string",
441
+ "optional": false,
442
+ "nullable": true,
443
+ "nonEmpty": false
444
+ }
445
+ },
446
+ "angular-no-direct-api-in-resolver": {
447
+ "mode": {
448
+ "type": "string",
449
+ "enumValues": [
450
+ "OFF",
451
+ "NEW_AND_MODIFIED_CODE",
452
+ "NEW_AND_MODIFIED_METHODS",
453
+ "NEW_AND_MODIFIED_FILES"
454
+ ],
455
+ "optional": false,
456
+ "nullable": false,
457
+ "nonEmpty": false
458
+ },
459
+ "disableAllowed": {
460
+ "type": "boolean",
461
+ "optional": true,
462
+ "nullable": false,
463
+ "nonEmpty": false
464
+ },
465
+ "enforcePaths": {
466
+ "type": "string[]",
467
+ "optional": true,
468
+ "nullable": false,
469
+ "nonEmpty": false
470
+ },
471
+ "turnOffRuleUntilEpoch": {
472
+ "type": "number",
473
+ "optional": false,
474
+ "nullable": false,
475
+ "nonEmpty": false
476
+ },
477
+ "turnOffRuleWhileOnBranch": {
478
+ "type": "string",
479
+ "optional": false,
480
+ "nullable": true,
481
+ "nonEmpty": false
482
+ }
483
+ },
484
+ "no-symbol-di-tokens": {
485
+ "mode": {
486
+ "type": "string",
487
+ "enumValues": [
488
+ "OFF",
489
+ "NEW_AND_MODIFIED_CODE",
490
+ "NEW_AND_MODIFIED_FILES",
491
+ "MODIFIED_PROJECTS",
492
+ "RUN_EVERY_TIME"
493
+ ],
494
+ "optional": false,
495
+ "nullable": false,
496
+ "nonEmpty": false
497
+ },
498
+ "disableAllowed": {
499
+ "type": "boolean",
500
+ "optional": true,
501
+ "nullable": false,
502
+ "nonEmpty": false
503
+ },
504
+ "allowedPaths": {
505
+ "type": "string[]",
506
+ "optional": true,
507
+ "nullable": false,
508
+ "nonEmpty": false
509
+ },
510
+ "turnOffRuleUntilEpoch": {
511
+ "type": "number",
512
+ "optional": false,
513
+ "nullable": false,
514
+ "nonEmpty": false
515
+ },
516
+ "turnOffRuleWhileOnBranch": {
517
+ "type": "string",
518
+ "optional": false,
519
+ "nullable": true,
520
+ "nonEmpty": false
521
+ }
522
+ },
523
+ "no-client-creation-outside-server-or-client": {
524
+ "mode": {
525
+ "type": "string",
526
+ "enumValues": [
527
+ "OFF",
528
+ "NEW_AND_MODIFIED_CODE",
529
+ "NEW_AND_MODIFIED_FILES",
530
+ "MODIFIED_PROJECTS",
531
+ "RUN_EVERY_TIME"
532
+ ],
533
+ "optional": false,
534
+ "nullable": false,
535
+ "nonEmpty": false
536
+ },
537
+ "severity": {
538
+ "type": "string",
539
+ "enumValues": [
540
+ "warn",
541
+ "error"
542
+ ],
543
+ "optional": true,
544
+ "nullable": false,
545
+ "nonEmpty": false
546
+ },
547
+ "disableAllowed": {
548
+ "type": "boolean",
549
+ "optional": true,
550
+ "nullable": false,
551
+ "nonEmpty": false
552
+ },
553
+ "allowedRoles": {
554
+ "type": "string[]",
555
+ "optional": true,
556
+ "nullable": false,
557
+ "nonEmpty": false
558
+ },
559
+ "allowedPaths": {
560
+ "type": "string[]",
561
+ "optional": true,
562
+ "nullable": false,
563
+ "nonEmpty": false
564
+ },
565
+ "turnOffRuleUntilEpoch": {
566
+ "type": "number",
567
+ "optional": false,
568
+ "nullable": false,
569
+ "nonEmpty": false
570
+ },
571
+ "turnOffRuleWhileOnBranch": {
572
+ "type": "string",
573
+ "optional": false,
574
+ "nullable": true,
575
+ "nonEmpty": false
576
+ }
577
+ },
578
+ "no-custom-css": {
579
+ "mode": {
580
+ "type": "string",
581
+ "enumValues": [
582
+ "OFF",
583
+ "NEW_AND_MODIFIED_CODE",
584
+ "NEW_AND_MODIFIED_FILES",
585
+ "MODIFIED_PROJECTS",
586
+ "RUN_EVERY_TIME"
587
+ ],
588
+ "optional": false,
589
+ "nullable": false,
590
+ "nonEmpty": false
591
+ },
592
+ "disableAllowed": {
593
+ "type": "boolean",
594
+ "optional": true,
595
+ "nullable": false,
596
+ "nonEmpty": false
597
+ },
598
+ "allowGlobs": {
599
+ "type": "string[]",
600
+ "optional": true,
601
+ "nullable": false,
602
+ "nonEmpty": false
603
+ },
604
+ "turnOffRuleUntilEpoch": {
605
+ "type": "number",
606
+ "optional": false,
607
+ "nullable": false,
608
+ "nonEmpty": false
609
+ },
610
+ "turnOffRuleWhileOnBranch": {
611
+ "type": "string",
612
+ "optional": false,
613
+ "nullable": true,
614
+ "nonEmpty": false
615
+ }
616
+ },
617
+ "no-state-paths-in-templates": {
618
+ "mode": {
619
+ "type": "string",
620
+ "enumValues": [
621
+ "OFF",
622
+ "NEW_AND_MODIFIED_CODE",
623
+ "NEW_AND_MODIFIED_FILES",
624
+ "MODIFIED_PROJECTS",
625
+ "RUN_EVERY_TIME"
626
+ ],
627
+ "optional": false,
628
+ "nullable": false,
629
+ "nonEmpty": false
630
+ },
631
+ "disableAllowed": {
632
+ "type": "boolean",
633
+ "optional": true,
634
+ "nullable": false,
635
+ "nonEmpty": false
636
+ },
637
+ "templateDirs": {
638
+ "type": "string[]",
639
+ "optional": true,
640
+ "nullable": false,
641
+ "nonEmpty": false
642
+ },
643
+ "bannedPathPrefixes": {
644
+ "type": "string[]",
645
+ "optional": true,
646
+ "nullable": false,
647
+ "nonEmpty": false
648
+ },
649
+ "turnOffRuleUntilEpoch": {
650
+ "type": "number",
651
+ "optional": false,
652
+ "nullable": false,
653
+ "nonEmpty": false
654
+ },
655
+ "turnOffRuleWhileOnBranch": {
656
+ "type": "string",
657
+ "optional": false,
658
+ "nullable": true,
659
+ "nonEmpty": false
660
+ }
661
+ },
662
+ "no-process-exit-outside-main": {
663
+ "mode": {
664
+ "type": "string",
665
+ "enumValues": [
666
+ "OFF",
667
+ "NEW_AND_MODIFIED_CODE",
668
+ "NEW_AND_MODIFIED_FILES",
669
+ "MODIFIED_PROJECTS",
670
+ "RUN_EVERY_TIME"
671
+ ],
672
+ "optional": false,
673
+ "nullable": false,
674
+ "nonEmpty": false
675
+ },
676
+ "disableAllowed": {
677
+ "type": "boolean",
678
+ "optional": true,
679
+ "nullable": false,
680
+ "nonEmpty": false
681
+ },
682
+ "turnOffRuleUntilEpoch": {
683
+ "type": "number",
684
+ "optional": false,
685
+ "nullable": false,
686
+ "nonEmpty": false
687
+ },
688
+ "turnOffRuleWhileOnBranch": {
689
+ "type": "string",
690
+ "optional": false,
691
+ "nullable": true,
692
+ "nonEmpty": false
693
+ }
694
+ },
695
+ "no-function-outside-class": {
696
+ "mode": {
697
+ "type": "string",
698
+ "enumValues": [
699
+ "OFF",
700
+ "NEW_AND_MODIFIED_CODE",
701
+ "NEW_AND_MODIFIED_FILES",
702
+ "MODIFIED_PROJECTS",
703
+ "RUN_EVERY_TIME"
704
+ ],
705
+ "optional": false,
706
+ "nullable": false,
707
+ "nonEmpty": false
708
+ },
709
+ "disableAllowed": {
710
+ "type": "boolean",
711
+ "optional": true,
712
+ "nullable": false,
713
+ "nonEmpty": false
714
+ },
715
+ "allowedPaths": {
716
+ "type": "string[]",
717
+ "optional": true,
718
+ "nullable": false,
719
+ "nonEmpty": false
720
+ },
721
+ "turnOffRuleUntilEpoch": {
722
+ "type": "number",
723
+ "optional": false,
724
+ "nullable": false,
725
+ "nonEmpty": false
726
+ },
727
+ "turnOffRuleWhileOnBranch": {
728
+ "type": "string",
729
+ "optional": false,
730
+ "nullable": true,
731
+ "nonEmpty": false
732
+ }
733
+ },
734
+ "inject-annotation-not-needed-for-concrete-class": {
735
+ "mode": {
736
+ "type": "string",
737
+ "enumValues": [
738
+ "OFF",
739
+ "NEW_AND_MODIFIED_CODE",
740
+ "NEW_AND_MODIFIED_FILES",
741
+ "MODIFIED_PROJECTS",
742
+ "RUN_EVERY_TIME"
743
+ ],
744
+ "optional": false,
745
+ "nullable": false,
746
+ "nonEmpty": false
747
+ },
748
+ "disableAllowed": {
749
+ "type": "boolean",
750
+ "optional": true,
751
+ "nullable": false,
752
+ "nonEmpty": false
753
+ },
754
+ "allowedPaths": {
755
+ "type": "string[]",
756
+ "optional": true,
757
+ "nullable": false,
758
+ "nonEmpty": false
759
+ },
760
+ "turnOffRuleUntilEpoch": {
761
+ "type": "number",
762
+ "optional": false,
763
+ "nullable": false,
764
+ "nonEmpty": false
765
+ },
766
+ "turnOffRuleWhileOnBranch": {
767
+ "type": "string",
768
+ "optional": false,
769
+ "nullable": true,
770
+ "nonEmpty": false
771
+ }
772
+ },
773
+ "framework-tag": {
774
+ "mode": {
775
+ "type": "string",
776
+ "enumValues": [
777
+ "OFF",
778
+ "MODIFIED_PROJECTS"
779
+ ],
780
+ "optional": false,
781
+ "nullable": false,
782
+ "nonEmpty": false
783
+ },
784
+ "knownTypes": {
785
+ "type": "string[]",
786
+ "optional": true,
787
+ "nullable": false,
788
+ "nonEmpty": false
789
+ },
790
+ "turnOffRuleUntilEpoch": {
791
+ "type": "number",
792
+ "optional": false,
793
+ "nullable": false,
794
+ "nonEmpty": false
795
+ },
796
+ "turnOffRuleWhileOnBranch": {
797
+ "type": "string",
798
+ "optional": false,
799
+ "nullable": true,
800
+ "nonEmpty": false
801
+ }
802
+ },
803
+ "role-tag": {
804
+ "mode": {
805
+ "type": "string",
806
+ "enumValues": [
807
+ "OFF",
808
+ "MODIFIED_PROJECTS"
809
+ ],
810
+ "optional": false,
811
+ "nullable": false,
812
+ "nonEmpty": false
813
+ },
814
+ "knownTypes": {
815
+ "type": "string[]",
816
+ "optional": true,
817
+ "nullable": false,
818
+ "nonEmpty": false
819
+ },
820
+ "turnOffRuleUntilEpoch": {
821
+ "type": "number",
822
+ "optional": false,
823
+ "nullable": false,
824
+ "nonEmpty": false
825
+ },
826
+ "turnOffRuleWhileOnBranch": {
827
+ "type": "string",
828
+ "optional": false,
829
+ "nullable": true,
830
+ "nonEmpty": false
831
+ }
832
+ },
833
+ "ensure-we-are-secure": {
834
+ "mode": {
835
+ "type": "string",
836
+ "enumValues": [
837
+ "OFF",
838
+ "MODIFIED_PROJECTS"
839
+ ],
840
+ "optional": false,
841
+ "nullable": false,
842
+ "nonEmpty": false
843
+ },
844
+ "turnOffRuleUntilEpoch": {
845
+ "type": "number",
846
+ "optional": false,
847
+ "nullable": false,
848
+ "nonEmpty": false
849
+ },
850
+ "turnOffRuleWhileOnBranch": {
851
+ "type": "string",
852
+ "optional": false,
853
+ "nullable": true,
854
+ "nonEmpty": false
855
+ }
856
+ },
857
+ "branch-creation-guard": {
858
+ "mode": {
859
+ "type": "string",
860
+ "enumValues": [
861
+ "ON",
862
+ "OFF",
863
+ "ON_NO_SUBBRANCHES"
864
+ ],
865
+ "optional": false,
866
+ "nullable": false,
867
+ "nonEmpty": false
868
+ },
869
+ "subBranchNaming": {
870
+ "type": "string",
871
+ "optional": false,
872
+ "nullable": false,
873
+ "nonEmpty": false
874
+ },
875
+ "branchFormat": {
876
+ "type": "string",
877
+ "optional": true,
878
+ "nullable": false,
879
+ "nonEmpty": false
880
+ },
881
+ "maxLocalBranches": {
882
+ "type": "number",
883
+ "optional": true,
884
+ "nullable": false,
885
+ "nonEmpty": false
886
+ },
887
+ "maxWorktrees": {
888
+ "type": "number",
889
+ "optional": true,
890
+ "nullable": false,
891
+ "nonEmpty": false
892
+ },
893
+ "autoReapMergedBranches": {
894
+ "type": "boolean",
895
+ "optional": false,
896
+ "nullable": false,
897
+ "nonEmpty": false
898
+ },
899
+ "turnOffRuleUntilEpoch": {
900
+ "type": "number",
901
+ "optional": false,
902
+ "nullable": false,
903
+ "nonEmpty": false
904
+ },
905
+ "turnOffRuleWhileOnBranch": {
906
+ "type": "string",
907
+ "optional": false,
908
+ "nullable": true,
909
+ "nonEmpty": false
910
+ }
911
+ },
912
+ "pr-lifecycle-guard": {
913
+ "mode": {
914
+ "type": "string",
915
+ "enumValues": [
916
+ "ON",
917
+ "OFF"
918
+ ],
919
+ "optional": false,
920
+ "nullable": false,
921
+ "nonEmpty": false
922
+ },
923
+ "turnOffRuleUntilEpoch": {
924
+ "type": "number",
925
+ "optional": false,
926
+ "nullable": false,
927
+ "nonEmpty": false
928
+ },
929
+ "turnOffRuleWhileOnBranch": {
930
+ "type": "string",
931
+ "optional": false,
932
+ "nullable": true,
933
+ "nonEmpty": false
934
+ }
935
+ },
936
+ "branch-state-guard": {
937
+ "mode": {
938
+ "type": "string",
939
+ "enumValues": [
940
+ "ON",
941
+ "OFF"
942
+ ],
943
+ "optional": false,
944
+ "nullable": false,
945
+ "nonEmpty": false
946
+ },
947
+ "branchNamingConvention": {
948
+ "type": "string",
949
+ "optional": true,
950
+ "nullable": false,
951
+ "nonEmpty": false
952
+ },
953
+ "hangTimeoutMinutes": {
954
+ "type": "number",
955
+ "optional": true,
956
+ "nullable": false,
957
+ "nonEmpty": false
958
+ },
959
+ "maxCommitsBehind": {
960
+ "type": "number",
961
+ "optional": false,
962
+ "nullable": false,
963
+ "nonEmpty": false
964
+ },
965
+ "turnOffRuleUntilEpoch": {
966
+ "type": "number",
967
+ "optional": false,
968
+ "nullable": false,
969
+ "nonEmpty": false
970
+ },
971
+ "turnOffRuleWhileOnBranch": {
972
+ "type": "string",
973
+ "optional": false,
974
+ "nullable": true,
975
+ "nonEmpty": false
976
+ }
977
+ },
978
+ "no-file-import-cycles": {
979
+ "mode": {
980
+ "type": "string",
981
+ "enumValues": [
982
+ "OFF",
983
+ "RUN_EVERY_TIME"
984
+ ],
985
+ "optional": false,
986
+ "nullable": false,
987
+ "nonEmpty": false
988
+ },
989
+ "ignoreTypeOnly": {
990
+ "type": "boolean",
991
+ "optional": true,
992
+ "nullable": false,
993
+ "nonEmpty": false
994
+ },
995
+ "excludePackages": {
996
+ "type": "string[]",
997
+ "optional": true,
998
+ "nullable": false,
999
+ "nonEmpty": false
1000
+ },
1001
+ "excludeRegExp": {
1002
+ "type": "string[]",
1003
+ "optional": true,
1004
+ "nullable": false,
1005
+ "nonEmpty": false
1006
+ },
1007
+ "turnOffRuleUntilEpoch": {
1008
+ "type": "number",
1009
+ "optional": false,
1010
+ "nullable": false,
1011
+ "nonEmpty": false
1012
+ },
1013
+ "turnOffRuleWhileOnBranch": {
1014
+ "type": "string",
1015
+ "optional": false,
1016
+ "nullable": true,
1017
+ "nonEmpty": false
1018
+ }
1019
+ },
1020
+ "runtime-architecture": {
1021
+ "mode": {
1022
+ "type": "string",
1023
+ "enumValues": [
1024
+ "OFF",
1025
+ "RUN_EVERY_TIME"
1026
+ ],
1027
+ "optional": false,
1028
+ "nullable": false,
1029
+ "nonEmpty": false
1030
+ },
1031
+ "showExternalNodes": {
1032
+ "type": "boolean",
1033
+ "optional": true,
1034
+ "nullable": false,
1035
+ "nonEmpty": false
1036
+ },
1037
+ "externalApiPaths": {
1038
+ "type": "string[]",
1039
+ "optional": true,
1040
+ "nullable": false,
1041
+ "nonEmpty": false
1042
+ },
1043
+ "turnOffRuleUntilEpoch": {
1044
+ "type": "number",
1045
+ "optional": false,
1046
+ "nullable": false,
1047
+ "nonEmpty": false
1048
+ },
1049
+ "turnOffRuleWhileOnBranch": {
1050
+ "type": "string",
1051
+ "optional": false,
1052
+ "nullable": true,
1053
+ "nonEmpty": false
1054
+ }
1055
+ },
1056
+ "nx-wiring": {
1057
+ "mode": {
1058
+ "type": "string",
1059
+ "enumValues": [
1060
+ "OFF",
1061
+ "RUN_EVERY_TIME"
1062
+ ],
1063
+ "optional": false,
1064
+ "nullable": false,
1065
+ "nonEmpty": false
1066
+ },
1067
+ "turnOffRuleUntilEpoch": {
1068
+ "type": "number",
1069
+ "optional": false,
1070
+ "nullable": false,
1071
+ "nonEmpty": false
1072
+ },
1073
+ "turnOffRuleWhileOnBranch": {
1074
+ "type": "string",
1075
+ "optional": false,
1076
+ "nullable": true,
1077
+ "nonEmpty": false
1078
+ }
1079
+ },
1080
+ "di-graph": {
1081
+ "mode": {
1082
+ "type": "string",
1083
+ "enumValues": [
1084
+ "OFF",
1085
+ "RUN_EVERY_TIME"
1086
+ ],
1087
+ "optional": false,
1088
+ "nullable": false,
1089
+ "nonEmpty": false
1090
+ },
1091
+ "turnOffRuleUntilEpoch": {
1092
+ "type": "number",
1093
+ "optional": false,
1094
+ "nullable": false,
1095
+ "nonEmpty": false
1096
+ },
1097
+ "turnOffRuleWhileOnBranch": {
1098
+ "type": "string",
1099
+ "optional": false,
1100
+ "nullable": true,
1101
+ "nonEmpty": false
1102
+ }
1103
+ },
1104
+ "missing-design-annotation": {
1105
+ "mode": {
1106
+ "type": "string",
1107
+ "enumValues": [
1108
+ "OFF",
1109
+ "RUN_EVERY_TIME"
1110
+ ],
1111
+ "optional": false,
1112
+ "nullable": false,
1113
+ "nonEmpty": false
1114
+ },
1115
+ "turnOffRuleUntilEpoch": {
1116
+ "type": "number",
1117
+ "optional": false,
1118
+ "nullable": false,
1119
+ "nonEmpty": false
1120
+ },
1121
+ "turnOffRuleWhileOnBranch": {
1122
+ "type": "string",
1123
+ "optional": false,
1124
+ "nullable": true,
1125
+ "nonEmpty": false
1126
+ }
1127
+ },
1128
+ "no-js-files": {
1129
+ "mode": {
1130
+ "type": "string",
1131
+ "enumValues": [
1132
+ "OFF",
1133
+ "NEW_AND_MODIFIED_FILES"
1134
+ ],
1135
+ "optional": false,
1136
+ "nullable": false,
1137
+ "nonEmpty": false
1138
+ },
1139
+ "allowedPaths": {
1140
+ "type": "string[]",
1141
+ "optional": true,
1142
+ "nullable": false,
1143
+ "nonEmpty": false
1144
+ },
1145
+ "turnOffRuleUntilEpoch": {
1146
+ "type": "number",
1147
+ "optional": false,
1148
+ "nullable": false,
1149
+ "nonEmpty": false
1150
+ },
1151
+ "turnOffRuleWhileOnBranch": {
1152
+ "type": "string",
1153
+ "optional": false,
1154
+ "nullable": true,
1155
+ "nonEmpty": false
1156
+ }
1157
+ },
1158
+ "validate-ts-in-src": {
1159
+ "mode": {
1160
+ "type": "string",
1161
+ "enumValues": [
1162
+ "OFF",
1163
+ "NEW_AND_MODIFIED_FILES"
1164
+ ],
1165
+ "optional": false,
1166
+ "nullable": false,
1167
+ "nonEmpty": false
1168
+ },
1169
+ "allowedRootFiles": {
1170
+ "type": "string[]",
1171
+ "optional": true,
1172
+ "nullable": false,
1173
+ "nonEmpty": false
1174
+ },
1175
+ "excludePaths": {
1176
+ "type": "string[]",
1177
+ "optional": true,
1178
+ "nullable": false,
1179
+ "nonEmpty": false
1180
+ },
1181
+ "turnOffRuleUntilEpoch": {
1182
+ "type": "number",
1183
+ "optional": false,
1184
+ "nullable": false,
1185
+ "nonEmpty": false
1186
+ },
1187
+ "turnOffRuleWhileOnBranch": {
1188
+ "type": "string",
1189
+ "optional": false,
1190
+ "nullable": true,
1191
+ "nonEmpty": false
1192
+ }
1193
+ },
1194
+ "validate-architecture-unchanged": {
1195
+ "mode": {
1196
+ "type": "string",
1197
+ "enumValues": [
1198
+ "OFF",
1199
+ "RUN_EVERY_TIME"
1200
+ ],
1201
+ "optional": false,
1202
+ "nullable": false,
1203
+ "nonEmpty": false
1204
+ },
1205
+ "turnOffRuleUntilEpoch": {
1206
+ "type": "number",
1207
+ "optional": false,
1208
+ "nullable": false,
1209
+ "nonEmpty": false
1210
+ },
1211
+ "turnOffRuleWhileOnBranch": {
1212
+ "type": "string",
1213
+ "optional": false,
1214
+ "nullable": true,
1215
+ "nonEmpty": false
1216
+ }
1217
+ },
1218
+ "validate-no-architecture-cycles": {
1219
+ "mode": {
1220
+ "type": "string",
1221
+ "enumValues": [
1222
+ "OFF",
1223
+ "RUN_EVERY_TIME"
1224
+ ],
1225
+ "optional": false,
1226
+ "nullable": false,
1227
+ "nonEmpty": false
1228
+ },
1229
+ "turnOffRuleUntilEpoch": {
1230
+ "type": "number",
1231
+ "optional": false,
1232
+ "nullable": false,
1233
+ "nonEmpty": false
1234
+ },
1235
+ "turnOffRuleWhileOnBranch": {
1236
+ "type": "string",
1237
+ "optional": false,
1238
+ "nullable": true,
1239
+ "nonEmpty": false
1240
+ }
1241
+ },
1242
+ "validate-packagejson": {
1243
+ "mode": {
1244
+ "type": "string",
1245
+ "enumValues": [
1246
+ "OFF",
1247
+ "RUN_EVERY_TIME"
1248
+ ],
1249
+ "optional": false,
1250
+ "nullable": false,
1251
+ "nonEmpty": false
1252
+ },
1253
+ "turnOffRuleUntilEpoch": {
1254
+ "type": "number",
1255
+ "optional": false,
1256
+ "nullable": false,
1257
+ "nonEmpty": false
1258
+ },
1259
+ "turnOffRuleWhileOnBranch": {
1260
+ "type": "string",
1261
+ "optional": false,
1262
+ "nullable": true,
1263
+ "nonEmpty": false
1264
+ }
1265
+ },
1266
+ "validate-versions-locked": {
1267
+ "mode": {
1268
+ "type": "string",
1269
+ "enumValues": [
1270
+ "OFF",
1271
+ "RUN_EVERY_TIME"
1272
+ ],
1273
+ "optional": false,
1274
+ "nullable": false,
1275
+ "nonEmpty": false
1276
+ },
1277
+ "turnOffRuleUntilEpoch": {
1278
+ "type": "number",
1279
+ "optional": false,
1280
+ "nullable": false,
1281
+ "nonEmpty": false
1282
+ },
1283
+ "turnOffRuleWhileOnBranch": {
1284
+ "type": "string",
1285
+ "optional": false,
1286
+ "nullable": true,
1287
+ "nonEmpty": false
1288
+ }
1289
+ },
1290
+ "validate-eslint-sync": {
1291
+ "mode": {
1292
+ "type": "string",
1293
+ "enumValues": [
1294
+ "OFF",
1295
+ "RUN_EVERY_TIME"
1296
+ ],
1297
+ "optional": false,
1298
+ "nullable": false,
1299
+ "nonEmpty": false
1300
+ },
1301
+ "turnOffRuleUntilEpoch": {
1302
+ "type": "number",
1303
+ "optional": false,
1304
+ "nullable": false,
1305
+ "nonEmpty": false
1306
+ },
1307
+ "turnOffRuleWhileOnBranch": {
1308
+ "type": "string",
1309
+ "optional": false,
1310
+ "nullable": true,
1311
+ "nonEmpty": false
1312
+ }
1313
+ },
1314
+ "no-root-union-api-type": {
1315
+ "mode": {
1316
+ "type": "string",
1317
+ "enumValues": [
1318
+ "OFF",
1319
+ "RUN_EVERY_TIME"
1320
+ ],
1321
+ "optional": false,
1322
+ "nullable": false,
1323
+ "nonEmpty": false
1324
+ },
1325
+ "allowedPaths": {
1326
+ "type": "string[]",
1327
+ "optional": true,
1328
+ "nullable": false,
1329
+ "nonEmpty": false
1330
+ },
1331
+ "turnOffRuleUntilEpoch": {
1332
+ "type": "number",
1333
+ "optional": false,
1334
+ "nullable": false,
1335
+ "nonEmpty": false
1336
+ },
1337
+ "turnOffRuleWhileOnBranch": {
1338
+ "type": "string",
1339
+ "optional": false,
1340
+ "nullable": true,
1341
+ "nonEmpty": false
1342
+ }
1343
+ },
1344
+ "api-rules-for-openapi": {
1345
+ "mode": {
1346
+ "type": "string",
1347
+ "enumValues": [
1348
+ "OFF",
1349
+ "AFFECTED_PROJECT",
1350
+ "RUN_EVERY_TIME"
1351
+ ],
1352
+ "optional": false,
1353
+ "nullable": false,
1354
+ "nonEmpty": false
1355
+ },
1356
+ "allowedPaths": {
1357
+ "type": "string[]",
1358
+ "optional": true,
1359
+ "nullable": false,
1360
+ "nonEmpty": false
1361
+ },
1362
+ "turnOffRuleUntilEpoch": {
1363
+ "type": "number",
1364
+ "optional": false,
1365
+ "nullable": false,
1366
+ "nonEmpty": false
1367
+ },
1368
+ "turnOffRuleWhileOnBranch": {
1369
+ "type": "string",
1370
+ "optional": false,
1371
+ "nullable": true,
1372
+ "nonEmpty": false
1373
+ }
1374
+ },
1375
+ "api-rules-for-mcp": {
1376
+ "mode": {
1377
+ "type": "string",
1378
+ "enumValues": [
1379
+ "OFF",
1380
+ "AFFECTED_PROJECT",
1381
+ "RUN_EVERY_TIME"
1382
+ ],
1383
+ "optional": false,
1384
+ "nullable": false,
1385
+ "nonEmpty": false
1386
+ },
1387
+ "allowedPaths": {
1388
+ "type": "string[]",
1389
+ "optional": true,
1390
+ "nullable": false,
1391
+ "nonEmpty": false
1392
+ },
1393
+ "turnOffRuleUntilEpoch": {
1394
+ "type": "number",
1395
+ "optional": false,
1396
+ "nullable": false,
1397
+ "nonEmpty": false
1398
+ },
1399
+ "turnOffRuleWhileOnBranch": {
1400
+ "type": "string",
1401
+ "optional": false,
1402
+ "nullable": true,
1403
+ "nonEmpty": false
1404
+ }
1405
+ },
1406
+ "no-inline-import-in-api-lib": {
1407
+ "mode": {
1408
+ "type": "string",
1409
+ "enumValues": [
1410
+ "OFF",
1411
+ "NEW_AND_MODIFIED_CODE",
1412
+ "NEW_AND_MODIFIED_FILES",
1413
+ "MODIFIED_PROJECTS",
1414
+ "RUN_EVERY_TIME"
1415
+ ],
1416
+ "optional": false,
1417
+ "nullable": false,
1418
+ "nonEmpty": false
1419
+ },
1420
+ "allowedPaths": {
1421
+ "type": "string[]",
1422
+ "optional": true,
1423
+ "nullable": false,
1424
+ "nonEmpty": false
1425
+ },
1426
+ "turnOffRuleUntilEpoch": {
1427
+ "type": "number",
1428
+ "optional": false,
1429
+ "nullable": false,
1430
+ "nonEmpty": false
1431
+ },
1432
+ "turnOffRuleWhileOnBranch": {
1433
+ "type": "string",
1434
+ "optional": false,
1435
+ "nullable": true,
1436
+ "nonEmpty": false
1437
+ }
1438
+ },
1439
+ "one-enum-spelling-in-api-lib": {
1440
+ "mode": {
1441
+ "type": "string",
1442
+ "enumValues": [
1443
+ "OFF",
1444
+ "NEW_AND_MODIFIED_CODE",
1445
+ "NEW_AND_MODIFIED_FILES",
1446
+ "MODIFIED_PROJECTS",
1447
+ "RUN_EVERY_TIME"
1448
+ ],
1449
+ "optional": false,
1450
+ "nullable": false,
1451
+ "nonEmpty": false
1452
+ },
1453
+ "allowedPaths": {
1454
+ "type": "string[]",
1455
+ "optional": true,
1456
+ "nullable": false,
1457
+ "nonEmpty": false
1458
+ },
1459
+ "turnOffRuleUntilEpoch": {
1460
+ "type": "number",
1461
+ "optional": false,
1462
+ "nullable": false,
1463
+ "nonEmpty": false
1464
+ },
1465
+ "turnOffRuleWhileOnBranch": {
1466
+ "type": "string",
1467
+ "optional": false,
1468
+ "nullable": true,
1469
+ "nonEmpty": false
1470
+ }
1471
+ },
1472
+ "no-utility-types-in-api-lib": {
1473
+ "mode": {
1474
+ "type": "string",
1475
+ "enumValues": [
1476
+ "OFF",
1477
+ "NEW_AND_MODIFIED_CODE",
1478
+ "NEW_AND_MODIFIED_FILES",
1479
+ "MODIFIED_PROJECTS",
1480
+ "RUN_EVERY_TIME"
1481
+ ],
1482
+ "optional": false,
1483
+ "nullable": false,
1484
+ "nonEmpty": false
1485
+ },
1486
+ "paths": {
1487
+ "type": "string[]",
1488
+ "optional": false,
1489
+ "nullable": false,
1490
+ "nonEmpty": false
1491
+ },
1492
+ "allowedPaths": {
1493
+ "type": "string[]",
1494
+ "optional": true,
1495
+ "nullable": false,
1496
+ "nonEmpty": false
1497
+ },
1498
+ "turnOffRuleUntilEpoch": {
1499
+ "type": "number",
1500
+ "optional": false,
1501
+ "nullable": false,
1502
+ "nonEmpty": false
1503
+ },
1504
+ "turnOffRuleWhileOnBranch": {
1505
+ "type": "string",
1506
+ "optional": false,
1507
+ "nullable": true,
1508
+ "nonEmpty": false
1509
+ }
1510
+ },
1511
+ "required-type-suffix": {
1512
+ "mode": {
1513
+ "type": "string",
1514
+ "enumValues": [
1515
+ "OFF",
1516
+ "NEW_AND_MODIFIED_CODE",
1517
+ "NEW_AND_MODIFIED_FILES",
1518
+ "MODIFIED_PROJECTS",
1519
+ "RUN_EVERY_TIME"
1520
+ ],
1521
+ "optional": false,
1522
+ "nullable": false,
1523
+ "nonEmpty": false
1524
+ },
1525
+ "entries": {
1526
+ "type": "object[]",
1527
+ "optional": false,
1528
+ "nullable": false,
1529
+ "nonEmpty": true,
1530
+ "elementSchema": {
1531
+ "paths": {
1532
+ "type": "string[]",
1533
+ "optional": false,
1534
+ "nullable": false,
1535
+ "nonEmpty": true
1536
+ },
1537
+ "suffixes": {
1538
+ "type": "string[]",
1539
+ "optional": false,
1540
+ "nullable": false,
1541
+ "nonEmpty": true
1542
+ }
1543
+ }
1544
+ },
1545
+ "allowedPaths": {
1546
+ "type": "string[]",
1547
+ "optional": true,
1548
+ "nullable": false,
1549
+ "nonEmpty": false
1550
+ },
1551
+ "turnOffRuleUntilEpoch": {
1552
+ "type": "number",
1553
+ "optional": false,
1554
+ "nullable": false,
1555
+ "nonEmpty": false
1556
+ },
1557
+ "turnOffRuleWhileOnBranch": {
1558
+ "type": "string",
1559
+ "optional": false,
1560
+ "nullable": true,
1561
+ "nonEmpty": false
1562
+ }
1563
+ },
1564
+ "api-lib-dependencies": {
1565
+ "mode": {
1566
+ "type": "string",
1567
+ "enumValues": [
1568
+ "OFF",
1569
+ "RUN_EVERY_TIME"
1570
+ ],
1571
+ "optional": false,
1572
+ "nullable": false,
1573
+ "nonEmpty": false
1574
+ },
1575
+ "apiLibPackages": {
1576
+ "type": "string[]",
1577
+ "optional": false,
1578
+ "nullable": false,
1579
+ "nonEmpty": false
1580
+ },
1581
+ "apiClients": {
1582
+ "type": "object[]",
1583
+ "optional": false,
1584
+ "nullable": false,
1585
+ "nonEmpty": false,
1586
+ "elementSchema": {
1587
+ "project": {
1588
+ "type": "string",
1589
+ "optional": false,
1590
+ "nullable": false,
1591
+ "nonEmpty": false
1592
+ },
1593
+ "packages": {
1594
+ "type": "string[]",
1595
+ "optional": false,
1596
+ "nullable": false,
1597
+ "nonEmpty": false
1598
+ }
1599
+ }
1600
+ },
1601
+ "turnOffRuleUntilEpoch": {
1602
+ "type": "number",
1603
+ "optional": false,
1604
+ "nullable": false,
1605
+ "nonEmpty": false
1606
+ },
1607
+ "turnOffRuleWhileOnBranch": {
1608
+ "type": "string",
1609
+ "optional": false,
1610
+ "nullable": true,
1611
+ "nonEmpty": false
1612
+ }
1613
+ },
1614
+ "api-lib-path": {
1615
+ "mode": {
1616
+ "type": "string",
1617
+ "enumValues": [
1618
+ "OFF",
1619
+ "RUN_EVERY_TIME"
1620
+ ],
1621
+ "optional": false,
1622
+ "nullable": false,
1623
+ "nonEmpty": false
1624
+ },
1625
+ "paths": {
1626
+ "type": "string[]",
1627
+ "optional": false,
1628
+ "nullable": false,
1629
+ "nonEmpty": true
1630
+ },
1631
+ "turnOffRuleUntilEpoch": {
1632
+ "type": "number",
1633
+ "optional": false,
1634
+ "nullable": false,
1635
+ "nonEmpty": false
1636
+ },
1637
+ "turnOffRuleWhileOnBranch": {
1638
+ "type": "string",
1639
+ "optional": false,
1640
+ "nullable": true,
1641
+ "nonEmpty": false
1642
+ }
1643
+ },
1644
+ "framework-folder": {
1645
+ "mode": {
1646
+ "type": "string",
1647
+ "enumValues": [
1648
+ "OFF",
1649
+ "RUN_EVERY_TIME"
1650
+ ],
1651
+ "optional": false,
1652
+ "nullable": false,
1653
+ "nonEmpty": false
1654
+ },
1655
+ "entries": {
1656
+ "type": "object[]",
1657
+ "optional": false,
1658
+ "nullable": false,
1659
+ "nonEmpty": true,
1660
+ "elementSchema": {
1661
+ "paths": {
1662
+ "type": "string[]",
1663
+ "optional": false,
1664
+ "nullable": false,
1665
+ "nonEmpty": true
1666
+ },
1667
+ "frameworkSets": {
1668
+ "type": "string[]",
1669
+ "optional": false,
1670
+ "nullable": false,
1671
+ "nonEmpty": true
1672
+ },
1673
+ "roles": {
1674
+ "type": "string[]",
1675
+ "optional": false,
1676
+ "nullable": false,
1677
+ "nonEmpty": true
1678
+ }
1679
+ }
1680
+ },
1681
+ "turnOffRuleUntilEpoch": {
1682
+ "type": "number",
1683
+ "optional": false,
1684
+ "nullable": false,
1685
+ "nonEmpty": false
1686
+ },
1687
+ "turnOffRuleWhileOnBranch": {
1688
+ "type": "string",
1689
+ "optional": false,
1690
+ "nullable": true,
1691
+ "nonEmpty": false
1692
+ }
1693
+ },
1694
+ "framework-tsconfig": {
1695
+ "mode": {
1696
+ "type": "string",
1697
+ "enumValues": [
1698
+ "OFF",
1699
+ "MODIFIED_PROJECTS",
1700
+ "RUN_EVERY_TIME"
1701
+ ],
1702
+ "optional": false,
1703
+ "nullable": false,
1704
+ "nonEmpty": false
1705
+ },
1706
+ "allowedPaths": {
1707
+ "type": "string[]",
1708
+ "optional": true,
1709
+ "nullable": false,
1710
+ "nonEmpty": false
1711
+ },
1712
+ "turnOffRuleUntilEpoch": {
1713
+ "type": "number",
1714
+ "optional": false,
1715
+ "nullable": false,
1716
+ "nonEmpty": false
1717
+ },
1718
+ "turnOffRuleWhileOnBranch": {
1719
+ "type": "string",
1720
+ "optional": false,
1721
+ "nullable": true,
1722
+ "nonEmpty": false
1723
+ }
1724
+ },
1725
+ "framework-packages": {
1726
+ "mode": {
1727
+ "type": "string",
1728
+ "enumValues": [
1729
+ "OFF",
1730
+ "MODIFIED_PROJECTS",
1731
+ "RUN_EVERY_TIME"
1732
+ ],
1733
+ "optional": false,
1734
+ "nullable": false,
1735
+ "nonEmpty": false
1736
+ },
1737
+ "entries": {
1738
+ "type": "object[]",
1739
+ "optional": false,
1740
+ "nullable": false,
1741
+ "nonEmpty": true,
1742
+ "elementSchema": {
1743
+ "packages": {
1744
+ "type": "string[]",
1745
+ "optional": false,
1746
+ "nullable": false,
1747
+ "nonEmpty": true
1748
+ },
1749
+ "frameworks": {
1750
+ "type": "string[]",
1751
+ "optional": false,
1752
+ "nullable": false,
1753
+ "nonEmpty": true
1754
+ }
1755
+ }
1756
+ },
1757
+ "allowedPaths": {
1758
+ "type": "string[]",
1759
+ "optional": true,
1760
+ "nullable": false,
1761
+ "nonEmpty": false
1762
+ },
1763
+ "turnOffRuleUntilEpoch": {
1764
+ "type": "number",
1765
+ "optional": false,
1766
+ "nullable": false,
1767
+ "nonEmpty": false
1768
+ },
1769
+ "turnOffRuleWhileOnBranch": {
1770
+ "type": "string",
1771
+ "optional": false,
1772
+ "nullable": true,
1773
+ "nonEmpty": false
1774
+ }
1775
+ }
1776
+ },
1777
+ "tuning": {
1778
+ "no-any-unknown": {},
1779
+ "no-implicit-any": {},
1780
+ "max-file-lines": {
1781
+ "limit": 900
1782
+ },
1783
+ "max-method-lines": {
1784
+ "limit": 80
1785
+ },
1786
+ "require-return-type": {},
1787
+ "no-inline-type-literals": {},
1788
+ "no-destructure": {
1789
+ "allowTopLevel": true
1790
+ },
1791
+ "catch-error-pattern": {},
1792
+ "no-unmanaged-exceptions": {},
1793
+ "no-file-import-cycles": {},
1794
+ "runtime-architecture": {},
1795
+ "prisma-validate-dtos": {},
1796
+ "prisma-converter": {},
1797
+ "angular-no-direct-api-in-resolver": {},
1798
+ "no-symbol-di-tokens": {},
1799
+ "no-client-creation-outside-server-or-client": {},
1800
+ "no-custom-css": {
1801
+ "allowGlobs": []
1802
+ },
1803
+ "no-state-paths-in-templates": {},
1804
+ "no-process-exit-outside-main": {},
1805
+ "inject-annotation-not-needed-for-concrete-class": {},
1806
+ "framework-tag": {
1807
+ "knownTypes": [
1808
+ "browser",
1809
+ "react",
1810
+ "angular",
1811
+ "node",
1812
+ "express",
1813
+ "react-native"
1814
+ ]
1815
+ },
1816
+ "role-tag": {
1817
+ "knownTypes": [
1818
+ "server",
1819
+ "app",
1820
+ "bundle",
1821
+ "designed-lib",
1822
+ "lib",
1823
+ "client",
1824
+ "api-lib",
1825
+ "api-client"
1826
+ ]
1827
+ },
1828
+ "ensure-we-are-secure": {},
1829
+ "nx-wiring": {},
1830
+ "di-graph": {},
1831
+ "missing-design-annotation": {},
1832
+ "validate-ts-in-src": {
1833
+ "allowedRootFiles": [
1834
+ "jest.setup.ts"
1835
+ ],
1836
+ "excludePaths": [
1837
+ "node_modules",
1838
+ "dist",
1839
+ ".nx",
1840
+ ".git",
1841
+ "**/*.d.ts",
1842
+ "**/jest.config.ts"
1843
+ ]
1844
+ },
1845
+ "no-js-files": {},
1846
+ "validate-architecture-unchanged": {},
1847
+ "validate-no-architecture-cycles": {},
1848
+ "validate-packagejson": {},
1849
+ "validate-versions-locked": {},
1850
+ "validate-eslint-sync": {},
1851
+ "no-root-union-api-type": {},
1852
+ "api-rules-for-openapi": {},
1853
+ "api-rules-for-mcp": {},
1854
+ "no-inline-import-in-api-lib": {},
1855
+ "one-enum-spelling-in-api-lib": {},
1856
+ "no-utility-types-in-api-lib": {},
1857
+ "required-type-suffix": {},
1858
+ "api-lib-dependencies": {},
1859
+ "api-lib-path": {},
1860
+ "framework-folder": {},
1861
+ "framework-tsconfig": {},
1862
+ "framework-packages": {},
1863
+ "branch-creation-guard": {},
1864
+ "pr-lifecycle-guard": {},
1865
+ "branch-state-guard": {}
1866
+ },
1867
+ "seeds": {
1868
+ "max-method-lines": {
1869
+ "mode": "NEW_AND_MODIFIED_METHODS",
1870
+ "turnOffRuleUntilEpoch": 0,
1871
+ "turnOffRuleWhileOnBranch": null
1872
+ },
1873
+ "max-file-lines": {
1874
+ "mode": "NEW_AND_MODIFIED_FILES",
1875
+ "turnOffRuleUntilEpoch": 0,
1876
+ "turnOffRuleWhileOnBranch": null
1877
+ },
1878
+ "require-return-type": {
1879
+ "mode": "NEW_AND_MODIFIED_METHODS",
1880
+ "turnOffRuleUntilEpoch": 0,
1881
+ "turnOffRuleWhileOnBranch": null
1882
+ },
1883
+ "no-inline-type-literals": {
1884
+ "mode": "NEW_AND_MODIFIED_METHODS",
1885
+ "turnOffRuleUntilEpoch": 0,
1886
+ "turnOffRuleWhileOnBranch": null
1887
+ },
1888
+ "no-any-unknown": {
1889
+ "mode": "NEW_AND_MODIFIED_CODE",
1890
+ "turnOffRuleUntilEpoch": 0,
1891
+ "turnOffRuleWhileOnBranch": null
1892
+ },
1893
+ "no-implicit-any": {
1894
+ "mode": "NEW_AND_MODIFIED_CODE",
1895
+ "turnOffRuleUntilEpoch": 0,
1896
+ "turnOffRuleWhileOnBranch": null
1897
+ },
1898
+ "prisma-validate-dtos": {
1899
+ "mode": "MODIFIED_CLASS",
1900
+ "turnOffRuleUntilEpoch": 0,
1901
+ "turnOffRuleWhileOnBranch": null
1902
+ },
1903
+ "prisma-converter": {
1904
+ "mode": "NEW_AND_MODIFIED_METHODS",
1905
+ "turnOffRuleUntilEpoch": 0,
1906
+ "turnOffRuleWhileOnBranch": null
1907
+ },
1908
+ "no-destructure": {
1909
+ "mode": "NEW_AND_MODIFIED_CODE",
1910
+ "turnOffRuleUntilEpoch": 0,
1911
+ "turnOffRuleWhileOnBranch": null
1912
+ },
1913
+ "no-unmanaged-exceptions": {
1914
+ "mode": "NEW_AND_MODIFIED_CODE",
1915
+ "turnOffRuleUntilEpoch": 0,
1916
+ "turnOffRuleWhileOnBranch": null
1917
+ },
1918
+ "catch-error-pattern": {
1919
+ "mode": "NEW_AND_MODIFIED_CODE",
1920
+ "turnOffRuleUntilEpoch": 0,
1921
+ "turnOffRuleWhileOnBranch": null
1922
+ },
1923
+ "throw-cause-required": {
1924
+ "mode": "NEW_AND_MODIFIED_CODE",
1925
+ "turnOffRuleUntilEpoch": 0,
1926
+ "turnOffRuleWhileOnBranch": null
1927
+ },
1928
+ "angular-no-direct-api-in-resolver": {
1929
+ "mode": "NEW_AND_MODIFIED_CODE",
1930
+ "turnOffRuleUntilEpoch": 0,
1931
+ "turnOffRuleWhileOnBranch": null
1932
+ },
1933
+ "no-symbol-di-tokens": {
1934
+ "mode": "NEW_AND_MODIFIED_CODE",
1935
+ "turnOffRuleUntilEpoch": 0,
1936
+ "turnOffRuleWhileOnBranch": null
1937
+ },
1938
+ "no-client-creation-outside-server-or-client": {
1939
+ "mode": "NEW_AND_MODIFIED_CODE",
1940
+ "turnOffRuleUntilEpoch": 0,
1941
+ "turnOffRuleWhileOnBranch": null
1942
+ },
1943
+ "no-custom-css": {
1944
+ "mode": "NEW_AND_MODIFIED_CODE",
1945
+ "turnOffRuleUntilEpoch": 0,
1946
+ "turnOffRuleWhileOnBranch": null
1947
+ },
1948
+ "no-state-paths-in-templates": {
1949
+ "mode": "NEW_AND_MODIFIED_CODE",
1950
+ "turnOffRuleUntilEpoch": 0,
1951
+ "turnOffRuleWhileOnBranch": null
1952
+ },
1953
+ "no-process-exit-outside-main": {
1954
+ "mode": "NEW_AND_MODIFIED_CODE",
1955
+ "turnOffRuleUntilEpoch": 0,
1956
+ "turnOffRuleWhileOnBranch": null
1957
+ },
1958
+ "no-function-outside-class": {
1959
+ "mode": "NEW_AND_MODIFIED_CODE",
1960
+ "turnOffRuleUntilEpoch": 0,
1961
+ "turnOffRuleWhileOnBranch": null
1962
+ },
1963
+ "inject-annotation-not-needed-for-concrete-class": {
1964
+ "mode": "NEW_AND_MODIFIED_CODE",
1965
+ "turnOffRuleUntilEpoch": 0,
1966
+ "turnOffRuleWhileOnBranch": null
1967
+ },
1968
+ "framework-tag": {
1969
+ "mode": "MODIFIED_PROJECTS",
1970
+ "turnOffRuleUntilEpoch": 0,
1971
+ "turnOffRuleWhileOnBranch": null
1972
+ },
1973
+ "role-tag": {
1974
+ "mode": "MODIFIED_PROJECTS",
1975
+ "turnOffRuleUntilEpoch": 0,
1976
+ "turnOffRuleWhileOnBranch": null
1977
+ },
1978
+ "ensure-we-are-secure": {
1979
+ "mode": "MODIFIED_PROJECTS",
1980
+ "turnOffRuleUntilEpoch": 0,
1981
+ "turnOffRuleWhileOnBranch": null
1982
+ },
1983
+ "branch-creation-guard": {
1984
+ "mode": "ON",
1985
+ "turnOffRuleUntilEpoch": 0,
1986
+ "turnOffRuleWhileOnBranch": null,
1987
+ "subBranchNaming": "feature/<ticket>/<short-description>",
1988
+ "autoReapMergedBranches": false
1989
+ },
1990
+ "pr-lifecycle-guard": {
1991
+ "mode": "ON",
1992
+ "turnOffRuleUntilEpoch": 0,
1993
+ "turnOffRuleWhileOnBranch": null
1994
+ },
1995
+ "branch-state-guard": {
1996
+ "mode": "ON",
1997
+ "turnOffRuleUntilEpoch": 0,
1998
+ "turnOffRuleWhileOnBranch": null,
1999
+ "maxCommitsBehind": 5
2000
+ },
2001
+ "no-file-import-cycles": {
2002
+ "mode": "RUN_EVERY_TIME",
2003
+ "turnOffRuleUntilEpoch": 0,
2004
+ "turnOffRuleWhileOnBranch": null
2005
+ },
2006
+ "runtime-architecture": {
2007
+ "mode": "RUN_EVERY_TIME",
2008
+ "turnOffRuleUntilEpoch": 0,
2009
+ "turnOffRuleWhileOnBranch": null
2010
+ },
2011
+ "nx-wiring": {
2012
+ "mode": "RUN_EVERY_TIME",
2013
+ "turnOffRuleUntilEpoch": 0,
2014
+ "turnOffRuleWhileOnBranch": null
2015
+ },
2016
+ "di-graph": {
2017
+ "mode": "RUN_EVERY_TIME",
2018
+ "turnOffRuleUntilEpoch": 0,
2019
+ "turnOffRuleWhileOnBranch": null
2020
+ },
2021
+ "missing-design-annotation": {
2022
+ "mode": "RUN_EVERY_TIME",
2023
+ "turnOffRuleUntilEpoch": 0,
2024
+ "turnOffRuleWhileOnBranch": null
2025
+ },
2026
+ "no-js-files": {
2027
+ "mode": "NEW_AND_MODIFIED_FILES",
2028
+ "turnOffRuleUntilEpoch": 0,
2029
+ "turnOffRuleWhileOnBranch": null
2030
+ },
2031
+ "validate-ts-in-src": {
2032
+ "mode": "NEW_AND_MODIFIED_FILES",
2033
+ "turnOffRuleUntilEpoch": 0,
2034
+ "turnOffRuleWhileOnBranch": null
2035
+ },
2036
+ "validate-architecture-unchanged": {
2037
+ "mode": "RUN_EVERY_TIME",
2038
+ "turnOffRuleUntilEpoch": 0,
2039
+ "turnOffRuleWhileOnBranch": null
2040
+ },
2041
+ "validate-no-architecture-cycles": {
2042
+ "mode": "RUN_EVERY_TIME",
2043
+ "turnOffRuleUntilEpoch": 0,
2044
+ "turnOffRuleWhileOnBranch": null
2045
+ },
2046
+ "validate-packagejson": {
2047
+ "mode": "RUN_EVERY_TIME",
2048
+ "turnOffRuleUntilEpoch": 0,
2049
+ "turnOffRuleWhileOnBranch": null
2050
+ },
2051
+ "validate-versions-locked": {
2052
+ "mode": "RUN_EVERY_TIME",
2053
+ "turnOffRuleUntilEpoch": 0,
2054
+ "turnOffRuleWhileOnBranch": null
2055
+ },
2056
+ "validate-eslint-sync": {
2057
+ "mode": "RUN_EVERY_TIME",
2058
+ "turnOffRuleUntilEpoch": 0,
2059
+ "turnOffRuleWhileOnBranch": null
2060
+ },
2061
+ "no-root-union-api-type": {
2062
+ "mode": "RUN_EVERY_TIME",
2063
+ "turnOffRuleUntilEpoch": 0,
2064
+ "turnOffRuleWhileOnBranch": null
2065
+ },
2066
+ "api-rules-for-openapi": {
2067
+ "mode": "AFFECTED_PROJECT",
2068
+ "turnOffRuleUntilEpoch": 0,
2069
+ "turnOffRuleWhileOnBranch": null
2070
+ },
2071
+ "api-rules-for-mcp": {
2072
+ "mode": "AFFECTED_PROJECT",
2073
+ "turnOffRuleUntilEpoch": 0,
2074
+ "turnOffRuleWhileOnBranch": null
2075
+ },
2076
+ "no-inline-import-in-api-lib": {
2077
+ "mode": "NEW_AND_MODIFIED_CODE",
2078
+ "turnOffRuleUntilEpoch": 0,
2079
+ "turnOffRuleWhileOnBranch": null
2080
+ },
2081
+ "one-enum-spelling-in-api-lib": {
2082
+ "mode": "NEW_AND_MODIFIED_CODE",
2083
+ "turnOffRuleUntilEpoch": 0,
2084
+ "turnOffRuleWhileOnBranch": null
2085
+ },
2086
+ "no-utility-types-in-api-lib": {
2087
+ "mode": "NEW_AND_MODIFIED_CODE",
2088
+ "turnOffRuleUntilEpoch": 0,
2089
+ "turnOffRuleWhileOnBranch": null,
2090
+ "paths": [
2091
+ "libraries/apis/**"
2092
+ ]
2093
+ },
2094
+ "required-type-suffix": {
2095
+ "mode": "NEW_AND_MODIFIED_CODE",
2096
+ "turnOffRuleUntilEpoch": 0,
2097
+ "turnOffRuleWhileOnBranch": null,
2098
+ "entries": [
2099
+ {
2100
+ "paths": [
2101
+ "libraries/apis/**"
2102
+ ],
2103
+ "suffixes": [
2104
+ "Request",
2105
+ "Response",
2106
+ "Event",
2107
+ "Dto",
2108
+ "Api"
2109
+ ]
2110
+ }
2111
+ ]
2112
+ },
2113
+ "api-lib-dependencies": {
2114
+ "mode": "RUN_EVERY_TIME",
2115
+ "turnOffRuleUntilEpoch": 0,
2116
+ "turnOffRuleWhileOnBranch": null,
2117
+ "apiLibPackages": [
2118
+ "@webpieces/core-util",
2119
+ "tslib"
2120
+ ],
2121
+ "apiClients": []
2122
+ },
2123
+ "api-lib-path": {
2124
+ "mode": "RUN_EVERY_TIME",
2125
+ "turnOffRuleUntilEpoch": 0,
2126
+ "turnOffRuleWhileOnBranch": null,
2127
+ "paths": [
2128
+ "libraries/apis/**"
2129
+ ]
2130
+ },
2131
+ "framework-folder": {
2132
+ "mode": "RUN_EVERY_TIME",
2133
+ "turnOffRuleUntilEpoch": 0,
2134
+ "turnOffRuleWhileOnBranch": null,
2135
+ "entries": [
2136
+ {
2137
+ "paths": [
2138
+ "libraries/angular/**"
2139
+ ],
2140
+ "frameworkSets": [
2141
+ "angular"
2142
+ ],
2143
+ "roles": [
2144
+ "lib",
2145
+ "designed-lib"
2146
+ ]
2147
+ },
2148
+ {
2149
+ "paths": [
2150
+ "libraries/node/**"
2151
+ ],
2152
+ "frameworkSets": [
2153
+ "node",
2154
+ "express"
2155
+ ],
2156
+ "roles": [
2157
+ "lib",
2158
+ "designed-lib"
2159
+ ]
2160
+ },
2161
+ {
2162
+ "paths": [
2163
+ "libraries/universal/**"
2164
+ ],
2165
+ "frameworkSets": [
2166
+ "browser+node+react-native"
2167
+ ],
2168
+ "roles": [
2169
+ "lib",
2170
+ "designed-lib"
2171
+ ]
2172
+ },
2173
+ {
2174
+ "paths": [
2175
+ "libraries/rn-browser/**"
2176
+ ],
2177
+ "frameworkSets": [
2178
+ "browser+react-native"
2179
+ ],
2180
+ "roles": [
2181
+ "lib",
2182
+ "designed-lib"
2183
+ ]
2184
+ },
2185
+ {
2186
+ "paths": [
2187
+ "libraries/react-native/**"
2188
+ ],
2189
+ "frameworkSets": [
2190
+ "react-native"
2191
+ ],
2192
+ "roles": [
2193
+ "lib",
2194
+ "designed-lib"
2195
+ ]
2196
+ },
2197
+ {
2198
+ "paths": [
2199
+ "libraries/apis/internal/**"
2200
+ ],
2201
+ "frameworkSets": [
2202
+ "browser+node+react-native"
2203
+ ],
2204
+ "roles": [
2205
+ "api-lib"
2206
+ ]
2207
+ },
2208
+ {
2209
+ "paths": [
2210
+ "libraries/apis/external-node/**"
2211
+ ],
2212
+ "frameworkSets": [
2213
+ "node"
2214
+ ],
2215
+ "roles": [
2216
+ "api-client"
2217
+ ]
2218
+ },
2219
+ {
2220
+ "paths": [
2221
+ "libraries/apis/external-rn-browser/**"
2222
+ ],
2223
+ "frameworkSets": [
2224
+ "browser+react-native"
2225
+ ],
2226
+ "roles": [
2227
+ "api-lib"
2228
+ ]
2229
+ }
2230
+ ]
2231
+ },
2232
+ "framework-tsconfig": {
2233
+ "mode": "MODIFIED_PROJECTS",
2234
+ "turnOffRuleUntilEpoch": 0,
2235
+ "turnOffRuleWhileOnBranch": null
2236
+ },
2237
+ "framework-packages": {
2238
+ "mode": "MODIFIED_PROJECTS",
2239
+ "turnOffRuleUntilEpoch": 0,
2240
+ "turnOffRuleWhileOnBranch": null,
2241
+ "entries": [
2242
+ {
2243
+ "packages": [
2244
+ "@angular/*"
2245
+ ],
2246
+ "frameworks": [
2247
+ "angular"
2248
+ ]
2249
+ },
2250
+ {
2251
+ "packages": [
2252
+ "react",
2253
+ "react-native",
2254
+ "expo*",
2255
+ "@expo/*",
2256
+ "@sentry/react-native"
2257
+ ],
2258
+ "frameworks": [
2259
+ "react",
2260
+ "react-native"
2261
+ ]
2262
+ },
2263
+ {
2264
+ "packages": [
2265
+ "express",
2266
+ "firebase-admin",
2267
+ "googleapis",
2268
+ "google-auth-library",
2269
+ "@google-cloud/*"
2270
+ ],
2271
+ "frameworks": [
2272
+ "node",
2273
+ "express"
2274
+ ]
2275
+ },
2276
+ {
2277
+ "packages": [
2278
+ "firebase"
2279
+ ],
2280
+ "frameworks": [
2281
+ "browser",
2282
+ "angular",
2283
+ "react"
2284
+ ]
2285
+ }
2286
+ ]
2287
+ }
2288
+ },
2289
+ "migrations": [
2290
+ {
2291
+ "scope": "rule",
2292
+ "key": "pr-merge-cleanup",
2293
+ "movedTo": "pr-lifecycle-guard",
2294
+ "instruction": "Rename the key to \"pr-lifecycle-guard\" (merging its value into that entry if you already have one — the four PR/merge guards share one key now). Its mode and escape hatches carry over.",
2295
+ "label": "[pr-merge-cleanup]",
2296
+ "prunable": false
2297
+ },
2298
+ {
2299
+ "scope": "rule",
2300
+ "key": "pr-creation-guard",
2301
+ "movedTo": "pr-lifecycle-guard",
2302
+ "instruction": "Rename the key to \"pr-lifecycle-guard\" (merging its value into that entry if you already have one — the four PR/merge guards share one key now). Its mode and escape hatches carry over; the old \"upsertPrCommand\" field does NOT — that string lives only in commands.guardHints.prCreationOrPush.",
2303
+ "label": "[pr-creation-guard]",
2304
+ "prunable": false
2305
+ },
2306
+ {
2307
+ "scope": "rule",
2308
+ "key": "main-stale-guard",
2309
+ "movedTo": "branch-state-guard",
2310
+ "instruction": "Rename the key to \"branch-state-guard\" (merging its value into that entry if you already have one — the four branch-state guards share one key now). Its mode and escape hatches carry over. Note the widened scope: that key arms the Write, Read AND Bash halves of the branch-state policy, not just the Read block this key used to name.",
2311
+ "label": "[main-stale-guard]",
2312
+ "prunable": false
2313
+ },
2314
+ {
2315
+ "scope": "key",
2316
+ "key": "upsertPr",
2317
+ "movedTo": "commands.guardHints.prCreationOrPush",
2318
+ "instruction": "Move the value to \"guardHints\": { \"prCreationOrPush\": <value> } inside the same \"commands\" section, then delete \"upsertPr\".",
2319
+ "label": "[commands]",
2320
+ "prunable": false
2321
+ },
2322
+ {
2323
+ "scope": "key",
2324
+ "key": "mergeComplete",
2325
+ "movedTo": "commands.guardHints.mergeInProgress",
2326
+ "instruction": "Move the value to \"guardHints\": { \"mergeInProgress\": <value> } inside the same \"commands\" section, then delete \"mergeComplete\".",
2327
+ "label": "[commands]",
2328
+ "prunable": false
2329
+ },
2330
+ {
2331
+ "scope": "key",
2332
+ "key": "rules",
2333
+ "movedTo": "excludePaths (one flat array)",
2334
+ "instruction": "Replace the whole { \"rules\": [...], \"guards\": [...] } object with ONE array holding the union of both lists, de-duplicated — e.g. \"excludePaths\": [\"repositories/**\"]. A path is governed by webpieces or it is not, so there is no longer a per-engine split. To exclude a path from one rule only, use that rule's own \"excludePaths\" inside its config block instead.",
2335
+ "label": "[excludePaths]",
2336
+ "prunable": false
2337
+ },
2338
+ {
2339
+ "scope": "rule",
2340
+ "key": "whole-repo-build-guard",
2341
+ "movedTo": "~/.webpieces/config.json → experimental.whole-repo-build-guard",
2342
+ "instruction": "DELETE this entry from webpieces.config.json — no repo config key controls this guard any more. The guard is OFF by default for everyone, with no file and no key required. To turn it ON for YOUR machine only, put {\"experimental\": {\"whole-repo-build-guard\": true}} in ~/.webpieces/config.json — that file is optional and is tracked by no repo.",
2343
+ "label": "[whole-repo-build-guard]",
2344
+ "prunable": true
2345
+ },
2346
+ {
2347
+ "scope": "rule",
2348
+ "key": "feature-branch-guard",
2349
+ "movedTo": "branch-state-guard",
2350
+ "instruction": "MERGE it into ONE \"branch-state-guard\" entry under \"hookGuards\". All four of feature-branch-guard, read-stale-guard, stale-main-bash-guard and merged-branch-bash-guard now read that single entry — they are one policy (\"may I work here, and is what I read current?\") implemented by four classes, and configuring them separately let you switch on half of it. Keep \"mode\", \"turnOffRuleUntilEpoch\" and \"turnOffRuleWhileOnBranch\"; the ONE \"hangTimeoutMinutes\" survives (there was only ever one refresher and one cache, so at most one of the four values could ever take effect); \"branchNamingConvention\" survives from feature-branch-guard. If the four disagreed on \"mode\", pick the one you meant — \"ON\" arms the whole policy including the Read block. Then DELETE this key.",
2351
+ "label": "[feature-branch-guard]",
2352
+ "prunable": false
2353
+ },
2354
+ {
2355
+ "scope": "rule",
2356
+ "key": "read-stale-guard",
2357
+ "movedTo": "branch-state-guard",
2358
+ "instruction": "MERGE it into ONE \"branch-state-guard\" entry under \"hookGuards\". All four of feature-branch-guard, read-stale-guard, stale-main-bash-guard and merged-branch-bash-guard now read that single entry — they are one policy (\"may I work here, and is what I read current?\") implemented by four classes, and configuring them separately let you switch on half of it. Keep \"mode\", \"turnOffRuleUntilEpoch\" and \"turnOffRuleWhileOnBranch\"; the ONE \"hangTimeoutMinutes\" survives (there was only ever one refresher and one cache, so at most one of the four values could ever take effect); \"branchNamingConvention\" survives from feature-branch-guard. If the four disagreed on \"mode\", pick the one you meant — \"ON\" arms the whole policy including the Read block. Then DELETE this key.",
2359
+ "label": "[read-stale-guard]",
2360
+ "prunable": false
2361
+ },
2362
+ {
2363
+ "scope": "rule",
2364
+ "key": "stale-main-bash-guard",
2365
+ "movedTo": "branch-state-guard",
2366
+ "instruction": "MERGE it into ONE \"branch-state-guard\" entry under \"hookGuards\". All four of feature-branch-guard, read-stale-guard, stale-main-bash-guard and merged-branch-bash-guard now read that single entry — they are one policy (\"may I work here, and is what I read current?\") implemented by four classes, and configuring them separately let you switch on half of it. Keep \"mode\", \"turnOffRuleUntilEpoch\" and \"turnOffRuleWhileOnBranch\"; the ONE \"hangTimeoutMinutes\" survives (there was only ever one refresher and one cache, so at most one of the four values could ever take effect); \"branchNamingConvention\" survives from feature-branch-guard. If the four disagreed on \"mode\", pick the one you meant — \"ON\" arms the whole policy including the Read block. Then DELETE this key.",
2367
+ "label": "[stale-main-bash-guard]",
2368
+ "prunable": false
2369
+ },
2370
+ {
2371
+ "scope": "rule",
2372
+ "key": "merged-branch-bash-guard",
2373
+ "movedTo": "branch-state-guard",
2374
+ "instruction": "MERGE it into ONE \"branch-state-guard\" entry under \"hookGuards\". All four of feature-branch-guard, read-stale-guard, stale-main-bash-guard and merged-branch-bash-guard now read that single entry — they are one policy (\"may I work here, and is what I read current?\") implemented by four classes, and configuring them separately let you switch on half of it. Keep \"mode\", \"turnOffRuleUntilEpoch\" and \"turnOffRuleWhileOnBranch\"; the ONE \"hangTimeoutMinutes\" survives (there was only ever one refresher and one cache, so at most one of the four values could ever take effect); \"branchNamingConvention\" survives from feature-branch-guard. If the four disagreed on \"mode\", pick the one you meant — \"ON\" arms the whole policy including the Read block. Then DELETE this key.",
2375
+ "label": "[merged-branch-bash-guard]",
2376
+ "prunable": false
2377
+ },
2378
+ {
2379
+ "scope": "rule",
2380
+ "key": "pr-creation-or-push-guard",
2381
+ "movedTo": "pr-lifecycle-guard",
2382
+ "instruction": "MERGE it into ONE \"pr-lifecycle-guard\" entry under \"hookGuards\". All four of pr-creation-or-push-guard, merge-in-progress-guard, pr-merge-guard and redirect-how-to-merge-main now read that single entry — they are one policy (\"do PRs and merges go through the gated flow?\"). Keep \"mode\", \"turnOffRuleUntilEpoch\" and \"turnOffRuleWhileOnBranch\". Know what \"mode\": \"OFF\" now means: it releases the unvalidated-merge gate as well as the PR/push blocks, because merge-in-progress-guard is under this key too. The per-guard \"upsertPrCommand\" / \"mergeCompleteCommand\" fields are gone — those strings live ONLY in commands.guardHints.prCreationOrPush / .mergeInProgress. Then DELETE this key.",
2383
+ "label": "[pr-creation-or-push-guard]",
2384
+ "prunable": false
2385
+ },
2386
+ {
2387
+ "scope": "rule",
2388
+ "key": "merge-in-progress-guard",
2389
+ "movedTo": "pr-lifecycle-guard",
2390
+ "instruction": "MERGE it into ONE \"pr-lifecycle-guard\" entry under \"hookGuards\". All four of pr-creation-or-push-guard, merge-in-progress-guard, pr-merge-guard and redirect-how-to-merge-main now read that single entry — they are one policy (\"do PRs and merges go through the gated flow?\"). Keep \"mode\", \"turnOffRuleUntilEpoch\" and \"turnOffRuleWhileOnBranch\". Know what \"mode\": \"OFF\" now means: it releases the unvalidated-merge gate as well as the PR/push blocks, because merge-in-progress-guard is under this key too. The per-guard \"upsertPrCommand\" / \"mergeCompleteCommand\" fields are gone — those strings live ONLY in commands.guardHints.prCreationOrPush / .mergeInProgress. Then DELETE this key.",
2391
+ "label": "[merge-in-progress-guard]",
2392
+ "prunable": false
2393
+ },
2394
+ {
2395
+ "scope": "rule",
2396
+ "key": "pr-merge-guard",
2397
+ "movedTo": "pr-lifecycle-guard",
2398
+ "instruction": "MERGE it into ONE \"pr-lifecycle-guard\" entry under \"hookGuards\". All four of pr-creation-or-push-guard, merge-in-progress-guard, pr-merge-guard and redirect-how-to-merge-main now read that single entry — they are one policy (\"do PRs and merges go through the gated flow?\"). Keep \"mode\", \"turnOffRuleUntilEpoch\" and \"turnOffRuleWhileOnBranch\". Know what \"mode\": \"OFF\" now means: it releases the unvalidated-merge gate as well as the PR/push blocks, because merge-in-progress-guard is under this key too. The per-guard \"upsertPrCommand\" / \"mergeCompleteCommand\" fields are gone — those strings live ONLY in commands.guardHints.prCreationOrPush / .mergeInProgress. Then DELETE this key.",
2399
+ "label": "[pr-merge-guard]",
2400
+ "prunable": false
2401
+ },
2402
+ {
2403
+ "scope": "rule",
2404
+ "key": "redirect-how-to-merge-main",
2405
+ "movedTo": "pr-lifecycle-guard",
2406
+ "instruction": "MERGE it into ONE \"pr-lifecycle-guard\" entry under \"hookGuards\". All four of pr-creation-or-push-guard, merge-in-progress-guard, pr-merge-guard and redirect-how-to-merge-main now read that single entry — they are one policy (\"do PRs and merges go through the gated flow?\"). Keep \"mode\", \"turnOffRuleUntilEpoch\" and \"turnOffRuleWhileOnBranch\". Know what \"mode\": \"OFF\" now means: it releases the unvalidated-merge gate as well as the PR/push blocks, because merge-in-progress-guard is under this key too. The per-guard \"upsertPrCommand\" / \"mergeCompleteCommand\" fields are gone — those strings live ONLY in commands.guardHints.prCreationOrPush / .mergeInProgress. Then DELETE this key.",
2407
+ "label": "[redirect-how-to-merge-main]",
2408
+ "prunable": false
2409
+ },
2410
+ {
2411
+ "scope": "key",
2412
+ "key": "subagent",
2413
+ "movedTo": "id",
2414
+ "instruction": "Rename \"subagent\" to \"id\" in EVERY commands.pr-gate.checklists entry, keeping its value (it still names the checklist and keys review-round<N>-<id>.json). Checklists no longer choose an agent type: every one is reviewed by the webpieces-reviewer agent (or your own, via \"overrideReviewerAgent\": true + \"reviewerAgentName\" in commands.pr-gate).",
2415
+ "label": "[pr-gate.checklists]",
2416
+ "prunable": false
2417
+ },
2418
+ {
2419
+ "scope": "field",
2420
+ "key": "runtime-architecture.servicePaths",
2421
+ "movedTo": "",
2422
+ "instruction": "This field was removed — it was never read. The runtime graph is derived automatically from architecture/dependencies.json (apiRelations + project roles). Delete it.",
2423
+ "label": "[runtime-architecture]",
2424
+ "prunable": false
2425
+ },
2426
+ {
2427
+ "scope": "field",
2428
+ "key": "runtime-architecture.apiProjectPaths",
2429
+ "movedTo": "",
2430
+ "instruction": "This field was removed — it was never read. The runtime graph is derived automatically from architecture/dependencies.json, so there is NO list of api libs to maintain. Delete it (do not enumerate api libs and do not replace it with a glob).",
2431
+ "label": "[runtime-architecture]",
2432
+ "prunable": false
2433
+ },
2434
+ {
2435
+ "scope": "field",
2436
+ "key": "runtime-architecture.allowedCycles",
2437
+ "movedTo": "",
2438
+ "instruction": "This field was removed — a runtime cycle is not allowable at all any more. Levelling now FAILS on any cycle, because CD deploys services in dependency order and a cycle has no such order. Delete the key. If a cycle genuinely cannot be broken yet, declare it PER EDGE with a `cutLegacyCycle:<targetService>` nx tag on the CALLING project, which admits the debt where `grep -rn cutLegacyCycle` can enumerate it — there is no config key for it.",
2439
+ "label": "[runtime-architecture]",
2440
+ "prunable": false
2441
+ },
2442
+ {
2443
+ "scope": "field",
2444
+ "key": "pr-lifecycle-guard.upsertPrCommand",
2445
+ "movedTo": "",
2446
+ "instruction": "This field was removed. The command the push/PR-creation block prints lives in ONE place: \"commands\": { \"guardHints\": { \"prCreationOrPush\": <value> } }. Move your value there and delete this key.",
2447
+ "label": "[pr-lifecycle-guard]",
2448
+ "prunable": false
2449
+ },
2450
+ {
2451
+ "scope": "field",
2452
+ "key": "pr-lifecycle-guard.mergeCompleteCommand",
2453
+ "movedTo": "",
2454
+ "instruction": "This field was removed. The command the unfinished-merge block prints lives in ONE place: \"commands\": { \"guardHints\": { \"mergeInProgress\": <value> } }. Move your value there and delete this key.",
2455
+ "label": "[pr-lifecycle-guard]",
2456
+ "prunable": false
2457
+ }
2458
+ ],
2459
+ "owners": {
2460
+ "@webpieces/code-rules": [
2461
+ "max-method-lines",
2462
+ "max-file-lines",
2463
+ "require-return-type",
2464
+ "no-inline-type-literals",
2465
+ "no-any-unknown",
2466
+ "no-implicit-any",
2467
+ "prisma-validate-dtos",
2468
+ "prisma-converter",
2469
+ "no-destructure",
2470
+ "catch-error-pattern",
2471
+ "no-unmanaged-exceptions",
2472
+ "angular-no-direct-api-in-resolver",
2473
+ "no-symbol-di-tokens",
2474
+ "no-client-creation-outside-server-or-client",
2475
+ "no-custom-css",
2476
+ "no-state-paths-in-templates",
2477
+ "no-process-exit-outside-main",
2478
+ "no-function-outside-class",
2479
+ "inject-annotation-not-needed-for-concrete-class",
2480
+ "framework-tag",
2481
+ "role-tag",
2482
+ "ensure-we-are-secure",
2483
+ "no-inline-import-in-api-lib",
2484
+ "one-enum-spelling-in-api-lib",
2485
+ "no-utility-types-in-api-lib",
2486
+ "required-type-suffix",
2487
+ "framework-tsconfig",
2488
+ "framework-packages"
2489
+ ],
2490
+ "@webpieces/ai-hook-rules": [
2491
+ "throw-cause-required",
2492
+ "no-js-files",
2493
+ "validate-ts-in-src"
2494
+ ],
2495
+ "@webpieces/agent-workflow-rules": [
2496
+ "branch-creation-guard",
2497
+ "pr-lifecycle-guard",
2498
+ "branch-state-guard"
2499
+ ],
2500
+ "@webpieces/nx-webpieces-rules": [
2501
+ "no-file-import-cycles",
2502
+ "runtime-architecture",
2503
+ "nx-wiring",
2504
+ "di-graph",
2505
+ "missing-design-annotation",
2506
+ "validate-architecture-unchanged",
2507
+ "validate-no-architecture-cycles",
2508
+ "validate-packagejson",
2509
+ "validate-versions-locked",
2510
+ "validate-eslint-sync",
2511
+ "no-root-union-api-type",
2512
+ "api-rules-for-openapi",
2513
+ "api-rules-for-mcp",
2514
+ "api-lib-dependencies",
2515
+ "api-lib-path",
2516
+ "framework-folder"
2517
+ ],
2518
+ "@webpieces/eslint-rules": [
2519
+ "enforce-architecture",
2520
+ "no-json-property-primitive-type",
2521
+ "require-typed-template",
2522
+ "no-mat-cell-def"
2523
+ ]
2524
+ }
2525
+ }