@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 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
- const files = hasFiles ? req.files() : [];
11
- for await (const part of files) {
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;
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
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,CAAC,QAAQ,EAAE;QACb,OAAO,EAAE,CAAA;KACV;IACD,IAAI;QACF,MAAM,IAAI,GAAuC,EAAE,CAAA;QACnD,oFAAoF;QACpF,EAAE;QACF,gGAAgG;QAChG,8FAA8F;QAC9F,4FAA4F;QAC5F,6FAA6F;QAC7F,gGAAgG;QAChG,+FAA+F;QAC/F,8FAA8F;QAC9F,mDAAmD;QACnD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE;YACpC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;gBACxB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG;oBACrB,KAAK,EAAE,IAAI,CAAC,SAAS;oBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,MAAM,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE;iBAC9B,CAAA;aACF;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAA;aAClC;SACF;QACD,OAAO,IAAI,CAAA;KACZ;IAAC,OAAO,GAAQ,EAAE;QACjB,MAAM,eAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;KACpC;AACH,CAAC,CAAA;AAaM,MAAM,cAAc,GAAG,CAC5B,MAAuB,EACvB,SAAyB,EACzB,MAAc,EACd,OAAmD,EACnD,EAAE;IACF,MAAM,gBAAgB,GAAG,IAAA,0BAAmB,EAAC,SAAS,CAAC,CAAA;IACvD,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACtC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACjC,MAAM,UAAU,GAAG,IAAA,2BAAoB,EAAC,KAAK,CAAC,CAAA;YAC9C,MAAM,GAAG,GAAG,IAAA,qBAAc,EAAC,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;YACrE,MAAM,CAAC,KAAK,CAAC;gBACX,MAAM,EAAE,QAAQ,CAAC,UAAU;gBAC3B,GAAG;gBACH,OAAO,EAAE,IAAA,qBAAS,EAChB,IAAA,qBAAS,EAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,GAAY,EAAE,KAAK,EAAE,EAAE;oBAC5D,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,MAAM,EAAE;wBAC/C,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;4BACb,QAAQ;4BACR,MAAM,EAAE,QAAQ,CAAC,UAAU;4BAC3B,GAAG;4BACH,OAAO,EAAE,GAAG,CAAC,OAAO;4BACpB,MAAM,EAAE,GAAG,CAAC,MAAM;4BAClB,IAAI,EAAE,GAAG,CAAC,IAAI;yBACf,CAAC,CACH,CAAA;qBACF;oBACD,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;oBAClE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CACvC,KAAK,CAAC,OAAO,CAAC;wBACZ,GAAG,aAAa;wBAChB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;qBAC7D,CAAC,CACH,CAAA;oBACD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;oBACtE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;wBAClC,OAAO,MAAM,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;qBAClC;oBACD,KAAK;yBACF,OAAO,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;yBAC/C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;yBACvB,IAAI,CAAC;wBACJ,IAAI,EAAE,MAAM,QAAQ;qBACrB,CAAC,CAAA;gBACN,CAAC,CAAC,EACF,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;oBACjB,OAAO,CAAC;wBACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACnC,MAAM,EAAE,gBAAgB,CAAC,MAAM;wBAC/B,OAAO,EAAE,KAAK,CAAC,IAAI;wBACnB,GAAG;wBACH,UAAU,EAAE,QAAQ,CAAC,UAAU;wBAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;wBACpB,OAAO,EAAE;4BACP,GAAG,OAAO,CAAC,IAAI;4BACf,GAAG,OAAO,CAAC,MAAM;4BACjB,GAAG,OAAO,CAAC,KAAK;yBACjB;qBACF,CAAC,CAAA;gBACJ,CAAC,CACF;aACF,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAlEY,QAAA,cAAc,kBAkE1B"}
@@ -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;AAwB5B,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"}
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.103",
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.84",
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",