@easydocs/hono 0.2.0 → 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 CHANGED
@@ -25,31 +25,37 @@ __export(index_exports, {
25
25
  module.exports = __toCommonJS(index_exports);
26
26
  var import_core = require("@easydocs/core");
27
27
  function easydocs(config) {
28
+ const parsedConfig = (0, import_core.parseConfig)(config);
28
29
  return async function easydocsMiddleware(c, next) {
29
30
  const startedAt = Date.now();
30
31
  await next();
31
- let responseBody;
32
+ let responseBody = null;
32
33
  try {
33
34
  responseBody = await c.res.clone().json();
34
35
  } catch {
35
36
  responseBody = null;
36
37
  }
38
+ let requestBody = null;
39
+ try {
40
+ requestBody = await c.req.raw.clone().json();
41
+ } catch {
42
+ requestBody = null;
43
+ }
37
44
  const url = new URL(c.req.url);
38
- const routePath = c.req.routePath ?? url.pathname;
39
45
  (0, import_core.capture)(
40
- {
46
+ (0, import_core.buildCaptureEvent)({
41
47
  method: c.req.method,
42
- path: routePath,
48
+ path: c.req.routePath ?? url.pathname,
43
49
  query: Object.fromEntries(url.searchParams.entries()),
44
50
  params: c.req.param(),
45
- body: await c.req.raw.clone().json().catch(() => null),
46
- response: responseBody,
51
+ requestBody,
52
+ responseBody,
47
53
  status: c.res.status,
48
54
  requestHeaders: Object.fromEntries(c.req.raw.headers.entries()),
49
55
  responseHeaders: Object.fromEntries(c.res.headers.entries()),
50
56
  durationMs: Date.now() - startedAt
51
- },
52
- config
57
+ }),
58
+ parsedConfig
53
59
  );
54
60
  };
55
61
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { capture } from '@easydocs/core'\nimport type { EasyDocsConfig, HttpMethod } from '@easydocs/core'\nimport type { Context, Next } from 'hono'\n\nexport function easydocs(config?: EasyDocsConfig) {\n return async function easydocsMiddleware(c: Context, next: Next) {\n const startedAt = Date.now()\n await next()\n\n let responseBody: unknown\n try {\n responseBody = await c.res.clone().json()\n } catch {\n responseBody = null\n }\n\n const url = new URL(c.req.url)\n const routePath = c.req.routePath ?? url.pathname\n\n capture(\n {\n method: c.req.method as HttpMethod,\n path: routePath,\n query: Object.fromEntries(url.searchParams.entries()),\n params: c.req.param() as Record<string, string>,\n body: await c.req.raw.clone().json().catch(() => null),\n response: responseBody,\n status: c.res.status,\n requestHeaders: Object.fromEntries(c.req.raw.headers.entries()),\n responseHeaders: Object.fromEntries(c.res.headers.entries()),\n durationMs: Date.now() - startedAt,\n },\n config\n )\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAwB;AAIjB,SAAS,SAAS,QAAyB;AAChD,SAAO,eAAe,mBAAmB,GAAY,MAAY;AAC/D,UAAM,YAAY,KAAK,IAAI;AAC3B,UAAM,KAAK;AAEX,QAAI;AACJ,QAAI;AACF,qBAAe,MAAM,EAAE,IAAI,MAAM,EAAE,KAAK;AAAA,IAC1C,QAAQ;AACN,qBAAe;AAAA,IACjB;AAEA,UAAM,MAAM,IAAI,IAAI,EAAE,IAAI,GAAG;AAC7B,UAAM,YAAY,EAAE,IAAI,aAAa,IAAI;AAEzC;AAAA,MACE;AAAA,QACE,QAAQ,EAAE,IAAI;AAAA,QACd,MAAM;AAAA,QACN,OAAO,OAAO,YAAY,IAAI,aAAa,QAAQ,CAAC;AAAA,QACpD,QAAQ,EAAE,IAAI,MAAM;AAAA,QACpB,MAAM,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,MAAM,IAAI;AAAA,QACrD,UAAU;AAAA,QACV,QAAQ,EAAE,IAAI;AAAA,QACd,gBAAgB,OAAO,YAAY,EAAE,IAAI,IAAI,QAAQ,QAAQ,CAAC;AAAA,QAC9D,iBAAiB,OAAO,YAAY,EAAE,IAAI,QAAQ,QAAQ,CAAC;AAAA,QAC3D,YAAY,KAAK,IAAI,IAAI;AAAA,MAC3B;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { capture, parseConfig, buildCaptureEvent } from '@easydocs/core'\nimport type { EasyDocsConfig } from '@easydocs/core'\nimport type { Context, Next } from 'hono'\n\nexport function easydocs(config?: EasyDocsConfig) {\n const parsedConfig = parseConfig(config)\n return async function easydocsMiddleware(c: Context, next: Next) {\n const startedAt = Date.now()\n await next()\n\n let responseBody: unknown = null\n try {\n responseBody = await c.res.clone().json()\n } catch {\n responseBody = null\n }\n\n let requestBody: unknown = null\n try {\n requestBody = await c.req.raw.clone().json()\n } catch {\n requestBody = null\n }\n\n const url = new URL(c.req.url)\n\n capture(\n buildCaptureEvent({\n method: c.req.method,\n path: c.req.routePath ?? url.pathname,\n query: Object.fromEntries(url.searchParams.entries()),\n params: c.req.param() as Record<string, unknown>,\n requestBody,\n responseBody,\n status: c.res.status,\n requestHeaders: Object.fromEntries(c.req.raw.headers.entries()),\n responseHeaders: Object.fromEntries(c.res.headers.entries()),\n durationMs: Date.now() - startedAt,\n }),\n parsedConfig\n )\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAwD;AAIjD,SAAS,SAAS,QAAyB;AAChD,QAAM,mBAAe,yBAAY,MAAM;AACvC,SAAO,eAAe,mBAAmB,GAAY,MAAY;AAC/D,UAAM,YAAY,KAAK,IAAI;AAC3B,UAAM,KAAK;AAEX,QAAI,eAAwB;AAC5B,QAAI;AACF,qBAAe,MAAM,EAAE,IAAI,MAAM,EAAE,KAAK;AAAA,IAC1C,QAAQ;AACN,qBAAe;AAAA,IACjB;AAEA,QAAI,cAAuB;AAC3B,QAAI;AACF,oBAAc,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,KAAK;AAAA,IAC7C,QAAQ;AACN,oBAAc;AAAA,IAChB;AAEA,UAAM,MAAM,IAAI,IAAI,EAAE,IAAI,GAAG;AAE7B;AAAA,UACE,+BAAkB;AAAA,QAChB,QAAQ,EAAE,IAAI;AAAA,QACd,MAAM,EAAE,IAAI,aAAa,IAAI;AAAA,QAC7B,OAAO,OAAO,YAAY,IAAI,aAAa,QAAQ,CAAC;AAAA,QACpD,QAAQ,EAAE,IAAI,MAAM;AAAA,QACpB;AAAA,QACA;AAAA,QACA,QAAQ,EAAE,IAAI;AAAA,QACd,gBAAgB,OAAO,YAAY,EAAE,IAAI,IAAI,QAAQ,QAAQ,CAAC;AAAA,QAC9D,iBAAiB,OAAO,YAAY,EAAE,IAAI,QAAQ,QAAQ,CAAC;AAAA,QAC3D,YAAY,KAAK,IAAI,IAAI;AAAA,MAC3B,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
package/dist/index.js CHANGED
@@ -1,31 +1,37 @@
1
1
  // src/index.ts
2
- import { capture } from "@easydocs/core";
2
+ import { capture, parseConfig, buildCaptureEvent } from "@easydocs/core";
3
3
  function easydocs(config) {
4
+ const parsedConfig = parseConfig(config);
4
5
  return async function easydocsMiddleware(c, next) {
5
6
  const startedAt = Date.now();
6
7
  await next();
7
- let responseBody;
8
+ let responseBody = null;
8
9
  try {
9
10
  responseBody = await c.res.clone().json();
10
11
  } catch {
11
12
  responseBody = null;
12
13
  }
14
+ let requestBody = null;
15
+ try {
16
+ requestBody = await c.req.raw.clone().json();
17
+ } catch {
18
+ requestBody = null;
19
+ }
13
20
  const url = new URL(c.req.url);
14
- const routePath = c.req.routePath ?? url.pathname;
15
21
  capture(
16
- {
22
+ buildCaptureEvent({
17
23
  method: c.req.method,
18
- path: routePath,
24
+ path: c.req.routePath ?? url.pathname,
19
25
  query: Object.fromEntries(url.searchParams.entries()),
20
26
  params: c.req.param(),
21
- body: await c.req.raw.clone().json().catch(() => null),
22
- response: responseBody,
27
+ requestBody,
28
+ responseBody,
23
29
  status: c.res.status,
24
30
  requestHeaders: Object.fromEntries(c.req.raw.headers.entries()),
25
31
  responseHeaders: Object.fromEntries(c.res.headers.entries()),
26
32
  durationMs: Date.now() - startedAt
27
- },
28
- config
33
+ }),
34
+ parsedConfig
29
35
  );
30
36
  };
31
37
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { capture } from '@easydocs/core'\nimport type { EasyDocsConfig, HttpMethod } from '@easydocs/core'\nimport type { Context, Next } from 'hono'\n\nexport function easydocs(config?: EasyDocsConfig) {\n return async function easydocsMiddleware(c: Context, next: Next) {\n const startedAt = Date.now()\n await next()\n\n let responseBody: unknown\n try {\n responseBody = await c.res.clone().json()\n } catch {\n responseBody = null\n }\n\n const url = new URL(c.req.url)\n const routePath = c.req.routePath ?? url.pathname\n\n capture(\n {\n method: c.req.method as HttpMethod,\n path: routePath,\n query: Object.fromEntries(url.searchParams.entries()),\n params: c.req.param() as Record<string, string>,\n body: await c.req.raw.clone().json().catch(() => null),\n response: responseBody,\n status: c.res.status,\n requestHeaders: Object.fromEntries(c.req.raw.headers.entries()),\n responseHeaders: Object.fromEntries(c.res.headers.entries()),\n durationMs: Date.now() - startedAt,\n },\n config\n )\n }\n}\n"],"mappings":";AAAA,SAAS,eAAe;AAIjB,SAAS,SAAS,QAAyB;AAChD,SAAO,eAAe,mBAAmB,GAAY,MAAY;AAC/D,UAAM,YAAY,KAAK,IAAI;AAC3B,UAAM,KAAK;AAEX,QAAI;AACJ,QAAI;AACF,qBAAe,MAAM,EAAE,IAAI,MAAM,EAAE,KAAK;AAAA,IAC1C,QAAQ;AACN,qBAAe;AAAA,IACjB;AAEA,UAAM,MAAM,IAAI,IAAI,EAAE,IAAI,GAAG;AAC7B,UAAM,YAAY,EAAE,IAAI,aAAa,IAAI;AAEzC;AAAA,MACE;AAAA,QACE,QAAQ,EAAE,IAAI;AAAA,QACd,MAAM;AAAA,QACN,OAAO,OAAO,YAAY,IAAI,aAAa,QAAQ,CAAC;AAAA,QACpD,QAAQ,EAAE,IAAI,MAAM;AAAA,QACpB,MAAM,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,MAAM,IAAI;AAAA,QACrD,UAAU;AAAA,QACV,QAAQ,EAAE,IAAI;AAAA,QACd,gBAAgB,OAAO,YAAY,EAAE,IAAI,IAAI,QAAQ,QAAQ,CAAC;AAAA,QAC9D,iBAAiB,OAAO,YAAY,EAAE,IAAI,QAAQ,QAAQ,CAAC;AAAA,QAC3D,YAAY,KAAK,IAAI,IAAI;AAAA,MAC3B;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { capture, parseConfig, buildCaptureEvent } from '@easydocs/core'\nimport type { EasyDocsConfig } from '@easydocs/core'\nimport type { Context, Next } from 'hono'\n\nexport function easydocs(config?: EasyDocsConfig) {\n const parsedConfig = parseConfig(config)\n return async function easydocsMiddleware(c: Context, next: Next) {\n const startedAt = Date.now()\n await next()\n\n let responseBody: unknown = null\n try {\n responseBody = await c.res.clone().json()\n } catch {\n responseBody = null\n }\n\n let requestBody: unknown = null\n try {\n requestBody = await c.req.raw.clone().json()\n } catch {\n requestBody = null\n }\n\n const url = new URL(c.req.url)\n\n capture(\n buildCaptureEvent({\n method: c.req.method,\n path: c.req.routePath ?? url.pathname,\n query: Object.fromEntries(url.searchParams.entries()),\n params: c.req.param() as Record<string, unknown>,\n requestBody,\n responseBody,\n status: c.res.status,\n requestHeaders: Object.fromEntries(c.req.raw.headers.entries()),\n responseHeaders: Object.fromEntries(c.res.headers.entries()),\n durationMs: Date.now() - startedAt,\n }),\n parsedConfig\n )\n }\n}\n"],"mappings":";AAAA,SAAS,SAAS,aAAa,yBAAyB;AAIjD,SAAS,SAAS,QAAyB;AAChD,QAAM,eAAe,YAAY,MAAM;AACvC,SAAO,eAAe,mBAAmB,GAAY,MAAY;AAC/D,UAAM,YAAY,KAAK,IAAI;AAC3B,UAAM,KAAK;AAEX,QAAI,eAAwB;AAC5B,QAAI;AACF,qBAAe,MAAM,EAAE,IAAI,MAAM,EAAE,KAAK;AAAA,IAC1C,QAAQ;AACN,qBAAe;AAAA,IACjB;AAEA,QAAI,cAAuB;AAC3B,QAAI;AACF,oBAAc,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,KAAK;AAAA,IAC7C,QAAQ;AACN,oBAAc;AAAA,IAChB;AAEA,UAAM,MAAM,IAAI,IAAI,EAAE,IAAI,GAAG;AAE7B;AAAA,MACE,kBAAkB;AAAA,QAChB,QAAQ,EAAE,IAAI;AAAA,QACd,MAAM,EAAE,IAAI,aAAa,IAAI;AAAA,QAC7B,OAAO,OAAO,YAAY,IAAI,aAAa,QAAQ,CAAC;AAAA,QACpD,QAAQ,EAAE,IAAI,MAAM;AAAA,QACpB;AAAA,QACA;AAAA,QACA,QAAQ,EAAE,IAAI;AAAA,QACd,gBAAgB,OAAO,YAAY,EAAE,IAAI,IAAI,QAAQ,QAAQ,CAAC;AAAA,QAC9D,iBAAiB,OAAO,YAAY,EAAE,IAAI,QAAQ,QAAQ,CAAC;AAAA,QAC3D,YAAY,KAAK,IAAI,IAAI;AAAA,MAC3B,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easydocs/hono",
3
- "version": "0.2.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.2.0"
21
+ "@easydocs/core": "0.5.0"
22
22
  },
23
23
  "peerDependencies": {
24
24
  "hono": ">=4.0.0"
@@ -26,11 +26,14 @@
26
26
  "devDependencies": {
27
27
  "hono": "^4.7.0",
28
28
  "tsup": "^8.3.0",
29
- "typescript": "^5"
29
+ "typescript": "^5",
30
+ "vitest": "^2.1.9"
30
31
  },
31
32
  "scripts": {
32
33
  "build": "tsup",
33
34
  "dev": "tsup --watch",
34
- "typecheck": "tsc --noEmit"
35
+ "typecheck": "tsc --noEmit",
36
+ "lint": "eslint src/",
37
+ "test": "vitest run"
35
38
  }
36
39
  }