@eslint/json 0.13.1 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/cjs/index.cjs +15 -12
- package/dist/cjs/index.d.cts +3 -3
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/index.js +15 -12
- package/package.json +11 -12
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
This package contains a plugin that allows you to natively lint JSON, JSONC, and JSON5 files using ESLint.
|
|
6
6
|
|
|
7
|
-
**Important:** This plugin requires ESLint v9.
|
|
7
|
+
**Important:** This plugin requires ESLint v9.15.0 or higher and you must be using the [new configuration system](https://eslint.org/docs/latest/use/configure/configuration-files).
|
|
8
8
|
|
|
9
9
|
## Installation
|
|
10
10
|
|
|
@@ -294,9 +294,9 @@ to get your logo on our READMEs and [website](https://eslint.org/sponsors).
|
|
|
294
294
|
|
|
295
295
|
<h3>Platinum Sponsors</h3>
|
|
296
296
|
<p><a href="https://automattic.com"><img src="https://images.opencollective.com/automattic/d0ef3e1/logo.png" alt="Automattic" height="128"></a> <a href="https://www.airbnb.com/"><img src="https://images.opencollective.com/airbnb/d327d66/logo.png" alt="Airbnb" height="128"></a></p><h3>Gold Sponsors</h3>
|
|
297
|
-
<p><a href="https://qlty.sh/"><img src="https://images.opencollective.com/qltysh/33d157d/logo.png" alt="Qlty Software" height="96"></a> <a href="https://
|
|
298
|
-
<p><a href="https://vite.dev/"><img src="https://images.opencollective.com/vite/e6d15e1/logo.png" alt="Vite" height="64"></a> <a href="https://liftoff.io/"><img src="https://images.opencollective.com/liftoff/
|
|
299
|
-
<p><a href="https://cybozu.co.jp/"><img src="https://images.opencollective.com/cybozu/933e46d/logo.png" alt="Cybozu" height="32"></a> <a href="https://
|
|
297
|
+
<p><a href="https://qlty.sh/"><img src="https://images.opencollective.com/qltysh/33d157d/logo.png" alt="Qlty Software" height="96"></a> <a href="https://shopify.engineering/"><img src="https://avatars.githubusercontent.com/u/8085" alt="Shopify" height="96"></a></p><h3>Silver Sponsors</h3>
|
|
298
|
+
<p><a href="https://vite.dev/"><img src="https://images.opencollective.com/vite/e6d15e1/logo.png" alt="Vite" height="64"></a> <a href="https://liftoff.io/"><img src="https://images.opencollective.com/liftoff/2d6c3b6/logo.png" alt="Liftoff" height="64"></a> <a href="https://americanexpress.io"><img src="https://avatars.githubusercontent.com/u/3853301" alt="American Express" height="64"></a> <a href="https://stackblitz.com"><img src="https://avatars.githubusercontent.com/u/28635252" alt="StackBlitz" height="64"></a></p><h3>Bronze Sponsors</h3>
|
|
299
|
+
<p><a href="https://cybozu.co.jp/"><img src="https://images.opencollective.com/cybozu/933e46d/logo.png" alt="Cybozu" height="32"></a> <a href="https://icons8.com/"><img src="https://images.opencollective.com/icons8/7fa1641/logo.png" alt="Icons8" height="32"></a> <a href="https://discord.com"><img src="https://images.opencollective.com/discordapp/f9645d9/logo.png" alt="Discord" height="32"></a> <a href="https://www.gitbook.com"><img src="https://avatars.githubusercontent.com/u/7111340" alt="GitBook" height="32"></a> <a href="https://nx.dev"><img src="https://avatars.githubusercontent.com/u/23692104" alt="Nx" height="32"></a> <a href="https://opensource.mercedes-benz.com/"><img src="https://avatars.githubusercontent.com/u/34240465" alt="Mercedes-Benz Group" height="32"></a> <a href="https://herocoders.com"><img src="https://avatars.githubusercontent.com/u/37549774" alt="HeroCoders" height="32"></a> <a href="https://www.lambdatest.com"><img src="https://avatars.githubusercontent.com/u/171592363" alt="LambdaTest" height="32"></a></p>
|
|
300
300
|
<h3>Technology Sponsors</h3>
|
|
301
301
|
Technology sponsors allow us to use their products and services for free as part of a contribution to the open source ecosystem and our work.
|
|
302
302
|
<p><a href="https://netlify.com"><img src="https://raw.githubusercontent.com/eslint/eslint.org/main/src/assets/images/techsponsors/netlify-icon.svg" alt="Netlify" height="32"></a> <a href="https://algolia.com"><img src="https://raw.githubusercontent.com/eslint/eslint.org/main/src/assets/images/techsponsors/algolia-icon.svg" alt="Algolia" height="32"></a> <a href="https://1password.com"><img src="https://raw.githubusercontent.com/eslint/eslint.org/main/src/assets/images/techsponsors/1password-icon.svg" alt="1Password" height="32"></a></p>
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
|
-
* @import { DocumentNode, AnyNode, Token, MemberNode } from "@humanwhocodes/momoa"
|
|
4
|
-
* @import {
|
|
3
|
+
* @import { DocumentNode, AnyNode, Token, LocationRange, MemberNode } from "@humanwhocodes/momoa"
|
|
4
|
+
* @import { FileProblem, DirectiveType, RulesConfig, Language, OkParseResult, ParseResult, File } from "@eslint/core"
|
|
5
5
|
* @import { JSONSyntaxElement, JSONRuleDefinition } from "./types.ts"
|
|
6
6
|
*/
|
|
7
7
|
'use strict';
|
|
@@ -32,7 +32,7 @@ var naturalCompare = require('natural-compare');
|
|
|
32
32
|
const commentParser = new pluginKit.ConfigCommentParser();
|
|
33
33
|
|
|
34
34
|
const INLINE_CONFIG =
|
|
35
|
-
/^\s*
|
|
35
|
+
/^\s*eslint(?:-enable|-disable(?:(?:-next)?-line)?)?(?:\s|$)/u;
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
38
|
* A class to represent a step in the traversal process.
|
|
@@ -147,7 +147,7 @@ class JSONSourceCode extends pluginKit.TextSourceCodeBase {
|
|
|
147
147
|
* @param {DocumentNode} options.ast The root AST node.
|
|
148
148
|
*/
|
|
149
149
|
constructor({ text, ast }) {
|
|
150
|
-
super({ text, ast });
|
|
150
|
+
super({ text, ast, lineEndingPattern: /\r\n|[\r\n]/u });
|
|
151
151
|
this.ast = ast;
|
|
152
152
|
|
|
153
153
|
const { comments, starts, ends } = processTokens(this.ast.tokens ?? []);
|
|
@@ -247,13 +247,13 @@ class JSONSourceCode extends pluginKit.TextSourceCodeBase {
|
|
|
247
247
|
/**
|
|
248
248
|
* Returns inline rule configurations along with any problems
|
|
249
249
|
* encountered while parsing the configurations.
|
|
250
|
-
* @returns {{problems:Array<FileProblem>,configs:Array<{config:{rules:RulesConfig},loc:
|
|
250
|
+
* @returns {{problems:Array<FileProblem>,configs:Array<{config:{rules:RulesConfig},loc:LocationRange}>}} Information
|
|
251
251
|
* that ESLint needs to further process the rule configurations.
|
|
252
252
|
*/
|
|
253
253
|
applyInlineConfig() {
|
|
254
254
|
/** @type {Array<FileProblem>} */
|
|
255
255
|
const problems = [];
|
|
256
|
-
/** @type {Array<{config:{rules:RulesConfig},loc:
|
|
256
|
+
/** @type {Array<{config:{rules:RulesConfig},loc:LocationRange}>} */
|
|
257
257
|
const configs = [];
|
|
258
258
|
|
|
259
259
|
this.getInlineConfigNodes().forEach(comment => {
|
|
@@ -754,12 +754,16 @@ const rule$3 = {
|
|
|
754
754
|
additionalProperties: false,
|
|
755
755
|
},
|
|
756
756
|
],
|
|
757
|
+
|
|
758
|
+
defaultOptions: [
|
|
759
|
+
{
|
|
760
|
+
form: "NFC",
|
|
761
|
+
},
|
|
762
|
+
],
|
|
757
763
|
},
|
|
758
764
|
|
|
759
765
|
create(context) {
|
|
760
|
-
const form = context.options
|
|
761
|
-
? context.options[0].form
|
|
762
|
-
: undefined;
|
|
766
|
+
const [{ form }] = context.options;
|
|
763
767
|
|
|
764
768
|
return {
|
|
765
769
|
Member(node) {
|
|
@@ -808,8 +812,7 @@ const rule$3 = {
|
|
|
808
812
|
* We separately capture the integer and fractional parts of a number, so that
|
|
809
813
|
* we can check for unsafe numbers that will evaluate to Infinity.
|
|
810
814
|
*/
|
|
811
|
-
const NUMBER =
|
|
812
|
-
/^-?(?<int>0|([1-9][0-9]*))(?:\.(?<frac>[0-9]+))?(?:[eE][+-]?[0-9]+)?$/u;
|
|
815
|
+
const NUMBER = /^-?(?<int>0|([1-9]\d*))(?:\.(?<frac>\d+))?(?:e[+-]?\d+)?$/iu;
|
|
813
816
|
const NON_ZERO = /[1-9]/u;
|
|
814
817
|
|
|
815
818
|
//-----------------------------------------------------------------------------
|
|
@@ -1242,7 +1245,7 @@ var rules = {
|
|
|
1242
1245
|
const plugin = {
|
|
1243
1246
|
meta: {
|
|
1244
1247
|
name: "@eslint/json",
|
|
1245
|
-
version: "0.
|
|
1248
|
+
version: "0.14.0", // x-release-please-version
|
|
1246
1249
|
},
|
|
1247
1250
|
languages: {
|
|
1248
1251
|
json: new JSONLanguage({ mode: "json" }),
|
package/dist/cjs/index.d.cts
CHANGED
|
@@ -163,7 +163,7 @@ export class JSONSourceCode extends TextSourceCodeBase<{
|
|
|
163
163
|
/**
|
|
164
164
|
* Returns inline rule configurations along with any problems
|
|
165
165
|
* encountered while parsing the configurations.
|
|
166
|
-
* @returns {{problems:Array<FileProblem>,configs:Array<{config:{rules:RulesConfig},loc:
|
|
166
|
+
* @returns {{problems:Array<FileProblem>,configs:Array<{config:{rules:RulesConfig},loc:LocationRange}>}} Information
|
|
167
167
|
* that ESLint needs to further process the rule configurations.
|
|
168
168
|
*/
|
|
169
169
|
applyInlineConfig(): {
|
|
@@ -172,7 +172,7 @@ export class JSONSourceCode extends TextSourceCodeBase<{
|
|
|
172
172
|
config: {
|
|
173
173
|
rules: RulesConfig;
|
|
174
174
|
};
|
|
175
|
-
loc:
|
|
175
|
+
loc: LocationRange;
|
|
176
176
|
}>;
|
|
177
177
|
};
|
|
178
178
|
/**
|
|
@@ -238,7 +238,7 @@ import { TextSourceCodeBase } from '@eslint/plugin-kit';
|
|
|
238
238
|
import type { FileProblem } from "@eslint/core";
|
|
239
239
|
import { Directive } from '@eslint/plugin-kit';
|
|
240
240
|
import type { RulesConfig } from "@eslint/core";
|
|
241
|
-
import type {
|
|
241
|
+
import type { LocationRange } from "@humanwhocodes/momoa";
|
|
242
242
|
import type { AnyNode } from "@humanwhocodes/momoa";
|
|
243
243
|
/**
|
|
244
244
|
* A class to represent a step in the traversal process.
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -163,7 +163,7 @@ export class JSONSourceCode extends TextSourceCodeBase<{
|
|
|
163
163
|
/**
|
|
164
164
|
* Returns inline rule configurations along with any problems
|
|
165
165
|
* encountered while parsing the configurations.
|
|
166
|
-
* @returns {{problems:Array<FileProblem>,configs:Array<{config:{rules:RulesConfig},loc:
|
|
166
|
+
* @returns {{problems:Array<FileProblem>,configs:Array<{config:{rules:RulesConfig},loc:LocationRange}>}} Information
|
|
167
167
|
* that ESLint needs to further process the rule configurations.
|
|
168
168
|
*/
|
|
169
169
|
applyInlineConfig(): {
|
|
@@ -172,7 +172,7 @@ export class JSONSourceCode extends TextSourceCodeBase<{
|
|
|
172
172
|
config: {
|
|
173
173
|
rules: RulesConfig;
|
|
174
174
|
};
|
|
175
|
-
loc:
|
|
175
|
+
loc: LocationRange;
|
|
176
176
|
}>;
|
|
177
177
|
};
|
|
178
178
|
/**
|
|
@@ -238,7 +238,7 @@ import { TextSourceCodeBase } from '@eslint/plugin-kit';
|
|
|
238
238
|
import type { FileProblem } from "@eslint/core";
|
|
239
239
|
import { Directive } from '@eslint/plugin-kit';
|
|
240
240
|
import type { RulesConfig } from "@eslint/core";
|
|
241
|
-
import type {
|
|
241
|
+
import type { LocationRange } from "@humanwhocodes/momoa";
|
|
242
242
|
import type { AnyNode } from "@humanwhocodes/momoa";
|
|
243
243
|
/**
|
|
244
244
|
* A class to represent a step in the traversal process.
|
package/dist/esm/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
|
-
* @import { DocumentNode, AnyNode, Token, MemberNode } from "@humanwhocodes/momoa"
|
|
4
|
-
* @import {
|
|
3
|
+
* @import { DocumentNode, AnyNode, Token, LocationRange, MemberNode } from "@humanwhocodes/momoa"
|
|
4
|
+
* @import { FileProblem, DirectiveType, RulesConfig, Language, OkParseResult, ParseResult, File } from "@eslint/core"
|
|
5
5
|
* @import { JSONSyntaxElement, JSONRuleDefinition } from "./types.ts"
|
|
6
6
|
*/
|
|
7
7
|
// @ts-self-types="./index.d.ts"
|
|
@@ -29,7 +29,7 @@ import naturalCompare from 'natural-compare';
|
|
|
29
29
|
const commentParser = new ConfigCommentParser();
|
|
30
30
|
|
|
31
31
|
const INLINE_CONFIG =
|
|
32
|
-
/^\s*
|
|
32
|
+
/^\s*eslint(?:-enable|-disable(?:(?:-next)?-line)?)?(?:\s|$)/u;
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
35
|
* A class to represent a step in the traversal process.
|
|
@@ -144,7 +144,7 @@ class JSONSourceCode extends TextSourceCodeBase {
|
|
|
144
144
|
* @param {DocumentNode} options.ast The root AST node.
|
|
145
145
|
*/
|
|
146
146
|
constructor({ text, ast }) {
|
|
147
|
-
super({ text, ast });
|
|
147
|
+
super({ text, ast, lineEndingPattern: /\r\n|[\r\n]/u });
|
|
148
148
|
this.ast = ast;
|
|
149
149
|
|
|
150
150
|
const { comments, starts, ends } = processTokens(this.ast.tokens ?? []);
|
|
@@ -244,13 +244,13 @@ class JSONSourceCode extends TextSourceCodeBase {
|
|
|
244
244
|
/**
|
|
245
245
|
* Returns inline rule configurations along with any problems
|
|
246
246
|
* encountered while parsing the configurations.
|
|
247
|
-
* @returns {{problems:Array<FileProblem>,configs:Array<{config:{rules:RulesConfig},loc:
|
|
247
|
+
* @returns {{problems:Array<FileProblem>,configs:Array<{config:{rules:RulesConfig},loc:LocationRange}>}} Information
|
|
248
248
|
* that ESLint needs to further process the rule configurations.
|
|
249
249
|
*/
|
|
250
250
|
applyInlineConfig() {
|
|
251
251
|
/** @type {Array<FileProblem>} */
|
|
252
252
|
const problems = [];
|
|
253
|
-
/** @type {Array<{config:{rules:RulesConfig},loc:
|
|
253
|
+
/** @type {Array<{config:{rules:RulesConfig},loc:LocationRange}>} */
|
|
254
254
|
const configs = [];
|
|
255
255
|
|
|
256
256
|
this.getInlineConfigNodes().forEach(comment => {
|
|
@@ -751,12 +751,16 @@ const rule$3 = {
|
|
|
751
751
|
additionalProperties: false,
|
|
752
752
|
},
|
|
753
753
|
],
|
|
754
|
+
|
|
755
|
+
defaultOptions: [
|
|
756
|
+
{
|
|
757
|
+
form: "NFC",
|
|
758
|
+
},
|
|
759
|
+
],
|
|
754
760
|
},
|
|
755
761
|
|
|
756
762
|
create(context) {
|
|
757
|
-
const form = context.options
|
|
758
|
-
? context.options[0].form
|
|
759
|
-
: undefined;
|
|
763
|
+
const [{ form }] = context.options;
|
|
760
764
|
|
|
761
765
|
return {
|
|
762
766
|
Member(node) {
|
|
@@ -805,8 +809,7 @@ const rule$3 = {
|
|
|
805
809
|
* We separately capture the integer and fractional parts of a number, so that
|
|
806
810
|
* we can check for unsafe numbers that will evaluate to Infinity.
|
|
807
811
|
*/
|
|
808
|
-
const NUMBER =
|
|
809
|
-
/^-?(?<int>0|([1-9][0-9]*))(?:\.(?<frac>[0-9]+))?(?:[eE][+-]?[0-9]+)?$/u;
|
|
812
|
+
const NUMBER = /^-?(?<int>0|([1-9]\d*))(?:\.(?<frac>\d+))?(?:e[+-]?\d+)?$/iu;
|
|
810
813
|
const NON_ZERO = /[1-9]/u;
|
|
811
814
|
|
|
812
815
|
//-----------------------------------------------------------------------------
|
|
@@ -1239,7 +1242,7 @@ var rules = {
|
|
|
1239
1242
|
const plugin = {
|
|
1240
1243
|
meta: {
|
|
1241
1244
|
name: "@eslint/json",
|
|
1242
|
-
version: "0.
|
|
1245
|
+
version: "0.14.0", // x-release-please-version
|
|
1243
1246
|
},
|
|
1244
1247
|
languages: {
|
|
1245
1248
|
json: new JSONLanguage({ mode: "json" }),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eslint/json",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "JSON linting plugin for ESLint",
|
|
5
5
|
"author": "Nicholas C. Zakas",
|
|
6
6
|
"type": "module",
|
|
@@ -62,16 +62,16 @@
|
|
|
62
62
|
"build:cts": "node tools/build-cts.js",
|
|
63
63
|
"build:rules": "node tools/build-rules.js",
|
|
64
64
|
"build": "npm run build:rules && rollup -c && npm run build:dedupe-types && tsc -p tsconfig.esm.json && npm run build:cts",
|
|
65
|
-
"build:readme": "node tools/update-readme.js",
|
|
66
65
|
"build:update-rules-docs": "node tools/update-rules-docs.js",
|
|
67
66
|
"prepare": "npm run build",
|
|
68
67
|
"pretest": "npm run build",
|
|
69
68
|
"lint": "eslint",
|
|
69
|
+
"lint:fix": "eslint --fix",
|
|
70
70
|
"fmt": "prettier --write .",
|
|
71
71
|
"fmt:check": "prettier --check .",
|
|
72
|
-
"test": "mocha tests/**/*.js",
|
|
73
|
-
"test:jsr": "npx jsr@latest publish --dry-run",
|
|
72
|
+
"test": "mocha \"tests/**/*.test.js\"",
|
|
74
73
|
"test:coverage": "c8 npm test",
|
|
74
|
+
"test:jsr": "npx jsr@latest publish --dry-run",
|
|
75
75
|
"test:types": "tsc -p tests/types/tsconfig.json"
|
|
76
76
|
},
|
|
77
77
|
"keywords": [
|
|
@@ -83,26 +83,25 @@
|
|
|
83
83
|
],
|
|
84
84
|
"license": "Apache-2.0",
|
|
85
85
|
"dependencies": {
|
|
86
|
-
"@eslint/core": "^0.
|
|
87
|
-
"@eslint/plugin-kit": "^0.
|
|
88
|
-
"@humanwhocodes/momoa": "^3.3.
|
|
86
|
+
"@eslint/core": "^0.17.0",
|
|
87
|
+
"@eslint/plugin-kit": "^0.4.1",
|
|
88
|
+
"@humanwhocodes/momoa": "^3.3.10",
|
|
89
89
|
"natural-compare": "^1.4.0"
|
|
90
90
|
},
|
|
91
91
|
"devDependencies": {
|
|
92
92
|
"c8": "^10.1.3",
|
|
93
93
|
"dedent": "^1.5.3",
|
|
94
|
-
"eslint": "^9.
|
|
95
|
-
"eslint-config-eslint": "^
|
|
94
|
+
"eslint": "^9.36.0",
|
|
95
|
+
"eslint-config-eslint": "^13.0.0",
|
|
96
96
|
"eslint-plugin-eslint-plugin": "^6.3.2",
|
|
97
|
-
"got": "^14.4.2",
|
|
98
97
|
"lint-staged": "^15.2.7",
|
|
99
98
|
"mdast-util-from-markdown": "^2.0.2",
|
|
100
99
|
"mocha": "^11.3.0",
|
|
101
100
|
"prettier": "^3.4.1",
|
|
102
|
-
"rollup": "^4.
|
|
101
|
+
"rollup": "^4.52.3",
|
|
103
102
|
"rollup-plugin-copy": "^3.5.0",
|
|
104
103
|
"rollup-plugin-delete": "^3.0.1",
|
|
105
|
-
"typescript": "^5.
|
|
104
|
+
"typescript": "^5.9.2",
|
|
106
105
|
"yorkie": "^2.0.0"
|
|
107
106
|
},
|
|
108
107
|
"engines": {
|