@orpc/shared 0.0.0-next.7b151dd → 0.0.0-next.7b2677a
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 +2 -1
- package/dist/index.d.mts +16 -6
- package/dist/index.d.ts +16 -6
- package/dist/index.mjs +85 -45
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
- **📘 First-Class OpenAPI**: Built-in support that fully adheres to the OpenAPI standard.
|
|
32
32
|
- **📝 Contract-First Development**: Optionally define your API contract before implementation.
|
|
33
33
|
- **🔍 First-Class OpenTelemetry**: Seamlessly integrate with OpenTelemetry for observability.
|
|
34
|
-
- **⚙️ Framework Integrations**: Seamlessly integrate with TanStack Query (React, Vue, Solid, Svelte, Angular), Pinia Colada, and more.
|
|
34
|
+
- **⚙️ Framework Integrations**: Seamlessly integrate with TanStack Query (React, Vue, Solid, Svelte, Angular), SWR, Pinia Colada, and more.
|
|
35
35
|
- **🚀 Server Actions**: Fully compatible with React Server Actions on Next.js, TanStack Start, and other platforms.
|
|
36
36
|
- **🔠 Standard Schema Support**: Works out of the box with Zod, Valibot, ArkType, and other schema validators.
|
|
37
37
|
- **🗃️ Native Types**: Supports native types like Date, File, Blob, BigInt, URL, and more.
|
|
@@ -54,6 +54,7 @@ You can find the full documentation [here](https://orpc.unnoq.com).
|
|
|
54
54
|
- [@orpc/nest](https://www.npmjs.com/package/@orpc/nest): Deeply integrate oRPC with [NestJS](https://nestjs.com/).
|
|
55
55
|
- [@orpc/react](https://www.npmjs.com/package/@orpc/react): Utilities for integrating oRPC with React and React Server Actions.
|
|
56
56
|
- [@orpc/tanstack-query](https://www.npmjs.com/package/@orpc/tanstack-query): [TanStack Query](https://tanstack.com/query/latest) integration.
|
|
57
|
+
- [@orpc/experimental-react-swr](https://www.npmjs.com/package/@orpc/experimental-react-swr): [SWR](https://swr.vercel.app/) integration.
|
|
57
58
|
- [@orpc/vue-colada](https://www.npmjs.com/package/@orpc/vue-colada): Integration with [Pinia Colada](https://pinia-colada.esm.dev/).
|
|
58
59
|
- [@orpc/hey-api](https://www.npmjs.com/package/@orpc/hey-api): [Hey API](https://heyapi.dev/) integration.
|
|
59
60
|
- [@orpc/zod](https://www.npmjs.com/package/@orpc/zod): More schemas that [Zod](https://zod.dev/) doesn't support yet.
|
package/dist/index.d.mts
CHANGED
|
@@ -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.7b2677a";
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* Error thrown when an operation is aborted.
|
|
@@ -60,7 +60,7 @@ interface EventPublisherSubscribeIteratorOptions extends EventPublisherOptions {
|
|
|
60
60
|
/**
|
|
61
61
|
* Aborts the async iterator. Throws if aborted before or during pulling.
|
|
62
62
|
*/
|
|
63
|
-
signal?: AbortSignal;
|
|
63
|
+
signal?: AbortSignal | undefined;
|
|
64
64
|
}
|
|
65
65
|
declare class EventPublisher<T extends Record<PropertyKey, any>> {
|
|
66
66
|
#private;
|
|
@@ -121,6 +121,7 @@ interface Registry {
|
|
|
121
121
|
type ThrowableError = Registry extends {
|
|
122
122
|
throwableError: infer T;
|
|
123
123
|
} ? T : Error;
|
|
124
|
+
type InferAsyncIterableYield<T> = T extends AsyncIterable<infer U> ? U : never;
|
|
124
125
|
|
|
125
126
|
type InterceptableOptions = Record<string, any>;
|
|
126
127
|
type InterceptorOptions<TOptions extends InterceptableOptions, TResult> = Omit<TOptions, 'next'> & {
|
|
@@ -277,15 +278,24 @@ declare const NullProtoObj: ({
|
|
|
277
278
|
new <T extends Record<PropertyKey, unknown>>(): T;
|
|
278
279
|
});
|
|
279
280
|
|
|
281
|
+
/**
|
|
282
|
+
* Prevents objects from being awaitable by intercepting the `then` method
|
|
283
|
+
* when called by the native await mechanism. This is useful for preventing
|
|
284
|
+
* accidental awaiting of objects that aren't meant to be promises.
|
|
285
|
+
*/
|
|
286
|
+
declare function preventNativeAwait<T extends object>(target: T): T;
|
|
287
|
+
|
|
280
288
|
interface AsyncIdQueueCloseOptions {
|
|
281
289
|
id?: string;
|
|
282
290
|
reason?: unknown;
|
|
283
291
|
}
|
|
284
292
|
declare class AsyncIdQueue<T> {
|
|
285
293
|
private readonly openIds;
|
|
286
|
-
private readonly
|
|
287
|
-
private readonly
|
|
294
|
+
private readonly queues;
|
|
295
|
+
private readonly waiters;
|
|
288
296
|
get length(): number;
|
|
297
|
+
get waiterIds(): string[];
|
|
298
|
+
hasBufferedItems(id: string): boolean;
|
|
289
299
|
open(id: string): void;
|
|
290
300
|
isOpen(id: string): boolean;
|
|
291
301
|
push(id: string, item: T): void;
|
|
@@ -302,5 +312,5 @@ declare function tryDecodeURIComponent(value: string): string;
|
|
|
302
312
|
type Value<T, TArgs extends any[] = []> = T | ((...args: TArgs) => T);
|
|
303
313
|
declare function value<T, TArgs extends any[]>(value: Value<T, TArgs>, ...args: NoInfer<TArgs>): T extends Value<infer U, any> ? U : never;
|
|
304
314
|
|
|
305
|
-
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, readAsBuffer, replicateAsyncIterator, resolveMaybeOptionalOptions, runInSpanContext, runWithSpan, sequential, setGlobalOtelConfig, setSpanAttribute, setSpanError, splitInHalf, startSpan, streamToAsyncIteratorClass, stringifyJSON, toArray, toOtelException, toSpanAttributeValue, tryDecodeURIComponent, value };
|
|
306
|
-
export type { AnyFunction, AsyncIdQueueCloseOptions, AsyncIteratorClassCleanupFn, AsyncIteratorClassNextFn, AsyncIteratorWithSpanOptions, EventPublisherOptions, EventPublisherSubscribeIteratorOptions, InterceptableOptions, Interceptor, InterceptorOptions, IntersectPick, MaybeOptionalOptions, OmitChainMethodDeep, OnFinishState, OtelConfig, PromiseWithError, Registry, RunWithSpanOptions, Segment, SetOptional, SetSpanErrorOptions, ThrowableError, Value };
|
|
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 };
|
|
316
|
+
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
|
@@ -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.7b2677a";
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* Error thrown when an operation is aborted.
|
|
@@ -60,7 +60,7 @@ interface EventPublisherSubscribeIteratorOptions extends EventPublisherOptions {
|
|
|
60
60
|
/**
|
|
61
61
|
* Aborts the async iterator. Throws if aborted before or during pulling.
|
|
62
62
|
*/
|
|
63
|
-
signal?: AbortSignal;
|
|
63
|
+
signal?: AbortSignal | undefined;
|
|
64
64
|
}
|
|
65
65
|
declare class EventPublisher<T extends Record<PropertyKey, any>> {
|
|
66
66
|
#private;
|
|
@@ -121,6 +121,7 @@ interface Registry {
|
|
|
121
121
|
type ThrowableError = Registry extends {
|
|
122
122
|
throwableError: infer T;
|
|
123
123
|
} ? T : Error;
|
|
124
|
+
type InferAsyncIterableYield<T> = T extends AsyncIterable<infer U> ? U : never;
|
|
124
125
|
|
|
125
126
|
type InterceptableOptions = Record<string, any>;
|
|
126
127
|
type InterceptorOptions<TOptions extends InterceptableOptions, TResult> = Omit<TOptions, 'next'> & {
|
|
@@ -277,15 +278,24 @@ declare const NullProtoObj: ({
|
|
|
277
278
|
new <T extends Record<PropertyKey, unknown>>(): T;
|
|
278
279
|
});
|
|
279
280
|
|
|
281
|
+
/**
|
|
282
|
+
* Prevents objects from being awaitable by intercepting the `then` method
|
|
283
|
+
* when called by the native await mechanism. This is useful for preventing
|
|
284
|
+
* accidental awaiting of objects that aren't meant to be promises.
|
|
285
|
+
*/
|
|
286
|
+
declare function preventNativeAwait<T extends object>(target: T): T;
|
|
287
|
+
|
|
280
288
|
interface AsyncIdQueueCloseOptions {
|
|
281
289
|
id?: string;
|
|
282
290
|
reason?: unknown;
|
|
283
291
|
}
|
|
284
292
|
declare class AsyncIdQueue<T> {
|
|
285
293
|
private readonly openIds;
|
|
286
|
-
private readonly
|
|
287
|
-
private readonly
|
|
294
|
+
private readonly queues;
|
|
295
|
+
private readonly waiters;
|
|
288
296
|
get length(): number;
|
|
297
|
+
get waiterIds(): string[];
|
|
298
|
+
hasBufferedItems(id: string): boolean;
|
|
289
299
|
open(id: string): void;
|
|
290
300
|
isOpen(id: string): boolean;
|
|
291
301
|
push(id: string, item: T): void;
|
|
@@ -302,5 +312,5 @@ declare function tryDecodeURIComponent(value: string): string;
|
|
|
302
312
|
type Value<T, TArgs extends any[] = []> = T | ((...args: TArgs) => T);
|
|
303
313
|
declare function value<T, TArgs extends any[]>(value: Value<T, TArgs>, ...args: NoInfer<TArgs>): T extends Value<infer U, any> ? U : never;
|
|
304
314
|
|
|
305
|
-
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, readAsBuffer, replicateAsyncIterator, resolveMaybeOptionalOptions, runInSpanContext, runWithSpan, sequential, setGlobalOtelConfig, setSpanAttribute, setSpanError, splitInHalf, startSpan, streamToAsyncIteratorClass, stringifyJSON, toArray, toOtelException, toSpanAttributeValue, tryDecodeURIComponent, value };
|
|
306
|
-
export type { AnyFunction, AsyncIdQueueCloseOptions, AsyncIteratorClassCleanupFn, AsyncIteratorClassNextFn, AsyncIteratorWithSpanOptions, EventPublisherOptions, EventPublisherSubscribeIteratorOptions, InterceptableOptions, Interceptor, InterceptorOptions, IntersectPick, MaybeOptionalOptions, OmitChainMethodDeep, OnFinishState, OtelConfig, PromiseWithError, Registry, RunWithSpanOptions, Segment, SetOptional, SetSpanErrorOptions, ThrowableError, Value };
|
|
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 };
|
|
316
|
+
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
|
@@ -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.7b2677a";
|
|
25
25
|
|
|
26
26
|
class AbortError extends Error {
|
|
27
27
|
constructor(...rest) {
|
|
@@ -153,11 +153,17 @@ async function runInSpanContext(span, fn) {
|
|
|
153
153
|
|
|
154
154
|
class AsyncIdQueue {
|
|
155
155
|
openIds = /* @__PURE__ */ new Set();
|
|
156
|
-
|
|
157
|
-
|
|
156
|
+
queues = /* @__PURE__ */ new Map();
|
|
157
|
+
waiters = /* @__PURE__ */ new Map();
|
|
158
158
|
get length() {
|
|
159
159
|
return this.openIds.size;
|
|
160
160
|
}
|
|
161
|
+
get waiterIds() {
|
|
162
|
+
return Array.from(this.waiters.keys());
|
|
163
|
+
}
|
|
164
|
+
hasBufferedItems(id) {
|
|
165
|
+
return Boolean(this.queues.get(id)?.length);
|
|
166
|
+
}
|
|
161
167
|
open(id) {
|
|
162
168
|
this.openIds.add(id);
|
|
163
169
|
}
|
|
@@ -166,59 +172,59 @@ class AsyncIdQueue {
|
|
|
166
172
|
}
|
|
167
173
|
push(id, item) {
|
|
168
174
|
this.assertOpen(id);
|
|
169
|
-
const pending = this.
|
|
175
|
+
const pending = this.waiters.get(id);
|
|
170
176
|
if (pending?.length) {
|
|
171
177
|
pending.shift()[0](item);
|
|
172
178
|
if (pending.length === 0) {
|
|
173
|
-
this.
|
|
179
|
+
this.waiters.delete(id);
|
|
174
180
|
}
|
|
175
181
|
} else {
|
|
176
|
-
const items = this.
|
|
182
|
+
const items = this.queues.get(id);
|
|
177
183
|
if (items) {
|
|
178
184
|
items.push(item);
|
|
179
185
|
} else {
|
|
180
|
-
this.
|
|
186
|
+
this.queues.set(id, [item]);
|
|
181
187
|
}
|
|
182
188
|
}
|
|
183
189
|
}
|
|
184
190
|
async pull(id) {
|
|
185
191
|
this.assertOpen(id);
|
|
186
|
-
const items = this.
|
|
192
|
+
const items = this.queues.get(id);
|
|
187
193
|
if (items?.length) {
|
|
188
194
|
const item = items.shift();
|
|
189
195
|
if (items.length === 0) {
|
|
190
|
-
this.
|
|
196
|
+
this.queues.delete(id);
|
|
191
197
|
}
|
|
192
198
|
return item;
|
|
193
199
|
}
|
|
194
200
|
return new Promise((resolve, reject) => {
|
|
195
|
-
const waitingPulls = this.
|
|
201
|
+
const waitingPulls = this.waiters.get(id);
|
|
196
202
|
const pending = [resolve, reject];
|
|
197
203
|
if (waitingPulls) {
|
|
198
204
|
waitingPulls.push(pending);
|
|
199
205
|
} else {
|
|
200
|
-
this.
|
|
206
|
+
this.waiters.set(id, [pending]);
|
|
201
207
|
}
|
|
202
208
|
});
|
|
203
209
|
}
|
|
204
210
|
close({ id, reason } = {}) {
|
|
205
211
|
if (id === void 0) {
|
|
206
|
-
this.
|
|
212
|
+
this.waiters.forEach((pendingPulls, id2) => {
|
|
207
213
|
pendingPulls.forEach(([, reject]) => {
|
|
208
214
|
reject(reason ?? new Error(`[AsyncIdQueue] Queue[${id2}] was closed or aborted while waiting for pulling.`));
|
|
209
215
|
});
|
|
210
216
|
});
|
|
211
|
-
this.
|
|
217
|
+
this.waiters.clear();
|
|
212
218
|
this.openIds.clear();
|
|
213
|
-
this.
|
|
219
|
+
this.queues.clear();
|
|
214
220
|
return;
|
|
215
221
|
}
|
|
216
|
-
this.
|
|
222
|
+
this.waiters.get(id)?.forEach(([, reject]) => {
|
|
217
223
|
reject(reason ?? new Error(`[AsyncIdQueue] Queue[${id}] was closed or aborted while waiting for pulling.`));
|
|
218
224
|
});
|
|
219
|
-
this.
|
|
225
|
+
this.waiters.delete(id);
|
|
220
226
|
this.openIds.delete(id);
|
|
221
|
-
this.
|
|
227
|
+
this.queues.delete(id);
|
|
222
228
|
}
|
|
223
229
|
assertOpen(id) {
|
|
224
230
|
if (!this.isOpen(id)) {
|
|
@@ -298,49 +304,51 @@ class AsyncIteratorClass {
|
|
|
298
304
|
}
|
|
299
305
|
function replicateAsyncIterator(source, count) {
|
|
300
306
|
const queue = new AsyncIdQueue();
|
|
301
|
-
const
|
|
302
|
-
let
|
|
307
|
+
const ids = Array.from({ length: count }, (_, i) => i.toString());
|
|
308
|
+
let isSourceFinished = false;
|
|
303
309
|
const start = once(async () => {
|
|
304
310
|
try {
|
|
305
311
|
while (true) {
|
|
306
312
|
const item = await source.next();
|
|
307
|
-
|
|
308
|
-
if (queue.isOpen(id
|
|
309
|
-
queue.push(id
|
|
313
|
+
ids.forEach((id) => {
|
|
314
|
+
if (queue.isOpen(id)) {
|
|
315
|
+
queue.push(id, { next: item });
|
|
310
316
|
}
|
|
311
|
-
}
|
|
317
|
+
});
|
|
312
318
|
if (item.done) {
|
|
313
319
|
break;
|
|
314
320
|
}
|
|
315
321
|
}
|
|
316
|
-
} catch (
|
|
317
|
-
|
|
322
|
+
} catch (error) {
|
|
323
|
+
ids.forEach((id) => {
|
|
324
|
+
if (queue.isOpen(id)) {
|
|
325
|
+
queue.push(id, { error });
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
} finally {
|
|
329
|
+
isSourceFinished = true;
|
|
318
330
|
}
|
|
319
331
|
});
|
|
320
|
-
|
|
321
|
-
queue.open(id
|
|
322
|
-
|
|
323
|
-
() => {
|
|
332
|
+
const replicated = ids.map((id) => {
|
|
333
|
+
queue.open(id);
|
|
334
|
+
return new AsyncIteratorClass(
|
|
335
|
+
async () => {
|
|
324
336
|
start();
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
}
|
|
331
|
-
});
|
|
332
|
-
});
|
|
337
|
+
const item = await queue.pull(id);
|
|
338
|
+
if (item.next) {
|
|
339
|
+
return item.next;
|
|
340
|
+
}
|
|
341
|
+
throw item.error;
|
|
333
342
|
},
|
|
334
343
|
async (reason) => {
|
|
335
|
-
queue.close({ id
|
|
336
|
-
if (reason !== "next") {
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
}
|
|
344
|
+
queue.close({ id });
|
|
345
|
+
if (reason !== "next" && !queue.length && !isSourceFinished) {
|
|
346
|
+
isSourceFinished = true;
|
|
347
|
+
await source?.return?.();
|
|
340
348
|
}
|
|
341
349
|
}
|
|
342
|
-
)
|
|
343
|
-
}
|
|
350
|
+
);
|
|
351
|
+
});
|
|
344
352
|
return replicated;
|
|
345
353
|
}
|
|
346
354
|
function asyncIteratorWithSpan({ name, ...options }, iterator) {
|
|
@@ -581,6 +589,38 @@ const NullProtoObj = /* @__PURE__ */ (() => {
|
|
|
581
589
|
return e;
|
|
582
590
|
})();
|
|
583
591
|
|
|
592
|
+
function preventNativeAwait(target) {
|
|
593
|
+
return new Proxy(target, {
|
|
594
|
+
get(target2, prop, receiver) {
|
|
595
|
+
const value = Reflect.get(target2, prop, receiver);
|
|
596
|
+
if (prop !== "then" || typeof value !== "function") {
|
|
597
|
+
return value;
|
|
598
|
+
}
|
|
599
|
+
return new Proxy(value, {
|
|
600
|
+
apply(targetFn, thisArg, args) {
|
|
601
|
+
if (args.length !== 2 || args.some((arg) => !isNativeFunction(arg))) {
|
|
602
|
+
return Reflect.apply(targetFn, thisArg, args);
|
|
603
|
+
}
|
|
604
|
+
let shouldOmit = true;
|
|
605
|
+
args[0].call(thisArg, preventNativeAwait(new Proxy(target2, {
|
|
606
|
+
get: (target3, prop2, receiver2) => {
|
|
607
|
+
if (shouldOmit && prop2 === "then") {
|
|
608
|
+
shouldOmit = false;
|
|
609
|
+
return void 0;
|
|
610
|
+
}
|
|
611
|
+
return Reflect.get(target3, prop2, receiver2);
|
|
612
|
+
}
|
|
613
|
+
})));
|
|
614
|
+
}
|
|
615
|
+
});
|
|
616
|
+
}
|
|
617
|
+
});
|
|
618
|
+
}
|
|
619
|
+
const NATIVE_FUNCTION_REGEX = /^\s*function\s*\(\)\s*\{\s*\[native code\]\s*\}\s*$/;
|
|
620
|
+
function isNativeFunction(fn) {
|
|
621
|
+
return typeof fn === "function" && NATIVE_FUNCTION_REGEX.test(fn.toString());
|
|
622
|
+
}
|
|
623
|
+
|
|
584
624
|
function streamToAsyncIteratorClass(stream) {
|
|
585
625
|
const reader = stream.getReader();
|
|
586
626
|
return new AsyncIteratorClass(
|
|
@@ -623,4 +663,4 @@ function value(value2, ...args) {
|
|
|
623
663
|
return value2;
|
|
624
664
|
}
|
|
625
665
|
|
|
626
|
-
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, readAsBuffer, replicateAsyncIterator, resolveMaybeOptionalOptions, runInSpanContext, runWithSpan, sequential, setGlobalOtelConfig, setSpanAttribute, setSpanError, splitInHalf, startSpan, streamToAsyncIteratorClass, stringifyJSON, toArray, toOtelException, toSpanAttributeValue, tryDecodeURIComponent, value };
|
|
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 };
|
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.7b2677a",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://orpc.unnoq.com",
|
|
7
7
|
"repository": {
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"@opentelemetry/api": "^1.9.0",
|
|
40
40
|
"arktype": "2.1.20",
|
|
41
41
|
"valibot": "^1.1.0",
|
|
42
|
-
"zod": "^4.
|
|
42
|
+
"zod": "^4.1.3"
|
|
43
43
|
},
|
|
44
44
|
"scripts": {
|
|
45
45
|
"build": "unbuild",
|