| import * as Effect from "../../Effect.ts"; | |
| import * as FileSystem from "../../FileSystem.ts"; | |
| import * as Inspectable from "../../Inspectable.ts"; | |
| import type * as PlatformError from "../../PlatformError.ts"; | |
| import * as Schema from "../../Schema.ts"; | |
| import type { ParseOptions } from "../../SchemaAST.ts"; | |
| import type { Issue } from "../../SchemaIssue.ts"; | |
| import type * as Stream_ from "../../Stream.ts"; | |
| import * as UrlParams from "./UrlParams.ts"; | |
| declare const TypeId = "~effect/http/HttpBody"; | |
| /** | |
| * Returns `true` if the provided value is an `HttpBody`. | |
| * | |
| * @category refinements | |
| * @since 4.0.0 | |
| */ | |
| export declare const isHttpBody: (u: unknown) => u is HttpBody; | |
| /** | |
| * Represents an HTTP request body. | |
| * | |
| * **Details** | |
| * | |
| * Supported variants include empty bodies, raw bodies, byte arrays, `FormData`, and streams of bytes. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type HttpBody = Empty | Raw | Uint8Array | FormData | Stream; | |
| /** | |
| * Namespace containing type-level members associated with `HttpBody`. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| export declare namespace HttpBody { | |
| /** | |
| * Common protocol implemented by all HTTP body variants. | |
| * | |
| * **Details** | |
| * | |
| * It carries the variant tag plus optional `contentType` and `contentLength` metadata. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| interface Proto extends Inspectable.Inspectable { | |
| readonly [TypeId]: typeof TypeId; | |
| readonly _tag: string; | |
| readonly contentType?: string | undefined; | |
| readonly contentLength?: number | undefined; | |
| } | |
| /** | |
| * Minimal Web `File`-like shape used by HTTP helpers that need file metadata. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| interface FileLike { | |
| readonly name: string; | |
| readonly lastModified: number; | |
| readonly size: number; | |
| readonly stream: () => unknown; | |
| readonly type: string; | |
| } | |
| } | |
| declare const HttpBodyErrorTypeId = "~effect/http/HttpBody/HttpBodyError"; | |
| declare const HttpBodyError_base: new <A extends Record<string, any> = {}>(args: import("../../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../../Cause.ts").YieldableError & { | |
| readonly _tag: "HttpBodyError"; | |
| } & Readonly<A>; | |
| /** | |
| * Error produced while constructing an HTTP body from JSON or schema-encoded input. | |
| * | |
| * @category errors | |
| * @since 4.0.0 | |
| */ | |
| export declare class HttpBodyError extends HttpBodyError_base<{ | |
| readonly reason: ErrorReason; | |
| readonly cause?: unknown; | |
| }> { | |
| /** | |
| * Marks this value as an HTTP body error for runtime guards. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| readonly [HttpBodyErrorTypeId] = "~effect/http/HttpBody/HttpBodyError"; | |
| } | |
| /** | |
| * Reason for an `HttpBodyError`. | |
| * | |
| * **Details** | |
| * | |
| * `JsonError` represents a `JSON.stringify` failure; `SchemaError` represents a schema encoding issue. | |
| * | |
| * @category errors | |
| * @since 4.0.0 | |
| */ | |
| export type ErrorReason = { | |
| readonly _tag: "JsonError"; | |
| } | { | |
| readonly _tag: "SchemaError"; | |
| readonly issue: Issue; | |
| }; | |
| declare abstract class Proto implements HttpBody.Proto { | |
| readonly [TypeId]: typeof TypeId; | |
| abstract readonly _tag: string; | |
| constructor(); | |
| abstract toJSON(): unknown; | |
| [Inspectable.NodeInspectSymbol](): unknown; | |
| toString(): string; | |
| } | |
| /** | |
| * HTTP body variant representing the absence of request content. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export declare class Empty extends Proto { | |
| readonly _tag = "Empty"; | |
| toJSON(): unknown; | |
| } | |
| /** | |
| * Provides the singleton empty HTTP body. | |
| * | |
| * **When to use** | |
| * | |
| * Use when you need an HTTP body value that represents no body content. | |
| * | |
| * @category constants | |
| * @since 4.0.0 | |
| */ | |
| export declare const empty: Empty; | |
| /** | |
| * HTTP body variant containing an arbitrary runtime body value with optional content metadata. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export declare class Raw extends Proto { | |
| readonly _tag = "Raw"; | |
| readonly body: unknown; | |
| readonly contentType: string | undefined; | |
| readonly contentLength: number | undefined; | |
| constructor(body: unknown, contentType: string | undefined, contentLength: number | undefined); | |
| toJSON(): unknown; | |
| } | |
| /** | |
| * Creates a raw HTTP body from an arbitrary value and optional `contentType` and `contentLength` metadata. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const raw: (body: unknown, options?: { | |
| readonly contentType?: string | undefined; | |
| readonly contentLength?: number | undefined; | |
| } | undefined) => Raw; | |
| /** | |
| * HTTP body variant backed by a `Uint8Array`. | |
| * | |
| * **Details** | |
| * | |
| * It stores the bytes, content type, and byte length. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export declare class Uint8Array extends Proto { | |
| readonly _tag = "Uint8Array"; | |
| readonly body: globalThis.Uint8Array; | |
| readonly contentType: string; | |
| readonly contentLength: number; | |
| constructor(body: globalThis.Uint8Array, contentType: string, contentLength: number); | |
| toJSON(): unknown; | |
| } | |
| /** | |
| * Creates a byte-array HTTP body. | |
| * | |
| * **Details** | |
| * | |
| * The content type defaults to `application/octet-stream`, and the content length is the byte array length. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const uint8Array: (body: globalThis.Uint8Array, contentType?: string) => Uint8Array; | |
| /** | |
| * Creates a UTF-8 encoded text HTTP body. | |
| * | |
| * **Details** | |
| * | |
| * The content type defaults to `text/plain`. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const text: (body: string, contentType?: string) => Uint8Array; | |
| /** | |
| * Creates a JSON HTTP body using `JSON.stringify`, throwing if serialization fails. | |
| * | |
| * **Details** | |
| * | |
| * The content type defaults to `application/json`. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const jsonUnsafe: (body: unknown, contentType?: string) => Uint8Array; | |
| /** | |
| * Creates a JSON HTTP body in an `Effect`. | |
| * | |
| * **Details** | |
| * | |
| * `JSON.stringify` failures are captured as `HttpBodyError` values, and the content type defaults to `application/json`. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const json: (body: unknown, contentType?: string) => Effect.Effect<Uint8Array, HttpBodyError>; | |
| /** | |
| * Creates a JSON body constructor that first encodes values with the schema's JSON codec. | |
| * | |
| * **Details** | |
| * | |
| * Schema encoding issues and JSON serialization failures are returned as `HttpBodyError` values. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const jsonSchema: <S extends Schema.Top>(schema: S, options?: ParseOptions | undefined) => (body: S["Type"], contentType?: string) => Effect.Effect<Uint8Array, HttpBodyError, S["EncodingServices"]>; | |
| /** | |
| * Creates an `application/x-www-form-urlencoded` HTTP body from `UrlParams`. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const urlParams: (urlParams: UrlParams.UrlParams, contentType?: string) => Uint8Array; | |
| /** | |
| * HTTP body variant backed by Web `FormData`. | |
| * | |
| * **Details** | |
| * | |
| * The content type and content length are left unset so the runtime can supply multipart boundaries. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export declare class FormData extends Proto { | |
| readonly _tag = "FormData"; | |
| readonly contentType: undefined; | |
| readonly contentLength: undefined; | |
| readonly formData: globalThis.FormData; | |
| constructor(formData: globalThis.FormData); | |
| toJSON(): unknown; | |
| } | |
| /** | |
| * Wraps a Web `FormData` value as an HTTP body. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const formData: (body: globalThis.FormData) => FormData; | |
| /** | |
| * Record input accepted by `formDataRecord`. | |
| * | |
| * **Details** | |
| * | |
| * Each field may be a single coercible value or an array of coercible values. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type FormDataInput = Record<string, FormDataCoercible | ReadonlyArray<FormDataCoercible>>; | |
| /** | |
| * Value that can be appended by `formDataRecord`. | |
| * | |
| * **Details** | |
| * | |
| * `File` and `Blob` values are appended directly, primitive values are converted to strings, and `null` or `undefined` values are skipped. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type FormDataCoercible = string | number | boolean | globalThis.File | globalThis.Blob | null | undefined; | |
| /** | |
| * Creates a `FormData` HTTP body from a record. | |
| * | |
| * **Details** | |
| * | |
| * Array fields append each item under the same key; primitive values are stringified, `File` and `Blob` values are appended directly, and nullish values are skipped. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const formDataRecord: (entries: FormDataInput) => FormData; | |
| /** | |
| * HTTP body variant backed by a stream of `Uint8Array` chunks. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export declare class Stream extends Proto { | |
| readonly _tag = "Stream"; | |
| readonly stream: Stream_.Stream<globalThis.Uint8Array, unknown>; | |
| readonly contentType: string; | |
| readonly contentLength: number | undefined; | |
| constructor(stream: Stream_.Stream<globalThis.Uint8Array, unknown>, contentType: string, contentLength: number | undefined); | |
| toJSON(): unknown; | |
| } | |
| /** | |
| * Creates a streaming HTTP body from a stream of byte chunks. | |
| * | |
| * **Details** | |
| * | |
| * The content type defaults to `application/octet-stream`; content length is optional. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const stream: (body: Stream_.Stream<globalThis.Uint8Array, unknown>, contentType?: string, contentLength?: number) => Stream; | |
| /** | |
| * Creates a streaming HTTP body for a file path. | |
| * | |
| * **Details** | |
| * | |
| * The effect requires `FileSystem`, stats the file to set the content length, and can fail with `PlatformError`. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const file: (path: string, options?: { | |
| readonly bytesToRead?: FileSystem.SizeInput | undefined; | |
| readonly chunkSize?: FileSystem.SizeInput | undefined; | |
| readonly offset?: FileSystem.SizeInput | undefined; | |
| readonly contentType?: string | undefined; | |
| }) => Effect.Effect<Stream, PlatformError.PlatformError, FileSystem.FileSystem>; | |
| /** | |
| * Creates a streaming HTTP body for a file path using already-known file information. | |
| * | |
| * **Details** | |
| * | |
| * The effect requires `FileSystem`, uses the provided file size as the content length, and can fail with `PlatformError`. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const fileFromInfo: (path: string, info: FileSystem.File.Info, options?: { | |
| readonly bytesToRead?: FileSystem.SizeInput | undefined; | |
| readonly chunkSize?: FileSystem.SizeInput | undefined; | |
| readonly offset?: FileSystem.SizeInput | undefined; | |
| readonly contentType?: string | undefined; | |
| }) => Effect.Effect<Stream, PlatformError.PlatformError, FileSystem.FileSystem>; | |
| export {}; | |
| //# sourceMappingURL=HttpBody.d.ts.map |
Xet Storage Details
- Size:
- 10.8 kB
- Xet hash:
- 1e2b93a11c801d2f7dde90ae3837a1a5281f2ba10bfcd4a81656b41a2b2cb7d7
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.