sprint-es 0.0.163 → 0.0.164
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/cjs/index.cjs +52 -37
- package/dist/cjs/modules/schemas/index.cjs +25 -0
- package/dist/esm/index.js +52 -37
- package/dist/esm/modules/schemas/index.js +25 -0
- package/dist/types/modules/schemas/index.d.ts +9 -4
- package/dist/types/modules/schemas/index.d.ts.map +1 -1
- package/dist/types/modules/schemas/types.d.ts +18 -3
- package/dist/types/modules/schemas/types.d.ts.map +1 -1
- package/dist/types/sprint.d.ts +1 -10
- package/dist/types/sprint.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -468,25 +468,38 @@ class Sprint {
|
|
|
468
468
|
for (const layer of router.stack) {
|
|
469
469
|
if (!layer.route) continue;
|
|
470
470
|
for (const routeLayer of layer.route.stack) {
|
|
471
|
-
const
|
|
472
|
-
const
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
471
|
+
const handlers = Array.isArray(routeLayer.handle) ? routeLayer.handle : [routeLayer.handle];
|
|
472
|
+
for (const handler of handlers) {
|
|
473
|
+
const handlerSchema = handler.__sprintRouteSchema;
|
|
474
|
+
if (handlerSchema?.files && typeof handlerSchema.files === "object" && !Array.isArray(handlerSchema.files)) {
|
|
475
|
+
const fileFields = Object.keys(handlerSchema.files);
|
|
476
|
+
const hasStreaming = handler?.hasStreamingFiles ? handler.hasStreamingFiles() : false;
|
|
477
|
+
if (hasStreaming) {
|
|
478
|
+
fileUploadMiddleware = this.streamUpload();
|
|
479
|
+
break;
|
|
480
|
+
} else if (fileFields.length > 0) {
|
|
481
|
+
fileUploadMiddleware = this.uploadFiles(fileFields);
|
|
482
|
+
break;
|
|
483
|
+
}
|
|
478
484
|
}
|
|
479
485
|
}
|
|
486
|
+
if (fileUploadMiddleware) break;
|
|
480
487
|
}
|
|
481
488
|
if (fileUploadMiddleware) break;
|
|
482
489
|
}
|
|
483
490
|
if (routeMiddlewares.length > 0) {
|
|
484
|
-
if (fileUploadMiddleware)
|
|
485
|
-
|
|
491
|
+
if (fileUploadMiddleware) {
|
|
492
|
+
this.app.use(finalRoute, fileUploadMiddleware, ...routeMiddlewares, router);
|
|
493
|
+
} else {
|
|
494
|
+
this.app.use(finalRoute, ...routeMiddlewares, router);
|
|
495
|
+
}
|
|
486
496
|
if (isVerbose) console.log(`[Sprint] Loaded route: ${finalRoute} -> ${filePath} (with ${routeMiddlewares.length} middleware(s))`);
|
|
487
497
|
} else {
|
|
488
|
-
if (fileUploadMiddleware)
|
|
489
|
-
|
|
498
|
+
if (fileUploadMiddleware) {
|
|
499
|
+
this.app.use(finalRoute, fileUploadMiddleware, router);
|
|
500
|
+
} else {
|
|
501
|
+
this.app.use(finalRoute, router);
|
|
502
|
+
}
|
|
490
503
|
if (isVerbose) console.log(`[Sprint] Loaded route: ${finalRoute} -> ${filePath}`);
|
|
491
504
|
}
|
|
492
505
|
this.counters.routes += router.stack.length;
|
|
@@ -859,34 +872,36 @@ class Sprint {
|
|
|
859
872
|
return this.memoryUpload.array(fieldNames);
|
|
860
873
|
}
|
|
861
874
|
streamUpload(options) {
|
|
862
|
-
return (req, res) => {
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
});
|
|
879
|
-
bb.on("field", (fieldName, val) => {
|
|
880
|
-
fields[fieldName] = val;
|
|
881
|
-
});
|
|
882
|
-
bb.on("finish", () => {
|
|
883
|
-
resolve({ files, fields });
|
|
884
|
-
});
|
|
885
|
-
bb.on("error", (err) => {
|
|
886
|
-
reject(err);
|
|
875
|
+
return (req, res, next) => {
|
|
876
|
+
const bb = busboy({
|
|
877
|
+
headers: req.headers,
|
|
878
|
+
limits: options?.limits
|
|
879
|
+
});
|
|
880
|
+
const files = {};
|
|
881
|
+
bb.on("file", (fieldName, file, info) => {
|
|
882
|
+
if (!files[fieldName]) files[fieldName] = [];
|
|
883
|
+
files[fieldName].push({
|
|
884
|
+
fieldname: fieldName,
|
|
885
|
+
originalname: info.filename,
|
|
886
|
+
encoding: info.encoding,
|
|
887
|
+
mimetype: info.mimeType,
|
|
888
|
+
size: 0,
|
|
889
|
+
buffer: void 0,
|
|
890
|
+
file
|
|
887
891
|
});
|
|
888
|
-
req.pipe(bb);
|
|
889
892
|
});
|
|
893
|
+
bb.on("field", (fieldName, val) => {
|
|
894
|
+
if (!req.body) req.body = {};
|
|
895
|
+
req.body[fieldName] = val;
|
|
896
|
+
});
|
|
897
|
+
bb.on("finish", () => {
|
|
898
|
+
req.files = files;
|
|
899
|
+
next();
|
|
900
|
+
});
|
|
901
|
+
bb.on("error", (err) => {
|
|
902
|
+
next(err);
|
|
903
|
+
});
|
|
904
|
+
req.pipe(bb);
|
|
890
905
|
};
|
|
891
906
|
}
|
|
892
907
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const stream = require("stream");
|
|
3
4
|
const zod = require("zod");
|
|
4
5
|
function normalizeExtensions(ext) {
|
|
5
6
|
if (!ext) return [];
|
|
@@ -53,6 +54,25 @@ function createFileSchema(options = {}) {
|
|
|
53
54
|
chainedSchema.minSize = (size) => createFileSchema({ ...options, minSize: size });
|
|
54
55
|
return chainedSchema;
|
|
55
56
|
}
|
|
57
|
+
function createStreamFileSchema(options = {}) {
|
|
58
|
+
normalizeExtensions(options.ext);
|
|
59
|
+
normalizeMimeTypes(options.mimeType);
|
|
60
|
+
const streamFileSchema = zod.z.object({
|
|
61
|
+
fieldName: zod.z.string(),
|
|
62
|
+
file: zod.z.instanceof(stream.Readable),
|
|
63
|
+
filename: zod.z.string(),
|
|
64
|
+
encoding: zod.z.string(),
|
|
65
|
+
mimeType: zod.z.string()
|
|
66
|
+
});
|
|
67
|
+
const streamSchemaWithValidations = streamFileSchema;
|
|
68
|
+
const chainedSchema = Object.create(streamSchemaWithValidations);
|
|
69
|
+
chainedSchema.format = (ext) => createStreamFileSchema({ ...options, ext: normalizeExtensions(ext) });
|
|
70
|
+
chainedSchema.mimeType = (mime) => createStreamFileSchema({ ...options, mimeType: normalizeMimeTypes(mime) });
|
|
71
|
+
chainedSchema.maxSize = (size) => createStreamFileSchema({ ...options, maxSize: size });
|
|
72
|
+
chainedSchema.minSize = (size) => createStreamFileSchema({ ...options, minSize: size });
|
|
73
|
+
chainedSchema.stream = () => createStreamFileSchema({ ...options });
|
|
74
|
+
return chainedSchema;
|
|
75
|
+
}
|
|
56
76
|
function createFilesArraySchema(fieldName, options = {}) {
|
|
57
77
|
const fileSchema = createFileSchema({ ...options, required: false });
|
|
58
78
|
return zod.z.array(fileSchema).min(options.required === false ? 0 : 1, {
|
|
@@ -74,6 +94,9 @@ const fileValidators = {
|
|
|
74
94
|
minSize: (minSize) => {
|
|
75
95
|
return createFileSchema({ minSize });
|
|
76
96
|
},
|
|
97
|
+
stream: () => {
|
|
98
|
+
return createStreamFileSchema({});
|
|
99
|
+
},
|
|
77
100
|
image: () => {
|
|
78
101
|
return createFileSchema({
|
|
79
102
|
mimeType: ["image/jpeg", "image/png", "image/gif", "image/webp", "image/svg+xml"],
|
|
@@ -155,6 +178,7 @@ function parseSchema(schema, data) {
|
|
|
155
178
|
function defineRouteSchema(schema) {
|
|
156
179
|
const headersSchema = schema.headers ? normalizeHeadersSchema(schema.headers) : null;
|
|
157
180
|
const fileFields = schema.files ? Object.keys(schema.files) : [];
|
|
181
|
+
const hasStreaming = !!(schema.files && typeof schema.files === "object" && Object.values(schema.files).some((f) => f.stream || f._isStreamSchema));
|
|
158
182
|
const middleware = (req, res, next) => {
|
|
159
183
|
const errors = [];
|
|
160
184
|
const method = req.method.toUpperCase();
|
|
@@ -229,6 +253,7 @@ function defineRouteSchema(schema) {
|
|
|
229
253
|
};
|
|
230
254
|
middleware.__sprintRouteSchema = schema;
|
|
231
255
|
middleware.getFileFields = () => fileFields;
|
|
256
|
+
middleware.hasStreamingFiles = () => hasStreaming || false;
|
|
232
257
|
return middleware;
|
|
233
258
|
}
|
|
234
259
|
exports.createFileSchema = createFileSchema;
|
package/dist/esm/index.js
CHANGED
|
@@ -443,25 +443,38 @@ class Sprint {
|
|
|
443
443
|
for (const layer of router.stack) {
|
|
444
444
|
if (!layer.route) continue;
|
|
445
445
|
for (const routeLayer of layer.route.stack) {
|
|
446
|
-
const
|
|
447
|
-
const
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
446
|
+
const handlers = Array.isArray(routeLayer.handle) ? routeLayer.handle : [routeLayer.handle];
|
|
447
|
+
for (const handler of handlers) {
|
|
448
|
+
const handlerSchema = handler.__sprintRouteSchema;
|
|
449
|
+
if (handlerSchema?.files && typeof handlerSchema.files === "object" && !Array.isArray(handlerSchema.files)) {
|
|
450
|
+
const fileFields = Object.keys(handlerSchema.files);
|
|
451
|
+
const hasStreaming = handler?.hasStreamingFiles ? handler.hasStreamingFiles() : false;
|
|
452
|
+
if (hasStreaming) {
|
|
453
|
+
fileUploadMiddleware = this.streamUpload();
|
|
454
|
+
break;
|
|
455
|
+
} else if (fileFields.length > 0) {
|
|
456
|
+
fileUploadMiddleware = this.uploadFiles(fileFields);
|
|
457
|
+
break;
|
|
458
|
+
}
|
|
453
459
|
}
|
|
454
460
|
}
|
|
461
|
+
if (fileUploadMiddleware) break;
|
|
455
462
|
}
|
|
456
463
|
if (fileUploadMiddleware) break;
|
|
457
464
|
}
|
|
458
465
|
if (routeMiddlewares.length > 0) {
|
|
459
|
-
if (fileUploadMiddleware)
|
|
460
|
-
|
|
466
|
+
if (fileUploadMiddleware) {
|
|
467
|
+
this.app.use(finalRoute, fileUploadMiddleware, ...routeMiddlewares, router);
|
|
468
|
+
} else {
|
|
469
|
+
this.app.use(finalRoute, ...routeMiddlewares, router);
|
|
470
|
+
}
|
|
461
471
|
if (isVerbose) console.log(`[Sprint] Loaded route: ${finalRoute} -> ${filePath} (with ${routeMiddlewares.length} middleware(s))`);
|
|
462
472
|
} else {
|
|
463
|
-
if (fileUploadMiddleware)
|
|
464
|
-
|
|
473
|
+
if (fileUploadMiddleware) {
|
|
474
|
+
this.app.use(finalRoute, fileUploadMiddleware, router);
|
|
475
|
+
} else {
|
|
476
|
+
this.app.use(finalRoute, router);
|
|
477
|
+
}
|
|
465
478
|
if (isVerbose) console.log(`[Sprint] Loaded route: ${finalRoute} -> ${filePath}`);
|
|
466
479
|
}
|
|
467
480
|
this.counters.routes += router.stack.length;
|
|
@@ -834,34 +847,36 @@ class Sprint {
|
|
|
834
847
|
return this.memoryUpload.array(fieldNames);
|
|
835
848
|
}
|
|
836
849
|
streamUpload(options) {
|
|
837
|
-
return (req, res) => {
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
});
|
|
854
|
-
bb.on("field", (fieldName, val) => {
|
|
855
|
-
fields[fieldName] = val;
|
|
856
|
-
});
|
|
857
|
-
bb.on("finish", () => {
|
|
858
|
-
resolve({ files, fields });
|
|
859
|
-
});
|
|
860
|
-
bb.on("error", (err) => {
|
|
861
|
-
reject(err);
|
|
850
|
+
return (req, res, next) => {
|
|
851
|
+
const bb = busboy({
|
|
852
|
+
headers: req.headers,
|
|
853
|
+
limits: options?.limits
|
|
854
|
+
});
|
|
855
|
+
const files = {};
|
|
856
|
+
bb.on("file", (fieldName, file, info) => {
|
|
857
|
+
if (!files[fieldName]) files[fieldName] = [];
|
|
858
|
+
files[fieldName].push({
|
|
859
|
+
fieldname: fieldName,
|
|
860
|
+
originalname: info.filename,
|
|
861
|
+
encoding: info.encoding,
|
|
862
|
+
mimetype: info.mimeType,
|
|
863
|
+
size: 0,
|
|
864
|
+
buffer: void 0,
|
|
865
|
+
file
|
|
862
866
|
});
|
|
863
|
-
req.pipe(bb);
|
|
864
867
|
});
|
|
868
|
+
bb.on("field", (fieldName, val) => {
|
|
869
|
+
if (!req.body) req.body = {};
|
|
870
|
+
req.body[fieldName] = val;
|
|
871
|
+
});
|
|
872
|
+
bb.on("finish", () => {
|
|
873
|
+
req.files = files;
|
|
874
|
+
next();
|
|
875
|
+
});
|
|
876
|
+
bb.on("error", (err) => {
|
|
877
|
+
next(err);
|
|
878
|
+
});
|
|
879
|
+
req.pipe(bb);
|
|
865
880
|
};
|
|
866
881
|
}
|
|
867
882
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Readable } from "stream";
|
|
1
2
|
import { z } from "zod";
|
|
2
3
|
function normalizeExtensions(ext) {
|
|
3
4
|
if (!ext) return [];
|
|
@@ -51,6 +52,25 @@ function createFileSchema(options = {}) {
|
|
|
51
52
|
chainedSchema.minSize = (size) => createFileSchema({ ...options, minSize: size });
|
|
52
53
|
return chainedSchema;
|
|
53
54
|
}
|
|
55
|
+
function createStreamFileSchema(options = {}) {
|
|
56
|
+
normalizeExtensions(options.ext);
|
|
57
|
+
normalizeMimeTypes(options.mimeType);
|
|
58
|
+
const streamFileSchema = z.object({
|
|
59
|
+
fieldName: z.string(),
|
|
60
|
+
file: z.instanceof(Readable),
|
|
61
|
+
filename: z.string(),
|
|
62
|
+
encoding: z.string(),
|
|
63
|
+
mimeType: z.string()
|
|
64
|
+
});
|
|
65
|
+
const streamSchemaWithValidations = streamFileSchema;
|
|
66
|
+
const chainedSchema = Object.create(streamSchemaWithValidations);
|
|
67
|
+
chainedSchema.format = (ext) => createStreamFileSchema({ ...options, ext: normalizeExtensions(ext) });
|
|
68
|
+
chainedSchema.mimeType = (mime) => createStreamFileSchema({ ...options, mimeType: normalizeMimeTypes(mime) });
|
|
69
|
+
chainedSchema.maxSize = (size) => createStreamFileSchema({ ...options, maxSize: size });
|
|
70
|
+
chainedSchema.minSize = (size) => createStreamFileSchema({ ...options, minSize: size });
|
|
71
|
+
chainedSchema.stream = () => createStreamFileSchema({ ...options });
|
|
72
|
+
return chainedSchema;
|
|
73
|
+
}
|
|
54
74
|
function createFilesArraySchema(fieldName, options = {}) {
|
|
55
75
|
const fileSchema = createFileSchema({ ...options, required: false });
|
|
56
76
|
return z.array(fileSchema).min(options.required === false ? 0 : 1, {
|
|
@@ -72,6 +92,9 @@ const fileValidators = {
|
|
|
72
92
|
minSize: (minSize) => {
|
|
73
93
|
return createFileSchema({ minSize });
|
|
74
94
|
},
|
|
95
|
+
stream: () => {
|
|
96
|
+
return createStreamFileSchema({});
|
|
97
|
+
},
|
|
75
98
|
image: () => {
|
|
76
99
|
return createFileSchema({
|
|
77
100
|
mimeType: ["image/jpeg", "image/png", "image/gif", "image/webp", "image/svg+xml"],
|
|
@@ -153,6 +176,7 @@ function parseSchema(schema, data) {
|
|
|
153
176
|
function defineRouteSchema(schema) {
|
|
154
177
|
const headersSchema = schema.headers ? normalizeHeadersSchema(schema.headers) : null;
|
|
155
178
|
const fileFields = schema.files ? Object.keys(schema.files) : [];
|
|
179
|
+
const hasStreaming = !!(schema.files && typeof schema.files === "object" && Object.values(schema.files).some((f) => f.stream || f._isStreamSchema));
|
|
156
180
|
const middleware = (req, res, next) => {
|
|
157
181
|
const errors = [];
|
|
158
182
|
const method = req.method.toUpperCase();
|
|
@@ -227,6 +251,7 @@ function defineRouteSchema(schema) {
|
|
|
227
251
|
};
|
|
228
252
|
middleware.__sprintRouteSchema = schema;
|
|
229
253
|
middleware.getFileFields = () => fileFields;
|
|
254
|
+
middleware.hasStreamingFiles = () => hasStreaming || false;
|
|
230
255
|
return middleware;
|
|
231
256
|
}
|
|
232
257
|
export {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RequestHandler } from 'express';
|
|
2
2
|
import { z, ZodSchema as ZodSchemaType, ZodTypeDef } from 'zod';
|
|
3
|
-
import { FileObject, FileSchemaType } from './types';
|
|
3
|
+
import { FileObject, FileSchemaType, StreamFileSchemaType } from './types';
|
|
4
4
|
export type AuthorizationSource = `query:${string}` | `headers:${string}`;
|
|
5
5
|
export interface SprintAuthorizationOptions {
|
|
6
6
|
sources?: AuthorizationSource | AuthorizationSource[];
|
|
@@ -14,16 +14,20 @@ export interface FileValidationOptions {
|
|
|
14
14
|
}
|
|
15
15
|
declare function createFileSchema(options?: FileValidationOptions): FileSchemaType;
|
|
16
16
|
declare function createFilesArraySchema(fieldName: string, options?: FileValidationOptions): ZodSchemaType<FileObject[], ZodTypeDef, FileObject[]>;
|
|
17
|
-
|
|
17
|
+
declare const fileValidators: {
|
|
18
|
+
format: (ext: string | string[]) => FileSchemaType;
|
|
19
|
+
mimeType: (mimeType: string | string[]) => FileSchemaType;
|
|
20
|
+
maxSize: (maxSize: number) => FileSchemaType;
|
|
21
|
+
minSize: (minSize: number) => FileSchemaType;
|
|
22
|
+
stream: () => StreamFileSchemaType;
|
|
18
23
|
image: () => FileSchemaType;
|
|
19
24
|
document: () => FileSchemaType;
|
|
20
25
|
video: () => FileSchemaType;
|
|
21
26
|
audio: () => FileSchemaType;
|
|
22
27
|
archive: () => FileSchemaType;
|
|
23
28
|
any: () => FileSchemaType;
|
|
24
|
-
field: (fieldName: string, options?: FileValidationOptions) =>
|
|
29
|
+
field: (fieldName: string, options?: FileValidationOptions) => z.ZodType<FileObject[], z.ZodTypeDef, FileObject[]>;
|
|
25
30
|
};
|
|
26
|
-
declare const fileValidators: FileValidatorsType;
|
|
27
31
|
export declare function normalizeHeadersSchema(schema: any): any;
|
|
28
32
|
declare function createSprintAuthorizationSchema(options?: SprintAuthorizationOptions): ZodSchemaType<string, ZodTypeDef, string>;
|
|
29
33
|
declare const sprintBuilder: {
|
|
@@ -57,6 +61,7 @@ export interface RouteSchemaOptions {
|
|
|
57
61
|
}
|
|
58
62
|
export declare function defineRouteSchema<T extends RouteSchemaOptions>(schema: T): RequestHandler & {
|
|
59
63
|
getFileFields?: () => string[];
|
|
64
|
+
hasStreamingFiles?: () => boolean;
|
|
60
65
|
};
|
|
61
66
|
export type { ZodSchema, ZodMiddlewareOptions } from './types';
|
|
62
67
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAAE,CAAC,EAAE,SAAS,IAAI,aAAa,EAAE,UAAU,EAAsD,MAAM,KAAK,CAAC;AACpH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE3E,MAAM,MAAM,mBAAmB,GAAG,SAAS,MAAM,EAAE,GAAG,WAAW,MAAM,EAAE,CAAC;AAE1E,MAAM,WAAW,0BAA0B;IACvC,OAAO,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,CAAC;CACzD;AAED,MAAM,WAAW,qBAAqB;IAClC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAYD,iBAAS,gBAAgB,CAAC,OAAO,GAAE,qBAA0B,GAAG,cAAc,CAmD7E;AA0BD,iBAAS,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,aAAa,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAK7I;AAED,QAAA,MAAM,cAAc;kBACF,MAAM,GAAG,MAAM,EAAE,KAEgC,cAAc;yBAExD,MAAM,GAAG,MAAM,EAAE,KAE6B,cAAc;uBAE9D,MAAM,KAC8B,cAAc;uBAElD,MAAM,KAC8B,cAAc;kBAGjB,oBAAoB;iBAMnD,cAAc;oBAMd,cAAc;iBAMd,cAAc;iBAMd,cAAc;mBAMd,cAAc;eAGW,cAAc;uBAEzC,MAAM,YAAY,qBAAqB;CAG7D,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAKvD;AAED,iBAAS,+BAA+B,CAAC,OAAO,CAAC,EAAE,0BAA0B,GAAG,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAKxH;AAED,QAAA,MAAM,aAAa;;CAElB,CAAC;AAEF,QAAA,MAAM,UAAU;;CAEf,CAAC;AAEF,KAAK,cAAc,GAAG,OAAO,UAAU,GAAG,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAQpE,KAAK,aAAa,GAAG,OAAO,CAAC,GAAG;IAC5B,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,OAAO,cAAc,CAAC;CAChC,CAAC;AAEF,QAAA,MAAM,MAAM,EAMN,aAAa,CAAC;AAEpB,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;AACvB,OAAO,EAAE,aAAa,IAAI,MAAM,EAAE,CAAC;AACnC,OAAO,EAAE,cAAc,IAAI,KAAK,EAAE,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,CAAC;AAEpD,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IAC/B,IAAI,CAAC,EAAE,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;IAC3C,WAAW,CAAC,EAAE,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE;QACJ,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;KAC5D,CAAC;IACF,MAAM,CAAC,EAAE;QACL,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;KAC7D,CAAC;CACL;AAqBD,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,kBAAkB,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,GAAG;IACzF,aAAa,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC;CACrC,CAmGA;AAED,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
1
|
+
import { z, ZodType, ZodTypeDef } from 'zod';
|
|
2
2
|
export type ZodSchema = z.ZodType<any>;
|
|
3
3
|
export interface ZodMiddlewareOptions {
|
|
4
4
|
body?: ZodSchema;
|
|
@@ -25,10 +25,25 @@ export type FileObject = {
|
|
|
25
25
|
size: number;
|
|
26
26
|
buffer?: Buffer;
|
|
27
27
|
};
|
|
28
|
-
export
|
|
28
|
+
export type StreamFileObject = {
|
|
29
|
+
fieldName: string;
|
|
30
|
+
file: NodeJS.ReadableStream;
|
|
31
|
+
filename: string;
|
|
32
|
+
encoding: string;
|
|
33
|
+
mimeType: string;
|
|
34
|
+
};
|
|
35
|
+
export type FileSchemaType = ZodType<FileObject, ZodTypeDef, FileObject> & {
|
|
29
36
|
format(ext: string | string[]): FileSchemaType;
|
|
30
37
|
mimeType(mimeType: string | string[]): FileSchemaType;
|
|
31
38
|
maxSize(maxSize: number): FileSchemaType;
|
|
32
39
|
minSize(minSize: number): FileSchemaType;
|
|
33
|
-
|
|
40
|
+
stream(): StreamFileSchemaType;
|
|
41
|
+
};
|
|
42
|
+
export type StreamFileSchemaType = ZodType<StreamFileObject, ZodTypeDef, StreamFileObject> & {
|
|
43
|
+
format(ext: string | string[]): StreamFileSchemaType;
|
|
44
|
+
mimeType(mimeType: string | string[]): StreamFileSchemaType;
|
|
45
|
+
maxSize(maxSize: number): StreamFileSchemaType;
|
|
46
|
+
minSize(minSize: number): StreamFileSchemaType;
|
|
47
|
+
stream(): StreamFileSchemaType;
|
|
48
|
+
};
|
|
34
49
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/modules/schemas/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/modules/schemas/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAE7C,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEvC,MAAM,WAAW,oBAAoB;IACjC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE;QACL,aAAa,CAAC,EAAE,SAAS,CAAC;KAC7B,CAAC;CACL;AAED,MAAM,WAAW,qBAAqB;IAClC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,GAAG;IACvE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,cAAc,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,cAAc,CAAC;IACtD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC;IACzC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC;IACzC,MAAM,IAAI,oBAAoB,CAAC;CAClC,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,CAAC,GAAG;IACzF,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,oBAAoB,CAAC;IACrD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,oBAAoB,CAAC;IAC5D,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAC/C,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAC/C,MAAM,IAAI,oBAAoB,CAAC;CAClC,CAAA"}
|
package/dist/types/sprint.d.ts
CHANGED
|
@@ -58,15 +58,6 @@ export declare class Sprint {
|
|
|
58
58
|
files?: number;
|
|
59
59
|
};
|
|
60
60
|
headers?: Record<string, string>;
|
|
61
|
-
}): (req: Request, res: Response) =>
|
|
62
|
-
files: Array<{
|
|
63
|
-
fieldName: string;
|
|
64
|
-
file: NodeJS.ReadableStream;
|
|
65
|
-
filename: string;
|
|
66
|
-
encoding: string;
|
|
67
|
-
mimeType: string;
|
|
68
|
-
}>;
|
|
69
|
-
fields: Record<string, string>;
|
|
70
|
-
}>;
|
|
61
|
+
}): (req: Request, res: Response, next: (err?: any) => void) => void;
|
|
71
62
|
}
|
|
72
63
|
//# sourceMappingURL=sprint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprint.d.ts","sourceRoot":"","sources":["../../src/sprint.ts"],"names":[],"mappings":"AAYA,OAAO,OAAO,EAAE,EAAE,WAAW,EAA2C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC3G,OAAO,EAAE,OAAO,EAA+B,gBAAgB,EAAsC,MAAM,SAAS,CAAC;AAcrH,eAAO,MAAM,aAAa,SAAQ,CAAC;AACnC,eAAO,MAAM,YAAY,SAAS,CAAC;AA0CnC,qBAAa,MAAM;IACR,GAAG,EAAE,WAAW,CAAC;IACxB,OAAO,CAAC,IAAI,CAAwD;IACpE,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,iBAAiB,CAA4C;IACrE,OAAO,CAAC,QAAQ,CAA8C;IAC9D,OAAO,CAAC,OAAO,CAcT;IACN,OAAO,CAAC,OAAO,CAcT;IACN,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,gBAAgB,CAIhB;IACD,uBAAuB,EAAE,MAAM,CAAmB;IAClD,YAAY,EAAE,GAAG,CAAC;;YA6JX,IAAI;IAkDlB,OAAO,CAAC,YAAY;IAiDpB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA4B9B;;OAEG;YACW,eAAe;IAkC7B,OAAO,CAAC,eAAe;YAeT,UAAU;
|
|
1
|
+
{"version":3,"file":"sprint.d.ts","sourceRoot":"","sources":["../../src/sprint.ts"],"names":[],"mappings":"AAYA,OAAO,OAAO,EAAE,EAAE,WAAW,EAA2C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC3G,OAAO,EAAE,OAAO,EAA+B,gBAAgB,EAAsC,MAAM,SAAS,CAAC;AAcrH,eAAO,MAAM,aAAa,SAAQ,CAAC;AACnC,eAAO,MAAM,YAAY,SAAS,CAAC;AA0CnC,qBAAa,MAAM;IACR,GAAG,EAAE,WAAW,CAAC;IACxB,OAAO,CAAC,IAAI,CAAwD;IACpE,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,iBAAiB,CAA4C;IACrE,OAAO,CAAC,QAAQ,CAA8C;IAC9D,OAAO,CAAC,OAAO,CAcT;IACN,OAAO,CAAC,OAAO,CAcT;IACN,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,gBAAgB,CAIhB;IACD,uBAAuB,EAAE,MAAM,CAAmB;IAClD,YAAY,EAAE,GAAG,CAAC;;YA6JX,IAAI;IAkDlB,OAAO,CAAC,YAAY;IAiDpB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA4B9B;;OAEG;YACW,eAAe;IAkC7B,OAAO,CAAC,eAAe;YAeT,UAAU;YAsHV,YAAY;IAqB1B,OAAO,CAAC,YAAY;IAgCpB,+BAA+B;IAC/B,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,mBAAmB;IA+K3B,OAAO,CAAC,kBAAkB;IAqC1B,OAAO,CAAC,kBAAkB;IA8B1B,OAAO,CAAC,mBAAmB;IA+BpB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAClC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IACnC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAClC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IACrC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IACpC,GAAG,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,gBAAgB,EAAE,YAAY,CAAC,EAAE,OAAO;IAY9E,gBAAgB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAInC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAgEnC,UAAU,CAAC,SAAS,GAAE,MAAe;IAIrC,WAAW,CAAC,UAAU,GAAE,MAAM,GAAG,MAAM,EAAY;IAKnD,YAAY,CAAC,OAAO,CAAC,EAAE;QAC1B,MAAM,CAAC,EAAE;YACL,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,KAAK,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC;QACF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC,IACW,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,KAAG,IAAI;CAsC5E"}
|