@prantlf/jsonlint 11.7.2 → 13.0.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/LICENSE +1 -1
- package/README.md +10 -10
- package/lib/cli.js +6 -4
- package/lib/formatter.js +0 -3
- package/lib/index.d.ts +10 -2
- package/lib/jsonlint.js +15 -12
- package/lib/printer.js +0 -3
- package/lib/sorter.js +0 -3
- package/lib/validator.js +49 -35
- package/package.json +28 -27
- package/web/ajv.min.js +2 -4
- package/web/ajv.min.js.map +7 -1
- package/web/ajv7.min.js +8 -0
- package/web/ajv7.min.js.map +1 -0
- package/web/formatter.min.js +6 -2
- package/web/formatter.min.js.map +7 -1
- package/web/jsonlint.html +25 -6
- package/web/jsonlint.min.js +12 -2
- package/web/jsonlint.min.js.map +7 -1
- package/web/printer.min.js +5 -2
- package/web/printer.min.js.map +7 -1
- package/web/schema-drafts.min.js +2 -2
- package/web/schema-drafts.min.js.map +7 -1
- package/web/sorter.min.js +2 -2
- package/web/sorter.min.js.map +7 -1
- package/web/validator.min.js +4 -2
- package/web/validator.min.js.map +7 -1
- package/lib/schema-drafts.js +0 -485
package/LICENSE
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
3
|
Copyright (c) 2012-2018 Zachary Carter
|
|
4
|
-
Copyright (c) 2019-
|
|
4
|
+
Copyright (c) 2019-2023 Ferdinand Prantl
|
|
5
5
|
|
|
6
6
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
7
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -135,7 +135,7 @@ Usage: `jsonlint [options] [<file, directory, pattern> ...]`
|
|
|
135
135
|
-S, --single-quoted-strings support single quotes as string delimiters
|
|
136
136
|
-T, --trailing-commas ignore trailing commas in objects and arrays
|
|
137
137
|
-D, --no-duplicate-keys report duplicate object keys as an error
|
|
138
|
-
-V, --validate [file] JSON
|
|
138
|
+
-V, --validate [file] JSON Schema file to use for validation
|
|
139
139
|
-e, --environment [env] which specification of JSON Schema the
|
|
140
140
|
validation file uses
|
|
141
141
|
-x, --context [num] line count used as the diff context (default: 3)
|
|
@@ -164,8 +164,10 @@ A pattern to exclude from processing starts with "!".
|
|
|
164
164
|
|
|
165
165
|
Parsing mode can be "cjson" or "json5" to enable other flags automatically.
|
|
166
166
|
If no files or directories are specified, stdin will be parsed. Environments
|
|
167
|
-
for JSON
|
|
168
|
-
or "
|
|
167
|
+
for JSON Schema validation are "draft-04", "draft-06", "draft-07",
|
|
168
|
+
"draft-2019-09" or "draft-2020-12". The environment may be prefixed
|
|
169
|
+
with "json-schema-". JSON Type Definition can be selected by "rfc8927",
|
|
170
|
+
"json-type-definition" or "jtd". If not specified, it will be "draft-07".
|
|
169
171
|
|
|
170
172
|
### Configuration
|
|
171
173
|
|
|
@@ -272,21 +274,19 @@ The `mode` parameter (string) sets parsing options to match a common format of i
|
|
|
272
274
|
|
|
273
275
|
### Schema Validation
|
|
274
276
|
|
|
275
|
-
You can validate the input against a JSON
|
|
277
|
+
You can validate the input against a JSON Schema using the `lib/validator` module. The `validate` method accepts either an earlier parsed JSON data or a string with the JSON input:
|
|
276
278
|
|
|
277
279
|
```js
|
|
278
280
|
const { compile } = require('@prantlf/jsonlint/lib/validator')
|
|
279
|
-
const validate = compile('string with JSON
|
|
281
|
+
const validate = compile('string with JSON Schema')
|
|
280
282
|
// Throws an error in case of failure.
|
|
281
283
|
const parsed = validate('string with JSON data')
|
|
282
284
|
```
|
|
283
285
|
|
|
284
|
-
If a string is passed to the `validate` method, the same options as for parsing JSON data can be passed as the second parameter. Compiling JSON
|
|
286
|
+
If a string is passed to the `validate` method, the same options as for parsing JSON data can be passed as the second parameter. Compiling JSON Schema supports the same options as parsing JSON data too (except for `reviver`). They can be passed as the second (object) parameter. The optional second `environment` parameter can be passed either as a string or as an additional property in the options object too:
|
|
285
287
|
|
|
286
288
|
```js
|
|
287
|
-
const validate = compile('string with JSON
|
|
288
|
-
environment: 'json-schema-draft-04'
|
|
289
|
-
})
|
|
289
|
+
const validate = compile('string with JSON Schema', { environment: 'draft-2020-12' })
|
|
290
290
|
```
|
|
291
291
|
|
|
292
292
|
### Pretty-Printing
|
|
@@ -420,7 +420,7 @@ ${reason}`)
|
|
|
420
420
|
|
|
421
421
|
## License
|
|
422
422
|
|
|
423
|
-
Copyright (C) 2012-
|
|
423
|
+
Copyright (C) 2012-2023 Zachary Carter, Ferdinand Prantl
|
|
424
424
|
|
|
425
425
|
Licensed under the [MIT License].
|
|
426
426
|
|
package/lib/cli.js
CHANGED
|
@@ -31,7 +31,7 @@ const commander = require('commander')
|
|
|
31
31
|
.option('-S, --single-quoted-strings', 'support single quotes as string delimiters')
|
|
32
32
|
.option('-T, --trailing-commas', 'ignore trailing commas in objects and arrays')
|
|
33
33
|
.option('-D, --no-duplicate-keys', 'report duplicate object keys as an error')
|
|
34
|
-
.option('-V, --validate [file]', 'JSON
|
|
34
|
+
.option('-V, --validate [file]', 'JSON Schema file to use for validation')
|
|
35
35
|
.option('-e, --environment [env]', 'which specification of JSON Schema the validation file uses')
|
|
36
36
|
.option('-x, --context [num]', 'line count used as the diff context', 3)
|
|
37
37
|
.option('-l, --log-files', 'print only the parsed file names to stdout')
|
|
@@ -55,8 +55,10 @@ const commander = require('commander')
|
|
|
55
55
|
console.log()
|
|
56
56
|
console.log('Parsing mode can be "cjson" or "json5" to enable other flags automatically.')
|
|
57
57
|
console.log('If no files or directories are specified, stdin will be parsed. Environments')
|
|
58
|
-
console.log('for JSON
|
|
59
|
-
console.log('or "
|
|
58
|
+
console.log('for JSON Schema validation are "draft-04", "draft-06", "draft-07",')
|
|
59
|
+
console.log('"draft-2019-09" or "draft-2020-12". The environment may be prefixed')
|
|
60
|
+
console.log('with "json-schema-". JSON Type Definition can be selected by "rfc8927",')
|
|
61
|
+
console.log('"json-type-definition" or "jtd". If not specified, it will be "draft-07".')
|
|
60
62
|
})
|
|
61
63
|
.parse(process.argv)
|
|
62
64
|
|
|
@@ -149,7 +151,7 @@ function processContents (source, file) {
|
|
|
149
151
|
parserOptions.environment = options.environment
|
|
150
152
|
validate = compile(schema, parserOptions)
|
|
151
153
|
} catch (error) {
|
|
152
|
-
const message = 'Loading the JSON
|
|
154
|
+
const message = 'Loading the JSON Schema failed: "' +
|
|
153
155
|
options.validate + '".\n' + error.message
|
|
154
156
|
throw new Error(message)
|
|
155
157
|
}
|
package/lib/formatter.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
// eslint-disable-next-line no-unused-expressions, multiline-ternary
|
|
3
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports)
|
|
4
|
-
// eslint-disable-next-line no-undef, multiline-ternary
|
|
5
3
|
: typeof define === 'function' && define.amd ? define('jsonlint-formatter', ['exports'], factory)
|
|
6
|
-
// eslint-disable-next-line no-undef
|
|
7
4
|
: (global = global || self, factory(global.jsonlintFormatter = {}))
|
|
8
5
|
}(this, function (exports) {
|
|
9
6
|
'use strict'
|
package/lib/index.d.ts
CHANGED
|
@@ -362,7 +362,11 @@ declare module '@prantlf/jsonlint/lib/validator' {
|
|
|
362
362
|
/**
|
|
363
363
|
* Identifiers of supported JSON Schema drafts and JSON Type Definition.
|
|
364
364
|
*/
|
|
365
|
-
type Environment = 'json-schema-draft-04' | '
|
|
365
|
+
type Environment = 'json-schema-draft-04' | 'draft-04' |
|
|
366
|
+
'json-schema-draft-06' | 'draft-06' | 'json-schema-draft-07' | 'draft-07' |
|
|
367
|
+
'json-schema-draft-2019-09' | 'draft-2019-09' |
|
|
368
|
+
'json-schema-draft-2020-12' | 'draft-2020-12' |
|
|
369
|
+
'json-type-definition' | 'jtd' | 'rfc8927'
|
|
366
370
|
|
|
367
371
|
/**
|
|
368
372
|
* Options to customize a JSON Schema validator.
|
|
@@ -414,7 +418,11 @@ declare module '@prantlf/jsonlint/lib/validator' {
|
|
|
414
418
|
/**
|
|
415
419
|
* Choose the JSON Schema draft or JSON Type Definition.
|
|
416
420
|
*
|
|
417
|
-
* Available values: `'json-schema-draft-04' | '
|
|
421
|
+
* Available values: `'json-schema-draft-04' | 'draft-04' |
|
|
422
|
+
* 'json-schema-draft-06' | 'draft-06' | 'json-schema-draft-07' | 'draft-07' |
|
|
423
|
+
* 'json-schema-draft-2019-09' | 'draft-2019-09' |
|
|
424
|
+
* 'json-schema-draft-2020-12' | 'draft-2020-12' |
|
|
425
|
+
* 'json-type-definition' | 'jtd' | 'rfc8927'`
|
|
418
426
|
*/
|
|
419
427
|
environment?: Environment
|
|
420
428
|
}
|
package/lib/jsonlint.js
CHANGED
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
// This is autogenerated with esprima tools, see:
|
|
10
10
|
// https://github.com/ariya/esprima/blob/master/esprima.js
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
// eslint-disable-next-line no-unused-vars
|
|
13
|
+
const Uni = {
|
|
13
14
|
isWhiteSpace: function isWhiteSpace (x) {
|
|
14
15
|
// section 7.2, table 2
|
|
15
16
|
return x === '\u0020' ||
|
|
@@ -65,7 +66,6 @@ const Uni = { // eslint-disable-line no-unused-vars
|
|
|
65
66
|
/* eslint-disable-next-line no-misleading-character-class */
|
|
66
67
|
NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/
|
|
67
68
|
}
|
|
68
|
-
|
|
69
69
|
/* globals Uni, getTexts */
|
|
70
70
|
|
|
71
71
|
// Modified from https://github.com/rlidwka/jju/blob/master/lib/parse.js
|
|
@@ -722,7 +722,8 @@ function parseInternal (input, options) {
|
|
|
722
722
|
}
|
|
723
723
|
}
|
|
724
724
|
|
|
725
|
-
|
|
725
|
+
// eslint-disable-next-line no-unused-vars
|
|
726
|
+
function parseCustom (input, options) {
|
|
726
727
|
if (typeof options === 'function') {
|
|
727
728
|
options = {
|
|
728
729
|
reviver: options
|
|
@@ -733,7 +734,8 @@ function parseCustom (input, options) { // eslint-disable-line no-unused-vars
|
|
|
733
734
|
return parseInternal(input, options)
|
|
734
735
|
}
|
|
735
736
|
|
|
736
|
-
|
|
737
|
+
// eslint-disable-next-line no-unused-vars
|
|
738
|
+
function tokenize (input, options) {
|
|
737
739
|
if (!options) {
|
|
738
740
|
options = {}
|
|
739
741
|
}
|
|
@@ -745,7 +747,6 @@ function tokenize (input, options) { // eslint-disable-line no-unused-vars
|
|
|
745
747
|
options.tokenize = oldTokenize
|
|
746
748
|
return tokens
|
|
747
749
|
}
|
|
748
|
-
|
|
749
750
|
function escapePointerToken (token) {
|
|
750
751
|
return token
|
|
751
752
|
.toString()
|
|
@@ -753,7 +754,8 @@ function escapePointerToken (token) {
|
|
|
753
754
|
.replace(/\//g, '~1')
|
|
754
755
|
}
|
|
755
756
|
|
|
756
|
-
|
|
757
|
+
// eslint-disable-next-line no-unused-vars
|
|
758
|
+
function pathToPointer (tokens) {
|
|
757
759
|
if (tokens.length === 0) {
|
|
758
760
|
return ''
|
|
759
761
|
}
|
|
@@ -768,7 +770,8 @@ function unescapePointerToken (token) {
|
|
|
768
770
|
.replace(/~0/g, '~')
|
|
769
771
|
}
|
|
770
772
|
|
|
771
|
-
|
|
773
|
+
// eslint-disable-next-line no-unused-vars
|
|
774
|
+
function pointerToPath (pointer) {
|
|
772
775
|
if (pointer === '') {
|
|
773
776
|
return []
|
|
774
777
|
}
|
|
@@ -780,7 +783,6 @@ function pointerToPath (pointer) { // eslint-disable-line no-unused-vars
|
|
|
780
783
|
.split('/')
|
|
781
784
|
.map(unescapePointerToken)
|
|
782
785
|
}
|
|
783
|
-
|
|
784
786
|
function getLineAndColumn (input, offset) {
|
|
785
787
|
const lines = input
|
|
786
788
|
.substr(0, offset)
|
|
@@ -797,7 +799,7 @@ function getOffset (input, line, column) {
|
|
|
797
799
|
if (line > 1) {
|
|
798
800
|
const breaks = /\r?\n/g
|
|
799
801
|
let match
|
|
800
|
-
while (match = breaks.exec(input)) {
|
|
802
|
+
while ((match = breaks.exec(input))) {
|
|
801
803
|
if (--line === 1) {
|
|
802
804
|
return match.index + column
|
|
803
805
|
}
|
|
@@ -933,14 +935,14 @@ function improveNativeError (input, error) {
|
|
|
933
935
|
return error
|
|
934
936
|
}
|
|
935
937
|
|
|
936
|
-
|
|
938
|
+
// eslint-disable-next-line no-unused-vars
|
|
939
|
+
function parseNative (input, reviver) {
|
|
937
940
|
try {
|
|
938
941
|
return JSON.parse(input, reviver)
|
|
939
942
|
} catch (error) {
|
|
940
943
|
throw improveNativeError(input, error)
|
|
941
944
|
}
|
|
942
945
|
}
|
|
943
|
-
|
|
944
946
|
/* globals navigator, process, parseCustom, parseNative */
|
|
945
947
|
|
|
946
948
|
const isSafari = typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor)
|
|
@@ -960,7 +962,8 @@ function getReviver (options) {
|
|
|
960
962
|
}
|
|
961
963
|
}
|
|
962
964
|
|
|
963
|
-
|
|
965
|
+
// eslint-disable-next-line no-unused-vars
|
|
966
|
+
function parse (input, options) {
|
|
964
967
|
options || (options = {})
|
|
965
968
|
return needsCustomParser(options)
|
|
966
969
|
? parseCustom(input, options)
|
package/lib/printer.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
// eslint-disable-next-line no-unused-expressions, multiline-ternary
|
|
3
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports)
|
|
4
|
-
// eslint-disable-next-line no-undef, multiline-ternary
|
|
5
3
|
: typeof define === 'function' && define.amd ? define('jsonlint-printer', ['exports'], factory)
|
|
6
|
-
// eslint-disable-next-line no-undef
|
|
7
4
|
: (global = global || self, factory(global.jsonlintPrinter = {}))
|
|
8
5
|
}(this, function (exports) {
|
|
9
6
|
'use strict'
|
package/lib/sorter.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
// eslint-disable-next-line no-unused-expressions, multiline-ternary
|
|
3
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports)
|
|
4
|
-
// eslint-disable-next-line no-undef, multiline-ternary
|
|
5
3
|
: typeof define === 'function' && define.amd ? define('jsonlint-sorter', ['exports'], factory)
|
|
6
|
-
// eslint-disable-next-line no-undef
|
|
7
4
|
: (global = global || self, factory(global.jsonlintSorter = {}))
|
|
8
5
|
}(this, function (exports) {
|
|
9
6
|
'use strict'
|
package/lib/validator.js
CHANGED
|
@@ -1,31 +1,40 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
2
|
if (typeof exports === 'object' && typeof module !== 'undefined') {
|
|
3
3
|
const jsonlint = require('./jsonlint')
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
const ajv = {
|
|
5
|
+
AjvOld: 'ajv6',
|
|
6
|
+
Ajv07: 'ajv',
|
|
7
|
+
AjvJTD: 'ajv/dist/jtd',
|
|
8
|
+
Ajv2019: 'ajv/dist/2019',
|
|
9
|
+
Ajv2020: 'ajv/dist/2020',
|
|
10
|
+
Schema04: 'ajv6/lib/refs/json-schema-draft-04.json',
|
|
11
|
+
Schema06: 'ajv/dist/refs/json-schema-draft-06.json'
|
|
8
12
|
}
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
const requireAjv = name => {
|
|
14
|
+
const exported = require(ajv[name])
|
|
15
|
+
return !exported.$schema && exported.default || exported
|
|
16
|
+
}
|
|
17
|
+
factory(exports, jsonlint, requireAjv)
|
|
11
18
|
} else if (typeof define === 'function' && define.amd) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
define('jsonlint-validator', ['exports', 'jsonlint', 'ajv', 'ajv7'],
|
|
20
|
+
function (exports, jsonlint, ajv, ajv7) {
|
|
21
|
+
const requireAjv = name => {
|
|
22
|
+
if (name === 'AjvOld') return ajv
|
|
23
|
+
const exported = ajv7[name]
|
|
24
|
+
return !exported.$schema && exported.default || exported
|
|
17
25
|
}
|
|
18
|
-
factory(exports,
|
|
26
|
+
factory(exports, jsonlint, requireAjv)
|
|
19
27
|
})
|
|
20
28
|
} else {
|
|
21
|
-
// eslint-disable-next-line no-undef
|
|
22
29
|
global = global || self
|
|
23
|
-
const
|
|
24
|
-
return global.
|
|
30
|
+
const requireAjv = name => {
|
|
31
|
+
if (name === 'AjvOld') return global.Ajv
|
|
32
|
+
const exported = global.ajv7[name]
|
|
33
|
+
return !exported.$schema && exported.default || exported
|
|
25
34
|
}
|
|
26
|
-
factory(global.jsonlintValidator = {}, global.
|
|
35
|
+
factory(global.jsonlintValidator = {}, global.jsonlint, requireAjv)
|
|
27
36
|
}
|
|
28
|
-
}(this, function (exports,
|
|
37
|
+
}(this, function (exports, jsonlint, requireAjv) {
|
|
29
38
|
'use strict'
|
|
30
39
|
|
|
31
40
|
function addErrorLocation (problem, input, tokens, dataPath) {
|
|
@@ -96,24 +105,29 @@
|
|
|
96
105
|
}
|
|
97
106
|
|
|
98
107
|
function createAjv (environment) {
|
|
99
|
-
const ajvOptions = { jsonPointers: true }
|
|
100
108
|
let ajv
|
|
101
|
-
if (!environment) {
|
|
102
|
-
|
|
103
|
-
ajv = new Ajv(
|
|
104
|
-
ajv.addMetaSchema(
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
ajv = new Ajv(
|
|
108
|
-
} else if (environment === 'json-schema-draft-
|
|
109
|
-
|
|
110
|
-
ajv
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
ajv
|
|
109
|
+
if (!environment || environment === 'json-schema-draft-06' || environment === 'draft-06') {
|
|
110
|
+
const Ajv = requireAjv('Ajv07')
|
|
111
|
+
ajv = new Ajv()
|
|
112
|
+
ajv.addMetaSchema(requireAjv('Schema06'))
|
|
113
|
+
} else if (environment === 'json-schema-draft-07' || environment === 'draft-07') {
|
|
114
|
+
const Ajv = requireAjv('Ajv07')
|
|
115
|
+
ajv = new Ajv()
|
|
116
|
+
} else if (environment === 'json-schema-draft-04' || environment === 'draft-04') {
|
|
117
|
+
const Ajv = requireAjv('AjvOld')
|
|
118
|
+
ajv = new Ajv({ schemaId: 'id' })
|
|
119
|
+
ajv.addMetaSchema(requireAjv('Schema04'))
|
|
120
|
+
} else if (environment === 'json-schema-draft-2019-09' || environment === 'draft-2019-09') {
|
|
121
|
+
const Ajv = requireAjv('Ajv2019')
|
|
122
|
+
ajv = new Ajv()
|
|
123
|
+
} else if (environment === 'json-schema-draft-2020-12' || environment === 'draft-2020-12') {
|
|
124
|
+
const Ajv = requireAjv('Ajv2020')
|
|
125
|
+
ajv = new Ajv()
|
|
126
|
+
} else if (environment === 'json-type-definition' || environment === 'jtd' || environment === 'rfc8927') {
|
|
127
|
+
const Ajv = requireAjv('AjvJTD')
|
|
128
|
+
ajv = new Ajv()
|
|
115
129
|
} else {
|
|
116
|
-
throw new RangeError('Unsupported environment for the JSON
|
|
130
|
+
throw new RangeError('Unsupported environment for the JSON Schema validation: "' +
|
|
117
131
|
environment + '".')
|
|
118
132
|
}
|
|
119
133
|
return ajv
|
|
@@ -124,7 +138,7 @@
|
|
|
124
138
|
try {
|
|
125
139
|
parsed = jsonlint.parse(schema, parseOptions)
|
|
126
140
|
} catch (error) {
|
|
127
|
-
error.message = 'Parsing the JSON
|
|
141
|
+
error.message = 'Parsing the JSON Schema failed.\n' + error.message
|
|
128
142
|
throw error
|
|
129
143
|
}
|
|
130
144
|
try {
|
|
@@ -134,7 +148,7 @@
|
|
|
134
148
|
const betterError = errors
|
|
135
149
|
? createError(errors, parsed, schema, parseOptions)
|
|
136
150
|
: originalError
|
|
137
|
-
betterError.message = 'Compiling the JSON
|
|
151
|
+
betterError.message = 'Compiling the JSON Schema failed.\n' + betterError.message
|
|
138
152
|
throw betterError
|
|
139
153
|
}
|
|
140
154
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prantlf/jsonlint",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "13.0.0",
|
|
4
4
|
"description": "JSON/CJSON/JSON5 parser, syntax and schema validator and pretty-printer.",
|
|
5
5
|
"author": "Ferdinand Prantl <prantlf@gmail.com> (http://prantl.tk)",
|
|
6
6
|
"contributors": [
|
|
@@ -36,17 +36,14 @@
|
|
|
36
36
|
"web"
|
|
37
37
|
],
|
|
38
38
|
"engines": {
|
|
39
|
-
"node": ">=
|
|
39
|
+
"node": ">= 14"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"compile": "node scripts/bundle-jsonlint && terser -o web/jsonlint.min.js --source-map \"filename='jsonlint.js',url='jsonlint.min.js.map',includeSources=true\" lib/jsonlint.js && terser -o web/validator.min.js --source-map \"filename='validator.js',url='validator.min.js.map',includeSources=true\" lib/validator.js && terser -o web/formatter.min.js --source-map \"filename='formatter.js',url='formatter.min.js.map',includeSources=true\" lib/formatter.js && terser -o web/sorter.min.js --source-map \"filename='sorter.js',url='sorter.min.js.map',includeSources=true\" lib/sorter.js && terser -o web/printer.min.js --source-map \"filename='printer.js',url='printer.min.js.map',includeSources=true\" lib/printer.js && node scripts/bundle-schema-drafts && terser -o web/schema-drafts.min.js --source-map \"filename='schema-drafts.js',url='schema-drafts.min.js.map',includeSources=true\" lib/schema-drafts.js && terser -o web/ajv.min.js --source-map \"filename='ajv.js',url='ajv.min.js.map',includeSources=true\" node_modules/ajv/dist/ajv.bundle.js",
|
|
48
|
-
"compile:tests": "tsc --lib es6 test/typings.test.ts",
|
|
49
|
-
"test": "nyc --silent node test/typings.test.js && nyc --silent --no-clean node test/parse1 && nyc --silent --no-clean node test/parse1 --native-parser && nyc --silent --no-clean node test/parse2 && nyc --silent --no-clean node test/parse3 && nyc --silent --no-clean node test/parse4 && nyc --silent --no-clean node test/parse5 && nyc --silent --no-clean node test/portable && nyc --silent --no-clean node test/tokenize && nyc --silent --no-clean node test/print && nyc --silent --no-clean node lib/cli package.json test/recursive && nyc --silent --no-clean node lib/cli -sq test/passes/hasOwnProperty.json && nyc --silent --no-clean node lib/cli -s -e json-schema-draft-04 -V test/passes/3.schema.json test/passes/3.json && nyc --silent --no-clean node lib/cli -C test/passes/comments.txt && nyc --silent --no-clean node lib/cli -pS test/passes/strings.txt && nyc --silent --no-clean node lib/cli -M json5 test/passes/json5.text && nyc --silent --no-clean node lib/cli -v && nyc --silent --no-clean node lib/cli -h && nyc --silent --no-clean node lib/cli -Pc test/fails/10.json || nyc --silent --no-clean node lib/cli -f test/.jsonrc.yml 'test/**/*.json' '!**/fails' && nyc report",
|
|
42
|
+
"build": "npm run compile:jsonlint && rollup -c && npm run minify && npm run compile:tests",
|
|
43
|
+
"compile:jsonlint": "cat.js src/prefix.js.txt src/unicode.js src/custom-parser.js src/pointer.js src/native-parser.js src/configurable-parser.js src/suffix.js.txt > lib/jsonlint.js",
|
|
44
|
+
"minify": "esbuild --minify --sourcemap --outfile=web/jsonlint.min.js lib/jsonlint.js && esbuild --minify --sourcemap --outfile=web/validator.min.js lib/validator.js && esbuild --minify --sourcemap --outfile=web/formatter.min.js lib/formatter.js && esbuild --minify --sourcemap --outfile=web/sorter.min.js lib/sorter.js && esbuild --minify --sourcemap --outfile=web/printer.min.js lib/printer.js && esbuild --minify --sourcemap --outfile=web/ajv.min.js node_modules/ajv6/dist/ajv.bundle.js",
|
|
45
|
+
"compile:tests": "tsc --moduleResolution node --module es2022 test/types.test.ts && mv.js test/types.test.js test/types.test.mjs",
|
|
46
|
+
"test": "denolint && c8 node test/types.test.mjs && c8 --no-clean node test/parse1 && c8 --no-clean node test/parse1 --native-parser && c8 --no-clean node test/parse2 && c8 --no-clean node test/parse3 && c8 --no-clean node test/parse4 && c8 --no-clean node test/parse5 && c8 --no-clean node test/portable && c8 --no-clean node test/tokenize && c8 --no-clean node test/print && c8 --no-clean node lib/cli package.json test/recursive && c8 --no-clean node lib/cli -sq test/passes/hasOwnProperty.json && c8 --no-clean node lib/cli -s -e json-schema-draft-04 -V test/passes/schema-04.json test/passes/data-04.json && c8 --no-clean node lib/cli -s -e json-schema-draft-07 -V test/passes/schema-07.json test/passes/data-07.json && c8 --no-clean node lib/cli -C test/passes/comments.txt && c8 --no-clean node lib/cli -pS test/passes/strings.txt && c8 --no-clean node lib/cli -M json5 test/passes/json5.text && c8 --no-clean node lib/cli -v && c8 --no-clean node lib/cli -h && c8 --no-clean node lib/cli -Pc test/fails/10.json || c8 --no-clean node lib/cli -f test/.jsonrc.yml 'test/**/*.json' '!**/fails' && c8 report",
|
|
50
47
|
"start": "http-server -c 5",
|
|
51
48
|
"web": "npm run web:sync && npm run web:deploy",
|
|
52
49
|
"web:clone": "test ! -d ../jsonlint-pages && git clone --single-branch --branch gh-pages `git remote get-url origin` ../jsonlint-pages",
|
|
@@ -54,7 +51,7 @@
|
|
|
54
51
|
"web:sync": "cp web/*.min.* ../jsonlint-pages/ && cp web/jsonlint.html ../jsonlint-pages/index.html",
|
|
55
52
|
"web:deploy": "cd ../jsonlint-pages && git commit -a -m 'Deploy site updates' && git push origin gh-pages"
|
|
56
53
|
},
|
|
57
|
-
"
|
|
54
|
+
"c8": {
|
|
58
55
|
"reporter": [
|
|
59
56
|
"lcov",
|
|
60
57
|
"text"
|
|
@@ -76,29 +73,33 @@
|
|
|
76
73
|
]
|
|
77
74
|
},
|
|
78
75
|
"dependencies": {
|
|
79
|
-
"ajv": "
|
|
80
|
-
"
|
|
81
|
-
"
|
|
76
|
+
"ajv": "8.12.0",
|
|
77
|
+
"ajv6": "npm:ajv@6.12.6",
|
|
78
|
+
"commander": "10.0.0",
|
|
79
|
+
"cosmiconfig": "8.1.0",
|
|
82
80
|
"diff": "5.1.0",
|
|
83
81
|
"fast-glob": "3.2.12"
|
|
84
82
|
},
|
|
85
83
|
"devDependencies": {
|
|
86
|
-
"@
|
|
84
|
+
"@rollup/plugin-commonjs": "24.0.1",
|
|
85
|
+
"@rollup/plugin-json": "6.0.0",
|
|
86
|
+
"@rollup/plugin-node-resolve": "15.0.1",
|
|
87
|
+
"@semantic-release/changelog": "6.0.2",
|
|
87
88
|
"@semantic-release/git": "10.0.1",
|
|
88
|
-
"@types/node": "18.
|
|
89
|
-
"@
|
|
90
|
-
"@
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"eslint-plugin-n": "15.3.0",
|
|
95
|
-
"eslint-plugin-promise": "6.0.1",
|
|
89
|
+
"@types/node": "18.14.6",
|
|
90
|
+
"@unixcompat/cat.js": "1.0.2",
|
|
91
|
+
"@unixcompat/mv.js": "1.0.1",
|
|
92
|
+
"c8": "7.13.0",
|
|
93
|
+
"denolint": "2.0.7",
|
|
94
|
+
"esbuild": "0.17.11",
|
|
96
95
|
"http-server": "14.1.1",
|
|
97
96
|
"js-yaml": "4.1.0",
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
97
|
+
"rollup": "3.18.0",
|
|
98
|
+
"rollup-plugin-swc-minify": "1.0.5",
|
|
99
|
+
"tehanu": "1.0.1",
|
|
100
|
+
"tehanu-repo-coco": "1.0.0",
|
|
101
|
+
"tehanu-teru": "1.0.0",
|
|
102
|
+
"typescript": "4.9.5"
|
|
102
103
|
},
|
|
103
104
|
"keywords": [
|
|
104
105
|
"json",
|