nextlove 2.1.9 → 2.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/dist/chunk-7JYJ5SIL.mjs +144 -0
- package/dist/generators/index.js +937 -549
- package/dist/generators/index.mjs +945 -557
- package/dist/index.d.ts +1 -1
- package/dist/index.js +144 -13
- package/dist/index.mjs +17 -8
- package/dist/nextjs-exception-middleware/index.d.ts +83 -0
- package/dist/nextjs-exception-middleware/index.js +164 -0
- package/dist/nextjs-exception-middleware/index.mjs +20 -0
- package/exception-middleware.d.ts +1 -0
- package/package.json +23 -13
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { NextApiRequest, NextApiResponse } from 'next';
|
|
2
|
+
|
|
3
|
+
interface WithExceptionHandlingOptions {
|
|
4
|
+
getErrorContext?: (req: NextApiRequest, error: Error) => Record<string, unknown>;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
interface WithOkStatusOptions {
|
|
8
|
+
addIf?: (req: NextApiRequest) => boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
declare type HttpExceptionMetadata = {
|
|
12
|
+
type: string;
|
|
13
|
+
message: string;
|
|
14
|
+
data?: Record<string, unknown>;
|
|
15
|
+
} & Record<string, unknown>;
|
|
16
|
+
interface ThrowingOptions {
|
|
17
|
+
json?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Throw HttpExceptions inside API endpoints to generate nice error messages
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```
|
|
24
|
+
* if (bad_soups.includes(soup_param)) {
|
|
25
|
+
* throw new HttpException(400, {
|
|
26
|
+
* type: "cant_make_soup",
|
|
27
|
+
* message: "Soup was too difficult, please specify a different soup"
|
|
28
|
+
* })
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
**/
|
|
33
|
+
declare class HttpException extends Error {
|
|
34
|
+
status: number;
|
|
35
|
+
metadata: HttpExceptionMetadata;
|
|
36
|
+
options: ThrowingOptions;
|
|
37
|
+
constructor(status: number, metadata: HttpExceptionMetadata, options?: ThrowingOptions);
|
|
38
|
+
toString(): string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Throw BadRequestException inside API endpoints that were provided incorrect
|
|
42
|
+
* parameters or body
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```
|
|
46
|
+
* if (bad_soups.includes(soup_param)) {
|
|
47
|
+
* throw new BadRequestException({
|
|
48
|
+
* type: "cant_make_soup",
|
|
49
|
+
* message: "Soup was too difficult, please specify a different soup",
|
|
50
|
+
* })
|
|
51
|
+
* }
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
**/
|
|
55
|
+
declare class BadRequestException extends HttpException {
|
|
56
|
+
metadata: HttpExceptionMetadata;
|
|
57
|
+
constructor(metadata: HttpExceptionMetadata, options?: ThrowingOptions);
|
|
58
|
+
}
|
|
59
|
+
declare class UnauthorizedException extends HttpException {
|
|
60
|
+
metadata: HttpExceptionMetadata;
|
|
61
|
+
constructor(metadata: HttpExceptionMetadata, options?: ThrowingOptions);
|
|
62
|
+
}
|
|
63
|
+
declare class NotFoundException extends HttpException {
|
|
64
|
+
metadata: HttpExceptionMetadata;
|
|
65
|
+
constructor(metadata: HttpExceptionMetadata, options?: ThrowingOptions);
|
|
66
|
+
}
|
|
67
|
+
declare class MethodNotAllowedException extends HttpException {
|
|
68
|
+
metadata: HttpExceptionMetadata;
|
|
69
|
+
constructor(metadata: HttpExceptionMetadata, options?: ThrowingOptions);
|
|
70
|
+
}
|
|
71
|
+
declare class InternalServerErrorException extends HttpException {
|
|
72
|
+
metadata: HttpExceptionMetadata;
|
|
73
|
+
constructor(metadata: HttpExceptionMetadata, options?: ThrowingOptions);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
interface ExceptionHandlingOptions {
|
|
77
|
+
addOkStatus?: boolean;
|
|
78
|
+
okStatusOptions?: WithOkStatusOptions;
|
|
79
|
+
exceptionHandlingOptions?: WithExceptionHandlingOptions;
|
|
80
|
+
}
|
|
81
|
+
declare const withExceptionHandling: ({ addOkStatus, okStatusOptions, exceptionHandlingOptions, }?: ExceptionHandlingOptions) => (next: (req: NextApiRequest, res: NextApiResponse) => Promise<void>) => (req: NextApiRequest, res: NextApiResponse) => Promise<void>;
|
|
82
|
+
|
|
83
|
+
export { BadRequestException, ExceptionHandlingOptions, HttpException, HttpExceptionMetadata, InternalServerErrorException, MethodNotAllowedException, NotFoundException, ThrowingOptions, UnauthorizedException, withExceptionHandling };
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/nextjs-exception-middleware/index.ts
|
|
21
|
+
var nextjs_exception_middleware_exports = {};
|
|
22
|
+
__export(nextjs_exception_middleware_exports, {
|
|
23
|
+
BadRequestException: () => BadRequestException,
|
|
24
|
+
HttpException: () => HttpException,
|
|
25
|
+
InternalServerErrorException: () => InternalServerErrorException,
|
|
26
|
+
MethodNotAllowedException: () => MethodNotAllowedException,
|
|
27
|
+
NotFoundException: () => NotFoundException,
|
|
28
|
+
UnauthorizedException: () => UnauthorizedException,
|
|
29
|
+
withExceptionHandling: () => withExceptionHandling2
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(nextjs_exception_middleware_exports);
|
|
32
|
+
|
|
33
|
+
// src/nextjs-exception-middleware/http-exceptions.ts
|
|
34
|
+
var HttpException = class extends Error {
|
|
35
|
+
constructor(status, metadata, options) {
|
|
36
|
+
super(metadata.message);
|
|
37
|
+
this.status = status;
|
|
38
|
+
this.metadata = metadata;
|
|
39
|
+
if (Error.captureStackTrace) {
|
|
40
|
+
Error.captureStackTrace(this, this.constructor);
|
|
41
|
+
}
|
|
42
|
+
this.options = options != null ? options : { json: true };
|
|
43
|
+
}
|
|
44
|
+
toString() {
|
|
45
|
+
return `HttpException: ${this.status}, ${this.metadata.message} (${this.metadata.type})`;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
var BadRequestException = class extends HttpException {
|
|
49
|
+
constructor(metadata, options) {
|
|
50
|
+
super(400, metadata, options);
|
|
51
|
+
this.metadata = metadata;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
var UnauthorizedException = class extends HttpException {
|
|
55
|
+
constructor(metadata, options) {
|
|
56
|
+
super(401, metadata, options);
|
|
57
|
+
this.metadata = metadata;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
var NotFoundException = class extends HttpException {
|
|
61
|
+
constructor(metadata, options) {
|
|
62
|
+
super(404, metadata, options);
|
|
63
|
+
this.metadata = metadata;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
var MethodNotAllowedException = class extends HttpException {
|
|
67
|
+
constructor(metadata, options) {
|
|
68
|
+
super(405, metadata, options);
|
|
69
|
+
this.metadata = metadata;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
var InternalServerErrorException = class extends HttpException {
|
|
73
|
+
constructor(metadata, options) {
|
|
74
|
+
super(500, metadata, options);
|
|
75
|
+
this.metadata = metadata;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
// src/nextjs-exception-middleware/with-exception-handling.ts
|
|
80
|
+
var withExceptionHandling = (options = {}) => (next) => async (req, res) => {
|
|
81
|
+
try {
|
|
82
|
+
await next(req, res);
|
|
83
|
+
} catch (error) {
|
|
84
|
+
let errorContext = {};
|
|
85
|
+
if (error instanceof Error) {
|
|
86
|
+
errorContext.stack = error.stack;
|
|
87
|
+
}
|
|
88
|
+
errorContext = options.getErrorContext ? options.getErrorContext(req, errorContext) : errorContext;
|
|
89
|
+
if (error instanceof HttpException) {
|
|
90
|
+
if (error.options.json) {
|
|
91
|
+
res.status(error.status).json({
|
|
92
|
+
error: {
|
|
93
|
+
...error.metadata,
|
|
94
|
+
...errorContext
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
return;
|
|
98
|
+
} else {
|
|
99
|
+
res.status(error.status).end(error.metadata.message);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
} else {
|
|
103
|
+
const formattedError = new HttpException(500, {
|
|
104
|
+
type: "internal_server_error",
|
|
105
|
+
message: error instanceof Error ? error.message : "Unknown error"
|
|
106
|
+
});
|
|
107
|
+
res.status(500).json({
|
|
108
|
+
error: {
|
|
109
|
+
...formattedError.metadata,
|
|
110
|
+
...errorContext
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
var with_exception_handling_default = withExceptionHandling;
|
|
118
|
+
|
|
119
|
+
// src/nextjs-exception-middleware/with-ok-status.ts
|
|
120
|
+
var withOkStatus = (options = {}) => (next) => async (req, res) => {
|
|
121
|
+
const originalJson = res.json;
|
|
122
|
+
res.json = function(data) {
|
|
123
|
+
const ok = res.statusCode >= 200 && res.statusCode < 300;
|
|
124
|
+
const shouldIncludeStatus = options.addIf ? options.addIf(req) : true;
|
|
125
|
+
if (shouldIncludeStatus) {
|
|
126
|
+
originalJson.call(this, {
|
|
127
|
+
...data,
|
|
128
|
+
ok
|
|
129
|
+
});
|
|
130
|
+
} else {
|
|
131
|
+
originalJson.call(this, data);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
await next(req, res);
|
|
135
|
+
};
|
|
136
|
+
var with_ok_status_default = withOkStatus;
|
|
137
|
+
|
|
138
|
+
// src/nextjs-exception-middleware/index.ts
|
|
139
|
+
var withExceptionHandling2 = ({
|
|
140
|
+
addOkStatus = false,
|
|
141
|
+
okStatusOptions,
|
|
142
|
+
exceptionHandlingOptions
|
|
143
|
+
} = {}) => (next) => (req, res) => {
|
|
144
|
+
if (addOkStatus) {
|
|
145
|
+
return with_ok_status_default(okStatusOptions)(
|
|
146
|
+
with_exception_handling_default(exceptionHandlingOptions)(next)
|
|
147
|
+
)(req, res);
|
|
148
|
+
}
|
|
149
|
+
return with_exception_handling_default(exceptionHandlingOptions)(next)(
|
|
150
|
+
req,
|
|
151
|
+
res
|
|
152
|
+
);
|
|
153
|
+
};
|
|
154
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
155
|
+
0 && (module.exports = {
|
|
156
|
+
BadRequestException,
|
|
157
|
+
HttpException,
|
|
158
|
+
InternalServerErrorException,
|
|
159
|
+
MethodNotAllowedException,
|
|
160
|
+
NotFoundException,
|
|
161
|
+
UnauthorizedException,
|
|
162
|
+
withExceptionHandling
|
|
163
|
+
});
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL25leHRqcy1leGNlcHRpb24tbWlkZGxld2FyZS9pbmRleC50cyIsICIuLi8uLi9zcmMvbmV4dGpzLWV4Y2VwdGlvbi1taWRkbGV3YXJlL2h0dHAtZXhjZXB0aW9ucy50cyIsICIuLi8uLi9zcmMvbmV4dGpzLWV4Y2VwdGlvbi1taWRkbGV3YXJlL3dpdGgtZXhjZXB0aW9uLWhhbmRsaW5nLnRzIiwgIi4uLy4uL3NyYy9uZXh0anMtZXhjZXB0aW9uLW1pZGRsZXdhcmUvd2l0aC1vay1zdGF0dXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IE5leHRBcGlSZXF1ZXN0LCBOZXh0QXBpUmVzcG9uc2UgfSBmcm9tIFwibmV4dFwiXG5pbXBvcnQgdW53cmFwcGVkV2l0aEV4Y2VwdGlvbkhhbmRsaW5nLCB7XG4gIFdpdGhFeGNlcHRpb25IYW5kbGluZ09wdGlvbnMsXG59IGZyb20gXCIuL3dpdGgtZXhjZXB0aW9uLWhhbmRsaW5nXCJcbmltcG9ydCB3aXRoT2tTdGF0dXMsIHsgV2l0aE9rU3RhdHVzT3B0aW9ucyB9IGZyb20gXCIuL3dpdGgtb2stc3RhdHVzXCJcblxuZXhwb3J0IGludGVyZmFjZSBFeGNlcHRpb25IYW5kbGluZ09wdGlvbnMge1xuICBhZGRPa1N0YXR1cz86IGJvb2xlYW5cbiAgb2tTdGF0dXNPcHRpb25zPzogV2l0aE9rU3RhdHVzT3B0aW9uc1xuICBleGNlcHRpb25IYW5kbGluZ09wdGlvbnM/OiBXaXRoRXhjZXB0aW9uSGFuZGxpbmdPcHRpb25zXG59XG5cbmV4cG9ydCBjb25zdCB3aXRoRXhjZXB0aW9uSGFuZGxpbmcgPVxuICAoe1xuICAgIGFkZE9rU3RhdHVzID0gZmFsc2UsXG4gICAgb2tTdGF0dXNPcHRpb25zLFxuICAgIGV4Y2VwdGlvbkhhbmRsaW5nT3B0aW9ucyxcbiAgfTogRXhjZXB0aW9uSGFuZGxpbmdPcHRpb25zID0ge30pID0+XG4gIChuZXh0OiAocmVxOiBOZXh0QXBpUmVxdWVzdCwgcmVzOiBOZXh0QXBpUmVzcG9uc2UpID0+IFByb21pc2U8dm9pZD4pID0+XG4gIChyZXE6IE5leHRBcGlSZXF1ZXN0LCByZXM6IE5leHRBcGlSZXNwb25zZSkgPT4ge1xuICAgIGlmIChhZGRPa1N0YXR1cykge1xuICAgICAgcmV0dXJuIHdpdGhPa1N0YXR1cyhva1N0YXR1c09wdGlvbnMpKFxuICAgICAgICB1bndyYXBwZWRXaXRoRXhjZXB0aW9uSGFuZGxpbmcoZXhjZXB0aW9uSGFuZGxpbmdPcHRpb25zKShuZXh0KVxuICAgICAgKShyZXEsIHJlcylcbiAgICB9XG5cbiAgICByZXR1cm4gdW53cmFwcGVkV2l0aEV4Y2VwdGlvbkhhbmRsaW5nKGV4Y2VwdGlvbkhhbmRsaW5nT3B0aW9ucykobmV4dCkoXG4gICAgICByZXEsXG4gICAgICByZXNcbiAgICApXG4gIH1cblxuZXhwb3J0ICogZnJvbSBcIi4vaHR0cC1leGNlcHRpb25zXCJcbiIsICJleHBvcnQgdHlwZSBIdHRwRXhjZXB0aW9uTWV0YWRhdGEgPSB7XG4gIHR5cGU6IHN0cmluZ1xuICBtZXNzYWdlOiBzdHJpbmdcbiAgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG59ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuZXhwb3J0IGludGVyZmFjZSBUaHJvd2luZ09wdGlvbnMge1xuICBqc29uPzogYm9vbGVhblxufVxuXG4vKipcbiAqIFRocm93IEh0dHBFeGNlcHRpb25zIGluc2lkZSBBUEkgZW5kcG9pbnRzIHRvIGdlbmVyYXRlIG5pY2UgZXJyb3IgbWVzc2FnZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgXG4gKiBpZiAoYmFkX3NvdXBzLmluY2x1ZGVzKHNvdXBfcGFyYW0pKSB7XG4gKiAgIHRocm93IG5ldyBIdHRwRXhjZXB0aW9uKDQwMCwge1xuICogICAgICB0eXBlOiBcImNhbnRfbWFrZV9zb3VwXCIsXG4gKiAgICAgIG1lc3NhZ2U6IFwiU291cCB3YXMgdG9vIGRpZmZpY3VsdCwgcGxlYXNlIHNwZWNpZnkgYSBkaWZmZXJlbnQgc291cFwiXG4gKiAgICB9KVxuICogfVxuICogYGBgXG4gKlxuICoqL1xuZXhwb3J0IGNsYXNzIEh0dHBFeGNlcHRpb24gZXh0ZW5kcyBFcnJvciB7XG4gIG9wdGlvbnM6IFRocm93aW5nT3B0aW9uc1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzdGF0dXM6IG51bWJlcixcbiAgICBwdWJsaWMgbWV0YWRhdGE6IEh0dHBFeGNlcHRpb25NZXRhZGF0YSxcbiAgICBvcHRpb25zPzogVGhyb3dpbmdPcHRpb25zXG4gICkge1xuICAgIHN1cGVyKG1ldGFkYXRhLm1lc3NhZ2UpXG5cbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpXG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyA/PyB7IGpzb246IHRydWUgfVxuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIGBIdHRwRXhjZXB0aW9uOiAke3RoaXMuc3RhdHVzfSwgJHt0aGlzLm1ldGFkYXRhLm1lc3NhZ2V9ICgke3RoaXMubWV0YWRhdGEudHlwZX0pYFxuICB9XG59XG5cbi8qKlxuICogVGhyb3cgQmFkUmVxdWVzdEV4Y2VwdGlvbiBpbnNpZGUgQVBJIGVuZHBvaW50cyB0aGF0IHdlcmUgcHJvdmlkZWQgaW5jb3JyZWN0XG4gKiBwYXJhbWV0ZXJzIG9yIGJvZHlcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgXG4gKiBpZiAoYmFkX3NvdXBzLmluY2x1ZGVzKHNvdXBfcGFyYW0pKSB7XG4gKiAgIHRocm93IG5ldyBCYWRSZXF1ZXN0RXhjZXB0aW9uKHtcbiAqICAgICB0eXBlOiBcImNhbnRfbWFrZV9zb3VwXCIsXG4gKiAgICAgbWVzc2FnZTogXCJTb3VwIHdhcyB0b28gZGlmZmljdWx0LCBwbGVhc2Ugc3BlY2lmeSBhIGRpZmZlcmVudCBzb3VwXCIsXG4gKiAgIH0pXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiovXG5leHBvcnQgY2xhc3MgQmFkUmVxdWVzdEV4Y2VwdGlvbiBleHRlbmRzIEh0dHBFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbWV0YWRhdGE6IEh0dHBFeGNlcHRpb25NZXRhZGF0YSxcbiAgICBvcHRpb25zPzogVGhyb3dpbmdPcHRpb25zXG4gICkge1xuICAgIHN1cGVyKDQwMCwgbWV0YWRhdGEsIG9wdGlvbnMpXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVuYXV0aG9yaXplZEV4Y2VwdGlvbiBleHRlbmRzIEh0dHBFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbWV0YWRhdGE6IEh0dHBFeGNlcHRpb25NZXRhZGF0YSxcbiAgICBvcHRpb25zPzogVGhyb3dpbmdPcHRpb25zXG4gICkge1xuICAgIHN1cGVyKDQwMSwgbWV0YWRhdGEsIG9wdGlvbnMpXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdEZvdW5kRXhjZXB0aW9uIGV4dGVuZHMgSHR0cEV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBtZXRhZGF0YTogSHR0cEV4Y2VwdGlvbk1ldGFkYXRhLFxuICAgIG9wdGlvbnM/OiBUaHJvd2luZ09wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoNDA0LCBtZXRhZGF0YSwgb3B0aW9ucylcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWV0aG9kTm90QWxsb3dlZEV4Y2VwdGlvbiBleHRlbmRzIEh0dHBFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbWV0YWRhdGE6IEh0dHBFeGNlcHRpb25NZXRhZGF0YSxcbiAgICBvcHRpb25zPzogVGhyb3dpbmdPcHRpb25zXG4gICkge1xuICAgIHN1cGVyKDQwNSwgbWV0YWRhdGEsIG9wdGlvbnMpXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludGVybmFsU2VydmVyRXJyb3JFeGNlcHRpb24gZXh0ZW5kcyBIdHRwRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG1ldGFkYXRhOiBIdHRwRXhjZXB0aW9uTWV0YWRhdGEsXG4gICAgb3B0aW9ucz86IFRocm93aW5nT3B0aW9uc1xuICApIHtcbiAgICBzdXBlcig1MDAsIG1ldGFkYXRhLCBvcHRpb25zKVxuICB9XG59XG4iLCAiaW1wb3J0IHsgTmV4dEFwaVJlcXVlc3QsIE5leHRBcGlSZXNwb25zZSB9IGZyb20gXCJuZXh0XCJcbmltcG9ydCB7IEh0dHBFeGNlcHRpb24gfSBmcm9tIFwiLi9odHRwLWV4Y2VwdGlvbnNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhFeGNlcHRpb25IYW5kbGluZ09wdGlvbnMge1xuICBnZXRFcnJvckNvbnRleHQ/OiAoXG4gICAgcmVxOiBOZXh0QXBpUmVxdWVzdCxcbiAgICBlcnJvcjogRXJyb3JcbiAgKSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxufVxuXG5jb25zdCB3aXRoRXhjZXB0aW9uSGFuZGxpbmcgPVxuICAob3B0aW9uczogV2l0aEV4Y2VwdGlvbkhhbmRsaW5nT3B0aW9ucyA9IHt9KSA9PlxuICAobmV4dDogKHJlcTogTmV4dEFwaVJlcXVlc3QsIHJlczogTmV4dEFwaVJlc3BvbnNlKSA9PiBQcm9taXNlPHZvaWQ+KSA9PlxuICBhc3luYyAocmVxOiBOZXh0QXBpUmVxdWVzdCwgcmVzOiBOZXh0QXBpUmVzcG9uc2UpID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmV4dChyZXEsIHJlcylcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgbGV0IGVycm9yQ29udGV4dDogYW55ID0ge31cblxuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgZXJyb3JDb250ZXh0LnN0YWNrID0gZXJyb3Iuc3RhY2tcbiAgICAgIH1cblxuICAgICAgZXJyb3JDb250ZXh0ID0gb3B0aW9ucy5nZXRFcnJvckNvbnRleHRcbiAgICAgICAgPyBvcHRpb25zLmdldEVycm9yQ29udGV4dChyZXEsIGVycm9yQ29udGV4dClcbiAgICAgICAgOiBlcnJvckNvbnRleHRcblxuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEV4Y2VwdGlvbikge1xuICAgICAgICBpZiAoZXJyb3Iub3B0aW9ucy5qc29uKSB7XG4gICAgICAgICAgcmVzLnN0YXR1cyhlcnJvci5zdGF0dXMpLmpzb24oe1xuICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgLi4uZXJyb3IubWV0YWRhdGEsXG4gICAgICAgICAgICAgIC4uLmVycm9yQ29udGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXMuc3RhdHVzKGVycm9yLnN0YXR1cykuZW5kKGVycm9yLm1ldGFkYXRhLm1lc3NhZ2UpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZEVycm9yID0gbmV3IEh0dHBFeGNlcHRpb24oNTAwLCB7XG4gICAgICAgICAgdHlwZTogXCJpbnRlcm5hbF9zZXJ2ZXJfZXJyb3JcIixcbiAgICAgICAgICBtZXNzYWdlOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwiLFxuICAgICAgICB9KVxuXG4gICAgICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtcbiAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgLi4uZm9ybWF0dGVkRXJyb3IubWV0YWRhdGEsXG4gICAgICAgICAgICAuLi5lcnJvckNvbnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhFeGNlcHRpb25IYW5kbGluZ1xuIiwgImltcG9ydCB7IE5leHRBcGlSZXF1ZXN0LCBOZXh0QXBpUmVzcG9uc2UgfSBmcm9tIFwibmV4dFwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aE9rU3RhdHVzT3B0aW9ucyB7XG4gIGFkZElmPzogKHJlcTogTmV4dEFwaVJlcXVlc3QpID0+IGJvb2xlYW5cbn1cblxuY29uc3Qgd2l0aE9rU3RhdHVzID1cbiAgKG9wdGlvbnM6IFdpdGhPa1N0YXR1c09wdGlvbnMgPSB7fSkgPT5cbiAgKG5leHQ6IChyZXE6IE5leHRBcGlSZXF1ZXN0LCByZXM6IE5leHRBcGlSZXNwb25zZSkgPT4gUHJvbWlzZTx2b2lkPikgPT5cbiAgYXN5bmMgKHJlcTogTmV4dEFwaVJlcXVlc3QsIHJlczogTmV4dEFwaVJlc3BvbnNlKSA9PiB7XG4gICAgLy8gUGF0Y2ggLmpzb24oKVxuICAgIGNvbnN0IG9yaWdpbmFsSnNvbiA9IHJlcy5qc29uXG5cbiAgICByZXMuanNvbiA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBjb25zdCBvayA9IHJlcy5zdGF0dXNDb2RlID49IDIwMCAmJiByZXMuc3RhdHVzQ29kZSA8IDMwMFxuICAgICAgY29uc3Qgc2hvdWxkSW5jbHVkZVN0YXR1cyA9IG9wdGlvbnMuYWRkSWYgPyBvcHRpb25zLmFkZElmKHJlcSkgOiB0cnVlXG5cbiAgICAgIGlmIChzaG91bGRJbmNsdWRlU3RhdHVzKSB7XG4gICAgICAgIG9yaWdpbmFsSnNvbi5jYWxsKHRoaXMsIHtcbiAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgIG9rLFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3JpZ2luYWxKc29uLmNhbGwodGhpcywgZGF0YSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCBuZXh0KHJlcSwgcmVzKVxuICB9XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhPa1N0YXR1c1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsK0JBQUFBO0FBQUE7QUFBQTs7O0FD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LEdBQUc7QUFBQSxRQUNIO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxPQUFPO0FBQ0wsbUJBQWEsS0FBSyxNQUFNLElBQUk7QUFBQSxJQUM5QjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLEtBQUssS0FBSyxHQUFHO0FBQ3JCO0FBRUYsSUFBTyx5QkFBUTs7O0FIbEJSLElBQU1DLHlCQUNYLENBQUM7QUFBQSxFQUNDLGNBQWM7QUFBQSxFQUNkO0FBQUEsRUFDQTtBQUNGLElBQThCLENBQUMsTUFDL0IsQ0FBQyxTQUNELENBQUMsS0FBcUIsUUFBeUI7QUFDN0MsTUFBSSxhQUFhO0FBQ2YsV0FBTyx1QkFBYSxlQUFlO0FBQUEsTUFDakMsZ0NBQStCLHdCQUF3QixFQUFFLElBQUk7QUFBQSxJQUMvRCxFQUFFLEtBQUssR0FBRztBQUFBLEVBQ1o7QUFFQSxTQUFPLGdDQUErQix3QkFBd0IsRUFBRSxJQUFJO0FBQUEsSUFDbEU7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogWyJ3aXRoRXhjZXB0aW9uSGFuZGxpbmciLCAid2l0aEV4Y2VwdGlvbkhhbmRsaW5nIl0KfQo=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BadRequestException,
|
|
3
|
+
HttpException,
|
|
4
|
+
InternalServerErrorException,
|
|
5
|
+
MethodNotAllowedException,
|
|
6
|
+
NotFoundException,
|
|
7
|
+
UnauthorizedException,
|
|
8
|
+
withExceptionHandling
|
|
9
|
+
} from "../chunk-7JYJ5SIL.mjs";
|
|
10
|
+
import "../chunk-2HL2TLDY.mjs";
|
|
11
|
+
export {
|
|
12
|
+
BadRequestException,
|
|
13
|
+
HttpException,
|
|
14
|
+
InternalServerErrorException,
|
|
15
|
+
MethodNotAllowedException,
|
|
16
|
+
NotFoundException,
|
|
17
|
+
UnauthorizedException,
|
|
18
|
+
withExceptionHandling
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFtdLAogICJzb3VyY2VzQ29udGVudCI6IFtdLAogICJtYXBwaW5ncyI6ICIiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./dist/nextjs-exception-middleware"
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nextlove",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"repository": "https://github.com/seamapi/nextlove",
|
|
6
6
|
"files": [
|
|
7
7
|
"dist",
|
|
8
|
-
"generators.d.ts"
|
|
8
|
+
"generators.d.ts",
|
|
9
|
+
"exception-middleware.d.ts"
|
|
9
10
|
],
|
|
10
11
|
"publishConfig": {
|
|
11
12
|
"access": "public",
|
|
@@ -28,50 +29,59 @@
|
|
|
28
29
|
"types": "./dist/generators/index.d.ts",
|
|
29
30
|
"import": "./dist/generators/index.mjs",
|
|
30
31
|
"require": "./dist/generators/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./exception-middleware": {
|
|
34
|
+
"types": "./dist/nextjs-exception-middleware/index.d.ts",
|
|
35
|
+
"import": "./dist/nextjs-exception-middleware/index.mjs",
|
|
36
|
+
"require": "./dist/nextjs-exception-middleware/index.js"
|
|
31
37
|
}
|
|
32
38
|
},
|
|
33
39
|
"scripts": {
|
|
34
|
-
"test": "npm run typecheck",
|
|
40
|
+
"test": "npm run typecheck && npm run ava",
|
|
35
41
|
"typecheck": "tsc --noEmit",
|
|
36
|
-
"
|
|
42
|
+
"ava": "ava",
|
|
43
|
+
"build": "tsup --dts --sourcemap inline src/index.ts src/generators/index.ts src/nextjs-exception-middleware/index.ts --format cjs,esm",
|
|
37
44
|
"yalc": "npm run build && yalc push"
|
|
38
45
|
},
|
|
39
46
|
"peerDependencies": {
|
|
40
47
|
"esbuild-register": ">=3",
|
|
41
48
|
"next": ">=12",
|
|
49
|
+
"nextjs-server-modules": ">=1",
|
|
50
|
+
"prettier": "^2.0.0 || ^3.0.0",
|
|
42
51
|
"react": ">=18",
|
|
43
52
|
"react-dom": ">=18",
|
|
44
|
-
"
|
|
45
|
-
"zod": "^3.0.0",
|
|
46
|
-
"prettier": "^2.0.0 || ^3.0.0"
|
|
53
|
+
"zod": "^3.0.0"
|
|
47
54
|
},
|
|
48
55
|
"dependencies": {
|
|
49
|
-
"@anatine/zod-openapi": "^2.0.1",
|
|
50
56
|
"lodash": "^4.17.21",
|
|
51
|
-
"nextjs-exception-middleware": "^2.0.1",
|
|
52
57
|
"nextjs-middleware-wrappers": "^1.3.0",
|
|
53
58
|
"openapi3-ts": "^4.1.2",
|
|
54
59
|
"zod-to-ts": "^1.1.4"
|
|
55
60
|
},
|
|
56
61
|
"devDependencies": {
|
|
62
|
+
"@anatine/zod-openapi": "^2.0.1",
|
|
57
63
|
"@types/lodash": "^4.14.182",
|
|
58
64
|
"@types/node": "18.0.0",
|
|
59
65
|
"@types/prettier": "^2.7.1",
|
|
60
|
-
"@types/react": "18.0.14",
|
|
61
66
|
"@types/react-dom": "18.0.5",
|
|
67
|
+
"@types/react": "18.0.14",
|
|
68
|
+
"@types/sinon": "10.0.8",
|
|
69
|
+
"ava": "^5.3.1",
|
|
62
70
|
"chalk": "^5.3.0",
|
|
63
|
-
"esbuild": "^0.14.7",
|
|
64
71
|
"esbuild-register": "^3.3.3",
|
|
65
72
|
"esbuild-runner": "^2.2.1",
|
|
66
|
-
"
|
|
73
|
+
"esbuild": "^0.14.7",
|
|
67
74
|
"eslint-config-next": "12.2.0",
|
|
75
|
+
"eslint": "8.18.0",
|
|
68
76
|
"expect-type": "^0.15.0",
|
|
77
|
+
"globby": "^13.2.2",
|
|
69
78
|
"next": "12.2.0",
|
|
70
79
|
"nextjs-middleware-wrappers": "^1.3.0",
|
|
71
80
|
"nextjs-server-modules": "^2.1.0",
|
|
72
81
|
"prettier": "^2.7.1",
|
|
73
|
-
"react": "18.2.0",
|
|
74
82
|
"react-dom": "18.2.0",
|
|
83
|
+
"react": "18.2.0",
|
|
84
|
+
"sinon": "^15.2.0",
|
|
75
85
|
"ts-toolbelt": "^9.6.0",
|
|
76
86
|
"tsup": "^5.6.3",
|
|
77
87
|
"turbo": "^1.3.1",
|