Skip to content

Commit e46de35

Browse files
authored
fix: crash when used with eslint v9.15 (#378)
1 parent 4b4bec5 commit e46de35

File tree

13 files changed

+48
-7
lines changed

13 files changed

+48
-7
lines changed

.changeset/rare-avocados-grin.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"eslint-plugin-jsonc": patch
3+
---
4+
5+
fix: crash when used with eslint v9.15

lib/rules/auto.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { BaseRuleListener, RuleModule } from "../types";
1+
import type { BaseRuleListener, PartialRuleModule, RuleModule } from "../types";
22
import { createRule } from "../utils";
33
import { getAutoConfig } from "../utils/get-auto-jsonc-rules-config";
44

@@ -30,7 +30,7 @@ export default createRule("auto", {
3030
).default;
3131
const subContext: any = {
3232
__proto__: context,
33-
options: getRuleOptions(autoConfig[ruleId]),
33+
options: getRuleOptions(autoConfig[ruleId], rule.jsoncDefineRule),
3434
report(options: any) {
3535
if (options.messageId) {
3636
options.message = `[${ruleId}] ${
@@ -72,9 +72,17 @@ export default createRule("auto", {
7272
/**
7373
* Build the options to create the rule.
7474
*/
75-
function getRuleOptions(options: number | string | any[]): any[] {
76-
if (!Array.isArray(options)) {
77-
return [];
75+
function getRuleOptions(
76+
options: number | string | any[],
77+
rule: PartialRuleModule,
78+
): any[] {
79+
const jsonOptions = Array.isArray(options) ? options.slice(1) : [];
80+
if (rule.meta.defaultOptions) {
81+
rule.meta.defaultOptions.forEach((option, index) => {
82+
if (jsonOptions[index] === undefined) {
83+
jsonOptions[index] = option;
84+
}
85+
});
7886
}
79-
return options.slice(1);
87+
return jsonOptions;
8088
}

lib/rules/no-dupe-keys.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const coreRule = getCoreRule("no-dupe-keys");
33

44
export default createRule("no-dupe-keys", {
55
meta: {
6+
...coreRule.meta,
67
docs: {
78
description: "disallow duplicate keys in object literals",
89
recommended: ["json", "jsonc", "json5"],
@@ -14,6 +15,8 @@ export default createRule("no-dupe-keys", {
1415
schema: coreRule.meta!.schema!,
1516
messages: coreRule.meta!.messages!,
1617
type: coreRule.meta!.type!,
18+
deprecated: false,
19+
replacedBy: [],
1720
},
1821
create(context) {
1922
return defineWrapperListener(coreRule, context, context.options);

lib/rules/no-floating-decimal.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const coreRule = getCoreRule("no-floating-decimal");
33

44
export default createRule("no-floating-decimal", {
55
meta: {
6+
...coreRule.meta,
67
docs: {
78
description:
89
"disallow leading or trailing decimal points in numeric literals",
@@ -15,6 +16,8 @@ export default createRule("no-floating-decimal", {
1516
schema: coreRule.meta!.schema!,
1617
messages: coreRule.meta!.messages!,
1718
type: coreRule.meta!.type!,
19+
deprecated: false,
20+
replacedBy: [],
1821
},
1922
create(context) {
2023
return defineWrapperListener(coreRule, context, context.options);

lib/rules/no-irregular-whitespace.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const coreRule = getCoreRule("no-irregular-whitespace");
33

44
export default createRule("no-irregular-whitespace", {
55
meta: {
6+
...coreRule.meta,
67
docs: {
78
description: "disallow irregular whitespace",
89
// TODO: We will switch this in the next major version.
@@ -16,6 +17,8 @@ export default createRule("no-irregular-whitespace", {
1617
schema: coreRule.meta!.schema!,
1718
messages: coreRule.meta!.messages!,
1819
type: coreRule.meta!.type!,
20+
deprecated: false,
21+
replacedBy: [],
1922
},
2023
create(context) {
2124
return defineWrapperListener(coreRule, context, context.options);

lib/rules/no-multi-str.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const coreRule = getCoreRule("no-multi-str");
33

44
export default createRule("no-multi-str", {
55
meta: {
6+
...coreRule.meta,
67
docs: {
78
description: "disallow multiline strings",
89
recommended: ["json", "jsonc"],
@@ -17,6 +18,8 @@ export default createRule("no-multi-str", {
1718
multilineString: "Multiline support is limited to JSON5 only.",
1819
},
1920
type: coreRule.meta!.type!,
21+
deprecated: false,
22+
replacedBy: [],
2023
},
2124
create(context) {
2225
return defineWrapperListener(coreRule, context, context.options);

lib/rules/no-octal-escape.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const coreRule = getCoreRule("no-octal-escape");
33

44
export default createRule("no-octal-escape", {
55
meta: {
6+
...coreRule.meta,
67
docs: {
78
description: "disallow octal escape sequences in string literals",
89
recommended: null,
@@ -14,6 +15,8 @@ export default createRule("no-octal-escape", {
1415
schema: coreRule.meta!.schema!,
1516
messages: coreRule.meta!.messages!,
1617
type: coreRule.meta!.type!,
18+
deprecated: false,
19+
replacedBy: [],
1720
},
1821
create(context) {
1922
return defineWrapperListener(coreRule, context, context.options);

lib/rules/no-octal.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const coreRule = getCoreRule("no-octal");
33

44
export default createRule("no-octal", {
55
meta: {
6+
...coreRule.meta,
67
docs: {
78
description: "disallow legacy octal literals",
89
recommended: ["json", "jsonc", "json5"],
@@ -14,6 +15,8 @@ export default createRule("no-octal", {
1415
schema: coreRule.meta!.schema!,
1516
messages: coreRule.meta!.messages!,
1617
type: coreRule.meta!.type!,
18+
deprecated: false,
19+
replacedBy: [],
1720
},
1821
create(context) {
1922
return defineWrapperListener(coreRule, context, context.options);

lib/rules/no-sparse-arrays.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const coreRule = getCoreRule("no-sparse-arrays");
33

44
export default createRule("no-sparse-arrays", {
55
meta: {
6+
...coreRule.meta,
67
docs: {
78
description: "disallow sparse arrays",
89
recommended: ["json", "jsonc", "json5"],
@@ -14,6 +15,8 @@ export default createRule("no-sparse-arrays", {
1415
schema: coreRule.meta!.schema!,
1516
messages: coreRule.meta!.messages!,
1617
type: coreRule.meta!.type!,
18+
deprecated: false,
19+
replacedBy: [],
1720
},
1821
create(context) {
1922
return defineWrapperListener(coreRule, context, context.options);

lib/rules/no-useless-escape.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const coreRule = getCoreRule("no-useless-escape");
33

44
export default createRule("no-useless-escape", {
55
meta: {
6+
...coreRule.meta,
67
docs: {
78
description: "disallow unnecessary escape usage",
89
recommended: ["json", "jsonc", "json5"],
@@ -14,6 +15,8 @@ export default createRule("no-useless-escape", {
1415
schema: coreRule.meta!.schema!,
1516
messages: coreRule.meta!.messages!,
1617
type: coreRule.meta!.type!,
18+
deprecated: false,
19+
replacedBy: [],
1720
},
1821
create(context) {
1922
return defineWrapperListener(coreRule, context, context.options);

0 commit comments

Comments
 (0)