@1stg/oxlint-config 1.0.0 → 1.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#457](https://github.com/1stG/configs/pull/457) [`eb778e9`](https://github.com/1stG/configs/commit/eb778e937c9225f5f38c47bf5b14b90b24510e2a) Thanks [@JounQin](https://github.com/JounQin)! - Restore recommended-rule coverage by reusing `oxlint-config-recommended` for the
8
+ supported ESLint, typescript-eslint, and Unicorn rules. ESLint reuses
9
+ `eslint-plugin-unicorn` recommended; `eslint-plugin-oxlint` disables the rules
10
+ already covered by Oxlint. Code mode is inferred from `typescript-eslint`, so
11
+ consumers without it keep it disabled. Unicorn rules that conflict with Oxfmt
12
+ comments or would force public API renames are disabled. The legacy TypeScript
13
+ exception for `no-array-callback-reference` is preserved.
14
+
15
+ ## 1.1.0
16
+
17
+ ### Minor Changes
18
+
19
+ - [#430](https://github.com/1stG/configs/pull/430) [`5643939`](https://github.com/1stG/configs/commit/5643939d348c5b70f4a883eacca8a26a18aef415) Thanks [@JounQin](https://github.com/JounQin)! - Enable the structural TypeScript-friendly `no-magic-numbers` defaults (array
20
+ indexes, default values, type indexes and numeric literal types) plus
21
+ `enforceConst`, curate the shared ignore list to common values, and expose all
22
+ rule options through `noMagicNumbers`, whose `ignore` is merged with the
23
+ shared list. `rules` overrides remain as-is. Named declarations (enums,
24
+ readonly/class fields and default parameters) count as naming the number;
25
+ `detectObjects` stays opt-in.
26
+
3
27
  ## 1.0.0
4
28
 
5
29
  ### Major Changes
package/README.md CHANGED
@@ -31,24 +31,54 @@ Use `defineConfig` only when you need options.
31
31
 
32
32
  ## Options
33
33
 
34
- | Option | Default | Description |
35
- | ---------------- | ---------------------------------------- | ---------------------------------------- |
36
- | `categories` | `{ correctness: 'error', perf: 'warn' }` | Oxlint categories. |
37
- | `jsdoc` | `true` | Enable the JSDoc plugin. |
38
- | `jsPlugins` | `[]` | ESLint plugins to load (alpha). |
39
- | `rules` | `{}` | Extra rule overrides. |
40
- | `ignorePatterns` | `[]` | Native Oxlint ignore patterns. |
41
- | `node` | `true` | Node.js globals and rules. |
42
- | `promise` | `true` | Enable the Promise plugin. |
43
- | `react` | installed `react` | React, JSX accessibility and perf rules. |
44
- | `vue` | installed `vue` | Vue rules. |
45
- | `vitest` | installed `vitest` | Vitest globals and rules. |
46
- | `jest` | installed `jest` | Jest globals and rules. |
47
- | `typeAware` | installed `oxlint-tsgolint` | Enable rules requiring type info. |
34
+ | Option | Default | Description |
35
+ | ---------------- | ---------------------------------------- | ------------------------------------------------------------------ |
36
+ | `categories` | `{ correctness: 'error', perf: 'warn' }` | Oxlint categories. |
37
+ | `jsdoc` | `true` | Enable the JSDoc plugin. |
38
+ | `jsPlugins` | `[]` | ESLint plugins to load (alpha). |
39
+ | `rules` | `{}` | Extra rule overrides. |
40
+ | `ignorePatterns` | `[]` | Native Oxlint ignore patterns. |
41
+ | `node` | `true` | Node.js globals and rules. |
42
+ | `promise` | `true` | Enable the Promise plugin. |
43
+ | `react` | installed `react` | React 17+ automatic JSX runtime; JSX accessibility and perf rules. |
44
+ | `vue` | installed `vue` | Vue rules. |
45
+ | `vitest` | installed `vitest` | Vitest globals and rules. |
46
+ | `jest` | installed `jest` | Jest globals and rules. |
47
+ | `typeAware` | installed `oxlint-tsgolint` | Enable rules requiring type info. |
48
+ | `noMagicNumbers` | `undefined` | Options merged into `no-magic-numbers`; `false` disables it. |
48
49
 
49
50
  `ignorePatterns` is the native Oxlint field and can be passed directly; there
50
51
  is no separate `ignores` alias.
51
52
 
53
+ ## `no-magic-numbers`
54
+
55
+ The shared rule ignores common identity, time/calendar, timeout and
56
+ decimal/binary values (`-1` through `3600`) by default, while leaving
57
+ project-specific constants to consumers. Structural positions are ignored by default
58
+ (`ignoreArrayIndexes`, `ignoreDefaultValues`, `ignoreNumericLiteralTypes`,
59
+ `ignoreTypeIndexes`), and named declarations count as intentional
60
+ (`enforceConst`, `ignoreEnums`, `ignoreReadonlyClassProperties`,
61
+ `ignoreClassFieldInitialValues`). The class-field options overlap: set both
62
+ `ignoreReadonlyClassProperties` and `ignoreClassFieldInitialValues` to `false`
63
+ to report readonly field initializers. Oxlint currently still reports numeric
64
+ literal interface properties despite `ignoreNumericLiteralTypes`; add those
65
+ values through `noMagicNumbers.ignore` when needed. `detectObjects` stays
66
+ opt-in. Add domain constants with the dedicated option:
67
+
68
+ ```js
69
+ export default defineConfig({
70
+ noMagicNumbers: {
71
+ ignore: [16, 64],
72
+ ignoreEnums: false,
73
+ },
74
+ })
75
+ ```
76
+
77
+ All other `no-magic-numbers` options are accepted and override the defaults;
78
+ `ignore` is merged with the shared list. `rules` overrides are passed through
79
+ as-is, so use `noMagicNumbers` when defaults should be merged. Passing `false`
80
+ disables the rule.
81
+
52
82
  Import sorting is **not** a lint rule here: Oxfmt's built-in `sortImports` does
53
83
  it at format time, so `oxlint` and `oxfmt` stay independent.
54
84
 
package/lib/index.d.ts CHANGED
@@ -1,15 +1,31 @@
1
1
  import type { OxlintConfig } from 'oxlint';
2
+ type OxlintRules = NonNullable<OxlintConfig['rules']>;
3
+ type NoMagicNumbersRule = NonNullable<OxlintRules['no-magic-numbers']>;
4
+ type NoMagicNumbersOptions = Extract<NoMagicNumbersRule, [unknown, unknown]>[1];
2
5
  export interface OxlintConfigOptions extends OxlintConfig {
6
+ /** Enable the JSDoc plugin. @default true */
3
7
  jsdoc?: boolean;
8
+ /** Enable Node.js globals and rules. @default true */
4
9
  node?: boolean;
10
+ /** Enable the Promise plugin. @default true */
5
11
  promise?: boolean;
12
+ /** Enable React and JSX accessibility rules. @default false */
6
13
  react?: boolean;
14
+ /** Enable Vue rules. @default false */
7
15
  vue?: boolean;
16
+ /** Enable Vitest globals and rules. @default false */
8
17
  vitest?: boolean;
18
+ /** Enable Jest globals and rules. @default false */
9
19
  jest?: boolean;
20
+ /** Enable rules that require type information. @default installed `oxlint-tsgolint` */
10
21
  typeAware?: boolean;
22
+ /** Options merged into `no-magic-numbers`; `false` disables the rule. */
23
+ noMagicNumbers?: false | NoMagicNumbersOptions;
11
24
  }
12
- export declare const defineConfig: ({ categories, jest, typeAware, jsdoc, node, promise, react, vitest, vue, plugins: extraPlugins, env: extraEnv, rules: extraRules, overrides: extraOverrides, ignorePatterns: extraIgnorePatterns, ...options }?: OxlintConfigOptions) => OxlintConfig;
25
+ /**
26
+ * Build an Oxlint configuration. Oxlint discovers `oxlint.config.ts` automatically; pass `--config`
27
+ * only for a custom file name.
28
+ */
29
+ export declare const defineConfig: ({ categories, jest, typeAware, noMagicNumbers, jsdoc, node, promise, react, vitest, vue, plugins: extraPlugins, env: extraEnv, rules: extraRules, overrides: extraOverrides, ignorePatterns: extraIgnorePatterns, ...options }?: OxlintConfigOptions) => OxlintConfig;
13
30
  declare const _default: OxlintConfig;
14
31
  export default _default;
15
- //# sourceMappingURL=index.d.ts.map
package/lib/index.js CHANGED
@@ -10,8 +10,28 @@ var __rest = (this && this.__rest) || function (s, e) {
10
10
  return t;
11
11
  };
12
12
  import { isPkgAvailable } from '@pkgr/utils';
13
+ import recommended from 'oxlint-config-recommended';
14
+ const DEFAULT_MAGIC_NUMBERS = [
15
+ -1, 0, 1, 2, 3, 5, 7, 10, 12, 15, 20, 24, 28, 29, 30, 31, 50, 60, 100, 365, 366, 500, 1000, 1024,
16
+ 3600,
17
+ ];
18
+ const DEFAULT_NO_MAGIC_NUMBERS_OPTIONS = {
19
+ enforceConst: true,
20
+ ignoreArrayIndexes: true,
21
+ ignoreClassFieldInitialValues: true,
22
+ ignoreDefaultValues: true,
23
+ ignoreEnums: true,
24
+ ignoreNumericLiteralTypes: true,
25
+ ignoreReadonlyClassProperties: true,
26
+ ignoreTypeIndexes: true,
27
+ };
28
+ /**
29
+ * Build an Oxlint configuration. Oxlint discovers `oxlint.config.ts` automatically; pass `--config`
30
+ * only for a custom file name.
31
+ */
13
32
  export const defineConfig = (_a = {}) => {
14
- var { categories = { correctness: 'error', perf: 'warn' }, jest = isPkgAvailable('jest'), typeAware = isPkgAvailable('oxlint-tsgolint/package.json'), jsdoc = true, node = true, promise = true, react = isPkgAvailable('react'), vitest = isPkgAvailable('vitest'), vue = isPkgAvailable('vue'), plugins: extraPlugins = [], env: extraEnv, rules: extraRules, overrides: extraOverrides, ignorePatterns: extraIgnorePatterns } = _a, options = __rest(_a, ["categories", "jest", "typeAware", "jsdoc", "node", "promise", "react", "vitest", "vue", "plugins", "env", "rules", "overrides", "ignorePatterns"]);
33
+ var _b, _c;
34
+ var { categories = { correctness: 'error', perf: 'warn' }, jest = isPkgAvailable('jest'), typeAware = isPkgAvailable('oxlint-tsgolint/package.json'), noMagicNumbers, jsdoc = true, node = true, promise = true, react = isPkgAvailable('react'), vitest = isPkgAvailable('vitest'), vue = isPkgAvailable('vue'), plugins: extraPlugins = [], env: extraEnv, rules: extraRules, overrides: extraOverrides, ignorePatterns: extraIgnorePatterns } = _a, options = __rest(_a, ["categories", "jest", "typeAware", "noMagicNumbers", "jsdoc", "node", "promise", "react", "vitest", "vue", "plugins", "env", "rules", "overrides", "ignorePatterns"]);
15
35
  const plugins = ['oxc', 'unicorn', 'typescript', 'import'];
16
36
  if (promise) {
17
37
  plugins.push('promise');
@@ -35,8 +55,14 @@ export const defineConfig = (_a = {}) => {
35
55
  plugins.push('jest');
36
56
  }
37
57
  plugins.push(...extraPlugins);
38
- return Object.assign(Object.assign({}, options), { options: Object.assign(Object.assign({}, options.options), (typeAware && { typeAware: true })), plugins,
39
- categories, env: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ builtin: true }, (node && { node: true })), (react && { browser: true })), (vue && { vue: true })), (vitest && { vitest: true })), (jest && { jest: true })), extraEnv), rules: Object.assign(Object.assign(Object.assign({}, (typeAware && {
58
+ const noMagicNumbersRule = noMagicNumbers === false
59
+ ? 'off'
60
+ : [
61
+ 'error',
62
+ Object.assign(Object.assign(Object.assign({}, DEFAULT_NO_MAGIC_NUMBERS_OPTIONS), noMagicNumbers), { ignore: [...new Set([...DEFAULT_MAGIC_NUMBERS, ...((_b = noMagicNumbers === null || noMagicNumbers === void 0 ? void 0 : noMagicNumbers.ignore) !== null && _b !== void 0 ? _b : [])])] }),
63
+ ];
64
+ return Object.assign(Object.assign({}, options), { extends: [recommended, ...((_c = options.extends) !== null && _c !== void 0 ? _c : [])], options: Object.assign(Object.assign({}, options.options), (typeAware && { typeAware: true })), plugins,
65
+ categories, env: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ builtin: true }, (node && { node: true })), (react && { browser: true })), (vue && { vue: true })), (vitest && { vitest: true })), (jest && { jest: true })), extraEnv), rules: Object.assign(Object.assign(Object.assign({ 'unicorn/consistent-date-clone': 'off', 'unicorn/consistent-function-scoping': 'off', 'unicorn/no-array-reduce': 'off', 'unicorn/no-null': 'off', 'unicorn/no-unreadable-array-destructuring': 'off', 'unicorn/prefer-module': 'off', 'unicorn/prefer-object-from-entries': 'off', 'unicorn/catch-error-name': ['error', { name: 'error', ignore: ['^e(rr)?$'] }], 'unicorn/filename-case': ['error', { cases: { kebabCase: true, pascalCase: true } }], 'unicorn/prefer-export-from': ['error', { checkUsedVariables: false }] }, (typeAware && {
40
66
  'typescript/await-thenable': 'error',
41
67
  'typescript/no-deprecated': 'error',
42
68
  'typescript/no-floating-promises': 'error',
@@ -49,21 +75,7 @@ export const defineConfig = (_a = {}) => {
49
75
  'typescript/prefer-reduce-type-parameter': 'error',
50
76
  'typescript/require-array-sort-compare': ['error', { ignoreStringArrays: true }],
51
77
  'typescript/restrict-plus-operands': 'error',
52
- })), { 'arrow-body-style': 'error', curly: ['error', 'all'], eqeqeq: ['error', 'always'], 'no-case-declarations': 'error', 'no-else-return': ['error', { allowElseIf: false }], 'no-empty': ['error', { allowEmptyCatch: true }], 'no-empty-function': 'error', 'no-fallthrough': 'error', 'no-magic-numbers': [
53
- 'error',
54
- {
55
- enforceConst: true,
56
- ignore: [
57
- -1, 0, 1, 2, 3, 5, 7, 10, 12, 15, 20, 24, 30, 31, 50, 60, 100, 365, 366, 500, 768, 1000,
58
- 1024, 3600, 4200, 8080,
59
- ],
60
- ignoreArrayIndexes: true,
61
- ignoreEnums: true,
62
- ignoreNumericLiteralTypes: true,
63
- ignoreReadonlyClassProperties: true,
64
- ignoreTypeIndexes: true,
65
- },
66
- ], 'no-negated-condition': 'error', 'no-prototype-builtins': 'error', 'no-redeclare': 'error', 'no-regex-spaces': 'error', 'no-var': 'error', 'object-shorthand': 'error', 'prefer-const': ['error', { destructuring: 'all' }], 'prefer-object-spread': 'error', 'prefer-regex-literals': 'error', 'preserve-caught-error': 'error', 'import/newline-after-import': 'error', 'import/no-duplicates': 'error', 'typescript/consistent-type-definitions': ['error', 'interface'], 'typescript/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], 'unicorn/prefer-node-protocol': 'error', 'unicorn/prefer-number-properties': 'error', 'unicorn/prefer-string-starts-ends-with': 'error' }), extraRules), overrides: [
78
+ })), { 'arrow-body-style': 'error', curly: ['error', 'all'], eqeqeq: ['error', 'always'], 'no-case-declarations': 'error', 'no-else-return': ['error', { allowElseIf: false }], 'no-empty': ['error', { allowEmptyCatch: true }], 'no-empty-function': 'error', 'no-fallthrough': 'error', 'no-magic-numbers': noMagicNumbersRule, 'no-negated-condition': 'error', 'no-prototype-builtins': 'error', 'no-redeclare': 'error', 'no-regex-spaces': 'error', 'no-var': 'error', 'object-shorthand': 'error', 'prefer-const': ['error', { destructuring: 'all' }], 'prefer-object-spread': 'error', 'prefer-regex-literals': 'error', 'preserve-caught-error': 'error', 'import/newline-after-import': 'error', 'import/no-duplicates': 'error', 'react/react-in-jsx-scope': 'off', 'typescript/consistent-type-definitions': ['error', 'interface'], 'typescript/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], 'unicorn/prefer-node-protocol': 'error', 'unicorn/prefer-number-properties': 'error', 'unicorn/prefer-string-starts-ends-with': 'error' }), extraRules), overrides: [
67
79
  {
68
80
  files: ['**/*.d.{ts,mts,cts}', '**/*.d.*.{ts,mts,cts}'],
69
81
  rules: {
@@ -72,6 +84,27 @@ export const defineConfig = (_a = {}) => {
72
84
  'import/no-duplicates': 'off',
73
85
  },
74
86
  },
87
+ {
88
+ files: ['**/*.{cts,mts,ts,tsx}'],
89
+ rules: {
90
+ // Legacy ts-base disabled this; callback references are type-safe.
91
+ 'unicorn/no-array-callback-reference': 'off',
92
+ },
93
+ },
94
+ {
95
+ files: ['**/*.{cjs,cts,js}'],
96
+ rules: {
97
+ 'typescript/no-require-imports': 'off',
98
+ 'unicorn/prefer-top-level-await': 'off',
99
+ },
100
+ },
101
+ {
102
+ files: ['tests/**'],
103
+ rules: {
104
+ 'typescript/no-extraneous-class': 'off',
105
+ 'typescript/no-unsafe-type-assertion': 'off',
106
+ },
107
+ },
75
108
  ...(extraOverrides !== null && extraOverrides !== void 0 ? extraOverrides : []),
76
109
  ], ignorePatterns: [
77
110
  '**/.dsh',
@@ -89,4 +122,3 @@ export const defineConfig = (_a = {}) => {
89
122
  ] });
90
123
  };
91
124
  export default defineConfig();
92
- //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1stg/oxlint-config",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "type": "module",
5
5
  "description": "Personal but Shareable Oxlint Configuration for all 1stG.me projects",
6
6
  "repository": "git+https://github.com/1stG/configs.git",
@@ -24,7 +24,7 @@
24
24
  "lib"
25
25
  ],
26
26
  "peerDependencies": {
27
- "oxlint": ">=1.80.0",
27
+ "oxlint": ">=1.89.0",
28
28
  "oxlint-tsgolint": "^7.0.2005"
29
29
  },
30
30
  "peerDependenciesMeta": {
@@ -33,7 +33,8 @@
33
33
  }
34
34
  },
35
35
  "dependencies": {
36
- "@pkgr/utils": "^4.1.0"
36
+ "@pkgr/utils": "^4.1.0",
37
+ "oxlint-config-recommended": "^1.2.1"
37
38
  },
38
39
  "publishConfig": {
39
40
  "access": "public"
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAE1C,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IAEvD,KAAK,CAAC,EAAE,OAAO,CAAA;IAEf,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB,KAAK,CAAC,EAAE,OAAO,CAAA;IAEf,GAAG,CAAC,EAAE,OAAO,CAAA;IAEb,MAAM,CAAC,EAAE,OAAO,CAAA;IAEhB,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAMD,eAAO,MAAM,YAAY,oNAgBtB,mBAAmB,KAAQ,YA8H7B,CAAA"}
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}