@thethracian/oxlint-config 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +125 -19
  3. package/dist/codemod-fix/cli.d.ts +3 -0
  4. package/dist/codemod-fix/cli.d.ts.map +1 -0
  5. package/dist/codemod-fix/cli.js +22 -0
  6. package/dist/codemod-fix/cli.js.map +1 -0
  7. package/dist/codemod-fix/index.d.ts +44 -0
  8. package/dist/codemod-fix/index.d.ts.map +1 -0
  9. package/dist/codemod-fix/index.js +110 -0
  10. package/dist/codemod-fix/index.js.map +1 -0
  11. package/dist/codemods/arrow-body-style.d.ts +7 -0
  12. package/dist/codemods/arrow-body-style.d.ts.map +1 -0
  13. package/dist/codemods/arrow-body-style.js +106 -0
  14. package/dist/codemods/arrow-body-style.js.map +1 -0
  15. package/dist/codemods/comment-format.d.ts +24 -0
  16. package/dist/codemods/comment-format.d.ts.map +1 -0
  17. package/dist/codemods/comment-format.js +100 -0
  18. package/dist/codemods/comment-format.js.map +1 -0
  19. package/dist/codemods/explicit-return-types.d.ts +7 -0
  20. package/dist/codemods/explicit-return-types.d.ts.map +1 -0
  21. package/dist/codemods/explicit-return-types.js +350 -0
  22. package/dist/codemods/explicit-return-types.js.map +1 -0
  23. package/dist/codemods/format-file-header.d.ts +7 -0
  24. package/dist/codemods/format-file-header.d.ts.map +1 -0
  25. package/dist/codemods/format-file-header.js +163 -0
  26. package/dist/codemods/format-file-header.js.map +1 -0
  27. package/dist/codemods/format-jsdoc-comments.d.ts +7 -0
  28. package/dist/codemods/format-jsdoc-comments.d.ts.map +1 -0
  29. package/dist/codemods/format-jsdoc-comments.js +129 -0
  30. package/dist/codemods/format-jsdoc-comments.js.map +1 -0
  31. package/dist/codemods/function-declarations.d.ts +7 -0
  32. package/dist/codemods/function-declarations.d.ts.map +1 -0
  33. package/dist/codemods/function-declarations.js +202 -0
  34. package/dist/codemods/function-declarations.js.map +1 -0
  35. package/dist/codemods/inline-export-lists.d.ts +7 -0
  36. package/dist/codemods/inline-export-lists.d.ts.map +1 -0
  37. package/dist/codemods/inline-export-lists.js +168 -0
  38. package/dist/codemods/inline-export-lists.js.map +1 -0
  39. package/dist/codemods/internal-export-docs.d.ts +7 -0
  40. package/dist/codemods/internal-export-docs.d.ts.map +1 -0
  41. package/dist/codemods/internal-export-docs.js +93 -0
  42. package/dist/codemods/internal-export-docs.js.map +1 -0
  43. package/dist/codemods/no-ternary-branch-initializers.d.ts +14 -0
  44. package/dist/codemods/no-ternary-branch-initializers.d.ts.map +1 -0
  45. package/dist/codemods/no-ternary-branch-initializers.js +240 -0
  46. package/dist/codemods/no-ternary-branch-initializers.js.map +1 -0
  47. package/dist/codemods/no-ternary-variable-initializers.d.ts +14 -0
  48. package/dist/codemods/no-ternary-variable-initializers.d.ts.map +1 -0
  49. package/dist/codemods/no-ternary-variable-initializers.js +235 -0
  50. package/dist/codemods/no-ternary-variable-initializers.js.map +1 -0
  51. package/dist/codemods/no-ternary.d.ts +7 -0
  52. package/dist/codemods/no-ternary.d.ts.map +1 -0
  53. package/dist/codemods/no-ternary.js +215 -0
  54. package/dist/codemods/no-ternary.js.map +1 -0
  55. package/dist/codemods/rename-acronyms.d.ts +8 -0
  56. package/dist/codemods/rename-acronyms.d.ts.map +1 -0
  57. package/dist/codemods/rename-acronyms.js +193 -0
  58. package/dist/codemods/rename-acronyms.js.map +1 -0
  59. package/dist/codemods/run.d.ts +2 -0
  60. package/dist/codemods/run.d.ts.map +1 -0
  61. package/dist/codemods/run.js +14 -0
  62. package/dist/codemods/run.js.map +1 -0
  63. package/dist/codemods/sort-imports.d.ts +7 -0
  64. package/dist/codemods/sort-imports.d.ts.map +1 -0
  65. package/dist/codemods/sort-imports.js +235 -0
  66. package/dist/codemods/sort-imports.js.map +1 -0
  67. package/dist/index.d.ts +30 -96
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +157 -95
  70. package/dist/index.js.map +1 -1
  71. package/dist/rules/acronym-case.d.ts +7 -3
  72. package/dist/rules/acronym-case.d.ts.map +1 -1
  73. package/dist/rules/acronym-case.js +129 -120
  74. package/dist/rules/acronym-case.js.map +1 -1
  75. package/dist/rules/acronyms-1.d.ts +3 -0
  76. package/dist/rules/acronyms-1.d.ts.map +1 -0
  77. package/dist/rules/acronyms-1.js +407 -0
  78. package/dist/rules/acronyms-1.js.map +1 -0
  79. package/dist/rules/acronyms-2.d.ts +3 -0
  80. package/dist/rules/acronyms-2.d.ts.map +1 -0
  81. package/dist/rules/acronyms-2.js +407 -0
  82. package/dist/rules/acronyms-2.js.map +1 -0
  83. package/dist/rules/acronyms-3.d.ts +3 -0
  84. package/dist/rules/acronyms-3.d.ts.map +1 -0
  85. package/dist/rules/acronyms-3.js +407 -0
  86. package/dist/rules/acronyms-3.js.map +1 -0
  87. package/dist/rules/acronyms-4.d.ts +3 -0
  88. package/dist/rules/acronyms-4.d.ts.map +1 -0
  89. package/dist/rules/acronyms-4.js +377 -0
  90. package/dist/rules/acronyms-4.js.map +1 -0
  91. package/dist/rules/acronyms.d.ts +1 -8
  92. package/dist/rules/acronyms.d.ts.map +1 -1
  93. package/dist/rules/acronyms.js +14 -1578
  94. package/dist/rules/acronyms.js.map +1 -1
  95. package/dist/rules/boolean-prefix.d.ts +11 -2
  96. package/dist/rules/boolean-prefix.d.ts.map +1 -1
  97. package/dist/rules/boolean-prefix.js +95 -59
  98. package/dist/rules/boolean-prefix.js.map +1 -1
  99. package/dist/rules/camel-case-identifiers.d.ts +3 -4
  100. package/dist/rules/camel-case-identifiers.d.ts.map +1 -1
  101. package/dist/rules/camel-case-identifiers.js +59 -40
  102. package/dist/rules/camel-case-identifiers.js.map +1 -1
  103. package/dist/rules/char-class.d.ts +26 -13
  104. package/dist/rules/char-class.d.ts.map +1 -1
  105. package/dist/rules/char-class.js +56 -24
  106. package/dist/rules/char-class.js.map +1 -1
  107. package/dist/rules/diagnostic-guidance.d.ts +91 -0
  108. package/dist/rules/diagnostic-guidance.d.ts.map +1 -0
  109. package/dist/rules/diagnostic-guidance.js +243 -0
  110. package/dist/rules/diagnostic-guidance.js.map +1 -0
  111. package/dist/rules/effect-default-ast.d.ts +89 -0
  112. package/dist/rules/effect-default-ast.d.ts.map +1 -0
  113. package/dist/rules/effect-default-ast.js +208 -0
  114. package/dist/rules/effect-default-ast.js.map +1 -0
  115. package/dist/rules/effect-default-compat-rules.d.ts +76 -0
  116. package/dist/rules/effect-default-compat-rules.d.ts.map +1 -0
  117. package/dist/rules/effect-default-compat-rules.js +270 -0
  118. package/dist/rules/effect-default-compat-rules.js.map +1 -0
  119. package/dist/rules/effect-default-env-rules.d.ts +60 -0
  120. package/dist/rules/effect-default-env-rules.d.ts.map +1 -0
  121. package/dist/rules/effect-default-env-rules.js +259 -0
  122. package/dist/rules/effect-default-env-rules.js.map +1 -0
  123. package/dist/rules/effect-default-fiber-helpers.d.ts +13 -0
  124. package/dist/rules/effect-default-fiber-helpers.d.ts.map +1 -0
  125. package/dist/rules/effect-default-fiber-helpers.js +76 -0
  126. package/dist/rules/effect-default-fiber-helpers.js.map +1 -0
  127. package/dist/rules/effect-default-floating-helpers.d.ts +7 -0
  128. package/dist/rules/effect-default-floating-helpers.d.ts.map +1 -0
  129. package/dist/rules/effect-default-floating-helpers.js +113 -0
  130. package/dist/rules/effect-default-floating-helpers.js.map +1 -0
  131. package/dist/rules/effect-default-helpers.d.ts +8 -32
  132. package/dist/rules/effect-default-helpers.d.ts.map +1 -1
  133. package/dist/rules/effect-default-helpers.js +11 -458
  134. package/dist/rules/effect-default-helpers.js.map +1 -1
  135. package/dist/rules/effect-default-resource-helpers.d.ts +18 -4
  136. package/dist/rules/effect-default-resource-helpers.d.ts.map +1 -1
  137. package/dist/rules/effect-default-resource-helpers.js +30 -13
  138. package/dist/rules/effect-default-resource-helpers.js.map +1 -1
  139. package/dist/rules/effect-default-safety-helpers.d.ts +43 -0
  140. package/dist/rules/effect-default-safety-helpers.d.ts.map +1 -0
  141. package/dist/rules/effect-default-safety-helpers.js +126 -0
  142. package/dist/rules/effect-default-safety-helpers.js.map +1 -0
  143. package/dist/rules/effect-default-scan-helpers.d.ts +43 -0
  144. package/dist/rules/effect-default-scan-helpers.d.ts.map +1 -0
  145. package/dist/rules/effect-default-scan-helpers.js +141 -0
  146. package/dist/rules/effect-default-scan-helpers.js.map +1 -0
  147. package/dist/rules/effect-default-schema-helpers.d.ts +37 -0
  148. package/dist/rules/effect-default-schema-helpers.d.ts.map +1 -0
  149. package/dist/rules/effect-default-schema-helpers.js +104 -0
  150. package/dist/rules/effect-default-schema-helpers.js.map +1 -0
  151. package/dist/rules/effect-default-test-helpers.d.ts +18 -4
  152. package/dist/rules/effect-default-test-helpers.d.ts.map +1 -1
  153. package/dist/rules/effect-default-test-helpers.js +41 -20
  154. package/dist/rules/effect-default-test-helpers.js.map +1 -1
  155. package/dist/rules/effect-default-workflow-helpers.d.ts +91 -0
  156. package/dist/rules/effect-default-workflow-helpers.d.ts.map +1 -0
  157. package/dist/rules/effect-default-workflow-helpers.js +247 -0
  158. package/dist/rules/effect-default-workflow-helpers.js.map +1 -0
  159. package/dist/rules/effect-default.d.ts +1 -1
  160. package/dist/rules/effect-default.d.ts.map +1 -1
  161. package/dist/rules/effect-default.js +198 -637
  162. package/dist/rules/effect-default.js.map +1 -1
  163. package/dist/rules/effect-exported-declarations.d.ts +19 -0
  164. package/dist/rules/effect-exported-declarations.d.ts.map +1 -0
  165. package/dist/rules/effect-exported-declarations.js +237 -0
  166. package/dist/rules/effect-exported-declarations.js.map +1 -0
  167. package/dist/rules/effect-path-options.d.ts +49 -11
  168. package/dist/rules/effect-path-options.d.ts.map +1 -1
  169. package/dist/rules/effect-path-options.js +85 -52
  170. package/dist/rules/effect-path-options.js.map +1 -1
  171. package/dist/rules/effect-rule-aliases.d.ts +55 -0
  172. package/dist/rules/effect-rule-aliases.d.ts.map +1 -0
  173. package/dist/rules/effect-rule-aliases.js +278 -0
  174. package/dist/rules/effect-rule-aliases.js.map +1 -0
  175. package/dist/rules/effect-rule-core.d.ts +46 -24
  176. package/dist/rules/effect-rule-core.d.ts.map +1 -1
  177. package/dist/rules/effect-rule-core.js +263 -303
  178. package/dist/rules/effect-rule-core.js.map +1 -1
  179. package/dist/rules/effect-rule-names.d.ts +12 -3
  180. package/dist/rules/effect-rule-names.d.ts.map +1 -1
  181. package/dist/rules/effect-rule-names.js +15 -3
  182. package/dist/rules/effect-rule-names.js.map +1 -1
  183. package/dist/rules/effect-source-comments.d.ts +7 -0
  184. package/dist/rules/effect-source-comments.d.ts.map +1 -0
  185. package/dist/rules/effect-source-comments.js +227 -0
  186. package/dist/rules/effect-source-comments.js.map +1 -0
  187. package/dist/rules/effect-source-helpers.d.ts +4 -9
  188. package/dist/rules/effect-source-helpers.d.ts.map +1 -1
  189. package/dist/rules/effect-source-helpers.js +7 -333
  190. package/dist/rules/effect-source-helpers.js.map +1 -1
  191. package/dist/rules/effect-source-navigation.d.ts +25 -0
  192. package/dist/rules/effect-source-navigation.d.ts.map +1 -0
  193. package/dist/rules/effect-source-navigation.js +244 -0
  194. package/dist/rules/effect-source-navigation.js.map +1 -0
  195. package/dist/rules/effect-source-scan.d.ts +30 -7
  196. package/dist/rules/effect-source-scan.d.ts.map +1 -1
  197. package/dist/rules/effect-source-scan.js +377 -297
  198. package/dist/rules/effect-source-scan.js.map +1 -1
  199. package/dist/rules/effect-strict-ast-specs.d.ts +8 -0
  200. package/dist/rules/effect-strict-ast-specs.d.ts.map +1 -0
  201. package/dist/rules/effect-strict-ast-specs.js +166 -0
  202. package/dist/rules/effect-strict-ast-specs.js.map +1 -0
  203. package/dist/rules/effect-strict-boundary-helpers.d.ts +25 -0
  204. package/dist/rules/effect-strict-boundary-helpers.d.ts.map +1 -0
  205. package/dist/rules/effect-strict-boundary-helpers.js +127 -0
  206. package/dist/rules/effect-strict-boundary-helpers.js.map +1 -0
  207. package/dist/rules/effect-strict-core-specs.d.ts +8 -0
  208. package/dist/rules/effect-strict-core-specs.d.ts.map +1 -0
  209. package/dist/rules/effect-strict-core-specs.js +334 -0
  210. package/dist/rules/effect-strict-core-specs.js.map +1 -0
  211. package/dist/rules/effect-strict-external-helpers.d.ts +25 -0
  212. package/dist/rules/effect-strict-external-helpers.d.ts.map +1 -0
  213. package/dist/rules/effect-strict-external-helpers.js +87 -0
  214. package/dist/rules/effect-strict-external-helpers.js.map +1 -0
  215. package/dist/rules/effect-strict-helpers.d.ts +75 -33
  216. package/dist/rules/effect-strict-helpers.d.ts.map +1 -1
  217. package/dist/rules/effect-strict-helpers.js +124 -246
  218. package/dist/rules/effect-strict-helpers.js.map +1 -1
  219. package/dist/rules/effect-strict-internals.d.ts +198 -0
  220. package/dist/rules/effect-strict-internals.d.ts.map +1 -0
  221. package/dist/rules/effect-strict-internals.js +477 -0
  222. package/dist/rules/effect-strict-internals.js.map +1 -0
  223. package/dist/rules/effect-strict-segment-helpers.d.ts +79 -0
  224. package/dist/rules/effect-strict-segment-helpers.d.ts.map +1 -0
  225. package/dist/rules/effect-strict-segment-helpers.js +308 -0
  226. package/dist/rules/effect-strict-segment-helpers.js.map +1 -0
  227. package/dist/rules/effect-strict.d.ts +1 -1
  228. package/dist/rules/effect-strict.d.ts.map +1 -1
  229. package/dist/rules/effect-strict.js +10 -661
  230. package/dist/rules/effect-strict.js.map +1 -1
  231. package/dist/rules/max-import-depth.d.ts +2 -2
  232. package/dist/rules/max-import-depth.d.ts.map +1 -1
  233. package/dist/rules/max-import-depth.js +52 -17
  234. package/dist/rules/max-import-depth.js.map +1 -1
  235. package/dist/rules/max-line-length.d.ts +9 -2
  236. package/dist/rules/max-line-length.d.ts.map +1 -1
  237. package/dist/rules/max-line-length.js +62 -7
  238. package/dist/rules/max-line-length.js.map +1 -1
  239. package/dist/rules/no-commented-out-code.d.ts +3 -7
  240. package/dist/rules/no-commented-out-code.d.ts.map +1 -1
  241. package/dist/rules/no-commented-out-code.js +157 -102
  242. package/dist/rules/no-commented-out-code.js.map +1 -1
  243. package/dist/rules/pascal-case-types.d.ts +1 -1
  244. package/dist/rules/pascal-case-types.d.ts.map +1 -1
  245. package/dist/rules/pascal-case-types.js +65 -46
  246. package/dist/rules/pascal-case-types.js.map +1 -1
  247. package/dist/rules/plugin-commented-out-code-rule.d.ts +32 -0
  248. package/dist/rules/plugin-commented-out-code-rule.d.ts.map +1 -0
  249. package/dist/rules/plugin-commented-out-code-rule.js +135 -0
  250. package/dist/rules/plugin-commented-out-code-rule.js.map +1 -0
  251. package/dist/rules/plugin.d.ts +3 -121
  252. package/dist/rules/plugin.d.ts.map +1 -1
  253. package/dist/rules/plugin.js +195 -201
  254. package/dist/rules/plugin.js.map +1 -1
  255. package/dist/rules/private-underscore.d.ts +1 -1
  256. package/dist/rules/private-underscore.d.ts.map +1 -1
  257. package/dist/rules/private-underscore.js +11 -4
  258. package/dist/rules/private-underscore.js.map +1 -1
  259. package/dist/rules/require-file-doc.d.ts +5 -6
  260. package/dist/rules/require-file-doc.d.ts.map +1 -1
  261. package/dist/rules/require-file-doc.js +127 -78
  262. package/dist/rules/require-file-doc.js.map +1 -1
  263. package/dist/rules/require-function-doc-ignored-text.d.ts +7 -0
  264. package/dist/rules/require-function-doc-ignored-text.d.ts.map +1 -0
  265. package/dist/rules/require-function-doc-ignored-text.js +67 -0
  266. package/dist/rules/require-function-doc-ignored-text.js.map +1 -0
  267. package/dist/rules/require-function-doc-local-exports.d.ts +7 -0
  268. package/dist/rules/require-function-doc-local-exports.d.ts.map +1 -0
  269. package/dist/rules/require-function-doc-local-exports.js +114 -0
  270. package/dist/rules/require-function-doc-local-exports.js.map +1 -0
  271. package/dist/rules/require-function-doc.d.ts +3 -18
  272. package/dist/rules/require-function-doc.d.ts.map +1 -1
  273. package/dist/rules/require-function-doc.js +404 -218
  274. package/dist/rules/require-function-doc.js.map +1 -1
  275. package/dist/rules/source-cache.d.ts +19 -0
  276. package/dist/rules/source-cache.d.ts.map +1 -0
  277. package/dist/rules/source-cache.js +63 -0
  278. package/dist/rules/source-cache.js.map +1 -0
  279. package/package.json +15 -10
@@ -1 +1 @@
1
- {"version":3,"file":"private-underscore.js","sourceRoot":"","sources":["../../src/rules/private-underscore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,IAAY;IACvD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"private-underscore.js","sourceRoot":"","sources":["../../src/rules/private-underscore.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,IAAY;IACvD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,oBAAoB,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAU,EAAE;IACzD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,CAAC,CAAC"}
@@ -1,12 +1,11 @@
1
1
  /**
2
- * Extract the JSDoc file header comment from source text.
3
- * Skips leading shebang lines and whitespace.
4
- * Returns the full JSDoc block or null.
2
+ * Extract the JSDoc file header comment from source text. Skips leading shebang lines and whitespace.
3
+ * Returns the full JSDoc block or undefined.
5
4
  */
6
- export declare function extractDocHeader(source: string): string | null;
5
+ export declare const extractDocHeader: (source: string) => string | undefined;
7
6
  /**
8
- * Returns true if the source file satisfies the file doc requirement.
9
- * Requires: JSDoc header, opt-out marker, or empty/whitespace-only.
7
+ * Returns true if the source file satisfies the file doc requirement. Requires: divider header,
8
+ * opt-out marker, or empty/whitespace-only.
10
9
  */
11
10
  export default function hasRequiredFileDoc(source: string): boolean;
12
11
  //# sourceMappingURL=require-file-doc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"require-file-doc.d.ts","sourceRoot":"","sources":["../../src/rules/require-file-doc.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2C9D;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAsDlE"}
1
+ {"version":3,"file":"require-file-doc.d.ts","sourceRoot":"","sources":["../../src/rules/require-file-doc.ts"],"names":[],"mappings":"AA0IA;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,MAAM,GAAG,SAO1D,CAAC;AAiBF;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAWlE"}
@@ -1,3 +1,6 @@
1
+ /* -------------------------------------------------------------------------- */
2
+ /* File-level documentation requirement helper for custom Oxlint rules. */
3
+ /* -------------------------------------------------------------------------- */
1
4
  // Character code constants
2
5
  const CH_HASH = 35;
3
6
  const CH_SLASH = 47;
@@ -5,101 +8,147 @@ const CH_SPACE = 32;
5
8
  const CH_NEWLINE = 10;
6
9
  const CH_RETURN = 13;
7
10
  const CH_TAB = 9;
11
+ const CH_ASTERISK = 42;
12
+ const JSDOC_PREFIX_LENGTH = 3;
13
+ const LINE_MARKER_LOOKAHEAD = 20;
14
+ const BLOCK_MARKER_LOOKAHEAD = 15;
8
15
  // Pre-computed search strings
9
- const JSDOC_START = '/**';
10
16
  const JSDOC_END = '*/';
11
- /**
12
- * Extract the JSDoc file header comment from source text.
13
- * Skips leading shebang lines and whitespace.
14
- * Returns the full JSDoc block or null.
15
- */
16
- export function extractDocHeader(source) {
17
- const len = source.length;
17
+ const DIVIDER_PREFIX = '/* ';
18
+ const DIVIDER_SUFFIX = ' */';
19
+ const DIVIDER_LENGTH = 80;
20
+ const DIVIDER_RULE = '/* -------------------------------------------------------------------------- */';
21
+ const isWhitespace = (code) => code === CH_SPACE || code === CH_NEWLINE || code === CH_RETURN || code === CH_TAB;
22
+ const skipShebangLines = (source, emptyResult) => {
18
23
  let pos = 0;
19
- // Skip shebang lines
20
- while (pos < len && source.charCodeAt(pos) === CH_HASH) {
21
- pos = source.indexOf('\n', pos);
22
- if (pos === -1) {
23
- return null;
24
+ while (pos < source.length && source.charCodeAt(pos) === CH_HASH) {
25
+ const nextLine = source.indexOf('\n', pos);
26
+ if (nextLine === -1) {
27
+ return emptyResult;
24
28
  }
29
+ pos = nextLine + 1;
30
+ }
31
+ return pos;
32
+ };
33
+ const skipLeadingWhitespace = (source, start) => {
34
+ let pos = start;
35
+ while (pos < source.length && isWhitespace(source.charCodeAt(pos))) {
25
36
  pos++;
26
37
  }
27
- // Skip leading whitespace
28
- while (pos < len) {
29
- const ch = source.charCodeAt(pos);
30
- if (ch !== CH_SPACE && ch !== CH_NEWLINE && ch !== CH_RETURN && ch !== CH_TAB) {
31
- break;
38
+ return pos;
39
+ };
40
+ const leadingContentPosition = (source, emptyResult) => skipLeadingWhitespace(source, skipShebangLines(source, emptyResult));
41
+ const hasJSDocStartAt = (source, pos) => pos + 2 < source.length &&
42
+ source.charCodeAt(pos) === CH_SLASH &&
43
+ source.charCodeAt(pos + 1) === CH_ASTERISK &&
44
+ source.charCodeAt(pos + 2) === CH_ASTERISK;
45
+ const lineEndAt = (source, start) => {
46
+ const newline = source.indexOf('\n', start);
47
+ if (newline === -1) {
48
+ return source.length;
49
+ }
50
+ return newline;
51
+ };
52
+ const nextLineStartAt = (source, start) => {
53
+ const newline = source.indexOf('\n', start);
54
+ if (newline === -1) {
55
+ return source.length;
56
+ }
57
+ return newline + 1;
58
+ };
59
+ const isDividerTextLine = (line) => line.length === DIVIDER_LENGTH &&
60
+ line.startsWith(DIVIDER_PREFIX) &&
61
+ line.endsWith(DIVIDER_SUFFIX);
62
+ const isDividerRuleLine = (line) => line === DIVIDER_RULE;
63
+ const nextDividerEnd = (source, start) => {
64
+ let cursor = nextLineStartAt(source, start);
65
+ while (cursor < source.length) {
66
+ const end = lineEndAt(source, cursor);
67
+ if (isDividerRuleLine(source.slice(cursor, end))) {
68
+ return end;
32
69
  }
33
- pos++;
70
+ cursor = nextLineStartAt(source, cursor);
71
+ }
72
+ return undefined;
73
+ };
74
+ const dividerHeaderEnd = (source, pos) => {
75
+ const firstEnd = lineEndAt(source, pos);
76
+ if (!isDividerRuleLine(source.slice(pos, firstEnd))) {
77
+ return undefined;
34
78
  }
35
- if (pos >= len) {
36
- return null;
79
+ const closingDividerEnd = nextDividerEnd(source, firstEnd);
80
+ if (closingDividerEnd !== undefined) {
81
+ const body = source.slice(nextLineStartAt(source, firstEnd), closingDividerEnd);
82
+ if (body.split('\n').every(isDividerTextLine)) {
83
+ return closingDividerEnd;
84
+ }
85
+ }
86
+ return undefined;
87
+ };
88
+ const boundedEnd = (source, pos, lookahead) => {
89
+ if (pos + lookahead < source.length) {
90
+ return pos + lookahead;
37
91
  }
38
- // Must be a JSDoc block comment
39
- if (pos + 2 >= len ||
40
- source.charCodeAt(pos) !== CH_SLASH ||
41
- source.charCodeAt(pos + 1) !== 42 ||
42
- source.charCodeAt(pos + 2) !== 42) {
43
- return null;
92
+ return source.length;
93
+ };
94
+ const hasLineOptOutMarker = (source, pos) => {
95
+ const end = boundedEnd(source, pos, LINE_MARKER_LOOKAHEAD);
96
+ const frag = source.slice(pos, end);
97
+ return frag.startsWith('// @internal') || frag.startsWith('// @generated');
98
+ };
99
+ const hasBlockOptOutMarker = (source, pos) => pos + 2 < source.length &&
100
+ source.charCodeAt(pos + 2) !== CH_ASTERISK &&
101
+ source.slice(pos, boundedEnd(source, pos, BLOCK_MARKER_LOOKAHEAD)).startsWith('/* @internal');
102
+ const hasOptOutMarker = (source, pos) => {
103
+ if (source.charCodeAt(pos) !== CH_SLASH || pos + 1 >= source.length) {
104
+ return false;
44
105
  }
45
- // Find closing */
46
- const closePos = source.indexOf(JSDOC_END, pos + 3);
47
- if (closePos === -1) {
48
- return null;
106
+ const next = source.charCodeAt(pos + 1);
107
+ if (next === CH_SLASH) {
108
+ return hasLineOptOutMarker(source, pos);
49
109
  }
50
- return source.slice(pos, closePos + 2);
51
- }
110
+ if (next === CH_ASTERISK) {
111
+ return hasBlockOptOutMarker(source, pos);
112
+ }
113
+ return false;
114
+ };
52
115
  /**
53
- * Returns true if the source file satisfies the file doc requirement.
54
- * Requires: JSDoc header, opt-out marker, or empty/whitespace-only.
116
+ * Extract the JSDoc file header comment from source text. Skips leading shebang lines and whitespace.
117
+ * Returns the full JSDoc block or undefined.
55
118
  */
56
- export default function hasRequiredFileDoc(source) {
57
- const len = source.length;
58
- let pos = 0;
59
- // Skip shebang lines
60
- while (pos < len && source.charCodeAt(pos) === CH_HASH) {
61
- pos = source.indexOf('\n', pos);
62
- if (pos === -1) {
63
- return true;
64
- }
65
- pos++;
119
+ export const extractDocHeader = (source) => {
120
+ const pos = leadingContentPosition(source, source.length);
121
+ if (pos >= source.length) {
122
+ return undefined;
66
123
  }
67
- // Skip leading whitespace
68
- while (pos < len) {
69
- const ch = source.charCodeAt(pos);
70
- if (ch !== CH_SPACE && ch !== CH_NEWLINE && ch !== CH_RETURN && ch !== CH_TAB) {
71
- break;
72
- }
73
- pos++;
124
+ return extractDocHeaderAt(source, pos);
125
+ };
126
+ const extractDocHeaderAt = (source, pos) => {
127
+ const dividerEnd = dividerHeaderEnd(source, pos);
128
+ if (dividerEnd !== undefined) {
129
+ return source.slice(pos, dividerEnd);
74
130
  }
75
- if (pos >= len) {
76
- return true;
131
+ if (!hasJSDocStartAt(source, pos)) {
132
+ return undefined;
77
133
  }
78
- // Opt-out markers
79
- if (source.charCodeAt(pos) === CH_SLASH && pos + 1 < len) {
80
- const next = source.charCodeAt(pos + 1);
81
- if (next === CH_SLASH) {
82
- // Line comment: check @internal or @generated
83
- const end = pos + 20 < len ? pos + 20 : len;
84
- const frag = source.slice(pos, end);
85
- if (frag.indexOf('// @internal') === 0 || frag.indexOf('// @generated') === 0) {
86
- return true;
87
- }
88
- }
89
- else if (next === 42 && pos + 2 < len && source.charCodeAt(pos + 2) !== 42) {
90
- // Block comment (not JSDoc): check @internal at start
91
- const end = pos + 15 < len ? pos + 15 : len;
92
- if (source.slice(pos, end).indexOf('/* @internal') === 0) {
93
- return true;
94
- }
95
- }
134
+ const closePOS = source.indexOf(JSDOC_END, pos + JSDOC_PREFIX_LENGTH);
135
+ if (closePOS === -1) {
136
+ return undefined;
96
137
  }
97
- // JSDoc header must be at or near file start
98
- const jsdocPos = source.indexOf(JSDOC_START, pos);
99
- if (jsdocPos === -1 || jsdocPos > pos + 50) {
100
- return false;
138
+ return source.slice(pos, closePOS + 2);
139
+ };
140
+ /**
141
+ * Returns true if the source file satisfies the file doc requirement. Requires: divider header,
142
+ * opt-out marker, or empty/whitespace-only.
143
+ */
144
+ export default function hasRequiredFileDoc(source) {
145
+ const pos = leadingContentPosition(source, source.length);
146
+ if (pos >= source.length) {
147
+ return true;
148
+ }
149
+ if (hasOptOutMarker(source, pos)) {
150
+ return true;
101
151
  }
102
- // Must close
103
- return source.indexOf(JSDOC_END, jsdocPos + 3) !== -1;
152
+ return dividerHeaderEnd(source, pos) !== undefined;
104
153
  }
105
154
  //# sourceMappingURL=require-file-doc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"require-file-doc.js","sourceRoot":"","sources":["../../src/rules/require-file-doc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"require-file-doc.js","sourceRoot":"","sources":["../../src/rules/require-file-doc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Checks whether a source offset is inside a comment or string literal.
3
+ *
4
+ * @internal
5
+ */
6
+ export declare const isInsideIgnoredText: (source: string, pos: number) => boolean;
7
+ //# sourceMappingURL=require-function-doc-ignored-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-function-doc-ignored-text.d.ts","sourceRoot":"","sources":["../../src/rules/require-function-doc-ignored-text.ts"],"names":[],"mappings":"AA6EA;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,EAAE,KAAK,MAAM,KAAG,OAMjE,CAAC"}
@@ -0,0 +1,67 @@
1
+ /* -------------------------------------------------------------------------- */
2
+ /* Ignored source-region helpers for exported JSDoc checks. */
3
+ /* -------------------------------------------------------------------------- */
4
+ const initialState = {
5
+ isBlockComment: false,
6
+ isEscaped: false,
7
+ isLineComment: false,
8
+ quote: undefined,
9
+ };
10
+ const quoteCharacters = new Set(['"', "'", '`']);
11
+ const lineCommentState = (state, char) => ({
12
+ ...state,
13
+ isLineComment: char !== '\n',
14
+ });
15
+ const blockCommentState = (state, char, nextChar) => ({
16
+ ...state,
17
+ isBlockComment: !(char === '*' && nextChar === '/'),
18
+ });
19
+ const quotedState = (state, char) => {
20
+ if (state.isEscaped) {
21
+ return { ...state, isEscaped: false };
22
+ }
23
+ if (char === '\\') {
24
+ return { ...state, isEscaped: true };
25
+ }
26
+ if (char === state.quote) {
27
+ return { ...state, quote: undefined };
28
+ }
29
+ return state;
30
+ };
31
+ const unquotedState = (state, char, nextChar) => {
32
+ if (char === '/' && nextChar === '/') {
33
+ return { ...state, isLineComment: true };
34
+ }
35
+ if (char === '/' && nextChar === '*') {
36
+ return { ...state, isBlockComment: true };
37
+ }
38
+ if (quoteCharacters.has(char)) {
39
+ return { ...state, quote: char };
40
+ }
41
+ return state;
42
+ };
43
+ const nextIgnoredState = (state, char, nextChar) => {
44
+ if (state.isLineComment) {
45
+ return lineCommentState(state, char);
46
+ }
47
+ if (state.isBlockComment) {
48
+ return blockCommentState(state, char, nextChar);
49
+ }
50
+ if (state.quote) {
51
+ return quotedState(state, char);
52
+ }
53
+ return unquotedState(state, char, nextChar);
54
+ };
55
+ /**
56
+ * Checks whether a source offset is inside a comment or string literal.
57
+ *
58
+ * @internal
59
+ */
60
+ export const isInsideIgnoredText = (source, pos) => {
61
+ let state = initialState;
62
+ for (let index = 0; index < pos; index++) {
63
+ state = nextIgnoredState(state, source[index] ?? '', source[index + 1]);
64
+ }
65
+ return state.isBlockComment || state.isLineComment || state.quote !== undefined;
66
+ };
67
+ //# sourceMappingURL=require-function-doc-ignored-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-function-doc-ignored-text.js","sourceRoot":"","sources":["../../src/rules/require-function-doc-ignored-text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Internal helper exported for package-local composition.
3
+ *
4
+ * @internal
5
+ */
6
+ export declare const isDocumentedLocalExportList: (source: string, afterExport: number, exportPOS: number, hasJSDocBefore: (source: string, declarationPOS: number) => boolean) => boolean | undefined;
7
+ //# sourceMappingURL=require-function-doc-local-exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-function-doc-local-exports.d.ts","sourceRoot":"","sources":["../../src/rules/require-function-doc-local-exports.ts"],"names":[],"mappings":"AA4HA;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GACtC,QAAQ,MAAM,EACd,aAAa,MAAM,EACnB,WAAW,MAAM,EACjB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,OAAO,KAClE,OAAO,GAAG,SASZ,CAAC"}
@@ -0,0 +1,114 @@
1
+ /* -------------------------------------------------------------------------- */
2
+ /* Local export-list documentation helpers for exported JSDoc checks. */
3
+ /* -------------------------------------------------------------------------- */
4
+ const CHAR_CODE_OPEN_BRACE = 123;
5
+ const CHAR_CODE_LOWER_A = 97;
6
+ const CHAR_CODE_LOWER_Z = 122;
7
+ const CHAR_CODE_UPPER_A = 65;
8
+ const CHAR_CODE_UPPER_Z = 90;
9
+ const TYPE_KEYWORD_LENGTH = 'type '.length;
10
+ const skipWhitespace = (source, pos) => {
11
+ let cursor = pos;
12
+ while (cursor < source.length && /\s/u.test(source[cursor] ?? '')) {
13
+ cursor++;
14
+ }
15
+ return cursor;
16
+ };
17
+ const exportStatementEnd = (source, afterExport) => {
18
+ const semicolon = source.indexOf(';', afterExport);
19
+ if (semicolon === -1) {
20
+ return source.indexOf('\n', afterExport);
21
+ }
22
+ return semicolon;
23
+ };
24
+ const hasFromClauseBefore = (source, openBrace, statementEnd) => {
25
+ let end = statementEnd;
26
+ if (end === -1) {
27
+ end = source.length;
28
+ }
29
+ return source.slice(openBrace, end).includes(' from ');
30
+ };
31
+ const localExportOpenBrace = (source, afterExport) => {
32
+ if (source.slice(afterExport, afterExport + TYPE_KEYWORD_LENGTH) === 'type ' &&
33
+ afterExport + TYPE_KEYWORD_LENGTH < source.length) {
34
+ return skipWhitespace(source, afterExport + TYPE_KEYWORD_LENGTH);
35
+ }
36
+ return afterExport;
37
+ };
38
+ const localExportListBounds = (source, afterExport) => {
39
+ const openBrace = localExportOpenBrace(source, afterExport);
40
+ if (source.charCodeAt(openBrace) !== CHAR_CODE_OPEN_BRACE) {
41
+ return undefined;
42
+ }
43
+ const closeBrace = source.indexOf('}', openBrace);
44
+ if (closeBrace === -1) {
45
+ return undefined;
46
+ }
47
+ if (hasFromClauseBefore(source, openBrace, exportStatementEnd(source, closeBrace))) {
48
+ return undefined;
49
+ }
50
+ return { closeBrace, openBrace };
51
+ };
52
+ const localExportName = (part) => part
53
+ .trim()
54
+ .replace(/^type\s+/u, '')
55
+ .split(/\s+as\s+/u)[0]
56
+ ?.trim() ?? '';
57
+ const localExportNames = (source, afterExport) => {
58
+ const bounds = localExportListBounds(source, afterExport);
59
+ if (!bounds) {
60
+ return undefined;
61
+ }
62
+ return source
63
+ .slice(bounds.openBrace + 1, bounds.closeBrace)
64
+ .split(',')
65
+ .map(localExportName)
66
+ .filter(Boolean);
67
+ };
68
+ const declarationNeedles = (name) => [
69
+ `const ${name}`,
70
+ `let ${name}`,
71
+ `var ${name}`,
72
+ `function ${name}`,
73
+ `class ${name}`,
74
+ `interface ${name}`,
75
+ `type ${name}`,
76
+ `enum ${name}`,
77
+ ];
78
+ const isIdentifierBoundaryAfter = (source, pos) => {
79
+ if (pos >= source.length) {
80
+ return true;
81
+ }
82
+ const code = source.charCodeAt(pos);
83
+ return !((code >= CHAR_CODE_LOWER_A && code <= CHAR_CODE_LOWER_Z) ||
84
+ (code >= CHAR_CODE_UPPER_A && code <= CHAR_CODE_UPPER_Z));
85
+ };
86
+ const localDeclarationPosition = (source, name, exportPOS) => {
87
+ let bestPosition = -1;
88
+ for (const needle of declarationNeedles(name)) {
89
+ const pos = source.lastIndexOf(needle, exportPOS);
90
+ if (pos > bestPosition && isIdentifierBoundaryAfter(source, pos + needle.length)) {
91
+ bestPosition = pos;
92
+ }
93
+ }
94
+ if (bestPosition === -1) {
95
+ return undefined;
96
+ }
97
+ return bestPosition;
98
+ };
99
+ /**
100
+ * Internal helper exported for package-local composition.
101
+ *
102
+ * @internal
103
+ */
104
+ export const isDocumentedLocalExportList = (source, afterExport, exportPOS, hasJSDocBefore) => {
105
+ const names = localExportNames(source, afterExport);
106
+ if (!names) {
107
+ return undefined;
108
+ }
109
+ return names.every((name) => {
110
+ const declarationPOS = localDeclarationPosition(source, name, exportPOS);
111
+ return declarationPOS !== undefined && hasJSDocBefore(source, declarationPOS);
112
+ });
113
+ };
114
+ //# sourceMappingURL=require-function-doc-local-exports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-function-doc-local-exports.js","sourceRoot":"","sources":["../../src/rules/require-function-doc-local-exports.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,8 @@
1
1
  /**
2
- * Require-function-doc ensures every exported declaration has a non-empty JSDoc comment.
2
+ * Checks whether exported declarations have meaningful JSDoc comments.
3
3
  *
4
- * Checks:
5
- * - `export function`, `export class`, `export const`, `export let`, `export var`
6
- * - `export default function`, `export default class`
7
- * - `export type`, `export interface`, `export enum`
8
- * - `export abstract class`
9
- *
10
- * Skips:
11
- * - `export { ... } from ...` (re-exports)
12
- * - `export * from ...` (wildcard re-exports)
13
- * - `export type { ... } from ...` (type re-exports)
14
- * - `export default <expression>` (not a declaration)
15
- * - Non-exported declarations
16
- */
17
- /**
18
- * Returns true if all exported declarations have a non-empty JSDoc comment
19
- * preceding them. Returns false if any export is undocumented or has an
20
- * empty JSDoc.
4
+ * @param source - TypeScript source text to inspect.
5
+ * @returns True when every public declaration is documented or no public declarations exist.
21
6
  */
22
7
  export default function hasRequiredFunctionDocs(source: string): boolean;
23
8
  //# sourceMappingURL=require-function-doc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"require-function-doc.d.ts","sourceRoot":"","sources":["../../src/rules/require-function-doc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAyIH;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAgKvE"}
1
+ {"version":3,"file":"require-function-doc.d.ts","sourceRoot":"","sources":["../../src/rules/require-function-doc.ts"],"names":[],"mappings":"AAmiBA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAUvE"}