@orpc/shared 1.14.10 → 1.14.11
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.
- package/README.md +52 -48
- package/dist/index.d.mts +211 -202
- package/dist/index.d.ts +211 -202
- package/dist/index.mjs +638 -358
- package/package.json +8 -7
package/dist/index.d.mts
CHANGED
|
@@ -1,108 +1,48 @@
|
|
|
1
|
-
import { Promisable } from 'type-fest';
|
|
2
|
-
export {
|
|
1
|
+
import { Arrayable, Promisable } from 'type-fest';
|
|
2
|
+
export { Arrayable, IsEqual, PartialDeep, Promisable, Writable } from 'type-fest';
|
|
3
3
|
import { Tracer, TraceAPI, ContextAPI, PropagationAPI, SpanOptions, Context, Span, AttributeValue, Exception } from '@opentelemetry/api';
|
|
4
|
-
|
|
4
|
+
import { AsyncIteratorClass } from '@standardserver/shared';
|
|
5
|
+
export { AbortError, AsyncCleanupFn, AsyncIteratorClass, AsyncIteratorClassNextFn, SequentialIdGenerator, getOrBind, isAsyncIteratorObject, isTypescriptObject, parseEmptyableJSON, sequential, sleep, stringifyJSON, toArray } from '@standardserver/shared';
|
|
5
6
|
|
|
6
|
-
type MaybeOptionalOptions<TOptions> =
|
|
7
|
+
type MaybeOptionalOptions<TOptions> = object extends TOptions ? [options?: TOptions] : [options: TOptions];
|
|
7
8
|
declare function resolveMaybeOptionalOptions<T>(rest: MaybeOptionalOptions<T>): T;
|
|
8
9
|
|
|
9
|
-
declare function toArray<T>(value: T): T extends readonly any[] ? T : Exclude<T, undefined | null>[];
|
|
10
10
|
declare function splitInHalf<T>(arr: readonly T[]): [T[], T[]];
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* Load Request/Response/Blob/File/.. to a buffer (Uint8Array<ArrayBuffer>).
|
|
14
14
|
*
|
|
15
15
|
* Prefers the newer `.bytes` method when available as it more efficient but not widely supported yet.
|
|
16
16
|
*/
|
|
17
|
-
declare function
|
|
18
|
-
|
|
19
|
-
type AnyFunction = (...args: any[]) => any;
|
|
20
|
-
declare function once<T extends () => any>(fn: T): () => ReturnType<T>;
|
|
21
|
-
declare function sequential<A extends any[], R>(fn: (...args: A) => Promise<R>): (...args: A) => Promise<R>;
|
|
17
|
+
declare function loadBytes(source: Pick<Blob, 'arrayBuffer' | 'bytes'>): ReturnType<Blob['bytes']>;
|
|
22
18
|
/**
|
|
23
|
-
*
|
|
19
|
+
* Normalize text or binary-like inputs to either:
|
|
20
|
+
* - the original string value, or
|
|
21
|
+
* - a Uint8Array view over the source bytes.
|
|
24
22
|
*/
|
|
25
|
-
declare function
|
|
23
|
+
declare function toStringOrBytes(source: Arrayable<string | ArrayBuffer | Pick<Uint8Array<ArrayBuffer>, 'buffer' | 'byteOffset' | 'byteLength'>>): string | Awaited<ReturnType<Blob['bytes']>>;
|
|
26
24
|
|
|
27
|
-
|
|
28
|
-
[P in keyof Omit<T, K>]: T[P] extends AnyFunction ? ((...args: Parameters<T[P]>) => OmitChainMethodDeep<ReturnType<T[P]>, K>) : T[P];
|
|
29
|
-
};
|
|
25
|
+
declare function isDeepEqual(a: unknown, b: unknown): boolean;
|
|
30
26
|
|
|
31
27
|
declare const ORPC_NAME = "orpc";
|
|
32
|
-
declare const ORPC_SHARED_PACKAGE_NAME = "@orpc/shared";
|
|
33
|
-
declare const ORPC_SHARED_PACKAGE_VERSION = "1.14.10";
|
|
34
28
|
|
|
29
|
+
declare function isAbortError(error: unknown): error is Error;
|
|
30
|
+
|
|
31
|
+
type AnyFunction = (...args: any[]) => any;
|
|
32
|
+
declare function once<T>(fn: () => T): () => T;
|
|
35
33
|
/**
|
|
36
|
-
*
|
|
37
|
-
* Uses the standardized 'AbortError' name for consistency with JavaScript APIs.
|
|
34
|
+
* Executes the callback function after the current call stack has been cleared.
|
|
38
35
|
*/
|
|
39
|
-
declare
|
|
40
|
-
|
|
41
|
-
}
|
|
36
|
+
declare function defer(callback: () => void): void;
|
|
37
|
+
declare function tryOrUndefined<T>(fn: () => T): undefined | T;
|
|
42
38
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
*
|
|
50
|
-
* Set to:
|
|
51
|
-
* - `0`: Disable buffering. Events must be consumed before the next one arrives.
|
|
52
|
-
* - `1`: Only keep the latest event. Useful for real-time updates where only the most recent value matters.
|
|
53
|
-
* - `Infinity`: Keep all events. Ensures no data loss, but may lead to high memory usage.
|
|
54
|
-
*
|
|
55
|
-
* @default 100
|
|
56
|
-
*/
|
|
57
|
-
maxBufferedEvents?: number;
|
|
58
|
-
}
|
|
59
|
-
interface EventPublisherSubscribeIteratorOptions extends EventPublisherOptions {
|
|
60
|
-
/**
|
|
61
|
-
* Aborts the async iterator. Throws if aborted before or during pulling.
|
|
62
|
-
*/
|
|
63
|
-
signal?: AbortSignal | undefined;
|
|
64
|
-
}
|
|
65
|
-
declare class EventPublisher<T extends Record<PropertyKey, any>> {
|
|
66
|
-
#private;
|
|
67
|
-
constructor(options?: EventPublisherOptions);
|
|
68
|
-
get size(): number;
|
|
69
|
-
/**
|
|
70
|
-
* Emits an event and delivers the payload to all subscribed listeners.
|
|
71
|
-
*/
|
|
72
|
-
publish<K extends keyof T>(event: K, payload: T[K]): void;
|
|
73
|
-
/**
|
|
74
|
-
* Subscribes to a specific event using a callback function.
|
|
75
|
-
* Returns an unsubscribe function to remove the listener.
|
|
76
|
-
*
|
|
77
|
-
* @example
|
|
78
|
-
* ```ts
|
|
79
|
-
* const unsubscribe = publisher.subscribe('event', (payload) => {
|
|
80
|
-
* console.log(payload)
|
|
81
|
-
* })
|
|
82
|
-
*
|
|
83
|
-
* // Later
|
|
84
|
-
* unsubscribe()
|
|
85
|
-
* ```
|
|
86
|
-
*/
|
|
87
|
-
subscribe<K extends keyof T>(event: K, listener: (payload: T[K]) => void): () => void;
|
|
88
|
-
/**
|
|
89
|
-
* Subscribes to a specific event using an async iterator.
|
|
90
|
-
* Useful for `for await...of` loops with optional buffering and abort support.
|
|
91
|
-
*
|
|
92
|
-
* @example
|
|
93
|
-
* ```ts
|
|
94
|
-
* for await (const payload of publisher.subscribe('event', { signal })) {
|
|
95
|
-
* console.log(payload)
|
|
96
|
-
* }
|
|
97
|
-
* ```
|
|
98
|
-
*/
|
|
99
|
-
subscribe<K extends keyof T>(event: K, options?: EventPublisherSubscribeIteratorOptions): AsyncGenerator<T[K]> & AsyncIteratorObject<T[K]>;
|
|
100
|
-
}
|
|
39
|
+
declare function pathToHttpPath(path: readonly string[]): `/${string}`;
|
|
40
|
+
declare function normalizeHttpPath(path: string): `/${string}`;
|
|
41
|
+
declare function mergeHttpPath(a: `/${string}`, b: `/${string}`): `/${string}`;
|
|
42
|
+
declare function matchesHttpPathPrefix(url: `/${string}`, prefix: `/${string}`): boolean;
|
|
43
|
+
declare function matchesHttpPath(url: `/${string}`, path: `/${string}`): boolean;
|
|
44
|
+
declare function isCompressibleContentType(contentType: string | null | undefined): boolean;
|
|
101
45
|
|
|
102
|
-
declare class SequentialIdGenerator {
|
|
103
|
-
private index;
|
|
104
|
-
generate(): string;
|
|
105
|
-
}
|
|
106
46
|
/**
|
|
107
47
|
* Compares two sequential IDs.
|
|
108
48
|
* Returns:
|
|
@@ -112,8 +52,11 @@ declare class SequentialIdGenerator {
|
|
|
112
52
|
*/
|
|
113
53
|
declare function compareSequentialIds(a: string, b: string): number;
|
|
114
54
|
|
|
115
|
-
type SetOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
116
55
|
type IntersectPick<T, U> = Pick<T, keyof T & keyof U>;
|
|
56
|
+
/**
|
|
57
|
+
* Remove protected/private properties/methods
|
|
58
|
+
*/
|
|
59
|
+
type Public<T> = Pick<T, keyof T>;
|
|
117
60
|
type PromiseWithError<T, TError> = Promise<T> & {
|
|
118
61
|
__error?: {
|
|
119
62
|
type: TError;
|
|
@@ -122,14 +65,13 @@ type PromiseWithError<T, TError> = Promise<T> & {
|
|
|
122
65
|
/**
|
|
123
66
|
* The place where you can config the orpc types.
|
|
124
67
|
*
|
|
125
|
-
* - `
|
|
68
|
+
* - `ThrowableError` the error type that represent throwable errors should be `Error` or `null | undefined | {}` if you want more strict.
|
|
126
69
|
*/
|
|
127
70
|
interface Registry {
|
|
128
71
|
}
|
|
129
72
|
type ThrowableError = Registry extends {
|
|
130
|
-
|
|
73
|
+
ThrowableError: infer T;
|
|
131
74
|
} ? T : Error;
|
|
132
|
-
type InferAsyncIterableYield<T> = T extends AsyncIterable<infer U> ? U : never;
|
|
133
75
|
|
|
134
76
|
type InterceptableOptions = Record<string, any>;
|
|
135
77
|
type InterceptorOptions<TOptions extends InterceptableOptions, TResult> = Omit<TOptions, 'next'> & {
|
|
@@ -137,136 +79,138 @@ type InterceptorOptions<TOptions extends InterceptableOptions, TResult> = Omit<T
|
|
|
137
79
|
};
|
|
138
80
|
type Interceptor<TOptions extends InterceptableOptions, TResult> = (options: InterceptorOptions<TOptions, TResult>) => TResult;
|
|
139
81
|
/**
|
|
140
|
-
* Can
|
|
82
|
+
* Can used for interceptors or middlewares
|
|
141
83
|
*/
|
|
142
84
|
declare function onStart<T, TOptions extends {
|
|
143
|
-
next()
|
|
85
|
+
next: () => any;
|
|
144
86
|
}, TRest extends any[]>(callback: NoInfer<(options: TOptions, ...rest: TRest) => Promisable<void>>): (options: TOptions, ...rest: TRest) => T | Promise<Awaited<ReturnType<TOptions['next']>>>;
|
|
145
87
|
/**
|
|
146
|
-
* Can
|
|
88
|
+
* Can used for interceptors or middlewares
|
|
147
89
|
*/
|
|
148
90
|
declare function onSuccess<T, TOptions extends {
|
|
149
|
-
next()
|
|
91
|
+
next: () => any;
|
|
150
92
|
}, TRest extends any[]>(callback: NoInfer<(result: Awaited<ReturnType<TOptions['next']>>, options: TOptions, ...rest: TRest) => Promisable<void>>): (options: TOptions, ...rest: TRest) => T | Promise<Awaited<ReturnType<TOptions['next']>>>;
|
|
151
93
|
/**
|
|
152
|
-
* Can
|
|
94
|
+
* Can used for interceptors or middlewares
|
|
153
95
|
*/
|
|
154
96
|
declare function onError<T, TOptions extends {
|
|
155
|
-
next()
|
|
97
|
+
next: () => any;
|
|
156
98
|
}, TRest extends any[]>(callback: NoInfer<(error: ReturnType<TOptions['next']> extends PromiseWithError<any, infer E> ? E : ThrowableError, options: TOptions, ...rest: TRest) => Promisable<void>>): (options: TOptions, ...rest: TRest) => T | Promise<Awaited<ReturnType<TOptions['next']>>>;
|
|
157
99
|
type OnFinishState<TResult, TError> = [error: TError, data: undefined, isSuccess: false] | [error: null, data: TResult, isSuccess: true];
|
|
158
100
|
/**
|
|
159
|
-
* Can
|
|
101
|
+
* Can used for interceptors or middlewares
|
|
160
102
|
*/
|
|
161
103
|
declare function onFinish<T, TOptions extends {
|
|
162
|
-
next()
|
|
104
|
+
next: () => any;
|
|
163
105
|
}, TRest extends any[]>(callback: NoInfer<(state: OnFinishState<Awaited<ReturnType<TOptions['next']>>, ReturnType<TOptions['next']> extends PromiseWithError<any, infer E> ? E : ThrowableError>, options: TOptions, ...rest: TRest) => Promisable<void>>): (options: TOptions, ...rest: TRest) => T | Promise<Awaited<ReturnType<TOptions['next']>>>;
|
|
164
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Creates a middleware or interceptor that invokes a callback when the returned async
|
|
108
|
+
* iterator object throws an error while being consumed.
|
|
109
|
+
*
|
|
110
|
+
* This does not replace the `onError`. `onError` only fires on the
|
|
111
|
+
* initial call (before the interceptor returns the iterator), whereas this
|
|
112
|
+
* callback only fires while consuming the iterator. Use both together to
|
|
113
|
+
* catch all possible errors.
|
|
114
|
+
*/
|
|
115
|
+
declare function onAsyncIteratorObjectError<T, TOptions extends {
|
|
116
|
+
next: () => any;
|
|
117
|
+
}, TRest extends any[]>(callback: NoInfer<(error: ThrowableError | (ReturnType<TOptions['next']> extends PromiseWithError<any, infer E> ? E : ThrowableError), options: TOptions, ...rest: TRest) => Promisable<void>>): (options: TOptions, ...rest: TRest) => T | Promise<Awaited<ReturnType<TOptions['next']>>>;
|
|
118
|
+
/**
|
|
119
|
+
* Creates an interceptor that invokes a callback when the returned readable
|
|
120
|
+
* stream errors while being consumed.
|
|
121
|
+
*
|
|
122
|
+
* This does not replace the `onError`. `onError` only fires on the
|
|
123
|
+
* initial call (before the interceptor returns the stream), whereas this
|
|
124
|
+
* callback only fires while consuming the stream. Use both together to catch
|
|
125
|
+
* all possible errors.
|
|
126
|
+
*/
|
|
127
|
+
declare function onReadableStreamError<T, TOptions extends {
|
|
128
|
+
next: () => any;
|
|
129
|
+
}, TRest extends any[]>(callback: NoInfer<(error: ThrowableError | (ReturnType<TOptions['next']> extends PromiseWithError<any, infer E> ? E : ThrowableError), options: TOptions, ...rest: TRest) => Promisable<void>>): (options: TOptions, ...rest: TRest) => T | Promise<Awaited<ReturnType<TOptions['next']>>>;
|
|
130
|
+
declare function intercept<TOptions extends InterceptableOptions, TResult>(interceptors: undefined | Interceptor<TOptions, TResult>[], options: NoInfer<TOptions>, main: NoInfer<(options: TOptions) => TResult>): TResult;
|
|
165
131
|
|
|
166
132
|
/**
|
|
167
133
|
* Only import types from @opentelemetry/api to avoid runtime dependencies.
|
|
168
134
|
*/
|
|
169
135
|
|
|
170
|
-
interface
|
|
136
|
+
interface OpenTelemetryConfig {
|
|
171
137
|
tracer: Tracer;
|
|
172
138
|
trace: TraceAPI;
|
|
173
139
|
context: ContextAPI;
|
|
174
|
-
propagation: PropagationAPI;
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Sets the global OpenTelemetry config.
|
|
178
|
-
* Call this once at app startup. Use `undefined` to disable tracing.
|
|
179
|
-
*/
|
|
180
|
-
declare function setGlobalOtelConfig(config: OtelConfig | undefined): void;
|
|
181
|
-
/**
|
|
182
|
-
* Gets the global OpenTelemetry config.
|
|
183
|
-
* Returns `undefined` if OpenTelemetry is not configured, initialized, or enabled.
|
|
184
|
-
*/
|
|
185
|
-
declare function getGlobalOtelConfig(): OtelConfig | undefined;
|
|
186
|
-
/**
|
|
187
|
-
* Starts a new OpenTelemetry span with the given name and options.
|
|
188
|
-
*
|
|
189
|
-
* @returns The new span, or `undefined` if no tracer is set.
|
|
190
|
-
*/
|
|
191
|
-
declare function startSpan(name: string, options?: SpanOptions, context?: Context): Span | undefined;
|
|
192
|
-
interface SetSpanErrorOptions {
|
|
193
140
|
/**
|
|
194
|
-
*
|
|
141
|
+
* propagation is optional, can reduce bundle size in some cases.
|
|
195
142
|
*/
|
|
196
|
-
|
|
143
|
+
propagation?: PropagationAPI | undefined;
|
|
197
144
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
*/
|
|
202
|
-
declare function setSpanError(span: Span | undefined, error: unknown, options?: SetSpanErrorOptions): void;
|
|
203
|
-
declare function setSpanAttribute(span: Span | undefined, key: string, value: AttributeValue | undefined): void;
|
|
204
|
-
/**
|
|
205
|
-
* Converts an error to an OpenTelemetry Exception.
|
|
206
|
-
*/
|
|
207
|
-
declare function toOtelException(error: unknown): Exclude<Exception, string>;
|
|
208
|
-
/**
|
|
209
|
-
* Converts a value to a string suitable for OpenTelemetry span attributes.
|
|
210
|
-
*/
|
|
211
|
-
declare function toSpanAttributeValue(data: unknown): string;
|
|
212
|
-
interface RunWithSpanOptions extends SpanOptions, SetSpanErrorOptions {
|
|
145
|
+
declare function setOpenTelemetryConfig(config: OpenTelemetryConfig | undefined): void;
|
|
146
|
+
declare function getOpenTelemetryConfig(): OpenTelemetryConfig | undefined;
|
|
147
|
+
interface StartSpanOptions extends SpanOptions {
|
|
213
148
|
/**
|
|
214
149
|
* The name of the span to create.
|
|
215
150
|
*/
|
|
216
151
|
name: string;
|
|
217
152
|
/**
|
|
218
|
-
* Context to use for the span.
|
|
153
|
+
* Context to use for the created span.
|
|
219
154
|
*/
|
|
220
155
|
context?: Context;
|
|
221
156
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
declare function
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
157
|
+
declare function startSpan(options: StartSpanOptions | string): Span | undefined;
|
|
158
|
+
declare function recordSpanError(span: Span | undefined, error: unknown): void;
|
|
159
|
+
declare function setSpanAttributeIfDefined(span: Span | undefined, key: string, value: AttributeValue | undefined): void;
|
|
160
|
+
declare function toOtelException(error: unknown): Exclude<Exception, string>;
|
|
161
|
+
declare function toSpanAttributeValue(data: unknown): string;
|
|
162
|
+
interface RunWithSpanOptions extends StartSpanOptions {
|
|
163
|
+
}
|
|
164
|
+
declare function runWithSpan<T>(options: string | RunWithSpanOptions, fn: (span?: Span) => Promisable<T>): Promise<T>;
|
|
230
165
|
declare function runInSpanContext<T>(span: Span | undefined, fn: () => Promisable<T>): Promise<T>;
|
|
231
166
|
|
|
232
|
-
|
|
233
|
-
interface AsyncIteratorClassNextFn<T, TReturn> {
|
|
234
|
-
(): Promise<IteratorResult<T, TReturn>>;
|
|
235
|
-
}
|
|
236
|
-
interface AsyncIteratorClassCleanupFn {
|
|
237
|
-
(reason: 'return' | 'throw' | 'next' | 'dispose'): Promise<void>;
|
|
238
|
-
}
|
|
239
|
-
declare const fallbackAsyncDisposeSymbol: unique symbol;
|
|
240
|
-
declare const asyncDisposeSymbol: typeof Symbol extends {
|
|
241
|
-
asyncDispose: infer T;
|
|
242
|
-
} ? T : typeof fallbackAsyncDisposeSymbol;
|
|
243
|
-
declare class AsyncIteratorClass<T, TReturn = unknown, TNext = unknown> implements AsyncIteratorObject<T, TReturn, TNext>, AsyncGenerator<T, TReturn, TNext> {
|
|
244
|
-
#private;
|
|
245
|
-
constructor(next: AsyncIteratorClassNextFn<T, TReturn>, cleanup: AsyncIteratorClassCleanupFn);
|
|
246
|
-
next(): Promise<IteratorResult<T, TReturn>>;
|
|
247
|
-
return(value?: any): Promise<IteratorResult<T, TReturn>>;
|
|
248
|
-
throw(err: any): Promise<IteratorResult<T, TReturn>>;
|
|
167
|
+
interface WrapAsyncIteratorOptions<TYield, TReturn, TMappedYield, TMappedReturn> {
|
|
249
168
|
/**
|
|
250
|
-
*
|
|
169
|
+
* Any call to the original iterator will be executed inside this function.
|
|
170
|
+
* Useful when you want execution to happen within a specific context,
|
|
171
|
+
* such as AsyncLocalStorage.
|
|
251
172
|
*/
|
|
252
|
-
|
|
253
|
-
|
|
173
|
+
runWith?: <T>(run: () => Promise<T>) => Promise<T>;
|
|
174
|
+
mapResult?: (result: IteratorResult<TYield, TReturn>) => Promisable<IteratorResult<TMappedYield, TMappedReturn>>;
|
|
175
|
+
mapError?: (error: ThrowableError) => Promisable<ThrowableError>;
|
|
176
|
+
onError?: (error: ThrowableError) => Promisable<void>;
|
|
177
|
+
/**
|
|
178
|
+
* Execute after the stream finishes or is cancelled.
|
|
179
|
+
*/
|
|
180
|
+
onFinish?: () => Promisable<void>;
|
|
254
181
|
}
|
|
182
|
+
declare function wrapAsyncIterator<TYield, TReturn, TMappedYield = TYield, TMappedReturn = TReturn>(iterator: AsyncIterator<TYield, TReturn>, { runWith, mapResult, mapError, onError, onFinish }: WrapAsyncIteratorOptions<TYield, TReturn, TMappedYield, TMappedReturn>): NoInfer<AsyncIteratorClass<TMappedYield, TMappedReturn>>;
|
|
183
|
+
declare function traceAsyncIterator<T, TReturn, TNext>(options: StartSpanOptions | string, iterator: AsyncIterator<T, TReturn, TNext>): AsyncIteratorClass<T, TReturn, TNext>;
|
|
255
184
|
declare function replicateAsyncIterator<T, TReturn, TNext>(source: AsyncIterator<T, TReturn, TNext>, count: number): (AsyncIteratorClass<T, TReturn, TNext>)[];
|
|
256
|
-
interface
|
|
185
|
+
interface ConsumeAsyncIteratorOptions<T, TReturn, TError> {
|
|
257
186
|
/**
|
|
258
|
-
*
|
|
187
|
+
* Called on each event
|
|
259
188
|
*/
|
|
260
|
-
|
|
189
|
+
onEvent: (event: T) => void;
|
|
190
|
+
/**
|
|
191
|
+
* Called once error happens
|
|
192
|
+
*/
|
|
193
|
+
onError?: (error: TError) => void;
|
|
194
|
+
/**
|
|
195
|
+
* Called once AsyncIteratorObject is done
|
|
196
|
+
*
|
|
197
|
+
* @info If iterator is canceled, `undefined` can be passed on success
|
|
198
|
+
*/
|
|
199
|
+
onSuccess?: (value: TReturn | undefined) => void;
|
|
200
|
+
/**
|
|
201
|
+
* Called once after onError or onSuccess
|
|
202
|
+
*
|
|
203
|
+
* @info If iterator is canceled, `undefined` can be passed on success
|
|
204
|
+
*/
|
|
205
|
+
onFinish?: (state: [error: TError, data: undefined, isSuccess: false] | [error: null, data: TReturn | undefined, isSuccess: true]) => void;
|
|
261
206
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
declare function logError(error: unknown): void;
|
|
207
|
+
/**
|
|
208
|
+
* Consumes an AsyncIteratorObject with lifecycle callbacks
|
|
209
|
+
*
|
|
210
|
+
* @warning If no `onError` or `onFinish` is provided, error will be thrown into unhandled rejection channel.
|
|
211
|
+
* @return unsubscribe callback
|
|
212
|
+
*/
|
|
213
|
+
declare function consumeAsyncIterator<T, TReturn, TError = ThrowableError>(iterator: AsyncIterator<T, TReturn> | PromiseWithError<AsyncIterator<T, TReturn>, TError>, options: ConsumeAsyncIteratorOptions<T, TReturn, TError | ThrowableError>): () => Promise<void>;
|
|
270
214
|
|
|
271
215
|
type Segment = string | number;
|
|
272
216
|
declare function findDeepMatches(check: (value: unknown) => boolean, payload: unknown, segments?: Segment[], maps?: Segment[][], values?: unknown[]): {
|
|
@@ -279,43 +223,72 @@ declare function findDeepMatches(check: (value: unknown) => boolean, payload: un
|
|
|
279
223
|
*/
|
|
280
224
|
declare function getConstructor(value: unknown): Function | null | undefined;
|
|
281
225
|
/**
|
|
282
|
-
*
|
|
226
|
+
* Checks whether a value is a plain object, including objects created with
|
|
227
|
+
* `Object.create(null)`.
|
|
283
228
|
*/
|
|
284
|
-
declare function
|
|
229
|
+
declare function isPlainObject(value: unknown): value is Record<PropertyKey, unknown>;
|
|
230
|
+
declare function get(object: unknown, path: readonly PropertyKey[]): unknown;
|
|
285
231
|
/**
|
|
286
|
-
*
|
|
232
|
+
* Sets a value at the given path, creating plain objects for intermediate keys as needed.
|
|
287
233
|
*/
|
|
288
|
-
declare function
|
|
234
|
+
declare function set(root: object, path: [PropertyKey, ...PropertyKey[]] | [...PropertyKey[], PropertyKey], value: unknown): void;
|
|
235
|
+
declare function omit<T extends object, K extends keyof T>(obj: T, keys: readonly K[]): Omit<T, K>;
|
|
289
236
|
declare function clone<T>(value: T): T;
|
|
290
|
-
declare function get(object: unknown, path: readonly PropertyKey[]): unknown;
|
|
291
237
|
declare function isPropertyKey(value: unknown): value is PropertyKey;
|
|
292
238
|
declare const NullProtoObj: ({
|
|
293
239
|
new <T extends Record<PropertyKey, unknown>>(): T;
|
|
294
240
|
});
|
|
241
|
+
/**
|
|
242
|
+
* Returns an object containing all methods of the given object, with each
|
|
243
|
+
* method bound to the original object instance.
|
|
244
|
+
*
|
|
245
|
+
* Methods are collected from both the object itself and its prototype chain
|
|
246
|
+
* (excluding `Object.prototype` and the `constructor` property).
|
|
247
|
+
*/
|
|
248
|
+
declare function bindMethods<T extends object>(obj: T): Pick<T, {
|
|
249
|
+
[K in keyof T]: T[K] extends AnyFunction ? K : never;
|
|
250
|
+
}[keyof T]>;
|
|
295
251
|
|
|
296
|
-
|
|
297
|
-
|
|
252
|
+
interface OrderablePlugin {
|
|
253
|
+
/** Unique name of the plugin, used for ordering and identification. */
|
|
254
|
+
name: string;
|
|
255
|
+
/** Plugins this plugin should execute before. */
|
|
256
|
+
before?: string[] | undefined;
|
|
257
|
+
/** Plugins this plugin should execute after. */
|
|
258
|
+
after?: string[] | undefined;
|
|
259
|
+
}
|
|
298
260
|
/**
|
|
299
|
-
*
|
|
261
|
+
* Sorts plugins based on their `before` and `after` dependencies.
|
|
300
262
|
*/
|
|
301
|
-
declare function
|
|
263
|
+
declare function sortPlugins<T extends OrderablePlugin>(plugins: T[]): T[];
|
|
302
264
|
|
|
303
265
|
/**
|
|
304
|
-
*
|
|
305
|
-
*
|
|
306
|
-
*
|
|
266
|
+
* Creates a promise together with its associated `resolve` and `reject`
|
|
267
|
+
* functions.
|
|
268
|
+
*
|
|
269
|
+
* Equivalent to `Promise.withResolvers()`, but works in environments
|
|
270
|
+
* where that API is not yet available.
|
|
307
271
|
*/
|
|
308
|
-
declare function
|
|
272
|
+
declare function promiseWithResolvers<T>(): {
|
|
273
|
+
promise: Promise<T>;
|
|
274
|
+
resolve: (v: T) => void;
|
|
275
|
+
reject: (reason: unknown) => void;
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
type Value<T, TArgs extends any[] = []> = T | ((...args: TArgs) => T);
|
|
279
|
+
declare function value<T, TArgs extends any[]>(value: Value<T, TArgs>, ...args: NoInfer<TArgs>): T extends Value<infer U, any> ? U : never;
|
|
280
|
+
|
|
309
281
|
/**
|
|
310
|
-
*
|
|
282
|
+
* Creates a proxy that overlays a `partial` object on top of a `target`.
|
|
311
283
|
*
|
|
312
|
-
* - Properties from `
|
|
313
|
-
* - Properties not in `
|
|
314
|
-
* - Methods
|
|
284
|
+
* - Properties from `partial` take precedence.
|
|
285
|
+
* - Properties not present in `partial` fall back to the resolved `target`.
|
|
286
|
+
* - Methods are bound to the proxy to ensure a consistent `this` context.
|
|
315
287
|
*
|
|
316
|
-
* Useful
|
|
288
|
+
* Useful for overriding specific properties of an object while delegating
|
|
289
|
+
* all other access to the original target without needing to know its full structure.
|
|
317
290
|
*/
|
|
318
|
-
declare function
|
|
291
|
+
declare function override<T extends object, U extends object>(target: Value<T>, partial: U): U & Omit<T, keyof U>;
|
|
319
292
|
|
|
320
293
|
interface AsyncIdQueueCloseOptions {
|
|
321
294
|
id?: string;
|
|
@@ -325,21 +298,57 @@ declare class AsyncIdQueue<T> {
|
|
|
325
298
|
private readonly openIds;
|
|
326
299
|
private readonly queues;
|
|
327
300
|
private readonly waiters;
|
|
328
|
-
get
|
|
329
|
-
get waiterIds(): string[];
|
|
330
|
-
hasBufferedItems(id: string): boolean;
|
|
301
|
+
get size(): number;
|
|
331
302
|
open(id: string): void;
|
|
332
303
|
isOpen(id: string): boolean;
|
|
333
304
|
push(id: string, item: T): void;
|
|
334
305
|
pull(id: string): Promise<T>;
|
|
335
306
|
close({ id, reason }?: AsyncIdQueueCloseOptions): void;
|
|
336
|
-
assertOpen
|
|
307
|
+
private assertOpen;
|
|
337
308
|
}
|
|
338
309
|
|
|
339
310
|
/**
|
|
340
|
-
*
|
|
311
|
+
* Returns a signal that aborts only after all provided signals are aborted.
|
|
312
|
+
*/
|
|
313
|
+
declare function allAbortSignal(signals: readonly (AbortSignal | undefined)[]): AbortSignal | undefined;
|
|
314
|
+
/**
|
|
315
|
+
* Returns a signal that aborts as soon as any of the provided signals aborts,
|
|
316
|
+
* with the same abort reason.
|
|
317
|
+
*/
|
|
318
|
+
declare function anyAbortSignal(signals: readonly (AbortSignal | undefined)[]): AbortSignal | undefined;
|
|
319
|
+
declare function runWithSignal<T>(signal: AbortSignal | undefined, fn: () => Promise<T>): Promise<T>;
|
|
320
|
+
|
|
321
|
+
declare function replicateReadableStream<T>(stream: ReadableStream<T>, count: number): ReadableStream<T>[];
|
|
322
|
+
type ReadableStreamReadResult<T> = {
|
|
323
|
+
done: false;
|
|
324
|
+
value: T;
|
|
325
|
+
} | {
|
|
326
|
+
done: true;
|
|
327
|
+
value?: undefined | T;
|
|
328
|
+
};
|
|
329
|
+
interface WrapReadableStreamOptions<T, TMapped> {
|
|
330
|
+
/**
|
|
331
|
+
* Any call to the original stream reader will be executed inside this function.
|
|
332
|
+
* Useful when you want execution to happen within a specific context,
|
|
333
|
+
* such as AsyncLocalStorage.
|
|
334
|
+
*/
|
|
335
|
+
runWith?: <T>(run: () => Promise<T>) => Promise<T>;
|
|
336
|
+
mapResult?: (result: ReadableStreamReadResult<T>) => Promisable<ReadableStreamReadResult<TMapped>>;
|
|
337
|
+
mapError?: (error: ThrowableError) => Promisable<ThrowableError>;
|
|
338
|
+
onError?: (error: ThrowableError) => Promisable<void>;
|
|
339
|
+
/**
|
|
340
|
+
* Guaranteed to execute exactly once after the stream finishes or is cancelled.
|
|
341
|
+
*/
|
|
342
|
+
onFinish?: () => Promisable<void>;
|
|
343
|
+
}
|
|
344
|
+
declare function wrapReadableStream<T, TMapped = T>(stream: ReadableStream<T>, { runWith, mapResult, mapError, onError, onFinish }: WrapReadableStreamOptions<T, TMapped>): NoInfer<ReadableStream<TMapped>>;
|
|
345
|
+
declare function traceReadableStream<T>(options: StartSpanOptions | string, stream: ReadableStream<T>): ReadableStream<T>;
|
|
346
|
+
/**
|
|
347
|
+
* Converts a {@link ReadableStream} into an {@link AsyncIteratorClass}.
|
|
341
348
|
*/
|
|
342
|
-
declare function
|
|
349
|
+
declare function streamToAsyncIteratorObject<T>(stream: ReadableStream<T>, { signal }?: {
|
|
350
|
+
signal?: undefined | AbortSignal;
|
|
351
|
+
}): AsyncIteratorClass<T>;
|
|
343
352
|
/**
|
|
344
353
|
* Converts an `AsyncIterator` into a `ReadableStream`.
|
|
345
354
|
*/
|
|
@@ -352,5 +361,5 @@ declare function asyncIteratorToUnproxiedDataStream<T>(iterator: AsyncIterator<T
|
|
|
352
361
|
|
|
353
362
|
declare function tryDecodeURIComponent(value: string): string;
|
|
354
363
|
|
|
355
|
-
export {
|
|
356
|
-
export type { AnyFunction, AsyncIdQueueCloseOptions,
|
|
364
|
+
export { AsyncIdQueue, NullProtoObj, ORPC_NAME, allAbortSignal, anyAbortSignal, asyncIteratorToStream, asyncIteratorToUnproxiedDataStream, bindMethods, clone, compareSequentialIds, consumeAsyncIterator, defer, findDeepMatches, get, getConstructor, getOpenTelemetryConfig, intercept, isAbortError, isCompressibleContentType, isDeepEqual, isPlainObject, isPropertyKey, loadBytes, matchesHttpPath, matchesHttpPathPrefix, mergeHttpPath, normalizeHttpPath, omit, onAsyncIteratorObjectError, onError, onFinish, onReadableStreamError, onStart, onSuccess, once, override, pathToHttpPath, promiseWithResolvers, recordSpanError, replicateAsyncIterator, replicateReadableStream, resolveMaybeOptionalOptions, runInSpanContext, runWithSignal, runWithSpan, set, setOpenTelemetryConfig, setSpanAttributeIfDefined, sortPlugins, splitInHalf, startSpan, streamToAsyncIteratorObject, toOtelException, toSpanAttributeValue, toStringOrBytes, traceAsyncIterator, traceReadableStream, tryDecodeURIComponent, tryOrUndefined, value, wrapAsyncIterator, wrapReadableStream };
|
|
365
|
+
export type { AnyFunction, AsyncIdQueueCloseOptions, ConsumeAsyncIteratorOptions, InterceptableOptions, Interceptor, InterceptorOptions, IntersectPick, MaybeOptionalOptions, OnFinishState, OpenTelemetryConfig, OrderablePlugin, PromiseWithError, Public, ReadableStreamReadResult, Registry, RunWithSpanOptions, Segment, StartSpanOptions, ThrowableError, Value, WrapAsyncIteratorOptions, WrapReadableStreamOptions };
|