@dunx/http 3.2.1 → 3.3.1

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.
@@ -1,12 +1,12 @@
1
1
  // @bun
2
2
  import {
3
- HttpStatusCode
4
- } from "./chunk-sz4pvqxy.js";
3
+ HttpStatusCode2
4
+ } from "./chunk-bg0dr54z.js";
5
5
 
6
6
  // src/route/marker.ts
7
7
  var ROUTE = Symbol.for("dunx.route");
8
8
  var CONTROLLER = Symbol.for("dunx.controller");
9
- var defaultStatusFor = (method) => method === "POST" ? HttpStatusCode.CREATED : HttpStatusCode.OK;
9
+ var defaultStatusFor2 = (method) => method === "POST" ? HttpStatusCode2.CREATED : HttpStatusCode2.OK;
10
10
  var resolvePath = (path) => typeof path === "function" ? path() : path;
11
11
  var markRoute = (target, meta) => {
12
12
  Object.defineProperty(target, ROUTE, { value: meta, configurable: true });
@@ -23,7 +23,7 @@ var prefixOf = (target) => target[CONTROLLER] ?? "";
23
23
  // src/route/metadata.ts
24
24
  var META = Symbol.for("dunx.meta");
25
25
  var GUARDS = Symbol.for("dunx.guards");
26
- var metaKey = (name) => ({
26
+ var metaKey2 = (name) => ({
27
27
  name,
28
28
  id: Symbol(name)
29
29
  });
@@ -32,18 +32,18 @@ var write = (target, key, value) => {
32
32
  record.set(key.id, value);
33
33
  Object.defineProperty(target, META, { value: record, configurable: true });
34
34
  };
35
- var meta = (key, value) => (target) => {
35
+ var meta2 = (key, value) => (target) => {
36
36
  write(target, key, value);
37
37
  return target;
38
38
  };
39
- var ROLES = metaKey("roles");
40
- var PUBLIC = metaKey("public");
41
- var HIDDEN = metaKey("hidden");
42
- var UNMATCHED = metaKey("unmatched");
43
- var Roles = (...roles) => meta(ROLES, roles);
44
- var Public = () => meta(PUBLIC, true);
45
- var ApiHidden = () => meta(HIDDEN, true);
46
- var UseGuards = (...guards) => (target) => {
39
+ var ROLES2 = metaKey2("roles");
40
+ var PUBLIC2 = metaKey2("public");
41
+ var HIDDEN2 = metaKey2("hidden");
42
+ var UNMATCHED2 = metaKey2("unmatched");
43
+ var Roles2 = (...roles) => meta2(ROLES2, roles);
44
+ var Public2 = () => meta2(PUBLIC2, true);
45
+ var ApiHidden2 = () => meta2(HIDDEN2, true);
46
+ var UseGuards2 = (...guards) => (target) => {
47
47
  const existing = target[GUARDS] ?? [];
48
48
  const merged = Object.hasOwn(target, GUARDS) ? [...guards, ...existing] : [...existing, ...guards];
49
49
  Object.defineProperty(target, GUARDS, {
@@ -53,8 +53,8 @@ var UseGuards = (...guards) => (target) => {
53
53
  return target;
54
54
  };
55
55
  var guardsOf = (target) => target[GUARDS] ?? [];
56
- var metaOf = (target) => target[META];
57
- var mergeMeta = (...targets) => {
56
+ var metaOf2 = (target) => target[META];
57
+ var mergeMeta2 = (...targets) => {
58
58
  const merged = new Map;
59
59
  for (const target of targets) {
60
60
  const record = target[META];
@@ -67,24 +67,24 @@ var mergeMeta = (...targets) => {
67
67
 
68
68
  // src/route/discover.ts
69
69
  import { markedMethods } from "@dunx/core";
70
- var joinPath = (prefix, path) => {
70
+ var joinPath2 = (prefix, path) => {
71
71
  const joined = `/${prefix}/${path}`.replace(/\/{2,}/g, "/");
72
72
  return joined.length > 1 ? joined.replace(/\/$/, "") : "/";
73
73
  };
74
- var discoverRoutes = (instance) => {
74
+ var discoverRoutes2 = (instance) => {
75
75
  const klass = instance.constructor;
76
76
  const prefix = prefixOf(klass);
77
77
  const classGuards = guardsOf(klass);
78
78
  const members = instance;
79
- return markedMethods(Object.getPrototypeOf(instance), routeMetaOf).map(({ name, meta: meta2, value: marked }) => ({
80
- method: meta2.method,
81
- path: joinPath(prefix, resolvePath(meta2.path)),
79
+ return markedMethods(Object.getPrototypeOf(instance), routeMetaOf).map(({ name, meta, value: marked }) => ({
80
+ method: meta.method,
81
+ path: joinPath2(prefix, resolvePath(meta.path)),
82
82
  controller: klass.name,
83
83
  handlerName: name,
84
84
  handler: members[name].bind(instance),
85
- options: meta2.options,
86
- meta: mergeMeta(klass, marked),
87
- classMeta: metaOf(klass),
85
+ options: meta.options,
86
+ meta: mergeMeta2(klass, marked),
87
+ classMeta: metaOf2(klass),
88
88
  guards: [...classGuards, ...guardsOf(marked)]
89
89
  }));
90
90
  };
@@ -101,19 +101,19 @@ var HandlerKind = Object.freeze({
101
101
  PING: "ping",
102
102
  PONG: "pong"
103
103
  });
104
- var markHandler = (target, meta2) => {
105
- Object.defineProperty(target, HANDLER, { value: meta2, configurable: true });
104
+ var markHandler = (target, meta) => {
105
+ Object.defineProperty(target, HANDLER, { value: meta, configurable: true });
106
106
  };
107
107
  var handlerMetaOf = (value) => typeof value === "function" ? value[HANDLER] : undefined;
108
108
  var markGateway = (target, path) => {
109
109
  Object.defineProperty(target, GATEWAY, { value: path, configurable: true });
110
110
  };
111
111
  var gatewayPathOf = (target) => target[GATEWAY] ?? "/";
112
- var isGateway = (target) => target[GATEWAY] !== undefined;
112
+ var isGateway2 = (target) => target[GATEWAY] !== undefined;
113
113
 
114
114
  // src/server/context.ts
115
115
  var EMPTY = new Map;
116
- var buildContext = (route) => {
116
+ var buildContext2 = (route) => {
117
117
  const record = route.meta ?? EMPTY;
118
118
  return Object.freeze({
119
119
  controller: route.controller,
@@ -142,9 +142,9 @@ var discoverGateway = (instance) => {
142
142
  return {
143
143
  name: klass.name,
144
144
  path: normalizePath(gatewayPathOf(klass)),
145
- handlers: eachHandler(Object.getPrototypeOf(instance)).map(({ name, meta: meta2 }) => ({
146
- kind: meta2.kind,
147
- event: meta2.event,
145
+ handlers: eachHandler(Object.getPrototypeOf(instance)).map(({ name, meta }) => ({
146
+ kind: meta.kind,
147
+ event: meta.event,
148
148
  method: name,
149
149
  invoke: members[name].bind(instance)
150
150
  }))
@@ -158,7 +158,7 @@ var discoverGateways = (modules, resolve) => {
158
158
  const candidate = classOf(entry);
159
159
  if (!candidate)
160
160
  continue;
161
- if (isGateway(candidate.ctor)) {
161
+ if (isGateway2(candidate.ctor)) {
162
162
  discovered.push(discoverGateway(resolve(candidate.token)));
163
163
  continue;
164
164
  }
@@ -171,4 +171,4 @@ var discoverGateways = (modules, resolve) => {
171
171
  return discovered;
172
172
  };
173
173
 
174
- export { defaultStatusFor, markRoute, markController, metaKey, meta, ROLES, PUBLIC, HIDDEN, UNMATCHED, Roles, Public, ApiHidden, UseGuards, metaOf, mergeMeta, joinPath, discoverRoutes, HandlerKind, markHandler, markGateway, isGateway, discoverGateway, discoverGateways, buildContext };
174
+ export { defaultStatusFor2, markRoute, markController, metaKey2, meta2, ROLES2, PUBLIC2, HIDDEN2, UNMATCHED2, Roles2, Public2, ApiHidden2, UseGuards2, metaOf2, mergeMeta2, joinPath2, discoverRoutes2, HandlerKind, markHandler, markGateway, isGateway2, discoverGateway, discoverGateways, buildContext2 };
@@ -0,0 +1,37 @@
1
+ // @bun
2
+ // src/server/status.ts
3
+ var HttpStatusCode2 = Object.freeze({
4
+ OK: 200,
5
+ CREATED: 201,
6
+ ACCEPTED: 202,
7
+ NO_CONTENT: 204,
8
+ MOVED_PERMANENTLY: 301,
9
+ FOUND: 302,
10
+ NOT_MODIFIED: 304,
11
+ TEMPORARY_REDIRECT: 307,
12
+ PERMANENT_REDIRECT: 308,
13
+ BAD_REQUEST: 400,
14
+ UNAUTHORIZED: 401,
15
+ PAYMENT_REQUIRED: 402,
16
+ FORBIDDEN: 403,
17
+ NOT_FOUND: 404,
18
+ METHOD_NOT_ALLOWED: 405,
19
+ NOT_ACCEPTABLE: 406,
20
+ REQUEST_TIMEOUT: 408,
21
+ CONFLICT: 409,
22
+ GONE: 410,
23
+ PRECONDITION_FAILED: 412,
24
+ PAYLOAD_TOO_LARGE: 413,
25
+ URI_TOO_LONG: 414,
26
+ UNSUPPORTED_MEDIA_TYPE: 415,
27
+ IM_A_TEAPOT: 418,
28
+ UNPROCESSABLE_ENTITY: 422,
29
+ TOO_MANY_REQUESTS: 429,
30
+ INTERNAL_SERVER_ERROR: 500,
31
+ NOT_IMPLEMENTED: 501,
32
+ BAD_GATEWAY: 502,
33
+ SERVICE_UNAVAILABLE: 503,
34
+ GATEWAY_TIMEOUT: 504
35
+ });
36
+
37
+ export { HttpStatusCode2 };
@@ -1,8 +1,8 @@
1
1
  // @bun
2
2
  // src/server/trace-context.ts
3
- var TRACEPARENT_HEADER = "traceparent";
4
- var TRACESTATE_HEADER = "tracestate";
5
- var TRACERESPONSE_HEADER = "traceresponse";
3
+ var TRACEPARENT_HEADER2 = "traceparent";
4
+ var TRACESTATE_HEADER2 = "tracestate";
5
+ var TRACERESPONSE_HEADER2 = "traceresponse";
6
6
  var HEX_32 = /^[0-9a-f]{32}$/;
7
7
  var HEX_16 = /^[0-9a-f]{16}$/;
8
8
  var HEX_2 = /^[0-9a-f]{2}$/;
@@ -14,10 +14,10 @@ var TRACE = Symbol.for("dunx.http.trace");
14
14
  var EXPOSE = Symbol.for("dunx.http.trace.expose");
15
15
  var mint = (bytes) => crypto.getRandomValues(new Uint8Array(bytes)).toHex();
16
16
 
17
- class TraceContext {
17
+ class TraceContext2 {
18
18
  static adopt(req, expose = true) {
19
- const inbound = TraceContext.#parse(req.headers.get(TRACEPARENT_HEADER));
20
- const state = req.headers.get(TRACESTATE_HEADER);
19
+ const inbound = TraceContext2.#parse(req.headers.get(TRACEPARENT_HEADER2));
20
+ const state = req.headers.get(TRACESTATE_HEADER2);
21
21
  const trace = inbound === undefined ? { traceId: mint(16), spanId: mint(8), flags: DEFAULT_FLAGS } : {
22
22
  traceId: inbound.traceId,
23
23
  spanId: mint(8),
@@ -40,7 +40,7 @@ class TraceContext {
40
40
  const traced = req;
41
41
  const trace = traced[TRACE];
42
42
  if (trace !== undefined && traced[EXPOSE] === true) {
43
- response.headers.set(TRACERESPONSE_HEADER, TraceContext.header(trace));
43
+ response.headers.set(TRACERESPONSE_HEADER2, TraceContext2.header(trace));
44
44
  }
45
45
  return response;
46
46
  }
@@ -68,4 +68,4 @@ class TraceContext {
68
68
  }
69
69
  }
70
70
 
71
- export { TRACEPARENT_HEADER, TRACESTATE_HEADER, TRACERESPONSE_HEADER, TraceContext };
71
+ export { TRACEPARENT_HEADER2, TRACESTATE_HEADER2, TRACERESPONSE_HEADER2, TraceContext2 };
package/dist/client.js CHANGED
@@ -1,12 +1,12 @@
1
1
  // @bun
2
2
  import {
3
- TRACEPARENT_HEADER,
4
- TRACESTATE_HEADER,
5
- TraceContext
6
- } from "./chunk-3j2n1n11.js";
3
+ TRACEPARENT_HEADER2,
4
+ TRACESTATE_HEADER2,
5
+ TraceContext2
6
+ } from "./chunk-gmtwad7f.js";
7
7
  import {
8
- HttpStatusCode
9
- } from "./chunk-sz4pvqxy.js";
8
+ HttpStatusCode2
9
+ } from "./chunk-bg0dr54z.js";
10
10
 
11
11
  // src/client/errors.ts
12
12
  import { AppError } from "@dunx/core";
@@ -120,7 +120,7 @@ var retryAfterMs = (headers, now = Date.now()) => {
120
120
  const at = Date.parse(header);
121
121
  return Number.isNaN(at) ? undefined : Math.max(0, at - now);
122
122
  };
123
- var isRetryableStatus = (status) => status >= HttpStatusCode.INTERNAL_SERVER_ERROR || status === HttpStatusCode.REQUEST_TIMEOUT || status === HttpStatusCode.TOO_MANY_REQUESTS;
123
+ var isRetryableStatus = (status) => status >= HttpStatusCode2.INTERNAL_SERVER_ERROR || status === HttpStatusCode2.REQUEST_TIMEOUT || status === HttpStatusCode2.TOO_MANY_REQUESTS;
124
124
  var decide = (error, attempt, options) => {
125
125
  const {
126
126
  retryDelayMs = 1000,
@@ -330,12 +330,12 @@ class HttpService extends UrlHelper {
330
330
  ...serialised === "" ? {} : { "content-type": "application/json" },
331
331
  ...this.options.headers,
332
332
  ...typeof trace?.traceId === "string" && typeof trace.spanId === "string" ? {
333
- [TRACEPARENT_HEADER]: TraceContext.header({
333
+ [TRACEPARENT_HEADER2]: TraceContext2.header({
334
334
  traceId: trace.traceId,
335
335
  spanId: trace.spanId,
336
336
  flags: typeof trace.traceFlags === "string" ? trace.traceFlags : "01"
337
337
  }),
338
- ...typeof trace.traceState === "string" ? { [TRACESTATE_HEADER]: trace.traceState } : {}
338
+ ...typeof trace.traceState === "string" ? { [TRACESTATE_HEADER2]: trace.traceState } : {}
339
339
  } : {},
340
340
  ...config.headerFactory?.({
341
341
  timestamp: Math.floor(Date.now() / 1000),