monkeypatchlist 0.0.0-stage → 0.1.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.
- package/LICENSE +202 -0
- package/NOTICE +61 -0
- package/README.md +183 -2
- package/catalog/catalog.json +552211 -0
- package/catalog/catalog.schema.json +787 -0
- package/catalog/changelog.json +3 -0
- package/dist/bin/monkeypatchlist.d.ts +2 -0
- package/dist/bin/monkeypatchlist.js +3 -0
- package/dist/catalog.d.ts +561 -0
- package/dist/catalog.js +58 -0
- package/dist/cli.d.ts +84 -0
- package/dist/cli.js +470 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/lockfile-input.d.ts +9 -0
- package/dist/lockfile-input.js +91 -0
- package/dist/packages/analysis/binding.d.ts +2 -0
- package/dist/packages/analysis/binding.js +5 -0
- package/dist/packages/analysis/index.d.ts +10 -0
- package/dist/packages/analysis/index.js +13 -0
- package/dist/packages/analysis/job.d.ts +33 -0
- package/dist/packages/analysis/job.js +85 -0
- package/dist/packages/analysis/lib/absence-tags.d.ts +34 -0
- package/dist/packages/analysis/lib/absence-tags.js +340 -0
- package/dist/packages/analysis/lib/ast.d.ts +28 -0
- package/dist/packages/analysis/lib/ast.js +64 -0
- package/dist/packages/analysis/lib/binding.d.ts +36 -0
- package/dist/packages/analysis/lib/binding.js +66 -0
- package/dist/packages/analysis/lib/budget.d.ts +80 -0
- package/dist/packages/analysis/lib/budget.js +31 -0
- package/dist/packages/analysis/lib/catch-arms.d.ts +19 -0
- package/dist/packages/analysis/lib/catch-arms.js +351 -0
- package/dist/packages/analysis/lib/chunk-loads.d.ts +160 -0
- package/dist/packages/analysis/lib/chunk-loads.js +882 -0
- package/dist/packages/analysis/lib/chunk-registry.d.ts +45 -0
- package/dist/packages/analysis/lib/chunk-registry.js +334 -0
- package/dist/packages/analysis/lib/code-routes.d.ts +52 -0
- package/dist/packages/analysis/lib/code-routes.js +921 -0
- package/dist/packages/analysis/lib/collisions.d.ts +22 -0
- package/dist/packages/analysis/lib/collisions.js +103 -0
- package/dist/packages/analysis/lib/definitions.d.ts +76 -0
- package/dist/packages/analysis/lib/definitions.js +782 -0
- package/dist/packages/analysis/lib/early-exits.d.ts +39 -0
- package/dist/packages/analysis/lib/early-exits.js +161 -0
- package/dist/packages/analysis/lib/effect.d.ts +138 -0
- package/dist/packages/analysis/lib/effect.js +800 -0
- package/dist/packages/analysis/lib/global-object.d.ts +581 -0
- package/dist/packages/analysis/lib/global-object.js +8240 -0
- package/dist/packages/analysis/lib/keys.d.ts +33 -0
- package/dist/packages/analysis/lib/keys.js +82 -0
- package/dist/packages/analysis/lib/line-starts.d.ts +41 -0
- package/dist/packages/analysis/lib/line-starts.js +79 -0
- package/dist/packages/analysis/lib/link-group.d.ts +51 -0
- package/dist/packages/analysis/lib/link-group.js +487 -0
- package/dist/packages/analysis/lib/module-links.d.ts +117 -0
- package/dist/packages/analysis/lib/module-links.js +1060 -0
- package/dist/packages/analysis/lib/nested-code.d.ts +38 -0
- package/dist/packages/analysis/lib/nested-code.js +200 -0
- package/dist/packages/analysis/lib/numeric.d.ts +16 -0
- package/dist/packages/analysis/lib/numeric.js +216 -0
- package/dist/packages/analysis/lib/once-flags.d.ts +12 -0
- package/dist/packages/analysis/lib/once-flags.js +190 -0
- package/dist/packages/analysis/lib/parameter-arguments.d.ts +12 -0
- package/dist/packages/analysis/lib/parameter-arguments.js +34 -0
- package/dist/packages/analysis/lib/parse.d.ts +10 -0
- package/dist/packages/analysis/lib/parse.js +39 -0
- package/dist/packages/analysis/lib/partial.d.ts +60 -0
- package/dist/packages/analysis/lib/partial.js +518 -0
- package/dist/packages/analysis/lib/print.d.ts +3 -0
- package/dist/packages/analysis/lib/print.js +150 -0
- package/dist/packages/analysis/lib/reachability.d.ts +137 -0
- package/dist/packages/analysis/lib/reachability.js +1295 -0
- package/dist/packages/analysis/lib/resolver.d.ts +13 -0
- package/dist/packages/analysis/lib/resolver.js +2886 -0
- package/dist/packages/analysis/lib/restores.d.ts +42 -0
- package/dist/packages/analysis/lib/restores.js +482 -0
- package/dist/packages/analysis/lib/rewritten-deletes.d.ts +6 -0
- package/dist/packages/analysis/lib/rewritten-deletes.js +142 -0
- package/dist/packages/analysis/lib/scope.d.ts +110 -0
- package/dist/packages/analysis/lib/scope.js +443 -0
- package/dist/packages/analysis/lib/script-loads.d.ts +56 -0
- package/dist/packages/analysis/lib/script-loads.js +359 -0
- package/dist/packages/analysis/lib/summaries.d.ts +177 -0
- package/dist/packages/analysis/lib/summaries.js +498 -0
- package/dist/packages/analysis/lib/types.d.ts +632 -0
- package/dist/packages/analysis/lib/types.js +128 -0
- package/dist/packages/analysis/lib/wrap.d.ts +34 -0
- package/dist/packages/analysis/lib/wrap.js +407 -0
- package/dist/packages/analysis/lib/writes.d.ts +358 -0
- package/dist/packages/analysis/lib/writes.js +1612 -0
- package/dist/packages/analysis/visit-order.d.ts +3 -0
- package/dist/packages/analysis/visit-order.js +23 -0
- package/dist/packages/attribution/index.d.ts +233 -0
- package/dist/packages/attribution/index.js +444 -0
- package/dist/packages/attribution/lib/containing-package.d.ts +76 -0
- package/dist/packages/attribution/lib/containing-package.js +304 -0
- package/dist/packages/attribution/lib/first-party.d.ts +37 -0
- package/dist/packages/attribution/lib/first-party.js +153 -0
- package/dist/packages/attribution/lib/lockfile-graph.d.ts +99 -0
- package/dist/packages/attribution/lib/lockfile-graph.js +158 -0
- package/dist/packages/attribution/lib/lockfile.d.ts +33 -0
- package/dist/packages/attribution/lib/lockfile.js +330 -0
- package/dist/packages/attribution/lib/path-rules.d.ts +29 -0
- package/dist/packages/attribution/lib/path-rules.js +84 -0
- package/dist/packages/attribution/lib/pnpm.d.ts +4 -0
- package/dist/packages/attribution/lib/pnpm.js +133 -0
- package/dist/packages/attribution/lib/remote-url.d.ts +7 -0
- package/dist/packages/attribution/lib/remote-url.js +24 -0
- package/dist/packages/attribution/lib/source-map.d.ts +51 -0
- package/dist/packages/attribution/lib/source-map.js +125 -0
- package/dist/packages/attribution/lib/yaml.d.ts +9 -0
- package/dist/packages/attribution/lib/yaml.js +277 -0
- package/dist/packages/attribution/lib/yarn.d.ts +7 -0
- package/dist/packages/attribution/lib/yarn.js +227 -0
- package/dist/packages/baseline/index.d.ts +45 -0
- package/dist/packages/baseline/index.js +41 -0
- package/dist/packages/baseline/lib/error.d.ts +15 -0
- package/dist/packages/baseline/lib/error.js +25 -0
- package/dist/packages/baseline/lib/format.d.ts +49 -0
- package/dist/packages/baseline/lib/format.js +22 -0
- package/dist/packages/baseline/lib/migrations.d.ts +19 -0
- package/dist/packages/baseline/lib/migrations.js +7 -0
- package/dist/packages/baseline/lib/previous.d.ts +23 -0
- package/dist/packages/baseline/lib/previous.js +64 -0
- package/dist/packages/baseline/lib/read.d.ts +39 -0
- package/dist/packages/baseline/lib/read.js +219 -0
- package/dist/packages/baseline/lib/report.d.ts +25 -0
- package/dist/packages/baseline/lib/report.js +104 -0
- package/dist/packages/baseline/lib/skew.d.ts +51 -0
- package/dist/packages/baseline/lib/skew.js +75 -0
- package/dist/packages/compare/index.d.ts +120 -0
- package/dist/packages/compare/index.js +274 -0
- package/dist/packages/compare/lib/catalog-notes.d.ts +73 -0
- package/dist/packages/compare/lib/catalog-notes.js +224 -0
- package/dist/packages/completeness/index.d.ts +246 -0
- package/dist/packages/completeness/index.js +249 -0
- package/dist/packages/confidence/index.d.ts +54 -0
- package/dist/packages/confidence/index.js +71 -0
- package/dist/packages/config/index.d.ts +107 -0
- package/dist/packages/config/index.js +95 -0
- package/dist/packages/config/lib/command-line.d.ts +23 -0
- package/dist/packages/config/lib/command-line.js +239 -0
- package/dist/packages/config/lib/config-file.d.ts +11 -0
- package/dist/packages/config/lib/config-file.js +119 -0
- package/dist/packages/config/lib/scan-config-id.d.ts +28 -0
- package/dist/packages/config/lib/scan-config-id.js +54 -0
- package/dist/packages/config/lib/schema.d.ts +2 -0
- package/dist/packages/config/lib/schema.js +31 -0
- package/dist/packages/config/lib/types.d.ts +64 -0
- package/dist/packages/config/lib/types.js +6 -0
- package/dist/packages/config/lib/urls.d.ts +6 -0
- package/dist/packages/config/lib/urls.js +9 -0
- package/dist/packages/discovery/index.d.ts +277 -0
- package/dist/packages/discovery/index.js +1950 -0
- package/dist/packages/discovery/lib/import-map.d.ts +68 -0
- package/dist/packages/discovery/lib/import-map.js +180 -0
- package/dist/packages/discovery/lib/requests.d.ts +58 -0
- package/dist/packages/discovery/lib/requests.js +591 -0
- package/dist/packages/discovery/lib/scopes.d.ts +6 -0
- package/dist/packages/discovery/lib/scopes.js +286 -0
- package/dist/packages/discovery/lib/source-maps.d.ts +56 -0
- package/dist/packages/discovery/lib/source-maps.js +209 -0
- package/dist/packages/discovery/lib/swept-code.d.ts +27 -0
- package/dist/packages/discovery/lib/swept-code.js +107 -0
- package/dist/packages/discovery/lib/syntax.d.ts +17 -0
- package/dist/packages/discovery/lib/syntax.js +39 -0
- package/dist/packages/findings/index.d.ts +106 -0
- package/dist/packages/findings/index.js +254 -0
- package/dist/packages/findings/lib/scope.d.ts +38 -0
- package/dist/packages/findings/lib/scope.js +110 -0
- package/dist/packages/parallel/index.d.ts +2 -0
- package/dist/packages/parallel/index.js +5 -0
- package/dist/packages/parallel/lib/protocol.d.ts +15 -0
- package/dist/packages/parallel/lib/protocol.js +2 -0
- package/dist/packages/parallel/lib/runner.d.ts +36 -0
- package/dist/packages/parallel/lib/runner.js +96 -0
- package/dist/packages/parallel/lib/schedule.d.ts +16 -0
- package/dist/packages/parallel/lib/schedule.js +52 -0
- package/dist/packages/parallel/lib/worker.d.ts +1 -0
- package/dist/packages/parallel/lib/worker.js +18 -0
- package/dist/packages/policy/index.d.ts +36 -0
- package/dist/packages/policy/index.js +22 -0
- package/dist/packages/report/explain.d.ts +26 -0
- package/dist/packages/report/explain.js +99 -0
- package/dist/packages/report/index.d.ts +210 -0
- package/dist/packages/report/index.js +388 -0
- package/dist/packages/report/terminal.d.ts +11 -0
- package/dist/packages/report/terminal.js +331 -0
- package/dist/packages/source-store/fixture.d.ts +22 -0
- package/dist/packages/source-store/fixture.js +58 -0
- package/dist/packages/source-store/index.d.ts +278 -0
- package/dist/packages/source-store/index.js +322 -0
- package/dist/packages/source-store/lib/addresses.d.ts +6 -0
- package/dist/packages/source-store/lib/addresses.js +91 -0
- package/dist/packages/source-store/lib/connection.d.ts +15 -0
- package/dist/packages/source-store/lib/connection.js +135 -0
- package/dist/packages/source-store/lib/content-types.d.ts +16 -0
- package/dist/packages/source-store/lib/content-types.js +75 -0
- package/dist/packages/source-store/lib/data-urls.d.ts +10 -0
- package/dist/packages/source-store/lib/data-urls.js +85 -0
- package/dist/packages/source-store/lib/deadline.d.ts +18 -0
- package/dist/packages/source-store/lib/deadline.js +44 -0
- package/dist/packages/source-store/lib/exchange.d.ts +29 -0
- package/dist/packages/source-store/lib/exchange.js +112 -0
- package/dist/packages/source-store/lib/integrity.d.ts +19 -0
- package/dist/packages/source-store/lib/integrity.js +86 -0
- package/dist/packages/source-store/lib/outcomes.d.ts +12 -0
- package/dist/packages/source-store/lib/outcomes.js +22 -0
- package/dist/packages/source-store/lib/proxy.d.ts +11 -0
- package/dist/packages/source-store/lib/proxy.js +53 -0
- package/dist/packages/source-store/lib/session.d.ts +12 -0
- package/dist/packages/source-store/lib/session.js +139 -0
- package/dist/packages/source-store/lib/urls.d.ts +6 -0
- package/dist/packages/source-store/lib/urls.js +15 -0
- package/dist/packages/source-store/resolve.d.ts +59 -0
- package/dist/packages/source-store/resolve.js +45 -0
- package/dist/scan.d.ts +65 -0
- package/dist/scan.js +592 -0
- package/package.json +95 -4
- package/schema/config.schema.json +133 -0
- package/schema/report.schema.json +1905 -0
|
@@ -0,0 +1,787 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "monkeypatchlist native catalog",
|
|
4
|
+
"description": "The runtime catalog, generated from pinned upstreams by the catalog generator and committed as catalog/catalog.json (spec §4, §19). Each top-level property is a named section.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": [
|
|
7
|
+
"metadata",
|
|
8
|
+
"targets",
|
|
9
|
+
"holders",
|
|
10
|
+
"instanceMembers",
|
|
11
|
+
"instances",
|
|
12
|
+
"esAdditions",
|
|
13
|
+
"engineExtensions",
|
|
14
|
+
"esProseProperties",
|
|
15
|
+
"enginePrototypes",
|
|
16
|
+
"proseMembers",
|
|
17
|
+
"singletons",
|
|
18
|
+
"aliasGroups",
|
|
19
|
+
"exclusions",
|
|
20
|
+
"surfaceMap",
|
|
21
|
+
"protectedSurface",
|
|
22
|
+
"retained",
|
|
23
|
+
"remoteUrlNormalization",
|
|
24
|
+
"frameworkPathRules",
|
|
25
|
+
"escapeOnlyShapes"
|
|
26
|
+
],
|
|
27
|
+
"additionalProperties": false,
|
|
28
|
+
"properties": {
|
|
29
|
+
"metadata": {
|
|
30
|
+
"description": "Catalog metadata: the catalog version and every upstream pin.",
|
|
31
|
+
"type": "object",
|
|
32
|
+
"required": ["catalogVersion", "upstream", "overlays"],
|
|
33
|
+
"additionalProperties": false,
|
|
34
|
+
"properties": {
|
|
35
|
+
"catalogVersion": {
|
|
36
|
+
"description": "The catalog version (spec §4 Catalog versions): one version for all of monkeypatchlist's curated data, separate from the monkeypatchlist version. It only ever grows, one bump per monkeypatchlist minor release.",
|
|
37
|
+
"type": "integer",
|
|
38
|
+
"minimum": 1
|
|
39
|
+
},
|
|
40
|
+
"overlays": {
|
|
41
|
+
"description": "A pin of each curated overlay the catalog was generated from: the sha256 of the file's bytes, by file name.",
|
|
42
|
+
"type": "object",
|
|
43
|
+
"required": [
|
|
44
|
+
"es-additions.json",
|
|
45
|
+
"engine-extensions.json",
|
|
46
|
+
"es-prose-properties.json",
|
|
47
|
+
"prose-members.json",
|
|
48
|
+
"singletons.json",
|
|
49
|
+
"engine-prototypes.json",
|
|
50
|
+
"exclusions.json",
|
|
51
|
+
"surfaces.json",
|
|
52
|
+
"protected-surface.json",
|
|
53
|
+
"retained.json",
|
|
54
|
+
"remote-url-normalization.json",
|
|
55
|
+
"framework-path-rules.json",
|
|
56
|
+
"escape-only-shapes.json"
|
|
57
|
+
],
|
|
58
|
+
"additionalProperties": false,
|
|
59
|
+
"properties": {
|
|
60
|
+
"es-additions.json": { "$ref": "#/$defs/sha256" },
|
|
61
|
+
"engine-extensions.json": { "$ref": "#/$defs/sha256" },
|
|
62
|
+
"es-prose-properties.json": { "$ref": "#/$defs/sha256" },
|
|
63
|
+
"prose-members.json": { "$ref": "#/$defs/sha256" },
|
|
64
|
+
"singletons.json": { "$ref": "#/$defs/sha256" },
|
|
65
|
+
"engine-prototypes.json": { "$ref": "#/$defs/sha256" },
|
|
66
|
+
"exclusions.json": { "$ref": "#/$defs/sha256" },
|
|
67
|
+
"framework-path-rules.json": { "$ref": "#/$defs/sha256" },
|
|
68
|
+
"escape-only-shapes.json": { "$ref": "#/$defs/sha256" },
|
|
69
|
+
"surfaces.json": { "$ref": "#/$defs/sha256" },
|
|
70
|
+
"protected-surface.json": { "$ref": "#/$defs/sha256" },
|
|
71
|
+
"retained.json": { "$ref": "#/$defs/sha256" },
|
|
72
|
+
"remote-url-normalization.json": { "$ref": "#/$defs/sha256" }
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"upstream": {
|
|
76
|
+
"description": "The exact version of each upstream package the catalog was generated from.",
|
|
77
|
+
"type": "object",
|
|
78
|
+
"required": ["@webref/idl", "webidl2", "@tc39/ecma262-biblio", "@tc39/ecma402-biblio"],
|
|
79
|
+
"additionalProperties": false,
|
|
80
|
+
"properties": {
|
|
81
|
+
"@webref/idl": { "$ref": "#/$defs/exactVersion" },
|
|
82
|
+
"webidl2": { "$ref": "#/$defs/exactVersion" },
|
|
83
|
+
"@tc39/ecma262-biblio": { "$ref": "#/$defs/exactVersion" },
|
|
84
|
+
"@tc39/ecma402-biblio": { "$ref": "#/$defs/exactVersion" }
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"targets": {
|
|
90
|
+
"description": "Targets and their member data, per realm. The same name in two realms is two targets.",
|
|
91
|
+
"type": "object",
|
|
92
|
+
"required": ["window", "dedicated-worker", "shared-worker", "service-worker"],
|
|
93
|
+
"additionalProperties": false,
|
|
94
|
+
"properties": {
|
|
95
|
+
"window": { "$ref": "#/$defs/realmTargets" },
|
|
96
|
+
"dedicated-worker": { "$ref": "#/$defs/realmTargets" },
|
|
97
|
+
"shared-worker": { "$ref": "#/$defs/realmTargets" },
|
|
98
|
+
"service-worker": { "$ref": "#/$defs/realmTargets" }
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"holders": {
|
|
102
|
+
"description": "The objects targets live on, per realm, keyed by holder name: the prefix of the names of the targets on it, e.g. `Window`, `EventTarget.prototype`, `XMLHttpRequest`, `console`, `Array.prototype`, `Math`, `%TypedArray%.prototype`.",
|
|
103
|
+
"type": "object",
|
|
104
|
+
"required": ["window", "dedicated-worker", "shared-worker", "service-worker"],
|
|
105
|
+
"additionalProperties": false,
|
|
106
|
+
"properties": {
|
|
107
|
+
"window": { "$ref": "#/$defs/realmHolders" },
|
|
108
|
+
"dedicated-worker": { "$ref": "#/$defs/realmHolders" },
|
|
109
|
+
"shared-worker": { "$ref": "#/$defs/realmHolders" },
|
|
110
|
+
"service-worker": { "$ref": "#/$defs/realmHolders" }
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"instanceMembers": {
|
|
114
|
+
"description": "Members the binding defines on each instance of an interface rather than on its prototype ([LegacyUnforgeable]), per realm, keyed by interface and then member. They are no targets of their own, except as a platform singleton's own members, which are instance targets named by its canonical path (`location.href`). Those of a realm's [Global] interface are left out: they are the global's own targets.",
|
|
115
|
+
"type": "object",
|
|
116
|
+
"required": ["window", "dedicated-worker", "shared-worker", "service-worker"],
|
|
117
|
+
"additionalProperties": false,
|
|
118
|
+
"properties": {
|
|
119
|
+
"window": { "$ref": "#/$defs/realmInstanceMembers" },
|
|
120
|
+
"dedicated-worker": { "$ref": "#/$defs/realmInstanceMembers" },
|
|
121
|
+
"shared-worker": { "$ref": "#/$defs/realmInstanceMembers" },
|
|
122
|
+
"service-worker": { "$ref": "#/$defs/realmInstanceMembers" }
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"instances": {
|
|
126
|
+
"description": "What each instance of a Web IDL interface carries itself, per realm, keyed by interface, for the holders that are such instances (the platform singletons). Only interfaces with data are listed.",
|
|
127
|
+
"type": "object",
|
|
128
|
+
"required": ["window", "dedicated-worker", "shared-worker", "service-worker"],
|
|
129
|
+
"additionalProperties": false,
|
|
130
|
+
"properties": {
|
|
131
|
+
"window": { "$ref": "#/$defs/realmInstances" },
|
|
132
|
+
"dedicated-worker": { "$ref": "#/$defs/realmInstances" },
|
|
133
|
+
"shared-worker": { "$ref": "#/$defs/realmInstances" },
|
|
134
|
+
"service-worker": { "$ref": "#/$defs/realmInstances" }
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
"esAdditions": {
|
|
138
|
+
"description": "The curated overlay of small ES additions that ECMA-262 and ECMA-402 do not define yet, such as Temporal, by name.",
|
|
139
|
+
"type": "object",
|
|
140
|
+
"additionalProperties": { "$ref": "#/$defs/esAddition" }
|
|
141
|
+
},
|
|
142
|
+
"engineExtensions": {
|
|
143
|
+
"description": "The curated overlay of engine extensions (spec §4 Sources): own properties an engine defines on ECMAScript intrinsics outside ECMA-262, such as V8's `Error.stackTraceLimit`, by the path of each property. Each is a target in every realm.",
|
|
144
|
+
"type": "object",
|
|
145
|
+
"additionalProperties": { "$ref": "#/$defs/engineExtension" }
|
|
146
|
+
},
|
|
147
|
+
"esProseProperties": {
|
|
148
|
+
"description": "The curated overlay of ECMA-262 own properties that have no clause of their own (spec §4 Sources): `Function.prototype.caller` and `.arguments`, `Array.prototype.length` and `String.prototype.length`, by the path of each property. Each is a target in every realm, credited to ecma262.",
|
|
149
|
+
"type": "object",
|
|
150
|
+
"additionalProperties": { "$ref": "#/$defs/esProseProperty" }
|
|
151
|
+
},
|
|
152
|
+
"enginePrototypes": {
|
|
153
|
+
"description": "The curated overlay of engine prototypes (spec §4 Sources): prototype holders an engine puts on a platform singleton's chain where Web IDL has none, by holder name. `HTMLDocument.prototype` sits between `document` and `Document.prototype`, as every engine has it. Each is a prototype holder in the realms it lists whose only own members are `constructor` and `@@toStringTag`, and its interface object is a constructor holder named by its owner, held by a global target (`Window.HTMLDocument`) and with a `prototype` target.",
|
|
154
|
+
"type": "object",
|
|
155
|
+
"additionalProperties": { "$ref": "#/$defs/enginePrototype" }
|
|
156
|
+
},
|
|
157
|
+
"proseMembers": {
|
|
158
|
+
"description": "The curated overlay of own members a spec defines in prose on each instance of an interface rather than in IDL (spec §4 Sources), by interface and then member: `Location`'s `valueOf` and `@@toPrimitive`. Each is also one of its interface's instanceMembers, so a platform singleton of that interface has it as an instance target (`location.valueOf`).",
|
|
159
|
+
"type": "object",
|
|
160
|
+
"additionalProperties": { "type": "object", "additionalProperties": { "$ref": "#/$defs/proseMember" } }
|
|
161
|
+
},
|
|
162
|
+
"singletons": {
|
|
163
|
+
"description": "The platform singletons (spec §3), per realm, keyed by canonical path from the global without the global's prefix, e.g. `history`, `navigator.geolocation`, `crypto.subtle`. Each is the holder of that name. The curated singletons overlay, resolved against the IDL.",
|
|
164
|
+
"type": "object",
|
|
165
|
+
"required": ["window", "dedicated-worker", "shared-worker", "service-worker"],
|
|
166
|
+
"additionalProperties": false,
|
|
167
|
+
"properties": {
|
|
168
|
+
"window": { "$ref": "#/$defs/realmSingletons" },
|
|
169
|
+
"dedicated-worker": { "$ref": "#/$defs/realmSingletons" },
|
|
170
|
+
"shared-worker": { "$ref": "#/$defs/realmSingletons" },
|
|
171
|
+
"service-worker": { "$ref": "#/$defs/realmSingletons" }
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
"aliasGroups": {
|
|
175
|
+
"description": "Each platform singleton's alias group, per realm, keyed by canonical path: every access path from the global that reaches it, the canonical path included, e.g. `window.history`, `self.history`, `document.location`.",
|
|
176
|
+
"type": "object",
|
|
177
|
+
"required": ["window", "dedicated-worker", "shared-worker", "service-worker"],
|
|
178
|
+
"additionalProperties": false,
|
|
179
|
+
"properties": {
|
|
180
|
+
"window": { "$ref": "#/$defs/realmAliasGroups" },
|
|
181
|
+
"dedicated-worker": { "$ref": "#/$defs/realmAliasGroups" },
|
|
182
|
+
"shared-worker": { "$ref": "#/$defs/realmAliasGroups" },
|
|
183
|
+
"service-worker": { "$ref": "#/$defs/realmAliasGroups" }
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
"exclusions": {
|
|
187
|
+
"description": "The curated exclusions overlay: interfaces, namespaces or intrinsics upstream publishes that the catalog leaves out, keyed by owner, with the reason and the targets each leaves out.",
|
|
188
|
+
"type": "object",
|
|
189
|
+
"additionalProperties": { "$ref": "#/$defs/exclusion" }
|
|
190
|
+
},
|
|
191
|
+
"surfaceMap": {
|
|
192
|
+
"description": "The curated owner → surface map every member's surface comes from (spec §12), seeded once from spec shortname and HTML section page. It never says other, the surface of an owner nobody has reviewed, and never names an ECMAScript member, which is always ECMAScript.",
|
|
193
|
+
"type": "object",
|
|
194
|
+
"required": ["owners", "members"],
|
|
195
|
+
"additionalProperties": false,
|
|
196
|
+
"properties": {
|
|
197
|
+
"owners": {
|
|
198
|
+
"description": "The surface of each interface or namespace, and of an interface mixin, whose members take it on every interface that includes it, by name.",
|
|
199
|
+
"type": "object",
|
|
200
|
+
"additionalProperties": { "$ref": "#/$defs/reviewedSurface" }
|
|
201
|
+
},
|
|
202
|
+
"members": {
|
|
203
|
+
"description": "Per-member overrides, by the interface, namespace or mixin that declares the member, and then by member.",
|
|
204
|
+
"type": "object",
|
|
205
|
+
"additionalProperties": {
|
|
206
|
+
"type": "object",
|
|
207
|
+
"additionalProperties": { "$ref": "#/$defs/reviewedSurface" }
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"protectedSurface": {
|
|
213
|
+
"description": "The protected-surface list (spec §12), by surface: whole-interface or namespace entries and member entries, keyed on (interface, member) independent of realm and holder. Every target an entry names has the entry's surface.",
|
|
214
|
+
"type": "object",
|
|
215
|
+
"propertyNames": { "$ref": "#/$defs/reviewedSurface" },
|
|
216
|
+
"additionalProperties": {
|
|
217
|
+
"type": "array",
|
|
218
|
+
"minItems": 1,
|
|
219
|
+
"items": { "$ref": "#/$defs/protectedEntry" }
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
"remoteUrlNormalization": {
|
|
223
|
+
"description": "The remote URL normalization rules (spec §11 Remote URL normalization), versioned data: a remote artifact's attribution key is url: and its URL normalized by them. Step 1 gives a URL whose scheme is in scheme.from the scheme scheme.to; step 2 lowercases the host and drops what drop names; steps 3 and 4 rewrite the path only, in order, replacing every match of each rule's pattern (a JavaScript regular expression, with the u flag) with its replacement.",
|
|
224
|
+
"type": "object",
|
|
225
|
+
"required": ["scheme", "host", "drop", "path"],
|
|
226
|
+
"additionalProperties": false,
|
|
227
|
+
"properties": {
|
|
228
|
+
"scheme": {
|
|
229
|
+
"type": "object",
|
|
230
|
+
"required": ["from", "to"],
|
|
231
|
+
"additionalProperties": false,
|
|
232
|
+
"properties": {
|
|
233
|
+
"from": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
234
|
+
"to": { "type": "string", "minLength": 1 }
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
"host": { "const": "lowercase" },
|
|
238
|
+
"drop": { "type": "array", "items": { "enum": ["default-port", "query", "fragment"] } },
|
|
239
|
+
"path": {
|
|
240
|
+
"type": "array",
|
|
241
|
+
"items": {
|
|
242
|
+
"type": "object",
|
|
243
|
+
"required": ["id", "step", "pattern", "replacement"],
|
|
244
|
+
"additionalProperties": false,
|
|
245
|
+
"properties": {
|
|
246
|
+
"id": { "type": "string", "minLength": 1 },
|
|
247
|
+
"step": { "enum": [3, 4] },
|
|
248
|
+
"pattern": { "type": "string", "minLength": 1 },
|
|
249
|
+
"replacement": { "type": "string" }
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
"retained": {
|
|
256
|
+
"description": "The retained overlay (spec §4 Catalog versions), per realm, by name. The catalog is monotonic: a target or holder upstream removes stays, as it was last generated, until a deliberate drop backed by BCD evidence.",
|
|
257
|
+
"type": "object",
|
|
258
|
+
"required": ["targets", "holders", "dropped", "droppedHolders"],
|
|
259
|
+
"additionalProperties": false,
|
|
260
|
+
"properties": {
|
|
261
|
+
"targets": {
|
|
262
|
+
"description": "The retained targets, each also in targets, flagged catalogStatus retained.",
|
|
263
|
+
"$ref": "#/$defs/perRealmRetention"
|
|
264
|
+
},
|
|
265
|
+
"holders": {
|
|
266
|
+
"description": "The holders upstream removed that the catalog keeps (holders are monotonic too), each also in holders.",
|
|
267
|
+
"$ref": "#/$defs/perRealmRetention"
|
|
268
|
+
},
|
|
269
|
+
"dropped": {
|
|
270
|
+
"description": "The targets deliberately dropped, none of them in targets.",
|
|
271
|
+
"$ref": "#/$defs/perRealmDrops"
|
|
272
|
+
},
|
|
273
|
+
"droppedHolders": {
|
|
274
|
+
"description": "The holders deliberately dropped, none of them in holders.",
|
|
275
|
+
"$ref": "#/$defs/perRealmDrops"
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
"frameworkPathRules": {
|
|
280
|
+
"description": "The curated framework path rules (spec §10 Framework path rules), by rule id: a shape of a source path with no node_modules segment, and the package it names. A rule only names a package: never first-party, never high, never a version.",
|
|
281
|
+
"type": "object",
|
|
282
|
+
"additionalProperties": {
|
|
283
|
+
"type": "object",
|
|
284
|
+
"allOf": [{ "$ref": "#/$defs/pathShape" }],
|
|
285
|
+
"required": ["package"],
|
|
286
|
+
"properties": {
|
|
287
|
+
"package": {
|
|
288
|
+
"description": "The package the rule names, where <name> stands for what the shape captured as name: next, @angular/<pkg>.",
|
|
289
|
+
"type": "string",
|
|
290
|
+
"minLength": 1
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
"unevaluatedProperties": false
|
|
294
|
+
}
|
|
295
|
+
},
|
|
296
|
+
"escapeOnlyShapes": {
|
|
297
|
+
"description": "The curated escape-only shapes (spec §10 Escaped sources), by shape id: shapes of a source path with no node_modules segment that name no package. A source matching one is always escaped (unknown, escaped-source), wherever the inferred root is.",
|
|
298
|
+
"type": "object",
|
|
299
|
+
"additionalProperties": { "type": "object", "allOf": [{ "$ref": "#/$defs/pathShape" }], "unevaluatedProperties": false }
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
"$defs": {
|
|
303
|
+
"pathShape": {
|
|
304
|
+
"description": "A shape of a normalized source path (spec §10): scheme and namespace stripped, a relative sourceRoot joined, . and x/.. collapsed, leading .. kept.",
|
|
305
|
+
"type": "object",
|
|
306
|
+
"required": ["source", "segments"],
|
|
307
|
+
"properties": {
|
|
308
|
+
"source": { "description": "Where the shape was observed, and why it is curated.", "type": "string", "minLength": 1 },
|
|
309
|
+
"namespace": {
|
|
310
|
+
"description": "The bundler namespace the source must be in, as attribution names it: webpack:<ns> for webpack://<ns>/. Absent, any namespace.",
|
|
311
|
+
"type": "string",
|
|
312
|
+
"minLength": 1
|
|
313
|
+
},
|
|
314
|
+
"up": {
|
|
315
|
+
"description": "The fewest leading .. segments the path starts with, with segments right after them. Absent, the run may start at any segment.",
|
|
316
|
+
"type": "integer",
|
|
317
|
+
"minimum": 1
|
|
318
|
+
},
|
|
319
|
+
"segments": {
|
|
320
|
+
"description": "The run of whole segments to match. In a segment, * matches any characters, possibly none, and <name> one or more, captured as name. At least one segment follows the run.",
|
|
321
|
+
"type": "array",
|
|
322
|
+
"minItems": 1,
|
|
323
|
+
"items": { "type": "string", "minLength": 1 }
|
|
324
|
+
},
|
|
325
|
+
"captures": {
|
|
326
|
+
"description": "The whole values a placeholder may capture, by placeholder name. Absent, or for a placeholder it doesn't list, any value.",
|
|
327
|
+
"type": "object",
|
|
328
|
+
"additionalProperties": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } }
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
"perRealmRetention": {
|
|
333
|
+
"type": "object",
|
|
334
|
+
"required": ["window", "dedicated-worker", "shared-worker", "service-worker"],
|
|
335
|
+
"additionalProperties": false,
|
|
336
|
+
"properties": {
|
|
337
|
+
"window": { "$ref": "#/$defs/realmRetentions" },
|
|
338
|
+
"dedicated-worker": { "$ref": "#/$defs/realmRetentions" },
|
|
339
|
+
"shared-worker": { "$ref": "#/$defs/realmRetentions" },
|
|
340
|
+
"service-worker": { "$ref": "#/$defs/realmRetentions" }
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
"realmRetentions": {
|
|
344
|
+
"description": "Retained targets or holders in one realm, by name.",
|
|
345
|
+
"type": "object",
|
|
346
|
+
"additionalProperties": {
|
|
347
|
+
"type": "object",
|
|
348
|
+
"required": ["lastUpstream", "reason"],
|
|
349
|
+
"additionalProperties": false,
|
|
350
|
+
"properties": {
|
|
351
|
+
"lastUpstream": {
|
|
352
|
+
"description": "The last upstream package and version that had it, e.g. `@webref/idl 3.84.0`.",
|
|
353
|
+
"type": "string",
|
|
354
|
+
"pattern": "^\\S+ [0-9]+\\.[0-9]+\\.[0-9]+$"
|
|
355
|
+
},
|
|
356
|
+
"reason": { "description": "Why upstream removed it, and why it stays.", "type": "string", "minLength": 1 }
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
},
|
|
360
|
+
"perRealmDrops": {
|
|
361
|
+
"type": "object",
|
|
362
|
+
"required": ["window", "dedicated-worker", "shared-worker", "service-worker"],
|
|
363
|
+
"additionalProperties": false,
|
|
364
|
+
"properties": {
|
|
365
|
+
"window": { "$ref": "#/$defs/realmDrops" },
|
|
366
|
+
"dedicated-worker": { "$ref": "#/$defs/realmDrops" },
|
|
367
|
+
"shared-worker": { "$ref": "#/$defs/realmDrops" },
|
|
368
|
+
"service-worker": { "$ref": "#/$defs/realmDrops" }
|
|
369
|
+
}
|
|
370
|
+
},
|
|
371
|
+
"realmDrops": {
|
|
372
|
+
"description": "Deliberately dropped targets or holders in one realm, by name.",
|
|
373
|
+
"type": "object",
|
|
374
|
+
"additionalProperties": {
|
|
375
|
+
"type": "object",
|
|
376
|
+
"required": ["bcd", "evidence"],
|
|
377
|
+
"additionalProperties": false,
|
|
378
|
+
"properties": {
|
|
379
|
+
"bcd": {
|
|
380
|
+
"description": "The BCD feature the evidence is about, e.g. `api.Navigator.joinAdInterestGroup`.",
|
|
381
|
+
"type": "string",
|
|
382
|
+
"minLength": 1
|
|
383
|
+
},
|
|
384
|
+
"evidence": { "description": "What BCD, at a version it names, shows.", "type": "string", "minLength": 1 }
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
},
|
|
388
|
+
"realmTargets": {
|
|
389
|
+
"description": "The targets exposed in one realm, keyed by realm-free target name, e.g. `EventTarget.prototype.addEventListener`.",
|
|
390
|
+
"type": "object",
|
|
391
|
+
"additionalProperties": { "$ref": "#/$defs/target" }
|
|
392
|
+
},
|
|
393
|
+
"realmHolders": {
|
|
394
|
+
"description": "The holders in one realm, keyed by holder name.",
|
|
395
|
+
"type": "object",
|
|
396
|
+
"additionalProperties": { "$ref": "#/$defs/holder" }
|
|
397
|
+
},
|
|
398
|
+
"realmInstanceMembers": {
|
|
399
|
+
"description": "The per-instance members in one realm, keyed by interface and then by member.",
|
|
400
|
+
"type": "object",
|
|
401
|
+
"additionalProperties": {
|
|
402
|
+
"type": "object",
|
|
403
|
+
"additionalProperties": { "$ref": "#/$defs/instanceMember" }
|
|
404
|
+
}
|
|
405
|
+
},
|
|
406
|
+
"realmInstances": {
|
|
407
|
+
"description": "What each instance of an interface carries, in one realm, keyed by interface.",
|
|
408
|
+
"type": "object",
|
|
409
|
+
"additionalProperties": {
|
|
410
|
+
"type": "object",
|
|
411
|
+
"minProperties": 1,
|
|
412
|
+
"additionalProperties": false,
|
|
413
|
+
"properties": {
|
|
414
|
+
"immutablePrototype": {
|
|
415
|
+
"description": "Present when every instance is an immutable prototype exotic object, as Location instances are.",
|
|
416
|
+
"const": true
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
},
|
|
421
|
+
"realmSingletons": {
|
|
422
|
+
"description": "The platform singletons in one realm, keyed by canonical path.",
|
|
423
|
+
"type": "object",
|
|
424
|
+
"additionalProperties": { "$ref": "#/$defs/singleton" }
|
|
425
|
+
},
|
|
426
|
+
"singleton": {
|
|
427
|
+
"type": "object",
|
|
428
|
+
"required": ["via"],
|
|
429
|
+
"additionalProperties": false,
|
|
430
|
+
"properties": {
|
|
431
|
+
"via": {
|
|
432
|
+
"description": "The target its value is read from: a property of the global (`Window.history`), or of the singleton its path extends (`Navigator.prototype.geolocation`).",
|
|
433
|
+
"type": "string",
|
|
434
|
+
"minLength": 1
|
|
435
|
+
},
|
|
436
|
+
"interface": {
|
|
437
|
+
"description": "The interface it is an instance of: its holder is an instance holder on that interface's prototype.",
|
|
438
|
+
"type": "string",
|
|
439
|
+
"minLength": 1
|
|
440
|
+
},
|
|
441
|
+
"namespace": {
|
|
442
|
+
"description": "The namespace it is, for `console`: its holder is that namespace holder.",
|
|
443
|
+
"type": "string",
|
|
444
|
+
"minLength": 1
|
|
445
|
+
}
|
|
446
|
+
},
|
|
447
|
+
"oneOf": [
|
|
448
|
+
{ "required": ["interface"], "properties": { "interface": true } },
|
|
449
|
+
{ "required": ["namespace"], "properties": { "namespace": true } }
|
|
450
|
+
]
|
|
451
|
+
},
|
|
452
|
+
"realmAliasGroups": {
|
|
453
|
+
"description": "The alias groups in one realm, keyed by canonical path.",
|
|
454
|
+
"type": "object",
|
|
455
|
+
"additionalProperties": {
|
|
456
|
+
"type": "array",
|
|
457
|
+
"minItems": 1,
|
|
458
|
+
"uniqueItems": true,
|
|
459
|
+
"items": { "type": "string", "minLength": 1 }
|
|
460
|
+
}
|
|
461
|
+
},
|
|
462
|
+
"exclusion": {
|
|
463
|
+
"type": "object",
|
|
464
|
+
"required": ["reason", "targets"],
|
|
465
|
+
"additionalProperties": false,
|
|
466
|
+
"properties": {
|
|
467
|
+
"reason": { "description": "Why it is left out.", "type": "string", "minLength": 1 },
|
|
468
|
+
"targets": {
|
|
469
|
+
"description": "The targets it leaves out, per realm, by name.",
|
|
470
|
+
"type": "object",
|
|
471
|
+
"required": ["window", "dedicated-worker", "shared-worker", "service-worker"],
|
|
472
|
+
"additionalProperties": false,
|
|
473
|
+
"properties": {
|
|
474
|
+
"window": { "$ref": "#/$defs/targetNames" },
|
|
475
|
+
"dedicated-worker": { "$ref": "#/$defs/targetNames" },
|
|
476
|
+
"shared-worker": { "$ref": "#/$defs/targetNames" },
|
|
477
|
+
"service-worker": { "$ref": "#/$defs/targetNames" }
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
},
|
|
482
|
+
"targetNames": {
|
|
483
|
+
"type": "array",
|
|
484
|
+
"uniqueItems": true,
|
|
485
|
+
"items": { "type": "string", "minLength": 1 }
|
|
486
|
+
},
|
|
487
|
+
"sha256": {
|
|
488
|
+
"description": "A sha256 digest, in lowercase hex.",
|
|
489
|
+
"type": "string",
|
|
490
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
491
|
+
},
|
|
492
|
+
"exactVersion": {
|
|
493
|
+
"type": "string",
|
|
494
|
+
"pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"
|
|
495
|
+
},
|
|
496
|
+
"target": {
|
|
497
|
+
"type": "object",
|
|
498
|
+
"required": ["owner", "member", "holder", "kind", "spec", "descriptor", "surface"],
|
|
499
|
+
"additionalProperties": false,
|
|
500
|
+
"properties": {
|
|
501
|
+
"owner": {
|
|
502
|
+
"description": "The interface, namespace or intrinsic whose holder the target is on. For Web IDL, its IDL identifier: the realm's [Global] interface for a property of the global, and `Memory` for `WebAssembly.Memory.prototype.grow`; a mixin member's owner is the interface that includes the mixin. For ECMAScript, the intrinsic's path: `Array` for `Array.prototype.map`, `Intl.DateTimeFormat` for `Intl.DateTimeFormat.prototype.format`.",
|
|
503
|
+
"type": "string",
|
|
504
|
+
"minLength": 1
|
|
505
|
+
},
|
|
506
|
+
"member": { "description": "The property key.", "type": "string", "minLength": 1 },
|
|
507
|
+
"holder": { "$ref": "#/$defs/holderKind" },
|
|
508
|
+
"kind": { "$ref": "#/$defs/memberKind" },
|
|
509
|
+
"spec": {
|
|
510
|
+
"description": "The shortname of the spec whose IDL declares the member, or, for a Web IDL `interface` or `namespace` target, the interface or namespace; ecma262 or ecma402 for an ECMAScript intrinsic; for an ES addition, the spec its overlay entry names; for an engine extension, the engine its overlay entry names.",
|
|
511
|
+
"type": "string",
|
|
512
|
+
"minLength": 1
|
|
513
|
+
},
|
|
514
|
+
"mixin": { "$ref": "#/$defs/mixin" },
|
|
515
|
+
"holds": {
|
|
516
|
+
"description": "For a data property whose value is itself a holder, that holder: `Window.XMLHttpRequest` holds `XMLHttpRequest`, `Window.Window` holds `Window.Window`, `WebAssembly.Module` holds `WebAssembly.Module`, `Window.console` holds `console`, `Window.Promise` holds `Promise`, and `Array.prototype.constructor` holds `Array`. An attribute never holds one: a platform singleton an attribute returns names that attribute as its `via` (`Window.history` for `history`).",
|
|
517
|
+
"type": "string",
|
|
518
|
+
"minLength": 1
|
|
519
|
+
},
|
|
520
|
+
"descriptor": { "$ref": "#/$defs/descriptor" },
|
|
521
|
+
"assign": { "$ref": "#/$defs/assignKind" },
|
|
522
|
+
"surface": { "$ref": "#/$defs/surface" },
|
|
523
|
+
"catalogStatus": {
|
|
524
|
+
"description": "Set on a retained target (spec §4 Catalog versions): one upstream removed that the catalog keeps as it was last generated. Findings on it carry catalogStatus retained, which is information only.",
|
|
525
|
+
"const": "retained"
|
|
526
|
+
}
|
|
527
|
+
},
|
|
528
|
+
"dependentSchemas": {
|
|
529
|
+
"holds": { "properties": { "kind": { "enum": ["interface", "namespace", "function", "value"] } } }
|
|
530
|
+
},
|
|
531
|
+
"allOf": [{ "$ref": "#/$defs/attributeData" }]
|
|
532
|
+
},
|
|
533
|
+
"attributeData": {
|
|
534
|
+
"description": "A Web IDL attribute has an assign kind and an accessor descriptor, whose setter is present unless the assign kind is readonly. Nothing else has an assign kind.",
|
|
535
|
+
"type": "object",
|
|
536
|
+
"allOf": [
|
|
537
|
+
{
|
|
538
|
+
"if": { "properties": { "kind": { "const": "attribute" } } },
|
|
539
|
+
"then": {
|
|
540
|
+
"required": ["assign"],
|
|
541
|
+
"properties": {
|
|
542
|
+
"assign": true,
|
|
543
|
+
"descriptor": { "type": "object", "properties": { "type": { "const": "accessor" } } }
|
|
544
|
+
}
|
|
545
|
+
},
|
|
546
|
+
"else": { "not": { "required": ["assign"], "properties": { "assign": true } } }
|
|
547
|
+
},
|
|
548
|
+
{
|
|
549
|
+
"if": { "required": ["assign"], "properties": { "assign": { "const": "readonly" } } },
|
|
550
|
+
"then": { "properties": { "descriptor": { "type": "object", "properties": { "setter": { "const": false } } } } }
|
|
551
|
+
},
|
|
552
|
+
{
|
|
553
|
+
"if": { "required": ["assign"], "properties": { "assign": { "not": { "const": "readonly" } } } },
|
|
554
|
+
"then": { "properties": { "descriptor": { "type": "object", "properties": { "setter": { "const": true } } } } }
|
|
555
|
+
}
|
|
556
|
+
]
|
|
557
|
+
},
|
|
558
|
+
"assignKind": {
|
|
559
|
+
"description": "What assigning a Web IDL attribute does, which its runtime descriptor can't tell: runs its setter, forwards to another attribute ([PutForwards]), sets an event handler, replaces it with a data property ([Replaceable]), does nothing ([LegacyLenientSetter]), or does nothing because it is readonly.",
|
|
560
|
+
"enum": ["setter", "put-forwards", "event-handler", "replaceable", "lenient-setter", "readonly"]
|
|
561
|
+
},
|
|
562
|
+
"descriptor": {
|
|
563
|
+
"description": "The property's descriptor in the unmutated platform.",
|
|
564
|
+
"oneOf": [
|
|
565
|
+
{
|
|
566
|
+
"type": "object",
|
|
567
|
+
"required": ["type", "writable", "enumerable", "configurable"],
|
|
568
|
+
"additionalProperties": false,
|
|
569
|
+
"properties": {
|
|
570
|
+
"type": { "const": "data" },
|
|
571
|
+
"writable": { "type": "boolean" },
|
|
572
|
+
"enumerable": { "type": "boolean" },
|
|
573
|
+
"configurable": { "type": "boolean" }
|
|
574
|
+
}
|
|
575
|
+
},
|
|
576
|
+
{
|
|
577
|
+
"type": "object",
|
|
578
|
+
"required": ["type", "setter", "enumerable", "configurable"],
|
|
579
|
+
"additionalProperties": false,
|
|
580
|
+
"properties": {
|
|
581
|
+
"type": { "const": "accessor" },
|
|
582
|
+
"setter": { "description": "Whether the accessor has a setter.", "type": "boolean" },
|
|
583
|
+
"enumerable": { "type": "boolean" },
|
|
584
|
+
"configurable": { "type": "boolean" }
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
]
|
|
588
|
+
},
|
|
589
|
+
"esAddition": {
|
|
590
|
+
"type": "object",
|
|
591
|
+
"required": ["spec", "source", "namespaces", "properties"],
|
|
592
|
+
"additionalProperties": false,
|
|
593
|
+
"properties": {
|
|
594
|
+
"spec": { "description": "The spec that defines the addition.", "type": "string", "minLength": 1 },
|
|
595
|
+
"source": { "description": "Where the entry was curated from.", "type": "string", "minLength": 1 },
|
|
596
|
+
"namespaces": {
|
|
597
|
+
"description": "The objects the addition adds that are namespaces.",
|
|
598
|
+
"type": "array",
|
|
599
|
+
"items": { "type": "string", "minLength": 1 }
|
|
600
|
+
},
|
|
601
|
+
"properties": {
|
|
602
|
+
"description": "Its properties, as the clause titles of its spec. A single name is a property of the global object.",
|
|
603
|
+
"type": "array",
|
|
604
|
+
"items": { "type": "string", "minLength": 1 }
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
},
|
|
608
|
+
"engineExtension": {
|
|
609
|
+
"type": "object",
|
|
610
|
+
"required": ["engine", "source", "kind", "descriptor"],
|
|
611
|
+
"additionalProperties": false,
|
|
612
|
+
"properties": {
|
|
613
|
+
"engine": {
|
|
614
|
+
"description": "The engine that defines the property, credited on its targets as their spec: `v8`.",
|
|
615
|
+
"type": "string",
|
|
616
|
+
"minLength": 1
|
|
617
|
+
},
|
|
618
|
+
"source": { "description": "Where the entry was curated from.", "type": "string", "minLength": 1 },
|
|
619
|
+
"kind": { "enum": ["function", "value", "accessor"] },
|
|
620
|
+
"descriptor": { "$ref": "#/$defs/descriptor" }
|
|
621
|
+
}
|
|
622
|
+
},
|
|
623
|
+
"enginePrototype": {
|
|
624
|
+
"type": "object",
|
|
625
|
+
"required": ["engine", "source", "realms", "owner", "proto", "prototypeOf", "interfaceObject"],
|
|
626
|
+
"additionalProperties": false,
|
|
627
|
+
"properties": {
|
|
628
|
+
"engine": { "description": "The engine whose chain it follows: `blink`.", "type": "string", "minLength": 1 },
|
|
629
|
+
"source": { "description": "Where the entry was curated from.", "type": "string", "minLength": 1 },
|
|
630
|
+
"realms": {
|
|
631
|
+
"description": "The realms it is in.",
|
|
632
|
+
"type": "array",
|
|
633
|
+
"minItems": 1,
|
|
634
|
+
"items": { "enum": ["window", "dedicated-worker", "shared-worker", "service-worker"] }
|
|
635
|
+
},
|
|
636
|
+
"owner": { "description": "The interface it belongs to in the engine, the holder's owner: `HTMLDocument`.", "type": "string", "minLength": 1 },
|
|
637
|
+
"proto": { "description": "The holder it inherits from: `Document.prototype`.", "type": "string", "minLength": 1 },
|
|
638
|
+
"prototypeOf": {
|
|
639
|
+
"description": "The holders whose prototype it becomes: `document`.",
|
|
640
|
+
"type": "array",
|
|
641
|
+
"minItems": 1,
|
|
642
|
+
"items": { "type": "string", "minLength": 1 }
|
|
643
|
+
},
|
|
644
|
+
"interfaceObject": {
|
|
645
|
+
"description": "Its interface object, the constructor holder named by `owner` that the global target `<global>.<owner>` holds (`Window.HTMLDocument`).",
|
|
646
|
+
"type": "object",
|
|
647
|
+
"required": ["proto"],
|
|
648
|
+
"additionalProperties": false,
|
|
649
|
+
"properties": {
|
|
650
|
+
"proto": { "description": "The holder the interface object inherits from: `Document`.", "type": "string", "minLength": 1 }
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
},
|
|
655
|
+
"esProseProperty": {
|
|
656
|
+
"type": "object",
|
|
657
|
+
"required": ["source", "kind", "descriptor"],
|
|
658
|
+
"additionalProperties": false,
|
|
659
|
+
"properties": {
|
|
660
|
+
"source": { "description": "Where ECMA-262 defines the property: the clause, and what its prose says.", "type": "string", "minLength": 1 },
|
|
661
|
+
"kind": { "enum": ["function", "value", "accessor"] },
|
|
662
|
+
"descriptor": { "$ref": "#/$defs/descriptor" }
|
|
663
|
+
}
|
|
664
|
+
},
|
|
665
|
+
"proseMember": {
|
|
666
|
+
"type": "object",
|
|
667
|
+
"required": ["spec", "source", "kind", "descriptor"],
|
|
668
|
+
"additionalProperties": false,
|
|
669
|
+
"properties": {
|
|
670
|
+
"spec": { "description": "The spec whose prose defines the member, credited on it: `html`.", "type": "string", "minLength": 1 },
|
|
671
|
+
"source": { "description": "Where the entry was curated from: the spec's section, and what its prose says.", "type": "string", "minLength": 1 },
|
|
672
|
+
"kind": { "enum": ["function", "value", "accessor"] },
|
|
673
|
+
"descriptor": { "$ref": "#/$defs/descriptor" }
|
|
674
|
+
}
|
|
675
|
+
},
|
|
676
|
+
"instanceMember": {
|
|
677
|
+
"type": "object",
|
|
678
|
+
"required": ["owner", "member", "kind", "spec", "descriptor", "surface"],
|
|
679
|
+
"additionalProperties": false,
|
|
680
|
+
"properties": {
|
|
681
|
+
"owner": { "description": "The interface whose instances own the member.", "type": "string", "minLength": 1 },
|
|
682
|
+
"member": { "description": "The property key.", "type": "string", "minLength": 1 },
|
|
683
|
+
"kind": {
|
|
684
|
+
"description": "[LegacyUnforgeable] applies only to regular operations and attributes. A member a spec defines in prose on each instance (proseMembers) is a function, a value or an accessor, as an ECMAScript property is.",
|
|
685
|
+
"enum": ["operation", "attribute", "function", "value", "accessor"]
|
|
686
|
+
},
|
|
687
|
+
"spec": {
|
|
688
|
+
"description": "The shortname of the spec whose IDL declares the member, or whose prose defines it.",
|
|
689
|
+
"type": "string",
|
|
690
|
+
"minLength": 1
|
|
691
|
+
},
|
|
692
|
+
"mixin": { "$ref": "#/$defs/mixin" },
|
|
693
|
+
"descriptor": { "$ref": "#/$defs/descriptor" },
|
|
694
|
+
"assign": { "$ref": "#/$defs/assignKind" },
|
|
695
|
+
"surface": { "$ref": "#/$defs/surface" }
|
|
696
|
+
},
|
|
697
|
+
"allOf": [{ "$ref": "#/$defs/attributeData" }]
|
|
698
|
+
},
|
|
699
|
+
"holder": {
|
|
700
|
+
"type": "object",
|
|
701
|
+
"required": ["kind", "owner", "proto"],
|
|
702
|
+
"additionalProperties": false,
|
|
703
|
+
"properties": {
|
|
704
|
+
"kind": { "$ref": "#/$defs/holderKind" },
|
|
705
|
+
"owner": {
|
|
706
|
+
"description": "The interface, namespace or intrinsic the holder belongs to. For Web IDL, its IDL identifier: `Memory` for `WebAssembly.Memory.prototype`. For ECMAScript, the intrinsic's path: `Array` for `Array.prototype`.",
|
|
707
|
+
"type": "string",
|
|
708
|
+
"minLength": 1
|
|
709
|
+
},
|
|
710
|
+
"proto": {
|
|
711
|
+
"description": "The next holder on the prototype chain, in the same realm; null where the chain ends, at `Object.prototype`. Web IDL chains end in the ECMAScript intrinsics: `EventTarget.prototype` → `Object.prototype`, and `console` → `console.[[Prototype]]` → `Object.prototype`.",
|
|
712
|
+
"type": ["string", "null"],
|
|
713
|
+
"minLength": 1
|
|
714
|
+
},
|
|
715
|
+
"immutablePrototype": {
|
|
716
|
+
"description": "Present when the holder is an immutable prototype exotic object, whose prototype cannot change.",
|
|
717
|
+
"const": true
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
},
|
|
721
|
+
"holderKind": {
|
|
722
|
+
"description": "The kind of object a target lives on.",
|
|
723
|
+
"enum": ["global", "constructor", "prototype", "instance", "namespace"]
|
|
724
|
+
},
|
|
725
|
+
"memberKind": {
|
|
726
|
+
"description": "A Web IDL operation, attribute or constant; the property of a global or namespace that holds an interface object (`interface`) or a namespace object (`namespace`), whether Web IDL or ECMAScript defines it; or another ECMAScript intrinsic's property, which holds a built-in `function`, another `value`, or is an `accessor`.",
|
|
727
|
+
"enum": ["operation", "attribute", "constant", "interface", "namespace", "function", "value", "accessor"]
|
|
728
|
+
},
|
|
729
|
+
"mixin": {
|
|
730
|
+
"description": "The interface mixin the member reached its owner through.",
|
|
731
|
+
"type": "string",
|
|
732
|
+
"minLength": 1
|
|
733
|
+
},
|
|
734
|
+
"surface": {
|
|
735
|
+
"description": "A member's functional category (spec §12): other is the surface of an owner nobody has reviewed yet.",
|
|
736
|
+
"enum": [
|
|
737
|
+
"networking",
|
|
738
|
+
"events",
|
|
739
|
+
"scheduling",
|
|
740
|
+
"navigation",
|
|
741
|
+
"storage",
|
|
742
|
+
"crypto",
|
|
743
|
+
"DOM",
|
|
744
|
+
"ECMAScript",
|
|
745
|
+
"diagnostics",
|
|
746
|
+
"workers",
|
|
747
|
+
"other"
|
|
748
|
+
]
|
|
749
|
+
},
|
|
750
|
+
"reviewedSurface": {
|
|
751
|
+
"description": "A surface someone has reviewed: any but other.",
|
|
752
|
+
"allOf": [{ "$ref": "#/$defs/surface" }, { "not": { "const": "other" } }]
|
|
753
|
+
},
|
|
754
|
+
"protectedEntry": {
|
|
755
|
+
"description": "An entry of the protected-surface list: a whole interface or namespace without a member, or a member entry.",
|
|
756
|
+
"type": "object",
|
|
757
|
+
"required": ["interface", "targets"],
|
|
758
|
+
"dependentRequired": { "workerEquivalent": ["member"] },
|
|
759
|
+
"additionalProperties": false,
|
|
760
|
+
"properties": {
|
|
761
|
+
"interface": {
|
|
762
|
+
"description": "An interface, namespace or intrinsic; for a member entry, also an interface mixin.",
|
|
763
|
+
"type": "string",
|
|
764
|
+
"minLength": 1
|
|
765
|
+
},
|
|
766
|
+
"member": { "type": "string", "minLength": 1 },
|
|
767
|
+
"workerEquivalent": {
|
|
768
|
+
"description": "For a member entry, the interface that declares the member's worker-realm equivalent (spec §12 Matching): the entry also names that interface's member of the same name in each worker realm.",
|
|
769
|
+
"type": "string",
|
|
770
|
+
"minLength": 1
|
|
771
|
+
},
|
|
772
|
+
"targets": {
|
|
773
|
+
"description": "The catalog targets the entry names, per realm, by name. A whole entry names the properties holding its interface or namespace object and its static, prototype and namespace members, but no event-handler attribute. Shadowing writes and the other forms a scan matches are no catalog targets.",
|
|
774
|
+
"type": "object",
|
|
775
|
+
"required": ["window", "dedicated-worker", "shared-worker", "service-worker"],
|
|
776
|
+
"additionalProperties": false,
|
|
777
|
+
"properties": {
|
|
778
|
+
"window": { "$ref": "#/$defs/targetNames" },
|
|
779
|
+
"dedicated-worker": { "$ref": "#/$defs/targetNames" },
|
|
780
|
+
"shared-worker": { "$ref": "#/$defs/targetNames" },
|
|
781
|
+
"service-worker": { "$ref": "#/$defs/targetNames" }
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
}
|