@ai-ecoverse/slicc-browsers 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1687 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/ai-ecoverse/slicc-browsers/schema/guard-vectors.schema.json",
4
+ "title": "slicc-browsers guard vectors, schema 1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schemaVersion",
9
+ "setVersion",
10
+ "sources",
11
+ "targets",
12
+ "variants",
13
+ "capabilities",
14
+ "placeholders",
15
+ "vectors"
16
+ ],
17
+ "properties": {
18
+ "schemaVersion": {
19
+ "const": 1
20
+ },
21
+ "setVersion": {
22
+ "type": "string",
23
+ "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"
24
+ },
25
+ "sources": {
26
+ "type": "array",
27
+ "items": {
28
+ "type": "object",
29
+ "additionalProperties": false,
30
+ "required": ["repo", "ref", "path"],
31
+ "properties": {
32
+ "repo": {
33
+ "type": "string",
34
+ "minLength": 1
35
+ },
36
+ "ref": {
37
+ "type": "string",
38
+ "minLength": 1
39
+ },
40
+ "path": {
41
+ "type": "string",
42
+ "minLength": 1
43
+ }
44
+ }
45
+ }
46
+ },
47
+ "targets": {
48
+ "type": "object",
49
+ "required": ["seven", "vault", "vault-x", "apex", "own", "ordinary", "ordinary-same-site"],
50
+ "additionalProperties": {
51
+ "type": "object",
52
+ "additionalProperties": false,
53
+ "required": ["description"],
54
+ "properties": {
55
+ "host": {
56
+ "type": "string",
57
+ "pattern": "^[a-z0-9.-]+$"
58
+ },
59
+ "description": {
60
+ "type": "string",
61
+ "minLength": 1
62
+ }
63
+ }
64
+ }
65
+ },
66
+ "variants": {
67
+ "type": "object",
68
+ "required": ["prompt", "lagging"],
69
+ "propertyNames": {
70
+ "pattern": "^[a-z0-9-]+$"
71
+ },
72
+ "additionalProperties": {
73
+ "type": "integer",
74
+ "minimum": 0
75
+ }
76
+ },
77
+ "capabilities": {
78
+ "type": "object",
79
+ "additionalProperties": false,
80
+ "required": ["autoAttach", "browserSession", "browserContexts"],
81
+ "properties": {
82
+ "autoAttach": {
83
+ "type": "string",
84
+ "minLength": 1
85
+ },
86
+ "browserSession": {
87
+ "type": "string",
88
+ "minLength": 1
89
+ },
90
+ "browserContexts": {
91
+ "type": "string",
92
+ "minLength": 1
93
+ }
94
+ }
95
+ },
96
+ "placeholders": {
97
+ "type": "object",
98
+ "propertyNames": {
99
+ "pattern": "^[A-Za-z][A-Za-z-]*$"
100
+ },
101
+ "additionalProperties": {
102
+ "type": "string",
103
+ "minLength": 1
104
+ }
105
+ },
106
+ "vectors": {
107
+ "type": "array",
108
+ "minItems": 1,
109
+ "items": {
110
+ "$ref": "#/$defs/vector"
111
+ }
112
+ }
113
+ },
114
+ "$defs": {
115
+ "capability": {
116
+ "enum": ["autoAttach", "browserSession", "browserContexts"]
117
+ },
118
+ "requires": {
119
+ "type": "array",
120
+ "minItems": 1,
121
+ "uniqueItems": true,
122
+ "items": {
123
+ "$ref": "#/$defs/capability"
124
+ }
125
+ },
126
+ "observation": {
127
+ "type": "object",
128
+ "additionalProperties": false,
129
+ "required": ["means", "check"],
130
+ "properties": {
131
+ "means": {
132
+ "type": "string",
133
+ "minLength": 1
134
+ },
135
+ "dependsOn": {
136
+ "type": "array",
137
+ "uniqueItems": true,
138
+ "items": {
139
+ "type": "string",
140
+ "pattern": "^(refused\\.[0-9]+|[A-Za-z][A-Za-z0-9]*)$"
141
+ }
142
+ },
143
+ "requires": {
144
+ "$ref": "#/$defs/requires"
145
+ },
146
+ "check": {
147
+ "$ref": "#/$defs/check"
148
+ }
149
+ }
150
+ },
151
+ "target": {
152
+ "enum": ["seven", "vault", "vault-x", "apex", "own"]
153
+ },
154
+ "expected": {
155
+ "oneOf": [
156
+ {
157
+ "type": "object",
158
+ "minProperties": 1,
159
+ "additionalProperties": {
160
+ "oneOf": [
161
+ {
162
+ "type": "boolean"
163
+ },
164
+ {
165
+ "const": "either"
166
+ }
167
+ ]
168
+ }
169
+ },
170
+ {
171
+ "type": "string",
172
+ "minLength": 1
173
+ }
174
+ ]
175
+ },
176
+ "vector": {
177
+ "type": "object",
178
+ "additionalProperties": false,
179
+ "required": [
180
+ "id",
181
+ "family",
182
+ "kind",
183
+ "scope",
184
+ "setup",
185
+ "trigger",
186
+ "targets",
187
+ "live",
188
+ "control",
189
+ "expected"
190
+ ],
191
+ "properties": {
192
+ "id": {
193
+ "type": "string",
194
+ "pattern": "^[CEB][1-9](\\.[A-Za-z0-9-]+)*$"
195
+ },
196
+ "family": {
197
+ "enum": ["C", "E", "B"]
198
+ },
199
+ "kind": {
200
+ "enum": ["cdp", "text"]
201
+ },
202
+ "scope": {
203
+ "type": "string",
204
+ "pattern": "^(any|[a-z][a-z0-9-]*)$"
205
+ },
206
+ "setup": {
207
+ "$ref": "#/$defs/steps"
208
+ },
209
+ "trigger": {
210
+ "$ref": "#/$defs/steps"
211
+ },
212
+ "targets": {
213
+ "type": "array",
214
+ "minItems": 1,
215
+ "uniqueItems": true,
216
+ "items": {
217
+ "$ref": "#/$defs/target"
218
+ }
219
+ },
220
+ "requires": {
221
+ "$ref": "#/$defs/requires"
222
+ },
223
+ "observe": {
224
+ "type": "object",
225
+ "additionalProperties": {
226
+ "$ref": "#/$defs/observation"
227
+ }
228
+ },
229
+ "live": {
230
+ "type": "string",
231
+ "minLength": 1
232
+ },
233
+ "control": {
234
+ "type": "object",
235
+ "additionalProperties": false,
236
+ "required": ["origin", "via", "expected"],
237
+ "properties": {
238
+ "origin": {
239
+ "const": "ordinary"
240
+ },
241
+ "via": {
242
+ "enum": ["guard", "unguarded"]
243
+ },
244
+ "expected": {
245
+ "$ref": "#/$defs/expected"
246
+ }
247
+ }
248
+ },
249
+ "expected": {
250
+ "$ref": "#/$defs/expected"
251
+ },
252
+ "skip": {
253
+ "type": "object",
254
+ "additionalProperties": false,
255
+ "required": ["target", "reason"],
256
+ "properties": {
257
+ "target": {
258
+ "$ref": "#/$defs/target"
259
+ },
260
+ "reason": {
261
+ "type": "string",
262
+ "pattern": "^[a-z][a-z-]*: .+"
263
+ }
264
+ }
265
+ },
266
+ "designDependent": {
267
+ "type": "array",
268
+ "uniqueItems": true,
269
+ "items": {
270
+ "type": "string",
271
+ "minLength": 1
272
+ }
273
+ },
274
+ "observable": {
275
+ "type": "object",
276
+ "additionalProperties": false,
277
+ "properties": {
278
+ "own": {
279
+ "type": "boolean"
280
+ }
281
+ }
282
+ },
283
+ "appliesTo": {
284
+ "type": "array",
285
+ "uniqueItems": true,
286
+ "minItems": 1,
287
+ "items": {
288
+ "enum": ["href", "iframe", "popup", "redirect"]
289
+ }
290
+ },
291
+ "liveCheck": {
292
+ "$ref": "#/$defs/liveCheck"
293
+ }
294
+ },
295
+ "allOf": [
296
+ {
297
+ "if": {
298
+ "properties": {
299
+ "kind": {
300
+ "const": "cdp"
301
+ }
302
+ },
303
+ "required": ["kind"]
304
+ },
305
+ "then": {
306
+ "required": ["liveCheck"]
307
+ }
308
+ },
309
+ {
310
+ "if": {
311
+ "properties": {
312
+ "observe": {
313
+ "type": "object",
314
+ "required": ["hopped"]
315
+ }
316
+ },
317
+ "required": ["observe"]
318
+ },
319
+ "then": {
320
+ "anyOf": [
321
+ {
322
+ "properties": {
323
+ "setup": {
324
+ "type": "array",
325
+ "contains": {
326
+ "$ref": "#/$defs/hopStep"
327
+ }
328
+ }
329
+ }
330
+ },
331
+ {
332
+ "properties": {
333
+ "trigger": {
334
+ "type": "array",
335
+ "contains": {
336
+ "$ref": "#/$defs/hopStep"
337
+ }
338
+ }
339
+ }
340
+ }
341
+ ]
342
+ }
343
+ }
344
+ ]
345
+ },
346
+ "steps": {
347
+ "type": "array",
348
+ "minItems": 1,
349
+ "items": {
350
+ "$ref": "#/$defs/step"
351
+ }
352
+ },
353
+ "on": {
354
+ "enum": ["control", "guarded"]
355
+ },
356
+ "session": {
357
+ "enum": ["page", "browser", "page-or-browser", "child"]
358
+ },
359
+ "name": {
360
+ "type": "string",
361
+ "pattern": "^[A-Za-z][A-Za-z0-9]*$"
362
+ },
363
+ "method": {
364
+ "type": "string",
365
+ "pattern": "^[A-Z][A-Za-z]*\\.[a-z][A-Za-z]*$"
366
+ },
367
+ "hops": {
368
+ "type": "array",
369
+ "minItems": 1,
370
+ "items": {
371
+ "type": "object",
372
+ "additionalProperties": false,
373
+ "required": ["origin", "code"],
374
+ "properties": {
375
+ "origin": {
376
+ "type": "string"
377
+ },
378
+ "code": {
379
+ "type": "integer",
380
+ "minimum": 300,
381
+ "maximum": 399
382
+ }
383
+ }
384
+ }
385
+ },
386
+ "step": {
387
+ "oneOf": [
388
+ {
389
+ "type": "object",
390
+ "additionalProperties": false,
391
+ "required": ["text"],
392
+ "properties": {
393
+ "text": {
394
+ "type": "string",
395
+ "minLength": 1
396
+ },
397
+ "on": {
398
+ "$ref": "#/$defs/on"
399
+ }
400
+ }
401
+ },
402
+ {
403
+ "type": "object",
404
+ "additionalProperties": false,
405
+ "required": ["cdp"],
406
+ "properties": {
407
+ "cdp": {
408
+ "$ref": "#/$defs/method"
409
+ },
410
+ "params": {
411
+ "type": "object"
412
+ },
413
+ "session": {
414
+ "$ref": "#/$defs/session"
415
+ },
416
+ "as": {
417
+ "$ref": "#/$defs/name"
418
+ },
419
+ "on": {
420
+ "$ref": "#/$defs/on"
421
+ },
422
+ "requires": {
423
+ "$ref": "#/$defs/requires"
424
+ },
425
+ "refusable": {
426
+ "const": true
427
+ },
428
+ "refusal": {
429
+ "type": "object",
430
+ "additionalProperties": false,
431
+ "required": ["match"],
432
+ "properties": {
433
+ "match": {
434
+ "type": "string",
435
+ "minLength": 1
436
+ }
437
+ }
438
+ }
439
+ },
440
+ "dependentRequired": {
441
+ "refusable": ["refusal"],
442
+ "refusal": ["refusable"]
443
+ }
444
+ },
445
+ {
446
+ "type": "object",
447
+ "additionalProperties": false,
448
+ "required": ["page"],
449
+ "properties": {
450
+ "page": {
451
+ "enum": [
452
+ "tab",
453
+ "navigate",
454
+ "href",
455
+ "replace",
456
+ "form",
457
+ "post",
458
+ "open",
459
+ "iframe",
460
+ "framed",
461
+ "fetch",
462
+ "xhr",
463
+ "image",
464
+ "eval"
465
+ ]
466
+ },
467
+ "url": {
468
+ "type": "string"
469
+ },
470
+ "hops": {
471
+ "$ref": "#/$defs/hops"
472
+ },
473
+ "from": {
474
+ "type": "string"
475
+ },
476
+ "context": {
477
+ "type": "string"
478
+ },
479
+ "expression": {
480
+ "type": "string"
481
+ },
482
+ "credentials": {
483
+ "const": "include"
484
+ },
485
+ "status": {
486
+ "type": "boolean"
487
+ },
488
+ "background": {
489
+ "type": "boolean"
490
+ },
491
+ "session": {
492
+ "$ref": "#/$defs/session"
493
+ },
494
+ "as": {
495
+ "$ref": "#/$defs/name"
496
+ },
497
+ "on": {
498
+ "$ref": "#/$defs/on"
499
+ },
500
+ "requires": {
501
+ "$ref": "#/$defs/requires"
502
+ }
503
+ }
504
+ },
505
+ {
506
+ "type": "object",
507
+ "additionalProperties": false,
508
+ "required": ["answer"],
509
+ "properties": {
510
+ "answer": {
511
+ "type": "object",
512
+ "additionalProperties": false,
513
+ "required": ["url"],
514
+ "properties": {
515
+ "url": {
516
+ "type": "string"
517
+ },
518
+ "stage": {
519
+ "enum": ["Request", "Response"]
520
+ },
521
+ "cdp": {
522
+ "$ref": "#/$defs/method"
523
+ },
524
+ "params": {
525
+ "type": "object"
526
+ },
527
+ "hold": {
528
+ "const": true
529
+ }
530
+ }
531
+ },
532
+ "on": {
533
+ "$ref": "#/$defs/on"
534
+ }
535
+ }
536
+ },
537
+ {
538
+ "type": "object",
539
+ "additionalProperties": false,
540
+ "required": ["children"],
541
+ "properties": {
542
+ "children": {
543
+ "$ref": "#/$defs/steps"
544
+ },
545
+ "on": {
546
+ "$ref": "#/$defs/on"
547
+ },
548
+ "requires": {
549
+ "$ref": "#/$defs/requires"
550
+ }
551
+ }
552
+ },
553
+ {
554
+ "type": "object",
555
+ "additionalProperties": false,
556
+ "required": ["settle"],
557
+ "properties": {
558
+ "settle": {
559
+ "type": "object",
560
+ "additionalProperties": false,
561
+ "minProperties": 1,
562
+ "properties": {
563
+ "beacon": {
564
+ "type": "string"
565
+ },
566
+ "title": {
567
+ "type": "string"
568
+ },
569
+ "ms": {
570
+ "type": "integer",
571
+ "minimum": 0
572
+ },
573
+ "variant": {
574
+ "const": true
575
+ },
576
+ "session": {
577
+ "$ref": "#/$defs/session"
578
+ }
579
+ }
580
+ },
581
+ "on": {
582
+ "$ref": "#/$defs/on"
583
+ }
584
+ }
585
+ },
586
+ {
587
+ "type": "object",
588
+ "additionalProperties": false,
589
+ "required": ["wait"],
590
+ "properties": {
591
+ "wait": {
592
+ "type": "integer",
593
+ "minimum": 0
594
+ },
595
+ "on": {
596
+ "$ref": "#/$defs/on"
597
+ }
598
+ }
599
+ },
600
+ {
601
+ "type": "object",
602
+ "additionalProperties": false,
603
+ "required": ["guess", "as"],
604
+ "properties": {
605
+ "guess": {
606
+ "type": "object",
607
+ "additionalProperties": false,
608
+ "required": ["between", "cdp", "params"],
609
+ "properties": {
610
+ "between": {
611
+ "type": "array",
612
+ "items": {
613
+ "type": "string"
614
+ },
615
+ "minItems": 2,
616
+ "maxItems": 2
617
+ },
618
+ "cdp": {
619
+ "$ref": "#/$defs/method"
620
+ },
621
+ "params": {
622
+ "type": "object"
623
+ }
624
+ }
625
+ },
626
+ "as": {
627
+ "$ref": "#/$defs/name"
628
+ },
629
+ "on": {
630
+ "$ref": "#/$defs/on"
631
+ }
632
+ }
633
+ }
634
+ ]
635
+ },
636
+ "check": {
637
+ "oneOf": [
638
+ {
639
+ "type": "object",
640
+ "additionalProperties": false,
641
+ "required": ["beacon", "observer"],
642
+ "properties": {
643
+ "beacon": {
644
+ "type": "string"
645
+ },
646
+ "observer": {
647
+ "const": "fixture"
648
+ }
649
+ }
650
+ },
651
+ {
652
+ "type": "object",
653
+ "additionalProperties": false,
654
+ "required": ["served", "observer"],
655
+ "properties": {
656
+ "served": {
657
+ "type": "string"
658
+ },
659
+ "origin": {
660
+ "type": "string"
661
+ },
662
+ "observer": {
663
+ "const": "fixture"
664
+ },
665
+ "tagged": {
666
+ "type": "boolean"
667
+ }
668
+ }
669
+ },
670
+ {
671
+ "type": "object",
672
+ "additionalProperties": false,
673
+ "required": ["header", "on", "observer"],
674
+ "properties": {
675
+ "header": {
676
+ "type": "string"
677
+ },
678
+ "on": {
679
+ "type": "string"
680
+ },
681
+ "value": {
682
+ "type": "string"
683
+ },
684
+ "observer": {
685
+ "const": "fixture"
686
+ }
687
+ }
688
+ },
689
+ {
690
+ "type": "object",
691
+ "additionalProperties": false,
692
+ "required": ["event", "observer"],
693
+ "properties": {
694
+ "event": {
695
+ "type": "string"
696
+ },
697
+ "where": {
698
+ "$ref": "#/$defs/predicate"
699
+ },
700
+ "observer": {
701
+ "const": "client"
702
+ }
703
+ }
704
+ },
705
+ {
706
+ "type": "object",
707
+ "additionalProperties": false,
708
+ "required": ["result", "equals", "observer"],
709
+ "properties": {
710
+ "result": {
711
+ "type": "string"
712
+ },
713
+ "path": {
714
+ "type": "string"
715
+ },
716
+ "equals": {
717
+ "$ref": "#/$defs/predicate"
718
+ },
719
+ "observer": {
720
+ "const": "client"
721
+ }
722
+ }
723
+ },
724
+ {
725
+ "type": "object",
726
+ "additionalProperties": false,
727
+ "required": ["cookie", "from", "observer"],
728
+ "properties": {
729
+ "cookie": {
730
+ "type": "string"
731
+ },
732
+ "from": {
733
+ "type": "string"
734
+ },
735
+ "observer": {
736
+ "const": "client"
737
+ },
738
+ "on": {
739
+ "type": "string"
740
+ }
741
+ }
742
+ },
743
+ {
744
+ "type": "object",
745
+ "additionalProperties": false,
746
+ "required": ["compare", "path", "observer"],
747
+ "properties": {
748
+ "compare": {
749
+ "type": "array",
750
+ "items": {
751
+ "type": "string"
752
+ },
753
+ "minItems": 2,
754
+ "maxItems": 2
755
+ },
756
+ "path": {
757
+ "type": "string"
758
+ },
759
+ "observer": {
760
+ "const": "client"
761
+ }
762
+ }
763
+ },
764
+ {
765
+ "type": "object",
766
+ "additionalProperties": false,
767
+ "required": ["refused", "observer"],
768
+ "properties": {
769
+ "refused": {
770
+ "$ref": "#/$defs/callNames"
771
+ },
772
+ "refusal": {
773
+ "type": "object",
774
+ "additionalProperties": false,
775
+ "required": ["match"],
776
+ "properties": {
777
+ "match": {
778
+ "type": "string",
779
+ "minLength": 1
780
+ }
781
+ }
782
+ },
783
+ "observer": {
784
+ "const": "client"
785
+ }
786
+ }
787
+ },
788
+ {
789
+ "type": "object",
790
+ "additionalProperties": false,
791
+ "required": ["reached", "observer"],
792
+ "properties": {
793
+ "reached": {
794
+ "$ref": "#/$defs/callNames"
795
+ },
796
+ "observer": {
797
+ "const": "client"
798
+ }
799
+ }
800
+ },
801
+ {
802
+ "type": "object",
803
+ "additionalProperties": false,
804
+ "required": ["attached", "observer"],
805
+ "properties": {
806
+ "attached": {
807
+ "type": "string"
808
+ },
809
+ "session": {
810
+ "$ref": "#/$defs/session"
811
+ },
812
+ "observer": {
813
+ "const": "client"
814
+ }
815
+ }
816
+ },
817
+ {
818
+ "type": "object",
819
+ "additionalProperties": false,
820
+ "required": ["delivered", "observer"],
821
+ "properties": {
822
+ "delivered": {
823
+ "type": "string"
824
+ },
825
+ "observer": {
826
+ "const": "client"
827
+ }
828
+ }
829
+ },
830
+ {
831
+ "type": "object",
832
+ "additionalProperties": false,
833
+ "required": ["title", "via", "observer"],
834
+ "properties": {
835
+ "title": {
836
+ "type": "string"
837
+ },
838
+ "via": {
839
+ "const": "unguarded"
840
+ },
841
+ "session": {
842
+ "$ref": "#/$defs/session"
843
+ },
844
+ "observer": {
845
+ "const": "unguarded"
846
+ }
847
+ }
848
+ },
849
+ {
850
+ "type": "object",
851
+ "additionalProperties": false,
852
+ "required": ["expression", "equals", "via", "observer"],
853
+ "properties": {
854
+ "expression": {
855
+ "type": "string"
856
+ },
857
+ "equals": {
858
+ "$ref": "#/$defs/predicate"
859
+ },
860
+ "via": {
861
+ "const": "unguarded"
862
+ },
863
+ "session": {
864
+ "$ref": "#/$defs/session"
865
+ },
866
+ "observer": {
867
+ "const": "unguarded"
868
+ }
869
+ }
870
+ },
871
+ {
872
+ "type": "object",
873
+ "additionalProperties": false,
874
+ "required": ["all", "observer"],
875
+ "properties": {
876
+ "all": {
877
+ "$ref": "#/$defs/checks"
878
+ },
879
+ "observer": {
880
+ "const": "client"
881
+ }
882
+ }
883
+ },
884
+ {
885
+ "type": "object",
886
+ "additionalProperties": false,
887
+ "required": ["any", "observer"],
888
+ "properties": {
889
+ "any": {
890
+ "$ref": "#/$defs/checks"
891
+ },
892
+ "observer": {
893
+ "const": "client"
894
+ }
895
+ }
896
+ },
897
+ {
898
+ "type": "object",
899
+ "additionalProperties": false,
900
+ "required": ["not", "observer"],
901
+ "properties": {
902
+ "not": {
903
+ "$ref": "#/$defs/check"
904
+ },
905
+ "observer": {
906
+ "const": "client"
907
+ }
908
+ }
909
+ },
910
+ {
911
+ "type": "object",
912
+ "additionalProperties": false,
913
+ "required": ["executed", "observer"],
914
+ "properties": {
915
+ "executed": {
916
+ "enum": ["setup", "trigger", "child"]
917
+ },
918
+ "observer": {
919
+ "const": "client"
920
+ }
921
+ }
922
+ },
923
+ {
924
+ "type": "object",
925
+ "additionalProperties": false,
926
+ "required": ["live", "observer"],
927
+ "properties": {
928
+ "live": {
929
+ "const": true
930
+ },
931
+ "observer": {
932
+ "const": "unguarded"
933
+ }
934
+ }
935
+ },
936
+ {
937
+ "type": "object",
938
+ "additionalProperties": false,
939
+ "required": ["hops", "to", "observer"],
940
+ "properties": {
941
+ "hops": {
942
+ "$ref": "#/$defs/hops"
943
+ },
944
+ "to": {
945
+ "type": "string"
946
+ },
947
+ "observer": {
948
+ "const": "fixture"
949
+ }
950
+ }
951
+ },
952
+ {
953
+ "type": "object",
954
+ "additionalProperties": false,
955
+ "required": ["detached", "observer"],
956
+ "properties": {
957
+ "detached": {
958
+ "enum": ["page", "child"]
959
+ },
960
+ "observer": {
961
+ "const": "client"
962
+ }
963
+ }
964
+ },
965
+ {
966
+ "type": "object",
967
+ "additionalProperties": false,
968
+ "required": ["pre", "observer"],
969
+ "properties": {
970
+ "pre": {
971
+ "$ref": "#/$defs/url"
972
+ },
973
+ "observer": {
974
+ "const": "fixture"
975
+ }
976
+ }
977
+ },
978
+ {
979
+ "type": "object",
980
+ "additionalProperties": false,
981
+ "required": ["loaded", "observer"],
982
+ "properties": {
983
+ "loaded": {
984
+ "$ref": "#/$defs/url"
985
+ },
986
+ "observer": {
987
+ "const": "fixture"
988
+ }
989
+ }
990
+ },
991
+ {
992
+ "type": "object",
993
+ "additionalProperties": false,
994
+ "required": ["registration", "observer"],
995
+ "properties": {
996
+ "registration": {
997
+ "const": "any"
998
+ },
999
+ "observer": {
1000
+ "const": "client"
1001
+ }
1002
+ }
1003
+ },
1004
+ {
1005
+ "type": "object",
1006
+ "additionalProperties": false,
1007
+ "required": ["state", "observer"],
1008
+ "properties": {
1009
+ "state": {
1010
+ "type": "object",
1011
+ "additionalProperties": false,
1012
+ "required": ["origin", "cookie", "value"],
1013
+ "properties": {
1014
+ "origin": {
1015
+ "type": "string"
1016
+ },
1017
+ "cookie": {
1018
+ "type": "string"
1019
+ },
1020
+ "value": {
1021
+ "type": "string"
1022
+ },
1023
+ "storage": {
1024
+ "type": "boolean"
1025
+ }
1026
+ }
1027
+ },
1028
+ "observer": {
1029
+ "const": "unguarded"
1030
+ }
1031
+ }
1032
+ },
1033
+ {
1034
+ "type": "object",
1035
+ "additionalProperties": false,
1036
+ "required": ["filtered", "observer"],
1037
+ "properties": {
1038
+ "filtered": {
1039
+ "type": "object",
1040
+ "additionalProperties": false,
1041
+ "required": ["from", "cookie"],
1042
+ "properties": {
1043
+ "from": {
1044
+ "$ref": "#/$defs/callNames"
1045
+ },
1046
+ "cookie": {
1047
+ "type": "string"
1048
+ },
1049
+ "on": {
1050
+ "type": "string"
1051
+ }
1052
+ }
1053
+ },
1054
+ "observer": {
1055
+ "const": "client"
1056
+ }
1057
+ }
1058
+ },
1059
+ {
1060
+ "type": "object",
1061
+ "additionalProperties": false,
1062
+ "required": ["blocked", "observer"],
1063
+ "properties": {
1064
+ "blocked": {
1065
+ "type": "object",
1066
+ "additionalProperties": false,
1067
+ "required": ["url"],
1068
+ "properties": {
1069
+ "url": {
1070
+ "$ref": "#/$defs/url"
1071
+ },
1072
+ "session": {
1073
+ "enum": ["page", "child"]
1074
+ },
1075
+ "frame": {
1076
+ "type": "boolean"
1077
+ }
1078
+ }
1079
+ },
1080
+ "observer": {
1081
+ "const": "client"
1082
+ }
1083
+ }
1084
+ },
1085
+ {
1086
+ "type": "object",
1087
+ "additionalProperties": false,
1088
+ "required": ["blocked", "observer"],
1089
+ "properties": {
1090
+ "blocked": {
1091
+ "type": "object",
1092
+ "additionalProperties": false,
1093
+ "required": ["url"],
1094
+ "properties": {
1095
+ "url": {
1096
+ "$ref": "#/$defs/url"
1097
+ },
1098
+ "session": {
1099
+ "enum": ["page", "child"]
1100
+ },
1101
+ "frame": {
1102
+ "type": "boolean"
1103
+ }
1104
+ }
1105
+ },
1106
+ "observer": {
1107
+ "const": "unguarded"
1108
+ }
1109
+ }
1110
+ }
1111
+ ]
1112
+ },
1113
+ "checks": {
1114
+ "type": "array",
1115
+ "minItems": 1,
1116
+ "items": {
1117
+ "$ref": "#/$defs/check"
1118
+ }
1119
+ },
1120
+ "callNames": {
1121
+ "oneOf": [
1122
+ {
1123
+ "const": "all"
1124
+ },
1125
+ {
1126
+ "type": "array",
1127
+ "minItems": 1,
1128
+ "uniqueItems": true,
1129
+ "items": {
1130
+ "$ref": "#/$defs/name"
1131
+ }
1132
+ }
1133
+ ]
1134
+ },
1135
+ "predicate": {
1136
+ "oneOf": [
1137
+ {
1138
+ "type": ["string", "boolean", "number", "null"]
1139
+ },
1140
+ {
1141
+ "type": "object",
1142
+ "properties": {
1143
+ "$contains": {
1144
+ "type": "string"
1145
+ },
1146
+ "$regex": {
1147
+ "type": "string"
1148
+ },
1149
+ "$some": {
1150
+ "$ref": "#/$defs/predicate"
1151
+ },
1152
+ "$every": {
1153
+ "$ref": "#/$defs/predicate"
1154
+ },
1155
+ "$encoded": {
1156
+ "type": "object",
1157
+ "additionalProperties": false,
1158
+ "required": ["value"],
1159
+ "properties": {
1160
+ "value": {
1161
+ "type": "string"
1162
+ },
1163
+ "prefix": {
1164
+ "type": "string"
1165
+ }
1166
+ }
1167
+ }
1168
+ },
1169
+ "additionalProperties": {
1170
+ "$ref": "#/$defs/predicate"
1171
+ }
1172
+ }
1173
+ ]
1174
+ },
1175
+ "hopStep": {
1176
+ "anyOf": [
1177
+ {
1178
+ "type": "object",
1179
+ "required": ["hops"]
1180
+ },
1181
+ {
1182
+ "type": "object",
1183
+ "required": ["children"],
1184
+ "properties": {
1185
+ "children": {
1186
+ "type": "array",
1187
+ "contains": {
1188
+ "$ref": "#/$defs/hopStep"
1189
+ }
1190
+ }
1191
+ }
1192
+ }
1193
+ ]
1194
+ },
1195
+ "url": {
1196
+ "oneOf": [
1197
+ {
1198
+ "type": "string"
1199
+ },
1200
+ {
1201
+ "type": "object",
1202
+ "additionalProperties": false,
1203
+ "required": ["hops", "to"],
1204
+ "properties": {
1205
+ "hops": {
1206
+ "$ref": "#/$defs/hops"
1207
+ },
1208
+ "to": {
1209
+ "type": "string"
1210
+ },
1211
+ "index": {
1212
+ "type": "integer",
1213
+ "minimum": 0
1214
+ }
1215
+ }
1216
+ }
1217
+ ]
1218
+ },
1219
+ "liveCheck": {
1220
+ "type": "object",
1221
+ "oneOf": [
1222
+ {
1223
+ "type": "object",
1224
+ "additionalProperties": false,
1225
+ "required": ["beacon", "observer"],
1226
+ "properties": {
1227
+ "beacon": {
1228
+ "type": "string"
1229
+ },
1230
+ "observer": {
1231
+ "const": "fixture"
1232
+ }
1233
+ }
1234
+ },
1235
+ {
1236
+ "type": "object",
1237
+ "additionalProperties": false,
1238
+ "required": ["served", "observer"],
1239
+ "properties": {
1240
+ "served": {
1241
+ "type": "string"
1242
+ },
1243
+ "origin": {
1244
+ "type": "string"
1245
+ },
1246
+ "observer": {
1247
+ "const": "fixture"
1248
+ },
1249
+ "tagged": {
1250
+ "type": "boolean"
1251
+ }
1252
+ }
1253
+ },
1254
+ {
1255
+ "type": "object",
1256
+ "additionalProperties": false,
1257
+ "required": ["header", "on", "observer"],
1258
+ "properties": {
1259
+ "header": {
1260
+ "type": "string"
1261
+ },
1262
+ "on": {
1263
+ "type": "string"
1264
+ },
1265
+ "value": {
1266
+ "type": "string"
1267
+ },
1268
+ "observer": {
1269
+ "const": "fixture"
1270
+ }
1271
+ }
1272
+ },
1273
+ {
1274
+ "type": "object",
1275
+ "additionalProperties": false,
1276
+ "required": ["event", "observer"],
1277
+ "properties": {
1278
+ "event": {
1279
+ "type": "string"
1280
+ },
1281
+ "where": {
1282
+ "$ref": "#/$defs/predicate"
1283
+ },
1284
+ "observer": {
1285
+ "const": "client"
1286
+ }
1287
+ }
1288
+ },
1289
+ {
1290
+ "type": "object",
1291
+ "additionalProperties": false,
1292
+ "required": ["result", "equals", "observer"],
1293
+ "properties": {
1294
+ "result": {
1295
+ "type": "string"
1296
+ },
1297
+ "path": {
1298
+ "type": "string"
1299
+ },
1300
+ "equals": {
1301
+ "$ref": "#/$defs/predicate"
1302
+ },
1303
+ "observer": {
1304
+ "const": "client"
1305
+ }
1306
+ }
1307
+ },
1308
+ {
1309
+ "type": "object",
1310
+ "additionalProperties": false,
1311
+ "required": ["cookie", "from", "observer"],
1312
+ "properties": {
1313
+ "cookie": {
1314
+ "type": "string"
1315
+ },
1316
+ "from": {
1317
+ "type": "string"
1318
+ },
1319
+ "observer": {
1320
+ "const": "client"
1321
+ },
1322
+ "on": {
1323
+ "type": "string"
1324
+ }
1325
+ }
1326
+ },
1327
+ {
1328
+ "type": "object",
1329
+ "additionalProperties": false,
1330
+ "required": ["compare", "path", "observer"],
1331
+ "properties": {
1332
+ "compare": {
1333
+ "type": "array",
1334
+ "items": {
1335
+ "type": "string"
1336
+ },
1337
+ "minItems": 2,
1338
+ "maxItems": 2
1339
+ },
1340
+ "path": {
1341
+ "type": "string"
1342
+ },
1343
+ "observer": {
1344
+ "const": "client"
1345
+ }
1346
+ }
1347
+ },
1348
+ {
1349
+ "type": "object",
1350
+ "additionalProperties": false,
1351
+ "required": ["refused", "observer"],
1352
+ "properties": {
1353
+ "refused": {
1354
+ "$ref": "#/$defs/callNames"
1355
+ },
1356
+ "refusal": {
1357
+ "type": "object",
1358
+ "additionalProperties": false,
1359
+ "required": ["match"],
1360
+ "properties": {
1361
+ "match": {
1362
+ "type": "string",
1363
+ "minLength": 1
1364
+ }
1365
+ }
1366
+ },
1367
+ "observer": {
1368
+ "const": "client"
1369
+ }
1370
+ }
1371
+ },
1372
+ {
1373
+ "type": "object",
1374
+ "additionalProperties": false,
1375
+ "required": ["reached", "observer"],
1376
+ "properties": {
1377
+ "reached": {
1378
+ "$ref": "#/$defs/callNames"
1379
+ },
1380
+ "observer": {
1381
+ "const": "client"
1382
+ }
1383
+ }
1384
+ },
1385
+ {
1386
+ "type": "object",
1387
+ "additionalProperties": false,
1388
+ "required": ["attached", "observer"],
1389
+ "properties": {
1390
+ "attached": {
1391
+ "type": "string"
1392
+ },
1393
+ "session": {
1394
+ "$ref": "#/$defs/session"
1395
+ },
1396
+ "observer": {
1397
+ "const": "client"
1398
+ }
1399
+ }
1400
+ },
1401
+ {
1402
+ "type": "object",
1403
+ "additionalProperties": false,
1404
+ "required": ["delivered", "observer"],
1405
+ "properties": {
1406
+ "delivered": {
1407
+ "type": "string"
1408
+ },
1409
+ "observer": {
1410
+ "const": "client"
1411
+ }
1412
+ }
1413
+ },
1414
+ {
1415
+ "type": "object",
1416
+ "additionalProperties": false,
1417
+ "required": ["title", "via", "observer"],
1418
+ "properties": {
1419
+ "title": {
1420
+ "type": "string"
1421
+ },
1422
+ "via": {
1423
+ "const": "unguarded"
1424
+ },
1425
+ "session": {
1426
+ "$ref": "#/$defs/session"
1427
+ },
1428
+ "observer": {
1429
+ "const": "unguarded"
1430
+ }
1431
+ }
1432
+ },
1433
+ {
1434
+ "type": "object",
1435
+ "additionalProperties": false,
1436
+ "required": ["expression", "equals", "via", "observer"],
1437
+ "properties": {
1438
+ "expression": {
1439
+ "type": "string"
1440
+ },
1441
+ "equals": {
1442
+ "$ref": "#/$defs/predicate"
1443
+ },
1444
+ "via": {
1445
+ "const": "unguarded"
1446
+ },
1447
+ "session": {
1448
+ "$ref": "#/$defs/session"
1449
+ },
1450
+ "observer": {
1451
+ "const": "unguarded"
1452
+ }
1453
+ }
1454
+ },
1455
+ {
1456
+ "type": "object",
1457
+ "additionalProperties": false,
1458
+ "required": ["all", "observer"],
1459
+ "properties": {
1460
+ "all": {
1461
+ "$ref": "#/$defs/liveChecks"
1462
+ },
1463
+ "observer": {
1464
+ "const": "client"
1465
+ }
1466
+ }
1467
+ },
1468
+ {
1469
+ "type": "object",
1470
+ "additionalProperties": false,
1471
+ "required": ["any", "observer"],
1472
+ "properties": {
1473
+ "any": {
1474
+ "$ref": "#/$defs/liveChecks"
1475
+ },
1476
+ "observer": {
1477
+ "const": "client"
1478
+ }
1479
+ }
1480
+ },
1481
+ {
1482
+ "type": "object",
1483
+ "additionalProperties": false,
1484
+ "required": ["not", "observer"],
1485
+ "properties": {
1486
+ "not": {
1487
+ "$ref": "#/$defs/liveCheck"
1488
+ },
1489
+ "observer": {
1490
+ "const": "client"
1491
+ }
1492
+ }
1493
+ },
1494
+ {
1495
+ "type": "object",
1496
+ "additionalProperties": false,
1497
+ "required": ["hops", "to", "observer"],
1498
+ "properties": {
1499
+ "hops": {
1500
+ "$ref": "#/$defs/hops"
1501
+ },
1502
+ "to": {
1503
+ "type": "string"
1504
+ },
1505
+ "observer": {
1506
+ "const": "fixture"
1507
+ }
1508
+ }
1509
+ },
1510
+ {
1511
+ "type": "object",
1512
+ "additionalProperties": false,
1513
+ "required": ["detached", "observer"],
1514
+ "properties": {
1515
+ "detached": {
1516
+ "enum": ["page", "child"]
1517
+ },
1518
+ "observer": {
1519
+ "const": "client"
1520
+ }
1521
+ }
1522
+ },
1523
+ {
1524
+ "type": "object",
1525
+ "additionalProperties": false,
1526
+ "required": ["pre", "observer"],
1527
+ "properties": {
1528
+ "pre": {
1529
+ "$ref": "#/$defs/url"
1530
+ },
1531
+ "observer": {
1532
+ "const": "fixture"
1533
+ }
1534
+ }
1535
+ },
1536
+ {
1537
+ "type": "object",
1538
+ "additionalProperties": false,
1539
+ "required": ["loaded", "observer"],
1540
+ "properties": {
1541
+ "loaded": {
1542
+ "$ref": "#/$defs/url"
1543
+ },
1544
+ "observer": {
1545
+ "const": "fixture"
1546
+ }
1547
+ }
1548
+ },
1549
+ {
1550
+ "type": "object",
1551
+ "additionalProperties": false,
1552
+ "required": ["registration", "observer"],
1553
+ "properties": {
1554
+ "registration": {
1555
+ "const": "any"
1556
+ },
1557
+ "observer": {
1558
+ "const": "client"
1559
+ }
1560
+ }
1561
+ },
1562
+ {
1563
+ "type": "object",
1564
+ "additionalProperties": false,
1565
+ "required": ["state", "observer"],
1566
+ "properties": {
1567
+ "state": {
1568
+ "type": "object",
1569
+ "additionalProperties": false,
1570
+ "required": ["origin", "cookie", "value"],
1571
+ "properties": {
1572
+ "origin": {
1573
+ "type": "string"
1574
+ },
1575
+ "cookie": {
1576
+ "type": "string"
1577
+ },
1578
+ "value": {
1579
+ "type": "string"
1580
+ },
1581
+ "storage": {
1582
+ "type": "boolean"
1583
+ }
1584
+ }
1585
+ },
1586
+ "observer": {
1587
+ "const": "unguarded"
1588
+ }
1589
+ }
1590
+ },
1591
+ {
1592
+ "type": "object",
1593
+ "additionalProperties": false,
1594
+ "required": ["filtered", "observer"],
1595
+ "properties": {
1596
+ "filtered": {
1597
+ "type": "object",
1598
+ "additionalProperties": false,
1599
+ "required": ["from", "cookie"],
1600
+ "properties": {
1601
+ "from": {
1602
+ "$ref": "#/$defs/callNames"
1603
+ },
1604
+ "cookie": {
1605
+ "type": "string"
1606
+ },
1607
+ "on": {
1608
+ "type": "string"
1609
+ }
1610
+ }
1611
+ },
1612
+ "observer": {
1613
+ "const": "client"
1614
+ }
1615
+ }
1616
+ },
1617
+ {
1618
+ "type": "object",
1619
+ "additionalProperties": false,
1620
+ "required": ["blocked", "observer"],
1621
+ "properties": {
1622
+ "blocked": {
1623
+ "type": "object",
1624
+ "additionalProperties": false,
1625
+ "required": ["url"],
1626
+ "properties": {
1627
+ "url": {
1628
+ "$ref": "#/$defs/url"
1629
+ },
1630
+ "session": {
1631
+ "enum": ["page", "child"]
1632
+ },
1633
+ "frame": {
1634
+ "type": "boolean"
1635
+ }
1636
+ }
1637
+ },
1638
+ "observer": {
1639
+ "const": "client"
1640
+ }
1641
+ }
1642
+ },
1643
+ {
1644
+ "type": "object",
1645
+ "additionalProperties": false,
1646
+ "required": ["blocked", "observer"],
1647
+ "properties": {
1648
+ "blocked": {
1649
+ "type": "object",
1650
+ "additionalProperties": false,
1651
+ "required": ["url"],
1652
+ "properties": {
1653
+ "url": {
1654
+ "$ref": "#/$defs/url"
1655
+ },
1656
+ "session": {
1657
+ "enum": ["page", "child"]
1658
+ },
1659
+ "frame": {
1660
+ "type": "boolean"
1661
+ }
1662
+ }
1663
+ },
1664
+ "observer": {
1665
+ "const": "unguarded"
1666
+ }
1667
+ }
1668
+ }
1669
+ ],
1670
+ "not": {
1671
+ "required": ["on"],
1672
+ "properties": {
1673
+ "on": {
1674
+ "const": "control"
1675
+ }
1676
+ }
1677
+ }
1678
+ },
1679
+ "liveChecks": {
1680
+ "type": "array",
1681
+ "minItems": 1,
1682
+ "items": {
1683
+ "$ref": "#/$defs/liveCheck"
1684
+ }
1685
+ }
1686
+ }
1687
+ }