@ai-ecoverse/slicc-browsers 1.20.3 → 1.21.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/slicc-browsers",
3
- "version": "1.20.3",
3
+ "version": "1.21.1",
4
4
  "description": "SLICC's shared browser catalog, JSON schemas and discovery conformance corpus",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -73,7 +73,7 @@
73
73
  "validate": "node scripts/validate.mjs",
74
74
  "lint": "slicc-lint && test -z \"$(gofmt -l .)\" && go mod tidy -diff && go vet ./... && GOOS=darwin go vet ./... && GOOS=windows go vet ./... && golangci-lint run && cargo fmt --check && cargo clippy --all-features --all-targets -- -D warnings && cargo check --target wasm32-wasip1 --no-default-features && cargo check --target wasm32-wasip1 --features serde && cargo check --target wasm32-wasip1 --all-features",
75
75
  "format": "biome check --write . && gofmt -w . && cargo fmt",
76
- "test": "export PATH=\"$HOME/.cargo/bin:$PATH\" && node --test --test-concurrency=1 test/integration/debugger-stage1-packaging.test.mjs test/integration/debugger-raw-control.test.mjs test/integration/debugger-cleanup.test.mjs test/integration/debugger-stage1-install-vectors.test.mjs test/integration/protected-premise.test.mjs test/integration/debugger-stage1-vectors.test.mjs test/integration/self-contained.test.mjs test/integration/seven-corpus.test.mjs test/integration/browser-runner.test.mjs test/integration/fixture-client.test.mjs test/integration/guard-redirect-carrier.test.mjs test/integration/guard-redirect-session-end.test.mjs test/integration/guard-redirect-history.test.mjs test/integration/guard-redirect-iframe.test.mjs test/integration/guard-incomplete.test.mjs test/integration/guard-unparseable-wipe.test.mjs test/integration/guard-browser-ui.test.mjs test/integration/guard-snapshot-settle.test.mjs test/integration/guard-stall.test.mjs test/integration/guard-forged.test.mjs test/integration/guard-trusted-emulation.test.mjs test/integration/guard-exit-steps.test.mjs test/integration/guard-exit-refusal.test.mjs test/integration/guard-frame-read.test.mjs test/integration/guard-bfcache.test.mjs test/integration/guard-bfcache-marker.test.mjs test/integration/guard-bfcache-history.test.mjs test/integration/guard-bfcache-review.test.mjs test/integration/guard-bfcache-quarantine.test.mjs test/integration/guard-error-page-navigation.test.mjs test/integration/guard-error-page-events.test.mjs test/integration/guard-error-page-reload.test.mjs test/integration/guard-world-paint.test.mjs test/integration/gates.test.mjs test/integration/validate.test.mjs test/integration/go.test.mjs test/integration/cargo.test.mjs test/integration/workflows.test.mjs test/integration/guard-sweep-union.test.mjs && node --test --test-concurrency=2 test/integration/guard-lifecycle.test.mjs test/integration/chromium-launch.test.mjs test/integration/guard-fit.test.mjs test/integration/guard-chain.test.mjs test/integration/guard-validation.test.mjs test/integration/guard-liveness.test.mjs test/integration/guard-observations.test.mjs test/integration/guard-child-latency.test.mjs test/integration/guard-adoption.test.mjs test/integration/guard-scoping.test.mjs test/integration/guard-late-pause.test.mjs test/integration/guard-legs.test.mjs test/integration/guard-fetch-enable.test.mjs test/integration/guard-diagnostics.test.mjs test/integration/guard-chrome.test.mjs test/integration/guard-worlds.test.mjs test/integration/guard-world-discovery.test.mjs test/integration/guard-world-guesses.test.mjs test/integration/guard-unparseable.test.mjs test/integration/guard-redirect-secret.test.mjs test/integration/guard-error-page.test.mjs test/integration/guard-discovery.test.mjs test/integration/guard-bfcache-chrome.test.mjs test/integration/guard-browser-page.test.mjs test/integration/guard-scales.test.mjs test/integration/guard-shared-log.test.mjs test/integration/guard-pre-beacon.test.mjs test/integration/guard-world-pause.test.mjs test/integration/guard-reveal-overlap.test.mjs test/integration/guard-extension-frame-mouse.test.mjs test/integration/guard-extension-frames.test.mjs test/integration/guard-parallel.test.mjs test/integration/guard-client-exit.test.mjs test/integration/guard-runner.test.mjs test/integration/guard-sweep-ordinary.test.mjs test/integration/guard-sweep-seven.test.mjs test/integration/guard-sweep-vault.test.mjs test/integration/guard-sweep-vault-x.test.mjs test/integration/guard-sweep-apex.test.mjs test/integration/guard-sweep-others.test.mjs",
76
+ "test": "export PATH=\"$HOME/.cargo/bin:$PATH\" && node --test --test-concurrency=1 test/integration/debugger-stage1-packaging.test.mjs test/integration/debugger-raw-control.test.mjs test/integration/debugger-cleanup.test.mjs test/integration/debugger-stage1-install-vectors.test.mjs test/integration/protected-premise.test.mjs test/integration/debugger-stage1-vectors.test.mjs test/integration/self-contained.test.mjs test/integration/seven-corpus.test.mjs test/integration/browser-runner.test.mjs test/integration/fixture-client.test.mjs test/integration/guard-redirect-carrier.test.mjs test/integration/guard-redirect-session-end.test.mjs test/integration/guard-redirect-history.test.mjs test/integration/guard-redirect-iframe.test.mjs test/integration/guard-incomplete.test.mjs test/integration/guard-unparseable-wipe.test.mjs test/integration/guard-browser-ui.test.mjs test/integration/guard-snapshot-settle.test.mjs test/integration/guard-stall.test.mjs test/integration/guard-forged.test.mjs test/integration/guard-trusted-emulation.test.mjs test/integration/guard-exit-steps.test.mjs test/integration/guard-exit-refusal.test.mjs test/integration/guard-frame-read.test.mjs test/integration/guard-bfcache.test.mjs test/integration/guard-bfcache-marker.test.mjs test/integration/guard-bfcache-history.test.mjs test/integration/guard-bfcache-review.test.mjs test/integration/guard-bfcache-quarantine.test.mjs test/integration/guard-error-page-navigation.test.mjs test/integration/guard-error-page-events.test.mjs test/integration/guard-error-page-reload.test.mjs test/integration/guard-world-paint.test.mjs test/integration/gates.test.mjs test/integration/validate.test.mjs test/integration/validate-guard-stock-setup.test.mjs test/integration/go.test.mjs test/integration/cargo.test.mjs test/integration/workflows.test.mjs test/integration/guard-refusable-nav.test.mjs test/integration/guard-sweep-union.test.mjs && node --test --test-concurrency=2 test/integration/guard-lifecycle.test.mjs test/integration/chromium-launch.test.mjs test/integration/guard-fit.test.mjs test/integration/guard-chain.test.mjs test/integration/guard-validation.test.mjs test/integration/guard-liveness.test.mjs test/integration/guard-observations.test.mjs test/integration/guard-child-latency.test.mjs test/integration/guard-adoption.test.mjs test/integration/guard-scoping.test.mjs test/integration/guard-late-pause.test.mjs test/integration/guard-legs.test.mjs test/integration/guard-fetch-enable.test.mjs test/integration/guard-diagnostics.test.mjs test/integration/guard-chrome.test.mjs test/integration/guard-worlds.test.mjs test/integration/guard-world-discovery.test.mjs test/integration/guard-world-guesses.test.mjs test/integration/guard-unparseable.test.mjs test/integration/guard-redirect-secret.test.mjs test/integration/guard-error-page.test.mjs test/integration/guard-discovery.test.mjs test/integration/guard-bfcache-chrome.test.mjs test/integration/guard-browser-page.test.mjs test/integration/guard-scales.test.mjs test/integration/guard-shared-log.test.mjs test/integration/guard-pre-beacon.test.mjs test/integration/guard-world-pause.test.mjs test/integration/guard-reveal-overlap.test.mjs test/integration/guard-extension-frame-mouse.test.mjs test/integration/guard-extension-frames.test.mjs test/integration/guard-stock-setup.test.mjs test/integration/guard-stock-attack.test.mjs test/integration/guard-parallel.test.mjs test/integration/guard-client-exit.test.mjs test/integration/guard-runner.test.mjs test/integration/guard-sweep-ordinary.test.mjs test/integration/guard-sweep-seven.test.mjs test/integration/guard-sweep-vault.test.mjs test/integration/guard-sweep-vault-x.test.mjs test/integration/guard-sweep-apex.test.mjs test/integration/guard-sweep-others.test.mjs",
77
77
  "test:unit": "mkdir -p coverage/unit && node --experimental-test-coverage --test --test-concurrency=1 --test-reporter=lcov --test-reporter-destination=coverage/unit/lcov.info test/unit/*.test.mjs && go test -race -cover ./...",
78
78
  "build": "go build ./... && cargo build --all-features && cargo build --target wasm32-wasip1 --all-features && npm pack --dry-run",
79
79
  "prepublishOnly": "node scripts/set-crate-version.mjs \"$npm_package_version\"",
@@ -84,7 +84,7 @@
84
84
  "test:unit:guard": "mkdir -p coverage/unit && node --experimental-vm-modules --no-warnings --experimental-test-coverage --test --test-concurrency=1 --test-coverage-include=guard-runner.mjs --test-coverage-include=guard-driver.mjs --test-coverage-include=extension-frame.mjs --test-coverage-include=fixture-server.mjs --test-coverage-include=fixture-client.mjs --test-coverage-include=observer-target.mjs --test-coverage-include=frame-read.mjs --test-coverage-include=bfcache-restore.mjs --test-coverage-include=protected-error-page.mjs --test-coverage-include=unparseable-url.mjs --test-coverage-include=scripts/browser-runner.mjs --test-coverage-include=scripts/validate.mjs --test-reporter=lcov --test-reporter-destination=coverage/unit/guard.lcov test/unit/guard-*.test.mjs && slicc-diff-cover coverage/unit/guard.lcov"
85
85
  },
86
86
  "devDependencies": {
87
- "@ai-ecoverse/slicc-cdp": "1.46.2",
87
+ "@ai-ecoverse/slicc-cdp": "1.47.0",
88
88
  "@ai-ecoverse/slicc-shared-web": "2.13.10",
89
89
  "@biomejs/biome": "2.6.4",
90
90
  "ajv": "8.20.0",
@@ -91,7 +91,8 @@
91
91
  "discovery",
92
92
  "clientExit",
93
93
  "siteIsolationOff",
94
- "inboundDelay"
94
+ "inboundDelay",
95
+ "secureOrigin"
95
96
  ],
96
97
  "properties": {
97
98
  "autoAttach": {
@@ -106,17 +107,50 @@
106
107
  "type": "string",
107
108
  "minLength": 1
108
109
  },
109
- "extensionWorld": { "type": "string", "minLength": 1 },
110
- "extensionFrame": { "type": "string", "minLength": 1 },
111
- "discovery": { "type": "string", "minLength": 1 },
110
+ "extensionWorld": {
111
+ "type": "string",
112
+ "minLength": 1
113
+ },
114
+ "extensionFrame": {
115
+ "type": "string",
116
+ "minLength": 1
117
+ },
118
+ "discovery": {
119
+ "type": "string",
120
+ "minLength": 1
121
+ },
112
122
  "chromeUrlsAttach": {
113
123
  "type": "string",
114
124
  "minLength": 1
115
125
  },
116
- "clientExit": { "type": "string", "minLength": 1 },
117
- "siteIsolationOff": { "type": "string", "minLength": 1 },
118
- "inboundDelay": { "type": "string", "minLength": 1 },
119
- "forwardAudit": { "type": "string", "minLength": 1 }
126
+ "clientExit": {
127
+ "type": "string",
128
+ "minLength": 1
129
+ },
130
+ "siteIsolationOff": {
131
+ "type": "string",
132
+ "minLength": 1
133
+ },
134
+ "inboundDelay": {
135
+ "type": "string",
136
+ "minLength": 1
137
+ },
138
+ "secureOrigin": {
139
+ "type": "string",
140
+ "minLength": 1
141
+ },
142
+ "forwardAudit": {
143
+ "type": "string",
144
+ "minLength": 1
145
+ },
146
+ "stockSetup": {
147
+ "type": "string",
148
+ "minLength": 1
149
+ },
150
+ "syntheticAutoAttach": {
151
+ "type": "string",
152
+ "minLength": 1
153
+ }
120
154
  }
121
155
  },
122
156
  "placeholders": {
@@ -150,7 +184,10 @@
150
184
  "clientExit",
151
185
  "siteIsolationOff",
152
186
  "inboundDelay",
153
- "forwardAudit"
187
+ "secureOrigin",
188
+ "forwardAudit",
189
+ "stockSetup",
190
+ "syntheticAutoAttach"
154
191
  ]
155
192
  },
156
193
  "requires": {
@@ -449,13 +486,22 @@
449
486
  "additionalProperties": false,
450
487
  "required": ["bfcacheRestore", "origin", "as", "requires"],
451
488
  "properties": {
452
- "bfcacheRestore": { "enum": ["observer", "history"] },
453
- "origin": { "type": "string", "minLength": 1 },
454
- "as": { "$ref": "#/$defs/name" },
489
+ "bfcacheRestore": {
490
+ "enum": ["observer", "history"]
491
+ },
492
+ "origin": {
493
+ "type": "string",
494
+ "minLength": 1
495
+ },
496
+ "as": {
497
+ "$ref": "#/$defs/name"
498
+ },
455
499
  "requires": {
456
500
  "$ref": "#/$defs/requires",
457
501
  "type": "array",
458
- "contains": { "const": "inboundDelay" }
502
+ "contains": {
503
+ "const": "inboundDelay"
504
+ }
459
505
  }
460
506
  }
461
507
  },
@@ -464,8 +510,12 @@
464
510
  "additionalProperties": false,
465
511
  "required": ["redirectSecret", "as"],
466
512
  "properties": {
467
- "redirectSecret": { "enum": ["headers", "mix", "body"] },
468
- "as": { "$ref": "#/$defs/name" }
513
+ "redirectSecret": {
514
+ "enum": ["headers", "mix", "body"]
515
+ },
516
+ "as": {
517
+ "$ref": "#/$defs/name"
518
+ }
469
519
  }
470
520
  },
471
521
  {
@@ -473,10 +523,18 @@
473
523
  "additionalProperties": false,
474
524
  "required": ["errorPage", "as"],
475
525
  "properties": {
476
- "errorPage": { "enum": ["recover", "restore", "sticky"] },
477
- "secret": { "enum": ["all", "query", "fragment"] },
478
- "requires": { "$ref": "#/$defs/requires" },
479
- "as": { "$ref": "#/$defs/name" }
526
+ "errorPage": {
527
+ "enum": ["recover", "restore", "sticky"]
528
+ },
529
+ "secret": {
530
+ "enum": ["all", "query", "fragment"]
531
+ },
532
+ "requires": {
533
+ "$ref": "#/$defs/requires"
534
+ },
535
+ "as": {
536
+ "$ref": "#/$defs/name"
537
+ }
480
538
  }
481
539
  },
482
540
  {
@@ -484,11 +542,22 @@
484
542
  "additionalProperties": false,
485
543
  "required": ["frameRead", "from", "as"],
486
544
  "properties": {
487
- "frameRead": { "enum": ["blank", "srcdoc"] },
488
- "from": { "type": "string", "minLength": 1 },
489
- "on": { "$ref": "#/$defs/on" },
490
- "requires": { "$ref": "#/$defs/requires" },
491
- "as": { "$ref": "#/$defs/name" }
545
+ "frameRead": {
546
+ "enum": ["blank", "srcdoc"]
547
+ },
548
+ "from": {
549
+ "type": "string",
550
+ "minLength": 1
551
+ },
552
+ "on": {
553
+ "$ref": "#/$defs/on"
554
+ },
555
+ "requires": {
556
+ "$ref": "#/$defs/requires"
557
+ },
558
+ "as": {
559
+ "$ref": "#/$defs/name"
560
+ }
492
561
  }
493
562
  },
494
563
  {
@@ -554,7 +623,9 @@
554
623
  "additionalProperties": false,
555
624
  "required": ["client"],
556
625
  "properties": {
557
- "client": { "const": "exit" }
626
+ "client": {
627
+ "const": "exit"
628
+ }
558
629
  }
559
630
  },
560
631
  {
@@ -675,7 +746,28 @@
675
746
  },
676
747
  "requires": {
677
748
  "$ref": "#/$defs/requires"
749
+ },
750
+ "refusable": {
751
+ "const": true
752
+ },
753
+ "refusal": {
754
+ "type": "object",
755
+ "additionalProperties": false,
756
+ "required": ["match"],
757
+ "properties": {
758
+ "onlyProtected": {
759
+ "type": "boolean"
760
+ },
761
+ "match": {
762
+ "type": "string",
763
+ "minLength": 1
764
+ }
765
+ }
678
766
  }
767
+ },
768
+ "dependentRequired": {
769
+ "refusable": ["refusal"],
770
+ "refusal": ["refusable"]
679
771
  }
680
772
  },
681
773
  {
@@ -724,13 +816,33 @@
724
816
  "type": "object",
725
817
  "additionalProperties": false,
726
818
  "required": ["openerId"],
727
- "properties": { "openerId": { "const": "page" } }
819
+ "properties": {
820
+ "openerId": {
821
+ "const": "page"
822
+ }
823
+ }
728
824
  },
729
825
  {
730
826
  "type": "object",
731
827
  "additionalProperties": false,
732
828
  "required": ["urlPrefix"],
733
- "properties": { "urlPrefix": { "type": "string", "minLength": 1 } }
829
+ "properties": {
830
+ "urlPrefix": {
831
+ "type": "string",
832
+ "minLength": 1
833
+ }
834
+ }
835
+ },
836
+ {
837
+ "type": "object",
838
+ "additionalProperties": false,
839
+ "required": ["type"],
840
+ "properties": {
841
+ "type": {
842
+ "type": "string",
843
+ "minLength": 1
844
+ }
845
+ }
734
846
  }
735
847
  ]
736
848
  },
@@ -866,6 +978,68 @@
866
978
  "$ref": "#/$defs/on"
867
979
  }
868
980
  }
981
+ },
982
+ {
983
+ "type": "object",
984
+ "additionalProperties": false,
985
+ "required": ["isolatedWorld", "expression", "as"],
986
+ "properties": {
987
+ "isolatedWorld": {
988
+ "type": "string",
989
+ "minLength": 1
990
+ },
991
+ "expression": {
992
+ "type": "string",
993
+ "minLength": 1
994
+ },
995
+ "session": {
996
+ "enum": ["page", "child"]
997
+ },
998
+ "as": {
999
+ "$ref": "#/$defs/name"
1000
+ },
1001
+ "on": {
1002
+ "$ref": "#/$defs/on"
1003
+ },
1004
+ "requires": {
1005
+ "$ref": "#/$defs/requires"
1006
+ }
1007
+ }
1008
+ },
1009
+ {
1010
+ "type": "object",
1011
+ "additionalProperties": false,
1012
+ "required": ["observer"],
1013
+ "properties": {
1014
+ "observer": {
1015
+ "enum": ["watch", "fail"]
1016
+ },
1017
+ "url": {
1018
+ "type": "string",
1019
+ "minLength": 1
1020
+ },
1021
+ "on": {
1022
+ "$ref": "#/$defs/on"
1023
+ },
1024
+ "requires": {
1025
+ "$ref": "#/$defs/requires"
1026
+ }
1027
+ },
1028
+ "if": {
1029
+ "properties": {
1030
+ "observer": {
1031
+ "const": "fail"
1032
+ }
1033
+ }
1034
+ },
1035
+ "then": {
1036
+ "required": ["url"]
1037
+ },
1038
+ "else": {
1039
+ "not": {
1040
+ "required": ["url"]
1041
+ }
1042
+ }
869
1043
  }
870
1044
  ]
871
1045
  },
@@ -947,6 +1121,33 @@
947
1121
  }
948
1122
  }
949
1123
  },
1124
+ {
1125
+ "type": "object",
1126
+ "additionalProperties": false,
1127
+ "required": ["forwarded", "observer"],
1128
+ "properties": {
1129
+ "forwarded": {
1130
+ "type": "object",
1131
+ "additionalProperties": false,
1132
+ "required": ["method"],
1133
+ "properties": {
1134
+ "method": {
1135
+ "type": "string",
1136
+ "minLength": 1
1137
+ },
1138
+ "where": {
1139
+ "$ref": "#/$defs/predicate"
1140
+ },
1141
+ "params": {
1142
+ "$ref": "#/$defs/predicate"
1143
+ }
1144
+ }
1145
+ },
1146
+ "observer": {
1147
+ "const": "client"
1148
+ }
1149
+ }
1150
+ },
950
1151
  {
951
1152
  "type": "object",
952
1153
  "additionalProperties": false,
@@ -962,7 +1163,7 @@
962
1163
  "$ref": "#/$defs/predicate"
963
1164
  },
964
1165
  "observer": {
965
- "const": "client"
1166
+ "enum": ["client", "unguarded"]
966
1167
  }
967
1168
  }
968
1169
  },
@@ -1352,6 +1553,44 @@
1352
1553
  "const": "unguarded"
1353
1554
  }
1354
1555
  }
1556
+ },
1557
+ {
1558
+ "type": "object",
1559
+ "additionalProperties": false,
1560
+ "required": ["world", "observer"],
1561
+ "properties": {
1562
+ "world": {
1563
+ "type": "string",
1564
+ "minLength": 1
1565
+ },
1566
+ "origin": {
1567
+ "type": "string",
1568
+ "minLength": 1
1569
+ },
1570
+ "afterClear": {
1571
+ "const": true
1572
+ },
1573
+ "observer": {
1574
+ "const": "unguarded"
1575
+ }
1576
+ }
1577
+ },
1578
+ {
1579
+ "type": "object",
1580
+ "additionalProperties": false,
1581
+ "required": ["script", "observer"],
1582
+ "properties": {
1583
+ "script": {
1584
+ "type": "string",
1585
+ "minLength": 1
1586
+ },
1587
+ "afterClear": {
1588
+ "const": true
1589
+ },
1590
+ "observer": {
1591
+ "const": "unguarded"
1592
+ }
1593
+ }
1355
1594
  }
1356
1595
  ]
1357
1596
  },
@@ -1409,6 +1648,9 @@
1409
1648
  "type": "string"
1410
1649
  }
1411
1650
  }
1651
+ },
1652
+ "$absentOr": {
1653
+ "type": ["string", "boolean", "number", "null"]
1412
1654
  }
1413
1655
  },
1414
1656
  "additionalProperties": {