@orpc/shared 0.0.0-next.0371cb5 → 0.0.0-next.03cefb3
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/dist/index.d.mts +25 -6
- package/dist/index.d.ts +25 -6
- package/dist/index.mjs +40 -20
- package/package.json +4 -4
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Promisable } from 'type-fest';
|
|
2
2
|
export { IsEqual, IsNever, JsonValue, PartialDeep, Promisable } from 'type-fest';
|
|
3
3
|
import { Tracer, TraceAPI, ContextAPI, PropagationAPI, SpanOptions, Context, Span, AttributeValue, Exception } from '@opentelemetry/api';
|
|
4
|
-
export { group, guard, mapEntries, mapValues, omit } from 'radash';
|
|
4
|
+
export { group, guard, mapEntries, mapValues, omit, retry, sleep } from 'radash';
|
|
5
5
|
|
|
6
6
|
type MaybeOptionalOptions<TOptions> = Record<never, never> extends TOptions ? [options?: TOptions] : [options: TOptions];
|
|
7
7
|
declare function resolveMaybeOptionalOptions<T>(rest: MaybeOptionalOptions<T>): T;
|
|
@@ -30,7 +30,7 @@ type OmitChainMethodDeep<T extends object, K extends keyof any> = {
|
|
|
30
30
|
|
|
31
31
|
declare const ORPC_NAME = "orpc";
|
|
32
32
|
declare const ORPC_SHARED_PACKAGE_NAME = "@orpc/shared";
|
|
33
|
-
declare const ORPC_SHARED_PACKAGE_VERSION = "0.0.0-next.
|
|
33
|
+
declare const ORPC_SHARED_PACKAGE_VERSION = "0.0.0-next.03cefb3";
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* Error thrown when an operation is aborted.
|
|
@@ -263,6 +263,11 @@ declare function findDeepMatches(check: (value: unknown) => boolean, payload: un
|
|
|
263
263
|
maps: Segment[][];
|
|
264
264
|
values: unknown[];
|
|
265
265
|
};
|
|
266
|
+
/**
|
|
267
|
+
* Get constructor of the value
|
|
268
|
+
*
|
|
269
|
+
*/
|
|
270
|
+
declare function getConstructor(value: unknown): Function | null | undefined;
|
|
266
271
|
/**
|
|
267
272
|
* Check if the value is an object even it created by `Object.create(null)` or more tricky way.
|
|
268
273
|
*/
|
|
@@ -278,12 +283,29 @@ declare const NullProtoObj: ({
|
|
|
278
283
|
new <T extends Record<PropertyKey, unknown>>(): T;
|
|
279
284
|
});
|
|
280
285
|
|
|
286
|
+
type Value<T, TArgs extends any[] = []> = T | ((...args: TArgs) => T);
|
|
287
|
+
declare function value<T, TArgs extends any[]>(value: Value<T, TArgs>, ...args: NoInfer<TArgs>): T extends Value<infer U, any> ? U : never;
|
|
288
|
+
/**
|
|
289
|
+
* Returns the value if it is defined, otherwise returns the fallback
|
|
290
|
+
*/
|
|
291
|
+
declare function fallback<T>(value: T | undefined, fallback: T): T;
|
|
292
|
+
|
|
281
293
|
/**
|
|
282
294
|
* Prevents objects from being awaitable by intercepting the `then` method
|
|
283
295
|
* when called by the native await mechanism. This is useful for preventing
|
|
284
296
|
* accidental awaiting of objects that aren't meant to be promises.
|
|
285
297
|
*/
|
|
286
298
|
declare function preventNativeAwait<T extends object>(target: T): T;
|
|
299
|
+
/**
|
|
300
|
+
* Create a proxy that overlays one object (`overlay`) on top of another (`target`).
|
|
301
|
+
*
|
|
302
|
+
* - Properties from `overlay` take precedence.
|
|
303
|
+
* - Properties not in `overlay` fall back to `target`.
|
|
304
|
+
* - Methods from either object are bound to `overlay` so `this` is consistent.
|
|
305
|
+
*
|
|
306
|
+
* Useful when you want to override or extend behavior without fully copying/merging objects.
|
|
307
|
+
*/
|
|
308
|
+
declare function overlayProxy<T extends object, U extends object>(target: Value<T>, partial: U): U & Omit<T, keyof U>;
|
|
287
309
|
|
|
288
310
|
interface AsyncIdQueueCloseOptions {
|
|
289
311
|
id?: string;
|
|
@@ -309,8 +331,5 @@ declare function asyncIteratorToStream<T>(iterator: AsyncIterator<T>): ReadableS
|
|
|
309
331
|
|
|
310
332
|
declare function tryDecodeURIComponent(value: string): string;
|
|
311
333
|
|
|
312
|
-
|
|
313
|
-
declare function value<T, TArgs extends any[]>(value: Value<T, TArgs>, ...args: NoInfer<TArgs>): T extends Value<infer U, any> ? U : never;
|
|
314
|
-
|
|
315
|
-
export { AbortError, AsyncIdQueue, AsyncIteratorClass, EventPublisher, NullProtoObj, ORPC_NAME, ORPC_SHARED_PACKAGE_NAME, ORPC_SHARED_PACKAGE_VERSION, SequentialIdGenerator, asyncIteratorToStream, asyncIteratorWithSpan, clone, defer, findDeepMatches, get, getGlobalOtelConfig, intercept, isAsyncIteratorObject, isObject, isPropertyKey, isTypescriptObject, onError, onFinish, onStart, onSuccess, once, parseEmptyableJSON, preventNativeAwait, readAsBuffer, replicateAsyncIterator, resolveMaybeOptionalOptions, runInSpanContext, runWithSpan, sequential, setGlobalOtelConfig, setSpanAttribute, setSpanError, splitInHalf, startSpan, streamToAsyncIteratorClass, stringifyJSON, toArray, toOtelException, toSpanAttributeValue, tryDecodeURIComponent, value };
|
|
334
|
+
export { AbortError, AsyncIdQueue, AsyncIteratorClass, EventPublisher, NullProtoObj, ORPC_NAME, ORPC_SHARED_PACKAGE_NAME, ORPC_SHARED_PACKAGE_VERSION, SequentialIdGenerator, asyncIteratorToStream, asyncIteratorWithSpan, clone, defer, fallback, findDeepMatches, get, getConstructor, getGlobalOtelConfig, intercept, isAsyncIteratorObject, isObject, isPropertyKey, isTypescriptObject, onError, onFinish, onStart, onSuccess, once, overlayProxy, parseEmptyableJSON, preventNativeAwait, readAsBuffer, replicateAsyncIterator, resolveMaybeOptionalOptions, runInSpanContext, runWithSpan, sequential, setGlobalOtelConfig, setSpanAttribute, setSpanError, splitInHalf, startSpan, streamToAsyncIteratorClass, stringifyJSON, toArray, toOtelException, toSpanAttributeValue, tryDecodeURIComponent, value };
|
|
316
335
|
export type { AnyFunction, AsyncIdQueueCloseOptions, AsyncIteratorClassCleanupFn, AsyncIteratorClassNextFn, AsyncIteratorWithSpanOptions, EventPublisherOptions, EventPublisherSubscribeIteratorOptions, InferAsyncIterableYield, InterceptableOptions, Interceptor, InterceptorOptions, IntersectPick, MaybeOptionalOptions, OmitChainMethodDeep, OnFinishState, OtelConfig, PromiseWithError, Registry, RunWithSpanOptions, Segment, SetOptional, SetSpanErrorOptions, ThrowableError, Value };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Promisable } from 'type-fest';
|
|
2
2
|
export { IsEqual, IsNever, JsonValue, PartialDeep, Promisable } from 'type-fest';
|
|
3
3
|
import { Tracer, TraceAPI, ContextAPI, PropagationAPI, SpanOptions, Context, Span, AttributeValue, Exception } from '@opentelemetry/api';
|
|
4
|
-
export { group, guard, mapEntries, mapValues, omit } from 'radash';
|
|
4
|
+
export { group, guard, mapEntries, mapValues, omit, retry, sleep } from 'radash';
|
|
5
5
|
|
|
6
6
|
type MaybeOptionalOptions<TOptions> = Record<never, never> extends TOptions ? [options?: TOptions] : [options: TOptions];
|
|
7
7
|
declare function resolveMaybeOptionalOptions<T>(rest: MaybeOptionalOptions<T>): T;
|
|
@@ -30,7 +30,7 @@ type OmitChainMethodDeep<T extends object, K extends keyof any> = {
|
|
|
30
30
|
|
|
31
31
|
declare const ORPC_NAME = "orpc";
|
|
32
32
|
declare const ORPC_SHARED_PACKAGE_NAME = "@orpc/shared";
|
|
33
|
-
declare const ORPC_SHARED_PACKAGE_VERSION = "0.0.0-next.
|
|
33
|
+
declare const ORPC_SHARED_PACKAGE_VERSION = "0.0.0-next.03cefb3";
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* Error thrown when an operation is aborted.
|
|
@@ -263,6 +263,11 @@ declare function findDeepMatches(check: (value: unknown) => boolean, payload: un
|
|
|
263
263
|
maps: Segment[][];
|
|
264
264
|
values: unknown[];
|
|
265
265
|
};
|
|
266
|
+
/**
|
|
267
|
+
* Get constructor of the value
|
|
268
|
+
*
|
|
269
|
+
*/
|
|
270
|
+
declare function getConstructor(value: unknown): Function | null | undefined;
|
|
266
271
|
/**
|
|
267
272
|
* Check if the value is an object even it created by `Object.create(null)` or more tricky way.
|
|
268
273
|
*/
|
|
@@ -278,12 +283,29 @@ declare const NullProtoObj: ({
|
|
|
278
283
|
new <T extends Record<PropertyKey, unknown>>(): T;
|
|
279
284
|
});
|
|
280
285
|
|
|
286
|
+
type Value<T, TArgs extends any[] = []> = T | ((...args: TArgs) => T);
|
|
287
|
+
declare function value<T, TArgs extends any[]>(value: Value<T, TArgs>, ...args: NoInfer<TArgs>): T extends Value<infer U, any> ? U : never;
|
|
288
|
+
/**
|
|
289
|
+
* Returns the value if it is defined, otherwise returns the fallback
|
|
290
|
+
*/
|
|
291
|
+
declare function fallback<T>(value: T | undefined, fallback: T): T;
|
|
292
|
+
|
|
281
293
|
/**
|
|
282
294
|
* Prevents objects from being awaitable by intercepting the `then` method
|
|
283
295
|
* when called by the native await mechanism. This is useful for preventing
|
|
284
296
|
* accidental awaiting of objects that aren't meant to be promises.
|
|
285
297
|
*/
|
|
286
298
|
declare function preventNativeAwait<T extends object>(target: T): T;
|
|
299
|
+
/**
|
|
300
|
+
* Create a proxy that overlays one object (`overlay`) on top of another (`target`).
|
|
301
|
+
*
|
|
302
|
+
* - Properties from `overlay` take precedence.
|
|
303
|
+
* - Properties not in `overlay` fall back to `target`.
|
|
304
|
+
* - Methods from either object are bound to `overlay` so `this` is consistent.
|
|
305
|
+
*
|
|
306
|
+
* Useful when you want to override or extend behavior without fully copying/merging objects.
|
|
307
|
+
*/
|
|
308
|
+
declare function overlayProxy<T extends object, U extends object>(target: Value<T>, partial: U): U & Omit<T, keyof U>;
|
|
287
309
|
|
|
288
310
|
interface AsyncIdQueueCloseOptions {
|
|
289
311
|
id?: string;
|
|
@@ -309,8 +331,5 @@ declare function asyncIteratorToStream<T>(iterator: AsyncIterator<T>): ReadableS
|
|
|
309
331
|
|
|
310
332
|
declare function tryDecodeURIComponent(value: string): string;
|
|
311
333
|
|
|
312
|
-
|
|
313
|
-
declare function value<T, TArgs extends any[]>(value: Value<T, TArgs>, ...args: NoInfer<TArgs>): T extends Value<infer U, any> ? U : never;
|
|
314
|
-
|
|
315
|
-
export { AbortError, AsyncIdQueue, AsyncIteratorClass, EventPublisher, NullProtoObj, ORPC_NAME, ORPC_SHARED_PACKAGE_NAME, ORPC_SHARED_PACKAGE_VERSION, SequentialIdGenerator, asyncIteratorToStream, asyncIteratorWithSpan, clone, defer, findDeepMatches, get, getGlobalOtelConfig, intercept, isAsyncIteratorObject, isObject, isPropertyKey, isTypescriptObject, onError, onFinish, onStart, onSuccess, once, parseEmptyableJSON, preventNativeAwait, readAsBuffer, replicateAsyncIterator, resolveMaybeOptionalOptions, runInSpanContext, runWithSpan, sequential, setGlobalOtelConfig, setSpanAttribute, setSpanError, splitInHalf, startSpan, streamToAsyncIteratorClass, stringifyJSON, toArray, toOtelException, toSpanAttributeValue, tryDecodeURIComponent, value };
|
|
334
|
+
export { AbortError, AsyncIdQueue, AsyncIteratorClass, EventPublisher, NullProtoObj, ORPC_NAME, ORPC_SHARED_PACKAGE_NAME, ORPC_SHARED_PACKAGE_VERSION, SequentialIdGenerator, asyncIteratorToStream, asyncIteratorWithSpan, clone, defer, fallback, findDeepMatches, get, getConstructor, getGlobalOtelConfig, intercept, isAsyncIteratorObject, isObject, isPropertyKey, isTypescriptObject, onError, onFinish, onStart, onSuccess, once, overlayProxy, parseEmptyableJSON, preventNativeAwait, readAsBuffer, replicateAsyncIterator, resolveMaybeOptionalOptions, runInSpanContext, runWithSpan, sequential, setGlobalOtelConfig, setSpanAttribute, setSpanError, splitInHalf, startSpan, streamToAsyncIteratorClass, stringifyJSON, toArray, toOtelException, toSpanAttributeValue, tryDecodeURIComponent, value };
|
|
316
335
|
export type { AnyFunction, AsyncIdQueueCloseOptions, AsyncIteratorClassCleanupFn, AsyncIteratorClassNextFn, AsyncIteratorWithSpanOptions, EventPublisherOptions, EventPublisherSubscribeIteratorOptions, InferAsyncIterableYield, InterceptableOptions, Interceptor, InterceptorOptions, IntersectPick, MaybeOptionalOptions, OmitChainMethodDeep, OnFinishState, OtelConfig, PromiseWithError, Registry, RunWithSpanOptions, Segment, SetOptional, SetSpanErrorOptions, ThrowableError, Value };
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { group, guard, mapEntries, mapValues, omit } from 'radash';
|
|
1
|
+
export { group, guard, mapEntries, mapValues, omit, retry, sleep } from 'radash';
|
|
2
2
|
|
|
3
3
|
function resolveMaybeOptionalOptions(rest) {
|
|
4
4
|
return rest[0] ?? {};
|
|
@@ -21,7 +21,7 @@ function readAsBuffer(source) {
|
|
|
21
21
|
|
|
22
22
|
const ORPC_NAME = "orpc";
|
|
23
23
|
const ORPC_SHARED_PACKAGE_NAME = "@orpc/shared";
|
|
24
|
-
const ORPC_SHARED_PACKAGE_VERSION = "0.0.0-next.
|
|
24
|
+
const ORPC_SHARED_PACKAGE_VERSION = "0.0.0-next.03cefb3";
|
|
25
25
|
|
|
26
26
|
class AbortError extends Error {
|
|
27
27
|
constructor(...rest) {
|
|
@@ -210,18 +210,16 @@ class AsyncIdQueue {
|
|
|
210
210
|
close({ id, reason } = {}) {
|
|
211
211
|
if (id === void 0) {
|
|
212
212
|
this.waiters.forEach((pendingPulls, id2) => {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
});
|
|
213
|
+
const error2 = reason ?? new AbortError(`[AsyncIdQueue] Queue[${id2}] was closed or aborted while waiting for pulling.`);
|
|
214
|
+
pendingPulls.forEach(([, reject]) => reject(error2));
|
|
216
215
|
});
|
|
217
216
|
this.waiters.clear();
|
|
218
217
|
this.openIds.clear();
|
|
219
218
|
this.queues.clear();
|
|
220
219
|
return;
|
|
221
220
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
});
|
|
221
|
+
const error = reason ?? new AbortError(`[AsyncIdQueue] Queue[${id}] was closed or aborted while waiting for pulling.`);
|
|
222
|
+
this.waiters.get(id)?.forEach(([, reject]) => reject(error));
|
|
225
223
|
this.waiters.delete(id);
|
|
226
224
|
this.openIds.delete(id);
|
|
227
225
|
this.queues.delete(id);
|
|
@@ -544,6 +542,12 @@ function findDeepMatches(check, payload, segments = [], maps = [], values = [])
|
|
|
544
542
|
}
|
|
545
543
|
return { maps, values };
|
|
546
544
|
}
|
|
545
|
+
function getConstructor(value) {
|
|
546
|
+
if (!isTypescriptObject(value)) {
|
|
547
|
+
return null;
|
|
548
|
+
}
|
|
549
|
+
return Object.getPrototypeOf(value)?.constructor;
|
|
550
|
+
}
|
|
547
551
|
function isObject(value) {
|
|
548
552
|
if (!value || typeof value !== "object") {
|
|
549
553
|
return false;
|
|
@@ -589,14 +593,24 @@ const NullProtoObj = /* @__PURE__ */ (() => {
|
|
|
589
593
|
return e;
|
|
590
594
|
})();
|
|
591
595
|
|
|
596
|
+
function value(value2, ...args) {
|
|
597
|
+
if (typeof value2 === "function") {
|
|
598
|
+
return value2(...args);
|
|
599
|
+
}
|
|
600
|
+
return value2;
|
|
601
|
+
}
|
|
602
|
+
function fallback(value2, fallback2) {
|
|
603
|
+
return value2 === void 0 ? fallback2 : value2;
|
|
604
|
+
}
|
|
605
|
+
|
|
592
606
|
function preventNativeAwait(target) {
|
|
593
607
|
return new Proxy(target, {
|
|
594
608
|
get(target2, prop, receiver) {
|
|
595
|
-
const
|
|
596
|
-
if (prop !== "then" || typeof
|
|
597
|
-
return
|
|
609
|
+
const value2 = Reflect.get(target2, prop, receiver);
|
|
610
|
+
if (prop !== "then" || typeof value2 !== "function") {
|
|
611
|
+
return value2;
|
|
598
612
|
}
|
|
599
|
-
return new Proxy(
|
|
613
|
+
return new Proxy(value2, {
|
|
600
614
|
apply(targetFn, thisArg, args) {
|
|
601
615
|
if (args.length !== 2 || args.some((arg) => !isNativeFunction(arg))) {
|
|
602
616
|
return Reflect.apply(targetFn, thisArg, args);
|
|
@@ -620,6 +634,19 @@ const NATIVE_FUNCTION_REGEX = /^\s*function\s*\(\)\s*\{\s*\[native code\]\s*\}\s
|
|
|
620
634
|
function isNativeFunction(fn) {
|
|
621
635
|
return typeof fn === "function" && NATIVE_FUNCTION_REGEX.test(fn.toString());
|
|
622
636
|
}
|
|
637
|
+
function overlayProxy(target, partial) {
|
|
638
|
+
const proxy = new Proxy(typeof target === "function" ? partial : target, {
|
|
639
|
+
get(_, prop) {
|
|
640
|
+
const targetValue = prop in partial ? partial : value(target);
|
|
641
|
+
const v = Reflect.get(targetValue, prop);
|
|
642
|
+
return typeof v === "function" ? v.bind(targetValue) : v;
|
|
643
|
+
},
|
|
644
|
+
has(_, prop) {
|
|
645
|
+
return Reflect.has(partial, prop) || Reflect.has(value(target), prop);
|
|
646
|
+
}
|
|
647
|
+
});
|
|
648
|
+
return proxy;
|
|
649
|
+
}
|
|
623
650
|
|
|
624
651
|
function streamToAsyncIteratorClass(stream) {
|
|
625
652
|
const reader = stream.getReader();
|
|
@@ -656,11 +683,4 @@ function tryDecodeURIComponent(value) {
|
|
|
656
683
|
}
|
|
657
684
|
}
|
|
658
685
|
|
|
659
|
-
|
|
660
|
-
if (typeof value2 === "function") {
|
|
661
|
-
return value2(...args);
|
|
662
|
-
}
|
|
663
|
-
return value2;
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
export { AbortError, AsyncIdQueue, AsyncIteratorClass, EventPublisher, NullProtoObj, ORPC_NAME, ORPC_SHARED_PACKAGE_NAME, ORPC_SHARED_PACKAGE_VERSION, SequentialIdGenerator, asyncIteratorToStream, asyncIteratorWithSpan, clone, defer, findDeepMatches, get, getGlobalOtelConfig, intercept, isAsyncIteratorObject, isObject, isPropertyKey, isTypescriptObject, onError, onFinish, onStart, onSuccess, once, parseEmptyableJSON, preventNativeAwait, readAsBuffer, replicateAsyncIterator, resolveMaybeOptionalOptions, runInSpanContext, runWithSpan, sequential, setGlobalOtelConfig, setSpanAttribute, setSpanError, splitInHalf, startSpan, streamToAsyncIteratorClass, stringifyJSON, toArray, toOtelException, toSpanAttributeValue, tryDecodeURIComponent, value };
|
|
686
|
+
export { AbortError, AsyncIdQueue, AsyncIteratorClass, EventPublisher, NullProtoObj, ORPC_NAME, ORPC_SHARED_PACKAGE_NAME, ORPC_SHARED_PACKAGE_VERSION, SequentialIdGenerator, asyncIteratorToStream, asyncIteratorWithSpan, clone, defer, fallback, findDeepMatches, get, getConstructor, getGlobalOtelConfig, intercept, isAsyncIteratorObject, isObject, isPropertyKey, isTypescriptObject, onError, onFinish, onStart, onSuccess, once, overlayProxy, parseEmptyableJSON, preventNativeAwait, readAsBuffer, replicateAsyncIterator, resolveMaybeOptionalOptions, runInSpanContext, runWithSpan, sequential, setGlobalOtelConfig, setSpanAttribute, setSpanError, splitInHalf, startSpan, streamToAsyncIteratorClass, stringifyJSON, toArray, toOtelException, toSpanAttributeValue, tryDecodeURIComponent, value };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orpc/shared",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.0-next.
|
|
4
|
+
"version": "0.0.0-next.03cefb3",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://orpc.unnoq.com",
|
|
7
7
|
"repository": {
|
|
@@ -33,13 +33,13 @@
|
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"radash": "^12.1.1",
|
|
36
|
-
"type-fest": "^
|
|
36
|
+
"type-fest": "^5.0.1"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@opentelemetry/api": "^1.9.0",
|
|
40
|
-
"arktype": "2.1.
|
|
40
|
+
"arktype": "2.1.22",
|
|
41
41
|
"valibot": "^1.1.0",
|
|
42
|
-
"zod": "^4.1.
|
|
42
|
+
"zod": "^4.1.11"
|
|
43
43
|
},
|
|
44
44
|
"scripts": {
|
|
45
45
|
"build": "unbuild",
|