@ddd-ts-kit/http 0.7.0 → 0.9.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/README.md +107 -4
- package/dist/controller/controller-request.d.ts +7 -1
- package/dist/controller/controller-request.d.ts.map +1 -1
- package/dist/controller/controller-routes.d.ts.map +1 -1
- package/dist/controller/controller-routes.js +22 -3
- package/dist/controller/controller-routes.js.map +1 -1
- package/dist/controller/controller-spec.d.ts +7 -0
- package/dist/controller/controller-spec.d.ts.map +1 -1
- package/dist/controller/guard-refusals.d.ts +9 -0
- package/dist/controller/guard-refusals.d.ts.map +1 -0
- package/dist/controller/guard-refusals.js +16 -0
- package/dist/controller/guard-refusals.js.map +1 -0
- package/dist/controller/guards/has-scope.d.ts +10 -0
- package/dist/controller/guards/has-scope.d.ts.map +1 -0
- package/dist/controller/guards/has-scope.js +27 -0
- package/dist/controller/guards/has-scope.js.map +1 -0
- package/dist/controller/guards/tenant-member.d.ts +9 -0
- package/dist/controller/guards/tenant-member.d.ts.map +1 -0
- package/dist/controller/guards/tenant-member.js +22 -0
- package/dist/controller/guards/tenant-member.js.map +1 -0
- package/dist/controller/http-request.d.ts +9 -3
- package/dist/controller/http-request.d.ts.map +1 -1
- package/dist/error/default-error-mapping.d.ts.map +1 -1
- package/dist/error/default-error-mapping.js +3 -0
- package/dist/error/default-error-mapping.js.map +1 -1
- package/dist/express/mount-express.d.ts +2 -0
- package/dist/express/mount-express.d.ts.map +1 -1
- package/dist/express/mount-express.js +9 -1
- package/dist/express/mount-express.js.map +1 -1
- package/dist/fastify/mount-fastify.d.ts +5 -1
- package/dist/fastify/mount-fastify.d.ts.map +1 -1
- package/dist/fastify/mount-fastify.js +26 -3
- package/dist/fastify/mount-fastify.js.map +1 -1
- package/dist/files/signed-file-routes-options.d.ts +5 -0
- package/dist/files/signed-file-routes-options.d.ts.map +1 -0
- package/dist/files/signed-file-routes-options.js +2 -0
- package/dist/files/signed-file-routes-options.js.map +1 -0
- package/dist/files/signed-file-routes.d.ts +14 -0
- package/dist/files/signed-file-routes.d.ts.map +1 -0
- package/dist/files/signed-file-routes.js +69 -0
- package/dist/files/signed-file-routes.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/openapi/path-items.d.ts.map +1 -1
- package/dist/openapi/path-items.js +6 -8
- package/dist/openapi/path-items.js.map +1 -1
- package/dist/openapi/request-body.d.ts +6 -0
- package/dist/openapi/request-body.d.ts.map +1 -0
- package/dist/openapi/request-body.js +36 -0
- package/dist/openapi/request-body.js.map +1 -0
- package/dist/openapi/responses.d.ts.map +1 -1
- package/dist/openapi/responses.js +4 -1
- package/dist/openapi/responses.js.map +1 -1
- package/dist/pipeline/execute-options.d.ts +19 -0
- package/dist/pipeline/execute-options.d.ts.map +1 -1
- package/dist/pipeline/execute-route.d.ts.map +1 -1
- package/dist/pipeline/execute-route.js +44 -13
- package/dist/pipeline/execute-route.js.map +1 -1
- package/dist/pipeline/execution-of-request.d.ts +2 -0
- package/dist/pipeline/execution-of-request.d.ts.map +1 -1
- package/dist/pipeline/execution-of-request.js +1 -0
- package/dist/pipeline/execution-of-request.js.map +1 -1
- package/dist/pipeline/guard-refusal.d.ts +8 -0
- package/dist/pipeline/guard-refusal.d.ts.map +1 -0
- package/dist/pipeline/guard-refusal.js +2 -0
- package/dist/pipeline/guard-refusal.js.map +1 -0
- package/dist/pipeline/raw-request.d.ts +3 -0
- package/dist/pipeline/raw-request.d.ts.map +1 -1
- package/dist/pipeline/receive-upload.d.ts +12 -0
- package/dist/pipeline/receive-upload.d.ts.map +1 -0
- package/dist/pipeline/receive-upload.js +12 -0
- package/dist/pipeline/receive-upload.js.map +1 -0
- package/dist/pipeline/received-upload.d.ts +7 -0
- package/dist/pipeline/received-upload.d.ts.map +1 -0
- package/dist/pipeline/received-upload.js +2 -0
- package/dist/pipeline/received-upload.js.map +1 -0
- package/dist/pipeline/upload-reader.d.ts +9 -0
- package/dist/pipeline/upload-reader.d.ts.map +1 -0
- package/dist/pipeline/upload-reader.js +2 -0
- package/dist/pipeline/upload-reader.js.map +1 -0
- package/dist/route/header-of.d.ts +4 -0
- package/dist/route/header-of.d.ts.map +1 -0
- package/dist/route/header-of.js +6 -0
- package/dist/route/header-of.js.map +1 -0
- package/dist/route/incoming-file.d.ts +7 -0
- package/dist/route/incoming-file.d.ts.map +1 -0
- package/dist/route/incoming-file.js +2 -0
- package/dist/route/incoming-file.js.map +1 -0
- package/dist/route/request-context.d.ts +3 -0
- package/dist/route/request-context.d.ts.map +1 -1
- package/dist/route/route-input.d.ts +3 -0
- package/dist/route/route-input.d.ts.map +1 -1
- package/dist/route/route-spec.d.ts +5 -0
- package/dist/route/route-spec.d.ts.map +1 -1
- package/dist/route/upload-spec.d.ts +12 -0
- package/dist/route/upload-spec.d.ts.map +1 -0
- package/dist/route/upload-spec.js +2 -0
- package/dist/route/upload-spec.js.map +1 -0
- package/dist/tenancy/first-tenant-of.d.ts +4 -0
- package/dist/tenancy/first-tenant-of.d.ts.map +1 -0
- package/dist/tenancy/first-tenant-of.js +13 -0
- package/dist/tenancy/first-tenant-of.js.map +1 -0
- package/dist/tenancy/resolved-tenant.d.ts +22 -0
- package/dist/tenancy/resolved-tenant.d.ts.map +1 -0
- package/dist/tenancy/resolved-tenant.js +29 -0
- package/dist/tenancy/resolved-tenant.js.map +1 -0
- package/dist/tenancy/tenant-from-claim.d.ts +4 -0
- package/dist/tenancy/tenant-from-claim.d.ts.map +1 -0
- package/dist/tenancy/tenant-from-claim.js +5 -0
- package/dist/tenancy/tenant-from-claim.js.map +1 -0
- package/dist/tenancy/tenant-from-header.d.ts +4 -0
- package/dist/tenancy/tenant-from-header.d.ts.map +1 -0
- package/dist/tenancy/tenant-from-header.js +9 -0
- package/dist/tenancy/tenant-from-header.js.map +1 -0
- package/dist/tenancy/tenant-from-path.d.ts +4 -0
- package/dist/tenancy/tenant-from-path.d.ts.map +1 -0
- package/dist/tenancy/tenant-from-path.js +8 -0
- package/dist/tenancy/tenant-from-path.js.map +1 -0
- package/dist/tenancy/tenant-from-subdomain.d.ts +8 -0
- package/dist/tenancy/tenant-from-subdomain.d.ts.map +1 -0
- package/dist/tenancy/tenant-from-subdomain.js +17 -0
- package/dist/tenancy/tenant-from-subdomain.js.map +1 -0
- package/dist/tenancy/tenant-request.d.ts +10 -0
- package/dist/tenancy/tenant-request.d.ts.map +1 -0
- package/dist/tenancy/tenant-request.js +2 -0
- package/dist/tenancy/tenant-request.js.map +1 -0
- package/dist/tenancy/tenant-resolver.d.ts +8 -0
- package/dist/tenancy/tenant-resolver.d.ts.map +1 -0
- package/dist/tenancy/tenant-resolver.js +2 -0
- package/dist/tenancy/tenant-resolver.js.map +1 -0
- package/dist/tenancy/unknown-tenant-error.d.ts +6 -0
- package/dist/tenancy/unknown-tenant-error.d.ts.map +1 -0
- package/dist/tenancy/unknown-tenant-error.js +6 -0
- package/dist/tenancy/unknown-tenant-error.js.map +1 -0
- package/dist/uploads/missing-file.d.ts +4 -0
- package/dist/uploads/missing-file.d.ts.map +1 -0
- package/dist/uploads/missing-file.js +6 -0
- package/dist/uploads/missing-file.js.map +1 -0
- package/dist/uploads/multipart-limits.d.ts +7 -0
- package/dist/uploads/multipart-limits.d.ts.map +1 -0
- package/dist/uploads/multipart-limits.js +2 -0
- package/dist/uploads/multipart-limits.js.map +1 -0
- package/dist/uploads/multipart-uploads.d.ts +8 -0
- package/dist/uploads/multipart-uploads.d.ts.map +1 -0
- package/dist/uploads/multipart-uploads.js +9 -0
- package/dist/uploads/multipart-uploads.js.map +1 -0
- package/dist/uploads/read-multipart.d.ts +13 -0
- package/dist/uploads/read-multipart.d.ts.map +1 -0
- package/dist/uploads/read-multipart.js +65 -0
- package/dist/uploads/read-multipart.js.map +1 -0
- package/dist/uploads.d.ts +3 -0
- package/dist/uploads.d.ts.map +1 -0
- package/dist/uploads.js +2 -0
- package/dist/uploads.js.map +1 -0
- package/package.json +14 -4
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { UploadReader } from '../pipeline/upload-reader.js';
|
|
2
|
+
import type { MultipartLimits } from './multipart-limits.js';
|
|
3
|
+
/**
|
|
4
|
+
* The upload reader of the kit, on busboy: pass it as `uploads` to the mount options. The file
|
|
5
|
+
* streams to the handler while the request arrives, never held whole.
|
|
6
|
+
*/
|
|
7
|
+
export declare function multipartUploads(limits?: MultipartLimits): UploadReader;
|
|
8
|
+
//# sourceMappingURL=multipart-uploads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multipart-uploads.d.ts","sourceRoot":"","sources":["../../src/uploads/multipart-uploads.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,eAAoB,GAAG,YAAY,CAE3E"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { readMultipart } from './read-multipart.js';
|
|
2
|
+
/**
|
|
3
|
+
* The upload reader of the kit, on busboy: pass it as `uploads` to the mount options. The file
|
|
4
|
+
* streams to the handler while the request arrives, never held whole.
|
|
5
|
+
*/
|
|
6
|
+
export function multipartUploads(limits = {}) {
|
|
7
|
+
return (spec, request) => readMultipart(spec, request, limits);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=multipart-uploads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multipart-uploads.js","sourceRoot":"","sources":["../../src/uploads/multipart-uploads.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAM,GAAoB,EAAE;IAC3D,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RawRequest } from '../pipeline/raw-request.js';
|
|
2
|
+
import type { ReceivedUpload } from '../pipeline/received-upload.js';
|
|
3
|
+
import type { UploadSpec } from '../route/upload-spec.js';
|
|
4
|
+
import type { MultipartLimits } from './multipart-limits.js';
|
|
5
|
+
/**
|
|
6
|
+
* Parses a `multipart/form-data` request as it streams and resolves as soon as the declared file
|
|
7
|
+
* begins: the text fields read so far, and the file wrapped in a `FileInspection` that refuses it
|
|
8
|
+
* beyond `maxBytes` or when its first bytes are not one of the accepted media types. A request
|
|
9
|
+
* that announces a larger body is refused before any byte is read. A request that closes before
|
|
10
|
+
* its end fails the file stream, so whatever consumes it rejects instead of waiting forever.
|
|
11
|
+
*/
|
|
12
|
+
export declare function readMultipart(spec: UploadSpec, request: RawRequest, limits: MultipartLimits): Promise<ReceivedUpload>;
|
|
13
|
+
//# sourceMappingURL=read-multipart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-multipart.d.ts","sourceRoot":"","sources":["../../src/uploads/read-multipart.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK7D;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CA4CrH"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { pipeline } from 'node:stream/promises';
|
|
2
|
+
import busboy, {} from 'busboy';
|
|
3
|
+
import { FileError, FileInspection, mediaTypeOf } from '@ddd-ts-kit/kernel';
|
|
4
|
+
import { headerOf } from '../route/header-of.js';
|
|
5
|
+
import { missingFile } from './missing-file.js';
|
|
6
|
+
/** Room for the boundaries, the part headers and the text fields over the declared size of the file. */
|
|
7
|
+
const ENVELOPE_BYTES = 1_048_576;
|
|
8
|
+
/**
|
|
9
|
+
* Parses a `multipart/form-data` request as it streams and resolves as soon as the declared file
|
|
10
|
+
* begins: the text fields read so far, and the file wrapped in a `FileInspection` that refuses it
|
|
11
|
+
* beyond `maxBytes` or when its first bytes are not one of the accepted media types. A request
|
|
12
|
+
* that announces a larger body is refused before any byte is read. A request that closes before
|
|
13
|
+
* its end fails the file stream, so whatever consumes it rejects instead of waiting forever.
|
|
14
|
+
*/
|
|
15
|
+
export function readMultipart(spec, request, limits) {
|
|
16
|
+
const contentType = headerOf(request.headers, 'content-type');
|
|
17
|
+
if (mediaTypeOf(contentType) !== 'multipart/form-data') {
|
|
18
|
+
return Promise.reject(FileError.unsupportedMediaType(mediaTypeOf(contentType), ['multipart/form-data']));
|
|
19
|
+
}
|
|
20
|
+
if (Number(headerOf(request.headers, 'content-length')) > spec.maxBytes + ENVELOPE_BYTES) {
|
|
21
|
+
return Promise.reject(FileError.tooLarge(spec.maxBytes));
|
|
22
|
+
}
|
|
23
|
+
const { stream } = request;
|
|
24
|
+
if (stream === undefined) {
|
|
25
|
+
return Promise.reject(new Error('The adapter handed no request stream: an upload cannot be read.'));
|
|
26
|
+
}
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
const parser = busboy({ headers: { 'content-type': contentType }, limits: limitsOf(spec, limits) });
|
|
29
|
+
const fields = {};
|
|
30
|
+
parser.on('field', (name, value) => {
|
|
31
|
+
fields[name] = value;
|
|
32
|
+
});
|
|
33
|
+
parser.on('file', (name, file, info) => {
|
|
34
|
+
if (name !== spec.field) {
|
|
35
|
+
file.resume();
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
resolve({ fields: { ...fields }, file: inspected(spec, file, info) });
|
|
39
|
+
});
|
|
40
|
+
parser.on('error', reject);
|
|
41
|
+
parser.on('close', () => {
|
|
42
|
+
reject(missingFile(spec.field));
|
|
43
|
+
});
|
|
44
|
+
// A client that drops the connection part-way destroys the parser, which fails the file with it.
|
|
45
|
+
pipeline(stream, parser).catch(reject);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function limitsOf(spec, limits) {
|
|
49
|
+
return {
|
|
50
|
+
files: 1,
|
|
51
|
+
fileSize: spec.maxBytes + 1,
|
|
52
|
+
fields: limits.fields ?? 20,
|
|
53
|
+
fieldSize: limits.fieldBytes ?? 65_536,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function inspected(spec, file, info) {
|
|
57
|
+
const mediaType = mediaTypeOf(info.mimeType);
|
|
58
|
+
const inspection = new FileInspection({
|
|
59
|
+
maxBytes: spec.maxBytes,
|
|
60
|
+
expected: { mediaType, accepted: spec.mediaTypes },
|
|
61
|
+
});
|
|
62
|
+
void pipeline(file, inspection).catch(() => undefined);
|
|
63
|
+
return { fileName: info.filename ?? '', mediaType, stream: inspection };
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=read-multipart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-multipart.js","sourceRoot":"","sources":["../../src/uploads/read-multipart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,MAAM,EAAE,EAAiB,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAI5E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,wGAAwG;AACxG,MAAM,cAAc,GAAG,SAAS,CAAC;AAEjC;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAgB,EAAE,OAAmB,EAAE,MAAuB;IAC1F,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAE9D,IAAI,WAAW,CAAC,WAAW,CAAC,KAAK,qBAAqB,EAAE,CAAC;QACvD,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC3G,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,cAAc,EAAE,CAAC;QACzF,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC,CAAC;IACtG,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACpG,MAAM,MAAM,GAA2B,EAAE,CAAC;QAE1C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;YACjD,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,IAA2B,EAAE,IAAc,EAAE,EAAE;YAC9E,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,EAAE,CAAC;gBAEd,OAAO;YACT,CAAC;YAED,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE3B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,iGAAiG;QACjG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,IAAgB,EAAE,MAAuB;IACzD,OAAO;QACL,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,SAAS,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM;KACvC,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,IAAgB,EAAE,IAA2B,EAAE,IAAc;IAC9E,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE7C,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC;QACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE;KACnD,CAAC,CAAC;IAEH,KAAK,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAEvD,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploads.d.ts","sourceRoot":"","sources":["../src/uploads.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC"}
|
package/dist/uploads.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploads.js","sourceRoot":"","sources":["../src/uploads.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ddd-ts-kit/http",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Framework-agnostic route definitions with Express, Fastify and NestJS adapters and OpenAPI 3.1 generation.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -40,20 +40,25 @@
|
|
|
40
40
|
"./docs": {
|
|
41
41
|
"types": "./dist/docs.d.ts",
|
|
42
42
|
"default": "./dist/docs.js"
|
|
43
|
+
},
|
|
44
|
+
"./uploads": {
|
|
45
|
+
"types": "./dist/uploads.d.ts",
|
|
46
|
+
"default": "./dist/uploads.js"
|
|
43
47
|
}
|
|
44
48
|
},
|
|
45
49
|
"files": [
|
|
46
50
|
"dist"
|
|
47
51
|
],
|
|
48
52
|
"dependencies": {
|
|
49
|
-
"@ddd-ts-kit/kernel": "0.
|
|
50
|
-
"@ddd-ts-kit/validation": "0.
|
|
53
|
+
"@ddd-ts-kit/kernel": "0.9.0",
|
|
54
|
+
"@ddd-ts-kit/validation": "0.9.0"
|
|
51
55
|
},
|
|
52
56
|
"peerDependencies": {
|
|
53
57
|
"@nestjs/common": ">=11.0.0",
|
|
54
58
|
"@nestjs/core": ">=11.0.0",
|
|
55
59
|
"express": "^5.0.0",
|
|
56
|
-
"fastify": "^5.0.0"
|
|
60
|
+
"fastify": "^5.0.0",
|
|
61
|
+
"busboy": "^1.6.0"
|
|
57
62
|
},
|
|
58
63
|
"peerDependenciesMeta": {
|
|
59
64
|
"express": {
|
|
@@ -67,6 +72,9 @@
|
|
|
67
72
|
},
|
|
68
73
|
"@nestjs/core": {
|
|
69
74
|
"optional": true
|
|
75
|
+
},
|
|
76
|
+
"busboy": {
|
|
77
|
+
"optional": true
|
|
70
78
|
}
|
|
71
79
|
},
|
|
72
80
|
"devDependencies": {
|
|
@@ -74,7 +82,9 @@
|
|
|
74
82
|
"@nestjs/core": "^12.1.2",
|
|
75
83
|
"@nestjs/platform-express": "^12.1.2",
|
|
76
84
|
"@nestjs/platform-fastify": "^12.1.2",
|
|
85
|
+
"@types/busboy": "^1.5.5",
|
|
77
86
|
"@types/express": "^5.0.0",
|
|
87
|
+
"busboy": "^1.6.0",
|
|
78
88
|
"express": "^5.3.0",
|
|
79
89
|
"fastify": "^5.12.5",
|
|
80
90
|
"reflect-metadata": "^0.2.2",
|