eslint-plugin-operability 3.0.11 → 3.0.13

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 (30) hide show
  1. package/README.md +4 -2
  2. package/package.json +5 -17
  3. package/src/index.d.ts +15 -142
  4. package/src/index.js +1 -9
  5. package/src/lib/eslint-plugin-operability.js +0 -1
  6. package/src/oxlint.d.ts +17 -20
  7. package/src/oxlint.js +0 -19
  8. package/src/rules/operability/no-console-log.js +1 -67
  9. package/src/rules/operability/no-debug-code-in-production.js +0 -11
  10. package/src/rules/operability/no-process-exit.js +0 -10
  11. package/src/rules/operability/no-verbose-error-messages.js +0 -14
  12. package/src/rules/operability/require-code-minification.js +0 -11
  13. package/src/rules/operability/require-data-minimization.js +0 -13
  14. package/CHANGELOG.md +0 -186
  15. package/src/index.js.map +0 -1
  16. package/src/lib/eslint-plugin-operability.d.ts +0 -1
  17. package/src/lib/eslint-plugin-operability.js.map +0 -1
  18. package/src/oxlint.js.map +0 -1
  19. package/src/rules/operability/no-console-log.d.ts +0 -53
  20. package/src/rules/operability/no-console-log.js.map +0 -1
  21. package/src/rules/operability/no-debug-code-in-production.d.ts +0 -12
  22. package/src/rules/operability/no-debug-code-in-production.js.map +0 -1
  23. package/src/rules/operability/no-process-exit.d.ts +0 -19
  24. package/src/rules/operability/no-process-exit.js.map +0 -1
  25. package/src/rules/operability/no-verbose-error-messages.d.ts +0 -12
  26. package/src/rules/operability/no-verbose-error-messages.js.map +0 -1
  27. package/src/rules/operability/require-code-minification.d.ts +0 -12
  28. package/src/rules/operability/require-code-minification.js.map +0 -1
  29. package/src/rules/operability/require-data-minimization.d.ts +0 -12
  30. package/src/rules/operability/require-data-minimization.js.map +0 -1
package/README.md CHANGED
@@ -1,7 +1,9 @@
1
1
  <p align="center">
2
- <a href="https://eslint.interlace.tools/?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-operability" target="blank"><img src="https://eslint.interlace.tools/icon-light.svg" alt="Interlace" height="90" /></a>
2
+ <a href="https://eslint.interlace.tools/?utm_source=github&utm_medium=referral&utm_campaign=eslint-plugin-operability" target="blank"><img src="https://eslint.interlace.tools/logos/interlace.svg" alt="Interlace" height="90" /></a>
3
3
  &nbsp;&nbsp;
4
- <a href="https://eslint.org" target="_blank"><img src="https://eslint.interlace.tools/eslint-logo.svg" alt="ESLint" height="90" /></a>
4
+ <a href="https://oxc.rs" target="_blank"><img src="https://eslint.interlace.tools/logos/oxlint.svg" alt="oxlint" height="90" /></a>
5
+ &nbsp;&nbsp;
6
+ <a href="https://eslint.org" target="_blank"><img src="https://eslint.interlace.tools/logos/eslint.svg" alt="ESLint" height="90" /></a>
5
7
  </p>
6
8
 
7
9
  <p align="center">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-operability",
3
- "version": "3.0.11",
3
+ "version": "3.0.13",
4
4
  "description": "ESLint plugin for production operability — bans debug code and console logging in production, verbose error messages, and process.exit calls.",
5
5
  "type": "commonjs",
6
6
  "main": "./src/index.js",
@@ -22,10 +22,8 @@
22
22
  },
23
23
  "files": [
24
24
  "src/",
25
- "dist/",
26
25
  "README.md",
27
- "LICENSE",
28
- "CHANGELOG.md"
26
+ "LICENSE"
29
27
  ],
30
28
  "keywords": [
31
29
  "eslint",
@@ -52,32 +50,22 @@
52
50
  },
53
51
  "dependencies": {
54
52
  "tslib": "^2.3.0",
55
- "@interlace/eslint-devkit": "*"
56
- },
57
- "devDependencies": {
58
- "@typescript-eslint/parser": "^8.46.2",
59
- "@typescript-eslint/rule-tester": "^8.46.2"
53
+ "@interlace/eslint-devkit": "^1.6.1"
60
54
  },
61
55
  "repository": {
62
56
  "type": "git",
63
- "url": "https://github.com/ofri-peretz/eslint",
57
+ "url": "git+https://github.com/ofri-peretz/eslint.git",
64
58
  "directory": "packages/eslint-plugin-operability"
65
59
  },
66
60
  "homepage": "https://eslint.interlace.tools/docs/quality/plugin-operability?utm_source=npm&utm_medium=referral&utm_campaign=eslint-plugin-operability",
67
61
  "bugs": {
68
62
  "url": "https://github.com/ofri-peretz/eslint/issues"
69
63
  },
70
- "scripts": {
71
- "build": "tsx ../../scripts/build-package.ts",
72
- "test": "vitest run",
73
- "test:coverage": "vitest run --coverage",
74
- "typecheck": "tsc -p tsconfig.lib.json --noEmit"
75
- },
76
64
  "peerDependencies": {
77
65
  "eslint": "^8.0.0 || ^9.0.0 || ^10.0.0"
78
66
  },
79
67
  "funding": {
80
68
  "type": "github",
81
- "url": "https://github.com/ofri-peretz/eslint"
69
+ "url": "git+https://github.com/ofri-peretz/eslint.git"
82
70
  }
83
71
  }
package/src/index.d.ts CHANGED
@@ -1,144 +1,17 @@
1
- /**
2
- * Copyright (c) 2025 Ofri Peretz
3
- * Licensed under the MIT License. Use of this source code is governed by the
4
- * MIT license that can be found in the LICENSE file.
5
- */
6
- import type { TSESLint } from '@interlace/eslint-devkit';
7
- export declare const rules: {
8
- 'no-console-log': TSESLint.RuleModule<"consoleLogFound" | "strategyRemove" | "strategyConvert" | "strategyComment" | "strategyWarn", [(import("./rules/operability/no-console-log").Options | undefined)?], unknown, TSESLint.RuleListener> & {
9
- name: string;
10
- };
11
- 'no-process-exit': TSESLint.RuleModule<"noProcessExit", [(import("./rules/operability/no-process-exit").Options | undefined)?], unknown, TSESLint.RuleListener> & {
12
- name: string;
13
- };
14
- 'no-debug-code-in-production': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/no-debug-code-in-production").Options | undefined)?], unknown, TSESLint.RuleListener> & {
15
- name: string;
16
- };
17
- 'no-verbose-error-messages': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/no-verbose-error-messages").Options | undefined)?], unknown, TSESLint.RuleListener> & {
18
- name: string;
19
- };
20
- 'require-code-minification': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/require-code-minification").Options | undefined)?], unknown, TSESLint.RuleListener> & {
21
- name: string;
22
- };
23
- 'require-data-minimization': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/require-data-minimization").Options | undefined)?], unknown, TSESLint.RuleListener> & {
24
- name: string;
25
- };
26
- 'operability/no-console-log': TSESLint.RuleModule<"consoleLogFound" | "strategyRemove" | "strategyConvert" | "strategyComment" | "strategyWarn", [(import("./rules/operability/no-console-log").Options | undefined)?], unknown, TSESLint.RuleListener> & {
27
- name: string;
28
- };
29
- 'operability/no-process-exit': TSESLint.RuleModule<"noProcessExit", [(import("./rules/operability/no-process-exit").Options | undefined)?], unknown, TSESLint.RuleListener> & {
30
- name: string;
31
- };
32
- 'operability/no-debug-code-in-production': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/no-debug-code-in-production").Options | undefined)?], unknown, TSESLint.RuleListener> & {
33
- name: string;
34
- };
35
- 'operability/no-verbose-error-messages': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/no-verbose-error-messages").Options | undefined)?], unknown, TSESLint.RuleListener> & {
36
- name: string;
37
- };
38
- 'operability/require-code-minification': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/require-code-minification").Options | undefined)?], unknown, TSESLint.RuleListener> & {
39
- name: string;
40
- };
41
- 'operability/require-data-minimization': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/require-data-minimization").Options | undefined)?], unknown, TSESLint.RuleListener> & {
42
- name: string;
43
- };
44
- };
1
+ // Minimal declaration written by scripts/build-package.ts.
2
+ //
3
+ // tsc's generated entry declaration inlined every inferred rule-option type
4
+ // (up to 166 kB per plugin) for an API no consumer calls directly. This types
5
+ // what a flat config actually touches. Per-rule option types remain available
6
+ // from the "./types" subpath export where a plugin provides one.
7
+ import type { Linter, Rule } from 'eslint';
8
+
9
+ export declare const rules: Record<string, Rule.RuleModule>;
10
+ export declare const configs: Record<string, Linter.Config>;
45
11
  export declare const plugin: {
46
- meta: {
47
- name: string;
48
- version: string;
49
- };
50
- rules: {
51
- 'no-console-log': TSESLint.RuleModule<"consoleLogFound" | "strategyRemove" | "strategyConvert" | "strategyComment" | "strategyWarn", [(import("./rules/operability/no-console-log").Options | undefined)?], unknown, TSESLint.RuleListener> & {
52
- name: string;
53
- };
54
- 'no-process-exit': TSESLint.RuleModule<"noProcessExit", [(import("./rules/operability/no-process-exit").Options | undefined)?], unknown, TSESLint.RuleListener> & {
55
- name: string;
56
- };
57
- 'no-debug-code-in-production': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/no-debug-code-in-production").Options | undefined)?], unknown, TSESLint.RuleListener> & {
58
- name: string;
59
- };
60
- 'no-verbose-error-messages': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/no-verbose-error-messages").Options | undefined)?], unknown, TSESLint.RuleListener> & {
61
- name: string;
62
- };
63
- 'require-code-minification': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/require-code-minification").Options | undefined)?], unknown, TSESLint.RuleListener> & {
64
- name: string;
65
- };
66
- 'require-data-minimization': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/require-data-minimization").Options | undefined)?], unknown, TSESLint.RuleListener> & {
67
- name: string;
68
- };
69
- 'operability/no-console-log': TSESLint.RuleModule<"consoleLogFound" | "strategyRemove" | "strategyConvert" | "strategyComment" | "strategyWarn", [(import("./rules/operability/no-console-log").Options | undefined)?], unknown, TSESLint.RuleListener> & {
70
- name: string;
71
- };
72
- 'operability/no-process-exit': TSESLint.RuleModule<"noProcessExit", [(import("./rules/operability/no-process-exit").Options | undefined)?], unknown, TSESLint.RuleListener> & {
73
- name: string;
74
- };
75
- 'operability/no-debug-code-in-production': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/no-debug-code-in-production").Options | undefined)?], unknown, TSESLint.RuleListener> & {
76
- name: string;
77
- };
78
- 'operability/no-verbose-error-messages': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/no-verbose-error-messages").Options | undefined)?], unknown, TSESLint.RuleListener> & {
79
- name: string;
80
- };
81
- 'operability/require-code-minification': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/require-code-minification").Options | undefined)?], unknown, TSESLint.RuleListener> & {
82
- name: string;
83
- };
84
- 'operability/require-data-minimization': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/require-data-minimization").Options | undefined)?], unknown, TSESLint.RuleListener> & {
85
- name: string;
86
- };
87
- };
88
- };
89
- export declare const configs: {
90
- recommended: {
91
- plugins: {
92
- operability: {
93
- meta: {
94
- name: string;
95
- version: string;
96
- };
97
- rules: {
98
- 'no-console-log': TSESLint.RuleModule<"consoleLogFound" | "strategyRemove" | "strategyConvert" | "strategyComment" | "strategyWarn", [(import("./rules/operability/no-console-log").Options | undefined)?], unknown, TSESLint.RuleListener> & {
99
- name: string;
100
- };
101
- 'no-process-exit': TSESLint.RuleModule<"noProcessExit", [(import("./rules/operability/no-process-exit").Options | undefined)?], unknown, TSESLint.RuleListener> & {
102
- name: string;
103
- };
104
- 'no-debug-code-in-production': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/no-debug-code-in-production").Options | undefined)?], unknown, TSESLint.RuleListener> & {
105
- name: string;
106
- };
107
- 'no-verbose-error-messages': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/no-verbose-error-messages").Options | undefined)?], unknown, TSESLint.RuleListener> & {
108
- name: string;
109
- };
110
- 'require-code-minification': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/require-code-minification").Options | undefined)?], unknown, TSESLint.RuleListener> & {
111
- name: string;
112
- };
113
- 'require-data-minimization': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/require-data-minimization").Options | undefined)?], unknown, TSESLint.RuleListener> & {
114
- name: string;
115
- };
116
- 'operability/no-console-log': TSESLint.RuleModule<"consoleLogFound" | "strategyRemove" | "strategyConvert" | "strategyComment" | "strategyWarn", [(import("./rules/operability/no-console-log").Options | undefined)?], unknown, TSESLint.RuleListener> & {
117
- name: string;
118
- };
119
- 'operability/no-process-exit': TSESLint.RuleModule<"noProcessExit", [(import("./rules/operability/no-process-exit").Options | undefined)?], unknown, TSESLint.RuleListener> & {
120
- name: string;
121
- };
122
- 'operability/no-debug-code-in-production': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/no-debug-code-in-production").Options | undefined)?], unknown, TSESLint.RuleListener> & {
123
- name: string;
124
- };
125
- 'operability/no-verbose-error-messages': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/no-verbose-error-messages").Options | undefined)?], unknown, TSESLint.RuleListener> & {
126
- name: string;
127
- };
128
- 'operability/require-code-minification': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/require-code-minification").Options | undefined)?], unknown, TSESLint.RuleListener> & {
129
- name: string;
130
- };
131
- 'operability/require-data-minimization': TSESLint.RuleModule<"violationDetected", [(import("./rules/operability/require-data-minimization").Options | undefined)?], unknown, TSESLint.RuleListener> & {
132
- name: string;
133
- };
134
- };
135
- };
136
- };
137
- rules: {
138
- 'operability/no-console-log': "warn";
139
- 'operability/no-debug-code-in-production': "error";
140
- 'operability/no-verbose-error-messages': "warn";
141
- };
142
- };
12
+ meta: { name: string; version: string };
13
+ rules: Record<string, Rule.RuleModule>;
143
14
  };
144
- export default plugin;
15
+
16
+ declare const _default: typeof plugin;
17
+ export default _default;
package/src/index.js CHANGED
@@ -1,12 +1,6 @@
1
1
  "use strict";
2
- /**
3
- * Copyright (c) 2025 Ofri Peretz
4
- * Licensed under the MIT License. Use of this source code is governed by the
5
- * MIT license that can be found in the LICENSE file.
6
- */
7
2
  Object.defineProperty(exports, "__esModule", { value: true });
8
3
  exports.configs = exports.plugin = exports.rules = void 0;
9
- // Operability rules
10
4
  const no_console_log_1 = require("./rules/operability/no-console-log");
11
5
  const no_process_exit_1 = require("./rules/operability/no-process-exit");
12
6
  const no_debug_code_in_production_1 = require("./rules/operability/no-debug-code-in-production");
@@ -20,7 +14,6 @@ exports.rules = {
20
14
  'no-verbose-error-messages': no_verbose_error_messages_1.noVerboseErrorMessages,
21
15
  'require-code-minification': require_code_minification_1.requireCodeMinification,
22
16
  'require-data-minimization': require_data_minimization_1.requireDataMinimization,
23
- // Categorized names
24
17
  'operability/no-console-log': no_console_log_1.noConsoleLog,
25
18
  'operability/no-process-exit': no_process_exit_1.noProcessExit,
26
19
  'operability/no-debug-code-in-production': no_debug_code_in_production_1.noDebugCodeInProduction,
@@ -31,7 +24,7 @@ exports.rules = {
31
24
  exports.plugin = {
32
25
  meta: {
33
26
  name: 'eslint-plugin-operability',
34
- version: '3.0.11',
27
+ version: '3.0.13',
35
28
  },
36
29
  rules: exports.rules,
37
30
  };
@@ -48,4 +41,3 @@ exports.configs = {
48
41
  },
49
42
  };
50
43
  exports.default = exports.plugin;
51
- //# sourceMappingURL=index.js.map
@@ -4,4 +4,3 @@ exports.eslintPluginOperability = eslintPluginOperability;
4
4
  function eslintPluginOperability() {
5
5
  return 'eslint-plugin-operability';
6
6
  }
7
- //# sourceMappingURL=eslint-plugin-operability.js.map
package/src/oxlint.d.ts CHANGED
@@ -1,20 +1,17 @@
1
- /**
2
- * Copyright (c) 2025 Ofri Peretz
3
- * Licensed under the MIT License. Use of this source code is governed by the
4
- * MIT license that can be found in the LICENSE file.
5
- */
6
- /**
7
- * oxlint sub-export.
8
- *
9
- * Consumers wire oxlint to this entry via:
10
- * { "jsPlugins": ["eslint-plugin-operability/oxlint"] }
11
- *
12
- * oxlint's JS plugin loader does `require('eslint-plugin-operability/oxlint')` and reads
13
- * `.rules` off the result. The compiled output of `export = plugin` is
14
- * `module.exports = plugin`, which gives oxlint the plugin object directly
15
- * (`{ meta, rules }`) — no wrapper, no `.default` indirection.
16
- *
17
- * Generated by scripts/generate-oxlint-shims.mjs. Do not edit by hand.
18
- */
19
- import { plugin } from './index';
20
- export = plugin;
1
+ // Minimal declaration written by scripts/build-package.ts.
2
+ //
3
+ // tsc's generated entry declaration inlined every inferred rule-option type
4
+ // (up to 166 kB per plugin) for an API no consumer calls directly. This types
5
+ // what a flat config actually touches. Per-rule option types remain available
6
+ // from the "./types" subpath export where a plugin provides one.
7
+ import type { Linter, Rule } from 'eslint';
8
+
9
+ export declare const rules: Record<string, Rule.RuleModule>;
10
+ export declare const configs: Record<string, Linter.Config>;
11
+ export declare const plugin: {
12
+ meta: { name: string; version: string };
13
+ rules: Record<string, Rule.RuleModule>;
14
+ };
15
+
16
+ declare const _default: typeof plugin;
17
+ export default _default;
package/src/oxlint.js CHANGED
@@ -1,22 +1,3 @@
1
1
  "use strict";
2
- /**
3
- * Copyright (c) 2025 Ofri Peretz
4
- * Licensed under the MIT License. Use of this source code is governed by the
5
- * MIT license that can be found in the LICENSE file.
6
- */
7
- /**
8
- * oxlint sub-export.
9
- *
10
- * Consumers wire oxlint to this entry via:
11
- * { "jsPlugins": ["eslint-plugin-operability/oxlint"] }
12
- *
13
- * oxlint's JS plugin loader does `require('eslint-plugin-operability/oxlint')` and reads
14
- * `.rules` off the result. The compiled output of `export = plugin` is
15
- * `module.exports = plugin`, which gives oxlint the plugin object directly
16
- * (`{ meta, rules }`) — no wrapper, no `.default` indirection.
17
- *
18
- * Generated by scripts/generate-oxlint-shims.mjs. Do not edit by hand.
19
- */
20
2
  const index_1 = require("./index");
21
3
  module.exports = index_1.plugin;
22
- //# sourceMappingURL=oxlint.js.map
@@ -1,16 +1,9 @@
1
1
  "use strict";
2
- /**
3
- * Copyright (c) 2025 Ofri Peretz
4
- * Licensed under the MIT License. Use of this source code is governed by the
5
- * MIT license that can be found in the LICENSE file.
6
- */
7
2
  Object.defineProperty(exports, "__esModule", { value: true });
8
3
  exports.noConsoleLog = void 0;
9
4
  const eslint_devkit_1 = require("@interlace/eslint-devkit");
10
5
  const eslint_devkit_2 = require("@interlace/eslint-devkit");
11
6
  const eslint_devkit_3 = require("@interlace/eslint-devkit");
12
- // Default severity map: only flags console.log by default for minimal disruption
13
- // Can be extended via severityMap option to include other console methods
14
7
  const DEFAULT_SEVERITY_MAP = {
15
8
  log: 'debug',
16
9
  };
@@ -27,7 +20,6 @@ exports.noConsoleLog = (0, eslint_devkit_2.createRule)({
27
20
  fixable: 'code',
28
21
  hasSuggestions: false,
29
22
  messages: {
30
- // 🎯 Token optimization: 43% reduction (51→29 tokens) - compact format for logger context
31
23
  consoleLogFound: (0, eslint_devkit_1.formatLLMMessage)({
32
24
  icon: eslint_devkit_1.MessageIcons.WARNING,
33
25
  issueName: 'console.log in production',
@@ -135,7 +127,7 @@ exports.noConsoleLog = (0, eslint_devkit_2.createRule)({
135
127
  strategy: 'remove',
136
128
  ignorePaths: [],
137
129
  loggerName: 'logger',
138
- severityMap: { log: 'log' }, // Only flag console.log by default
130
+ severityMap: { log: 'log' },
139
131
  autoDetectLogger: true,
140
132
  sourcePatterns: ['console'],
141
133
  },
@@ -143,16 +135,10 @@ exports.noConsoleLog = (0, eslint_devkit_2.createRule)({
143
135
  create(context) {
144
136
  const options = context.options[0] || {};
145
137
  const { strategy = 'remove', ignorePaths = [], loggerName, maxOccurrences, severityMap = {}, autoDetectLogger = true, sourcePatterns = ['console'], } = options;
146
- /** Merge user's severityMap with defaults to determine method mappings */
147
138
  const effectiveSeverityMap = { ...DEFAULT_SEVERITY_MAP, ...severityMap };
148
139
  const filename = context.filename;
149
- // oxlint-disable-next-line no-shadow
150
140
  const sourceCode = context.sourceCode;
151
141
  const occurrences = [];
152
- /**
153
- * Auto-detect logger in file by scanning imports.
154
- * Uses strict pattern matching to avoid false positives (e.g., 'reactLogo').
155
- */
156
142
  let detectedLogger = null;
157
143
  if (autoDetectLogger) {
158
144
  const ast = sourceCode.ast;
@@ -170,7 +156,6 @@ exports.noConsoleLog = (0, eslint_devkit_2.createRule)({
170
156
  }
171
157
  }
172
158
  }
173
- // Look for require() calls
174
159
  if (statement.type === 'VariableDeclaration') {
175
160
  for (const declarator of statement.declarations) {
176
161
  if (declarator.init?.type === 'CallExpression' &&
@@ -189,37 +174,17 @@ exports.noConsoleLog = (0, eslint_devkit_2.createRule)({
189
174
  break;
190
175
  }
191
176
  }
192
- /**
193
- * Determine the effective logger to use.
194
- * Priority: explicit loggerName from config > auto-detected logger > default 'logger'
195
- */
196
177
  const effectiveLogger = loggerName || detectedLogger || 'logger';
197
- /**
198
- * Check if the current file should be ignored based on ignorePaths patterns.
199
- * Supports exact matches, directory prefixes, and glob-like patterns.
200
- */
201
178
  const shouldIgnoreFile = () => {
202
179
  if (ignorePaths.length === 0)
203
180
  return false;
204
181
  const normalizedPath = (0, eslint_devkit_3.normalizePath)(filename);
205
182
  return ignorePaths.some((pattern) => {
206
183
  const normalizedPattern = pattern.replace(/\\/g, '/');
207
- /** Exact match */
208
184
  if (normalizedPath === normalizedPattern)
209
185
  return true;
210
- /** Directory match */
211
186
  if (normalizedPath.startsWith(normalizedPattern + '/'))
212
187
  return true;
213
- /**
214
- * Glob-like pattern support. Escape ALL regex metacharacters (the
215
- * previous logic only escaped `.`, so `(`, `)`, `+`, `[`, `]`, `\`
216
- * etc. were interpreted as regex syntax). CodeQL specifically flagged
217
- * the unescaped backslash as `js/incomplete-sanitization`. The escape
218
- * set MUST include `*` and `?` so the subsequent replaces can find
219
- * the escaped tokens and translate them to glob equivalents — without
220
- * that, raw `*` / `?` reach `new RegExp()` and the pattern matching
221
- * is silently broken.
222
- */
223
188
  const escaped = normalizedPattern.replace(/[.+^${}()|[\]\\*?]/g, '\\$&');
224
189
  const regexPattern = escaped
225
190
  .replace(/\\\*/g, '.*')
@@ -231,10 +196,6 @@ exports.noConsoleLog = (0, eslint_devkit_2.createRule)({
231
196
  return {};
232
197
  }
233
198
  return {
234
- /**
235
- * CallExpression visitor that checks for member expressions matching source patterns.
236
- * Handles calls like console.log(), winston.info(), oldLogger.debug(), etc.
237
- */
238
199
  CallExpression(node) {
239
200
  if (node.callee.type !== 'MemberExpression' ||
240
201
  node.callee.object.type !== 'Identifier' ||
@@ -243,42 +204,21 @@ exports.noConsoleLog = (0, eslint_devkit_2.createRule)({
243
204
  }
244
205
  const sourceObject = node.callee.object.name;
245
206
  const methodName = node.callee.property.name;
246
- /** Check if this source object is in our patterns to match */
247
207
  if (!sourcePatterns.includes(sourceObject)) {
248
208
  return;
249
209
  }
250
- /** Only handle methods that are in the effectiveSeverityMap */
251
210
  if (!effectiveSeverityMap[methodName]) {
252
211
  return;
253
212
  }
254
213
  const line = node.loc?.start.line ?? 0;
255
214
  occurrences.push(line);
256
- // ✅ Calculate skip condition (don't return early)
257
- // 'all' means report all instances
258
- // undefined means no limit
259
- // number > 0 means limit to that count
260
215
  const shouldSkipReport = maxOccurrences !== undefined &&
261
216
  maxOccurrences !== 'all' &&
262
217
  typeof maxOccurrences === 'number' &&
263
218
  maxOccurrences > 0 &&
264
219
  occurrences.length > maxOccurrences;
265
220
  const relativePath = (0, eslint_devkit_3.getRelativePath)(process.cwd(), filename);
266
- /**
267
- * Determine the target logger method to use based on severityMap.
268
- * The guard above already returned unless `effectiveSeverityMap[methodName]`
269
- * is truthy, so no fallback is needed here.
270
- *
271
- * @example
272
- * Default: console.log → logger.log, console.debug → logger.debug
273
- *
274
- * @example
275
- * With severityMap: { log: 'info' } → console.log → logger.info, console.debug → logger.debug
276
- */
277
221
  const targetLoggerMethod = effectiveSeverityMap[methodName];
278
- /**
279
- * Generate fix based on the configured strategy.
280
- * Handles remove, convert, comment, and warn strategies.
281
- */
282
222
  const fix = (fixer) => {
283
223
  const statement = findParentStatement(node);
284
224
  if (!statement)
@@ -298,12 +238,10 @@ exports.noConsoleLog = (0, eslint_devkit_2.createRule)({
298
238
  return null;
299
239
  }
300
240
  };
301
- /** Build conversion info for the error message */
302
241
  let conversionInfo = '';
303
242
  if (strategy === 'convert') {
304
243
  conversionInfo = ` → ${effectiveLogger}.${targetLoggerMethod}()`;
305
244
  }
306
- // ✅ Only report if not exceeding limit
307
245
  if (!shouldSkipReport) {
308
246
  context.report({
309
247
  node,
@@ -324,9 +262,6 @@ exports.noConsoleLog = (0, eslint_devkit_2.createRule)({
324
262
  };
325
263
  },
326
264
  });
327
- /**
328
- * Find the parent statement node for proper removal
329
- */
330
265
  function findParentStatement(node) {
331
266
  let current = node;
332
267
  while (current) {
@@ -339,4 +274,3 @@ function findParentStatement(node) {
339
274
  }
340
275
  return null;
341
276
  }
342
- //# sourceMappingURL=no-console-log.js.map
@@ -1,16 +1,6 @@
1
1
  "use strict";
2
- /**
3
- * Copyright (c) 2025 Ofri Peretz
4
- * Licensed under the MIT License. Use of this source code is governed by the
5
- * MIT license that can be found in the LICENSE file.
6
- */
7
2
  Object.defineProperty(exports, "__esModule", { value: true });
8
3
  exports.noDebugCodeInProduction = void 0;
9
- /**
10
- * @fileoverview Detect debug code in production
11
- * @see https://owasp.org/www-project-mobile-top-10/
12
- * @see https://cwe.mitre.org/data/definitions/489.html
13
- */
14
4
  const eslint_devkit_1 = require("@interlace/eslint-devkit");
15
5
  exports.noDebugCodeInProduction = (0, eslint_devkit_1.createRule)({
16
6
  name: 'no-debug-code-in-production',
@@ -55,4 +45,3 @@ exports.noDebugCodeInProduction = (0, eslint_devkit_1.createRule)({
55
45
  };
56
46
  },
57
47
  });
58
- //# sourceMappingURL=no-debug-code-in-production.js.map
@@ -1,9 +1,4 @@
1
1
  "use strict";
2
- /**
3
- * Copyright (c) 2025 Ofri Peretz
4
- * Licensed under the MIT License. Use of this source code is governed by the
5
- * MIT license that can be found in the LICENSE file.
6
- */
7
2
  Object.defineProperty(exports, "__esModule", { value: true });
8
3
  exports.noProcessExit = void 0;
9
4
  const eslint_devkit_1 = require("@interlace/eslint-devkit");
@@ -43,14 +38,10 @@ exports.noProcessExit = (0, eslint_devkit_1.createRule)({
43
38
  },
44
39
  defaultOptions: [{ allow: [] }],
45
40
  create(context) {
46
- // oxlint-disable-next-line consistent-function-scoping
47
41
  function isInAllowedContext() {
48
- // For simplicity, we'll skip the allow option for now
49
42
  return false;
50
43
  }
51
44
  function isProcessExitCall(node) {
52
- // Check if this is a call to process.exit
53
- // oxlint-disable-next-line consistent-function-scoping
54
45
  function isProcessExitMember(callee) {
55
46
  if (callee.type === 'MemberExpression' &&
56
47
  callee.object.type === 'Identifier' &&
@@ -79,4 +70,3 @@ exports.noProcessExit = (0, eslint_devkit_1.createRule)({
79
70
  };
80
71
  },
81
72
  });
82
- //# sourceMappingURL=no-process-exit.js.map
@@ -1,16 +1,6 @@
1
1
  "use strict";
2
- /**
3
- * Copyright (c) 2025 Ofri Peretz
4
- * Licensed under the MIT License. Use of this source code is governed by the
5
- * MIT license that can be found in the LICENSE file.
6
- */
7
2
  Object.defineProperty(exports, "__esModule", { value: true });
8
3
  exports.noVerboseErrorMessages = void 0;
9
- /**
10
- * @fileoverview Prevent exposing stack traces to users
11
- * @see https://owasp.org/www-project-mobile-top-10/
12
- * @see https://cwe.mitre.org/data/definitions/209.html
13
- */
14
4
  const eslint_devkit_1 = require("@interlace/eslint-devkit");
15
5
  exports.noVerboseErrorMessages = (0, eslint_devkit_1.createRule)({
16
6
  name: 'no-verbose-error-messages',
@@ -45,19 +35,16 @@ exports.noVerboseErrorMessages = (0, eslint_devkit_1.createRule)({
45
35
  }
46
36
  return {
47
37
  CallExpression(node) {
48
- // Check res.send/res.json with error.stack
49
38
  if (node.type === eslint_devkit_1.AST_NODE_TYPES.CallExpression &&
50
39
  node.callee.type === eslint_devkit_1.AST_NODE_TYPES.MemberExpression &&
51
40
  node.callee.property.type === eslint_devkit_1.AST_NODE_TYPES.Identifier &&
52
41
  ['send', 'json'].includes(node.callee.property.name)) {
53
42
  const arg = node.arguments[0];
54
- // Check for error.stack or err.stack
55
43
  if (arg?.type === eslint_devkit_1.AST_NODE_TYPES.MemberExpression &&
56
44
  arg.property.type === eslint_devkit_1.AST_NODE_TYPES.Identifier &&
57
45
  arg.property.name === 'stack') {
58
46
  report(node);
59
47
  }
60
- // Check for { stack: error.stack } in object
61
48
  if (arg?.type === eslint_devkit_1.AST_NODE_TYPES.ObjectExpression) {
62
49
  const stackProp = arg.properties.find((p) => p.type === eslint_devkit_1.AST_NODE_TYPES.Property &&
63
50
  p.key.type === eslint_devkit_1.AST_NODE_TYPES.Identifier &&
@@ -74,4 +61,3 @@ exports.noVerboseErrorMessages = (0, eslint_devkit_1.createRule)({
74
61
  };
75
62
  },
76
63
  });
77
- //# sourceMappingURL=no-verbose-error-messages.js.map
@@ -1,16 +1,6 @@
1
1
  "use strict";
2
- /**
3
- * Copyright (c) 2025 Ofri Peretz
4
- * Licensed under the MIT License. Use of this source code is governed by the
5
- * MIT license that can be found in the LICENSE file.
6
- */
7
2
  Object.defineProperty(exports, "__esModule", { value: true });
8
3
  exports.requireCodeMinification = void 0;
9
- /**
10
- * @fileoverview Require minification configuration
11
- * @see https://owasp.org/www-project-mobile-top-10/
12
- * @see https://cwe.mitre.org/data/definitions/656.html
13
- */
14
4
  const eslint_devkit_1 = require("@interlace/eslint-devkit");
15
5
  exports.requireCodeMinification = (0, eslint_devkit_1.createRule)({
16
6
  name: 'require-code-minification',
@@ -49,4 +39,3 @@ exports.requireCodeMinification = (0, eslint_devkit_1.createRule)({
49
39
  };
50
40
  },
51
41
  });
52
- //# sourceMappingURL=require-code-minification.js.map
@@ -1,16 +1,6 @@
1
1
  "use strict";
2
- /**
3
- * Copyright (c) 2025 Ofri Peretz
4
- * Licensed under the MIT License. Use of this source code is governed by the
5
- * MIT license that can be found in the LICENSE file.
6
- */
7
2
  Object.defineProperty(exports, "__esModule", { value: true });
8
3
  exports.requireDataMinimization = void 0;
9
- /**
10
- * @fileoverview Identify excessive data collection
11
- * @see https://owasp.org/www-project-mobile-top-10/
12
- * @see https://cwe.mitre.org/data/definitions/213.html
13
- */
14
4
  const eslint_devkit_1 = require("@interlace/eslint-devkit");
15
5
  exports.requireDataMinimization = (0, eslint_devkit_1.createRule)({
16
6
  name: 'require-data-minimization',
@@ -42,9 +32,7 @@ exports.requireDataMinimization = (0, eslint_devkit_1.createRule)({
42
32
  }
43
33
  return {
44
34
  ObjectExpression(node) {
45
- // Flag objects with >10 properties being collected
46
35
  if (node.properties.length > 10) {
47
- // Check if this looks like user data collection
48
36
  const hasUserData = node.properties.some((p) => p.type === eslint_devkit_1.AST_NODE_TYPES.Property &&
49
37
  p.key.type === eslint_devkit_1.AST_NODE_TYPES.Identifier &&
50
38
  ['email', 'name', 'phone', 'address'].includes(p.key.name));
@@ -56,4 +44,3 @@ exports.requireDataMinimization = (0, eslint_devkit_1.createRule)({
56
44
  };
57
45
  },
58
46
  });
59
- //# sourceMappingURL=require-data-minimization.js.map
package/CHANGELOG.md DELETED
@@ -1,186 +0,0 @@
1
- ## [3.0.5] - 2026-02-08
2
-
3
- ## 3.0.11
4
-
5
- ### Patch Changes
6
-
7
- - [#294](https://github.com/ofri-peretz/eslint/pull/294) [`659f6dc`](https://github.com/ofri-peretz/eslint/commit/659f6dc0181b03b675f72b5949fcf123dd066358) Thanks [@ofri-peretz](https://github.com/ofri-peretz)! - Rewrite `description` and `keywords` on every published package for npm search discovery. npm ranks on name, description, and keywords, and the registry only picks up these fields at publish — so this is metadata-only and takes effect for each package on its next release.
8
-
9
- **Descriptions now lead with the search phrase.** Every one starts `ESLint plugin for <the thing you'd search>` instead of a brand-first or category-first framing, and names the concrete vulnerabilities the plugin actually detects. Three were corrected while doing so:
10
-
11
- - `eslint-plugin-import-next` claimed "100x faster no-cycle detection". No 100x measurement exists: `CLAIMS.md` records **3.1x end-to-end** (8x in pure rule execution) on a 5,483-file React codebase, and the highest number in any benchmark result is 54.9x on the synthetic corpus. The description now states the real-codebase figure.
12
- - `eslint-plugin-secure-coding` claimed SQL injection, XSS and CSRF coverage — none of which are its rules. It now names what it does detect: LDAP, XPath, XXE, GraphQL and template injection, unsafe deserialization, ReDoS, missing authentication, and PII in logs.
13
- - `eslint-plugin-secure-coding` ("89 rules") and `eslint-plugin-react-a11y` ("37 rules") hard-coded rule counts that had drifted from reality. Counts are generated into `interlace-numbers.json`; hand-typed copies are removed rather than corrected.
14
-
15
- **Keywords now match the vocabulary of the plugins that rank.** `eslint-plugin-security`, `eslint-plugin-jsx-a11y`, `eslint-plugin-n` and `eslint-plugin-import` all carry the `eslint` / `eslintplugin` / `eslint-plugin` trio — six of our packages were missing `eslintplugin`, and every one now carries all three plus `static-analysis`, `linting` and `code-quality`. Security plugins add `sast`, `appsec` and `vulnerability`; `node-security` and `secure-coding` also carry `nodesecurity`, the exact keyword `eslint-plugin-security` ranks on. Each plugin gained the CWE identifiers and attack names for what it detects (`cwe-78` command injection, `cwe-22` path traversal, `cwe-89` SQL injection, `cwe-79` XSS, `cwe-347` JWT algorithm confusion, `cwe-352` CSRF, `cwe-943` NoSQL injection), and `node-security` gained the crypto vocabulary it had been missing entirely despite absorbing the crypto rule set (`crypto`, `cryptography`, `weak-hash`, `md5`, `sha1`, `timing-attack`).
16
-
17
- No rule behavior, exports, or configuration changes.
18
-
19
- - Updated dependencies [[`e1cdf83`](https://github.com/ofri-peretz/eslint/commit/e1cdf83e3db761907f0ab06f7fc6c1f1da7513a5), [`659f6dc`](https://github.com/ofri-peretz/eslint/commit/659f6dc0181b03b675f72b5949fcf123dd066358)]:
20
- - @interlace/eslint-devkit@1.4.3
21
-
22
- ## 3.0.10
23
-
24
- ### Patch Changes
25
-
26
- - [#269](https://github.com/ofri-peretz/eslint/pull/269) [`7028fe2`](https://github.com/ofri-peretz/eslint/commit/7028fe2668a42266d831014184dcef70e73101ad) Thanks [@ofri-peretz](https://github.com/ofri-peretz)! - docs: dual-logo README header (Interlace mark + ESLint mark side by side) and closing Interlace footer — refreshes the README rendered on npmjs.com. No runtime changes.
27
-
28
- - Updated dependencies [[`7028fe2`](https://github.com/ofri-peretz/eslint/commit/7028fe2668a42266d831014184dcef70e73101ad)]:
29
- - @interlace/eslint-devkit@1.4.2
30
-
31
- ## 3.0.9
32
-
33
- ### Patch Changes
34
-
35
- - [#252](https://github.com/ofri-peretz/eslint/pull/252) [`d67e395`](https://github.com/ofri-peretz/eslint/commit/d67e3953c2748ad36e6aebe0f24b1d04e518b4d0) Thanks [@ofri-peretz](https://github.com/ofri-peretz)! - Fix Codecov badge showing "unknown" — switch from flag to component URL format
36
-
37
- ## 3.0.8
38
-
39
- ### Patch Changes
40
-
41
- - [#225](https://github.com/ofri-peretz/eslint/pull/225) [`34ff5a8`](https://github.com/ofri-peretz/eslint/commit/34ff5a8e6f5126c5d1c0a524759e0af2b5476b46) Thanks [@ofri-peretz](https://github.com/ofri-peretz)! - CI-only: pin all coverage thresholds at 100% (integration target, merges last).
42
-
43
- ## 3.0.7
44
-
45
- ### Patch Changes
46
-
47
- - [#200](https://github.com/ofri-peretz/eslint/pull/200) [`02e0baf`](https://github.com/ofri-peretz/eslint/commit/02e0baf7a4e8ba83e8b2ec2b82169f733e4f4d87) Thanks [@ofri-peretz](https://github.com/ofri-peretz)! - fix: republish `recommended` preset with the correct plugin namespace
48
-
49
- The published builds of `eslint-plugin-maintainability` and
50
- `eslint-plugin-operability` shipped a `recommended` config whose plugin KEY
51
- (`@interlace/maintainability`) did not match its rule PREFIX
52
- (`@interlace/maintainability/maintainability/…` — doubled). ESLint cannot
53
- resolve that, so spreading `...configs.recommended` throws
54
- "could not find plugin" the moment a consumer lints a file — under both
55
- ESLint 9 and 10.
56
-
57
- The source was corrected in the 2026-05-16 namespace cleanup (alongside
58
- `react-features`, which has since been republished via other changesets), but
59
- these two plugins were never bumped — so npm still serves the broken builds and
60
- they are the only two doubled-namespace plugins still unfixed downstream. This
61
- republishes them from the corrected source.
62
-
63
- Regression lock: `packages/eslint-config-interlace/src/ecosystem-integrity.test.ts`
64
- loads every plugin's every config preset into a real ESLint instance and fails
65
- if any rule→plugin reference cannot be resolved. Run it against the built
66
- `dist/` in the release pipeline (pre-publish) to also catch a stale-artifact
67
- publish — the failure mode that let these two ship broken.
68
-
69
- ## 3.0.6
70
-
71
- ### Patch Changes
72
-
73
- - [#197](https://github.com/ofri-peretz/eslint/pull/197) [`ecb8491`](https://github.com/ofri-peretz/eslint/commit/ecb849121833bf63b00256fa837f329bb721fbac) Thanks [@ofri-peretz](https://github.com/ofri-peretz)! - fix: republish `recommended` with correctly-namespaced, unscoped rule ids
74
-
75
- `eslint-plugin-maintainability@3.0.3` and `eslint-plugin-operability@3.0.5`
76
- shipped a `recommended` preset whose rule ids carried a doubled, scoped plugin
77
- segment (`@interlace/maintainability/maintainability/cognitive-complexity`)
78
- that no registered plugin key matched. Enabling the preset alongside any other
79
- config made ESLint throw at load:
80
-
81
- ```text
82
- Could not find plugin "@interlace/maintainability/maintainability".
83
- ```
84
-
85
- (and the equivalent `@interlace/operability/operability` for operability.)
86
-
87
- The source was already corrected to the bare, unscoped form
88
- (`maintainability/cognitive-complexity` under a `maintainability` plugin key)
89
- but was never republished, so npm still served the broken build. This release
90
- ships the corrected build. `plugin.meta.name` is also fixed to the unscoped
91
- `eslint-plugin-maintainability` (was `@interlace/eslint-plugin-maintainability`,
92
- which drifted from the package name and every other plugin).
93
-
94
- Each plugin is configured on its own — there is no unified config. No rule
95
- behaviour changes.
96
-
97
- New regression locks in each plugin's `index.test.ts` reproduce ESLint's rule-id
98
- resolution, pin the plugin name and key as unscoped, and load each `recommended`
99
- preset in a real ESLint instance — failing closed if a scoped or doubly
100
- namespaced config could ship again.
101
-
102
- ### Bug Fixes
103
-
104
- - align codecov component IDs with full package names ([2831b968](https://github.com/ofri-peretz/eslint/commit/2831b968))
105
-
106
- ### Documentation
107
-
108
- - fix changelog header format across all packages ([c3a15082](https://github.com/ofri-peretz/eslint/commit/c3a15082))
109
-
110
- ### ❤️ Thank You
111
-
112
- - Ofri Peretz
113
-
114
- ## [3.0.4] - 2026-02-06
115
-
116
- ### Bug Fixes
117
-
118
- - align codecov component names and update docs components ([0a59a86c](https://github.com/ofri-peretz/eslint/commit/0a59a86c))
119
-
120
- ### ❤️ Thank You
121
-
122
- - Ofri Peretz
123
-
124
- ## [3.0.3] - 2026-02-02
125
-
126
- This was a version bump only for eslint-plugin-operability to align it with other projects, there were no code changes.
127
-
128
- # Changelog
129
-
130
- All notable changes to `eslint-plugin-operability` will be documented in this file.
131
-
132
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
133
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
134
-
135
- ### Documentation
136
-
137
- - 📘 Launched new documentation site: [eslint.interlace.tools](https://eslint.interlace.tools/)
138
- - 📝 Achieved 100% documentation parity (both .md and .mdx files)
139
-
140
- ## [3.0.2] - 2026-02-02
141
-
142
- This was a version bump only for eslint-plugin-operability to align it with other projects, there were no code changes.
143
-
144
- ## [3.0.1] - 2026-02-02
145
-
146
- This was a version bump only for eslint-plugin-operability to align it with other projects, there were no code changes.
147
-
148
- ## [3.0.0] - 2026-02-02
149
-
150
- This was a version bump only for eslint-plugin-operability to align it with other projects, there were no code changes.
151
-
152
- ## [1.0.0] - 2026-01-26
153
-
154
- ### Added
155
-
156
- - Initial stable release with 6 production-readiness rules
157
- - LLM-optimized error messages for AI-assisted development
158
- - 100% test coverage across all rules
159
- - ESLint 9 flat config support
160
- - TypeScript type definitions for all rule options
161
-
162
- ### Rules
163
-
164
- | Rule | Description | 💼 | ⚠️ |
165
- | :---------------------------- | :----------------------------------------------- | :-: | :-: |
166
- | `no-console-log` | Disallow `console.log` in production code | 💼 | ⚠️ |
167
- | `no-process-exit` | Disallow `process.exit()` in library code | | |
168
- | `no-debug-code-in-production` | Detect `debugger` statements and debug keywords | 💼 | |
169
- | `no-verbose-error-messages` | Prevent overly detailed error messages (CWE-209) | 💼 | ⚠️ |
170
- | `require-code-minification` | Detect patterns that prevent minification | | |
171
- | `require-data-minimization` | Detect excessive data exposure in responses | | |
172
-
173
- ### Presets
174
-
175
- - `recommended` - Balanced operability checks for production code
176
-
177
- ### Security
178
-
179
- - `no-verbose-error-messages` prevents information exposure (CWE-209)
180
- - `require-data-minimization` enforces data protection principles
181
-
182
- ### Jan 2026 Remediation
183
-
184
- - Converted skeleton documentation to high-fidelity guides
185
- - Added comprehensive examples for all rules
186
- - Documented known limitations in `docs/KNOWN-LIMITATIONS.md`
package/src/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,oBAAoB;AACpB,uEAAkE;AAClE,yEAAoE;AACpE,iGAA0F;AAC1F,6FAAuF;AACvF,6FAAwF;AACxF,6FAAwF;AAE3E,QAAA,KAAK,GAAG;IACnB,gBAAgB,EAAE,6BAAY;IAC9B,iBAAiB,EAAE,+BAAa;IAChC,6BAA6B,EAAE,qDAAuB;IACtD,2BAA2B,EAAE,kDAAsB;IACnD,2BAA2B,EAAE,mDAAuB;IACpD,2BAA2B,EAAE,mDAAuB;IAEpD,oBAAoB;IACpB,4BAA4B,EAAE,6BAAY;IAC1C,6BAA6B,EAAE,+BAAa;IAC5C,yCAAyC,EAAE,qDAAuB;IAClE,uCAAuC,EAAE,kDAAsB;IAC/D,uCAAuC,EAAE,mDAAuB;IAChE,uCAAuC,EAAE,mDAAuB;CACS,CAAC;AAE/D,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE;QACJ,IAAI,EAAE,2BAA2B;QACjC,OAAO,EAAE,QAAQ;KAClB;IACD,KAAK,EAAL,aAAK;CAC+B,CAAC;AAE1B,QAAA,OAAO,GAAG;IACrB,WAAW,EAAE;QACX,OAAO,EAAE;YACP,aAAa,EAAE,cAAM;SACtB;QACD,KAAK,EAAE;YACL,4BAA4B,EAAE,MAAM;YACpC,yCAAyC,EAAE,OAAO;YAClD,uCAAuC,EAAE,MAAM;SAChD;KACmC;CACc,CAAC;AAEvD,kBAAe,cAAM,CAAC"}
@@ -1 +0,0 @@
1
- export declare function eslintPluginOperability(): string;
@@ -1 +0,0 @@
1
- {"version":3,"file":"eslint-plugin-operability.js","sourceRoot":"","sources":["../../../src/lib/eslint-plugin-operability.ts"],"names":[],"mappings":";;AAAA,0DAEC;AAFD,SAAgB,uBAAuB;IACrC,OAAO,2BAA2B,CAAC;AACrC,CAAC"}
package/src/oxlint.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"oxlint.js","sourceRoot":"","sources":["../../src/oxlint.ts"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH;;;;;;;;;;;;GAYG;AAEH,mCAAiC;AAEjC,iBAAS,cAAM,CAAC"}
@@ -1,53 +0,0 @@
1
- /**
2
- * Copyright (c) 2025 Ofri Peretz
3
- * Licensed under the MIT License. Use of this source code is governed by the
4
- * MIT license that can be found in the LICENSE file.
5
- */
6
- /**
7
- * Enhanced ESLint rule: no-console-log
8
- * Disallows console.log with configurable strategies and LLM-optimized output
9
- */
10
- import type { TSESLint } from '@interlace/eslint-devkit';
11
- /**
12
- * Strategy for handling console.log
13
- * @enum {string}
14
- * @description The strategy to use when handling console.log
15
- * @example
16
- * - 'remove': Remove the console.log statement
17
- * - 'convert': Convert the console.log statement to a logger method
18
- */
19
- type Strategy = 'remove' | 'convert' | 'comment' | 'warn';
20
- /**
21
- * Message IDs for the rule
22
- * @enum {string}
23
- * @description The message IDs for the rule
24
- * @example
25
- * - 'consoleLogFound': The message ID for the console.log statement found
26
- * - 'strategyRemove': The message ID for the strategy to remove the console.log statement
27
- * - 'strategyConvert': The message ID for the strategy to convert the console.log statement to a logger method
28
- */
29
- type MessageIds = 'consoleLogFound' | 'strategyRemove' | 'strategyConvert' | 'strategyComment' | 'strategyWarn';
30
- interface SeverityMapping {
31
- [consoleMethod: string]: string;
32
- }
33
- export interface Options {
34
- /** How to handle console.log: 'remove', 'convert', 'comment', or 'warn' */
35
- strategy?: Strategy;
36
- /** File path patterns to ignore */
37
- ignorePaths?: string[];
38
- /** Name of the logger to use (e.g., 'logger', 'winston'). Default: 'logger' */
39
- loggerName?: string;
40
- /** Maximum occurrences to report: number (e.g., 5), 'all' (report all instances), or undefined (no limit). Default: undefined */
41
- maxOccurrences?: number | 'all';
42
- /** Map console methods to logger methods */
43
- severityMap?: SeverityMapping;
44
- /** Auto-detect logger import in file. Default: true */
45
- autoDetectLogger?: boolean;
46
- /** Object names to match (e.g., ['console', 'winston', 'oldLogger']). Default: ['console'] */
47
- sourcePatterns?: string[];
48
- }
49
- type RuleOptions = [Options?];
50
- export declare const noConsoleLog: TSESLint.RuleModule<MessageIds, RuleOptions, unknown, TSESLint.RuleListener> & {
51
- name: string;
52
- };
53
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"no-console-log.js","sourceRoot":"","sources":["../../../../src/rules/operability/no-console-log.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Copyright (c) 2025 Ofri Peretz
3
- * Licensed under the MIT License. Use of this source code is governed by the
4
- * MIT license that can be found in the LICENSE file.
5
- */
6
- export interface Options {
7
- }
8
- type RuleOptions = [Options?];
9
- export declare const noDebugCodeInProduction: import("@typescript-eslint/utils/ts-eslint").RuleModule<"violationDetected", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
10
- name: string;
11
- };
12
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"no-debug-code-in-production.js","sourceRoot":"","sources":["../../../../src/rules/operability/no-debug-code-in-production.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AAEH,4DAKkC;AAUrB,QAAA,uBAAuB,GAAG,IAAA,0BAAU,EAA0B;IACzE,IAAI,EAAE,6BAA6B;IACnC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,GAAG,EAAE,8HAA8H;YACnI,WAAW,EAAE,iCAAiC;YAC9C,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,GAAG;SACV;QACD,QAAQ,EAAE;YACR,iBAAiB,EAAE,IAAA,gCAAgB,EAAC;gBAClC,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,oBAAoB;gBAC/B,GAAG,EAAE,SAAS;gBACd,WAAW,EACT,oEAAoE;gBACtE,QAAQ,EAAE,MAAM;gBAChB,GAAG,EAAE,mCAAmC;gBACxC,iBAAiB,EAAE,iDAAiD;aACrE,CAAC;SACH;QACD,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,UAAU,CAAC,IAAyB;gBAClC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YACD,cAAc,CAAC,IAA6B;gBAC1C,IACE,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,8BAAc,CAAC,gBAAgB;oBACpD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,8BAAc,CAAC,UAAU;oBACrD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;oBACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,8BAAc,CAAC,UAAU;oBACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,EACnC,CAAC;oBACD,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Copyright (c) 2025 Ofri Peretz
3
- * Licensed under the MIT License. Use of this source code is governed by the
4
- * MIT license that can be found in the LICENSE file.
5
- */
6
- /**
7
- * ESLint Rule: no-process-exit
8
- * Prevent usage of process.exit()
9
- */
10
- import type { TSESLint } from '@interlace/eslint-devkit';
11
- export interface Options {
12
- /** Allow process.exit in specific contexts */
13
- allow?: string[];
14
- }
15
- type RuleOptions = [Options?];
16
- export declare const noProcessExit: TSESLint.RuleModule<"noProcessExit", RuleOptions, unknown, TSESLint.RuleListener> & {
17
- name: string;
18
- };
19
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"no-process-exit.js","sourceRoot":"","sources":["../../../../src/rules/operability/no-process-exit.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAOH,4DAAsD;AACtD,4DAA0E;AAW7D,QAAA,aAAa,GAAG,IAAA,0BAAU,EAA0B;IAC/D,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,GAAG,EAAE,kHAAkH;YACvH,WAAW,EACT,8EAA8E;SACjF;QACD,cAAc,EAAE,KAAK;QACrB,QAAQ,EAAE;YACR,aAAa,EAAE,IAAA,gCAAgB,EAAC;gBAC9B,IAAI,EAAE,4BAAY,CAAC,OAAO;gBAC1B,SAAS,EAAE,cAAc;gBACzB,WAAW,EAAE,4BAA4B;gBACzC,QAAQ,EAAE,MAAM;gBAChB,GAAG,EAAE,6CAA6C;gBAClD,iBAAiB,EACf,+FAA+F;aAClG,CAAC;SACH;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE;wBACL,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACzB,OAAO,EAAE,EAAE;qBACZ;iBACF;gBACD,oBAAoB,EAAE,KAAK;aAC5B;SACF;KACF;IACD,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAE/B,MAAM,CAAC,OAAsD;QAC3D,uDAAuD;QACvD,SAAS,kBAAkB;YACzB,sDAAsD;YACtD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,SAAS,iBAAiB,CAAC,IAA6B;YACtD,0CAA0C;YAC1C,uDAAuD;YACvD,SAAS,mBAAmB,CAAC,MAA2B;gBACtD,IACE,MAAM,CAAC,IAAI,KAAK,kBAAkB;oBAClC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;oBACnC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;oBAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;oBACrC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAC/B,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO;YACL,cAAc,CAAC,IAA6B;gBAC1C,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;oBACrD,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,SAAS,EAAE,eAAe;wBAC1B,IAAI,EAAE;4BACJ,OAAO,EAAE,gBAAgB;4BACzB,GAAG,EAAE,uBAAuB;yBAC7B;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Copyright (c) 2025 Ofri Peretz
3
- * Licensed under the MIT License. Use of this source code is governed by the
4
- * MIT license that can be found in the LICENSE file.
5
- */
6
- export interface Options {
7
- }
8
- type RuleOptions = [Options?];
9
- export declare const noVerboseErrorMessages: import("@typescript-eslint/utils/ts-eslint").RuleModule<"violationDetected", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
10
- name: string;
11
- };
12
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"no-verbose-error-messages.js","sourceRoot":"","sources":["../../../../src/rules/operability/no-verbose-error-messages.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AAEH,4DAKkC;AAUrB,QAAA,sBAAsB,GAAG,IAAA,0BAAU,EAA0B;IACxE,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,GAAG,EAAE,4HAA4H;YACjI,WAAW,EAAE,wCAAwC;YACrD,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,CAAC;SACR;QACD,QAAQ,EAAE;YACR,iBAAiB,EAAE,IAAA,gCAAgB,EAAC;gBAClC,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,oBAAoB;gBAC/B,GAAG,EAAE,SAAS;gBACd,WAAW,EACT,2EAA2E;gBAC7E,QAAQ,EAAE,QAAQ;gBAClB,GAAG,EAAE,mCAAmC;gBACxC,iBAAiB,EAAE,iDAAiD;aACrE,CAAC;SACH;QACD,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,SAAS,MAAM,CAAC,IAAmB;YACjC,OAAO,CAAC,MAAM,CAAC;gBACb,IAAI;gBACJ,SAAS,EAAE,mBAAmB;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,cAAc,CAAC,IAA6B;gBAC1C,2CAA2C;gBAC3C,IACE,IAAI,CAAC,IAAI,KAAK,8BAAc,CAAC,cAAc;oBAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,8BAAc,CAAC,gBAAgB;oBACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,8BAAc,CAAC,UAAU;oBACvD,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EACpD,CAAC;oBACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBAE9B,qCAAqC;oBACrC,IACE,GAAG,EAAE,IAAI,KAAK,8BAAc,CAAC,gBAAgB;wBAC7C,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,8BAAc,CAAC,UAAU;wBAC/C,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAC7B,CAAC;wBACD,MAAM,CAAC,IAAI,CAAC,CAAC;oBACf,CAAC;oBAED,6CAA6C;oBAC7C,IAAI,GAAG,EAAE,IAAI,KAAK,8BAAc,CAAC,gBAAgB,EAAE,CAAC;wBAClD,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CACnC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,8BAAc,CAAC,QAAQ;4BAClC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,8BAAc,CAAC,UAAU;4BACxC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO;gCACrB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,8BAAc,CAAC,gBAAgB;oCAC/C,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,8BAAc,CAAC,UAAU;oCACnD,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAC1C,CAAC;wBACF,IAAI,SAAS,EAAE,CAAC;4BACd,MAAM,CAAC,IAAI,CAAC,CAAC;wBACf,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Copyright (c) 2025 Ofri Peretz
3
- * Licensed under the MIT License. Use of this source code is governed by the
4
- * MIT license that can be found in the LICENSE file.
5
- */
6
- export interface Options {
7
- }
8
- type RuleOptions = [Options?];
9
- export declare const requireCodeMinification: import("@typescript-eslint/utils/ts-eslint").RuleModule<"violationDetected", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
10
- name: string;
11
- };
12
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"require-code-minification.js","sourceRoot":"","sources":["../../../../src/rules/operability/require-code-minification.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AAEH,4DAIkC;AAUrB,QAAA,uBAAuB,GAAG,IAAA,0BAAU,EAA0B;IACzE,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,GAAG,EAAE,4HAA4H;YACjI,WAAW,EAAE,oCAAoC;YACjD,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,GAAG;SACV;QACD,QAAQ,EAAE;YACR,iBAAiB,EAAE,IAAA,gCAAgB,EAAC;gBAClC,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,oBAAoB;gBAC/B,GAAG,EAAE,SAAS;gBACd,WAAW,EACT,iFAAiF;gBACnF,QAAQ,EAAE,KAAK;gBACf,GAAG,EAAE,mCAAmC;gBACxC,iBAAiB,EAAE,iDAAiD;aACrE,CAAC;SACH;QACD,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,QAAQ,CAAC,IAAuB;gBAC9B,IACE,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY;oBAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU;oBAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;oBAC7B,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,EAC1B,CAAC;oBACD,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Copyright (c) 2025 Ofri Peretz
3
- * Licensed under the MIT License. Use of this source code is governed by the
4
- * MIT license that can be found in the LICENSE file.
5
- */
6
- export interface Options {
7
- }
8
- type RuleOptions = [Options?];
9
- export declare const requireDataMinimization: import("@typescript-eslint/utils/ts-eslint").RuleModule<"violationDetected", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
10
- name: string;
11
- };
12
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"require-data-minimization.js","sourceRoot":"","sources":["../../../../src/rules/operability/require-data-minimization.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AAEH,4DAKkC;AAUrB,QAAA,uBAAuB,GAAG,IAAA,0BAAU,EAA0B;IACzE,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,GAAG,EAAE,4HAA4H;YACjI,WAAW,EAAE,6CAA6C;YAC1D,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,CAAC;SACR;QACD,QAAQ,EAAE;YACR,iBAAiB,EAAE,IAAA,gCAAgB,EAAC;gBAClC,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,oBAAoB;gBAC/B,GAAG,EAAE,SAAS;gBACd,WAAW,EACT,0EAA0E;gBAC5E,QAAQ,EAAE,QAAQ;gBAClB,GAAG,EAAE,mCAAmC;gBACxC,iBAAiB,EAAE,iDAAiD;aACrE,CAAC;SACH;QACD,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,SAAS,MAAM,CAAC,IAAmB;YACjC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO;YACL,gBAAgB,CAAC,IAA+B;gBAC9C,mDAAmD;gBACnD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;oBAChC,gDAAgD;oBAChD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,8BAAc,CAAC,QAAQ;wBAClC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,8BAAc,CAAC,UAAU;wBACxC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAC7D,CAAC;oBAEF,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,CAAC,IAAI,CAAC,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}