sheetom 0.1.0-rc.1 → 0.1.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -3
- package/compatibility/baselines/0.1.0-rc.2.json +142 -0
- package/compatibility/baselines/0.1.0-rc.3.json +2541 -0
- package/compatibility/schemas/compatibility-report.schema.json +62 -4
- package/compatibility/schemas/value-capability-corpus.schema.json +52 -0
- package/compatibility/value-capabilities.json +19 -0
- package/dist/index.cjs +778 -44
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -2
- package/dist/index.d.ts +6 -2
- package/dist/index.js +778 -44
- package/dist/index.js.map +1 -1
- package/docs/api.md +10 -1
- package/docs/releasing.md +44 -58
- package/package.json +7 -5
package/README.md
CHANGED
|
@@ -96,7 +96,16 @@ block remote resources, or make valid hostile CSS safe to render.
|
|
|
96
96
|
|
|
97
97
|
Invalid `setProperty` values and priorities are atomic no-ops, matching browser
|
|
98
98
|
behavior. Opt into mutation diagnostics with `{ diagnostics: true }` and drain
|
|
99
|
-
them using `takeDiagnostics()`.
|
|
99
|
+
them using `takeDiagnostics()`. `SheetOMDiagnostic.code` is a stable string
|
|
100
|
+
union. Diagnostics retain the complete rejected input until drained; when
|
|
101
|
+
processing untrusted or very large input, callers should leave diagnostics off
|
|
102
|
+
or drain them promptly to bound memory use.
|
|
103
|
+
|
|
104
|
+
Static shorthands are owned as canonical longhand records. Updating or removing
|
|
105
|
+
one longhand can therefore never reactivate an older shorthand value. Shorthand
|
|
106
|
+
getters and `cssText` are synthesized only while the complete current longhand
|
|
107
|
+
set has compatible values and priorities; genuinely deferred substitutions
|
|
108
|
+
retain separate provenance until a longhand mutation breaks their group.
|
|
100
109
|
|
|
101
110
|
## API scope
|
|
102
111
|
|
|
@@ -118,6 +127,11 @@ Operation Fixtures execute through SheetOM and native browser adapters;
|
|
|
118
127
|
applicable WPT subtests retain their pinned source path, title, and blob SHA.
|
|
119
128
|
Every release ships its machine-readable Compatibility Report.
|
|
120
129
|
|
|
130
|
+
Modern or implementation-dependent value grammar is bounded by the checked-in
|
|
131
|
+
[`Value Capability Corpus`](./compatibility/value-capabilities.json). Each
|
|
132
|
+
measured family includes accepted and rejected neighboring cases; browser
|
|
133
|
+
probing occurs only during conformance work and never at runtime.
|
|
134
|
+
|
|
121
135
|
See [the behavioral API reference](./docs/api.md) for return, exception,
|
|
122
136
|
identity, and detachment contracts. Maintainers use the separately reviewed
|
|
123
137
|
[release procedure](./docs/releasing.md); Changesets never publishes by itself.
|
|
@@ -153,8 +167,13 @@ npm run pack:test
|
|
|
153
167
|
|
|
154
168
|
`npm test` runs unit, deterministic fuzz, and local Chromium projects. Use
|
|
155
169
|
`npm run test:browser:matrix` on a machine with all Playwright dependencies to
|
|
156
|
-
run Chromium, Firefox, and WebKit.
|
|
157
|
-
|
|
170
|
+
run Chromium, Firefox, and WebKit. The browser matrix also runs a deterministic,
|
|
171
|
+
grammar-oriented declaration differential; any minimized mismatch must become
|
|
172
|
+
an immutable Operation Fixture with an explicit Compatibility Resolution.
|
|
173
|
+
`npm run docs:build` generates the TypeDoc reference under `site/api`. The benchmark gates both a 10,000-rule stress case
|
|
174
|
+
and a publisher-shaped reference workload with one shared stylesheet, 20 page
|
|
175
|
+
stylesheets, nested layers/media, distributed mutations, and two idempotent
|
|
176
|
+
serialization passes.
|
|
158
177
|
|
|
159
178
|
Only the latest published `0.x` minor and its active prereleases receive fixes
|
|
160
179
|
before 1.0. During `0.x`, observable compatibility corrections and interface
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../schemas/compatibility-report.schema.json",
|
|
3
|
+
"schemaVersion": 2,
|
|
4
|
+
"packageVersion": "0.1.0-rc.2",
|
|
5
|
+
"baseline": {
|
|
6
|
+
"wptCommit": "54f8f933629e7c010ae98a246729af01f8abcda5",
|
|
7
|
+
"syntaxEngineSet": {
|
|
8
|
+
"lightningcss": "1.33.0",
|
|
9
|
+
"cssTree": "3.2.1",
|
|
10
|
+
"cssstyle": "6.2.0",
|
|
11
|
+
"cssTokenizer": "4.0.0"
|
|
12
|
+
},
|
|
13
|
+
"runtimes": {
|
|
14
|
+
"node": "v24.18.0",
|
|
15
|
+
"bun": "1.3.1",
|
|
16
|
+
"deno": "2.9.5"
|
|
17
|
+
},
|
|
18
|
+
"browsers": {
|
|
19
|
+
"chromium": "151.0.7922.34 (revision 1234)",
|
|
20
|
+
"firefox": "153.0 (revision 1538)",
|
|
21
|
+
"webkit": "26.5 (revision 2336)"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"summary": {
|
|
25
|
+
"passed": 6,
|
|
26
|
+
"divergences": 7,
|
|
27
|
+
"excluded": 0,
|
|
28
|
+
"unexplained": 0
|
|
29
|
+
},
|
|
30
|
+
"evidence": {
|
|
31
|
+
"operationFixtures": {
|
|
32
|
+
"passed": 13,
|
|
33
|
+
"total": 13,
|
|
34
|
+
"sha256": "7909f90571b8d6595d18b006bb4f2c5337cca9d413084558e913e760be45a3aa",
|
|
35
|
+
"adapters": [
|
|
36
|
+
{
|
|
37
|
+
"adapter": "sheetom",
|
|
38
|
+
"passed": 13,
|
|
39
|
+
"total": 13
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"adapter": "chromium",
|
|
43
|
+
"passed": 13,
|
|
44
|
+
"total": 13
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"adapter": "firefox",
|
|
48
|
+
"passed": 13,
|
|
49
|
+
"total": 13
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"adapter": "webkit",
|
|
53
|
+
"passed": 13,
|
|
54
|
+
"total": 13
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
"nativeWpt": [
|
|
59
|
+
{
|
|
60
|
+
"engine": "chrome",
|
|
61
|
+
"version": "150.0.7871.128",
|
|
62
|
+
"sha256": "3f66a5f324bb9023cdd4b168e780640700449f22f28ca378eca91504b7d68e3f",
|
|
63
|
+
"passed": 4,
|
|
64
|
+
"total": 4
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"engine": "firefox",
|
|
68
|
+
"version": "153.0.3",
|
|
69
|
+
"sha256": "e5f88e3431f602dc29fd8dbd79667bef33930ee7f87ee6d2069f17126421a230",
|
|
70
|
+
"passed": 4,
|
|
71
|
+
"total": 4
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
"resolutions": [
|
|
76
|
+
{
|
|
77
|
+
"fixtureId": "declarations.basic-set-property",
|
|
78
|
+
"decision": "shared",
|
|
79
|
+
"rationale": "The observable declaration state is shared by the pinned browser engines."
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"fixtureId": "declarations.malformed-padding",
|
|
83
|
+
"decision": "chromium-fallback",
|
|
84
|
+
"rationale": "CSS Syntax accepts the EOF-recovered value; Chromium preserves the unclosed observable spelling while Firefox materializes closing parentheses."
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"fixtureId": "declarations.modern-color-canonicalization",
|
|
88
|
+
"decision": "shared",
|
|
89
|
+
"rationale": "The pinned browser engines expose modern rgb syntax through the shared legacy rgba serialization in CSSStyleDeclaration."
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"fixtureId": "declarations.typed-eof-recovery",
|
|
93
|
+
"decision": "chromium-fallback",
|
|
94
|
+
"rationale": "Typed property values expose the Chromium/WebKit canonical serialization after CSS Syntax EOF recovery; Firefox retains quotes around the recovered font-family string."
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"fixtureId": "declarations.quoted-font-family",
|
|
98
|
+
"decision": "chromium-fallback",
|
|
99
|
+
"rationale": "Chromium and WebKit remove unnecessary quotes around a simple font-family while Firefox retains them; SheetOM follows the measured Chromium fallback."
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"fixtureId": "declarations.custom-property-eof-recovery",
|
|
103
|
+
"decision": "chromium-fallback",
|
|
104
|
+
"rationale": "Chromium retains unclosed custom-property token structures, removes EOF comments, and replaces an escaped EOF with U+FFFD."
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"fixtureId": "declarations.custom-property-priority-replacement",
|
|
108
|
+
"decision": "chromium-fallback",
|
|
109
|
+
"rationale": "Chromium and Firefox replace the existing custom-property priority when setProperty is called without a priority, while WebKit retains !important; SheetOM follows the measured Chromium fallback."
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"fixtureId": "declarations.pending-substitution-eof-recovery",
|
|
113
|
+
"decision": "chromium-fallback",
|
|
114
|
+
"rationale": "Chromium retains the unclosed pending-substitution spelling while applying lexical EOF recovery such as comment removal."
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"fixtureId": "declarations.setproperty-null-undefined",
|
|
118
|
+
"decision": "shared",
|
|
119
|
+
"rationale": "The four adapted WPT subtests define the shared null and undefined conversion behavior."
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"fixtureId": "declarations.required-arguments",
|
|
123
|
+
"decision": "shared",
|
|
124
|
+
"rationale": "Required WebIDL arguments throw TypeError before string conversion in the pinned browser engines."
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"fixtureId": "declarations.set-property-multiple-declarations",
|
|
128
|
+
"decision": "shared",
|
|
129
|
+
"rationale": "A setProperty value is parsed independently and cannot escape into another declaration; invalid input leaves the previous declaration unchanged."
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"fixtureId": "declarations.escaped-custom-property-name",
|
|
133
|
+
"decision": "shared",
|
|
134
|
+
"rationale": "Custom-property method arguments retain their logical names and cssText escapes those names only when serializing CSS syntax."
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"fixtureId": "integration.weweb-authoring-tree",
|
|
138
|
+
"decision": "chromium-fallback",
|
|
139
|
+
"rationale": "The standard rule-tree operations and detachment identity are shared; the recovered padding spelling follows the existing Chromium fallback resolution."
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
}
|