@orpc/client 0.0.0-next.0ca4e14 → 0.0.0-next.0ceddfc
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/adapters/fetch/index.d.mts +2 -2
- package/dist/adapters/fetch/index.d.ts +2 -2
- package/dist/adapters/fetch/index.mjs +3 -3
- package/dist/adapters/message-port/index.d.mts +3 -3
- package/dist/adapters/message-port/index.d.ts +3 -3
- package/dist/adapters/message-port/index.mjs +2 -2
- package/dist/adapters/standard/index.d.mts +2 -2
- package/dist/adapters/standard/index.d.ts +2 -2
- package/dist/adapters/standard/index.mjs +2 -2
- package/dist/adapters/websocket/index.d.mts +3 -3
- package/dist/adapters/websocket/index.d.ts +3 -3
- package/dist/adapters/websocket/index.mjs +4 -3
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +3 -3
- package/dist/plugins/index.d.mts +1 -1
- package/dist/plugins/index.d.ts +1 -1
- package/dist/plugins/index.mjs +22 -11
- package/dist/shared/{client.CXXEPIbK.d.ts → client.BG98rYdO.d.ts} +0 -1
- package/dist/shared/{client.C4VxIexA.d.mts → client.Bwgm6dgk.d.mts} +0 -1
- package/dist/shared/{client.WCinBImJ.d.ts → client.C176log5.d.ts} +1 -1
- package/dist/shared/{client.DwfV9Oyl.mjs → client.DKmRtVO2.mjs} +50 -15
- package/dist/shared/{client.aTp4sII-.d.mts → client.Ycwr4Tuo.d.mts} +1 -1
- package/dist/shared/{client.DHOfWE0c.mjs → client.txdq_i5V.mjs} +24 -16
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
- **🔗 End-to-End Type Safety**: Ensure type-safe inputs, outputs, and errors from client to server.
|
|
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
|
+
- **🔍 First-Class OpenTelemetry**: Seamlessly integrate with OpenTelemetry for observability.
|
|
33
34
|
- **⚙️ Framework Integrations**: Seamlessly integrate with TanStack Query (React, Vue, Solid, Svelte, Angular), Pinia Colada, and more.
|
|
34
35
|
- **🚀 Server Actions**: Fully compatible with React Server Actions on Next.js, TanStack Start, and other platforms.
|
|
35
36
|
- **🔠 Standard Schema Support**: Works out of the box with Zod, Valibot, ArkType, and other schema validators.
|
|
@@ -38,7 +39,6 @@
|
|
|
38
39
|
- **📡 SSE & Streaming**: Enjoy full type-safe support for SSE and streaming.
|
|
39
40
|
- **🌍 Multi-Runtime Support**: Fast and lightweight on Cloudflare, Deno, Bun, Node.js, and beyond.
|
|
40
41
|
- **🔌 Extendability**: Easily extend functionality with plugins, middleware, and interceptors.
|
|
41
|
-
- **🛡️ Reliability**: Well-tested, TypeScript-based, production-ready, and MIT licensed.
|
|
42
42
|
|
|
43
43
|
## Documentation
|
|
44
44
|
|
|
@@ -50,6 +50,7 @@ You can find the full documentation [here](https://orpc.unnoq.com).
|
|
|
50
50
|
- [@orpc/server](https://www.npmjs.com/package/@orpc/server): Build your API or implement API contract.
|
|
51
51
|
- [@orpc/client](https://www.npmjs.com/package/@orpc/client): Consume your API on the client with type-safety.
|
|
52
52
|
- [@orpc/openapi](https://www.npmjs.com/package/@orpc/openapi): Generate OpenAPI specs and handle OpenAPI requests.
|
|
53
|
+
- [@orpc/otel](https://www.npmjs.com/package/@orpc/otel): [OpenTelemetry](https://opentelemetry.io/) integration for observability.
|
|
53
54
|
- [@orpc/nest](https://www.npmjs.com/package/@orpc/nest): Deeply integrate oRPC with [NestJS](https://nestjs.com/).
|
|
54
55
|
- [@orpc/react](https://www.npmjs.com/package/@orpc/react): Utilities for integrating oRPC with React and React Server Actions.
|
|
55
56
|
- [@orpc/tanstack-query](https://www.npmjs.com/package/@orpc/tanstack-query): [TanStack Query](https://tanstack.com/query/latest) integration.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
|
|
2
2
|
import { ToFetchRequestOptions } from '@orpc/standard-server-fetch';
|
|
3
3
|
import { b as ClientContext, c as ClientOptions } from '../../shared/client.BOYsZIRq.mjs';
|
|
4
|
-
import { f as StandardLinkClient } from '../../shared/client.
|
|
5
|
-
import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.
|
|
4
|
+
import { f as StandardLinkClient } from '../../shared/client.Bwgm6dgk.mjs';
|
|
5
|
+
import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.Ycwr4Tuo.mjs';
|
|
6
6
|
import '@orpc/shared';
|
|
7
7
|
|
|
8
8
|
interface LinkFetchClientOptions<T extends ClientContext> extends ToFetchRequestOptions {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
|
|
2
2
|
import { ToFetchRequestOptions } from '@orpc/standard-server-fetch';
|
|
3
3
|
import { b as ClientContext, c as ClientOptions } from '../../shared/client.BOYsZIRq.js';
|
|
4
|
-
import { f as StandardLinkClient } from '../../shared/client.
|
|
5
|
-
import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.
|
|
4
|
+
import { f as StandardLinkClient } from '../../shared/client.BG98rYdO.js';
|
|
5
|
+
import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.C176log5.js';
|
|
6
6
|
import '@orpc/shared';
|
|
7
7
|
|
|
8
8
|
interface LinkFetchClientOptions<T extends ClientContext> extends ToFetchRequestOptions {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { toFetchRequest, toStandardLazyResponse } from '@orpc/standard-server-fetch';
|
|
2
2
|
import '@orpc/shared';
|
|
3
|
-
import { c as StandardRPCLink } from '../../shared/client.
|
|
3
|
+
import { c as StandardRPCLink } from '../../shared/client.DKmRtVO2.mjs';
|
|
4
4
|
import '@orpc/standard-server';
|
|
5
|
-
import '../../shared/client.
|
|
5
|
+
import '../../shared/client.txdq_i5V.mjs';
|
|
6
6
|
|
|
7
7
|
class LinkFetchClient {
|
|
8
8
|
fetch;
|
|
@@ -14,7 +14,7 @@ class LinkFetchClient {
|
|
|
14
14
|
async call(request, options, path, input) {
|
|
15
15
|
const fetchRequest = toFetchRequest(request, this.toFetchRequestOptions);
|
|
16
16
|
const fetchResponse = await this.fetch(fetchRequest, { redirect: "manual" }, options, path, input);
|
|
17
|
-
const lazyResponse = toStandardLazyResponse(fetchResponse);
|
|
17
|
+
const lazyResponse = toStandardLazyResponse(fetchResponse, { signal: fetchRequest.signal });
|
|
18
18
|
return lazyResponse;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
|
|
2
2
|
import { b as ClientContext, c as ClientOptions } from '../../shared/client.BOYsZIRq.mjs';
|
|
3
|
-
import { f as StandardLinkClient } from '../../shared/client.
|
|
4
|
-
import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.
|
|
3
|
+
import { f as StandardLinkClient } from '../../shared/client.Bwgm6dgk.mjs';
|
|
4
|
+
import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.Ycwr4Tuo.mjs';
|
|
5
5
|
import '@orpc/shared';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -43,7 +43,7 @@ declare class LinkMessagePortClient<T extends ClientContext> implements Standard
|
|
|
43
43
|
call(request: StandardRequest, _options: ClientOptions<T>, _path: readonly string[], _input: unknown): Promise<StandardLazyResponse>;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
interface RPCLinkOptions<T extends ClientContext> extends Omit<StandardRPCLinkOptions<T>, 'url' | '
|
|
46
|
+
interface RPCLinkOptions<T extends ClientContext> extends Omit<StandardRPCLinkOptions<T>, 'url' | 'method' | 'fallbackMethod' | 'maxUrlLength'>, LinkMessagePortClientOptions {
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
49
|
* The RPC Link for common message port implementations.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
|
|
2
2
|
import { b as ClientContext, c as ClientOptions } from '../../shared/client.BOYsZIRq.js';
|
|
3
|
-
import { f as StandardLinkClient } from '../../shared/client.
|
|
4
|
-
import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.
|
|
3
|
+
import { f as StandardLinkClient } from '../../shared/client.BG98rYdO.js';
|
|
4
|
+
import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.C176log5.js';
|
|
5
5
|
import '@orpc/shared';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -43,7 +43,7 @@ declare class LinkMessagePortClient<T extends ClientContext> implements Standard
|
|
|
43
43
|
call(request: StandardRequest, _options: ClientOptions<T>, _path: readonly string[], _input: unknown): Promise<StandardLazyResponse>;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
interface RPCLinkOptions<T extends ClientContext> extends Omit<StandardRPCLinkOptions<T>, 'url' | '
|
|
46
|
+
interface RPCLinkOptions<T extends ClientContext> extends Omit<StandardRPCLinkOptions<T>, 'url' | 'method' | 'fallbackMethod' | 'maxUrlLength'>, LinkMessagePortClientOptions {
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
49
|
* The RPC Link for common message port implementations.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ClientPeer } from '@orpc/standard-server-peer';
|
|
2
2
|
import '@orpc/shared';
|
|
3
|
-
import { c as StandardRPCLink } from '../../shared/client.
|
|
3
|
+
import { c as StandardRPCLink } from '../../shared/client.DKmRtVO2.mjs';
|
|
4
4
|
import '@orpc/standard-server';
|
|
5
|
-
import '../../shared/client.
|
|
5
|
+
import '../../shared/client.txdq_i5V.mjs';
|
|
6
6
|
|
|
7
7
|
function postMessagePortMessage(port, data) {
|
|
8
8
|
port.postMessage(data);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { C as CompositeStandardLinkPlugin, d as StandardLink, f as StandardLinkClient, S as StandardLinkClientInterceptorOptions, e as StandardLinkCodec, c as StandardLinkInterceptorOptions, b as StandardLinkOptions, a as StandardLinkPlugin } from '../../shared/client.
|
|
2
|
-
export { S as STANDARD_RPC_JSON_SERIALIZER_BUILT_IN_TYPES, c as StandardRPCCustomJsonSerializer, b as StandardRPCJsonSerialized, a as StandardRPCJsonSerializedMetaItem, e as StandardRPCJsonSerializer, d as StandardRPCJsonSerializerOptions, g as StandardRPCLink, i as StandardRPCLinkCodec, h as StandardRPCLinkCodecOptions, f as StandardRPCLinkOptions, j as StandardRPCSerializer } from '../../shared/client.
|
|
1
|
+
export { C as CompositeStandardLinkPlugin, d as StandardLink, f as StandardLinkClient, S as StandardLinkClientInterceptorOptions, e as StandardLinkCodec, c as StandardLinkInterceptorOptions, b as StandardLinkOptions, a as StandardLinkPlugin } from '../../shared/client.Bwgm6dgk.mjs';
|
|
2
|
+
export { S as STANDARD_RPC_JSON_SERIALIZER_BUILT_IN_TYPES, c as StandardRPCCustomJsonSerializer, b as StandardRPCJsonSerialized, a as StandardRPCJsonSerializedMetaItem, e as StandardRPCJsonSerializer, d as StandardRPCJsonSerializerOptions, g as StandardRPCLink, i as StandardRPCLinkCodec, h as StandardRPCLinkCodecOptions, f as StandardRPCLinkOptions, j as StandardRPCSerializer } from '../../shared/client.Ycwr4Tuo.mjs';
|
|
3
3
|
import { H as HTTPPath } from '../../shared/client.BOYsZIRq.mjs';
|
|
4
4
|
import '@orpc/shared';
|
|
5
5
|
import '@orpc/standard-server';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { C as CompositeStandardLinkPlugin, d as StandardLink, f as StandardLinkClient, S as StandardLinkClientInterceptorOptions, e as StandardLinkCodec, c as StandardLinkInterceptorOptions, b as StandardLinkOptions, a as StandardLinkPlugin } from '../../shared/client.
|
|
2
|
-
export { S as STANDARD_RPC_JSON_SERIALIZER_BUILT_IN_TYPES, c as StandardRPCCustomJsonSerializer, b as StandardRPCJsonSerialized, a as StandardRPCJsonSerializedMetaItem, e as StandardRPCJsonSerializer, d as StandardRPCJsonSerializerOptions, g as StandardRPCLink, i as StandardRPCLinkCodec, h as StandardRPCLinkCodecOptions, f as StandardRPCLinkOptions, j as StandardRPCSerializer } from '../../shared/client.
|
|
1
|
+
export { C as CompositeStandardLinkPlugin, d as StandardLink, f as StandardLinkClient, S as StandardLinkClientInterceptorOptions, e as StandardLinkCodec, c as StandardLinkInterceptorOptions, b as StandardLinkOptions, a as StandardLinkPlugin } from '../../shared/client.BG98rYdO.js';
|
|
2
|
+
export { S as STANDARD_RPC_JSON_SERIALIZER_BUILT_IN_TYPES, c as StandardRPCCustomJsonSerializer, b as StandardRPCJsonSerialized, a as StandardRPCJsonSerializedMetaItem, e as StandardRPCJsonSerializer, d as StandardRPCJsonSerializerOptions, g as StandardRPCLink, i as StandardRPCLinkCodec, h as StandardRPCLinkCodecOptions, f as StandardRPCLinkOptions, j as StandardRPCSerializer } from '../../shared/client.C176log5.js';
|
|
3
3
|
import { H as HTTPPath } from '../../shared/client.BOYsZIRq.js';
|
|
4
4
|
import '@orpc/shared';
|
|
5
5
|
import '@orpc/standard-server';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { C as CompositeStandardLinkPlugin, a as STANDARD_RPC_JSON_SERIALIZER_BUILT_IN_TYPES, S as StandardLink, b as StandardRPCJsonSerializer, c as StandardRPCLink, d as StandardRPCLinkCodec, e as StandardRPCSerializer, g as getMalformedResponseErrorCode, t as toHttpPath } from '../../shared/client.
|
|
1
|
+
export { C as CompositeStandardLinkPlugin, a as STANDARD_RPC_JSON_SERIALIZER_BUILT_IN_TYPES, S as StandardLink, b as StandardRPCJsonSerializer, c as StandardRPCLink, d as StandardRPCLinkCodec, e as StandardRPCSerializer, g as getMalformedResponseErrorCode, t as toHttpPath } from '../../shared/client.DKmRtVO2.mjs';
|
|
2
2
|
import '@orpc/shared';
|
|
3
3
|
import '@orpc/standard-server';
|
|
4
|
-
import '../../shared/client.
|
|
4
|
+
import '../../shared/client.txdq_i5V.mjs';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
|
|
2
2
|
import { b as ClientContext, c as ClientOptions } from '../../shared/client.BOYsZIRq.mjs';
|
|
3
|
-
import { f as StandardLinkClient } from '../../shared/client.
|
|
4
|
-
import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.
|
|
3
|
+
import { f as StandardLinkClient } from '../../shared/client.Bwgm6dgk.mjs';
|
|
4
|
+
import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.Ycwr4Tuo.mjs';
|
|
5
5
|
import '@orpc/shared';
|
|
6
6
|
|
|
7
7
|
interface LinkWebsocketClientOptions {
|
|
@@ -13,7 +13,7 @@ declare class LinkWebsocketClient<T extends ClientContext> implements StandardLi
|
|
|
13
13
|
call(request: StandardRequest, _options: ClientOptions<T>, _path: readonly string[], _input: unknown): Promise<StandardLazyResponse>;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
interface RPCLinkOptions<T extends ClientContext> extends Omit<StandardRPCLinkOptions<T>, 'url' | '
|
|
16
|
+
interface RPCLinkOptions<T extends ClientContext> extends Omit<StandardRPCLinkOptions<T>, 'url' | 'method' | 'fallbackMethod' | 'maxUrlLength'>, LinkWebsocketClientOptions {
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
19
|
* The RPC Link communicates with the server using the RPC protocol over WebSocket.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
|
|
2
2
|
import { b as ClientContext, c as ClientOptions } from '../../shared/client.BOYsZIRq.js';
|
|
3
|
-
import { f as StandardLinkClient } from '../../shared/client.
|
|
4
|
-
import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.
|
|
3
|
+
import { f as StandardLinkClient } from '../../shared/client.BG98rYdO.js';
|
|
4
|
+
import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.C176log5.js';
|
|
5
5
|
import '@orpc/shared';
|
|
6
6
|
|
|
7
7
|
interface LinkWebsocketClientOptions {
|
|
@@ -13,7 +13,7 @@ declare class LinkWebsocketClient<T extends ClientContext> implements StandardLi
|
|
|
13
13
|
call(request: StandardRequest, _options: ClientOptions<T>, _path: readonly string[], _input: unknown): Promise<StandardLazyResponse>;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
interface RPCLinkOptions<T extends ClientContext> extends Omit<StandardRPCLinkOptions<T>, 'url' | '
|
|
16
|
+
interface RPCLinkOptions<T extends ClientContext> extends Omit<StandardRPCLinkOptions<T>, 'url' | 'method' | 'fallbackMethod' | 'maxUrlLength'>, LinkWebsocketClientOptions {
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
19
|
* The RPC Link communicates with the server using the RPC protocol over WebSocket.
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { readAsBuffer } from '@orpc/shared';
|
|
2
2
|
import { ClientPeer } from '@orpc/standard-server-peer';
|
|
3
|
-
import { c as StandardRPCLink } from '../../shared/client.
|
|
3
|
+
import { c as StandardRPCLink } from '../../shared/client.DKmRtVO2.mjs';
|
|
4
4
|
import '@orpc/standard-server';
|
|
5
|
-
import '../../shared/client.
|
|
5
|
+
import '../../shared/client.txdq_i5V.mjs';
|
|
6
6
|
|
|
7
|
+
const WEBSOCKET_CONNECTING = 0;
|
|
7
8
|
class LinkWebsocketClient {
|
|
8
9
|
peer;
|
|
9
10
|
constructor(options) {
|
|
10
11
|
const untilOpen = new Promise((resolve) => {
|
|
11
|
-
if (options.websocket.readyState ===
|
|
12
|
+
if (options.websocket.readyState === WEBSOCKET_CONNECTING) {
|
|
12
13
|
options.websocket.addEventListener("open", () => {
|
|
13
14
|
resolve();
|
|
14
15
|
}, { once: true });
|
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { N as NestedClient, C as ClientLink, I as InferClientContext, a as ClientPromiseResult, b as ClientContext, F as FriendlyClientOptions, c as ClientOptions, d as Client, e as ClientRest } from './shared/client.BOYsZIRq.mjs';
|
|
2
2
|
export { f as HTTPMethod, H as HTTPPath } from './shared/client.BOYsZIRq.mjs';
|
|
3
3
|
import { MaybeOptionalOptions, ThrowableError, Promisable, AsyncIteratorClass } from '@orpc/shared';
|
|
4
|
-
export { EventPublisher, EventPublisherOptions, EventPublisherSubscribeIteratorOptions, Registry, ThrowableError, asyncIteratorToStream as eventIteratorToStream, onError, onFinish, onStart, onSuccess, streamToAsyncIteratorClass as streamToEventIterator } from '@orpc/shared';
|
|
4
|
+
export { AsyncIteratorClass, EventPublisher, EventPublisherOptions, EventPublisherSubscribeIteratorOptions, Registry, ThrowableError, asyncIteratorToStream as eventIteratorToStream, onError, onFinish, onStart, onSuccess, streamToAsyncIteratorClass as streamToEventIterator } from '@orpc/shared';
|
|
5
5
|
export { ErrorEvent } from '@orpc/standard-server';
|
|
6
6
|
|
|
7
7
|
interface createORPCClientOptions {
|
|
@@ -113,7 +113,7 @@ declare class ORPCError<TCode extends ORPCErrorCode, TData> extends Error {
|
|
|
113
113
|
readonly code: TCode;
|
|
114
114
|
readonly status: number;
|
|
115
115
|
readonly data: TData;
|
|
116
|
-
constructor(code: TCode, ...
|
|
116
|
+
constructor(code: TCode, ...rest: MaybeOptionalOptions<ORPCErrorOptions<TData>>);
|
|
117
117
|
toJSON(): ORPCErrorJSON<TCode, TData>;
|
|
118
118
|
}
|
|
119
119
|
type ORPCErrorJSON<TCode extends string, TData> = Pick<ORPCError<TCode, TData>, 'defined' | 'code' | 'status' | 'message' | 'data'>;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { N as NestedClient, C as ClientLink, I as InferClientContext, a as ClientPromiseResult, b as ClientContext, F as FriendlyClientOptions, c as ClientOptions, d as Client, e as ClientRest } from './shared/client.BOYsZIRq.js';
|
|
2
2
|
export { f as HTTPMethod, H as HTTPPath } from './shared/client.BOYsZIRq.js';
|
|
3
3
|
import { MaybeOptionalOptions, ThrowableError, Promisable, AsyncIteratorClass } from '@orpc/shared';
|
|
4
|
-
export { EventPublisher, EventPublisherOptions, EventPublisherSubscribeIteratorOptions, Registry, ThrowableError, asyncIteratorToStream as eventIteratorToStream, onError, onFinish, onStart, onSuccess, streamToAsyncIteratorClass as streamToEventIterator } from '@orpc/shared';
|
|
4
|
+
export { AsyncIteratorClass, EventPublisher, EventPublisherOptions, EventPublisherSubscribeIteratorOptions, Registry, ThrowableError, asyncIteratorToStream as eventIteratorToStream, onError, onFinish, onStart, onSuccess, streamToAsyncIteratorClass as streamToEventIterator } from '@orpc/shared';
|
|
5
5
|
export { ErrorEvent } from '@orpc/standard-server';
|
|
6
6
|
|
|
7
7
|
interface createORPCClientOptions {
|
|
@@ -113,7 +113,7 @@ declare class ORPCError<TCode extends ORPCErrorCode, TData> extends Error {
|
|
|
113
113
|
readonly code: TCode;
|
|
114
114
|
readonly status: number;
|
|
115
115
|
readonly data: TData;
|
|
116
|
-
constructor(code: TCode, ...
|
|
116
|
+
constructor(code: TCode, ...rest: MaybeOptionalOptions<ORPCErrorOptions<TData>>);
|
|
117
117
|
toJSON(): ORPCErrorJSON<TCode, TData>;
|
|
118
118
|
}
|
|
119
119
|
type ORPCErrorJSON<TCode extends string, TData> = Pick<ORPCError<TCode, TData>, 'defined' | 'code' | 'status' | 'message' | 'data'>;
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { i as isDefinedError } from './shared/client.
|
|
2
|
-
export { C as COMMON_ORPC_ERROR_DEFS, O as ORPCError, d as createORPCErrorFromJson, a as fallbackORPCErrorMessage, f as fallbackORPCErrorStatus, c as isORPCErrorJson, b as isORPCErrorStatus, m as mapEventIterator, t as toORPCError } from './shared/client.
|
|
1
|
+
import { i as isDefinedError } from './shared/client.txdq_i5V.mjs';
|
|
2
|
+
export { C as COMMON_ORPC_ERROR_DEFS, O as ORPCError, d as createORPCErrorFromJson, a as fallbackORPCErrorMessage, f as fallbackORPCErrorStatus, c as isORPCErrorJson, b as isORPCErrorStatus, m as mapEventIterator, t as toORPCError } from './shared/client.txdq_i5V.mjs';
|
|
3
3
|
import { isTypescriptObject } from '@orpc/shared';
|
|
4
|
-
export { EventPublisher, asyncIteratorToStream as eventIteratorToStream, onError, onFinish, onStart, onSuccess, streamToAsyncIteratorClass as streamToEventIterator } from '@orpc/shared';
|
|
4
|
+
export { AsyncIteratorClass, EventPublisher, asyncIteratorToStream as eventIteratorToStream, onError, onFinish, onStart, onSuccess, streamToAsyncIteratorClass as streamToEventIterator } from '@orpc/shared';
|
|
5
5
|
export { ErrorEvent } from '@orpc/standard-server';
|
|
6
6
|
|
|
7
7
|
async function safe(promise) {
|
package/dist/plugins/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Value, Promisable } from '@orpc/shared';
|
|
2
2
|
import { StandardHeaders, StandardRequest } from '@orpc/standard-server';
|
|
3
3
|
import { BatchResponseMode } from '@orpc/standard-server/batch';
|
|
4
|
-
import { S as StandardLinkClientInterceptorOptions, a as StandardLinkPlugin, b as StandardLinkOptions, c as StandardLinkInterceptorOptions } from '../shared/client.
|
|
4
|
+
import { S as StandardLinkClientInterceptorOptions, a as StandardLinkPlugin, b as StandardLinkOptions, c as StandardLinkInterceptorOptions } from '../shared/client.Bwgm6dgk.mjs';
|
|
5
5
|
import { b as ClientContext } from '../shared/client.BOYsZIRq.mjs';
|
|
6
6
|
|
|
7
7
|
interface BatchLinkPluginGroup<T extends ClientContext> {
|
package/dist/plugins/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Value, Promisable } from '@orpc/shared';
|
|
2
2
|
import { StandardHeaders, StandardRequest } from '@orpc/standard-server';
|
|
3
3
|
import { BatchResponseMode } from '@orpc/standard-server/batch';
|
|
4
|
-
import { S as StandardLinkClientInterceptorOptions, a as StandardLinkPlugin, b as StandardLinkOptions, c as StandardLinkInterceptorOptions } from '../shared/client.
|
|
4
|
+
import { S as StandardLinkClientInterceptorOptions, a as StandardLinkPlugin, b as StandardLinkOptions, c as StandardLinkInterceptorOptions } from '../shared/client.BG98rYdO.js';
|
|
5
5
|
import { b as ClientContext } from '../shared/client.BOYsZIRq.js';
|
|
6
6
|
|
|
7
7
|
interface BatchLinkPluginGroup<T extends ClientContext> {
|
package/dist/plugins/index.mjs
CHANGED
|
@@ -64,7 +64,7 @@ class BatchLinkPlugin {
|
|
|
64
64
|
});
|
|
65
65
|
});
|
|
66
66
|
options.clientInterceptors.push((options2) => {
|
|
67
|
-
if (this.exclude(options2) || options2.request.body instanceof Blob || options2.request.body instanceof FormData || isAsyncIteratorObject(options2.request.body)) {
|
|
67
|
+
if (this.exclude(options2) || options2.request.body instanceof Blob || options2.request.body instanceof FormData || isAsyncIteratorObject(options2.request.body) || options2.request.signal?.aborted) {
|
|
68
68
|
return options2.next();
|
|
69
69
|
}
|
|
70
70
|
const group = this.groups.find((group2) => group2.condition(options2));
|
|
@@ -130,16 +130,27 @@ class BatchLinkPlugin {
|
|
|
130
130
|
return;
|
|
131
131
|
}
|
|
132
132
|
const mode = value(this.mode, options);
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
133
|
+
try {
|
|
134
|
+
const lazyResponse = await options[0].next({
|
|
135
|
+
request: { ...batchRequest, headers: { ...batchRequest.headers, "x-orpc-batch": mode } },
|
|
136
|
+
signal: batchRequest.signal,
|
|
137
|
+
context: group.context,
|
|
138
|
+
input: group.input,
|
|
139
|
+
path: toArray(group.path)
|
|
140
|
+
});
|
|
141
|
+
const parsed = parseBatchResponse({ ...lazyResponse, body: await lazyResponse.body() });
|
|
142
|
+
for await (const item of parsed) {
|
|
143
|
+
batchItems[item.index]?.[1]({ ...item, body: () => Promise.resolve(item.body) });
|
|
144
|
+
}
|
|
145
|
+
} catch (err) {
|
|
146
|
+
if (batchRequest.signal?.aborted && batchRequest.signal.reason === err) {
|
|
147
|
+
for (const [{ signal }, , reject] of batchItems) {
|
|
148
|
+
if (signal?.aborted) {
|
|
149
|
+
reject(signal.reason);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
throw err;
|
|
143
154
|
}
|
|
144
155
|
throw new Error("Something went wrong make batch response not contains enough responses. This can be a bug please report it.");
|
|
145
156
|
} catch (error) {
|
|
@@ -33,7 +33,6 @@ interface StandardLinkOptions<T extends ClientContext> {
|
|
|
33
33
|
plugins?: StandardLinkPlugin<T>[];
|
|
34
34
|
}
|
|
35
35
|
declare class StandardLink<T extends ClientContext> implements ClientLink<T> {
|
|
36
|
-
#private;
|
|
37
36
|
readonly codec: StandardLinkCodec<T>;
|
|
38
37
|
readonly sender: StandardLinkClient<T>;
|
|
39
38
|
private readonly interceptors;
|
|
@@ -33,7 +33,6 @@ interface StandardLinkOptions<T extends ClientContext> {
|
|
|
33
33
|
plugins?: StandardLinkPlugin<T>[];
|
|
34
34
|
}
|
|
35
35
|
declare class StandardLink<T extends ClientContext> implements ClientLink<T> {
|
|
36
|
-
#private;
|
|
37
36
|
readonly codec: StandardLinkCodec<T>;
|
|
38
37
|
readonly sender: StandardLinkClient<T>;
|
|
39
38
|
private readonly interceptors;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { b as ClientContext, c as ClientOptions, f as HTTPMethod } from './client.BOYsZIRq.js';
|
|
2
|
-
import { e as StandardLinkCodec, b as StandardLinkOptions, d as StandardLink, f as StandardLinkClient } from './client.
|
|
2
|
+
import { e as StandardLinkCodec, b as StandardLinkOptions, d as StandardLink, f as StandardLinkClient } from './client.BG98rYdO.js';
|
|
3
3
|
import { Segment, Value, Promisable } from '@orpc/shared';
|
|
4
4
|
import { StandardHeaders, StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
|
|
5
5
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { toArray, intercept, isObject, value,
|
|
1
|
+
import { toArray, runWithSpan, ORPC_NAME, isAsyncIteratorObject, asyncIteratorWithSpan, intercept, getGlobalOtelConfig, isObject, value, stringifyJSON } from '@orpc/shared';
|
|
2
2
|
import { mergeStandardHeaders, ErrorEvent } from '@orpc/standard-server';
|
|
3
|
-
import { C as COMMON_ORPC_ERROR_DEFS, b as isORPCErrorStatus, c as isORPCErrorJson, d as createORPCErrorFromJson, O as ORPCError, m as mapEventIterator, t as toORPCError } from './client.
|
|
3
|
+
import { C as COMMON_ORPC_ERROR_DEFS, b as isORPCErrorStatus, c as isORPCErrorJson, d as createORPCErrorFromJson, O as ORPCError, m as mapEventIterator, t as toORPCError } from './client.txdq_i5V.mjs';
|
|
4
4
|
|
|
5
5
|
class CompositeStandardLinkPlugin {
|
|
6
6
|
plugins;
|
|
@@ -26,20 +26,52 @@ class StandardLink {
|
|
|
26
26
|
interceptors;
|
|
27
27
|
clientInterceptors;
|
|
28
28
|
call(path, input, options) {
|
|
29
|
-
return
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
29
|
+
return runWithSpan(
|
|
30
|
+
{ name: `${ORPC_NAME}.${path.join("/")}`, signal: options.signal },
|
|
31
|
+
(span) => {
|
|
32
|
+
span?.setAttribute("rpc.system", ORPC_NAME);
|
|
33
|
+
span?.setAttribute("rpc.method", path.join("."));
|
|
34
|
+
if (isAsyncIteratorObject(input)) {
|
|
35
|
+
input = asyncIteratorWithSpan(
|
|
36
|
+
{ name: "consume_event_iterator_input", signal: options.signal },
|
|
37
|
+
input
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
return intercept(this.interceptors, { ...options, path, input }, async ({ path: path2, input: input2, ...options2 }) => {
|
|
41
|
+
const otelConfig = getGlobalOtelConfig();
|
|
42
|
+
let otelContext;
|
|
43
|
+
const currentSpan = otelConfig?.trace.getActiveSpan() ?? span;
|
|
44
|
+
if (currentSpan && otelConfig) {
|
|
45
|
+
otelContext = otelConfig?.trace.setSpan(otelConfig.context.active(), currentSpan);
|
|
46
|
+
}
|
|
47
|
+
const request = await runWithSpan(
|
|
48
|
+
{ name: "encode_request", context: otelContext },
|
|
49
|
+
() => this.codec.encode(path2, input2, options2)
|
|
50
|
+
);
|
|
51
|
+
const response = await intercept(
|
|
52
|
+
this.clientInterceptors,
|
|
53
|
+
{ ...options2, input: input2, path: path2, request },
|
|
54
|
+
({ input: input3, path: path3, request: request2, ...options3 }) => {
|
|
55
|
+
return runWithSpan(
|
|
56
|
+
{ name: "send_request", signal: options3.signal, context: otelContext },
|
|
57
|
+
() => this.sender.call(request2, options3, path3, input3)
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
const output = await runWithSpan(
|
|
62
|
+
{ name: "decode_response", context: otelContext },
|
|
63
|
+
() => this.codec.decode(response, options2, path2, input2)
|
|
64
|
+
);
|
|
65
|
+
if (isAsyncIteratorObject(output)) {
|
|
66
|
+
return asyncIteratorWithSpan(
|
|
67
|
+
{ name: "consume_event_iterator_output", signal: options2.signal },
|
|
68
|
+
output
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
return output;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
40
74
|
);
|
|
41
|
-
const output = await this.codec.decode(response, options, path, input);
|
|
42
|
-
return output;
|
|
43
75
|
}
|
|
44
76
|
}
|
|
45
77
|
|
|
@@ -330,6 +362,9 @@ class StandardRPCSerializer {
|
|
|
330
362
|
return this.#deserialize(data);
|
|
331
363
|
}
|
|
332
364
|
#deserialize(data) {
|
|
365
|
+
if (data === void 0) {
|
|
366
|
+
return void 0;
|
|
367
|
+
}
|
|
333
368
|
if (!(data instanceof FormData)) {
|
|
334
369
|
return this.jsonSerializer.deserialize(data.json, data.meta ?? []);
|
|
335
370
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { b as ClientContext, c as ClientOptions, f as HTTPMethod } from './client.BOYsZIRq.mjs';
|
|
2
|
-
import { e as StandardLinkCodec, b as StandardLinkOptions, d as StandardLink, f as StandardLinkClient } from './client.
|
|
2
|
+
import { e as StandardLinkCodec, b as StandardLinkOptions, d as StandardLink, f as StandardLinkClient } from './client.Bwgm6dgk.mjs';
|
|
3
3
|
import { Segment, Value, Promisable } from '@orpc/shared';
|
|
4
4
|
import { StandardHeaders, StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
|
|
5
5
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isObject, AsyncIteratorClass, isTypescriptObject } from '@orpc/shared';
|
|
1
|
+
import { resolveMaybeOptionalOptions, isObject, AsyncIteratorClass, isTypescriptObject } from '@orpc/shared';
|
|
2
2
|
import { getEventMeta, withEventMeta } from '@orpc/standard-server';
|
|
3
3
|
|
|
4
4
|
const COMMON_ORPC_ERROR_DEFS = {
|
|
@@ -90,16 +90,17 @@ class ORPCError extends Error {
|
|
|
90
90
|
code;
|
|
91
91
|
status;
|
|
92
92
|
data;
|
|
93
|
-
constructor(code, ...
|
|
94
|
-
|
|
93
|
+
constructor(code, ...rest) {
|
|
94
|
+
const options = resolveMaybeOptionalOptions(rest);
|
|
95
|
+
if (options.status !== void 0 && !isORPCErrorStatus(options.status)) {
|
|
95
96
|
throw new Error("[ORPCError] Invalid error status code.");
|
|
96
97
|
}
|
|
97
|
-
const message = fallbackORPCErrorMessage(code, options
|
|
98
|
+
const message = fallbackORPCErrorMessage(code, options.message);
|
|
98
99
|
super(message, options);
|
|
99
100
|
this.code = code;
|
|
100
|
-
this.status = fallbackORPCErrorStatus(code, options
|
|
101
|
-
this.defined = options
|
|
102
|
-
this.data = options
|
|
101
|
+
this.status = fallbackORPCErrorStatus(code, options.status);
|
|
102
|
+
this.defined = options.defined ?? false;
|
|
103
|
+
this.data = options.data;
|
|
103
104
|
}
|
|
104
105
|
toJSON() {
|
|
105
106
|
return {
|
|
@@ -141,19 +142,22 @@ function createORPCErrorFromJson(json, options = {}) {
|
|
|
141
142
|
}
|
|
142
143
|
|
|
143
144
|
function mapEventIterator(iterator, maps) {
|
|
145
|
+
const mapError = async (error) => {
|
|
146
|
+
let mappedError = await maps.error(error);
|
|
147
|
+
if (mappedError !== error) {
|
|
148
|
+
const meta = getEventMeta(error);
|
|
149
|
+
if (meta && isTypescriptObject(mappedError)) {
|
|
150
|
+
mappedError = withEventMeta(mappedError, meta);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return mappedError;
|
|
154
|
+
};
|
|
144
155
|
return new AsyncIteratorClass(async () => {
|
|
145
156
|
const { done, value } = await (async () => {
|
|
146
157
|
try {
|
|
147
158
|
return await iterator.next();
|
|
148
159
|
} catch (error) {
|
|
149
|
-
|
|
150
|
-
if (mappedError !== error) {
|
|
151
|
-
const meta = getEventMeta(error);
|
|
152
|
-
if (meta && isTypescriptObject(mappedError)) {
|
|
153
|
-
mappedError = withEventMeta(mappedError, meta);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
throw mappedError;
|
|
160
|
+
throw await mapError(error);
|
|
157
161
|
}
|
|
158
162
|
})();
|
|
159
163
|
let mappedValue = await maps.value(value, done);
|
|
@@ -165,7 +169,11 @@ function mapEventIterator(iterator, maps) {
|
|
|
165
169
|
}
|
|
166
170
|
return { done, value: mappedValue };
|
|
167
171
|
}, async () => {
|
|
168
|
-
|
|
172
|
+
try {
|
|
173
|
+
await iterator.return?.();
|
|
174
|
+
} catch (error) {
|
|
175
|
+
throw await mapError(error);
|
|
176
|
+
}
|
|
169
177
|
});
|
|
170
178
|
}
|
|
171
179
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orpc/client",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.0-next.
|
|
4
|
+
"version": "0.0.0-next.0ceddfc",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://orpc.unnoq.com",
|
|
7
7
|
"repository": {
|
|
@@ -49,13 +49,13 @@
|
|
|
49
49
|
"dist"
|
|
50
50
|
],
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@orpc/shared": "0.0.0-next.
|
|
53
|
-
"@orpc/standard-server
|
|
54
|
-
"@orpc/standard-server": "0.0.0-next.
|
|
55
|
-
"@orpc/standard-server-peer": "0.0.0-next.
|
|
52
|
+
"@orpc/shared": "0.0.0-next.0ceddfc",
|
|
53
|
+
"@orpc/standard-server": "0.0.0-next.0ceddfc",
|
|
54
|
+
"@orpc/standard-server-fetch": "0.0.0-next.0ceddfc",
|
|
55
|
+
"@orpc/standard-server-peer": "0.0.0-next.0ceddfc"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"zod": "^4.0.
|
|
58
|
+
"zod": "^4.0.17"
|
|
59
59
|
},
|
|
60
60
|
"scripts": {
|
|
61
61
|
"build": "unbuild",
|