@orpc/client 1.7.11 → 1.8.1
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 +2 -2
- package/dist/adapters/message-port/index.d.ts +2 -2
- 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 +2 -2
- package/dist/adapters/websocket/index.d.ts +2 -2
- package/dist/adapters/websocket/index.mjs +4 -3
- package/dist/index.mjs +2 -2
- 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.BvXDSBF5.mjs → client.DKmRtVO2.mjs} +50 -15
- package/dist/shared/{client.aTp4sII-.d.mts → client.Ycwr4Tuo.d.mts} +1 -1
- package/dist/shared/{client.BngOL3Ai.mjs → client.txdq_i5V.mjs} +16 -9
- 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
|
/**
|
@@ -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
|
/**
|
@@ -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 {
|
@@ -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 {
|
@@ -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.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
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
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';
|
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
|
|
@@ -142,19 +142,22 @@ function createORPCErrorFromJson(json, options = {}) {
|
|
142
142
|
}
|
143
143
|
|
144
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
|
+
};
|
145
155
|
return new AsyncIteratorClass(async () => {
|
146
156
|
const { done, value } = await (async () => {
|
147
157
|
try {
|
148
158
|
return await iterator.next();
|
149
159
|
} catch (error) {
|
150
|
-
|
151
|
-
if (mappedError !== error) {
|
152
|
-
const meta = getEventMeta(error);
|
153
|
-
if (meta && isTypescriptObject(mappedError)) {
|
154
|
-
mappedError = withEventMeta(mappedError, meta);
|
155
|
-
}
|
156
|
-
}
|
157
|
-
throw mappedError;
|
160
|
+
throw await mapError(error);
|
158
161
|
}
|
159
162
|
})();
|
160
163
|
let mappedValue = await maps.value(value, done);
|
@@ -166,7 +169,11 @@ function mapEventIterator(iterator, maps) {
|
|
166
169
|
}
|
167
170
|
return { done, value: mappedValue };
|
168
171
|
}, async () => {
|
169
|
-
|
172
|
+
try {
|
173
|
+
await iterator.return?.();
|
174
|
+
} catch (error) {
|
175
|
+
throw await mapError(error);
|
176
|
+
}
|
170
177
|
});
|
171
178
|
}
|
172
179
|
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@orpc/client",
|
3
3
|
"type": "module",
|
4
|
-
"version": "1.
|
4
|
+
"version": "1.8.1",
|
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": "1.
|
53
|
-
"@orpc/standard-server": "1.
|
54
|
-
"@orpc/standard-server-fetch": "1.
|
55
|
-
"@orpc/standard-server-peer": "1.
|
52
|
+
"@orpc/shared": "1.8.1",
|
53
|
+
"@orpc/standard-server": "1.8.1",
|
54
|
+
"@orpc/standard-server-fetch": "1.8.1",
|
55
|
+
"@orpc/standard-server-peer": "1.8.1"
|
56
56
|
},
|
57
57
|
"devDependencies": {
|
58
|
-
"zod": "^4.0.
|
58
|
+
"zod": "^4.0.17"
|
59
59
|
},
|
60
60
|
"scripts": {
|
61
61
|
"build": "unbuild",
|