@redocly/recheck 0.15.0 → 2.58.1

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 (1034) hide show
  1. package/README.md +71 -1886
  2. package/examples/appendices/google.appendix.yaml +1 -1
  3. package/examples/appendices/inclusive-language.appendix.yaml +1 -1
  4. package/examples/appendices/microsoft.appendix.yaml +1 -1
  5. package/examples/appendices/plain-language.appendix.yaml +1 -1
  6. package/examples/appendices/technical-english.appendix.yaml +1 -1
  7. package/examples/google.yaml +7 -7
  8. package/examples/inclusive-language.yaml +7 -7
  9. package/examples/microsoft.yaml +7 -7
  10. package/examples/plain-language.yaml +7 -7
  11. package/examples/technical-english.yaml +7 -7
  12. package/lib/actions/baseline.d.ts +15 -0
  13. package/lib/actions/baseline.d.ts.map +1 -0
  14. package/lib/actions/baseline.js +51 -0
  15. package/lib/actions/baseline.js.map +1 -0
  16. package/lib/actions/lint.d.ts +51 -0
  17. package/lib/actions/lint.d.ts.map +1 -0
  18. package/lib/actions/lint.js +123 -0
  19. package/lib/actions/lint.js.map +1 -0
  20. package/lib/actions/markdoc-schema.d.ts +34 -0
  21. package/lib/actions/markdoc-schema.d.ts.map +1 -0
  22. package/lib/actions/markdoc-schema.js +106 -0
  23. package/lib/actions/markdoc-schema.js.map +1 -0
  24. package/lib/actions/readability.d.ts +25 -0
  25. package/lib/actions/readability.d.ts.map +1 -0
  26. package/lib/actions/readability.js +47 -0
  27. package/lib/actions/readability.js.map +1 -0
  28. package/lib/actions/roots.d.ts +7 -0
  29. package/lib/actions/roots.d.ts.map +1 -0
  30. package/lib/actions/roots.js +36 -0
  31. package/lib/actions/roots.js.map +1 -0
  32. package/lib/config/presets/api-descriptions.d.ts +8 -0
  33. package/lib/config/presets/api-descriptions.d.ts.map +1 -0
  34. package/lib/config/presets/api-descriptions.js +24 -0
  35. package/lib/config/presets/api-descriptions.js.map +1 -0
  36. package/lib/config/presets/google.d.ts +3 -0
  37. package/lib/config/presets/google.d.ts.map +1 -0
  38. package/lib/config/presets/google.js +1086 -0
  39. package/lib/config/presets/google.js.map +1 -0
  40. package/lib/config/presets/inclusive-language.d.ts +3 -0
  41. package/lib/config/presets/inclusive-language.d.ts.map +1 -0
  42. package/lib/config/presets/inclusive-language.js +151 -0
  43. package/lib/config/presets/inclusive-language.js.map +1 -0
  44. package/lib/config/presets/index.d.ts +16 -0
  45. package/lib/config/presets/index.d.ts.map +1 -0
  46. package/lib/config/presets/index.js +38 -0
  47. package/lib/config/presets/index.js.map +1 -0
  48. package/lib/config/presets/markdoc.d.ts +3 -0
  49. package/lib/config/presets/markdoc.d.ts.map +1 -0
  50. package/lib/config/presets/markdoc.js +45 -0
  51. package/lib/config/presets/markdoc.js.map +1 -0
  52. package/lib/config/presets/markdown-relaxed.d.ts +3 -0
  53. package/lib/config/presets/markdown-relaxed.d.ts.map +1 -0
  54. package/lib/config/presets/markdown-relaxed.js +34 -0
  55. package/lib/config/presets/markdown-relaxed.js.map +1 -0
  56. package/lib/config/presets/markdown.d.ts +11 -0
  57. package/lib/config/presets/markdown.d.ts.map +1 -0
  58. package/lib/config/presets/markdown.js +73 -0
  59. package/lib/config/presets/markdown.js.map +1 -0
  60. package/lib/config/presets/microsoft.d.ts +3 -0
  61. package/lib/config/presets/microsoft.d.ts.map +1 -0
  62. package/lib/config/presets/microsoft.js +1260 -0
  63. package/lib/config/presets/microsoft.js.map +1 -0
  64. package/lib/config/presets/minimal.d.ts +3 -0
  65. package/lib/config/presets/minimal.d.ts.map +1 -0
  66. package/lib/config/presets/minimal.js +13 -0
  67. package/lib/config/presets/minimal.js.map +1 -0
  68. package/lib/config/presets/plain-language.d.ts +3 -0
  69. package/lib/config/presets/plain-language.d.ts.map +1 -0
  70. package/lib/config/presets/plain-language.js +175 -0
  71. package/lib/config/presets/plain-language.js.map +1 -0
  72. package/lib/config/presets/prose.d.ts +3 -0
  73. package/lib/config/presets/prose.d.ts.map +1 -0
  74. package/lib/config/presets/prose.js +60 -0
  75. package/lib/config/presets/prose.js.map +1 -0
  76. package/lib/config/presets/technical-english.d.ts +22 -0
  77. package/lib/config/presets/technical-english.d.ts.map +1 -0
  78. package/lib/config/presets/technical-english.js +61 -0
  79. package/lib/config/presets/technical-english.js.map +1 -0
  80. package/lib/config/resolve.d.ts +36 -0
  81. package/lib/config/resolve.d.ts.map +1 -0
  82. package/lib/config/resolve.js +106 -0
  83. package/lib/config/resolve.js.map +1 -0
  84. package/lib/config/schema.d.ts +215 -0
  85. package/lib/config/schema.d.ts.map +1 -0
  86. package/lib/config/schema.js +152 -0
  87. package/lib/config/schema.js.map +1 -0
  88. package/lib/config/validate.d.ts +19 -0
  89. package/lib/config/validate.d.ts.map +1 -0
  90. package/lib/config/validate.js +1049 -0
  91. package/lib/config/validate.js.map +1 -0
  92. package/lib/core/auto-fix.d.ts.map +1 -0
  93. package/lib/core/auto-fix.js +94 -0
  94. package/lib/core/auto-fix.js.map +1 -0
  95. package/lib/core/baseline.d.ts +43 -0
  96. package/lib/core/baseline.d.ts.map +1 -0
  97. package/lib/core/baseline.js +142 -0
  98. package/lib/core/baseline.js.map +1 -0
  99. package/lib/core/case-preserve.d.ts +11 -0
  100. package/lib/core/case-preserve.d.ts.map +1 -0
  101. package/lib/core/case-preserve.js +22 -0
  102. package/lib/core/case-preserve.js.map +1 -0
  103. package/lib/core/directives.d.ts.map +1 -0
  104. package/lib/core/directives.js +66 -0
  105. package/lib/core/directives.js.map +1 -0
  106. package/lib/core/files.d.ts +31 -0
  107. package/lib/core/files.d.ts.map +1 -0
  108. package/lib/core/files.js +184 -0
  109. package/lib/core/files.js.map +1 -0
  110. package/lib/core/inline-code.d.ts +33 -0
  111. package/lib/core/inline-code.d.ts.map +1 -0
  112. package/lib/core/inline-code.js +50 -0
  113. package/lib/core/inline-code.js.map +1 -0
  114. package/lib/core/line-endings.d.ts +13 -0
  115. package/lib/core/line-endings.d.ts.map +1 -0
  116. package/lib/core/line-endings.js +39 -0
  117. package/lib/core/line-endings.js.map +1 -0
  118. package/lib/core/markdoc-tags.d.ts +48 -0
  119. package/lib/core/markdoc-tags.d.ts.map +1 -0
  120. package/lib/core/markdoc-tags.js +102 -0
  121. package/lib/core/markdoc-tags.js.map +1 -0
  122. package/lib/core/prose-extract.d.ts +6 -0
  123. package/lib/core/prose-extract.d.ts.map +1 -0
  124. package/lib/core/prose-extract.js +71 -0
  125. package/lib/core/prose-extract.js.map +1 -0
  126. package/lib/core/readability.d.ts +17 -0
  127. package/lib/core/readability.d.ts.map +1 -0
  128. package/lib/core/readability.js +34 -0
  129. package/lib/core/readability.js.map +1 -0
  130. package/lib/core/rule-filters.d.ts +29 -0
  131. package/lib/core/rule-filters.d.ts.map +1 -0
  132. package/lib/core/rule-filters.js +88 -0
  133. package/lib/core/rule-filters.js.map +1 -0
  134. package/lib/core/runner.d.ts +60 -0
  135. package/lib/core/runner.d.ts.map +1 -0
  136. package/lib/core/runner.js +305 -0
  137. package/lib/core/runner.js.map +1 -0
  138. package/lib/core/summary.d.ts +4 -0
  139. package/lib/core/summary.d.ts.map +1 -0
  140. package/lib/core/summary.js +37 -0
  141. package/lib/core/summary.js.map +1 -0
  142. package/lib/core/timing.d.ts +9 -0
  143. package/lib/core/timing.d.ts.map +1 -0
  144. package/lib/core/timing.js +19 -0
  145. package/lib/core/timing.js.map +1 -0
  146. package/lib/data/markdoc-realm-schema.d.ts.map +1 -0
  147. package/lib/data/markdoc-realm-schema.js +782 -0
  148. package/lib/data/markdoc-realm-schema.js.map +1 -0
  149. package/lib/data/proper-nouns.d.ts.map +1 -0
  150. package/lib/data/proper-nouns.js +42 -0
  151. package/lib/data/proper-nouns.js.map +1 -0
  152. package/lib/data/realm-front-matter-schema.d.ts +12 -0
  153. package/lib/data/realm-front-matter-schema.d.ts.map +1 -0
  154. package/lib/data/realm-front-matter-schema.js +51 -0
  155. package/lib/data/realm-front-matter-schema.js.map +1 -0
  156. package/lib/index.d.ts +81 -0
  157. package/lib/index.d.ts.map +1 -0
  158. package/lib/index.js +114 -0
  159. package/lib/index.js.map +1 -0
  160. package/lib/metrics/formulas.d.ts +9 -0
  161. package/lib/metrics/formulas.d.ts.map +1 -0
  162. package/lib/metrics/formulas.js +59 -0
  163. package/lib/metrics/formulas.js.map +1 -0
  164. package/lib/metrics/statistics.d.ts +14 -0
  165. package/lib/metrics/statistics.d.ts.map +1 -0
  166. package/lib/metrics/statistics.js +35 -0
  167. package/lib/metrics/statistics.js.map +1 -0
  168. package/lib/parser/index.d.ts +13 -0
  169. package/lib/parser/index.d.ts.map +1 -0
  170. package/lib/parser/index.js +123 -0
  171. package/lib/parser/index.js.map +1 -0
  172. package/lib/parser/markdoc/extract-statics.d.ts +28 -0
  173. package/lib/parser/markdoc/extract-statics.d.ts.map +1 -0
  174. package/lib/parser/markdoc/extract-statics.js +80 -0
  175. package/lib/parser/markdoc/extract-statics.js.map +1 -0
  176. package/lib/parser/markdoc/pairing.d.ts +38 -0
  177. package/lib/parser/markdoc/pairing.d.ts.map +1 -0
  178. package/lib/parser/markdoc/pairing.js +77 -0
  179. package/lib/parser/markdoc/pairing.js.map +1 -0
  180. package/lib/parser/markdoc/schema.d.ts +56 -0
  181. package/lib/parser/markdoc/schema.d.ts.map +1 -0
  182. package/lib/parser/markdoc/schema.js +60 -0
  183. package/lib/parser/markdoc/schema.js.map +1 -0
  184. package/lib/parser/markdoc/span.d.ts +52 -0
  185. package/lib/parser/markdoc/span.d.ts.map +1 -0
  186. package/lib/parser/markdoc/span.js +577 -0
  187. package/lib/parser/markdoc/span.js.map +1 -0
  188. package/lib/parser/markdoc/structure.d.ts +17 -0
  189. package/lib/parser/markdoc/structure.d.ts.map +1 -0
  190. package/lib/parser/markdoc/structure.js +121 -0
  191. package/lib/parser/markdoc/structure.js.map +1 -0
  192. package/lib/parser/markdoc/syntax.d.ts +17 -0
  193. package/lib/parser/markdoc/syntax.d.ts.map +1 -0
  194. package/lib/parser/markdoc/syntax.js +262 -0
  195. package/lib/parser/markdoc/syntax.js.map +1 -0
  196. package/lib/parser/types.d.ts.map +1 -0
  197. package/lib/presets.d.ts +6 -0
  198. package/lib/presets.d.ts.map +1 -0
  199. package/lib/presets.js +12 -0
  200. package/lib/presets.js.map +1 -0
  201. package/lib/rules/registry.d.ts +13 -0
  202. package/lib/rules/registry.d.ts.map +1 -0
  203. package/lib/rules/registry.js +54 -0
  204. package/lib/rules/registry.js.map +1 -0
  205. package/lib/rules/scope/capitalization.d.ts.map +1 -0
  206. package/lib/rules/scope/capitalization.js +128 -0
  207. package/lib/rules/scope/capitalization.js.map +1 -0
  208. package/lib/rules/scope/conditional.d.ts.map +1 -0
  209. package/lib/rules/scope/conditional.js +93 -0
  210. package/lib/rules/scope/conditional.js.map +1 -0
  211. package/lib/rules/scope/consistency.d.ts.map +1 -0
  212. package/lib/rules/scope/consistency.js +118 -0
  213. package/lib/rules/scope/consistency.js.map +1 -0
  214. package/lib/rules/scope/length.d.ts.map +1 -0
  215. package/lib/rules/scope/length.js +50 -0
  216. package/lib/rules/scope/length.js.map +1 -0
  217. package/lib/rules/scope/max-image-size.d.ts.map +1 -0
  218. package/lib/rules/scope/max-image-size.js +55 -0
  219. package/lib/rules/scope/max-image-size.js.map +1 -0
  220. package/lib/rules/scope/metric.d.ts +3 -0
  221. package/lib/rules/scope/metric.d.ts.map +1 -0
  222. package/lib/rules/scope/metric.js +59 -0
  223. package/lib/rules/scope/metric.js.map +1 -0
  224. package/lib/rules/scope/occurrence.d.ts.map +1 -0
  225. package/lib/rules/scope/occurrence.js +41 -0
  226. package/lib/rules/scope/occurrence.js.map +1 -0
  227. package/lib/rules/scope/pattern.d.ts.map +1 -0
  228. package/lib/rules/scope/pattern.js +58 -0
  229. package/lib/rules/scope/pattern.js.map +1 -0
  230. package/lib/rules/scope/repetition.d.ts.map +1 -0
  231. package/lib/rules/scope/repetition.js +134 -0
  232. package/lib/rules/scope/repetition.js.map +1 -0
  233. package/lib/rules/scope/semantic-line-breaks.d.ts.map +1 -0
  234. package/lib/rules/scope/semantic-line-breaks.js +180 -0
  235. package/lib/rules/scope/semantic-line-breaks.js.map +1 -0
  236. package/lib/rules/scope/spelling.d.ts +11 -0
  237. package/lib/rules/scope/spelling.d.ts.map +1 -0
  238. package/lib/rules/scope/spelling.js +146 -0
  239. package/lib/rules/scope/spelling.js.map +1 -0
  240. package/lib/rules/scope/swap.d.ts.map +1 -0
  241. package/lib/rules/scope/swap.js +111 -0
  242. package/lib/rules/scope/swap.js.map +1 -0
  243. package/lib/rules/scope/title-case.d.ts +24 -0
  244. package/lib/rules/scope/title-case.d.ts.map +1 -0
  245. package/lib/rules/scope/title-case.js +216 -0
  246. package/lib/rules/scope/title-case.js.map +1 -0
  247. package/lib/rules/token/blanks-around-fences.d.ts.map +1 -0
  248. package/lib/rules/token/blanks-around-fences.js.map +1 -0
  249. package/lib/rules/token/blanks-around-headings.d.ts.map +1 -0
  250. package/lib/rules/token/blanks-around-headings.js +96 -0
  251. package/lib/rules/token/blanks-around-headings.js.map +1 -0
  252. package/lib/rules/token/blanks-around-lists.d.ts.map +1 -0
  253. package/lib/rules/token/blanks-around-lists.js +48 -0
  254. package/lib/rules/token/blanks-around-lists.js.map +1 -0
  255. package/lib/rules/token/blanks-around-tables.d.ts.map +1 -0
  256. package/lib/rules/token/blanks-around-tables.js +40 -0
  257. package/lib/rules/token/blanks-around-tables.js.map +1 -0
  258. package/lib/rules/token/code-block-style.d.ts.map +1 -0
  259. package/lib/rules/token/code-block-style.js.map +1 -0
  260. package/lib/rules/token/code-fence-style.d.ts.map +1 -0
  261. package/lib/rules/token/code-fence-style.js.map +1 -0
  262. package/lib/rules/token/commands-show-output.d.ts.map +1 -0
  263. package/lib/rules/token/commands-show-output.js.map +1 -0
  264. package/lib/rules/token/descriptive-link-text.d.ts.map +1 -0
  265. package/lib/rules/token/descriptive-link-text.js +46 -0
  266. package/lib/rules/token/descriptive-link-text.js.map +1 -0
  267. package/lib/rules/token/fenced-code-language.d.ts.map +1 -0
  268. package/lib/rules/token/fenced-code-language.js.map +1 -0
  269. package/lib/rules/token/first-line-h1.d.ts.map +1 -0
  270. package/lib/rules/token/first-line-h1.js +83 -0
  271. package/lib/rules/token/first-line-h1.js.map +1 -0
  272. package/lib/rules/token/front-matter.d.ts.map +1 -0
  273. package/lib/rules/token/front-matter.js +169 -0
  274. package/lib/rules/token/front-matter.js.map +1 -0
  275. package/lib/rules/token/heading-increment.d.ts.map +1 -0
  276. package/lib/rules/token/heading-increment.js +26 -0
  277. package/lib/rules/token/heading-increment.js.map +1 -0
  278. package/lib/rules/token/heading-start-left.d.ts.map +1 -0
  279. package/lib/rules/token/heading-start-left.js.map +1 -0
  280. package/lib/rules/token/heading-style.d.ts.map +1 -0
  281. package/lib/rules/token/heading-style.js.map +1 -0
  282. package/lib/rules/token/helpers.d.ts +115 -0
  283. package/lib/rules/token/helpers.d.ts.map +1 -0
  284. package/lib/rules/token/helpers.js +502 -0
  285. package/lib/rules/token/helpers.js.map +1 -0
  286. package/lib/rules/token/hr-style.d.ts.map +1 -0
  287. package/lib/rules/token/hr-style.js.map +1 -0
  288. package/lib/rules/token/index.d.ts +65 -0
  289. package/lib/rules/token/index.d.ts.map +1 -0
  290. package/lib/rules/token/index.js +157 -0
  291. package/lib/rules/token/index.js.map +1 -0
  292. package/lib/rules/token/line-length.d.ts.map +1 -0
  293. package/lib/rules/token/line-length.js +96 -0
  294. package/lib/rules/token/line-length.js.map +1 -0
  295. package/lib/rules/token/link-fragments.d.ts.map +1 -0
  296. package/lib/rules/token/link-fragments.js +398 -0
  297. package/lib/rules/token/link-fragments.js.map +1 -0
  298. package/lib/rules/token/link-image-reference-definitions.d.ts.map +1 -0
  299. package/lib/rules/token/link-image-reference-definitions.js.map +1 -0
  300. package/lib/rules/token/link-image-style.d.ts.map +1 -0
  301. package/lib/rules/token/link-image-style.js +138 -0
  302. package/lib/rules/token/link-image-style.js.map +1 -0
  303. package/lib/rules/token/list-indent.d.ts.map +1 -0
  304. package/lib/rules/token/list-indent.js.map +1 -0
  305. package/lib/rules/token/list-length.d.ts.map +1 -0
  306. package/lib/rules/token/list-length.js +31 -0
  307. package/lib/rules/token/list-length.js.map +1 -0
  308. package/lib/rules/token/list-marker-space.d.ts.map +1 -0
  309. package/lib/rules/token/list-marker-space.js.map +1 -0
  310. package/lib/rules/token/markdoc-attributes.d.ts.map +1 -0
  311. package/lib/rules/token/markdoc-attributes.js +198 -0
  312. package/lib/rules/token/markdoc-attributes.js.map +1 -0
  313. package/lib/rules/token/markdoc-pairing.d.ts.map +1 -0
  314. package/lib/rules/token/markdoc-pairing.js +65 -0
  315. package/lib/rules/token/markdoc-pairing.js.map +1 -0
  316. package/lib/rules/token/markdoc-syntax.d.ts.map +1 -0
  317. package/lib/rules/token/markdoc-syntax.js +84 -0
  318. package/lib/rules/token/markdoc-syntax.js.map +1 -0
  319. package/lib/rules/token/markdoc-unknown-tag.d.ts.map +1 -0
  320. package/lib/rules/token/markdoc-unknown-tag.js +44 -0
  321. package/lib/rules/token/markdoc-unknown-tag.js.map +1 -0
  322. package/lib/rules/token/no-alt-text.d.ts.map +1 -0
  323. package/lib/rules/token/no-alt-text.js +43 -0
  324. package/lib/rules/token/no-alt-text.js.map +1 -0
  325. package/lib/rules/token/no-bare-urls.d.ts.map +1 -0
  326. package/lib/rules/token/no-bare-urls.js +74 -0
  327. package/lib/rules/token/no-bare-urls.js.map +1 -0
  328. package/lib/rules/token/no-blanks-blockquote.d.ts.map +1 -0
  329. package/lib/rules/token/no-blanks-blockquote.js.map +1 -0
  330. package/lib/rules/token/no-duplicate-heading.d.ts.map +1 -0
  331. package/lib/rules/token/no-duplicate-heading.js +89 -0
  332. package/lib/rules/token/no-duplicate-heading.js.map +1 -0
  333. package/lib/rules/token/no-duplicate-link-destinations.d.ts.map +1 -0
  334. package/lib/rules/token/no-duplicate-link-destinations.js +54 -0
  335. package/lib/rules/token/no-duplicate-link-destinations.js.map +1 -0
  336. package/lib/rules/token/no-emphasis-as-heading.d.ts.map +1 -0
  337. package/lib/rules/token/no-emphasis-as-heading.js +39 -0
  338. package/lib/rules/token/no-emphasis-as-heading.js.map +1 -0
  339. package/lib/rules/token/no-empty-headings.d.ts.map +1 -0
  340. package/lib/rules/token/no-empty-headings.js +21 -0
  341. package/lib/rules/token/no-empty-headings.js.map +1 -0
  342. package/lib/rules/token/no-empty-links.d.ts.map +1 -0
  343. package/lib/rules/token/no-empty-links.js.map +1 -0
  344. package/lib/rules/token/no-hard-tabs.d.ts.map +1 -0
  345. package/lib/rules/token/no-hard-tabs.js.map +1 -0
  346. package/lib/rules/token/no-inline-html.d.ts.map +1 -0
  347. package/lib/rules/token/no-inline-html.js +41 -0
  348. package/lib/rules/token/no-inline-html.js.map +1 -0
  349. package/lib/rules/token/no-multiple-blanks.d.ts.map +1 -0
  350. package/lib/rules/token/no-multiple-blanks.js.map +1 -0
  351. package/lib/rules/token/no-multiple-space-atx.d.ts +9 -0
  352. package/lib/rules/token/no-multiple-space-atx.d.ts.map +1 -0
  353. package/lib/rules/token/no-multiple-space-atx.js +46 -0
  354. package/lib/rules/token/no-multiple-space-atx.js.map +1 -0
  355. package/lib/rules/token/no-multiple-space-closed-atx.d.ts.map +1 -0
  356. package/lib/rules/token/no-multiple-space-closed-atx.js.map +1 -0
  357. package/lib/rules/token/no-reversed-links.d.ts.map +1 -0
  358. package/lib/rules/token/no-reversed-links.js.map +1 -0
  359. package/lib/rules/token/no-space-in-code.d.ts.map +1 -0
  360. package/lib/rules/token/no-space-in-code.js.map +1 -0
  361. package/lib/rules/token/no-space-in-emphasis.d.ts.map +1 -0
  362. package/lib/rules/token/no-space-in-emphasis.js +72 -0
  363. package/lib/rules/token/no-space-in-emphasis.js.map +1 -0
  364. package/lib/rules/token/no-space-in-links.d.ts.map +1 -0
  365. package/lib/rules/token/no-space-in-links.js.map +1 -0
  366. package/lib/rules/token/no-trailing-punctuation.d.ts.map +1 -0
  367. package/lib/rules/token/no-trailing-punctuation.js.map +1 -0
  368. package/lib/rules/token/no-trailing-spaces.d.ts.map +1 -0
  369. package/lib/rules/token/no-trailing-spaces.js.map +1 -0
  370. package/lib/rules/token/ol-prefix.d.ts.map +1 -0
  371. package/lib/rules/token/ol-prefix.js.map +1 -0
  372. package/lib/rules/token/proper-names.d.ts.map +1 -0
  373. package/lib/rules/token/proper-names.js +87 -0
  374. package/lib/rules/token/proper-names.js.map +1 -0
  375. package/lib/rules/token/reference-links-images.d.ts.map +1 -0
  376. package/lib/rules/token/reference-links-images.js.map +1 -0
  377. package/lib/rules/token/required-headings.d.ts.map +1 -0
  378. package/lib/rules/token/required-headings.js +73 -0
  379. package/lib/rules/token/required-headings.js.map +1 -0
  380. package/lib/rules/token/single-h1.d.ts.map +1 -0
  381. package/lib/rules/token/single-h1.js +43 -0
  382. package/lib/rules/token/single-h1.js.map +1 -0
  383. package/lib/rules/token/table-column-count.d.ts.map +1 -0
  384. package/lib/rules/token/table-column-count.js.map +1 -0
  385. package/lib/rules/token/table-column-style.d.ts.map +1 -0
  386. package/lib/rules/token/table-column-style.js +162 -0
  387. package/lib/rules/token/table-column-style.js.map +1 -0
  388. package/lib/rules/token/table-pipe-style.d.ts.map +1 -0
  389. package/lib/rules/token/table-pipe-style.js.map +1 -0
  390. package/lib/rules/token/ul-indent.d.ts.map +1 -0
  391. package/lib/rules/token/ul-indent.js.map +1 -0
  392. package/lib/rules/token/ul-style.d.ts.map +1 -0
  393. package/lib/rules/token/ul-style.js +70 -0
  394. package/lib/rules/token/ul-style.js.map +1 -0
  395. package/lib/rules/types.d.ts +62 -0
  396. package/lib/rules/types.d.ts.map +1 -0
  397. package/lib/rules/utils.d.ts +18 -0
  398. package/lib/rules/utils.d.ts.map +1 -0
  399. package/lib/rules/utils.js +75 -0
  400. package/lib/rules/utils.js.map +1 -0
  401. package/lib/scopes/extractor.d.ts +6 -0
  402. package/lib/scopes/extractor.d.ts.map +1 -0
  403. package/lib/scopes/extractor.js +398 -0
  404. package/lib/scopes/extractor.js.map +1 -0
  405. package/lib/scopes/selector.d.ts +26 -0
  406. package/lib/scopes/selector.d.ts.map +1 -0
  407. package/lib/scopes/selector.js +78 -0
  408. package/lib/scopes/selector.js.map +1 -0
  409. package/lib/scopes/sentences.d.ts +13 -0
  410. package/lib/scopes/sentences.d.ts.map +1 -0
  411. package/lib/scopes/sentences.js +237 -0
  412. package/lib/scopes/sentences.js.map +1 -0
  413. package/lib/scopes/types.d.ts +35 -0
  414. package/lib/scopes/types.d.ts.map +1 -0
  415. package/lib/scopes/vocabulary.d.ts +12 -0
  416. package/lib/scopes/vocabulary.d.ts.map +1 -0
  417. package/lib/scopes/vocabulary.js +56 -0
  418. package/lib/scopes/vocabulary.js.map +1 -0
  419. package/lib/types/assertions.d.ts +97 -0
  420. package/lib/types/assertions.d.ts.map +1 -0
  421. package/lib/types/reporting.d.ts +23 -0
  422. package/lib/types/reporting.d.ts.map +1 -0
  423. package/lib/types/rules.d.ts +53 -0
  424. package/lib/types/rules.d.ts.map +1 -0
  425. package/lib/types/validation.d.ts +5 -0
  426. package/lib/types/validation.d.ts.map +1 -0
  427. package/lib/utils/is-plain-object.d.ts +2 -0
  428. package/lib/utils/is-plain-object.d.ts.map +1 -0
  429. package/lib/utils/is-plain-object.js +5 -0
  430. package/lib/utils/is-plain-object.js.map +1 -0
  431. package/package.json +58 -61
  432. package/presets/google/PROVENANCE.md +217 -221
  433. package/presets/inclusive-language/PROVENANCE.md +20 -19
  434. package/presets/microsoft/PROVENANCE.md +242 -243
  435. package/presets/plain-language/PROVENANCE.md +66 -60
  436. package/presets/technical-english/PROVENANCE.md +5 -5
  437. package/skills/recheck-config/SKILL.md +70 -20
  438. package/skills/recheck-lint/SKILL.md +37 -13
  439. package/dist/cli.d.ts +0 -3
  440. package/dist/cli.d.ts.map +0 -1
  441. package/dist/cli.js +0 -228
  442. package/dist/cli.js.map +0 -1
  443. package/dist/commands/baseline.d.ts +0 -10
  444. package/dist/commands/baseline.d.ts.map +0 -1
  445. package/dist/commands/baseline.js +0 -59
  446. package/dist/commands/baseline.js.map +0 -1
  447. package/dist/commands/markdoc-schema.d.ts +0 -17
  448. package/dist/commands/markdoc-schema.d.ts.map +0 -1
  449. package/dist/commands/markdoc-schema.js +0 -127
  450. package/dist/commands/markdoc-schema.js.map +0 -1
  451. package/dist/commands/readability.d.ts +0 -10
  452. package/dist/commands/readability.d.ts.map +0 -1
  453. package/dist/commands/readability.js +0 -90
  454. package/dist/commands/readability.js.map +0 -1
  455. package/dist/commands/run.d.ts +0 -21
  456. package/dist/commands/run.d.ts.map +0 -1
  457. package/dist/commands/run.js +0 -236
  458. package/dist/commands/run.js.map +0 -1
  459. package/dist/commands/validate.d.ts +0 -8
  460. package/dist/commands/validate.d.ts.map +0 -1
  461. package/dist/commands/validate.js +0 -43
  462. package/dist/commands/validate.js.map +0 -1
  463. package/dist/config/load.d.ts +0 -33
  464. package/dist/config/load.d.ts.map +0 -1
  465. package/dist/config/load.js +0 -98
  466. package/dist/config/load.js.map +0 -1
  467. package/dist/config/presets/api-descriptions.d.ts +0 -8
  468. package/dist/config/presets/api-descriptions.d.ts.map +0 -1
  469. package/dist/config/presets/api-descriptions.js +0 -24
  470. package/dist/config/presets/api-descriptions.js.map +0 -1
  471. package/dist/config/presets/google.d.ts +0 -3
  472. package/dist/config/presets/google.d.ts.map +0 -1
  473. package/dist/config/presets/google.js +0 -1671
  474. package/dist/config/presets/google.js.map +0 -1
  475. package/dist/config/presets/inclusive-language.d.ts +0 -3
  476. package/dist/config/presets/inclusive-language.d.ts.map +0 -1
  477. package/dist/config/presets/inclusive-language.js +0 -321
  478. package/dist/config/presets/inclusive-language.js.map +0 -1
  479. package/dist/config/presets/index.d.ts +0 -67
  480. package/dist/config/presets/index.d.ts.map +0 -1
  481. package/dist/config/presets/index.js +0 -141
  482. package/dist/config/presets/index.js.map +0 -1
  483. package/dist/config/presets/markdoc.d.ts +0 -21
  484. package/dist/config/presets/markdoc.d.ts.map +0 -1
  485. package/dist/config/presets/markdoc.js +0 -101
  486. package/dist/config/presets/markdoc.js.map +0 -1
  487. package/dist/config/presets/markdown-relaxed.d.ts +0 -3
  488. package/dist/config/presets/markdown-relaxed.d.ts.map +0 -1
  489. package/dist/config/presets/markdown-relaxed.js +0 -98
  490. package/dist/config/presets/markdown-relaxed.js.map +0 -1
  491. package/dist/config/presets/markdown.d.ts +0 -43
  492. package/dist/config/presets/markdown.d.ts.map +0 -1
  493. package/dist/config/presets/markdown.js +0 -132
  494. package/dist/config/presets/markdown.js.map +0 -1
  495. package/dist/config/presets/microsoft.d.ts +0 -3
  496. package/dist/config/presets/microsoft.d.ts.map +0 -1
  497. package/dist/config/presets/microsoft.js +0 -2268
  498. package/dist/config/presets/microsoft.js.map +0 -1
  499. package/dist/config/presets/minimal.d.ts +0 -3
  500. package/dist/config/presets/minimal.d.ts.map +0 -1
  501. package/dist/config/presets/minimal.js +0 -21
  502. package/dist/config/presets/minimal.js.map +0 -1
  503. package/dist/config/presets/plain-language.d.ts +0 -3
  504. package/dist/config/presets/plain-language.d.ts.map +0 -1
  505. package/dist/config/presets/plain-language.js +0 -351
  506. package/dist/config/presets/plain-language.js.map +0 -1
  507. package/dist/config/presets/prose.d.ts +0 -52
  508. package/dist/config/presets/prose.d.ts.map +0 -1
  509. package/dist/config/presets/prose.js +0 -138
  510. package/dist/config/presets/prose.js.map +0 -1
  511. package/dist/config/presets/technical-english.d.ts +0 -34
  512. package/dist/config/presets/technical-english.d.ts.map +0 -1
  513. package/dist/config/presets/technical-english.js +0 -79
  514. package/dist/config/presets/technical-english.js.map +0 -1
  515. package/dist/config/schema.d.ts +0 -226
  516. package/dist/config/schema.d.ts.map +0 -1
  517. package/dist/config/schema.js +0 -196
  518. package/dist/config/schema.js.map +0 -1
  519. package/dist/config/validate.d.ts +0 -22
  520. package/dist/config/validate.d.ts.map +0 -1
  521. package/dist/config/validate.js +0 -1315
  522. package/dist/config/validate.js.map +0 -1
  523. package/dist/core/auto-fix.d.ts.map +0 -1
  524. package/dist/core/auto-fix.js +0 -101
  525. package/dist/core/auto-fix.js.map +0 -1
  526. package/dist/core/baseline.d.ts +0 -49
  527. package/dist/core/baseline.d.ts.map +0 -1
  528. package/dist/core/baseline.js +0 -0
  529. package/dist/core/baseline.js.map +0 -1
  530. package/dist/core/case-preserve.d.ts +0 -46
  531. package/dist/core/case-preserve.d.ts.map +0 -1
  532. package/dist/core/case-preserve.js +0 -57
  533. package/dist/core/case-preserve.js.map +0 -1
  534. package/dist/core/directives.d.ts.map +0 -1
  535. package/dist/core/directives.js +0 -73
  536. package/dist/core/directives.js.map +0 -1
  537. package/dist/core/files.d.ts +0 -69
  538. package/dist/core/files.d.ts.map +0 -1
  539. package/dist/core/files.js +0 -260
  540. package/dist/core/files.js.map +0 -1
  541. package/dist/core/inline-code.d.ts +0 -87
  542. package/dist/core/inline-code.d.ts.map +0 -1
  543. package/dist/core/inline-code.js +0 -104
  544. package/dist/core/inline-code.js.map +0 -1
  545. package/dist/core/line-endings.d.ts +0 -32
  546. package/dist/core/line-endings.d.ts.map +0 -1
  547. package/dist/core/line-endings.js +0 -65
  548. package/dist/core/line-endings.js.map +0 -1
  549. package/dist/core/markdoc-tags.d.ts +0 -79
  550. package/dist/core/markdoc-tags.d.ts.map +0 -1
  551. package/dist/core/markdoc-tags.js +0 -131
  552. package/dist/core/markdoc-tags.js.map +0 -1
  553. package/dist/core/prose-extract.d.ts +0 -6
  554. package/dist/core/prose-extract.d.ts.map +0 -1
  555. package/dist/core/prose-extract.js +0 -79
  556. package/dist/core/prose-extract.js.map +0 -1
  557. package/dist/core/readability.d.ts +0 -17
  558. package/dist/core/readability.d.ts.map +0 -1
  559. package/dist/core/readability.js +0 -37
  560. package/dist/core/readability.js.map +0 -1
  561. package/dist/core/rule-filters.d.ts +0 -45
  562. package/dist/core/rule-filters.d.ts.map +0 -1
  563. package/dist/core/rule-filters.js +0 -118
  564. package/dist/core/rule-filters.js.map +0 -1
  565. package/dist/core/runner.d.ts +0 -98
  566. package/dist/core/runner.d.ts.map +0 -1
  567. package/dist/core/runner.js +0 -401
  568. package/dist/core/runner.js.map +0 -1
  569. package/dist/core/timing.d.ts +0 -24
  570. package/dist/core/timing.d.ts.map +0 -1
  571. package/dist/core/timing.js +0 -39
  572. package/dist/core/timing.js.map +0 -1
  573. package/dist/data/markdoc-realm-schema.d.ts.map +0 -1
  574. package/dist/data/markdoc-realm-schema.js +0 -798
  575. package/dist/data/markdoc-realm-schema.js.map +0 -1
  576. package/dist/data/proper-nouns.d.ts.map +0 -1
  577. package/dist/data/proper-nouns.js +0 -47
  578. package/dist/data/proper-nouns.js.map +0 -1
  579. package/dist/data/realm-front-matter-schema.d.ts +0 -28
  580. package/dist/data/realm-front-matter-schema.d.ts.map +0 -1
  581. package/dist/data/realm-front-matter-schema.js +0 -73
  582. package/dist/data/realm-front-matter-schema.js.map +0 -1
  583. package/dist/index.d.ts +0 -90
  584. package/dist/index.d.ts.map +0 -1
  585. package/dist/index.js +0 -152
  586. package/dist/index.js.map +0 -1
  587. package/dist/metrics/formulas.d.ts +0 -17
  588. package/dist/metrics/formulas.d.ts.map +0 -1
  589. package/dist/metrics/formulas.js +0 -70
  590. package/dist/metrics/formulas.js.map +0 -1
  591. package/dist/metrics/statistics.d.ts +0 -27
  592. package/dist/metrics/statistics.d.ts.map +0 -1
  593. package/dist/metrics/statistics.js +0 -56
  594. package/dist/metrics/statistics.js.map +0 -1
  595. package/dist/parser/index.d.ts +0 -19
  596. package/dist/parser/index.d.ts.map +0 -1
  597. package/dist/parser/index.js +0 -174
  598. package/dist/parser/index.js.map +0 -1
  599. package/dist/parser/markdoc/extract-statics.d.ts +0 -45
  600. package/dist/parser/markdoc/extract-statics.d.ts.map +0 -1
  601. package/dist/parser/markdoc/extract-statics.js +0 -139
  602. package/dist/parser/markdoc/extract-statics.js.map +0 -1
  603. package/dist/parser/markdoc/pairing.d.ts +0 -63
  604. package/dist/parser/markdoc/pairing.d.ts.map +0 -1
  605. package/dist/parser/markdoc/pairing.js +0 -94
  606. package/dist/parser/markdoc/pairing.js.map +0 -1
  607. package/dist/parser/markdoc/schema.d.ts +0 -85
  608. package/dist/parser/markdoc/schema.d.ts.map +0 -1
  609. package/dist/parser/markdoc/schema.js +0 -86
  610. package/dist/parser/markdoc/schema.js.map +0 -1
  611. package/dist/parser/markdoc/span.d.ts +0 -64
  612. package/dist/parser/markdoc/span.d.ts.map +0 -1
  613. package/dist/parser/markdoc/span.js +0 -729
  614. package/dist/parser/markdoc/span.js.map +0 -1
  615. package/dist/parser/markdoc/structure.d.ts +0 -28
  616. package/dist/parser/markdoc/structure.d.ts.map +0 -1
  617. package/dist/parser/markdoc/structure.js +0 -153
  618. package/dist/parser/markdoc/structure.js.map +0 -1
  619. package/dist/parser/markdoc/syntax.d.ts +0 -44
  620. package/dist/parser/markdoc/syntax.d.ts.map +0 -1
  621. package/dist/parser/markdoc/syntax.js +0 -317
  622. package/dist/parser/markdoc/syntax.js.map +0 -1
  623. package/dist/parser/types.d.ts.map +0 -1
  624. package/dist/reporter/fixes.d.ts +0 -3
  625. package/dist/reporter/fixes.d.ts.map +0 -1
  626. package/dist/reporter/fixes.js +0 -41
  627. package/dist/reporter/fixes.js.map +0 -1
  628. package/dist/reporter/formats/github-actions.d.ts +0 -6
  629. package/dist/reporter/formats/github-actions.d.ts.map +0 -1
  630. package/dist/reporter/formats/github-actions.js +0 -20
  631. package/dist/reporter/formats/github-actions.js.map +0 -1
  632. package/dist/reporter/formats/json.d.ts +0 -10
  633. package/dist/reporter/formats/json.d.ts.map +0 -1
  634. package/dist/reporter/formats/json.js +0 -25
  635. package/dist/reporter/formats/json.js.map +0 -1
  636. package/dist/reporter/formats/sarif.d.ts +0 -10
  637. package/dist/reporter/formats/sarif.d.ts.map +0 -1
  638. package/dist/reporter/formats/sarif.js +0 -66
  639. package/dist/reporter/formats/sarif.js.map +0 -1
  640. package/dist/reporter/formats/table.d.ts +0 -6
  641. package/dist/reporter/formats/table.d.ts.map +0 -1
  642. package/dist/reporter/formats/table.js +0 -43
  643. package/dist/reporter/formats/table.js.map +0 -1
  644. package/dist/reporter/index.d.ts +0 -10
  645. package/dist/reporter/index.d.ts.map +0 -1
  646. package/dist/reporter/index.js +0 -42
  647. package/dist/reporter/index.js.map +0 -1
  648. package/dist/reporter/prioritize-problems.d.ts +0 -7
  649. package/dist/reporter/prioritize-problems.d.ts.map +0 -1
  650. package/dist/reporter/prioritize-problems.js +0 -29
  651. package/dist/reporter/prioritize-problems.js.map +0 -1
  652. package/dist/reporter/statistics.d.ts +0 -10
  653. package/dist/reporter/statistics.d.ts.map +0 -1
  654. package/dist/reporter/statistics.js +0 -52
  655. package/dist/reporter/statistics.js.map +0 -1
  656. package/dist/reporter/summary.d.ts +0 -10
  657. package/dist/reporter/summary.d.ts.map +0 -1
  658. package/dist/reporter/summary.js +0 -49
  659. package/dist/reporter/summary.js.map +0 -1
  660. package/dist/rules/registry.d.ts +0 -15
  661. package/dist/rules/registry.d.ts.map +0 -1
  662. package/dist/rules/registry.js +0 -81
  663. package/dist/rules/registry.js.map +0 -1
  664. package/dist/rules/scope/capitalization.d.ts.map +0 -1
  665. package/dist/rules/scope/capitalization.js +0 -164
  666. package/dist/rules/scope/capitalization.js.map +0 -1
  667. package/dist/rules/scope/conditional.d.ts.map +0 -1
  668. package/dist/rules/scope/conditional.js +0 -112
  669. package/dist/rules/scope/conditional.js.map +0 -1
  670. package/dist/rules/scope/consistency.d.ts.map +0 -1
  671. package/dist/rules/scope/consistency.js +0 -179
  672. package/dist/rules/scope/consistency.js.map +0 -1
  673. package/dist/rules/scope/length.d.ts.map +0 -1
  674. package/dist/rules/scope/length.js +0 -73
  675. package/dist/rules/scope/length.js.map +0 -1
  676. package/dist/rules/scope/max-image-size.d.ts.map +0 -1
  677. package/dist/rules/scope/max-image-size.js +0 -65
  678. package/dist/rules/scope/max-image-size.js.map +0 -1
  679. package/dist/rules/scope/metric.d.ts +0 -5
  680. package/dist/rules/scope/metric.d.ts.map +0 -1
  681. package/dist/rules/scope/metric.js +0 -74
  682. package/dist/rules/scope/metric.js.map +0 -1
  683. package/dist/rules/scope/occurrence.d.ts.map +0 -1
  684. package/dist/rules/scope/occurrence.js +0 -48
  685. package/dist/rules/scope/occurrence.js.map +0 -1
  686. package/dist/rules/scope/pattern.d.ts.map +0 -1
  687. package/dist/rules/scope/pattern.js +0 -75
  688. package/dist/rules/scope/pattern.js.map +0 -1
  689. package/dist/rules/scope/repetition.d.ts.map +0 -1
  690. package/dist/rules/scope/repetition.js +0 -139
  691. package/dist/rules/scope/repetition.js.map +0 -1
  692. package/dist/rules/scope/semantic-line-breaks.d.ts.map +0 -1
  693. package/dist/rules/scope/semantic-line-breaks.js +0 -236
  694. package/dist/rules/scope/semantic-line-breaks.js.map +0 -1
  695. package/dist/rules/scope/spelling.d.ts +0 -27
  696. package/dist/rules/scope/spelling.d.ts.map +0 -1
  697. package/dist/rules/scope/spelling.js +0 -227
  698. package/dist/rules/scope/spelling.js.map +0 -1
  699. package/dist/rules/scope/swap.d.ts.map +0 -1
  700. package/dist/rules/scope/swap.js +0 -149
  701. package/dist/rules/scope/swap.js.map +0 -1
  702. package/dist/rules/scope/title-case.d.ts +0 -46
  703. package/dist/rules/scope/title-case.d.ts.map +0 -1
  704. package/dist/rules/scope/title-case.js +0 -301
  705. package/dist/rules/scope/title-case.js.map +0 -1
  706. package/dist/rules/token/blanks-around-fences.d.ts.map +0 -1
  707. package/dist/rules/token/blanks-around-fences.js.map +0 -1
  708. package/dist/rules/token/blanks-around-headings.d.ts.map +0 -1
  709. package/dist/rules/token/blanks-around-headings.js +0 -108
  710. package/dist/rules/token/blanks-around-headings.js.map +0 -1
  711. package/dist/rules/token/blanks-around-lists.d.ts.map +0 -1
  712. package/dist/rules/token/blanks-around-lists.js +0 -56
  713. package/dist/rules/token/blanks-around-lists.js.map +0 -1
  714. package/dist/rules/token/blanks-around-tables.d.ts.map +0 -1
  715. package/dist/rules/token/blanks-around-tables.js +0 -42
  716. package/dist/rules/token/blanks-around-tables.js.map +0 -1
  717. package/dist/rules/token/code-block-style.d.ts.map +0 -1
  718. package/dist/rules/token/code-block-style.js.map +0 -1
  719. package/dist/rules/token/code-fence-style.d.ts.map +0 -1
  720. package/dist/rules/token/code-fence-style.js.map +0 -1
  721. package/dist/rules/token/commands-show-output.d.ts.map +0 -1
  722. package/dist/rules/token/commands-show-output.js.map +0 -1
  723. package/dist/rules/token/descriptive-link-text.d.ts.map +0 -1
  724. package/dist/rules/token/descriptive-link-text.js +0 -53
  725. package/dist/rules/token/descriptive-link-text.js.map +0 -1
  726. package/dist/rules/token/fenced-code-language.d.ts.map +0 -1
  727. package/dist/rules/token/fenced-code-language.js.map +0 -1
  728. package/dist/rules/token/first-line-h1.d.ts.map +0 -1
  729. package/dist/rules/token/first-line-h1.js +0 -107
  730. package/dist/rules/token/first-line-h1.js.map +0 -1
  731. package/dist/rules/token/front-matter.d.ts.map +0 -1
  732. package/dist/rules/token/front-matter.js +0 -177
  733. package/dist/rules/token/front-matter.js.map +0 -1
  734. package/dist/rules/token/heading-increment.d.ts.map +0 -1
  735. package/dist/rules/token/heading-increment.js +0 -27
  736. package/dist/rules/token/heading-increment.js.map +0 -1
  737. package/dist/rules/token/heading-start-left.d.ts.map +0 -1
  738. package/dist/rules/token/heading-start-left.js.map +0 -1
  739. package/dist/rules/token/heading-style.d.ts.map +0 -1
  740. package/dist/rules/token/heading-style.js.map +0 -1
  741. package/dist/rules/token/helpers.d.ts +0 -313
  742. package/dist/rules/token/helpers.d.ts.map +0 -1
  743. package/dist/rules/token/helpers.js +0 -746
  744. package/dist/rules/token/helpers.js.map +0 -1
  745. package/dist/rules/token/hr-style.d.ts.map +0 -1
  746. package/dist/rules/token/hr-style.js.map +0 -1
  747. package/dist/rules/token/index.d.ts +0 -76
  748. package/dist/rules/token/index.d.ts.map +0 -1
  749. package/dist/rules/token/index.js +0 -229
  750. package/dist/rules/token/index.js.map +0 -1
  751. package/dist/rules/token/line-length.d.ts.map +0 -1
  752. package/dist/rules/token/line-length.js +0 -120
  753. package/dist/rules/token/line-length.js.map +0 -1
  754. package/dist/rules/token/link-fragments.d.ts.map +0 -1
  755. package/dist/rules/token/link-fragments.js +0 -393
  756. package/dist/rules/token/link-fragments.js.map +0 -1
  757. package/dist/rules/token/link-image-reference-definitions.d.ts.map +0 -1
  758. package/dist/rules/token/link-image-reference-definitions.js.map +0 -1
  759. package/dist/rules/token/link-image-style.d.ts.map +0 -1
  760. package/dist/rules/token/link-image-style.js +0 -131
  761. package/dist/rules/token/link-image-style.js.map +0 -1
  762. package/dist/rules/token/list-indent.d.ts.map +0 -1
  763. package/dist/rules/token/list-indent.js.map +0 -1
  764. package/dist/rules/token/list-length.d.ts.map +0 -1
  765. package/dist/rules/token/list-length.js +0 -55
  766. package/dist/rules/token/list-length.js.map +0 -1
  767. package/dist/rules/token/list-marker-space.d.ts.map +0 -1
  768. package/dist/rules/token/list-marker-space.js.map +0 -1
  769. package/dist/rules/token/markdoc-attributes.d.ts.map +0 -1
  770. package/dist/rules/token/markdoc-attributes.js +0 -269
  771. package/dist/rules/token/markdoc-attributes.js.map +0 -1
  772. package/dist/rules/token/markdoc-pairing.d.ts.map +0 -1
  773. package/dist/rules/token/markdoc-pairing.js +0 -73
  774. package/dist/rules/token/markdoc-pairing.js.map +0 -1
  775. package/dist/rules/token/markdoc-syntax.d.ts.map +0 -1
  776. package/dist/rules/token/markdoc-syntax.js +0 -119
  777. package/dist/rules/token/markdoc-syntax.js.map +0 -1
  778. package/dist/rules/token/markdoc-unknown-tag.d.ts.map +0 -1
  779. package/dist/rules/token/markdoc-unknown-tag.js +0 -64
  780. package/dist/rules/token/markdoc-unknown-tag.js.map +0 -1
  781. package/dist/rules/token/no-alt-text.d.ts.map +0 -1
  782. package/dist/rules/token/no-alt-text.js +0 -47
  783. package/dist/rules/token/no-alt-text.js.map +0 -1
  784. package/dist/rules/token/no-bare-urls.d.ts.map +0 -1
  785. package/dist/rules/token/no-bare-urls.js +0 -88
  786. package/dist/rules/token/no-bare-urls.js.map +0 -1
  787. package/dist/rules/token/no-blanks-blockquote.d.ts.map +0 -1
  788. package/dist/rules/token/no-blanks-blockquote.js.map +0 -1
  789. package/dist/rules/token/no-duplicate-heading.d.ts.map +0 -1
  790. package/dist/rules/token/no-duplicate-heading.js +0 -101
  791. package/dist/rules/token/no-duplicate-heading.js.map +0 -1
  792. package/dist/rules/token/no-duplicate-link-destinations.d.ts.map +0 -1
  793. package/dist/rules/token/no-duplicate-link-destinations.js +0 -65
  794. package/dist/rules/token/no-duplicate-link-destinations.js.map +0 -1
  795. package/dist/rules/token/no-emphasis-as-heading.d.ts.map +0 -1
  796. package/dist/rules/token/no-emphasis-as-heading.js +0 -44
  797. package/dist/rules/token/no-emphasis-as-heading.js.map +0 -1
  798. package/dist/rules/token/no-empty-headings.d.ts.map +0 -1
  799. package/dist/rules/token/no-empty-headings.js +0 -28
  800. package/dist/rules/token/no-empty-headings.js.map +0 -1
  801. package/dist/rules/token/no-empty-links.d.ts.map +0 -1
  802. package/dist/rules/token/no-empty-links.js.map +0 -1
  803. package/dist/rules/token/no-hard-tabs.d.ts.map +0 -1
  804. package/dist/rules/token/no-hard-tabs.js.map +0 -1
  805. package/dist/rules/token/no-inline-html.d.ts.map +0 -1
  806. package/dist/rules/token/no-inline-html.js +0 -45
  807. package/dist/rules/token/no-inline-html.js.map +0 -1
  808. package/dist/rules/token/no-multiple-blanks.d.ts.map +0 -1
  809. package/dist/rules/token/no-multiple-blanks.js.map +0 -1
  810. package/dist/rules/token/no-multiple-space-atx.d.ts +0 -13
  811. package/dist/rules/token/no-multiple-space-atx.d.ts.map +0 -1
  812. package/dist/rules/token/no-multiple-space-atx.js +0 -50
  813. package/dist/rules/token/no-multiple-space-atx.js.map +0 -1
  814. package/dist/rules/token/no-multiple-space-closed-atx.d.ts.map +0 -1
  815. package/dist/rules/token/no-multiple-space-closed-atx.js.map +0 -1
  816. package/dist/rules/token/no-reversed-links.d.ts.map +0 -1
  817. package/dist/rules/token/no-reversed-links.js.map +0 -1
  818. package/dist/rules/token/no-space-in-code.d.ts.map +0 -1
  819. package/dist/rules/token/no-space-in-code.js.map +0 -1
  820. package/dist/rules/token/no-space-in-emphasis.d.ts.map +0 -1
  821. package/dist/rules/token/no-space-in-emphasis.js +0 -79
  822. package/dist/rules/token/no-space-in-emphasis.js.map +0 -1
  823. package/dist/rules/token/no-space-in-links.d.ts.map +0 -1
  824. package/dist/rules/token/no-space-in-links.js.map +0 -1
  825. package/dist/rules/token/no-trailing-punctuation.d.ts.map +0 -1
  826. package/dist/rules/token/no-trailing-punctuation.js.map +0 -1
  827. package/dist/rules/token/no-trailing-spaces.d.ts.map +0 -1
  828. package/dist/rules/token/no-trailing-spaces.js.map +0 -1
  829. package/dist/rules/token/ol-prefix.d.ts.map +0 -1
  830. package/dist/rules/token/ol-prefix.js.map +0 -1
  831. package/dist/rules/token/proper-names.d.ts.map +0 -1
  832. package/dist/rules/token/proper-names.js +0 -93
  833. package/dist/rules/token/proper-names.js.map +0 -1
  834. package/dist/rules/token/reference-links-images.d.ts.map +0 -1
  835. package/dist/rules/token/reference-links-images.js.map +0 -1
  836. package/dist/rules/token/required-headings.d.ts.map +0 -1
  837. package/dist/rules/token/required-headings.js +0 -83
  838. package/dist/rules/token/required-headings.js.map +0 -1
  839. package/dist/rules/token/single-h1.d.ts.map +0 -1
  840. package/dist/rules/token/single-h1.js +0 -56
  841. package/dist/rules/token/single-h1.js.map +0 -1
  842. package/dist/rules/token/table-column-count.d.ts.map +0 -1
  843. package/dist/rules/token/table-column-count.js.map +0 -1
  844. package/dist/rules/token/table-column-style.d.ts.map +0 -1
  845. package/dist/rules/token/table-column-style.js +0 -179
  846. package/dist/rules/token/table-column-style.js.map +0 -1
  847. package/dist/rules/token/table-pipe-style.d.ts.map +0 -1
  848. package/dist/rules/token/table-pipe-style.js.map +0 -1
  849. package/dist/rules/token/ul-indent.d.ts.map +0 -1
  850. package/dist/rules/token/ul-indent.js.map +0 -1
  851. package/dist/rules/token/ul-style.d.ts.map +0 -1
  852. package/dist/rules/token/ul-style.js +0 -80
  853. package/dist/rules/token/ul-style.js.map +0 -1
  854. package/dist/rules/types.d.ts +0 -83
  855. package/dist/rules/types.d.ts.map +0 -1
  856. package/dist/rules/utils.d.ts +0 -31
  857. package/dist/rules/utils.d.ts.map +0 -1
  858. package/dist/rules/utils.js +0 -90
  859. package/dist/rules/utils.js.map +0 -1
  860. package/dist/scopes/extractor.d.ts +0 -7
  861. package/dist/scopes/extractor.d.ts.map +0 -1
  862. package/dist/scopes/extractor.js +0 -536
  863. package/dist/scopes/extractor.js.map +0 -1
  864. package/dist/scopes/selector.d.ts +0 -51
  865. package/dist/scopes/selector.d.ts.map +0 -1
  866. package/dist/scopes/selector.js +0 -121
  867. package/dist/scopes/selector.js.map +0 -1
  868. package/dist/scopes/sentences.d.ts +0 -15
  869. package/dist/scopes/sentences.d.ts.map +0 -1
  870. package/dist/scopes/sentences.js +0 -202
  871. package/dist/scopes/sentences.js.map +0 -1
  872. package/dist/scopes/types.d.ts +0 -46
  873. package/dist/scopes/types.d.ts.map +0 -1
  874. package/dist/scopes/vocabulary.d.ts +0 -16
  875. package/dist/scopes/vocabulary.d.ts.map +0 -1
  876. package/dist/scopes/vocabulary.js +0 -70
  877. package/dist/scopes/vocabulary.js.map +0 -1
  878. package/dist/types/assertions.d.ts +0 -121
  879. package/dist/types/assertions.d.ts.map +0 -1
  880. package/dist/types/reporting.d.ts +0 -32
  881. package/dist/types/reporting.d.ts.map +0 -1
  882. package/dist/types/rules.d.ts +0 -41
  883. package/dist/types/rules.d.ts.map +0 -1
  884. package/dist/types/validation.d.ts +0 -6
  885. package/dist/types/validation.d.ts.map +0 -1
  886. /package/{dist → lib}/core/auto-fix.d.ts +0 -0
  887. /package/{dist → lib}/core/directives.d.ts +0 -0
  888. /package/{dist → lib}/data/markdoc-realm-schema.d.ts +0 -0
  889. /package/{dist → lib}/data/proper-nouns.d.ts +0 -0
  890. /package/{dist → lib}/metrics/index.d.ts +0 -0
  891. /package/{dist → lib}/metrics/index.d.ts.map +0 -0
  892. /package/{dist → lib}/metrics/index.js +0 -0
  893. /package/{dist → lib}/metrics/index.js.map +0 -0
  894. /package/{dist → lib}/parser/types.d.ts +0 -0
  895. /package/{dist → lib}/parser/types.js +0 -0
  896. /package/{dist → lib}/parser/types.js.map +0 -0
  897. /package/{dist → lib}/rules/scope/capitalization.d.ts +0 -0
  898. /package/{dist → lib}/rules/scope/conditional.d.ts +0 -0
  899. /package/{dist → lib}/rules/scope/consistency.d.ts +0 -0
  900. /package/{dist → lib}/rules/scope/length.d.ts +0 -0
  901. /package/{dist → lib}/rules/scope/max-image-size.d.ts +0 -0
  902. /package/{dist → lib}/rules/scope/occurrence.d.ts +0 -0
  903. /package/{dist → lib}/rules/scope/pattern.d.ts +0 -0
  904. /package/{dist → lib}/rules/scope/repetition.d.ts +0 -0
  905. /package/{dist → lib}/rules/scope/semantic-line-breaks.d.ts +0 -0
  906. /package/{dist → lib}/rules/scope/swap.d.ts +0 -0
  907. /package/{dist → lib}/rules/token/blanks-around-fences.d.ts +0 -0
  908. /package/{dist → lib}/rules/token/blanks-around-fences.js +0 -0
  909. /package/{dist → lib}/rules/token/blanks-around-headings.d.ts +0 -0
  910. /package/{dist → lib}/rules/token/blanks-around-lists.d.ts +0 -0
  911. /package/{dist → lib}/rules/token/blanks-around-tables.d.ts +0 -0
  912. /package/{dist → lib}/rules/token/code-block-style.d.ts +0 -0
  913. /package/{dist → lib}/rules/token/code-block-style.js +0 -0
  914. /package/{dist → lib}/rules/token/code-fence-style.d.ts +0 -0
  915. /package/{dist → lib}/rules/token/code-fence-style.js +0 -0
  916. /package/{dist → lib}/rules/token/commands-show-output.d.ts +0 -0
  917. /package/{dist → lib}/rules/token/commands-show-output.js +0 -0
  918. /package/{dist → lib}/rules/token/descriptive-link-text.d.ts +0 -0
  919. /package/{dist → lib}/rules/token/emphasis-style.d.ts +0 -0
  920. /package/{dist → lib}/rules/token/emphasis-style.d.ts.map +0 -0
  921. /package/{dist → lib}/rules/token/emphasis-style.js +0 -0
  922. /package/{dist → lib}/rules/token/emphasis-style.js.map +0 -0
  923. /package/{dist → lib}/rules/token/fenced-code-language.d.ts +0 -0
  924. /package/{dist → lib}/rules/token/fenced-code-language.js +0 -0
  925. /package/{dist → lib}/rules/token/first-line-h1.d.ts +0 -0
  926. /package/{dist → lib}/rules/token/front-matter.d.ts +0 -0
  927. /package/{dist → lib}/rules/token/heading-increment.d.ts +0 -0
  928. /package/{dist → lib}/rules/token/heading-start-left.d.ts +0 -0
  929. /package/{dist → lib}/rules/token/heading-start-left.js +0 -0
  930. /package/{dist → lib}/rules/token/heading-style.d.ts +0 -0
  931. /package/{dist → lib}/rules/token/heading-style.js +0 -0
  932. /package/{dist → lib}/rules/token/hr-style.d.ts +0 -0
  933. /package/{dist → lib}/rules/token/hr-style.js +0 -0
  934. /package/{dist → lib}/rules/token/line-length.d.ts +0 -0
  935. /package/{dist → lib}/rules/token/link-fragments.d.ts +0 -0
  936. /package/{dist → lib}/rules/token/link-image-reference-definitions.d.ts +0 -0
  937. /package/{dist → lib}/rules/token/link-image-reference-definitions.js +0 -0
  938. /package/{dist → lib}/rules/token/link-image-style.d.ts +0 -0
  939. /package/{dist → lib}/rules/token/list-indent.d.ts +0 -0
  940. /package/{dist → lib}/rules/token/list-indent.js +0 -0
  941. /package/{dist → lib}/rules/token/list-length.d.ts +0 -0
  942. /package/{dist → lib}/rules/token/list-marker-space.d.ts +0 -0
  943. /package/{dist → lib}/rules/token/list-marker-space.js +0 -0
  944. /package/{dist → lib}/rules/token/markdoc-attributes.d.ts +0 -0
  945. /package/{dist → lib}/rules/token/markdoc-pairing.d.ts +0 -0
  946. /package/{dist → lib}/rules/token/markdoc-syntax.d.ts +0 -0
  947. /package/{dist → lib}/rules/token/markdoc-unknown-tag.d.ts +0 -0
  948. /package/{dist → lib}/rules/token/messages.d.ts +0 -0
  949. /package/{dist → lib}/rules/token/messages.d.ts.map +0 -0
  950. /package/{dist → lib}/rules/token/messages.js +0 -0
  951. /package/{dist → lib}/rules/token/messages.js.map +0 -0
  952. /package/{dist → lib}/rules/token/no-alt-text.d.ts +0 -0
  953. /package/{dist → lib}/rules/token/no-bare-urls.d.ts +0 -0
  954. /package/{dist → lib}/rules/token/no-blanks-blockquote.d.ts +0 -0
  955. /package/{dist → lib}/rules/token/no-blanks-blockquote.js +0 -0
  956. /package/{dist → lib}/rules/token/no-duplicate-heading.d.ts +0 -0
  957. /package/{dist → lib}/rules/token/no-duplicate-link-destinations.d.ts +0 -0
  958. /package/{dist → lib}/rules/token/no-emphasis-as-heading.d.ts +0 -0
  959. /package/{dist → lib}/rules/token/no-empty-headings.d.ts +0 -0
  960. /package/{dist → lib}/rules/token/no-empty-links.d.ts +0 -0
  961. /package/{dist → lib}/rules/token/no-empty-links.js +0 -0
  962. /package/{dist → lib}/rules/token/no-hard-tabs.d.ts +0 -0
  963. /package/{dist → lib}/rules/token/no-hard-tabs.js +0 -0
  964. /package/{dist → lib}/rules/token/no-inline-html.d.ts +0 -0
  965. /package/{dist → lib}/rules/token/no-missing-space-atx.d.ts +0 -0
  966. /package/{dist → lib}/rules/token/no-missing-space-atx.d.ts.map +0 -0
  967. /package/{dist → lib}/rules/token/no-missing-space-atx.js +0 -0
  968. /package/{dist → lib}/rules/token/no-missing-space-atx.js.map +0 -0
  969. /package/{dist → lib}/rules/token/no-missing-space-closed-atx.d.ts +0 -0
  970. /package/{dist → lib}/rules/token/no-missing-space-closed-atx.d.ts.map +0 -0
  971. /package/{dist → lib}/rules/token/no-missing-space-closed-atx.js +0 -0
  972. /package/{dist → lib}/rules/token/no-missing-space-closed-atx.js.map +0 -0
  973. /package/{dist → lib}/rules/token/no-multiple-blanks.d.ts +0 -0
  974. /package/{dist → lib}/rules/token/no-multiple-blanks.js +0 -0
  975. /package/{dist → lib}/rules/token/no-multiple-space-blockquote.d.ts +0 -0
  976. /package/{dist → lib}/rules/token/no-multiple-space-blockquote.d.ts.map +0 -0
  977. /package/{dist → lib}/rules/token/no-multiple-space-blockquote.js +0 -0
  978. /package/{dist → lib}/rules/token/no-multiple-space-blockquote.js.map +0 -0
  979. /package/{dist → lib}/rules/token/no-multiple-space-closed-atx.d.ts +0 -0
  980. /package/{dist → lib}/rules/token/no-multiple-space-closed-atx.js +0 -0
  981. /package/{dist → lib}/rules/token/no-reversed-links.d.ts +0 -0
  982. /package/{dist → lib}/rules/token/no-reversed-links.js +0 -0
  983. /package/{dist → lib}/rules/token/no-space-in-code.d.ts +0 -0
  984. /package/{dist → lib}/rules/token/no-space-in-code.js +0 -0
  985. /package/{dist → lib}/rules/token/no-space-in-emphasis.d.ts +0 -0
  986. /package/{dist → lib}/rules/token/no-space-in-links.d.ts +0 -0
  987. /package/{dist → lib}/rules/token/no-space-in-links.js +0 -0
  988. /package/{dist → lib}/rules/token/no-trailing-punctuation.d.ts +0 -0
  989. /package/{dist → lib}/rules/token/no-trailing-punctuation.js +0 -0
  990. /package/{dist → lib}/rules/token/no-trailing-spaces.d.ts +0 -0
  991. /package/{dist → lib}/rules/token/no-trailing-spaces.js +0 -0
  992. /package/{dist → lib}/rules/token/ol-prefix.d.ts +0 -0
  993. /package/{dist → lib}/rules/token/ol-prefix.js +0 -0
  994. /package/{dist → lib}/rules/token/proper-names.d.ts +0 -0
  995. /package/{dist → lib}/rules/token/reference-links-images.d.ts +0 -0
  996. /package/{dist → lib}/rules/token/reference-links-images.js +0 -0
  997. /package/{dist → lib}/rules/token/required-headings.d.ts +0 -0
  998. /package/{dist → lib}/rules/token/single-h1.d.ts +0 -0
  999. /package/{dist → lib}/rules/token/single-trailing-newline.d.ts +0 -0
  1000. /package/{dist → lib}/rules/token/single-trailing-newline.d.ts.map +0 -0
  1001. /package/{dist → lib}/rules/token/single-trailing-newline.js +0 -0
  1002. /package/{dist → lib}/rules/token/single-trailing-newline.js.map +0 -0
  1003. /package/{dist → lib}/rules/token/strong-style.d.ts +0 -0
  1004. /package/{dist → lib}/rules/token/strong-style.d.ts.map +0 -0
  1005. /package/{dist → lib}/rules/token/strong-style.js +0 -0
  1006. /package/{dist → lib}/rules/token/strong-style.js.map +0 -0
  1007. /package/{dist → lib}/rules/token/table-column-count.d.ts +0 -0
  1008. /package/{dist → lib}/rules/token/table-column-count.js +0 -0
  1009. /package/{dist → lib}/rules/token/table-column-style.d.ts +0 -0
  1010. /package/{dist → lib}/rules/token/table-pipe-style.d.ts +0 -0
  1011. /package/{dist → lib}/rules/token/table-pipe-style.js +0 -0
  1012. /package/{dist → lib}/rules/token/ul-indent.d.ts +0 -0
  1013. /package/{dist → lib}/rules/token/ul-indent.js +0 -0
  1014. /package/{dist → lib}/rules/token/ul-style.d.ts +0 -0
  1015. /package/{dist → lib}/rules/types.js +0 -0
  1016. /package/{dist → lib}/rules/types.js.map +0 -0
  1017. /package/{dist → lib}/scopes/types.js +0 -0
  1018. /package/{dist → lib}/scopes/types.js.map +0 -0
  1019. /package/{dist → lib}/types/assertions.js +0 -0
  1020. /package/{dist → lib}/types/assertions.js.map +0 -0
  1021. /package/{dist → lib}/types/index.d.ts +0 -0
  1022. /package/{dist → lib}/types/index.d.ts.map +0 -0
  1023. /package/{dist → lib}/types/index.js +0 -0
  1024. /package/{dist → lib}/types/index.js.map +0 -0
  1025. /package/{dist → lib}/types/problems.d.ts +0 -0
  1026. /package/{dist → lib}/types/problems.d.ts.map +0 -0
  1027. /package/{dist → lib}/types/problems.js +0 -0
  1028. /package/{dist → lib}/types/problems.js.map +0 -0
  1029. /package/{dist → lib}/types/reporting.js +0 -0
  1030. /package/{dist → lib}/types/reporting.js.map +0 -0
  1031. /package/{dist → lib}/types/rules.js +0 -0
  1032. /package/{dist → lib}/types/rules.js.map +0 -0
  1033. /package/{dist → lib}/types/validation.js +0 -0
  1034. /package/{dist → lib}/types/validation.js.map +0 -0
@@ -0,0 +1,1086 @@
1
+ /**
2
+ * `recheck/google`: rules from Google's developer documentation style guide
3
+ * (https://developers.google.com/style).
4
+ *
5
+ * Source: Google developer documentation style guide
6
+ * Canonical URL: https://developers.google.com/style
7
+ * License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
8
+ * Sync date: 2026-07-29
9
+ *
10
+ * Modified: rules are adapted to Recheck assertions and the wording is
11
+ * paraphrased. Each rule links to its source page. See
12
+ * `packages/recheck/presets/google/PROVENANCE.md` for the rule-to-source table
13
+ * and the guide entries that were left out.
14
+ *
15
+ * Rules about document structure are `error`. Word choice and style rules are
16
+ * `warn`. No rule fixes anything (see the end of `buildGooglePreset`), because
17
+ * automatic swaps changed the meaning of correct text in testing.
18
+ */
19
+ const HEADINGS = 'https://developers.google.com/style/headings';
20
+ const PERIODS = 'https://developers.google.com/style/periods';
21
+ const ACCESSIBILITY = 'https://developers.google.com/style/accessibility';
22
+ const LISTS = 'https://developers.google.com/style/lists';
23
+ const PERSON = 'https://developers.google.com/style/person';
24
+ const CONTRACTIONS = 'https://developers.google.com/style/contractions';
25
+ const WORD_LIST = 'https://developers.google.com/style/word-list';
26
+ const TIMELESS = 'https://developers.google.com/style/timeless-documentation';
27
+ const ABBREVIATIONS = 'https://developers.google.com/style/abbreviations';
28
+ const SLASHES = 'https://developers.google.com/style/slashes';
29
+ const NUMBERS = 'https://developers.google.com/style/numbers';
30
+ const DATES_TIMES = 'https://developers.google.com/style/dates-times';
31
+ const COMMAS = 'https://developers.google.com/style/commas';
32
+ const DASHES = 'https://developers.google.com/style/dashes';
33
+ const PRONOUNS = 'https://developers.google.com/style/pronouns';
34
+ const CROSS_REFERENCES = 'https://developers.google.com/style/cross-references';
35
+ const TEXT_FORMATTING = 'https://developers.google.com/style/text-formatting';
36
+ const CAPITALIZATION = 'https://developers.google.com/style/capitalization';
37
+ const CODE_IN_TEXT = 'https://developers.google.com/style/code-in-text';
38
+ const UI_ELEMENTS = 'https://developers.google.com/style/ui-elements';
39
+ const PROCEDURES = 'https://developers.google.com/style/procedures';
40
+ const INCLUSIVE_DOCUMENTATION = 'https://developers.google.com/style/inclusive-documentation';
41
+ function swapRule(opts) {
42
+ return {
43
+ severity: opts.severity ?? 'warn',
44
+ scope: opts.scope ?? 'summary',
45
+ link: opts.link,
46
+ message: opts.message,
47
+ ...(opts.fix === false ? { fix: false } : {}),
48
+ assertions: {
49
+ swap: {
50
+ pairs: opts.pairs,
51
+ ignoreCase: opts.ignoreCase,
52
+ wordBoundary: opts.wordBoundary,
53
+ keysAreRegex: opts.keysAreRegex,
54
+ },
55
+ },
56
+ };
57
+ }
58
+ function patternRule(opts) {
59
+ return {
60
+ severity: opts.severity ?? 'warn',
61
+ scope: opts.scope ?? 'summary',
62
+ link: opts.link,
63
+ message: opts.message,
64
+ assertions: {
65
+ pattern: {
66
+ tokens: opts.tokens,
67
+ ignoreCase: opts.ignoreCase,
68
+ includeCode: opts.includeCode,
69
+ },
70
+ },
71
+ };
72
+ }
73
+ function tokenRule(opts) {
74
+ return {
75
+ severity: opts.severity ?? 'error',
76
+ link: opts.link,
77
+ message: opts.message,
78
+ assertions: { [opts.name]: opts.options ?? {} },
79
+ };
80
+ }
81
+ export function buildGooglePreset() {
82
+ const rules = {};
83
+ // Structure
84
+ rules['google/heading-sentence-case'] = {
85
+ severity: 'error',
86
+ scope: 'heading',
87
+ fix: false,
88
+ link: HEADINGS,
89
+ message: '"%s" should use %s capitalization (Google: sentence case for headings).',
90
+ assertions: { capitalization: { match: '$sentence' } },
91
+ };
92
+ rules['google/heading-increment'] = tokenRule({
93
+ name: 'heading-increment',
94
+ message: 'Heading levels should only increment by one level at a time (Google: heading structure).',
95
+ link: HEADINGS,
96
+ });
97
+ rules['google/single-h1'] = tokenRule({
98
+ name: 'single-h1',
99
+ message: 'Only use a level-1 heading once on a page (Google: heading structure).',
100
+ link: HEADINGS,
101
+ });
102
+ rules['google/first-line-h1'] = tokenRule({
103
+ name: 'first-line-h1',
104
+ message: 'The first line in a file should be a top-level heading (Google: heading structure).',
105
+ link: HEADINGS,
106
+ });
107
+ rules['google/no-duplicate-heading'] = tokenRule({
108
+ name: 'no-duplicate-heading',
109
+ message: 'Headings should be unique so readers can jump between sections (Google: heading structure).',
110
+ link: HEADINGS,
111
+ });
112
+ rules['google/no-trailing-punctuation'] = tokenRule({
113
+ name: 'no-trailing-punctuation',
114
+ message: "Don't end headings with periods (Google).",
115
+ link: PERIODS,
116
+ });
117
+ rules['google/no-empty-headings'] = tokenRule({
118
+ name: 'no-empty-headings',
119
+ message: "Don't use empty headings; make sure headings are followed by content (Google).",
120
+ link: HEADINGS,
121
+ });
122
+ rules['google/no-emphasis-as-heading'] = tokenRule({
123
+ name: 'no-emphasis-as-heading',
124
+ message: 'Tag headings using heading elements, not bold/italic text (Google: accessibility).',
125
+ link: ACCESSIBILITY,
126
+ });
127
+ rules['google/no-link-in-heading'] = patternRule({
128
+ tokens: ['\\[[^\\]]*\\]\\([^)]*\\)'],
129
+ message: "Don't put links in headings (Google); move the link into the following paragraph.",
130
+ link: HEADINGS,
131
+ scope: 'heading',
132
+ severity: 'error',
133
+ });
134
+ rules['google/list-item-capital'] = {
135
+ severity: 'error',
136
+ scope: 'list-item',
137
+ fix: false,
138
+ link: LISTS,
139
+ message: '"%s" should use %s capitalization (Google: start list items with a capital letter).',
140
+ assertions: { capitalization: { match: '$sentence' } },
141
+ };
142
+ rules['google/no-alt-text'] = tokenRule({
143
+ name: 'no-alt-text',
144
+ message: 'Every image needs alt text (Google: accessibility).',
145
+ link: ACCESSIBILITY,
146
+ });
147
+ // GFM tables cannot merge cells, so this only matches raw HTML tables.
148
+ // It needs `scope: 'all'` to see raw HTML.
149
+ rules['google/no-merged-cells'] = patternRule({
150
+ tokens: ['\\bcolspan\\s*=', '\\browspan\\s*='],
151
+ message: "Don't merge table cells with colspan/rowspan (Google).",
152
+ link: ACCESSIBILITY,
153
+ scope: 'all',
154
+ ignoreCase: true,
155
+ severity: 'error',
156
+ });
157
+ rules['google/sentence-length'] = {
158
+ severity: 'error',
159
+ scope: 'sentence',
160
+ link: ACCESSIBILITY,
161
+ message: 'Sentence is %s %s long; Google recommends fewer than 26 words (max %s).',
162
+ assertions: { length: { unit: 'words', max: 25 } },
163
+ };
164
+ // Headings and lists
165
+ // `includeCode` so the code span itself is matched.
166
+ rules['google/no-code-in-heading'] = patternRule({
167
+ tokens: ['`[^`]+`'],
168
+ message: 'Avoid code items in headings (Google); rephrase in plain words.',
169
+ link: HEADINGS,
170
+ scope: 'heading',
171
+ includeCode: true,
172
+ });
173
+ // Only matches step/part markers and bare leading numbers, to avoid false positives.
174
+ rules['google/no-numbered-headings'] = patternRule({
175
+ tokens: ['^\\d+[.)]\\s', '^Step\\s+\\d+\\b', '^Part\\s+\\d+\\b'],
176
+ message: "Don't use numbers in headings to indicate a sequence (Google).",
177
+ link: HEADINGS,
178
+ scope: 'heading',
179
+ ignoreCase: true,
180
+ });
181
+ // Google gives no maximum, so only the minimum is set.
182
+ rules['google/list-length'] = tokenRule({
183
+ name: 'list-length',
184
+ message: 'List has %s item(s); a single item usually reads better as a plain sentence (Google).',
185
+ link: LISTS,
186
+ options: { min: 2 },
187
+ severity: 'warn',
188
+ });
189
+ // Voice, person and contractions
190
+ // Lists each casing of the pronouns instead of using `ignoreCase`,
191
+ // which would also match the abbreviation "US".
192
+ rules['google/second-person'] = patternRule({
193
+ tokens: ['\\b(?:We|we|Our|our|Us|us)\\b'],
194
+ message: 'Use second person ("you"/"your") instead of "%s", unless referring to the organization itself (Google).',
195
+ link: PERSON,
196
+ });
197
+ rules['google/use-contractions'] = swapRule({
198
+ pairs: {
199
+ 'is not': "isn't",
200
+ 'are not': "aren't",
201
+ 'do not': "don't",
202
+ 'does not': "doesn't",
203
+ 'did not': "didn't",
204
+ cannot: "can't",
205
+ 'will not': "won't",
206
+ 'have not': "haven't",
207
+ 'has not': "hasn't",
208
+ 'had not': "hadn't",
209
+ 'should not': "shouldn't",
210
+ 'would not': "wouldn't",
211
+ 'could not': "couldn't",
212
+ },
213
+ message: 'Use "%s" instead of "%s" (Google recommends negation contractions).',
214
+ link: CONTRACTIONS,
215
+ ignoreCase: true,
216
+ wordBoundary: true,
217
+ fix: false,
218
+ });
219
+ rules['google/no-triple-contractions'] = patternRule({
220
+ tokens: ["\\bmightn't've\\b", "\\bwouldn't've\\b", "\\bcouldn't've\\b", "\\bshouldn't've\\b"],
221
+ message: 'Don\'t use three-word contractions such as "%s" (Google).',
222
+ link: CONTRACTIONS,
223
+ ignoreCase: true,
224
+ });
225
+ rules['google/no-lets'] = patternRule({
226
+ tokens: ["\\blet's\\b"],
227
+ message: '"%s": avoid if at all possible (Google).',
228
+ link: `${WORD_LIST}#lets`,
229
+ ignoreCase: true,
230
+ });
231
+ rules['google/no-please-note'] = swapRule({
232
+ pairs: { 'please note': '' },
233
+ message: '%sGoogle\'s style guide says not to use the phrase "%s"; remove it.',
234
+ link: `${WORD_LIST}#please`,
235
+ ignoreCase: true,
236
+ wordBoundary: true,
237
+ fix: false,
238
+ });
239
+ rules['google/no-please'] = patternRule({
240
+ tokens: ['\\bplease\\b'],
241
+ message: '"%s": only use when asking for permission or forgiveness, not in the normal course of instructions (Google).',
242
+ link: `${WORD_LIST}#please`,
243
+ ignoreCase: true,
244
+ });
245
+ // Timeless documentation
246
+ // Only the distinctive phrases. Words like `new` and `now` match too much ordinary text.
247
+ rules['google/no-timeless-phrases'] = patternRule({
248
+ tokens: [
249
+ '\\bas of this writing\\b',
250
+ '\\bat present\\b',
251
+ '\\bpresently\\b',
252
+ '\\bdoes not yet\\b',
253
+ '\\bcurrently\\b',
254
+ ],
255
+ message: '"%s" is implied by the existence of the documentation itself; consider removing it (Google).',
256
+ link: TIMELESS,
257
+ ignoreCase: true,
258
+ });
259
+ // Latinisms, abbreviations and slang
260
+ // `wordBoundary` is off because a trailing `\b` after the period in "i.e." never matches.
261
+ // The leading `\b` in each key stops "vs." matching inside "revs.".
262
+ rules['google/no-latinisms'] = swapRule({
263
+ pairs: {
264
+ '\\bi\\.e\\.': 'that is',
265
+ '\\be\\.g\\.': 'for example',
266
+ },
267
+ message: 'Use "%s" instead of "%s" (Google).',
268
+ link: WORD_LIST,
269
+ fix: false,
270
+ ignoreCase: true,
271
+ wordBoundary: false,
272
+ keysAreRegex: true,
273
+ });
274
+ rules['google/vs-versus'] = swapRule({
275
+ pairs: {
276
+ '\\bvs\\.': 'versus',
277
+ },
278
+ message: 'Use "%s" instead of "%s" (Google).',
279
+ link: WORD_LIST,
280
+ ignoreCase: true,
281
+ wordBoundary: false,
282
+ keysAreRegex: true,
283
+ });
284
+ // Both keys are anchored on both sides so "aka" does not match inside "Osaka".
285
+ rules['google/no-latinisms-plain'] = swapRule({
286
+ pairs: {
287
+ 'vice versa': 'the other way around',
288
+ },
289
+ message: 'Use "%s" instead of "%s" (Google).',
290
+ link: WORD_LIST,
291
+ fix: false,
292
+ ignoreCase: true,
293
+ wordBoundary: true,
294
+ });
295
+ rules['google/aka-form'] = swapRule({
296
+ pairs: {
297
+ aka: 'also known as',
298
+ },
299
+ message: 'Use "%s" instead of "%s" (Google).',
300
+ link: WORD_LIST,
301
+ fix: false,
302
+ ignoreCase: true,
303
+ wordBoundary: true,
304
+ });
305
+ rules['google/no-internet-slang'] = swapRule({
306
+ pairs: {
307
+ 'tl;dr': 'To summarize',
308
+ ymmv: 'Your results might vary',
309
+ RTFM: 'For more information, see...',
310
+ },
311
+ message: 'Avoid the internet-slang abbreviation "%s"; use "%s" instead (Google).',
312
+ link: ABBREVIATIONS,
313
+ ignoreCase: true,
314
+ wordBoundary: true,
315
+ fix: false,
316
+ });
317
+ rules['google/no-via'] = patternRule({
318
+ tokens: ['\\bvia\\b'],
319
+ message: '"%s": avoid — Google\'s word list says not to use it; rephrase (e.g. "using", "through").',
320
+ link: `${WORD_LIST}#via`,
321
+ ignoreCase: true,
322
+ });
323
+ rules['google/abbrev-no-periods'] = patternRule({
324
+ tokens: ['\\b(?:[A-Z]\\.){2,}'],
325
+ message: 'Don\'t use periods with acronyms or initialisms such as "%s" (Google).',
326
+ link: ABBREVIATIONS,
327
+ });
328
+ rules['google/us-abbreviation'] = swapRule({
329
+ pairs: { 'U.S.A.': 'US', 'U.S.': 'US' },
330
+ message: 'Use "%s" instead of "%s" (Google: US is OK as an abbreviation for United States).',
331
+ link: `${WORD_LIST}#US`,
332
+ fix: false,
333
+ wordBoundary: false,
334
+ });
335
+ // `wordBoundary` is off because a trailing `\b` after the slash never matches.
336
+ // The leading `\b` stops `w/` matching inside "www/static" and `c/o` inside
337
+ // "src/output". The lookahead stops "w/o" and "c/oscillator" matching.
338
+ rules['google/no-slash-abbrev'] = swapRule({
339
+ pairs: { '\\bc/o(?![A-Za-z])': 'care of', '\\bw/(?![A-Za-z])': 'with' },
340
+ message: 'Use "%s" instead of the slash abbreviation "%s" (Google).',
341
+ link: SLASHES,
342
+ ignoreCase: true,
343
+ wordBoundary: false,
344
+ keysAreRegex: true,
345
+ });
346
+ // Numbers, dates and units
347
+ rules['google/spell-out-ordinals'] = patternRule({
348
+ tokens: ['\\b\\d+(?:st|nd|rd|th)\\b'],
349
+ message: 'Spell out ordinal numbers; avoid "%s" (Google).',
350
+ link: NUMBERS,
351
+ });
352
+ rules['google/number-format'] = patternRule({
353
+ tokens: [
354
+ '\\d\\s%', // no space before the percent sign
355
+ '(?<![\\d.])\\.\\d', // decimals under 1 need a leading zero
356
+ '\\d+ x \\d+', // dimensions: lowercase x, no surrounding spaces
357
+ '\\bfrom\\s+\\d+-\\d+\\b', // a hyphen range introduced by "from"
358
+ ],
359
+ message: 'Number formatting: "%s" doesn\'t match Google\'s stated convention.',
360
+ link: NUMBERS,
361
+ });
362
+ rules['google/date-format'] = patternRule({
363
+ tokens: ['\\b\\d{1,2}/\\d{1,2}/\\d{2,4}\\b'],
364
+ message: 'Avoid all-numeric slash dates such as "%s" (Google); spell out the month.',
365
+ link: DATES_TIMES,
366
+ });
367
+ rules['google/time-format'] = patternRule({
368
+ tokens: [
369
+ '\\d\\s?[ap]\\.m\\.', // lowercase, dotted a.m./p.m.
370
+ '\\d(?:am|pm)\\b', // lowercase, no space, no periods
371
+ '\\d(?:AM|PM)\\b', // missing the required space before AM/PM
372
+ '\\b\\d{1,2}:00\\s?(?:AM|PM|am|pm)\\b', // round hour should drop :00
373
+ ],
374
+ message: '"%s": use all-caps AM/PM with a space before it, and drop :00 on round hours (Google).',
375
+ link: `${WORD_LIST}#AM,_PM`,
376
+ });
377
+ rules['google/rfc-spacing'] = patternRule({
378
+ tokens: ['\\bRFC\\d+\\b'],
379
+ message: 'Use a space between RFC and the number, e.g. "RFC 2318" (Google): "%s"',
380
+ link: `${WORD_LIST}#RFC`,
381
+ });
382
+ rules['google/data-rate-units'] = swapRule({
383
+ pairs: {
384
+ 'KB/s': 'KBps',
385
+ 'Kb/s': 'Kbps',
386
+ 'MB/s': 'MBps',
387
+ 'Mb/s': 'Mbps',
388
+ 'GB/s': 'GBps',
389
+ 'Gb/s': 'Gbps',
390
+ },
391
+ message: 'Use "%s" instead of "%s" (Google: by convention we don\'t use the slash form).',
392
+ link: `${WORD_LIST}#GBps`,
393
+ wordBoundary: true,
394
+ });
395
+ // Punctuation
396
+ // Only matches an ampersand with spaces around it, so `&amp;` and `AT&T` are left alone.
397
+ rules['google/no-ampersand'] = patternRule({
398
+ tokens: ['\\s&\\s'],
399
+ message: 'Don\'t use "&" as a conjunction or shorthand for "and" (Google).',
400
+ link: TEXT_FORMATTING,
401
+ });
402
+ // A Google-style em dash has no spaces around it.
403
+ rules['google/dash-style'] = patternRule({
404
+ tokens: ['\u2013', '\\s--\\s', '\\s\u2014\\s'],
405
+ message: "Don't use an en dash or a double hyphen in place of an em dash; don't space the em dash (Google).",
406
+ link: DASHES,
407
+ });
408
+ rules['google/single-space-sentences'] = patternRule({
409
+ tokens: ['\\. +\\S'],
410
+ message: 'Leave only one space between sentences (Google).',
411
+ link: PERIODS,
412
+ });
413
+ rules['google/conjunctive-adverb-comma'] = patternRule({
414
+ tokens: ['^(?:Otherwise|However|Therefore) [a-z]'],
415
+ message: 'Put a comma after "%s" when it opens a sentence (Google).',
416
+ link: COMMAS,
417
+ scope: 'sentence',
418
+ });
419
+ rules['google/comma-before-that'] = patternRule({
420
+ tokens: [', that\\b'],
421
+ message: 'Don\'t put a comma before restrictive "that" (Google).',
422
+ link: PRONOUNS,
423
+ scope: 'sentence',
424
+ });
425
+ rules['google/neither-nor'] = patternRule({
426
+ tokens: ['\\bneither\\b(?:(?!\\bnor\\b)[\\s\\S])*?\\bor\\b'],
427
+ message: 'Write "neither A nor B", not "neither A or B" (Google).',
428
+ link: `${WORD_LIST}#neither`,
429
+ scope: 'sentence',
430
+ });
431
+ rules['google/no-and-or'] = patternRule({
432
+ tokens: ['\\band/or\\b'],
433
+ message: 'Avoid "and/or" except where space is limited, such as in tables (Google).',
434
+ link: SLASHES,
435
+ ignoreCase: true,
436
+ });
437
+ // Links
438
+ rules['google/vague-link-text'] = patternRule({
439
+ tokens: ['\\b(?:this document|this article|this page|this topic|this doc|click here)\\b'],
440
+ message: 'Avoid vague link text such as "%s"; describe the destination (Google).',
441
+ link: CROSS_REFERENCES,
442
+ scope: 'link',
443
+ ignoreCase: true,
444
+ });
445
+ rules['google/no-url-as-link-text'] = patternRule({
446
+ tokens: ['^https?://'],
447
+ message: "Don't use a URL as link text (Google); use a descriptive phrase instead.",
448
+ link: CROSS_REFERENCES,
449
+ scope: 'link',
450
+ });
451
+ rules['google/link-intro-about'] = swapRule({
452
+ pairs: {
453
+ 'for more information on': 'for more information about',
454
+ 'more details on': 'more details about',
455
+ },
456
+ message: 'Use "%s" instead of "%s" (Google: use "about", not "on").',
457
+ link: CROSS_REFERENCES,
458
+ fix: false,
459
+ ignoreCase: true,
460
+ wordBoundary: true,
461
+ });
462
+ rules['google/link-punctuation'] = patternRule({
463
+ tokens: ['^["\u201c].*["\u201d]$'],
464
+ message: "Don't put link text in quotation marks (Google).",
465
+ link: CROSS_REFERENCES,
466
+ scope: 'link',
467
+ });
468
+ rules['google/no-target-blank'] = patternRule({
469
+ tokens: ['target\\s*=\\s*["\']_blank["\']'],
470
+ message: "Don't force links to open in a new tab or window (Google).",
471
+ link: CROSS_REFERENCES,
472
+ scope: 'all',
473
+ });
474
+ rules['google/self-reference-terms'] = patternRule({
475
+ tokens: ['\\bthis article\\b', '\\bthis topic\\b', '\\bthis doc\\b', '\\bthis page\\b'],
476
+ message: 'Use "this document" instead of "%s" when referring to the current document (Google).',
477
+ link: `${WORD_LIST}#documentation`,
478
+ ignoreCase: true,
479
+ });
480
+ // Text formatting
481
+ rules['google/emphasis-style'] = {
482
+ severity: 'warn',
483
+ link: TEXT_FORMATTING,
484
+ message: 'Use underscores for emphasis/italics, not asterisks (Google).',
485
+ assertions: { 'emphasis-style': { style: 'underscore' } },
486
+ };
487
+ rules['google/strong-style'] = {
488
+ severity: 'warn',
489
+ link: TEXT_FORMATTING,
490
+ message: 'Use double asterisks for bold, not underscores (Google).',
491
+ assertions: { 'strong-style': { style: 'asterisk' } },
492
+ };
493
+ rules['google/no-underline'] = patternRule({
494
+ tokens: ['<u>'],
495
+ message: 'Reserve underlining for link text (Google).',
496
+ link: TEXT_FORMATTING,
497
+ scope: 'all',
498
+ ignoreCase: true,
499
+ });
500
+ rules['google/no-casing-style-names'] = patternRule({
501
+ tokens: ['\\bcamel[\\s-]?case\\b', '\\bsnake[\\s-]?case\\b'],
502
+ message: 'Don\'t use a casing style name such as "%s"; describe the naming convention instead (Google).',
503
+ link: CAPITALIZATION,
504
+ ignoreCase: true,
505
+ });
506
+ // Code in text
507
+ // `includeCode` because the match includes the closing backtick.
508
+ rules['google/no-inflected-code'] = patternRule({
509
+ tokens: ["`[^`]+`'s\\b", '`[^`]+`s\\b'],
510
+ message: 'Don\'t inflect the name of a code element (Google): "%s"',
511
+ link: CODE_IN_TEXT,
512
+ includeCode: true,
513
+ });
514
+ // UI elements and verbs
515
+ rules['google/ui-element-quotes'] = patternRule({
516
+ tokens: ['"[A-Z][a-zA-Z ]*"\\s+(?:button|tab|menu|checkbox|option|link|field)\\b'],
517
+ message: 'Don\'t put UI element names in quotation marks; use bold instead (Google): "%s"',
518
+ link: UI_ELEMENTS,
519
+ });
520
+ rules['google/no-click-on'] = swapRule({
521
+ pairs: { 'click on': 'click' },
522
+ message: 'Use "%s" instead of "%s" (Google).',
523
+ link: `${WORD_LIST}#click`,
524
+ fix: false,
525
+ ignoreCase: true,
526
+ wordBoundary: true,
527
+ });
528
+ rules['google/no-hover'] = patternRule({
529
+ tokens: ['\\bhover(?:s|ing|ed)?\\b'],
530
+ message: 'Use "hold the pointer over" instead of "%s" (Google).',
531
+ link: `${WORD_LIST}#hover`,
532
+ ignoreCase: true,
533
+ });
534
+ // Bare "check" is too common to swap, and "deselect" is correct for other elements.
535
+ rules['google/no-uncheck'] = swapRule({
536
+ pairs: { uncheck: 'clear' },
537
+ message: 'Use "%s" instead of "%s" for checkboxes (Google).',
538
+ link: `${WORD_LIST}#uncheck`,
539
+ fix: false,
540
+ ignoreCase: true,
541
+ wordBoundary: true,
542
+ });
543
+ rules['google/scroll-to'] = swapRule({
544
+ pairs: { 'scroll to': 'go to' },
545
+ message: 'Prefer "%s" over "%s" (Google).',
546
+ link: `${WORD_LIST}#scroll`,
547
+ ignoreCase: true,
548
+ wordBoundary: true,
549
+ fix: false,
550
+ });
551
+ // Only matches verb use, so the noun in "toggle switch" is not flagged.
552
+ rules['google/no-toggle-verb'] = patternRule({
553
+ tokens: ['\\btoggle(?:d|s)?\\s+(?:the|this|that|a|an)\\b', '\\bto toggle\\b'],
554
+ message: 'Describe the action instead of using "toggle" as a verb (Google): "%s"',
555
+ link: UI_ELEMENTS,
556
+ ignoreCase: true,
557
+ });
558
+ rules['google/keyboard-keys'] = patternRule({
559
+ tokens: ['\\bctrl\\b', '\\bcmd\\b', '\u2318'],
560
+ message: 'Spell out modifier keys (Control, Command) instead of "%s" (Google).',
561
+ link: UI_ELEMENTS,
562
+ ignoreCase: true,
563
+ });
564
+ rules['google/chapter-terminology'] = patternRule({
565
+ tokens: ['\\bchapters?\\b'],
566
+ message: 'Refer to "document", "page", or "section" instead of "%s" (Google, for web docs).',
567
+ link: `${WORD_LIST}#chapter`,
568
+ ignoreCase: true,
569
+ });
570
+ // Plain language
571
+ rules['google/plain-language-swaps'] = swapRule({
572
+ pairs: {
573
+ 'allows you to': 'lets you',
574
+ 'enables you to': 'lets you',
575
+ comprise: 'consist of',
576
+ 'comprised of': 'consist of',
577
+ desire: 'want',
578
+ desired: 'wanted',
579
+ wish: 'want',
580
+ learnings: 'knowledge',
581
+ agnostic: 'platform-independent',
582
+ },
583
+ message: 'Prefer "%s" over "%s" (Google: plain language).',
584
+ link: WORD_LIST,
585
+ fix: false,
586
+ ignoreCase: true,
587
+ wordBoundary: true,
588
+ });
589
+ rules['google/in-order-to'] = swapRule({
590
+ pairs: { 'in order to': 'to' },
591
+ message: 'Prefer "%s" over "%s" unless needed to clarify meaning (Google).',
592
+ link: `${WORD_LIST}#in_order_to`,
593
+ ignoreCase: true,
594
+ wordBoundary: true,
595
+ fix: false,
596
+ });
597
+ rules['google/utilize'] = patternRule({
598
+ tokens: ['\\butiliz(?:e|es|ed|ing|ation)\\b'],
599
+ message: 'Use "use" instead of "%s" unless referring to the quantity of a resource used (Google).',
600
+ link: `${WORD_LIST}#utilize`,
601
+ ignoreCase: true,
602
+ });
603
+ rules['google/leverage'] = swapRule({
604
+ pairs: { leverage: 'use', leveraging: 'using', leveraged: 'used' },
605
+ message: 'Avoid "%s" if you mean "use", "build on", or "take advantage of" (Google): "%s"',
606
+ link: `${WORD_LIST}#leverage`,
607
+ ignoreCase: true,
608
+ wordBoundary: true,
609
+ fix: false,
610
+ });
611
+ rules['google/performant'] = patternRule({
612
+ tokens: ['\\bperformant\\b'],
613
+ message: 'Avoid "%s"; use a more precise term (Google).',
614
+ link: `${WORD_LIST}#performant`,
615
+ ignoreCase: true,
616
+ });
617
+ rules['google/copy-and-paste'] = patternRule({
618
+ tokens: ['\\bcopy and paste\\b'],
619
+ message: 'Explain what to enter into a field, not how to enter it (Google): "%s"',
620
+ link: `${WORD_LIST}#Copy_and_paste`,
621
+ ignoreCase: true,
622
+ });
623
+ rules['google/create-a-new'] = swapRule({
624
+ pairs: { 'Create a new': 'Create a' },
625
+ message: 'Use "%s ..." instead of "%s ..." unless distinguishing from another recently created item (Google).',
626
+ link: `${WORD_LIST}#Create_a_new`,
627
+ ignoreCase: true,
628
+ wordBoundary: true,
629
+ fix: false,
630
+ });
631
+ rules['google/no-run-the-following-command'] = patternRule({
632
+ tokens: ['\\brun the following command\\b'],
633
+ message: 'Focus on what the command does instead of "%s" (Google).',
634
+ link: PROCEDURES,
635
+ ignoreCase: true,
636
+ });
637
+ rules['google/cons-and-pros'] = swapRule({
638
+ pairs: { 'pros and cons': 'advantages and disadvantages' },
639
+ message: 'Use "%s" instead of "%s" (Google).',
640
+ link: `${WORD_LIST}#pros`,
641
+ fix: false,
642
+ ignoreCase: true,
643
+ wordBoundary: true,
644
+ });
645
+ // Product and brand names
646
+ // `keysAreRegex` lets "Cloud console" skip text that already follows "Google"
647
+ // in any casing or spacing.
648
+ rules['google/product-names'] = swapRule({
649
+ pairs: {
650
+ 'Cloud Platform': 'Google Cloud',
651
+ '(?<![Gg][Oo][Oo][Gg][Ll][Ee]\\s+)Cloud console': 'Google Cloud console',
652
+ 'Developers Console': 'Google Cloud console',
653
+ 'Google Cloud SDK': 'Cloud SDK',
654
+ 'API explorer': 'APIs Explorer',
655
+ 'API Explorer': 'APIs Explorer',
656
+ 'developer key': 'API key',
657
+ 'dev key': 'API key',
658
+ 'API Console key': 'API key',
659
+ 'account name': 'username',
660
+ 'curated roles': 'predefined roles',
661
+ 'network IP address': 'internal IP address',
662
+ 'MIME type': 'media type',
663
+ 'interconnect type': 'connection type',
664
+ 'peer zone': 'peering zone',
665
+ 'Android device': 'Android-powered device',
666
+ 'Android devices': 'Android-powered devices',
667
+ },
668
+ message: 'Use "%s" instead of "%s" (Google product naming).',
669
+ link: WORD_LIST,
670
+ fix: false,
671
+ wordBoundary: true,
672
+ keysAreRegex: true,
673
+ });
674
+ rules['google/gcp-name'] = swapRule({
675
+ pairs: { GCP: 'Google Cloud' },
676
+ message: 'Use "%s" instead of "%s" (Google product naming).',
677
+ link: WORD_LIST,
678
+ fix: false,
679
+ wordBoundary: true,
680
+ });
681
+ // Case-sensitive on purpose, so only the wrongly cased form matches.
682
+ rules['google/brand-capitalization'] = swapRule({
683
+ pairs: {
684
+ 'Google Play Services': 'Google Play services',
685
+ 'Google account': 'Google Account',
686
+ 'Google accounts': 'Google Accounts',
687
+ cURL: 'curl',
688
+ },
689
+ message: 'Use "%s" instead of "%s" (Google: fixed brand capitalization).',
690
+ link: WORD_LIST,
691
+ wordBoundary: true,
692
+ });
693
+ // These lowercase phrases also have ordinary meanings, such as "a markdown of
694
+ // thirty percent", so they are kept apart from the rule above.
695
+ rules['google/brand-capitalization-proper-noun'] = swapRule({
696
+ pairs: {
697
+ markdown: 'Markdown',
698
+ 'material design': 'Material Design',
699
+ 'search console': 'Search Console',
700
+ },
701
+ message: 'Use "%s" instead of "%s" (Google: fixed brand capitalization).',
702
+ link: WORD_LIST,
703
+ fix: false,
704
+ wordBoundary: true,
705
+ });
706
+ // Compound and one-word forms
707
+ rules['google/compound-forms'] = swapRule({
708
+ pairs: {
709
+ 'e-mail': 'email',
710
+ 'E-mail': 'email',
711
+ 'e-commerce': 'ecommerce',
712
+ 'web page': 'webpage',
713
+ 'check box': 'checkbox',
714
+ 'code base': 'codebase',
715
+ 'code lab': 'codelab',
716
+ 'code-lab': 'codelab',
717
+ 'data store': 'datastore',
718
+ datacenter: 'data center',
719
+ datatype: 'data type',
720
+ 'file name': 'filename',
721
+ filesystem: 'file system',
722
+ 'front-end': 'frontend',
723
+ 'front end': 'frontend',
724
+ 'back-end': 'backend',
725
+ 'back end': 'backend',
726
+ 'host name': 'hostname',
727
+ 'end point': 'endpoint',
728
+ 'name space': 'namespace',
729
+ nameserver: 'name server',
730
+ 'life cycle': 'lifecycle',
731
+ 'life-cycle': 'lifecycle',
732
+ 'live stream': 'livestream',
733
+ 'health care': 'healthcare',
734
+ 'health-care': 'healthcare',
735
+ 'on prem': 'on-premises',
736
+ 'on premise': 'on-premises',
737
+ 'on-premise': 'on-premises',
738
+ 'read only': 'read-only',
739
+ 'pre-built': 'prebuilt',
740
+ 'run book': 'runbook',
741
+ 'screen shot': 'screenshot',
742
+ 'time stamp': 'timestamp',
743
+ 'time frame': 'timeframe',
744
+ 'time-to-live': 'time to live',
745
+ 'tool kit': 'toolkit',
746
+ 'tool-kit': 'toolkit',
747
+ 'touch screen': 'touchscreen',
748
+ 'user base': 'userbase',
749
+ 'walk-through': 'walkthrough',
750
+ webserver: 'web server',
751
+ 'white paper': 'whitepaper',
752
+ 'white space': 'whitespace',
753
+ 'wild card': 'wildcard',
754
+ statusbar: 'status bar',
755
+ 'status-bar': 'status bar',
756
+ 'key/value pair': 'key-value pair',
757
+ 'key value pair': 'key-value pair',
758
+ singlemost: 'single most',
759
+ signin: 'sign-in',
760
+ signout: 'sign-out',
761
+ 'auto-healing': 'autohealing',
762
+ 'auto-scaling': 'autoscaling',
763
+ 'auto-populate': 'autopopulate',
764
+ 'auto populate': 'autopopulate',
765
+ 'auto-tagging': 'autotagging',
766
+ 'pre-capture': 'precapture',
767
+ 'pre-emptible': 'preemptible',
768
+ preexisting: 'pre-existing',
769
+ 'pre-recorded': 'prerecorded',
770
+ 'preshared key': 'pre-shared key',
771
+ 'pre-submit': 'presubmit',
772
+ 'meta-feed': 'metafeed',
773
+ 'meta-generation': 'metageneration',
774
+ 'inter-cluster': 'intercluster',
775
+ 'sub-tree': 'subtree',
776
+ 'sub-zone': 'subzone',
777
+ 'sub zone': 'subzone',
778
+ subcommand: 'sub-command',
779
+ 'co-locate': 'colocate',
780
+ 'blue/green': 'blue-green',
781
+ 'blue green': 'blue-green',
782
+ 'parent\u2014child': 'parent-child',
783
+ 'long running operation': 'long-running operation',
784
+ 'hard-code': 'hardcode',
785
+ 'hard-coded': 'hardcoded',
786
+ 'in-line': 'inline',
787
+ Unixlike: 'Unix-like',
788
+ 'Unix like': 'Unix-like',
789
+ 'resource recordset': 'resource record set',
790
+ },
791
+ message: 'Use "%s" instead of "%s" (Google compound-word form).',
792
+ link: WORD_LIST,
793
+ ignoreCase: true,
794
+ wordBoundary: true,
795
+ });
796
+ rules['google/compound-forms-word-choice'] = swapRule({
797
+ pairs: {
798
+ 'data cleansing': 'data cleaning',
799
+ transcompile: 'transpile',
800
+ autoupdate: 'automatically update',
801
+ 'pre-emptive': 'preemptible',
802
+ noops: 'fully managed',
803
+ NoOps: 'fully managed',
804
+ },
805
+ message: 'Use "%s" instead of "%s" (Google compound-word form).',
806
+ link: WORD_LIST,
807
+ fix: false,
808
+ ignoreCase: true,
809
+ wordBoundary: true,
810
+ });
811
+ // "datasource" is also a Java and Spring class and property name.
812
+ rules['google/compound-forms-proper-noun'] = swapRule({
813
+ pairs: {
814
+ datasource: 'data source',
815
+ },
816
+ message: 'Use "%s" instead of "%s" (Google compound-word form).',
817
+ link: WORD_LIST,
818
+ fix: false,
819
+ ignoreCase: true,
820
+ wordBoundary: true,
821
+ });
822
+ // "colo" is a noun and "colocate" is a verb, so a swap can break the grammar.
823
+ rules['google/colo-form'] = swapRule({
824
+ pairs: { colo: 'colocate' },
825
+ message: 'Use "%s" instead of "%s" (Google compound-word form).',
826
+ link: WORD_LIST,
827
+ ignoreCase: true,
828
+ wordBoundary: true,
829
+ fix: false,
830
+ });
831
+ // "in line" is not a pair, because "in line with" and "wait in line" are correct.
832
+ // Case-sensitive on purpose, so lowercase "https" in a URL is not matched.
833
+ rules['google/acronym-forms'] = swapRule({
834
+ pairs: {
835
+ HTTPs: 'HTTPS',
836
+ IPSec: 'IPsec',
837
+ 'No-SQL': 'NoSQL',
838
+ 'No SQL': 'NoSQL',
839
+ // Skips "OAuth 2.0", which is already correct.
840
+ 'OAuth 2(?!\\.0)': 'OAuth 2.0',
841
+ OAuth2: 'OAuth 2.0',
842
+ Oauth: 'OAuth 2.0',
843
+ 'micro-services': 'microservices',
844
+ 'fin-tech': 'fintech',
845
+ adtech: 'ad tech',
846
+ 'ad-tech': 'ad tech',
847
+ },
848
+ message: 'Use "%s" instead of "%s" (Google: fixed acronym/abbreviation form).',
849
+ link: WORD_LIST,
850
+ wordBoundary: true,
851
+ keysAreRegex: true,
852
+ });
853
+ // "FinTech Group AG" and "I-O DATA" are real company names.
854
+ rules['google/acronym-forms-proper-noun'] = swapRule({
855
+ pairs: {
856
+ 'I-O': 'I/O',
857
+ FinTech: 'fintech',
858
+ },
859
+ message: 'Use "%s" instead of "%s" (Google: fixed acronym/abbreviation form).',
860
+ link: WORD_LIST,
861
+ fix: false,
862
+ wordBoundary: true,
863
+ keysAreRegex: true,
864
+ });
865
+ // "IO" is also part of names like "Socket.IO".
866
+ rules['google/acronym-caps-detect-only'] = swapRule({
867
+ pairs: { UNICODE: 'Unicode', IPSEC: 'IPsec', IO: 'I/O' },
868
+ message: 'Use "%s" instead of "%s" (Google: fixed acronym/abbreviation form).',
869
+ link: WORD_LIST,
870
+ wordBoundary: true,
871
+ fix: false,
872
+ });
873
+ // Does not match "HMAC-SHA1", which the guide allows.
874
+ rules['google/sha1-form'] = swapRule({
875
+ pairs: { '(?<!-)\\bSHA1\\b': 'SHA-1' },
876
+ message: 'Use "%s" instead of "%s" (Google: fixed acronym/abbreviation form).',
877
+ link: WORD_LIST,
878
+ wordBoundary: false,
879
+ keysAreRegex: true,
880
+ fix: false,
881
+ });
882
+ // Inclusive language
883
+ // Bare "master" is not flagged because it has many other meanings.
884
+ rules['google/master-slave'] = swapRule({
885
+ pairs: { slave: 'worker' },
886
+ message: 'Avoid "%s"; use "worker" or "replica" instead (Google).',
887
+ link: `${WORD_LIST}#slave`,
888
+ ignoreCase: true,
889
+ wordBoundary: true,
890
+ fix: false,
891
+ });
892
+ rules['google/blacklist-whitelist'] = swapRule({
893
+ pairs: {
894
+ blacklist: 'denylist',
895
+ whitelist: 'allowlist',
896
+ graylist: 'denylist',
897
+ greylist: 'denylist',
898
+ },
899
+ message: 'Use "%s" instead of "%s" (Google inclusive language).',
900
+ link: `${WORD_LIST}#blacklist`,
901
+ ignoreCase: true,
902
+ wordBoundary: true,
903
+ fix: false,
904
+ });
905
+ rules['google/black-white-hat'] = swapRule({
906
+ pairs: {
907
+ 'black hat': 'unethical',
908
+ blackhat: 'unethical',
909
+ 'white hat': 'ethical',
910
+ whitehat: 'ethical',
911
+ },
912
+ message: 'Use a precise term such as "%s" instead of "%s" (Google inclusive language).',
913
+ link: `${WORD_LIST}#blackhat`,
914
+ ignoreCase: true,
915
+ wordBoundary: true,
916
+ fix: false,
917
+ });
918
+ rules['google/black-white-box-testing'] = swapRule({
919
+ pairs: {
920
+ 'black-box testing': 'opaque-box testing',
921
+ 'black box testing': 'opaque-box testing',
922
+ 'white-box testing': 'clear-box testing',
923
+ 'white box testing': 'clear-box testing',
924
+ 'black-box monitoring': 'synthetic monitoring',
925
+ 'white-box monitoring': 'introspective monitoring',
926
+ },
927
+ message: 'Use "%s" instead of "%s" (Google inclusive language).',
928
+ link: `${WORD_LIST}#black-box`,
929
+ fix: false,
930
+ ignoreCase: true,
931
+ wordBoundary: true,
932
+ });
933
+ rules['google/grayed-out'] = swapRule({
934
+ pairs: { 'grayed-out': 'unavailable', 'greyed-out': 'unavailable' },
935
+ message: 'Use "%s" instead of "%s" (Google inclusive language).',
936
+ link: `${WORD_LIST}#grayed-out`,
937
+ fix: false,
938
+ ignoreCase: true,
939
+ wordBoundary: true,
940
+ });
941
+ rules['google/grandfathered'] = swapRule({
942
+ pairs: { grandfathered: 'legacy', 'grandfather clause': 'exempt' },
943
+ message: 'Use "%s" instead of "%s" (Google inclusive language).',
944
+ link: `${WORD_LIST}#grandfathered`,
945
+ ignoreCase: true,
946
+ wordBoundary: true,
947
+ fix: false,
948
+ });
949
+ rules['google/gendered-terms'] = swapRule({
950
+ pairs: {
951
+ 'you guys': 'everyone',
952
+ guys: 'everyone',
953
+ 'male adapter': 'plug',
954
+ 'female adapter': 'socket',
955
+ 'man hours': 'person hours',
956
+ manhours: 'person hours',
957
+ manmade: 'artificial',
958
+ 'man made': 'artificial',
959
+ manned: 'staffed',
960
+ manpower: 'staff',
961
+ 'man-power': 'staff',
962
+ 'man-in-the-middle': 'on-path attacker',
963
+ 'he/she': 'they',
964
+ webmaster: 'website owner',
965
+ },
966
+ message: 'Use non-gendered language such as "%s" instead of "%s" (Google inclusive language).',
967
+ link: `${WORD_LIST}#man_hours`,
968
+ ignoreCase: true,
969
+ wordBoundary: true,
970
+ fix: false,
971
+ });
972
+ rules['google/jargon-with-people-references'] = swapRule({
973
+ pairs: {
974
+ gypsy: 'Romani',
975
+ ghetto: 'clumsy',
976
+ ninja: 'expert',
977
+ guru: 'expert',
978
+ sherpa: 'guide',
979
+ dojo: 'training',
980
+ 'mom test': 'beginner user test',
981
+ 'grandma test': 'beginner user test',
982
+ 'girlfriend test': 'beginner user test',
983
+ 'monkey test': 'automated, random tests',
984
+ 'brown bag': 'learning session',
985
+ 'brown-bag': 'learning session',
986
+ 'build cop': 'build monitor',
987
+ 'build sheriff': 'build monitor',
988
+ 'war room': 'incident-management team',
989
+ warroom: 'incident-management team',
990
+ 'final solution': 'solution',
991
+ 'demilitarized zone': 'perimeter network',
992
+ DMZ: 'perimeter network',
993
+ denigrate: 'disparage',
994
+ sexy: 'elegant',
995
+ nuke: 'remove',
996
+ voodoo: 'mysterious',
997
+ 'first-class citizen': 'higher-order value',
998
+ 'first class citizen': 'higher-order value',
999
+ },
1000
+ message: 'Use a precise term such as "%s" instead of "%s" (Google jargon/inclusive language).',
1001
+ link: `${WORD_LIST}#ninja`,
1002
+ ignoreCase: true,
1003
+ wordBoundary: true,
1004
+ fix: false,
1005
+ });
1006
+ // "mad", "hang" and "hung" are left out because they usually have other meanings.
1007
+ rules['google/ableist-figurative-terms'] = swapRule({
1008
+ pairs: {
1009
+ crazy: 'unexpected',
1010
+ insane: 'unexpected',
1011
+ lunatic: 'unexpected',
1012
+ bonkers: 'unexpected',
1013
+ loony: 'unexpected',
1014
+ sane: 'valid',
1015
+ 'sanity check': 'quick check',
1016
+ 'dumb down': 'simplify',
1017
+ retarded: 'slowed',
1018
+ },
1019
+ message: 'Use a precise term such as "%s" instead of "%s" when describing a system or object (Google).',
1020
+ link: `${WORD_LIST}#crazy`,
1021
+ ignoreCase: true,
1022
+ wordBoundary: true,
1023
+ fix: false,
1024
+ });
1025
+ rules['google/dummy-variable'] = swapRule({
1026
+ pairs: { 'dummy variable': 'placeholder' },
1027
+ message: 'Use "%s" instead of "%s" (Google): for a statistics sense, see the word list for alternatives.',
1028
+ link: `${WORD_LIST}#dummy-variable`,
1029
+ ignoreCase: true,
1030
+ wordBoundary: true,
1031
+ fix: false,
1032
+ });
1033
+ // Only the figurative sense. "blind writes" is a real technical term.
1034
+ rules['google/blind-figurative'] = patternRule({
1035
+ tokens: ['\\bblind to\\b', '\\bblind eye to\\b'],
1036
+ message: 'Use "ignore", "unaware of", "disregard", or "reject" instead of "%s" (Google).',
1037
+ link: `${WORD_LIST}#blind`,
1038
+ ignoreCase: true,
1039
+ });
1040
+ // This is about people who are blind, not the figurative use above.
1041
+ rules['google/unsighted-visually-challenged'] = swapRule({
1042
+ pairs: {
1043
+ unsighted: 'person who is blind',
1044
+ 'visually challenged': 'person who is visually impaired',
1045
+ },
1046
+ message: 'Use "%s" instead of "%s" (Google inclusive language).',
1047
+ link: `${WORD_LIST}#unsighted`,
1048
+ ignoreCase: true,
1049
+ wordBoundary: true,
1050
+ fix: false,
1051
+ });
1052
+ rules['google/disability-language'] = swapRule({
1053
+ pairs: {
1054
+ 'the disabled': 'people with disabilities',
1055
+ 'a quadriplegic': 'a quadriplegic person',
1056
+ 'wheelchair-bound': 'uses a wheelchair',
1057
+ 'suffering from': 'experiencing',
1058
+ 'victim of': 'living with',
1059
+ },
1060
+ message: 'Use "%s" instead of "%s" (Google inclusive documentation).',
1061
+ link: INCLUSIVE_DOCUMENTATION,
1062
+ ignoreCase: true,
1063
+ wordBoundary: true,
1064
+ fix: false,
1065
+ });
1066
+ // These are about precision, not people. Bare "fat" is left out because of the FAT
1067
+ // file system.
1068
+ rules['google/technical-jargon-precision'] = swapRule({
1069
+ pairs: {
1070
+ 'fat client': 'full-featured client',
1071
+ 'fat connection': 'high-capacity network connection',
1072
+ chubby: 'overextended',
1073
+ },
1074
+ message: 'Use a precise term such as "%s" instead of "%s" (Google: technical-jargon precision, not people).',
1075
+ link: `${WORD_LIST}#fat`,
1076
+ ignoreCase: true,
1077
+ wordBoundary: true,
1078
+ fix: false,
1079
+ });
1080
+ // Rules never fix, even if a swap sets `fix`.
1081
+ for (const rule of Object.values(rules)) {
1082
+ rule.fix = false;
1083
+ }
1084
+ return rules;
1085
+ }
1086
+ //# sourceMappingURL=google.js.map