@easydocs/nextjs 0.4.2 → 0.5.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/index.cjs +12 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +13 -12
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -26,6 +26,7 @@ __export(index_exports, {
|
|
|
26
26
|
module.exports = __toCommonJS(index_exports);
|
|
27
27
|
var import_core = require("@easydocs/core");
|
|
28
28
|
function withEasydocs(handler, config) {
|
|
29
|
+
const parsedConfig = (0, import_core.parseConfig)(config);
|
|
29
30
|
return async (req, ctx) => {
|
|
30
31
|
const startedAt = Date.now();
|
|
31
32
|
const response = await handler(req, ctx);
|
|
@@ -46,42 +47,42 @@ function withEasydocs(handler, config) {
|
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
(0, import_core.capture)(
|
|
49
|
-
{
|
|
50
|
+
(0, import_core.buildCaptureEvent)({
|
|
50
51
|
method: req.method,
|
|
51
52
|
path: req.nextUrl.pathname,
|
|
52
53
|
query: Object.fromEntries(req.nextUrl.searchParams.entries()),
|
|
53
54
|
params: resolvedParams,
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
requestBody,
|
|
56
|
+
responseBody,
|
|
56
57
|
status: response.status,
|
|
57
58
|
requestHeaders: Object.fromEntries(req.headers.entries()),
|
|
58
59
|
responseHeaders: Object.fromEntries(response.headers.entries()),
|
|
59
60
|
durationMs: Date.now() - startedAt
|
|
60
|
-
},
|
|
61
|
-
|
|
61
|
+
}),
|
|
62
|
+
parsedConfig
|
|
62
63
|
);
|
|
63
64
|
return response;
|
|
64
65
|
};
|
|
65
66
|
}
|
|
66
67
|
function withEasydocsPagesHandler(handler, config) {
|
|
68
|
+
const parsedConfig = (0, import_core.parseConfig)(config);
|
|
67
69
|
return async (req, res) => {
|
|
68
70
|
const startedAt = Date.now();
|
|
69
71
|
const originalJson = res.json.bind(res);
|
|
70
72
|
res.json = function(body) {
|
|
71
73
|
(0, import_core.capture)(
|
|
72
|
-
{
|
|
74
|
+
(0, import_core.buildCaptureEvent)({
|
|
73
75
|
method: req.method ?? "GET",
|
|
74
76
|
path: req.url?.split("?")[0] ?? "/",
|
|
75
77
|
query: req.query,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
response: body,
|
|
78
|
+
requestBody: req.body,
|
|
79
|
+
responseBody: body,
|
|
79
80
|
status: res.statusCode,
|
|
80
81
|
requestHeaders: req.headers,
|
|
81
82
|
responseHeaders: res.getHeaders(),
|
|
82
83
|
durationMs: Date.now() - startedAt
|
|
83
|
-
},
|
|
84
|
-
|
|
84
|
+
}),
|
|
85
|
+
parsedConfig
|
|
85
86
|
);
|
|
86
87
|
return originalJson(body);
|
|
87
88
|
};
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { capture } from '@easydocs/core'\nimport type { EasyDocsConfig
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { capture, parseConfig, buildCaptureEvent } from '@easydocs/core'\nimport type { EasyDocsConfig } from '@easydocs/core'\n\n// ─── Local structural types (avoid importing from next at build time) ──────────\n\ninterface NextURL {\n pathname: string\n searchParams: URLSearchParams\n}\n\ninterface NextRequestLike {\n method: string\n nextUrl: NextURL\n headers: Headers\n clone(): { json(): Promise<unknown> }\n}\n\ninterface NextApiRequestLike {\n method?: string\n url?: string\n query: Record<string, string | string[]>\n body: unknown\n headers: Record<string, string | string[] | undefined>\n}\n\ninterface NextApiResponseLike {\n statusCode: number\n json: (body: unknown) => NextApiResponseLike\n getHeaders(): Record<string, string | string[] | number | undefined>\n}\n\n// ─── App Router ───────────────────────────────────────────────────────────────\n\ntype AppRouterContext = { params?: Promise<Record<string, string>> | Record<string, string> }\ntype AppRouterHandler = (req: NextRequestLike, ctx?: AppRouterContext) => Promise<Response> | Response\n\nexport function withEasydocs(handler: AppRouterHandler, config?: EasyDocsConfig): AppRouterHandler {\n const parsedConfig = parseConfig(config)\n return async (req, ctx) => {\n const startedAt = Date.now()\n const response = await handler(req, ctx)\n\n let responseBody: unknown = null\n try {\n responseBody = await response.clone().json()\n } catch {\n // non-JSON response\n }\n\n let resolvedParams: Record<string, string> = {}\n if (ctx?.params) {\n resolvedParams =\n ctx.params instanceof Promise ? await ctx.params : (ctx.params as Record<string, string>)\n }\n\n let requestBody: unknown = null\n if (req.method !== 'GET' && req.method !== 'HEAD') {\n try {\n requestBody = await req.clone().json()\n } catch {\n // non-JSON body\n }\n }\n\n capture(\n buildCaptureEvent({\n method: req.method,\n path: req.nextUrl.pathname,\n query: Object.fromEntries(req.nextUrl.searchParams.entries()),\n params: resolvedParams,\n requestBody,\n responseBody,\n status: response.status,\n requestHeaders: Object.fromEntries(req.headers.entries()),\n responseHeaders: Object.fromEntries(response.headers.entries()),\n durationMs: Date.now() - startedAt,\n }),\n parsedConfig\n )\n\n return response\n }\n}\n\n// ─── Pages Router ─────────────────────────────────────────────────────────────\n\ntype PagesHandler = (req: NextApiRequestLike, res: NextApiResponseLike) => void | Promise<void>\n\nexport function withEasydocsPagesHandler(\n handler: PagesHandler,\n config?: EasyDocsConfig\n): PagesHandler {\n const parsedConfig = parseConfig(config)\n return async (req, res) => {\n const startedAt = Date.now()\n const originalJson = res.json.bind(res)\n\n res.json = function (body: unknown) {\n capture(\n buildCaptureEvent({\n method: req.method ?? 'GET',\n path: req.url?.split('?')[0] ?? '/',\n query: req.query as Record<string, unknown>,\n requestBody: req.body,\n responseBody: body,\n status: res.statusCode,\n requestHeaders: req.headers as Record<string, unknown>,\n responseHeaders: res.getHeaders() as Record<string, unknown>,\n durationMs: Date.now() - startedAt,\n }),\n parsedConfig\n )\n return originalJson(body)\n }\n\n await handler(req, res)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAwD;AAoCjD,SAAS,aAAa,SAA2B,QAA2C;AACjG,QAAM,mBAAe,yBAAY,MAAM;AACvC,SAAO,OAAO,KAAK,QAAQ;AACzB,UAAM,YAAY,KAAK,IAAI;AAC3B,UAAM,WAAW,MAAM,QAAQ,KAAK,GAAG;AAEvC,QAAI,eAAwB;AAC5B,QAAI;AACF,qBAAe,MAAM,SAAS,MAAM,EAAE,KAAK;AAAA,IAC7C,QAAQ;AAAA,IAER;AAEA,QAAI,iBAAyC,CAAC;AAC9C,QAAI,KAAK,QAAQ;AACf,uBACE,IAAI,kBAAkB,UAAU,MAAM,IAAI,SAAU,IAAI;AAAA,IAC5D;AAEA,QAAI,cAAuB;AAC3B,QAAI,IAAI,WAAW,SAAS,IAAI,WAAW,QAAQ;AACjD,UAAI;AACF,sBAAc,MAAM,IAAI,MAAM,EAAE,KAAK;AAAA,MACvC,QAAQ;AAAA,MAER;AAAA,IACF;AAEA;AAAA,UACE,+BAAkB;AAAA,QAChB,QAAQ,IAAI;AAAA,QACZ,MAAM,IAAI,QAAQ;AAAA,QAClB,OAAO,OAAO,YAAY,IAAI,QAAQ,aAAa,QAAQ,CAAC;AAAA,QAC5D,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA,QAAQ,SAAS;AAAA,QACjB,gBAAgB,OAAO,YAAY,IAAI,QAAQ,QAAQ,CAAC;AAAA,QACxD,iBAAiB,OAAO,YAAY,SAAS,QAAQ,QAAQ,CAAC;AAAA,QAC9D,YAAY,KAAK,IAAI,IAAI;AAAA,MAC3B,CAAC;AAAA,MACD;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;AAMO,SAAS,yBACd,SACA,QACc;AACd,QAAM,mBAAe,yBAAY,MAAM;AACvC,SAAO,OAAO,KAAK,QAAQ;AACzB,UAAM,YAAY,KAAK,IAAI;AAC3B,UAAM,eAAe,IAAI,KAAK,KAAK,GAAG;AAEtC,QAAI,OAAO,SAAU,MAAe;AAClC;AAAA,YACE,+BAAkB;AAAA,UAChB,QAAQ,IAAI,UAAU;AAAA,UACtB,MAAM,IAAI,KAAK,MAAM,GAAG,EAAE,CAAC,KAAK;AAAA,UAChC,OAAO,IAAI;AAAA,UACX,aAAa,IAAI;AAAA,UACjB,cAAc;AAAA,UACd,QAAQ,IAAI;AAAA,UACZ,gBAAgB,IAAI;AAAA,UACpB,iBAAiB,IAAI,WAAW;AAAA,UAChC,YAAY,KAAK,IAAI,IAAI;AAAA,QAC3B,CAAC;AAAA,QACD;AAAA,MACF;AACA,aAAO,aAAa,IAAI;AAAA,IAC1B;AAEA,UAAM,QAAQ,KAAK,GAAG;AAAA,EACxB;AACF;","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
import { capture } from "@easydocs/core";
|
|
2
|
+
import { capture, parseConfig, buildCaptureEvent } from "@easydocs/core";
|
|
3
3
|
function withEasydocs(handler, config) {
|
|
4
|
+
const parsedConfig = parseConfig(config);
|
|
4
5
|
return async (req, ctx) => {
|
|
5
6
|
const startedAt = Date.now();
|
|
6
7
|
const response = await handler(req, ctx);
|
|
@@ -21,42 +22,42 @@ function withEasydocs(handler, config) {
|
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
capture(
|
|
24
|
-
{
|
|
25
|
+
buildCaptureEvent({
|
|
25
26
|
method: req.method,
|
|
26
27
|
path: req.nextUrl.pathname,
|
|
27
28
|
query: Object.fromEntries(req.nextUrl.searchParams.entries()),
|
|
28
29
|
params: resolvedParams,
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
requestBody,
|
|
31
|
+
responseBody,
|
|
31
32
|
status: response.status,
|
|
32
33
|
requestHeaders: Object.fromEntries(req.headers.entries()),
|
|
33
34
|
responseHeaders: Object.fromEntries(response.headers.entries()),
|
|
34
35
|
durationMs: Date.now() - startedAt
|
|
35
|
-
},
|
|
36
|
-
|
|
36
|
+
}),
|
|
37
|
+
parsedConfig
|
|
37
38
|
);
|
|
38
39
|
return response;
|
|
39
40
|
};
|
|
40
41
|
}
|
|
41
42
|
function withEasydocsPagesHandler(handler, config) {
|
|
43
|
+
const parsedConfig = parseConfig(config);
|
|
42
44
|
return async (req, res) => {
|
|
43
45
|
const startedAt = Date.now();
|
|
44
46
|
const originalJson = res.json.bind(res);
|
|
45
47
|
res.json = function(body) {
|
|
46
48
|
capture(
|
|
47
|
-
{
|
|
49
|
+
buildCaptureEvent({
|
|
48
50
|
method: req.method ?? "GET",
|
|
49
51
|
path: req.url?.split("?")[0] ?? "/",
|
|
50
52
|
query: req.query,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
response: body,
|
|
53
|
+
requestBody: req.body,
|
|
54
|
+
responseBody: body,
|
|
54
55
|
status: res.statusCode,
|
|
55
56
|
requestHeaders: req.headers,
|
|
56
57
|
responseHeaders: res.getHeaders(),
|
|
57
58
|
durationMs: Date.now() - startedAt
|
|
58
|
-
},
|
|
59
|
-
|
|
59
|
+
}),
|
|
60
|
+
parsedConfig
|
|
60
61
|
);
|
|
61
62
|
return originalJson(body);
|
|
62
63
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { capture } from '@easydocs/core'\nimport type { EasyDocsConfig
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { capture, parseConfig, buildCaptureEvent } from '@easydocs/core'\nimport type { EasyDocsConfig } from '@easydocs/core'\n\n// ─── Local structural types (avoid importing from next at build time) ──────────\n\ninterface NextURL {\n pathname: string\n searchParams: URLSearchParams\n}\n\ninterface NextRequestLike {\n method: string\n nextUrl: NextURL\n headers: Headers\n clone(): { json(): Promise<unknown> }\n}\n\ninterface NextApiRequestLike {\n method?: string\n url?: string\n query: Record<string, string | string[]>\n body: unknown\n headers: Record<string, string | string[] | undefined>\n}\n\ninterface NextApiResponseLike {\n statusCode: number\n json: (body: unknown) => NextApiResponseLike\n getHeaders(): Record<string, string | string[] | number | undefined>\n}\n\n// ─── App Router ───────────────────────────────────────────────────────────────\n\ntype AppRouterContext = { params?: Promise<Record<string, string>> | Record<string, string> }\ntype AppRouterHandler = (req: NextRequestLike, ctx?: AppRouterContext) => Promise<Response> | Response\n\nexport function withEasydocs(handler: AppRouterHandler, config?: EasyDocsConfig): AppRouterHandler {\n const parsedConfig = parseConfig(config)\n return async (req, ctx) => {\n const startedAt = Date.now()\n const response = await handler(req, ctx)\n\n let responseBody: unknown = null\n try {\n responseBody = await response.clone().json()\n } catch {\n // non-JSON response\n }\n\n let resolvedParams: Record<string, string> = {}\n if (ctx?.params) {\n resolvedParams =\n ctx.params instanceof Promise ? await ctx.params : (ctx.params as Record<string, string>)\n }\n\n let requestBody: unknown = null\n if (req.method !== 'GET' && req.method !== 'HEAD') {\n try {\n requestBody = await req.clone().json()\n } catch {\n // non-JSON body\n }\n }\n\n capture(\n buildCaptureEvent({\n method: req.method,\n path: req.nextUrl.pathname,\n query: Object.fromEntries(req.nextUrl.searchParams.entries()),\n params: resolvedParams,\n requestBody,\n responseBody,\n status: response.status,\n requestHeaders: Object.fromEntries(req.headers.entries()),\n responseHeaders: Object.fromEntries(response.headers.entries()),\n durationMs: Date.now() - startedAt,\n }),\n parsedConfig\n )\n\n return response\n }\n}\n\n// ─── Pages Router ─────────────────────────────────────────────────────────────\n\ntype PagesHandler = (req: NextApiRequestLike, res: NextApiResponseLike) => void | Promise<void>\n\nexport function withEasydocsPagesHandler(\n handler: PagesHandler,\n config?: EasyDocsConfig\n): PagesHandler {\n const parsedConfig = parseConfig(config)\n return async (req, res) => {\n const startedAt = Date.now()\n const originalJson = res.json.bind(res)\n\n res.json = function (body: unknown) {\n capture(\n buildCaptureEvent({\n method: req.method ?? 'GET',\n path: req.url?.split('?')[0] ?? '/',\n query: req.query as Record<string, unknown>,\n requestBody: req.body,\n responseBody: body,\n status: res.statusCode,\n requestHeaders: req.headers as Record<string, unknown>,\n responseHeaders: res.getHeaders() as Record<string, unknown>,\n durationMs: Date.now() - startedAt,\n }),\n parsedConfig\n )\n return originalJson(body)\n }\n\n await handler(req, res)\n }\n}\n"],"mappings":";AAAA,SAAS,SAAS,aAAa,yBAAyB;AAoCjD,SAAS,aAAa,SAA2B,QAA2C;AACjG,QAAM,eAAe,YAAY,MAAM;AACvC,SAAO,OAAO,KAAK,QAAQ;AACzB,UAAM,YAAY,KAAK,IAAI;AAC3B,UAAM,WAAW,MAAM,QAAQ,KAAK,GAAG;AAEvC,QAAI,eAAwB;AAC5B,QAAI;AACF,qBAAe,MAAM,SAAS,MAAM,EAAE,KAAK;AAAA,IAC7C,QAAQ;AAAA,IAER;AAEA,QAAI,iBAAyC,CAAC;AAC9C,QAAI,KAAK,QAAQ;AACf,uBACE,IAAI,kBAAkB,UAAU,MAAM,IAAI,SAAU,IAAI;AAAA,IAC5D;AAEA,QAAI,cAAuB;AAC3B,QAAI,IAAI,WAAW,SAAS,IAAI,WAAW,QAAQ;AACjD,UAAI;AACF,sBAAc,MAAM,IAAI,MAAM,EAAE,KAAK;AAAA,MACvC,QAAQ;AAAA,MAER;AAAA,IACF;AAEA;AAAA,MACE,kBAAkB;AAAA,QAChB,QAAQ,IAAI;AAAA,QACZ,MAAM,IAAI,QAAQ;AAAA,QAClB,OAAO,OAAO,YAAY,IAAI,QAAQ,aAAa,QAAQ,CAAC;AAAA,QAC5D,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA,QAAQ,SAAS;AAAA,QACjB,gBAAgB,OAAO,YAAY,IAAI,QAAQ,QAAQ,CAAC;AAAA,QACxD,iBAAiB,OAAO,YAAY,SAAS,QAAQ,QAAQ,CAAC;AAAA,QAC9D,YAAY,KAAK,IAAI,IAAI;AAAA,MAC3B,CAAC;AAAA,MACD;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;AAMO,SAAS,yBACd,SACA,QACc;AACd,QAAM,eAAe,YAAY,MAAM;AACvC,SAAO,OAAO,KAAK,QAAQ;AACzB,UAAM,YAAY,KAAK,IAAI;AAC3B,UAAM,eAAe,IAAI,KAAK,KAAK,GAAG;AAEtC,QAAI,OAAO,SAAU,MAAe;AAClC;AAAA,QACE,kBAAkB;AAAA,UAChB,QAAQ,IAAI,UAAU;AAAA,UACtB,MAAM,IAAI,KAAK,MAAM,GAAG,EAAE,CAAC,KAAK;AAAA,UAChC,OAAO,IAAI;AAAA,UACX,aAAa,IAAI;AAAA,UACjB,cAAc;AAAA,UACd,QAAQ,IAAI;AAAA,UACZ,gBAAgB,IAAI;AAAA,UACpB,iBAAiB,IAAI,WAAW;AAAA,UAChC,YAAY,KAAK,IAAI,IAAI;AAAA,QAC3B,CAAC;AAAA,QACD;AAAA,MACF;AACA,aAAO,aAAa,IAAI;AAAA,IAC1B;AAEA,UAAM,QAAQ,KAAK,GAAG;AAAA,EACxB;AACF;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@easydocs/nextjs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist",
|
|
6
6
|
"README.md"
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@easydocs/core": "0.
|
|
21
|
+
"@easydocs/core": "0.5.0"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"next": ">=14.0.0"
|