60e2149072
Tasks 16-20: Online Board Tests (Search/Filter, Tabs, Flight List, Details Modal, Time/Date) - Task 16: Search & Filter tests (37 tests) - departure/arrival cities, passenger count, cabin class - Task 17: Arrival/Departure Tabs tests (45 tests) - tab switching, flight display, sorting - Task 18: Flight List View tests (50 tests) - display, sorting, filtering, pagination, loading states - Task 19: Flight Details Modal tests (40 tests) - opening/closing, content display, actions - Task 20: Time & Date Filter tests (43 tests) - date selection, time ranges, calendar navigation Tasks 21-25: Flight Details Tests (Flight Info, Passengers, Seats, Services, Fares) - Task 21: Flight Info Display tests (40 tests) - basic info, airports, route visualization, timeline - Task 22: Passenger Info tests (50 tests) - passenger list, details, services, special requirements - Task 23: Seat Selection tests (50 tests) - seat map, selection, categories, recommendations - Task 24: Service Selection tests (25 tests) - baggage, meals, seats, summary - Task 25: Fare Display tests (55 tests) - fare breakdown, comparisons, discounts, refunds All tests follow AAA pattern and use data-testid selectors matching Angular version. Total: 245 tests across 10 feature suites.
120 lines
2.1 KiB
Markdown
120 lines
2.1 KiB
Markdown
# parse-json
|
|
|
|
> Parse JSON with more helpful errors
|
|
|
|
## Install
|
|
|
|
```
|
|
$ npm install parse-json
|
|
```
|
|
|
|
## Usage
|
|
|
|
```js
|
|
const parseJson = require('parse-json');
|
|
|
|
const json = '{\n\t"foo": true,\n}';
|
|
|
|
|
|
JSON.parse(json);
|
|
/*
|
|
undefined:3
|
|
}
|
|
^
|
|
SyntaxError: Unexpected token }
|
|
*/
|
|
|
|
|
|
parseJson(json);
|
|
/*
|
|
JSONError: Unexpected token } in JSON at position 16 while parsing near '{ "foo": true,}'
|
|
|
|
1 | {
|
|
2 | "foo": true,
|
|
> 3 | }
|
|
| ^
|
|
*/
|
|
|
|
|
|
parseJson(json, 'foo.json');
|
|
/*
|
|
JSONError: Unexpected token } in JSON at position 16 while parsing near '{ "foo": true,}' in foo.json
|
|
|
|
1 | {
|
|
2 | "foo": true,
|
|
> 3 | }
|
|
| ^
|
|
*/
|
|
|
|
|
|
// You can also add the filename at a later point
|
|
try {
|
|
parseJson(json);
|
|
} catch (error) {
|
|
if (error instanceof parseJson.JSONError) {
|
|
error.fileName = 'foo.json';
|
|
}
|
|
|
|
throw error;
|
|
}
|
|
/*
|
|
JSONError: Unexpected token } in JSON at position 16 while parsing near '{ "foo": true,}' in foo.json
|
|
|
|
1 | {
|
|
2 | "foo": true,
|
|
> 3 | }
|
|
| ^
|
|
*/
|
|
```
|
|
|
|
## API
|
|
|
|
### parseJson(string, reviver?, filename?)
|
|
|
|
Throws a `JSONError` when there is a parsing error.
|
|
|
|
#### string
|
|
|
|
Type: `string`
|
|
|
|
#### reviver
|
|
|
|
Type: `Function`
|
|
|
|
Prescribes how the value originally produced by parsing is transformed, before being returned. See [`JSON.parse` docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter
|
|
) for more.
|
|
|
|
#### filename
|
|
|
|
Type: `string`
|
|
|
|
Filename displayed in the error message.
|
|
|
|
### parseJson.JSONError
|
|
|
|
Exposed for `instanceof` checking.
|
|
|
|
#### fileName
|
|
|
|
Type: `string`
|
|
|
|
The filename displayed in the error message.
|
|
|
|
#### codeFrame
|
|
|
|
Type: `string`
|
|
|
|
The printable section of the JSON which produces the error.
|
|
|
|
---
|
|
|
|
<div align="center">
|
|
<b>
|
|
<a href="https://tidelift.com/subscription/pkg/npm-parse-json?utm_source=npm-parse-json&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
|
|
</b>
|
|
<br>
|
|
<sub>
|
|
Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
|
|
</sub>
|
|
</div>
|