@jomae/catalog 0.4.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 +20 -2
- package/dist/baseline.d.ts +25 -0
- package/dist/baseline.d.ts.map +1 -1
- package/dist/baseline.js +25 -1
- 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/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 +10 -0
- package/dist/generated/baseline.d.ts.map +1 -1
- package/dist/generated/baseline.js +250 -67
- 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 +280 -55
- 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.map +1 -1
- package/dist/rules/abort-controller.js +2 -1
- package/dist/rules/abort-controller.js.map +1 -1
- 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.map +1 -1
- package/dist/rules/broadcast-channel.js +1 -0
- package/dist/rules/broadcast-channel.js.map +1 -1
- package/dist/rules/carousel.d.ts.map +1 -1
- package/dist/rules/carousel.js +7 -0
- package/dist/rules/carousel.js.map +1 -1
- package/dist/rules/clipboard.d.ts.map +1 -1
- package/dist/rules/clipboard.js +4 -1
- package/dist/rules/clipboard.js.map +1 -1
- package/dist/rules/color-functions.d.ts.map +1 -1
- package/dist/rules/color-functions.js +1 -0
- package/dist/rules/color-functions.js.map +1 -1
- package/dist/rules/compression-streams.d.ts.map +1 -1
- package/dist/rules/compression-streams.js +2 -1
- package/dist/rules/compression-streams.js.map +1 -1
- package/dist/rules/container-queries.d.ts.map +1 -1
- package/dist/rules/container-queries.js +2 -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 +3 -1
- 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 +2 -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 +8 -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.map +1 -1
- package/dist/rules/drag-and-drop.js +26 -8
- package/dist/rules/drag-and-drop.js.map +1 -1
- 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 +3 -1
- 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.map +1 -1
- package/dist/rules/focus-visible.js +1 -0
- package/dist/rules/focus-visible.js.map +1 -1
- package/dist/rules/fullscreen.d.ts.map +1 -1
- package/dist/rules/fullscreen.js +2 -1
- package/dist/rules/fullscreen.js.map +1 -1
- 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 +64 -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.map +1 -1
- package/dist/rules/intersection-observer.js +2 -0
- package/dist/rules/intersection-observer.js.map +1 -1
- package/dist/rules/lazy-loading.d.ts.map +1 -1
- package/dist/rules/lazy-loading.js +2 -0
- package/dist/rules/lazy-loading.js.map +1 -1
- package/dist/rules/line-clamp.d.ts.map +1 -1
- package/dist/rules/line-clamp.js +2 -1
- package/dist/rules/line-clamp.js.map +1 -1
- package/dist/rules/masonry.d.ts.map +1 -1
- package/dist/rules/masonry.js +1 -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.map +1 -1
- package/dist/rules/number-format.js +3 -1
- package/dist/rules/number-format.js.map +1 -1
- package/dist/rules/page-visibility.d.ts.map +1 -1
- package/dist/rules/page-visibility.js +5 -0
- package/dist/rules/page-visibility.js.map +1 -1
- package/dist/rules/popover.d.ts.map +1 -1
- package/dist/rules/popover.js +8 -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.map +1 -1
- package/dist/rules/relative-time.js +1 -0
- package/dist/rules/relative-time.js.map +1 -1
- package/dist/rules/resizable-panels.d.ts.map +1 -1
- package/dist/rules/resizable-panels.js +4 -7
- package/dist/rules/resizable-panels.js.map +1 -1
- package/dist/rules/resize-observer.d.ts.map +1 -1
- package/dist/rules/resize-observer.js +2 -1
- package/dist/rules/resize-observer.js.map +1 -1
- package/dist/rules/screen-wake-lock.d.ts.map +1 -1
- package/dist/rules/screen-wake-lock.js +3 -1
- package/dist/rules/screen-wake-lock.js.map +1 -1
- 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 +5 -0
- package/dist/rules/scrollbars.js.map +1 -1
- package/dist/rules/select.d.ts.map +1 -1
- package/dist/rules/select.js +7 -0
- 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 +2 -0
- package/dist/rules/smooth-scroll.js.map +1 -1
- package/dist/rules/speech-recognition.d.ts.map +1 -1
- package/dist/rules/speech-recognition.js +19 -10
- package/dist/rules/speech-recognition.js.map +1 -1
- package/dist/rules/speech-synthesis.d.ts.map +1 -1
- package/dist/rules/speech-synthesis.js +3 -0
- package/dist/rules/speech-synthesis.js.map +1 -1
- package/dist/rules/sticky.d.ts.map +1 -1
- package/dist/rules/sticky.js +2 -0
- package/dist/rules/sticky.js.map +1 -1
- package/dist/rules/structured-clone.d.ts.map +1 -1
- package/dist/rules/structured-clone.js +13 -2
- package/dist/rules/structured-clone.js.map +1 -1
- 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.map +1 -1
- package/dist/rules/web-bluetooth.js +1 -0
- package/dist/rules/web-bluetooth.js.map +1 -1
- 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.map +1 -1
- package/dist/rules/web-share.js +1 -0
- package/dist/rules/web-share.js.map +1 -1
- package/dist/schema.d.ts +22 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +63 -4
- 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 +1 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// Generated by scripts/refresh-support.ts. Do not edit by hand.
|
|
2
|
+
// Run `pnpm refresh:support` to update.
|
|
3
|
+
/**
|
|
4
|
+
* Every browser version the catalog's prose cites, resolved from web-features
|
|
5
|
+
* and MDN's browser-compat-data. No rule writes a version number by hand.
|
|
6
|
+
*/
|
|
7
|
+
export const supportClaims = {
|
|
8
|
+
"generatedOn": "2026-09-06",
|
|
9
|
+
"webFeaturesVersion": "3.36.0",
|
|
10
|
+
"bcdVersion": "8.1.0",
|
|
11
|
+
"claims": {
|
|
12
|
+
"chrome:abortsignal-timeout": "124",
|
|
13
|
+
"chrome:api.Crypto.randomUUID": "92",
|
|
14
|
+
"chrome:api.ResizeObserverEntry.devicePixelContentBoxSize": "84",
|
|
15
|
+
"chrome:api.URLSearchParams": "49",
|
|
16
|
+
"chrome:css.properties.anchor-name": "125",
|
|
17
|
+
"chrome:css.properties.content-visibility.auto": "85",
|
|
18
|
+
"chrome:css.properties.overscroll-behavior.contain": "63",
|
|
19
|
+
"chrome:css.properties.resize.block": "118",
|
|
20
|
+
"chrome:css.properties.text-box": "133",
|
|
21
|
+
"chrome:field-sizing": "123",
|
|
22
|
+
"chrome:inert": "102",
|
|
23
|
+
"chrome:javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_unit_parameter": "77",
|
|
24
|
+
"chrome:overscroll-behavior": "144",
|
|
25
|
+
"chrome:scroll-driven-animations": "115",
|
|
26
|
+
"chrome:speech-recognition": "139",
|
|
27
|
+
"chrome:url": "32",
|
|
28
|
+
"firefox:abortsignal-timeout": "100",
|
|
29
|
+
"firefox:api.Clipboard.writeText": "63",
|
|
30
|
+
"firefox:api.Crypto.randomUUID": "95",
|
|
31
|
+
"firefox:api.ResizeObserverEntry.devicePixelContentBoxSize": "108",
|
|
32
|
+
"firefox:api.URLSearchParams": "29",
|
|
33
|
+
"firefox:css.properties.anchor-name": "147",
|
|
34
|
+
"firefox:css.properties.content-visibility.auto": "125",
|
|
35
|
+
"firefox:css.properties.overscroll-behavior.contain": "59",
|
|
36
|
+
"firefox:css.properties.resize.block": "63",
|
|
37
|
+
"firefox:css.properties.text-box": "154",
|
|
38
|
+
"firefox:field-sizing": "152",
|
|
39
|
+
"firefox:highlight": "149",
|
|
40
|
+
"firefox:inert": "112",
|
|
41
|
+
"firefox:javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_unit_parameter": "78",
|
|
42
|
+
"firefox:overscroll-behavior": "150",
|
|
43
|
+
"nodejs:api.EventTarget": "15.0.0",
|
|
44
|
+
"nodejs:api.fetch": "18.0.0",
|
|
45
|
+
"safari:abortsignal-timeout": "16",
|
|
46
|
+
"safari:api.Clipboard.writeText": "13.1",
|
|
47
|
+
"safari:api.Crypto.randomUUID": "15.4",
|
|
48
|
+
"safari:api.Element.requestFullscreen": "16.4",
|
|
49
|
+
"safari:api.EventTarget.EventTarget": "14",
|
|
50
|
+
"safari:api.EventTarget.addEventListener.options_parameter.options_signal_parameter": "15",
|
|
51
|
+
"safari:api.URLSearchParams": "10.1",
|
|
52
|
+
"safari:api.WakeLock": "16.4",
|
|
53
|
+
"safari:css.properties.anchor-name": "26",
|
|
54
|
+
"safari:css.properties.content-visibility.auto": "26",
|
|
55
|
+
"safari:css.properties.overscroll-behavior.contain": "16",
|
|
56
|
+
"safari:css.properties.resize.block": "16",
|
|
57
|
+
"safari:css.properties.text-box": "18.2",
|
|
58
|
+
"safari:events": "1",
|
|
59
|
+
"safari:field-sizing": "26.2",
|
|
60
|
+
"safari:highlight": "17.2",
|
|
61
|
+
"safari:inert": "15.5",
|
|
62
|
+
"safari:javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_unit_parameter": "14.1",
|
|
63
|
+
"safari:scroll-driven-animations": "26",
|
|
64
|
+
"safari:url": "7",
|
|
65
|
+
"safari:web-cryptography": "11",
|
|
66
|
+
"safari_ios:api.WakeLock": "18.4"
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=support-claims.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"support-claims.js","sourceRoot":"","sources":["../../src/generated/support-claims.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,wCAAwC;AAYxC;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,aAAa,EAAE,YAAY;IAC3B,oBAAoB,EAAE,QAAQ;IAC9B,YAAY,EAAE,OAAO;IACrB,QAAQ,EAAE;QACR,4BAA4B,EAAE,KAAK;QACnC,8BAA8B,EAAE,IAAI;QACpC,0DAA0D,EAAE,IAAI;QAChE,4BAA4B,EAAE,IAAI;QAClC,mCAAmC,EAAE,KAAK;QAC1C,+CAA+C,EAAE,IAAI;QACrD,mDAAmD,EAAE,IAAI;QACzD,oCAAoC,EAAE,KAAK;QAC3C,gCAAgC,EAAE,KAAK;QACvC,qBAAqB,EAAE,KAAK;QAC5B,cAAc,EAAE,KAAK;QACrB,oGAAoG,EAAE,IAAI;QAC1G,4BAA4B,EAAE,KAAK;QACnC,iCAAiC,EAAE,KAAK;QACxC,2BAA2B,EAAE,KAAK;QAClC,YAAY,EAAE,IAAI;QAClB,6BAA6B,EAAE,KAAK;QACpC,iCAAiC,EAAE,IAAI;QACvC,+BAA+B,EAAE,IAAI;QACrC,2DAA2D,EAAE,KAAK;QAClE,6BAA6B,EAAE,IAAI;QACnC,oCAAoC,EAAE,KAAK;QAC3C,gDAAgD,EAAE,KAAK;QACvD,oDAAoD,EAAE,IAAI;QAC1D,qCAAqC,EAAE,IAAI;QAC3C,iCAAiC,EAAE,KAAK;QACxC,sBAAsB,EAAE,KAAK;QAC7B,mBAAmB,EAAE,KAAK;QAC1B,eAAe,EAAE,KAAK;QACtB,qGAAqG,EAAE,IAAI;QAC3G,6BAA6B,EAAE,KAAK;QACpC,wBAAwB,EAAE,QAAQ;QAClC,kBAAkB,EAAE,QAAQ;QAC5B,4BAA4B,EAAE,IAAI;QAClC,gCAAgC,EAAE,MAAM;QACxC,8BAA8B,EAAE,MAAM;QACtC,sCAAsC,EAAE,MAAM;QAC9C,oCAAoC,EAAE,IAAI;QAC1C,oFAAoF,EAAE,IAAI;QAC1F,4BAA4B,EAAE,MAAM;QACpC,qBAAqB,EAAE,MAAM;QAC7B,mCAAmC,EAAE,IAAI;QACzC,+CAA+C,EAAE,IAAI;QACrD,mDAAmD,EAAE,IAAI;QACzD,oCAAoC,EAAE,IAAI;QAC1C,gCAAgC,EAAE,MAAM;QACxC,eAAe,EAAE,GAAG;QACpB,qBAAqB,EAAE,MAAM;QAC7B,kBAAkB,EAAE,MAAM;QAC1B,cAAc,EAAE,MAAM;QACtB,oGAAoG,EAAE,MAAM;QAC5G,iCAAiC,EAAE,IAAI;QACvC,YAAY,EAAE,GAAG;QACjB,yBAAyB,EAAE,IAAI;QAC/B,yBAAyB,EAAE,MAAM;KAClC;CACF,CAAC"}
|
package/dist/guides.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type GuideSnapshot, guideSnapshot } from "./generated/guides.ts";
|
|
2
|
+
import type { Rule } from "./schema.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Resolution for the long-form guides a rule can point at.
|
|
5
|
+
*
|
|
6
|
+
* The catalog answers which dependency has a native equivalent. It does not
|
|
7
|
+
* try to be a tutorial, and the agent projection has a token budget that a
|
|
8
|
+
* tutorial would blow. GoogleChrome/modern-web-guidance already writes the
|
|
9
|
+
* long form, keyed by use case rather than by package, so a rule stores guide
|
|
10
|
+
* IDs and this resolves them into a URL and a retrieval command.
|
|
11
|
+
*
|
|
12
|
+
* Pure, like everything else the surfaces share. IDs are checked against a
|
|
13
|
+
* committed snapshot (`pnpm refresh:guides`), so a guide that moves upstream
|
|
14
|
+
* fails a test rather than shipping as a dead link.
|
|
15
|
+
*/
|
|
16
|
+
/** Where the guides come from, shown wherever they are linked. */
|
|
17
|
+
export declare const GUIDE_SOURCE: {
|
|
18
|
+
readonly name: "modern-web-guidance";
|
|
19
|
+
readonly owner: "Google Chrome";
|
|
20
|
+
readonly licence: "Apache-2.0";
|
|
21
|
+
readonly repo: string;
|
|
22
|
+
readonly version: string;
|
|
23
|
+
readonly fetchedOn: string;
|
|
24
|
+
};
|
|
25
|
+
export interface ResolvedGuide {
|
|
26
|
+
id: string;
|
|
27
|
+
/** The category directory, e.g. "ui-behaviors". Empty when unresolved. */
|
|
28
|
+
category: string;
|
|
29
|
+
/** Permalink to the markdown, or null when the ID is not in the snapshot. */
|
|
30
|
+
url: string | null;
|
|
31
|
+
/** What to run to pull the guide into an agent's context. */
|
|
32
|
+
command: string;
|
|
33
|
+
}
|
|
34
|
+
/** The command their SKILL.md documents. Kept in one place. */
|
|
35
|
+
export declare function guideCommand(ids: readonly string[]): string;
|
|
36
|
+
/**
|
|
37
|
+
* Looks up one guide. Returns a `url` of null for an unknown ID rather than
|
|
38
|
+
* throwing, matching resolveFeature()'s behaviour for an unknown feature.
|
|
39
|
+
*/
|
|
40
|
+
export declare function resolveGuide(id: string): ResolvedGuide;
|
|
41
|
+
/** Every guide a rule points at, in the order the rule lists them. */
|
|
42
|
+
export declare function resolveGuides(rule: Rule): ResolvedGuide[];
|
|
43
|
+
/** True when the snapshot knows this ID. Used by the tests and the scripts. */
|
|
44
|
+
export declare function isKnownGuide(id: string): boolean;
|
|
45
|
+
export { type GuideSnapshot, guideSnapshot };
|
|
46
|
+
//# sourceMappingURL=guides.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guides.d.ts","sourceRoot":"","sources":["../src/guides.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;;;;;;;GAYG;AAEH,kEAAkE;AAClE,eAAO,MAAM,YAAY;aACvB,IAAI,EAAE,qBAAqB;aAC3B,KAAK,EAAE,eAAe;aACtB,OAAO,EAAE,YAAY;aACrB,IAAI;aACJ,OAAO;aACP,SAAS;CACD,CAAC;AAEX,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAatD;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,EAAE,CAEzD;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,OAAO,EAAE,KAAK,aAAa,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/guides.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { guideSnapshot } from "./generated/guides.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resolution for the long-form guides a rule can point at.
|
|
4
|
+
*
|
|
5
|
+
* The catalog answers which dependency has a native equivalent. It does not
|
|
6
|
+
* try to be a tutorial, and the agent projection has a token budget that a
|
|
7
|
+
* tutorial would blow. GoogleChrome/modern-web-guidance already writes the
|
|
8
|
+
* long form, keyed by use case rather than by package, so a rule stores guide
|
|
9
|
+
* IDs and this resolves them into a URL and a retrieval command.
|
|
10
|
+
*
|
|
11
|
+
* Pure, like everything else the surfaces share. IDs are checked against a
|
|
12
|
+
* committed snapshot (`pnpm refresh:guides`), so a guide that moves upstream
|
|
13
|
+
* fails a test rather than shipping as a dead link.
|
|
14
|
+
*/
|
|
15
|
+
/** Where the guides come from, shown wherever they are linked. */
|
|
16
|
+
export const GUIDE_SOURCE = {
|
|
17
|
+
name: "modern-web-guidance",
|
|
18
|
+
owner: "Google Chrome",
|
|
19
|
+
licence: "Apache-2.0",
|
|
20
|
+
repo: guideSnapshot.repo,
|
|
21
|
+
version: guideSnapshot.version,
|
|
22
|
+
fetchedOn: guideSnapshot.fetchedOn,
|
|
23
|
+
};
|
|
24
|
+
/** The command their SKILL.md documents. Kept in one place. */
|
|
25
|
+
export function guideCommand(ids) {
|
|
26
|
+
return `npx -y modern-web-guidance@latest retrieve "${ids.join(",")}"`;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Looks up one guide. Returns a `url` of null for an unknown ID rather than
|
|
30
|
+
* throwing, matching resolveFeature()'s behaviour for an unknown feature.
|
|
31
|
+
*/
|
|
32
|
+
export function resolveGuide(id) {
|
|
33
|
+
// Object.hasOwn, not `in` or a bare read: the snapshot is a plain object, so
|
|
34
|
+
// an id like "constructor" or "toString" would otherwise resolve to
|
|
35
|
+
// something off Object.prototype and build a nonsense URL from it.
|
|
36
|
+
const category = isKnownGuide(id) ? guideSnapshot.guides[id] : undefined;
|
|
37
|
+
return {
|
|
38
|
+
id,
|
|
39
|
+
category: category ?? "",
|
|
40
|
+
url: category
|
|
41
|
+
? `${guideSnapshot.repo}/blob/main/skills/modern-web-guidance/guides/${category}/${id}.md`
|
|
42
|
+
: null,
|
|
43
|
+
command: guideCommand([id]),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** Every guide a rule points at, in the order the rule lists them. */
|
|
47
|
+
export function resolveGuides(rule) {
|
|
48
|
+
return (rule.guides ?? []).map(resolveGuide);
|
|
49
|
+
}
|
|
50
|
+
/** True when the snapshot knows this ID. Used by the tests and the scripts. */
|
|
51
|
+
export function isKnownGuide(id) {
|
|
52
|
+
return Object.hasOwn(guideSnapshot.guides, id);
|
|
53
|
+
}
|
|
54
|
+
export { guideSnapshot };
|
|
55
|
+
//# sourceMappingURL=guides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guides.js","sourceRoot":"","sources":["../src/guides.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG1E;;;;;;;;;;;;GAYG;AAEH,kEAAkE;AAClE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,eAAe;IACtB,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,aAAa,CAAC,IAAI;IACxB,OAAO,EAAE,aAAa,CAAC,OAAO;IAC9B,SAAS,EAAE,aAAa,CAAC,SAAS;CAC1B,CAAC;AAYX,+DAA+D;AAC/D,MAAM,UAAU,YAAY,CAAC,GAAsB;IACjD,OAAO,+CAA+C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,6EAA6E;IAC7E,oEAAoE;IACpE,mEAAmE;IACnE,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,OAAO;QACL,EAAE;QACF,QAAQ,EAAE,QAAQ,IAAI,EAAE;QACxB,GAAG,EAAE,QAAQ;YACX,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,gDAAgD,QAAQ,IAAI,EAAE,KAAK;YAC1F,CAAC,CAAC,IAAI;QACR,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,aAAa,CAAC,IAAU;IACtC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,OAAO,EAAsB,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BaselineHistoryEntry } from "./generated/baseline-history.ts";
|
|
2
|
+
export interface TierShare {
|
|
3
|
+
widely: number;
|
|
4
|
+
newly: number;
|
|
5
|
+
limited: number;
|
|
6
|
+
unknown: number;
|
|
7
|
+
}
|
|
8
|
+
/** Each tier's percentage share of the catalog at that point. Computed, not
|
|
9
|
+
* stored, so the chart isn't fooled by the catalog simply growing. */
|
|
10
|
+
export declare function tierShareOf(entry: BaselineHistoryEntry): TierShare;
|
|
11
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;sEACsE;AACtE,wBAAgB,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,SAAS,CASlE"}
|
package/dist/history.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Each tier's percentage share of the catalog at that point. Computed, not
|
|
2
|
+
* stored, so the chart isn't fooled by the catalog simply growing. */
|
|
3
|
+
export function tierShareOf(entry) {
|
|
4
|
+
const { ruleCount, tally } = entry;
|
|
5
|
+
if (ruleCount === 0)
|
|
6
|
+
return { widely: 0, newly: 0, limited: 0, unknown: 0 };
|
|
7
|
+
return {
|
|
8
|
+
widely: (tally.widely / ruleCount) * 100,
|
|
9
|
+
newly: (tally.newly / ruleCount) * 100,
|
|
10
|
+
limited: (tally.limited / ruleCount) * 100,
|
|
11
|
+
unknown: (tally.unknown / ruleCount) * 100,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AASA;sEACsE;AACtE,MAAM,UAAU,WAAW,CAAC,KAA2B;IACrD,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACnC,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC5E,OAAO;QACL,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG;QACxC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,GAAG;QACtC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,GAAG;QAC1C,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,GAAG;KAC3C,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,10 +4,14 @@
|
|
|
4
4
|
* The rule catalog, the pure detection function, and the Baseline resolution
|
|
5
5
|
* that sits between them. Every surface is a thin adapter over this package.
|
|
6
6
|
*/
|
|
7
|
-
export { BASELINE_DATA_DATE, type BaselineInfo, baselineLabel, baselineRank, baselineShortLabel, combinedSupport, compareBaseline, type ResolvedFeature, resolveBaseline, resolveFeature, TRACKED_BROWSERS, type TrackedBrowser, WEB_FEATURES_VERSION, } from "./baseline.ts";
|
|
7
|
+
export { BASELINE_DATA_DATE, type BaselineInfo, baselineLabel, baselineRank, baselineShortLabel, combinedSupport, compareBaseline, hasNoVersions, type ResolvedFeature, resolveBaseline, resolveFeature, TRACKED_BROWSERS, type TrackedBrowser, unpublishedSupport, WEB_FEATURES_VERSION, } from "./baseline.ts";
|
|
8
|
+
export { CATEGORIES, CATEGORIES_BY_ID, type CategoryId, categorySchema, } from "./categories.ts";
|
|
8
9
|
export { analyze, DEPENDENCY_FIELDS, type DependencyField, type DetectOptions, detect, type Finding, type MatchedPackage, type PackageJsonLike, type Report, type Summary, sortFindings, summarize, } from "./detect.ts";
|
|
9
10
|
export { formatBytes, formatConditional, formatHeadline, formatList, } from "./format.ts";
|
|
11
|
+
export { type BaselineHistory, type BaselineHistoryEntry, baselineHistory, } from "./generated/baseline-history.ts";
|
|
10
12
|
export { packageSizes, type SizeSnapshot } from "./generated/sizes.ts";
|
|
13
|
+
export { GUIDE_SOURCE, type GuideSnapshot, guideCommand, guideSnapshot, isKnownGuide, type ResolvedGuide, resolveGuide, resolveGuides, } from "./guides.ts";
|
|
14
|
+
export { type TierShare, tierShareOf } from "./history.ts";
|
|
11
15
|
export { rules, rulesById, rulesByPackage } from "./rules/index.ts";
|
|
12
16
|
export { type BaselineStatus, baselineStatusSchema, type ManualBaseline, manualBaselineSchema, parseCatalog, type Rule, ruleSchema, SCHEMA_VERSION, } from "./schema.ts";
|
|
13
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,KAAK,eAAe,EACpB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,KAAK,cAAc,EACnB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,MAAM,EACN,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,OAAO,EACZ,YAAY,EACZ,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EACL,KAAK,cAAc,EACnB,oBAAoB,EACpB,KAAK,cAAc,EACnB,oBAAoB,EACpB,YAAY,EACZ,KAAK,IAAI,EACT,UAAU,EACV,cAAc,GACf,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,aAAa,EACb,KAAK,eAAe,EACpB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,KAAK,cAAc,EACnB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,KAAK,UAAU,EACf,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,MAAM,EACN,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,OAAO,EACZ,YAAY,EACZ,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,eAAe,GAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,YAAY,EACZ,KAAK,aAAa,EAClB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,KAAK,aAAa,EAClB,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EACL,KAAK,cAAc,EACnB,oBAAoB,EACpB,KAAK,cAAc,EACnB,oBAAoB,EACpB,YAAY,EACZ,KAAK,IAAI,EACT,UAAU,EACV,cAAc,GACf,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,10 +4,14 @@
|
|
|
4
4
|
* The rule catalog, the pure detection function, and the Baseline resolution
|
|
5
5
|
* that sits between them. Every surface is a thin adapter over this package.
|
|
6
6
|
*/
|
|
7
|
-
export { BASELINE_DATA_DATE, baselineLabel, baselineRank, baselineShortLabel, combinedSupport, compareBaseline, resolveBaseline, resolveFeature, TRACKED_BROWSERS, WEB_FEATURES_VERSION, } from "./baseline.js";
|
|
7
|
+
export { BASELINE_DATA_DATE, baselineLabel, baselineRank, baselineShortLabel, combinedSupport, compareBaseline, hasNoVersions, resolveBaseline, resolveFeature, TRACKED_BROWSERS, unpublishedSupport, WEB_FEATURES_VERSION, } from "./baseline.js";
|
|
8
|
+
export { CATEGORIES, CATEGORIES_BY_ID, categorySchema, } from "./categories.js";
|
|
8
9
|
export { analyze, DEPENDENCY_FIELDS, detect, sortFindings, summarize, } from "./detect.js";
|
|
9
10
|
export { formatBytes, formatConditional, formatHeadline, formatList, } from "./format.js";
|
|
11
|
+
export { baselineHistory, } from "./generated/baseline-history.js";
|
|
10
12
|
export { packageSizes } from "./generated/sizes.js";
|
|
13
|
+
export { GUIDE_SOURCE, guideCommand, guideSnapshot, isKnownGuide, resolveGuide, resolveGuides, } from "./guides.js";
|
|
14
|
+
export { tierShareOf } from "./history.js";
|
|
11
15
|
export { rules, rulesById, rulesByPackage } from "./rules/index.js";
|
|
12
16
|
export { baselineStatusSchema, manualBaselineSchema, parseCatalog, ruleSchema, SCHEMA_VERSION, } from "./schema.js";
|
|
13
17
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAElB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAElB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,aAAa,EAEb,eAAe,EACf,cAAc,EACd,gBAAgB,EAEhB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,gBAAgB,EAEhB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,OAAO,EACP,iBAAiB,EAGjB,MAAM,EAMN,YAAY,EACZ,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAGL,eAAe,GAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAqB,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,YAAY,EAEZ,YAAY,EACZ,aAAa,EACb,YAAY,EAEZ,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAkB,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAEL,oBAAoB,EAEpB,oBAAoB,EACpB,YAAY,EAEZ,UAAU,EACV,cAAc,GACf,MAAM,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abort-controller.d.ts","sourceRoot":"","sources":["../../src/rules/abort-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"abort-controller.d.ts","sourceRoot":"","sources":["../../src/rules/abort-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,eAAe,EAAE,IAyB7B,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export const abortController = {
|
|
2
2
|
id: "abort-controller",
|
|
3
3
|
title: "Cancelling async work",
|
|
4
|
-
|
|
4
|
+
category: "async-data",
|
|
5
|
+
replaces: ["p-cancelable", "cancelable-promise", "abortcontroller-polyfill"],
|
|
5
6
|
featureIds: ["aborting"],
|
|
6
7
|
native: "AbortController and AbortSignal",
|
|
7
8
|
human: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abort-controller.js","sourceRoot":"","sources":["../../src/rules/abort-controller.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,EAAE,EAAE,kBAAkB;IACtB,KAAK,EAAE,uBAAuB;IAC9B,QAAQ,EAAE,CAAC,cAAc,EAAE,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"abort-controller.js","sourceRoot":"","sources":["../../src/rules/abort-controller.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,EAAE,EAAE,kBAAkB;IACtB,KAAK,EAAE,uBAAuB;IAC9B,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,CAAC,cAAc,EAAE,oBAAoB,EAAE,0BAA0B,CAAC;IAC5E,UAAU,EAAE,CAAC,UAAU,CAAC;IACxB,MAAM,EAAE,iCAAiC;IACzC,KAAK,EAAE;QACL,SAAS,EACP,6TAA6T;QAC/T,OAAO,EAAE;;;oBAGO;QAChB,MAAM,EAAE,kEAAkE;KAC3E;IACD,KAAK,EAAE;QACL,IAAI,EAAE,qEAAqE;QAC3E,MAAM,EAAE;YACN,iNAAiN;YACjN,8IAA8I;SAC/I;QACD,OAAO,EAAE;2CAC8B;KACxC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/rules/accordion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/rules/accordion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,SAAS,EAAE,IAsDvB,CAAC"}
|
package/dist/rules/accordion.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export const accordion = {
|
|
2
2
|
id: "exclusive-accordion",
|
|
3
3
|
title: "Accordions",
|
|
4
|
+
category: "forms",
|
|
4
5
|
replaces: ["react-accessible-accordion", "react-collapsible", "accordion-js"],
|
|
5
6
|
featureIds: ["details-name"],
|
|
6
7
|
native: "<details name> for an exclusive accordion",
|
|
@@ -33,6 +34,7 @@ export const accordion = {
|
|
|
33
34
|
agent: {
|
|
34
35
|
when: "building an FAQ or accordion where opening one panel should close the others",
|
|
35
36
|
unless: [
|
|
37
|
+
"Your support target predates the name attribute on <details>. Older browsers ignore it silently rather than failing, so every panel opens independently and the one behaviour this rule promises is the one that quietly does not happen.",
|
|
36
38
|
"You need to animate the panel height. That needs interpolate-size or calc-size(), which is Chromium-only today.",
|
|
37
39
|
"You need several panels open at once with a controlled open state driven by application logic. Drop the name attribute for independent panels, but co-ordinated state still needs JavaScript.",
|
|
38
40
|
"You need the header to be something other than a summary element, for example a heading that also holds a separate action button.",
|
|
@@ -47,5 +49,6 @@ export const accordion = {
|
|
|
47
49
|
<p>Body</p>
|
|
48
50
|
</details>`,
|
|
49
51
|
},
|
|
52
|
+
guides: ["search-hidden-content"],
|
|
50
53
|
};
|
|
51
54
|
//# sourceMappingURL=accordion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../src/rules/accordion.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAS;IAC7B,EAAE,EAAE,qBAAqB;IACzB,KAAK,EAAE,YAAY;IACnB,QAAQ,EAAE,CAAC,4BAA4B,EAAE,mBAAmB,EAAE,cAAc,CAAC;IAC7E,UAAU,EAAE,CAAC,cAAc,CAAC;IAC5B,MAAM,EAAE,2CAA2C;IACnD,KAAK,EAAE;QACL,SAAS,EACP,2WAA2W;QAC7W,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;SAqBJ;QACL,MAAM,EACJ,wEAAwE;KAC3E;IACD,KAAK,EAAE;QACL,IAAI,EAAE,8EAA8E;QACpF,MAAM,EAAE;YACN,iHAAiH;YACjH,+LAA+L;YAC/L,mIAAmI;YACnI,kHAAkH;SACnH;QACD,OAAO,EAAE;;;;;;;WAOF;KACR;
|
|
1
|
+
{"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../src/rules/accordion.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAS;IAC7B,EAAE,EAAE,qBAAqB;IACzB,KAAK,EAAE,YAAY;IACnB,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,CAAC,4BAA4B,EAAE,mBAAmB,EAAE,cAAc,CAAC;IAC7E,UAAU,EAAE,CAAC,cAAc,CAAC;IAC5B,MAAM,EAAE,2CAA2C;IACnD,KAAK,EAAE;QACL,SAAS,EACP,2WAA2W;QAC7W,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;SAqBJ;QACL,MAAM,EACJ,wEAAwE;KAC3E;IACD,KAAK,EAAE;QACL,IAAI,EAAE,8EAA8E;QACpF,MAAM,EAAE;YACN,2OAA2O;YAC3O,iHAAiH;YACjH,+LAA+L;YAC/L,mIAAmI;YACnI,kHAAkH;SACnH;QACD,OAAO,EAAE;;;;;;;WAOF;KACR;IACD,MAAM,EAAE,CAAC,uBAAuB,CAAC;CAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-grouping.d.ts","sourceRoot":"","sources":["../../src/rules/array-grouping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,aAAa,EAAE,IA6B3B,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const arrayGrouping = {
|
|
2
|
+
id: "array-grouping",
|
|
3
|
+
title: "Grouping a list by key",
|
|
4
|
+
category: "async-data",
|
|
5
|
+
replaces: ["lodash.groupby", "just-group-by", "group-array"],
|
|
6
|
+
featureIds: ["array-group"],
|
|
7
|
+
native: "Object.groupBy() and Map.groupBy()",
|
|
8
|
+
human: {
|
|
9
|
+
explainer: 'Grouping a list by some property of each item is one reduce call people would rather not write twice, which is why the single-purpose packages exist. Object.groupBy() does it directly and returns a null-prototype object, so a key like "constructor" cannot collide with anything inherited. Map.groupBy() is the same for keys that are objects or anything else a plain object would stringify.',
|
|
10
|
+
snippet: `const byStatus = Object.groupBy(orders, (order) => order.status);
|
|
11
|
+
// { open: [...], shipped: [...] }
|
|
12
|
+
|
|
13
|
+
// Keys that are not strings keep their identity in a Map.
|
|
14
|
+
const byCustomer = Map.groupBy(orders, (order) => order.customer);`,
|
|
15
|
+
mdnUrl: "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/groupBy",
|
|
16
|
+
},
|
|
17
|
+
agent: {
|
|
18
|
+
when: "bucketing an array into groups keyed by a property of each item",
|
|
19
|
+
unless: [
|
|
20
|
+
"Your support target predates Array grouping becoming Baseline newly available in March 2024, in which case a reduce call or the library is the fallback.",
|
|
21
|
+
"You pass lodash a property name string rather than a function. Object.groupBy always takes a callback, so every call site gains an arrow function.",
|
|
22
|
+
"You depend on the result having Object.prototype. Object.groupBy returns a null-prototype object, so hasOwnProperty, toString and a plain {...spread} into a class all behave differently.",
|
|
23
|
+
"The package is a lodash.* module already shared with other code you are keeping, where removing one of them changes nothing about what ships.",
|
|
24
|
+
"You need the grouping to preserve a specific key order or to sort as it goes, which neither method offers.",
|
|
25
|
+
],
|
|
26
|
+
snippet: "const byStatus = Object.groupBy(items, (item) => item.status);",
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=array-grouping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-grouping.js","sourceRoot":"","sources":["../../src/rules/array-grouping.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAS;IACjC,EAAE,EAAE,gBAAgB;IACpB,KAAK,EAAE,wBAAwB;IAC/B,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,CAAC,gBAAgB,EAAE,eAAe,EAAE,aAAa,CAAC;IAC5D,UAAU,EAAE,CAAC,aAAa,CAAC;IAC3B,MAAM,EAAE,oCAAoC;IAC5C,KAAK,EAAE;QACL,SAAS,EACP,uYAAuY;QACzY,OAAO,EAAE;;;;mEAIsD;QAC/D,MAAM,EACJ,iGAAiG;KACpG;IACD,KAAK,EAAE;QACL,IAAI,EAAE,iEAAiE;QACvE,MAAM,EAAE;YACN,0JAA0J;YAC1J,oJAAoJ;YACpJ,4LAA4L;YAC5L,+IAA+I;YAC/I,4GAA4G;SAC7G;QACD,OAAO,EAAE,gEAAgE;KAC1E;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aspect-ratio.d.ts","sourceRoot":"","sources":["../../src/rules/aspect-ratio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"aspect-ratio.d.ts","sourceRoot":"","sources":["../../src/rules/aspect-ratio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,WAAW,EAAE,IAkCzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aspect-ratio.js","sourceRoot":"","sources":["../../src/rules/aspect-ratio.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,qBAAqB;IAC5B,QAAQ,EAAE,CAAC,oBAAoB,CAAC;IAChC,UAAU,EAAE,CAAC,cAAc,CAAC;IAC5B,MAAM,EAAE,cAAc;IACtB,KAAK,EAAE;QACL,SAAS,EACP,0SAA0S;QAC5S,OAAO,EAAE;;;;;;;;;;;EAWX;QACE,MAAM,EAAE,+DAA+D;KACxE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,oFAAoF;QAC1F,MAAM,EAAE;YACN,0FAA0F;YAC1F,8JAA8J;YAC9J,mEAAmE;SACpE;QACD,OAAO,EAAE;+CACkC;KAC5C;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"aspect-ratio.js","sourceRoot":"","sources":["../../src/rules/aspect-ratio.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,qBAAqB;IAC5B,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,CAAC,oBAAoB,CAAC;IAChC,UAAU,EAAE,CAAC,cAAc,CAAC;IAC5B,MAAM,EAAE,cAAc;IACtB,KAAK,EAAE;QACL,SAAS,EACP,0SAA0S;QAC5S,OAAO,EAAE;;;;;;;;;;;EAWX;QACE,MAAM,EAAE,+DAA+D;KACxE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,oFAAoF;QAC1F,MAAM,EAAE;YACN,0FAA0F;YAC1F,8JAA8J;YAC9J,mEAAmE;SACpE;QACD,OAAO,EAAE;+CACkC;KAC5C;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../src/rules/base64.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,MAAM,EAAE,IAwCpB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export const base64 = {
|
|
2
|
+
id: "base64",
|
|
3
|
+
title: "Base64 encoding",
|
|
4
|
+
category: "async-data",
|
|
5
|
+
replaces: ["js-base64", "base-64", "abab"],
|
|
6
|
+
featureIds: ["base64encodedecode", "text-encoding"],
|
|
7
|
+
native: "btoa() and atob(), with TextEncoder for text",
|
|
8
|
+
human: {
|
|
9
|
+
explainer: "btoa() and atob() have been in browsers since the beginning, and the reason people reach for a library instead is that btoa() throws on any character above U+00FF. Encoding through TextEncoder first fixes that: turn the string into UTF-8 bytes, map them to a binary string, then encode. That is four lines, and it is exactly what the libraries do.",
|
|
10
|
+
snippet: `function encode(text) {
|
|
11
|
+
const bytes = new TextEncoder().encode(text);
|
|
12
|
+
const binary = String.fromCharCode(...bytes);
|
|
13
|
+
return btoa(binary);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function decode(encoded) {
|
|
17
|
+
const binary = atob(encoded);
|
|
18
|
+
const bytes = Uint8Array.from(binary, (c) => c.charCodeAt(0));
|
|
19
|
+
return new TextDecoder().decode(bytes);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
encode("caffè ☕"); // "Y2FmZsOoIOKYlQ=="`,
|
|
23
|
+
mdnUrl: "https://developer.mozilla.org/en-US/docs/Glossary/Base64",
|
|
24
|
+
},
|
|
25
|
+
agent: {
|
|
26
|
+
when: "encoding or decoding base64 in the browser",
|
|
27
|
+
unless: [
|
|
28
|
+
"You encode large binary payloads. String.fromCharCode(...bytes) spreads the whole array onto the stack and blows up past a few hundred thousand bytes, so a chunked loop is needed and the library already has one.",
|
|
29
|
+
"You need URL-safe base64 with the - and _ alphabet and no padding. btoa does not produce it, so the substitution is yours to write on both sides.",
|
|
30
|
+
"You want the encoding to be synchronous and allocation-light on a hot path, where a library tuned for it can beat the two-step conversion.",
|
|
31
|
+
"You are on a runtime where Buffer is available and simpler, such as server code that never runs in a browser.",
|
|
32
|
+
"You rely on the library accepting input types beyond a string, for example ArrayBuffers or streams.",
|
|
33
|
+
],
|
|
34
|
+
snippet: `const bytes = new TextEncoder().encode(text);
|
|
35
|
+
const encoded = btoa(String.fromCharCode(...bytes));
|
|
36
|
+
const decoded = new TextDecoder().decode(
|
|
37
|
+
Uint8Array.from(atob(encoded), (c) => c.charCodeAt(0)),
|
|
38
|
+
);`,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=base64.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/rules/base64.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAS;IAC1B,EAAE,EAAE,QAAQ;IACZ,KAAK,EAAE,iBAAiB;IACxB,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC;IAC1C,UAAU,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;IACnD,MAAM,EAAE,8CAA8C;IACtD,KAAK,EAAE;QACL,SAAS,EACP,6VAA6V;QAC/V,OAAO,EAAE;;;;;;;;;;;;yCAY4B;QACrC,MAAM,EAAE,0DAA0D;KACnE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,4CAA4C;QAClD,MAAM,EAAE;YACN,qNAAqN;YACrN,mJAAmJ;YACnJ,4IAA4I;YAC5I,+GAA+G;YAC/G,qGAAqG;SACtG;QACD,OAAO,EAAE;;;;GAIV;KACA;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcast-channel.d.ts","sourceRoot":"","sources":["../../src/rules/broadcast-channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"broadcast-channel.d.ts","sourceRoot":"","sources":["../../src/rules/broadcast-channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,gBAAgB,EAAE,IAyB9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcast-channel.js","sourceRoot":"","sources":["../../src/rules/broadcast-channel.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAS;IACpC,EAAE,EAAE,mBAAmB;IACvB,KAAK,EAAE,qBAAqB;IAC5B,QAAQ,EAAE,CAAC,mBAAmB,CAAC;IAC/B,UAAU,EAAE,CAAC,mBAAmB,CAAC;IACjC,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE;QACL,SAAS,EACP,oTAAoT;QACtT,OAAO,EAAE;;wDAE2C;QACpD,MAAM,EAAE,mEAAmE;KAC5E;IACD,KAAK,EAAE;QACL,IAAI,EAAE,oEAAoE;QAC1E,MAAM,EAAE;YACN,wIAAwI;YACxI,0GAA0G;YAC1G,0HAA0H;SAC3H;QACD,OAAO,EAAE;uCAC0B;KACpC;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"broadcast-channel.js","sourceRoot":"","sources":["../../src/rules/broadcast-channel.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAS;IACpC,EAAE,EAAE,mBAAmB;IACvB,KAAK,EAAE,qBAAqB;IAC5B,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,CAAC,mBAAmB,CAAC;IAC/B,UAAU,EAAE,CAAC,mBAAmB,CAAC;IACjC,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE;QACL,SAAS,EACP,oTAAoT;QACtT,OAAO,EAAE;;wDAE2C;QACpD,MAAM,EAAE,mEAAmE;KAC5E;IACD,KAAK,EAAE;QACL,IAAI,EAAE,oEAAoE;QAC1E,MAAM,EAAE;YACN,wIAAwI;YACxI,0GAA0G;YAC1G,0HAA0H;SAC3H;QACD,OAAO,EAAE;uCAC0B;KACpC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../src/rules/carousel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../src/rules/carousel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,QAAQ,EAAE,IAwFtB,CAAC"}
|
package/dist/rules/carousel.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export const carousel = {
|
|
2
2
|
id: "carousel-scroll-markers",
|
|
3
3
|
title: "Carousels",
|
|
4
|
+
category: "scrolling",
|
|
4
5
|
replaces: [
|
|
5
6
|
"swiper",
|
|
6
7
|
"embla-carousel",
|
|
@@ -78,5 +79,11 @@ export const carousel = {
|
|
|
78
79
|
.carousel > *::scroll-marker { content: ""; }
|
|
79
80
|
.carousel > *::scroll-marker:target-current { opacity: 1; }`,
|
|
80
81
|
},
|
|
82
|
+
guides: [
|
|
83
|
+
"carousel-snap-highlights",
|
|
84
|
+
"carousel-slide-effects",
|
|
85
|
+
"scroll-snap-state-sync",
|
|
86
|
+
"scroll-snap-realtime-feedback",
|
|
87
|
+
],
|
|
81
88
|
};
|
|
82
89
|
//# sourceMappingURL=carousel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel.js","sourceRoot":"","sources":["../../src/rules/carousel.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAS;IAC5B,EAAE,EAAE,yBAAyB;IAC7B,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE;QACR,QAAQ;QACR,gBAAgB;QAChB,sBAAsB;QACtB,aAAa;QACb,gBAAgB;QAChB,aAAa;QACb,UAAU;QACV,eAAe;QACf,oBAAoB;QACpB,oBAAoB;KACrB;IACD,UAAU,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;IAC/D,MAAM,EAAE,8DAA8D;IACtE,KAAK,EAAE;QACL,SAAS,EACP,2eAA2e;QAC7e,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCX;QACE,OAAO,EAAE,6CAA6C;QACtD,MAAM,EAAE,kEAAkE;KAC3E;IACD,KAAK,EAAE;QACL,IAAI,EAAE,yEAAyE;QAC/E,MAAM,EAAE;YACN,2LAA2L;YAC3L,2GAA2G;YAC3G,2EAA2E;YAC3E,kGAAkG;YAClG,gIAAgI;SACjI;QACD,OAAO,EAAE;;;;;;;;4DAQ+C;KACzD;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"carousel.js","sourceRoot":"","sources":["../../src/rules/carousel.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAS;IAC5B,EAAE,EAAE,yBAAyB;IAC7B,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE;QACR,QAAQ;QACR,gBAAgB;QAChB,sBAAsB;QACtB,aAAa;QACb,gBAAgB;QAChB,aAAa;QACb,UAAU;QACV,eAAe;QACf,oBAAoB;QACpB,oBAAoB;KACrB;IACD,UAAU,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;IAC/D,MAAM,EAAE,8DAA8D;IACtE,KAAK,EAAE;QACL,SAAS,EACP,2eAA2e;QAC7e,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCX;QACE,OAAO,EAAE,6CAA6C;QACtD,MAAM,EAAE,kEAAkE;KAC3E;IACD,KAAK,EAAE;QACL,IAAI,EAAE,yEAAyE;QAC/E,MAAM,EAAE;YACN,2LAA2L;YAC3L,2GAA2G;YAC3G,2EAA2E;YAC3E,kGAAkG;YAClG,gIAAgI;SACjI;QACD,OAAO,EAAE;;;;;;;;4DAQ+C;KACzD;IACD,MAAM,EAAE;QACN,0BAA0B;QAC1B,wBAAwB;QACxB,wBAAwB;QACxB,+BAA+B;KAChC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/rules/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/rules/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,SAAS,EAAE,IAmCvB,CAAC"}
|
package/dist/rules/clipboard.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export const clipboard = {
|
|
2
2
|
id: "clipboard",
|
|
3
3
|
title: "Copy and paste",
|
|
4
|
+
category: "device-apis",
|
|
4
5
|
replaces: [
|
|
5
6
|
"copy-to-clipboard",
|
|
6
7
|
"clipboard-copy",
|
|
@@ -9,6 +10,7 @@ export const clipboard = {
|
|
|
9
10
|
"vue-clipboard3",
|
|
10
11
|
"vue-clipboard2",
|
|
11
12
|
"ngx-clipboard",
|
|
13
|
+
"clipboard-polyfill",
|
|
12
14
|
],
|
|
13
15
|
featureIds: ["async-clipboard"],
|
|
14
16
|
native: "navigator.clipboard.writeText()",
|
|
@@ -22,7 +24,8 @@ export const clipboard = {
|
|
|
22
24
|
agent: {
|
|
23
25
|
when: "copying text to the clipboard on a button click or similar user action",
|
|
24
26
|
unless: [
|
|
25
|
-
"You
|
|
27
|
+
"You support Firefox below {{firefox:api.Clipboard.writeText}} or Safari below {{safari:api.Clipboard.writeText}}, where writeText landed later than in Chrome.",
|
|
28
|
+
"You read from the clipboard as well as writing to it. navigator.clipboard.read() and ClipboardItem arrived years after writeText and are still the part with the thinner support.",
|
|
26
29
|
"You need to read arbitrary clipboard formats rather than plain text. Reading needs a permission prompt in some browsers and is more restricted than writing.",
|
|
27
30
|
"You're running without focus or without a secure origin (HTTPS). The API rejects in both cases, so you still need a fallback path for that error.",
|
|
28
31
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/rules/clipboard.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAS;IAC7B,EAAE,EAAE,WAAW;IACf,KAAK,EAAE,gBAAgB;IACvB,QAAQ,EAAE;QACR,mBAAmB;QACnB,gBAAgB;QAChB,cAAc;QACd,yBAAyB;QACzB,gBAAgB;QAChB,gBAAgB;QAChB,eAAe;
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/rules/clipboard.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAS;IAC7B,EAAE,EAAE,WAAW;IACf,KAAK,EAAE,gBAAgB;IACvB,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE;QACR,mBAAmB;QACnB,gBAAgB;QAChB,cAAc;QACd,yBAAyB;QACzB,gBAAgB;QAChB,gBAAgB;QAChB,eAAe;QACf,oBAAoB;KACrB;IACD,UAAU,EAAE,CAAC,iBAAiB,CAAC;IAC/B,MAAM,EAAE,iCAAiC;IACzC,KAAK,EAAE;QACL,SAAS,EACP,+QAA+Q;QACjR,OAAO,EAAE;;EAEX;QACE,MAAM,EACJ,sEAAsE;KACzE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,wEAAwE;QAC9E,MAAM,EAAE;YACN,gKAAgK;YAChK,mLAAmL;YACnL,8JAA8J;YAC9J,mJAAmJ;SACpJ;QACD,OAAO,EAAE,4CAA4C;KACtD;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-functions.d.ts","sourceRoot":"","sources":["../../src/rules/color-functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"color-functions.d.ts","sourceRoot":"","sources":["../../src/rules/color-functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,cAAc,EAAE,IAmD5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-functions.js","sourceRoot":"","sources":["../../src/rules/color-functions.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,EAAE,EAAE,qBAAqB;IACzB,KAAK,EAAE,qBAAqB;IAC5B,QAAQ,EAAE;QACR,UAAU;QACV,SAAS;QACT,WAAW;QACX,YAAY;QACZ,OAAO;QACP,QAAQ;KACT;IACD,UAAU,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;IAClC,MAAM,EAAE,iDAAiD;IACzD,KAAK,EAAE;QACL,SAAS,EACP,qjBAAqjB;QACvjB,OAAO,EAAE;;;;;;;;;;;;;;;;;EAiBX;QACE,MAAM,EACJ,oEAAoE;KACvE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,mEAAmE;QACzE,MAAM,EAAE;YACN,+KAA+K;YAC/K,6FAA6F;YAC7F,uGAAuG;YACvG,8EAA8E;YAC9E,gNAAgN;SACjN;QACD,OAAO,EAAE;;8DAEiD;KAC3D;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"color-functions.js","sourceRoot":"","sources":["../../src/rules/color-functions.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,EAAE,EAAE,qBAAqB;IACzB,KAAK,EAAE,qBAAqB;IAC5B,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE;QACR,UAAU;QACV,SAAS;QACT,WAAW;QACX,YAAY;QACZ,OAAO;QACP,QAAQ;KACT;IACD,UAAU,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;IAClC,MAAM,EAAE,iDAAiD;IACzD,KAAK,EAAE;QACL,SAAS,EACP,qjBAAqjB;QACvjB,OAAO,EAAE;;;;;;;;;;;;;;;;;EAiBX;QACE,MAAM,EACJ,oEAAoE;KACvE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,mEAAmE;QACzE,MAAM,EAAE;YACN,+KAA+K;YAC/K,6FAA6F;YAC7F,uGAAuG;YACvG,8EAA8E;YAC9E,gNAAgN;SACjN;QACD,OAAO,EAAE;;8DAEiD;KAC3D;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compression-streams.d.ts","sourceRoot":"","sources":["../../src/rules/compression-streams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"compression-streams.d.ts","sourceRoot":"","sources":["../../src/rules/compression-streams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,kBAAkB,EAAE,IA2BhC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export const compressionStreams = {
|
|
2
2
|
id: "compression-streams",
|
|
3
3
|
title: "Gzip and deflate in the browser",
|
|
4
|
+
category: "async-data",
|
|
4
5
|
replaces: ["pako", "lz-string"],
|
|
5
6
|
featureIds: ["compression-streams"],
|
|
6
7
|
native: "CompressionStream and DecompressionStream",
|
|
@@ -15,7 +16,7 @@ const bytes = await compressed.arrayBuffer();`,
|
|
|
15
16
|
agent: {
|
|
16
17
|
when: "compressing or decompressing bytes with gzip or deflate before sending or storing them",
|
|
17
18
|
unless: [
|
|
18
|
-
"You need brotli.
|
|
19
|
+
"You need brotli. CompressionStream takes gzip, deflate and deflate-raw and nothing else, so brotli is a library either way.",
|
|
19
20
|
"You need lz-string's specific format, such as its base64 or UTF-16 encodings meant for squeezing compressed data into localStorage or a URL. CompressionStream only speaks gzip, deflate, and raw deflate.",
|
|
20
21
|
"You need synchronous compression of a small string with no stream setup. CompressionStream is stream-based, so a few lines of glue code are still required at the call site.",
|
|
21
22
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compression-streams.js","sourceRoot":"","sources":["../../src/rules/compression-streams.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAS;IACtC,EAAE,EAAE,qBAAqB;IACzB,KAAK,EAAE,iCAAiC;IACxC,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC/B,UAAU,EAAE,CAAC,qBAAqB,CAAC;IACnC,MAAM,EAAE,2CAA2C;IACnD,KAAK,EAAE;QACL,SAAS,EACP,4UAA4U;QAC9U,OAAO,EAAE;;;8CAGiC;QAC1C,MAAM,EACJ,oEAAoE;KACvE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,wFAAwF;QAC9F,MAAM,EAAE;YACN,
|
|
1
|
+
{"version":3,"file":"compression-streams.js","sourceRoot":"","sources":["../../src/rules/compression-streams.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAS;IACtC,EAAE,EAAE,qBAAqB;IACzB,KAAK,EAAE,iCAAiC;IACxC,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC/B,UAAU,EAAE,CAAC,qBAAqB,CAAC;IACnC,MAAM,EAAE,2CAA2C;IACnD,KAAK,EAAE;QACL,SAAS,EACP,4UAA4U;QAC9U,OAAO,EAAE;;;8CAGiC;QAC1C,MAAM,EACJ,oEAAoE;KACvE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,wFAAwF;QAC9F,MAAM,EAAE;YACN,6HAA6H;YAC7H,4MAA4M;YAC5M,8KAA8K;SAC/K;QACD,OAAO,EACL,uEAAuE;KAC1E;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-queries.d.ts","sourceRoot":"","sources":["../../src/rules/container-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"container-queries.d.ts","sourceRoot":"","sources":["../../src/rules/container-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,gBAAgB,EAAE,IAyD9B,CAAC"}
|