@nx.js/http 0.0.3 → 0.0.5

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/body.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- /// <reference types="nxjs-runtime" />
2
1
  import { UnshiftableStream } from './unshiftable-readable-stream';
3
2
  export declare function bodyStream(unshiftable: UnshiftableStream, headers: Headers): ReadableStream<Uint8Array>;
package/dist/headers.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="nxjs-runtime" />
2
1
  import { UnshiftableStream } from './unshiftable-readable-stream';
3
2
  export declare function readHeaders(unshiftable: UnshiftableStream): Promise<string[]>;
4
3
  export declare function toHeaders(input: string[]): Headers;
package/dist/index.d.ts CHANGED
@@ -1,11 +1,10 @@
1
- /// <reference types="nxjs-runtime" />
2
1
  export { createStaticFileHandler, type StaticFileHandlerOpts } from './static';
3
2
  /**
4
3
  * Handler function for processing an HTTP request.
5
4
  */
6
5
  export type ServerHandler = (req: Request) => Response | Promise<Response>;
7
6
  /**
8
- * Options object for the {@link listen | `http.listen()`} function.
7
+ * Options object for the {@link listen | `listen()`} function.
9
8
  */
10
9
  export interface ListenOptions extends Omit<Switch.ListenOptions, 'accept'> {
11
10
  fetch: ServerHandler;
@@ -14,11 +13,13 @@ export interface ListenOptions extends Omit<Switch.ListenOptions, 'accept'> {
14
13
  * Creates a socket handler function which accepts a socket
15
14
  * event and parses the incoming data as an HTTP request.
16
15
  *
17
- * @note This is a low-level function which usually should not be used directly. See {@link listen | `http.listen()`} instead.
16
+ * > NOTE: This is a low-level function which usually should not be used directly.
17
+ * > See {@link listen | `listen()`} instead, which is a higher-level wrapper
18
+ * > around this function.
18
19
  *
19
20
  * @param handler The HTTP handler function to invoke when an HTTP request is received
20
21
  */
21
- export declare function createServerHandler(handler: ServerHandler): ({ socket }: Switch.SocketEvent) => Promise<void>;
22
+ export declare function createServerHandler(handler: ServerHandler): (event: Switch.SocketEvent) => Promise<void>;
22
23
  /**
23
24
  * Creates an HTTP server and listens on the `port` number specified in the options object.
24
25
  * The `fetch` function will be invoked upon receiving an HTTP request.
@@ -26,7 +27,9 @@ export declare function createServerHandler(handler: ServerHandler): ({ socket }
26
27
  * @example
27
28
  *
28
29
  * ```typescript
29
- * http.listen({
30
+ * import { listen } from '@nx.js/http';
31
+ *
32
+ * listen({
30
33
  * port: 8080,
31
34
  * fetch(req) {
32
35
  * console.log(`Got HTTP ${req.method} request for "${req.url}"`);
package/dist/index.js CHANGED
@@ -5,21 +5,24 @@ export { createStaticFileHandler } from './static';
5
5
  * Creates a socket handler function which accepts a socket
6
6
  * event and parses the incoming data as an HTTP request.
7
7
  *
8
- * @note This is a low-level function which usually should not be used directly. See {@link listen | `http.listen()`} instead.
8
+ * > NOTE: This is a low-level function which usually should not be used directly.
9
+ * > See {@link listen | `listen()`} instead, which is a higher-level wrapper
10
+ * > around this function.
9
11
  *
10
12
  * @param handler The HTTP handler function to invoke when an HTTP request is received
11
13
  */
12
14
  export function createServerHandler(handler) {
13
- return async ({ socket }) => {
14
- const unshiftable = new UnshiftableStream(socket.readable);
15
+ return async (event) => {
16
+ const s = event.socket;
17
+ const unshiftable = new UnshiftableStream(s.readable);
15
18
  while (true) {
16
19
  const req = await readRequest(unshiftable);
17
20
  if (!req)
18
21
  break;
19
22
  const res = await handler(req);
20
- writeResponse(socket.writable, res, 'HTTP/1.1');
23
+ writeResponse(s.writable, res, 'HTTP/1.1');
21
24
  }
22
- socket.close();
25
+ s.close();
23
26
  };
24
27
  }
25
28
  /**
@@ -29,7 +32,9 @@ export function createServerHandler(handler) {
29
32
  * @example
30
33
  *
31
34
  * ```typescript
32
- * http.listen({
35
+ * import { listen } from '@nx.js/http';
36
+ *
37
+ * listen({
33
38
  * port: 8080,
34
39
  * fetch(req) {
35
40
  * console.log(`Got HTTP ${req.method} request for "${req.url}"`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,EAAE,uBAAuB,EAA8B,MAAM,UAAU,CAAC;AAc/E;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAsB;IACzD,OAAO,KAAK,EAAE,EAAE,MAAM,EAAsB,EAAE,EAAE;QAC/C,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3D,OAAO,IAAI,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;YAC3C,IAAI,CAAC,GAAG;gBAAE,MAAM;YAChB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/B,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,MAAM,CAAC,IAAmB;IACzC,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,EAAE,uBAAuB,EAA8B,MAAM,UAAU,CAAC;AAc/E;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAsB;IACzD,OAAO,KAAK,EAAE,KAAyB,EAAE,EAAE;QAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QACvB,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,OAAO,IAAI,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;YAC3C,IAAI,CAAC,GAAG;gBAAE,MAAM;YAChB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/B,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAC5C,CAAC;QACD,CAAC,CAAC,KAAK,EAAE,CAAC;IACX,CAAC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,MAAM,CAAC,IAAmB;IACzC,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3C,CAAC"}
package/dist/server.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="nxjs-runtime" />
2
1
  import type { UnshiftableStream } from './unshiftable-readable-stream';
3
2
  export declare function readRequest(unshiftable: UnshiftableStream): Promise<Request | null>;
4
3
  export declare function createChunkedWriter(readable: ReadableStream<Uint8Array>): ReadableStream<Uint8Array>;
package/dist/static.d.ts CHANGED
@@ -1,5 +1,11 @@
1
- /// <reference types="nxjs-runtime" />
1
+ /**
2
+ * Options object for the {@link createStaticFileHandler | `createStaticFileHandler()`} function.
3
+ */
2
4
  export interface StaticFileHandlerOpts {
5
+ /**
6
+ * Addional HTTP headers to include in the response. Can be a static
7
+ * `Headers` object, or a function which returns a `Headers` object.
8
+ */
3
9
  headers?: HeadersInit | ((req: Request, path: URL) => HeadersInit);
4
10
  }
5
11
  export declare function resolvePath(url: string, root: string): URL;
@@ -9,9 +15,11 @@ export declare function resolvePath(url: string, root: string): URL;
9
15
  * @example
10
16
  *
11
17
  * ```typescript
12
- * const fileHandler = http.createStaticFileHandler('sdmc:/switch/');
18
+ * import { createStaticFileHandler, listen } from '@nx.js/http';
19
+ *
20
+ * const fileHandler = createStaticFileHandler('sdmc:/switch/');
13
21
  *
14
- * http.listen({
22
+ * listen({
15
23
  * port: 8080,
16
24
  * async fetch(req) {
17
25
  * let res = await fileHandler(req);
@@ -24,5 +32,6 @@ export declare function resolvePath(url: string, root: string): URL;
24
32
  * ```
25
33
  *
26
34
  * @param root Root directory where static files are served from
35
+ * @param opts Optional options object
27
36
  */
28
37
  export declare function createStaticFileHandler(root: Switch.PathLike, opts?: StaticFileHandlerOpts): (req: Request) => Promise<Response | null>;
package/dist/static.js CHANGED
@@ -10,9 +10,11 @@ export function resolvePath(url, root) {
10
10
  * @example
11
11
  *
12
12
  * ```typescript
13
- * const fileHandler = http.createStaticFileHandler('sdmc:/switch/');
13
+ * import { createStaticFileHandler, listen } from '@nx.js/http';
14
14
  *
15
- * http.listen({
15
+ * const fileHandler = createStaticFileHandler('sdmc:/switch/');
16
+ *
17
+ * listen({
16
18
  * port: 8080,
17
19
  * async fetch(req) {
18
20
  * let res = await fileHandler(req);
@@ -25,11 +27,13 @@ export function resolvePath(url, root) {
25
27
  * ```
26
28
  *
27
29
  * @param root Root directory where static files are served from
30
+ * @param opts Optional options object
28
31
  */
29
- export function createStaticFileHandler(root, opts = {}) {
32
+ export function createStaticFileHandler(root, opts) {
30
33
  let rootStr = String(root);
31
34
  if (!rootStr.endsWith('/'))
32
35
  rootStr += '/';
36
+ const oHeaders = opts?.headers;
33
37
  return async (req) => {
34
38
  const url = resolvePath(req.url, rootStr);
35
39
  const stat = await Switch.stat(url);
@@ -39,9 +43,7 @@ export function createStaticFileHandler(root, opts = {}) {
39
43
  const data = await Switch.readFile(url);
40
44
  if (!data)
41
45
  return null;
42
- const headers = new Headers(typeof opts.headers === 'function'
43
- ? opts.headers(req, url)
44
- : opts.headers);
46
+ const headers = new Headers(typeof oHeaders === 'function' ? oHeaders(req, url) : oHeaders);
45
47
  headers.set('content-length', String(data.byteLength));
46
48
  headers.set('content-type', mime.getType(url.pathname) || 'application/octet-stream');
47
49
  return new Response(data, { headers });
@@ -1 +1 @@
1
- {"version":3,"file":"static.js","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAMxB,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,IAAY;IACpD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7D,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,uBAAuB,CACtC,IAAqB,EACrB,OAA8B,EAAE;IAEhC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,GAAG,CAAC;IAC3C,OAAO,KAAK,EAAE,GAAY,EAA4B,EAAE;QACvD,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,yCAAyC;QACzC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,OAAO,CAC1B,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU;YACjC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;YACxB,CAAC,CAAC,IAAI,CAAC,OAAO,CACf,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CACV,cAAc,EACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,0BAA0B,CACxD,CAAC;QACF,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"static.js","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAaxB,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,IAAY;IACpD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7D,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,uBAAuB,CACtC,IAAqB,EACrB,IAA4B;IAE5B,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,GAAG,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,EAAE,OAAO,CAAC;IAC/B,OAAO,KAAK,EAAE,GAAY,EAA4B,EAAE;QACvD,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,yCAAyC;QACzC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,OAAO,CAC1B,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAC9D,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CACV,cAAc,EACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,0BAA0B,CACxD,CAAC;QACF,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC;AACH,CAAC"}
@@ -1,4 +1,3 @@
1
- /// <reference types="nxjs-runtime" />
2
1
  import { Deferred } from './deferred';
3
2
  export declare class UnshiftableStream {
4
3
  buffer: Uint8Array;
package/dist/util.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="nxjs-runtime" />
2
1
  import type { UnshiftableStream } from './unshiftable-readable-stream';
3
2
  export declare const encoder: TextEncoder;
4
3
  export declare const decoder: TextDecoder;
package/package.json CHANGED
@@ -1,7 +1,13 @@
1
1
  {
2
2
  "name": "@nx.js/http",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "description": "HTTP server for nx.js",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/TooTallNate/nx.js.git",
8
+ "directory": "packages/http"
9
+ },
10
+ "homepage": "https://nxjs.n8.io/http",
5
11
  "main": "dist/index.js",
6
12
  "files": [
7
13
  "dist"
@@ -10,10 +16,9 @@
10
16
  "access": "public"
11
17
  },
12
18
  "devDependencies": {
13
- "typescript": "^5.3.2",
14
19
  "vite": "^5.1.6",
15
20
  "vitest": "^1.3.1",
16
- "nxjs-runtime": "0.0.43"
21
+ "nxjs-runtime": "0.0.48"
17
22
  },
18
23
  "keywords": [
19
24
  "nx.js",
@@ -28,6 +33,7 @@
28
33
  },
29
34
  "scripts": {
30
35
  "build": "tsc",
31
- "test": "vitest"
36
+ "test": "vitest",
37
+ "docs": "typedoc && ../../type-aliases-meta.sh"
32
38
  }
33
39
  }