@orpc/shared 2.0.0-beta.3 → 2.0.0-beta.30
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 +71 -101
- package/dist/index.d.mts +111 -16
- package/dist/index.d.ts +111 -16
- package/dist/index.mjs +391 -217
- package/package.json +10 -5
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Promisable } from 'type-fest';
|
|
2
|
-
export { IsEqual, PartialDeep, Promisable, Writable } from 'type-fest';
|
|
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, sleep, stringifyJSON, toArray } from '@standardserver/shared';
|
|
5
|
+
export { AbortError, AsyncCleanupFn, AsyncIteratorClass, AsyncIteratorClassNextFn, SequentialIdGenerator, getOrBind, isAsyncIteratorObject, isTypescriptObject, parseEmptyableJSON, sequential, sleep, stringifyJSON, toArray } from '@standardserver/shared';
|
|
6
6
|
|
|
7
7
|
type MaybeOptionalOptions<TOptions> = object extends TOptions ? [options?: TOptions] : [options: TOptions];
|
|
8
8
|
declare function resolveMaybeOptionalOptions<T>(rest: MaybeOptionalOptions<T>): T;
|
|
@@ -14,13 +14,13 @@ declare function splitInHalf<T>(arr: readonly T[]): [T[], T[]];
|
|
|
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 loadBytes(source: Pick<Blob, 'arrayBuffer' | 'bytes'>):
|
|
17
|
+
declare function loadBytes(source: Pick<Blob, 'arrayBuffer' | 'bytes'>): ReturnType<Blob['bytes']>;
|
|
18
18
|
/**
|
|
19
19
|
* Normalize text or binary-like inputs to either:
|
|
20
20
|
* - the original string value, or
|
|
21
21
|
* - a Uint8Array view over the source bytes.
|
|
22
22
|
*/
|
|
23
|
-
declare function toStringOrBytes(source: string | ArrayBuffer |
|
|
23
|
+
declare function toStringOrBytes(source: Arrayable<string | ArrayBuffer | Pick<Uint8Array<ArrayBuffer>, 'buffer' | 'byteOffset' | 'byteLength'>>): string | Awaited<ReturnType<Blob['bytes']>>;
|
|
24
24
|
|
|
25
25
|
declare function isDeepEqual(a: unknown, b: unknown): boolean;
|
|
26
26
|
|
|
@@ -41,6 +41,23 @@ declare function normalizeHttpPath(path: string): `/${string}`;
|
|
|
41
41
|
declare function mergeHttpPath(a: `/${string}`, b: `/${string}`): `/${string}`;
|
|
42
42
|
declare function matchesHttpPathPrefix(url: `/${string}`, prefix: `/${string}`): boolean;
|
|
43
43
|
declare function matchesHttpPath(url: `/${string}`, path: `/${string}`): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Parse Accept-Encoding into each coding's q-value, where `0` means the coding is explicitly
|
|
46
|
+
* unacceptable. The `*` wildcard is kept under its own key, so a caller can honour it while
|
|
47
|
+
* still letting a specific coding take precedence over it.
|
|
48
|
+
*
|
|
49
|
+
* @see https://www.rfc-editor.org/rfc/rfc9110.html#name-accept-encoding
|
|
50
|
+
*/
|
|
51
|
+
declare function parseAcceptEncodingQualities(header: string | undefined): Map<string, number>;
|
|
52
|
+
/**
|
|
53
|
+
* Add `accept-encoding` to a Vary header value. The encoding is chosen from the request, so a
|
|
54
|
+
* shared cache must key on it or it will hand a compressed body to a client that cannot decode it.
|
|
55
|
+
*
|
|
56
|
+
* @see https://www.rfc-editor.org/rfc/rfc9110.html#name-vary
|
|
57
|
+
*/
|
|
58
|
+
declare function varyByAcceptEncoding(vary: string | undefined): string;
|
|
59
|
+
declare function isNoTransformCacheControl(cacheControl: string | undefined): boolean;
|
|
60
|
+
declare function isCompressibleContentType(contentType: string | null | undefined): boolean;
|
|
44
61
|
|
|
45
62
|
/**
|
|
46
63
|
* Compares two sequential IDs.
|
|
@@ -90,7 +107,10 @@ declare function onSuccess<T, TOptions extends {
|
|
|
90
107
|
next: () => any;
|
|
91
108
|
}, 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']>>>;
|
|
92
109
|
/**
|
|
93
|
-
*
|
|
110
|
+
* Creates an interceptor or middleware that invokes a callback whenever an error
|
|
111
|
+
* is thrown. The error is rethrown after the callback completes.
|
|
112
|
+
*
|
|
113
|
+
* @see {@link https://orpc.dev/docs/adapters/fetch-api | Fetch API Adapter}
|
|
94
114
|
*/
|
|
95
115
|
declare function onError<T, TOptions extends {
|
|
96
116
|
next: () => any;
|
|
@@ -102,6 +122,30 @@ type OnFinishState<TResult, TError> = [error: TError, data: undefined, isSuccess
|
|
|
102
122
|
declare function onFinish<T, TOptions extends {
|
|
103
123
|
next: () => any;
|
|
104
124
|
}, 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']>>>;
|
|
125
|
+
/**
|
|
126
|
+
* Creates a middleware or interceptor that invokes a callback when the returned async
|
|
127
|
+
* iterator object throws an error while being consumed.
|
|
128
|
+
*
|
|
129
|
+
* This does not replace the `onError`. `onError` only fires on the
|
|
130
|
+
* initial call (before the interceptor returns the iterator), whereas this
|
|
131
|
+
* callback only fires while consuming the iterator. Use both together to
|
|
132
|
+
* catch all possible errors.
|
|
133
|
+
*/
|
|
134
|
+
declare function onAsyncIteratorObjectError<T, TOptions extends {
|
|
135
|
+
next: () => any;
|
|
136
|
+
}, 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']>>>;
|
|
137
|
+
/**
|
|
138
|
+
* Creates an interceptor that invokes a callback when the returned readable
|
|
139
|
+
* stream errors while being consumed.
|
|
140
|
+
*
|
|
141
|
+
* This does not replace the `onError`. `onError` only fires on the
|
|
142
|
+
* initial call (before the interceptor returns the stream), whereas this
|
|
143
|
+
* callback only fires while consuming the stream. Use both together to catch
|
|
144
|
+
* all possible errors.
|
|
145
|
+
*/
|
|
146
|
+
declare function onReadableStreamError<T, TOptions extends {
|
|
147
|
+
next: () => any;
|
|
148
|
+
}, 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']>>>;
|
|
105
149
|
declare function intercept<TOptions extends InterceptableOptions, TResult>(interceptors: undefined | Interceptor<TOptions, TResult>[], options: NoInfer<TOptions>, main: NoInfer<(options: TOptions) => TResult>): TResult;
|
|
106
150
|
|
|
107
151
|
/**
|
|
@@ -147,8 +191,8 @@ interface WrapAsyncIteratorOptions<TYield, TReturn, TMappedYield, TMappedReturn>
|
|
|
147
191
|
*/
|
|
148
192
|
runWith?: <T>(run: () => Promise<T>) => Promise<T>;
|
|
149
193
|
mapResult?: (result: IteratorResult<TYield, TReturn>) => Promisable<IteratorResult<TMappedYield, TMappedReturn>>;
|
|
150
|
-
mapError?: (error:
|
|
151
|
-
onError?: (error:
|
|
194
|
+
mapError?: (error: ThrowableError) => Promisable<ThrowableError>;
|
|
195
|
+
onError?: (error: ThrowableError) => Promisable<void>;
|
|
152
196
|
/**
|
|
153
197
|
* Execute after the stream finishes or is cancelled.
|
|
154
198
|
*/
|
|
@@ -157,6 +201,40 @@ interface WrapAsyncIteratorOptions<TYield, TReturn, TMappedYield, TMappedReturn>
|
|
|
157
201
|
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>>;
|
|
158
202
|
declare function traceAsyncIterator<T, TReturn, TNext>(options: StartSpanOptions | string, iterator: AsyncIterator<T, TReturn, TNext>): AsyncIteratorClass<T, TReturn, TNext>;
|
|
159
203
|
declare function replicateAsyncIterator<T, TReturn, TNext>(source: AsyncIterator<T, TReturn, TNext>, count: number): (AsyncIteratorClass<T, TReturn, TNext>)[];
|
|
204
|
+
interface ConsumeAsyncIteratorOptions<T, TReturn, TError> {
|
|
205
|
+
/**
|
|
206
|
+
* Called on each event
|
|
207
|
+
*/
|
|
208
|
+
onEvent: (event: T) => void;
|
|
209
|
+
/**
|
|
210
|
+
* Called once error happens
|
|
211
|
+
*/
|
|
212
|
+
onError?: (error: TError) => void;
|
|
213
|
+
/**
|
|
214
|
+
* Called once AsyncIteratorObject is done
|
|
215
|
+
*
|
|
216
|
+
* @remarks
|
|
217
|
+
* **Note**: If iterator is canceled, `undefined` can be passed on success
|
|
218
|
+
*/
|
|
219
|
+
onSuccess?: (value: TReturn | undefined) => void;
|
|
220
|
+
/**
|
|
221
|
+
* Called once after onError or onSuccess
|
|
222
|
+
*
|
|
223
|
+
* @remarks
|
|
224
|
+
* **Note**: If iterator is canceled, `undefined` can be passed on success
|
|
225
|
+
*/
|
|
226
|
+
onFinish?: (state: [error: TError, data: undefined, isSuccess: false] | [error: null, data: TReturn | undefined, isSuccess: true]) => void;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Consumes an AsyncIteratorObject with lifecycle callbacks.
|
|
230
|
+
*
|
|
231
|
+
* @remarks
|
|
232
|
+
* **Warning**: If no `onError` or `onFinish` is provided, errors are thrown into the unhandled rejection channel.
|
|
233
|
+
*
|
|
234
|
+
* @returns An unsubscribe callback that stops consuming and cleans up the iterator.
|
|
235
|
+
* @see {@link https://orpc.dev/docs/client/async-iterator-object#using-consumeasynciterator | AsyncIteratorObject in Client - Using consumeAsyncIterator}
|
|
236
|
+
*/
|
|
237
|
+
declare function consumeAsyncIterator<T, TReturn, TError = ThrowableError>(iterator: AsyncIterator<T, TReturn> | PromiseWithError<AsyncIterator<T, TReturn>, TError>, options: ConsumeAsyncIteratorOptions<T, TReturn, TError | ThrowableError>): () => Promise<void>;
|
|
160
238
|
|
|
161
239
|
type Segment = string | number;
|
|
162
240
|
declare function findDeepMatches(check: (value: unknown) => boolean, payload: unknown, segments?: Segment[], maps?: Segment[][], values?: unknown[]): {
|
|
@@ -168,6 +246,7 @@ declare function findDeepMatches(check: (value: unknown) => boolean, payload: un
|
|
|
168
246
|
*
|
|
169
247
|
*/
|
|
170
248
|
declare function getConstructor(value: unknown): Function | null | undefined;
|
|
249
|
+
declare function getConstructors(value: unknown): Generator<Function>;
|
|
171
250
|
/**
|
|
172
251
|
* Checks whether a value is a plain object, including objects created with
|
|
173
252
|
* `Object.create(null)`.
|
|
@@ -178,6 +257,11 @@ declare function get(object: unknown, path: readonly PropertyKey[]): unknown;
|
|
|
178
257
|
* Sets a value at the given path, creating plain objects for intermediate keys as needed.
|
|
179
258
|
*/
|
|
180
259
|
declare function set(root: object, path: [PropertyKey, ...PropertyKey[]] | [...PropertyKey[], PropertyKey], value: unknown): void;
|
|
260
|
+
/**
|
|
261
|
+
* Merges two values by copying the second over the first, repeating the merge one level deeper for
|
|
262
|
+
* nested plain objects. Anything that is not a pair of plain objects is replaced by the second one.
|
|
263
|
+
*/
|
|
264
|
+
declare function mergeTwoLevels(first: unknown, second: unknown): unknown;
|
|
181
265
|
declare function omit<T extends object, K extends keyof T>(obj: T, keys: readonly K[]): Omit<T, K>;
|
|
182
266
|
declare function clone<T>(value: T): T;
|
|
183
267
|
declare function isPropertyKey(value: unknown): value is PropertyKey;
|
|
@@ -191,7 +275,9 @@ declare const NullProtoObj: ({
|
|
|
191
275
|
* Methods are collected from both the object itself and its prototype chain
|
|
192
276
|
* (excluding `Object.prototype` and the `constructor` property).
|
|
193
277
|
*/
|
|
194
|
-
declare function bindMethods<T extends object>(obj: T
|
|
278
|
+
declare function bindMethods<T extends object>(obj: T, options?: {
|
|
279
|
+
unbound?: (keyof T)[];
|
|
280
|
+
}): Pick<T, {
|
|
195
281
|
[K in keyof T]: T[K] extends AnyFunction ? K : never;
|
|
196
282
|
}[keyof T]>;
|
|
197
283
|
|
|
@@ -257,6 +343,11 @@ declare class AsyncIdQueue<T> {
|
|
|
257
343
|
* Returns a signal that aborts only after all provided signals are aborted.
|
|
258
344
|
*/
|
|
259
345
|
declare function allAbortSignal(signals: readonly (AbortSignal | undefined)[]): AbortSignal | undefined;
|
|
346
|
+
/**
|
|
347
|
+
* Returns a signal that aborts as soon as any of the provided signals aborts,
|
|
348
|
+
* with the same abort reason.
|
|
349
|
+
*/
|
|
350
|
+
declare function anyAbortSignal(signals: readonly (AbortSignal | undefined)[]): AbortSignal | undefined;
|
|
260
351
|
declare function runWithSignal<T>(signal: AbortSignal | undefined, fn: () => Promise<T>): Promise<T>;
|
|
261
352
|
|
|
262
353
|
declare function replicateReadableStream<T>(stream: ReadableStream<T>, count: number): ReadableStream<T>[];
|
|
@@ -265,7 +356,7 @@ type ReadableStreamReadResult<T> = {
|
|
|
265
356
|
value: T;
|
|
266
357
|
} | {
|
|
267
358
|
done: true;
|
|
268
|
-
value
|
|
359
|
+
value?: undefined | T;
|
|
269
360
|
};
|
|
270
361
|
interface WrapReadableStreamOptions<T, TMapped> {
|
|
271
362
|
/**
|
|
@@ -275,8 +366,8 @@ interface WrapReadableStreamOptions<T, TMapped> {
|
|
|
275
366
|
*/
|
|
276
367
|
runWith?: <T>(run: () => Promise<T>) => Promise<T>;
|
|
277
368
|
mapResult?: (result: ReadableStreamReadResult<T>) => Promisable<ReadableStreamReadResult<TMapped>>;
|
|
278
|
-
mapError?: (error:
|
|
279
|
-
onError?: (error:
|
|
369
|
+
mapError?: (error: ThrowableError) => Promisable<ThrowableError>;
|
|
370
|
+
onError?: (error: ThrowableError) => Promisable<void>;
|
|
280
371
|
/**
|
|
281
372
|
* Guaranteed to execute exactly once after the stream finishes or is cancelled.
|
|
282
373
|
*/
|
|
@@ -285,9 +376,11 @@ interface WrapReadableStreamOptions<T, TMapped> {
|
|
|
285
376
|
declare function wrapReadableStream<T, TMapped = T>(stream: ReadableStream<T>, { runWith, mapResult, mapError, onError, onFinish }: WrapReadableStreamOptions<T, TMapped>): NoInfer<ReadableStream<TMapped>>;
|
|
286
377
|
declare function traceReadableStream<T>(options: StartSpanOptions | string, stream: ReadableStream<T>): ReadableStream<T>;
|
|
287
378
|
/**
|
|
288
|
-
* Converts a
|
|
379
|
+
* Converts a {@link ReadableStream} into an {@link AsyncIteratorClass}.
|
|
380
|
+
*
|
|
381
|
+
* @see {@link https://orpc.dev/docs/integrations/ai-sdk | AI SDK Integration}
|
|
289
382
|
*/
|
|
290
|
-
declare function
|
|
383
|
+
declare function streamToAsyncIteratorObject<T>(stream: ReadableStream<T>, { signal }?: {
|
|
291
384
|
signal?: undefined | AbortSignal;
|
|
292
385
|
}): AsyncIteratorClass<T>;
|
|
293
386
|
/**
|
|
@@ -297,10 +390,12 @@ declare function asyncIteratorToStream<T>(iterator: AsyncIterator<T>): ReadableS
|
|
|
297
390
|
/**
|
|
298
391
|
* Converts an `AsyncIterator` into a `ReadableStream`, ensuring that
|
|
299
392
|
* all emitted object values are *unproxied* before enqueuing.
|
|
393
|
+
*
|
|
394
|
+
* @see {@link https://orpc.dev/docs/integrations/ai-sdk | AI SDK Integration}
|
|
300
395
|
*/
|
|
301
396
|
declare function asyncIteratorToUnproxiedDataStream<T>(iterator: AsyncIterator<T>): ReadableStream<T>;
|
|
302
397
|
|
|
303
398
|
declare function tryDecodeURIComponent(value: string): string;
|
|
304
399
|
|
|
305
|
-
export { AsyncIdQueue, NullProtoObj, ORPC_NAME, allAbortSignal, asyncIteratorToStream, asyncIteratorToUnproxiedDataStream, bindMethods, clone, compareSequentialIds, defer, findDeepMatches, get, getConstructor, getOpenTelemetryConfig, intercept, isAbortError, isDeepEqual, isPlainObject, isPropertyKey, loadBytes, matchesHttpPath, matchesHttpPathPrefix, mergeHttpPath, normalizeHttpPath, omit, onError, onFinish, onStart, onSuccess, once, override, pathToHttpPath, promiseWithResolvers, recordSpanError, replicateAsyncIterator, replicateReadableStream, resolveMaybeOptionalOptions, runInSpanContext, runWithSignal, runWithSpan, set, setOpenTelemetryConfig, setSpanAttributeIfDefined, sortPlugins, splitInHalf, startSpan,
|
|
306
|
-
export type { AnyFunction, AsyncIdQueueCloseOptions, InterceptableOptions, Interceptor, InterceptorOptions, IntersectPick, MaybeOptionalOptions, OnFinishState, OpenTelemetryConfig, OrderablePlugin, PromiseWithError, Public, ReadableStreamReadResult, Registry, RunWithSpanOptions, Segment, StartSpanOptions, ThrowableError, Value, WrapAsyncIteratorOptions, WrapReadableStreamOptions };
|
|
400
|
+
export { AsyncIdQueue, NullProtoObj, ORPC_NAME, allAbortSignal, anyAbortSignal, asyncIteratorToStream, asyncIteratorToUnproxiedDataStream, bindMethods, clone, compareSequentialIds, consumeAsyncIterator, defer, findDeepMatches, get, getConstructor, getConstructors, getOpenTelemetryConfig, intercept, isAbortError, isCompressibleContentType, isDeepEqual, isNoTransformCacheControl, isPlainObject, isPropertyKey, loadBytes, matchesHttpPath, matchesHttpPathPrefix, mergeHttpPath, mergeTwoLevels, normalizeHttpPath, omit, onAsyncIteratorObjectError, onError, onFinish, onReadableStreamError, onStart, onSuccess, once, override, parseAcceptEncodingQualities, pathToHttpPath, promiseWithResolvers, recordSpanError, replicateAsyncIterator, replicateReadableStream, resolveMaybeOptionalOptions, runInSpanContext, runWithSignal, runWithSpan, set, setOpenTelemetryConfig, setSpanAttributeIfDefined, sortPlugins, splitInHalf, startSpan, streamToAsyncIteratorObject, toOtelException, toSpanAttributeValue, toStringOrBytes, traceAsyncIterator, traceReadableStream, tryDecodeURIComponent, tryOrUndefined, value, varyByAcceptEncoding, wrapAsyncIterator, wrapReadableStream };
|
|
401
|
+
export type { AnyFunction, AsyncIdQueueCloseOptions, ConsumeAsyncIteratorOptions, InterceptableOptions, Interceptor, InterceptorOptions, IntersectPick, MaybeOptionalOptions, OnFinishState, OpenTelemetryConfig, OrderablePlugin, PromiseWithError, Public, ReadableStreamReadResult, Registry, RunWithSpanOptions, Segment, StartSpanOptions, ThrowableError, Value, WrapAsyncIteratorOptions, WrapReadableStreamOptions };
|