parse-json
Advanced tools
Comparing version 7.1.1 to 8.0.0
@@ -23,4 +23,4 @@ import type {JsonObject} from 'type-fest'; | ||
// Get 'reviver' parameter from JSON.parse() | ||
type ReviverFn = Parameters<typeof JSON['parse']>['1']; | ||
// Get `reviver`` parameter from `JSON.parse()`. | ||
export type Reviver = Parameters<typeof JSON['parse']>['1']; | ||
@@ -77,3 +77,3 @@ /** | ||
*/ | ||
export default function parseJson(string: string, reviver?: ReviverFn, filename?: string): JsonObject; | ||
export default function parseJson(string: string, reviver?: Reviver, filename?: string): JsonObject; | ||
@@ -80,0 +80,0 @@ /** |
45
index.js
@@ -1,11 +0,36 @@ | ||
import errorEx from 'error-ex'; | ||
import fallback from 'json-parse-even-better-errors'; | ||
import {codeFrameColumns} from '@babel/code-frame'; | ||
import {LinesAndColumns} from 'lines-and-columns'; | ||
import indexToPosition from 'index-to-position'; | ||
export const JSONError = errorEx('JSONError', { | ||
fileName: errorEx.append('in %s'), | ||
codeFrame: errorEx.append('\n\n%s\n'), | ||
}); | ||
export class JSONError extends Error { | ||
fileName; | ||
codeFrame; | ||
rawCodeFrame; | ||
constructor(message) { | ||
super(message); | ||
let _message = message instanceof Error | ||
? message.message | ||
: message; | ||
Object.defineProperty(this, 'message', { | ||
configurable: true, | ||
enumerable: false, | ||
get() { | ||
return `${_message}${this.fileName ? ` in ${this.fileName}` : ''}${this.codeFrame ? `\n\n${this.codeFrame}\n` : ''}`; | ||
}, | ||
set(value) { | ||
_message = value; | ||
}, | ||
}); | ||
this.name = 'JSONError'; | ||
if (Error.captureStackTrace) { | ||
Error.captureStackTrace(this, JSONError); | ||
} | ||
} | ||
} | ||
const generateCodeFrame = (string, location, highlightCode = true) => | ||
@@ -21,3 +46,3 @@ codeFrameColumns(string, {start: location}, {highlightCode}); | ||
let {index, line, column} = match.groups; | ||
const {index, line, column} = match.groups; | ||
@@ -28,5 +53,3 @@ if (line && column) { | ||
({line, column} = new LinesAndColumns(string).locationForIndex(Number(index))); | ||
return {line: line + 1, column: column + 1}; | ||
return indexToPosition(string, Number(index), {oneBased: true}); | ||
}; | ||
@@ -53,3 +76,3 @@ | ||
message = message.replace(/\n/g, ''); | ||
message = message.replaceAll('\n', ''); | ||
const jsonError = new JSONError(message); | ||
@@ -56,0 +79,0 @@ |
{ | ||
"name": "parse-json", | ||
"version": "7.1.1", | ||
"version": "8.0.0", | ||
"description": "Parse JSON with more helpful errors", | ||
@@ -16,3 +16,3 @@ "license": "MIT", | ||
"engines": { | ||
"node": ">=16" | ||
"node": ">=18" | ||
}, | ||
@@ -24,4 +24,3 @@ "scripts": { | ||
"index.js", | ||
"index.d.ts", | ||
"vendor" | ||
"index.d.ts" | ||
], | ||
@@ -40,16 +39,15 @@ "keywords": [ | ||
"dependencies": { | ||
"@babel/code-frame": "^7.21.4", | ||
"error-ex": "^1.3.2", | ||
"@babel/code-frame": "^7.22.13", | ||
"index-to-position": "^0.1.0", | ||
"json-parse-even-better-errors": "^3.0.0", | ||
"lines-and-columns": "^2.0.3", | ||
"type-fest": "^3.8.0" | ||
"type-fest": "^4.6.0" | ||
}, | ||
"devDependencies": { | ||
"ava": "^5.2.0", | ||
"ava": "^5.3.1", | ||
"nyc": "^15.1.0", | ||
"outdent": "^0.8.0", | ||
"strip-ansi": "^7.1.0", | ||
"tsd": "^0.28.1", | ||
"xo": "^0.54.0" | ||
"tsd": "^0.29.0", | ||
"xo": "^0.56.0" | ||
} | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
9015
4
175
+ Addedindex-to-position@^0.1.0
+ Addedindex-to-position@0.1.2(transitive)
+ Addedtype-fest@4.26.1(transitive)
- Removederror-ex@^1.3.2
- Removedlines-and-columns@^2.0.3
- Removederror-ex@1.3.2(transitive)
- Removedis-arrayish@0.2.1(transitive)
- Removedlines-and-columns@2.0.4(transitive)
- Removedtype-fest@3.13.1(transitive)
Updated@babel/code-frame@^7.22.13
Updatedtype-fest@^4.6.0