srvx 0.3.0 → 0.4.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.
@@ -13,12 +13,14 @@ class BunServer {
13
13
  this.options = options;
14
14
  const fetchHandler = wrapFetch(this, this.options.fetch);
15
15
  this.fetch = (request, server) => {
16
- Object.defineProperty(request, "x", {
17
- enumerable: true,
18
- value: {
19
- runtime: "bun",
20
- bun: { server },
21
- get ip() {
16
+ Object.defineProperties(request, {
17
+ runtime: {
18
+ enumerable: true,
19
+ value: { runtime: "bun", bun: { server } }
20
+ },
21
+ ip: {
22
+ enumerable: true,
23
+ get() {
22
24
  return server?.requestIP(request)?.address;
23
25
  }
24
26
  }
@@ -13,12 +13,18 @@ class CloudflareServer {
13
13
  this.options.fetch
14
14
  );
15
15
  this.fetch = (request, env, context) => {
16
- Object.defineProperty(request, "x", {
17
- enumerable: true,
18
- value: {
19
- runtime: "cloudflare",
20
- cloudflare: { env, context }
16
+ Object.defineProperties(request, {
17
+ runtime: {
18
+ enumerable: true,
19
+ value: { runtime: "cloudflare", cloudflare: { env, context } }
21
20
  }
21
+ // TODO
22
+ // ip: {
23
+ // enumerable: true,
24
+ // get() {
25
+ // return;
26
+ // },
27
+ // },
22
28
  });
23
29
  return fetchHandler(request);
24
30
  };
@@ -13,12 +13,14 @@ class DenoServer {
13
13
  this.options = options;
14
14
  const fetchHandler = wrapFetch(this, this.options.fetch);
15
15
  this.fetch = (request, info) => {
16
- Object.defineProperty(request, "x", {
17
- enumerable: true,
18
- value: {
19
- runtime: "deno",
20
- deno: { info, server: this.deno?.server },
21
- get ip() {
16
+ Object.defineProperties(request, {
17
+ runtime: {
18
+ enumerable: true,
19
+ value: { runtime: "deno", deno: { info, server: this.deno?.server } }
20
+ },
21
+ ip: {
22
+ enumerable: true,
23
+ get() {
22
24
  return info?.remoteAddr?.hostname;
23
25
  }
24
26
  }
@@ -14,8 +14,8 @@ type NodeResponse = InstanceType<typeof NodeResponse>;
14
14
  */
15
15
  declare const NodeResponse: {
16
16
  new (body?: BodyInit | null, init?: ResponseInit): {
17
- "__#4362@#body"?: BodyInit | null;
18
- "__#4362@#init"?: ResponseInit;
17
+ "__#4366@#body"?: BodyInit | null;
18
+ "__#4366@#init"?: ResponseInit;
19
19
  /**
20
20
  * Prepare Node.js response object
21
21
  */
@@ -23,14 +23,14 @@ declare const NodeResponse: {
23
23
  status: number;
24
24
  statusText: string;
25
25
  headers: NodeHttp__default.OutgoingHttpHeader[];
26
- body: string | Uint8Array<ArrayBufferLike> | ReadableStream<Uint8Array<ArrayBufferLike>> | Readable | Buffer<ArrayBufferLike> | DataView<ArrayBufferLike> | null | undefined;
26
+ body: string | Buffer<ArrayBufferLike> | Uint8Array<ArrayBufferLike> | ReadableStream<Uint8Array<ArrayBufferLike>> | Readable | DataView<ArrayBufferLike> | null | undefined;
27
27
  };
28
28
  /** Lazy initialized response instance */
29
- "__#4362@#responseObj"?: globalThis.Response;
29
+ "__#4366@#responseObj"?: globalThis.Response;
30
30
  /** Lazy initialized headers instance */
31
- "__#4362@#headersObj"?: Headers;
31
+ "__#4366@#headersObj"?: Headers;
32
32
  clone(): globalThis.Response;
33
- readonly "__#4362@#response": globalThis.Response;
33
+ readonly "__#4366@#response": globalThis.Response;
34
34
  readonly headers: Headers;
35
35
  readonly ok: boolean;
36
36
  readonly redirected: boolean;
@@ -38,7 +38,7 @@ declare const NodeResponse: {
38
38
  readonly statusText: string;
39
39
  readonly type: ResponseType;
40
40
  readonly url: string;
41
- "__#4362@#fastBody"<T extends object>(as: new (...args: any[]) => T): T | null | false;
41
+ "__#4366@#fastBody"<T extends object>(as: new (...args: any[]) => T): T | null | false;
42
42
  readonly body: ReadableStream<Uint8Array> | null;
43
43
  readonly bodyUsed: boolean;
44
44
  arrayBuffer(): Promise<ArrayBuffer>;
@@ -491,14 +491,14 @@ const NodeRequest = /* @__PURE__ */ (() => {
491
491
  #bodyStream;
492
492
  constructor(nodeCtx) {
493
493
  this._node = nodeCtx;
494
- this.x = {
495
- runtime: "node",
496
- node: nodeCtx,
497
- get ip() {
498
- return nodeCtx.req.socket?.remoteAddress;
499
- }
494
+ this.runtime = {
495
+ name: "node",
496
+ node: nodeCtx
500
497
  };
501
498
  }
499
+ get ip() {
500
+ return this._node.req.socket?.remoteAddress;
501
+ }
502
502
  get headers() {
503
503
  if (!this.#headers) {
504
504
  this.#headers = new NodeRequestHeaders(this._node);
package/dist/types.d.mts CHANGED
@@ -162,11 +162,7 @@ interface ServerPluginInstance {
162
162
  response?: (request: ServerRequest, response: Response) => MaybePromise<void | Response>;
163
163
  }
164
164
  interface ServerRuntimeContext {
165
- runtime: "node" | "deno" | "bun" | "cloudflare" | (string & {});
166
- /**
167
- * IP address of the client.
168
- */
169
- ip?: string | undefined;
165
+ name: "node" | "deno" | "bun" | "cloudflare" | (string & {});
170
166
  /**
171
167
  * Underlying Node.js server request info.
172
168
  */
@@ -198,7 +194,11 @@ interface ServerRequest extends Request {
198
194
  /**
199
195
  * Runtime specific request context.
200
196
  */
201
- x?: ServerRuntimeContext;
197
+ runtime?: ServerRuntimeContext;
198
+ /**
199
+ * IP address of the client.
200
+ */
201
+ ip?: string | undefined;
202
202
  }
203
203
  type FetchHandler = (request: Request) => Response | Promise<Response>;
204
204
  type BunFetchHandler = (request: Request, server?: Bun.Server) => Response | Promise<Response>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "srvx",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Universal Server API based on web platform standards. Works seamlessly with Deno, Bun and Node.js.",
5
5
  "repository": "unjs/srvx",
6
6
  "license": "MIT",