@jomae/catalog 0.7.0 → 0.10.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.
Files changed (300) hide show
  1. package/dist/baseline.d.ts +41 -2
  2. package/dist/baseline.d.ts.map +1 -1
  3. package/dist/baseline.js +52 -10
  4. package/dist/baseline.js.map +1 -1
  5. package/dist/detect.d.ts +26 -0
  6. package/dist/detect.d.ts.map +1 -1
  7. package/dist/detect.js +27 -1
  8. package/dist/detect.js.map +1 -1
  9. package/dist/generated/baseline-history.d.ts.map +1 -1
  10. package/dist/generated/baseline-history.js +17 -5
  11. package/dist/generated/baseline-history.js.map +1 -1
  12. package/dist/generated/baseline.d.ts.map +1 -1
  13. package/dist/generated/baseline.js +411 -35
  14. package/dist/generated/baseline.js.map +1 -1
  15. package/dist/generated/guides.d.ts.map +1 -1
  16. package/dist/generated/guides.js +26 -3
  17. package/dist/generated/guides.js.map +1 -1
  18. package/dist/generated/lint-rules.d.ts +26 -0
  19. package/dist/generated/lint-rules.d.ts.map +1 -0
  20. package/dist/generated/lint-rules.js +361 -0
  21. package/dist/generated/lint-rules.js.map +1 -0
  22. package/dist/generated/sizes.d.ts.map +1 -1
  23. package/dist/generated/sizes.js +408 -38
  24. package/dist/generated/sizes.js.map +1 -1
  25. package/dist/generated/support-claims.d.ts.map +1 -1
  26. package/dist/generated/support-claims.js +34 -3
  27. package/dist/generated/support-claims.js.map +1 -1
  28. package/dist/index.d.ts +5 -3
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +5 -3
  31. package/dist/index.js.map +1 -1
  32. package/dist/lint.d.ts +53 -0
  33. package/dist/lint.d.ts.map +1 -0
  34. package/dist/lint.js +41 -0
  35. package/dist/lint.js.map +1 -0
  36. package/dist/markdown.d.ts +7 -0
  37. package/dist/markdown.d.ts.map +1 -1
  38. package/dist/markdown.js +81 -2
  39. package/dist/markdown.js.map +1 -1
  40. package/dist/rules/abort-controller.d.ts.map +1 -1
  41. package/dist/rules/abort-controller.js +3 -0
  42. package/dist/rules/abort-controller.js.map +1 -1
  43. package/dist/rules/accordion.d.ts.map +1 -1
  44. package/dist/rules/accordion.js +3 -0
  45. package/dist/rules/accordion.js.map +1 -1
  46. package/dist/rules/array-grouping.d.ts.map +1 -1
  47. package/dist/rules/array-grouping.js +1 -0
  48. package/dist/rules/array-grouping.js.map +1 -1
  49. package/dist/rules/aspect-ratio.d.ts.map +1 -1
  50. package/dist/rules/aspect-ratio.js +4 -0
  51. package/dist/rules/aspect-ratio.js.map +1 -1
  52. package/dist/rules/base64.d.ts.map +1 -1
  53. package/dist/rules/base64.js +3 -0
  54. package/dist/rules/base64.js.map +1 -1
  55. package/dist/rules/broadcast-channel.d.ts.map +1 -1
  56. package/dist/rules/broadcast-channel.js +3 -0
  57. package/dist/rules/broadcast-channel.js.map +1 -1
  58. package/dist/rules/carousel.d.ts.map +1 -1
  59. package/dist/rules/carousel.js +5 -0
  60. package/dist/rules/carousel.js.map +1 -1
  61. package/dist/rules/clipboard.d.ts.map +1 -1
  62. package/dist/rules/clipboard.js +3 -0
  63. package/dist/rules/clipboard.js.map +1 -1
  64. package/dist/rules/color-functions.d.ts.map +1 -1
  65. package/dist/rules/color-functions.js +4 -0
  66. package/dist/rules/color-functions.js.map +1 -1
  67. package/dist/rules/container-queries.d.ts.map +1 -1
  68. package/dist/rules/container-queries.js +4 -0
  69. package/dist/rules/container-queries.js.map +1 -1
  70. package/dist/rules/cookie-store.d.ts +3 -0
  71. package/dist/rules/cookie-store.d.ts.map +1 -0
  72. package/dist/rules/cookie-store.js +38 -0
  73. package/dist/rules/cookie-store.js.map +1 -0
  74. package/dist/rules/css-has.d.ts +3 -0
  75. package/dist/rules/css-has.d.ts.map +1 -0
  76. package/dist/rules/css-has.js +35 -0
  77. package/dist/rules/css-has.js.map +1 -0
  78. package/dist/rules/css-nesting.d.ts +3 -0
  79. package/dist/rules/css-nesting.d.ts.map +1 -0
  80. package/dist/rules/css-nesting.js +35 -0
  81. package/dist/rules/css-nesting.js.map +1 -0
  82. package/dist/rules/date-format.d.ts +3 -0
  83. package/dist/rules/date-format.d.ts.map +1 -0
  84. package/dist/rules/date-format.js +33 -0
  85. package/dist/rules/date-format.js.map +1 -0
  86. package/dist/rules/date-time-input.d.ts.map +1 -1
  87. package/dist/rules/date-time-input.js +4 -0
  88. package/dist/rules/date-time-input.js.map +1 -1
  89. package/dist/rules/diacritics.d.ts +3 -0
  90. package/dist/rules/diacritics.d.ts.map +1 -0
  91. package/dist/rules/diacritics.js +34 -0
  92. package/dist/rules/diacritics.js.map +1 -0
  93. package/dist/rules/dialog.d.ts.map +1 -1
  94. package/dist/rules/dialog.js +4 -0
  95. package/dist/rules/dialog.js.map +1 -1
  96. package/dist/rules/discrete-transitions.d.ts.map +1 -1
  97. package/dist/rules/discrete-transitions.js +4 -0
  98. package/dist/rules/discrete-transitions.js.map +1 -1
  99. package/dist/rules/display-names.d.ts +3 -0
  100. package/dist/rules/display-names.d.ts.map +1 -0
  101. package/dist/rules/display-names.js +37 -0
  102. package/dist/rules/display-names.js.map +1 -0
  103. package/dist/rules/drag-and-drop.d.ts.map +1 -1
  104. package/dist/rules/drag-and-drop.js +4 -0
  105. package/dist/rules/drag-and-drop.js.map +1 -1
  106. package/dist/rules/duration-format.d.ts.map +1 -1
  107. package/dist/rules/duration-format.js +3 -0
  108. package/dist/rules/duration-format.js.map +1 -1
  109. package/dist/rules/event-target.d.ts.map +1 -1
  110. package/dist/rules/event-target.js +1 -0
  111. package/dist/rules/event-target.js.map +1 -1
  112. package/dist/rules/fetch.d.ts.map +1 -1
  113. package/dist/rules/fetch.js +4 -0
  114. package/dist/rules/fetch.js.map +1 -1
  115. package/dist/rules/field-sizing.d.ts.map +1 -1
  116. package/dist/rules/field-sizing.js +4 -0
  117. package/dist/rules/field-sizing.js.map +1 -1
  118. package/dist/rules/file-download.d.ts +3 -0
  119. package/dist/rules/file-download.d.ts.map +1 -0
  120. package/dist/rules/file-download.js +40 -0
  121. package/dist/rules/file-download.js.map +1 -0
  122. package/dist/rules/file-drop.d.ts +3 -0
  123. package/dist/rules/file-drop.d.ts.map +1 -0
  124. package/dist/rules/file-drop.js +40 -0
  125. package/dist/rules/file-drop.js.map +1 -0
  126. package/dist/rules/focus-visible.d.ts.map +1 -1
  127. package/dist/rules/focus-visible.js +4 -0
  128. package/dist/rules/focus-visible.js.map +1 -1
  129. package/dist/rules/font-loading.d.ts +3 -0
  130. package/dist/rules/font-loading.d.ts.map +1 -0
  131. package/dist/rules/font-loading.js +33 -0
  132. package/dist/rules/font-loading.js.map +1 -0
  133. package/dist/rules/form-validation.d.ts +3 -0
  134. package/dist/rules/form-validation.d.ts.map +1 -0
  135. package/dist/rules/form-validation.js +40 -0
  136. package/dist/rules/form-validation.js.map +1 -0
  137. package/dist/rules/fullscreen.d.ts.map +1 -1
  138. package/dist/rules/fullscreen.js +3 -0
  139. package/dist/rules/fullscreen.js.map +1 -1
  140. package/dist/rules/height-animation.d.ts.map +1 -1
  141. package/dist/rules/height-animation.js +4 -0
  142. package/dist/rules/height-animation.js.map +1 -1
  143. package/dist/rules/index.d.ts.map +1 -1
  144. package/dist/rules/index.js +50 -0
  145. package/dist/rules/index.js.map +1 -1
  146. package/dist/rules/inert.d.ts.map +1 -1
  147. package/dist/rules/inert.js +6 -0
  148. package/dist/rules/inert.js.map +1 -1
  149. package/dist/rules/intersection-observer.d.ts.map +1 -1
  150. package/dist/rules/intersection-observer.js +1 -0
  151. package/dist/rules/intersection-observer.js.map +1 -1
  152. package/dist/rules/jquery.d.ts +3 -0
  153. package/dist/rules/jquery.d.ts.map +1 -0
  154. package/dist/rules/jquery.js +37 -0
  155. package/dist/rules/jquery.js.map +1 -0
  156. package/dist/rules/lazy-loading.d.ts.map +1 -1
  157. package/dist/rules/lazy-loading.js +4 -0
  158. package/dist/rules/lazy-loading.js.map +1 -1
  159. package/dist/rules/light-dark.d.ts +3 -0
  160. package/dist/rules/light-dark.d.ts.map +1 -0
  161. package/dist/rules/light-dark.js +37 -0
  162. package/dist/rules/light-dark.js.map +1 -0
  163. package/dist/rules/line-clamp.d.ts.map +1 -1
  164. package/dist/rules/line-clamp.js +4 -0
  165. package/dist/rules/line-clamp.js.map +1 -1
  166. package/dist/rules/list-format.d.ts +3 -0
  167. package/dist/rules/list-format.d.ts.map +1 -0
  168. package/dist/rules/list-format.js +40 -0
  169. package/dist/rules/list-format.js.map +1 -0
  170. package/dist/rules/masonry.d.ts.map +1 -1
  171. package/dist/rules/masonry.js +4 -0
  172. package/dist/rules/masonry.js.map +1 -1
  173. package/dist/rules/match-media.d.ts +3 -0
  174. package/dist/rules/match-media.d.ts.map +1 -0
  175. package/dist/rules/match-media.js +36 -0
  176. package/dist/rules/match-media.js.map +1 -0
  177. package/dist/rules/natural-sort.d.ts.map +1 -1
  178. package/dist/rules/natural-sort.js +4 -0
  179. package/dist/rules/natural-sort.js.map +1 -1
  180. package/dist/rules/number-format.d.ts.map +1 -1
  181. package/dist/rules/number-format.js +14 -1
  182. package/dist/rules/number-format.js.map +1 -1
  183. package/dist/rules/page-visibility.d.ts.map +1 -1
  184. package/dist/rules/page-visibility.js +3 -0
  185. package/dist/rules/page-visibility.js.map +1 -1
  186. package/dist/rules/passkeys.d.ts +3 -0
  187. package/dist/rules/passkeys.d.ts.map +1 -0
  188. package/dist/rules/passkeys.js +44 -0
  189. package/dist/rules/passkeys.js.map +1 -0
  190. package/dist/rules/plural-rules.d.ts +3 -0
  191. package/dist/rules/plural-rules.d.ts.map +1 -0
  192. package/dist/rules/plural-rules.js +33 -0
  193. package/dist/rules/plural-rules.js.map +1 -0
  194. package/dist/rules/pointer-events.d.ts +3 -0
  195. package/dist/rules/pointer-events.d.ts.map +1 -0
  196. package/dist/rules/pointer-events.js +43 -0
  197. package/dist/rules/pointer-events.js.map +1 -0
  198. package/dist/rules/popover.d.ts.map +1 -1
  199. package/dist/rules/popover.js +5 -0
  200. package/dist/rules/popover.js.map +1 -1
  201. package/dist/rules/progress-indicator.d.ts +3 -0
  202. package/dist/rules/progress-indicator.d.ts.map +1 -0
  203. package/dist/rules/progress-indicator.js +39 -0
  204. package/dist/rules/progress-indicator.js.map +1 -0
  205. package/dist/rules/random-uuid.d.ts.map +1 -1
  206. package/dist/rules/random-uuid.js +4 -0
  207. package/dist/rules/random-uuid.js.map +1 -1
  208. package/dist/rules/relative-time.d.ts.map +1 -1
  209. package/dist/rules/relative-time.js +4 -0
  210. package/dist/rules/relative-time.js.map +1 -1
  211. package/dist/rules/resizable-panels.d.ts.map +1 -1
  212. package/dist/rules/resizable-panels.js +3 -0
  213. package/dist/rules/resizable-panels.js.map +1 -1
  214. package/dist/rules/resize-observer.d.ts.map +1 -1
  215. package/dist/rules/resize-observer.js +4 -0
  216. package/dist/rules/resize-observer.js.map +1 -1
  217. package/dist/rules/screen-wake-lock.d.ts.map +1 -1
  218. package/dist/rules/screen-wake-lock.js +4 -0
  219. package/dist/rules/screen-wake-lock.js.map +1 -1
  220. package/dist/rules/scroll-animations.d.ts.map +1 -1
  221. package/dist/rules/scroll-animations.js +4 -0
  222. package/dist/rules/scroll-animations.js.map +1 -1
  223. package/dist/rules/scroll-into-view.d.ts +3 -0
  224. package/dist/rules/scroll-into-view.d.ts.map +1 -0
  225. package/dist/rules/scroll-into-view.js +38 -0
  226. package/dist/rules/scroll-into-view.js.map +1 -0
  227. package/dist/rules/scroll-lock.d.ts.map +1 -1
  228. package/dist/rules/scroll-lock.js +3 -0
  229. package/dist/rules/scroll-lock.js.map +1 -1
  230. package/dist/rules/scrollbars.d.ts.map +1 -1
  231. package/dist/rules/scrollbars.js +3 -0
  232. package/dist/rules/scrollbars.js.map +1 -1
  233. package/dist/rules/segmenter.d.ts +3 -0
  234. package/dist/rules/segmenter.d.ts.map +1 -0
  235. package/dist/rules/segmenter.js +45 -0
  236. package/dist/rules/segmenter.js.map +1 -0
  237. package/dist/rules/select.d.ts.map +1 -1
  238. package/dist/rules/select.js +4 -0
  239. package/dist/rules/select.js.map +1 -1
  240. package/dist/rules/server-sent-events.d.ts.map +1 -1
  241. package/dist/rules/server-sent-events.js +4 -0
  242. package/dist/rules/server-sent-events.js.map +1 -1
  243. package/dist/rules/signal-timeout.d.ts +3 -0
  244. package/dist/rules/signal-timeout.d.ts.map +1 -0
  245. package/dist/rules/signal-timeout.js +31 -0
  246. package/dist/rules/signal-timeout.js.map +1 -0
  247. package/dist/rules/smooth-scroll.d.ts.map +1 -1
  248. package/dist/rules/smooth-scroll.js +4 -0
  249. package/dist/rules/smooth-scroll.js.map +1 -1
  250. package/dist/rules/speculation-rules.d.ts +3 -0
  251. package/dist/rules/speculation-rules.d.ts.map +1 -0
  252. package/dist/rules/speculation-rules.js +35 -0
  253. package/dist/rules/speculation-rules.js.map +1 -0
  254. package/dist/rules/sticky.d.ts.map +1 -1
  255. package/dist/rules/sticky.js +4 -0
  256. package/dist/rules/sticky.js.map +1 -1
  257. package/dist/rules/structured-clone.d.ts.map +1 -1
  258. package/dist/rules/structured-clone.js +1 -0
  259. package/dist/rules/structured-clone.js.map +1 -1
  260. package/dist/rules/temporal.d.ts +3 -0
  261. package/dist/rules/temporal.d.ts.map +1 -0
  262. package/dist/rules/temporal.js +34 -0
  263. package/dist/rules/temporal.js.map +1 -0
  264. package/dist/rules/text-wrap-balance.d.ts.map +1 -1
  265. package/dist/rules/text-wrap-balance.js +3 -0
  266. package/dist/rules/text-wrap-balance.js.map +1 -1
  267. package/dist/rules/url-pattern.d.ts +3 -0
  268. package/dist/rules/url-pattern.d.ts.map +1 -0
  269. package/dist/rules/url-pattern.js +40 -0
  270. package/dist/rules/url-pattern.js.map +1 -0
  271. package/dist/rules/url-search-params.d.ts.map +1 -1
  272. package/dist/rules/url-search-params.js +1 -0
  273. package/dist/rules/url-search-params.js.map +1 -1
  274. package/dist/rules/web-animations.d.ts +3 -0
  275. package/dist/rules/web-animations.d.ts.map +1 -0
  276. package/dist/rules/web-animations.js +44 -0
  277. package/dist/rules/web-animations.js.map +1 -0
  278. package/dist/rules/web-crypto.d.ts.map +1 -1
  279. package/dist/rules/web-crypto.js +4 -0
  280. package/dist/rules/web-crypto.js.map +1 -1
  281. package/dist/rules/web-locks.d.ts +3 -0
  282. package/dist/rules/web-locks.d.ts.map +1 -0
  283. package/dist/rules/web-locks.js +39 -0
  284. package/dist/rules/web-locks.js.map +1 -0
  285. package/dist/rules/web-share.d.ts.map +1 -1
  286. package/dist/rules/web-share.js +3 -0
  287. package/dist/rules/web-share.js.map +1 -1
  288. package/dist/rules/with-resolvers.d.ts +3 -0
  289. package/dist/rules/with-resolvers.d.ts.map +1 -0
  290. package/dist/rules/with-resolvers.js +30 -0
  291. package/dist/rules/with-resolvers.js.map +1 -0
  292. package/dist/schema.d.ts +4 -0
  293. package/dist/schema.d.ts.map +1 -1
  294. package/dist/schema.js +34 -0
  295. package/dist/schema.js.map +1 -1
  296. package/dist/tier-diff.d.ts +55 -0
  297. package/dist/tier-diff.d.ts.map +1 -0
  298. package/dist/tier-diff.js +61 -0
  299. package/dist/tier-diff.js.map +1 -0
  300. package/package.json +1 -1
@@ -31,6 +31,9 @@ new Intl.DurationFormat("de", { style: "narrow" }).format({
31
31
  hours: 1,
32
32
  minutes: 30,
33
33
  });`,
34
+ handRolled: [
35
+ "already-split hours, minutes and seconds joined with hardcoded unit labels and plural rules",
36
+ ],
34
37
  },
35
38
  guides: ["format-human-readable-durations"],
36
39
  };
@@ -1 +1 @@
1
- {"version":3,"file":"duration-format.js","sourceRoot":"","sources":["../../src/rules/duration-format.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,EAAE,EAAE,iBAAiB;IACrB,KAAK,EAAE,0BAA0B;IACjC,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,CAAC,mBAAmB,EAAE,WAAW,CAAC;IAC5C,UAAU,EAAE,CAAC,sBAAsB,CAAC;IACpC,MAAM,EAAE,qBAAqB;IAC7B,KAAK,EAAE;QACL,SAAS,EACP,mZAAmZ;QACrZ,OAAO,EAAE;;;;;;;;qBAQQ;QACjB,MAAM,EACJ,sGAAsG;KACzG;IACD,KAAK,EAAE;QACL,IAAI,EAAE,kEAAkE;QACxE,MAAM,EAAE;YACN,wNAAwN;YACxN,wNAAwN;YACxN,gIAAgI;YAChI,kKAAkK;YAClK,+IAA+I;SAChJ;QACD,OAAO,EAAE;;;IAGT;KACD;IACD,MAAM,EAAE,CAAC,iCAAiC,CAAC;CAC5C,CAAC"}
1
+ {"version":3,"file":"duration-format.js","sourceRoot":"","sources":["../../src/rules/duration-format.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,EAAE,EAAE,iBAAiB;IACrB,KAAK,EAAE,0BAA0B;IACjC,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,CAAC,mBAAmB,EAAE,WAAW,CAAC;IAC5C,UAAU,EAAE,CAAC,sBAAsB,CAAC;IACpC,MAAM,EAAE,qBAAqB;IAC7B,KAAK,EAAE;QACL,SAAS,EACP,mZAAmZ;QACrZ,OAAO,EAAE;;;;;;;;qBAQQ;QACjB,MAAM,EACJ,sGAAsG;KACzG;IACD,KAAK,EAAE;QACL,IAAI,EAAE,kEAAkE;QACxE,MAAM,EAAE;YACN,wNAAwN;YACxN,wNAAwN;YACxN,gIAAgI;YAChI,kKAAkK;YAClK,+IAA+I;SAChJ;QACD,OAAO,EAAE;;;IAGT;QACA,UAAU,EAAE;YACV,6FAA6F;SAC9F;KACF;IACD,MAAM,EAAE,CAAC,iCAAiC,CAAC;CAC5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"event-target.d.ts","sourceRoot":"","sources":["../../src/rules/event-target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,WAAW,EAAE,IAkDzB,CAAC"}
1
+ {"version":3,"file":"event-target.d.ts","sourceRoot":"","sources":["../../src/rules/event-target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,WAAW,EAAE,IAmDzB,CAAC"}
@@ -47,5 +47,6 @@ controller.abort();`,
47
47
  bus.addEventListener("ping", (e) => handle(e.detail), { signal });
48
48
  bus.dispatchEvent(new CustomEvent("ping", { detail: payload }));`,
49
49
  },
50
+ lintRule: "unicorn/prefer-event-target",
50
51
  };
51
52
  //# sourceMappingURL=event-target.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-target.js","sourceRoot":"","sources":["../../src/rules/event-target.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,gBAAgB;IACvB,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE;QACR,MAAM;QACN,cAAc;QACd,YAAY;QACZ,eAAe;QACf,eAAe;KAChB;IACD,UAAU,EAAE,EAAE;IACd,cAAc,EAAE;QACd,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,YAAY;QACxB,IAAI,EAAE,ipBAAipB;KACxpB;IACD,MAAM,EAAE,8BAA8B;IACtC,KAAK,EAAE;QACL,SAAS,EACP,kZAAkZ;QACpZ,OAAO,EAAE;;;;;;;;;;;;oBAYO;QAChB,MAAM,EAAE,8DAA8D;KACvE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,oEAAoE;QAC1E,MAAM,EAAE;YACN,8JAA8J;YAC9J,yHAAyH;YACzH,yJAAyJ;YACzJ,qJAAqJ;YACrJ,wTAAwT;YACxT,6IAA6I;SAC9I;QACD,OAAO,EAAE;;iEAEoD;KAC9D;CACF,CAAC"}
1
+ {"version":3,"file":"event-target.js","sourceRoot":"","sources":["../../src/rules/event-target.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,gBAAgB;IACvB,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE;QACR,MAAM;QACN,cAAc;QACd,YAAY;QACZ,eAAe;QACf,eAAe;KAChB;IACD,UAAU,EAAE,EAAE;IACd,cAAc,EAAE;QACd,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,YAAY;QACxB,IAAI,EAAE,ipBAAipB;KACxpB;IACD,MAAM,EAAE,8BAA8B;IACtC,KAAK,EAAE;QACL,SAAS,EACP,kZAAkZ;QACpZ,OAAO,EAAE;;;;;;;;;;;;oBAYO;QAChB,MAAM,EAAE,8DAA8D;KACvE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,oEAAoE;QAC1E,MAAM,EAAE;YACN,8JAA8J;YAC9J,yHAAyH;YACzH,yJAAyJ;YACzJ,qJAAqJ;YACrJ,wTAAwT;YACxT,6IAA6I;SAC9I;QACD,OAAO,EAAE;;iEAEoD;KAC9D;IACD,QAAQ,EAAE,6BAA6B;CACxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/rules/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,SAAS,EAAE,IA6CvB,CAAC"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/rules/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,SAAS,EAAE,IAiDvB,CAAC"}
@@ -41,6 +41,10 @@ const items = await res.json();`,
41
41
  snippet: `const res = await fetch(url, { signal: AbortSignal.timeout(5000) });
42
42
  if (!res.ok) throw new Error(String(res.status));
43
43
  const data = await res.json();`,
44
+ handRolled: [
45
+ "an XMLHttpRequest with an onreadystatechange handler checking readyState === 4, often wrapped in a hand-made Promise",
46
+ "a request helper that sets Content-Type and stringifies the body on every call, written once per project and imported everywhere",
47
+ ],
44
48
  },
45
49
  };
46
50
  //# sourceMappingURL=fetch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/rules/fetch.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAS;IAC7B,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,eAAe;IACtB,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE;QACR,OAAO;QACP,YAAY;QACZ,UAAU;QACV,cAAc;QACd,SAAS;QACT,kBAAkB;QAClB,aAAa;KACd;IACD,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE;QACL,SAAS,EACP,yeAAye;QAC3e,OAAO,EAAE;;;;;;;;;;gCAUmB;QAC5B,MAAM,EAAE,+DAA+D;KACxE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,gFAAgF;QACtF,MAAM,EAAE;YACN,kLAAkL;YAClL,4LAA4L;YAC5L,wKAAwK;YACxK,mNAAmN;YACnN,0HAA0H;YAC1H,ySAAyS;SAC1S;QACD,OAAO,EAAE;;+BAEkB;KAC5B;CACF,CAAC"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/rules/fetch.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAS;IAC7B,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,eAAe;IACtB,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE;QACR,OAAO;QACP,YAAY;QACZ,UAAU;QACV,cAAc;QACd,SAAS;QACT,kBAAkB;QAClB,aAAa;KACd;IACD,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE;QACL,SAAS,EACP,yeAAye;QAC3e,OAAO,EAAE;;;;;;;;;;gCAUmB;QAC5B,MAAM,EAAE,+DAA+D;KACxE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,gFAAgF;QACtF,MAAM,EAAE;YACN,kLAAkL;YAClL,4LAA4L;YAC5L,wKAAwK;YACxK,mNAAmN;YACnN,0HAA0H;YAC1H,ySAAyS;SAC1S;QACD,OAAO,EAAE;;+BAEkB;QAC3B,UAAU,EAAE;YACV,sHAAsH;YACtH,kIAAkI;SACnI;KACF;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"field-sizing.d.ts","sourceRoot":"","sources":["../../src/rules/field-sizing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,WAAW,EAAE,IA6CzB,CAAC"}
1
+ {"version":3,"file":"field-sizing.d.ts","sourceRoot":"","sources":["../../src/rules/field-sizing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,WAAW,EAAE,IAiDzB,CAAC"}
@@ -40,6 +40,10 @@ input[type="text"] {
40
40
  min-height: 3lh;
41
41
  max-height: 12lh;
42
42
  }`,
43
+ handRolled: [
44
+ "an input handler setting style.height to auto and then to scrollHeight in pixels, so the textarea remeasures on every keystroke",
45
+ "a hidden mirror div kept in sync with the textarea's value, measured to decide how tall the real field should be",
46
+ ],
43
47
  },
44
48
  guides: ["form-fields-automatically-fit-contents"],
45
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"field-sizing.js","sourceRoot":"","sources":["../../src/rules/field-sizing.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,wBAAwB;IAC/B,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE;QACR,yBAAyB;QACzB,UAAU;QACV,yBAAyB;QACzB,uBAAuB;QACvB,cAAc;KACf;IACD,UAAU,EAAE,CAAC,cAAc,CAAC;IAC5B,MAAM,EAAE,uBAAuB;IAC/B,KAAK,EAAE;QACL,SAAS,EACP,oYAAoY;QACtY,OAAO,EAAE;;;;;;;;;;;;EAYX;QACE,MAAM,EAAE,+DAA+D;KACxE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,gEAAgE;QACtE,MAAM,EAAE;YACN,iRAAiR;YACjR,yFAAyF;YACzF,mFAAmF;SACpF;QACD,OAAO,EAAE;;;;EAIX;KACC;IACD,MAAM,EAAE,CAAC,wCAAwC,CAAC;CACnD,CAAC"}
1
+ {"version":3,"file":"field-sizing.js","sourceRoot":"","sources":["../../src/rules/field-sizing.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,wBAAwB;IAC/B,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE;QACR,yBAAyB;QACzB,UAAU;QACV,yBAAyB;QACzB,uBAAuB;QACvB,cAAc;KACf;IACD,UAAU,EAAE,CAAC,cAAc,CAAC;IAC5B,MAAM,EAAE,uBAAuB;IAC/B,KAAK,EAAE;QACL,SAAS,EACP,oYAAoY;QACtY,OAAO,EAAE;;;;;;;;;;;;EAYX;QACE,MAAM,EAAE,+DAA+D;KACxE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,gEAAgE;QACtE,MAAM,EAAE;YACN,iRAAiR;YACjR,yFAAyF;YACzF,mFAAmF;SACpF;QACD,OAAO,EAAE;;;;EAIX;QACE,UAAU,EAAE;YACV,iIAAiI;YACjI,kHAAkH;SACnH;KACF;IACD,MAAM,EAAE,CAAC,wCAAwC,CAAC;CACnD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Rule } from "../schema.ts";
2
+ export declare const fileDownload: Rule;
3
+ //# sourceMappingURL=file-download.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-download.d.ts","sourceRoot":"","sources":["../../src/rules/file-download.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,YAAY,EAAE,IAyC1B,CAAC"}
@@ -0,0 +1,40 @@
1
+ export const fileDownload = {
2
+ id: "file-download",
3
+ title: "Saving a generated file",
4
+ category: "async-data",
5
+ replaces: ["file-saver", "downloadjs", "js-file-download"],
6
+ featureIds: ["download", "file"],
7
+ native: "a Blob object URL on a download link",
8
+ human: {
9
+ explainer: "file-saver was written when saving a blob meant branching across engines, including an msSaveBlob path for old IE and Edge. What is left once those are gone is four lines: make a Blob, turn it into an object URL, click a link carrying the download attribute, then revoke the URL. The attribute also supplies the filename, which is the part people usually reach for the library to get.",
10
+ snippet: `function save(blob, filename) {
11
+ const url = URL.createObjectURL(blob);
12
+ const link = document.createElement("a");
13
+ link.href = url;
14
+ link.download = filename;
15
+ link.click();
16
+ // Revoke, or the blob is held in memory until the document goes. Deferred
17
+ // rather than immediate: revoking in the same task cancels the save in
18
+ // some engines, because the fetch behind the download has not started.
19
+ setTimeout(() => URL.revokeObjectURL(url), 0);
20
+ }
21
+
22
+ save(new Blob([csv], { type: "text/csv" }), "report.csv");`,
23
+ mdnUrl: "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#download",
24
+ },
25
+ agent: {
26
+ when: "offering a file the page generated for the user to save",
27
+ unless: [
28
+ "The file is larger than memory allows. A Blob is held in memory, so streaming a big export to disk needs the File System Access API, which is not Baseline.",
29
+ "The link points at another origin. The download attribute is ignored cross-origin, so the browser navigates to the file instead of saving it, and object URLs are same-origin so this only applies when the href is a remote one.",
30
+ "You run inside a WebView or an in-app browser that ignores the attribute. Several do, and the library's fallbacks are what papers over that.",
31
+ "You support browsers below Chrome {{chrome:download}}, Firefox {{firefox:download}} or Safari {{safari:download}}. Safari supported the attribute considerably later than the others.",
32
+ ],
33
+ snippet: 'const url = URL.createObjectURL(blob);\nObject.assign(document.createElement("a"), { href: url, download: name }).click();\nsetTimeout(() => URL.revokeObjectURL(url), 0);',
34
+ handRolled: [
35
+ "a data: URI assigned to window.location to trigger a save, which truncates on larger files",
36
+ "a hidden iframe or form submitted to make the browser treat a response as a download",
37
+ ],
38
+ },
39
+ };
40
+ //# sourceMappingURL=file-download.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-download.js","sourceRoot":"","sources":["../../src/rules/file-download.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAS;IAChC,EAAE,EAAE,eAAe;IACnB,KAAK,EAAE,yBAAyB;IAChC,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,kBAAkB,CAAC;IAC1D,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC;IAChC,MAAM,EAAE,sCAAsC;IAC9C,KAAK,EAAE;QACL,SAAS,EACP,kYAAkY;QACpY,OAAO,EAAE;;;;;;;;;;;;2DAY8C;QACvD,MAAM,EACJ,sEAAsE;KACzE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,yDAAyD;QAC/D,MAAM,EAAE;YACN,6JAA6J;YAC7J,mOAAmO;YACnO,8IAA8I;YAC9I,uLAAuL;SACxL;QACD,OAAO,EACL,4KAA4K;QAC9K,UAAU,EAAE;YACV,4FAA4F;YAC5F,sFAAsF;SACvF;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Rule } from "../schema.ts";
2
+ export declare const fileDrop: Rule;
3
+ //# sourceMappingURL=file-drop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-drop.d.ts","sourceRoot":"","sources":["../../src/rules/file-drop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,QAAQ,EAAE,IAyCtB,CAAC"}
@@ -0,0 +1,40 @@
1
+ export const fileDrop = {
2
+ id: "file-drop",
3
+ title: "File pickers and drop zones",
4
+ category: "forms",
5
+ replaces: ["react-dropzone"],
6
+ featureIds: ["input-file", "input-file-multiple", "draganddrop"],
7
+ native: '<input type="file"> with drop events',
8
+ human: {
9
+ explainer: "A file input already handles choosing files, restricting types through accept, taking several through multiple, and opening the camera on a phone through capture. Adding drag and drop to it is two listeners: preventDefault on dragover so the browser stops treating the drop as navigation, and reading event.dataTransfer.files on drop. What the libraries add on top is previews, validation and upload orchestration.",
10
+ snippet: `<input type="file" id="picker" accept="image/*" multiple>
11
+
12
+ <script>
13
+ const zone = document.getElementById("zone");
14
+
15
+ // Required, or the browser navigates to the dropped file.
16
+ zone.addEventListener("dragover", (event) => event.preventDefault());
17
+
18
+ zone.addEventListener("drop", (event) => {
19
+ event.preventDefault();
20
+ handleFiles(event.dataTransfer.files);
21
+ });
22
+ </script>`,
23
+ mdnUrl: "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file",
24
+ },
25
+ agent: {
26
+ when: "letting someone pick or drop files",
27
+ unless: [
28
+ "You accept dropped folders and walk their contents. That needs webkitGetAsEntry on the dropped items, which the drop event exposes but does not traverse for you, and the recursion is real work.",
29
+ "You want upload progress, chunking, retries or a queue. dropzone does the transfer as well as the picking, and none of that comes from the input.",
30
+ "You render thumbnails and per-file validation state. Reading the files is the easy half; the preview list and its error handling is most of what these libraries are.",
31
+ "You need the drop target to accept files dragged from another application on some older targets, where dataTransfer.items behaves inconsistently.",
32
+ ],
33
+ snippet: 'zone.addEventListener("dragover", (e) => e.preventDefault());\nzone.addEventListener("drop", (e) => { e.preventDefault(); use(e.dataTransfer.files); });',
34
+ handRolled: [
35
+ "a hidden file input triggered by click() from a styled button, wrapped in a component that forwards the change event",
36
+ "dragenter and dragleave counters kept in state to work out whether the pointer is still over the drop zone",
37
+ ],
38
+ },
39
+ };
40
+ //# sourceMappingURL=file-drop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-drop.js","sourceRoot":"","sources":["../../src/rules/file-drop.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAS;IAC5B,EAAE,EAAE,WAAW;IACf,KAAK,EAAE,6BAA6B;IACpC,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,CAAC,gBAAgB,CAAC;IAC5B,UAAU,EAAE,CAAC,YAAY,EAAE,qBAAqB,EAAE,aAAa,CAAC;IAChE,MAAM,EAAE,sCAAsC;IAC9C,KAAK,EAAE;QACL,SAAS,EACP,gaAAga;QACla,OAAO,EAAE;;;;;;;;;;;;UAYH;QACN,MAAM,EACJ,sEAAsE;KACzE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,oCAAoC;QAC1C,MAAM,EAAE;YACN,mMAAmM;YACnM,mJAAmJ;YACnJ,uKAAuK;YACvK,mJAAmJ;SACpJ;QACD,OAAO,EACL,0JAA0J;QAC5J,UAAU,EAAE;YACV,sHAAsH;YACtH,4GAA4G;SAC7G;KACF;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"focus-visible.d.ts","sourceRoot":"","sources":["../../src/rules/focus-visible.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,YAAY,EAAE,IA0B1B,CAAC"}
1
+ {"version":3,"file":"focus-visible.d.ts","sourceRoot":"","sources":["../../src/rules/focus-visible.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,YAAY,EAAE,IA8B1B,CAAC"}
@@ -22,6 +22,10 @@ button:focus-visible {
22
22
  "You need the exact same heuristic across every browser version, including ones that shipped :focus-visible before the spec's behavior settled. Small heuristic differences existed early on.",
23
23
  ],
24
24
  snippet: "button:focus-visible { outline: 2px solid var(--accent); }",
25
+ handRolled: [
26
+ "listening for keydown and mousedown on the document to track whether the last input was a keyboard",
27
+ "toggling a class such as using-keyboard on the body so focus rings can be shown conditionally",
28
+ ],
25
29
  },
26
30
  };
27
31
  //# sourceMappingURL=focus-visible.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"focus-visible.js","sourceRoot":"","sources":["../../src/rules/focus-visible.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAS;IAChC,EAAE,EAAE,eAAe;IACnB,KAAK,EAAE,6BAA6B;IACpC,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,CAAC,eAAe,CAAC;IAC3B,UAAU,EAAE,CAAC,eAAe,CAAC;IAC7B,MAAM,EAAE,gBAAgB;IACxB,KAAK,EAAE;QACL,SAAS,EACP,8XAA8X;QAChY,OAAO,EAAE;;;;;EAKX;QACE,MAAM,EAAE,iEAAiE;KAC1E;IACD,KAAK,EAAE;QACL,IAAI,EAAE,0FAA0F;QAChG,MAAM,EAAE;YACN,gJAAgJ;YAChJ,8LAA8L;SAC/L;QACD,OAAO,EAAE,4DAA4D;KACtE;CACF,CAAC"}
1
+ {"version":3,"file":"focus-visible.js","sourceRoot":"","sources":["../../src/rules/focus-visible.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAS;IAChC,EAAE,EAAE,eAAe;IACnB,KAAK,EAAE,6BAA6B;IACpC,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,CAAC,eAAe,CAAC;IAC3B,UAAU,EAAE,CAAC,eAAe,CAAC;IAC7B,MAAM,EAAE,gBAAgB;IACxB,KAAK,EAAE;QACL,SAAS,EACP,8XAA8X;QAChY,OAAO,EAAE;;;;;EAKX;QACE,MAAM,EAAE,iEAAiE;KAC1E;IACD,KAAK,EAAE;QACL,IAAI,EAAE,0FAA0F;QAChG,MAAM,EAAE;YACN,gJAAgJ;YAChJ,8LAA8L;SAC/L;QACD,OAAO,EAAE,4DAA4D;QACrE,UAAU,EAAE;YACV,oGAAoG;YACpG,+FAA+F;SAChG;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Rule } from "../schema.ts";
2
+ export declare const fontLoading: Rule;
3
+ //# sourceMappingURL=font-loading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"font-loading.d.ts","sourceRoot":"","sources":["../../src/rules/font-loading.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,WAAW,EAAE,IAgCzB,CAAC"}
@@ -0,0 +1,33 @@
1
+ export const fontLoading = {
2
+ id: "font-loading",
3
+ title: "Knowing when a webfont has loaded",
4
+ category: "typography",
5
+ replaces: ["fontfaceobserver", "webfontloader"],
6
+ featureIds: ["font-loading", "font-display"],
7
+ native: "document.fonts with font-display",
8
+ human: {
9
+ explainer: "These libraries were written to answer a question CSS could not: has this font arrived yet. document.fonts.ready resolves once loading settles, and document.fonts.load waits for one family, so the class-swapping dance has a direct replacement. Most uses do not need the question at all, because font-display decides what the browser paints while it waits, and swap is the behaviour the class was usually there to produce.",
10
+ snippet: `@font-face {
11
+ font-family: "Inter";
12
+ src: url("/inter.woff2") format("woff2");
13
+ /* Paint the fallback now, swap when the real one lands. */
14
+ font-display: swap;
15
+ }`,
16
+ mdnUrl: "https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet",
17
+ },
18
+ agent: {
19
+ when: "waiting on a webfont before doing something, or swapping a class once it loads",
20
+ unless: [
21
+ "You correct the layout shift the swap causes by matching the fallback's metrics to the webfont. size-adjust does that and is Baseline. Its companions ascent-override and descent-override have not shipped in Safari at all, so a project tuning all three carefully is not a candidate.",
22
+ "You measure text and need the exact moment the family is usable for that measurement. document.fonts.load resolves for a family and size, and a canvas or a truncation measurement taken a frame early is silently wrong rather than visibly broken.",
23
+ "You load fonts from a provider through webfontloader's module system, such as Typekit or Fonts.com, where the library is fetching the stylesheet as well as watching it.",
24
+ "You depend on the per-stage classes these libraries add to the html element, wf-loading and wf-active among them, which stylesheets across the project may be keyed to.",
25
+ ],
26
+ snippet: "await document.fonts.ready;",
27
+ handRolled: [
28
+ "a canvas or offscreen span whose width is measured repeatedly to work out whether a webfont has replaced the fallback",
29
+ "a setTimeout that adds a fonts-loaded class after a guessed delay, on the assumption the font has arrived by then",
30
+ ],
31
+ },
32
+ };
33
+ //# sourceMappingURL=font-loading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"font-loading.js","sourceRoot":"","sources":["../../src/rules/font-loading.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,mCAAmC;IAC1C,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,CAAC,kBAAkB,EAAE,eAAe,CAAC;IAC/C,UAAU,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;IAC5C,MAAM,EAAE,kCAAkC;IAC1C,KAAK,EAAE;QACL,SAAS,EACP,uaAAua;QACza,OAAO,EAAE;;;;;EAKX;QACE,MAAM,EAAE,8DAA8D;KACvE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,gFAAgF;QACtF,MAAM,EAAE;YACN,2RAA2R;YAC3R,sPAAsP;YACtP,0KAA0K;YAC1K,yKAAyK;SAC1K;QACD,OAAO,EAAE,6BAA6B;QACtC,UAAU,EAAE;YACV,uHAAuH;YACvH,mHAAmH;SACpH;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Rule } from "../schema.ts";
2
+ export declare const formValidation: Rule;
3
+ //# sourceMappingURL=form-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-validation.d.ts","sourceRoot":"","sources":["../../src/rules/form-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,cAAc,EAAE,IAuC5B,CAAC"}
@@ -0,0 +1,40 @@
1
+ export const formValidation = {
2
+ id: "form-validation",
3
+ title: "Form validation",
4
+ category: "forms",
5
+ replaces: ["jquery-validation", "parsleyjs"],
6
+ featureIds: ["constraint-validation", "user-pseudos"],
7
+ native: "constraint validation with :user-invalid",
8
+ human: {
9
+ explainer: "required, type, pattern, min and maxlength already describe what a valid field looks like, and the browser checks them on submit. The reason people reached for a library was the styling: :invalid matches an empty required field before anyone has typed, so a pristine form lights up red. :user-invalid only matches after the field has been interacted with, which is the behaviour those libraries were emulating.",
10
+ snippet: `<input type="email" name="email" required>
11
+
12
+ <style>
13
+ /* Only after the user has typed and left the field. */
14
+ input:user-invalid {
15
+ border-color: crimson;
16
+ }
17
+ input:user-valid {
18
+ border-color: seagreen;
19
+ }
20
+ </style>`,
21
+ mdnUrl: "https://developer.mozilla.org/en-US/docs/Web/CSS/:user-invalid",
22
+ },
23
+ agent: {
24
+ when: "validating form fields and showing which ones are wrong",
25
+ unless: [
26
+ "A field's validity depends on another field, such as confirming a password. That needs setCustomValidity called from your own comparison, which is JavaScript either way.",
27
+ "Validation needs the server, such as checking whether a username is taken. Constraint validation is synchronous and local, so an async check is yours to write and to hold the submit for.",
28
+ "You need error text placed and styled in the page. The browser's own bubble cannot be styled or positioned, so rendering messages means reading validationMessage and turning off novalidate reporting yourself.",
29
+ "You share one validation schema between client and server. These libraries let rules be declared once in JavaScript, and attributes in markup cannot be reused by the server.",
30
+ "Your support target reaches below Chrome {{chrome:user-pseudos}}, Firefox {{firefox:user-pseudos}} or Safari {{safari:user-pseudos}}. Constraint validation itself is much older, so the checking works while the pseudo-class that makes the styling bearable does not.",
31
+ ],
32
+ snippet: "input:user-invalid { border-color: crimson; }",
33
+ handRolled: [
34
+ "a submit handler running a regex against each field's value and collecting error strings into state",
35
+ "a touched or dirty flag tracked per field so an error only appears after the field has been left",
36
+ ],
37
+ },
38
+ guides: ["validate-input-after-interaction", "required-field-feedback"],
39
+ };
40
+ //# sourceMappingURL=form-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-validation.js","sourceRoot":"","sources":["../../src/rules/form-validation.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,EAAE,EAAE,iBAAiB;IACrB,KAAK,EAAE,iBAAiB;IACxB,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,CAAC,mBAAmB,EAAE,WAAW,CAAC;IAC5C,UAAU,EAAE,CAAC,uBAAuB,EAAE,cAAc,CAAC;IACrD,MAAM,EAAE,0CAA0C;IAClD,KAAK,EAAE;QACL,SAAS,EACP,4ZAA4Z;QAC9Z,OAAO,EAAE;;;;;;;;;;SAUJ;QACL,MAAM,EAAE,gEAAgE;KACzE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,yDAAyD;QAC/D,MAAM,EAAE;YACN,2KAA2K;YAC3K,4LAA4L;YAC5L,kNAAkN;YAClN,+KAA+K;YAC/K,0QAA0Q;SAC3Q;QACD,OAAO,EAAE,+CAA+C;QACxD,UAAU,EAAE;YACV,qGAAqG;YACrG,kGAAkG;SACnG;KACF;IACD,MAAM,EAAE,CAAC,kCAAkC,EAAE,yBAAyB,CAAC;CACxE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fullscreen.d.ts","sourceRoot":"","sources":["../../src/rules/fullscreen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,UAAU,EAAE,IA8BxB,CAAC"}
1
+ {"version":3,"file":"fullscreen.d.ts","sourceRoot":"","sources":["../../src/rules/fullscreen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,UAAU,EAAE,IAiCxB,CAAC"}
@@ -24,6 +24,9 @@ export const fullscreen = {
24
24
  "You need the older vendor-prefixed fallback chain screenfull still maintains for browsers this old.",
25
25
  ],
26
26
  snippet: "document.fullscreenElement ? document.exitFullscreen() : el.requestFullscreen();",
27
+ handRolled: [
28
+ "a chain of vendor-prefixed calls such as webkitRequestFullscreen and msRequestFullscreen",
29
+ ],
27
30
  },
28
31
  };
29
32
  //# sourceMappingURL=fullscreen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fullscreen.js","sourceRoot":"","sources":["../../src/rules/fullscreen.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,qBAAqB;IAC5B,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;IAC/D,UAAU,EAAE,CAAC,YAAY,CAAC;IAC1B,MAAM,EAAE,6BAA6B;IACrC,KAAK,EAAE;QACL,SAAS,EACP,gQAAgQ;QAClQ,OAAO,EAAE;;;;;;EAMX;QACE,MAAM,EACJ,4EAA4E;KAC/E;IACD,KAAK,EAAE;QACL,IAAI,EAAE,yFAAyF;QAC/F,MAAM,EAAE;YACN,mHAAmH;YACnH,yIAAyI;YACzI,qGAAqG;SACtG;QACD,OAAO,EACL,kFAAkF;KACrF;CACF,CAAC"}
1
+ {"version":3,"file":"fullscreen.js","sourceRoot":"","sources":["../../src/rules/fullscreen.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,qBAAqB;IAC5B,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;IAC/D,UAAU,EAAE,CAAC,YAAY,CAAC;IAC1B,MAAM,EAAE,6BAA6B;IACrC,KAAK,EAAE;QACL,SAAS,EACP,gQAAgQ;QAClQ,OAAO,EAAE;;;;;;EAMX;QACE,MAAM,EACJ,4EAA4E;KAC/E;IACD,KAAK,EAAE;QACL,IAAI,EAAE,yFAAyF;QAC/F,MAAM,EAAE;YACN,mHAAmH;YACnH,yIAAyI;YACzI,qGAAqG;SACtG;QACD,OAAO,EACL,kFAAkF;QACpF,UAAU,EAAE;YACV,0FAA0F;SAC3F;KACF;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"height-animation.d.ts","sourceRoot":"","sources":["../../src/rules/height-animation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,eAAe,EAAE,IAgD7B,CAAC"}
1
+ {"version":3,"file":"height-animation.d.ts","sourceRoot":"","sources":["../../src/rules/height-animation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,eAAe,EAAE,IAoD7B,CAAC"}
@@ -43,6 +43,10 @@ export const heightAnimation = {
43
43
  snippet: `:root { interpolate-size: allow-keywords; }
44
44
  .panel { height: 0; overflow: hidden; transition: height 0.3s; }
45
45
  .panel[data-open] { height: auto; }`,
46
+ handRolled: [
47
+ "reading scrollHeight and animating max-height to that pixel value to open a panel",
48
+ "a transitionend listener setting height back to auto once an opening animation has finished",
49
+ ],
46
50
  },
47
51
  guides: ["animate-to-intrinsic-sizes", "calculate-with-intrinsic-sizes"],
48
52
  };
@@ -1 +1 @@
1
- {"version":3,"file":"height-animation.js","sourceRoot":"","sources":["../../src/rules/height-animation.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,EAAE,EAAE,uBAAuB;IAC3B,KAAK,EAAE,0BAA0B;IACjC,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,uBAAuB,CAAC;IAC7E,UAAU,EAAE,CAAC,kBAAkB,EAAE,WAAW,CAAC;IAC7C,MAAM,EAAE,kDAAkD;IAC1D,KAAK,EAAE;QACL,SAAS,EACP,ybAAyb;QAC3b,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;EAsBX;QACE,MAAM,EAAE,4DAA4D;KACrE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,qEAAqE;QAC3E,MAAM,EAAE;YACN,4NAA4N;YAC5N,6IAA6I;YAC7I,gGAAgG;YAChG,8GAA8G;SAC/G;QACD,OAAO,EAAE;;oCAEuB;KACjC;IACD,MAAM,EAAE,CAAC,4BAA4B,EAAE,gCAAgC,CAAC;CACzE,CAAC"}
1
+ {"version":3,"file":"height-animation.js","sourceRoot":"","sources":["../../src/rules/height-animation.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,EAAE,EAAE,uBAAuB;IAC3B,KAAK,EAAE,0BAA0B;IACjC,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,uBAAuB,CAAC;IAC7E,UAAU,EAAE,CAAC,kBAAkB,EAAE,WAAW,CAAC;IAC7C,MAAM,EAAE,kDAAkD;IAC1D,KAAK,EAAE;QACL,SAAS,EACP,ybAAyb;QAC3b,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;EAsBX;QACE,MAAM,EAAE,4DAA4D;KACrE;IACD,KAAK,EAAE;QACL,IAAI,EAAE,qEAAqE;QAC3E,MAAM,EAAE;YACN,4NAA4N;YAC5N,6IAA6I;YAC7I,gGAAgG;YAChG,8GAA8G;SAC/G;QACD,OAAO,EAAE;;oCAEuB;QAChC,UAAU,EAAE;YACV,mFAAmF;YACnF,6FAA6F;SAC9F;KACF;IACD,MAAM,EAAE,CAAC,4BAA4B,EAAE,gCAAgC,CAAC;CACzE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AA0JzC;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,IAAI,EAAqC,CAAC;AAEvE,yBAAyB;AACzB,eAAO,MAAM,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAE/C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAEpD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AA4MzC;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,IAAI,EAAqC,CAAC;AAEvE,yBAAyB;AACzB,eAAO,MAAM,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAE/C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAEpD,CAAC"}
@@ -11,50 +11,75 @@ import { colorFunctions } from "./color-functions.js";
11
11
  import { compressionStreams } from "./compression-streams.js";
12
12
  import { containerQueries } from "./container-queries.js";
13
13
  import { contentVisibility } from "./content-visibility.js";
14
+ import { cookieStore } from "./cookie-store.js";
14
15
  import { customHighlight } from "./custom-highlight.js";
16
+ import { dateFormat } from "./date-format.js";
15
17
  import { dateTimeInput } from "./date-time-input.js";
18
+ import { diacritics } from "./diacritics.js";
16
19
  import { dialog } from "./dialog.js";
17
20
  import { discreteTransitions } from "./discrete-transitions.js";
21
+ import { displayNames } from "./display-names.js";
18
22
  import { dragAndDrop } from "./drag-and-drop.js";
19
23
  import { durationFormat } from "./duration-format.js";
20
24
  import { eventTarget } from "./event-target.js";
21
25
  import { fetchRule } from "./fetch.js";
22
26
  import { fieldSizing } from "./field-sizing.js";
27
+ import { fileDownload } from "./file-download.js";
28
+ import { fileDrop } from "./file-drop.js";
23
29
  import { fluidType } from "./fluid-type.js";
24
30
  import { focusVisible } from "./focus-visible.js";
31
+ import { fontLoading } from "./font-loading.js";
32
+ import { formValidation } from "./form-validation.js";
25
33
  import { fullscreen } from "./fullscreen.js";
26
34
  import { heightAnimation } from "./height-animation.js";
27
35
  import { inert } from "./inert.js";
28
36
  import { intersectionObserver } from "./intersection-observer.js";
37
+ import { jquery } from "./jquery.js";
29
38
  import { lazyLoading } from "./lazy-loading.js";
39
+ import { lightDark } from "./light-dark.js";
30
40
  import { lineClamp } from "./line-clamp.js";
41
+ import { listFormat } from "./list-format.js";
31
42
  import { masonry } from "./masonry.js";
43
+ import { matchMedia } from "./match-media.js";
32
44
  import { naturalSort } from "./natural-sort.js";
33
45
  import { numberFormat } from "./number-format.js";
34
46
  import { pageVisibility } from "./page-visibility.js";
47
+ import { passkeys } from "./passkeys.js";
48
+ import { pluralRules } from "./plural-rules.js";
49
+ import { pointerEvents } from "./pointer-events.js";
35
50
  import { popover } from "./popover.js";
51
+ import { progressIndicator } from "./progress-indicator.js";
36
52
  import { randomUuid } from "./random-uuid.js";
37
53
  import { relativeTime } from "./relative-time.js";
38
54
  import { resizablePanels } from "./resizable-panels.js";
39
55
  import { resizeObserver } from "./resize-observer.js";
40
56
  import { screenWakeLock } from "./screen-wake-lock.js";
41
57
  import { scrollAnimations } from "./scroll-animations.js";
58
+ import { scrollIntoView } from "./scroll-into-view.js";
42
59
  import { scrollLock } from "./scroll-lock.js";
43
60
  import { scrollbars } from "./scrollbars.js";
61
+ import { segmenter } from "./segmenter.js";
44
62
  import { select } from "./select.js";
45
63
  import { serverSentEvents } from "./server-sent-events.js";
64
+ import { signalTimeout } from "./signal-timeout.js";
46
65
  import { smoothScroll } from "./smooth-scroll.js";
66
+ import { speculationRules } from "./speculation-rules.js";
47
67
  import { speechRecognition } from "./speech-recognition.js";
48
68
  import { speechSynthesis } from "./speech-synthesis.js";
49
69
  import { sticky } from "./sticky.js";
50
70
  import { structuredCloneRule } from "./structured-clone.js";
71
+ import { temporal } from "./temporal.js";
51
72
  import { textBoxTrim } from "./text-box-trim.js";
52
73
  import { textWrapBalance } from "./text-wrap-balance.js";
74
+ import { urlPattern } from "./url-pattern.js";
53
75
  import { urlSearchParams } from "./url-search-params.js";
54
76
  import { viewTransitions } from "./view-transitions.js";
77
+ import { webAnimations } from "./web-animations.js";
55
78
  import { webBluetooth } from "./web-bluetooth.js";
56
79
  import { webCrypto } from "./web-crypto.js";
80
+ import { webLocks } from "./web-locks.js";
57
81
  import { webShare } from "./web-share.js";
82
+ import { withResolvers } from "./with-resolvers.js";
58
83
  /**
59
84
  * Interpolates the {{browser:key}} tokens a rule's prose uses in place of a
60
85
  * hand-typed browser version. Done once here, so the website, the CLI, the
@@ -102,6 +127,7 @@ const rawRules = [
102
127
  containerQueries,
103
128
  contentVisibility,
104
129
  customHighlight,
130
+ dateFormat,
105
131
  dateTimeInput,
106
132
  dialog,
107
133
  discreteTransitions,
@@ -117,6 +143,22 @@ const rawRules = [
117
143
  lineClamp,
118
144
  masonry,
119
145
  numberFormat,
146
+ diacritics,
147
+ pluralRules,
148
+ lightDark,
149
+ fileDownload,
150
+ fileDrop,
151
+ matchMedia,
152
+ scrollIntoView,
153
+ formValidation,
154
+ jquery,
155
+ passkeys,
156
+ progressIndicator,
157
+ fontLoading,
158
+ pointerEvents,
159
+ cookieStore,
160
+ speculationRules,
161
+ temporal,
120
162
  pageVisibility,
121
163
  popover,
122
164
  relativeTime,
@@ -147,6 +189,14 @@ const rawRules = [
147
189
  serverSentEvents,
148
190
  urlSearchParams,
149
191
  webCrypto,
192
+ webLocks,
193
+ displayNames,
194
+ listFormat,
195
+ webAnimations,
196
+ segmenter,
197
+ urlPattern,
198
+ withResolvers,
199
+ signalTimeout,
150
200
  ];
151
201
  /**
152
202
  * Every rule in the catalog. Order is not significant: surfaces sort by
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,IAAU;IACpC,OAAO;QACL,GAAG,IAAI;QACP,uEAAuE;QACvE,kEAAkE;QAClE,KAAK,EAAE,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;QACvC,MAAM,EAAE,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;QACzC,KAAK,EAAE;YACL,GAAG,IAAI,CAAC,KAAK;YACb,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YACrD,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;SAClD;QACD,KAAK,EAAE;YACL,GAAG,IAAI,CAAC,KAAK;YACb,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC3C,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;YACnD,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;SAClD;QACD,GAAG,CAAC,IAAI,CAAC,cAAc;YACrB,CAAC,CAAC;gBACE,cAAc,EAAE;oBACd,GAAG,IAAI,CAAC,cAAc;oBACtB,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;iBACrD;aACF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,qDAAqD;AACrD,MAAM,QAAQ,GAAoB;IAChC,eAAe;IACf,SAAS;IACT,WAAW;IACX,gBAAgB;IAChB,QAAQ;IACR,SAAS;IACT,cAAc;IACd,kBAAkB;IAClB,gBAAgB;IAChB,iBAAiB;IACjB,eAAe;IACf,aAAa;IACb,MAAM;IACN,mBAAmB;IACnB,WAAW;IACX,WAAW;IACX,SAAS;IACT,YAAY;IACZ,UAAU;IACV,eAAe;IACf,KAAK;IACL,oBAAoB;IACpB,WAAW;IACX,SAAS;IACT,OAAO;IACP,YAAY;IACZ,cAAc;IACd,OAAO;IACP,YAAY;IACZ,eAAe;IACf,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,UAAU;IACV,UAAU;IACV,MAAM;IACN,YAAY;IACZ,iBAAiB;IACjB,eAAe;IACf,MAAM;IACN,mBAAmB;IACnB,WAAW;IACX,eAAe;IACf,eAAe;IACf,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,MAAM;IACN,cAAc;IACd,WAAW;IACX,SAAS;IACT,WAAW;IACX,UAAU;IACV,gBAAgB;IAChB,eAAe;IACf,SAAS;CACV,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAoB,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAEvE,yBAAyB;AACzB,MAAM,CAAC,MAAM,SAAS,GAA8B,IAAI,GAAG,CACzD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CACrC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAA8B,IAAI,GAAG,CAC9D,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAU,CAAC,CAAC,CAC1E,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"inert.d.ts","sourceRoot":"","sources":["../../src/rules/inert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,KAAK,EAAE,IAqCnB,CAAC"}
1
+ {"version":3,"file":"inert.d.ts","sourceRoot":"","sources":["../../src/rules/inert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,KAAK,EAAE,IA2CnB,CAAC"}
@@ -9,6 +9,8 @@ export const inert = {
9
9
  "focus-lock",
10
10
  "vue-focus-lock",
11
11
  "wicg-inert",
12
+ "aria-hidden",
13
+ "@a11y/focus-trap",
12
14
  ],
13
15
  featureIds: ["inert"],
14
16
  native: "the inert attribute",
@@ -31,6 +33,10 @@ export const inert = {
31
33
  ],
32
34
  snippet: `page.inert = true; // opening the overlay
33
35
  page.inert = false; // closing it`,
36
+ handRolled: [
37
+ "a keydown handler watching for Tab and calling preventDefault so focus cannot leave an overlay",
38
+ "a querySelectorAll over a list of focusable selectors, used to decide where focus is allowed to go",
39
+ ],
34
40
  },
35
41
  guides: ["accessibility", "navigation-drawer"],
36
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"inert.js","sourceRoot":"","sources":["../../src/rules/inert.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,KAAK,GAAS;IACzB,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,gBAAgB;IACvB,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE;QACR,YAAY;QACZ,kBAAkB;QAClB,kBAAkB;QAClB,YAAY;QACZ,gBAAgB;QAChB,YAAY;KACb;IACD,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,MAAM,EAAE,qBAAqB;IAC7B,KAAK,EAAE;QACL,SAAS,EACP,wdAAwd;QAC1d,OAAO,EAAE;;;iCAGoB;QAC7B,MAAM,EACJ,qFAAqF;KACxF;IACD,KAAK,EAAE;QACL,IAAI,EAAE,6DAA6D;QACnE,MAAM,EAAE;YACN,sNAAsN;YACtN,kMAAkM;YAClM,2KAA2K;YAC3K,2KAA2K;YAC3K,6NAA6N;SAC9N;QACD,OAAO,EAAE;mCACsB;KAChC;IACD,MAAM,EAAE,CAAC,eAAe,EAAE,mBAAmB,CAAC;CAC/C,CAAC"}
1
+ {"version":3,"file":"inert.js","sourceRoot":"","sources":["../../src/rules/inert.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,KAAK,GAAS;IACzB,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,gBAAgB;IACvB,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE;QACR,YAAY;QACZ,kBAAkB;QAClB,kBAAkB;QAClB,YAAY;QACZ,gBAAgB;QAChB,YAAY;QACZ,aAAa;QACb,kBAAkB;KACnB;IACD,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,MAAM,EAAE,qBAAqB;IAC7B,KAAK,EAAE;QACL,SAAS,EACP,wdAAwd;QAC1d,OAAO,EAAE;;;iCAGoB;QAC7B,MAAM,EACJ,qFAAqF;KACxF;IACD,KAAK,EAAE;QACL,IAAI,EAAE,6DAA6D;QACnE,MAAM,EAAE;YACN,sNAAsN;YACtN,kMAAkM;YAClM,2KAA2K;YAC3K,2KAA2K;YAC3K,6NAA6N;SAC9N;QACD,OAAO,EAAE;mCACsB;QAC/B,UAAU,EAAE;YACV,gGAAgG;YAChG,oGAAoG;SACrG;KACF;IACD,MAAM,EAAE,CAAC,eAAe,EAAE,mBAAmB,CAAC;CAC/C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"intersection-observer.d.ts","sourceRoot":"","sources":["../../src/rules/intersection-observer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,oBAAoB,EAAE,IAqClC,CAAC"}
1
+ {"version":3,"file":"intersection-observer.d.ts","sourceRoot":"","sources":["../../src/rules/intersection-observer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,oBAAoB,EAAE,IAsClC,CAAC"}
@@ -32,5 +32,6 @@ observer.observe(document.querySelector("#target"));`,
32
32
  ],
33
33
  snippet: "new IntersectionObserver((entries) => { ... }, { threshold: 0.5 });",
34
34
  },
35
+ lintRule: "unicorn/prefer-observer-apis",
35
36
  };
36
37
  //# sourceMappingURL=intersection-observer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"intersection-observer.js","sourceRoot":"","sources":["../../src/rules/intersection-observer.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAS;IACxC,EAAE,EAAE,uBAAuB;IAC3B,KAAK,EAAE,qBAAqB;IAC5B,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE;QACR,6BAA6B;QAC7B,yBAAyB;QACzB,mBAAmB;QACnB,8BAA8B;QAC9B,uBAAuB;KACxB;IACD,UAAU,EAAE,CAAC,uBAAuB,CAAC;IACrC,MAAM,EAAE,sBAAsB;IAC9B,KAAK,EAAE;QACL,SAAS,EACP,wTAAwT;QAC1T,OAAO,EAAE;;;;;;;;qDAQwC;QACjD,MAAM,EACJ,4EAA4E;KAC/E;IACD,KAAK,EAAE;QACL,IAAI,EAAE,mIAAmI;QACzI,MAAM,EAAE;YACN,uOAAuO;YACvO,+JAA+J;SAChK;QACD,OAAO,EACL,qEAAqE;KACxE;CACF,CAAC"}
1
+ {"version":3,"file":"intersection-observer.js","sourceRoot":"","sources":["../../src/rules/intersection-observer.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAS;IACxC,EAAE,EAAE,uBAAuB;IAC3B,KAAK,EAAE,qBAAqB;IAC5B,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE;QACR,6BAA6B;QAC7B,yBAAyB;QACzB,mBAAmB;QACnB,8BAA8B;QAC9B,uBAAuB;KACxB;IACD,UAAU,EAAE,CAAC,uBAAuB,CAAC;IACrC,MAAM,EAAE,sBAAsB;IAC9B,KAAK,EAAE;QACL,SAAS,EACP,wTAAwT;QAC1T,OAAO,EAAE;;;;;;;;qDAQwC;QACjD,MAAM,EACJ,4EAA4E;KAC/E;IACD,KAAK,EAAE;QACL,IAAI,EAAE,mIAAmI;QACzI,MAAM,EAAE;YACN,uOAAuO;YACvO,+JAA+J;SAChK;QACD,OAAO,EACL,qEAAqE;KACxE;IACD,QAAQ,EAAE,8BAA8B;CACzC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Rule } from "../schema.ts";
2
+ export declare const jquery: Rule;
3
+ //# sourceMappingURL=jquery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jquery.d.ts","sourceRoot":"","sources":["../../src/rules/jquery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,MAAM,EAAE,IAsCpB,CAAC"}