@trpc/server 11.0.0-alpha-tmp-export-from-main.221 → 11.0.0-alpha-tmp-export-from-main.222
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/adapters/aws-lambda/index.d.mts +68 -0
- package/dist/adapters/aws-lambda/index.d.ts +54 -6
- package/dist/adapters/aws-lambda/index.js +110 -20
- package/dist/adapters/aws-lambda/index.mjs +94 -4
- package/dist/adapters/express.d.mts +19 -0
- package/dist/adapters/express.d.ts +9 -6
- package/dist/adapters/express.js +3 -3
- package/dist/adapters/express.mjs +1 -1
- package/dist/adapters/fastify/index.d.mts +33 -0
- package/dist/adapters/fastify/index.d.ts +33 -3
- package/dist/adapters/fastify/index.js +124 -5
- package/dist/adapters/fastify/index.mjs +125 -2
- package/dist/adapters/fetch/index.d.mts +51 -0
- package/dist/adapters/fetch/index.d.ts +51 -3
- package/dist/adapters/fetch/index.js +115 -4
- package/dist/adapters/fetch/index.mjs +116 -1
- package/dist/adapters/next.d.mts +21 -0
- package/dist/adapters/next.d.ts +11 -7
- package/dist/adapters/next.js +6 -6
- package/dist/adapters/next.mjs +2 -2
- package/dist/adapters/node-http/content-type/form-data/index.d.mts +219 -0
- package/dist/adapters/node-http/content-type/form-data/index.d.ts +201 -10
- package/dist/adapters/node-http/content-type/form-data/index.js +662 -23
- package/dist/adapters/node-http/content-type/form-data/index.mjs +646 -10
- package/dist/adapters/node-http/{types.d.ts → content-type/json/index.d.mts} +21 -15
- package/dist/adapters/node-http/content-type/json/index.d.ts +89 -2
- package/dist/adapters/node-http/content-type/json/index.js +48 -7
- package/dist/adapters/node-http/content-type/json/index.mjs +44 -3
- package/dist/adapters/node-http/index.d.mts +100 -0
- package/dist/adapters/node-http/index.d.ts +100 -3
- package/dist/adapters/node-http/index.js +106 -4
- package/dist/adapters/node-http/index.mjs +107 -1
- package/dist/adapters/standalone.d.mts +21 -0
- package/dist/adapters/standalone.d.ts +11 -9
- package/dist/adapters/standalone.js +9 -5
- package/dist/adapters/standalone.mjs +2 -2
- package/dist/adapters/ws.d.mts +36 -0
- package/dist/adapters/ws.d.ts +12 -13
- package/dist/adapters/ws.js +30 -28
- package/dist/adapters/ws.mjs +12 -10
- package/dist/http.d.mts +1 -0
- package/dist/http.d.ts +1 -7
- package/dist/http.js +7 -7
- package/dist/http.mjs +1 -1
- package/dist/index.d.mts +9 -0
- package/dist/index.d.ts +5 -65
- package/dist/index.js +809 -46
- package/dist/index.mjs +798 -1
- package/dist/observable.d.mts +1 -0
- package/dist/observable.d.ts +1 -3
- package/dist/observable.js +8 -8
- package/dist/observable.mjs +1 -1
- package/dist/rpc.d.mts +1 -0
- package/dist/rpc.d.ts +1 -3
- package/dist/rpc.js +5 -5
- package/dist/rpc.mjs +1 -1
- package/dist/shared.d.mts +1 -0
- package/dist/shared.d.ts +1 -26
- package/dist/shared.js +4 -4
- package/dist/shared.mjs +1 -1
- package/dist/unstableDontImportMe.d.mts +1 -0
- package/dist/unstableDontImportMe.d.ts +1 -10
- package/dist/unstableDontImportMe.js +1549 -142
- package/dist/unstableDontImportMe.mjs +1514 -1
- package/package.json +6 -4
- package/dist/@trpc-server/http.d.ts +0 -2
- package/dist/@trpc-server/http.d.ts.map +0 -1
- package/dist/adapters/aws-lambda/index.d.ts.map +0 -1
- package/dist/adapters/aws-lambda/utils.d.ts +0 -48
- package/dist/adapters/aws-lambda/utils.d.ts.map +0 -1
- package/dist/adapters/aws-lambda/utils.js +0 -100
- package/dist/adapters/aws-lambda/utils.mjs +0 -93
- package/dist/adapters/express.d.ts.map +0 -1
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts +0 -13
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +0 -1
- package/dist/adapters/fastify/fastifyRequestHandler.js +0 -81
- package/dist/adapters/fastify/fastifyRequestHandler.mjs +0 -79
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +0 -22
- package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +0 -1
- package/dist/adapters/fastify/fastifyTRPCPlugin.js +0 -51
- package/dist/adapters/fastify/fastifyTRPCPlugin.mjs +0 -49
- package/dist/adapters/fastify/index.d.ts.map +0 -1
- package/dist/adapters/fetch/fetchRequestHandler.d.ts +0 -18
- package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +0 -1
- package/dist/adapters/fetch/fetchRequestHandler.js +0 -118
- package/dist/adapters/fetch/fetchRequestHandler.mjs +0 -116
- package/dist/adapters/fetch/index.d.ts.map +0 -1
- package/dist/adapters/fetch/types.d.ts +0 -31
- package/dist/adapters/fetch/types.d.ts.map +0 -1
- package/dist/adapters/next.d.ts.map +0 -1
- package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.d.ts +0 -70
- package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.d.ts.map +0 -1
- package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.js +0 -161
- package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.mjs +0 -157
- package/dist/adapters/node-http/content-type/form-data/index.d.ts.map +0 -1
- package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.d.ts +0 -31
- package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.d.ts.map +0 -1
- package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.js +0 -29
- package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.mjs +0 -27
- package/dist/adapters/node-http/content-type/form-data/streamSlice.d.ts +0 -16
- package/dist/adapters/node-http/content-type/form-data/streamSlice.d.ts.map +0 -1
- package/dist/adapters/node-http/content-type/form-data/streamSlice.js +0 -46
- package/dist/adapters/node-http/content-type/form-data/streamSlice.mjs +0 -44
- package/dist/adapters/node-http/content-type/form-data/uploadHandler.d.ts +0 -45
- package/dist/adapters/node-http/content-type/form-data/uploadHandler.d.ts.map +0 -1
- package/dist/adapters/node-http/content-type/form-data/uploadHandler.js +0 -30
- package/dist/adapters/node-http/content-type/form-data/uploadHandler.mjs +0 -26
- package/dist/adapters/node-http/content-type/json/getPostBody.d.ts +0 -7
- package/dist/adapters/node-http/content-type/json/getPostBody.d.ts.map +0 -1
- package/dist/adapters/node-http/content-type/json/getPostBody.js +0 -42
- package/dist/adapters/node-http/content-type/json/getPostBody.mjs +0 -40
- package/dist/adapters/node-http/content-type/json/index.d.ts.map +0 -1
- package/dist/adapters/node-http/index.d.ts.map +0 -1
- package/dist/adapters/node-http/internals/contentType.d.ts +0 -9
- package/dist/adapters/node-http/internals/contentType.d.ts.map +0 -1
- package/dist/adapters/node-http/internals/contentType.js +0 -8
- package/dist/adapters/node-http/internals/contentType.mjs +0 -6
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +0 -14
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +0 -1
- package/dist/adapters/node-http/nodeHTTPRequestHandler.js +0 -109
- package/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +0 -107
- package/dist/adapters/node-http/types.d.ts.map +0 -1
- package/dist/adapters/standalone.d.ts.map +0 -1
- package/dist/adapters/ws.d.ts.map +0 -1
- package/dist/http.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/@web3-storage_multipart-parser@1.0.0/node_modules/@web3-storage/multipart-parser/esm/src/index.js +0 -203
- package/dist/node_modules/.pnpm/@web3-storage_multipart-parser@1.0.0/node_modules/@web3-storage/multipart-parser/esm/src/index.mjs +0 -201
- package/dist/node_modules/.pnpm/@web3-storage_multipart-parser@1.0.0/node_modules/@web3-storage/multipart-parser/esm/src/search.js +0 -167
- package/dist/node_modules/.pnpm/@web3-storage_multipart-parser@1.0.0/node_modules/@web3-storage/multipart-parser/esm/src/search.mjs +0 -163
- package/dist/node_modules/.pnpm/@web3-storage_multipart-parser@1.0.0/node_modules/@web3-storage/multipart-parser/esm/src/utils.js +0 -35
- package/dist/node_modules/.pnpm/@web3-storage_multipart-parser@1.0.0/node_modules/@web3-storage/multipart-parser/esm/src/utils.mjs +0 -30
- package/dist/observable.d.ts.map +0 -1
- package/dist/rpc.d.ts.map +0 -1
- package/dist/shared.d.ts.map +0 -1
- package/dist/unstableDontImportMe.d.ts.map +0 -1
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { resolveHTTPResponse, getBatchStreamFormatter } from '@trpc/core';
|
|
2
|
-
import { nodeHTTPJSONContentTypeHandler } from './content-type/json/index.mjs';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* If you're making an adapter for tRPC and looking at this file for reference, you should import types and functions from `@trpc/server` and `@trpc/server/http`
|
|
6
|
-
*
|
|
7
|
-
* Do **not** import from `@trpc/core`
|
|
8
|
-
* @example
|
|
9
|
-
* ```ts
|
|
10
|
-
* import type { AnyTRPCRouter } from '@trpc/server'
|
|
11
|
-
* import type { HTTPBaseHandlerOptions } from '@trpc/server/http'
|
|
12
|
-
* ```
|
|
13
|
-
*/ /* eslint-disable @typescript-eslint/no-non-null-assertion */ // @trpc/server
|
|
14
|
-
const defaultJSONContentTypeHandler = nodeHTTPJSONContentTypeHandler();
|
|
15
|
-
async function nodeHTTPRequestHandler(opts) {
|
|
16
|
-
const handleViaMiddleware = opts.middleware ?? ((_req, _res, next)=>next());
|
|
17
|
-
return handleViaMiddleware(opts.req, opts.res, async (err)=>{
|
|
18
|
-
if (err) throw err;
|
|
19
|
-
//
|
|
20
|
-
// Build tRPC dependencies
|
|
21
|
-
const createContext = async (innerOpts)=>{
|
|
22
|
-
return await opts.createContext?.({
|
|
23
|
-
...opts,
|
|
24
|
-
...innerOpts
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
|
-
const query = opts.req.query ? new URLSearchParams(opts.req.query) : new URLSearchParams(opts.req.url.split('?')[1]);
|
|
28
|
-
const jsonContentTypeHandler = defaultJSONContentTypeHandler;
|
|
29
|
-
const contentTypeHandlers = opts.experimental_contentTypeHandlers ?? [
|
|
30
|
-
jsonContentTypeHandler
|
|
31
|
-
];
|
|
32
|
-
const contentTypeHandler = contentTypeHandlers.find((handler)=>handler.isMatch({
|
|
33
|
-
...opts,
|
|
34
|
-
query
|
|
35
|
-
})) ?? // fallback to json
|
|
36
|
-
jsonContentTypeHandler;
|
|
37
|
-
const bodyResult = await contentTypeHandler.getBody({
|
|
38
|
-
...opts,
|
|
39
|
-
query
|
|
40
|
-
});
|
|
41
|
-
const req = {
|
|
42
|
-
method: opts.req.method,
|
|
43
|
-
headers: opts.req.headers,
|
|
44
|
-
query,
|
|
45
|
-
body: bodyResult.ok ? bodyResult.data : undefined
|
|
46
|
-
};
|
|
47
|
-
let isStream = false;
|
|
48
|
-
let formatter;
|
|
49
|
-
const unstable_onHead = (head, isStreaming)=>{
|
|
50
|
-
if ('status' in head && (!opts.res.statusCode || opts.res.statusCode === 200)) {
|
|
51
|
-
opts.res.statusCode = head.status;
|
|
52
|
-
}
|
|
53
|
-
for (const [key, value] of Object.entries(head.headers ?? {})){
|
|
54
|
-
/* istanbul ignore if -- @preserve */ if (typeof value === 'undefined') {
|
|
55
|
-
continue;
|
|
56
|
-
}
|
|
57
|
-
opts.res.setHeader(key, value);
|
|
58
|
-
}
|
|
59
|
-
if (isStreaming) {
|
|
60
|
-
opts.res.setHeader('Transfer-Encoding', 'chunked');
|
|
61
|
-
const vary = opts.res.getHeader('Vary');
|
|
62
|
-
opts.res.setHeader('Vary', vary ? 'trpc-batch-mode, ' + vary : 'trpc-batch-mode');
|
|
63
|
-
isStream = true;
|
|
64
|
-
formatter = getBatchStreamFormatter();
|
|
65
|
-
opts.res.flushHeaders();
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
const unstable_onChunk = ([index, string])=>{
|
|
69
|
-
if (index === -1) {
|
|
70
|
-
/**
|
|
71
|
-
* Full response, no streaming. This can happen
|
|
72
|
-
* - if the response is an error
|
|
73
|
-
* - if response is empty (HEAD request)
|
|
74
|
-
*/ opts.res.end(string);
|
|
75
|
-
} else {
|
|
76
|
-
opts.res.write(formatter(index, string));
|
|
77
|
-
opts.res.flush?.();
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
await resolveHTTPResponse({
|
|
81
|
-
batching: opts.batching,
|
|
82
|
-
responseMeta: opts.responseMeta,
|
|
83
|
-
path: opts.path,
|
|
84
|
-
createContext,
|
|
85
|
-
router: opts.router,
|
|
86
|
-
req,
|
|
87
|
-
error: bodyResult.ok ? null : bodyResult.error,
|
|
88
|
-
preprocessedBody: bodyResult.ok ? bodyResult.preprocessed : false,
|
|
89
|
-
onError (o) {
|
|
90
|
-
opts?.onError?.({
|
|
91
|
-
...o,
|
|
92
|
-
req: opts.req
|
|
93
|
-
});
|
|
94
|
-
},
|
|
95
|
-
contentTypeHandler,
|
|
96
|
-
unstable_onHead,
|
|
97
|
-
unstable_onChunk
|
|
98
|
-
});
|
|
99
|
-
if (isStream) {
|
|
100
|
-
opts.res.write(formatter.end());
|
|
101
|
-
opts.res.end();
|
|
102
|
-
}
|
|
103
|
-
return opts.res;
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
export { nodeHTTPRequestHandler };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/node-http/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,UAAU,QAAQ;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;CACtE;AAED,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG;IAC9C,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG;IAC9C;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,2BAA2B,CACrC,OAAO,SAAS,SAAS,EACzB,QAAQ,EACR,SAAS,IACP,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,GAC1C;IACE;;QAEI;IACJ,aAAa,CAAC,EAAE,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CACvE,GACD;IACE;;QAEI;IACJ,aAAa,EAAE,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CACtE,CAAC;AAEN;;GAEG;AACH,KAAK,iBAAiB,CACpB,QAAQ,SAAS,eAAe,GAAG,eAAe,EAClD,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,IACnD,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,GAAG,KAAK,IAAI,CAAC;AAEtE,MAAM,MAAM,sBAAsB,CAChC,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,eAAe,EAChC,SAAS,SAAS,gBAAgB,IAChC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAC3C,2BAA2B,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG;IAC1D;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC,CAAC,EAAE,0BAA0B,CAC3D,QAAQ,EACR,SAAS,CACV,EAAE,CAAC;CACL,CAAC;AAEJ,MAAM,MAAM,6BAA6B,CACvC,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,eAAe,EAChC,SAAS,SAAS,gBAAgB,IAChC;IACF,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEzD,MAAM,MAAM,8BAA8B,CAAC,QAAQ,EAAE,SAAS,IAAI;IAChE,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,SAAS,EACzB,QAAQ,EACR,SAAS,IACP,CACF,IAAI,EAAE,8BAA8B,CAAC,QAAQ,EAAE,SAAS,CAAC,KACtD,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../src/adapters/standalone.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EACV,8BAA8B,EAC9B,sBAAsB,EACvB,MAAM,aAAa,CAAC;AAGrB,MAAM,MAAM,wBAAwB,CAAC,OAAO,SAAS,SAAS,IAC5D,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAE7E,MAAM,MAAM,wBAAwB,GAAG,8BAA8B,CACnE,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,CACpB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,SAAS,EACzD,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,SAEpB,KAAK,eAAe,OAAO,KAAK,cAAc,mBAalE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,SAAS,SAAS,EACxD,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,wEAIxC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/adapters/ws.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAE5C,OAAO,KAAK,EACV,kBAAkB,EAElB,YAAY,EAKb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAUxD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAQlE;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,8BAA8B,CAAC,eAAe,EAAE,EAAE,CAAC,SAAS,CAAC,EAC7D,MAAM,CACP,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,SAAS,IAAI,CAC1D,IAAI,EAAE,yBAAyB,KAC5B,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAE/C;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,SAAS,IAAI,kBAAkB,CAC3E,OAAO,EACP,eAAe,CAChB,GACC,CAAC,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,GACvC;IACE;;QAEI;IACJ,aAAa,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;CAC7C,GACD;IACE;;QAEI;IACJ,aAAa,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;CAC5C,CAAC,GAAG;IACP,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;CAC1B,CAAC;AAEJ,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;;EAwQjC"}
|
package/dist/http.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,eAAe,EACf,aAAa,EACb,kCAAkC,EAClC,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EACV,sBAAsB,EACtB,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS;AACT;;GAEG;AACH,iCAAiC,EACjC,iCAAiC,IAAI,2BAA2B,EAChE,QAAQ,EAGR,aAAa,IAAI,iBAAiB,EAClC,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,IAAI,mBAAmB,EACtC,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,+BAA+B,EACpC,KAAK,kCAAkC,EACvC,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,SAAS,IAAI,aAAa,EAC/B,KAAK,qBAAqB,IAAI,yBAAyB,EACvD,KAAK,uBAAuB,IAAI,2BAA2B,EAC3D,KAAK,aAAa,IAAI,iBAAiB,EACvC,KAAK,oBAAoB,IAAI,wBAAwB,EACrD,KAAK,iBAAiB,IAAI,qBAAqB,EAC/C,KAAK,qBAAqB,IAAI,yBAAyB,EACvD,KAAK,aAAa,IAAI,iBAAiB,EACvC,KAAK,wBAAwB,IAAI,4BAA4B,GAC9D,MAAM,YAAY,CAAC;AAEpB,YAAY;AACV;;GAEG;AACH,YAAY;AACZ;;GAEG;AACH,SAAS;AACT;;GAEG;AACH,qBAAqB;AACrB;;GAEG;AACH,uBAAuB;AAEvB;;GAEG;AACH,IAAI;AAEJ;;GAEG;AACH,WAAW;AACX;;GAEG;AACH,aAAa;AACb;;GAEG;AACH,oBAAoB;AAEpB;;GAEG;AACH,iBAAiB;AACjB;;GAEG;AACH,qBAAqB;AACrB;;GAEG;AACH,aAAa;AACb;;GAEG;AACH,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAEpB,OAAO;AACL;;GAEG;AACH,aAAa;AAEb;;GAEG;AACH,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,MAAM,oBAAoB,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IACxE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC"}
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var search = require('./search.js');
|
|
4
|
-
var utils = require('./utils.js');
|
|
5
|
-
|
|
6
|
-
const mergeArrays2 = Function.prototype.apply.bind(utils.mergeArrays, undefined);
|
|
7
|
-
const dash = utils.stringToArray('--');
|
|
8
|
-
const CRLF = utils.stringToArray('\r\n');
|
|
9
|
-
function parseContentDisposition(header) {
|
|
10
|
-
const parts = header.split(';').map(part => part.trim());
|
|
11
|
-
if (parts.shift() !== 'form-data') {
|
|
12
|
-
throw new Error('malformed content-disposition header: missing "form-data" in `' + JSON.stringify(parts) + '`');
|
|
13
|
-
}
|
|
14
|
-
const out = {};
|
|
15
|
-
for (const part of parts) {
|
|
16
|
-
const kv = part.split('=', 2);
|
|
17
|
-
if (kv.length !== 2) {
|
|
18
|
-
throw new Error('malformed content-disposition header: key-value pair not found - ' + part + ' in `' + header + '`');
|
|
19
|
-
}
|
|
20
|
-
const [name, value] = kv;
|
|
21
|
-
if (value[0] === '"' && value[value.length - 1] === '"') {
|
|
22
|
-
out[name] = value.slice(1, -1).replace(/\\"/g, '"');
|
|
23
|
-
} else if (value[0] !== '"' && value[value.length - 1] !== '"') {
|
|
24
|
-
out[name] = value;
|
|
25
|
-
} else if (value[0] === '"' && value[value.length - 1] !== '"' || value[0] !== '"' && value[value.length - 1] === '"') {
|
|
26
|
-
throw new Error('malformed content-disposition header: mismatched quotations in `' + header + '`');
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
if (!out.name) {
|
|
30
|
-
throw new Error('malformed content-disposition header: missing field name in `' + header + '`');
|
|
31
|
-
}
|
|
32
|
-
return out;
|
|
33
|
-
}
|
|
34
|
-
function parsePartHeaders(lines) {
|
|
35
|
-
const entries = [];
|
|
36
|
-
let disposition = false;
|
|
37
|
-
let line;
|
|
38
|
-
while (typeof (line = lines.shift()) !== 'undefined') {
|
|
39
|
-
const colon = line.indexOf(':');
|
|
40
|
-
if (colon === -1) {
|
|
41
|
-
throw new Error('malformed multipart-form header: missing colon');
|
|
42
|
-
}
|
|
43
|
-
const header = line.slice(0, colon).trim().toLowerCase();
|
|
44
|
-
const value = line.slice(colon + 1).trim();
|
|
45
|
-
switch (header) {
|
|
46
|
-
case 'content-disposition':
|
|
47
|
-
disposition = true;
|
|
48
|
-
entries.push(...Object.entries(parseContentDisposition(value)));
|
|
49
|
-
break;
|
|
50
|
-
case 'content-type':
|
|
51
|
-
entries.push([
|
|
52
|
-
'contentType',
|
|
53
|
-
value
|
|
54
|
-
]);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
if (!disposition) {
|
|
58
|
-
throw new Error('malformed multipart-form header: missing content-disposition');
|
|
59
|
-
}
|
|
60
|
-
return Object.fromEntries(entries);
|
|
61
|
-
}
|
|
62
|
-
async function readHeaderLines(it, needle) {
|
|
63
|
-
let firstChunk = true;
|
|
64
|
-
let lastTokenWasMatch = false;
|
|
65
|
-
const headerLines = [[]];
|
|
66
|
-
const crlfSearch = new search.StreamSearch(CRLF);
|
|
67
|
-
for (;;) {
|
|
68
|
-
const result = await it.next();
|
|
69
|
-
if (result.done) {
|
|
70
|
-
throw new Error('malformed multipart-form data: unexpected end of stream');
|
|
71
|
-
}
|
|
72
|
-
if (firstChunk && result.value !== search.MATCH && utils.arraysEqual(result.value.slice(0, 2), dash)) {
|
|
73
|
-
return [
|
|
74
|
-
undefined,
|
|
75
|
-
new Uint8Array()
|
|
76
|
-
];
|
|
77
|
-
}
|
|
78
|
-
let chunk;
|
|
79
|
-
if (result.value !== search.MATCH) {
|
|
80
|
-
chunk = result.value;
|
|
81
|
-
} else if (!lastTokenWasMatch) {
|
|
82
|
-
chunk = needle;
|
|
83
|
-
} else {
|
|
84
|
-
throw new Error('malformed multipart-form data: unexpected boundary');
|
|
85
|
-
}
|
|
86
|
-
if (!chunk.length) {
|
|
87
|
-
continue;
|
|
88
|
-
}
|
|
89
|
-
if (firstChunk) {
|
|
90
|
-
firstChunk = false;
|
|
91
|
-
}
|
|
92
|
-
const tokens = crlfSearch.feed(chunk);
|
|
93
|
-
for (const [i, token] of tokens.entries()) {
|
|
94
|
-
const isMatch = token === search.MATCH;
|
|
95
|
-
if (!isMatch && !token.length) {
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
if (lastTokenWasMatch && isMatch) {
|
|
99
|
-
tokens.push(crlfSearch.end());
|
|
100
|
-
return [
|
|
101
|
-
headerLines.filter(chunks => chunks.length).map(mergeArrays2).map(utils.arrayToString),
|
|
102
|
-
utils.mergeArrays(...tokens.slice(i + 1).map(token => token === search.MATCH ? CRLF : token))
|
|
103
|
-
];
|
|
104
|
-
}
|
|
105
|
-
if (lastTokenWasMatch = isMatch) {
|
|
106
|
-
headerLines.push([]);
|
|
107
|
-
} else {
|
|
108
|
-
headerLines[headerLines.length - 1].push(token);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
async function* streamMultipart(body, boundary) {
|
|
114
|
-
const needle = utils.mergeArrays(dash, utils.stringToArray(boundary));
|
|
115
|
-
const it = new search.ReadableStreamSearch(needle, body)[Symbol.asyncIterator]();
|
|
116
|
-
for (;;) {
|
|
117
|
-
const result = await it.next();
|
|
118
|
-
if (result.done) {
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
if (result.value === search.MATCH) {
|
|
122
|
-
break;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
const crlfSearch = new search.StreamSearch(CRLF);
|
|
126
|
-
for (;;) {
|
|
127
|
-
const [headerLines, tail] = await readHeaderLines(it, needle);
|
|
128
|
-
if (!headerLines) {
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
async function nextToken() {
|
|
132
|
-
const result = await it.next();
|
|
133
|
-
if (result.done) {
|
|
134
|
-
throw new Error('malformed multipart-form data: unexpected end of stream');
|
|
135
|
-
}
|
|
136
|
-
return result;
|
|
137
|
-
}
|
|
138
|
-
let trailingCRLF = false;
|
|
139
|
-
function feedChunk(chunk) {
|
|
140
|
-
const chunks = [];
|
|
141
|
-
for (const token of crlfSearch.feed(chunk)) {
|
|
142
|
-
if (trailingCRLF) {
|
|
143
|
-
chunks.push(CRLF);
|
|
144
|
-
}
|
|
145
|
-
if (!(trailingCRLF = token === search.MATCH)) {
|
|
146
|
-
chunks.push(token);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
return utils.mergeArrays(...chunks);
|
|
150
|
-
}
|
|
151
|
-
let done = false;
|
|
152
|
-
async function nextChunk() {
|
|
153
|
-
const result = await nextToken();
|
|
154
|
-
let chunk;
|
|
155
|
-
if (result.value !== search.MATCH) {
|
|
156
|
-
chunk = result.value;
|
|
157
|
-
} else if (!trailingCRLF) {
|
|
158
|
-
chunk = CRLF;
|
|
159
|
-
} else {
|
|
160
|
-
done = true;
|
|
161
|
-
return { value: crlfSearch.end() };
|
|
162
|
-
}
|
|
163
|
-
return { value: feedChunk(chunk) };
|
|
164
|
-
}
|
|
165
|
-
const bufferedChunks = [{ value: feedChunk(tail) }];
|
|
166
|
-
yield {
|
|
167
|
-
...parsePartHeaders(headerLines),
|
|
168
|
-
data: {
|
|
169
|
-
[Symbol.asyncIterator]() {
|
|
170
|
-
return this;
|
|
171
|
-
},
|
|
172
|
-
async next() {
|
|
173
|
-
for (;;) {
|
|
174
|
-
const result = bufferedChunks.shift();
|
|
175
|
-
if (!result) {
|
|
176
|
-
break;
|
|
177
|
-
}
|
|
178
|
-
if (result.value.length > 0) {
|
|
179
|
-
return result;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
for (;;) {
|
|
183
|
-
if (done) {
|
|
184
|
-
return {
|
|
185
|
-
done,
|
|
186
|
-
value: undefined
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
const result = await nextChunk();
|
|
190
|
-
if (result.value.length > 0) {
|
|
191
|
-
return result;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
};
|
|
197
|
-
while (!done) {
|
|
198
|
-
bufferedChunks.push(await nextChunk());
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
exports.streamMultipart = streamMultipart;
|
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
import { ReadableStreamSearch, MATCH, StreamSearch } from './search.mjs';
|
|
2
|
-
import { mergeArrays, stringToArray, arraysEqual, arrayToString } from './utils.mjs';
|
|
3
|
-
|
|
4
|
-
const mergeArrays2 = Function.prototype.apply.bind(mergeArrays, undefined);
|
|
5
|
-
const dash = stringToArray('--');
|
|
6
|
-
const CRLF = stringToArray('\r\n');
|
|
7
|
-
function parseContentDisposition(header) {
|
|
8
|
-
const parts = header.split(';').map(part => part.trim());
|
|
9
|
-
if (parts.shift() !== 'form-data') {
|
|
10
|
-
throw new Error('malformed content-disposition header: missing "form-data" in `' + JSON.stringify(parts) + '`');
|
|
11
|
-
}
|
|
12
|
-
const out = {};
|
|
13
|
-
for (const part of parts) {
|
|
14
|
-
const kv = part.split('=', 2);
|
|
15
|
-
if (kv.length !== 2) {
|
|
16
|
-
throw new Error('malformed content-disposition header: key-value pair not found - ' + part + ' in `' + header + '`');
|
|
17
|
-
}
|
|
18
|
-
const [name, value] = kv;
|
|
19
|
-
if (value[0] === '"' && value[value.length - 1] === '"') {
|
|
20
|
-
out[name] = value.slice(1, -1).replace(/\\"/g, '"');
|
|
21
|
-
} else if (value[0] !== '"' && value[value.length - 1] !== '"') {
|
|
22
|
-
out[name] = value;
|
|
23
|
-
} else if (value[0] === '"' && value[value.length - 1] !== '"' || value[0] !== '"' && value[value.length - 1] === '"') {
|
|
24
|
-
throw new Error('malformed content-disposition header: mismatched quotations in `' + header + '`');
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
if (!out.name) {
|
|
28
|
-
throw new Error('malformed content-disposition header: missing field name in `' + header + '`');
|
|
29
|
-
}
|
|
30
|
-
return out;
|
|
31
|
-
}
|
|
32
|
-
function parsePartHeaders(lines) {
|
|
33
|
-
const entries = [];
|
|
34
|
-
let disposition = false;
|
|
35
|
-
let line;
|
|
36
|
-
while (typeof (line = lines.shift()) !== 'undefined') {
|
|
37
|
-
const colon = line.indexOf(':');
|
|
38
|
-
if (colon === -1) {
|
|
39
|
-
throw new Error('malformed multipart-form header: missing colon');
|
|
40
|
-
}
|
|
41
|
-
const header = line.slice(0, colon).trim().toLowerCase();
|
|
42
|
-
const value = line.slice(colon + 1).trim();
|
|
43
|
-
switch (header) {
|
|
44
|
-
case 'content-disposition':
|
|
45
|
-
disposition = true;
|
|
46
|
-
entries.push(...Object.entries(parseContentDisposition(value)));
|
|
47
|
-
break;
|
|
48
|
-
case 'content-type':
|
|
49
|
-
entries.push([
|
|
50
|
-
'contentType',
|
|
51
|
-
value
|
|
52
|
-
]);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
if (!disposition) {
|
|
56
|
-
throw new Error('malformed multipart-form header: missing content-disposition');
|
|
57
|
-
}
|
|
58
|
-
return Object.fromEntries(entries);
|
|
59
|
-
}
|
|
60
|
-
async function readHeaderLines(it, needle) {
|
|
61
|
-
let firstChunk = true;
|
|
62
|
-
let lastTokenWasMatch = false;
|
|
63
|
-
const headerLines = [[]];
|
|
64
|
-
const crlfSearch = new StreamSearch(CRLF);
|
|
65
|
-
for (;;) {
|
|
66
|
-
const result = await it.next();
|
|
67
|
-
if (result.done) {
|
|
68
|
-
throw new Error('malformed multipart-form data: unexpected end of stream');
|
|
69
|
-
}
|
|
70
|
-
if (firstChunk && result.value !== MATCH && arraysEqual(result.value.slice(0, 2), dash)) {
|
|
71
|
-
return [
|
|
72
|
-
undefined,
|
|
73
|
-
new Uint8Array()
|
|
74
|
-
];
|
|
75
|
-
}
|
|
76
|
-
let chunk;
|
|
77
|
-
if (result.value !== MATCH) {
|
|
78
|
-
chunk = result.value;
|
|
79
|
-
} else if (!lastTokenWasMatch) {
|
|
80
|
-
chunk = needle;
|
|
81
|
-
} else {
|
|
82
|
-
throw new Error('malformed multipart-form data: unexpected boundary');
|
|
83
|
-
}
|
|
84
|
-
if (!chunk.length) {
|
|
85
|
-
continue;
|
|
86
|
-
}
|
|
87
|
-
if (firstChunk) {
|
|
88
|
-
firstChunk = false;
|
|
89
|
-
}
|
|
90
|
-
const tokens = crlfSearch.feed(chunk);
|
|
91
|
-
for (const [i, token] of tokens.entries()) {
|
|
92
|
-
const isMatch = token === MATCH;
|
|
93
|
-
if (!isMatch && !token.length) {
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
if (lastTokenWasMatch && isMatch) {
|
|
97
|
-
tokens.push(crlfSearch.end());
|
|
98
|
-
return [
|
|
99
|
-
headerLines.filter(chunks => chunks.length).map(mergeArrays2).map(arrayToString),
|
|
100
|
-
mergeArrays(...tokens.slice(i + 1).map(token => token === MATCH ? CRLF : token))
|
|
101
|
-
];
|
|
102
|
-
}
|
|
103
|
-
if (lastTokenWasMatch = isMatch) {
|
|
104
|
-
headerLines.push([]);
|
|
105
|
-
} else {
|
|
106
|
-
headerLines[headerLines.length - 1].push(token);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
async function* streamMultipart(body, boundary) {
|
|
112
|
-
const needle = mergeArrays(dash, stringToArray(boundary));
|
|
113
|
-
const it = new ReadableStreamSearch(needle, body)[Symbol.asyncIterator]();
|
|
114
|
-
for (;;) {
|
|
115
|
-
const result = await it.next();
|
|
116
|
-
if (result.done) {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
if (result.value === MATCH) {
|
|
120
|
-
break;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
const crlfSearch = new StreamSearch(CRLF);
|
|
124
|
-
for (;;) {
|
|
125
|
-
const [headerLines, tail] = await readHeaderLines(it, needle);
|
|
126
|
-
if (!headerLines) {
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
async function nextToken() {
|
|
130
|
-
const result = await it.next();
|
|
131
|
-
if (result.done) {
|
|
132
|
-
throw new Error('malformed multipart-form data: unexpected end of stream');
|
|
133
|
-
}
|
|
134
|
-
return result;
|
|
135
|
-
}
|
|
136
|
-
let trailingCRLF = false;
|
|
137
|
-
function feedChunk(chunk) {
|
|
138
|
-
const chunks = [];
|
|
139
|
-
for (const token of crlfSearch.feed(chunk)) {
|
|
140
|
-
if (trailingCRLF) {
|
|
141
|
-
chunks.push(CRLF);
|
|
142
|
-
}
|
|
143
|
-
if (!(trailingCRLF = token === MATCH)) {
|
|
144
|
-
chunks.push(token);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return mergeArrays(...chunks);
|
|
148
|
-
}
|
|
149
|
-
let done = false;
|
|
150
|
-
async function nextChunk() {
|
|
151
|
-
const result = await nextToken();
|
|
152
|
-
let chunk;
|
|
153
|
-
if (result.value !== MATCH) {
|
|
154
|
-
chunk = result.value;
|
|
155
|
-
} else if (!trailingCRLF) {
|
|
156
|
-
chunk = CRLF;
|
|
157
|
-
} else {
|
|
158
|
-
done = true;
|
|
159
|
-
return { value: crlfSearch.end() };
|
|
160
|
-
}
|
|
161
|
-
return { value: feedChunk(chunk) };
|
|
162
|
-
}
|
|
163
|
-
const bufferedChunks = [{ value: feedChunk(tail) }];
|
|
164
|
-
yield {
|
|
165
|
-
...parsePartHeaders(headerLines),
|
|
166
|
-
data: {
|
|
167
|
-
[Symbol.asyncIterator]() {
|
|
168
|
-
return this;
|
|
169
|
-
},
|
|
170
|
-
async next() {
|
|
171
|
-
for (;;) {
|
|
172
|
-
const result = bufferedChunks.shift();
|
|
173
|
-
if (!result) {
|
|
174
|
-
break;
|
|
175
|
-
}
|
|
176
|
-
if (result.value.length > 0) {
|
|
177
|
-
return result;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
for (;;) {
|
|
181
|
-
if (done) {
|
|
182
|
-
return {
|
|
183
|
-
done,
|
|
184
|
-
value: undefined
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
const result = await nextChunk();
|
|
188
|
-
if (result.value.length > 0) {
|
|
189
|
-
return result;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
};
|
|
195
|
-
while (!done) {
|
|
196
|
-
bufferedChunks.push(await nextChunk());
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
export { streamMultipart };
|