@thethracian/oxlint-config 0.1.0 → 0.2.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 (54) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +61 -1
  3. package/dist/index.d.ts +32 -9
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +71 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/rules/effect-default-helpers.d.ts +33 -0
  8. package/dist/rules/effect-default-helpers.d.ts.map +1 -0
  9. package/dist/rules/effect-default-helpers.js +459 -0
  10. package/dist/rules/effect-default-helpers.js.map +1 -0
  11. package/dist/rules/effect-default-resource-helpers.d.ts +5 -0
  12. package/dist/rules/effect-default-resource-helpers.d.ts.map +1 -0
  13. package/dist/rules/effect-default-resource-helpers.js +65 -0
  14. package/dist/rules/effect-default-resource-helpers.js.map +1 -0
  15. package/dist/rules/effect-default-test-helpers.d.ts +5 -0
  16. package/dist/rules/effect-default-test-helpers.d.ts.map +1 -0
  17. package/dist/rules/effect-default-test-helpers.js +46 -0
  18. package/dist/rules/effect-default-test-helpers.js.map +1 -0
  19. package/dist/rules/effect-default.d.ts +3 -0
  20. package/dist/rules/effect-default.d.ts.map +1 -0
  21. package/dist/rules/effect-default.js +746 -0
  22. package/dist/rules/effect-default.js.map +1 -0
  23. package/dist/rules/effect-path-options.d.ts +59 -0
  24. package/dist/rules/effect-path-options.d.ts.map +1 -0
  25. package/dist/rules/effect-path-options.js +114 -0
  26. package/dist/rules/effect-path-options.js.map +1 -0
  27. package/dist/rules/effect-rule-core.d.ts +52 -0
  28. package/dist/rules/effect-rule-core.d.ts.map +1 -0
  29. package/dist/rules/effect-rule-core.js +362 -0
  30. package/dist/rules/effect-rule-core.js.map +1 -0
  31. package/dist/rules/effect-rule-names.d.ts +4 -0
  32. package/dist/rules/effect-rule-names.d.ts.map +1 -0
  33. package/dist/rules/effect-rule-names.js +147 -0
  34. package/dist/rules/effect-rule-names.js.map +1 -0
  35. package/dist/rules/effect-source-helpers.d.ts +10 -0
  36. package/dist/rules/effect-source-helpers.d.ts.map +1 -0
  37. package/dist/rules/effect-source-helpers.js +334 -0
  38. package/dist/rules/effect-source-helpers.js.map +1 -0
  39. package/dist/rules/effect-source-scan.d.ts +8 -0
  40. package/dist/rules/effect-source-scan.d.ts.map +1 -0
  41. package/dist/rules/effect-source-scan.js +356 -0
  42. package/dist/rules/effect-source-scan.js.map +1 -0
  43. package/dist/rules/effect-strict-helpers.d.ts +34 -0
  44. package/dist/rules/effect-strict-helpers.d.ts.map +1 -0
  45. package/dist/rules/effect-strict-helpers.js +331 -0
  46. package/dist/rules/effect-strict-helpers.js.map +1 -0
  47. package/dist/rules/effect-strict.d.ts +3 -0
  48. package/dist/rules/effect-strict.d.ts.map +1 -0
  49. package/dist/rules/effect-strict.js +663 -0
  50. package/dist/rules/effect-strict.js.map +1 -0
  51. package/dist/rules/plugin.d.ts.map +1 -1
  52. package/dist/rules/plugin.js +16 -7
  53. package/dist/rules/plugin.js.map +1 -1
  54. package/package.json +15 -3
package/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0 - 2026-05-24
4
+
5
+ ### Features
6
+
7
+ - feat: add strict Effect oxlint rules (#2) (f27729e)
8
+
9
+ ## 0.1.0 - 2026-05-23
10
+
11
+ ### Added
12
+
13
+ - Initial release.
package/README.md CHANGED
@@ -4,7 +4,8 @@ Importable Oxlint config for TypeScript projects.
4
4
 
5
5
  The config errors on lines over 150 characters, files over 500 lines, functions over 75 lines, nesting deeper than 3 levels, callback nesting deeper than 4 levels (max-nested-callbacks), more than 5 parameters, cyclomatic complexity over 10, requires strict equality (eqeqeq), denies eval and dynamic code execution (no-eval, no-implied-eval when type-aware), denies debug artifacts (no-console, no-debugger), bans silent catch blocks (no-empty), bans commented-out code (custom thethracian/no-commented-out-code rule), bans inline comments and warning comments (no-inline-comments, no-warning-comments), bans `any` and untyped escape hatches (no-explicit-any, no-unsafe-call, no-unsafe-member-access, plus no-unsafe-assignment/return/argument when type-aware), denies unhandled promises (no-floating-promises, no-misused-promises when type-aware), and enforces immutability with prefer-const and no-param-reassign (including property mutations).
6
6
 
7
- Requires `oxlint-plugin-complexity` (peer dependency) for the cyclomatic complexity rule.
7
+ Requires `oxlint-plugin-complexity` for the cyclomatic complexity rule. Install `oxlint-tsgolint`
8
+ when using the type-aware profile.
8
9
 
9
10
  ```sh
10
11
  pnpm add -D @thethracian/oxlint-config oxlint@^1.63.0 oxlint-tsgolint@^0.22.1 oxlint-plugin-complexity
@@ -15,3 +16,62 @@ import theThracian from '@thethracian/oxlint-config';
15
16
 
16
17
  export default theThracian();
17
18
  ```
19
+
20
+ Enable type-aware Oxlint execution and the matching type-aware rules from the shared config:
21
+
22
+ ```ts
23
+ import theThracian from '@thethracian/oxlint-config';
24
+
25
+ export default theThracian({
26
+ typeAware: true,
27
+ });
28
+ ```
29
+
30
+ The 81-rule always-on default Effect bucket is enabled by default for this config. These rules
31
+ target lazy Effect values, generator style, Promise boundaries, typed errors, resource safety,
32
+ Schema boundaries, test determinism, stale APIs, platform escape hatches, unsafe Effect type
33
+ assertions, service self-type drift, and common AI-generated Effect hallucinations.
34
+
35
+ Non-Effect projects can disable that bucket explicitly:
36
+
37
+ ```ts
38
+ import theThracian from '@thethracian/oxlint-config';
39
+
40
+ export default theThracian({
41
+ effect: false,
42
+ });
43
+ ```
44
+
45
+ Effect projects that want strict project-boundary enforcement can opt in to the 60-rule strict
46
+ bucket:
47
+
48
+ ```ts
49
+ import theThracian from '@thethracian/oxlint-config';
50
+
51
+ export default theThracian({
52
+ effect: {
53
+ strict: true,
54
+ },
55
+ });
56
+ ```
57
+
58
+ Strict mode uses conventional project globs for entrypoints, composition roots, config layers,
59
+ domain modules, adapters, and test types. Override them when a project uses a different layout:
60
+
61
+ ```ts
62
+ import theThracian from '@thethracian/oxlint-config';
63
+
64
+ export default theThracian({
65
+ effect: {
66
+ strict: {
67
+ adapterLayers: ['src/platform/**'],
68
+ compositionRoots: ['workers/main.ts'],
69
+ configLayers: ['settings/**'],
70
+ domain: ['packages/domain/**'],
71
+ entrypoints: ['workers/main.ts'],
72
+ integrationTests: ['**/*.integration.test.ts'],
73
+ unitTests: ['**/*.test.ts'],
74
+ },
75
+ },
76
+ });
77
+ ```
package/dist/index.d.ts CHANGED
@@ -1,5 +1,20 @@
1
- export type TheThracianOxlintOptions = {
1
+ type TheThracianOxlintOptions = {
2
2
  typeAware?: boolean;
3
+ effect?: boolean | TheThracianEffectOptions;
4
+ };
5
+ type TheThracianEffectOptions = {
6
+ enabled?: boolean;
7
+ strict?: boolean | TheThracianEffectStrictOptions;
8
+ };
9
+ type TheThracianEffectStrictOptions = {
10
+ adapterLayers?: readonly string[];
11
+ compositionRoots?: readonly string[];
12
+ configLayers?: readonly string[];
13
+ domain?: readonly string[];
14
+ enabled?: boolean;
15
+ entrypoints?: readonly string[];
16
+ integrationTests?: readonly string[];
17
+ unitTests?: readonly string[];
3
18
  };
4
19
  export default function theThracianOxlint(options?: TheThracianOxlintOptions): {
5
20
  categories: {
@@ -35,6 +50,9 @@ export default function theThracianOxlint(options?: TheThracianOxlintOptions): {
35
50
  }];
36
51
  'no-console': "error";
37
52
  'no-debugger': "error";
53
+ 'no-empty': ["error", {
54
+ allowEmptyCatch: boolean;
55
+ }];
38
56
  'no-eval': "error";
39
57
  'no-new-func': "error";
40
58
  'no-script-url': "error";
@@ -73,14 +91,19 @@ export default function theThracianOxlint(options?: TheThracianOxlintOptions): {
73
91
  'typescript/explicit-function-return-type': "error";
74
92
  'typescript/no-unsafe-call': "error";
75
93
  'typescript/no-unsafe-member-access': "error";
76
- 'typescript/no-unsafe-assignment': "off" | "error";
77
- 'typescript/no-unsafe-return': "off" | "error";
78
- 'typescript/no-unsafe-argument': "off" | "error";
79
- 'typescript/no-floating-promises': "off" | "error";
80
- 'typescript/no-implied-eval': "off" | "error";
81
- 'typescript/no-misused-promises': "off" | "error";
82
- 'typescript/prefer-promise-reject-errors': "off" | "error";
83
- 'typescript/switch-exhaustiveness-check': "off" | "error";
94
+ 'typescript/no-unsafe-assignment': "error" | "off";
95
+ 'typescript/no-unsafe-return': "error" | "off";
96
+ 'typescript/no-unsafe-argument': "error" | "off";
97
+ 'typescript/no-floating-promises': "error" | "off";
98
+ 'typescript/no-implied-eval': "error" | "off";
99
+ 'typescript/no-misused-promises': "error" | "off";
100
+ 'typescript/prefer-promise-reject-errors': "error" | "off";
101
+ 'typescript/switch-exhaustiveness-check': "error" | "off";
84
102
  };
103
+ options?: {
104
+ typeAware: boolean;
105
+ typeCheck: boolean;
106
+ } | undefined;
85
107
  };
108
+ export type { TheThracianEffectOptions, TheThracianEffectStrictOptions, TheThracianOxlintOptions };
86
109
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,OAAO,GAAE,wBAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgF/E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,KAAK,wBAAwB,GAAG;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,GAAG,wBAAwB,CAAC;CAC7C,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,GAAG,8BAA8B,CAAC;CACnD,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B,CAAC;AA8EF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,OAAO,GAAE,wBAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyF/E;AAED,YAAY,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,78 @@
1
1
  import { defineConfig } from 'oxlint';
2
2
  import { dirname, join } from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
+ import { sanitizeStrictPathOptions } from './rules/effect-path-options.js';
5
+ import { effectDefaultRuleNames, effectStrictRuleNames } from './rules/effect-rule-names.js';
6
+ function isEffectEnabled(effect) {
7
+ if (effect === false) {
8
+ return false;
9
+ }
10
+ if (effect && typeof effect === 'object' && effect.enabled === false) {
11
+ return false;
12
+ }
13
+ return true;
14
+ }
15
+ function isStrictEffectEnabled(effect) {
16
+ if (!isEffectEnabled(effect) || !effect || typeof effect !== 'object') {
17
+ return false;
18
+ }
19
+ if (effect.strict === true) {
20
+ return true;
21
+ }
22
+ if (effect.strict && typeof effect.strict === 'object') {
23
+ return effect.strict.enabled !== false;
24
+ }
25
+ return false;
26
+ }
27
+ function getStrictEffectOptions(effect) {
28
+ if (!isStrictEffectEnabled(effect) || !effect || typeof effect !== 'object') {
29
+ return undefined;
30
+ }
31
+ if (effect.strict === true) {
32
+ return undefined;
33
+ }
34
+ if (!effect.strict || typeof effect.strict !== 'object') {
35
+ return undefined;
36
+ }
37
+ return effect.strict;
38
+ }
39
+ function buildEffectRules(effect) {
40
+ if (!isEffectEnabled(effect)) {
41
+ return {};
42
+ }
43
+ const strictOptions = getStrictEffectOptions(effect);
44
+ const strictPathOptions = sanitizeStrictPathOptions(strictOptions);
45
+ const defaultRuleSetting = strictPathOptions
46
+ ? ['error', strictPathOptions]
47
+ : 'error';
48
+ const ruleEntries = effectDefaultRuleNames.map((ruleName) => [
49
+ `thethracian/${ruleName}`,
50
+ defaultRuleSetting,
51
+ ]);
52
+ if (strictOptions) {
53
+ ruleEntries.push(...effectStrictRuleNames.map((ruleName) => [
54
+ `thethracian/${ruleName}`,
55
+ strictPathOptions ? ['error', strictPathOptions] : 'error',
56
+ ]));
57
+ }
58
+ else if (isStrictEffectEnabled(effect)) {
59
+ ruleEntries.push(...effectStrictRuleNames.map((ruleName) => [
60
+ `thethracian/${ruleName}`,
61
+ 'error',
62
+ ]));
63
+ }
64
+ return Object.fromEntries(ruleEntries);
65
+ }
4
66
  export default function theThracianOxlint(options = {}) {
5
67
  const pluginPath = join(dirname(fileURLToPath(import.meta.url)), 'rules', 'plugin.js');
68
+ const typeAwareOptions = options.typeAware
69
+ ? {
70
+ typeAware: true,
71
+ typeCheck: true,
72
+ }
73
+ : undefined;
6
74
  return defineConfig({
75
+ ...(typeAwareOptions ? { options: typeAwareOptions } : {}),
7
76
  categories: {
8
77
  correctness: 'error',
9
78
  suspicious: 'error',
@@ -36,6 +105,7 @@ export default function theThracianOxlint(options = {}) {
36
105
  'import/max-dependencies': ['error', { max: 20 }],
37
106
  'no-console': 'error',
38
107
  'no-debugger': 'error',
108
+ 'no-empty': ['error', { allowEmptyCatch: false }],
39
109
  'no-eval': 'error',
40
110
  'no-new-func': 'error',
41
111
  'no-script-url': 'error',
@@ -78,6 +148,7 @@ export default function theThracianOxlint(options = {}) {
78
148
  'typescript/no-misused-promises': options.typeAware ? 'error' : 'off',
79
149
  'typescript/prefer-promise-reject-errors': options.typeAware ? 'error' : 'off',
80
150
  'typescript/switch-exhaustiveness-check': options.typeAware ? 'error' : 'off',
151
+ ...buildEffectRules(options.effect),
81
152
  },
82
153
  });
83
154
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ declare function hasRuntimeInEffect(source: string): boolean;
2
+ declare function hasNestedFlatMap(source: string): boolean;
3
+ declare function hasUnboundedEffectConcurrency(source: string): boolean;
4
+ declare function hasUnboundedFlatMapConcurrency(source: string): boolean;
5
+ declare function hasParsedJsonNumberFromString(source: string): boolean;
6
+ declare function hasEffectInArrayForEach(source: string): boolean;
7
+ declare function hasEffectInPromiseCallback(source: string): boolean;
8
+ declare function hasReturnEffectInGen(source: string): boolean;
9
+ declare function hasYieldWithoutStarInGen(source: string): boolean | number;
10
+ declare function hasAsyncAwaitInEffect(source: string): boolean;
11
+ declare function hasSyncForPromise(source: string): boolean;
12
+ declare function hasSyncForThrowingOps(source: string): boolean;
13
+ declare function hasThrowInEffect(source: string): boolean;
14
+ declare function hasFloatingEffect(source: string): boolean;
15
+ declare function hasUnobservedFork(source: string): boolean;
16
+ declare function hasRunForkWithoutObserver(source: string): boolean;
17
+ declare function hasUnsafeLazyEvaluation(source: string): boolean;
18
+ declare function hasSchemaSyncDecodeInEffectWorkflow(source: string): boolean;
19
+ declare function hasSchemaPromiseDecode(source: string): boolean;
20
+ declare function hasTryPromiseWithoutTypedCatch(source: string): boolean;
21
+ declare function hasExternalJsonWithoutDecodeUnknown(source: string): boolean;
22
+ declare function hasCastAfterSchemaDecode(source: string): boolean;
23
+ declare function hasUnhandledSchemaEffectDecode(source: string): boolean;
24
+ declare function hasJsonParsedBeforeSchemaStringDecode(source: string): boolean;
25
+ declare function hasRecursiveEffectWithoutSuspend(source: string): boolean;
26
+ declare function hasUnloggedIgnore(source: string): boolean;
27
+ declare function hasMultipleCatchTagsInOnePipe(source: string): boolean;
28
+ declare function hasBroadCatchAllWithoutRethrow(source: string): boolean;
29
+ declare function hasErrorMappingWithoutCause(source: string): boolean;
30
+ declare function hasForkDaemonWithoutCleanup(source: string): boolean;
31
+ declare function hasForkInUninterruptibleWithoutRestore(source: string): boolean;
32
+ export { hasAsyncAwaitInEffect, hasEffectInArrayForEach, hasEffectInPromiseCallback, hasErrorMappingWithoutCause, hasFloatingEffect, hasForkDaemonWithoutCleanup, hasForkInUninterruptibleWithoutRestore, hasBroadCatchAllWithoutRethrow, hasJsonParsedBeforeSchemaStringDecode, hasMultipleCatchTagsInOnePipe, hasNestedFlatMap, hasRecursiveEffectWithoutSuspend, hasReturnEffectInGen, hasRunForkWithoutObserver, hasRuntimeInEffect, hasSchemaPromiseDecode, hasSchemaSyncDecodeInEffectWorkflow, hasSyncForPromise, hasSyncForThrowingOps, hasTryPromiseWithoutTypedCatch, hasUnhandledSchemaEffectDecode, hasParsedJsonNumberFromString, hasCastAfterSchemaDecode, hasExternalJsonWithoutDecodeUnknown, hasUnloggedIgnore, hasUnboundedEffectConcurrency, hasUnboundedFlatMapConcurrency, hasUnobservedFork, hasThrowInEffect, hasUnsafeLazyEvaluation, hasYieldWithoutStarInGen, };
33
+ //# sourceMappingURL=effect-default-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-default-helpers.d.ts","sourceRoot":"","sources":["../../src/rules/effect-default-helpers.ts"],"names":[],"mappings":"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"}