@bepalo/spine 1.0.5 → 1.1.7
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/README.md +70 -120
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/parsers.d.ts +74 -21
- package/dist/cjs/parsers.d.ts.map +1 -1
- package/dist/cjs/parsers.js +711 -436
- package/dist/cjs/parsers.js.map +1 -1
- package/dist/cjs/router copy.d.ts +124 -0
- package/dist/cjs/router copy.d.ts.map +1 -0
- package/dist/cjs/router copy.js +1394 -0
- package/dist/cjs/router copy.js.map +1 -0
- package/dist/cjs/router.d.ts.map +1 -1
- package/dist/cjs/router.js +65 -49
- package/dist/cjs/router.js.map +1 -1
- package/dist/cjs/types.d.ts +5 -1
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/parsers.d.ts +74 -21
- package/dist/parsers.d.ts.map +1 -1
- package/dist/parsers.js +711 -436
- package/dist/parsers.js.map +1 -1
- package/dist/router copy.d.ts +124 -0
- package/dist/router copy.d.ts.map +1 -0
- package/dist/router copy.js +1394 -0
- package/dist/router copy.js.map +1 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +65 -49
- package/dist/router.js.map +1 -1
- package/dist/types.d.ts +5 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -20,24 +20,24 @@ Spine is a low-level routing layer built around the Web `Request`/`Response` API
|
|
|
20
20
|
|
|
21
21
|
( The Router Pipeline )
|
|
22
22
|
|
|
23
|
-
┌───────────────────────┐
|
|
24
|
-
▼ │
|
|
25
|
-
┌──────┴───────┐ │
|
|
26
|
-
┌─────────│ Filters │─────────┐ <request>
|
|
27
|
-
│ └──────┬───────┘ │ │
|
|
28
|
-
│ <no match nor response> │ │
|
|
29
|
-
│ ▼ │ │
|
|
30
|
-
│ ┌──────┴───────┐ │ ┌──┴────────┐
|
|
31
|
-
├─────────│ Handlers │─────────┤ │ Server │◄───┐
|
|
32
|
-
│ └──────┬───────┘ │ └──┬─────┬──┘ │
|
|
33
|
-
│ <no match nor response> │ ▲ │ <request>
|
|
34
|
-
<error> ▼ │ │ <response> │
|
|
35
|
-
│ ┌──────┴───────┐ │ │ ▼ │
|
|
36
|
-
├─────────│ Fallbacks │─────────┤ │ ┌─┴───────┴─┐
|
|
37
|
-
▼ └──────┬───────┘ │ │ │ Client │
|
|
38
|
-
┌─────┴──────┐ │ ┌──<response>─┘ │ └───────────┘
|
|
39
|
-
│ Catchers │ ▼ ▼ │
|
|
40
|
-
└─────┬──────┘ ┌──────┴───┴───┐ │
|
|
23
|
+
┌───────────────────────┐
|
|
24
|
+
▼ │
|
|
25
|
+
┌──────┴───────┐ │
|
|
26
|
+
┌─────────│ Filters │─────────┐ <request>
|
|
27
|
+
│ └──────┬───────┘ │ │
|
|
28
|
+
│ <no match nor response> │ │
|
|
29
|
+
│ ▼ │ │
|
|
30
|
+
│ ┌──────┴───────┐ │ ┌──┴────────┐
|
|
31
|
+
├─────────│ Handlers │─────────┤ │ Server │◄───┐
|
|
32
|
+
│ └──────┬───────┘ │ └──┬─────┬──┘ │
|
|
33
|
+
│ <no match nor response> │ ▲ │ <request>
|
|
34
|
+
<error> ▼ │ │ <response> │
|
|
35
|
+
│ ┌──────┴───────┐ │ │ ▼ │
|
|
36
|
+
├─────────│ Fallbacks │─────────┤ │ ┌─┴───────┴─┐
|
|
37
|
+
▼ └──────┬───────┘ │ │ │ Client │
|
|
38
|
+
┌─────┴──────┐ │ ┌──<response>─┘ │ └───────────┘
|
|
39
|
+
│ Catchers │ ▼ ▼ │
|
|
40
|
+
└─────┬──────┘ ┌──────┴───┴───┐ │
|
|
41
41
|
└────────►│ Afters │───────────────┘
|
|
42
42
|
<error-response> └──────────────┘ <final-response>
|
|
43
43
|
```
|
|
@@ -46,22 +46,23 @@ Spine is a low-level routing layer built around the Web `Request`/`Response` API
|
|
|
46
46
|
Benchmark Bun.serve baseline: @bepalo/spine vs Hono
|
|
47
47
|
Bun runtime · localhost · 20,000 sequential requests per route
|
|
48
48
|
|
|
49
|
-
Bun Spine Hono
|
|
50
|
-
|
|
51
|
-
/ 9.91k 8.64k 8.19k
|
|
52
|
-
exact 10.33k 8.42k 8.19k
|
|
53
|
-
long exact 10.34k 8.28k 7.99k
|
|
54
|
-
one param 9.99k 8.16k 7.86k
|
|
55
|
-
two params 10.17k 8.04k 7.66k
|
|
56
|
-
three params 9.99k 7.68k 6.76k
|
|
57
|
-
six params 9.88k 7.91k 7.51k
|
|
58
|
-
ten params 9.78k 7.90k 7.12k
|
|
59
|
-
|
|
60
|
-
Average 10.05k
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
49
|
+
Bun Spine Hono ┌──────────────┐
|
|
50
|
+
─────────────────────────────────────────────── │ Server │
|
|
51
|
+
/ 9.91k 8.64k 8.19k └──────┬───────┘
|
|
52
|
+
exact 10.33k 8.42k 8.19k Request
|
|
53
|
+
long exact 10.34k 8.28k 7.99k ▼
|
|
54
|
+
one param 9.99k 8.16k 7.86k ┌──────────────┐
|
|
55
|
+
two params 10.17k 8.04k 7.66k │ Spine │
|
|
56
|
+
three params 9.99k 7.68k 6.76k │ Router │
|
|
57
|
+
six params 9.88k 7.91k 7.51k └──────┬───────┘
|
|
58
|
+
ten params 9.78k 7.90k 7.12k Response
|
|
59
|
+
▼
|
|
60
|
+
Average 10.05k 8.13k 7.65k ┌──────────────┐
|
|
61
|
+
ops/s │ Server │
|
|
62
|
+
└──────────────┘
|
|
63
|
+
████████████████████████████████████████ Bun
|
|
64
|
+
█████████████████████████████████ Spine
|
|
65
|
+
████████████████████████████████ Hono
|
|
65
66
|
```
|
|
66
67
|
|
|
67
68
|
## Why Spine?
|
|
@@ -701,100 +702,49 @@ It can even handle edge cases like boundary across multiple chunks and very smal
|
|
|
701
702
|
|
|
702
703
|
```ts
|
|
703
704
|
router.post("/upload", [
|
|
704
|
-
|
|
705
|
-
//
|
|
706
|
-
|
|
707
|
-
//
|
|
708
|
-
//
|
|
709
|
-
{
|
|
710
|
-
totalChunks: number;
|
|
711
|
-
prevProgress: number;
|
|
712
|
-
handle: Bun.FileBlob;
|
|
713
|
-
writer: Bun.FileSink;
|
|
714
|
-
}
|
|
715
|
-
>({
|
|
716
|
-
// // same as default implementation
|
|
717
|
-
// idGenerator: () => toBase64UUID(crypto.randomUUID()),
|
|
718
|
-
// idGenerator: ({ name }) => name,
|
|
719
|
-
|
|
720
|
-
onHeader: async (ctx, { headers, id, name, filename, file }) => {
|
|
721
|
-
console.log("[Upload](onHeader)", id);
|
|
722
|
-
// ctx.currentId = "upload_" + toBase64UUID(crypto.randomUUID());
|
|
723
|
-
if (file) {
|
|
724
|
-
const ext = file.name.substring(file.name.lastIndexOf("."));
|
|
725
|
-
const uploadPath = process.cwd() + "/uploads/" + id + ext;
|
|
726
|
-
const targetFile = Bun.file(uploadPath);
|
|
727
|
-
if (await targetFile.exists()) {
|
|
728
|
-
throw new HttpError(500, `File already exists`);
|
|
729
|
-
}
|
|
730
|
-
file.totalChunks = 0;
|
|
731
|
-
file.prevProgress = 0;
|
|
732
|
-
file.handle = targetFile;
|
|
733
|
-
file.writer = targetFile.writer();
|
|
734
|
-
// print progress start
|
|
735
|
-
console.log(
|
|
736
|
-
name,
|
|
737
|
-
filename,
|
|
738
|
-
"0%",
|
|
739
|
-
file.totalSize ? file.totalSize + " bytes" : "-",
|
|
740
|
-
);
|
|
741
|
-
} else {
|
|
742
|
-
ctx.fields.set(name, "");
|
|
743
|
-
}
|
|
744
|
-
},
|
|
705
|
+
parseUpload<{}, { writer: Bun.FileSink; hash: Hash | string }>({
|
|
706
|
+
// maxFields: 2,
|
|
707
|
+
// maxFiles: 1,
|
|
708
|
+
// maxFieldSize: 203,
|
|
709
|
+
// maxFileSize: 200 * 1024 * 1024,
|
|
745
710
|
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
if (truncProgress > file.prevProgress) {
|
|
757
|
-
console.log(name, filename, progress.toFixed(2) + "%");
|
|
758
|
-
file.prevProgress = truncProgress;
|
|
759
|
-
}
|
|
760
|
-
}
|
|
761
|
-
} else {
|
|
762
|
-
ctx.fields.set(
|
|
763
|
-
name,
|
|
764
|
-
ctx.fields.get(name)! + new TextDecoder().decode(chunk),
|
|
765
|
-
);
|
|
766
|
-
}
|
|
711
|
+
path: process.cwd() + "/uploads",
|
|
712
|
+
|
|
713
|
+
fileHandle: (fullpath: string) => ({
|
|
714
|
+
writer: Bun.file(fullpath).writer(),
|
|
715
|
+
hash: createHash("sha256"),
|
|
716
|
+
}),
|
|
717
|
+
|
|
718
|
+
write: ({ handle }, chunk) => {
|
|
719
|
+
handle.writer.write(chunk);
|
|
720
|
+
(handle.hash as Hash).update(chunk);
|
|
767
721
|
},
|
|
768
722
|
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
console.log(file);
|
|
776
|
-
} else {
|
|
777
|
-
// parse json
|
|
778
|
-
const contentTypeHeader = headers.get("content-type");
|
|
779
|
-
if (contentTypeHeader?.startsWith("application/json")) {
|
|
780
|
-
ctx.fields.set(name, JSON.parse(ctx.fields.get(name)!));
|
|
781
|
-
}
|
|
782
|
-
console.log({ [name]: ctx.fields.get(name)! });
|
|
723
|
+
end: ({ handle, fullpath, name }, success) => {
|
|
724
|
+
handle.writer.end();
|
|
725
|
+
handle.hash = (handle.hash as Hash).digest().toString("hex");
|
|
726
|
+
if (!success) {
|
|
727
|
+
Bun.file(fullpath).delete();
|
|
728
|
+
console.log(`[FileUpload](${name}) failed`);
|
|
783
729
|
}
|
|
784
730
|
},
|
|
785
731
|
|
|
786
|
-
|
|
787
|
-
console.
|
|
732
|
+
onEnd: ({ files, fields }) => {
|
|
733
|
+
console.dir(
|
|
734
|
+
{
|
|
735
|
+
files: Object.fromEntries(files.entries()),
|
|
736
|
+
fields: Object.fromEntries(fields.entries()),
|
|
737
|
+
},
|
|
738
|
+
{ depth: 3 },
|
|
739
|
+
);
|
|
788
740
|
},
|
|
789
741
|
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
console.log({ fields, files });
|
|
797
|
-
return json({ message: "Upload successful" });
|
|
742
|
+
onFileProgress: (ctx, { file }) => {
|
|
743
|
+
console.log(
|
|
744
|
+
`[FileUpload](${file.name}) progress`,
|
|
745
|
+
file.progress.toFixed(2),
|
|
746
|
+
"%",
|
|
747
|
+
);
|
|
798
748
|
},
|
|
799
749
|
}),
|
|
800
750
|
]);
|
package/dist/cjs/index.d.ts
CHANGED
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAE5B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,eAAe,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAE5B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,eAAe,MAAM,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -18,6 +18,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
20
|
__exportStar(require("./types.js"), exports);
|
|
21
|
+
__exportStar(require("./utils.js"), exports);
|
|
21
22
|
__exportStar(require("./utils.node.js"), exports);
|
|
22
23
|
__exportStar(require("./status.js"), exports);
|
|
23
24
|
__exportStar(require("./helpers.js"), exports);
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,kDAAgC;AAChC,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B;AAC7B,wDAAsC;AACtC,mDAAiC;AACjC,8CAA4B;AAE5B,4DAAiC;AACjC,kBAAe,mBAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,6CAA2B;AAC3B,kDAAgC;AAChC,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B;AAC7B,wDAAsC;AACtC,mDAAiC;AACjC,8CAA4B;AAE5B,4DAAiC;AACjC,kBAAe,mBAAM,CAAC"}
|
package/dist/cjs/parsers.d.ts
CHANGED
|
@@ -129,8 +129,10 @@ export declare const parseBody: <ExtendContext extends Record<string, unknown> =
|
|
|
129
129
|
clone?: boolean;
|
|
130
130
|
}) => Handler<ExtendContext & CTBody>;
|
|
131
131
|
export declare const parseHeaders: (rawHeaders: Uint8Array, contentDisposition?: object) => Headers;
|
|
132
|
+
export declare const defaultFieldParser: (field: string, contentType?: string) => any;
|
|
132
133
|
export type ParsedFormDataFile<ExtendParsedFormDataFile extends Record<string, unknown> = EmptyRecord> = {
|
|
133
134
|
name: string;
|
|
135
|
+
fullpath: string;
|
|
134
136
|
type: MimeType;
|
|
135
137
|
size: number;
|
|
136
138
|
totalSize?: number;
|
|
@@ -140,7 +142,20 @@ export type CTFormData<ExtendParsedFormDataFile extends Record<string, unknown>
|
|
|
140
142
|
fields: Map<string, string | any>;
|
|
141
143
|
};
|
|
142
144
|
export type ParseMultipartCallbacksReturnType = Response | typeof Break_Pipeline | typeof Break_Pipe | void | Promise<Response | typeof Break_Pipeline | typeof Break_Pipe | void>;
|
|
143
|
-
export
|
|
145
|
+
export type ParseMultipartInfo<ExtendParsedFormDataFile extends Record<string, unknown> = EmptyRecord> = {
|
|
146
|
+
headers: Headers;
|
|
147
|
+
id: string;
|
|
148
|
+
name: string;
|
|
149
|
+
filename?: string;
|
|
150
|
+
file?: ParsedFormDataFile<ExtendParsedFormDataFile>;
|
|
151
|
+
};
|
|
152
|
+
export declare const parseMultipart: <ExtendContext extends Record<string, unknown> = EmptyRecord, ExtendParsedFormDataFile extends Record<string, unknown> = EmptyRecord, Info extends ParseMultipartInfo<ExtendParsedFormDataFile> = ParseMultipartInfo<ExtendParsedFormDataFile>, FieldInfo extends Omit<ParseMultipartInfo<ExtendParsedFormDataFile>, "filename" | "file"> = Omit<ParseMultipartInfo<ExtendParsedFormDataFile>, "filename" | "file">, FileInfo extends Required<ParseMultipartInfo<ExtendParsedFormDataFile>> = Required<ParseMultipartInfo<ExtendParsedFormDataFile>>>({ dontCatch, maxFields, maxFiles, maxFieldSize, maxFileSize, maxTotalSize, idGenerator, onStart, onEnd, onHeader, onData, onDataComplete, onFileLimit, onFieldLimit, onFileSizeLimit, onFieldSizeLimit, onTotalSizeLimit, }: {
|
|
153
|
+
dontCatch?: boolean;
|
|
154
|
+
maxFields?: number;
|
|
155
|
+
maxFiles?: number;
|
|
156
|
+
maxFieldSize?: number;
|
|
157
|
+
maxFileSize?: number;
|
|
158
|
+
maxTotalSize?: number;
|
|
144
159
|
idGenerator?: (info: {
|
|
145
160
|
headers: Headers;
|
|
146
161
|
name: string;
|
|
@@ -151,27 +166,65 @@ export declare const parseMultipart: <ExtendContext extends Record<string, unkno
|
|
|
151
166
|
success: boolean;
|
|
152
167
|
error?: Error | HttpError;
|
|
153
168
|
}) => ParseMultipartCallbacksReturnType;
|
|
154
|
-
onHeader?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info:
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
169
|
+
onHeader?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: Info) => ParseMultipartCallbacksReturnType;
|
|
170
|
+
onData: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, chunk: Uint8Array, info: Info) => ParseMultipartCallbacksReturnType;
|
|
171
|
+
onDataComplete: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: Info) => ParseMultipartCallbacksReturnType;
|
|
172
|
+
onFileLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FileInfo) => ParseMultipartCallbacksReturnType;
|
|
173
|
+
onFieldLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FieldInfo) => ParseMultipartCallbacksReturnType;
|
|
174
|
+
onFileSizeLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FileInfo) => ParseMultipartCallbacksReturnType;
|
|
175
|
+
onFieldSizeLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FieldInfo) => ParseMultipartCallbacksReturnType;
|
|
176
|
+
onTotalSizeLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: Info) => ParseMultipartCallbacksReturnType;
|
|
177
|
+
}) => Handler<CTFormData<ExtendParsedFormDataFile> & ExtendContext>;
|
|
178
|
+
export type ParseUploadFileExtension<FileHandle = unknown> = {
|
|
179
|
+
totalChunks: number;
|
|
180
|
+
handle: FileHandle;
|
|
181
|
+
_prevProgress: number;
|
|
182
|
+
progress: number;
|
|
183
|
+
};
|
|
184
|
+
export declare const parseUpload: <ExtendContext extends Record<string, unknown> = {}, FileHandle = unknown, ExtendParsedFormDataFile extends Record<string, unknown> & ParseUploadFileExtension<FileHandle> = ParseUploadFileExtension<FileHandle>, Info extends ParseMultipartInfo<ExtendParsedFormDataFile> = ParseMultipartInfo<ExtendParsedFormDataFile>, FieldInfo extends Omit<ParseMultipartInfo<ExtendParsedFormDataFile>, "filename" | "file"> = Omit<ParseMultipartInfo<ExtendParsedFormDataFile>, "filename" | "file">, FileInfo extends Required<ParseMultipartInfo<ExtendParsedFormDataFile>> = Required<ParseMultipartInfo<ExtendParsedFormDataFile>>, CTParseUpload = Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>>({ path, fileHandle, write, end, parseField, dontCatch, maxFields, maxFiles, maxFieldSize, maxFileSize, maxTotalSize, progressIncrement, idGenerator, onStart, onEnd, onHeader, onFieldHeader, onFileHeader, onFileData, onFileDataSpy, onFieldData, onFieldDataSpy, onFileProgress, onFieldComplete, onFileComplete, onComplete, onFileLimit, onFieldLimit, onFileSizeLimit, onFieldSizeLimit, onTotalSizeLimit, }: {
|
|
185
|
+
path: string | {
|
|
186
|
+
(id: string, file: ParsedFormDataFile<ExtendParsedFormDataFile>): Promise<string> | string;
|
|
187
|
+
};
|
|
188
|
+
fileHandle: {
|
|
189
|
+
(fullpath: string): Promise<FileHandle> | FileHandle;
|
|
190
|
+
};
|
|
191
|
+
write: {
|
|
192
|
+
(file: ParsedFormDataFile<ExtendParsedFormDataFile>, chunk: Uint8Array, info: FileInfo): Promise<unknown> | unknown;
|
|
193
|
+
};
|
|
194
|
+
end?: {
|
|
195
|
+
(file: ParsedFormDataFile<ExtendParsedFormDataFile>, success: boolean, info: FileInfo): Promise<unknown> | unknown;
|
|
196
|
+
};
|
|
197
|
+
parseField?: (field: string, contentType?: string) => Promise<string | unknown> | string | unknown;
|
|
198
|
+
dontCatch?: boolean;
|
|
199
|
+
maxFields?: number;
|
|
200
|
+
maxFiles?: number;
|
|
201
|
+
maxFieldSize?: number;
|
|
202
|
+
maxFileSize?: number;
|
|
203
|
+
maxTotalSize?: number;
|
|
204
|
+
progressIncrement?: number;
|
|
205
|
+
idGenerator?: () => string;
|
|
206
|
+
onStart?: (ctx: CTParseUpload) => ParseMultipartCallbacksReturnType;
|
|
207
|
+
onEnd?: (ctx: CTParseUpload, info: {
|
|
208
|
+
success: boolean;
|
|
209
|
+
error?: Error | HttpError;
|
|
168
210
|
}) => ParseMultipartCallbacksReturnType;
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
211
|
+
onHeader?: (ctx: CTParseUpload, info: Info) => ParseMultipartCallbacksReturnType;
|
|
212
|
+
onFieldHeader?: (ctx: CTParseUpload, info: FieldInfo) => ParseMultipartCallbacksReturnType;
|
|
213
|
+
onFileHeader?: (ctx: CTParseUpload, info: FileInfo) => ParseMultipartCallbacksReturnType;
|
|
214
|
+
onFileData?: (ctx: CTParseUpload, chunk: Uint8Array, info: FileInfo) => ParseMultipartCallbacksReturnType;
|
|
215
|
+
onFileDataSpy?: (ctx: CTParseUpload, chunk: Uint8Array, info: FileInfo) => ParseMultipartCallbacksReturnType;
|
|
216
|
+
onFieldData?: (ctx: CTParseUpload, chunk: Uint8Array, info: FieldInfo) => ParseMultipartCallbacksReturnType;
|
|
217
|
+
onFieldDataSpy?: (ctx: CTParseUpload, chunk: Uint8Array, info: FieldInfo) => ParseMultipartCallbacksReturnType;
|
|
218
|
+
onFileProgress?: (ctx: CTParseUpload, info: FileInfo) => Promise<void> | void;
|
|
219
|
+
onFieldComplete?: (ctx: CTParseUpload, info: FieldInfo & {
|
|
220
|
+
field: string | unknown;
|
|
175
221
|
}) => ParseMultipartCallbacksReturnType;
|
|
222
|
+
onFileComplete?: (ctx: CTParseUpload, info: FileInfo) => ParseMultipartCallbacksReturnType;
|
|
223
|
+
onComplete?: (ctx: CTParseUpload, info: Info) => ParseMultipartCallbacksReturnType;
|
|
224
|
+
onFileLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FileInfo) => ParseMultipartCallbacksReturnType;
|
|
225
|
+
onFieldLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FieldInfo) => ParseMultipartCallbacksReturnType;
|
|
226
|
+
onFileSizeLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FileInfo) => ParseMultipartCallbacksReturnType;
|
|
227
|
+
onFieldSizeLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FieldInfo) => ParseMultipartCallbacksReturnType;
|
|
228
|
+
onTotalSizeLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: ParseMultipartInfo<ExtendParsedFormDataFile>) => ParseMultipartCallbacksReturnType;
|
|
176
229
|
}) => Handler<CTFormData<ExtendParsedFormDataFile> & ExtendContext>;
|
|
177
230
|
//# sourceMappingURL=parsers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/parsers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/parsers.ts"],"names":[],"mappings":"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"}
|