@prantlf/jsonlint 10.0.1 → 10.2.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 +25 -0
- package/README.md +23 -8
- package/lib/cli.js +8 -2
- package/lib/formatter.js +21 -19
- package/lib/jsonlint.d.ts +5 -2
- package/lib/jsonlint.js +6 -1
- package/lib/printer.js +30 -0
- package/package.json +1 -1
- package/web/formatter.min.js +1 -1
- package/web/formatter.min.js.map +1 -1
- package/web/jsonlint.min.js +1 -1
- package/web/jsonlint.min.js.map +1 -1
- package/web/printer.min.js +1 -1
- package/web/printer.min.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
# [10.2.0](https://github.com/prantlf/jsonlint/compare/v10.1.1...v10.2.0) (2019-12-28)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* Allow trimming trailing commas in arrays and objects (JSON5) ([136ea99](https://github.com/prantlf/jsonlint/commit/136ea995bef7b0f77c2ac54b6ce7dd8572190bf8))
|
|
6
|
+
* Allow unifying quotes around object keys to double or single ones (JSON5) ([6b6da17](https://github.com/prantlf/jsonlint/commit/6b6da175cfea8f71841e145a525ef124c19c2607))
|
|
7
|
+
|
|
8
|
+
# [10.1.1](https://github.com/prantlf/jsonlint/compare/v10.1.0...v10.1.1) (2019-12-27)
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* Restore compatibility with IE11 ([55b8a48](https://github.com/prantlf/jsonlint/commit/55b8a4816b08c5504cf7f0841d1997634a6376ea))
|
|
13
|
+
|
|
14
|
+
# [10.1.0](https://github.com/prantlf/jsonlint/compare/v10.0.2...v10.1.0) (2019-12-27)
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* Alternatively accept number of spaces for the indent parameter ([4c25739](https://github.com/prantlf/jsonlint/commit/4c257399b77e446c198b25049fae2ca08ad174ec))
|
|
19
|
+
|
|
20
|
+
# [10.0.2](https://github.com/prantlf/jsonlint/compare/v10.0.1...v10.0.2) (2019-12-27)
|
|
21
|
+
|
|
22
|
+
### Bug Fixes
|
|
23
|
+
|
|
24
|
+
* Do not modify input options in the tokenize method ([7e3ac0b](https://github.com/prantlf/jsonlint/commit/7e3ac0babf873c42da1daadaee2bbe55d2644690))
|
|
25
|
+
|
|
1
26
|
# [10.0.1](https://github.com/prantlf/jsonlint/compare/v10.0.0...v10.0.1) (2019-12-27)
|
|
2
27
|
|
|
3
28
|
### Bug Fixes
|
package/README.md
CHANGED
|
@@ -84,8 +84,8 @@ By default, `jsonlint` will either report a syntax error with details or pretty-
|
|
|
84
84
|
-E, --extensions [ext] file extensions to process for directory walk
|
|
85
85
|
(default: ["json","JSON"])
|
|
86
86
|
-i, --in-place overwrite the input files
|
|
87
|
-
-t, --indent [char]
|
|
88
|
-
(default:
|
|
87
|
+
-t, --indent [num|char] number of spaces or specific characters
|
|
88
|
+
to use for indentation (default: 2)
|
|
89
89
|
-c, --compact compact error display
|
|
90
90
|
-M, --mode [mode] set other parsing flags according to a format
|
|
91
91
|
type (default: "json")
|
|
@@ -103,6 +103,11 @@ By default, `jsonlint` will either report a syntax error with details or pretty-
|
|
|
103
103
|
--prune-comments omit comments from the prettified output
|
|
104
104
|
--strip-object-keys strip quotes from object keys if possible
|
|
105
105
|
(JSON5)
|
|
106
|
+
--enforce-double-quotes surrounds all strings with double quotes
|
|
107
|
+
--enforce-single-quotes surrounds all strings with single quotes
|
|
108
|
+
(JSON5)
|
|
109
|
+
--trim-trailing-commas omit trailing commas from objects and arrays
|
|
110
|
+
(JSON5)
|
|
106
111
|
-v, --version output the version number
|
|
107
112
|
-h, --help output usage information
|
|
108
113
|
|
|
@@ -190,7 +195,7 @@ You can parse a JSON string to an array of tokens and print it back to a string
|
|
|
190
195
|
const { tokenize } = require('@prantlf/jsonlint')
|
|
191
196
|
const tokens = tokenize('string with JSON data', { rawTokens: true })
|
|
192
197
|
const { print } = require('@prantlf/jsonlint/lib/printer')
|
|
193
|
-
const output = print(tokens, { indent:
|
|
198
|
+
const output = print(tokens, { indent: 2 })
|
|
194
199
|
```
|
|
195
200
|
|
|
196
201
|
The [`tokenize`](#tokenizing) method accepts options in the second optional parameter. See the [`tokenize`](#tokenizing) method above for more information.
|
|
@@ -199,9 +204,12 @@ The [`print`](#pretty-printing) method accepts an object `options` as the second
|
|
|
199
204
|
|
|
200
205
|
| Option | Description |
|
|
201
206
|
| --------------------------- | ------------------------------------------------------- |
|
|
202
|
-
| `indent` |
|
|
207
|
+
| `indent` | count of spaces or the specific characters to be used as an indentation unit |
|
|
203
208
|
| `pruneComments` | will omit all tokens with comments |
|
|
204
209
|
| `stripObjectKeys` | will not print quotes around object keys which are JavaScript identifier names |
|
|
210
|
+
| `enforceDoubleQuotes` | will surround all strings with double quotes |
|
|
211
|
+
| `enforceSingleQuotes` | will surround all strings with single quotes |
|
|
212
|
+
| `trimTrailingCommas` | will omit all trailing commas after the last object entry or array item |
|
|
205
213
|
|
|
206
214
|
```js
|
|
207
215
|
// Just concatenate the tokens to produce the same output as was the input.
|
|
@@ -213,13 +221,19 @@ print(tokens, {})
|
|
|
213
221
|
// (Just introduce line breaks.)
|
|
214
222
|
print(tokens, { indent: '' })
|
|
215
223
|
// Print to multiple lines with object and array indentation. (Just like
|
|
216
|
-
//`JSON.stringify(json, undefined,
|
|
217
|
-
print(tokens, { indent:
|
|
224
|
+
//`JSON.stringify(json, undefined, 2)` would do it, but retaining comments.)
|
|
225
|
+
print(tokens, { indent: 2 })
|
|
218
226
|
// Print to multiple lines with object and array indentation, omit comments.
|
|
219
227
|
// (Just like `JSON.stringify(json, undefined, ' ')` would do it.)
|
|
220
228
|
print(tokens, { indent: ' ', pruneComments: true })
|
|
221
229
|
// Print to multiple lines with indentation enabled and JSON5 object keys.
|
|
222
|
-
print(tokens, { indent: '
|
|
230
|
+
print(tokens, { indent: '\t', stripObjectKeys: true })
|
|
231
|
+
// Print to multiple lines with indentation enabled, unify JSON5 formatting.
|
|
232
|
+
print(tokens, {
|
|
233
|
+
indent: ' ',
|
|
234
|
+
enforceDoubleQuotes: true,
|
|
235
|
+
trimTrailingCommas: true
|
|
236
|
+
})
|
|
223
237
|
```
|
|
224
238
|
|
|
225
239
|
### Tokenizing
|
|
@@ -305,8 +319,9 @@ ${reason}`)
|
|
|
305
319
|
|
|
306
320
|
Copyright (C) 2012-2019 Zachary Carter, Ferdinand Prantl
|
|
307
321
|
|
|
308
|
-
Licensed under the MIT
|
|
322
|
+
Licensed under the [MIT License].
|
|
309
323
|
|
|
324
|
+
[MIT License]: http://en.wikipedia.org/wiki/MIT_License
|
|
310
325
|
[pure JavaScript version]: http://prantlf.github.com/jsonlint/
|
|
311
326
|
[jsonlint.com]: http://jsonlint.com
|
|
312
327
|
[JSON]: https://tools.ietf.org/html/rfc8259
|
package/lib/cli.js
CHANGED
|
@@ -20,7 +20,7 @@ var options = require('commander')
|
|
|
20
20
|
.option('-s, --sort-keys', 'sort object keys (not when prettifying)')
|
|
21
21
|
.option('-E, --extensions [ext]', 'file extensions to process for directory walk', collectExtensions, ['json', 'JSON'])
|
|
22
22
|
.option('-i, --in-place', 'overwrite the input files')
|
|
23
|
-
.option('-t, --indent [char]', 'characters to use for indentation',
|
|
23
|
+
.option('-t, --indent [num|char]', 'number of spaces or specific characters to use for indentation', 2)
|
|
24
24
|
.option('-c, --compact', 'compact error display')
|
|
25
25
|
.option('-M, --mode [mode]', 'set other parsing flags according to a format type', 'json')
|
|
26
26
|
.option('-C, --comments', 'recognize and ignore JavaScript-style comments')
|
|
@@ -34,6 +34,9 @@ var options = require('commander')
|
|
|
34
34
|
.option('-P, --pretty-print-invalid', 'force pretty-printing even for invalid input')
|
|
35
35
|
.option('--prune-comments', 'omit comments from the prettified output')
|
|
36
36
|
.option('--strip-object-keys', 'strip quotes from object keys if possible (JSON5)')
|
|
37
|
+
.option('--enforce-double-quotes', 'surrounds all strings with double quotes')
|
|
38
|
+
.option('--enforce-single-quotes', 'surrounds all strings with single quotes (JSON5)')
|
|
39
|
+
.option('--trim-trailing-commas', 'omit trailing commas from objects and arrays (JSON5)')
|
|
37
40
|
.version(pkg.version, '-v, --version')
|
|
38
41
|
.on('--help', () => {
|
|
39
42
|
console.log()
|
|
@@ -86,7 +89,10 @@ function parse (source, file) {
|
|
|
86
89
|
return printer.print(tokens, {
|
|
87
90
|
indent: options.indent,
|
|
88
91
|
pruneComments: options.pruneComments,
|
|
89
|
-
stripObjectKeys: options.stripObjectKeys
|
|
92
|
+
stripObjectKeys: options.stripObjectKeys,
|
|
93
|
+
enforceDoubleQuotes: options.enforceDoubleQuotes,
|
|
94
|
+
enforceSingleQuotes: options.enforceSingleQuotes,
|
|
95
|
+
trimTrailingCommas: options.trimTrailingCommas
|
|
90
96
|
})
|
|
91
97
|
}
|
|
92
98
|
if (options.sortKeys) {
|
package/lib/formatter.js
CHANGED
|
@@ -20,70 +20,72 @@
|
|
|
20
20
|
return new Array(count + 1).join(s)
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
function format (json,
|
|
23
|
+
function format (json, indent) {
|
|
24
24
|
var i = 0
|
|
25
|
-
var
|
|
26
|
-
var
|
|
27
|
-
|
|
25
|
+
var length = 0
|
|
26
|
+
var indentString = indent !== undefined
|
|
27
|
+
? typeof indent === 'number'
|
|
28
|
+
? new Array(indent + 1).join(' ') : indent : ' '
|
|
29
|
+
var outputString = ''
|
|
28
30
|
var indentLevel = 0
|
|
29
|
-
var inString
|
|
30
|
-
var currentChar
|
|
31
|
+
var inString
|
|
32
|
+
var currentChar
|
|
31
33
|
|
|
32
|
-
for (i = 0,
|
|
34
|
+
for (i = 0, length = json.length; i < length; i += 1) {
|
|
33
35
|
currentChar = json.charAt(i)
|
|
34
36
|
switch (currentChar) {
|
|
35
37
|
case '{':
|
|
36
38
|
case '[':
|
|
37
39
|
if (!inString) {
|
|
38
|
-
|
|
40
|
+
outputString += currentChar + '\n' + repeat(indentString, indentLevel + 1)
|
|
39
41
|
indentLevel += 1
|
|
40
42
|
} else {
|
|
41
|
-
|
|
43
|
+
outputString += currentChar
|
|
42
44
|
}
|
|
43
45
|
break
|
|
44
46
|
case '}':
|
|
45
47
|
case ']':
|
|
46
48
|
if (!inString) {
|
|
47
49
|
indentLevel -= 1
|
|
48
|
-
|
|
50
|
+
outputString += '\n' + repeat(indentString, indentLevel) + currentChar
|
|
49
51
|
} else {
|
|
50
|
-
|
|
52
|
+
outputString += currentChar
|
|
51
53
|
}
|
|
52
54
|
break
|
|
53
55
|
case ',':
|
|
54
56
|
if (!inString) {
|
|
55
|
-
|
|
57
|
+
outputString += ',\n' + repeat(indentString, indentLevel)
|
|
56
58
|
} else {
|
|
57
|
-
|
|
59
|
+
outputString += currentChar
|
|
58
60
|
}
|
|
59
61
|
break
|
|
60
62
|
case ':':
|
|
61
63
|
if (!inString) {
|
|
62
|
-
|
|
64
|
+
outputString += ': '
|
|
63
65
|
} else {
|
|
64
|
-
|
|
66
|
+
outputString += currentChar
|
|
65
67
|
}
|
|
66
68
|
break
|
|
67
69
|
case ' ':
|
|
68
70
|
case '\n':
|
|
69
71
|
case '\t':
|
|
70
72
|
if (inString) {
|
|
71
|
-
|
|
73
|
+
outputString += currentChar
|
|
72
74
|
}
|
|
73
75
|
break
|
|
74
76
|
case '"':
|
|
75
77
|
if (i > 0 && json.charAt(i - 1) !== '\\') {
|
|
76
78
|
inString = !inString
|
|
77
79
|
}
|
|
78
|
-
|
|
80
|
+
outputString += currentChar
|
|
79
81
|
break
|
|
80
82
|
default:
|
|
81
|
-
|
|
83
|
+
outputString += currentChar
|
|
82
84
|
break
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
87
|
|
|
86
|
-
return
|
|
88
|
+
return outputString
|
|
87
89
|
}
|
|
88
90
|
|
|
89
91
|
exports.format = format
|
package/lib/jsonlint.d.ts
CHANGED
|
@@ -87,9 +87,12 @@ declare module '@prantlf/jsonlint/lib/validator' {
|
|
|
87
87
|
|
|
88
88
|
declare module '@prantlf/jsonlint/lib/printer' {
|
|
89
89
|
interface PrintOptions {
|
|
90
|
-
indent?: string
|
|
90
|
+
indent?: number | string
|
|
91
91
|
pruneComments?: boolean
|
|
92
92
|
stripObjectKeys?: boolean
|
|
93
|
+
enforceDoubleQuotes?: boolean
|
|
94
|
+
enforceSingleQuotes?: boolean
|
|
95
|
+
trimTrailingCommas?: boolean
|
|
93
96
|
}
|
|
94
97
|
|
|
95
98
|
/**
|
|
@@ -100,7 +103,7 @@ declare module '@prantlf/jsonlint/lib/printer' {
|
|
|
100
103
|
* import { tokenize } from '@prantlf/jsonlint'
|
|
101
104
|
* import { print } from '@prantlf/jsonlint/lib/printer'
|
|
102
105
|
* const tokens = tokenize('string with JSON data', { rawTokens: true })
|
|
103
|
-
* const outputString = print(tokens, { indent:
|
|
106
|
+
* const outputString = print(tokens, { indent: 2 })
|
|
104
107
|
* ```
|
|
105
108
|
*
|
|
106
109
|
* @param tokens - an array of JSON tokens
|
package/lib/jsonlint.js
CHANGED
|
@@ -719,8 +719,13 @@ function tokenize (input, options) { // eslint-disable-line no-unused-vars
|
|
|
719
719
|
if (!options) {
|
|
720
720
|
options = {}
|
|
721
721
|
}
|
|
722
|
+
// As long as this is the single modification, this is easier than cloning.
|
|
723
|
+
// (Once Node.js 6 is dropped, this can be replaced by object destructuring.)
|
|
724
|
+
var oldTokenize = options.tokenize
|
|
722
725
|
options.tokenize = true
|
|
723
|
-
|
|
726
|
+
var tokens = parseInternal(input, options)
|
|
727
|
+
options.tokenize = oldTokenize
|
|
728
|
+
return tokens
|
|
724
729
|
}
|
|
725
730
|
|
|
726
731
|
function escapePointerToken (token) {
|
package/lib/printer.js
CHANGED
|
@@ -40,11 +40,17 @@
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
var indentString = options.indent
|
|
43
|
+
if (typeof indentString === 'number') {
|
|
44
|
+
indentString = new Array(indentString + 1).join(' ')
|
|
45
|
+
}
|
|
43
46
|
// Setting the indent to an empty string enables pretty-printing too.
|
|
44
47
|
// It will just insert line breaks without any indentation.
|
|
45
48
|
var prettyPrint = indentString !== undefined
|
|
46
49
|
var pruneComments = options.pruneComments
|
|
47
50
|
var stripObjectKeys = options.stripObjectKeys
|
|
51
|
+
var enforceDoubleQuotes = options.enforceDoubleQuotes
|
|
52
|
+
var enforceSingleQuotes = options.enforceSingleQuotes
|
|
53
|
+
var trimTrailingCommas = options.trimTrailingCommas
|
|
48
54
|
|
|
49
55
|
var outputString = ''
|
|
50
56
|
var foundLineBreak, addedLineBreak, needsLineBreak
|
|
@@ -56,6 +62,16 @@
|
|
|
56
62
|
var tokenCount = tokens.length
|
|
57
63
|
var tokenIndex, token, tokenType, tokenContent
|
|
58
64
|
|
|
65
|
+
function peekAtNextToken () {
|
|
66
|
+
var nextTokenIndex = tokenIndex
|
|
67
|
+
var nextToken
|
|
68
|
+
do {
|
|
69
|
+
nextToken = tokens[++nextTokenIndex]
|
|
70
|
+
} while (nextToken && (nextToken.type === 'whitespace' ||
|
|
71
|
+
nextToken.type === 'comment'))
|
|
72
|
+
return nextToken
|
|
73
|
+
}
|
|
74
|
+
|
|
59
75
|
var addIndent
|
|
60
76
|
if (prettyPrint && indentString) {
|
|
61
77
|
addIndent = function () {
|
|
@@ -181,6 +197,14 @@
|
|
|
181
197
|
if (stripObjectKeys && scopeType === '{' && !isValue &&
|
|
182
198
|
isIdentifierName(tokenValue)) {
|
|
183
199
|
outputString += tokenValue
|
|
200
|
+
} else if (typeof tokenValue === 'string') {
|
|
201
|
+
if (enforceDoubleQuotes && tokenContent[0] !== '"') {
|
|
202
|
+
outputString += JSON.stringify(tokenValue)
|
|
203
|
+
} else if (enforceSingleQuotes && tokenContent[0] !== '\'') {
|
|
204
|
+
outputString += '\'' + tokenValue.replace(/'/g, '\\\'') + '\''
|
|
205
|
+
} else {
|
|
206
|
+
outputString += tokenContent
|
|
207
|
+
}
|
|
184
208
|
} else {
|
|
185
209
|
outputString += tokenContent
|
|
186
210
|
}
|
|
@@ -209,6 +233,12 @@
|
|
|
209
233
|
}
|
|
210
234
|
|
|
211
235
|
function addComma () {
|
|
236
|
+
if (trimTrailingCommas) {
|
|
237
|
+
var nextToken = peekAtNextToken()
|
|
238
|
+
if (nextToken && nextToken.type === 'symbol') {
|
|
239
|
+
return tryAddingInlineComment()
|
|
240
|
+
}
|
|
241
|
+
}
|
|
212
242
|
addDelayedSpaceOrLineBreak()
|
|
213
243
|
outputString += ','
|
|
214
244
|
tryAddingInlineComment()
|
package/package.json
CHANGED
package/web/formatter.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define("jsonlint-formatter",["exports"],factory):(global=global||self,factory(global.jsonlintFormatter={}))})(this,function(exports){"use strict";function repeat(s,count){return new Array(count+1).join(s)}function format(json,
|
|
1
|
+
(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define("jsonlint-formatter",["exports"],factory):(global=global||self,factory(global.jsonlintFormatter={}))})(this,function(exports){"use strict";function repeat(s,count){return new Array(count+1).join(s)}function format(json,indent){var i=0;var length=0;var indentString=indent!==undefined?typeof indent==="number"?new Array(indent+1).join(" "):indent:" ";var outputString="";var indentLevel=0;var inString;var currentChar;for(i=0,length=json.length;i<length;i+=1){currentChar=json.charAt(i);switch(currentChar){case"{":case"[":if(!inString){outputString+=currentChar+"\n"+repeat(indentString,indentLevel+1);indentLevel+=1}else{outputString+=currentChar}break;case"}":case"]":if(!inString){indentLevel-=1;outputString+="\n"+repeat(indentString,indentLevel)+currentChar}else{outputString+=currentChar}break;case",":if(!inString){outputString+=",\n"+repeat(indentString,indentLevel)}else{outputString+=currentChar}break;case":":if(!inString){outputString+=": "}else{outputString+=currentChar}break;case" ":case"\n":case"\t":if(inString){outputString+=currentChar}break;case'"':if(i>0&&json.charAt(i-1)!=="\\"){inString=!inString}outputString+=currentChar;break;default:outputString+=currentChar;break}}return outputString}exports.format=format;Object.defineProperty(exports,"__esModule",{value:true})});
|
|
2
2
|
//# sourceMappingURL=formatter.min.js.map
|
package/web/formatter.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["lib/formatter.js"],"names":["global","factory","exports","module","define","amd","self","jsonlintFormatter","this","repeat","s","count","Array","join","format","json","
|
|
1
|
+
{"version":3,"sources":["lib/formatter.js"],"names":["global","factory","exports","module","define","amd","self","jsonlintFormatter","this","repeat","s","count","Array","join","format","json","indent","i","length","indentString","undefined","outputString","indentLevel","inString","currentChar","charAt","Object","defineProperty","value"],"mappings":"CAAC,SAAUA,OAAQC,gBAEVC,UAAY,iBAAmBC,SAAW,YAAcF,QAAQC,gBAE5DE,SAAW,YAAcA,OAAOC,IAAMD,OAAO,qBAAsB,CAAC,WAAYH,UAEpFD,OAASA,QAAUM,KAAML,QAAQD,OAAOO,kBAAoB,MANrE,CAOEC,KAAM,SAAUN,SAChB,aAUA,SAASO,OAAQC,EAAGC,OAClB,OAAO,IAAIC,MAAMD,MAAQ,GAAGE,KAAKH,GAGnC,SAASI,OAAQC,KAAMC,QACrB,IAAIC,EAAI,EACR,IAAIC,OAAS,EACb,IAAIC,aAAeH,SAAWI,iBACnBJ,SAAW,SAChB,IAAIJ,MAAMI,OAAS,GAAGH,KAAK,KAAOG,OAAS,KACjD,IAAIK,aAAe,GACnB,IAAIC,YAAc,EAClB,IAAIC,SACJ,IAAIC,YAEJ,IAAKP,EAAI,EAAGC,OAASH,KAAKG,OAAQD,EAAIC,OAAQD,GAAK,EAAG,CACpDO,YAAcT,KAAKU,OAAOR,GAC1B,OAAQO,aACN,IAAK,IACL,IAAK,IACH,IAAKD,SAAU,CACbF,cAAgBG,YAAc,KAAOf,OAAOU,aAAcG,YAAc,GACxEA,aAAe,MACV,CACLD,cAAgBG,YAElB,MACF,IAAK,IACL,IAAK,IACH,IAAKD,SAAU,CACbD,aAAe,EACfD,cAAgB,KAAOZ,OAAOU,aAAcG,aAAeE,gBACtD,CACLH,cAAgBG,YAElB,MACF,IAAK,IACH,IAAKD,SAAU,CACbF,cAAgB,MAAQZ,OAAOU,aAAcG,iBACxC,CACLD,cAAgBG,YAElB,MACF,IAAK,IACH,IAAKD,SAAU,CACbF,cAAgB,SACX,CACLA,cAAgBG,YAElB,MACF,IAAK,IACL,IAAK,KACL,IAAK,KACH,GAAID,SAAU,CACZF,cAAgBG,YAElB,MACF,IAAK,IACH,GAAIP,EAAI,GAAKF,KAAKU,OAAOR,EAAI,KAAO,KAAM,CACxCM,UAAYA,SAEdF,cAAgBG,YAChB,MACF,QACEH,cAAgBG,YAChB,OAIN,OAAOH,aAGTnB,QAAQY,OAASA,OAEjBY,OAAOC,eAAezB,QAAS,aAAc,CAAE0B,MAAO","file":"formatter.js","sourcesContent":["(function (global, factory) {\n // eslint-disable-next-line no-unused-expressions\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports)\n // eslint-disable-next-line no-undef\n : typeof define === 'function' && define.amd ? define('jsonlint-formatter', ['exports'], factory)\n // eslint-disable-next-line no-undef\n : (global = global || self, factory(global.jsonlintFormatter = {}))\n}(this, function (exports) {\n 'use strict'\n\n /**\n * Manual formatter taken straight from https://github.com/umbrae/jsonlintdotcom\n *\n * jsl.format - Provide json reformatting in a character-by-character approach,\n * so that even invalid JSON may be reformatted (to the best of its ability).\n *\n */\n\n function repeat (s, count) {\n return new Array(count + 1).join(s)\n }\n\n function format (json, indent) {\n var i = 0\n var length = 0\n var indentString = indent !== undefined\n ? typeof indent === 'number'\n ? new Array(indent + 1).join(' ') : indent : ' '\n var outputString = ''\n var indentLevel = 0\n var inString\n var currentChar\n\n for (i = 0, length = json.length; i < length; i += 1) {\n currentChar = json.charAt(i)\n switch (currentChar) {\n case '{':\n case '[':\n if (!inString) {\n outputString += currentChar + '\\n' + repeat(indentString, indentLevel + 1)\n indentLevel += 1\n } else {\n outputString += currentChar\n }\n break\n case '}':\n case ']':\n if (!inString) {\n indentLevel -= 1\n outputString += '\\n' + repeat(indentString, indentLevel) + currentChar\n } else {\n outputString += currentChar\n }\n break\n case ',':\n if (!inString) {\n outputString += ',\\n' + repeat(indentString, indentLevel)\n } else {\n outputString += currentChar\n }\n break\n case ':':\n if (!inString) {\n outputString += ': '\n } else {\n outputString += currentChar\n }\n break\n case ' ':\n case '\\n':\n case '\\t':\n if (inString) {\n outputString += currentChar\n }\n break\n case '\"':\n if (i > 0 && json.charAt(i - 1) !== '\\\\') {\n inString = !inString\n }\n outputString += currentChar\n break\n default:\n outputString += currentChar\n break\n }\n }\n\n return outputString\n }\n\n exports.format = format\n\n Object.defineProperty(exports, '__esModule', { value: true })\n}))\n"]}
|
package/web/jsonlint.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define("jsonlint",["exports"],factory):(global=global||self,factory(global.jsonlint={}))})(this,function(exports){"use strict";var Uni={isWhiteSpace:function isWhiteSpace(x){return x===" "||x===" "||x==="\ufeff"||x>="\t"&&x<="\r"||x===" "||x>=" "&&x<=" "||x==="\u2028"||x==="\u2029"||x===" "||x===" "||x===" "},isWhiteSpaceJSON:function isWhiteSpaceJSON(x){return x===" "||x==="\t"||x==="\n"||x==="\r"},isLineTerminator:function isLineTerminator(x){return x==="\n"||x==="\r"||x==="\u2028"||x==="\u2029"},isLineTerminatorJSON:function isLineTerminatorJSON(x){return x==="\n"||x==="\r"},isIdentifierStart:function isIdentifierStart(x){return x==="$"||x==="_"||x>="A"&&x<="Z"||x>="a"&&x<="z"||x>=""&&Uni.NonAsciiIdentifierStart.test(x)},isIdentifierPart:function isIdentifierPart(x){return x==="$"||x==="_"||x>="A"&&x<="Z"||x>="a"&&x<="z"||x>="0"&&x<="9"||x>=""&&Uni.NonAsciiIdentifierPart.test(x)},NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\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\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\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\u2071\u207F\u2090-\u209C\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-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\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-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,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]/};function isHexDigit(x){return x>="0"&&x<="9"||x>="A"&&x<="F"||x>="a"&&x<="f"}function isOctDigit(x){return x>="0"&&x<="7"}function isDecDigit(x){return x>="0"&&x<="9"}var unescapeMap={"'":"'",'"':'"',"\\":"\\",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t",v:"\v","/":"/"};function parseInternal(input,options){if(typeof input!=="string"||!(input instanceof String)){input=String(input)}var json5=options.mode==="json5";var ignoreComments=options.ignoreComments||options.mode==="cjson"||json5;var ignoreTrailingCommas=options.ignoreTrailingCommas||json5;var allowSingleQuotedStrings=options.allowSingleQuotedStrings||json5;var allowDuplicateObjectKeys=options.allowDuplicateObjectKeys;var reviver=options.reviver;var tokenize=options.tokenize;var rawTokens=options.rawTokens;var tokenLocations=options.tokenLocations;var tokenPaths=options.tokenPaths;var isLineTerminator=json5?Uni.isLineTerminator:Uni.isLineTerminatorJSON;var isWhiteSpace=json5?Uni.isWhiteSpace:Uni.isWhiteSpaceJSON;var inputLength=input.length;var lineNumber=0;var lineStart=0;var position=0;var startToken;var endToken;var tokenPath;if(tokenize){var tokens=[];var tokenOffset=null;var tokenLine;var tokenColumn;startToken=function(){if(tokenOffset!==null)throw Error("internal error, token overlap");tokenLine=lineNumber+1;tokenColumn=position-lineStart+1;tokenOffset=position};endToken=function(type,value){if(tokenOffset!==position){var token={type:type};if(rawTokens){token.raw=input.substr(tokenOffset,position-tokenOffset)}if(value!==undefined){token.value=value}if(tokenLocations){token.location={start:{column:tokenColumn,line:tokenLine,offset:tokenOffset}}}if(tokenPaths){token.path=tokenPath.slice()}tokens.push(token)}tokenOffset=null;return value};tokenPaths&&(tokenPath=[])}function generateMessage(){var message;if(position<inputLength){var token=JSON.stringify(input[position]);message="Unexpected token "+token}else{message="Unexpected end of input"}return message}function createError(message){var column=position-lineStart+1;++lineNumber;var texts=getTexts(message,input,position,lineNumber,column);var error=SyntaxError(texts.message);error.reason=message;error.excerpt=texts.excerpt;error.pointer=texts.pointer;error.location={start:{column:column,line:lineNumber,offset:position}};return error}function fail(message){if(!message){message=generateMessage()}var error=createError(message);throw error}function newLine(char){if(char==="\r"&&input[position]==="\n"){++position}lineStart=position;++lineNumber}function parseGeneric(){while(position<inputLength){startToken&&startToken();var char=input[position++];if(char==='"'||char==="'"&&allowSingleQuotedStrings){var string=parseString(char);endToken&&endToken("literal",string);return string}else if(char==="{"){endToken&&endToken("symbol","{");return parseObject()}else if(char==="["){endToken&&endToken("symbol","[");return parseArray()}else if(char==="-"||char==="."||isDecDigit(char)||json5&&(char==="+"||char==="I"||char==="N")){var number=parseNumber();endToken&&endToken("literal",number);return number}else if(char==="n"){parseKeyword("null");endToken&&endToken("literal",null);return null}else if(char==="t"){parseKeyword("true");endToken&&endToken("literal",true);return true}else if(char==="f"){parseKeyword("false");endToken&&endToken("literal",false);return false}else{--position;endToken&&endToken();return undefined}}}function parseKey(){var result;while(position<inputLength){startToken&&startToken();var char=input[position++];if(char==='"'||char==="'"&&allowSingleQuotedStrings){var string=parseString(char);endToken&&endToken("literal",string);return string}else if(char==="{"){endToken&&endToken("symbol","{");return parseObject()}else if(char==="["){endToken&&endToken("symbol","[");return parseArray()}else if(char==="."||isDecDigit(char)){var number=parseNumber(true);endToken&&endToken("literal",number);return number}else if(json5&&Uni.isIdentifierStart(char)||char==="\\"&&input[position]==="u"){var rollback=position-1;result=parseIdentifier();if(result===undefined){position=rollback;endToken&&endToken();return undefined}else{endToken&&endToken("literal",result);return result}}else{--position;endToken&&endToken();return undefined}}}function skipWhiteSpace(){var insideWhiteSpace;function startWhiteSpace(){if(!insideWhiteSpace){insideWhiteSpace=true;--position;startToken();++position}}function endWhiteSpace(){if(insideWhiteSpace){insideWhiteSpace=false;endToken("whitespace")}}while(position<inputLength){var char=input[position++];if(isLineTerminator(char)){startToken&&startWhiteSpace();newLine(char)}else if(isWhiteSpace(char)){startToken&&startWhiteSpace()}else if(char==="/"&&ignoreComments&&(input[position]==="/"||input[position]==="*")){if(startToken){--position;endWhiteSpace();startToken();++position}skipComment(input[position++]==="*");endToken&&endToken("comment")}else{--position;break}}endToken&&endWhiteSpace()}function skipComment(multiLine){while(position<inputLength){var char=input[position++];if(isLineTerminator(char)){if(!multiLine){--position;return}newLine(char)}else if(char==="*"&&multiLine){if(input[position]==="/"){++position;return}}else{}}if(multiLine){fail("Unclosed multiline comment")}}function parseKeyword(keyword){var startPosition=position;for(var i=1,keywordLength=keyword.length;i<keywordLength;++i){if(position>=inputLength||keyword[i]!==input[position]){position=startPosition-1;fail()}++position}}function parseObject(){var result={};var emptyObject={};var isNotEmpty=false;while(position<inputLength){skipWhiteSpace();var key=parseKey();if(allowDuplicateObjectKeys===false&&result[key]){fail('Duplicate key: "'+key+'"')}skipWhiteSpace();startToken&&startToken();var char=input[position++];endToken&&endToken("symbol",char);if(char==="}"&&key===undefined){if(!ignoreTrailingCommas&&isNotEmpty){--position;fail("Trailing comma in object")}return result}else if(char===":"&&key!==undefined){skipWhiteSpace();tokenPath&&tokenPath.push(key);var value=parseGeneric();tokenPath&&tokenPath.pop();if(value===undefined)fail('No value found for key "'+key+'"');if(typeof key!=="string"){if(!json5||typeof key!=="number"){fail('Wrong key type: "'+key+'"')}}if(key in emptyObject||emptyObject[key]!=null){}else{if(reviver){value=reviver(key,value)}if(value!==undefined){isNotEmpty=true;result[key]=value}}skipWhiteSpace();startToken&&startToken();char=input[position++];endToken&&endToken("symbol",char);if(char===","){continue}else if(char==="}"){return result}else{fail()}}else{--position;fail()}}fail()}function parseArray(){var result=[];while(position<inputLength){skipWhiteSpace();tokenPath&&tokenPath.push(result.length);var item=parseGeneric();tokenPath&&tokenPath.pop();skipWhiteSpace();startToken&&startToken();var char=input[position++];endToken&&endToken("symbol",char);if(item!==undefined){if(reviver){item=reviver(String(result.length),item)}if(item===undefined){++result.length;item=true}else{result.push(item)}}if(char===","){if(item===undefined){fail("Elisions are not supported")}}else if(char==="]"){if(!ignoreTrailingCommas&&item===undefined&&result.length){--position;fail("Trailing comma in array")}return result}else{--position;fail()}}}function parseNumber(){--position;var start=position;var char=input[position++];var toNumber=function(isOctal){var string=input.substr(start,position-start);var result;if(isOctal){result=parseInt(string.replace(/^0o?/,""),8)}else{result=Number(string)}if(Number.isNaN(result)){--position;fail('Bad numeric literal - "'+input.substr(start,position-start+1)+'"')}else if(!json5&&!string.match(/^-?(0|[1-9][0-9]*)(\.[0-9]+)?(e[+-]?[0-9]+)?$/i)){--position;fail('Non-json numeric literal - "'+input.substr(start,position-start+1)+'"')}else{return result}};if(char==="-"||char==="+"&&json5){char=input[position++]}if(char==="N"&&json5){parseKeyword("NaN");return NaN}if(char==="I"&&json5){parseKeyword("Infinity");return toNumber()}if(char>="1"&&char<="9"){while(position<inputLength&&isDecDigit(input[position])){++position}char=input[position++]}if(char==="0"){char=input[position++];var isOctal=char==="o"||char==="O"||isOctDigit(char);var isHex=char==="x"||char==="X";if(json5&&(isOctal||isHex)){while(position<inputLength&&(isHex?isHexDigit:isOctDigit)(input[position])){++position}var sign=1;if(input[start]==="-"){sign=-1;++start}else if(input[start]==="+"){++start}return sign*toNumber(isOctal)}}if(char==="."){while(position<inputLength&&isDecDigit(input[position])){++position}char=input[position++]}if(char==="e"||char==="E"){char=input[position++];if(char==="-"||char==="+"){++position}while(position<inputLength&&isDecDigit(input[position])){++position}char=input[position++]}--position;return toNumber()}function parseIdentifier(){--position;var result="";while(position<inputLength){var char=input[position++];if(char==="\\"&&input[position]==="u"&&isHexDigit(input[position+1])&&isHexDigit(input[position+2])&&isHexDigit(input[position+3])&&isHexDigit(input[position+4])){char=String.fromCharCode(parseInt(input.substr(position+1,4),16));position+=5}if(result.length){if(Uni.isIdentifierPart(char)){result+=char}else{--position;return result}}else{if(Uni.isIdentifierStart(char)){result+=char}else{return undefined}}}fail()}function parseString(endChar){var result="";while(position<inputLength){var char=input[position++];if(char===endChar){return result}else if(char==="\\"){if(position>=inputLength){fail()}char=input[position++];if(unescapeMap[char]&&(json5||char!=="v"&&(char!=="'"||allowSingleQuotedStrings))){result+=unescapeMap[char]}else if(json5&&isLineTerminator(char)){newLine(char)}else if(char==="u"||char==="x"&&json5){var count=char==="u"?4:2;for(var i=0;i<count;++i){if(position>=inputLength){fail()}if(!isHexDigit(input[position])){fail("Bad escape sequence")}position++}result+=String.fromCharCode(parseInt(input.substr(position-count,count),16))}else if(json5&&isOctDigit(char)){var digits;if(char<"4"&&isOctDigit(input[position])&&isOctDigit(input[position+1])){digits=3}else if(isOctDigit(input[position])){digits=2}else{digits=1}position+=digits-1;result+=String.fromCharCode(parseInt(input.substr(position-digits,digits),8))}else if(json5){result+=char}else{--position;fail()}}else if(isLineTerminator(char)){fail()}else{if(!json5&&char.charCodeAt(0)<32){--position;fail("Unexpected control character")}result+=char}}fail()}skipWhiteSpace();var returnValue=parseGeneric();if(returnValue!==undefined||position<inputLength){skipWhiteSpace();if(position>=inputLength){if(reviver){returnValue=reviver("",returnValue)}return tokenize?tokens:returnValue}else{fail()}}else{if(position){fail("No data, only a whitespace")}else{fail("No data, empty input")}}}function parseCustom(input,options){if(typeof options==="function"){options={reviver:options}}else if(!options){options={}}return parseInternal(input,options)}function tokenize(input,options){if(!options){options={}}options.tokenize=true;return parseInternal(input,options)}function escapePointerToken(token){return token.toString().replace(/~/g,"~0").replace(/\//g,"~1")}function pathToPointer(tokens){if(tokens.length===0){return""}return"/"+tokens.map(escapePointerToken).join("/")}function unescapePointerToken(token){return token.replace(/~1/g,"/").replace(/~0/g,"~")}function pointerToPath(pointer){if(pointer===""){return[]}if(pointer[0]!=="/"){throw new Error('Missing initial "/" in the reference')}return pointer.substr(1).split("/").map(unescapePointerToken)}function getLineAndColumn(input,offset){var lines=input.substr(0,offset).split(/\r?\n/);var line=lines.length;var column=lines[line-1].length+1;return{line:line,column:column}}function pastInput(input,offset){var start=Math.max(0,offset-20);var previous=input.substr(start,offset-start);return(offset>20?"...":"")+previous.replace(/\r?\n/g,"")}function upcomingInput(input,offset){var start=Math.max(0,offset-20);start+=offset-start;var rest=input.length-start;var next=input.substr(start,Math.min(20,rest));return next.replace(/\r?\n/g,"")+(rest>20?"...":"")}function getPositionContext(input,offset){var past=pastInput(input,offset);var upcoming=upcomingInput(input,offset);var pointer=new Array(past.length+1).join("-")+"^";return{excerpt:past+upcoming,pointer:pointer}}function getReason(error){var message=error.message.replace("JSON.parse: ","").replace("JSON Parse error: ","");var firstCharacter=message.charAt(0);if(firstCharacter>="a"){message=firstCharacter.toUpperCase()+message.substr(1)}return message}function getLocationOnV8(input,reason){var match=/ in JSON at position (\d+)$/.exec(reason);if(match){var offset=+match[1];var location=getLineAndColumn(input,offset);return{offset:offset,line:location.line,column:location.column,reason:reason.substr(0,match.index)}}}function checkUnexpectedEndOnV8(input,reason){var match=/ end of JSON input$/.exec(reason);if(match){var offset=input.length;var location=getLineAndColumn(input,offset);return{offset:offset,line:location.line,column:location.column,reason:reason.substr(0,match.index+4)}}}function getLocationOnSpiderMonkey(input,reason){var match=/ at line (\d+) column (\d+) of the JSON data$/.exec(reason);if(match){var line=+match[1];var column=+match[2];var offset=getOffset(input,line,column);return{offset:offset,line:line,column:column,reason:reason.substr(0,match.index)}}}function getTexts(reason,input,offset,line,column){var position=getPositionContext(input,offset);var excerpt=position.excerpt;var message,pointer;if(typeof line==="number"){pointer=position.pointer;message="Parse error on line "+line+", column "+column+":\n"+excerpt+"\n"+pointer+"\n"+reason}else{message="Parse error in JSON input:\n"+excerpt+"\n"+reason}return{message:message,excerpt:excerpt,pointer:pointer}}function improveNativeError(input,error){var reason=getReason(error);var location=getLocationOnV8(input,reason)||checkUnexpectedEndOnV8(input,reason)||getLocationOnSpiderMonkey(input,reason);var offset,line,column;if(location){offset=location.offset;line=location.line;column=location.column;reason=location.reason}else{offset=0}error.reason=reason;var texts=getTexts(reason,input,offset,line,column);error.message=texts.message;error.excerpt=texts.excerpt;if(texts.pointer){error.pointer=texts.pointer;error.location={start:{column:column,line:line,offset:offset}}}return error}function parseNative(input,reviver){try{return JSON.parse(input,reviver)}catch(error){throw improveNativeError(input,error)}}var isSafari=typeof navigator!=="undefined"&&/Safari/.test(navigator.userAgent)&&/Apple Computer/.test(navigator.vendor);var oldNode=typeof process!=="undefined"&&process.version.startsWith("v4.");function needsCustomParser(options){return options.ignoreComments||options.ignoreTrailingCommas||options.allowSingleQuotedStrings||options.allowDuplicateObjectKeys===false||options.mode==="cjson"||options.mode==="json5"||isSafari||oldNode}function getReviver(options){if(typeof options==="function"){return options}else if(options){return options.reviver}}function parse(input,options){options||(options={});return needsCustomParser(options)?parseCustom(input,options):parseNative(input,getReviver(options))}exports.parse=parse;exports.tokenize=tokenize;exports.pathToPointer=pathToPointer;exports.pointerToPath=pointerToPath;exports.parseNative=parseNative;exports.parseCustom=parseCustom;exports.getErrorTexts=getTexts;Object.defineProperty(exports,"__esModule",{value:true})});
|
|
1
|
+
(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define("jsonlint",["exports"],factory):(global=global||self,factory(global.jsonlint={}))})(this,function(exports){"use strict";var Uni={isWhiteSpace:function isWhiteSpace(x){return x===" "||x===" "||x==="\ufeff"||x>="\t"&&x<="\r"||x===" "||x>=" "&&x<=" "||x==="\u2028"||x==="\u2029"||x===" "||x===" "||x===" "},isWhiteSpaceJSON:function isWhiteSpaceJSON(x){return x===" "||x==="\t"||x==="\n"||x==="\r"},isLineTerminator:function isLineTerminator(x){return x==="\n"||x==="\r"||x==="\u2028"||x==="\u2029"},isLineTerminatorJSON:function isLineTerminatorJSON(x){return x==="\n"||x==="\r"},isIdentifierStart:function isIdentifierStart(x){return x==="$"||x==="_"||x>="A"&&x<="Z"||x>="a"&&x<="z"||x>=""&&Uni.NonAsciiIdentifierStart.test(x)},isIdentifierPart:function isIdentifierPart(x){return x==="$"||x==="_"||x>="A"&&x<="Z"||x>="a"&&x<="z"||x>="0"&&x<="9"||x>=""&&Uni.NonAsciiIdentifierPart.test(x)},NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\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\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\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\u2071\u207F\u2090-\u209C\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-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\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-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,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]/};function isHexDigit(x){return x>="0"&&x<="9"||x>="A"&&x<="F"||x>="a"&&x<="f"}function isOctDigit(x){return x>="0"&&x<="7"}function isDecDigit(x){return x>="0"&&x<="9"}var unescapeMap={"'":"'",'"':'"',"\\":"\\",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t",v:"\v","/":"/"};function parseInternal(input,options){if(typeof input!=="string"||!(input instanceof String)){input=String(input)}var json5=options.mode==="json5";var ignoreComments=options.ignoreComments||options.mode==="cjson"||json5;var ignoreTrailingCommas=options.ignoreTrailingCommas||json5;var allowSingleQuotedStrings=options.allowSingleQuotedStrings||json5;var allowDuplicateObjectKeys=options.allowDuplicateObjectKeys;var reviver=options.reviver;var tokenize=options.tokenize;var rawTokens=options.rawTokens;var tokenLocations=options.tokenLocations;var tokenPaths=options.tokenPaths;var isLineTerminator=json5?Uni.isLineTerminator:Uni.isLineTerminatorJSON;var isWhiteSpace=json5?Uni.isWhiteSpace:Uni.isWhiteSpaceJSON;var inputLength=input.length;var lineNumber=0;var lineStart=0;var position=0;var startToken;var endToken;var tokenPath;if(tokenize){var tokens=[];var tokenOffset=null;var tokenLine;var tokenColumn;startToken=function(){if(tokenOffset!==null)throw Error("internal error, token overlap");tokenLine=lineNumber+1;tokenColumn=position-lineStart+1;tokenOffset=position};endToken=function(type,value){if(tokenOffset!==position){var token={type:type};if(rawTokens){token.raw=input.substr(tokenOffset,position-tokenOffset)}if(value!==undefined){token.value=value}if(tokenLocations){token.location={start:{column:tokenColumn,line:tokenLine,offset:tokenOffset}}}if(tokenPaths){token.path=tokenPath.slice()}tokens.push(token)}tokenOffset=null;return value};tokenPaths&&(tokenPath=[])}function generateMessage(){var message;if(position<inputLength){var token=JSON.stringify(input[position]);message="Unexpected token "+token}else{message="Unexpected end of input"}return message}function createError(message){var column=position-lineStart+1;++lineNumber;var texts=getTexts(message,input,position,lineNumber,column);var error=SyntaxError(texts.message);error.reason=message;error.excerpt=texts.excerpt;error.pointer=texts.pointer;error.location={start:{column:column,line:lineNumber,offset:position}};return error}function fail(message){if(!message){message=generateMessage()}var error=createError(message);throw error}function newLine(char){if(char==="\r"&&input[position]==="\n"){++position}lineStart=position;++lineNumber}function parseGeneric(){while(position<inputLength){startToken&&startToken();var char=input[position++];if(char==='"'||char==="'"&&allowSingleQuotedStrings){var string=parseString(char);endToken&&endToken("literal",string);return string}else if(char==="{"){endToken&&endToken("symbol","{");return parseObject()}else if(char==="["){endToken&&endToken("symbol","[");return parseArray()}else if(char==="-"||char==="."||isDecDigit(char)||json5&&(char==="+"||char==="I"||char==="N")){var number=parseNumber();endToken&&endToken("literal",number);return number}else if(char==="n"){parseKeyword("null");endToken&&endToken("literal",null);return null}else if(char==="t"){parseKeyword("true");endToken&&endToken("literal",true);return true}else if(char==="f"){parseKeyword("false");endToken&&endToken("literal",false);return false}else{--position;endToken&&endToken();return undefined}}}function parseKey(){var result;while(position<inputLength){startToken&&startToken();var char=input[position++];if(char==='"'||char==="'"&&allowSingleQuotedStrings){var string=parseString(char);endToken&&endToken("literal",string);return string}else if(char==="{"){endToken&&endToken("symbol","{");return parseObject()}else if(char==="["){endToken&&endToken("symbol","[");return parseArray()}else if(char==="."||isDecDigit(char)){var number=parseNumber(true);endToken&&endToken("literal",number);return number}else if(json5&&Uni.isIdentifierStart(char)||char==="\\"&&input[position]==="u"){var rollback=position-1;result=parseIdentifier();if(result===undefined){position=rollback;endToken&&endToken();return undefined}else{endToken&&endToken("literal",result);return result}}else{--position;endToken&&endToken();return undefined}}}function skipWhiteSpace(){var insideWhiteSpace;function startWhiteSpace(){if(!insideWhiteSpace){insideWhiteSpace=true;--position;startToken();++position}}function endWhiteSpace(){if(insideWhiteSpace){insideWhiteSpace=false;endToken("whitespace")}}while(position<inputLength){var char=input[position++];if(isLineTerminator(char)){startToken&&startWhiteSpace();newLine(char)}else if(isWhiteSpace(char)){startToken&&startWhiteSpace()}else if(char==="/"&&ignoreComments&&(input[position]==="/"||input[position]==="*")){if(startToken){--position;endWhiteSpace();startToken();++position}skipComment(input[position++]==="*");endToken&&endToken("comment")}else{--position;break}}endToken&&endWhiteSpace()}function skipComment(multiLine){while(position<inputLength){var char=input[position++];if(isLineTerminator(char)){if(!multiLine){--position;return}newLine(char)}else if(char==="*"&&multiLine){if(input[position]==="/"){++position;return}}else{}}if(multiLine){fail("Unclosed multiline comment")}}function parseKeyword(keyword){var startPosition=position;for(var i=1,keywordLength=keyword.length;i<keywordLength;++i){if(position>=inputLength||keyword[i]!==input[position]){position=startPosition-1;fail()}++position}}function parseObject(){var result={};var emptyObject={};var isNotEmpty=false;while(position<inputLength){skipWhiteSpace();var key=parseKey();if(allowDuplicateObjectKeys===false&&result[key]){fail('Duplicate key: "'+key+'"')}skipWhiteSpace();startToken&&startToken();var char=input[position++];endToken&&endToken("symbol",char);if(char==="}"&&key===undefined){if(!ignoreTrailingCommas&&isNotEmpty){--position;fail("Trailing comma in object")}return result}else if(char===":"&&key!==undefined){skipWhiteSpace();tokenPath&&tokenPath.push(key);var value=parseGeneric();tokenPath&&tokenPath.pop();if(value===undefined)fail('No value found for key "'+key+'"');if(typeof key!=="string"){if(!json5||typeof key!=="number"){fail('Wrong key type: "'+key+'"')}}if(key in emptyObject||emptyObject[key]!=null){}else{if(reviver){value=reviver(key,value)}if(value!==undefined){isNotEmpty=true;result[key]=value}}skipWhiteSpace();startToken&&startToken();char=input[position++];endToken&&endToken("symbol",char);if(char===","){continue}else if(char==="}"){return result}else{fail()}}else{--position;fail()}}fail()}function parseArray(){var result=[];while(position<inputLength){skipWhiteSpace();tokenPath&&tokenPath.push(result.length);var item=parseGeneric();tokenPath&&tokenPath.pop();skipWhiteSpace();startToken&&startToken();var char=input[position++];endToken&&endToken("symbol",char);if(item!==undefined){if(reviver){item=reviver(String(result.length),item)}if(item===undefined){++result.length;item=true}else{result.push(item)}}if(char===","){if(item===undefined){fail("Elisions are not supported")}}else if(char==="]"){if(!ignoreTrailingCommas&&item===undefined&&result.length){--position;fail("Trailing comma in array")}return result}else{--position;fail()}}}function parseNumber(){--position;var start=position;var char=input[position++];var toNumber=function(isOctal){var string=input.substr(start,position-start);var result;if(isOctal){result=parseInt(string.replace(/^0o?/,""),8)}else{result=Number(string)}if(Number.isNaN(result)){--position;fail('Bad numeric literal - "'+input.substr(start,position-start+1)+'"')}else if(!json5&&!string.match(/^-?(0|[1-9][0-9]*)(\.[0-9]+)?(e[+-]?[0-9]+)?$/i)){--position;fail('Non-json numeric literal - "'+input.substr(start,position-start+1)+'"')}else{return result}};if(char==="-"||char==="+"&&json5){char=input[position++]}if(char==="N"&&json5){parseKeyword("NaN");return NaN}if(char==="I"&&json5){parseKeyword("Infinity");return toNumber()}if(char>="1"&&char<="9"){while(position<inputLength&&isDecDigit(input[position])){++position}char=input[position++]}if(char==="0"){char=input[position++];var isOctal=char==="o"||char==="O"||isOctDigit(char);var isHex=char==="x"||char==="X";if(json5&&(isOctal||isHex)){while(position<inputLength&&(isHex?isHexDigit:isOctDigit)(input[position])){++position}var sign=1;if(input[start]==="-"){sign=-1;++start}else if(input[start]==="+"){++start}return sign*toNumber(isOctal)}}if(char==="."){while(position<inputLength&&isDecDigit(input[position])){++position}char=input[position++]}if(char==="e"||char==="E"){char=input[position++];if(char==="-"||char==="+"){++position}while(position<inputLength&&isDecDigit(input[position])){++position}char=input[position++]}--position;return toNumber()}function parseIdentifier(){--position;var result="";while(position<inputLength){var char=input[position++];if(char==="\\"&&input[position]==="u"&&isHexDigit(input[position+1])&&isHexDigit(input[position+2])&&isHexDigit(input[position+3])&&isHexDigit(input[position+4])){char=String.fromCharCode(parseInt(input.substr(position+1,4),16));position+=5}if(result.length){if(Uni.isIdentifierPart(char)){result+=char}else{--position;return result}}else{if(Uni.isIdentifierStart(char)){result+=char}else{return undefined}}}fail()}function parseString(endChar){var result="";while(position<inputLength){var char=input[position++];if(char===endChar){return result}else if(char==="\\"){if(position>=inputLength){fail()}char=input[position++];if(unescapeMap[char]&&(json5||char!=="v"&&(char!=="'"||allowSingleQuotedStrings))){result+=unescapeMap[char]}else if(json5&&isLineTerminator(char)){newLine(char)}else if(char==="u"||char==="x"&&json5){var count=char==="u"?4:2;for(var i=0;i<count;++i){if(position>=inputLength){fail()}if(!isHexDigit(input[position])){fail("Bad escape sequence")}position++}result+=String.fromCharCode(parseInt(input.substr(position-count,count),16))}else if(json5&&isOctDigit(char)){var digits;if(char<"4"&&isOctDigit(input[position])&&isOctDigit(input[position+1])){digits=3}else if(isOctDigit(input[position])){digits=2}else{digits=1}position+=digits-1;result+=String.fromCharCode(parseInt(input.substr(position-digits,digits),8))}else if(json5){result+=char}else{--position;fail()}}else if(isLineTerminator(char)){fail()}else{if(!json5&&char.charCodeAt(0)<32){--position;fail("Unexpected control character")}result+=char}}fail()}skipWhiteSpace();var returnValue=parseGeneric();if(returnValue!==undefined||position<inputLength){skipWhiteSpace();if(position>=inputLength){if(reviver){returnValue=reviver("",returnValue)}return tokenize?tokens:returnValue}else{fail()}}else{if(position){fail("No data, only a whitespace")}else{fail("No data, empty input")}}}function parseCustom(input,options){if(typeof options==="function"){options={reviver:options}}else if(!options){options={}}return parseInternal(input,options)}function tokenize(input,options){if(!options){options={}}var oldTokenize=options.tokenize;options.tokenize=true;var tokens=parseInternal(input,options);options.tokenize=oldTokenize;return tokens}function escapePointerToken(token){return token.toString().replace(/~/g,"~0").replace(/\//g,"~1")}function pathToPointer(tokens){if(tokens.length===0){return""}return"/"+tokens.map(escapePointerToken).join("/")}function unescapePointerToken(token){return token.replace(/~1/g,"/").replace(/~0/g,"~")}function pointerToPath(pointer){if(pointer===""){return[]}if(pointer[0]!=="/"){throw new Error('Missing initial "/" in the reference')}return pointer.substr(1).split("/").map(unescapePointerToken)}function getLineAndColumn(input,offset){var lines=input.substr(0,offset).split(/\r?\n/);var line=lines.length;var column=lines[line-1].length+1;return{line:line,column:column}}function pastInput(input,offset){var start=Math.max(0,offset-20);var previous=input.substr(start,offset-start);return(offset>20?"...":"")+previous.replace(/\r?\n/g,"")}function upcomingInput(input,offset){var start=Math.max(0,offset-20);start+=offset-start;var rest=input.length-start;var next=input.substr(start,Math.min(20,rest));return next.replace(/\r?\n/g,"")+(rest>20?"...":"")}function getPositionContext(input,offset){var past=pastInput(input,offset);var upcoming=upcomingInput(input,offset);var pointer=new Array(past.length+1).join("-")+"^";return{excerpt:past+upcoming,pointer:pointer}}function getReason(error){var message=error.message.replace("JSON.parse: ","").replace("JSON Parse error: ","");var firstCharacter=message.charAt(0);if(firstCharacter>="a"){message=firstCharacter.toUpperCase()+message.substr(1)}return message}function getLocationOnV8(input,reason){var match=/ in JSON at position (\d+)$/.exec(reason);if(match){var offset=+match[1];var location=getLineAndColumn(input,offset);return{offset:offset,line:location.line,column:location.column,reason:reason.substr(0,match.index)}}}function checkUnexpectedEndOnV8(input,reason){var match=/ end of JSON input$/.exec(reason);if(match){var offset=input.length;var location=getLineAndColumn(input,offset);return{offset:offset,line:location.line,column:location.column,reason:reason.substr(0,match.index+4)}}}function getLocationOnSpiderMonkey(input,reason){var match=/ at line (\d+) column (\d+) of the JSON data$/.exec(reason);if(match){var line=+match[1];var column=+match[2];var offset=getOffset(input,line,column);return{offset:offset,line:line,column:column,reason:reason.substr(0,match.index)}}}function getTexts(reason,input,offset,line,column){var position=getPositionContext(input,offset);var excerpt=position.excerpt;var message,pointer;if(typeof line==="number"){pointer=position.pointer;message="Parse error on line "+line+", column "+column+":\n"+excerpt+"\n"+pointer+"\n"+reason}else{message="Parse error in JSON input:\n"+excerpt+"\n"+reason}return{message:message,excerpt:excerpt,pointer:pointer}}function improveNativeError(input,error){var reason=getReason(error);var location=getLocationOnV8(input,reason)||checkUnexpectedEndOnV8(input,reason)||getLocationOnSpiderMonkey(input,reason);var offset,line,column;if(location){offset=location.offset;line=location.line;column=location.column;reason=location.reason}else{offset=0}error.reason=reason;var texts=getTexts(reason,input,offset,line,column);error.message=texts.message;error.excerpt=texts.excerpt;if(texts.pointer){error.pointer=texts.pointer;error.location={start:{column:column,line:line,offset:offset}}}return error}function parseNative(input,reviver){try{return JSON.parse(input,reviver)}catch(error){throw improveNativeError(input,error)}}var isSafari=typeof navigator!=="undefined"&&/Safari/.test(navigator.userAgent)&&/Apple Computer/.test(navigator.vendor);var oldNode=typeof process!=="undefined"&&process.version.startsWith("v4.");function needsCustomParser(options){return options.ignoreComments||options.ignoreTrailingCommas||options.allowSingleQuotedStrings||options.allowDuplicateObjectKeys===false||options.mode==="cjson"||options.mode==="json5"||isSafari||oldNode}function getReviver(options){if(typeof options==="function"){return options}else if(options){return options.reviver}}function parse(input,options){options||(options={});return needsCustomParser(options)?parseCustom(input,options):parseNative(input,getReviver(options))}exports.parse=parse;exports.tokenize=tokenize;exports.pathToPointer=pathToPointer;exports.pointerToPath=pointerToPath;exports.parseNative=parseNative;exports.parseCustom=parseCustom;exports.getErrorTexts=getTexts;Object.defineProperty(exports,"__esModule",{value:true})});
|
|
2
2
|
//# sourceMappingURL=jsonlint.min.js.map
|
package/web/jsonlint.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["lib/jsonlint.js"],"names":["global","factory","exports","module","define","amd","self","jsonlint","this","Uni","isWhiteSpace","x","isWhiteSpaceJSON","isLineTerminator","isLineTerminatorJSON","isIdentifierStart","NonAsciiIdentifierStart","test","isIdentifierPart","NonAsciiIdentifierPart","isHexDigit","isOctDigit","isDecDigit","unescapeMap","'","\"","\\","b","f","n","r","t","v","/","parseInternal","input","options","String","json5","mode","ignoreComments","ignoreTrailingCommas","allowSingleQuotedStrings","allowDuplicateObjectKeys","reviver","tokenize","rawTokens","tokenLocations","tokenPaths","inputLength","length","lineNumber","lineStart","position","startToken","endToken","tokenPath","tokens","tokenOffset","tokenLine","tokenColumn","Error","type","value","token","raw","substr","undefined","location","start","column","line","offset","path","slice","push","generateMessage","message","JSON","stringify","createError","texts","getTexts","error","SyntaxError","reason","excerpt","pointer","fail","newLine","char","parseGeneric","string","parseString","parseObject","parseArray","number","parseNumber","parseKeyword","parseKey","result","rollback","parseIdentifier","skipWhiteSpace","insideWhiteSpace","startWhiteSpace","endWhiteSpace","skipComment","multiLine","keyword","startPosition","i","keywordLength","emptyObject","isNotEmpty","key","pop","item","toNumber","isOctal","parseInt","replace","Number","isNaN","match","NaN","isHex","sign","fromCharCode","endChar","count","digits","charCodeAt","returnValue","parseCustom","escapePointerToken","toString","pathToPointer","map","join","unescapePointerToken","pointerToPath","split","getLineAndColumn","lines","pastInput","Math","max","previous","upcomingInput","rest","next","min","getPositionContext","past","upcoming","Array","getReason","firstCharacter","charAt","toUpperCase","getLocationOnV8","exec","index","checkUnexpectedEndOnV8","getLocationOnSpiderMonkey","getOffset","improveNativeError","parseNative","parse","isSafari","navigator","userAgent","vendor","oldNode","process","version","startsWith","needsCustomParser","getReviver","getErrorTexts","Object","defineProperty"],"mappings":"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","file":"jsonlint.js","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define('jsonlint', ['exports'], factory) :\n (global = global || self, factory(global.jsonlint = {}))\n}(this, function (exports) { 'use strict'\n\n// Modified from https://github.com/rlidwka/jju/blob/master/lib/unicode.js\n\n// This is autogenerated with esprima tools, see:\n// https://github.com/ariya/esprima/blob/master/esprima.js\n\nvar Uni = { // eslint-disable-line no-unused-vars\n isWhiteSpace: function isWhiteSpace (x) {\n // section 7.2, table 2\n return x === '\\u0020' ||\n x === '\\u00A0' ||\n x === '\\uFEFF' || // <-- this is not a Unicode WS, only a JS one\n (x >= '\\u0009' && x <= '\\u000D') || // 9 A B C D\n\n // + whitespace characters from unicode, category Zs\n x === '\\u1680' ||\n (x >= '\\u2000' && x <= '\\u200A') || // 0 1 2 3 4 5 6 7 8 9 A\n x === '\\u2028' ||\n x === '\\u2029' ||\n x === '\\u202F' ||\n x === '\\u205F' ||\n x === '\\u3000'\n },\n isWhiteSpaceJSON: function isWhiteSpaceJSON (x) {\n return x === '\\u0020' ||\n x === '\\u0009' ||\n x === '\\u000A' ||\n x === '\\u000D'\n },\n isLineTerminator: function isLineTerminator (x) {\n // ok, here is the part when JSON is wrong\n // section 7.3, table 3\n return x === '\\u000A' ||\n x === '\\u000D' ||\n x === '\\u2028' ||\n x === '\\u2029'\n },\n isLineTerminatorJSON: function isLineTerminatorJSON (x) {\n return x === '\\u000A' ||\n x === '\\u000D'\n },\n isIdentifierStart: function isIdentifierStart (x) {\n return x === '$' ||\n x === '_' ||\n (x >= 'A' && x <= 'Z') ||\n (x >= 'a' && x <= 'z') ||\n (x >= '\\u0080' && Uni.NonAsciiIdentifierStart.test(x))\n },\n isIdentifierPart: function isIdentifierPart (x) {\n return x === '$' ||\n x === '_' ||\n (x >= 'A' && x <= 'Z') ||\n (x >= 'a' && x <= 'z') ||\n (x >= '0' && x <= '9') || // <-- addition to Start\n (x >= '\\u0080' && Uni.NonAsciiIdentifierPart.test(x))\n },\n // ECMAScript 5.1/Unicode v6.3.0 NonAsciiIdentifierStart:\n NonAsciiIdentifierStart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\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\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F0\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\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\\u2071\\u207F\\u2090-\\u209C\\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-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\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-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // ECMAScript 5.1/Unicode v6.3.0 NonAsciiIdentifierPart:\n /* eslint-disable-next-line no-misleading-character-class */\n 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]/\n}\n\n/* globals Uni, getTexts */\n\n// Modified from https://github.com/rlidwka/jju/blob/master/lib/parse.js\n\nfunction isHexDigit (x) {\n return (x >= '0' && x <= '9') ||\n (x >= 'A' && x <= 'F') ||\n (x >= 'a' && x <= 'f')\n}\n\nfunction isOctDigit (x) {\n return x >= '0' && x <= '7'\n}\n\nfunction isDecDigit (x) {\n return x >= '0' && x <= '9'\n}\n\nvar unescapeMap = {\n '\\'': '\\'',\n '\"': '\"',\n '\\\\': '\\\\',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t',\n v: '\\v',\n '/': '/'\n}\n\nfunction parseInternal (input, options) {\n if (typeof input !== 'string' || !(input instanceof String)) {\n input = String(input)\n }\n\n var json5 = options.mode === 'json5'\n var ignoreComments = options.ignoreComments || options.mode === 'cjson' || json5\n var ignoreTrailingCommas = options.ignoreTrailingCommas || json5\n var allowSingleQuotedStrings = options.allowSingleQuotedStrings || json5\n var allowDuplicateObjectKeys = options.allowDuplicateObjectKeys\n var reviver = options.reviver\n var tokenize = options.tokenize\n var rawTokens = options.rawTokens\n var tokenLocations = options.tokenLocations\n var tokenPaths = options.tokenPaths\n\n var isLineTerminator = json5 ? Uni.isLineTerminator : Uni.isLineTerminatorJSON\n var isWhiteSpace = json5 ? Uni.isWhiteSpace : Uni.isWhiteSpaceJSON\n\n var inputLength = input.length\n var lineNumber = 0\n var lineStart = 0\n var position = 0\n\n var startToken\n var endToken\n var tokenPath\n\n if (tokenize) {\n var tokens = []\n var tokenOffset = null\n var tokenLine\n var tokenColumn\n startToken = function () {\n if (tokenOffset !== null) throw Error('internal error, token overlap')\n tokenLine = lineNumber + 1\n tokenColumn = position - lineStart + 1\n tokenOffset = position\n }\n endToken = function (type, value) {\n if (tokenOffset !== position) {\n var token = { type: type }\n if (rawTokens) {\n token.raw = input.substr(tokenOffset, position - tokenOffset)\n }\n if (value !== undefined) {\n token.value = value\n }\n if (tokenLocations) {\n token.location = {\n start: {\n column: tokenColumn,\n line: tokenLine,\n offset: tokenOffset\n }\n }\n }\n if (tokenPaths) {\n token.path = tokenPath.slice()\n }\n tokens.push(token)\n }\n tokenOffset = null\n return value\n }\n tokenPaths && (tokenPath = [])\n }\n\n function generateMessage () {\n var message\n if (position < inputLength) {\n var token = JSON.stringify(input[position])\n message = 'Unexpected token ' + token\n } else {\n message = 'Unexpected end of input'\n }\n return message\n }\n\n function createError (message) {\n var column = position - lineStart + 1\n ++lineNumber\n var texts = getTexts(message, input, position, lineNumber, column)\n var error = SyntaxError(texts.message)\n error.reason = message\n error.excerpt = texts.excerpt\n error.pointer = texts.pointer\n error.location = {\n start: {\n column: column,\n line: lineNumber,\n offset: position\n }\n }\n return error\n }\n\n function fail (message) {\n if (!message) {\n message = generateMessage()\n }\n var error = createError(message)\n throw error\n }\n\n function newLine (char) {\n // account for <cr><lf>\n if (char === '\\r' && input[position] === '\\n') {\n ++position\n }\n lineStart = position\n ++lineNumber\n }\n\n function parseGeneric () {\n while (position < inputLength) {\n startToken && startToken()\n var char = input[position++]\n if (char === '\"' || (char === '\\'' && allowSingleQuotedStrings)) {\n var string = parseString(char)\n endToken && endToken('literal', string)\n return string\n } else if (char === '{') {\n endToken && endToken('symbol', '{')\n return parseObject()\n } else if (char === '[') {\n endToken && endToken('symbol', '[')\n return parseArray()\n } else if (char === '-' || char === '.' || isDecDigit(char) ||\n (json5 && (char === '+' || char === 'I' || char === 'N'))) {\n var number = parseNumber()\n endToken && endToken('literal', number)\n return number\n } else if (char === 'n') {\n parseKeyword('null')\n endToken && endToken('literal', null)\n return null\n } else if (char === 't') {\n parseKeyword('true')\n endToken && endToken('literal', true)\n return true\n } else if (char === 'f') {\n parseKeyword('false')\n endToken && endToken('literal', false)\n return false\n } else {\n --position\n endToken && endToken()\n return undefined\n }\n }\n }\n\n function parseKey () {\n var result\n while (position < inputLength) {\n startToken && startToken()\n var char = input[position++]\n if (char === '\"' || (char === '\\'' && allowSingleQuotedStrings)) {\n var string = parseString(char)\n endToken && endToken('literal', string)\n return string\n } else if (char === '{') {\n endToken && endToken('symbol', '{')\n return parseObject()\n } else if (char === '[') {\n endToken && endToken('symbol', '[')\n return parseArray()\n } else if (char === '.' || isDecDigit(char)) {\n var number = parseNumber(true)\n endToken && endToken('literal', number)\n return number\n } else if ((json5 && Uni.isIdentifierStart(char)) ||\n (char === '\\\\' && input[position] === 'u')) {\n var rollback = position - 1\n result = parseIdentifier()\n if (result === undefined) {\n position = rollback\n endToken && endToken()\n return undefined\n } else {\n endToken && endToken('literal', result)\n return result\n }\n } else {\n --position\n endToken && endToken()\n return undefined\n }\n }\n }\n\n function skipWhiteSpace () {\n var insideWhiteSpace\n function startWhiteSpace () {\n if (!insideWhiteSpace) {\n insideWhiteSpace = true\n --position\n startToken()\n ++position\n }\n }\n function endWhiteSpace () {\n if (insideWhiteSpace) {\n insideWhiteSpace = false\n endToken('whitespace')\n }\n }\n while (position < inputLength) {\n var char = input[position++]\n if (isLineTerminator(char)) {\n startToken && startWhiteSpace()\n newLine(char)\n } else if (isWhiteSpace(char)) {\n startToken && startWhiteSpace()\n } else if (char === '/' && ignoreComments &&\n (input[position] === '/' || input[position] === '*')) {\n if (startToken) {\n --position\n endWhiteSpace()\n startToken()\n ++position\n }\n skipComment(input[position++] === '*')\n endToken && endToken('comment')\n } else {\n --position\n break\n }\n }\n endToken && endWhiteSpace()\n }\n\n function skipComment (multiLine) {\n while (position < inputLength) {\n var char = input[position++]\n if (isLineTerminator(char)) {\n if (!multiLine) {\n // let parent function deal with newline\n --position\n return\n }\n newLine(char)\n } else if (char === '*' && multiLine) {\n if (input[position] === '/') {\n ++position\n return\n }\n } else {\n // nothing\n }\n }\n if (multiLine) {\n fail('Unclosed multiline comment')\n }\n }\n\n function parseKeyword (keyword) {\n // keyword[0] is not checked because it was checked earlier\n var startPosition = position\n for (var i = 1, keywordLength = keyword.length; i < keywordLength; ++i) {\n if (position >= inputLength || keyword[i] !== input[position]) {\n position = startPosition - 1\n fail()\n }\n ++position\n }\n }\n\n function parseObject () {\n var result = {}\n var emptyObject = {}\n var isNotEmpty = false\n\n while (position < inputLength) {\n skipWhiteSpace()\n var key = parseKey()\n if (allowDuplicateObjectKeys === false && result[key]) {\n fail('Duplicate key: \"' + key + '\"')\n }\n skipWhiteSpace()\n startToken && startToken()\n var char = input[position++]\n endToken && endToken('symbol', char)\n if (char === '}' && key === undefined) {\n if (!ignoreTrailingCommas && isNotEmpty) {\n --position\n fail('Trailing comma in object')\n }\n return result\n } else if (char === ':' && key !== undefined) {\n skipWhiteSpace()\n tokenPath && tokenPath.push(key)\n var value = parseGeneric()\n tokenPath && tokenPath.pop()\n\n if (value === undefined) fail('No value found for key \"' + key + '\"')\n if (typeof key !== 'string') {\n if (!json5 || typeof key !== 'number') {\n fail('Wrong key type: \"' + key + '\"')\n }\n }\n\n if (key in emptyObject || emptyObject[key] != null) {\n // silently ignore it\n } else {\n if (reviver) {\n value = reviver(key, value)\n }\n if (value !== undefined) {\n isNotEmpty = true\n result[key] = value\n }\n }\n\n skipWhiteSpace()\n startToken && startToken()\n char = input[position++]\n endToken && endToken('symbol', char)\n if (char === ',') {\n continue\n } else if (char === '}') {\n return result\n } else {\n fail()\n }\n } else {\n --position\n fail()\n }\n }\n\n fail()\n }\n\n function parseArray () {\n var result = []\n while (position < inputLength) {\n skipWhiteSpace()\n tokenPath && tokenPath.push(result.length)\n var item = parseGeneric()\n tokenPath && tokenPath.pop()\n skipWhiteSpace()\n startToken && startToken()\n var char = input[position++]\n endToken && endToken('symbol', char)\n if (item !== undefined) {\n if (reviver) {\n item = reviver(String(result.length), item)\n }\n if (item === undefined) {\n ++result.length\n item = true // hack for check below, not included into result\n } else {\n result.push(item)\n }\n }\n\n if (char === ',') {\n if (item === undefined) {\n fail('Elisions are not supported')\n }\n } else if (char === ']') {\n if (!ignoreTrailingCommas && item === undefined && result.length) {\n --position\n fail('Trailing comma in array')\n }\n return result\n } else {\n --position\n fail()\n }\n }\n }\n\n function parseNumber () {\n // rewind because we don't know first char\n --position\n\n var start = position\n var char = input[position++]\n var toNumber = function (isOctal) {\n var string = input.substr(start, position - start)\n var result\n\n if (isOctal) {\n result = parseInt(string.replace(/^0o?/, ''), 8)\n } else {\n result = Number(string)\n }\n\n if (Number.isNaN(result)) {\n --position\n fail('Bad numeric literal - \"' + input.substr(start, position - start + 1) + '\"')\n } else if (!json5 && !string.match(/^-?(0|[1-9][0-9]*)(\\.[0-9]+)?(e[+-]?[0-9]+)?$/i)) {\n // additional restrictions imposed by json\n --position\n fail('Non-json numeric literal - \"' + input.substr(start, position - start + 1) + '\"')\n } else {\n return result\n }\n }\n\n // ex: -5982475.249875e+29384\n // ^ skipping this\n if (char === '-' || (char === '+' && json5)) {\n char = input[position++]\n }\n\n if (char === 'N' && json5) {\n parseKeyword('NaN')\n return NaN\n }\n\n if (char === 'I' && json5) {\n parseKeyword('Infinity')\n // returning +inf or -inf\n return toNumber()\n }\n\n if (char >= '1' && char <= '9') {\n // ex: -5982475.249875e+29384\n // ^^^ skipping these\n while (position < inputLength && isDecDigit(input[position])) {\n ++position\n }\n char = input[position++]\n }\n\n // special case for leading zero: 0.123456\n if (char === '0') {\n char = input[position++]\n\n // new syntax, \"0o777\" old syntax, \"0777\"\n var isOctal = char === 'o' || char === 'O' || isOctDigit(char)\n var isHex = char === 'x' || char === 'X'\n\n if (json5 && (isOctal || isHex)) {\n while (position < inputLength &&\n (isHex ? isHexDigit : isOctDigit)(input[position])) {\n ++position\n }\n\n var sign = 1\n if (input[start] === '-') {\n sign = -1\n ++start\n } else if (input[start] === '+') {\n ++start\n }\n\n return sign * toNumber(isOctal)\n }\n }\n\n if (char === '.') {\n // ex: -5982475.249875e+29384\n // ^^^ skipping these\n while (position < inputLength && isDecDigit(input[position])) {\n ++position\n }\n char = input[position++]\n }\n\n if (char === 'e' || char === 'E') {\n char = input[position++]\n if (char === '-' || char === '+') {\n ++position\n }\n // ex: -5982475.249875e+29384\n // ^^^ skipping these\n while (position < inputLength && isDecDigit(input[position])) {\n ++position\n }\n char = input[position++]\n }\n\n // we have char in the buffer, so count for it\n --position\n return toNumber()\n }\n\n function parseIdentifier () {\n // rewind because we don't know first char\n --position\n\n var result = ''\n while (position < inputLength) {\n var char = input[position++]\n if (char === '\\\\' &&\n input[position] === 'u' &&\n isHexDigit(input[position + 1]) &&\n isHexDigit(input[position + 2]) &&\n isHexDigit(input[position + 3]) &&\n isHexDigit(input[position + 4])) {\n // UnicodeEscapeSequence\n char = String.fromCharCode(parseInt(input.substr(position + 1, 4), 16))\n position += 5\n }\n\n if (result.length) {\n // identifier started\n if (Uni.isIdentifierPart(char)) {\n result += char\n } else {\n --position\n return result\n }\n } else {\n if (Uni.isIdentifierStart(char)) {\n result += char\n } else {\n return undefined\n }\n }\n }\n\n fail()\n }\n\n function parseString (endChar) {\n // 7.8.4 of ES262 spec\n var result = ''\n while (position < inputLength) {\n var char = input[position++]\n if (char === endChar) {\n return result\n } else if (char === '\\\\') {\n if (position >= inputLength) {\n fail()\n }\n char = input[position++]\n if (unescapeMap[char] && (json5 || (char !== 'v' && (char !== \"'\" || allowSingleQuotedStrings)))) {\n result += unescapeMap[char]\n } else if (json5 && isLineTerminator(char)) {\n // line continuation\n newLine(char)\n } else if (char === 'u' || (char === 'x' && json5)) {\n // unicode/character escape sequence\n var count = char === 'u' ? 4 : 2\n // validation for \\uXXXX\n for (var i = 0; i < count; ++i) {\n if (position >= inputLength) {\n fail()\n }\n if (!isHexDigit(input[position])) {\n fail('Bad escape sequence')\n }\n position++\n }\n result += String.fromCharCode(parseInt(input.substr(position - count, count), 16))\n } else if (json5 && isOctDigit(char)) {\n var digits\n if (char < '4' && isOctDigit(input[position]) && isOctDigit(input[position + 1])) {\n // three-digit octal\n digits = 3\n } else if (isOctDigit(input[position])) {\n // two-digit octal\n digits = 2\n } else {\n digits = 1\n }\n position += digits - 1\n result += String.fromCharCode(parseInt(input.substr(position - digits, digits), 8))\n } else if (json5) {\n // \\X -> x\n result += char\n } else {\n --position\n fail()\n }\n } else if (isLineTerminator(char)) {\n fail()\n } else {\n if (!json5 && char.charCodeAt(0) < 32) {\n --position\n fail('Unexpected control character')\n }\n // SourceCharacter but not one of \" or \\ or LineTerminator\n result += char\n }\n }\n\n fail()\n }\n\n skipWhiteSpace()\n var returnValue = parseGeneric()\n if (returnValue !== undefined || position < inputLength) {\n skipWhiteSpace()\n if (position >= inputLength) {\n if (reviver) {\n returnValue = reviver('', returnValue)\n }\n return tokenize ? tokens : returnValue\n } else {\n fail()\n }\n } else {\n if (position) {\n fail('No data, only a whitespace')\n } else {\n fail('No data, empty input')\n }\n }\n}\n\nfunction parseCustom (input, options) { // eslint-disable-line no-unused-vars\n if (typeof options === 'function') {\n options = {\n reviver: options\n }\n } else if (!options) {\n options = {}\n }\n return parseInternal(input, options)\n}\n\nfunction tokenize (input, options) { // eslint-disable-line no-unused-vars\n if (!options) {\n options = {}\n }\n options.tokenize = true\n return parseInternal(input, options)\n}\n\nfunction escapePointerToken (token) {\n return token\n .toString()\n .replace(/~/g, '~0')\n .replace(/\\//g, '~1')\n}\n\nfunction pathToPointer (tokens) { // eslint-disable-line no-unused-vars\n if (tokens.length === 0) {\n return ''\n }\n return '/' + tokens\n .map(escapePointerToken)\n .join('/')\n}\n\nfunction unescapePointerToken (token) {\n return token\n .replace(/~1/g, '/')\n .replace(/~0/g, '~')\n}\n\nfunction pointerToPath (pointer) { // eslint-disable-line no-unused-vars\n if (pointer === '') {\n return []\n }\n if (pointer[0] !== '/') {\n throw new Error('Missing initial \"/\" in the reference')\n }\n return pointer\n .substr(1)\n .split('/')\n .map(unescapePointerToken)\n}\n\nfunction getLineAndColumn (input, offset) {\n var lines = input\n .substr(0, offset)\n .split(/\\r?\\n/)\n var line = lines.length\n var column = lines[line - 1].length + 1\n return {\n line: line,\n column: column\n }\n}\n\nfunction pastInput (input, offset) {\n var start = Math.max(0, offset - 20)\n var previous = input.substr(start, offset - start)\n return (offset > 20 ? '...' : '') + previous.replace(/\\r?\\n/g, '')\n}\n\nfunction upcomingInput (input, offset) {\n var start = Math.max(0, offset - 20)\n start += offset - start\n var rest = input.length - start\n var next = input.substr(start, Math.min(20, rest))\n return next.replace(/\\r?\\n/g, '') + (rest > 20 ? '...' : '')\n}\n\nfunction getPositionContext (input, offset) {\n var past = pastInput(input, offset)\n var upcoming = upcomingInput(input, offset)\n var pointer = new Array(past.length + 1).join('-') + '^'\n return {\n excerpt: past + upcoming,\n pointer: pointer\n }\n}\n\nfunction getReason (error) {\n var message = error.message\n .replace('JSON.parse: ', '') // SpiderMonkey\n .replace('JSON Parse error: ', '') // SquirrelFish\n var firstCharacter = message.charAt(0)\n if (firstCharacter >= 'a') {\n message = firstCharacter.toUpperCase() + message.substr(1)\n }\n return message\n}\n\nfunction getLocationOnV8 (input, reason) {\n var match = / in JSON at position (\\d+)$/.exec(reason)\n if (match) {\n var offset = +match[1]\n var location = getLineAndColumn(input, offset)\n return {\n offset: offset,\n line: location.line,\n column: location.column,\n reason: reason.substr(0, match.index)\n }\n }\n}\n\nfunction checkUnexpectedEndOnV8 (input, reason) {\n var match = / end of JSON input$/.exec(reason)\n if (match) {\n var offset = input.length\n var location = getLineAndColumn(input, offset)\n return {\n offset: offset,\n line: location.line,\n column: location.column,\n reason: reason.substr(0, match.index + 4)\n }\n }\n}\n\nfunction getLocationOnSpiderMonkey (input, reason) {\n var match = / at line (\\d+) column (\\d+) of the JSON data$/.exec(reason)\n if (match) {\n var line = +match[1]\n var column = +match[2]\n var offset = getOffset(input, line, column) // eslint-disable-line no-undef\n return {\n offset: offset,\n line: line,\n column: column,\n reason: reason.substr(0, match.index)\n }\n }\n}\n\nfunction getTexts (reason, input, offset, line, column) {\n var position = getPositionContext(input, offset)\n var excerpt = position.excerpt\n var message, pointer\n if (typeof line === 'number') {\n pointer = position.pointer\n message = 'Parse error on line ' + line + ', column ' +\n column + ':\\n' + excerpt + '\\n' + pointer + '\\n' + reason\n } else {\n message = 'Parse error in JSON input:\\n' + excerpt + '\\n' + reason\n }\n return {\n message: message,\n excerpt: excerpt,\n pointer: pointer\n }\n}\n\nfunction improveNativeError (input, error) {\n var reason = getReason(error)\n var location = getLocationOnV8(input, reason) ||\n checkUnexpectedEndOnV8(input, reason) ||\n getLocationOnSpiderMonkey(input, reason)\n var offset, line, column\n if (location) {\n offset = location.offset\n line = location.line\n column = location.column\n reason = location.reason\n } else {\n offset = 0\n }\n error.reason = reason\n var texts = getTexts(reason, input, offset, line, column)\n error.message = texts.message\n error.excerpt = texts.excerpt\n if (texts.pointer) {\n error.pointer = texts.pointer\n error.location = {\n start: {\n column: column,\n line: line,\n offset: offset\n }\n }\n }\n return error\n}\n\nfunction parseNative (input, reviver) { // eslint-disable-line no-unused-vars\n try {\n return JSON.parse(input, reviver)\n } catch (error) {\n throw improveNativeError(input, error)\n }\n}\n\n/* globals navigator, process, parseCustom, parseNative */\n\nvar isSafari = typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor)\nvar oldNode = typeof process !== 'undefined' && process.version.startsWith('v4.')\n\nfunction needsCustomParser (options) {\n return options.ignoreComments || options.ignoreTrailingCommas ||\n options.allowSingleQuotedStrings || options.allowDuplicateObjectKeys === false ||\n options.mode === 'cjson' || options.mode === 'json5' || isSafari || oldNode\n}\n\nfunction getReviver (options) {\n if (typeof options === 'function') {\n return options\n } else if (options) {\n return options.reviver\n }\n}\n\nfunction parse (input, options) { // eslint-disable-line no-unused-vars\n options || (options = {})\n return needsCustomParser(options)\n ? parseCustom(input, options)\n : parseNative(input, getReviver(options))\n}\n\n exports.parse = parse\n exports.tokenize = tokenize\n exports.pathToPointer = pathToPointer\n exports.pointerToPath = pointerToPath\n\n exports.parseNative = parseNative\n exports.parseCustom = parseCustom\n exports.getErrorTexts = getTexts\n\n Object.defineProperty(exports, '__esModule', { value: true })\n}));\n"]}
|
|
1
|
+
{"version":3,"sources":["lib/jsonlint.js"],"names":["global","factory","exports","module","define","amd","self","jsonlint","this","Uni","isWhiteSpace","x","isWhiteSpaceJSON","isLineTerminator","isLineTerminatorJSON","isIdentifierStart","NonAsciiIdentifierStart","test","isIdentifierPart","NonAsciiIdentifierPart","isHexDigit","isOctDigit","isDecDigit","unescapeMap","'","\"","\\","b","f","n","r","t","v","/","parseInternal","input","options","String","json5","mode","ignoreComments","ignoreTrailingCommas","allowSingleQuotedStrings","allowDuplicateObjectKeys","reviver","tokenize","rawTokens","tokenLocations","tokenPaths","inputLength","length","lineNumber","lineStart","position","startToken","endToken","tokenPath","tokens","tokenOffset","tokenLine","tokenColumn","Error","type","value","token","raw","substr","undefined","location","start","column","line","offset","path","slice","push","generateMessage","message","JSON","stringify","createError","texts","getTexts","error","SyntaxError","reason","excerpt","pointer","fail","newLine","char","parseGeneric","string","parseString","parseObject","parseArray","number","parseNumber","parseKeyword","parseKey","result","rollback","parseIdentifier","skipWhiteSpace","insideWhiteSpace","startWhiteSpace","endWhiteSpace","skipComment","multiLine","keyword","startPosition","i","keywordLength","emptyObject","isNotEmpty","key","pop","item","toNumber","isOctal","parseInt","replace","Number","isNaN","match","NaN","isHex","sign","fromCharCode","endChar","count","digits","charCodeAt","returnValue","parseCustom","oldTokenize","escapePointerToken","toString","pathToPointer","map","join","unescapePointerToken","pointerToPath","split","getLineAndColumn","lines","pastInput","Math","max","previous","upcomingInput","rest","next","min","getPositionContext","past","upcoming","Array","getReason","firstCharacter","charAt","toUpperCase","getLocationOnV8","exec","index","checkUnexpectedEndOnV8","getLocationOnSpiderMonkey","getOffset","improveNativeError","parseNative","parse","isSafari","navigator","userAgent","vendor","oldNode","process","version","startsWith","needsCustomParser","getReviver","getErrorTexts","Object","defineProperty"],"mappings":"CAAC,SAAUA,OAAQC,gBACVC,UAAY,iBAAmBC,SAAW,YAAcF,QAAQC,gBAChEE,SAAW,YAAcA,OAAOC,IAAMD,OAAO,WAAY,CAAC,WAAYH,UAC5ED,OAASA,QAAUM,KAAML,QAAQD,OAAOO,SAAW,MAHtD,CAIEC,KAAM,SAAUN,SAAW,aAO7B,IAAIO,IAAM,CACRC,aAAc,SAASA,aAAcC,GAEnC,OAAOA,IAAM,KACTA,IAAM,KACNA,IAAM,UACLA,GAAK,MAAYA,GAAK,MAGvBA,IAAM,KACLA,GAAK,KAAYA,GAAK,KACvBA,IAAM,UACNA,IAAM,UACNA,IAAM,KACNA,IAAM,KACNA,IAAM,KAEZC,iBAAkB,SAASA,iBAAkBD,GAC3C,OAAOA,IAAM,KACTA,IAAM,MACNA,IAAM,MACNA,IAAM,MAEZE,iBAAkB,SAASA,iBAAkBF,GAG3C,OAAOA,IAAM,MACTA,IAAM,MACNA,IAAM,UACNA,IAAM,UAEZG,qBAAsB,SAASA,qBAAsBH,GACnD,OAAOA,IAAM,MACTA,IAAM,MAEZI,kBAAmB,SAASA,kBAAmBJ,GAC7C,OAAOA,IAAM,KACTA,IAAM,KACLA,GAAK,KAAOA,GAAK,KACjBA,GAAK,KAAOA,GAAK,KACjBA,GAAK,KAAYF,IAAIO,wBAAwBC,KAAKN,IAEzDO,iBAAkB,SAASA,iBAAkBP,GAC3C,OAAOA,IAAM,KACTA,IAAM,KACLA,GAAK,KAAOA,GAAK,KACjBA,GAAK,KAAOA,GAAK,KACjBA,GAAK,KAAOA,GAAK,KACjBA,GAAK,KAAYF,IAAIU,uBAAuBF,KAAKN,IAGxDK,wBAAyB,ymIAGzBG,uBAAwB,k7JAO1B,SAASC,WAAYT,GACnB,OAAQA,GAAK,KAAOA,GAAK,KACpBA,GAAK,KAAOA,GAAK,KACjBA,GAAK,KAAOA,GAAK,IAGxB,SAASU,WAAYV,GACnB,OAAOA,GAAK,KAAOA,GAAK,IAG1B,SAASW,WAAYX,GACnB,OAAOA,GAAK,KAAOA,GAAK,IAG1B,IAAIY,YAAc,CAChBC,IAAM,IACNC,IAAK,IACLC,KAAM,KACNC,EAAG,KACHC,EAAG,KACHC,EAAG,KACHC,EAAG,KACHC,EAAG,KACHC,EAAG,KACHC,IAAK,KAGP,SAASC,cAAeC,MAAOC,SAC7B,UAAWD,QAAU,YAAcA,iBAAiBE,QAAS,CAC3DF,MAAQE,OAAOF,OAGjB,IAAIG,MAAQF,QAAQG,OAAS,QAC7B,IAAIC,eAAiBJ,QAAQI,gBAAkBJ,QAAQG,OAAS,SAAWD,MAC3E,IAAIG,qBAAuBL,QAAQK,sBAAwBH,MAC3D,IAAII,yBAA2BN,QAAQM,0BAA4BJ,MACnE,IAAIK,yBAA2BP,QAAQO,yBACvC,IAAIC,QAAUR,QAAQQ,QACtB,IAAIC,SAAWT,QAAQS,SACvB,IAAIC,UAAYV,QAAQU,UACxB,IAAIC,eAAiBX,QAAQW,eAC7B,IAAIC,WAAaZ,QAAQY,WAEzB,IAAInC,iBAAmByB,MAAQ7B,IAAII,iBAAmBJ,IAAIK,qBAC1D,IAAIJ,aAAe4B,MAAQ7B,IAAIC,aAAeD,IAAIG,iBAElD,IAAIqC,YAAcd,MAAMe,OACxB,IAAIC,WAAa,EACjB,IAAIC,UAAY,EAChB,IAAIC,SAAW,EAEf,IAAIC,WACJ,IAAIC,SACJ,IAAIC,UAEJ,GAAIX,SAAU,CACZ,IAAIY,OAAS,GACb,IAAIC,YAAc,KAClB,IAAIC,UACJ,IAAIC,YACJN,WAAa,WACX,GAAII,cAAgB,KAAM,MAAMG,MAAM,iCACtCF,UAAYR,WAAa,EACzBS,YAAcP,SAAWD,UAAY,EACrCM,YAAcL,UAEhBE,SAAW,SAAUO,KAAMC,OACzB,GAAIL,cAAgBL,SAAU,CAC5B,IAAIW,MAAQ,CAAEF,KAAMA,MACpB,GAAIhB,UAAW,CACbkB,MAAMC,IAAM9B,MAAM+B,OAAOR,YAAaL,SAAWK,aAEnD,GAAIK,QAAUI,UAAW,CACvBH,MAAMD,MAAQA,MAEhB,GAAIhB,eAAgB,CAClBiB,MAAMI,SAAW,CACfC,MAAO,CACLC,OAAQV,YACRW,KAAMZ,UACNa,OAAQd,cAId,GAAIV,WAAY,CACdgB,MAAMS,KAAOjB,UAAUkB,QAEzBjB,OAAOkB,KAAKX,OAEdN,YAAc,KACd,OAAOK,OAETf,aAAeQ,UAAY,IAG7B,SAASoB,kBACP,IAAIC,QACJ,GAAIxB,SAAWJ,YAAa,CAC1B,IAAIe,MAAQc,KAAKC,UAAU5C,MAAMkB,WACjCwB,QAAU,oBAAsBb,UAC3B,CACLa,QAAU,0BAEZ,OAAOA,QAGT,SAASG,YAAaH,SACpB,IAAIP,OAASjB,SAAWD,UAAY,IAClCD,WACF,IAAI8B,MAAQC,SAASL,QAAS1C,MAAOkB,SAAUF,WAAYmB,QAC3D,IAAIa,MAAQC,YAAYH,MAAMJ,SAC9BM,MAAME,OAASR,QACfM,MAAMG,QAAUL,MAAMK,QACtBH,MAAMI,QAAUN,MAAMM,QACtBJ,MAAMf,SAAW,CACfC,MAAO,CACLC,OAAQA,OACRC,KAAMpB,WACNqB,OAAQnB,WAGZ,OAAO8B,MAGT,SAASK,KAAMX,SACb,IAAKA,QAAS,CACZA,QAAUD,kBAEZ,IAAIO,MAAQH,YAAYH,SACxB,MAAMM,MAGR,SAASM,QAASC,MAEhB,GAAIA,OAAS,MAAQvD,MAAMkB,YAAc,KAAM,GAC3CA,SAEJD,UAAYC,WACVF,WAGJ,SAASwC,eACP,MAAOtC,SAAWJ,YAAa,CAC7BK,YAAcA,aACd,IAAIoC,KAAOvD,MAAMkB,YACjB,GAAIqC,OAAS,KAAQA,OAAS,KAAQhD,yBAA2B,CAC/D,IAAIkD,OAASC,YAAYH,MACzBnC,UAAYA,SAAS,UAAWqC,QAChC,OAAOA,YACF,GAAIF,OAAS,IAAK,CACvBnC,UAAYA,SAAS,SAAU,KAC/B,OAAOuC,mBACF,GAAIJ,OAAS,IAAK,CACvBnC,UAAYA,SAAS,SAAU,KAC/B,OAAOwC,kBACF,GAAIL,OAAS,KAAOA,OAAS,KAAOpE,WAAWoE,OAC1CpD,QAAUoD,OAAS,KAAOA,OAAS,KAAOA,OAAS,KAAO,CACpE,IAAIM,OAASC,cACb1C,UAAYA,SAAS,UAAWyC,QAChC,OAAOA,YACF,GAAIN,OAAS,IAAK,CACvBQ,aAAa,QACb3C,UAAYA,SAAS,UAAW,MAChC,OAAO,UACF,GAAImC,OAAS,IAAK,CACvBQ,aAAa,QACb3C,UAAYA,SAAS,UAAW,MAChC,OAAO,UACF,GAAImC,OAAS,IAAK,CACvBQ,aAAa,SACb3C,UAAYA,SAAS,UAAW,OAChC,OAAO,UACF,GACHF,SACFE,UAAYA,WACZ,OAAOY,YAKb,SAASgC,WACP,IAAIC,OACJ,MAAO/C,SAAWJ,YAAa,CAC7BK,YAAcA,aACd,IAAIoC,KAAOvD,MAAMkB,YACjB,GAAIqC,OAAS,KAAQA,OAAS,KAAQhD,yBAA2B,CAC/D,IAAIkD,OAASC,YAAYH,MACzBnC,UAAYA,SAAS,UAAWqC,QAChC,OAAOA,YACF,GAAIF,OAAS,IAAK,CACvBnC,UAAYA,SAAS,SAAU,KAC/B,OAAOuC,mBACF,GAAIJ,OAAS,IAAK,CACvBnC,UAAYA,SAAS,SAAU,KAC/B,OAAOwC,kBACF,GAAIL,OAAS,KAAOpE,WAAWoE,MAAO,CAC3C,IAAIM,OAASC,YAAY,MACzB1C,UAAYA,SAAS,UAAWyC,QAChC,OAAOA,YACF,GAAK1D,OAAS7B,IAAIM,kBAAkB2E,OAC/BA,OAAS,MAAQvD,MAAMkB,YAAc,IAAM,CACrD,IAAIgD,SAAWhD,SAAW,EAC1B+C,OAASE,kBACT,GAAIF,SAAWjC,UAAW,CACxBd,SAAWgD,SACX9C,UAAYA,WACZ,OAAOY,cACF,CACLZ,UAAYA,SAAS,UAAW6C,QAChC,OAAOA,YAEJ,GACH/C,SACFE,UAAYA,WACZ,OAAOY,YAKb,SAASoC,iBACP,IAAIC,iBACJ,SAASC,kBACP,IAAKD,iBAAkB,CACrBA,iBAAmB,OACjBnD,SACFC,eACED,UAGN,SAASqD,gBACP,GAAIF,iBAAkB,CACpBA,iBAAmB,MACnBjD,SAAS,eAGb,MAAOF,SAAWJ,YAAa,CAC7B,IAAIyC,KAAOvD,MAAMkB,YACjB,GAAIxC,iBAAiB6E,MAAO,CAC1BpC,YAAcmD,kBACdhB,QAAQC,WACH,GAAIhF,aAAagF,MAAO,CAC7BpC,YAAcmD,uBACT,GAAIf,OAAS,KAAOlD,iBACfL,MAAMkB,YAAc,KAAOlB,MAAMkB,YAAc,KAAM,CAC/D,GAAIC,WAAY,GACZD,SACFqD,gBACApD,eACED,SAEJsD,YAAYxE,MAAMkB,cAAgB,KAClCE,UAAYA,SAAS,eAChB,GACHF,SACF,OAGJE,UAAYmD,gBAGd,SAASC,YAAaC,WACpB,MAAOvD,SAAWJ,YAAa,CAC7B,IAAIyC,KAAOvD,MAAMkB,YACjB,GAAIxC,iBAAiB6E,MAAO,CAC1B,IAAKkB,UAAW,GAEZvD,SACF,OAEFoC,QAAQC,WACH,GAAIA,OAAS,KAAOkB,UAAW,CACpC,GAAIzE,MAAMkB,YAAc,IAAK,GACzBA,SACF,YAEG,GAIT,GAAIuD,UAAW,CACbpB,KAAK,+BAIT,SAASU,aAAcW,SAErB,IAAIC,cAAgBzD,SACpB,IAAK,IAAI0D,EAAI,EAAGC,cAAgBH,QAAQ3D,OAAQ6D,EAAIC,gBAAiBD,EAAG,CACtE,GAAI1D,UAAYJ,aAAe4D,QAAQE,KAAO5E,MAAMkB,UAAW,CAC7DA,SAAWyD,cAAgB,EAC3BtB,SAEAnC,UAIN,SAASyC,cACP,IAAIM,OAAS,GACb,IAAIa,YAAc,GAClB,IAAIC,WAAa,MAEjB,MAAO7D,SAAWJ,YAAa,CAC7BsD,iBACA,IAAIY,IAAMhB,WACV,GAAIxD,2BAA6B,OAASyD,OAAOe,KAAM,CACrD3B,KAAK,mBAAqB2B,IAAM,KAElCZ,iBACAjD,YAAcA,aACd,IAAIoC,KAAOvD,MAAMkB,YACjBE,UAAYA,SAAS,SAAUmC,MAC/B,GAAIA,OAAS,KAAOyB,MAAQhD,UAAW,CACrC,IAAK1B,sBAAwByE,WAAY,GACrC7D,SACFmC,KAAK,4BAEP,OAAOY,YACF,GAAIV,OAAS,KAAOyB,MAAQhD,UAAW,CAC5CoC,iBACA/C,WAAaA,UAAUmB,KAAKwC,KAC5B,IAAIpD,MAAQ4B,eACZnC,WAAaA,UAAU4D,MAEvB,GAAIrD,QAAUI,UAAWqB,KAAK,2BAA6B2B,IAAM,KACjE,UAAWA,MAAQ,SAAU,CAC3B,IAAK7E,cAAgB6E,MAAQ,SAAU,CACrC3B,KAAK,oBAAsB2B,IAAM,MAIrC,GAAIA,OAAOF,aAAeA,YAAYE,MAAQ,KAAM,MAE7C,CACL,GAAIvE,QAAS,CACXmB,MAAQnB,QAAQuE,IAAKpD,OAEvB,GAAIA,QAAUI,UAAW,CACvB+C,WAAa,KACbd,OAAOe,KAAOpD,OAIlBwC,iBACAjD,YAAcA,aACdoC,KAAOvD,MAAMkB,YACbE,UAAYA,SAAS,SAAUmC,MAC/B,GAAIA,OAAS,IAAK,CAChB,cACK,GAAIA,OAAS,IAAK,CACvB,OAAOU,WACF,CACLZ,YAEG,GACHnC,SACFmC,QAIJA,OAGF,SAASO,aACP,IAAIK,OAAS,GACb,MAAO/C,SAAWJ,YAAa,CAC7BsD,iBACA/C,WAAaA,UAAUmB,KAAKyB,OAAOlD,QACnC,IAAImE,KAAO1B,eACXnC,WAAaA,UAAU4D,MACvBb,iBACAjD,YAAcA,aACd,IAAIoC,KAAOvD,MAAMkB,YACjBE,UAAYA,SAAS,SAAUmC,MAC/B,GAAI2B,OAASlD,UAAW,CACtB,GAAIvB,QAAS,CACXyE,KAAOzE,QAAQP,OAAO+D,OAAOlD,QAASmE,MAExC,GAAIA,OAASlD,UAAW,GACpBiC,OAAOlD,OACTmE,KAAO,SACF,CACLjB,OAAOzB,KAAK0C,OAIhB,GAAI3B,OAAS,IAAK,CAChB,GAAI2B,OAASlD,UAAW,CACtBqB,KAAK,oCAEF,GAAIE,OAAS,IAAK,CACvB,IAAKjD,sBAAwB4E,OAASlD,WAAaiC,OAAOlD,OAAQ,GAC9DG,SACFmC,KAAK,2BAEP,OAAOY,WACF,GACH/C,SACFmC,SAKN,SAASS,gBAEL5C,SAEF,IAAIgB,MAAQhB,SACZ,IAAIqC,KAAOvD,MAAMkB,YACjB,IAAIiE,SAAW,SAAUC,SACvB,IAAI3B,OAASzD,MAAM+B,OAAOG,MAAOhB,SAAWgB,OAC5C,IAAI+B,OAEJ,GAAImB,QAAS,CACXnB,OAASoB,SAAS5B,OAAO6B,QAAQ,OAAQ,IAAK,OACzC,CACLrB,OAASsB,OAAO9B,QAGlB,GAAI8B,OAAOC,MAAMvB,QAAS,GACtB/C,SACFmC,KAAK,0BAA4BrD,MAAM+B,OAAOG,MAAOhB,SAAWgB,MAAQ,GAAK,UACxE,IAAK/B,QAAUsD,OAAOgC,MAAM,kDAAmD,GAElFvE,SACFmC,KAAK,+BAAiCrD,MAAM+B,OAAOG,MAAOhB,SAAWgB,MAAQ,GAAK,SAC7E,CACL,OAAO+B,SAMX,GAAIV,OAAS,KAAQA,OAAS,KAAOpD,MAAQ,CAC3CoD,KAAOvD,MAAMkB,YAGf,GAAIqC,OAAS,KAAOpD,MAAO,CACzB4D,aAAa,OACb,OAAO2B,IAGT,GAAInC,OAAS,KAAOpD,MAAO,CACzB4D,aAAa,YAEb,OAAOoB,WAGT,GAAI5B,MAAQ,KAAOA,MAAQ,IAAK,CAG9B,MAAOrC,SAAWJ,aAAe3B,WAAWa,MAAMkB,WAAY,GAC1DA,SAEJqC,KAAOvD,MAAMkB,YAIf,GAAIqC,OAAS,IAAK,CAChBA,KAAOvD,MAAMkB,YAGb,IAAIkE,QAAU7B,OAAS,KAAOA,OAAS,KAAOrE,WAAWqE,MACzD,IAAIoC,MAAQpC,OAAS,KAAOA,OAAS,IAErC,GAAIpD,QAAUiF,SAAWO,OAAQ,CAC/B,MAAOzE,SAAWJ,cACV6E,MAAQ1G,WAAaC,YAAYc,MAAMkB,WAAY,GACvDA,SAGJ,IAAI0E,KAAO,EACX,GAAI5F,MAAMkC,SAAW,IAAK,CACxB0D,MAAQ,IACN1D,WACG,GAAIlC,MAAMkC,SAAW,IAAK,GAC7BA,MAGJ,OAAO0D,KAAOT,SAASC,UAI3B,GAAI7B,OAAS,IAAK,CAGhB,MAAOrC,SAAWJ,aAAe3B,WAAWa,MAAMkB,WAAY,GAC1DA,SAEJqC,KAAOvD,MAAMkB,YAGf,GAAIqC,OAAS,KAAOA,OAAS,IAAK,CAChCA,KAAOvD,MAAMkB,YACb,GAAIqC,OAAS,KAAOA,OAAS,IAAK,GAC9BrC,SAIJ,MAAOA,SAAWJ,aAAe3B,WAAWa,MAAMkB,WAAY,GAC1DA,SAEJqC,KAAOvD,MAAMkB,cAIbA,SACF,OAAOiE,WAGT,SAAShB,oBAELjD,SAEF,IAAI+C,OAAS,GACb,MAAO/C,SAAWJ,YAAa,CAC7B,IAAIyC,KAAOvD,MAAMkB,YACjB,GAAIqC,OAAS,MACTvD,MAAMkB,YAAc,KACpBjC,WAAWe,MAAMkB,SAAW,KAC5BjC,WAAWe,MAAMkB,SAAW,KAC5BjC,WAAWe,MAAMkB,SAAW,KAC5BjC,WAAWe,MAAMkB,SAAW,IAAK,CAEnCqC,KAAOrD,OAAO2F,aAAaR,SAASrF,MAAM+B,OAAOb,SAAW,EAAG,GAAI,KACnEA,UAAY,EAGd,GAAI+C,OAAOlD,OAAQ,CAEjB,GAAIzC,IAAIS,iBAAiBwE,MAAO,CAC9BU,QAAUV,SACL,GACHrC,SACF,OAAO+C,YAEJ,CACL,GAAI3F,IAAIM,kBAAkB2E,MAAO,CAC/BU,QAAUV,SACL,CACL,OAAOvB,YAKbqB,OAGF,SAASK,YAAaoC,SAEpB,IAAI7B,OAAS,GACb,MAAO/C,SAAWJ,YAAa,CAC7B,IAAIyC,KAAOvD,MAAMkB,YACjB,GAAIqC,OAASuC,QAAS,CACpB,OAAO7B,YACF,GAAIV,OAAS,KAAM,CACxB,GAAIrC,UAAYJ,YAAa,CAC3BuC,OAEFE,KAAOvD,MAAMkB,YACb,GAAI9B,YAAYmE,QAAUpD,OAAUoD,OAAS,MAAQA,OAAS,KAAOhD,2BAA6B,CAChG0D,QAAU7E,YAAYmE,WACjB,GAAIpD,OAASzB,iBAAiB6E,MAAO,CAE1CD,QAAQC,WACH,GAAIA,OAAS,KAAQA,OAAS,KAAOpD,MAAQ,CAElD,IAAI4F,MAAQxC,OAAS,IAAM,EAAI,EAE/B,IAAK,IAAIqB,EAAI,EAAGA,EAAImB,QAASnB,EAAG,CAC9B,GAAI1D,UAAYJ,YAAa,CAC3BuC,OAEF,IAAKpE,WAAWe,MAAMkB,WAAY,CAChCmC,KAAK,uBAEPnC,WAEF+C,QAAU/D,OAAO2F,aAAaR,SAASrF,MAAM+B,OAAOb,SAAW6E,MAAOA,OAAQ,UACzE,GAAI5F,OAASjB,WAAWqE,MAAO,CACpC,IAAIyC,OACJ,GAAIzC,KAAO,KAAOrE,WAAWc,MAAMkB,YAAchC,WAAWc,MAAMkB,SAAW,IAAK,CAEhF8E,OAAS,OACJ,GAAI9G,WAAWc,MAAMkB,WAAY,CAEtC8E,OAAS,MACJ,CACLA,OAAS,EAEX9E,UAAY8E,OAAS,EACrB/B,QAAU/D,OAAO2F,aAAaR,SAASrF,MAAM+B,OAAOb,SAAW8E,OAAQA,QAAS,SAC3E,GAAI7F,MAAO,CAEhB8D,QAAUV,SACL,GACHrC,SACFmC,aAEG,GAAI3E,iBAAiB6E,MAAO,CACjCF,WACK,CACL,IAAKlD,OAASoD,KAAK0C,WAAW,GAAK,GAAI,GACnC/E,SACFmC,KAAK,gCAGPY,QAAUV,MAIdF,OAGFe,iBACA,IAAI8B,YAAc1C,eAClB,GAAI0C,cAAgBlE,WAAad,SAAWJ,YAAa,CACvDsD,iBACA,GAAIlD,UAAYJ,YAAa,CAC3B,GAAIL,QAAS,CACXyF,YAAczF,QAAQ,GAAIyF,aAE5B,OAAOxF,SAAWY,OAAS4E,gBACtB,CACL7C,YAEG,CACL,GAAInC,SAAU,CACZmC,KAAK,kCACA,CACLA,KAAK,0BAKX,SAAS8C,YAAanG,MAAOC,SAC3B,UAAWA,UAAY,WAAY,CACjCA,QAAU,CACRQ,QAASR,cAEN,IAAKA,QAAS,CACnBA,QAAU,GAEZ,OAAOF,cAAcC,MAAOC,SAG9B,SAASS,SAAUV,MAAOC,SACxB,IAAKA,QAAS,CACZA,QAAU,GAIZ,IAAImG,YAAcnG,QAAQS,SAC1BT,QAAQS,SAAW,KACnB,IAAIY,OAASvB,cAAcC,MAAOC,SAClCA,QAAQS,SAAW0F,YACnB,OAAO9E,OAGT,SAAS+E,mBAAoBxE,OAC3B,OAAOA,MACJyE,WACAhB,QAAQ,KAAM,MACdA,QAAQ,MAAO,MAGpB,SAASiB,cAAejF,QACtB,GAAIA,OAAOP,SAAW,EAAG,CACvB,MAAO,GAET,MAAO,IAAMO,OACVkF,IAAIH,oBACJI,KAAK,KAGV,SAASC,qBAAsB7E,OAC7B,OAAOA,MACJyD,QAAQ,MAAO,KACfA,QAAQ,MAAO,KAGpB,SAASqB,cAAevD,SACtB,GAAIA,UAAY,GAAI,CAClB,MAAO,GAET,GAAIA,QAAQ,KAAO,IAAK,CACtB,MAAM,IAAI1B,MAAM,wCAElB,OAAO0B,QACJrB,OAAO,GACP6E,MAAM,KACNJ,IAAIE,sBAGT,SAASG,iBAAkB7G,MAAOqC,QAChC,IAAIyE,MAAQ9G,MACT+B,OAAO,EAAGM,QACVuE,MAAM,SACT,IAAIxE,KAAO0E,MAAM/F,OACjB,IAAIoB,OAAS2E,MAAM1E,KAAO,GAAGrB,OAAS,EACtC,MAAO,CACLqB,KAAMA,KACND,OAAQA,QAIZ,SAAS4E,UAAW/G,MAAOqC,QACzB,IAAIH,MAAQ8E,KAAKC,IAAI,EAAG5E,OAAS,IACjC,IAAI6E,SAAWlH,MAAM+B,OAAOG,MAAOG,OAASH,OAC5C,OAAQG,OAAS,GAAK,MAAQ,IAAM6E,SAAS5B,QAAQ,SAAU,IAGjE,SAAS6B,cAAenH,MAAOqC,QAC7B,IAAIH,MAAQ8E,KAAKC,IAAI,EAAG5E,OAAS,IACjCH,OAASG,OAASH,MAClB,IAAIkF,KAAOpH,MAAMe,OAASmB,MAC1B,IAAImF,KAAOrH,MAAM+B,OAAOG,MAAO8E,KAAKM,IAAI,GAAIF,OAC5C,OAAOC,KAAK/B,QAAQ,SAAU,KAAO8B,KAAO,GAAK,MAAQ,IAG3D,SAASG,mBAAoBvH,MAAOqC,QAClC,IAAImF,KAAOT,UAAU/G,MAAOqC,QAC5B,IAAIoF,SAAWN,cAAcnH,MAAOqC,QACpC,IAAIe,QAAU,IAAIsE,MAAMF,KAAKzG,OAAS,GAAG0F,KAAK,KAAO,IACrD,MAAO,CACLtD,QAASqE,KAAOC,SAChBrE,QAASA,SAIb,SAASuE,UAAW3E,OAClB,IAAIN,QAAUM,MAAMN,QACjB4C,QAAQ,eAAgB,IACxBA,QAAQ,qBAAsB,IACjC,IAAIsC,eAAiBlF,QAAQmF,OAAO,GACpC,GAAID,gBAAkB,IAAK,CACzBlF,QAAUkF,eAAeE,cAAgBpF,QAAQX,OAAO,GAE1D,OAAOW,QAGT,SAASqF,gBAAiB/H,MAAOkD,QAC/B,IAAIuC,MAAQ,8BAA8BuC,KAAK9E,QAC/C,GAAIuC,MAAO,CACT,IAAIpD,QAAUoD,MAAM,GACpB,IAAIxD,SAAW4E,iBAAiB7G,MAAOqC,QACvC,MAAO,CACLA,OAAQA,OACRD,KAAMH,SAASG,KACfD,OAAQF,SAASE,OACjBe,OAAQA,OAAOnB,OAAO,EAAG0D,MAAMwC,SAKrC,SAASC,uBAAwBlI,MAAOkD,QACtC,IAAIuC,MAAQ,sBAAsBuC,KAAK9E,QACvC,GAAIuC,MAAO,CACT,IAAIpD,OAASrC,MAAMe,OACnB,IAAIkB,SAAW4E,iBAAiB7G,MAAOqC,QACvC,MAAO,CACLA,OAAQA,OACRD,KAAMH,SAASG,KACfD,OAAQF,SAASE,OACjBe,OAAQA,OAAOnB,OAAO,EAAG0D,MAAMwC,MAAQ,KAK7C,SAASE,0BAA2BnI,MAAOkD,QACzC,IAAIuC,MAAQ,gDAAgDuC,KAAK9E,QACjE,GAAIuC,MAAO,CACT,IAAIrD,MAAQqD,MAAM,GAClB,IAAItD,QAAUsD,MAAM,GACpB,IAAIpD,OAAS+F,UAAUpI,MAAOoC,KAAMD,QACpC,MAAO,CACLE,OAAQA,OACRD,KAAMA,KACND,OAAQA,OACRe,OAAQA,OAAOnB,OAAO,EAAG0D,MAAMwC,SAKrC,SAASlF,SAAUG,OAAQlD,MAAOqC,OAAQD,KAAMD,QAC9C,IAAIjB,SAAWqG,mBAAmBvH,MAAOqC,QACzC,IAAIc,QAAUjC,SAASiC,QACvB,IAAIT,QAASU,QACb,UAAWhB,OAAS,SAAU,CAC5BgB,QAAUlC,SAASkC,QACnBV,QAAU,uBAAyBN,KAAO,YACxCD,OAAS,MAAQgB,QAAU,KAAOC,QAAU,KAAOF,WAChD,CACLR,QAAU,+BAAiCS,QAAU,KAAOD,OAE9D,MAAO,CACLR,QAASA,QACTS,QAASA,QACTC,QAASA,SAIb,SAASiF,mBAAoBrI,MAAOgD,OAClC,IAAIE,OAASyE,UAAU3E,OACvB,IAAIf,SAAW8F,gBAAgB/H,MAAOkD,SACpCgF,uBAAuBlI,MAAOkD,SAC9BiF,0BAA0BnI,MAAOkD,QACnC,IAAIb,OAAQD,KAAMD,OAClB,GAAIF,SAAU,CACZI,OAASJ,SAASI,OAClBD,KAAOH,SAASG,KAChBD,OAASF,SAASE,OAClBe,OAASjB,SAASiB,WACb,CACLb,OAAS,EAEXW,MAAME,OAASA,OACf,IAAIJ,MAAQC,SAASG,OAAQlD,MAAOqC,OAAQD,KAAMD,QAClDa,MAAMN,QAAUI,MAAMJ,QACtBM,MAAMG,QAAUL,MAAMK,QACtB,GAAIL,MAAMM,QAAS,CACjBJ,MAAMI,QAAUN,MAAMM,QACtBJ,MAAMf,SAAW,CACfC,MAAO,CACLC,OAAQA,OACRC,KAAMA,KACNC,OAAQA,SAId,OAAOW,MAGT,SAASsF,YAAatI,MAAOS,SAC3B,IACE,OAAOkC,KAAK4F,MAAMvI,MAAOS,SACzB,MAAOuC,OACP,MAAMqF,mBAAmBrI,MAAOgD,QAMpC,IAAIwF,gBAAkBC,YAAc,aAAe,SAAS3J,KAAK2J,UAAUC,YAAc,iBAAiB5J,KAAK2J,UAAUE,QACzH,IAAIC,eAAiBC,UAAY,aAAeA,QAAQC,QAAQC,WAAW,OAE3E,SAASC,kBAAmB/I,SAC1B,OAAOA,QAAQI,gBAAkBJ,QAAQK,sBACzCL,QAAQM,0BAA4BN,QAAQO,2BAA6B,OACzEP,QAAQG,OAAS,SAAWH,QAAQG,OAAS,SAAWoI,UAAYI,QAGtE,SAASK,WAAYhJ,SACnB,UAAWA,UAAY,WAAY,CACjC,OAAOA,aACF,GAAIA,QAAS,CAClB,OAAOA,QAAQQ,SAInB,SAAS8H,MAAOvI,MAAOC,SACrBA,UAAYA,QAAU,IACtB,OAAO+I,kBAAkB/I,SACrBkG,YAAYnG,MAAOC,SACnBqI,YAAYtI,MAAOiJ,WAAWhJ,UAGlClC,QAAQwK,MAAQA,MAChBxK,QAAQ2C,SAAWA,SACnB3C,QAAQwI,cAAgBA,cACxBxI,QAAQ4I,cAAgBA,cAExB5I,QAAQuK,YAAcA,YACtBvK,QAAQoI,YAAcA,YACtBpI,QAAQmL,cAAgBnG,SAExBoG,OAAOC,eAAerL,QAAS,aAAc,CAAE6D,MAAO","file":"jsonlint.js","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define('jsonlint', ['exports'], factory) :\n (global = global || self, factory(global.jsonlint = {}))\n}(this, function (exports) { 'use strict'\n\n// Modified from https://github.com/rlidwka/jju/blob/master/lib/unicode.js\n\n// This is autogenerated with esprima tools, see:\n// https://github.com/ariya/esprima/blob/master/esprima.js\n\nvar Uni = { // eslint-disable-line no-unused-vars\n isWhiteSpace: function isWhiteSpace (x) {\n // section 7.2, table 2\n return x === '\\u0020' ||\n x === '\\u00A0' ||\n x === '\\uFEFF' || // <-- this is not a Unicode WS, only a JS one\n (x >= '\\u0009' && x <= '\\u000D') || // 9 A B C D\n\n // + whitespace characters from unicode, category Zs\n x === '\\u1680' ||\n (x >= '\\u2000' && x <= '\\u200A') || // 0 1 2 3 4 5 6 7 8 9 A\n x === '\\u2028' ||\n x === '\\u2029' ||\n x === '\\u202F' ||\n x === '\\u205F' ||\n x === '\\u3000'\n },\n isWhiteSpaceJSON: function isWhiteSpaceJSON (x) {\n return x === '\\u0020' ||\n x === '\\u0009' ||\n x === '\\u000A' ||\n x === '\\u000D'\n },\n isLineTerminator: function isLineTerminator (x) {\n // ok, here is the part when JSON is wrong\n // section 7.3, table 3\n return x === '\\u000A' ||\n x === '\\u000D' ||\n x === '\\u2028' ||\n x === '\\u2029'\n },\n isLineTerminatorJSON: function isLineTerminatorJSON (x) {\n return x === '\\u000A' ||\n x === '\\u000D'\n },\n isIdentifierStart: function isIdentifierStart (x) {\n return x === '$' ||\n x === '_' ||\n (x >= 'A' && x <= 'Z') ||\n (x >= 'a' && x <= 'z') ||\n (x >= '\\u0080' && Uni.NonAsciiIdentifierStart.test(x))\n },\n isIdentifierPart: function isIdentifierPart (x) {\n return x === '$' ||\n x === '_' ||\n (x >= 'A' && x <= 'Z') ||\n (x >= 'a' && x <= 'z') ||\n (x >= '0' && x <= '9') || // <-- addition to Start\n (x >= '\\u0080' && Uni.NonAsciiIdentifierPart.test(x))\n },\n // ECMAScript 5.1/Unicode v6.3.0 NonAsciiIdentifierStart:\n NonAsciiIdentifierStart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\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\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F0\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\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\\u2071\\u207F\\u2090-\\u209C\\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-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\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-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // ECMAScript 5.1/Unicode v6.3.0 NonAsciiIdentifierPart:\n /* eslint-disable-next-line no-misleading-character-class */\n 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]/\n}\n\n/* globals Uni, getTexts */\n\n// Modified from https://github.com/rlidwka/jju/blob/master/lib/parse.js\n\nfunction isHexDigit (x) {\n return (x >= '0' && x <= '9') ||\n (x >= 'A' && x <= 'F') ||\n (x >= 'a' && x <= 'f')\n}\n\nfunction isOctDigit (x) {\n return x >= '0' && x <= '7'\n}\n\nfunction isDecDigit (x) {\n return x >= '0' && x <= '9'\n}\n\nvar unescapeMap = {\n '\\'': '\\'',\n '\"': '\"',\n '\\\\': '\\\\',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t',\n v: '\\v',\n '/': '/'\n}\n\nfunction parseInternal (input, options) {\n if (typeof input !== 'string' || !(input instanceof String)) {\n input = String(input)\n }\n\n var json5 = options.mode === 'json5'\n var ignoreComments = options.ignoreComments || options.mode === 'cjson' || json5\n var ignoreTrailingCommas = options.ignoreTrailingCommas || json5\n var allowSingleQuotedStrings = options.allowSingleQuotedStrings || json5\n var allowDuplicateObjectKeys = options.allowDuplicateObjectKeys\n var reviver = options.reviver\n var tokenize = options.tokenize\n var rawTokens = options.rawTokens\n var tokenLocations = options.tokenLocations\n var tokenPaths = options.tokenPaths\n\n var isLineTerminator = json5 ? Uni.isLineTerminator : Uni.isLineTerminatorJSON\n var isWhiteSpace = json5 ? Uni.isWhiteSpace : Uni.isWhiteSpaceJSON\n\n var inputLength = input.length\n var lineNumber = 0\n var lineStart = 0\n var position = 0\n\n var startToken\n var endToken\n var tokenPath\n\n if (tokenize) {\n var tokens = []\n var tokenOffset = null\n var tokenLine\n var tokenColumn\n startToken = function () {\n if (tokenOffset !== null) throw Error('internal error, token overlap')\n tokenLine = lineNumber + 1\n tokenColumn = position - lineStart + 1\n tokenOffset = position\n }\n endToken = function (type, value) {\n if (tokenOffset !== position) {\n var token = { type: type }\n if (rawTokens) {\n token.raw = input.substr(tokenOffset, position - tokenOffset)\n }\n if (value !== undefined) {\n token.value = value\n }\n if (tokenLocations) {\n token.location = {\n start: {\n column: tokenColumn,\n line: tokenLine,\n offset: tokenOffset\n }\n }\n }\n if (tokenPaths) {\n token.path = tokenPath.slice()\n }\n tokens.push(token)\n }\n tokenOffset = null\n return value\n }\n tokenPaths && (tokenPath = [])\n }\n\n function generateMessage () {\n var message\n if (position < inputLength) {\n var token = JSON.stringify(input[position])\n message = 'Unexpected token ' + token\n } else {\n message = 'Unexpected end of input'\n }\n return message\n }\n\n function createError (message) {\n var column = position - lineStart + 1\n ++lineNumber\n var texts = getTexts(message, input, position, lineNumber, column)\n var error = SyntaxError(texts.message)\n error.reason = message\n error.excerpt = texts.excerpt\n error.pointer = texts.pointer\n error.location = {\n start: {\n column: column,\n line: lineNumber,\n offset: position\n }\n }\n return error\n }\n\n function fail (message) {\n if (!message) {\n message = generateMessage()\n }\n var error = createError(message)\n throw error\n }\n\n function newLine (char) {\n // account for <cr><lf>\n if (char === '\\r' && input[position] === '\\n') {\n ++position\n }\n lineStart = position\n ++lineNumber\n }\n\n function parseGeneric () {\n while (position < inputLength) {\n startToken && startToken()\n var char = input[position++]\n if (char === '\"' || (char === '\\'' && allowSingleQuotedStrings)) {\n var string = parseString(char)\n endToken && endToken('literal', string)\n return string\n } else if (char === '{') {\n endToken && endToken('symbol', '{')\n return parseObject()\n } else if (char === '[') {\n endToken && endToken('symbol', '[')\n return parseArray()\n } else if (char === '-' || char === '.' || isDecDigit(char) ||\n (json5 && (char === '+' || char === 'I' || char === 'N'))) {\n var number = parseNumber()\n endToken && endToken('literal', number)\n return number\n } else if (char === 'n') {\n parseKeyword('null')\n endToken && endToken('literal', null)\n return null\n } else if (char === 't') {\n parseKeyword('true')\n endToken && endToken('literal', true)\n return true\n } else if (char === 'f') {\n parseKeyword('false')\n endToken && endToken('literal', false)\n return false\n } else {\n --position\n endToken && endToken()\n return undefined\n }\n }\n }\n\n function parseKey () {\n var result\n while (position < inputLength) {\n startToken && startToken()\n var char = input[position++]\n if (char === '\"' || (char === '\\'' && allowSingleQuotedStrings)) {\n var string = parseString(char)\n endToken && endToken('literal', string)\n return string\n } else if (char === '{') {\n endToken && endToken('symbol', '{')\n return parseObject()\n } else if (char === '[') {\n endToken && endToken('symbol', '[')\n return parseArray()\n } else if (char === '.' || isDecDigit(char)) {\n var number = parseNumber(true)\n endToken && endToken('literal', number)\n return number\n } else if ((json5 && Uni.isIdentifierStart(char)) ||\n (char === '\\\\' && input[position] === 'u')) {\n var rollback = position - 1\n result = parseIdentifier()\n if (result === undefined) {\n position = rollback\n endToken && endToken()\n return undefined\n } else {\n endToken && endToken('literal', result)\n return result\n }\n } else {\n --position\n endToken && endToken()\n return undefined\n }\n }\n }\n\n function skipWhiteSpace () {\n var insideWhiteSpace\n function startWhiteSpace () {\n if (!insideWhiteSpace) {\n insideWhiteSpace = true\n --position\n startToken()\n ++position\n }\n }\n function endWhiteSpace () {\n if (insideWhiteSpace) {\n insideWhiteSpace = false\n endToken('whitespace')\n }\n }\n while (position < inputLength) {\n var char = input[position++]\n if (isLineTerminator(char)) {\n startToken && startWhiteSpace()\n newLine(char)\n } else if (isWhiteSpace(char)) {\n startToken && startWhiteSpace()\n } else if (char === '/' && ignoreComments &&\n (input[position] === '/' || input[position] === '*')) {\n if (startToken) {\n --position\n endWhiteSpace()\n startToken()\n ++position\n }\n skipComment(input[position++] === '*')\n endToken && endToken('comment')\n } else {\n --position\n break\n }\n }\n endToken && endWhiteSpace()\n }\n\n function skipComment (multiLine) {\n while (position < inputLength) {\n var char = input[position++]\n if (isLineTerminator(char)) {\n if (!multiLine) {\n // let parent function deal with newline\n --position\n return\n }\n newLine(char)\n } else if (char === '*' && multiLine) {\n if (input[position] === '/') {\n ++position\n return\n }\n } else {\n // nothing\n }\n }\n if (multiLine) {\n fail('Unclosed multiline comment')\n }\n }\n\n function parseKeyword (keyword) {\n // keyword[0] is not checked because it was checked earlier\n var startPosition = position\n for (var i = 1, keywordLength = keyword.length; i < keywordLength; ++i) {\n if (position >= inputLength || keyword[i] !== input[position]) {\n position = startPosition - 1\n fail()\n }\n ++position\n }\n }\n\n function parseObject () {\n var result = {}\n var emptyObject = {}\n var isNotEmpty = false\n\n while (position < inputLength) {\n skipWhiteSpace()\n var key = parseKey()\n if (allowDuplicateObjectKeys === false && result[key]) {\n fail('Duplicate key: \"' + key + '\"')\n }\n skipWhiteSpace()\n startToken && startToken()\n var char = input[position++]\n endToken && endToken('symbol', char)\n if (char === '}' && key === undefined) {\n if (!ignoreTrailingCommas && isNotEmpty) {\n --position\n fail('Trailing comma in object')\n }\n return result\n } else if (char === ':' && key !== undefined) {\n skipWhiteSpace()\n tokenPath && tokenPath.push(key)\n var value = parseGeneric()\n tokenPath && tokenPath.pop()\n\n if (value === undefined) fail('No value found for key \"' + key + '\"')\n if (typeof key !== 'string') {\n if (!json5 || typeof key !== 'number') {\n fail('Wrong key type: \"' + key + '\"')\n }\n }\n\n if (key in emptyObject || emptyObject[key] != null) {\n // silently ignore it\n } else {\n if (reviver) {\n value = reviver(key, value)\n }\n if (value !== undefined) {\n isNotEmpty = true\n result[key] = value\n }\n }\n\n skipWhiteSpace()\n startToken && startToken()\n char = input[position++]\n endToken && endToken('symbol', char)\n if (char === ',') {\n continue\n } else if (char === '}') {\n return result\n } else {\n fail()\n }\n } else {\n --position\n fail()\n }\n }\n\n fail()\n }\n\n function parseArray () {\n var result = []\n while (position < inputLength) {\n skipWhiteSpace()\n tokenPath && tokenPath.push(result.length)\n var item = parseGeneric()\n tokenPath && tokenPath.pop()\n skipWhiteSpace()\n startToken && startToken()\n var char = input[position++]\n endToken && endToken('symbol', char)\n if (item !== undefined) {\n if (reviver) {\n item = reviver(String(result.length), item)\n }\n if (item === undefined) {\n ++result.length\n item = true // hack for check below, not included into result\n } else {\n result.push(item)\n }\n }\n\n if (char === ',') {\n if (item === undefined) {\n fail('Elisions are not supported')\n }\n } else if (char === ']') {\n if (!ignoreTrailingCommas && item === undefined && result.length) {\n --position\n fail('Trailing comma in array')\n }\n return result\n } else {\n --position\n fail()\n }\n }\n }\n\n function parseNumber () {\n // rewind because we don't know first char\n --position\n\n var start = position\n var char = input[position++]\n var toNumber = function (isOctal) {\n var string = input.substr(start, position - start)\n var result\n\n if (isOctal) {\n result = parseInt(string.replace(/^0o?/, ''), 8)\n } else {\n result = Number(string)\n }\n\n if (Number.isNaN(result)) {\n --position\n fail('Bad numeric literal - \"' + input.substr(start, position - start + 1) + '\"')\n } else if (!json5 && !string.match(/^-?(0|[1-9][0-9]*)(\\.[0-9]+)?(e[+-]?[0-9]+)?$/i)) {\n // additional restrictions imposed by json\n --position\n fail('Non-json numeric literal - \"' + input.substr(start, position - start + 1) + '\"')\n } else {\n return result\n }\n }\n\n // ex: -5982475.249875e+29384\n // ^ skipping this\n if (char === '-' || (char === '+' && json5)) {\n char = input[position++]\n }\n\n if (char === 'N' && json5) {\n parseKeyword('NaN')\n return NaN\n }\n\n if (char === 'I' && json5) {\n parseKeyword('Infinity')\n // returning +inf or -inf\n return toNumber()\n }\n\n if (char >= '1' && char <= '9') {\n // ex: -5982475.249875e+29384\n // ^^^ skipping these\n while (position < inputLength && isDecDigit(input[position])) {\n ++position\n }\n char = input[position++]\n }\n\n // special case for leading zero: 0.123456\n if (char === '0') {\n char = input[position++]\n\n // new syntax, \"0o777\" old syntax, \"0777\"\n var isOctal = char === 'o' || char === 'O' || isOctDigit(char)\n var isHex = char === 'x' || char === 'X'\n\n if (json5 && (isOctal || isHex)) {\n while (position < inputLength &&\n (isHex ? isHexDigit : isOctDigit)(input[position])) {\n ++position\n }\n\n var sign = 1\n if (input[start] === '-') {\n sign = -1\n ++start\n } else if (input[start] === '+') {\n ++start\n }\n\n return sign * toNumber(isOctal)\n }\n }\n\n if (char === '.') {\n // ex: -5982475.249875e+29384\n // ^^^ skipping these\n while (position < inputLength && isDecDigit(input[position])) {\n ++position\n }\n char = input[position++]\n }\n\n if (char === 'e' || char === 'E') {\n char = input[position++]\n if (char === '-' || char === '+') {\n ++position\n }\n // ex: -5982475.249875e+29384\n // ^^^ skipping these\n while (position < inputLength && isDecDigit(input[position])) {\n ++position\n }\n char = input[position++]\n }\n\n // we have char in the buffer, so count for it\n --position\n return toNumber()\n }\n\n function parseIdentifier () {\n // rewind because we don't know first char\n --position\n\n var result = ''\n while (position < inputLength) {\n var char = input[position++]\n if (char === '\\\\' &&\n input[position] === 'u' &&\n isHexDigit(input[position + 1]) &&\n isHexDigit(input[position + 2]) &&\n isHexDigit(input[position + 3]) &&\n isHexDigit(input[position + 4])) {\n // UnicodeEscapeSequence\n char = String.fromCharCode(parseInt(input.substr(position + 1, 4), 16))\n position += 5\n }\n\n if (result.length) {\n // identifier started\n if (Uni.isIdentifierPart(char)) {\n result += char\n } else {\n --position\n return result\n }\n } else {\n if (Uni.isIdentifierStart(char)) {\n result += char\n } else {\n return undefined\n }\n }\n }\n\n fail()\n }\n\n function parseString (endChar) {\n // 7.8.4 of ES262 spec\n var result = ''\n while (position < inputLength) {\n var char = input[position++]\n if (char === endChar) {\n return result\n } else if (char === '\\\\') {\n if (position >= inputLength) {\n fail()\n }\n char = input[position++]\n if (unescapeMap[char] && (json5 || (char !== 'v' && (char !== \"'\" || allowSingleQuotedStrings)))) {\n result += unescapeMap[char]\n } else if (json5 && isLineTerminator(char)) {\n // line continuation\n newLine(char)\n } else if (char === 'u' || (char === 'x' && json5)) {\n // unicode/character escape sequence\n var count = char === 'u' ? 4 : 2\n // validation for \\uXXXX\n for (var i = 0; i < count; ++i) {\n if (position >= inputLength) {\n fail()\n }\n if (!isHexDigit(input[position])) {\n fail('Bad escape sequence')\n }\n position++\n }\n result += String.fromCharCode(parseInt(input.substr(position - count, count), 16))\n } else if (json5 && isOctDigit(char)) {\n var digits\n if (char < '4' && isOctDigit(input[position]) && isOctDigit(input[position + 1])) {\n // three-digit octal\n digits = 3\n } else if (isOctDigit(input[position])) {\n // two-digit octal\n digits = 2\n } else {\n digits = 1\n }\n position += digits - 1\n result += String.fromCharCode(parseInt(input.substr(position - digits, digits), 8))\n } else if (json5) {\n // \\X -> x\n result += char\n } else {\n --position\n fail()\n }\n } else if (isLineTerminator(char)) {\n fail()\n } else {\n if (!json5 && char.charCodeAt(0) < 32) {\n --position\n fail('Unexpected control character')\n }\n // SourceCharacter but not one of \" or \\ or LineTerminator\n result += char\n }\n }\n\n fail()\n }\n\n skipWhiteSpace()\n var returnValue = parseGeneric()\n if (returnValue !== undefined || position < inputLength) {\n skipWhiteSpace()\n if (position >= inputLength) {\n if (reviver) {\n returnValue = reviver('', returnValue)\n }\n return tokenize ? tokens : returnValue\n } else {\n fail()\n }\n } else {\n if (position) {\n fail('No data, only a whitespace')\n } else {\n fail('No data, empty input')\n }\n }\n}\n\nfunction parseCustom (input, options) { // eslint-disable-line no-unused-vars\n if (typeof options === 'function') {\n options = {\n reviver: options\n }\n } else if (!options) {\n options = {}\n }\n return parseInternal(input, options)\n}\n\nfunction tokenize (input, options) { // eslint-disable-line no-unused-vars\n if (!options) {\n options = {}\n }\n // As long as this is the single modification, this is easier than cloning.\n // (Once Node.js 6 is dropped, this can be replaced by object destructuring.)\n var oldTokenize = options.tokenize\n options.tokenize = true\n var tokens = parseInternal(input, options)\n options.tokenize = oldTokenize\n return tokens\n}\n\nfunction escapePointerToken (token) {\n return token\n .toString()\n .replace(/~/g, '~0')\n .replace(/\\//g, '~1')\n}\n\nfunction pathToPointer (tokens) { // eslint-disable-line no-unused-vars\n if (tokens.length === 0) {\n return ''\n }\n return '/' + tokens\n .map(escapePointerToken)\n .join('/')\n}\n\nfunction unescapePointerToken (token) {\n return token\n .replace(/~1/g, '/')\n .replace(/~0/g, '~')\n}\n\nfunction pointerToPath (pointer) { // eslint-disable-line no-unused-vars\n if (pointer === '') {\n return []\n }\n if (pointer[0] !== '/') {\n throw new Error('Missing initial \"/\" in the reference')\n }\n return pointer\n .substr(1)\n .split('/')\n .map(unescapePointerToken)\n}\n\nfunction getLineAndColumn (input, offset) {\n var lines = input\n .substr(0, offset)\n .split(/\\r?\\n/)\n var line = lines.length\n var column = lines[line - 1].length + 1\n return {\n line: line,\n column: column\n }\n}\n\nfunction pastInput (input, offset) {\n var start = Math.max(0, offset - 20)\n var previous = input.substr(start, offset - start)\n return (offset > 20 ? '...' : '') + previous.replace(/\\r?\\n/g, '')\n}\n\nfunction upcomingInput (input, offset) {\n var start = Math.max(0, offset - 20)\n start += offset - start\n var rest = input.length - start\n var next = input.substr(start, Math.min(20, rest))\n return next.replace(/\\r?\\n/g, '') + (rest > 20 ? '...' : '')\n}\n\nfunction getPositionContext (input, offset) {\n var past = pastInput(input, offset)\n var upcoming = upcomingInput(input, offset)\n var pointer = new Array(past.length + 1).join('-') + '^'\n return {\n excerpt: past + upcoming,\n pointer: pointer\n }\n}\n\nfunction getReason (error) {\n var message = error.message\n .replace('JSON.parse: ', '') // SpiderMonkey\n .replace('JSON Parse error: ', '') // SquirrelFish\n var firstCharacter = message.charAt(0)\n if (firstCharacter >= 'a') {\n message = firstCharacter.toUpperCase() + message.substr(1)\n }\n return message\n}\n\nfunction getLocationOnV8 (input, reason) {\n var match = / in JSON at position (\\d+)$/.exec(reason)\n if (match) {\n var offset = +match[1]\n var location = getLineAndColumn(input, offset)\n return {\n offset: offset,\n line: location.line,\n column: location.column,\n reason: reason.substr(0, match.index)\n }\n }\n}\n\nfunction checkUnexpectedEndOnV8 (input, reason) {\n var match = / end of JSON input$/.exec(reason)\n if (match) {\n var offset = input.length\n var location = getLineAndColumn(input, offset)\n return {\n offset: offset,\n line: location.line,\n column: location.column,\n reason: reason.substr(0, match.index + 4)\n }\n }\n}\n\nfunction getLocationOnSpiderMonkey (input, reason) {\n var match = / at line (\\d+) column (\\d+) of the JSON data$/.exec(reason)\n if (match) {\n var line = +match[1]\n var column = +match[2]\n var offset = getOffset(input, line, column) // eslint-disable-line no-undef\n return {\n offset: offset,\n line: line,\n column: column,\n reason: reason.substr(0, match.index)\n }\n }\n}\n\nfunction getTexts (reason, input, offset, line, column) {\n var position = getPositionContext(input, offset)\n var excerpt = position.excerpt\n var message, pointer\n if (typeof line === 'number') {\n pointer = position.pointer\n message = 'Parse error on line ' + line + ', column ' +\n column + ':\\n' + excerpt + '\\n' + pointer + '\\n' + reason\n } else {\n message = 'Parse error in JSON input:\\n' + excerpt + '\\n' + reason\n }\n return {\n message: message,\n excerpt: excerpt,\n pointer: pointer\n }\n}\n\nfunction improveNativeError (input, error) {\n var reason = getReason(error)\n var location = getLocationOnV8(input, reason) ||\n checkUnexpectedEndOnV8(input, reason) ||\n getLocationOnSpiderMonkey(input, reason)\n var offset, line, column\n if (location) {\n offset = location.offset\n line = location.line\n column = location.column\n reason = location.reason\n } else {\n offset = 0\n }\n error.reason = reason\n var texts = getTexts(reason, input, offset, line, column)\n error.message = texts.message\n error.excerpt = texts.excerpt\n if (texts.pointer) {\n error.pointer = texts.pointer\n error.location = {\n start: {\n column: column,\n line: line,\n offset: offset\n }\n }\n }\n return error\n}\n\nfunction parseNative (input, reviver) { // eslint-disable-line no-unused-vars\n try {\n return JSON.parse(input, reviver)\n } catch (error) {\n throw improveNativeError(input, error)\n }\n}\n\n/* globals navigator, process, parseCustom, parseNative */\n\nvar isSafari = typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor)\nvar oldNode = typeof process !== 'undefined' && process.version.startsWith('v4.')\n\nfunction needsCustomParser (options) {\n return options.ignoreComments || options.ignoreTrailingCommas ||\n options.allowSingleQuotedStrings || options.allowDuplicateObjectKeys === false ||\n options.mode === 'cjson' || options.mode === 'json5' || isSafari || oldNode\n}\n\nfunction getReviver (options) {\n if (typeof options === 'function') {\n return options\n } else if (options) {\n return options.reviver\n }\n}\n\nfunction parse (input, options) { // eslint-disable-line no-unused-vars\n options || (options = {})\n return needsCustomParser(options)\n ? parseCustom(input, options)\n : parseNative(input, getReviver(options))\n}\n\n exports.parse = parse\n exports.tokenize = tokenize\n exports.pathToPointer = pathToPointer\n exports.pointerToPath = pointerToPath\n\n exports.parseNative = parseNative\n exports.parseCustom = parseCustom\n exports.getErrorTexts = getTexts\n\n Object.defineProperty(exports, '__esModule', { value: true })\n}));\n"]}
|
package/web/printer.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define("jsonlint-printer",["exports"],factory):(global=global||self,factory(global.jsonlintPrinter={}))})(this,function(exports){"use strict";function noop(){}function isIdentifierName(value){return/^[a-zA-Z$_][a-zA-Z0-9$_]*$/.test(value)}function concatenateTokens(tokens){var outputString="";var tokenCount=tokens.length;var tokenIndex;for(tokenIndex=0;tokenIndex<tokenCount;++tokenIndex){outputString+=tokens[tokenIndex].raw}return outputString}function print(tokens,options){if(!(tokens&&tokens.length)){throw new Error("JSON tokens missing.")}if(!(tokens[0]&&tokens[0].raw)){throw new Error("JSON tokens lack raw values.")}if(!options){return concatenateTokens(tokens)}var indentString=options.indent;var prettyPrint=indentString!==undefined;var pruneComments=options.pruneComments;var stripObjectKeys=options.stripObjectKeys;var outputString="";var foundLineBreak,addedLineBreak,needsLineBreak;var addedSpace,needsSpace;var indentLevel=0;var scopes=[];var scopeType;var isValue;var tokenCount=tokens.length;var tokenIndex,token,tokenType,tokenContent;var addIndent;if(prettyPrint&&indentString){addIndent=function(){for(var i=0;i<indentLevel;++i){outputString+=indentString}}}else{addIndent=noop}var addLineBreak,addDelayedSpaceOrLineBreak;if(prettyPrint){addLineBreak=function(){outputString+="\n"};addDelayedSpaceOrLineBreak=function(){if(needsLineBreak){addLineBreak();addIndent()}else if(needsSpace){outputString+=" "}needsSpace=needsLineBreak=false}}else{addLineBreak=addDelayedSpaceOrLineBreak=noop}var addStandaloneComment,tryAddingInlineComment;if(pruneComments){addStandaloneComment=tryAddingInlineComment=noop}else{if(prettyPrint){addStandaloneComment=function(){if(!addedLineBreak&&tokenIndex>0){addLineBreak();addIndent()}outputString+=tokenContent;foundLineBreak=false;addedLineBreak=false;needsLineBreak=true};tryAddingInlineComment=function(){foundLineBreak=false;addedLineBreak=false;addedSpace=false;var tryTokenIndex=tokenIndex+1;function skipWhitespace(){var token=tokens[tryTokenIndex];if(token&&token.type==="whitespace"){foundLineBreak=token.raw.indexOf("\n")>=0;token=tokens[++tryTokenIndex]}return token}var token=skipWhitespace();if(!foundLineBreak&&token&&token.type==="comment"){if(needsLineBreak){if(!addedLineBreak){addLineBreak();addIndent()}}else{if(!addedSpace){outputString+=" "}}outputString+=token.raw;tokenIndex=tryTokenIndex++;skipWhitespace();if(foundLineBreak){needsSpace=false;needsLineBreak=true}else{needsSpace=true;needsLineBreak=false}}}}else{addStandaloneComment=function(){if(tokenContent[1]==="/"){outputString+="/*";outputString+=tokenContent.substr(2,tokenContent.length-2);outputString+=" */"}else{outputString+=tokenContent}};tryAddingInlineComment=noop}}function addLiteral(){addDelayedSpaceOrLineBreak();var tokenValue=token.value;if(stripObjectKeys&&scopeType==="{"&&!isValue&&isIdentifierName(tokenValue)){outputString+=tokenValue}else{outputString+=tokenContent}tryAddingInlineComment()}function openScope(){addDelayedSpaceOrLineBreak();scopes.push(scopeType);scopeType=tokenContent;isValue=scopeType==="[";outputString+=tokenContent;tryAddingInlineComment();++indentLevel;needsLineBreak=true}function closeScope(){scopeType=scopes.pop();addLineBreak();--indentLevel;addIndent();needsSpace=needsLineBreak=false;outputString+=tokenContent;tryAddingInlineComment()}function addComma(){addDelayedSpaceOrLineBreak();outputString+=",";tryAddingInlineComment();addLineBreak();addIndent();addedLineBreak=true;needsLineBreak=false;isValue=scopeType==="["}function addColon(){addDelayedSpaceOrLineBreak();outputString+=":";needsSpace=true;tryAddingInlineComment();isValue=true}for(tokenIndex=0;tokenIndex<tokenCount;++tokenIndex){token=tokens[tokenIndex];tokenType=token.type;tokenContent=token.raw;switch(tokenType){case"literal":addLiteral();break;case"comment":addStandaloneComment();break;case"symbol":switch(tokenContent){case"{":case"[":openScope();break;case"}":case"]":closeScope();break;case",":addComma();break;case":":addColon()}break;default:foundLineBreak=tokenContent.indexOf("\n")>=0}}return outputString}exports.print=print;Object.defineProperty(exports,"__esModule",{value:true})});
|
|
1
|
+
(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define("jsonlint-printer",["exports"],factory):(global=global||self,factory(global.jsonlintPrinter={}))})(this,function(exports){"use strict";function noop(){}function isIdentifierName(value){return/^[a-zA-Z$_][a-zA-Z0-9$_]*$/.test(value)}function concatenateTokens(tokens){var outputString="";var tokenCount=tokens.length;var tokenIndex;for(tokenIndex=0;tokenIndex<tokenCount;++tokenIndex){outputString+=tokens[tokenIndex].raw}return outputString}function print(tokens,options){if(!(tokens&&tokens.length)){throw new Error("JSON tokens missing.")}if(!(tokens[0]&&tokens[0].raw)){throw new Error("JSON tokens lack raw values.")}if(!options){return concatenateTokens(tokens)}var indentString=options.indent;if(typeof indentString==="number"){indentString=new Array(indentString+1).join(" ")}var prettyPrint=indentString!==undefined;var pruneComments=options.pruneComments;var stripObjectKeys=options.stripObjectKeys;var enforceDoubleQuotes=options.enforceDoubleQuotes;var enforceSingleQuotes=options.enforceSingleQuotes;var trimTrailingCommas=options.trimTrailingCommas;var outputString="";var foundLineBreak,addedLineBreak,needsLineBreak;var addedSpace,needsSpace;var indentLevel=0;var scopes=[];var scopeType;var isValue;var tokenCount=tokens.length;var tokenIndex,token,tokenType,tokenContent;function peekAtNextToken(){var nextTokenIndex=tokenIndex;var nextToken;do{nextToken=tokens[++nextTokenIndex]}while(nextToken&&(nextToken.type==="whitespace"||nextToken.type==="comment"));return nextToken}var addIndent;if(prettyPrint&&indentString){addIndent=function(){for(var i=0;i<indentLevel;++i){outputString+=indentString}}}else{addIndent=noop}var addLineBreak,addDelayedSpaceOrLineBreak;if(prettyPrint){addLineBreak=function(){outputString+="\n"};addDelayedSpaceOrLineBreak=function(){if(needsLineBreak){addLineBreak();addIndent()}else if(needsSpace){outputString+=" "}needsSpace=needsLineBreak=false}}else{addLineBreak=addDelayedSpaceOrLineBreak=noop}var addStandaloneComment,tryAddingInlineComment;if(pruneComments){addStandaloneComment=tryAddingInlineComment=noop}else{if(prettyPrint){addStandaloneComment=function(){if(!addedLineBreak&&tokenIndex>0){addLineBreak();addIndent()}outputString+=tokenContent;foundLineBreak=false;addedLineBreak=false;needsLineBreak=true};tryAddingInlineComment=function(){foundLineBreak=false;addedLineBreak=false;addedSpace=false;var tryTokenIndex=tokenIndex+1;function skipWhitespace(){var token=tokens[tryTokenIndex];if(token&&token.type==="whitespace"){foundLineBreak=token.raw.indexOf("\n")>=0;token=tokens[++tryTokenIndex]}return token}var token=skipWhitespace();if(!foundLineBreak&&token&&token.type==="comment"){if(needsLineBreak){if(!addedLineBreak){addLineBreak();addIndent()}}else{if(!addedSpace){outputString+=" "}}outputString+=token.raw;tokenIndex=tryTokenIndex++;skipWhitespace();if(foundLineBreak){needsSpace=false;needsLineBreak=true}else{needsSpace=true;needsLineBreak=false}}}}else{addStandaloneComment=function(){if(tokenContent[1]==="/"){outputString+="/*";outputString+=tokenContent.substr(2,tokenContent.length-2);outputString+=" */"}else{outputString+=tokenContent}};tryAddingInlineComment=noop}}function addLiteral(){addDelayedSpaceOrLineBreak();var tokenValue=token.value;if(stripObjectKeys&&scopeType==="{"&&!isValue&&isIdentifierName(tokenValue)){outputString+=tokenValue}else if(typeof tokenValue==="string"){if(enforceDoubleQuotes&&tokenContent[0]!=='"'){outputString+=JSON.stringify(tokenValue)}else if(enforceSingleQuotes&&tokenContent[0]!=="'"){outputString+="'"+tokenValue.replace(/'/g,"\\'")+"'"}else{outputString+=tokenContent}}else{outputString+=tokenContent}tryAddingInlineComment()}function openScope(){addDelayedSpaceOrLineBreak();scopes.push(scopeType);scopeType=tokenContent;isValue=scopeType==="[";outputString+=tokenContent;tryAddingInlineComment();++indentLevel;needsLineBreak=true}function closeScope(){scopeType=scopes.pop();addLineBreak();--indentLevel;addIndent();needsSpace=needsLineBreak=false;outputString+=tokenContent;tryAddingInlineComment()}function addComma(){if(trimTrailingCommas){var nextToken=peekAtNextToken();if(nextToken&&nextToken.type==="symbol"){return tryAddingInlineComment()}}addDelayedSpaceOrLineBreak();outputString+=",";tryAddingInlineComment();addLineBreak();addIndent();addedLineBreak=true;needsLineBreak=false;isValue=scopeType==="["}function addColon(){addDelayedSpaceOrLineBreak();outputString+=":";needsSpace=true;tryAddingInlineComment();isValue=true}for(tokenIndex=0;tokenIndex<tokenCount;++tokenIndex){token=tokens[tokenIndex];tokenType=token.type;tokenContent=token.raw;switch(tokenType){case"literal":addLiteral();break;case"comment":addStandaloneComment();break;case"symbol":switch(tokenContent){case"{":case"[":openScope();break;case"}":case"]":closeScope();break;case",":addComma();break;case":":addColon()}break;default:foundLineBreak=tokenContent.indexOf("\n")>=0}}return outputString}exports.print=print;Object.defineProperty(exports,"__esModule",{value:true})});
|
|
2
2
|
//# sourceMappingURL=printer.min.js.map
|
package/web/printer.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["lib/printer.js"],"names":["global","factory","exports","module","define","amd","self","jsonlintPrinter","this","noop","isIdentifierName","value","test","concatenateTokens","tokens","outputString","tokenCount","length","tokenIndex","raw","print","options","Error","indentString","indent","prettyPrint","undefined","pruneComments","stripObjectKeys","foundLineBreak","addedLineBreak","needsLineBreak","addedSpace","needsSpace","indentLevel","scopes","scopeType","isValue","token","tokenType","tokenContent","addIndent","i","addLineBreak","addDelayedSpaceOrLineBreak","addStandaloneComment","tryAddingInlineComment","tryTokenIndex","skipWhitespace","type","indexOf","substr","addLiteral","tokenValue","openScope","push","closeScope","pop","addComma","addColon","Object","defineProperty"],"mappings":"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","file":"printer.js","sourcesContent":["(function (global, factory) {\n // eslint-disable-next-line no-unused-expressions\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports)\n // eslint-disable-next-line no-undef\n : typeof define === 'function' && define.amd ? define('jsonlint-printer', ['exports'], factory)\n // eslint-disable-next-line no-undef\n : (global = global || self, factory(global.jsonlintPrinter = {}))\n}(this, function (exports) {\n 'use strict'\n\n function noop () {}\n\n function isIdentifierName (value) {\n return /^[a-zA-Z$_][a-zA-Z0-9$_]*$/.test(value)\n }\n\n function concatenateTokens (tokens) {\n var outputString = ''\n var tokenCount = tokens.length\n var tokenIndex\n for (tokenIndex = 0; tokenIndex < tokenCount; ++tokenIndex) {\n outputString += tokens[tokenIndex].raw\n }\n return outputString\n }\n\n function print (tokens, options) {\n if (!(tokens && tokens.length)) {\n throw new Error('JSON tokens missing.')\n }\n // Whitespace and comments are available only as raw token content.\n if (!(tokens[0] && tokens[0].raw)) {\n throw new Error('JSON tokens lack raw values.')\n }\n\n if (!options) {\n // If no options, not even an empty object is passed, just concatenate\n // the raw tokens with neither minification, nor pretty-printing.\n return concatenateTokens(tokens)\n }\n\n var indentString = options.indent\n // Setting the indent to an empty string enables pretty-printing too.\n // It will just insert line breaks without any indentation.\n var prettyPrint = indentString !== undefined\n var pruneComments = options.pruneComments\n var stripObjectKeys = options.stripObjectKeys\n\n var outputString = ''\n var foundLineBreak, addedLineBreak, needsLineBreak\n var addedSpace, needsSpace\n var indentLevel = 0\n var scopes = []\n var scopeType\n var isValue\n var tokenCount = tokens.length\n var tokenIndex, token, tokenType, tokenContent\n\n var addIndent\n if (prettyPrint && indentString) {\n addIndent = function () {\n for (var i = 0; i < indentLevel; ++i) {\n outputString += indentString\n }\n }\n } else {\n addIndent = noop\n }\n\n var addLineBreak, addDelayedSpaceOrLineBreak\n if (prettyPrint) {\n addLineBreak = function () {\n outputString += '\\n'\n }\n\n addDelayedSpaceOrLineBreak = function () {\n // A line break is more important than a space.\n if (needsLineBreak) {\n addLineBreak()\n addIndent()\n } else if (needsSpace) {\n outputString += ' '\n }\n needsSpace = needsLineBreak = false\n }\n } else {\n addLineBreak = addDelayedSpaceOrLineBreak = noop\n }\n\n var addStandaloneComment, tryAddingInlineComment\n if (pruneComments) {\n addStandaloneComment = tryAddingInlineComment = noop\n } else {\n if (prettyPrint) {\n addStandaloneComment = function () {\n // If a comment is not appended to the end of a line, it will start\n // on a new line with the current indentation.\n if (!addedLineBreak && tokenIndex > 0) {\n addLineBreak()\n addIndent()\n }\n outputString += tokenContent\n foundLineBreak = false\n addedLineBreak = false\n // If a comment is not appended to the end of a line, it will take\n // the whole line and has to end by a line break.\n needsLineBreak = true\n }\n\n tryAddingInlineComment = function () {\n // This function is called after printing a non-line-break character.\n foundLineBreak = false\n addedLineBreak = false\n addedSpace = false\n\n // Start with the character after the just processed one.\n var tryTokenIndex = tokenIndex + 1\n\n function skipWhitespace () {\n var token = tokens[tryTokenIndex]\n if (token && token.type === 'whitespace') {\n foundLineBreak = token.raw.indexOf('\\n') >= 0\n token = tokens[++tryTokenIndex]\n }\n return token\n }\n\n var token = skipWhitespace()\n // If line break followed the previous token, leave the comment\n // to be handled by the next usual token processing.\n if (!foundLineBreak && token && token.type === 'comment') {\n if (needsLineBreak) {\n // If the previous non-whitespace token was ended by a line\n // break, retain it. Print the comment after the line break too.\n if (!addedLineBreak) {\n addLineBreak()\n addIndent()\n }\n } else {\n // If the previous non-whitespace token was not ended by a line\n // break, ensure that the comment is separated from it.\n if (!addedSpace) {\n outputString += ' '\n }\n }\n outputString += token.raw\n // Set the current token to the just processed comment.\n tokenIndex = tryTokenIndex++\n // Check the whitespace after the comment to give a hint\n // about the next whitespace to the further processing.\n skipWhitespace()\n if (foundLineBreak) {\n needsSpace = false\n needsLineBreak = true\n } else {\n needsSpace = true\n needsLineBreak = false\n }\n }\n }\n } else {\n // If all whitespace is omitted, convert single-line comments\n // to multi-line ones, which include a comment-closing token.\n addStandaloneComment = function () {\n if (tokenContent[1] === '/') {\n outputString += '/*'\n outputString += tokenContent.substr(2, tokenContent.length - 2)\n outputString += ' */'\n } else {\n outputString += tokenContent\n }\n }\n\n tryAddingInlineComment = noop\n }\n }\n\n function addLiteral () {\n addDelayedSpaceOrLineBreak()\n var tokenValue = token.value\n if (stripObjectKeys && scopeType === '{' && !isValue &&\n isIdentifierName(tokenValue)) {\n outputString += tokenValue\n } else {\n outputString += tokenContent\n }\n tryAddingInlineComment()\n }\n\n function openScope () {\n addDelayedSpaceOrLineBreak()\n scopes.push(scopeType)\n scopeType = tokenContent\n isValue = scopeType === '['\n outputString += tokenContent\n tryAddingInlineComment()\n ++indentLevel\n needsLineBreak = true\n }\n\n function closeScope () {\n scopeType = scopes.pop()\n addLineBreak()\n --indentLevel\n addIndent()\n needsSpace = needsLineBreak = false\n outputString += tokenContent\n tryAddingInlineComment()\n }\n\n function addComma () {\n addDelayedSpaceOrLineBreak()\n outputString += ','\n tryAddingInlineComment()\n addLineBreak()\n addIndent()\n addedLineBreak = true\n needsLineBreak = false\n isValue = scopeType === '['\n }\n\n function addColon () {\n addDelayedSpaceOrLineBreak()\n outputString += ':'\n needsSpace = true\n tryAddingInlineComment()\n isValue = true\n }\n\n for (tokenIndex = 0; tokenIndex < tokenCount; ++tokenIndex) {\n token = tokens[tokenIndex]\n tokenType = token.type\n tokenContent = token.raw\n switch (tokenType) {\n case 'literal':\n addLiteral()\n break\n case 'comment':\n addStandaloneComment()\n break\n case 'symbol':\n switch (tokenContent) {\n case '{':\n case '[':\n openScope()\n break\n case '}':\n case ']':\n closeScope()\n break\n case ',':\n addComma()\n break\n case ':':\n addColon()\n }\n break\n default: // whitespace\n foundLineBreak = tokenContent.indexOf('\\n') >= 0\n }\n }\n\n return outputString\n }\n\n exports.print = print\n\n Object.defineProperty(exports, '__esModule', { value: true })\n}))\n"]}
|
|
1
|
+
{"version":3,"sources":["lib/printer.js"],"names":["global","factory","exports","module","define","amd","self","jsonlintPrinter","this","noop","isIdentifierName","value","test","concatenateTokens","tokens","outputString","tokenCount","length","tokenIndex","raw","print","options","Error","indentString","indent","Array","join","prettyPrint","undefined","pruneComments","stripObjectKeys","enforceDoubleQuotes","enforceSingleQuotes","trimTrailingCommas","foundLineBreak","addedLineBreak","needsLineBreak","addedSpace","needsSpace","indentLevel","scopes","scopeType","isValue","token","tokenType","tokenContent","peekAtNextToken","nextTokenIndex","nextToken","type","addIndent","i","addLineBreak","addDelayedSpaceOrLineBreak","addStandaloneComment","tryAddingInlineComment","tryTokenIndex","skipWhitespace","indexOf","substr","addLiteral","tokenValue","JSON","stringify","replace","openScope","push","closeScope","pop","addComma","addColon","Object","defineProperty"],"mappings":"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","file":"printer.js","sourcesContent":["(function (global, factory) {\n // eslint-disable-next-line no-unused-expressions\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports)\n // eslint-disable-next-line no-undef\n : typeof define === 'function' && define.amd ? define('jsonlint-printer', ['exports'], factory)\n // eslint-disable-next-line no-undef\n : (global = global || self, factory(global.jsonlintPrinter = {}))\n}(this, function (exports) {\n 'use strict'\n\n function noop () {}\n\n function isIdentifierName (value) {\n return /^[a-zA-Z$_][a-zA-Z0-9$_]*$/.test(value)\n }\n\n function concatenateTokens (tokens) {\n var outputString = ''\n var tokenCount = tokens.length\n var tokenIndex\n for (tokenIndex = 0; tokenIndex < tokenCount; ++tokenIndex) {\n outputString += tokens[tokenIndex].raw\n }\n return outputString\n }\n\n function print (tokens, options) {\n if (!(tokens && tokens.length)) {\n throw new Error('JSON tokens missing.')\n }\n // Whitespace and comments are available only as raw token content.\n if (!(tokens[0] && tokens[0].raw)) {\n throw new Error('JSON tokens lack raw values.')\n }\n\n if (!options) {\n // If no options, not even an empty object is passed, just concatenate\n // the raw tokens with neither minification, nor pretty-printing.\n return concatenateTokens(tokens)\n }\n\n var indentString = options.indent\n if (typeof indentString === 'number') {\n indentString = new Array(indentString + 1).join(' ')\n }\n // Setting the indent to an empty string enables pretty-printing too.\n // It will just insert line breaks without any indentation.\n var prettyPrint = indentString !== undefined\n var pruneComments = options.pruneComments\n var stripObjectKeys = options.stripObjectKeys\n var enforceDoubleQuotes = options.enforceDoubleQuotes\n var enforceSingleQuotes = options.enforceSingleQuotes\n var trimTrailingCommas = options.trimTrailingCommas\n\n var outputString = ''\n var foundLineBreak, addedLineBreak, needsLineBreak\n var addedSpace, needsSpace\n var indentLevel = 0\n var scopes = []\n var scopeType\n var isValue\n var tokenCount = tokens.length\n var tokenIndex, token, tokenType, tokenContent\n\n function peekAtNextToken () {\n var nextTokenIndex = tokenIndex\n var nextToken\n do {\n nextToken = tokens[++nextTokenIndex]\n } while (nextToken && (nextToken.type === 'whitespace' ||\n nextToken.type === 'comment'))\n return nextToken\n }\n\n var addIndent\n if (prettyPrint && indentString) {\n addIndent = function () {\n for (var i = 0; i < indentLevel; ++i) {\n outputString += indentString\n }\n }\n } else {\n addIndent = noop\n }\n\n var addLineBreak, addDelayedSpaceOrLineBreak\n if (prettyPrint) {\n addLineBreak = function () {\n outputString += '\\n'\n }\n\n addDelayedSpaceOrLineBreak = function () {\n // A line break is more important than a space.\n if (needsLineBreak) {\n addLineBreak()\n addIndent()\n } else if (needsSpace) {\n outputString += ' '\n }\n needsSpace = needsLineBreak = false\n }\n } else {\n addLineBreak = addDelayedSpaceOrLineBreak = noop\n }\n\n var addStandaloneComment, tryAddingInlineComment\n if (pruneComments) {\n addStandaloneComment = tryAddingInlineComment = noop\n } else {\n if (prettyPrint) {\n addStandaloneComment = function () {\n // If a comment is not appended to the end of a line, it will start\n // on a new line with the current indentation.\n if (!addedLineBreak && tokenIndex > 0) {\n addLineBreak()\n addIndent()\n }\n outputString += tokenContent\n foundLineBreak = false\n addedLineBreak = false\n // If a comment is not appended to the end of a line, it will take\n // the whole line and has to end by a line break.\n needsLineBreak = true\n }\n\n tryAddingInlineComment = function () {\n // This function is called after printing a non-line-break character.\n foundLineBreak = false\n addedLineBreak = false\n addedSpace = false\n\n // Start with the character after the just processed one.\n var tryTokenIndex = tokenIndex + 1\n\n function skipWhitespace () {\n var token = tokens[tryTokenIndex]\n if (token && token.type === 'whitespace') {\n foundLineBreak = token.raw.indexOf('\\n') >= 0\n token = tokens[++tryTokenIndex]\n }\n return token\n }\n\n var token = skipWhitespace()\n // If line break followed the previous token, leave the comment\n // to be handled by the next usual token processing.\n if (!foundLineBreak && token && token.type === 'comment') {\n if (needsLineBreak) {\n // If the previous non-whitespace token was ended by a line\n // break, retain it. Print the comment after the line break too.\n if (!addedLineBreak) {\n addLineBreak()\n addIndent()\n }\n } else {\n // If the previous non-whitespace token was not ended by a line\n // break, ensure that the comment is separated from it.\n if (!addedSpace) {\n outputString += ' '\n }\n }\n outputString += token.raw\n // Set the current token to the just processed comment.\n tokenIndex = tryTokenIndex++\n // Check the whitespace after the comment to give a hint\n // about the next whitespace to the further processing.\n skipWhitespace()\n if (foundLineBreak) {\n needsSpace = false\n needsLineBreak = true\n } else {\n needsSpace = true\n needsLineBreak = false\n }\n }\n }\n } else {\n // If all whitespace is omitted, convert single-line comments\n // to multi-line ones, which include a comment-closing token.\n addStandaloneComment = function () {\n if (tokenContent[1] === '/') {\n outputString += '/*'\n outputString += tokenContent.substr(2, tokenContent.length - 2)\n outputString += ' */'\n } else {\n outputString += tokenContent\n }\n }\n\n tryAddingInlineComment = noop\n }\n }\n\n function addLiteral () {\n addDelayedSpaceOrLineBreak()\n var tokenValue = token.value\n if (stripObjectKeys && scopeType === '{' && !isValue &&\n isIdentifierName(tokenValue)) {\n outputString += tokenValue\n } else if (typeof tokenValue === 'string') {\n if (enforceDoubleQuotes && tokenContent[0] !== '\"') {\n outputString += JSON.stringify(tokenValue)\n } else if (enforceSingleQuotes && tokenContent[0] !== '\\'') {\n outputString += '\\'' + tokenValue.replace(/'/g, '\\\\\\'') + '\\''\n } else {\n outputString += tokenContent\n }\n } else {\n outputString += tokenContent\n }\n tryAddingInlineComment()\n }\n\n function openScope () {\n addDelayedSpaceOrLineBreak()\n scopes.push(scopeType)\n scopeType = tokenContent\n isValue = scopeType === '['\n outputString += tokenContent\n tryAddingInlineComment()\n ++indentLevel\n needsLineBreak = true\n }\n\n function closeScope () {\n scopeType = scopes.pop()\n addLineBreak()\n --indentLevel\n addIndent()\n needsSpace = needsLineBreak = false\n outputString += tokenContent\n tryAddingInlineComment()\n }\n\n function addComma () {\n if (trimTrailingCommas) {\n var nextToken = peekAtNextToken()\n if (nextToken && nextToken.type === 'symbol') {\n return tryAddingInlineComment()\n }\n }\n addDelayedSpaceOrLineBreak()\n outputString += ','\n tryAddingInlineComment()\n addLineBreak()\n addIndent()\n addedLineBreak = true\n needsLineBreak = false\n isValue = scopeType === '['\n }\n\n function addColon () {\n addDelayedSpaceOrLineBreak()\n outputString += ':'\n needsSpace = true\n tryAddingInlineComment()\n isValue = true\n }\n\n for (tokenIndex = 0; tokenIndex < tokenCount; ++tokenIndex) {\n token = tokens[tokenIndex]\n tokenType = token.type\n tokenContent = token.raw\n switch (tokenType) {\n case 'literal':\n addLiteral()\n break\n case 'comment':\n addStandaloneComment()\n break\n case 'symbol':\n switch (tokenContent) {\n case '{':\n case '[':\n openScope()\n break\n case '}':\n case ']':\n closeScope()\n break\n case ',':\n addComma()\n break\n case ':':\n addColon()\n }\n break\n default: // whitespace\n foundLineBreak = tokenContent.indexOf('\\n') >= 0\n }\n }\n\n return outputString\n }\n\n exports.print = print\n\n Object.defineProperty(exports, '__esModule', { value: true })\n}))\n"]}
|