Skip to content

Commit 49e6dfa

Browse files
committedNov 2, 2023
Require Node.js 18
1 parent af8e41f commit 49e6dfa

File tree

4 files changed

+15
-19
lines changed

4 files changed

+15
-19
lines changed
 

‎.github/workflows/main.yml

-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ jobs:
1313
- 21
1414
- 20
1515
- 18
16-
- 16
1716
steps:
1817
- uses: actions/checkout@v4
1918
- uses: actions/setup-node@v4

‎index.d.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ export class JSONError extends Error { // eslint-disable-line @typescript-eslint
2020
readonly rawCodeFrame: string;
2121
}
2222

23-
// Get 'reviver' parameter from JSON.parse()
24-
type ReviverFn = Parameters<typeof JSON['parse']>['1'];
23+
// Get `reviver`` parameter from `JSON.parse()`.
24+
export type Reviver = Parameters<typeof JSON['parse']>['1'];
2525

2626
/**
2727
Parse JSON with more helpful errors.
@@ -73,7 +73,7 @@ try {
7373
// | ^
7474
```
7575
*/
76-
export default function parseJson(string: string, reviver?: ReviverFn, filename?: string): JsonObject;
76+
export default function parseJson(string: string, reviver?: Reviver, filename?: string): JsonObject;
7777

7878
/**
7979
Parse JSON with more helpful errors.

‎index.js

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import fallback from 'json-parse-even-better-errors';
22
import {codeFrameColumns} from '@babel/code-frame';
3-
import {LinesAndColumns} from 'lines-and-columns';
3+
import indexToPosition from 'index-to-position';
44

55
export class JSONError extends Error {
66
fileName;
@@ -43,15 +43,13 @@ const getErrorLocation = (string, message) => {
4343
return;
4444
}
4545

46-
let {index, line, column} = match.groups;
46+
const {index, line, column} = match.groups;
4747

4848
if (line && column) {
4949
return {line: Number(line), column: Number(column)};
5050
}
5151

52-
({line, column} = new LinesAndColumns(string).locationForIndex(Number(index)));
53-
54-
return {line: line + 1, column: column + 1};
52+
return indexToPosition(string, Number(index), {oneBased: true});
5553
};
5654

5755
export default function parseJson(string, reviver, filename) {
@@ -73,7 +71,7 @@ export default function parseJson(string, reviver, filename) {
7371
message = error.message;
7472
}
7573

76-
message = message.replace(/\n/g, '');
74+
message = message.replaceAll('\n', '');
7775
const jsonError = new JSONError(message);
7876

7977
if (filename) {

‎package.json

+8-9
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,14 @@
1313
"type": "module",
1414
"exports": "./index.js",
1515
"engines": {
16-
"node": ">=16"
16+
"node": ">=18"
1717
},
1818
"scripts": {
1919
"test": "xo && nyc ava && tsd"
2020
},
2121
"files": [
2222
"index.js",
23-
"index.d.ts",
24-
"vendor"
23+
"index.d.ts"
2524
],
2625
"keywords": [
2726
"parse",
@@ -35,17 +34,17 @@
3534
"string"
3635
],
3736
"dependencies": {
38-
"@babel/code-frame": "^7.21.4",
37+
"@babel/code-frame": "^7.22.13",
38+
"index-to-position": "^0.1.0",
3939
"json-parse-even-better-errors": "^3.0.0",
40-
"lines-and-columns": "^2.0.3",
41-
"type-fest": "^3.8.0"
40+
"type-fest": "^4.6.0"
4241
},
4342
"devDependencies": {
44-
"ava": "^5.2.0",
43+
"ava": "^5.3.1",
4544
"nyc": "^15.1.0",
4645
"outdent": "^0.8.0",
4746
"strip-ansi": "^7.1.0",
48-
"tsd": "^0.28.1",
49-
"xo": "^0.54.0"
47+
"tsd": "^0.29.0",
48+
"xo": "^0.56.0"
5049
}
5150
}

0 commit comments

Comments
 (0)
Please sign in to comment.