@effect/platform 0.85.1 → 0.86.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.
Files changed (42) hide show
  1. package/dist/cjs/HttpApiBuilder.js +15 -5
  2. package/dist/cjs/HttpApiBuilder.js.map +1 -1
  3. package/dist/cjs/HttpApiSchema.js +8 -10
  4. package/dist/cjs/HttpApiSchema.js.map +1 -1
  5. package/dist/cjs/HttpIncomingMessage.js +7 -5
  6. package/dist/cjs/HttpIncomingMessage.js.map +1 -1
  7. package/dist/cjs/HttpServerRequest.js +10 -4
  8. package/dist/cjs/HttpServerRequest.js.map +1 -1
  9. package/dist/cjs/Multipart.js +400 -47
  10. package/dist/cjs/Multipart.js.map +1 -1
  11. package/dist/dts/HttpApiBuilder.d.ts.map +1 -1
  12. package/dist/dts/HttpApiSchema.d.ts +19 -4
  13. package/dist/dts/HttpApiSchema.d.ts.map +1 -1
  14. package/dist/dts/HttpIncomingMessage.d.ts +5 -2
  15. package/dist/dts/HttpIncomingMessage.d.ts.map +1 -1
  16. package/dist/dts/HttpServerRequest.d.ts +6 -1
  17. package/dist/dts/HttpServerRequest.d.ts.map +1 -1
  18. package/dist/dts/Multipart.d.ts +167 -88
  19. package/dist/dts/Multipart.d.ts.map +1 -1
  20. package/dist/esm/HttpApiBuilder.js +15 -5
  21. package/dist/esm/HttpApiBuilder.js.map +1 -1
  22. package/dist/esm/HttpApiSchema.js +8 -10
  23. package/dist/esm/HttpApiSchema.js.map +1 -1
  24. package/dist/esm/HttpIncomingMessage.js +5 -4
  25. package/dist/esm/HttpIncomingMessage.js.map +1 -1
  26. package/dist/esm/HttpServerRequest.js +6 -1
  27. package/dist/esm/HttpServerRequest.js.map +1 -1
  28. package/dist/esm/Multipart.js +385 -46
  29. package/dist/esm/Multipart.js.map +1 -1
  30. package/package.json +2 -2
  31. package/src/HttpApiBuilder.ts +16 -5
  32. package/src/HttpApiSchema.ts +25 -11
  33. package/src/HttpIncomingMessage.ts +5 -7
  34. package/src/HttpServerRequest.ts +6 -1
  35. package/src/Multipart.ts +632 -128
  36. package/dist/cjs/internal/multipart.js +0 -364
  37. package/dist/cjs/internal/multipart.js.map +0 -1
  38. package/dist/dts/internal/multipart.d.ts +0 -2
  39. package/dist/dts/internal/multipart.d.ts.map +0 -1
  40. package/dist/esm/internal/multipart.js +0 -347
  41. package/dist/esm/internal/multipart.js.map +0 -1
  42. package/src/internal/multipart.ts +0 -491
@@ -1,347 +0,0 @@
1
- import * as Channel from "effect/Channel";
2
- import * as Chunk from "effect/Chunk";
3
- import * as Effect from "effect/Effect";
4
- import * as Exit from "effect/Exit";
5
- import * as FiberRef from "effect/FiberRef";
6
- import { dual } from "effect/Function";
7
- import { globalValue } from "effect/GlobalValue";
8
- import * as Inspectable from "effect/Inspectable";
9
- import * as Mailbox from "effect/Mailbox";
10
- import * as Option from "effect/Option";
11
- import * as Predicate from "effect/Predicate";
12
- import * as Schema from "effect/Schema";
13
- import * as Stream from "effect/Stream";
14
- import * as MP from "multipasta";
15
- import { TypeIdError } from "../Error.js";
16
- import * as FileSystem from "../FileSystem.js";
17
- import * as IncomingMessage from "../HttpIncomingMessage.js";
18
- import * as Path from "../Path.js";
19
- /** @internal */
20
- export const TypeId = /*#__PURE__*/Symbol.for("@effect/platform/Multipart");
21
- /** @internal */
22
- export const isPart = u => Predicate.hasProperty(u, TypeId);
23
- /** @internal */
24
- export const isField = u => isPart(u) && u._tag === "Field";
25
- /** @internal */
26
- export const isFile = u => isPart(u) && u._tag === "File";
27
- /** @internal */
28
- export const isPersistedFile = u => Predicate.hasProperty(u, TypeId) && Predicate.isTagged(u, "PersistedFile");
29
- /** @internal */
30
- export const ErrorTypeId = /*#__PURE__*/Symbol.for("@effect/platform/Multipart/MultipartError");
31
- /** @internal */
32
- export class MultipartError extends /*#__PURE__*/TypeIdError(ErrorTypeId, "MultipartError") {
33
- get message() {
34
- return this.reason;
35
- }
36
- }
37
- /** @internal */
38
- export const maxParts = /*#__PURE__*/globalValue("@effect/platform/Multipart/maxParts", () => FiberRef.unsafeMake(Option.none()));
39
- /** @internal */
40
- export const withMaxParts = /*#__PURE__*/dual(2, (effect, count) => Effect.locally(effect, maxParts, count));
41
- /** @internal */
42
- export const maxFieldSize = /*#__PURE__*/globalValue("@effect/platform/Multipart/maxFieldSize", () => FiberRef.unsafeMake(FileSystem.Size(10 * 1024 * 1024)));
43
- /** @internal */
44
- export const withMaxFieldSize = /*#__PURE__*/dual(2, (effect, size) => Effect.locally(effect, maxFieldSize, FileSystem.Size(size)));
45
- /** @internal */
46
- export const maxFileSize = /*#__PURE__*/globalValue("@effect/platform/Multipart/maxFileSize", () => FiberRef.unsafeMake(Option.none()));
47
- /** @internal */
48
- export const withMaxFileSize = /*#__PURE__*/dual(2, (effect, size) => Effect.locally(effect, maxFileSize, Option.map(size, FileSystem.Size)));
49
- /** @internal */
50
- export const fieldMimeTypes = /*#__PURE__*/globalValue("@effect/platform/Multipart/fieldMimeTypes", () => FiberRef.unsafeMake(Chunk.make("application/json")));
51
- /** @internal */
52
- export const withFieldMimeTypes = /*#__PURE__*/dual(2, (effect, mimeTypes) => Effect.locally(effect, fieldMimeTypes, Chunk.fromIterable(mimeTypes)));
53
- /** @internal */
54
- export const FileSchema = /*#__PURE__*/Schema.declare(isPersistedFile, {
55
- identifier: "PersistedFile",
56
- jsonSchema: {
57
- type: "string",
58
- format: "binary"
59
- }
60
- });
61
- /** @internal */
62
- export const FilesSchema = /*#__PURE__*/Schema.Array(FileSchema);
63
- /** @internal */
64
- export const SingleFileSchema = /*#__PURE__*/Schema.transform(/*#__PURE__*/FilesSchema.pipe(/*#__PURE__*/Schema.itemsCount(1)), FileSchema, {
65
- strict: true,
66
- decode: ([file]) => file,
67
- encode: file => [file]
68
- });
69
- /** @internal */
70
- export const schemaPersisted = (schema, options) => {
71
- const parse = Schema.decodeUnknown(schema, options);
72
- return persisted => parse(persisted);
73
- };
74
- /** @internal */
75
- export const schemaJson = (schema, options) => {
76
- const fromJson = Schema.parseJson(schema);
77
- return dual(2, (persisted, field) => Effect.map(Schema.decodeUnknown(Schema.Struct({
78
- [field]: fromJson
79
- }), options)(persisted), _ => _[field]));
80
- };
81
- /** @internal */
82
- export const makeConfig = headers => Effect.withFiberRuntime(fiber => {
83
- const mimeTypes = fiber.getFiberRef(fieldMimeTypes);
84
- return Effect.succeed({
85
- headers,
86
- maxParts: Option.getOrUndefined(fiber.getFiberRef(maxParts)),
87
- maxFieldSize: Number(fiber.getFiberRef(maxFieldSize)),
88
- maxPartSize: fiber.getFiberRef(maxFileSize).pipe(Option.map(Number), Option.getOrUndefined),
89
- maxTotalSize: fiber.getFiberRef(IncomingMessage.maxBodySize).pipe(Option.map(Number), Option.getOrUndefined),
90
- isFile: mimeTypes.length === 0 ? undefined : info => !Chunk.some(mimeTypes, _ => info.contentType.includes(_)) && MP.defaultIsFile(info)
91
- });
92
- });
93
- /** @internal */
94
- export const makeChannel = (headers, bufferSize = 16) => Channel.acquireUseRelease(Effect.all([makeConfig(headers), Mailbox.make(bufferSize)]), ([config, mailbox]) => {
95
- let partsBuffer = [];
96
- let exit = Option.none();
97
- const input = {
98
- awaitRead: () => Effect.void,
99
- emit(element) {
100
- return mailbox.offer(element);
101
- },
102
- error(cause) {
103
- exit = Option.some(Exit.failCause(cause));
104
- return mailbox.end;
105
- },
106
- done(_value) {
107
- return mailbox.end;
108
- }
109
- };
110
- const parser = MP.make({
111
- ...config,
112
- onField(info, value) {
113
- partsBuffer.push(new FieldImpl(info.name, info.contentType, MP.decodeField(info, value)));
114
- },
115
- onFile(info) {
116
- let chunks = [];
117
- let finished = false;
118
- const take = Channel.suspend(() => {
119
- if (chunks.length === 0) {
120
- return finished ? Channel.void : Channel.zipRight(pump, take);
121
- }
122
- const chunk = Chunk.unsafeFromArray(chunks);
123
- chunks = [];
124
- return finished ? Channel.write(chunk) : Channel.zipRight(Channel.write(chunk), Channel.zipRight(pump, take));
125
- });
126
- partsBuffer.push(new FileImpl(info, take));
127
- return function (chunk) {
128
- if (chunk === null) {
129
- finished = true;
130
- } else {
131
- chunks.push(chunk);
132
- }
133
- };
134
- },
135
- onError(error_) {
136
- exit = Option.some(Exit.fail(convertError(error_)));
137
- },
138
- onDone() {
139
- exit = Option.some(Exit.void);
140
- }
141
- });
142
- const pump = Channel.flatMap(mailbox.takeAll, ([chunks, done]) => Channel.sync(() => {
143
- Chunk.forEach(chunks, Chunk.forEach(parser.write));
144
- if (done) {
145
- parser.end();
146
- }
147
- }));
148
- const partsChannel = Channel.flatMap(pump, () => {
149
- if (partsBuffer.length === 0) {
150
- return exit._tag === "None" ? partsChannel : writeExit(exit.value);
151
- }
152
- const chunk = Chunk.unsafeFromArray(partsBuffer);
153
- partsBuffer = [];
154
- return Channel.zipRight(Channel.write(chunk), exit._tag === "None" ? partsChannel : writeExit(exit.value));
155
- });
156
- return Channel.embedInput(partsChannel, input);
157
- }, ([, mailbox]) => mailbox.shutdown);
158
- const writeExit = self => self._tag === "Success" ? Channel.void : Channel.failCause(self.cause);
159
- function convertError(cause) {
160
- switch (cause._tag) {
161
- case "ReachedLimit":
162
- {
163
- switch (cause.limit) {
164
- case "MaxParts":
165
- {
166
- return new MultipartError({
167
- reason: "TooManyParts",
168
- cause
169
- });
170
- }
171
- case "MaxFieldSize":
172
- {
173
- return new MultipartError({
174
- reason: "FieldTooLarge",
175
- cause
176
- });
177
- }
178
- case "MaxPartSize":
179
- {
180
- return new MultipartError({
181
- reason: "FileTooLarge",
182
- cause
183
- });
184
- }
185
- case "MaxTotalSize":
186
- {
187
- return new MultipartError({
188
- reason: "BodyTooLarge",
189
- cause
190
- });
191
- }
192
- }
193
- }
194
- default:
195
- {
196
- return new MultipartError({
197
- reason: "Parse",
198
- cause
199
- });
200
- }
201
- }
202
- }
203
- class PartBase extends Inspectable.Class {
204
- [TypeId];
205
- constructor() {
206
- super();
207
- this[TypeId] = TypeId;
208
- }
209
- }
210
- class FieldImpl extends PartBase {
211
- key;
212
- contentType;
213
- value;
214
- _tag = "Field";
215
- constructor(key, contentType, value) {
216
- super();
217
- this.key = key;
218
- this.contentType = contentType;
219
- this.value = value;
220
- }
221
- toJSON() {
222
- return {
223
- _id: "@effect/platform/Multipart/Part",
224
- _tag: "Field",
225
- key: this.key,
226
- contentType: this.contentType,
227
- value: this.value
228
- };
229
- }
230
- }
231
- class FileImpl extends PartBase {
232
- _tag = "File";
233
- key;
234
- name;
235
- contentType;
236
- content;
237
- contentEffect;
238
- constructor(info, channel) {
239
- super();
240
- this.key = info.name;
241
- this.name = info.filename ?? info.name;
242
- this.contentType = info.contentType;
243
- this.content = Stream.fromChannel(channel);
244
- this.contentEffect = channel.pipe(Channel.pipeTo(collectUint8Array), Channel.run, Effect.mapError(cause => new MultipartError({
245
- reason: "InternalError",
246
- cause
247
- })));
248
- }
249
- toJSON() {
250
- return {
251
- _id: "@effect/platform/Multipart/Part",
252
- _tag: "File",
253
- key: this.key,
254
- name: this.name,
255
- contentType: this.contentType
256
- };
257
- }
258
- }
259
- const defaultWriteFile = (path, file) => Effect.flatMap(FileSystem.FileSystem, fs => Effect.mapError(Stream.run(file.content, fs.sink(path)), cause => new MultipartError({
260
- reason: "InternalError",
261
- cause
262
- })));
263
- /** @internal */
264
- export const collectUint8Array = /*#__PURE__*/Channel.suspend(() => {
265
- let accumulator = new Uint8Array(0);
266
- const loop = Channel.readWithCause({
267
- onInput(chunk) {
268
- for (const element of chunk) {
269
- const newAccumulator = new Uint8Array(accumulator.length + element.length);
270
- newAccumulator.set(accumulator, 0);
271
- newAccumulator.set(element, accumulator.length);
272
- accumulator = newAccumulator;
273
- }
274
- return loop;
275
- },
276
- onFailure: cause => Channel.failCause(cause),
277
- onDone: () => Channel.succeed(accumulator)
278
- });
279
- return loop;
280
- });
281
- /** @internal */
282
- export const toPersisted = (stream, writeFile = defaultWriteFile) => Effect.gen(function* () {
283
- const fs = yield* FileSystem.FileSystem;
284
- const path_ = yield* Path.Path;
285
- const dir = yield* fs.makeTempDirectoryScoped();
286
- const persisted = Object.create(null);
287
- yield* Stream.runForEach(stream, part => {
288
- if (part._tag === "Field") {
289
- if (!(part.key in persisted)) {
290
- persisted[part.key] = part.value;
291
- } else if (typeof persisted[part.key] === "string") {
292
- persisted[part.key] = [persisted[part.key], part.value];
293
- } else {
294
- ;
295
- persisted[part.key].push(part.value);
296
- }
297
- return Effect.void;
298
- } else if (part.name === "") {
299
- return Effect.void;
300
- }
301
- const file = part;
302
- const path = path_.join(dir, path_.basename(file.name).slice(-128));
303
- const filePart = new PersistedFileImpl(file.key, file.name, file.contentType, path);
304
- if (Array.isArray(persisted[part.key])) {
305
- ;
306
- persisted[part.key].push(filePart);
307
- } else {
308
- persisted[part.key] = [filePart];
309
- }
310
- return writeFile(path, file);
311
- });
312
- return persisted;
313
- }).pipe(Effect.catchTags({
314
- SystemError: cause => Effect.fail(new MultipartError({
315
- reason: "InternalError",
316
- cause
317
- })),
318
- BadArgument: cause => Effect.fail(new MultipartError({
319
- reason: "InternalError",
320
- cause
321
- }))
322
- }));
323
- class PersistedFileImpl extends PartBase {
324
- key;
325
- name;
326
- contentType;
327
- path;
328
- _tag = "PersistedFile";
329
- constructor(key, name, contentType, path) {
330
- super();
331
- this.key = key;
332
- this.name = name;
333
- this.contentType = contentType;
334
- this.path = path;
335
- }
336
- toJSON() {
337
- return {
338
- _id: "@effect/platform/Multipart/Part",
339
- _tag: "PersistedFile",
340
- key: this.key,
341
- name: this.name,
342
- contentType: this.contentType,
343
- path: this.path
344
- };
345
- }
346
- }
347
- //# sourceMappingURL=multipart.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multipart.js","names":["Channel","Chunk","Effect","Exit","FiberRef","dual","globalValue","Inspectable","Mailbox","Option","Predicate","Schema","Stream","MP","TypeIdError","FileSystem","IncomingMessage","Path","TypeId","Symbol","for","isPart","u","hasProperty","isField","_tag","isFile","isPersistedFile","isTagged","ErrorTypeId","MultipartError","message","reason","maxParts","unsafeMake","none","withMaxParts","effect","count","locally","maxFieldSize","Size","withMaxFieldSize","size","maxFileSize","withMaxFileSize","map","fieldMimeTypes","make","withFieldMimeTypes","mimeTypes","fromIterable","FileSchema","declare","identifier","jsonSchema","type","format","FilesSchema","Array","SingleFileSchema","transform","pipe","itemsCount","strict","decode","file","encode","schemaPersisted","schema","options","parse","decodeUnknown","persisted","schemaJson","fromJson","parseJson","field","Struct","_","makeConfig","headers","withFiberRuntime","fiber","getFiberRef","succeed","getOrUndefined","Number","maxPartSize","maxTotalSize","maxBodySize","length","undefined","info","some","contentType","includes","defaultIsFile","makeChannel","bufferSize","acquireUseRelease","all","config","mailbox","partsBuffer","exit","input","awaitRead","void","emit","element","offer","error","cause","failCause","end","done","_value","parser","onField","value","push","FieldImpl","name","decodeField","onFile","chunks","finished","take","suspend","zipRight","pump","chunk","unsafeFromArray","write","FileImpl","onError","error_","fail","convertError","onDone","flatMap","takeAll","sync","forEach","partsChannel","writeExit","embedInput","shutdown","self","limit","PartBase","Class","constructor","key","toJSON","_id","content","contentEffect","channel","filename","fromChannel","pipeTo","collectUint8Array","run","mapError","defaultWriteFile","path","fs","sink","accumulator","Uint8Array","loop","readWithCause","onInput","newAccumulator","set","onFailure","toPersisted","stream","writeFile","gen","path_","dir","makeTempDirectoryScoped","Object","create","runForEach","part","join","basename","slice","filePart","PersistedFileImpl","isArray","catchTags","SystemError","BadArgument"],"sources":["../../../src/internal/multipart.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}