@jomae/catalog 0.3.0 → 0.6.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/README.md +21 -3
- package/dist/baseline.d.ts +36 -0
- package/dist/baseline.d.ts.map +1 -1
- package/dist/baseline.js +75 -2
- package/dist/baseline.js.map +1 -1
- package/dist/categories.d.ts +20 -0
- package/dist/categories.d.ts.map +1 -0
- package/dist/categories.js +62 -0
- package/dist/categories.js.map +1 -0
- package/dist/detect.d.ts +2 -1
- package/dist/detect.d.ts.map +1 -1
- package/dist/detect.js +17 -2
- package/dist/detect.js.map +1 -1
- package/dist/format.js +1 -1
- package/dist/format.js.map +1 -1
- package/dist/generated/baseline-history.d.ts +21 -0
- package/dist/generated/baseline-history.d.ts.map +1 -0
- package/dist/generated/baseline-history.js +20 -0
- package/dist/generated/baseline-history.js.map +1 -0
- package/dist/generated/baseline.d.ts +16 -0
- package/dist/generated/baseline.d.ts.map +1 -1
- package/dist/generated/baseline.js +683 -44
- package/dist/generated/baseline.js.map +1 -1
- package/dist/generated/guides.d.ts +16 -0
- package/dist/generated/guides.d.ts.map +1 -0
- package/dist/generated/guides.js +153 -0
- package/dist/generated/guides.js.map +1 -0
- package/dist/generated/sizes.d.ts.map +1 -1
- package/dist/generated/sizes.js +683 -48
- package/dist/generated/sizes.js.map +1 -1
- package/dist/generated/support-claims.d.ts +15 -0
- package/dist/generated/support-claims.d.ts.map +1 -0
- package/dist/generated/support-claims.js +69 -0
- package/dist/generated/support-claims.js.map +1 -0
- package/dist/guides.d.ts +46 -0
- package/dist/guides.d.ts.map +1 -0
- package/dist/guides.js +55 -0
- package/dist/guides.js.map +1 -0
- package/dist/history.d.ts +11 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +14 -0
- package/dist/history.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/rules/abort-controller.d.ts +3 -0
- package/dist/rules/abort-controller.d.ts.map +1 -0
- package/dist/rules/abort-controller.js +26 -0
- package/dist/rules/abort-controller.js.map +1 -0
- package/dist/rules/accordion.d.ts.map +1 -1
- package/dist/rules/accordion.js +3 -0
- package/dist/rules/accordion.js.map +1 -1
- package/dist/rules/array-grouping.d.ts +3 -0
- package/dist/rules/array-grouping.d.ts.map +1 -0
- package/dist/rules/array-grouping.js +29 -0
- package/dist/rules/array-grouping.js.map +1 -0
- package/dist/rules/aspect-ratio.d.ts.map +1 -1
- package/dist/rules/aspect-ratio.js +1 -0
- package/dist/rules/aspect-ratio.js.map +1 -1
- package/dist/rules/base64.d.ts +3 -0
- package/dist/rules/base64.d.ts.map +1 -0
- package/dist/rules/base64.js +41 -0
- package/dist/rules/base64.js.map +1 -0
- package/dist/rules/broadcast-channel.d.ts +3 -0
- package/dist/rules/broadcast-channel.d.ts.map +1 -0
- package/dist/rules/broadcast-channel.js +26 -0
- package/dist/rules/broadcast-channel.js.map +1 -0
- package/dist/rules/carousel.d.ts.map +1 -1
- package/dist/rules/carousel.js +10 -0
- package/dist/rules/carousel.js.map +1 -1
- package/dist/rules/clipboard.d.ts +3 -0
- package/dist/rules/clipboard.d.ts.map +1 -0
- package/dist/rules/clipboard.js +35 -0
- package/dist/rules/clipboard.js.map +1 -0
- package/dist/rules/color-functions.d.ts.map +1 -1
- package/dist/rules/color-functions.js +9 -1
- package/dist/rules/color-functions.js.map +1 -1
- package/dist/rules/compression-streams.d.ts +3 -0
- package/dist/rules/compression-streams.d.ts.map +1 -0
- package/dist/rules/compression-streams.js +26 -0
- package/dist/rules/compression-streams.js.map +1 -0
- package/dist/rules/container-queries.d.ts.map +1 -1
- package/dist/rules/container-queries.js +3 -0
- package/dist/rules/container-queries.js.map +1 -1
- package/dist/rules/content-visibility.d.ts.map +1 -1
- package/dist/rules/content-visibility.js +11 -2
- package/dist/rules/content-visibility.js.map +1 -1
- package/dist/rules/custom-highlight.d.ts +3 -0
- package/dist/rules/custom-highlight.d.ts.map +1 -0
- package/dist/rules/custom-highlight.js +39 -0
- package/dist/rules/custom-highlight.js.map +1 -0
- package/dist/rules/date-time-input.d.ts.map +1 -1
- package/dist/rules/date-time-input.js +4 -0
- package/dist/rules/date-time-input.js.map +1 -1
- package/dist/rules/dialog.d.ts.map +1 -1
- package/dist/rules/dialog.js +11 -0
- package/dist/rules/dialog.js.map +1 -1
- package/dist/rules/discrete-transitions.d.ts.map +1 -1
- package/dist/rules/discrete-transitions.js +6 -0
- package/dist/rules/discrete-transitions.js.map +1 -1
- package/dist/rules/drag-and-drop.d.ts +3 -0
- package/dist/rules/drag-and-drop.d.ts.map +1 -0
- package/dist/rules/drag-and-drop.js +47 -0
- package/dist/rules/drag-and-drop.js.map +1 -0
- package/dist/rules/duration-format.d.ts +3 -0
- package/dist/rules/duration-format.d.ts.map +1 -0
- package/dist/rules/duration-format.js +37 -0
- package/dist/rules/duration-format.js.map +1 -0
- package/dist/rules/event-target.d.ts +3 -0
- package/dist/rules/event-target.d.ts.map +1 -0
- package/dist/rules/event-target.js +51 -0
- package/dist/rules/event-target.js.map +1 -0
- package/dist/rules/fetch.d.ts +3 -0
- package/dist/rules/fetch.d.ts.map +1 -0
- package/dist/rules/fetch.js +46 -0
- package/dist/rules/fetch.js.map +1 -0
- package/dist/rules/field-sizing.d.ts.map +1 -1
- package/dist/rules/field-sizing.js +10 -2
- package/dist/rules/field-sizing.js.map +1 -1
- package/dist/rules/fluid-type.d.ts.map +1 -1
- package/dist/rules/fluid-type.js +3 -1
- package/dist/rules/fluid-type.js.map +1 -1
- package/dist/rules/focus-visible.d.ts +3 -0
- package/dist/rules/focus-visible.d.ts.map +1 -0
- package/dist/rules/focus-visible.js +27 -0
- package/dist/rules/focus-visible.js.map +1 -0
- package/dist/rules/fullscreen.d.ts +3 -0
- package/dist/rules/fullscreen.d.ts.map +1 -0
- package/dist/rules/fullscreen.js +29 -0
- package/dist/rules/fullscreen.js.map +1 -0
- package/dist/rules/height-animation.d.ts.map +1 -1
- package/dist/rules/height-animation.js +2 -0
- package/dist/rules/height-animation.js.map +1 -1
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js +102 -3
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/inert.d.ts +3 -0
- package/dist/rules/inert.d.ts.map +1 -0
- package/dist/rules/inert.js +37 -0
- package/dist/rules/inert.js.map +1 -0
- package/dist/rules/intersection-observer.d.ts +3 -0
- package/dist/rules/intersection-observer.d.ts.map +1 -0
- package/dist/rules/intersection-observer.js +36 -0
- package/dist/rules/intersection-observer.js.map +1 -0
- package/dist/rules/lazy-loading.d.ts.map +1 -1
- package/dist/rules/lazy-loading.js +4 -0
- package/dist/rules/lazy-loading.js.map +1 -1
- package/dist/rules/line-clamp.d.ts +3 -0
- package/dist/rules/line-clamp.d.ts.map +1 -0
- package/dist/rules/line-clamp.js +39 -0
- package/dist/rules/line-clamp.js.map +1 -0
- package/dist/rules/masonry.d.ts.map +1 -1
- package/dist/rules/masonry.js +3 -0
- package/dist/rules/masonry.js.map +1 -1
- package/dist/rules/natural-sort.d.ts +3 -0
- package/dist/rules/natural-sort.d.ts.map +1 -0
- package/dist/rules/natural-sort.js +41 -0
- package/dist/rules/natural-sort.js.map +1 -0
- package/dist/rules/number-format.d.ts +3 -0
- package/dist/rules/number-format.d.ts.map +1 -0
- package/dist/rules/number-format.js +27 -0
- package/dist/rules/number-format.js.map +1 -0
- package/dist/rules/page-visibility.d.ts +3 -0
- package/dist/rules/page-visibility.d.ts.map +1 -0
- package/dist/rules/page-visibility.js +29 -0
- package/dist/rules/page-visibility.js.map +1 -0
- package/dist/rules/popover.d.ts.map +1 -1
- package/dist/rules/popover.js +10 -1
- package/dist/rules/popover.js.map +1 -1
- package/dist/rules/random-uuid.d.ts +3 -0
- package/dist/rules/random-uuid.d.ts.map +1 -0
- package/dist/rules/random-uuid.js +31 -0
- package/dist/rules/random-uuid.js.map +1 -0
- package/dist/rules/relative-time.d.ts +3 -0
- package/dist/rules/relative-time.d.ts.map +1 -0
- package/dist/rules/relative-time.js +24 -0
- package/dist/rules/relative-time.js.map +1 -0
- package/dist/rules/resizable-panels.d.ts.map +1 -1
- package/dist/rules/resizable-panels.js +4 -2
- package/dist/rules/resizable-panels.js.map +1 -1
- package/dist/rules/resize-observer.d.ts +3 -0
- package/dist/rules/resize-observer.d.ts.map +1 -0
- package/dist/rules/resize-observer.js +28 -0
- package/dist/rules/resize-observer.js.map +1 -0
- package/dist/rules/screen-wake-lock.d.ts +3 -0
- package/dist/rules/screen-wake-lock.d.ts.map +1 -0
- package/dist/rules/screen-wake-lock.js +25 -0
- package/dist/rules/screen-wake-lock.js.map +1 -0
- package/dist/rules/scroll-animations.d.ts.map +1 -1
- package/dist/rules/scroll-animations.js +9 -1
- package/dist/rules/scroll-animations.js.map +1 -1
- package/dist/rules/scroll-lock.d.ts.map +1 -1
- package/dist/rules/scroll-lock.js +8 -7
- package/dist/rules/scroll-lock.js.map +1 -1
- package/dist/rules/scrollbars.d.ts.map +1 -1
- package/dist/rules/scrollbars.js +8 -0
- package/dist/rules/scrollbars.js.map +1 -1
- package/dist/rules/select.d.ts.map +1 -1
- package/dist/rules/select.js +17 -1
- package/dist/rules/select.js.map +1 -1
- package/dist/rules/server-sent-events.d.ts +3 -0
- package/dist/rules/server-sent-events.d.ts.map +1 -0
- package/dist/rules/server-sent-events.js +38 -0
- package/dist/rules/server-sent-events.js.map +1 -0
- package/dist/rules/smooth-scroll.d.ts.map +1 -1
- package/dist/rules/smooth-scroll.js +3 -0
- package/dist/rules/smooth-scroll.js.map +1 -1
- package/dist/rules/speech-recognition.d.ts +3 -0
- package/dist/rules/speech-recognition.d.ts.map +1 -0
- package/dist/rules/speech-recognition.js +36 -0
- package/dist/rules/speech-recognition.js.map +1 -0
- package/dist/rules/speech-synthesis.d.ts +3 -0
- package/dist/rules/speech-synthesis.d.ts.map +1 -0
- package/dist/rules/speech-synthesis.js +25 -0
- package/dist/rules/speech-synthesis.js.map +1 -0
- package/dist/rules/sticky.d.ts.map +1 -1
- package/dist/rules/sticky.js +4 -0
- package/dist/rules/sticky.js.map +1 -1
- package/dist/rules/structured-clone.d.ts +3 -0
- package/dist/rules/structured-clone.d.ts.map +1 -0
- package/dist/rules/structured-clone.js +32 -0
- package/dist/rules/structured-clone.js.map +1 -0
- package/dist/rules/text-box-trim.d.ts.map +1 -1
- package/dist/rules/text-box-trim.js +3 -1
- package/dist/rules/text-box-trim.js.map +1 -1
- package/dist/rules/text-wrap-balance.d.ts.map +1 -1
- package/dist/rules/text-wrap-balance.js +2 -0
- package/dist/rules/text-wrap-balance.js.map +1 -1
- package/dist/rules/url-search-params.d.ts +3 -0
- package/dist/rules/url-search-params.d.ts.map +1 -0
- package/dist/rules/url-search-params.js +42 -0
- package/dist/rules/url-search-params.js.map +1 -0
- package/dist/rules/view-transitions.d.ts.map +1 -1
- package/dist/rules/view-transitions.js +9 -0
- package/dist/rules/view-transitions.js.map +1 -1
- package/dist/rules/web-bluetooth.d.ts +3 -0
- package/dist/rules/web-bluetooth.d.ts.map +1 -0
- package/dist/rules/web-bluetooth.js +26 -0
- package/dist/rules/web-bluetooth.js.map +1 -0
- package/dist/rules/web-crypto.d.ts +3 -0
- package/dist/rules/web-crypto.d.ts.map +1 -0
- package/dist/rules/web-crypto.js +32 -0
- package/dist/rules/web-crypto.js.map +1 -0
- package/dist/rules/web-share.d.ts +3 -0
- package/dist/rules/web-share.d.ts.map +1 -0
- package/dist/rules/web-share.js +28 -0
- package/dist/rules/web-share.js.map +1 -0
- package/dist/schema.d.ts +22 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +64 -5
- package/dist/schema.js.map +1 -1
- package/dist/support.d.ts +11 -0
- package/dist/support.d.ts.map +1 -0
- package/dist/support.js +31 -0
- package/dist/support.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @jomae/catalog
|
|
2
2
|
|
|
3
3
|
The rule catalog behind [youmightnotneed](https://youmightnotneed-web.vercel.app).
|
|
4
|
-
Maps npm packages to the
|
|
4
|
+
Maps npm packages to the CSS, HTML, or Web API that replaces them.
|
|
5
5
|
|
|
6
6
|
```
|
|
7
7
|
npm install @jomae/catalog
|
|
@@ -36,8 +36,26 @@ const findings = detect(packageJson); // Finding[]
|
|
|
36
36
|
const summary = summarize(findings);
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
`dependencies`, `devDependencies
|
|
40
|
-
ranges are ignored.
|
|
39
|
+
`dependencies`, `devDependencies`, `peerDependencies` and
|
|
40
|
+
`optionalDependencies` are all read. Version ranges are ignored.
|
|
41
|
+
|
|
42
|
+
## Guides
|
|
43
|
+
|
|
44
|
+
A rule may carry `guides`: IDs of
|
|
45
|
+
[modern-web-guidance](https://github.com/GoogleChrome/modern-web-guidance)
|
|
46
|
+
guides, Apache-2.0, that cover the implementation this catalog leaves out.
|
|
47
|
+
`resolveGuides(rule)` turns them into a category, a URL and the command that
|
|
48
|
+
pulls one into an agent's context. Only IDs are stored, and they are checked
|
|
49
|
+
against a committed snapshot, so a guide renamed upstream fails a test rather
|
|
50
|
+
than shipping as a dead link.
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
import { resolveGuides } from "@jomae/catalog";
|
|
54
|
+
|
|
55
|
+
for (const guide of resolveGuides(rule)) {
|
|
56
|
+
console.log(guide.url, guide.command);
|
|
57
|
+
}
|
|
58
|
+
```
|
|
41
59
|
|
|
42
60
|
## Every finding carries its caveats
|
|
43
61
|
|
package/dist/baseline.d.ts
CHANGED
|
@@ -11,6 +11,20 @@ export interface ResolvedFeature {
|
|
|
11
11
|
/** Date the feature reached its current status, when known. */
|
|
12
12
|
since: string | null;
|
|
13
13
|
spec: string | null;
|
|
14
|
+
/** Minimum version each tracked browser needs. Null means no data (commonly: never shipped there). */
|
|
15
|
+
support: Record<string, string | null>;
|
|
16
|
+
/**
|
|
17
|
+
* Set only when web-features publishes no aggregate support for the feature,
|
|
18
|
+
* which happens when one small part of it has not shipped anywhere. `key` is
|
|
19
|
+
* the compat key standing in for the feature and `support` is that key's own
|
|
20
|
+
* versions. It describes a part, so never show it without naming the part:
|
|
21
|
+
* an empty `support` above plus this filled in means "the feature as a whole
|
|
22
|
+
* has no published versions, but this piece of it has these".
|
|
23
|
+
*/
|
|
24
|
+
partialSupport: {
|
|
25
|
+
key: string;
|
|
26
|
+
support: Record<string, string | null>;
|
|
27
|
+
} | null;
|
|
14
28
|
}
|
|
15
29
|
export interface BaselineInfo {
|
|
16
30
|
/** The rule's overall status: the least-supported required feature. */
|
|
@@ -42,6 +56,28 @@ export declare const WEB_FEATURES_VERSION: string;
|
|
|
42
56
|
* `unknown`, which is where this is meant to be caught.
|
|
43
57
|
*/
|
|
44
58
|
export declare function resolveFeature(id: string): ResolvedFeature;
|
|
59
|
+
/** Browsers the catalog tracks support for, in display order. */
|
|
60
|
+
export declare const TRACKED_BROWSERS: readonly ["chrome", "edge", "firefox", "safari"];
|
|
61
|
+
export type TrackedBrowser = (typeof TRACKED_BROWSERS)[number];
|
|
62
|
+
/**
|
|
63
|
+
* Combines support across every feature a rule needs. A rule only works in a
|
|
64
|
+
* browser once every required feature does, so each browser's version is the
|
|
65
|
+
* highest (latest) minimum any single feature demands.
|
|
66
|
+
*/
|
|
67
|
+
export declare function combinedSupport(features: readonly ResolvedFeature[]): Record<TrackedBrowser, string | null>;
|
|
68
|
+
/**
|
|
69
|
+
* True when a support map names no version for any tracked browser. That is
|
|
70
|
+
* two different situations wearing the same face: the feature shipped nowhere,
|
|
71
|
+
* or web-features publishes no aggregate for it. A caller that renders one row
|
|
72
|
+
* per browser has to tell them apart, or a dash reads as "nobody has this".
|
|
73
|
+
*/
|
|
74
|
+
export declare function hasNoVersions(support: Record<string, string | null>): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* The features whose versions are missing because web-features publishes no
|
|
77
|
+
* aggregate, each with the part standing in for it. Empty for the usual case
|
|
78
|
+
* where every feature has a real support row.
|
|
79
|
+
*/
|
|
80
|
+
export declare function unpublishedSupport(features: readonly ResolvedFeature[]): ResolvedFeature[];
|
|
45
81
|
/**
|
|
46
82
|
* Derives a rule's support status. A rule is only as available as its
|
|
47
83
|
* least-supported required feature, so the weakest one wins. This is the only
|
package/dist/baseline.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,sGAAsG;IACtG,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACvC;;;;;;;OAOG;IACH,cAAc,EAAE;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;KACxC,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B;;;OAGG;IACH,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAClC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAAC;IAClC,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAUD,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAE3D;AAED,kCAAkC;AAClC,wBAAgB,eAAe,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,CAE5E;AASD,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAE5D;AASD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAEjE;AAED,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,QAA+B,CAAC;AAC/D,eAAO,MAAM,oBAAoB,QAAsC,CAAC;AAsBxE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,CA4B1D;AAED,iEAAiE;AACjE,eAAO,MAAM,gBAAgB,YAC3B,QAAQ,EACR,MAAM,EACN,SAAS,EACT,QAAQ,CACA,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAyB/D;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,SAAS,eAAe,EAAE,GACnC,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC,CAQvC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,OAAO,CAI7E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,SAAS,eAAe,EAAE,GACnC,eAAe,EAAE,CAInB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,CA2CxD"}
|
package/dist/baseline.js
CHANGED
|
@@ -60,9 +60,22 @@ function sinceDate(status, entry) {
|
|
|
60
60
|
* `unknown`, which is where this is meant to be caught.
|
|
61
61
|
*/
|
|
62
62
|
export function resolveFeature(id) {
|
|
63
|
-
|
|
63
|
+
// Object.hasOwn, not a bare index: the snapshot is a plain object, so an ID
|
|
64
|
+
// of "constructor" would otherwise resolve to Object and badge the rule
|
|
65
|
+
// "limited availability" with a fabricated feature name.
|
|
66
|
+
const entry = Object.hasOwn(baselineSnapshot.features, id)
|
|
67
|
+
? baselineSnapshot.features[id]
|
|
68
|
+
: undefined;
|
|
64
69
|
if (!entry) {
|
|
65
|
-
return {
|
|
70
|
+
return {
|
|
71
|
+
id,
|
|
72
|
+
name: id,
|
|
73
|
+
status: "unknown",
|
|
74
|
+
since: null,
|
|
75
|
+
spec: null,
|
|
76
|
+
support: {},
|
|
77
|
+
partialSupport: null,
|
|
78
|
+
};
|
|
66
79
|
}
|
|
67
80
|
const status = toStatus(entry.baseline);
|
|
68
81
|
return {
|
|
@@ -71,8 +84,68 @@ export function resolveFeature(id) {
|
|
|
71
84
|
status,
|
|
72
85
|
since: sinceDate(status, entry),
|
|
73
86
|
spec: entry.spec,
|
|
87
|
+
support: entry.support,
|
|
88
|
+
partialSupport: entry.partialSupport,
|
|
74
89
|
};
|
|
75
90
|
}
|
|
91
|
+
/** Browsers the catalog tracks support for, in display order. */
|
|
92
|
+
export const TRACKED_BROWSERS = [
|
|
93
|
+
"chrome",
|
|
94
|
+
"edge",
|
|
95
|
+
"firefox",
|
|
96
|
+
"safari",
|
|
97
|
+
];
|
|
98
|
+
/**
|
|
99
|
+
* The highest of several minimum versions for one browser, or null if any
|
|
100
|
+
* feature has no support data there (a rule needing all of them then has no
|
|
101
|
+
* known support in that browser either). A non-numeric version string is
|
|
102
|
+
* ignored rather than treated as the max: the snapshot should never contain
|
|
103
|
+
* one, but silently winning a comparison it can't meaningfully make would be
|
|
104
|
+
* worse than being skipped.
|
|
105
|
+
*/
|
|
106
|
+
function highestVersion(versions) {
|
|
107
|
+
if (versions.some((v) => v === null))
|
|
108
|
+
return null;
|
|
109
|
+
let max = null;
|
|
110
|
+
let raw = null;
|
|
111
|
+
for (const version of versions) {
|
|
112
|
+
const parsed = Number.parseFloat(version);
|
|
113
|
+
if (!Number.isNaN(parsed) && (max === null || parsed > max)) {
|
|
114
|
+
max = parsed;
|
|
115
|
+
raw = version;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return raw;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Combines support across every feature a rule needs. A rule only works in a
|
|
122
|
+
* browser once every required feature does, so each browser's version is the
|
|
123
|
+
* highest (latest) minimum any single feature demands.
|
|
124
|
+
*/
|
|
125
|
+
export function combinedSupport(features) {
|
|
126
|
+
const result = {};
|
|
127
|
+
for (const browser of TRACKED_BROWSERS) {
|
|
128
|
+
result[browser] = highestVersion(features.map((feature) => feature.support[browser] ?? null));
|
|
129
|
+
}
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* True when a support map names no version for any tracked browser. That is
|
|
134
|
+
* two different situations wearing the same face: the feature shipped nowhere,
|
|
135
|
+
* or web-features publishes no aggregate for it. A caller that renders one row
|
|
136
|
+
* per browser has to tell them apart, or a dash reads as "nobody has this".
|
|
137
|
+
*/
|
|
138
|
+
export function hasNoVersions(support) {
|
|
139
|
+
return TRACKED_BROWSERS.every((browser) => (support[browser] ?? null) === null);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* The features whose versions are missing because web-features publishes no
|
|
143
|
+
* aggregate, each with the part standing in for it. Empty for the usual case
|
|
144
|
+
* where every feature has a real support row.
|
|
145
|
+
*/
|
|
146
|
+
export function unpublishedSupport(features) {
|
|
147
|
+
return features.filter((feature) => hasNoVersions(feature.support) && feature.partialSupport);
|
|
148
|
+
}
|
|
76
149
|
/**
|
|
77
150
|
* Derives a rule's support status. A rule is only as available as its
|
|
78
151
|
* least-supported required feature, so the weakest one wins. This is the only
|
package/dist/baseline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const categorySchema: z.ZodEnum<{
|
|
3
|
+
animation: "animation";
|
|
4
|
+
"async-data": "async-data";
|
|
5
|
+
"device-apis": "device-apis";
|
|
6
|
+
formatting: "formatting";
|
|
7
|
+
forms: "forms";
|
|
8
|
+
layout: "layout";
|
|
9
|
+
scrolling: "scrolling";
|
|
10
|
+
typography: "typography";
|
|
11
|
+
}>;
|
|
12
|
+
export type CategoryId = z.infer<typeof categorySchema>;
|
|
13
|
+
export interface CategoryMeta {
|
|
14
|
+
id: CategoryId;
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const CATEGORIES: readonly CategoryMeta[];
|
|
19
|
+
export declare const CATEGORIES_BY_ID: Readonly<Record<CategoryId, CategoryMeta>>;
|
|
20
|
+
//# sourceMappingURL=categories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categories.d.ts","sourceRoot":"","sources":["../src/categories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,eAAO,MAAM,cAAc;;;;;;;;;EAAuB,CAAC;AACnD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,UAAU,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,YAAY,EAyCpC,CAAC;AAEX,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAIrE,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* The ids, as a literal tuple. Declaring them here rather than deriving them
|
|
4
|
+
* from CATEGORIES with a cast is what keeps CategoryId a closed union: a
|
|
5
|
+
* `as [string, ...string[]]` cast widens the element type back to string, and
|
|
6
|
+
* z.enum then infers string, so a typo'd category would type-check.
|
|
7
|
+
*/
|
|
8
|
+
const CATEGORY_IDS = [
|
|
9
|
+
"layout",
|
|
10
|
+
"scrolling",
|
|
11
|
+
"animation",
|
|
12
|
+
"typography",
|
|
13
|
+
"forms",
|
|
14
|
+
"device-apis",
|
|
15
|
+
"async-data",
|
|
16
|
+
"formatting",
|
|
17
|
+
];
|
|
18
|
+
export const categorySchema = z.enum(CATEGORY_IDS);
|
|
19
|
+
export const CATEGORIES = [
|
|
20
|
+
{
|
|
21
|
+
id: "layout",
|
|
22
|
+
name: "Layout & Sizing",
|
|
23
|
+
description: "Sizing, positioning, and structuring boxes on the page.",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: "scrolling",
|
|
27
|
+
name: "Scroll & Scrollbars",
|
|
28
|
+
description: "Scroll containers, scrollbars, and scroll behavior.",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: "animation",
|
|
32
|
+
name: "Animation & Transitions",
|
|
33
|
+
description: "Animating state changes and page transitions.",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: "typography",
|
|
37
|
+
name: "Typography & Colour",
|
|
38
|
+
description: "Text layout, wrapping, and color.",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: "forms",
|
|
42
|
+
name: "Forms & Interactive Controls",
|
|
43
|
+
description: "Form inputs and interactive UI controls.",
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: "device-apis",
|
|
47
|
+
name: "Device & System APIs",
|
|
48
|
+
description: "APIs that reach the device or operating system.",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: "async-data",
|
|
52
|
+
name: "Async, Observers & Data",
|
|
53
|
+
description: "Asynchronous work, observers, and data handling.",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: "formatting",
|
|
57
|
+
name: "Internationalization & Formatting",
|
|
58
|
+
description: "Locale-aware number, date, and time formatting.",
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
export const CATEGORIES_BY_ID = Object.fromEntries(CATEGORIES.map((c) => [c.id, c]));
|
|
62
|
+
//# sourceMappingURL=categories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categories.js","sourceRoot":"","sources":["../src/categories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,MAAM,YAAY,GAAG;IACnB,QAAQ;IACR,WAAW;IACX,WAAW;IACX,YAAY;IACZ,OAAO;IACP,aAAa;IACb,YAAY;IACZ,YAAY;CACJ,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AASnD,MAAM,CAAC,MAAM,UAAU,GAA4B;IACjD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,yDAAyD;KACvE;IACD;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,qDAAqD;KACnE;IACD;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,+CAA+C;KAC7D;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,mCAAmC;KACjD;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,0CAA0C;KACxD;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,iDAAiD;KAC/D;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,kDAAkD;KAChE;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,mCAAmC;QACzC,WAAW,EAAE,iDAAiD;KAC/D;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,gBAAgB,GAC3B,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAGlD,CAAC"}
|
package/dist/detect.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { BaselineStatus, Rule } from "./schema.ts";
|
|
|
6
6
|
* agent tooling) calls this same function, which is what makes four form
|
|
7
7
|
* factors cost one implementation.
|
|
8
8
|
*/
|
|
9
|
-
export declare const DEPENDENCY_FIELDS: readonly ["dependencies", "devDependencies", "peerDependencies"];
|
|
9
|
+
export declare const DEPENDENCY_FIELDS: readonly ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"];
|
|
10
10
|
export type DependencyField = (typeof DEPENDENCY_FIELDS)[number];
|
|
11
11
|
/** The subset of a package.json that detect() reads. */
|
|
12
12
|
export interface PackageJsonLike {
|
|
@@ -14,6 +14,7 @@ export interface PackageJsonLike {
|
|
|
14
14
|
dependencies?: Record<string, string> | undefined;
|
|
15
15
|
devDependencies?: Record<string, string> | undefined;
|
|
16
16
|
peerDependencies?: Record<string, string> | undefined;
|
|
17
|
+
optionalDependencies?: Record<string, string> | undefined;
|
|
17
18
|
}
|
|
18
19
|
export interface MatchedPackage {
|
|
19
20
|
name: string;
|
package/dist/detect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExD;;;;;GAKG;AAEH,eAAO,MAAM,iBAAiB,YAC5B,cAAc,EACd,iBAAiB,EACjB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExD;;;;;GAKG;AAEH,eAAO,MAAM,iBAAiB,YAC5B,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAGlB,sBAAsB,CACd,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACtD,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC3D;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,uEAAuE;IACvE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,gEAAgE;IAChE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,YAAY,CAAC;IACvB,mEAAmE;IACnE,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B;;;OAGG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,+DAA+D;IAC/D,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,GAAG,SAAS,CAAC;CACrC;AAgGD;;;;;;GAMG;AACH,wBAAgB,MAAM,CACpB,GAAG,EAAE,eAAe,EACpB,OAAO,GAAE,aAAkB,GAC1B,OAAO,EAAE,CAkBX;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAa3D;AAED,MAAM,WAAW,OAAO;IACtB;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,eAAe,EAAE,OAAO,CAAC;IACzB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAyB/D;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wEAAwE;AACxE,wBAAgB,OAAO,CACrB,GAAG,EAAE,eAAe,EACpB,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAGR"}
|
package/dist/detect.js
CHANGED
|
@@ -11,9 +11,17 @@ export const DEPENDENCY_FIELDS = [
|
|
|
11
11
|
"dependencies",
|
|
12
12
|
"devDependencies",
|
|
13
13
|
"peerDependencies",
|
|
14
|
+
// Optional dependencies are installed and bundled like any other, so a
|
|
15
|
+
// package parked here is just as replaceable as one in `dependencies`.
|
|
16
|
+
"optionalDependencies",
|
|
14
17
|
];
|
|
15
18
|
function readSize(name) {
|
|
16
|
-
|
|
19
|
+
// Object.hasOwn, not a bare index: a package literally named "constructor"
|
|
20
|
+
// would otherwise pick up Object off the prototype and report a confident
|
|
21
|
+
// 0 bytes instead of an unknown size.
|
|
22
|
+
const entry = Object.hasOwn(packageSizes.sizes, name)
|
|
23
|
+
? packageSizes.sizes[name]
|
|
24
|
+
: undefined;
|
|
17
25
|
if (!entry)
|
|
18
26
|
return { gzip: null, version: null };
|
|
19
27
|
return { gzip: entry.gzip, version: entry.version };
|
|
@@ -118,7 +126,14 @@ export function sortFindings(findings) {
|
|
|
118
126
|
const byBaseline = compareBaseline(a.baseline.status, b.baseline.status);
|
|
119
127
|
if (byBaseline !== 0)
|
|
120
128
|
return byBaseline;
|
|
121
|
-
|
|
129
|
+
// Codepoint order, not localeCompare: collation varies by runtime locale
|
|
130
|
+
// and ICU build, and two surfaces rendering the same report must not
|
|
131
|
+
// order a tie differently.
|
|
132
|
+
if (a.rule.title < b.rule.title)
|
|
133
|
+
return -1;
|
|
134
|
+
if (a.rule.title > b.rule.title)
|
|
135
|
+
return 1;
|
|
136
|
+
return 0;
|
|
122
137
|
});
|
|
123
138
|
}
|
|
124
139
|
/** Pure. Rolls findings up into the numbers a report leads with. */
|
package/dist/detect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGzD;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,cAAc;IACd,iBAAiB;IACjB,kBAAkB;
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"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"}
|
package/dist/format.js
CHANGED
|
@@ -18,7 +18,7 @@ export function formatBytes(bytes) {
|
|
|
18
18
|
/** The honest headline. It hedges, and never promises a saving. */
|
|
19
19
|
export function formatHeadline(bytes, packageCount) {
|
|
20
20
|
if (packageCount === 0)
|
|
21
|
-
return "Nothing here
|
|
21
|
+
return "Nothing here the platform covers yet";
|
|
22
22
|
const deps = packageCount === 1 ? "dependency" : "dependencies";
|
|
23
23
|
if (bytes === 0) {
|
|
24
24
|
return `${packageCount} ${deps} may have a native equivalent`;
|
package/dist/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gFAAgF;AAChF,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,MAAM,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,GAAG,GAAG;QAAE,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;AAChC,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,YAAoB;IAChE,IAAI,YAAY,KAAK,CAAC;QAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gFAAgF;AAChF,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,MAAM,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,GAAG,GAAG;QAAE,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;AAChC,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,YAAoB;IAChE,IAAI,YAAY,KAAK,CAAC;QAAE,OAAO,sCAAsC,CAAC;IACtE,MAAM,IAAI,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;IAChE,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,GAAG,YAAY,IAAI,IAAI,+BAA+B,CAAC;IAChE,CAAC;IACD,OAAO,SAAS,WAAW,CAAC,KAAK,CAAC,WAAW,YAAY,IAAI,IAAI,EAAE,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAA+B,EAC/B,IAAY,EACZ,MAAc;IAEd,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACtC,OAAO,mBAAmB,IAAI,QAAQ,IAAI,KAAK,MAAM,oBAAoB,CAAC;AAC5E,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,UAAU,CAAC,KAAwB;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAW,CAAC;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,GAAG,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface BaselineHistoryEntry {
|
|
2
|
+
/** Calendar month this entry represents, YYYY-MM. Re-running the refresh
|
|
3
|
+
* within the same month updates this entry in place, never duplicates. */
|
|
4
|
+
month: string;
|
|
5
|
+
generatedOn: string;
|
|
6
|
+
webFeaturesVersion: string;
|
|
7
|
+
/** Rule count at this point, so a chart can tell catalog growth apart
|
|
8
|
+
* from an actual change in browser support. */
|
|
9
|
+
ruleCount: number;
|
|
10
|
+
tally: {
|
|
11
|
+
widely: number;
|
|
12
|
+
newly: number;
|
|
13
|
+
limited: number;
|
|
14
|
+
unknown: number;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export interface BaselineHistory {
|
|
18
|
+
entries: BaselineHistoryEntry[];
|
|
19
|
+
}
|
|
20
|
+
export declare const baselineHistory: BaselineHistory;
|
|
21
|
+
//# sourceMappingURL=baseline-history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseline-history.d.ts","sourceRoot":"","sources":["../../src/generated/baseline-history.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC;8EAC0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B;mDAC+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5E;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED,eAAO,MAAM,eAAe,EAAE,eAe7B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Generated by scripts/refresh-baseline.ts. Do not edit by hand.
|
|
2
|
+
// Run `pnpm refresh:baseline` to update. Entries only append; the first
|
|
3
|
+
// entry is whenever this feature first shipped, there is no backfill.
|
|
4
|
+
export const baselineHistory = {
|
|
5
|
+
"entries": [
|
|
6
|
+
{
|
|
7
|
+
"month": "2026-09",
|
|
8
|
+
"generatedOn": "2026-09-06",
|
|
9
|
+
"webFeaturesVersion": "3.36.0",
|
|
10
|
+
"ruleCount": 56,
|
|
11
|
+
"tally": {
|
|
12
|
+
"widely": 32,
|
|
13
|
+
"newly": 12,
|
|
14
|
+
"limited": 12,
|
|
15
|
+
"unknown": 0
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=baseline-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseline-history.js","sourceRoot":"","sources":["../../src/generated/baseline-history.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,wEAAwE;AACxE,sEAAsE;AAkBtE,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,SAAS,EAAE;QACT;YACE,OAAO,EAAE,SAAS;YAClB,aAAa,EAAE,YAAY;YAC3B,oBAAoB,EAAE,QAAQ;YAC9B,WAAW,EAAE,EAAE;YACf,OAAO,EAAE;gBACP,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,CAAC;aACb;SACF;KACF;CACF,CAAC"}
|
|
@@ -10,6 +10,22 @@ export interface BaselineSnapshotEntry {
|
|
|
10
10
|
highDate: string | null;
|
|
11
11
|
/** Canonical specification URL, when web-features records one. */
|
|
12
12
|
spec: string | null;
|
|
13
|
+
/**
|
|
14
|
+
* Minimum version each tracked browser needs, keyed by chrome, edge, firefox, safari.
|
|
15
|
+
* Null means web-features has no support data for that browser (commonly
|
|
16
|
+
* because the feature never shipped there).
|
|
17
|
+
*/
|
|
18
|
+
support: Record<string, string | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Set only when web-features publishes no aggregate support for the feature.
|
|
21
|
+
* `key` names one of its BCD compat keys and `support` is that key's own
|
|
22
|
+
* versions, straight from web-features. It describes a part of the feature,
|
|
23
|
+
* never the whole, so it is shown with the part named next to it.
|
|
24
|
+
*/
|
|
25
|
+
partialSupport: {
|
|
26
|
+
key: string;
|
|
27
|
+
support: Record<string, string | null>;
|
|
28
|
+
} | null;
|
|
13
29
|
}
|
|
14
30
|
export interface BaselineSnapshot {
|
|
15
31
|
/** Date this snapshot was generated, YYYY-MM-DD. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../src/generated/baseline.ts"],"names":[],"mappings":"AAGA,sEAAsE;AACtE,MAAM,WAAW,qBAAqB;IACpC,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IACjC,+CAA+C;IAC/C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,kEAAkE;IAClE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../src/generated/baseline.ts"],"names":[],"mappings":"AAGA,sEAAsE;AACtE,MAAM,WAAW,qBAAqB;IACpC,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IACjC,+CAA+C;IAC/C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,kEAAkE;IAClE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACvC;;;;;OAKG;IACH,cAAc,EAAE;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;KACxC,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CACjD;AAED,eAAO,MAAM,gBAAgB,EAAE,gBAu4B9B,CAAC"}
|