express-fast-json-stringify 1.2.8 → 1.2.9
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 +49 -47
- package/README.md +11 -8
- package/build/main/lib/middleware.d.ts +6 -6
- package/build/main/lib/middleware.js +8 -10
- package/build/module/lib/middleware.d.ts +6 -6
- package/build/module/lib/middleware.js +8 -10
- package/package.json +38 -29
- package/build/main/index.spec.d.ts +0 -1
- package/build/main/index.spec.js +0 -66
- package/build/module/index.spec.d.ts +0 -1
- package/build/module/index.spec.js +0 -61
package/CHANGELOG.md
CHANGED
|
@@ -2,50 +2,52 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
-
### [1.2.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
### [1.1.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
*
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
5
|
+
### [1.2.9](https://github.com/nigrosimone/express-fast-json-stringify/compare/v1.2.8...v1.2.9) (2026-01-18)
|
|
6
|
+
|
|
7
|
+
### [1.2.8](https://github.com/nigrosimone/express-fast-json-stringify/compare/v1.2.6...v1.2.8) (2024-09-29)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* global type ([56fa47c](https://github.com/nigrosimone/express-fast-json-stringify/commit/56fa47c6b395a1de89dd85bc67f55c8cd3f5d852))
|
|
13
|
+
|
|
14
|
+
### [1.2.6](https://github.com/nigrosimone/express-fast-json-stringify/compare/v1.2.4...v1.2.6) (2024-09-29)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* export ([b753280](https://github.com/nigrosimone/express-fast-json-stringify/commit/b753280af8af5aea830715405d404f3fad6f43d7))
|
|
20
|
+
|
|
21
|
+
### [1.2.4](https://github.com/nigrosimone/express-fast-json-stringify/compare/v1.2.2...v1.2.4) (2024-09-29)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Bug Fixes
|
|
25
|
+
|
|
26
|
+
* del deps ([0e9e63a](https://github.com/nigrosimone/express-fast-json-stringify/commit/0e9e63af86e647815002079b1df5ca19ff6f7632))
|
|
27
|
+
|
|
28
|
+
### [1.2.2](https://github.com/nigrosimone/express-fast-json-stringify/compare/v1.2.0...v1.2.2) (2024-09-29)
|
|
29
|
+
|
|
30
|
+
## [1.2.0](https://github.com/nigrosimone/express-fast-json-stringify/compare/v1.1.4...v1.2.0) (2024-09-29)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Features
|
|
34
|
+
|
|
35
|
+
* add options ([9466dc3](https://github.com/nigrosimone/express-fast-json-stringify/commit/9466dc30c20693a7ceabf2240d5d9701c76280c0))
|
|
36
|
+
|
|
37
|
+
### [1.1.4](https://github.com/nigrosimone/express-fast-json-stringify/compare/v1.1.2...v1.1.4) (2024-09-29)
|
|
38
|
+
|
|
39
|
+
### [1.1.2](https://github.com/nigrosimone/express-fast-json-stringify/compare/v1.1.0...v1.1.2) (2024-09-29)
|
|
40
|
+
|
|
41
|
+
## 1.1.0 (2024-09-29)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### Features
|
|
45
|
+
|
|
46
|
+
* first commit ([5e3cc3e](https://github.com/nigrosimone/express-fast-json-stringify/commit/5e3cc3e46fc0d35c07299697d1133636d21bee9b))
|
|
47
|
+
* npmignore ([364b397](https://github.com/nigrosimone/express-fast-json-stringify/commit/364b397ec15c14846c427c8c395b756aec839174))
|
|
48
|
+
* vscode ([f962e81](https://github.com/nigrosimone/express-fast-json-stringify/commit/f962e8145aeaa517c8b80dc642f5bca6139dff4d))
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
### Bug Fixes
|
|
52
|
+
|
|
53
|
+
* ignore publish ([ca95f45](https://github.com/nigrosimone/express-fast-json-stringify/commit/ca95f450e1ce22f957fff4cd9f7520386ee70962))
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
JSON serialization is a critical task in web development, particularly for applications built with Node.js and Express.js. While the native JSON serialization in Node.js (`JSON.stringify()`) is straightforward and convenient, it can become a performance bottleneck, especially under heavy load. This
|
|
1
|
+
JSON serialization is a critical task in web development, particularly for applications built with Node.js and Express.js. While the native JSON serialization in Node.js (`JSON.stringify()`) is straightforward and convenient, it can become a performance bottleneck, especially under heavy load. This documentation introduces [express-fast-json-stringify](https://www.npmjs.com/package/express-fast-json-stringify), a custom middleware package that leverages [fast-json-stringify](https://www.npmjs.com/package/fast-json-stringify) to significantly boost JSON serialization performance in Express applications.
|
|
2
2
|
|
|
3
3
|
## What is fast-json-stringify?
|
|
4
4
|
|
|
@@ -42,7 +42,7 @@ const schema: Schema = {
|
|
|
42
42
|
Use the `fastJsonSchema` middleware in your Express routes, passing the schema object as an argument. This will set up the optimized JSON serialization for that route.
|
|
43
43
|
|
|
44
44
|
```ts
|
|
45
|
-
import express
|
|
45
|
+
import express from 'express';
|
|
46
46
|
import { fastJsonSchema, Schema } from 'express-fast-json-stringify';
|
|
47
47
|
|
|
48
48
|
const app = express();
|
|
@@ -57,11 +57,7 @@ const exampleSchema: Schema = {
|
|
|
57
57
|
},
|
|
58
58
|
};
|
|
59
59
|
|
|
60
|
-
app.get(
|
|
61
|
-
'/',
|
|
62
|
-
fastJsonSchema(exampleSchema),
|
|
63
|
-
(req: Request, res: Response, next: NextFunction) => {},
|
|
64
|
-
);
|
|
60
|
+
app.get('/', fastJsonSchema(exampleSchema), (req, res, next) => {});
|
|
65
61
|
```
|
|
66
62
|
|
|
67
63
|
## Sending JSON Responses
|
|
@@ -69,8 +65,11 @@ app.get(
|
|
|
69
65
|
Instead of using the default `res.json()` method, use the `res.fastJson()` method provided by the middleware to send JSON responses. This leverages the speed benefits of fast-json-stringify.
|
|
70
66
|
|
|
71
67
|
```ts
|
|
68
|
+
import express from 'express';
|
|
72
69
|
import { fastJsonSchema, Schema } from 'express-fast-json-stringify';
|
|
73
70
|
|
|
71
|
+
const app = express();
|
|
72
|
+
|
|
74
73
|
const schema: Schema = {
|
|
75
74
|
title: 'Example Schema',
|
|
76
75
|
type: 'object',
|
|
@@ -110,4 +109,8 @@ Using `express-fast-json-stringify` offers several performance benefits:
|
|
|
110
109
|
|
|
111
110
|
Integrating `express-fast-json-stringify` into your Express.js application can provide substantial performance improvements, especially in scenarios where JSON serialization is a bottleneck. By leveraging the power of `fast-json-stringify`, you can achieve faster response times and handle higher loads, making your application more efficient and scalable.
|
|
112
111
|
|
|
113
|
-
To start using `express-fast-json-stringify`, follow the steps outlined in this
|
|
112
|
+
To start using `express-fast-json-stringify`, follow the steps outlined in this documentation, and enjoy the benefits of faster JSON serialization in your Express applications. For a live demo, you can check out the [StackBlitz demo](https://stackblitz.com/edit/express-fast-json-stringify).
|
|
113
|
+
|
|
114
|
+
## Support
|
|
115
|
+
|
|
116
|
+
This is an open-source project. Star this [repository](https://github.com/nigrosimone/express-fast-json-stringify), if you like it, or even [donate](https://www.paypal.com/paypalme/snwp). Thank you so much!
|
|
@@ -2,7 +2,7 @@ import type { NextFunction, Request, Response } from 'express';
|
|
|
2
2
|
import { type Options, type Schema } from 'fast-json-stringify';
|
|
3
3
|
export type { Schema, Options } from 'fast-json-stringify';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Build a stringify function using a schema of the documents that should be stringified
|
|
6
6
|
* @param {Schema} schema The schema used to stringify values
|
|
7
7
|
* @param {Options} options The options to use (optional)
|
|
8
8
|
* @see https://www.npmjs.com/package/fast-json-stringify
|
|
@@ -10,7 +10,7 @@ export type { Schema, Options } from 'fast-json-stringify';
|
|
|
10
10
|
* Examples:
|
|
11
11
|
* ```ts
|
|
12
12
|
* import express from 'express';
|
|
13
|
-
* import {
|
|
13
|
+
* import { fastJsonSchema, Schema } from 'express-fast-json-stringify';
|
|
14
14
|
*
|
|
15
15
|
* const app = express();
|
|
16
16
|
*
|
|
@@ -44,7 +44,7 @@ export type { Schema, Options } from 'fast-json-stringify';
|
|
|
44
44
|
* });
|
|
45
45
|
* ```
|
|
46
46
|
*/
|
|
47
|
-
export declare const fastJsonSchema: (schema: Schema, options?: Options) => (_req: Request, res: Response, next: NextFunction) => void;
|
|
47
|
+
export declare const fastJsonSchema: (schema: Schema, options?: Omit<Options, "mode">) => (_req: Request, res: Response, next: NextFunction) => void;
|
|
48
48
|
declare global {
|
|
49
49
|
namespace Express {
|
|
50
50
|
interface Response {
|
|
@@ -53,11 +53,11 @@ declare global {
|
|
|
53
53
|
*
|
|
54
54
|
* Examples:
|
|
55
55
|
* ```ts
|
|
56
|
-
* res.fastJson({ user: '
|
|
57
|
-
* res.status(200).fastJson({ user: '
|
|
56
|
+
* res.fastJson({ user: 'Simone Nigro' });
|
|
57
|
+
* res.status(200).fastJson({ user: 'Simone Nigro' });
|
|
58
58
|
* ```
|
|
59
59
|
*/
|
|
60
|
-
fastJson: (
|
|
60
|
+
fastJson: (body: any) => Response;
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.fastJsonSchema = void 0;
|
|
7
7
|
const fast_json_stringify_1 = __importDefault(require("fast-json-stringify"));
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* Build a stringify function using a schema of the documents that should be stringified
|
|
10
10
|
* @param {Schema} schema The schema used to stringify values
|
|
11
11
|
* @param {Options} options The options to use (optional)
|
|
12
12
|
* @see https://www.npmjs.com/package/fast-json-stringify
|
|
@@ -14,7 +14,7 @@ const fast_json_stringify_1 = __importDefault(require("fast-json-stringify"));
|
|
|
14
14
|
* Examples:
|
|
15
15
|
* ```ts
|
|
16
16
|
* import express from 'express';
|
|
17
|
-
* import {
|
|
17
|
+
* import { fastJsonSchema, Schema } from 'express-fast-json-stringify';
|
|
18
18
|
*
|
|
19
19
|
* const app = express();
|
|
20
20
|
*
|
|
@@ -59,18 +59,16 @@ const fastJsonSchema = (schema, options) => {
|
|
|
59
59
|
*
|
|
60
60
|
* Examples:
|
|
61
61
|
* ```ts
|
|
62
|
-
* res.fastJson({ user: '
|
|
63
|
-
* res.status(200).fastJson({ user: '
|
|
62
|
+
* res.fastJson({ user: 'Simone Nigro' });
|
|
63
|
+
* res.status(200).fastJson({ user: 'Simone Nigro' });
|
|
64
64
|
* ```
|
|
65
65
|
*/
|
|
66
|
-
res.fastJson = (
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
return res.send(fjs(data));
|
|
66
|
+
res.fastJson = (body) => {
|
|
67
|
+
res.setHeader('Content-Type', 'application/json');
|
|
68
|
+
return res.end(fjs(body));
|
|
71
69
|
};
|
|
72
70
|
next();
|
|
73
71
|
};
|
|
74
72
|
};
|
|
75
73
|
exports.fastJsonSchema = fastJsonSchema;
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSw4RUFBMEU7QUFJMUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDRztBQUNJLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBYyxFQUFFLE9BQStCLEVBQUUsRUFBRTtJQUNoRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksU0FBUyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELE1BQU0sR0FBRyxHQUFHLElBQUEsNkJBQVEsRUFBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEMsT0FBTyxDQUFDLElBQWEsRUFBRSxHQUFhLEVBQUUsSUFBa0IsRUFBRSxFQUFFO1FBQzFEOzs7Ozs7OztXQVFHO1FBQ0gsR0FBRyxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQVMsRUFBWSxFQUFFO1lBQ3JDLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFDbEQsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQztRQUNGLElBQUksRUFBRSxDQUFDO0lBQ1QsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBckJXLFFBQUEsY0FBYyxrQkFxQnpCIn0=
|
|
@@ -2,7 +2,7 @@ import type { NextFunction, Request, Response } from 'express';
|
|
|
2
2
|
import { type Options, type Schema } from 'fast-json-stringify';
|
|
3
3
|
export type { Schema, Options } from 'fast-json-stringify';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Build a stringify function using a schema of the documents that should be stringified
|
|
6
6
|
* @param {Schema} schema The schema used to stringify values
|
|
7
7
|
* @param {Options} options The options to use (optional)
|
|
8
8
|
* @see https://www.npmjs.com/package/fast-json-stringify
|
|
@@ -10,7 +10,7 @@ export type { Schema, Options } from 'fast-json-stringify';
|
|
|
10
10
|
* Examples:
|
|
11
11
|
* ```ts
|
|
12
12
|
* import express from 'express';
|
|
13
|
-
* import {
|
|
13
|
+
* import { fastJsonSchema, Schema } from 'express-fast-json-stringify';
|
|
14
14
|
*
|
|
15
15
|
* const app = express();
|
|
16
16
|
*
|
|
@@ -44,7 +44,7 @@ export type { Schema, Options } from 'fast-json-stringify';
|
|
|
44
44
|
* });
|
|
45
45
|
* ```
|
|
46
46
|
*/
|
|
47
|
-
export declare const fastJsonSchema: (schema: Schema, options?: Options) => (_req: Request, res: Response, next: NextFunction) => void;
|
|
47
|
+
export declare const fastJsonSchema: (schema: Schema, options?: Omit<Options, "mode">) => (_req: Request, res: Response, next: NextFunction) => void;
|
|
48
48
|
declare global {
|
|
49
49
|
namespace Express {
|
|
50
50
|
interface Response {
|
|
@@ -53,11 +53,11 @@ declare global {
|
|
|
53
53
|
*
|
|
54
54
|
* Examples:
|
|
55
55
|
* ```ts
|
|
56
|
-
* res.fastJson({ user: '
|
|
57
|
-
* res.status(200).fastJson({ user: '
|
|
56
|
+
* res.fastJson({ user: 'Simone Nigro' });
|
|
57
|
+
* res.status(200).fastJson({ user: 'Simone Nigro' });
|
|
58
58
|
* ```
|
|
59
59
|
*/
|
|
60
|
-
fastJson: (
|
|
60
|
+
fastJson: (body: any) => Response;
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fastJson from 'fast-json-stringify';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Build a stringify function using a schema of the documents that should be stringified
|
|
4
4
|
* @param {Schema} schema The schema used to stringify values
|
|
5
5
|
* @param {Options} options The options to use (optional)
|
|
6
6
|
* @see https://www.npmjs.com/package/fast-json-stringify
|
|
@@ -8,7 +8,7 @@ import fastJson from 'fast-json-stringify';
|
|
|
8
8
|
* Examples:
|
|
9
9
|
* ```ts
|
|
10
10
|
* import express from 'express';
|
|
11
|
-
* import {
|
|
11
|
+
* import { fastJsonSchema, Schema } from 'express-fast-json-stringify';
|
|
12
12
|
*
|
|
13
13
|
* const app = express();
|
|
14
14
|
*
|
|
@@ -53,17 +53,15 @@ export const fastJsonSchema = (schema, options) => {
|
|
|
53
53
|
*
|
|
54
54
|
* Examples:
|
|
55
55
|
* ```ts
|
|
56
|
-
* res.fastJson({ user: '
|
|
57
|
-
* res.status(200).fastJson({ user: '
|
|
56
|
+
* res.fastJson({ user: 'Simone Nigro' });
|
|
57
|
+
* res.status(200).fastJson({ user: 'Simone Nigro' });
|
|
58
58
|
* ```
|
|
59
59
|
*/
|
|
60
|
-
res.fastJson = (
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
return res.send(fjs(data));
|
|
60
|
+
res.fastJson = (body) => {
|
|
61
|
+
res.setHeader('Content-Type', 'application/json');
|
|
62
|
+
return res.end(fjs(body));
|
|
65
63
|
};
|
|
66
64
|
next();
|
|
67
65
|
};
|
|
68
66
|
};
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFFBQXVDLE1BQU0scUJBQXFCLENBQUM7QUFJMUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQWMsRUFBRSxPQUErQixFQUFFLEVBQUU7SUFDaEYsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLFNBQVMsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sQ0FBQyxJQUFhLEVBQUUsR0FBYSxFQUFFLElBQWtCLEVBQUUsRUFBRTtRQUMxRDs7Ozs7Ozs7V0FRRztRQUNILEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFTLEVBQVksRUFBRTtZQUNyQyxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2xELE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUM7UUFDRixJQUFJLEVBQUUsQ0FBQztJQUNULENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "express-fast-json-stringify",
|
|
3
|
-
"version": "1.2.
|
|
4
|
-
"description": "With express-fast-json-stringify, you can leverage fast-json-stringify in your Express application",
|
|
3
|
+
"version": "1.2.9",
|
|
4
|
+
"description": "With express-fast-json-stringify, you can leverage fast-json-stringify in your Express application to improve JSON serialization performance",
|
|
5
5
|
"main": "build/main/index.js",
|
|
6
6
|
"typings": "build/main/index.d.ts",
|
|
7
7
|
"module": "build/module/index.js",
|
|
@@ -9,7 +9,13 @@
|
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"express",
|
|
12
|
-
"fast-json-stringify"
|
|
12
|
+
"fast-json-stringify",
|
|
13
|
+
"json",
|
|
14
|
+
"stringify",
|
|
15
|
+
"schema",
|
|
16
|
+
"jsonschema",
|
|
17
|
+
"validator",
|
|
18
|
+
"json-schema"
|
|
13
19
|
],
|
|
14
20
|
"scripts": {
|
|
15
21
|
"build": "run-p build:*",
|
|
@@ -45,36 +51,39 @@
|
|
|
45
51
|
"node": ">=18"
|
|
46
52
|
},
|
|
47
53
|
"dependencies": {
|
|
48
|
-
"fast-json-stringify": "^6.
|
|
54
|
+
"fast-json-stringify": "^6.2.0"
|
|
49
55
|
},
|
|
50
56
|
"devDependencies": {
|
|
51
|
-
"@ava/typescript": "^
|
|
52
|
-
"@
|
|
53
|
-
"@
|
|
54
|
-
"@
|
|
55
|
-
"@
|
|
56
|
-
"@
|
|
57
|
-
"@
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
57
|
+
"@ava/typescript": "^6.0.0",
|
|
58
|
+
"@eslint/compat": "^2.0.1",
|
|
59
|
+
"@eslint/eslintrc": "^3.3.3",
|
|
60
|
+
"@eslint/js": "^9.39.2",
|
|
61
|
+
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
|
62
|
+
"@types/express": "^5.0.6",
|
|
63
|
+
"@types/node": "^25.0.9",
|
|
64
|
+
"@types/supertest": "^6.0.3",
|
|
65
|
+
"@typescript-eslint/eslint-plugin": "^8.53.0",
|
|
66
|
+
"@typescript-eslint/parser": "^8.53.0",
|
|
67
|
+
"ava": "^6.4.1",
|
|
68
|
+
"codecov": "^3.8.3",
|
|
69
|
+
"cspell": "^9.6.0",
|
|
61
70
|
"cz-conventional-changelog": "^3.3.0",
|
|
62
|
-
"eslint": "^
|
|
63
|
-
"eslint-config-prettier": "^
|
|
71
|
+
"eslint": "^9.39.2",
|
|
72
|
+
"eslint-config-prettier": "^10.1.8",
|
|
64
73
|
"eslint-plugin-eslint-comments": "^3.2.0",
|
|
65
|
-
"eslint-plugin-functional": "^
|
|
66
|
-
"eslint-plugin-import": "^2.
|
|
67
|
-
"express": "^
|
|
68
|
-
"gh-pages": "^6.
|
|
74
|
+
"eslint-plugin-functional": "^9.0.2",
|
|
75
|
+
"eslint-plugin-import": "^2.32.0",
|
|
76
|
+
"express": "^5.2.1",
|
|
77
|
+
"gh-pages": "^6.3.0",
|
|
69
78
|
"npm-run-all": "^4.1.5",
|
|
70
|
-
"nyc": "^
|
|
71
|
-
"open-cli": "^
|
|
72
|
-
"prettier": "^3.0
|
|
73
|
-
"standard-version": "^9.
|
|
74
|
-
"supertest": "^7.
|
|
75
|
-
"ts-node": "^10.9.
|
|
76
|
-
"typedoc": "^0.
|
|
77
|
-
"typescript": "^5.
|
|
79
|
+
"nyc": "^17.1.0",
|
|
80
|
+
"open-cli": "^8.0.0",
|
|
81
|
+
"prettier": "^3.8.0",
|
|
82
|
+
"standard-version": "^9.5.0",
|
|
83
|
+
"supertest": "^7.2.2",
|
|
84
|
+
"ts-node": "^10.9.2",
|
|
85
|
+
"typedoc": "^0.28.16",
|
|
86
|
+
"typescript": "^5.9.3"
|
|
78
87
|
},
|
|
79
88
|
"files": [
|
|
80
89
|
"build/main",
|
|
@@ -113,6 +122,6 @@
|
|
|
113
122
|
]
|
|
114
123
|
},
|
|
115
124
|
"peerDependencies": {
|
|
116
|
-
"fast-json-stringify": "^6.
|
|
125
|
+
"fast-json-stringify": "^6.2.0"
|
|
117
126
|
}
|
|
118
127
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/build/main/index.spec.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const ava_1 = __importDefault(require("ava"));
|
|
7
|
-
const express_1 = __importDefault(require("express"));
|
|
8
|
-
const supertest_1 = __importDefault(require("supertest"));
|
|
9
|
-
const _1 = require("./");
|
|
10
|
-
const data = {
|
|
11
|
-
firstName: 'Simone',
|
|
12
|
-
lastName: 'Nigro',
|
|
13
|
-
age: 40,
|
|
14
|
-
};
|
|
15
|
-
const schema = {
|
|
16
|
-
title: 'Example Schema',
|
|
17
|
-
type: 'object',
|
|
18
|
-
properties: {
|
|
19
|
-
firstName: {
|
|
20
|
-
type: 'string',
|
|
21
|
-
},
|
|
22
|
-
lastName: {
|
|
23
|
-
type: 'string',
|
|
24
|
-
},
|
|
25
|
-
age: {
|
|
26
|
-
description: 'Age in years',
|
|
27
|
-
type: 'integer',
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
};
|
|
31
|
-
const app = (0, express_1.default)();
|
|
32
|
-
app.use(express_1.default.json());
|
|
33
|
-
app.post('/with-schema', (0, _1.fastJsonSchema)(schema), (req, res, next) => {
|
|
34
|
-
try {
|
|
35
|
-
res.fastJson(req.body.data);
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
next(error);
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
app.post('/without-schema', (req, res, next) => {
|
|
42
|
-
try {
|
|
43
|
-
res.fastJson(req.body.data);
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
next(error);
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
app.use((err, _req, res, _next) => {
|
|
50
|
-
res.status(500).json({ error: err.message });
|
|
51
|
-
});
|
|
52
|
-
(0, ava_1.default)('with schema', async (t) => {
|
|
53
|
-
t.plan(3);
|
|
54
|
-
const res = await (0, supertest_1.default)(app).post('/with-schema').send({ data });
|
|
55
|
-
t.like(res.body, data);
|
|
56
|
-
t.is(res.ok, true);
|
|
57
|
-
t.is(res.type, 'application/json');
|
|
58
|
-
});
|
|
59
|
-
(0, ava_1.default)('without schema', async (t) => {
|
|
60
|
-
t.plan(3);
|
|
61
|
-
const res = await (0, supertest_1.default)(app).post('/without-schema').send({ data });
|
|
62
|
-
t.like(res.body, { error: `res.fastJson is not a function` });
|
|
63
|
-
t.is(res.ok, false);
|
|
64
|
-
t.is(res.type, 'application/json');
|
|
65
|
-
});
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOENBQXVCO0FBQ3ZCLHNEQUFtRTtBQUNuRSwwREFBZ0M7QUFFaEMseUJBQTRDO0FBRTVDLE1BQU0sSUFBSSxHQUFHO0lBQ1gsU0FBUyxFQUFFLFFBQVE7SUFDbkIsUUFBUSxFQUFFLE9BQU87SUFDakIsR0FBRyxFQUFFLEVBQUU7Q0FDUixDQUFDO0FBRUYsTUFBTSxNQUFNLEdBQVc7SUFDckIsS0FBSyxFQUFFLGdCQUFnQjtJQUN2QixJQUFJLEVBQUUsUUFBUTtJQUNkLFVBQVUsRUFBRTtRQUNWLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxRQUFRO1NBQ2Y7UUFDRCxRQUFRLEVBQUU7WUFDUixJQUFJLEVBQUUsUUFBUTtTQUNmO1FBQ0QsR0FBRyxFQUFFO1lBQ0gsV0FBVyxFQUFFLGNBQWM7WUFDM0IsSUFBSSxFQUFFLFNBQVM7U0FDaEI7S0FDRjtDQUNGLENBQUM7QUFFRixNQUFNLEdBQUcsR0FBRyxJQUFBLGlCQUFPLEdBQUUsQ0FBQztBQUV0QixHQUFHLENBQUMsR0FBRyxDQUFDLGlCQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUV4QixHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFBLGlCQUFjLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO0lBQ2xFLElBQUk7UUFDRixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDN0I7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNiO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFFSCxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtJQUM3QyxJQUFJO1FBQ0YsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzdCO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDYjtBQUNILENBQUMsQ0FBQyxDQUFDO0FBRUgsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxJQUFhLEVBQUUsR0FBYSxFQUFFLEtBQW1CLEVBQUUsRUFBRTtJQUN0RSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUEsYUFBSSxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDOUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVWLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBQSxtQkFBTyxFQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRW5FLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFBLGFBQUksRUFBQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVWLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBQSxtQkFBTyxFQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFdEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLGdDQUFnQyxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUMifQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import test from 'ava';
|
|
2
|
-
import express from 'express';
|
|
3
|
-
import request from 'supertest';
|
|
4
|
-
import { fastJsonSchema } from './';
|
|
5
|
-
const data = {
|
|
6
|
-
firstName: 'Simone',
|
|
7
|
-
lastName: 'Nigro',
|
|
8
|
-
age: 40,
|
|
9
|
-
};
|
|
10
|
-
const schema = {
|
|
11
|
-
title: 'Example Schema',
|
|
12
|
-
type: 'object',
|
|
13
|
-
properties: {
|
|
14
|
-
firstName: {
|
|
15
|
-
type: 'string',
|
|
16
|
-
},
|
|
17
|
-
lastName: {
|
|
18
|
-
type: 'string',
|
|
19
|
-
},
|
|
20
|
-
age: {
|
|
21
|
-
description: 'Age in years',
|
|
22
|
-
type: 'integer',
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
};
|
|
26
|
-
const app = express();
|
|
27
|
-
app.use(express.json());
|
|
28
|
-
app.post('/with-schema', fastJsonSchema(schema), (req, res, next) => {
|
|
29
|
-
try {
|
|
30
|
-
res.fastJson(req.body.data);
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
next(error);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
app.post('/without-schema', (req, res, next) => {
|
|
37
|
-
try {
|
|
38
|
-
res.fastJson(req.body.data);
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
next(error);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
app.use((err, _req, res, _next) => {
|
|
45
|
-
res.status(500).json({ error: err.message });
|
|
46
|
-
});
|
|
47
|
-
test('with schema', async (t) => {
|
|
48
|
-
t.plan(3);
|
|
49
|
-
const res = await request(app).post('/with-schema').send({ data });
|
|
50
|
-
t.like(res.body, data);
|
|
51
|
-
t.is(res.ok, true);
|
|
52
|
-
t.is(res.type, 'application/json');
|
|
53
|
-
});
|
|
54
|
-
test('without schema', async (t) => {
|
|
55
|
-
t.plan(3);
|
|
56
|
-
const res = await request(app).post('/without-schema').send({ data });
|
|
57
|
-
t.like(res.body, { error: `res.fastJson is not a function` });
|
|
58
|
-
t.is(res.ok, false);
|
|
59
|
-
t.is(res.type, 'application/json');
|
|
60
|
-
});
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLEtBQUssQ0FBQztBQUN2QixPQUFPLE9BQTRDLE1BQU0sU0FBUyxDQUFDO0FBQ25FLE9BQU8sT0FBTyxNQUFNLFdBQVcsQ0FBQztBQUVoQyxPQUFPLEVBQUUsY0FBYyxFQUFVLE1BQU0sSUFBSSxDQUFDO0FBRTVDLE1BQU0sSUFBSSxHQUFHO0lBQ1gsU0FBUyxFQUFFLFFBQVE7SUFDbkIsUUFBUSxFQUFFLE9BQU87SUFDakIsR0FBRyxFQUFFLEVBQUU7Q0FDUixDQUFDO0FBRUYsTUFBTSxNQUFNLEdBQVc7SUFDckIsS0FBSyxFQUFFLGdCQUFnQjtJQUN2QixJQUFJLEVBQUUsUUFBUTtJQUNkLFVBQVUsRUFBRTtRQUNWLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxRQUFRO1NBQ2Y7UUFDRCxRQUFRLEVBQUU7WUFDUixJQUFJLEVBQUUsUUFBUTtTQUNmO1FBQ0QsR0FBRyxFQUFFO1lBQ0gsV0FBVyxFQUFFLGNBQWM7WUFDM0IsSUFBSSxFQUFFLFNBQVM7U0FDaEI7S0FDRjtDQUNGLENBQUM7QUFFRixNQUFNLEdBQUcsR0FBRyxPQUFPLEVBQUUsQ0FBQztBQUV0QixHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBRXhCLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDbEUsSUFBSTtRQUNGLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM3QjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2I7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVILEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO0lBQzdDLElBQUk7UUFDRixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDN0I7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNiO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFFSCxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLElBQWEsRUFBRSxHQUFhLEVBQUUsS0FBbUIsRUFBRSxFQUFFO0lBQ3RFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDOUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVWLE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRW5FLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFVixNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXRFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQyxDQUFDIn0=
|