dx-server 0.2.1 → 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/esm/body.d.ts CHANGED
@@ -1,38 +1,15 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="qs" />
3
- export declare const bufferBodyContext: {
4
- readonly value: Buffer | undefined;
5
- chain(params_0?: {
6
- limit?: number | undefined;
7
- } | undefined): <V>(next: () => V) => Promise<any>;
8
- with(value: Buffer | undefined): <V_1>(next: () => V_1) => Promise<any>;
9
- };
10
- export declare const jsonBodyContext: {
11
- readonly value: any;
12
- chain(): <V>(next: () => V) => Promise<any>;
13
- with(value: any): <V_1>(next: () => V_1) => Promise<any>;
14
- };
15
- export declare const rawBodyContext: {
16
- readonly value: Buffer | undefined;
17
- chain(): <V>(next: () => V) => Promise<any>;
18
- with(value: Buffer | undefined): <V_1>(next: () => V_1) => Promise<any>;
19
- };
20
- export declare const textBodyContext: {
21
- readonly value: string | undefined;
22
- chain(): <V>(next: () => V) => Promise<any>;
23
- with(value: string | undefined): <V_1>(next: () => V_1) => Promise<any>;
24
- };
25
- export declare const urlencodedBodyContext: {
26
- readonly value: import("qs").ParsedQs | undefined;
27
- chain(params_0?: {
28
- simplify?: boolean | undefined;
29
- } | undefined): <V>(next: () => V) => Promise<any>;
30
- with(value: import("qs").ParsedQs | undefined): <V_1>(next: () => V_1) => Promise<any>;
31
- };
32
- export declare const queryContext: {
33
- readonly value: import("qs").ParsedQs;
34
- chain(params_0?: {
35
- simplify?: boolean | undefined;
36
- } | undefined): <V>(next: () => V) => Promise<any>;
37
- with(value: import("qs").ParsedQs): <V_1>(next: () => V_1) => Promise<any>;
38
- };
1
+ interface BufferBodyOptions {
2
+ limit: number;
3
+ }
4
+ export declare function setBufferBodyDefaultOptions(options: Partial<BufferBodyOptions>): void;
5
+ export declare function getBuffer(options?: Partial<BufferBodyOptions>): Promise<any>;
6
+ export declare function getJson(options?: Partial<BufferBodyOptions>): Promise<any>;
7
+ export declare function getRaw(options?: Partial<BufferBodyOptions>): Promise<any>;
8
+ export declare function getText(options?: Partial<BufferBodyOptions>): Promise<any>;
9
+ export declare function getUrlEncoded({ simplify, ...options }?: Partial<BufferBodyOptions> & {
10
+ simplify?: boolean;
11
+ }): Promise<any>;
12
+ export declare function getQuery({ simplify, ...options }?: Partial<BufferBodyOptions> & {
13
+ simplify?: boolean;
14
+ }): Promise<any>;
15
+ export {};
package/esm/body.js CHANGED
@@ -1,32 +1,40 @@
1
1
  import { getContentStream, readStream } from './stream.js';
2
2
  import { parse } from 'qs';
3
3
  import { parseContentType } from './contentType.js';
4
- import { makeContext, reqContext } from './context.js';
5
- export const bufferBodyContext = makeContext(async ({ limit = 100 << 10, // 100kb
6
- } = {}) => {
7
- const req = reqContext.value;
8
- /**
9
- * Check if a request has a request body.
10
- * A request with a body __must__ either have `transfer-encoding`
11
- * or `content-length` headers set.
12
- * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3
13
- */
14
- // https://github.com/jshttp/type-is/blob/cdcfe23e9833872e425b0aaf71ca0311373b6116/index.js#L92
15
- const contentLengthParsed = parseInt(req.headers['content-length'] ?? '', 10);
16
- if (req.headers['transfer-encoding'] === undefined
17
- && isNaN(contentLengthParsed))
18
- return;
19
- const contentLength = isNaN(contentLengthParsed) ? undefined : contentLengthParsed;
20
- // read
21
- const encoding = (req.headers['content-encoding'] ?? 'identity').toLowerCase();
22
- const stream = getContentStream(req, encoding);
23
- return await readStream(stream, {
24
- length: encoding === 'identity' ? contentLength : undefined,
25
- limit,
26
- });
27
- });
28
- const forceGetContentTypeParams = (expected) => {
29
- const req = reqContext.value;
4
+ import { getReq } from './dx.js';
5
+ let bufferBodyDefaultOptions = { limit: 100 << 10 }; // 100kb
6
+ export function setBufferBodyDefaultOptions(options) {
7
+ bufferBodyDefaultOptions = { ...bufferBodyDefaultOptions, ...options };
8
+ }
9
+ const bufferBodySymbol = Symbol('bufferBody');
10
+ export async function getBuffer(options) {
11
+ const { limit } = { ...bufferBodyDefaultOptions, ...options };
12
+ const req = getReq();
13
+ return req[bufferBodySymbol] ??= (async () => {
14
+ /**
15
+ * Check if a request has a request body.
16
+ * A request with a body __must__ either have `transfer-encoding`
17
+ * or `content-length` headers set.
18
+ * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3
19
+ */
20
+ // https://github.com/jshttp/type-is/blob/cdcfe23e9833872e425b0aaf71ca0311373b6116/index.js#L92
21
+ const contentLengthParsed = parseInt(req.headers['content-length'] ?? '', 10);
22
+ if (req.headers['transfer-encoding'] === undefined
23
+ && isNaN(contentLengthParsed))
24
+ return;
25
+ const contentLength = isNaN(contentLengthParsed) ? undefined : contentLengthParsed;
26
+ // read
27
+ const encoding = (req.headers['content-encoding'] ?? 'identity').toLowerCase();
28
+ const stream = getContentStream(req, encoding);
29
+ return await readStream(stream, {
30
+ length: encoding === 'identity' ? contentLength : undefined,
31
+ limit,
32
+ });
33
+ })();
34
+ }
35
+ // if content-type is not as expected, return undefined
36
+ function forceGetContentTypeParams(expected) {
37
+ const req = getReq();
30
38
  const contentTypeRaw = req.headers['content-type'];
31
39
  if (!contentTypeRaw)
32
40
  return;
@@ -34,8 +42,8 @@ const forceGetContentTypeParams = (expected) => {
34
42
  if (mediaType !== expected)
35
43
  return;
36
44
  return parameters;
37
- };
38
- const forceGetCharset = (expected) => {
45
+ }
46
+ function forceGetCharset(expected) {
39
47
  const parameters = forceGetContentTypeParams(expected);
40
48
  if (!parameters)
41
49
  return;
@@ -44,49 +52,63 @@ const forceGetCharset = (expected) => {
44
52
  if (!charset.startsWith('utf-'))
45
53
  throw new Error(`unsupported charset "${charset.toUpperCase()}"`);
46
54
  return charset;
47
- };
48
- export const jsonBodyContext = makeContext(async () => {
49
- const charset = forceGetCharset('application/json');
50
- if (!charset)
51
- return;
52
- const buffer = bufferBodyContext.value;
53
- if (buffer) {
54
- const str = buffer.toString(charset);
55
- return str ? JSON.parse(str) : undefined;
56
- }
57
- });
58
- export const rawBodyContext = makeContext(async () => {
59
- if (!forceGetContentTypeParams('application/octet-stream'))
60
- return;
61
- return bufferBodyContext.value;
62
- });
63
- export const textBodyContext = makeContext(async () => {
64
- const charset = forceGetCharset('text/plain');
65
- if (!charset)
66
- return;
67
- const buffer = bufferBodyContext.value;
68
- if (buffer)
69
- return buffer.toString(charset);
70
- });
71
- export const urlencodedBodyContext = makeContext(async ({ simplify } = {}) => {
72
- const charset = forceGetCharset('application/x-www-form-urlencoded');
73
- if (!charset)
74
- return;
75
- const buffer = bufferBodyContext.value;
76
- if (buffer) {
77
- const str = buffer.toString(charset);
78
- return simplify
79
- ? Object.fromEntries(new URLSearchParams(str))
80
- : parse(str);
81
- }
82
- });
83
- export const queryContext = makeContext(({ simplify } = {}) => {
84
- const req = reqContext.value;
85
- const query = req.url?.split('?', 2)?.[1];
86
- return query
87
- ? simplify
88
- ? Object.fromEntries(new URLSearchParams(query))
89
- : parse(query)
90
- : {};
91
- });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxVQUFVLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFDeEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLElBQUksQ0FBQTtBQUN4QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUMsV0FBVyxFQUFFLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUVwRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUNqRCxFQUNDLEtBQUssR0FBRyxHQUFHLElBQUksRUFBRSxFQUFFLFFBQVE7S0FHeEIsRUFBRSxFQUNMLEVBQUU7SUFDSCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFBO0lBRTVCOzs7OztPQUtHO0lBQ0YsK0ZBQStGO0lBQ2hHLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDN0UsSUFDQyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssU0FBUztXQUMzQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDNUIsT0FBTTtJQUNSLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFBO0lBRWxGLE9BQU87SUFDUCxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM5RSxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFD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
55
+ }
56
+ const jsonBodySymbol = Symbol('jsonBody');
57
+ export async function getJson(options) {
58
+ return getReq()[jsonBodySymbol] ??= (async () => {
59
+ const charset = forceGetCharset('application/json');
60
+ if (!charset)
61
+ return;
62
+ const buffer = await getBuffer(options);
63
+ if (buffer) {
64
+ const str = buffer.toString(charset);
65
+ return str ? JSON.parse(str) : undefined;
66
+ }
67
+ })();
68
+ }
69
+ const rawBodySymbol = Symbol('rawBody');
70
+ export async function getRaw(options) {
71
+ return getReq()[rawBodySymbol] ??= (async () => {
72
+ if (!forceGetContentTypeParams('application/octet-stream'))
73
+ return;
74
+ return await getBuffer(options);
75
+ })();
76
+ }
77
+ const textBodySymbol = Symbol('textBody');
78
+ export async function getText(options) {
79
+ return getReq()[textBodySymbol] ??= (async () => {
80
+ const charset = forceGetCharset('text/plain');
81
+ if (!charset)
82
+ return;
83
+ const buffer = await getBuffer(options);
84
+ if (buffer)
85
+ return buffer.toString(charset);
86
+ })();
87
+ }
88
+ const urlEncodedBodySymbol = Symbol('urlencodedBody');
89
+ export async function getUrlEncoded({ simplify, ...options } = {}) {
90
+ return getReq()[urlEncodedBodySymbol] ??= (async () => {
91
+ const charset = forceGetCharset('application/x-www-form-urlencoded');
92
+ if (!charset)
93
+ return;
94
+ const buffer = await getBuffer(options);
95
+ if (buffer) {
96
+ const str = buffer.toString(charset);
97
+ return simplify
98
+ ? Object.fromEntries(new URLSearchParams(str))
99
+ : parse(str);
100
+ }
101
+ })();
102
+ }
103
+ const querySymbol = Symbol('query');
104
+ export async function getQuery({ simplify, ...options } = {}) {
105
+ return getReq()[querySymbol] ??= (async () => {
106
+ const query = getReq().url?.split('?', 2)?.[1];
107
+ return query
108
+ ? simplify
109
+ ? Object.fromEntries(new URLSearchParams(query))
110
+ : parse(query)
111
+ : {};
112
+ })();
113
+ }
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxVQUFVLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFDeEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLElBQUksQ0FBQTtBQUN4QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sU0FBUyxDQUFBO0FBSzlCLElBQUksd0JBQXdCLEdBQXNCLEVBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUMsQ0FBQSxDQUFDLFFBQVE7QUFDN0UsTUFBTSxVQUFVLDJCQUEyQixDQUFDLE9BQW1DO0lBQzlFLHdCQUF3QixHQUFHLEVBQUMsR0FBRyx3QkFBd0IsRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFBO0FBQ3JFLENBQUM7QUFDRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtBQUM3QyxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxPQUFvQztJQUNuRSxNQUFNLEVBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxHQUFHLHdCQUF3QixFQUFFLEdBQUcsT0FBTyxFQUFDLENBQUE7SUFDekQsTUFBTSxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUE7SUFDcEIsT0FBTyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQzVDOzs7OztXQUtHO1FBQ0YsK0ZBQStGO1FBQ2hHLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDN0UsSUFDQyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssU0FBUztlQUMzQyxLQUFLLENB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
package/esm/dx.d.ts CHANGED
@@ -1,64 +1,17 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  /// <reference types="node" resolution-mode="require"/>
3
+ /// <reference types="node" resolution-mode="require"/>
3
4
  import { Readable } from 'node:stream';
4
- export declare const dxContext: {
5
- readonly value: {
6
- charset?: BufferEncoding | undefined;
7
- jsonBeautify?: boolean | undefined;
8
- disableEtag?: boolean | undefined;
9
- } & ({
10
- type: 'text';
11
- data: string;
12
- } | {
13
- type: 'html';
14
- data: string;
15
- } | {
16
- type: 'buffer';
17
- data: Buffer;
18
- } | {
19
- type: 'json';
20
- data: any;
21
- } | {
22
- type: 'redirect';
23
- data: string;
24
- } | {
25
- type: 'nodeStream';
26
- data: Readable;
27
- } | {
28
- type: 'webStream';
29
- data: ReadableStream;
30
- });
31
- chain(params_0?: {
32
- jsonBeautify?: boolean | undefined;
33
- disableEtag?: boolean | undefined;
34
- } | undefined): <V>(next: () => V) => Promise<any>;
35
- with(value: {
36
- charset?: BufferEncoding | undefined;
37
- jsonBeautify?: boolean | undefined;
38
- disableEtag?: boolean | undefined;
39
- } & ({
40
- type: 'text';
41
- data: string;
42
- } | {
43
- type: 'html';
44
- data: string;
45
- } | {
46
- type: 'buffer';
47
- data: Buffer;
48
- } | {
49
- type: 'json';
50
- data: any;
51
- } | {
52
- type: 'redirect';
53
- data: string;
54
- } | {
55
- type: 'nodeStream';
56
- data: Readable;
57
- } | {
58
- type: 'webStream';
59
- data: ReadableStream;
60
- })): <V_1>(next: () => V_1) => Promise<any>;
61
- };
5
+ import type { IncomingMessage, ServerResponse } from 'node:http';
6
+ interface Chainable<P extends any[] = any[], R = any, Next = (...np: any[]) => any> {
7
+ (next: Next, ...p: P): R;
8
+ }
9
+ export declare function dxServer(req: IncomingMessage, res: ServerResponse, options?: {
10
+ jsonBeautify?: boolean;
11
+ disableEtag?: boolean;
12
+ }): Chainable;
13
+ export declare function getReq(): IncomingMessage;
14
+ export declare function getRes(): ServerResponse;
62
15
  export declare function setText(text: string, { status }?: {
63
16
  status?: number;
64
17
  }): void;
@@ -79,3 +32,4 @@ export declare function setJson(json: any, { status, beautify }?: {
79
32
  beautify?: boolean;
80
33
  }): void;
81
34
  export declare function setRedirect(url: string, status: 301 | 302): void;
35
+ export {};