pipework 0.152.0 → 0.154.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.
@@ -8,28 +8,36 @@ export declare const MULTIPART_FIELD_LIMIT: number;
8
8
  export declare function uploadBodyLimit(config: UploadConfig): number;
9
9
  /** `type/subtype` of a Content-Type value, lowercased and without parameters. */
10
10
  export declare function mediaTypeOf(value: string | undefined): string;
11
- /** True when `mediaType` matches an allowed entry, exactly or by `type/*`. */
11
+ /** True when `mediaType` matches an allowed entry: exactly, by `type/*`, or by a star on each side of the slash (any non-empty type). */
12
12
  export declare function mediaTypeAllowed(allowed: readonly string[], mediaType: string): boolean;
13
+ /** True for a 413 or 415 pipework raised for a file, as opposed to one a handler threw. */
14
+ export declare function isUploadRefusal(error: unknown): error is PayloadTooLargeError | UnsupportedMediaTypeError;
15
+ /** What pipework knows of the file at the moment it refuses it. */
16
+ export interface UploadTrack {
17
+ declaredType: string;
18
+ extension: string | null;
19
+ filename: string | null;
20
+ detectedType: string | null;
21
+ bytesRead: number;
22
+ }
23
+ export declare function newUploadTrack(): UploadTrack;
13
24
  /**
14
- * Refuses an upload request from its headers alone, before any body is read:
15
- * 415 for a media type outside the route's list, 413 for a declared length over
16
- * the limit. Returns nothing when the request may proceed.
25
+ * Refuses a multipart route's request that is not `multipart/form-data`, from
26
+ * its headers alone. A protocol error: no file is involved. Binary routes have
27
+ * no header check; their type is settled from the bytes.
17
28
  */
18
- export declare function checkUploadHeaders(config: UploadConfig, headers: Record<string, string | string[] | undefined>): UnsupportedMediaTypeError | PayloadTooLargeError | null;
29
+ export declare function checkUploadHeaders(config: UploadConfig, headers: Record<string, string | string[] | undefined>): UnsupportedMediaTypeError | null;
19
30
  /**
20
31
  * Passes `source` through, erroring with a 413 once more than `maxBytes` have
21
32
  * passed. A failure of `source` becomes the failure of the returned stream.
22
33
  */
23
- export declare function limitStream(source: Readable, maxBytes: number, mapError?: (e: unknown) => Error, onUnfinished?: () => Error): Readable;
24
- /** Starts a binary upload: the request payload as a size-limited stream. */
25
- export declare function binaryUpload(req: FastifyRequest, maxBytes: number): BinaryUpload;
34
+ export declare function limitStream(source: Readable, maxBytes: number, mapError?: (e: unknown) => Error, onUnfinished?: () => Error, track?: UploadTrack): Readable;
26
35
  /**
27
- * Reads a multipart body up to its file part: the text fields before it, then
28
- * the file as a size-limited stream. Nothing after the file part is read.
36
+ * Starts an upload: refuses a declared length over the limit, builds the size-
37
+ * limited file stream, reads its first bytes to settle the media type, and
38
+ * refuses a type outside the route's list. `track` follows what is learned.
29
39
  */
30
- export declare function multipartUpload(req: FastifyRequest, config: Extract<UploadConfig, {
31
- kind: 'multipart';
32
- }>): Promise<MultipartUpload>;
40
+ export declare function startUpload(req: FastifyRequest, config: UploadConfig, track: UploadTrack): Promise<BinaryUpload | MultipartUpload>;
33
41
  /**
34
42
  * Ends an upload after its handler: a stream not read to the end is destroyed.
35
43
  * Returns true when the body was left incomplete, so the caller closes the
@@ -1 +1 @@
1
- {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/request/http/upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACjF,OAAO,EAA4C,oBAAoB,EAAE,yBAAyB,EAAmB,MAAM,4BAA4B,CAAA;AAEvJ,uDAAuD;AACvD,eAAO,MAAM,qBAAqB,QAAY,CAAA;AAG9C,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAG5D;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAG7D;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAQvF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,yBAAyB,GAAG,oBAAoB,GAAG,IAAI,CAiBxK;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,CAAC,CAAC,EAAE,OAAO,KAAK,KAAyB,EACnD,YAAY,CAAC,EAAE,MAAM,KAAK,GACzB,QAAQ,CAyBV;AAiBD,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,CAUhF;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,GACnD,OAAO,CAAC,eAAe,CAAC,CAM1B;AAyCD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAMlE"}
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/request/http/upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEjF,OAAO,EAA4C,oBAAoB,EAAE,yBAAyB,EAAmB,MAAM,4BAA4B,CAAA;AAEvJ,uDAAuD;AACvD,eAAO,MAAM,qBAAqB,QAAY,CAAA;AAG9C,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAG5D;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAG7D;AAED,yIAAyI;AACzI,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAQvF;AASD,2FAA2F;AAC3F,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,GAAG,yBAAyB,CAEzG;AAED,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,cAAc,IAAI,WAAW,CAE5C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,yBAAyB,GAAG,IAAI,CAWjJ;AAWD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,CAAC,CAAC,EAAE,OAAO,KAAK,KAAyB,EACnD,YAAY,CAAC,EAAE,MAAM,KAAK,EAC1B,KAAK,CAAC,EAAE,WAAW,GAClB,QAAQ,CA0BV;AA4FD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,GAAG,eAAe,CAAC,CAmBxI;AAyCD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAMlE"}
@@ -1,4 +1,5 @@
1
1
  import { Readable, Transform } from 'node:stream';
2
+ import { resolveMediaType, SNIFF_BYTES } from './sniff.js';
2
3
  import { isPipeworkError, MalformedMultipartError, PayloadTooLargeError, UnsupportedMediaTypeError, ValidationError } from '../../core/errors/index.js';
3
4
  /** Largest accepted multipart text field, in bytes. */
4
5
  export const MULTIPART_FIELD_LIMIT = 64 * 1024;
@@ -15,36 +16,52 @@ export function mediaTypeOf(value) {
15
16
  return '';
16
17
  return (value.split(';')[0] ?? '').trim().toLowerCase();
17
18
  }
18
- /** True when `mediaType` matches an allowed entry, exactly or by `type/*`. */
19
+ /** True when `mediaType` matches an allowed entry: exactly, by `type/*`, or by a star on each side of the slash (any non-empty type). */
19
20
  export function mediaTypeAllowed(allowed, mediaType) {
20
21
  if (mediaType === '')
21
22
  return false;
22
23
  for (const entry of allowed) {
23
24
  const a = entry.trim().toLowerCase();
24
- if (a === mediaType)
25
+ if (a === mediaType || a === '*/*')
25
26
  return true;
26
27
  if (a.endsWith('/*') && mediaType.startsWith(a.slice(0, -1)))
27
28
  return true;
28
29
  }
29
30
  return false;
30
31
  }
32
+ const pipeworkRefusals = new WeakSet();
33
+ function refusal(error) {
34
+ pipeworkRefusals.add(error);
35
+ return error;
36
+ }
37
+ /** True for a 413 or 415 pipework raised for a file, as opposed to one a handler threw. */
38
+ export function isUploadRefusal(error) {
39
+ return typeof error === 'object' && error !== null && pipeworkRefusals.has(error);
40
+ }
41
+ export function newUploadTrack() {
42
+ return { declaredType: '', extension: null, filename: null, detectedType: null, bytesRead: 0 };
43
+ }
31
44
  /**
32
- * Refuses an upload request from its headers alone, before any body is read:
33
- * 415 for a media type outside the route's list, 413 for a declared length over
34
- * the limit. Returns nothing when the request may proceed.
45
+ * Refuses a multipart route's request that is not `multipart/form-data`, from
46
+ * its headers alone. A protocol error: no file is involved. Binary routes have
47
+ * no header check; their type is settled from the bytes.
35
48
  */
36
49
  export function checkUploadHeaders(config, headers) {
50
+ if (config.kind === 'binary')
51
+ return null;
37
52
  const contentType = headers['content-type'];
38
53
  const mediaType = mediaTypeOf(Array.isArray(contentType) ? contentType[0] : contentType);
39
- const accepted = config.kind === 'binary' ? config.mediaTypes : ['multipart/form-data'];
40
- if (!mediaTypeAllowed(accepted, mediaType)) {
41
- return new UnsupportedMediaTypeError(mediaType === ''
42
- ? `This route needs a Content-Type; accepted: ${accepted.join(', ')}`
43
- : `Media type ${mediaType} is not accepted; accepted: ${accepted.join(', ')}`, { accepted });
44
- }
54
+ if (mediaType === 'multipart/form-data')
55
+ return null;
56
+ return new UnsupportedMediaTypeError(mediaType === ''
57
+ ? 'This route needs a Content-Type; accepted: multipart/form-data'
58
+ : `Media type ${mediaType} is not accepted; accepted: multipart/form-data`, { accepted: ['multipart/form-data'] });
59
+ }
60
+ /** 413 when the request declares a length over what the route may receive. */
61
+ function checkDeclaredLength(config, headers) {
45
62
  const declared = Number(headers['content-length']);
46
63
  if (headers['content-length'] !== undefined && Number.isFinite(declared) && declared > uploadBodyLimit(config)) {
47
- return new PayloadTooLargeError(`Request body is ${declared} bytes; the limit is ${config.maxBytes}`, { maxBytes: config.maxBytes });
64
+ return refusal(new PayloadTooLargeError(`Request body is ${declared} bytes; the limit is ${config.maxBytes}`, { maxBytes: config.maxBytes }));
48
65
  }
49
66
  return null;
50
67
  }
@@ -52,14 +69,16 @@ export function checkUploadHeaders(config, headers) {
52
69
  * Passes `source` through, erroring with a 413 once more than `maxBytes` have
53
70
  * passed. A failure of `source` becomes the failure of the returned stream.
54
71
  */
55
- export function limitStream(source, maxBytes, mapError = (e) => e, onUnfinished) {
72
+ export function limitStream(source, maxBytes, mapError = (e) => e, onUnfinished, track) {
56
73
  let seen = 0;
57
74
  const counter = new Transform({
58
75
  transform(chunk, _enc, cb) {
59
76
  seen += chunk.length;
77
+ if (track !== undefined)
78
+ track.bytesRead = seen;
60
79
  if (seen > maxBytes) {
61
80
  source.unpipe(counter);
62
- cb(new PayloadTooLargeError(`Upload is over the limit of ${maxBytes} bytes`, { maxBytes }));
81
+ cb(refusal(new PayloadTooLargeError(`Upload is over the limit of ${maxBytes} bytes`, { maxBytes })));
63
82
  return;
64
83
  }
65
84
  cb(null, chunk);
@@ -84,7 +103,7 @@ export function limitStream(source, maxBytes, mapError = (e) => e, onUnfinished)
84
103
  function toUploadError(e) {
85
104
  const code = e?.code;
86
105
  if (code === 'FST_REQ_FILE_TOO_LARGE')
87
- return new PayloadTooLargeError('Uploaded file is over the size limit');
106
+ return refusal(new PayloadTooLargeError('Uploaded file is over the size limit'));
88
107
  return asMalformedMultipart(e);
89
108
  }
90
109
  /** A parser failure becomes a 400; errors that already carry a status are kept. */
@@ -97,31 +116,101 @@ function asMalformedMultipart(e) {
97
116
  const message = e instanceof Error ? e.message : String(e);
98
117
  return new MalformedMultipartError(undefined, { cause: message });
99
118
  }
100
- /** Starts a binary upload: the request payload as a size-limited stream. */
101
- export function binaryUpload(req, maxBytes) {
102
- const body = req.body;
103
- const source = body instanceof Readable ? body : Readable.from([]);
104
- const declared = req.headers['content-length'];
105
- const length = declared === undefined ? null : Number(declared);
106
- return {
107
- stream: limitStream(source, maxBytes),
108
- mediaType: mediaTypeOf(req.headers['content-type']),
109
- length: length !== null && Number.isFinite(length) ? length : null,
110
- };
119
+ /** Lowercase text after the last dot of a filename; null without a filename or a dot. */
120
+ function extensionOf(filename) {
121
+ if (filename === null)
122
+ return null;
123
+ const dot = filename.lastIndexOf('.');
124
+ const ext = dot < 0 ? '' : filename.slice(dot + 1).toLowerCase();
125
+ return ext === '' ? null : ext;
111
126
  }
112
127
  /**
113
- * Reads a multipart body up to its file part: the text fields before it, then
114
- * the file as a size-limited stream. Nothing after the file part is read.
128
+ * Reads up to SNIFF_BYTES from `source`, then returns them with a stream that
129
+ * yields them again followed by the rest of `source`, byte for byte. Nothing
130
+ * further is buffered. A failure of `source` while reading the head is thrown.
131
+ */
132
+ async function withHead(source) {
133
+ const it = source[Symbol.asyncIterator]();
134
+ const chunks = [];
135
+ let length = 0;
136
+ let ended = false;
137
+ while (length < SNIFF_BYTES) {
138
+ const next = await it.next();
139
+ if (next.done === true) {
140
+ ended = true;
141
+ break;
142
+ }
143
+ chunks.push(next.value);
144
+ length += next.value.length;
145
+ }
146
+ const all = Buffer.concat(chunks);
147
+ async function* rejoin() {
148
+ try {
149
+ if (all.length > 0)
150
+ yield all;
151
+ while (!ended) {
152
+ const next = await it.next();
153
+ if (next.done === true)
154
+ return;
155
+ yield next.value;
156
+ }
157
+ }
158
+ finally {
159
+ source.destroy();
160
+ }
161
+ }
162
+ const stream = Readable.from(rejoin(), { objectMode: false });
163
+ stream.on('close', () => source.destroy());
164
+ return { head: all.subarray(0, SNIFF_BYTES), stream };
165
+ }
166
+ /** Reads the head of `limited`, settles the file's type and refuses a type outside the route's list. */
167
+ async function sniffFile(config, limited, declaredType, filename, track) {
168
+ const extension = extensionOf(filename);
169
+ track.declaredType = declaredType;
170
+ track.filename = filename;
171
+ track.extension = extension;
172
+ const { head, stream } = await withHead(limited);
173
+ const { detectedType, mediaType } = resolveMediaType({ head, declared: declaredType, extension });
174
+ track.detectedType = detectedType;
175
+ if (!mediaTypeAllowed(config.mediaTypes, mediaType)) {
176
+ stream.destroy();
177
+ throw refusal(new UnsupportedMediaTypeError(`File media type is not accepted (detected ${detectedType ?? 'none'}, declared ${declaredType === '' ? 'none' : declaredType}); accepted: ${config.mediaTypes.join(', ')}`, { accepted: config.mediaTypes, detectedType, declaredType }));
178
+ }
179
+ return { stream, mediaType, detectedType, declaredType, extension };
180
+ }
181
+ /**
182
+ * Starts an upload: refuses a declared length over the limit, builds the size-
183
+ * limited file stream, reads its first bytes to settle the media type, and
184
+ * refuses a type outside the route's list. `track` follows what is learned.
115
185
  */
116
- export async function multipartUpload(req, config) {
186
+ export async function startUpload(req, config, track) {
187
+ if (config.kind === 'binary') {
188
+ track.declaredType = mediaTypeOf(req.headers['content-type']);
189
+ const tooLarge = checkDeclaredLength(config, req.headers);
190
+ if (tooLarge !== null)
191
+ throw tooLarge;
192
+ const body = req.body;
193
+ const source = body instanceof Readable ? body : Readable.from([]);
194
+ const declared = req.headers['content-length'];
195
+ const length = declared === undefined ? null : Number(declared);
196
+ const file = await sniffFile(config, limitStream(source, config.maxBytes, undefined, undefined, track), track.declaredType, null, track);
197
+ return { ...file, length: length !== null && Number.isFinite(length) ? length : null };
198
+ }
199
+ const tooLarge = checkDeclaredLength(config, req.headers);
200
+ if (tooLarge !== null)
201
+ throw tooLarge;
117
202
  try {
118
- return await readMultipart(req, config);
203
+ return await readMultipart(req, config, track);
119
204
  }
120
205
  catch (e) {
121
206
  throw asMalformedMultipart(e);
122
207
  }
123
208
  }
124
- async function readMultipart(req, config) {
209
+ /**
210
+ * Reads a multipart body up to its file part: the text fields before it, then
211
+ * the file as a size-limited stream. Nothing after the file part is read.
212
+ */
213
+ async function readMultipart(req, config, track) {
125
214
  const allowedFields = new Set(config.fields ?? []);
126
215
  const fields = {};
127
216
  for await (const part of req.parts()) {
@@ -139,17 +228,16 @@ async function readMultipart(req, config) {
139
228
  part.file.resume();
140
229
  throw new ValidationError({ [part.fieldname]: ['Unexpected file field'] }, `Unexpected file field "${part.fieldname}"; the file goes in "${config.file}"`);
141
230
  }
142
- const mediaType = mediaTypeOf(part.mimetype);
143
- if (!mediaTypeAllowed(config.mediaTypes, mediaType)) {
231
+ const filename = part.filename === '' ? null : part.filename;
232
+ const limited = limitStream(part.file, config.maxBytes, toUploadError, () => new MalformedMultipartError(undefined, { cause: 'The body ended before the file part was closed' }), track);
233
+ try {
234
+ const file = await sniffFile(config, limited, mediaTypeOf(part.mimetype), filename, track);
235
+ return { ...file, filename, fields };
236
+ }
237
+ catch (e) {
144
238
  part.file.resume();
145
- throw new UnsupportedMediaTypeError(`File media type ${mediaType === '' ? '(none)' : mediaType} is not accepted; accepted: ${config.mediaTypes.join(', ')}`, { accepted: config.mediaTypes });
239
+ throw e;
146
240
  }
147
- return {
148
- stream: limitStream(part.file, config.maxBytes, toUploadError, () => new MalformedMultipartError(undefined, { cause: 'The body ended before the file part was closed' })),
149
- mediaType,
150
- filename: part.filename === '' ? null : part.filename,
151
- fields,
152
- };
153
241
  }
154
242
  throw new ValidationError({ [config.file]: ['Required'] }, `The form has no file part named "${config.file}"`);
155
243
  }
@@ -1 +1 @@
1
- {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/request/http/upload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/request/http/upload.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pipework",
3
- "version": "0.152.0",
3
+ "version": "0.154.0",
4
4
  "description": "TypeScript framework for multi-tenant SaaS applications. PostgreSQL-only.",
5
5
  "type": "module",
6
6
  "license": "MIT",