EdgeAIG's picture
download
raw
13.8 kB
/**
* Encodes and decodes newline-delimited JSON streams in Effect channels.
*
* NDJSON stores one complete JSON value on each line. This module has helpers
* for byte streams, string streams, and schema-checked records, so streaming
* code can read or write one JSON record at a time.
*
* @since 4.0.0
*/
import * as Arr from "../../Array.ts";
import * as Channel from "../../Channel.ts";
import type * as Schema from "../../Schema.ts";
declare const NdjsonErrorTypeId = "~effect/encoding/Ndjson/NdjsonError";
declare const NdjsonError_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: "NdjsonError";
} & Readonly<A>;
/**
* Error raised when NDJSON encoding or decoding fails.
*
* **Details**
*
* The `kind` field identifies whether the failure happened while packing or
* unpacking, and `cause` preserves the original error.
*
* @category errors
* @since 4.0.0
*/
export declare class NdjsonError extends NdjsonError_base<{
readonly kind: "Pack" | "Unpack";
readonly cause: unknown;
}> {
/**
* Marks this value as an NDJSON encoding or decoding error for runtime guards.
*
* @since 4.0.0
*/
readonly [NdjsonErrorTypeId] = "~effect/encoding/Ndjson/NdjsonError";
/**
* Uses the failed NDJSON operation as the public message.
*
* @since 4.0.0
*/
get message(): "Pack" | "Unpack";
}
/**
* Creates a channel that encodes chunks of values as NDJSON strings.
*
* **Details**
*
* Each input item is `JSON.stringify`-encoded, separated by newlines, and the
* output chunk ends with a trailing newline.
*
* @category constructors
* @since 4.0.0
*/
export declare const encodeString: <IE = never, Done = unknown>() => Channel.Channel<Arr.NonEmptyReadonlyArray<string>, IE | NdjsonError, Done, Arr.NonEmptyReadonlyArray<unknown>, IE, Done>;
/**
* Creates a channel that encodes chunks of values as UTF-8 NDJSON bytes.
*
* @category constructors
* @since 4.0.0
*/
export declare const encode: <IE = never, Done = unknown>() => Channel.Channel<Arr.NonEmptyReadonlyArray<Uint8Array>, IE | NdjsonError, Done, Arr.NonEmptyReadonlyArray<unknown>, IE, Done>;
/**
* Creates an NDJSON byte encoder channel for values of a schema.
*
* **Details**
*
* Values are first encoded with the schema and then written as UTF-8
* newline-delimited JSON.
*
* @category constructors
* @since 4.0.0
*/
export declare const encodeSchema: <S extends Schema.Top>(schema: S) => <IE = never, Done = unknown>() => Channel.Channel<Arr.NonEmptyReadonlyArray<Uint8Array>, NdjsonError | Schema.SchemaError | IE, Done, Arr.NonEmptyReadonlyArray<S["Type"]>, IE, Done, S["EncodingServices"]>;
/**
* Creates an NDJSON string encoder channel for values of a schema.
*
* **Details**
*
* Values are first encoded with the schema and then written as newline-delimited
* JSON strings.
*
* @category constructors
* @since 4.0.0
*/
export declare const encodeSchemaString: <S extends Schema.Top>(schema: S) => <IE = never, Done = unknown>() => Channel.Channel<Arr.NonEmptyReadonlyArray<string>, NdjsonError | Schema.SchemaError | IE, Done, Arr.NonEmptyReadonlyArray<S["Type"]>, IE, Done, S["EncodingServices"]>;
/**
* Creates a channel that parses NDJSON string chunks into values.
*
* **When to use**
*
* Use when NDJSON input arrives as string chunks and each complete line should
* be parsed into a JSON value.
*
* **Details**
*
* Lines may span input chunks.
*
* **Gotchas**
*
* Set `ignoreEmptyLines` to skip blank lines before calling `JSON.parse`;
* otherwise blank lines are parsed and fail as invalid JSON.
*
* @category constructors
* @since 4.0.0
*/
export declare const decodeString: <IE = never, Done = unknown>(options?: {
readonly ignoreEmptyLines?: boolean | undefined;
}) => Channel.Channel<Arr.NonEmptyReadonlyArray<unknown>, IE | NdjsonError, Done, Arr.NonEmptyReadonlyArray<string>, IE, Done>;
/**
* Creates a channel that decodes UTF-8 byte chunks and parses them as NDJSON.
*
* **Details**
*
* Lines may span input chunks, and `ignoreEmptyLines` controls whether blank
* lines are skipped before JSON parsing.
*
* @category constructors
* @since 4.0.0
*/
export declare const decode: <IE = never, Done = unknown>(options?: {
readonly ignoreEmptyLines?: boolean | undefined;
}) => Channel.Channel<Arr.NonEmptyReadonlyArray<unknown>, IE | NdjsonError, Done, Arr.NonEmptyReadonlyArray<Uint8Array>, IE, Done>;
/**
* Creates an NDJSON byte decoder channel for values of a schema.
*
* **Details**
*
* The channel decodes UTF-8 bytes, parses each NDJSON line, and then decodes
* each parsed value with the schema.
*
* @category constructors
* @since 4.0.0
*/
export declare const decodeSchema: <S extends Schema.Top>(schema: S) => <IE = never, Done = unknown>(options?: {
readonly ignoreEmptyLines?: boolean | undefined;
}) => Channel.Channel<Arr.NonEmptyReadonlyArray<S["Type"]>, Schema.SchemaError | NdjsonError | IE, Done, Arr.NonEmptyReadonlyArray<Uint8Array>, IE, Done, S["DecodingServices"]>;
/**
* Creates an NDJSON string decoder channel for values of a schema.
*
* **Details**
*
* The channel parses each line as JSON and then decodes each parsed value with
* the schema.
*
* @category constructors
* @since 4.0.0
*/
export declare const decodeSchemaString: <S extends Schema.Top>(schema: S) => <IE = never, Done = unknown>(options?: {
readonly ignoreEmptyLines?: boolean | undefined;
}) => Channel.Channel<Arr.NonEmptyReadonlyArray<S["Type"]>, Schema.SchemaError | NdjsonError | IE, Done, Arr.NonEmptyReadonlyArray<string>, IE, Done, S["DecodingServices"]>;
/**
* Wraps a bidirectional byte channel with NDJSON encoding and decoding.
*
* **Details**
*
* Outgoing values are written as UTF-8 NDJSON bytes, and incoming bytes are
* parsed as NDJSON values.
*
* @category combinators
* @since 4.0.0
*/
export declare const duplex: {
/**
* Wraps a bidirectional byte channel with NDJSON encoding and decoding.
*
* **Details**
*
* Outgoing values are written as UTF-8 NDJSON bytes, and incoming bytes are
* parsed as NDJSON values.
*
* @category combinators
* @since 4.0.0
*/
(options?: {
readonly ignoreEmptyLines?: boolean | undefined;
}): <R, IE, OE, OutDone, InDone>(self: Channel.Channel<Arr.NonEmptyReadonlyArray<Uint8Array>, OE, OutDone, Arr.NonEmptyReadonlyArray<Uint8Array>, IE | NdjsonError, InDone, R>) => Channel.Channel<Arr.NonEmptyReadonlyArray<unknown>, NdjsonError | OE, OutDone, Arr.NonEmptyReadonlyArray<unknown>, IE, InDone, R>;
/**
* Wraps a bidirectional byte channel with NDJSON encoding and decoding.
*
* **Details**
*
* Outgoing values are written as UTF-8 NDJSON bytes, and incoming bytes are
* parsed as NDJSON values.
*
* @category combinators
* @since 4.0.0
*/
<R, IE, OE, OutDone, InDone>(self: Channel.Channel<Arr.NonEmptyReadonlyArray<Uint8Array>, OE, OutDone, Arr.NonEmptyReadonlyArray<Uint8Array>, IE | NdjsonError, InDone, R>, options?: {
readonly ignoreEmptyLines?: boolean | undefined;
}): Channel.Channel<Arr.NonEmptyReadonlyArray<unknown>, NdjsonError | OE, OutDone, Arr.NonEmptyReadonlyArray<unknown>, IE, InDone, R>;
};
/**
* Wraps a bidirectional string channel with NDJSON encoding and decoding.
*
* **Details**
*
* Outgoing values are written as NDJSON strings, and incoming strings are parsed
* as NDJSON values.
*
* @category combinators
* @since 4.0.0
*/
export declare const duplexString: {
/**
* Wraps a bidirectional string channel with NDJSON encoding and decoding.
*
* **Details**
*
* Outgoing values are written as NDJSON strings, and incoming strings are parsed
* as NDJSON values.
*
* @category combinators
* @since 4.0.0
*/
(options?: {
readonly ignoreEmptyLines?: boolean | undefined;
}): <R, IE, OE, OutDone, InDone>(self: Channel.Channel<Arr.NonEmptyReadonlyArray<string>, OE, OutDone, Arr.NonEmptyReadonlyArray<string>, IE | NdjsonError, InDone, R>) => Channel.Channel<Arr.NonEmptyReadonlyArray<unknown>, NdjsonError | OE, OutDone, Arr.NonEmptyReadonlyArray<unknown>, IE, InDone, R>;
/**
* Wraps a bidirectional string channel with NDJSON encoding and decoding.
*
* **Details**
*
* Outgoing values are written as NDJSON strings, and incoming strings are parsed
* as NDJSON values.
*
* @category combinators
* @since 4.0.0
*/
<R, IE, OE, OutDone, InDone>(self: Channel.Channel<Arr.NonEmptyReadonlyArray<string>, OE, OutDone, Arr.NonEmptyReadonlyArray<string>, IE | NdjsonError, InDone, R>, options?: {
readonly ignoreEmptyLines?: boolean | undefined;
}): Channel.Channel<Arr.NonEmptyReadonlyArray<unknown>, NdjsonError | OE, OutDone, Arr.NonEmptyReadonlyArray<unknown>, IE, InDone, R>;
};
/**
* Wraps a bidirectional byte channel with schema-aware NDJSON encoding and
* decoding.
*
* **Details**
*
* Values sent to the wrapped channel are encoded with `inputSchema`; bytes
* received from it are parsed as NDJSON and decoded with `outputSchema`.
*
* @category combinators
* @since 4.0.0
*/
export declare const duplexSchema: {
/**
* Wraps a bidirectional byte channel with schema-aware NDJSON encoding and
* decoding.
*
* **Details**
*
* Values sent to the wrapped channel are encoded with `inputSchema`; bytes
* received from it are parsed as NDJSON and decoded with `outputSchema`.
*
* @category combinators
* @since 4.0.0
*/
<In extends Schema.Top, Out extends Schema.Top>(options: {
readonly inputSchema: In;
readonly outputSchema: Out;
readonly ignoreEmptyLines?: boolean | undefined;
}): <OutErr, OutDone, InErr, InDone, R>(self: Channel.Channel<Arr.NonEmptyReadonlyArray<Uint8Array>, OutErr, OutDone, Arr.NonEmptyReadonlyArray<Uint8Array>, NdjsonError | Schema.SchemaError | InErr, InDone, R>) => Channel.Channel<Arr.NonEmptyReadonlyArray<Out["Type"]>, NdjsonError | Schema.SchemaError | OutErr, OutDone, Arr.NonEmptyReadonlyArray<In["Type"]>, InErr, InDone, R | In["EncodingServices"] | Out["DecodingServices"]>;
/**
* Wraps a bidirectional byte channel with schema-aware NDJSON encoding and
* decoding.
*
* **Details**
*
* Values sent to the wrapped channel are encoded with `inputSchema`; bytes
* received from it are parsed as NDJSON and decoded with `outputSchema`.
*
* @category combinators
* @since 4.0.0
*/
<Out extends Schema.Top, In extends Schema.Top, OutErr, OutDone, InErr, InDone, R>(self: Channel.Channel<Arr.NonEmptyReadonlyArray<Uint8Array>, OutErr, OutDone, Arr.NonEmptyReadonlyArray<Uint8Array>, NdjsonError | Schema.SchemaError | InErr, InDone, R>, options: {
readonly inputSchema: In;
readonly outputSchema: Out;
readonly ignoreEmptyLines?: boolean | undefined;
}): Channel.Channel<Arr.NonEmptyReadonlyArray<Out["Type"]>, NdjsonError | Schema.SchemaError | OutErr, OutDone, Arr.NonEmptyReadonlyArray<In["Type"]>, InErr, InDone, R | In["EncodingServices"] | Out["DecodingServices"]>;
};
/**
* Wraps a bidirectional string channel with schema-aware NDJSON encoding and
* decoding.
*
* **Details**
*
* Values sent to the wrapped channel are encoded with `inputSchema`; strings
* received from it are parsed as NDJSON and decoded with `outputSchema`.
*
* @category combinators
* @since 4.0.0
*/
export declare const duplexSchemaString: {
/**
* Wraps a bidirectional string channel with schema-aware NDJSON encoding and
* decoding.
*
* **Details**
*
* Values sent to the wrapped channel are encoded with `inputSchema`; strings
* received from it are parsed as NDJSON and decoded with `outputSchema`.
*
* @category combinators
* @since 4.0.0
*/
<In extends Schema.Top, Out extends Schema.Top>(options: {
readonly inputSchema: In;
readonly outputSchema: Out;
readonly ignoreEmptyLines?: boolean | undefined;
}): <OutErr, OutDone, InErr, InDone, R>(self: Channel.Channel<Arr.NonEmptyReadonlyArray<string>, OutErr, OutDone, Arr.NonEmptyReadonlyArray<string>, NdjsonError | Schema.SchemaError | InErr, InDone, R>) => Channel.Channel<Arr.NonEmptyReadonlyArray<Out["Type"]>, NdjsonError | Schema.SchemaError | OutErr, OutDone, Arr.NonEmptyReadonlyArray<In["Type"]>, InErr, InDone, R | In["EncodingServices"] | Out["DecodingServices"]>;
/**
* Wraps a bidirectional string channel with schema-aware NDJSON encoding and
* decoding.
*
* **Details**
*
* Values sent to the wrapped channel are encoded with `inputSchema`; strings
* received from it are parsed as NDJSON and decoded with `outputSchema`.
*
* @category combinators
* @since 4.0.0
*/
<Out extends Schema.Top, In extends Schema.Top, OutErr, OutDone, InErr, InDone, R>(self: Channel.Channel<Arr.NonEmptyReadonlyArray<string>, OutErr, OutDone, Arr.NonEmptyReadonlyArray<string>, NdjsonError | Schema.SchemaError | InErr, InDone, R>, options: {
readonly inputSchema: In;
readonly outputSchema: Out;
readonly ignoreEmptyLines?: boolean | undefined;
}): Channel.Channel<Arr.NonEmptyReadonlyArray<Out["Type"]>, NdjsonError | Schema.SchemaError | OutErr, OutDone, Arr.NonEmptyReadonlyArray<In["Type"]>, InErr, InDone, R | In["EncodingServices"] | Out["DecodingServices"]>;
};
export {};
//# sourceMappingURL=Ndjson.d.ts.map

Xet Storage Details

Size:
13.8 kB
·
Xet hash:
0724aa5d4195b0b9b4b4e56ba6aa0efeea551f8c13711be7fc6e9a6d7f25c0de

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.