@orpc/client 0.0.0-next.655ea3c → 0.0.0-next.66d4d3b

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.
@@ -1,23 +1,32 @@
1
1
  import { toArray, intercept, isObject, value, isAsyncIteratorObject, stringifyJSON } from '@orpc/shared';
2
2
  import { mergeStandardHeaders, ErrorEvent } from '@orpc/standard-server';
3
- import { C as COMMON_ORPC_ERROR_DEFS, b as isORPCErrorStatus, O as ORPCError, m as mapEventIterator, t as toORPCError } from './client.jKEwIsRd.mjs';
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.CRWEpqLB.mjs';
4
4
 
5
- class InvalidEventIteratorRetryResponse extends Error {
5
+ class CompositeStandardLinkPlugin {
6
+ plugins;
7
+ constructor(plugins = []) {
8
+ this.plugins = [...plugins].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
9
+ }
10
+ init(options) {
11
+ for (const plugin of this.plugins) {
12
+ plugin.init?.(options);
13
+ }
14
+ }
6
15
  }
16
+
7
17
  class StandardLink {
8
18
  constructor(codec, sender, options = {}) {
9
19
  this.codec = codec;
10
20
  this.sender = sender;
11
- for (const plugin of toArray(options.plugins)) {
12
- plugin.init?.(options);
13
- }
21
+ const plugin = new CompositeStandardLinkPlugin(options.plugins);
22
+ plugin.init(options);
14
23
  this.interceptors = toArray(options.interceptors);
15
24
  this.clientInterceptors = toArray(options.clientInterceptors);
16
25
  }
17
26
  interceptors;
18
27
  clientInterceptors;
19
28
  call(path, input, options) {
20
- return intercept(this.interceptors, { path, input, options }, async ({ path: path2, input: input2, options: options2 }) => {
29
+ return intercept(this.interceptors, { ...options, path, input }, async ({ path: path2, input: input2, ...options2 }) => {
21
30
  const output = await this.#call(path2, input2, options2);
22
31
  return output;
23
32
  });
@@ -26,8 +35,8 @@ class StandardLink {
26
35
  const request = await this.codec.encode(path, input, options);
27
36
  const response = await intercept(
28
37
  this.clientInterceptors,
29
- { request },
30
- ({ request: request2 }) => this.sender.call(request2, options, path, input)
38
+ { ...options, input, path, request },
39
+ ({ input: input2, path: path2, request: request2, ...options2 }) => this.sender.call(request2, options2, path2, input2)
31
40
  );
32
41
  const output = await this.codec.decode(response, options, path, input);
33
42
  return output;
@@ -253,12 +262,12 @@ class StandardRPCLinkCodec {
253
262
  }
254
263
  })();
255
264
  if (!isOk) {
256
- if (ORPCError.isValidJSON(deserialized)) {
257
- throw ORPCError.fromJSON(deserialized);
265
+ if (isORPCErrorJson(deserialized)) {
266
+ throw createORPCErrorFromJson(deserialized);
258
267
  }
259
268
  throw new ORPCError(getMalformedResponseErrorCode(response.status), {
260
269
  status: response.status,
261
- data: deserialized
270
+ data: { ...response, body: deserialized }
262
271
  });
263
272
  }
264
273
  return deserialized;
@@ -308,8 +317,8 @@ class StandardRPCSerializer {
308
317
  return e;
309
318
  }
310
319
  const deserialized = this.#deserialize(e.data);
311
- if (ORPCError.isValidJSON(deserialized)) {
312
- return ORPCError.fromJSON(deserialized, { cause: e });
320
+ if (isORPCErrorJson(deserialized)) {
321
+ return createORPCErrorFromJson(deserialized, { cause: e });
313
322
  }
314
323
  return new ErrorEvent({
315
324
  data: deserialized,
@@ -334,4 +343,13 @@ class StandardRPCSerializer {
334
343
  }
335
344
  }
336
345
 
337
- export { InvalidEventIteratorRetryResponse as I, StandardLink as S, STANDARD_RPC_JSON_SERIALIZER_BUILT_IN_TYPES as a, StandardRPCJsonSerializer as b, StandardRPCLinkCodec as c, StandardRPCSerializer as d, getMalformedResponseErrorCode as g, toHttpPath as t };
346
+ class StandardRPCLink extends StandardLink {
347
+ constructor(linkClient, options) {
348
+ const jsonSerializer = new StandardRPCJsonSerializer(options);
349
+ const serializer = new StandardRPCSerializer(jsonSerializer);
350
+ const linkCodec = new StandardRPCLinkCodec(serializer, options);
351
+ super(linkCodec, linkClient, options);
352
+ }
353
+ }
354
+
355
+ export { CompositeStandardLinkPlugin as C, StandardLink as S, STANDARD_RPC_JSON_SERIALIZER_BUILT_IN_TYPES as a, StandardRPCJsonSerializer as b, StandardRPCLink as c, StandardRPCLinkCodec as d, StandardRPCSerializer as e, getMalformedResponseErrorCode as g, toHttpPath as t };
@@ -1,6 +1,16 @@
1
1
  import { Interceptor, ThrowableError } from '@orpc/shared';
2
2
  import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
3
- import { a as ClientContext, b as ClientOptions, C as ClientLink } from './client.C0lT7w02.js';
3
+ import { a as ClientContext, b as ClientOptions, C as ClientLink } from './client.CipPQkhk.mjs';
4
+
5
+ interface StandardLinkPlugin<T extends ClientContext> {
6
+ order?: number;
7
+ init?(options: StandardLinkOptions<T>): void;
8
+ }
9
+ declare class CompositeStandardLinkPlugin<T extends ClientContext, TPlugin extends StandardLinkPlugin<T>> implements StandardLinkPlugin<T> {
10
+ protected readonly plugins: TPlugin[];
11
+ constructor(plugins?: readonly TPlugin[]);
12
+ init(options: StandardLinkOptions<T>): void;
13
+ }
4
14
 
5
15
  interface StandardLinkCodec<T extends ClientContext> {
6
16
  encode(path: readonly string[], input: unknown, options: ClientOptions<T>): Promise<StandardRequest>;
@@ -10,20 +20,16 @@ interface StandardLinkClient<T extends ClientContext> {
10
20
  call(request: StandardRequest, options: ClientOptions<T>, path: readonly string[], input: unknown): Promise<StandardLazyResponse>;
11
21
  }
12
22
 
13
- declare class InvalidEventIteratorRetryResponse extends Error {
23
+ interface StandardLinkInterceptorOptions<T extends ClientContext> extends ClientOptions<T> {
24
+ path: readonly string[];
25
+ input: unknown;
14
26
  }
15
- interface StandardLinkPlugin<T extends ClientContext> {
16
- init?(options: StandardLinkOptions<T>): void;
27
+ interface StandardLinkClientInterceptorOptions<T extends ClientContext> extends StandardLinkInterceptorOptions<T> {
28
+ request: StandardRequest;
17
29
  }
18
30
  interface StandardLinkOptions<T extends ClientContext> {
19
- interceptors?: Interceptor<{
20
- path: readonly string[];
21
- input: unknown;
22
- options: ClientOptions<T>;
23
- }, unknown, ThrowableError>[];
24
- clientInterceptors?: Interceptor<{
25
- request: StandardRequest;
26
- }, StandardLazyResponse, ThrowableError>[];
31
+ interceptors?: Interceptor<StandardLinkInterceptorOptions<T>, unknown, ThrowableError>[];
32
+ clientInterceptors?: Interceptor<StandardLinkClientInterceptorOptions<T>, StandardLazyResponse, ThrowableError>[];
27
33
  plugins?: StandardLinkPlugin<T>[];
28
34
  }
29
35
  declare class StandardLink<T extends ClientContext> implements ClientLink<T> {
@@ -36,4 +42,5 @@ declare class StandardLink<T extends ClientContext> implements ClientLink<T> {
36
42
  call(path: readonly string[], input: unknown, options: ClientOptions<T>): Promise<unknown>;
37
43
  }
38
44
 
39
- export { InvalidEventIteratorRetryResponse as I, type StandardLinkPlugin as S, type StandardLinkOptions as a, StandardLink as b, type StandardLinkCodec as c, type StandardLinkClient as d };
45
+ export { CompositeStandardLinkPlugin as C, StandardLink as d };
46
+ export type { StandardLinkClientInterceptorOptions as S, StandardLinkPlugin as a, StandardLinkOptions as b, StandardLinkInterceptorOptions as c, StandardLinkCodec as e, StandardLinkClient as f };
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.655ea3c",
4
+ "version": "0.0.0-next.66d4d3b",
5
5
  "license": "MIT",
6
6
  "homepage": "https://orpc.unnoq.com",
7
7
  "repository": {
@@ -39,9 +39,9 @@
39
39
  "dist"
40
40
  ],
41
41
  "dependencies": {
42
- "@orpc/shared": "0.0.0-next.655ea3c",
43
- "@orpc/standard-server-fetch": "0.0.0-next.655ea3c",
44
- "@orpc/standard-server": "0.0.0-next.655ea3c"
42
+ "@orpc/shared": "0.0.0-next.66d4d3b",
43
+ "@orpc/standard-server-fetch": "0.0.0-next.66d4d3b",
44
+ "@orpc/standard-server": "0.0.0-next.66d4d3b"
45
45
  },
46
46
  "devDependencies": {
47
47
  "zod": "^3.24.2"