@venizia/dev-configs 0.3.0 → 0.3.1-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +112 -31
  2. package/dist/compilers/bun.d.ts.map +1 -1
  3. package/dist/compilers/bun.js +1 -0
  4. package/dist/compilers/bun.js.map +1 -1
  5. package/dist/formatters/oxfmt.d.ts +14 -0
  6. package/dist/formatters/oxfmt.d.ts.map +1 -1
  7. package/dist/formatters/oxfmt.js +19 -1
  8. package/dist/formatters/oxfmt.js.map +1 -1
  9. package/dist/linters/browser.d.ts +19 -0
  10. package/dist/linters/browser.d.ts.map +1 -0
  11. package/dist/linters/browser.js +32 -0
  12. package/dist/linters/browser.js.map +1 -0
  13. package/dist/linters/eslint.d.ts +1 -1
  14. package/dist/linters/eslint.js +1 -1
  15. package/dist/linters/house/common.d.ts +20 -0
  16. package/dist/linters/house/common.d.ts.map +1 -0
  17. package/dist/linters/house/common.js +29 -0
  18. package/dist/linters/house/common.js.map +1 -0
  19. package/dist/linters/house/configs.d.ts +16 -0
  20. package/dist/linters/house/configs.d.ts.map +1 -0
  21. package/dist/linters/house/configs.js +45 -0
  22. package/dist/linters/house/configs.js.map +1 -0
  23. package/dist/linters/house/index.d.ts +6 -0
  24. package/dist/linters/house/index.d.ts.map +1 -0
  25. package/dist/linters/house/index.js +22 -0
  26. package/dist/linters/house/index.js.map +1 -0
  27. package/dist/linters/house/max-params-own.rule.d.ts +19 -0
  28. package/dist/linters/house/max-params-own.rule.d.ts.map +1 -0
  29. package/dist/linters/house/max-params-own.rule.js +122 -0
  30. package/dist/linters/house/max-params-own.rule.js.map +1 -0
  31. package/dist/linters/house/no-new-error.rule.d.ts +15 -0
  32. package/dist/linters/house/no-new-error.rule.d.ts.map +1 -0
  33. package/dist/linters/house/no-new-error.rule.js +43 -0
  34. package/dist/linters/house/no-new-error.rule.js.map +1 -0
  35. package/dist/linters/house/plugin.d.ts +4 -0
  36. package/dist/linters/house/plugin.d.ts.map +1 -0
  37. package/dist/linters/house/plugin.js +15 -0
  38. package/dist/linters/house/plugin.js.map +1 -0
  39. package/dist/linters/index.d.ts +2 -0
  40. package/dist/linters/index.d.ts.map +1 -1
  41. package/dist/linters/index.js +2 -0
  42. package/dist/linters/index.js.map +1 -1
  43. package/dist/linters/oxlint.d.ts +25 -0
  44. package/dist/linters/oxlint.d.ts.map +1 -1
  45. package/dist/linters/oxlint.js +43 -1
  46. package/dist/linters/oxlint.js.map +1 -1
  47. package/dist/linters/react.d.ts +7 -5
  48. package/dist/linters/react.d.ts.map +1 -1
  49. package/dist/linters/react.js +27 -12
  50. package/dist/linters/react.js.map +1 -1
  51. package/dist/linters/rules/no-unused-vars.rule.d.ts +5 -0
  52. package/dist/linters/rules/no-unused-vars.rule.d.ts.map +1 -1
  53. package/dist/linters/rules/no-unused-vars.rule.js +2 -2
  54. package/dist/linters/rules/no-unused-vars.rule.js.map +1 -1
  55. package/dist/linters/rules/prefer-nullish-coalescing.rule.d.ts +7 -0
  56. package/dist/linters/rules/prefer-nullish-coalescing.rule.d.ts.map +1 -1
  57. package/dist/linters/rules/prefer-nullish-coalescing.rule.js.map +1 -1
  58. package/dist/testing/index.d.ts +2 -0
  59. package/dist/testing/index.d.ts.map +1 -0
  60. package/dist/testing/index.js +18 -0
  61. package/dist/testing/index.js.map +1 -0
  62. package/dist/testing/rejection.helper.d.ts +21 -0
  63. package/dist/testing/rejection.helper.d.ts.map +1 -0
  64. package/dist/testing/rejection.helper.js +37 -0
  65. package/dist/testing/rejection.helper.js.map +1 -0
  66. package/package.json +7 -6
  67. package/src/tsconfig/tsconfig.browser.json +11 -0
  68. package/src/tsconfig/tsconfig.react.json +7 -0
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MaxParamsOwnRule = void 0;
4
+ const common_1 = require("./common");
5
+ const HOOK_NAME = /^use[A-Z]/;
6
+ const CALL_TYPES = new Set(['CallExpression', 'NewExpression']);
7
+ const isArrayContaining = (opts) => Array.isArray(opts.list) && opts.list.includes(opts.item);
8
+ /** `useX(...)`: a hook's callback is ours, so it counts. */
9
+ const isHookCall = (call) => {
10
+ const callee = (0, common_1.readField)({ node: call, key: 'callee' });
11
+ const name = (0, common_1.readField)({ node: callee, key: 'name' });
12
+ return ((0, common_1.nodeType)({ node: callee }) === 'Identifier' && typeof name === 'string' && HOOK_NAME.test(name));
13
+ };
14
+ /** `node` is an argument of a call or `new` that is not a hook. */
15
+ const isLibraryArgument = (opts) => CALL_TYPES.has((0, common_1.nodeType)({ node: opts.parent }) ?? '') &&
16
+ isArrayContaining({
17
+ list: (0, common_1.readField)({ node: opts.parent, key: 'arguments' }),
18
+ item: opts.node,
19
+ }) &&
20
+ !isHookCall(opts.parent);
21
+ /**
22
+ * An object literal whose shape something else declares: a typed variable, `satisfies`, or an argument
23
+ * of a non-hook call (a library option bag). A nested literal inherits it.
24
+ */
25
+ const hasDeclaredShape = (object) => {
26
+ let current = object;
27
+ while (current) {
28
+ const parent = (0, common_1.readField)({ node: current, key: 'parent' });
29
+ const parentType = (0, common_1.nodeType)({ node: parent });
30
+ const isTypedVariable = parentType === 'VariableDeclarator' &&
31
+ Boolean((0, common_1.readField)({ node: (0, common_1.readField)({ node: parent, key: 'id' }), key: 'typeAnnotation' }));
32
+ if (isTypedVariable ||
33
+ parentType === 'TSSatisfiesExpression' ||
34
+ isLibraryArgument({ node: current, parent })) {
35
+ return true;
36
+ }
37
+ const isNestedValue = parentType === 'Property' && (0, common_1.readField)({ node: parent, key: 'value' }) === current;
38
+ current = isNestedValue ? (0, common_1.readField)({ node: parent, key: 'parent' }) : undefined;
39
+ }
40
+ return false;
41
+ };
42
+ /**
43
+ * `venizia/max-params-own`. A function we write takes at most `max` (default 5) positional parameters;
44
+ * beyond that it takes one options object. A signature that belongs to someone else is not counted: an
45
+ * inline callback handed to a call (map, reduce, sort, a library handler) or to a JSX prop, a function a
46
+ * declared type fixes (`const x: TFn = (...)`, a member of a typed or `satisfies` object), and a
47
+ * constructor whose every parameter is injected (`@inject`). A hook's callback (`useCallback(...)`) is ours.
48
+ */
49
+ class MaxParamsOwnRule {
50
+ static { this.NAME = `${common_1.HOUSE_PLUGIN_NAMESPACE}/max-params-own`; }
51
+ static { this.DEFAULT_MAX = 5; }
52
+ static { this.RULE = {
53
+ meta: {
54
+ type: 'suggestion',
55
+ schema: [{ type: 'integer', minimum: 0 }],
56
+ messages: {
57
+ tooMany: 'A function we write takes up to {{max}} positional parameters, not {{count}}: take one options object.',
58
+ },
59
+ },
60
+ create: context => {
61
+ const max = typeof context.options[0] === 'number' ? context.options[0] : MaxParamsOwnRule.DEFAULT_MAX;
62
+ const isCallback = (node) => {
63
+ const parent = node.parent;
64
+ const isJsxProp = (0, common_1.nodeType)({ node: parent }) === 'JSXExpressionContainer' &&
65
+ (0, common_1.nodeType)({ node: (0, common_1.readField)({ node: parent, key: 'parent' }) }) === 'JSXAttribute';
66
+ return isJsxProp || isLibraryArgument({ node, parent });
67
+ };
68
+ const isInjectedConstructor = (opts) => {
69
+ const parent = opts.node.parent;
70
+ const isDecorated = (param) => {
71
+ const own = (0, common_1.readField)({ node: param, key: 'decorators' });
72
+ const property = (0, common_1.readField)({
73
+ node: (0, common_1.readField)({ node: param, key: 'parameter' }),
74
+ key: 'decorators',
75
+ });
76
+ return ((Array.isArray(own) && own.length > 0) ||
77
+ (Array.isArray(property) && property.length > 0));
78
+ };
79
+ return ((0, common_1.nodeType)({ node: parent }) === 'MethodDefinition' &&
80
+ (0, common_1.readField)({ node: parent, key: 'kind' }) === 'constructor' &&
81
+ opts.params.every(isDecorated));
82
+ };
83
+ const isTypedByContext = (node) => {
84
+ const parent = node.parent;
85
+ const parentType = (0, common_1.nodeType)({ node: parent });
86
+ const isTypedInit = parentType === 'VariableDeclarator' &&
87
+ (0, common_1.readField)({ node: parent, key: 'init' }) === node &&
88
+ Boolean((0, common_1.readField)({ node: (0, common_1.readField)({ node: parent, key: 'id' }), key: 'typeAnnotation' }));
89
+ const grandParent = (0, common_1.readField)({ node: parent, key: 'parent' });
90
+ const isMember = parentType === 'Property' &&
91
+ (0, common_1.readField)({ node: parent, key: 'value' }) === node &&
92
+ (0, common_1.nodeType)({ node: grandParent }) === 'ObjectExpression';
93
+ return isTypedInit || (isMember && hasDeclaredShape(grandParent));
94
+ };
95
+ const check = (node) => {
96
+ const params = (0, common_1.readField)({ node, key: 'params' });
97
+ if (!Array.isArray(params) || params.length <= max) {
98
+ return;
99
+ }
100
+ if (isCallback(node) || isInjectedConstructor({ node, params }) || isTypedByContext(node)) {
101
+ return;
102
+ }
103
+ context.report({
104
+ node,
105
+ messageId: 'tooMany',
106
+ data: { count: String(params.length), max: String(max) },
107
+ });
108
+ };
109
+ return {
110
+ [common_1.AstNodeTypes.FUNCTION_DECLARATION]: check,
111
+ [common_1.AstNodeTypes.FUNCTION_EXPRESSION]: check,
112
+ [common_1.AstNodeTypes.ARROW_FUNCTION_EXPRESSION]: check,
113
+ };
114
+ },
115
+ }; }
116
+ static build(opts = {}) {
117
+ const { severity = 'error', max = MaxParamsOwnRule.DEFAULT_MAX } = opts;
118
+ return [severity, max];
119
+ }
120
+ }
121
+ exports.MaxParamsOwnRule = MaxParamsOwnRule;
122
+ //# sourceMappingURL=max-params-own.rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max-params-own.rule.js","sourceRoot":"","sources":["../../../src/linters/house/max-params-own.rule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Rule } from 'eslint';
2
+ import type { TRuleSeverity } from '../rules/common';
3
+ /**
4
+ * `venizia/no-new-error`. An error is thrown through `getError({ message })` (or an `ApplicationError`),
5
+ * never `new Error(...)` or `Error(...)`: only an ApplicationError carries the status, the message code and
6
+ * args, and the `extra` every IGNIS layer reads.
7
+ */
8
+ export declare class NoNewErrorRule {
9
+ static readonly NAME = "venizia/no-new-error";
10
+ static readonly RULE: Rule.RuleModule;
11
+ static build(opts?: {
12
+ severity?: TRuleSeverity;
13
+ }): TRuleSeverity;
14
+ }
15
+ //# sourceMappingURL=no-new-error.rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-new-error.rule.d.ts","sourceRoot":"","sources":["../../../src/linters/house/no-new-error.rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD;;;;GAIG;AACH,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ,CAAC,IAAI,0BAA4C;IAEhE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CA8BnC;IAEF,MAAM,CAAC,KAAK,CAAC,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,aAAa,CAAA;KAAO,GAAG,aAAa;CAGrE"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NoNewErrorRule = void 0;
4
+ const common_1 = require("./common");
5
+ /**
6
+ * `venizia/no-new-error`. An error is thrown through `getError({ message })` (or an `ApplicationError`),
7
+ * never `new Error(...)` or `Error(...)`: only an ApplicationError carries the status, the message code and
8
+ * args, and the `extra` every IGNIS layer reads.
9
+ */
10
+ class NoNewErrorRule {
11
+ static { this.NAME = `${common_1.HOUSE_PLUGIN_NAMESPACE}/no-new-error`; }
12
+ static { this.RULE = {
13
+ meta: {
14
+ type: 'problem',
15
+ schema: [],
16
+ messages: {
17
+ newError: 'Throw through getError({ message }) (or an ApplicationError), not `{{form}}`: only an ApplicationError carries the status, code and args.',
18
+ },
19
+ },
20
+ create: context => {
21
+ const report = (opts) => context.report({ node: opts.node, messageId: 'newError', data: { form: opts.form } });
22
+ const isErrorIdentifier = (callee) => (0, common_1.nodeType)({ node: callee }) === 'Identifier' &&
23
+ (0, common_1.readField)({ node: callee, key: 'name' }) === 'Error';
24
+ return {
25
+ [common_1.AstNodeTypes.NEW_EXPRESSION]: (node) => {
26
+ if (isErrorIdentifier((0, common_1.readField)({ node, key: 'callee' }))) {
27
+ report({ node, form: 'new Error(...)' });
28
+ }
29
+ },
30
+ [common_1.AstNodeTypes.CALL_EXPRESSION]: (node) => {
31
+ if (isErrorIdentifier((0, common_1.readField)({ node, key: 'callee' }))) {
32
+ report({ node, form: 'Error(...)' });
33
+ }
34
+ },
35
+ };
36
+ },
37
+ }; }
38
+ static build(opts = {}) {
39
+ return opts.severity ?? 'error';
40
+ }
41
+ }
42
+ exports.NoNewErrorRule = NoNewErrorRule;
43
+ //# sourceMappingURL=no-new-error.rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-new-error.rule.js","sourceRoot":"","sources":["../../../src/linters/house/no-new-error.rule.ts"],"names":[],"mappings":";;;AAEA,qCAAqF;AAErF;;;;GAIG;AACH,MAAa,cAAc;aACT,SAAI,GAAG,GAAG,+BAAsB,eAAe,CAAC;aAEhD,SAAI,GAAoB;QACtC,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE;gBACR,QAAQ,EACN,2IAA2I;aAC9I;SACF;QACD,MAAM,EAAE,OAAO,CAAC,EAAE;YAChB,MAAM,MAAM,GAAG,CAAC,IAAuC,EAAE,EAAE,CACzD,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAExF,MAAM,iBAAiB,GAAG,CAAC,MAAe,EAAE,EAAE,CAC5C,IAAA,iBAAQ,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,YAAY;gBAC3C,IAAA,kBAAS,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC;YAEvD,OAAO;gBACL,CAAC,qBAAY,CAAC,cAAc,CAAC,EAAE,CAAC,IAAe,EAAE,EAAE;oBACjD,IAAI,iBAAiB,CAAC,IAAA,kBAAS,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;wBAC1D,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBACD,CAAC,qBAAY,CAAC,eAAe,CAAC,EAAE,CAAC,IAAe,EAAE,EAAE;oBAClD,IAAI,iBAAiB,CAAC,IAAA,kBAAS,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;wBAC1D,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,MAAM,CAAC,KAAK,CAAC,OAAqC,EAAE;QAClD,OAAO,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC;IAClC,CAAC;;AArCH,wCAsCC"}
@@ -0,0 +1,4 @@
1
+ import type { ESLint } from 'eslint';
2
+ /** The ESLint plugin that carries the house rules oxlint cannot express, registered as `venizia`. */
3
+ export declare const houseEslintPlugin: ESLint.Plugin;
4
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/linters/house/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKrC,qGAAqG;AACrG,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAMtC,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.houseEslintPlugin = void 0;
4
+ const common_1 = require("./common");
5
+ const max_params_own_rule_1 = require("./max-params-own.rule");
6
+ const no_new_error_rule_1 = require("./no-new-error.rule");
7
+ /** The ESLint plugin that carries the house rules oxlint cannot express, registered as `venizia`. */
8
+ exports.houseEslintPlugin = {
9
+ meta: { name: `eslint-plugin-${common_1.HOUSE_PLUGIN_NAMESPACE}` },
10
+ rules: {
11
+ 'max-params-own': max_params_own_rule_1.MaxParamsOwnRule.RULE,
12
+ 'no-new-error': no_new_error_rule_1.NoNewErrorRule.RULE,
13
+ },
14
+ };
15
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/linters/house/plugin.ts"],"names":[],"mappings":";;;AACA,qCAAkD;AAClD,+DAAyD;AACzD,2DAAqD;AAErD,qGAAqG;AACxF,QAAA,iBAAiB,GAAkB;IAC9C,IAAI,EAAE,EAAE,IAAI,EAAE,iBAAiB,+BAAsB,EAAE,EAAE;IACzD,KAAK,EAAE;QACL,gBAAgB,EAAE,sCAAgB,CAAC,IAAI;QACvC,cAAc,EAAE,kCAAc,CAAC,IAAI;KACpC;CACF,CAAC"}
@@ -1,4 +1,6 @@
1
+ export * from './browser';
1
2
  export * from './eslint';
3
+ export * from './house';
2
4
  export * from './oxlint';
3
5
  export * from './react';
4
6
  export * from './rules';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/linters/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/linters/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -14,7 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./browser"), exports);
17
18
  __exportStar(require("./eslint"), exports);
19
+ __exportStar(require("./house"), exports);
18
20
  __exportStar(require("./oxlint"), exports);
19
21
  __exportStar(require("./react"), exports);
20
22
  __exportStar(require("./rules"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/linters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,0CAAwB;AACxB,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/linters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB;AACxB,0CAAwB"}
@@ -14,6 +14,31 @@ import type { OxlintConfig } from 'oxlint';
14
14
  *
15
15
  * export default defineConfig(oxlintConfigs);
16
16
  * ```
17
+ *
18
+ * `OxlintConfigs.create({ lenientFallback: true })` is the same preset with `||` allowed on string
19
+ * and number operands.
17
20
  */
18
21
  export declare const oxlintConfigs: OxlintConfig;
22
+ export interface IOxlintPresetOptions {
23
+ /**
24
+ * Allow `||` / `||=` where the left side is a string or a number, so `name || 'guest'` and
25
+ * `limit || 20` pass: `''` and `0` fall back on purpose. Off by default - the base catches a real
26
+ * `''` or `0` swallowed by `||`.
27
+ */
28
+ lenientFallback?: boolean;
29
+ }
30
+ /**
31
+ * Builds `oxlintConfigs` with options. Without any it returns the base preset unchanged.
32
+ *
33
+ * ```ts
34
+ * // .configs/oxlint.config.mts
35
+ * import { defineConfig } from 'oxlint';
36
+ * import { OxlintConfigs } from '@venizia/dev-configs/linters';
37
+ *
38
+ * export default defineConfig(OxlintConfigs.create({ lenientFallback: true }));
39
+ * ```
40
+ */
41
+ export declare class OxlintConfigs {
42
+ static create(opts?: IOxlintPresetOptions): OxlintConfig;
43
+ }
19
44
  //# sourceMappingURL=oxlint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oxlint.d.ts","sourceRoot":"","sources":["../../src/linters/oxlint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAa3C;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,aAAa,EAAE,YAgJ3B,CAAC"}
1
+ {"version":3,"file":"oxlint.d.ts","sourceRoot":"","sources":["../../src/linters/oxlint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAa3C;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,EAAE,YA2J3B,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACxB,MAAM,CAAC,MAAM,CAAC,IAAI,GAAE,oBAAyB,GAAG,YAAY;CAe7D"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.oxlintConfigs = void 0;
3
+ exports.OxlintConfigs = exports.oxlintConfigs = void 0;
4
4
  const rules_1 = require("./rules");
5
5
  /** File globs the rules are scoped to. */
6
6
  const TS_FILES = ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts'];
@@ -20,6 +20,9 @@ const JS_TS_FILES = ['**/*.js', '**/*.cjs', '**/*.mjs', '**/*.jsx', ...TS_FILES]
20
20
  *
21
21
  * export default defineConfig(oxlintConfigs);
22
22
  * ```
23
+ *
24
+ * `OxlintConfigs.create({ lenientFallback: true })` is the same preset with `||` allowed on string
25
+ * and number operands.
23
26
  */
24
27
  exports.oxlintConfigs = {
25
28
  plugins: ['typescript', 'unicorn'],
@@ -146,6 +149,17 @@ exports.oxlintConfigs = {
146
149
  'prefer-const': 'error',
147
150
  'prefer-rest-params': 'error',
148
151
  'prefer-spread': 'error',
152
+ // A value import of a type becomes a runtime import when Bun runs a decorated class's source
153
+ // (emitDecoratorMetadata) and fails with `Export named 'X' not found`. `import('pkg').T` type
154
+ // annotations stay allowed: they are type-only by construction, and type an optional peer.
155
+ 'typescript/consistent-type-imports': [
156
+ 'error',
157
+ {
158
+ prefer: 'type-imports',
159
+ fixStyle: 'inline-type-imports',
160
+ disallowTypeAnnotations: false,
161
+ },
162
+ ],
149
163
  },
150
164
  },
151
165
  {
@@ -163,4 +177,32 @@ exports.oxlintConfigs = {
163
177
  },
164
178
  ],
165
179
  };
180
+ /**
181
+ * Builds `oxlintConfigs` with options. Without any it returns the base preset unchanged.
182
+ *
183
+ * ```ts
184
+ * // .configs/oxlint.config.mts
185
+ * import { defineConfig } from 'oxlint';
186
+ * import { OxlintConfigs } from '@venizia/dev-configs/linters';
187
+ *
188
+ * export default defineConfig(OxlintConfigs.create({ lenientFallback: true }));
189
+ * ```
190
+ */
191
+ class OxlintConfigs {
192
+ static create(opts = {}) {
193
+ if (!opts.lenientFallback) {
194
+ return exports.oxlintConfigs;
195
+ }
196
+ return {
197
+ ...exports.oxlintConfigs,
198
+ rules: {
199
+ ...exports.oxlintConfigs.rules,
200
+ [rules_1.PreferNullishCoalescingRule.NAME]: rules_1.PreferNullishCoalescingRule.build({
201
+ ignorePrimitives: { string: true, number: true },
202
+ }),
203
+ },
204
+ };
205
+ }
206
+ }
207
+ exports.OxlintConfigs = OxlintConfigs;
166
208
  //# sourceMappingURL=oxlint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"oxlint.js","sourceRoot":"","sources":["../../src/linters/oxlint.ts"],"names":[],"mappings":";;;AACA,mCAMiB;AAEjB,0CAA0C;AAC1C,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACjE,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,CAAC;AAEjF;;;;;;;;;;;;;;;GAeG;AACU,QAAA,aAAa,GAAiB;IACzC,OAAO,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;IAClC,UAAU,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;IAClC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;IAC5B,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IACtB,cAAc,EAAE,CAAC,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC;IACzF,KAAK,EAAE;QACL,qBAAqB;QACrB,mBAAmB,EAAE,OAAO;QAC5B,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,OAAO;QACxB,2BAA2B,EAAE,OAAO;QACpC,sBAAsB,EAAE,OAAO;QAC/B,iBAAiB,EAAE,OAAO;QAC1B,qBAAqB,EAAE,OAAO;QAC9B,gBAAgB,EAAE,OAAO;QACzB,iBAAiB,EAAE,OAAO;QAC1B,+BAA+B,EAAE,OAAO;QACxC,uBAAuB,EAAE,OAAO;QAChC,kBAAkB,EAAE,OAAO;QAC3B,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,OAAO;QACxB,iBAAiB,EAAE,OAAO;QAC1B,cAAc,EAAE,OAAO;QACvB,mBAAmB,EAAE,OAAO;QAC5B,UAAU,EAAE,OAAO;QACnB,0BAA0B,EAAE,OAAO;QACnC,kBAAkB,EAAE,OAAO;QAC3B,uBAAuB,EAAE,OAAO;QAChC,cAAc,EAAE,OAAO;QACvB,uBAAuB,EAAE,OAAO;QAChC,gBAAgB,EAAE,OAAO;QACzB,gBAAgB,EAAE,OAAO;QACzB,kBAAkB,EAAE,OAAO;QAC3B,kBAAkB,EAAE,OAAO;QAC3B,mBAAmB,EAAE,OAAO;QAC5B,yBAAyB,EAAE,OAAO;QAClC,sBAAsB,EAAE,OAAO;QAC/B,+BAA+B,EAAE,OAAO;QACxC,8BAA8B,EAAE,OAAO;QACvC,4BAA4B,EAAE,OAAO;QACrC,cAAc,EAAE,OAAO;QACvB,uBAAuB,EAAE,OAAO;QAChC,iBAAiB,EAAE,OAAO;QAC1B,gBAAgB,EAAE,OAAO;QACzB,kBAAkB,EAAE,OAAO;QAC3B,4BAA4B,EAAE,OAAO;QACrC,kBAAkB,EAAE,OAAO;QAC3B,sBAAsB,EAAE,OAAO;QAC/B,oBAAoB,EAAE,OAAO;QAC7B,gBAAgB,EAAE,OAAO;QACzB,mBAAmB,EAAE,OAAO;QAC5B,oBAAoB,EAAE,OAAO;QAC7B,6BAA6B,EAAE,OAAO;QACtC,kBAAkB,EAAE,OAAO;QAC3B,iCAAiC,EAAE,OAAO;QAC1C,0BAA0B,EAAE,OAAO;QACnC,kBAAkB,EAAE,OAAO;QAC3B,SAAS,EAAE,OAAO;QAClB,uBAAuB,EAAE,OAAO;QAChC,eAAe,EAAE,OAAO;QACxB,WAAW,EAAE,OAAO;QACpB,cAAc,EAAE,OAAO;QACvB,sBAAsB,EAAE,OAAO;QAE/B,sBAAsB;QACtB,CAAC,wBAAgB,CAAC,IAAI,CAAC,EAAE,wBAAgB,CAAC,KAAK,EAAE;QACjD,mBAAmB,EAAE,MAAM;QAC3B,uBAAuB,EAAE,OAAO;QAChC,iBAAiB,EAAE,OAAO;QAC1B,kBAAkB,EAAE,OAAO;QAC3B,CAAC,kBAAU,CAAC,IAAI,CAAC,EAAE,kBAAU,CAAC,KAAK,EAAE;QACrC,SAAS,EAAE,OAAO;QAClB,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,OAAO;QACpB,sBAAsB,EAAE,OAAO;QAC/B,CAAC,4BAAoB,CAAC,IAAI,CAAC,EAAE,4BAAoB,CAAC,KAAK,EAAE;QACzD,8BAA8B,EAAE,OAAO;QAEvC,oBAAoB;QACpB,2BAA2B,EAAE,OAAO;QACpC,qCAAqC,EAAE,OAAO;QAC9C,iCAAiC,EAAE,OAAO;QAC1C,wCAAwC,EAAE,OAAO;QACjD,2BAA2B,EAAE,OAAO;QACpC,yBAAyB,EAAE,OAAO;QAClC,gDAAgD,EAAE,OAAO;QACzD,0BAA0B,EAAE,OAAO;QACnC,2CAA2C,EAAE,OAAO;QACpD,0CAA0C,EAAE,OAAO;QACnD,oCAAoC,EAAE,OAAO;QAC7C,oCAAoC,EAAE,OAAO;QAC7C,4BAA4B,EAAE,OAAO;QACrC,qCAAqC,EAAE,OAAO;QAC9C,mCAAmC,EAAE,OAAO;QAC5C,yCAAyC,EAAE,OAAO;QAClD,0BAA0B,EAAE,OAAO;QACnC,+BAA+B,EAAE,OAAO;QAExC,gCAAgC;QAChC,2BAA2B,EAAE,OAAO;QACpC,iCAAiC,EAAE,OAAO;QAC1C,CAAC,mCAA2B,CAAC,IAAI,CAAC,EAAE,mCAA2B,CAAC,KAAK,EAAE;QACvE,yBAAyB,EAAE,OAAO;KACnC;IACD,SAAS,EAAE;QACT;YACE,mCAAmC;YACnC,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE;gBACL,mBAAmB,EAAE,KAAK;gBAC1B,eAAe,EAAE,KAAK;gBACtB,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,KAAK;gBACxB,cAAc,EAAE,KAAK;gBACrB,gBAAgB,EAAE,KAAK;gBACvB,kBAAkB,EAAE,KAAK;gBACzB,8BAA8B,EAAE,KAAK;gBACrC,cAAc,EAAE,KAAK;gBACrB,kBAAkB,EAAE,KAAK;gBACzB,sBAAsB,EAAE,KAAK;gBAC7B,gBAAgB,EAAE,KAAK;gBACvB,oBAAoB,EAAE,KAAK;gBAC3B,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE,OAAO;gBACjB,cAAc,EAAE,OAAO;gBACvB,oBAAoB,EAAE,OAAO;gBAC7B,eAAe,EAAE,OAAO;aACzB;SACF;QACD;YACE,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE;gBACL,uBAAuB,EAAE,KAAK;gBAC9B,cAAc,EAAE,OAAO;gBACvB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;gBACvB,CAAC,+BAAuB,CAAC,IAAI,CAAC,EAAE,+BAAuB,CAAC,KAAK,EAAE;gBAC/D,oCAAoC,EAAE,KAAK;gBAC3C,0BAA0B,EAAE,KAAK;gBACjC,iCAAiC,EAAE,KAAK;aACzC;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"oxlint.js","sourceRoot":"","sources":["../../src/linters/oxlint.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { ESLint, Linter } from 'eslint';
2
2
  import type { OxlintConfig } from 'oxlint';
3
+ import type { IOxlintPresetOptions } from './oxlint';
3
4
  /** Without `configs`: each plugin types its presets its own way, and only the rules are used here. */
4
5
  type TRulesPlugin = Omit<ESLint.Plugin, 'configs'>;
5
6
  export interface IReactEslintPlugins {
@@ -31,12 +32,13 @@ export declare class ReactEslintConfigs {
31
32
  }): Linter.Config[];
32
33
  }
33
34
  /**
34
- * The oxlint counterpart of `ReactEslintConfigs`: `oxlintConfigs` plus the React, hooks and
35
- * accessibility rules, `consistent-type-imports`, and the secure-context ban. oxlint runs these
36
- * plugins natively, so nothing is passed in. `react/no-deprecated` has no oxlint port and is left out.
35
+ * The oxlint counterpart of `ReactEslintConfigs`: `BrowserOxlintConfigs` (the base rules plus the
36
+ * secure-context ban) plus the React, hooks and accessibility rules and `consistent-type-imports`.
37
+ * oxlint runs these plugins natively, so nothing is passed in. `react/no-deprecated` has no oxlint
38
+ * port and is left out.
37
39
  *
38
40
  * Nothing in the base is relaxed - frontend code meets the backend's standard - and
39
- * `exhaustive-deps` is an error.
41
+ * `exhaustive-deps` is an error. Takes the same options as `OxlintConfigs`.
40
42
  *
41
43
  * ```ts
42
44
  * // .configs/oxlint.config.mts
@@ -47,7 +49,7 @@ export declare class ReactEslintConfigs {
47
49
  * ```
48
50
  */
49
51
  export declare class ReactOxlintConfigs {
50
- static create(): OxlintConfig;
52
+ static create(opts?: IOxlintPresetOptions): OxlintConfig;
51
53
  }
52
54
  /**
53
55
  * `namingConventionConfigs` for a React project: the base rule plus PascalCase functions in .jsx and
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/linters/react.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAM3C,sGAAsG;AACtG,KAAK,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,YAAY,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,mBAAmB,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE;CA8D9F;AAQD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,MAAM,IAAI,YAAY;CAgD9B;AAED;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAYvD,CAAC"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/linters/react.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAG3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAIrD,sGAAsG;AACtG,KAAK,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,YAAY,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,mBAAmB,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE;CAqE9F;AAQD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,GAAE,oBAAyB,GAAG,YAAY;CAwD7D;AAED;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAYvD,CAAC"}
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.reactNamingConventionConfigs = exports.ReactOxlintConfigs = exports.ReactEslintConfigs = void 0;
7
7
  const typescript_eslint_1 = __importDefault(require("typescript-eslint"));
8
+ const browser_1 = require("./browser");
8
9
  const eslint_1 = require("./eslint");
9
- const oxlint_1 = require("./oxlint");
10
10
  const rules_1 = require("./rules");
11
11
  /**
12
12
  * The base preset plus what a React frontend needs on top: the React, hooks and accessibility rules.
@@ -79,7 +79,14 @@ class ReactEslintConfigs {
79
79
  },
80
80
  {
81
81
  rules: {
82
- '@typescript-eslint/consistent-type-imports': ['error', { prefer: 'type-imports' }],
82
+ '@typescript-eslint/consistent-type-imports': [
83
+ 'error',
84
+ {
85
+ prefer: 'type-imports',
86
+ fixStyle: 'inline-type-imports',
87
+ disallowTypeAnnotations: false,
88
+ },
89
+ ],
83
90
  [rules_1.NoRestrictedPropertiesRule.NAME]: rules_1.NoRestrictedPropertiesRule.build(),
84
91
  },
85
92
  },
@@ -92,12 +99,13 @@ const SOURCE_FILES = ['**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx', '**/*.mts',
92
99
  /** A component is declared as `function App()`, so functions may be PascalCase too. */
93
100
  const COMPONENT_FUNCTION_SELECTOR = { selector: 'function', format: ['camelCase', 'PascalCase'] };
94
101
  /**
95
- * The oxlint counterpart of `ReactEslintConfigs`: `oxlintConfigs` plus the React, hooks and
96
- * accessibility rules, `consistent-type-imports`, and the secure-context ban. oxlint runs these
97
- * plugins natively, so nothing is passed in. `react/no-deprecated` has no oxlint port and is left out.
102
+ * The oxlint counterpart of `ReactEslintConfigs`: `BrowserOxlintConfigs` (the base rules plus the
103
+ * secure-context ban) plus the React, hooks and accessibility rules and `consistent-type-imports`.
104
+ * oxlint runs these plugins natively, so nothing is passed in. `react/no-deprecated` has no oxlint
105
+ * port and is left out.
98
106
  *
99
107
  * Nothing in the base is relaxed - frontend code meets the backend's standard - and
100
- * `exhaustive-deps` is an error.
108
+ * `exhaustive-deps` is an error. Takes the same options as `OxlintConfigs`.
101
109
  *
102
110
  * ```ts
103
111
  * // .configs/oxlint.config.mts
@@ -108,12 +116,13 @@ const COMPONENT_FUNCTION_SELECTOR = { selector: 'function', format: ['camelCase'
108
116
  * ```
109
117
  */
110
118
  class ReactOxlintConfigs {
111
- static create() {
119
+ static create(opts = {}) {
120
+ const browserConfigs = browser_1.BrowserOxlintConfigs.create(opts);
112
121
  return {
113
- ...oxlint_1.oxlintConfigs,
114
- plugins: [...new Set([...(oxlint_1.oxlintConfigs.plugins ?? []), 'react', 'jsx-a11y'])],
122
+ ...browserConfigs,
123
+ plugins: [...new Set([...(browserConfigs.plugins ?? []), 'react', 'jsx-a11y'])],
115
124
  overrides: [
116
- ...(oxlint_1.oxlintConfigs.overrides ?? []),
125
+ ...(browserConfigs.overrides ?? []),
117
126
  {
118
127
  files: JSX_FILES,
119
128
  rules: {
@@ -148,8 +157,14 @@ class ReactOxlintConfigs {
148
157
  rules: {
149
158
  'react/rules-of-hooks': 'error',
150
159
  'react/exhaustive-deps': 'error',
151
- 'typescript/consistent-type-imports': ['error', { prefer: 'type-imports' }],
152
- [rules_1.NoRestrictedPropertiesRule.NAME]: rules_1.NoRestrictedPropertiesRule.build(),
160
+ 'typescript/consistent-type-imports': [
161
+ 'error',
162
+ {
163
+ prefer: 'type-imports',
164
+ fixStyle: 'inline-type-imports',
165
+ disallowTypeAnnotations: false,
166
+ },
167
+ ],
153
168
  },
154
169
  },
155
170
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/linters/react.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/linters/react.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,11 @@ export declare class NoUnusedVarsRule {
7
7
  vars?: 'all' | 'local';
8
8
  args?: 'all' | 'after-used' | 'none';
9
9
  ignoreRestSiblings?: boolean;
10
+ /** Names that may stay unused, e.g. `^_` - a placeholder a signature needs. */
11
+ argsIgnorePattern?: string;
12
+ varsIgnorePattern?: string;
13
+ caughtErrorsIgnorePattern?: string;
14
+ destructuredArrayIgnorePattern?: string;
10
15
  }): TOxlintRuleEntry<'no-unused-vars'>;
11
16
  }
12
17
  //# sourceMappingURL=no-unused-vars.rule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-unused-vars.rule.d.ts","sourceRoot":"","sources":["../../../src/linters/rules/no-unused-vars.rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhE,2FAA2F;AAC3F,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,oBAAoB;IAExC,MAAM,CAAC,KAAK,CACV,IAAI,GAAE;QACJ,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE,KAAK,GAAG,YAAY,GAAG,MAAM,CAAC;QACrC,kBAAkB,CAAC,EAAE,OAAO,CAAC;KACzB,GACL,gBAAgB,CAAC,gBAAgB,CAAC;CAItC"}
1
+ {"version":3,"file":"no-unused-vars.rule.d.ts","sourceRoot":"","sources":["../../../src/linters/rules/no-unused-vars.rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhE,2FAA2F;AAC3F,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,oBAAoB;IAExC,MAAM,CAAC,KAAK,CACV,IAAI,GAAE;QACJ,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE,KAAK,GAAG,YAAY,GAAG,MAAM,CAAC;QACrC,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,+EAA+E;QAC/E,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,8BAA8B,CAAC,EAAE,MAAM,CAAC;KACpC,GACL,gBAAgB,CAAC,gBAAgB,CAAC;CAUtC"}
@@ -5,8 +5,8 @@ exports.NoUnusedVarsRule = void 0;
5
5
  class NoUnusedVarsRule {
6
6
  static { this.NAME = 'no-unused-vars'; }
7
7
  static build(opts = {}) {
8
- const { severity = 'error', vars = 'all', args = 'none', ignoreRestSiblings = false } = opts;
9
- return [severity, { vars, args, ignoreRestSiblings }];
8
+ const { severity = 'error', vars = 'all', args = 'none', ignoreRestSiblings = false, ...patterns } = opts;
9
+ return [severity, { vars, args, ignoreRestSiblings, ...patterns }];
10
10
  }
11
11
  }
12
12
  exports.NoUnusedVarsRule = NoUnusedVarsRule;
@@ -1 +1 @@
1
- {"version":3,"file":"no-unused-vars.rule.js","sourceRoot":"","sources":["../../../src/linters/rules/no-unused-vars.rule.ts"],"names":[],"mappings":";;;AAEA,2FAA2F;AAC3F,MAAa,gBAAgB;aACX,SAAI,GAAG,gBAAgB,CAAC;IAExC,MAAM,CAAC,KAAK,CACV,OAKI,EAAE;QAEN,MAAM,EAAE,QAAQ,GAAG,OAAO,EAAE,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,kBAAkB,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;QAC7F,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACxD,CAAC;;AAbH,4CAcC"}
1
+ {"version":3,"file":"no-unused-vars.rule.js","sourceRoot":"","sources":["../../../src/linters/rules/no-unused-vars.rule.ts"],"names":[],"mappings":";;;AAEA,2FAA2F;AAC3F,MAAa,gBAAgB;aACX,SAAI,GAAG,gBAAgB,CAAC;IAExC,MAAM,CAAC,KAAK,CACV,OAUI,EAAE;QAEN,MAAM,EACJ,QAAQ,GAAG,OAAO,EAClB,IAAI,GAAG,KAAK,EACZ,IAAI,GAAG,MAAM,EACb,kBAAkB,GAAG,KAAK,EAC1B,GAAG,QAAQ,EACZ,GAAG,IAAI,CAAC;QACT,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;;AAxBH,4CAyBC"}
@@ -7,6 +7,13 @@ export declare class PreferNullishCoalescingRule {
7
7
  ignoreConditionalTests?: boolean;
8
8
  ignoreMixedLogicalExpressions?: boolean;
9
9
  ignoreTernaryTests?: boolean;
10
+ /** Allow `||` / `||=` where the left side is this primitive, e.g. `{ string: true, number: true }`. */
11
+ ignorePrimitives?: {
12
+ bigint?: boolean;
13
+ boolean?: boolean;
14
+ number?: boolean;
15
+ string?: boolean;
16
+ };
10
17
  }): TOxlintRuleEntry<'typescript/prefer-nullish-coalescing'>;
11
18
  }
12
19
  //# sourceMappingURL=prefer-nullish-coalescing.rule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prefer-nullish-coalescing.rule.d.ts","sourceRoot":"","sources":["../../../src/linters/rules/prefer-nullish-coalescing.rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhE,gGAAgG;AAChG,qBAAa,2BAA2B;IACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,0CAA0C;IAE9D,MAAM,CAAC,KAAK,CACV,IAAI,GAAE;QACJ,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,6BAA6B,CAAC,EAAE,OAAO,CAAC;QACxC,kBAAkB,CAAC,EAAE,OAAO,CAAC;KACzB,GACL,gBAAgB,CAAC,sCAAsC,CAAC;CAI5D"}
1
+ {"version":3,"file":"prefer-nullish-coalescing.rule.d.ts","sourceRoot":"","sources":["../../../src/linters/rules/prefer-nullish-coalescing.rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhE,gGAAgG;AAChG,qBAAa,2BAA2B;IACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,0CAA0C;IAE9D,MAAM,CAAC,KAAK,CACV,IAAI,GAAE;QACJ,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,6BAA6B,CAAC,EAAE,OAAO,CAAC;QACxC,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,uGAAuG;QACvG,gBAAgB,CAAC,EAAE;YACjB,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,OAAO,CAAC,EAAE,OAAO,CAAC;YAClB,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,MAAM,CAAC,EAAE,OAAO,CAAC;SAClB,CAAC;KACE,GACL,gBAAgB,CAAC,sCAAsC,CAAC;CAI5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"prefer-nullish-coalescing.rule.js","sourceRoot":"","sources":["../../../src/linters/rules/prefer-nullish-coalescing.rule.ts"],"names":[],"mappings":";;;AAEA,gGAAgG;AAChG,MAAa,2BAA2B;aACtB,SAAI,GAAG,sCAAsC,CAAC;IAE9D,MAAM,CAAC,KAAK,CACV,OAKI,EAAE;QAEN,MAAM,EAAE,QAAQ,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;QAChD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;;AAbH,kEAcC"}
1
+ {"version":3,"file":"prefer-nullish-coalescing.rule.js","sourceRoot":"","sources":["../../../src/linters/rules/prefer-nullish-coalescing.rule.ts"],"names":[],"mappings":";;;AAEA,gGAAgG;AAChG,MAAa,2BAA2B;aACtB,SAAI,GAAG,sCAAsC,CAAC;IAE9D,MAAM,CAAC,KAAK,CACV,OAYI,EAAE;QAEN,MAAM,EAAE,QAAQ,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;QAChD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;;AApBH,kEAqBC"}
@@ -0,0 +1,2 @@
1
+ export * from './rejection.helper';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}