princejs 1.8.3 → 1.8.4
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/Readme.md +0 -2
- package/dist/middleware.d.ts +13 -1
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +52 -8
- package/package.json +1 -1
package/Readme.md
CHANGED
package/dist/middleware.d.ts
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
import type { PrinceRequest } from "./prince";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
type Next = () => Promise<Response | undefined>;
|
|
4
|
+
export interface LoggerOptions {
|
|
5
|
+
enabled?: boolean;
|
|
6
|
+
errorsOnly?: boolean;
|
|
7
|
+
logHeaders?: boolean;
|
|
8
|
+
logBody?: boolean;
|
|
9
|
+
formatter?: (data: {
|
|
10
|
+
req: PrinceRequest;
|
|
11
|
+
res?: Response;
|
|
12
|
+
duration: number;
|
|
13
|
+
error?: any;
|
|
14
|
+
}) => void;
|
|
15
|
+
}
|
|
16
|
+
export declare const logger: (options?: LoggerOptions) => (req: PrinceRequest, next: Next) => Promise<Response | undefined>;
|
|
4
17
|
export declare const cors: (origin?: string) => (req: any, next: Function) => Promise<any>;
|
|
5
|
-
export declare const logger: () => (req: PrinceRequest, next: Next) => Promise<Response | undefined>;
|
|
6
18
|
export declare const signJWT: (payload: any, secret: Uint8Array, expiresIn: string) => Promise<string>;
|
|
7
19
|
export declare const jwt: (key: Uint8Array) => (req: PrinceRequest, next: Next) => Promise<Response | undefined>;
|
|
8
20
|
export declare const rateLimit: (max: number, window?: number) => (req: PrinceRequest, next: Next) => Promise<Response | undefined>;
|
package/dist/middleware.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,KAAK,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,KAAK,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;AAGhD,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QACjB,GAAG,EAAE,aAAa,CAAC;QACnB,GAAG,CAAC,EAAE,QAAQ,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,GAAG,CAAC;KACb,KAAK,IAAI,CAAC;CACZ;AAED,eAAO,MAAM,MAAM,GAAI,UAAS,aAAkB,MASlC,KAAK,aAAa,EAAE,MAAM,IAAI,kCAqD7C,CAAC;AAGF,eAAO,MAAM,IAAI,GAAI,SAAQ,MAAY,MACzB,KAAK,GAAG,EAAE,MAAM,QAAQ,iBA+BvC,CAAC;AAGF,eAAO,MAAM,OAAO,GAAU,SAAS,GAAG,EAAE,QAAQ,UAAU,EAAE,WAAW,MAAM,oBAQhF,CAAC;AAEF,eAAO,MAAM,GAAG,GAAI,KAAK,UAAU,MACnB,KAAK,aAAa,EAAE,MAAM,IAAI,kCAuB7C,CAAC;AAGF,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,EAAE,eAAW,MAGlC,KAAK,aAAa,EAAE,MAAM,IAAI,kCAqC7C,CAAC;AAGF,eAAO,MAAM,QAAQ,GAAI,QAAQ,CAAC,CAAC,SAAS,MAC5B,KAAK,GAAG,EAAE,MAAM,QAAQ,iBAyEvC,CAAC;AAGF,eAAO,MAAM,IAAI,GAAI,UAAU;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,MACnC,KAAK,aAAa,EAAE,MAAM,IAAI,kCAwB7C,CAAC;AAGF,eAAO,MAAM,MAAM,GAAI,SAAS;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,MAInD,KAAK,aAAa,EAAE,MAAM,IAAI,kCAa7C,CAAC;AAGF,eAAO,MAAM,QAAQ,GAAI,UAAU;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC;CAC1C,MAIe,KAAK,aAAa,EAAE,MAAM,IAAI,kCAqC7C,CAAC;AAGF,eAAO,MAAM,OAAO,GAAI,SAAS;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,MAce,KAAK,aAAa,EAAE,MAAM,IAAI,kCA+C7C,CAAC"}
|
package/dist/middleware.js
CHANGED
|
@@ -1343,6 +1343,58 @@ class SignJWT {
|
|
|
1343
1343
|
}
|
|
1344
1344
|
}
|
|
1345
1345
|
// src/middleware.ts
|
|
1346
|
+
var logger = (options = {}) => {
|
|
1347
|
+
const {
|
|
1348
|
+
enabled = true,
|
|
1349
|
+
errorsOnly = false,
|
|
1350
|
+
logHeaders = false,
|
|
1351
|
+
logBody = false,
|
|
1352
|
+
formatter
|
|
1353
|
+
} = options;
|
|
1354
|
+
return async (req, next) => {
|
|
1355
|
+
if (!enabled)
|
|
1356
|
+
return next();
|
|
1357
|
+
const start = Date.now();
|
|
1358
|
+
try {
|
|
1359
|
+
const res = await next();
|
|
1360
|
+
const duration = Date.now() - start;
|
|
1361
|
+
if (errorsOnly && res.status < 400) {
|
|
1362
|
+
return res;
|
|
1363
|
+
}
|
|
1364
|
+
if (formatter) {
|
|
1365
|
+
formatter({ req, res, duration });
|
|
1366
|
+
return res;
|
|
1367
|
+
}
|
|
1368
|
+
const log = {
|
|
1369
|
+
method: req.method,
|
|
1370
|
+
path: new URL(req.url).pathname,
|
|
1371
|
+
status: res.status,
|
|
1372
|
+
duration: `${duration}ms`
|
|
1373
|
+
};
|
|
1374
|
+
if (logHeaders) {
|
|
1375
|
+
log.headers = Object.fromEntries(req.headers.entries());
|
|
1376
|
+
}
|
|
1377
|
+
if (logBody && req.body) {
|
|
1378
|
+
log.body = req.body;
|
|
1379
|
+
}
|
|
1380
|
+
console.log(log);
|
|
1381
|
+
return res;
|
|
1382
|
+
} catch (error) {
|
|
1383
|
+
const duration = Date.now() - start;
|
|
1384
|
+
if (formatter) {
|
|
1385
|
+
formatter({ req, duration, error });
|
|
1386
|
+
} else {
|
|
1387
|
+
console.error({
|
|
1388
|
+
method: req.method,
|
|
1389
|
+
path: new URL(req.url).pathname,
|
|
1390
|
+
error: String(error),
|
|
1391
|
+
duration: `${duration}ms`
|
|
1392
|
+
});
|
|
1393
|
+
}
|
|
1394
|
+
throw error;
|
|
1395
|
+
}
|
|
1396
|
+
};
|
|
1397
|
+
};
|
|
1346
1398
|
var cors = (origin = "*") => {
|
|
1347
1399
|
return async (req, next) => {
|
|
1348
1400
|
if (req.method === "OPTIONS") {
|
|
@@ -1371,14 +1423,6 @@ var cors = (origin = "*") => {
|
|
|
1371
1423
|
return response;
|
|
1372
1424
|
};
|
|
1373
1425
|
};
|
|
1374
|
-
var logger = () => {
|
|
1375
|
-
return async (req, next) => {
|
|
1376
|
-
const start = Date.now();
|
|
1377
|
-
const res = await next();
|
|
1378
|
-
console.log(`${req.method} ${new URL(req.url).pathname} ${res?.status} ${Date.now() - start}ms`);
|
|
1379
|
-
return res;
|
|
1380
|
-
};
|
|
1381
|
-
};
|
|
1382
1426
|
var signJWT = async (payload, secret, expiresIn) => {
|
|
1383
1427
|
const jwt = await new SignJWT(payload).setProtectedHeader({ alg: "HS256" }).setIssuedAt().setExpirationTime(expiresIn).sign(secret);
|
|
1384
1428
|
return jwt;
|
package/package.json
CHANGED