@thethracian/oxlint-config 0.1.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 (59) hide show
  1. package/LICENSE +5 -0
  2. package/README.md +17 -0
  3. package/dist/index.d.ts +86 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +84 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/rules/acronym-case.d.ts +5 -0
  8. package/dist/rules/acronym-case.d.ts.map +1 -0
  9. package/dist/rules/acronym-case.js +205 -0
  10. package/dist/rules/acronym-case.js.map +1 -0
  11. package/dist/rules/acronyms.d.ts +10 -0
  12. package/dist/rules/acronyms.d.ts.map +1 -0
  13. package/dist/rules/acronyms.js +1582 -0
  14. package/dist/rules/acronyms.js.map +1 -0
  15. package/dist/rules/boolean-prefix.d.ts +6 -0
  16. package/dist/rules/boolean-prefix.d.ts.map +1 -0
  17. package/dist/rules/boolean-prefix.js +96 -0
  18. package/dist/rules/boolean-prefix.js.map +1 -0
  19. package/dist/rules/camel-case-identifiers.d.ts +14 -0
  20. package/dist/rules/camel-case-identifiers.d.ts.map +1 -0
  21. package/dist/rules/camel-case-identifiers.js +68 -0
  22. package/dist/rules/camel-case-identifiers.js.map +1 -0
  23. package/dist/rules/char-class.d.ts +18 -0
  24. package/dist/rules/char-class.d.ts.map +1 -0
  25. package/dist/rules/char-class.js +29 -0
  26. package/dist/rules/char-class.js.map +1 -0
  27. package/dist/rules/max-import-depth.d.ts +6 -0
  28. package/dist/rules/max-import-depth.d.ts.map +1 -0
  29. package/dist/rules/max-import-depth.js +29 -0
  30. package/dist/rules/max-import-depth.js.map +1 -0
  31. package/dist/rules/max-line-length.d.ts +7 -0
  32. package/dist/rules/max-line-length.d.ts.map +1 -0
  33. package/dist/rules/max-line-length.js +15 -0
  34. package/dist/rules/max-line-length.js.map +1 -0
  35. package/dist/rules/no-commented-out-code.d.ts +12 -0
  36. package/dist/rules/no-commented-out-code.d.ts.map +1 -0
  37. package/dist/rules/no-commented-out-code.js +181 -0
  38. package/dist/rules/no-commented-out-code.js.map +1 -0
  39. package/dist/rules/pascal-case-types.d.ts +9 -0
  40. package/dist/rules/pascal-case-types.d.ts.map +1 -0
  41. package/dist/rules/pascal-case-types.js +74 -0
  42. package/dist/rules/pascal-case-types.js.map +1 -0
  43. package/dist/rules/plugin.d.ts +122 -0
  44. package/dist/rules/plugin.d.ts.map +1 -0
  45. package/dist/rules/plugin.js +373 -0
  46. package/dist/rules/plugin.js.map +1 -0
  47. package/dist/rules/private-underscore.d.ts +9 -0
  48. package/dist/rules/private-underscore.d.ts.map +1 -0
  49. package/dist/rules/private-underscore.js +13 -0
  50. package/dist/rules/private-underscore.js.map +1 -0
  51. package/dist/rules/require-file-doc.d.ts +12 -0
  52. package/dist/rules/require-file-doc.d.ts.map +1 -0
  53. package/dist/rules/require-file-doc.js +105 -0
  54. package/dist/rules/require-file-doc.js.map +1 -0
  55. package/dist/rules/require-function-doc.d.ts +23 -0
  56. package/dist/rules/require-function-doc.d.ts.map +1 -0
  57. package/dist/rules/require-function-doc.js +268 -0
  58. package/dist/rules/require-function-doc.js.map +1 -0
  59. package/package.json +33 -0
@@ -0,0 +1,105 @@
1
+ // Character code constants
2
+ const CH_HASH = 35;
3
+ const CH_SLASH = 47;
4
+ const CH_SPACE = 32;
5
+ const CH_NEWLINE = 10;
6
+ const CH_RETURN = 13;
7
+ const CH_TAB = 9;
8
+ // Pre-computed search strings
9
+ const JSDOC_START = '/**';
10
+ 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;
18
+ 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
+ }
25
+ pos++;
26
+ }
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;
32
+ }
33
+ pos++;
34
+ }
35
+ if (pos >= len) {
36
+ return null;
37
+ }
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;
44
+ }
45
+ // Find closing */
46
+ const closePos = source.indexOf(JSDOC_END, pos + 3);
47
+ if (closePos === -1) {
48
+ return null;
49
+ }
50
+ return source.slice(pos, closePos + 2);
51
+ }
52
+ /**
53
+ * Returns true if the source file satisfies the file doc requirement.
54
+ * Requires: JSDoc header, opt-out marker, or empty/whitespace-only.
55
+ */
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++;
66
+ }
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++;
74
+ }
75
+ if (pos >= len) {
76
+ return true;
77
+ }
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
+ }
96
+ }
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;
101
+ }
102
+ // Must close
103
+ return source.indexOf(JSDOC_END, jsdocPos + 3) !== -1;
104
+ }
105
+ //# sourceMappingURL=require-file-doc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-file-doc.js","sourceRoot":"","sources":["../../src/rules/require-file-doc.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,MAAM,GAAG,CAAC,CAAC;AAEjB,8BAA8B;AAC9B,MAAM,WAAW,GAAG,KAAK,CAAC;AAC1B,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,qBAAqB;IACrB,OAAO,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC;QACvD,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QACD,GAAG,EAAE,CAAC;IACR,CAAC;IAED,0BAA0B;IAC1B,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,UAAU,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAC9E,MAAM;QACR,CAAC;QACD,GAAG,EAAE,CAAC;IACR,CAAC;IAED,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAgC;IAChC,IACE,GAAG,GAAG,CAAC,IAAI,GAAG;QACd,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,QAAQ;QACnC,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;QACjC,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,EACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;IAClB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACpD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,MAAc;IACvD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,qBAAqB;IACrB,OAAO,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC;QACvD,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QACD,GAAG,EAAE,CAAC;IACR,CAAC;IAED,0BAA0B;IAC1B,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,UAAU,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAC9E,MAAM;QACR,CAAC;QACD,GAAG,EAAE,CAAC;IACR,CAAC;IAED,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAExC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,8CAA8C;YAC9C,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9E,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,EAAE,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAC7E,sDAAsD;YACtD,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5C,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAClD,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,aAAa;IACb,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Require-function-doc — ensures every exported declaration has a non-empty JSDoc comment.
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.
21
+ */
22
+ export default function hasRequiredFunctionDocs(source: string): boolean;
23
+ //# sourceMappingURL=require-function-doc.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,268 @@
1
+ /**
2
+ * Require-function-doc — ensures every exported declaration has a non-empty JSDoc comment.
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
+ function isWhitespace(code) {
18
+ return code === 32 || code === 9 || code === 10 || code === 13;
19
+ }
20
+ function hasDescriptionContent(jsdocBody) {
21
+ const stripped = jsdocBody
22
+ .split('\n')
23
+ .map((line) => {
24
+ let strippedLine = line.trimStart();
25
+ if (strippedLine.startsWith('*')) {
26
+ strippedLine = strippedLine.slice(1).trimStart();
27
+ }
28
+ return strippedLine;
29
+ })
30
+ .join('\n')
31
+ .trim();
32
+ return stripped.length > 0;
33
+ }
34
+ function hasJSDocBefore(source, exportPos) {
35
+ let pos = exportPos;
36
+ while (pos > 0 && isWhitespace(source.charCodeAt(pos - 1))) {
37
+ pos--;
38
+ }
39
+ if (pos < 2) {
40
+ return false;
41
+ }
42
+ if (source.charCodeAt(pos - 2) !== 42 || source.charCodeAt(pos - 1) !== 47) {
43
+ return false;
44
+ }
45
+ const closeStar = pos - 2;
46
+ let open = closeStar - 1;
47
+ while (open > 0) {
48
+ if (source.charCodeAt(open) === 42 && source.charCodeAt(open - 1) === 47) {
49
+ if (open + 1 < closeStar && source.charCodeAt(open + 1) === 42) {
50
+ const content = source.slice(open + 3, closeStar).trim();
51
+ return hasDescriptionContent(content);
52
+ }
53
+ open -= 2;
54
+ continue;
55
+ }
56
+ open--;
57
+ }
58
+ return false;
59
+ }
60
+ function endsWithWord(source, pos, word) {
61
+ const end = pos + word.length;
62
+ if (end > source.length) {
63
+ return false;
64
+ }
65
+ if (source.slice(pos, end) !== word) {
66
+ return false;
67
+ }
68
+ if (end >= source.length) {
69
+ return true;
70
+ }
71
+ const next = source.charCodeAt(end);
72
+ return isWhitespace(next) || next === 40 || next === 123 || next === 59 || next === 60;
73
+ }
74
+ function isDefaultDeclaration(source, pos, _len) {
75
+ const ch = source.charCodeAt(pos);
76
+ if (ch === 102) {
77
+ return endsWithWord(source, pos, 'function');
78
+ }
79
+ if (ch === 99) {
80
+ return endsWithWord(source, pos, 'class');
81
+ }
82
+ if (ch === 105) {
83
+ return endsWithWord(source, pos, 'interface');
84
+ }
85
+ return false;
86
+ }
87
+ const AMBIENT_DECLARE_PREFIXES = ['declare module', 'declare namespace', 'declare global'];
88
+ function isAmbientDeclarationFile(source) {
89
+ let idx = 0;
90
+ const len = source.length;
91
+ while (idx < len && source.charCodeAt(idx) === 35) {
92
+ idx = source.indexOf('\n', idx);
93
+ if (idx === -1) {
94
+ return false;
95
+ }
96
+ idx++;
97
+ }
98
+ while (idx < len) {
99
+ const ch = source.charCodeAt(idx);
100
+ if (isWhitespace(ch)) {
101
+ idx++;
102
+ continue;
103
+ }
104
+ if (ch === 47 && idx + 1 < len && source.charCodeAt(idx + 1) === 42) {
105
+ const close = source.indexOf('*/', idx + 2);
106
+ if (close !== -1) {
107
+ idx = close + 2;
108
+ continue;
109
+ }
110
+ return false;
111
+ }
112
+ if (ch === 47 && idx + 1 < len && source.charCodeAt(idx + 1) === 47) {
113
+ const nl = source.indexOf('\n', idx);
114
+ if (nl !== -1) {
115
+ idx = nl + 1;
116
+ continue;
117
+ }
118
+ return false;
119
+ }
120
+ break;
121
+ }
122
+ if (idx >= len) {
123
+ return false;
124
+ }
125
+ for (const prefix of AMBIENT_DECLARE_PREFIXES) {
126
+ if (idx + prefix.length <= len && source.slice(idx, idx + prefix.length) === prefix) {
127
+ return true;
128
+ }
129
+ }
130
+ return false;
131
+ }
132
+ /**
133
+ * Returns true if all exported declarations have a non-empty JSDoc comment
134
+ * preceding them. Returns false if any export is undocumented or has an
135
+ * empty JSDoc.
136
+ */
137
+ export default function hasRequiredFunctionDocs(source) {
138
+ const len = source.length;
139
+ if (isAmbientDeclarationFile(source)) {
140
+ return true;
141
+ }
142
+ let pos = 0;
143
+ const exportPositions = [];
144
+ while (pos < len) {
145
+ const exp = source.indexOf('export ', pos);
146
+ if (exp === -1) {
147
+ break;
148
+ }
149
+ if (exp > 0) {
150
+ const prev = source.charCodeAt(exp - 1);
151
+ if (prev !== 10 && prev !== 13 && prev !== 9 && prev !== 32) {
152
+ pos = exp + 1;
153
+ continue;
154
+ }
155
+ if (exp >= 8 && source.slice(exp - 8, exp) === 'declare ') {
156
+ pos = exp + 7;
157
+ continue;
158
+ }
159
+ }
160
+ let after = exp + 7;
161
+ while (after < len && isWhitespace(source.charCodeAt(after))) {
162
+ after++;
163
+ }
164
+ if (after >= len) {
165
+ break;
166
+ }
167
+ const c0 = source.charCodeAt(after);
168
+ // Re-export block: export { ... }
169
+ if (c0 === 123) {
170
+ pos = exp + 7;
171
+ continue;
172
+ }
173
+ // Wildcard re-export: export *
174
+ if (c0 === 42) {
175
+ pos = exp + 7;
176
+ continue;
177
+ }
178
+ // Type re-export: export type { ... }
179
+ if (c0 === 116 && after + 5 <= len && source.slice(after, after + 5) === 'type ') {
180
+ const afterType = after + 5;
181
+ if (afterType < len && source.charCodeAt(afterType) === 123) {
182
+ pos = afterType;
183
+ continue;
184
+ }
185
+ }
186
+ let afterMod = after;
187
+ let changed = true;
188
+ let sawDefault = false;
189
+ while (changed && afterMod < len) {
190
+ changed = false;
191
+ const ch = source.charCodeAt(afterMod);
192
+ if (ch === 100 &&
193
+ afterMod + 8 <= len &&
194
+ source.slice(afterMod, afterMod + 8) === 'default ') {
195
+ afterMod += 8;
196
+ changed = true;
197
+ sawDefault = true;
198
+ }
199
+ else if (ch === 97 &&
200
+ afterMod + 6 <= len &&
201
+ source.slice(afterMod, afterMod + 6) === 'async ') {
202
+ afterMod += 6;
203
+ changed = true;
204
+ }
205
+ else if (ch === 97 &&
206
+ afterMod + 9 <= len &&
207
+ source.slice(afterMod, afterMod + 9) === 'abstract ') {
208
+ afterMod += 9;
209
+ changed = true;
210
+ }
211
+ else if (ch === 116 &&
212
+ afterMod + 5 <= len &&
213
+ source.slice(afterMod, afterMod + 5) === 'type ') {
214
+ afterMod += 5;
215
+ changed = true;
216
+ }
217
+ else if (ch === 110 &&
218
+ afterMod + 10 <= len &&
219
+ source.slice(afterMod, afterMod + 10) === 'namespace ') {
220
+ break;
221
+ }
222
+ if (changed) {
223
+ while (afterMod < len && isWhitespace(source.charCodeAt(afterMod))) {
224
+ afterMod++;
225
+ }
226
+ }
227
+ }
228
+ if (afterMod >= len) {
229
+ break;
230
+ }
231
+ const next = source.charCodeAt(afterMod);
232
+ // Declaration keyword check (case-insensitive first character):
233
+ // First chars: f/F=function, c/C=class|const, i/I=interface, e/E=enum, l/L=let, v/V=var, n/N=namespace
234
+ if (next === 102 ||
235
+ next === 70 ||
236
+ next === 99 ||
237
+ next === 67 ||
238
+ next === 105 ||
239
+ next === 73 ||
240
+ next === 101 ||
241
+ next === 69 ||
242
+ next === 108 ||
243
+ next === 76 ||
244
+ next === 118 ||
245
+ next === 86 ||
246
+ next === 110 ||
247
+ next === 78) {
248
+ if (sawDefault) {
249
+ if (!isDefaultDeclaration(source, afterMod, len)) {
250
+ pos = exp + 7;
251
+ continue;
252
+ }
253
+ }
254
+ exportPositions.push(exp);
255
+ }
256
+ pos = exp + 7;
257
+ }
258
+ if (exportPositions.length === 0) {
259
+ return true;
260
+ }
261
+ for (let idx = 0; idx < exportPositions.length; idx++) {
262
+ if (!hasJSDocBefore(source, exportPositions[idx])) {
263
+ return false;
264
+ }
265
+ }
266
+ return true;
267
+ }
268
+ //# sourceMappingURL=require-function-doc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-function-doc.js","sourceRoot":"","sources":["../../src/rules/require-function-doc.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@thethracian/oxlint-config",
3
+ "version": "0.1.0",
4
+ "description": "The Thracian Oxlint configuration.",
5
+ "license": "MIT",
6
+ "files": [
7
+ "dist",
8
+ "README.md",
9
+ "LICENSE"
10
+ ],
11
+ "type": "module",
12
+ "sideEffects": false,
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "default": "./dist/index.js"
17
+ }
18
+ },
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "scripts": {
23
+ "build": "tsc -p tsconfig.json",
24
+ "check": "tsc -p tsconfig.json --noEmit"
25
+ },
26
+ "devDependencies": {
27
+ "oxlint": "^1.63.0"
28
+ },
29
+ "peerDependencies": {
30
+ "oxlint": ">=1.63.0",
31
+ "oxlint-plugin-complexity": ">=2.0.0"
32
+ }
33
+ }