@pjts/fastify 0.0.103 → 0.0.105
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/router.js +14 -7
- package/dist/router.js.map +1 -1
- package/dist/utils/withCatch.d.ts +1 -0
- package/dist/utils/withCatch.js.map +1 -1
- package/package.json +2 -2
package/dist/router.js
CHANGED
|
@@ -5,10 +5,22 @@ const core_1 = require("@pjts/core");
|
|
|
5
5
|
const withCatch_1 = require("./utils/withCatch");
|
|
6
6
|
const getMultipartData = async (req, params) => {
|
|
7
7
|
const hasFiles = params.some(p => p.source === 'file');
|
|
8
|
+
if (!hasFiles) {
|
|
9
|
+
return {};
|
|
10
|
+
}
|
|
8
11
|
try {
|
|
9
12
|
const data = {};
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
// Drain EVERY multipart part (fields *and* files) via req.parts(), not req.files().
|
|
14
|
+
//
|
|
15
|
+
// req.files() yields only file parts, and @fastify/multipart exposes a file part's sibling form
|
|
16
|
+
// fields (via part.fields) only for fields parsed *before* that file in the request body. The
|
|
17
|
+
// generated client appends the uploaded file first and the scalar @Body params after it, so
|
|
18
|
+
// reading fields off the file part silently drops every trailing @Body value — on the server
|
|
19
|
+
// they reconstitute to their empty value (e.g. a Flag becomes null), which is how a real upload
|
|
20
|
+
// could commit as a no-op "preview". Iterating req.parts() captures each field no matter where
|
|
21
|
+
// it sits relative to the file. Each file part is consumed via toBuffer() before advancing so
|
|
22
|
+
// the underlying stream never stalls the iterator.
|
|
23
|
+
for await (const part of req.parts()) {
|
|
12
24
|
if (part.type === 'file') {
|
|
13
25
|
data[part.fieldname] = {
|
|
14
26
|
field: part.fieldname,
|
|
@@ -16,11 +28,6 @@ const getMultipartData = async (req, params) => {
|
|
|
16
28
|
mimeType: part.mimetype,
|
|
17
29
|
buffer: await part.toBuffer(),
|
|
18
30
|
};
|
|
19
|
-
Object.entries(part.fields).forEach((entry) => {
|
|
20
|
-
if (entry[1].type === 'field') {
|
|
21
|
-
data[entry[0]] = entry[1].value;
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
31
|
}
|
|
25
32
|
else {
|
|
26
33
|
data[part.fieldname] = part.value;
|
package/dist/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":";;;AACA,qCAOmB;AACnB,iDAAiE;AASjE,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAY,EAAE,MAAuB,EAA+C,EAAE;IACpH,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;IACtD,IAAI
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ export interface Request {
|
|
|
17
17
|
query: Record<string, string>;
|
|
18
18
|
body: Record<string, any>;
|
|
19
19
|
files: () => FileDescriptor[];
|
|
20
|
+
parts: () => AsyncIterableIterator<FileDescriptor>;
|
|
20
21
|
}
|
|
21
22
|
export declare const withCatch: (controller: Controller, onError: (error: Error, request: Request) => void) => Controller;
|
|
22
23
|
export declare const withPipes: (pipes: Function[], controller: Controller) => Controller;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withCatch.js","sourceRoot":"","sources":["../../src/utils/withCatch.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,qCAAmC;
|
|
1
|
+
{"version":3,"file":"withCatch.js","sourceRoot":"","sources":["../../src/utils/withCatch.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,qCAAmC;AA2B5B,MAAM,SAAS,GACpB,CAAC,UAAsB,EAAE,OAAiD,EAAc,EAAE,CACxF,KAAK,EAAE,OAAgB,EAAE,KAAU,EAAoB,EAAE;IACvD,IAAI;QACF,OAAO,MAAM,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;KACxC;IAAC,OAAO,GAAQ,EAAE;QACjB,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE;YACnD,OAAO,CAAC,GAAY,EAAE,OAAO,CAAC,CAAA;SAC/B;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,MAAM,EAAE;YAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;SACjB;QACD,IAAI,GAAG,CAAC,UAAU,EAAE;YAClB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;SACrD;QACD,aAAM,CAAC,KAAK,CAAE,GAAa,CAAC,QAAQ,EAAE,CAAC,CAAA;QACvC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC1B,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,+CAA+C;SACzD,CAAC,CAAA;KACH;AACH,CAAC,CAAA;AArBQ,QAAA,SAAS,aAqBjB;AAEE,MAAM,SAAS,GACpB,CAAC,KAAiB,EAAE,UAAsB,EAAc,EAAE,CACxD,KAAK,EAAE,OAAgB,EAAE,KAAU,EAAoB,EAAE;IACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;KAC3B;IACD,OAAO,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACnC,CAAC,CAAA;AAPQ,QAAA,SAAS,aAOjB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pjts/fastify",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.105",
|
|
4
4
|
"description": "Piotr Józefów DDD utility package",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"@fastify/multipart": "7.6.0",
|
|
35
35
|
"@fastify/swagger": "8.3.1",
|
|
36
36
|
"@fastify/swagger-ui": "1.3.0",
|
|
37
|
-
"@pjts/swagger": "^0.0.
|
|
37
|
+
"@pjts/swagger": "^0.0.88",
|
|
38
38
|
"@types/express": "4.17.17",
|
|
39
39
|
"@types/node": "18.13.0",
|
|
40
40
|
"express": "4.18.2",
|