| 81 | } |
| 82 | |
| 83 | class FileImpl extends PartBase implements Multipart.File { |
| 84 | readonly _tag = "File" |
| 85 | readonly key: string |
| 86 | readonly name: string |
| 87 | readonly contentType: string |
| 88 | readonly content: Stream.Stream<Uint8Array, Multipart.MultipartError> |
| 89 | readonly contentEffect: Effect.Effect<Uint8Array, Multipart.MultipartError> |
| 90 | |
| 91 | constructor(readonly file: MP.FileStream) { |
| 92 | super() |
| 93 | this.key = file.info.name |
| 94 | this.name = file.filename ?? file.info.name |
| 95 | this.contentType = file.info.contentType |
| 96 | this.content = NodeStream.fromReadable( |
| 97 | () => file, |
| 98 | (cause) => new Multipart.MultipartError({ reason: "InternalError", cause }) |
| 99 | ) |
| 100 | this.contentEffect = NodeStream.toUint8Array(() => file, { |
| 101 | onFailure: (cause) => new Multipart.MultipartError({ reason: "InternalError", cause }) |
| 102 | }) |
| 103 | } |
| 104 | |
| 105 | toJSON(): unknown { |
| 106 | return { |
| 107 | _id: "@effect/platform/Multipart/Part", |
| 108 | _tag: "File", |
| 109 | key: this.key, |
| 110 | name: this.name, |
| 111 | contentType: this.contentType |
| 112 | } |
| 113 | } |
| 114 | } |
| 115 | |
| 116 | /** @internal */ |
| 117 | export const fileToReadable = (file: Multipart.File): Readable => (file as FileImpl).file |
nothing calls this directly
no outgoing calls
no test coverage detected