@prantlf/jsonlint 13.0.0 → 13.1.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/CHANGELOG.md ADDED
@@ -0,0 +1,414 @@
1
+ # [13.1.0](https://github.com/prantlf/jsonlint/compare/v13.0.1...v13.1.0) (2023-03-05)
2
+
3
+
4
+ ### Features
5
+
6
+ * Accept multiple schemas if external definitions are used ([32d1cab](https://github.com/prantlf/jsonlint/commit/32d1cabfc5cf00f23ec8d7b6b4a5b62e66924fa3))
7
+
8
+ ## [13.0.1](https://github.com/prantlf/jsonlint/compare/v13.0.0...v13.0.1) (2023-03-05)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * Replace ajv@6 with ajv-draft-04 ([b1535a3](https://github.com/prantlf/jsonlint/commit/b1535a3ec24be7913f0005cdd617680c02086cdf))
14
+
15
+ # [13.0.0](https://github.com/prantlf/jsonlint/compare/v12.0.0...v13.0.0) (2023-03-05)
16
+
17
+
18
+ ### Features
19
+
20
+ * Support JSON Schema drafts 2019-09 and 2020-12 and JSON Type Definition ([0b9130c](https://github.com/prantlf/jsonlint/commit/0b9130ceae5f6f27cbe3e6d65207127862ffe584))
21
+
22
+
23
+ ### BREAKING CHANGES
24
+
25
+ * The default environment recognises only JSON Schema drafts 06 and 07 automatically. Not 04 any more. The environment for JSON Schema drafts 04 has to be selected explicitly. Also, JSON Schema drafts 06 and 07 are handled by AJV@8 instead of AJV@6. It shouldn't make any difference, but the implementation is new and could perform a stricter validation.
26
+
27
+ # [12.0.0](https://github.com/prantlf/jsonlint/compare/v11.7.2...v12.0.0) (2023-03-05)
28
+
29
+
30
+ ### Bug Fixes
31
+
32
+ * Upgrade dependencies and require Node.js 14 ([87205c2](https://github.com/prantlf/jsonlint/commit/87205c2427a0ebe0d791a4189b2b2346506601b3))
33
+
34
+
35
+ ### BREAKING CHANGES
36
+
37
+ * Dropped support for Node.js 12 . The minimum supported version is Node.js 14.
38
+
39
+ ## [11.7.2](https://github.com/prantlf/jsonlint/compare/v11.7.1...v11.7.2) (2023-03-05)
40
+
41
+
42
+ ### Bug Fixes
43
+
44
+ * Use both typings and types in package.json ([5d00c00](https://github.com/prantlf/jsonlint/commit/5d00c00c7fd098674ee9d1f3dba14369debaa73b))
45
+
46
+ ## [11.7.1](https://github.com/prantlf/jsonlint/compare/v11.7.0...v11.7.1) (2023-03-05)
47
+
48
+
49
+ ### Bug Fixes
50
+
51
+ * Complete TypeScript types ([7064c50](https://github.com/prantlf/jsonlint/commit/7064c5041a292a5a87bccc2de7fc945a2ee7c160))
52
+
53
+ # [11.7.0](https://github.com/prantlf/jsonlint/compare/v11.6.0...v11.7.0) (2022-09-26)
54
+
55
+
56
+ ### Bug Fixes
57
+
58
+ * Upgrade npm dependencies ([81526ce](https://github.com/prantlf/jsonlint/commit/81526ce034cf52623dbca986cf9d450287fb104a))
59
+
60
+
61
+ ### Features
62
+
63
+ * Ignore the leading UTF-8 byte-order mark (BOM) ([311c6df](https://github.com/prantlf/jsonlint/commit/311c6df75963a5b6da3984ba85541b800d751939))
64
+
65
+ # [11.6.0](https://github.com/prantlf/jsonlint/compare/v11.5.0...v11.6.0) (2022-05-04)
66
+
67
+
68
+ ### Bug Fixes
69
+
70
+ * Do not generate text diff if not needed ([0423a4b](https://github.com/prantlf/jsonlint/commit/0423a4b1fbc10cb6a201fe79e29a2b0e0101f3d0))
71
+
72
+
73
+ ### Features
74
+
75
+ * Allow setting the line count as diff context ([9b22843](https://github.com/prantlf/jsonlint/commit/9b22843a93ec47c0e18b1833618072083989b431))
76
+
77
+ # [11.5.0](https://github.com/prantlf/jsonlint/compare/v11.4.0...v11.5.0) (2022-05-03)
78
+
79
+
80
+ ### Bug Fixes
81
+
82
+ * Do not print file names twice in the compact mode ([86691cc](https://github.com/prantlf/jsonlint/commit/86691cc5fea760a437cae5aff71f0acc987c4e05))
83
+
84
+
85
+ ### Features
86
+
87
+ * Add option "diff" to print the difference instead of the output ([cb3826c](https://github.com/prantlf/jsonlint/commit/cb3826c7610aae8d23623da3693e45cbf942223e))
88
+
89
+ # [11.4.0](https://github.com/prantlf/jsonlint/compare/v11.3.0...v11.4.0) (2022-05-03)
90
+
91
+
92
+ ### Features
93
+
94
+ * Introduce a check that the formatted output is the same as the input ([75167f7](https://github.com/prantlf/jsonlint/commit/75167f76c4bbd13551ca7e20824cc05095fc6be0))
95
+
96
+ # [11.3.0](https://github.com/prantlf/jsonlint/compare/v11.2.0...v11.3.0) (2022-05-03)
97
+
98
+
99
+ ### Bug Fixes
100
+
101
+ * Fix the regex splitting input by line breaks ([7423806](https://github.com/prantlf/jsonlint/commit/74238065643d31044990801713410041cdbb55f0))
102
+
103
+
104
+ ### Features
105
+
106
+ * Read options from configuration files ([7eebd76](https://github.com/prantlf/jsonlint/commit/7eebd765f66bcd3bcd6cde7d9c128cbacaca1285))
107
+
108
+ # [11.2.0](https://github.com/prantlf/jsonlint/compare/v11.1.1...v11.2.0) (2022-05-01)
109
+
110
+
111
+ ### Features
112
+
113
+ * Allow logging only the name of processed files ([91346d9](https://github.com/prantlf/jsonlint/commit/91346d95459f5b516ae71233050262534f197fbf))
114
+ * Allow to continue processing in case of error ([e5318eb](https://github.com/prantlf/jsonlint/commit/e5318ebb75f90459ff4164ec6e84efcc34a9bf4c))
115
+ * Support BASH patterns to specify input files ([31d162f](https://github.com/prantlf/jsonlint/commit/31d162fa9578bd6888d01c3cd0175960b5740d86))
116
+
117
+ ## [11.1.1](https://github.com/prantlf/jsonlint/compare/v11.1.0...v11.1.1) (2022-05-01)
118
+
119
+
120
+ ### Bug Fixes
121
+
122
+ * Retain the original last line break in the processed file ([54fd5ab](https://github.com/prantlf/jsonlint/commit/54fd5ab0349300c7bd11dfa6baf4e787e40bead9))
123
+
124
+ # [11.1.0](https://github.com/prantlf/jsonlint/compare/v11.0.0...v11.1.0) (2022-05-01)
125
+
126
+ ### Bug Fixes
127
+
128
+ * Merge remote-tracking branch 'xmedeko/patch-1' ([da3e1dc](https://github.com/prantlf/jsonlint/commit/da3e1dca6ce6efcd8d5bd775d75bad06d8c46223))
129
+
130
+ ### Features
131
+
132
+ * Optionally ensure a line break at the end of the output ([226019e](https://github.com/prantlf/jsonlint/commit/226019eb75c675eab1dca817ff0dc42e0223d197))
133
+
134
+ # [11.0.0](https://github.com/prantlf/jsonlint/compare/v10.2.0...v11.0.0) (2022-05-01)
135
+
136
+ ### Bug Fixes
137
+
138
+ * Upgrade dependencies ([0d35969](https://github.com/prantlf/jsonlint/commit/0d359690aa19884a6d17990c476cf780b39663c0))
139
+
140
+ ### BREAKING CHANGES
141
+
142
+ * The minimum supported version has become Node.js 12 instead of the previous Node.js 6. At least `commander` needs the new version.
143
+
144
+ # [10.2.0](https://github.com/prantlf/jsonlint/compare/v10.1.1...v10.2.0) (2019-12-28)
145
+
146
+ ### Features
147
+
148
+ * Allow trimming trailing commas in arrays and objects (JSON5) ([136ea99](https://github.com/prantlf/jsonlint/commit/136ea995bef7b0f77c2ac54b6ce7dd8572190bf8))
149
+ * Allow unifying quotes around object keys to double or single ones (JSON5) ([6b6da17](https://github.com/prantlf/jsonlint/commit/6b6da175cfea8f71841e145a525ef124c19c2607))
150
+
151
+ # [10.1.1](https://github.com/prantlf/jsonlint/compare/v10.1.0...v10.1.1) (2019-12-27)
152
+
153
+ ### Bug Fixes
154
+
155
+ * Restore compatibility with IE11 ([55b8a48](https://github.com/prantlf/jsonlint/commit/55b8a4816b08c5504cf7f0841d1997634a6376ea))
156
+
157
+ # [10.1.0](https://github.com/prantlf/jsonlint/compare/v10.0.2...v10.1.0) (2019-12-27)
158
+
159
+ ### Features
160
+
161
+ * Alternatively accept number of spaces for the indent parameter ([4c25739](https://github.com/prantlf/jsonlint/commit/4c257399b77e446c198b25049fae2ca08ad174ec))
162
+
163
+ # [10.0.2](https://github.com/prantlf/jsonlint/compare/v10.0.1...v10.0.2) (2019-12-27)
164
+
165
+ ### Bug Fixes
166
+
167
+ * Do not modify input options in the tokenize method ([7e3ac0b](https://github.com/prantlf/jsonlint/commit/7e3ac0babf873c42da1daadaee2bbe55d2644690))
168
+
169
+ # [10.0.1](https://github.com/prantlf/jsonlint/compare/v10.0.0...v10.0.1) (2019-12-27)
170
+
171
+ ### Bug Fixes
172
+
173
+ * Pretty-printer: keep the comment after opening an object scope indented ([4fbc09d](https://github.com/prantlf/jsonlint/commit/4fbc09d402ed5442e2de77382342267e330cb908))
174
+
175
+ # [10.0.0](https://github.com/prantlf/jsonlint/compare/v9.0.0...v10.0.0) (2019-12-27)
176
+
177
+ ### Bug Fixes
178
+
179
+ * Rename the property "exzerpt" in error information to "excerpt" ([4c74e3d](https://github.com/prantlf/jsonlint/commit/4c74e3d866fc54a7b2f833ff522efbaef3331bbe))
180
+
181
+ ### Features
182
+
183
+ * Add support for pretty-printing of the JSON input ([d5eaa93](https://github.com/prantlf/jsonlint/commit/d5eaa9350d654050316b186dc8965ce9cb45d905))
184
+
185
+ ### BREAKING CHANGES
186
+
187
+ * If you used the property "exzerpt" from the parsing error object, you have to change it to "excerpt". It should be easy using a full-text search in your sources.
188
+ * The option for pretty-printing *invalid input* has been renamed:
189
+
190
+ -p (--pretty-print) ==> -P (--pretty-print-invalid)
191
+
192
+ The option `-p (--pretty-print)` will newly prettify the raw (text) input instead of formatting the parsed JSON object.
193
+
194
+ # [9.0.0](https://github.com/prantlf/jsonlint/compare/v8.0.3...v9.0.0) (2019-12-22)
195
+
196
+ ### chore
197
+
198
+ * Upgrade package dependencies ([4a8f2d9](https://github.com/prantlf/jsonlint/commit/4a8f2d9c27428da32b95f607bf7952190636af9f))
199
+
200
+ ### Features
201
+
202
+ * Add TypeScript typings ([ba6c979](https://github.com/prantlf/jsonlint/commit/ba6c9790792837fdc3abd0032899ffd04953cf3d))
203
+
204
+ ### BREAKING CHANGES
205
+
206
+ * Dependencies (commander, at least) dropped support for Node.js 4. Node.js 6 should still work, but officially it is not supported either. You should upgrade to the current or still supported Node.js LTS version.
207
+
208
+ ## [8.0.3](https://github.com/prantlf/jsonlint/compare/v8.0.2...v8.0.3) (2019-09-24)
209
+
210
+ ### Bug Fixes
211
+
212
+ * Upgrade package dependencies and adapt sources ([9f1f332](https://github.com/prantlf/jsonlint/commit/9f1f332960c91d9779bff995457154157df8823b))
213
+
214
+ ## [8.0.2](https://github.com/prantlf/jsonlint/compare/v8.0.1...v8.0.2) (2019-07-04)
215
+
216
+ ### Bug Fixes
217
+
218
+ * Put only the reason of the error to the error.reason property when the custom parser is used; not the full message including the error context ([8d7f0b1](https://github.com/prantlf/jsonlint/commit/8d7f0b13b2bfe7e854c965b7266e5de1dec79229))
219
+ * Update newline replacement regex to show correct error position on Windows ([7af364c](https://github.com/prantlf/jsonlint/commit/7af364cbafd84326f20f29adbacde1cd0f70e57a))
220
+
221
+ # [8.0.0](https://github.com/prantlf/jsonlint/compare/v7.0.3...v8.0.0) (2019-06-16)
222
+
223
+ ### Bug Fixes
224
+
225
+ * Give the schema-drafts.js proper name and path in source maps ([c2f0148](https://github.com/prantlf/jsonlint/commit/c2f0148cb027e335fa2bb644f3c09a9c51303193))
226
+
227
+ ### Features
228
+
229
+ * Add the tokenize method returning tokens instead of the parsed object ([cc7b554](https://github.com/prantlf/jsonlint/commit/cc7b55495b3287279aa0c27e242d3e90d8636d66))
230
+ * Improve schema error reporting to the level of data parsing ([ea5a8a2](https://github.com/prantlf/jsonlint/commit/ea5a8a2f917f6a07212f8a4e05af22c14e5f1883))
231
+ * Remove deprecated exports `Parser` and `parser` ([8bda5b1](https://github.com/prantlf/jsonlint/commit/8bda5b1455d8d176997dcce0bbcd622985888fc7))
232
+
233
+ ### BREAKING CHANGES
234
+
235
+ * The `Parser` class and `parser` instance did not bring any benefit. They were generated by Jison. After abandoning the Jison parser they were kept for compatibility only. The only method on the `Parser` prototype was the `parse`. It remains unchanged as a direct export. Drop the class interface and just call the `parse` method directly.
236
+
237
+ ## [7.0.3](https://github.com/prantlf/jsonlint/compare/v7.0.2...v7.0.3) (2019-06-03)
238
+
239
+ ### Bug Fixes
240
+
241
+ * Ensure, that tokens and keys in error messages are enclosed in quotation marks ([2149198](https://github.com/prantlf/jsonlint/commit/2149198721fc8dd05632b2225c621ebf7b5e14b7))
242
+
243
+ ## [7.0.2](https://github.com/prantlf/jsonlint/compare/v7.0.1...v7.0.2) (2019-06-02)
244
+
245
+ ### Bug Fixes
246
+
247
+ * Upgrade minificating module ([04d80d7](https://github.com/prantlf/jsonlint/commit/04d80d752c4900f26585d9a809b8ac6d0eef696d))
248
+
249
+ ## [7.0.1](https://github.com/prantlf/jsonlint/compare/v7.0.0...v7.0.1) (2019-06-02)
250
+
251
+ ### Bug Fixes
252
+
253
+ * Recognize boxed string as schema environment too ([e37b004](https://github.com/prantlf/jsonlint/commit/e37b0042376cf5beafc93bf906ee70b583f08969))
254
+
255
+ # [7.0.0](https://github.com/prantlf/jsonlint/compare/v6.3.1...v7.0.0) (2019-06-02)
256
+
257
+ ### Bug Fixes
258
+
259
+ * Do not use the native parser in Safari and Node.js 4 ([a4a606c](https://github.com/prantlf/jsonlint/commit/a4a606c333e443642ced99d466223607bce11461))
260
+ * Include the minified scripts used on the on-line page in the NPM module ([03561ec](https://github.com/prantlf/jsonlint/commit/03561ecba00c5d23dfba41831bea818837a7b804))
261
+
262
+ ### Features
263
+
264
+ * Add "mode" parameter to set flags for a typical format type easier ([9aa09fb](https://github.com/prantlf/jsonlint/commit/9aa09fbc9980e78fa0fed134ce48d99412b619a9))
265
+ * Add an option for ignoring trailing commas in object and arrays ([7d521fb](https://github.com/prantlf/jsonlint/commit/7d521fb68ea7919625cc6bc5f5179ce69f6b5985))
266
+ * Add an option for reporting duplicate object keys as an error ([09e3977](https://github.com/prantlf/jsonlint/commit/09e39772de088b73e43dac551533a160bc09903c))
267
+ * Replace the parser generated by Jison with a hand-built parser from JJU ([2781670](https://github.com/prantlf/jsonlint/commit/27816706435fb48fb8816d743bc56d6d34c4c6c8))
268
+ * Support `reviver` from the native `JSON.parse` method ([83cd33c](https://github.com/prantlf/jsonlint/commit/83cd33c937851482799e01bf7262a9ba93bed6cf))
269
+
270
+ ### BREAKING CHANGES
271
+
272
+ * There is no `yy.parseError` to intercept error handling. Use the thrown error - it contains all available information. The error does not include the `hash` object with structured information. Look for the [documentd properties](/prantlf/jsonlint#error-handling). The location of the error occurrence is available as `location.start`, for example.
273
+
274
+ DEPRECATION: The only exposed object to use from now on is the `parse` method as a named export. Other exports (`parser` and `Parser`) are deprecated and will be removed in future.
275
+
276
+ The parser from ["Utilities to work with JSON/JSON5 documents"](/rlidwka/jju) is four times faster, than the previous one, has approximatly the same size and can be easier enhanced, regarding both features and error handling.
277
+
278
+ ## [6.3.1](https://github.com/prantlf/jsonlint/compare/v6.3.0...v6.3.1) (2019-05-31)
279
+
280
+ ### Bug Fixes
281
+
282
+ * Recognise the location of error occurrences in Firefox ([7c8c040](https://github.com/prantlf/jsonlint/commit/7c8c040e8f9d259bf573c04f8f6a7df15587a54a))
283
+
284
+ # [6.3.0](https://github.com/prantlf/jsonlint/compare/v6.2.1...v6.3.0) (2019-05-30)
285
+
286
+ ### Bug Fixes
287
+
288
+ * Auto-detect the version of the JSON Schema draft by default ([1fe98ef](https://github.com/prantlf/jsonlint/commit/1fe98ef4e3ee5cd26055e6f73f11387635a078a3))
289
+ * Prefer the native JSON parser, if possible, to improve performance ([1639356](https://github.com/prantlf/jsonlint/commit/16393562769a9f77741347fd9cda15c5207f1fee))
290
+
291
+ ### Features
292
+
293
+ * Support parser options for customisation and performance in JSON schema parsing too ([d562826](https://github.com/prantlf/jsonlint/commit/d562826f604f8c3df5656a79ee4c2085c203f91c))
294
+
295
+ ## [6.2.1](https://github.com/prantlf/jsonlint/compare/v6.2.0...v6.2.1) (2019-05-30)
296
+
297
+ ### Bug Fixes
298
+
299
+ * Include source code in source maps on the on-line validator page ([31e0097](https://github.com/prantlf/jsonlint/commit/31e0097de3c2c5a30e3695d1d5b3f411dc7b6723))
300
+
301
+ # [6.2.0](https://github.com/prantlf/jsonlint/compare/v6.1.0...v6.2.0) (2019-05-30)
302
+
303
+ ### Features
304
+
305
+ * Extract the functionality for sorting object keys to a module ([a53bd93](https://github.com/prantlf/jsonlint/commit/a53bd9392b2116b5272c77deee9423ba16b5f520))
306
+
307
+ # [6.1.0](https://github.com/prantlf/jsonlint/compare/v6.0.0...v6.1.0) (2019-05-27)
308
+
309
+ ### Bug Fixes
310
+
311
+ * Fix the missing function object (Parser) in the main module exports ([eb892aa](https://github.com/prantlf/jsonlint/commit/eb892aab516754ec3bf2eb01ff575fe0c173a510))
312
+ * Restore context options (yy) set in the Parser constructor after the call to parse, if the options were overridden by the method arguments ([787c350](https://github.com/prantlf/jsonlint/commit/787c350c201ac0971e42d5b9f224689600e5c11f))
313
+
314
+ ### Features
315
+
316
+ * Use the native JSON parser if a limited error information is enough ([8aa9fb1](https://github.com/prantlf/jsonlint/commit/8aa9fb10d6c6f7f148d8c7816cc73d6b8385aace))
317
+
318
+ # [6.0.0](https://github.com/prantlf/jsonlint/compare/v5.0.0...v6.0.0) (2019-05-26)
319
+
320
+ ### Features
321
+
322
+ * Declare modules in this package using UMD ([d442583](https://github.com/prantlf/jsonlint/commit/d4425837cea5c11352f988e3723455b8d8f5115b))
323
+ * Remove ParserWithComments and parseWithComment from the interface ([3fab374](https://github.com/prantlf/jsonlint/commit/3fab374a0675a699dab3e8aed3bcf928b77fffe4))
324
+
325
+ ### BREAKING CHANGES
326
+
327
+ * The object and the method do not exist any more. Pass the parameter "ignoreComments" as an object `{ ignoreComments: true }` either to the constructor of the `Parser` object, or as the second parameter to the method `parse`.
328
+
329
+ # [5.0.0](https://github.com/prantlf/jsonlint/compare/v4.0.2...v5.0.0) (2019-05-26)
330
+
331
+ ### Bug Fixes
332
+
333
+ * Do not export "main" method, which requires other NPM modules ([d8af36a](https://github.com/prantlf/jsonlint/commit/d8af36ac292c68b0ee35460a5e7394a26fad4524))
334
+
335
+ ### Features
336
+
337
+ * Accept single quotes (apostrophes) as string delimiters ([240b8cd](https://github.com/prantlf/jsonlint/commit/240b8cd916b7424e27f7ff585ca30512e87a6566))
338
+
339
+ ### BREAKING CHANGES
340
+
341
+ * The "main" method providing a command-line interface importable from other module has been removed. If you used it, have a look at the command-line interface in `lib/cli`. You can import this module in instead and it offers a richer interface, than the previously exported "main" method. The `lib/cli` module is mapped to `bin/jsonlint` too. However, consider the default library export (`lib/jsonlint`) for programmatic usage. You will pack less JavaScript code and use smalker, mode programmer-oriented interface.
342
+
343
+ ## [4.0.2](https://github.com/prantlf/jsonlint/compare/v4.0.1...v4.0.2) (2019-05-19)
344
+
345
+ ### Bug Fixes
346
+
347
+ * Print parsing errors if the JSON input is read from stdin ([acfdf11](https://github.com/prantlf/jsonlint/commit/acfdf11e11a8f355cdd8fd1abf09edde664d8c02))
348
+
349
+ ## [4.0.1](https://github.com/prantlf/jsonlint/compare/v4.0.0...v4.0.1) (2019-05-19)
350
+
351
+ ### Bug Fixes
352
+
353
+ * Do not fail sorting objects with a property called "hasOwnProperty" ([b544ceb](https://github.com/prantlf/jsonlint/commit/b544ceb54d44e8273dd7a1d28fc7f69a527fd806))
354
+
355
+ # [4.0.0](https://github.com/prantlf/jsonlint/compare/v3.0.0...v4.0.0) (2019-05-19)
356
+
357
+ ### Bug Fixes
358
+
359
+ * Standardize the interface of the "jsonlint/lib/formatter" module ([b8b041b](https://github.com/prantlf/jsonlint/commit/b8b041bcc0e6ea672ec4575c5b108f347cfef69a))
360
+
361
+ ### Features
362
+
363
+ * Add web and programmatic interfaces to JSON Schema validation ([d45b243](https://github.com/prantlf/jsonlint/commit/d45b243bf1d083df58d9959d42eb3a787f5e7d89))
364
+
365
+ ### BREAKING CHANGES
366
+
367
+ * The formatting method is exposed not as exports.formatter.formatJson, but as exports.format.
368
+ This module is not documented and it is unlikely, that it broke other project.
369
+
370
+ # [3.0.0](https://github.com/prantlf/jsonlint/compare/v2.0.1...v3.0.0) (2019-05-18)
371
+
372
+ ### Bug Fixes
373
+
374
+ * Replace JSON schema validator JSV with ajv, because JSV is not maintained any more and does not support current JSON schema drafts ([1a4864f](https://github.com/prantlf/jsonlint/commit/1a4864f63ba14cb86a4e677fc23e5c1e963d2e07))
375
+
376
+ ### BREAKING CHANGES
377
+
378
+ * The environment for the JSON schema validation "json-schema-draft-03" is not available any more.
379
+ Migrate your schemas from the JSON schema draft 03 to 04 or newer. Drafts 04, 06 and 07 are supported with this release.
380
+
381
+ ## [2.0.1](https://github.com/prantlf/jsonlint/compare/v2.0.0...v2.0.1) (2019-05-18)
382
+
383
+ ### Bug Fixes
384
+
385
+ * Do not depend on the standard checker in the release package ([1e9c7b5](https://github.com/prantlf/jsonlint/commit/1e9c7b5b5c091332270dbe6b2203fd66644bf355))
386
+
387
+ # [2.0.0](https://github.com/prantlf/jsonlint/compare/v1.7.0...v2.0.0) (2019-05-18)
388
+
389
+ ### Bug Fixes
390
+
391
+ * Accept any file extension on the command line directly ([14ba31c](https://github.com/prantlf/jsonlint/commit/14ba31cf5adc0ddb24d6c318866b6bf9a3c6ae48))
392
+ * Do not distribute the web directory in the npm module ([7379be8](https://github.com/prantlf/jsonlint/commit/7379be83e3dc511785c4506e8ab55b77e014724e))
393
+ * Make the compact-errors mode working with the latest Jison output ([d417a9c](https://github.com/prantlf/jsonlint/commit/d417a9c39047be929b9f7589da9c2d3c188db7f9))
394
+ * Rename the long name of the option "extension" to "extensions" ([383e50a](https://github.com/prantlf/jsonlint/commit/383e50a6a00ee4641f8ae863b46e1af7bade7ee9))
395
+ * Replace nomnom as command-line parser with commander, which is maintaitained ([6694bba](https://github.com/prantlf/jsonlint/commit/6694bba56fc821cbe2622340c9753506fa026580))
396
+ * Report the right file name in the compact-errors mode, if multiple files or directories are engtered ([7c80326](https://github.com/prantlf/jsonlint/commit/7c80326a69a8df8f1f7ea66dced4a888ea321d9b))
397
+
398
+ ### Features
399
+
400
+ * Add a checkbox to recognize JavaScript-style comments to the web page ([2a9082a](https://github.com/prantlf/jsonlint/commit/2a9082a26d1316a80ebf132d159e5bf49c3d0978))
401
+ * Support parsing and skipping JavaScript-style comments in the JSON input ([4955c58](https://github.com/prantlf/jsonlint/commit/4955c58788dd3b8c3a7a4358cbf65af72a353d0d))
402
+
403
+ ### BREAKING CHANGES
404
+
405
+ * The options "extension" is not recognized any more.
406
+ Use the option "extensions" with the same semantics instead.
407
+
408
+ # [1.7.0](https://github.com/prantlf/jsonlint/compare/v1.6.4...v1.7.0) (2019-05-18)
409
+
410
+ ### Features
411
+
412
+ * Allow specifying JSON file extensions for directory walk ([d8e8076](https://github.com/prantlf/jsonlint/commit/d8e8076edb831a577f5e272a5ea9e4edd077671b))
413
+
414
+ This is the first version released after forking the [original project](https://github.com/zaach/jsonlint).
package/README.md CHANGED
@@ -16,14 +16,15 @@ This is a fork of the original project ([zaach/jsonlint](https://github.com/zaac
16
16
  * Optionally recognizes JavaScript-style comments (CJSON) and single quoted strings (JSON5).
17
17
  * Optionally ignores trailing commas and reports duplicate object keys as an error.
18
18
  * Optionally checks that also the expected format matches, including sorted object keys.
19
- * Supports [JSON Schema] drafts 04, 06 and 07.
19
+ * Supports [JSON Schema] drafts 04, 06, 07, 2019-09 and 2020-12.
20
+ * Supports [JSON Type Definition].
20
21
  * Offers pretty-printing including comment-stripping and object keys without quotes (JSON5).
21
- * Prefers the native JSON parser if possible to run [7x faster than the custom parser].
22
+ * Prefers the native JSON parser if possible to run [10x faster than the custom parser].
22
23
  * Reports errors with rich additional information. From the JSON Schema validation too.
23
24
  * Consumes configuration from both command line and [configuration files](configuration).
24
25
  * Implements JavaScript modules using [UMD] to work in Node.js, in a browser, everywhere.
25
26
  * Depends on up-to-date npm modules with no installation warnings.
26
- * Small size - 18.7 kB minified, 6.54 kB gzipped, 5.16 kB brotlied.
27
+ * Small size - 18.4 kB minified, 6.45 kB gzipped, 5.05 kB brotlied.
27
28
 
28
29
  **Note:** In comparison with the original project, this package exports only the `parse` method; not the `Parser` object.
29
30
 
@@ -113,50 +114,42 @@ The input can be checked not only to be a valid JSON, but also to be formatted a
113
114
 
114
115
  ### Usage
115
116
 
116
- Usage: `jsonlint [options] [<file, directory, pattern> ...]`
117
+ Usage: `jsonlint [options] [--] [<file, directory, pattern> ...]`
117
118
 
118
119
  #### Options
119
120
 
120
- -f, --config [file] read options from a custom configuration file
121
- -F, --no-config disable searching for configuration file
121
+ -f, --config <file> read options from a custom configuration file
122
+ -F, --no-config disable searching for configuration files
122
123
  -s, --sort-keys sort object keys (not when prettifying)
123
- -E, --extensions [ext] file extensions to process for directory walk
124
- (default: ["json","JSON"])
124
+ -E, --extensions <ext...> file extensions to process for directory walk (default: ["json","JSON"])
125
125
  -i, --in-place overwrite the input files
126
126
  -j, --diff print difference instead of writing the output
127
127
  -k, --check check that the input is equal to the output
128
- -t, --indent [num|char] number of spaces or specific characters
129
- to use for indentation (default: 2)
128
+ -t, --indent <num|char> number of spaces or specific characters to use for indentation (default: 2)
130
129
  -c, --compact compact error display
131
- -M, --mode [mode] set other parsing flags according to a format
132
- type (default: "json")
130
+ -M, --mode <mode> set other parsing flags according to a format type (default: "json")
133
131
  -B, --bom ignore the leading UTF-8 byte-order mark
134
132
  -C, --comments recognize and ignore JavaScript-style comments
135
133
  -S, --single-quoted-strings support single quotes as string delimiters
136
134
  -T, --trailing-commas ignore trailing commas in objects and arrays
137
135
  -D, --no-duplicate-keys report duplicate object keys as an error
138
- -V, --validate [file] JSON Schema file to use for validation
139
- -e, --environment [env] which specification of JSON Schema the
140
- validation file uses
141
- -x, --context [num] line count used as the diff context (default: 3)
136
+ -V, --validate <file...> JSON Schema file(s) to use for validation (default: [])
137
+ -e, --environment <env> which specification of JSON Schema the validation file uses
138
+ -x, --context <num> line count used as the diff context (default: 3)
142
139
  -l, --log-files print only the parsed file names to stdout
143
140
  -q, --quiet do not print the parsed json to stdout
144
141
  -n, --continue continue with other files if an error occurs
145
- -p, --pretty-print prettify the input instead of stringifying
146
- the parsed object
142
+ -p, --pretty-print prettify the input instead of stringifying the parsed object
147
143
  -P, --pretty-print-invalid force pretty-printing even for invalid input
148
144
  -r, --trailing-newline ensure a line break at the end of the output
149
145
  -R, --no-trailing-newline ensure no line break at the end of the output
150
146
  --prune-comments omit comments from the prettified output
151
- --strip-object-keys strip quotes from object keys if possible
152
- (JSON5)
147
+ --strip-object-keys strip quotes from object keys if possible (JSON5)
153
148
  --enforce-double-quotes surrounds all strings with double quotes
154
- --enforce-single-quotes surrounds all strings with single quotes
155
- (JSON5)
156
- --trim-trailing-commas omit trailing commas from objects and arrays
157
- (JSON5)
149
+ --enforce-single-quotes surrounds all strings with single quotes (JSON5)
150
+ --trim-trailing-commas omit trailing commas from objects and arrays (JSON5)
158
151
  -v, --version output the version number
159
- -h, --help output usage information
152
+ -h, --help display help for command
160
153
 
161
154
  You can use BASH patterns for including and excluding files (only files).
162
155
  Patterns are case-sensitive and have to use slashes as directory separators.
@@ -169,6 +162,9 @@ for JSON Schema validation are "draft-04", "draft-06", "draft-07",
169
162
  with "json-schema-". JSON Type Definition can be selected by "rfc8927",
170
163
  "json-type-definition" or "jtd". If not specified, it will be "draft-07".
171
164
 
165
+ If you specify schemas using the "-V" parameter, you will have to separate
166
+ files to test with "--".
167
+
172
168
  ### Configuration
173
169
 
174
170
  In addition to the command line parameters, the options can be supplied from the following files:
@@ -274,7 +270,7 @@ The `mode` parameter (string) sets parsing options to match a common format of i
274
270
 
275
271
  ### Schema Validation
276
272
 
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:
273
+ You can validate the input against a JSON Schema using the `lib/validator` module. The `compile` method accepts either an earlier parsed JSON Schema or a string with it:
278
274
 
279
275
  ```js
280
276
  const { compile } = require('@prantlf/jsonlint/lib/validator')
@@ -283,12 +279,18 @@ const validate = compile('string with JSON Schema')
283
279
  const parsed = validate('string with JSON data')
284
280
  ```
285
281
 
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:
282
+ If a string is passed to the `compile` 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 (the default value is `draft-07`) ) can be passed either as a string or as an additional property in the options object too:
287
283
 
288
284
  ```js
289
285
  const validate = compile('string with JSON Schema', { environment: 'draft-2020-12' })
290
286
  ```
291
287
 
288
+ If you use external definitions in multiple schemas, you have to pass an array of all schemas to `compile`. The `$id` properties have to be set in each sub-schema according to the `$ref` references in the main schema. The main schema is usually sent as the first one to be compiled immediately, so that the errors in any sub-schema would be reported right away:
289
+
290
+ ```js
291
+ const validate = compile(['string with main schema', 'string with a sub-schema'])
292
+ ```
293
+
292
294
  ### Pretty-Printing
293
295
 
294
296
  You can parse a JSON string to an array of tokens and print it back to a string with some changes applied. It can be unification of whitespace, reformatting or stripping comments, for example. (Raw token values must be enabled when tokenizing the JSON input.)
@@ -372,11 +374,11 @@ If you want to retain comments or whitespace for pretty-printing, for example, s
372
374
 
373
375
  ### Performance
374
376
 
375
- This is a part of an output from the [parser benchmark], when parsing a 4.2 KB formatted string ([package.json](./package.json)) with Node.js 12.14.0:
377
+ This is a part of an output from the [parser benchmark], when parsing a 4.68 KB formatted string ([package.json](./package.json)) with Node.js 18.14.2:
376
378
 
377
- jsonlint using native JSON.parse x 97,109 ops/sec ±0.81% (93 runs sampled)
378
- jsonlint using hand-coded parser x 7,256 ops/sec ±0.54% (90 runs sampled)
379
- jsonlint using tokenising parser x 6,387 ops/sec ±0.44% (88 runs sampled)
379
+ the standard jsonlint parser x 78,998 ops/sec ±0.48% (95 runs sampled)
380
+ the extended jsonlint parser x 7,923 ops/sec ±0.51% (93 runs sampled)
381
+ the tokenising jsonlint parser x 6,281 ops/sec ±0.71% (91 runs sampled)
380
382
 
381
383
  A custom JSON parser is [a lot slower] than the built-in one. However, it is more important to have a [clear error reporting] than the highest speed in scenarios like parsing configuration files. (For better error-reporting, the speed can be preserved by using the native parser initially and re-parsing with another parser only in case of failure.) Features like comments or JSON5 are also helpful in configuration files. Tokens preserve the complete input and can be used for pretty-printing without losing the comments.
382
384
 
@@ -429,6 +431,7 @@ Licensed under the [MIT License].
429
431
  [JSON]: https://tools.ietf.org/html/rfc8259
430
432
  [JSON5]: https://spec.json5.org
431
433
  [JSON Schema]: https://json-schema.org
434
+ [JSON Type Definition]: https://jsontypedef.com/
432
435
  [UMD]: https://github.com/umdjs/umd
433
436
  [`Grunt`]: https://gruntjs.com/
434
437
  [`Gulp`]: http://gulpjs.com/
package/lib/cli.js CHANGED
@@ -10,30 +10,30 @@ const { sortObject } = require('./sorter')
10
10
  const { compile } = require('./validator')
11
11
  const { description, version } = require('../package')
12
12
 
13
- const collectValues = extension => extension.split(',')
13
+ const collectValues = (input, result) => result.concat(input.split(','))
14
14
 
15
15
  const commander = require('commander')
16
16
  .name('jsonlint')
17
17
  .usage('[options] [<file, directory, pattern> ...]')
18
18
  .description(description)
19
- .option('-f, --config [file]', 'read options from a custom configuration file')
19
+ .option('-f, --config <file>', 'read options from a custom configuration file')
20
20
  .option('-F, --no-config', 'disable searching for configuration files')
21
21
  .option('-s, --sort-keys', 'sort object keys (not when prettifying)')
22
- .option('-E, --extensions [ext]', 'file extensions to process for directory walk', collectValues, ['json', 'JSON'])
22
+ .option('-E, --extensions <ext...>', 'file extensions to process for directory walk', collectValues, ['json', 'JSON'])
23
23
  .option('-i, --in-place', 'overwrite the input files')
24
24
  .option('-j, --diff', 'print difference instead of writing the output')
25
25
  .option('-k, --check', 'check that the input is equal to the output')
26
- .option('-t, --indent [num|char]', 'number of spaces or specific characters to use for indentation', 2)
26
+ .option('-t, --indent <num|char>', 'number of spaces or specific characters to use for indentation', 2)
27
27
  .option('-c, --compact', 'compact error display')
28
- .option('-M, --mode [mode]', 'set other parsing flags according to a format type', 'json')
28
+ .option('-M, --mode <mode>', 'set other parsing flags according to a format type', 'json')
29
29
  .option('-B, --bom', 'ignore the leading UTF-8 byte-order mark')
30
30
  .option('-C, --comments', 'recognize and ignore JavaScript-style comments')
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')
35
- .option('-e, --environment [env]', 'which specification of JSON Schema the validation file uses')
36
- .option('-x, --context [num]', 'line count used as the diff context', 3)
34
+ .option('-V, --validate <file...>', 'JSON Schema file(s) to use for validation', collectValues, [])
35
+ .option('-e, --environment <env>', 'which specification of JSON Schema the validation file uses')
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')
38
38
  .option('-q, --quiet', 'do not print the parsed json to stdout')
39
39
  .option('-n, --continue', 'continue with other files if an error occurs')
@@ -59,6 +59,9 @@ const commander = require('commander')
59
59
  console.log('"draft-2019-09" or "draft-2020-12". The environment may be prefixed')
60
60
  console.log('with "json-schema-". JSON Type Definition can be selected by "rfc8927",')
61
61
  console.log('"json-type-definition" or "jtd". If not specified, it will be "draft-07".')
62
+ console.log()
63
+ console.log('If you specify schemas using the "-V" parameter, you will have to separate')
64
+ console.log('files to test with "--".')
62
65
  })
63
66
  .parse(process.argv)
64
67
 
@@ -144,16 +147,19 @@ function processContents (source, file) {
144
147
  allowSingleQuotedStrings: options.singleQuotedStrings,
145
148
  allowDuplicateObjectKeys: options.duplicateKeys
146
149
  }
147
- if (options.validate) {
148
- let validate
150
+ if (options.validate.length) {
151
+ const schemas = options.validate.map((file, index) => {
152
+ try {
153
+ return readFileSync(file, 'utf8')
154
+ } catch (error) {
155
+ throw new Error(`Loading the JSON Schema #${index + 1} failed: "${file}".\n${error.message}`)
156
+ }
157
+ })
158
+ parserOptions.environment = options.environment
149
159
  try {
150
- const schema = readFileSync(normalize(options.validate), 'utf8')
151
- parserOptions.environment = options.environment
152
- validate = compile(schema, parserOptions)
160
+ validate = compile(schemas, parserOptions)
153
161
  } catch (error) {
154
- const message = 'Loading the JSON Schema failed: "' +
155
- options.validate + '".\n' + error.message
156
- throw new Error(message)
162
+ throw new Error(`Loading the JSON Schema failed:\n${error.message}`)
157
163
  }
158
164
  parsed = validate(source, parserOptions)
159
165
  } else {
package/lib/index.d.ts CHANGED
@@ -458,7 +458,8 @@ declare module '@prantlf/jsonlint/lib/validator' {
458
458
  * with multiple options
459
459
  * @returns the validator function
460
460
  */
461
- function compile (schema: string, environmentOrOptions?: Environment | CompileOptions): Validator
461
+ function compile (schema: string | string[] | Record<string, unknown> | Record<string, unknown>[],
462
+ environmentOrOptions?: Environment | CompileOptions): Validator
462
463
  }
463
464
 
464
465
  declare module '@prantlf/jsonlint/lib/printer' {