@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 CHANGED
@@ -1,7 +1,7 @@
1
1
  MIT License
2
2
 
3
3
  Copyright (c) 2012-2018 Zachary Carter
4
- Copyright (c) 2019-2022 Ferdinand Prantl
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 schema file to use for validation
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 schema validation are "json-schema-draft-04", "json-schema-draft-06"
168
- or "json-schema-draft-07". If not specified, it will be auto-detected.
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 schema using the `lib/validator` module. The `validate` method accepts either an earlier parsed JSON data or a string with the JSON input:
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 schema')
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 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:
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 schema', {
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-2022 Zachary Carter, Ferdinand Prantl
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 schema file to use for validation')
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 schema validation are "json-schema-draft-04", "json-schema-draft-06"')
59
- console.log('or "json-schema-draft-07". If not specified, it will be auto-detected.')
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 schema failed: "' +
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' | 'json-schema-draft-06' | 'json-schema-draft-07'
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' | 'json-schema-draft-06' | 'json-schema-draft-07'`
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
- const Uni = { // eslint-disable-line no-unused-vars
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
- function parseCustom (input, options) { // eslint-disable-line no-unused-vars
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
- function tokenize (input, options) { // eslint-disable-line no-unused-vars
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
- function pathToPointer (tokens) { // eslint-disable-line no-unused-vars
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
- function pointerToPath (pointer) { // eslint-disable-line no-unused-vars
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)) { // eslint-disable-line no-cond-assign
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
- function parseNative (input, reviver) { // eslint-disable-line no-unused-vars
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
- function parse (input, options) { // eslint-disable-line no-unused-vars
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 Ajv = require('ajv')
5
- // eslint-disable-next-line no-inner-declarations
6
- function requireSchemaDraft (environment) {
7
- return require('ajv/lib/refs/' + environment + '.json')
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
- factory(exports, Ajv, jsonlint, requireSchemaDraft)
10
- // eslint-disable-next-line no-undef
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
- // eslint-disable-next-line no-undef
13
- define('jsonlint-validator', ['exports', 'ajv', 'jsonlint', 'jsonlint-schema-drafts'],
14
- function (exports, jsonlint, Ajv, schemaDrafts) {
15
- function requireSchemaDraft (environment) {
16
- return schemaDrafts[environment]
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, Ajv, jsonlint, requireSchemaDraft)
26
+ factory(exports, jsonlint, requireAjv)
19
27
  })
20
28
  } else {
21
- // eslint-disable-next-line no-undef
22
29
  global = global || self
23
- const requireSchemaDraft = function (environment) {
24
- return global.jsonlintSchemaDrafts[environment]
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.Ajv, global.jsonlint, requireSchemaDraft)
35
+ factory(global.jsonlintValidator = {}, global.jsonlint, requireAjv)
27
36
  }
28
- }(this, function (exports, Ajv, jsonlint, requireSchemaDraft) {
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
- ajvOptions.schemaId = 'auto'
103
- ajv = new Ajv(ajvOptions)
104
- ajv.addMetaSchema(requireSchemaDraft('json-schema-draft-04'))
105
- ajv.addMetaSchema(requireSchemaDraft('json-schema-draft-06'))
106
- } else if (environment === 'json-schema-draft-07') {
107
- ajv = new Ajv(ajvOptions)
108
- } else if (environment === 'json-schema-draft-06') {
109
- ajv = new Ajv(ajvOptions)
110
- ajv.addMetaSchema(requireSchemaDraft('json-schema-draft-06'))
111
- } else if (environment === 'json-schema-draft-04') {
112
- ajvOptions.schemaId = 'id'
113
- ajv = new Ajv(ajvOptions)
114
- ajv.addMetaSchema(requireSchemaDraft('json-schema-draft-04'))
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 schema validation: "' +
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 schema failed.\n' + error.message
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 schema failed.\n' + betterError.message
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": "11.7.2",
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": ">= 12"
39
+ "node": ">= 14"
40
40
  },
41
41
  "scripts": {
42
- "prepare": "npm run lint && npm run build",
43
- "lint": "npm run lint:js && npm run lint:ts",
44
- "lint:js": "eslint --fix lib scripts src test",
45
- "lint:ts": "eslint -c .tslintrc.yml --fix lib/*.ts test/*.ts",
46
- "build": "npm run compile && npm run compile:tests",
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
- "nyc": {
54
+ "c8": {
58
55
  "reporter": [
59
56
  "lcov",
60
57
  "text"
@@ -76,29 +73,33 @@
76
73
  ]
77
74
  },
78
75
  "dependencies": {
79
- "ajv": "6.12.6",
80
- "commander": "9.4.0",
81
- "cosmiconfig": "7.0.1",
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
- "@semantic-release/changelog": "6.0.1",
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.7.21",
89
- "@typescript-eslint/eslint-plugin": "5.38.0",
90
- "@typescript-eslint/parser": "5.38.0",
91
- "eslint": "8.24.0",
92
- "eslint-config-standard": "17.0.0",
93
- "eslint-plugin-import": "2.26.0",
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
- "nyc": "15.1.0",
99
- "terser": "5.15.0",
100
- "test": "0.6.0",
101
- "typescript": "4.8.3"
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",