@orpc/client 0.0.0-next.fe89a39 → 0.0.0-next.ff2168f

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.
Files changed (29) hide show
  1. package/README.md +9 -9
  2. package/dist/adapters/fetch/index.d.mts +5 -5
  3. package/dist/adapters/fetch/index.d.ts +5 -5
  4. package/dist/adapters/fetch/index.mjs +3 -2
  5. package/dist/adapters/message-port/index.d.mts +6 -6
  6. package/dist/adapters/message-port/index.d.ts +6 -6
  7. package/dist/adapters/message-port/index.mjs +4 -3
  8. package/dist/adapters/standard/index.d.mts +3 -3
  9. package/dist/adapters/standard/index.d.ts +3 -3
  10. package/dist/adapters/standard/index.mjs +3 -2
  11. package/dist/adapters/websocket/index.d.mts +5 -5
  12. package/dist/adapters/websocket/index.d.ts +5 -5
  13. package/dist/adapters/websocket/index.mjs +4 -3
  14. package/dist/index.d.mts +7 -7
  15. package/dist/index.d.ts +7 -7
  16. package/dist/index.mjs +3 -2
  17. package/dist/plugins/index.d.mts +55 -9
  18. package/dist/plugins/index.d.ts +55 -9
  19. package/dist/plugins/index.mjs +80 -2
  20. package/dist/shared/{client.De8SW4Kw.d.ts → client.2jUAqzYU.d.ts} +1 -1
  21. package/dist/shared/{client.BxV-mzeR.d.ts → client.B3pNRBih.d.ts} +2 -2
  22. package/dist/shared/{client.D8lMmWVC.d.mts → client.BFAVy68H.d.mts} +2 -2
  23. package/dist/shared/client.BLtwTQUg.mjs +40 -0
  24. package/dist/shared/{client.C3TWK9J1.mjs → client.BhBMHCI4.mjs} +2 -1
  25. package/dist/shared/{client.CgJqIxhb.mjs → client.C6q5291t.mjs} +3 -40
  26. package/dist/shared/{client.CPgZaUox.d.mts → client.CpCa3si8.d.mts} +1 -1
  27. package/dist/shared/{client.BH1AYT_p.d.mts → client.i2uoJbEp.d.mts} +2 -2
  28. package/dist/shared/{client.BH1AYT_p.d.ts → client.i2uoJbEp.d.ts} +2 -2
  29. package/package.json +8 -9
package/README.md CHANGED
@@ -1,23 +1,23 @@
1
1
  <div align="center">
2
- <image align="center" src="https://orpc.unnoq.com/logo.webp" width=280 alt="oRPC logo" />
2
+ <image align="center" src="https://orpc.dev/logo.webp" width=280 alt="oRPC logo" />
3
3
  </div>
4
4
 
5
5
  <h1></h1>
6
6
 
7
7
  <div align="center">
8
- <a href="https://codecov.io/gh/unnoq/orpc">
9
- <img alt="codecov" src="https://codecov.io/gh/unnoq/orpc/branch/main/graph/badge.svg">
8
+ <a href="https://codecov.io/gh/middleapi/orpc">
9
+ <img alt="codecov" src="https://codecov.io/gh/middleapi/orpc/branch/main/graph/badge.svg">
10
10
  </a>
11
11
  <a href="https://www.npmjs.com/package/@orpc/client">
12
12
  <img alt="weekly downloads" src="https://img.shields.io/npm/dw/%40orpc%2Fclient?logo=npm" />
13
13
  </a>
14
- <a href="https://github.com/unnoq/orpc/blob/main/LICENSE">
15
- <img alt="MIT License" src="https://img.shields.io/github/license/unnoq/orpc?logo=open-source-initiative" />
14
+ <a href="https://github.com/middleapi/orpc/blob/main/LICENSE">
15
+ <img alt="MIT License" src="https://img.shields.io/github/license/middleapi/orpc?logo=open-source-initiative" />
16
16
  </a>
17
17
  <a href="https://discord.gg/TXEbwRBvQn">
18
18
  <img alt="Discord" src="https://img.shields.io/discord/1308966753044398161?color=7389D8&label&logo=discord&logoColor=ffffff" />
19
19
  </a>
20
- <a href="https://deepwiki.com/unnoq/orpc">
20
+ <a href="https://deepwiki.com/middleapi/orpc">
21
21
  <img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki">
22
22
  </a>
23
23
  </div>
@@ -45,7 +45,7 @@
45
45
 
46
46
  ## Documentation
47
47
 
48
- You can find the full documentation [here](https://orpc.unnoq.com).
48
+ You can find the full documentation [here](https://orpc.dev).
49
49
 
50
50
  ## Packages
51
51
 
@@ -66,7 +66,7 @@ You can find the full documentation [here](https://orpc.unnoq.com).
66
66
 
67
67
  ## `@orpc/client`
68
68
 
69
- Consume your API on the client with type-safety. Read the [documentation](https://orpc.unnoq.com/docs/client/client-side) for more information.
69
+ Consume your API on the client with type-safety. Read the [documentation](https://orpc.dev/docs/client/client-side) for more information.
70
70
 
71
71
  ```ts
72
72
  import { createORPCClient } from '@orpc/client'
@@ -98,4 +98,4 @@ const client: ContractRouterClient<typeof contract> = createORPCClient(link)
98
98
 
99
99
  ## License
100
100
 
101
- Distributed under the MIT License. See [LICENSE](https://github.com/unnoq/orpc/blob/main/LICENSE) for more information.
101
+ Distributed under the MIT License. See [LICENSE](https://github.com/middleapi/orpc/blob/main/LICENSE) for more information.
@@ -1,9 +1,9 @@
1
1
  import { Interceptor } from '@orpc/shared';
2
2
  import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
3
3
  import { ToFetchRequestOptions } from '@orpc/standard-server-fetch';
4
- import { b as ClientContext, c as ClientOptions } from '../../shared/client.BH1AYT_p.mjs';
5
- import { a as StandardLinkPlugin, f as StandardLinkClient } from '../../shared/client.CPgZaUox.mjs';
6
- import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.D8lMmWVC.mjs';
4
+ import { b as ClientContext, c as ClientOptions } from '../../shared/client.i2uoJbEp.mjs';
5
+ import { a as StandardLinkPlugin, f as StandardLinkClient } from '../../shared/client.CpCa3si8.mjs';
6
+ import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.BFAVy68H.mjs';
7
7
 
8
8
  interface LinkFetchPlugin<T extends ClientContext> extends StandardLinkPlugin<T> {
9
9
  initRuntimeAdapter?(options: LinkFetchClientOptions<T>): void;
@@ -35,8 +35,8 @@ interface RPCLinkOptions<T extends ClientContext> extends LinkFetchClientOptions
35
35
  /**
36
36
  * The RPC Link communicates with the server using the RPC protocol.
37
37
  *
38
- * @see {@link https://orpc.unnoq.com/docs/client/rpc-link RPC Link Docs}
39
- * @see {@link https://orpc.unnoq.com/docs/advanced/rpc-protocol RPC Protocol Docs}
38
+ * @see {@link https://orpc.dev/docs/client/rpc-link RPC Link Docs}
39
+ * @see {@link https://orpc.dev/docs/advanced/rpc-protocol RPC Protocol Docs}
40
40
  */
41
41
  declare class RPCLink<T extends ClientContext> extends StandardRPCLink<T> {
42
42
  constructor(options: RPCLinkOptions<T>);
@@ -1,9 +1,9 @@
1
1
  import { Interceptor } from '@orpc/shared';
2
2
  import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
3
3
  import { ToFetchRequestOptions } from '@orpc/standard-server-fetch';
4
- import { b as ClientContext, c as ClientOptions } from '../../shared/client.BH1AYT_p.js';
5
- import { a as StandardLinkPlugin, f as StandardLinkClient } from '../../shared/client.De8SW4Kw.js';
6
- import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.BxV-mzeR.js';
4
+ import { b as ClientContext, c as ClientOptions } from '../../shared/client.i2uoJbEp.js';
5
+ import { a as StandardLinkPlugin, f as StandardLinkClient } from '../../shared/client.2jUAqzYU.js';
6
+ import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.B3pNRBih.js';
7
7
 
8
8
  interface LinkFetchPlugin<T extends ClientContext> extends StandardLinkPlugin<T> {
9
9
  initRuntimeAdapter?(options: LinkFetchClientOptions<T>): void;
@@ -35,8 +35,8 @@ interface RPCLinkOptions<T extends ClientContext> extends LinkFetchClientOptions
35
35
  /**
36
36
  * The RPC Link communicates with the server using the RPC protocol.
37
37
  *
38
- * @see {@link https://orpc.unnoq.com/docs/client/rpc-link RPC Link Docs}
39
- * @see {@link https://orpc.unnoq.com/docs/advanced/rpc-protocol RPC Protocol Docs}
38
+ * @see {@link https://orpc.dev/docs/client/rpc-link RPC Link Docs}
39
+ * @see {@link https://orpc.dev/docs/advanced/rpc-protocol RPC Protocol Docs}
40
40
  */
41
41
  declare class RPCLink<T extends ClientContext> extends StandardRPCLink<T> {
42
42
  constructor(options: RPCLinkOptions<T>);
@@ -1,8 +1,9 @@
1
1
  import { toArray, intercept } from '@orpc/shared';
2
2
  import { toFetchRequest, toStandardLazyResponse } from '@orpc/standard-server-fetch';
3
- import { C as CompositeStandardLinkPlugin, c as StandardRPCLink } from '../../shared/client.C3TWK9J1.mjs';
3
+ import { C as CompositeStandardLinkPlugin, c as StandardRPCLink } from '../../shared/client.BhBMHCI4.mjs';
4
4
  import '@orpc/standard-server';
5
- import '../../shared/client.CgJqIxhb.mjs';
5
+ import '../../shared/client.C6q5291t.mjs';
6
+ import '../../shared/client.BLtwTQUg.mjs';
6
7
 
7
8
  class CompositeLinkFetchPlugin extends CompositeStandardLinkPlugin {
8
9
  initRuntimeAdapter(options) {
@@ -1,9 +1,9 @@
1
1
  import { Value, Promisable } from '@orpc/shared';
2
2
  import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
3
3
  import { DecodedRequestMessage } from '@orpc/standard-server-peer';
4
- import { b as ClientContext, c as ClientOptions } from '../../shared/client.BH1AYT_p.mjs';
5
- import { f as StandardLinkClient } from '../../shared/client.CPgZaUox.mjs';
6
- import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.D8lMmWVC.mjs';
4
+ import { b as ClientContext, c as ClientOptions } from '../../shared/client.i2uoJbEp.mjs';
5
+ import { f as StandardLinkClient } from '../../shared/client.CpCa3si8.mjs';
6
+ import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.BFAVy68H.mjs';
7
7
 
8
8
  /**
9
9
  * The message port used by electron in main process
@@ -54,7 +54,7 @@ interface LinkMessagePortClientOptions {
54
54
  * }
55
55
  * ```
56
56
  *
57
- * @see {@link https://orpc.unnoq.com/docs/adapters/message-port#transfer Message Port Transfer Docs}
57
+ * @see {@link https://orpc.dev/docs/adapters/message-port#transfer Message Port Transfer Docs}
58
58
  */
59
59
  experimental_transfer?: Value<Promisable<object[] | null | undefined>, [message: DecodedRequestMessage, port: SupportedMessagePort]>;
60
60
  }
@@ -69,8 +69,8 @@ interface RPCLinkOptions<T extends ClientContext> extends Omit<StandardRPCLinkOp
69
69
  /**
70
70
  * The RPC Link for common message port implementations.
71
71
  *
72
- * @see {@link https://orpc.unnoq.com/docs/client/rpc-link RPC Link Docs}
73
- * @see {@link https://orpc.unnoq.com/docs/adapters/message-port Message Port Adapter Docs}
72
+ * @see {@link https://orpc.dev/docs/client/rpc-link RPC Link Docs}
73
+ * @see {@link https://orpc.dev/docs/adapters/message-port Message Port Adapter Docs}
74
74
  */
75
75
  declare class RPCLink<T extends ClientContext> extends StandardRPCLink<T> {
76
76
  constructor(options: RPCLinkOptions<T>);
@@ -1,9 +1,9 @@
1
1
  import { Value, Promisable } from '@orpc/shared';
2
2
  import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
3
3
  import { DecodedRequestMessage } from '@orpc/standard-server-peer';
4
- import { b as ClientContext, c as ClientOptions } from '../../shared/client.BH1AYT_p.js';
5
- import { f as StandardLinkClient } from '../../shared/client.De8SW4Kw.js';
6
- import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.BxV-mzeR.js';
4
+ import { b as ClientContext, c as ClientOptions } from '../../shared/client.i2uoJbEp.js';
5
+ import { f as StandardLinkClient } from '../../shared/client.2jUAqzYU.js';
6
+ import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.B3pNRBih.js';
7
7
 
8
8
  /**
9
9
  * The message port used by electron in main process
@@ -54,7 +54,7 @@ interface LinkMessagePortClientOptions {
54
54
  * }
55
55
  * ```
56
56
  *
57
- * @see {@link https://orpc.unnoq.com/docs/adapters/message-port#transfer Message Port Transfer Docs}
57
+ * @see {@link https://orpc.dev/docs/adapters/message-port#transfer Message Port Transfer Docs}
58
58
  */
59
59
  experimental_transfer?: Value<Promisable<object[] | null | undefined>, [message: DecodedRequestMessage, port: SupportedMessagePort]>;
60
60
  }
@@ -69,8 +69,8 @@ interface RPCLinkOptions<T extends ClientContext> extends Omit<StandardRPCLinkOp
69
69
  /**
70
70
  * The RPC Link for common message port implementations.
71
71
  *
72
- * @see {@link https://orpc.unnoq.com/docs/client/rpc-link RPC Link Docs}
73
- * @see {@link https://orpc.unnoq.com/docs/adapters/message-port Message Port Adapter Docs}
72
+ * @see {@link https://orpc.dev/docs/client/rpc-link RPC Link Docs}
73
+ * @see {@link https://orpc.dev/docs/adapters/message-port Message Port Adapter Docs}
74
74
  */
75
75
  declare class RPCLink<T extends ClientContext> extends StandardRPCLink<T> {
76
76
  constructor(options: RPCLinkOptions<T>);
@@ -1,9 +1,10 @@
1
1
  import { value, isObject } from '@orpc/shared';
2
2
  import { experimental_ClientPeerWithoutCodec, serializeRequestMessage, encodeRequestMessage, deserializeResponseMessage, decodeResponseMessage } from '@orpc/standard-server-peer';
3
- import { c as StandardRPCLink } from '../../shared/client.C3TWK9J1.mjs';
3
+ import { c as StandardRPCLink } from '../../shared/client.BhBMHCI4.mjs';
4
4
  import '@orpc/standard-server';
5
- import '../../shared/client.CgJqIxhb.mjs';
5
+ import '../../shared/client.C6q5291t.mjs';
6
6
  import '@orpc/standard-server-fetch';
7
+ import '../../shared/client.BLtwTQUg.mjs';
7
8
 
8
9
  function postMessagePortMessage(port, data, transfer) {
9
10
  if (transfer) {
@@ -79,7 +80,7 @@ class LinkMessagePortClient {
79
80
  class RPCLink extends StandardRPCLink {
80
81
  constructor(options) {
81
82
  const linkClient = new LinkMessagePortClient(options);
82
- super(linkClient, { ...options, url: "orpc://localhost" });
83
+ super(linkClient, { ...options, url: "http://orpc" });
83
84
  }
84
85
  }
85
86
 
@@ -1,7 +1,7 @@
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.CPgZaUox.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.D8lMmWVC.mjs';
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.CpCa3si8.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.BFAVy68H.mjs';
3
3
  import { StandardHeaders } from '@orpc/standard-server';
4
- import { H as HTTPPath } from '../../shared/client.BH1AYT_p.mjs';
4
+ import { H as HTTPPath } from '../../shared/client.i2uoJbEp.mjs';
5
5
  import '@orpc/shared';
6
6
 
7
7
  declare function toHttpPath(path: readonly string[]): HTTPPath;
@@ -1,7 +1,7 @@
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.De8SW4Kw.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.BxV-mzeR.js';
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.2jUAqzYU.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.B3pNRBih.js';
3
3
  import { StandardHeaders } from '@orpc/standard-server';
4
- import { H as HTTPPath } from '../../shared/client.BH1AYT_p.js';
4
+ import { H as HTTPPath } from '../../shared/client.i2uoJbEp.js';
5
5
  import '@orpc/shared';
6
6
 
7
7
  declare function toHttpPath(path: readonly string[]): HTTPPath;
@@ -1,5 +1,6 @@
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, f as toStandardHeaders } from '../../shared/client.C3TWK9J1.mjs';
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, f as toStandardHeaders } from '../../shared/client.BhBMHCI4.mjs';
2
2
  import '@orpc/shared';
3
3
  import '@orpc/standard-server';
4
- import '../../shared/client.CgJqIxhb.mjs';
4
+ import '../../shared/client.C6q5291t.mjs';
5
5
  import '@orpc/standard-server-fetch';
6
+ import '../../shared/client.BLtwTQUg.mjs';
@@ -1,7 +1,7 @@
1
1
  import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
2
- import { b as ClientContext, c as ClientOptions } from '../../shared/client.BH1AYT_p.mjs';
3
- import { f as StandardLinkClient } from '../../shared/client.CPgZaUox.mjs';
4
- import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.D8lMmWVC.mjs';
2
+ import { b as ClientContext, c as ClientOptions } from '../../shared/client.i2uoJbEp.mjs';
3
+ import { f as StandardLinkClient } from '../../shared/client.CpCa3si8.mjs';
4
+ import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.BFAVy68H.mjs';
5
5
  import '@orpc/shared';
6
6
 
7
7
  interface LinkWebsocketClientOptions {
@@ -18,8 +18,8 @@ interface RPCLinkOptions<T extends ClientContext> extends Omit<StandardRPCLinkOp
18
18
  /**
19
19
  * The RPC Link communicates with the server using the RPC protocol over WebSocket.
20
20
  *
21
- * @see {@link https://orpc.unnoq.com/docs/client/rpc-link RPC Link Docs}
22
- * @see {@link https://orpc.unnoq.com/docs/adapters/websocket WebSocket Adapter Docs}
21
+ * @see {@link https://orpc.dev/docs/client/rpc-link RPC Link Docs}
22
+ * @see {@link https://orpc.dev/docs/adapters/websocket WebSocket Adapter Docs}
23
23
  */
24
24
  declare class RPCLink<T extends ClientContext> extends StandardRPCLink<T> {
25
25
  constructor(options: RPCLinkOptions<T>);
@@ -1,7 +1,7 @@
1
1
  import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
2
- import { b as ClientContext, c as ClientOptions } from '../../shared/client.BH1AYT_p.js';
3
- import { f as StandardLinkClient } from '../../shared/client.De8SW4Kw.js';
4
- import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.BxV-mzeR.js';
2
+ import { b as ClientContext, c as ClientOptions } from '../../shared/client.i2uoJbEp.js';
3
+ import { f as StandardLinkClient } from '../../shared/client.2jUAqzYU.js';
4
+ import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.B3pNRBih.js';
5
5
  import '@orpc/shared';
6
6
 
7
7
  interface LinkWebsocketClientOptions {
@@ -18,8 +18,8 @@ interface RPCLinkOptions<T extends ClientContext> extends Omit<StandardRPCLinkOp
18
18
  /**
19
19
  * The RPC Link communicates with the server using the RPC protocol over WebSocket.
20
20
  *
21
- * @see {@link https://orpc.unnoq.com/docs/client/rpc-link RPC Link Docs}
22
- * @see {@link https://orpc.unnoq.com/docs/adapters/websocket WebSocket Adapter Docs}
21
+ * @see {@link https://orpc.dev/docs/client/rpc-link RPC Link Docs}
22
+ * @see {@link https://orpc.dev/docs/adapters/websocket WebSocket Adapter Docs}
23
23
  */
24
24
  declare class RPCLink<T extends ClientContext> extends StandardRPCLink<T> {
25
25
  constructor(options: RPCLinkOptions<T>);
@@ -1,9 +1,10 @@
1
1
  import { readAsBuffer } from '@orpc/shared';
2
2
  import { ClientPeer } from '@orpc/standard-server-peer';
3
- import { c as StandardRPCLink } from '../../shared/client.C3TWK9J1.mjs';
3
+ import { c as StandardRPCLink } from '../../shared/client.BhBMHCI4.mjs';
4
4
  import '@orpc/standard-server';
5
- import '../../shared/client.CgJqIxhb.mjs';
5
+ import '../../shared/client.C6q5291t.mjs';
6
6
  import '@orpc/standard-server-fetch';
7
+ import '../../shared/client.BLtwTQUg.mjs';
7
8
 
8
9
  const WEBSOCKET_CONNECTING = 0;
9
10
  class LinkWebsocketClient {
@@ -39,7 +40,7 @@ class LinkWebsocketClient {
39
40
  class RPCLink extends StandardRPCLink {
40
41
  constructor(options) {
41
42
  const linkClient = new LinkWebsocketClient(options);
42
- super(linkClient, { ...options, url: "orpc://localhost" });
43
+ super(linkClient, { ...options, url: "http://orpc" });
43
44
  }
44
45
  }
45
46
 
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
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.BH1AYT_p.mjs';
2
- export { f as HTTPMethod, H as HTTPPath, h as InferClientBodyInputs, j as InferClientBodyOutputs, l as InferClientErrorUnion, k as InferClientErrors, g as InferClientInputs, i as InferClientOutputs } from './shared/client.BH1AYT_p.mjs';
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.i2uoJbEp.mjs';
2
+ export { f as HTTPMethod, H as HTTPPath, h as InferClientBodyInputs, j as InferClientBodyOutputs, l as InferClientErrorUnion, k as InferClientErrors, g as InferClientInputs, i as InferClientOutputs } from './shared/client.i2uoJbEp.mjs';
3
3
  import { MaybeOptionalOptions, ThrowableError, OnFinishState, Promisable, AsyncIteratorClass } from '@orpc/shared';
4
4
  export { AsyncIteratorClass, EventPublisher, EventPublisherOptions, EventPublisherSubscribeIteratorOptions, Registry, ThrowableError, asyncIteratorToStream as eventIteratorToStream, asyncIteratorToUnproxiedDataStream as eventIteratorToUnproxiedDataStream, onError, onFinish, onStart, onSuccess, streamToAsyncIteratorClass as streamToEventIterator } from '@orpc/shared';
5
5
  export { ErrorEvent } from '@orpc/standard-server';
@@ -13,7 +13,7 @@ interface createORPCClientOptions {
13
13
  /**
14
14
  * Create a oRPC client-side client from a link.
15
15
  *
16
- * @see {@link https://orpc.unnoq.com/docs/client/client-side Client-side Client Docs}
16
+ * @see {@link https://orpc.dev/docs/client/client-side Client-side Client Docs}
17
17
  */
18
18
  declare function createORPCClient<T extends NestedClient<any>>(link: ClientLink<InferClientContext<T>>, options?: createORPCClientOptions): T;
19
19
 
@@ -156,7 +156,7 @@ type SafeResult<TOutput, TError> = [error: null, data: TOutput, isDefined: false
156
156
  * Works like try/catch, but can infer error types.
157
157
  *
158
158
  * @info support both tuple `[error, data, isDefined, isSuccess]` and object `{ error, data, isDefined, isSuccess }` styles.
159
- * @see {@link https://orpc.unnoq.com/docs/client/error-handling Client Error Handling Docs}
159
+ * @see {@link https://orpc.dev/docs/client/error-handling Client Error Handling Docs}
160
160
  */
161
161
  declare function safe<TOutput, TError = ThrowableError>(promise: ClientPromiseResult<TOutput, TError>): Promise<SafeResult<TOutput, TError>>;
162
162
  declare function resolveFriendlyClientOptions<T extends ClientContext>(options: FriendlyClientOptions<T>): ClientOptions<T>;
@@ -202,18 +202,18 @@ type SafeClient<T extends NestedClient<any>> = T extends Client<infer UContext,
202
202
  * const { error, data, isDefined } = await safeClient.doSomething({ id: '123' })
203
203
  * ```
204
204
  *
205
- * @see {@link https://orpc.unnoq.com/docs/client/error-handling#using-createsafeclient Safe Client Docs}
205
+ * @see {@link https://orpc.dev/docs/client/error-handling#using-createsafeclient Safe Client Docs}
206
206
  */
207
207
  declare function createSafeClient<T extends NestedClient<any>>(client: T): SafeClient<T>;
208
208
 
209
209
  declare const ORPC_CLIENT_PACKAGE_NAME = "@orpc/client";
210
- declare const ORPC_CLIENT_PACKAGE_VERSION = "0.0.0-next.fe89a39";
210
+ declare const ORPC_CLIENT_PACKAGE_VERSION = "0.0.0-next.ff2168f";
211
211
 
212
212
  /**
213
213
  * DynamicLink provides a way to dynamically resolve and delegate calls to other ClientLinks
214
214
  * based on the request path, input, and context.
215
215
  *
216
- * @see {@link https://orpc.unnoq.com/docs/client/dynamic-link Dynamic Link Docs}
216
+ * @see {@link https://orpc.dev/docs/client/dynamic-link Dynamic Link Docs}
217
217
  */
218
218
  declare class DynamicLink<TClientContext extends ClientContext> implements ClientLink<TClientContext> {
219
219
  private readonly linkResolver;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
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.BH1AYT_p.js';
2
- export { f as HTTPMethod, H as HTTPPath, h as InferClientBodyInputs, j as InferClientBodyOutputs, l as InferClientErrorUnion, k as InferClientErrors, g as InferClientInputs, i as InferClientOutputs } from './shared/client.BH1AYT_p.js';
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.i2uoJbEp.js';
2
+ export { f as HTTPMethod, H as HTTPPath, h as InferClientBodyInputs, j as InferClientBodyOutputs, l as InferClientErrorUnion, k as InferClientErrors, g as InferClientInputs, i as InferClientOutputs } from './shared/client.i2uoJbEp.js';
3
3
  import { MaybeOptionalOptions, ThrowableError, OnFinishState, Promisable, AsyncIteratorClass } from '@orpc/shared';
4
4
  export { AsyncIteratorClass, EventPublisher, EventPublisherOptions, EventPublisherSubscribeIteratorOptions, Registry, ThrowableError, asyncIteratorToStream as eventIteratorToStream, asyncIteratorToUnproxiedDataStream as eventIteratorToUnproxiedDataStream, onError, onFinish, onStart, onSuccess, streamToAsyncIteratorClass as streamToEventIterator } from '@orpc/shared';
5
5
  export { ErrorEvent } from '@orpc/standard-server';
@@ -13,7 +13,7 @@ interface createORPCClientOptions {
13
13
  /**
14
14
  * Create a oRPC client-side client from a link.
15
15
  *
16
- * @see {@link https://orpc.unnoq.com/docs/client/client-side Client-side Client Docs}
16
+ * @see {@link https://orpc.dev/docs/client/client-side Client-side Client Docs}
17
17
  */
18
18
  declare function createORPCClient<T extends NestedClient<any>>(link: ClientLink<InferClientContext<T>>, options?: createORPCClientOptions): T;
19
19
 
@@ -156,7 +156,7 @@ type SafeResult<TOutput, TError> = [error: null, data: TOutput, isDefined: false
156
156
  * Works like try/catch, but can infer error types.
157
157
  *
158
158
  * @info support both tuple `[error, data, isDefined, isSuccess]` and object `{ error, data, isDefined, isSuccess }` styles.
159
- * @see {@link https://orpc.unnoq.com/docs/client/error-handling Client Error Handling Docs}
159
+ * @see {@link https://orpc.dev/docs/client/error-handling Client Error Handling Docs}
160
160
  */
161
161
  declare function safe<TOutput, TError = ThrowableError>(promise: ClientPromiseResult<TOutput, TError>): Promise<SafeResult<TOutput, TError>>;
162
162
  declare function resolveFriendlyClientOptions<T extends ClientContext>(options: FriendlyClientOptions<T>): ClientOptions<T>;
@@ -202,18 +202,18 @@ type SafeClient<T extends NestedClient<any>> = T extends Client<infer UContext,
202
202
  * const { error, data, isDefined } = await safeClient.doSomething({ id: '123' })
203
203
  * ```
204
204
  *
205
- * @see {@link https://orpc.unnoq.com/docs/client/error-handling#using-createsafeclient Safe Client Docs}
205
+ * @see {@link https://orpc.dev/docs/client/error-handling#using-createsafeclient Safe Client Docs}
206
206
  */
207
207
  declare function createSafeClient<T extends NestedClient<any>>(client: T): SafeClient<T>;
208
208
 
209
209
  declare const ORPC_CLIENT_PACKAGE_NAME = "@orpc/client";
210
- declare const ORPC_CLIENT_PACKAGE_VERSION = "0.0.0-next.fe89a39";
210
+ declare const ORPC_CLIENT_PACKAGE_VERSION = "0.0.0-next.ff2168f";
211
211
 
212
212
  /**
213
213
  * DynamicLink provides a way to dynamically resolve and delegate calls to other ClientLinks
214
214
  * based on the request path, input, and context.
215
215
  *
216
- * @see {@link https://orpc.unnoq.com/docs/client/dynamic-link Dynamic Link Docs}
216
+ * @see {@link https://orpc.dev/docs/client/dynamic-link Dynamic Link Docs}
217
217
  */
218
218
  declare class DynamicLink<TClientContext extends ClientContext> implements ClientLink<TClientContext> {
219
219
  private readonly linkResolver;
package/dist/index.mjs CHANGED
@@ -1,7 +1,8 @@
1
1
  import { preventNativeAwait, isTypescriptObject } from '@orpc/shared';
2
2
  export { AsyncIteratorClass, EventPublisher, asyncIteratorToStream as eventIteratorToStream, asyncIteratorToUnproxiedDataStream as eventIteratorToUnproxiedDataStream, onError, onFinish, onStart, onSuccess, streamToAsyncIteratorClass as streamToEventIterator } from '@orpc/shared';
3
- import { i as isDefinedError } from './shared/client.CgJqIxhb.mjs';
4
- export { C as COMMON_ORPC_ERROR_DEFS, c as ORPCError, O as ORPC_CLIENT_PACKAGE_NAME, a as ORPC_CLIENT_PACKAGE_VERSION, g as createORPCErrorFromJson, b as fallbackORPCErrorMessage, f as fallbackORPCErrorStatus, e as isORPCErrorJson, d as isORPCErrorStatus, m as mapEventIterator, t as toORPCError } from './shared/client.CgJqIxhb.mjs';
3
+ import { i as isDefinedError } from './shared/client.C6q5291t.mjs';
4
+ export { C as COMMON_ORPC_ERROR_DEFS, c as ORPCError, O as ORPC_CLIENT_PACKAGE_NAME, a as ORPC_CLIENT_PACKAGE_VERSION, g as createORPCErrorFromJson, b as fallbackORPCErrorMessage, f as fallbackORPCErrorStatus, e as isORPCErrorJson, d as isORPCErrorStatus, t as toORPCError } from './shared/client.C6q5291t.mjs';
5
+ export { m as mapEventIterator } from './shared/client.BLtwTQUg.mjs';
5
6
  export { ErrorEvent } from '@orpc/standard-server';
6
7
 
7
8
  async function safe(promise) {
@@ -1,8 +1,8 @@
1
1
  import { Value, Promisable } from '@orpc/shared';
2
- import { StandardHeaders, StandardRequest } from '@orpc/standard-server';
2
+ import { StandardHeaders, StandardRequest, StandardLazyResponse } 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.CPgZaUox.mjs';
5
- import { b as ClientContext } from '../shared/client.BH1AYT_p.mjs';
4
+ import { S as StandardLinkClientInterceptorOptions, a as StandardLinkPlugin, b as StandardLinkOptions, c as StandardLinkInterceptorOptions } from '../shared/client.CpCa3si8.mjs';
5
+ import { b as ClientContext } from '../shared/client.i2uoJbEp.mjs';
6
6
 
7
7
  interface BatchLinkPluginGroup<T extends ClientContext> {
8
8
  condition(options: StandardLinkClientInterceptorOptions<T>): boolean;
@@ -62,7 +62,7 @@ interface BatchLinkPluginOptions<T extends ClientContext> {
62
62
  * The Batch Requests Plugin allows you to combine multiple requests and responses into a single batch,
63
63
  * reducing the overhead of sending each one separately.
64
64
  *
65
- * @see {@link https://orpc.unnoq.com/docs/plugins/batch-requests Batch Requests Plugin Docs}
65
+ * @see {@link https://orpc.dev/docs/plugins/batch-requests Batch Requests Plugin Docs}
66
66
  */
67
67
  declare class BatchLinkPlugin<T extends ClientContext> implements StandardLinkPlugin<T> {
68
68
  #private;
@@ -103,7 +103,7 @@ interface DedupeRequestsPluginOptions<T extends ClientContext> {
103
103
  /**
104
104
  * Prevents duplicate requests by deduplicating similar ones to reduce server load.
105
105
  *
106
- * @see {@link https://orpc.unnoq.com/docs/plugins/dedupe-requests Dedupe Requests Plugin}
106
+ * @see {@link https://orpc.dev/docs/plugins/dedupe-requests Dedupe Requests Plugin}
107
107
  */
108
108
  declare class DedupeRequestsPlugin<T extends ClientContext> implements StandardLinkPlugin<T> {
109
109
  #private;
@@ -150,7 +150,7 @@ interface ClientRetryPluginOptions {
150
150
  /**
151
151
  * The Client Retry Plugin enables retrying client calls when errors occur.
152
152
  *
153
- * @see {@link https://orpc.unnoq.com/docs/plugins/client-retry Client Retry Plugin Docs}
153
+ * @see {@link https://orpc.dev/docs/plugins/client-retry Client Retry Plugin Docs}
154
154
  */
155
155
  declare class ClientRetryPlugin<T extends ClientRetryPluginContext> implements StandardLinkPlugin<T> {
156
156
  private readonly defaultRetry;
@@ -162,6 +162,52 @@ declare class ClientRetryPlugin<T extends ClientRetryPluginContext> implements S
162
162
  init(options: StandardLinkOptions<T>): void;
163
163
  }
164
164
 
165
+ interface RetryAfterPluginOptions<T extends ClientContext> {
166
+ /**
167
+ * Override condition to determine whether to retry or not.
168
+ *
169
+ * @default ((response) => response.status === 429 || response.status === 503)
170
+ */
171
+ condition?: Value<boolean, [
172
+ response: StandardLazyResponse,
173
+ options: StandardLinkClientInterceptorOptions<T>
174
+ ]>;
175
+ /**
176
+ * Maximum attempts before giving up retries.
177
+ *
178
+ * @default 3
179
+ */
180
+ maxAttempts?: Value<number, [
181
+ response: StandardLazyResponse,
182
+ options: StandardLinkClientInterceptorOptions<T>
183
+ ]>;
184
+ /**
185
+ * Maximum timeout in milliseconds to wait before giving up retries.
186
+ *
187
+ * @default 5 * 60 * 1000 (5 minutes)
188
+ */
189
+ timeout?: Value<number, [
190
+ response: StandardLazyResponse,
191
+ options: StandardLinkClientInterceptorOptions<T>
192
+ ]>;
193
+ }
194
+ /**
195
+ * The Retry After Plugin automatically retries requests based on server `Retry-After` headers.
196
+ * This is particularly useful for handling rate limiting and temporary server unavailability.
197
+ *
198
+ * @see {@link https://orpc.dev/docs/plugins/retry-after Retry After Plugin Docs}
199
+ */
200
+ declare class RetryAfterPlugin<T extends ClientContext> implements StandardLinkPlugin<T> {
201
+ private readonly condition;
202
+ private readonly maxAttempts;
203
+ private readonly timeout;
204
+ order: number;
205
+ constructor(options?: RetryAfterPluginOptions<T>);
206
+ init(options: StandardLinkOptions<T>): void;
207
+ private parseRetryAfterHeader;
208
+ private delayExecution;
209
+ }
210
+
165
211
  interface SimpleCsrfProtectionLinkPluginOptions<T extends ClientContext> {
166
212
  /**
167
213
  * The name of the header to check.
@@ -188,7 +234,7 @@ interface SimpleCsrfProtectionLinkPluginOptions<T extends ClientContext> {
188
234
  * It helps ensure that requests to your procedures originate from JavaScript code,
189
235
  * not from other sources like standard HTML forms or direct browser navigation.
190
236
  *
191
- * @see {@link https://orpc.unnoq.com/docs/plugins/simple-csrf-protection Simple CSRF Protection Plugin Docs}
237
+ * @see {@link https://orpc.dev/docs/plugins/simple-csrf-protection Simple CSRF Protection Plugin Docs}
192
238
  */
193
239
  declare class SimpleCsrfProtectionLinkPlugin<T extends ClientContext> implements StandardLinkPlugin<T> {
194
240
  private readonly headerName;
@@ -199,5 +245,5 @@ declare class SimpleCsrfProtectionLinkPlugin<T extends ClientContext> implements
199
245
  init(options: StandardLinkOptions<T>): void;
200
246
  }
201
247
 
202
- export { BatchLinkPlugin, ClientRetryPlugin, ClientRetryPluginInvalidEventIteratorRetryResponse, DedupeRequestsPlugin, SimpleCsrfProtectionLinkPlugin };
203
- export type { BatchLinkPluginGroup, BatchLinkPluginOptions, ClientRetryPluginAttemptOptions, ClientRetryPluginContext, ClientRetryPluginOptions, DedupeRequestsPluginGroup, DedupeRequestsPluginOptions, SimpleCsrfProtectionLinkPluginOptions };
248
+ export { BatchLinkPlugin, ClientRetryPlugin, ClientRetryPluginInvalidEventIteratorRetryResponse, DedupeRequestsPlugin, RetryAfterPlugin, SimpleCsrfProtectionLinkPlugin };
249
+ export type { BatchLinkPluginGroup, BatchLinkPluginOptions, ClientRetryPluginAttemptOptions, ClientRetryPluginContext, ClientRetryPluginOptions, DedupeRequestsPluginGroup, DedupeRequestsPluginOptions, RetryAfterPluginOptions, SimpleCsrfProtectionLinkPluginOptions };
@@ -1,8 +1,8 @@
1
1
  import { Value, Promisable } from '@orpc/shared';
2
- import { StandardHeaders, StandardRequest } from '@orpc/standard-server';
2
+ import { StandardHeaders, StandardRequest, StandardLazyResponse } 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.De8SW4Kw.js';
5
- import { b as ClientContext } from '../shared/client.BH1AYT_p.js';
4
+ import { S as StandardLinkClientInterceptorOptions, a as StandardLinkPlugin, b as StandardLinkOptions, c as StandardLinkInterceptorOptions } from '../shared/client.2jUAqzYU.js';
5
+ import { b as ClientContext } from '../shared/client.i2uoJbEp.js';
6
6
 
7
7
  interface BatchLinkPluginGroup<T extends ClientContext> {
8
8
  condition(options: StandardLinkClientInterceptorOptions<T>): boolean;
@@ -62,7 +62,7 @@ interface BatchLinkPluginOptions<T extends ClientContext> {
62
62
  * The Batch Requests Plugin allows you to combine multiple requests and responses into a single batch,
63
63
  * reducing the overhead of sending each one separately.
64
64
  *
65
- * @see {@link https://orpc.unnoq.com/docs/plugins/batch-requests Batch Requests Plugin Docs}
65
+ * @see {@link https://orpc.dev/docs/plugins/batch-requests Batch Requests Plugin Docs}
66
66
  */
67
67
  declare class BatchLinkPlugin<T extends ClientContext> implements StandardLinkPlugin<T> {
68
68
  #private;
@@ -103,7 +103,7 @@ interface DedupeRequestsPluginOptions<T extends ClientContext> {
103
103
  /**
104
104
  * Prevents duplicate requests by deduplicating similar ones to reduce server load.
105
105
  *
106
- * @see {@link https://orpc.unnoq.com/docs/plugins/dedupe-requests Dedupe Requests Plugin}
106
+ * @see {@link https://orpc.dev/docs/plugins/dedupe-requests Dedupe Requests Plugin}
107
107
  */
108
108
  declare class DedupeRequestsPlugin<T extends ClientContext> implements StandardLinkPlugin<T> {
109
109
  #private;
@@ -150,7 +150,7 @@ interface ClientRetryPluginOptions {
150
150
  /**
151
151
  * The Client Retry Plugin enables retrying client calls when errors occur.
152
152
  *
153
- * @see {@link https://orpc.unnoq.com/docs/plugins/client-retry Client Retry Plugin Docs}
153
+ * @see {@link https://orpc.dev/docs/plugins/client-retry Client Retry Plugin Docs}
154
154
  */
155
155
  declare class ClientRetryPlugin<T extends ClientRetryPluginContext> implements StandardLinkPlugin<T> {
156
156
  private readonly defaultRetry;
@@ -162,6 +162,52 @@ declare class ClientRetryPlugin<T extends ClientRetryPluginContext> implements S
162
162
  init(options: StandardLinkOptions<T>): void;
163
163
  }
164
164
 
165
+ interface RetryAfterPluginOptions<T extends ClientContext> {
166
+ /**
167
+ * Override condition to determine whether to retry or not.
168
+ *
169
+ * @default ((response) => response.status === 429 || response.status === 503)
170
+ */
171
+ condition?: Value<boolean, [
172
+ response: StandardLazyResponse,
173
+ options: StandardLinkClientInterceptorOptions<T>
174
+ ]>;
175
+ /**
176
+ * Maximum attempts before giving up retries.
177
+ *
178
+ * @default 3
179
+ */
180
+ maxAttempts?: Value<number, [
181
+ response: StandardLazyResponse,
182
+ options: StandardLinkClientInterceptorOptions<T>
183
+ ]>;
184
+ /**
185
+ * Maximum timeout in milliseconds to wait before giving up retries.
186
+ *
187
+ * @default 5 * 60 * 1000 (5 minutes)
188
+ */
189
+ timeout?: Value<number, [
190
+ response: StandardLazyResponse,
191
+ options: StandardLinkClientInterceptorOptions<T>
192
+ ]>;
193
+ }
194
+ /**
195
+ * The Retry After Plugin automatically retries requests based on server `Retry-After` headers.
196
+ * This is particularly useful for handling rate limiting and temporary server unavailability.
197
+ *
198
+ * @see {@link https://orpc.dev/docs/plugins/retry-after Retry After Plugin Docs}
199
+ */
200
+ declare class RetryAfterPlugin<T extends ClientContext> implements StandardLinkPlugin<T> {
201
+ private readonly condition;
202
+ private readonly maxAttempts;
203
+ private readonly timeout;
204
+ order: number;
205
+ constructor(options?: RetryAfterPluginOptions<T>);
206
+ init(options: StandardLinkOptions<T>): void;
207
+ private parseRetryAfterHeader;
208
+ private delayExecution;
209
+ }
210
+
165
211
  interface SimpleCsrfProtectionLinkPluginOptions<T extends ClientContext> {
166
212
  /**
167
213
  * The name of the header to check.
@@ -188,7 +234,7 @@ interface SimpleCsrfProtectionLinkPluginOptions<T extends ClientContext> {
188
234
  * It helps ensure that requests to your procedures originate from JavaScript code,
189
235
  * not from other sources like standard HTML forms or direct browser navigation.
190
236
  *
191
- * @see {@link https://orpc.unnoq.com/docs/plugins/simple-csrf-protection Simple CSRF Protection Plugin Docs}
237
+ * @see {@link https://orpc.dev/docs/plugins/simple-csrf-protection Simple CSRF Protection Plugin Docs}
192
238
  */
193
239
  declare class SimpleCsrfProtectionLinkPlugin<T extends ClientContext> implements StandardLinkPlugin<T> {
194
240
  private readonly headerName;
@@ -199,5 +245,5 @@ declare class SimpleCsrfProtectionLinkPlugin<T extends ClientContext> implements
199
245
  init(options: StandardLinkOptions<T>): void;
200
246
  }
201
247
 
202
- export { BatchLinkPlugin, ClientRetryPlugin, ClientRetryPluginInvalidEventIteratorRetryResponse, DedupeRequestsPlugin, SimpleCsrfProtectionLinkPlugin };
203
- export type { BatchLinkPluginGroup, BatchLinkPluginOptions, ClientRetryPluginAttemptOptions, ClientRetryPluginContext, ClientRetryPluginOptions, DedupeRequestsPluginGroup, DedupeRequestsPluginOptions, SimpleCsrfProtectionLinkPluginOptions };
248
+ export { BatchLinkPlugin, ClientRetryPlugin, ClientRetryPluginInvalidEventIteratorRetryResponse, DedupeRequestsPlugin, RetryAfterPlugin, SimpleCsrfProtectionLinkPlugin };
249
+ export type { BatchLinkPluginGroup, BatchLinkPluginOptions, ClientRetryPluginAttemptOptions, ClientRetryPluginContext, ClientRetryPluginOptions, DedupeRequestsPluginGroup, DedupeRequestsPluginOptions, RetryAfterPluginOptions, SimpleCsrfProtectionLinkPluginOptions };
@@ -1,6 +1,7 @@
1
1
  import { isAsyncIteratorObject, defer, value, splitInHalf, toArray, stringifyJSON, overlayProxy, AsyncIteratorClass } from '@orpc/shared';
2
2
  import { toBatchRequest, parseBatchResponse, toBatchAbortSignal } from '@orpc/standard-server/batch';
3
- import { replicateStandardLazyResponse, getEventMeta } from '@orpc/standard-server';
3
+ import { replicateStandardLazyResponse, getEventMeta, flattenHeader } from '@orpc/standard-server';
4
+ import { C as COMMON_ORPC_ERROR_DEFS } from '../shared/client.C6q5291t.mjs';
4
5
 
5
6
  class BatchLinkPlugin {
6
7
  groups;
@@ -371,6 +372,83 @@ class ClientRetryPlugin {
371
372
  }
372
373
  }
373
374
 
375
+ class RetryAfterPlugin {
376
+ condition;
377
+ maxAttempts;
378
+ timeout;
379
+ order = 19e5;
380
+ constructor(options = {}) {
381
+ this.condition = options.condition ?? ((response) => response.status === COMMON_ORPC_ERROR_DEFS.TOO_MANY_REQUESTS.status || response.status === COMMON_ORPC_ERROR_DEFS.SERVICE_UNAVAILABLE.status);
382
+ this.maxAttempts = options.maxAttempts ?? 3;
383
+ this.timeout = options.timeout ?? 5 * 60 * 1e3;
384
+ }
385
+ init(options) {
386
+ options.clientInterceptors ??= [];
387
+ options.clientInterceptors.push(async (interceptorOptions) => {
388
+ const startTime = Date.now();
389
+ let attemptCount = 0;
390
+ while (true) {
391
+ attemptCount++;
392
+ const response = await interceptorOptions.next();
393
+ if (!value(this.condition, response, interceptorOptions)) {
394
+ return response;
395
+ }
396
+ const retryAfterHeader = flattenHeader(response.headers["retry-after"]);
397
+ const retryAfterMs = this.parseRetryAfterHeader(retryAfterHeader);
398
+ if (retryAfterMs === void 0) {
399
+ return response;
400
+ }
401
+ if (attemptCount >= value(this.maxAttempts, response, interceptorOptions)) {
402
+ return response;
403
+ }
404
+ const timeoutMs = value(this.timeout, response, interceptorOptions);
405
+ const elapsedTime = Date.now() - startTime;
406
+ if (elapsedTime + retryAfterMs > timeoutMs) {
407
+ return response;
408
+ }
409
+ await this.delayExecution(retryAfterMs, interceptorOptions.signal);
410
+ if (interceptorOptions.signal?.aborted) {
411
+ return response;
412
+ }
413
+ }
414
+ });
415
+ }
416
+ parseRetryAfterHeader(value2) {
417
+ value2 = value2?.trim();
418
+ if (!value2) {
419
+ return void 0;
420
+ }
421
+ const seconds = Number(value2);
422
+ if (Number.isFinite(seconds)) {
423
+ return Math.max(0, seconds * 1e3);
424
+ }
425
+ const retryDate = Date.parse(value2);
426
+ if (!Number.isNaN(retryDate)) {
427
+ return Math.max(0, retryDate - Date.now());
428
+ }
429
+ return void 0;
430
+ }
431
+ delayExecution(ms, signal) {
432
+ return new Promise((resolve) => {
433
+ if (signal?.aborted) {
434
+ resolve();
435
+ return;
436
+ }
437
+ let timeout;
438
+ const onAbort = () => {
439
+ clearTimeout(timeout);
440
+ timeout = void 0;
441
+ resolve();
442
+ };
443
+ signal?.addEventListener("abort", onAbort, { once: true });
444
+ timeout = setTimeout(() => {
445
+ signal?.removeEventListener("abort", onAbort);
446
+ resolve();
447
+ }, ms);
448
+ });
449
+ }
450
+ }
451
+
374
452
  class SimpleCsrfProtectionLinkPlugin {
375
453
  headerName;
376
454
  headerValue;
@@ -404,4 +482,4 @@ class SimpleCsrfProtectionLinkPlugin {
404
482
  }
405
483
  }
406
484
 
407
- export { BatchLinkPlugin, ClientRetryPlugin, ClientRetryPluginInvalidEventIteratorRetryResponse, DedupeRequestsPlugin, SimpleCsrfProtectionLinkPlugin };
485
+ export { BatchLinkPlugin, ClientRetryPlugin, ClientRetryPluginInvalidEventIteratorRetryResponse, DedupeRequestsPlugin, RetryAfterPlugin, SimpleCsrfProtectionLinkPlugin };
@@ -1,6 +1,6 @@
1
1
  import { Interceptor } from '@orpc/shared';
2
2
  import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
3
- import { b as ClientContext, c as ClientOptions, C as ClientLink } from './client.BH1AYT_p.js';
3
+ import { b as ClientContext, c as ClientOptions, C as ClientLink } from './client.i2uoJbEp.js';
4
4
 
5
5
  interface StandardLinkPlugin<T extends ClientContext> {
6
6
  order?: number;
@@ -1,5 +1,5 @@
1
- import { b as ClientContext, c as ClientOptions, f as HTTPMethod } from './client.BH1AYT_p.js';
2
- import { e as StandardLinkCodec, b as StandardLinkOptions, d as StandardLink, f as StandardLinkClient } from './client.De8SW4Kw.js';
1
+ import { b as ClientContext, c as ClientOptions, f as HTTPMethod } from './client.i2uoJbEp.js';
2
+ import { e as StandardLinkCodec, b as StandardLinkOptions, d as StandardLink, f as StandardLinkClient } from './client.2jUAqzYU.js';
3
3
  import { Segment, Value, Promisable } from '@orpc/shared';
4
4
  import { StandardHeaders, StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
5
5
 
@@ -1,5 +1,5 @@
1
- import { b as ClientContext, c as ClientOptions, f as HTTPMethod } from './client.BH1AYT_p.mjs';
2
- import { e as StandardLinkCodec, b as StandardLinkOptions, d as StandardLink, f as StandardLinkClient } from './client.CPgZaUox.mjs';
1
+ import { b as ClientContext, c as ClientOptions, f as HTTPMethod } from './client.i2uoJbEp.mjs';
2
+ import { e as StandardLinkCodec, b as StandardLinkOptions, d as StandardLink, f as StandardLinkClient } from './client.CpCa3si8.mjs';
3
3
  import { Segment, Value, Promisable } from '@orpc/shared';
4
4
  import { StandardHeaders, StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
5
5
 
@@ -0,0 +1,40 @@
1
+ import { AsyncIteratorClass, isTypescriptObject } from '@orpc/shared';
2
+ import { getEventMeta, withEventMeta } from '@orpc/standard-server';
3
+
4
+ function mapEventIterator(iterator, maps) {
5
+ const mapError = async (error) => {
6
+ let mappedError = await maps.error(error);
7
+ if (mappedError !== error) {
8
+ const meta = getEventMeta(error);
9
+ if (meta && isTypescriptObject(mappedError)) {
10
+ mappedError = withEventMeta(mappedError, meta);
11
+ }
12
+ }
13
+ return mappedError;
14
+ };
15
+ return new AsyncIteratorClass(async () => {
16
+ const { done, value } = await (async () => {
17
+ try {
18
+ return await iterator.next();
19
+ } catch (error) {
20
+ throw await mapError(error);
21
+ }
22
+ })();
23
+ let mappedValue = await maps.value(value, done);
24
+ if (mappedValue !== value) {
25
+ const meta = getEventMeta(value);
26
+ if (meta && isTypescriptObject(mappedValue)) {
27
+ mappedValue = withEventMeta(mappedValue, meta);
28
+ }
29
+ }
30
+ return { done, value: mappedValue };
31
+ }, async () => {
32
+ try {
33
+ await iterator.return?.();
34
+ } catch (error) {
35
+ throw await mapError(error);
36
+ }
37
+ });
38
+ }
39
+
40
+ export { mapEventIterator as m };
@@ -1,7 +1,8 @@
1
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, d as isORPCErrorStatus, e as isORPCErrorJson, g as createORPCErrorFromJson, c as ORPCError, m as mapEventIterator, t as toORPCError } from './client.CgJqIxhb.mjs';
3
+ import { C as COMMON_ORPC_ERROR_DEFS, d as isORPCErrorStatus, e as isORPCErrorJson, g as createORPCErrorFromJson, c as ORPCError, t as toORPCError } from './client.C6q5291t.mjs';
4
4
  import { toStandardHeaders as toStandardHeaders$1 } from '@orpc/standard-server-fetch';
5
+ import { m as mapEventIterator } from './client.BLtwTQUg.mjs';
5
6
 
6
7
  class CompositeStandardLinkPlugin {
7
8
  plugins;
@@ -1,8 +1,7 @@
1
- import { resolveMaybeOptionalOptions, getConstructor, isObject, AsyncIteratorClass, isTypescriptObject } from '@orpc/shared';
2
- import { getEventMeta, withEventMeta } from '@orpc/standard-server';
1
+ import { resolveMaybeOptionalOptions, getConstructor, isObject } from '@orpc/shared';
3
2
 
4
3
  const ORPC_CLIENT_PACKAGE_NAME = "@orpc/client";
5
- const ORPC_CLIENT_PACKAGE_VERSION = "0.0.0-next.fe89a39";
4
+ const ORPC_CLIENT_PACKAGE_VERSION = "0.0.0-next.ff2168f";
6
5
 
7
6
  const COMMON_ORPC_ERROR_DEFS = {
8
7
  BAD_REQUEST: {
@@ -169,40 +168,4 @@ function createORPCErrorFromJson(json, options = {}) {
169
168
  });
170
169
  }
171
170
 
172
- function mapEventIterator(iterator, maps) {
173
- const mapError = async (error) => {
174
- let mappedError = await maps.error(error);
175
- if (mappedError !== error) {
176
- const meta = getEventMeta(error);
177
- if (meta && isTypescriptObject(mappedError)) {
178
- mappedError = withEventMeta(mappedError, meta);
179
- }
180
- }
181
- return mappedError;
182
- };
183
- return new AsyncIteratorClass(async () => {
184
- const { done, value } = await (async () => {
185
- try {
186
- return await iterator.next();
187
- } catch (error) {
188
- throw await mapError(error);
189
- }
190
- })();
191
- let mappedValue = await maps.value(value, done);
192
- if (mappedValue !== value) {
193
- const meta = getEventMeta(value);
194
- if (meta && isTypescriptObject(mappedValue)) {
195
- mappedValue = withEventMeta(mappedValue, meta);
196
- }
197
- }
198
- return { done, value: mappedValue };
199
- }, async () => {
200
- try {
201
- await iterator.return?.();
202
- } catch (error) {
203
- throw await mapError(error);
204
- }
205
- });
206
- }
207
-
208
- export { COMMON_ORPC_ERROR_DEFS as C, ORPC_CLIENT_PACKAGE_NAME as O, ORPC_CLIENT_PACKAGE_VERSION as a, fallbackORPCErrorMessage as b, ORPCError as c, isORPCErrorStatus as d, isORPCErrorJson as e, fallbackORPCErrorStatus as f, createORPCErrorFromJson as g, isDefinedError as i, mapEventIterator as m, toORPCError as t };
171
+ export { COMMON_ORPC_ERROR_DEFS as C, ORPC_CLIENT_PACKAGE_NAME as O, ORPC_CLIENT_PACKAGE_VERSION as a, fallbackORPCErrorMessage as b, ORPCError as c, isORPCErrorStatus as d, isORPCErrorJson as e, fallbackORPCErrorStatus as f, createORPCErrorFromJson as g, isDefinedError as i, toORPCError as t };
@@ -1,6 +1,6 @@
1
1
  import { Interceptor } from '@orpc/shared';
2
2
  import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
3
- import { b as ClientContext, c as ClientOptions, C as ClientLink } from './client.BH1AYT_p.mjs';
3
+ import { b as ClientContext, c as ClientOptions, C as ClientLink } from './client.i2uoJbEp.mjs';
4
4
 
5
5
  interface StandardLinkPlugin<T extends ClientContext> {
6
6
  order?: number;
@@ -64,7 +64,7 @@ type InferClientBodyOutputs<T extends NestedClient<any>> = T extends Client<any,
64
64
  [K in keyof T]: T[K] extends NestedClient<any> ? InferClientBodyOutputs<T[K]> : never;
65
65
  };
66
66
  /**
67
- * Recursively infers the **error types** from a client when you use [type-safe errors](https://orpc.unnoq.com/docs/error-handling#type‐safe-error-handling).
67
+ * Recursively infers the **error types** from a client when you use [type-safe errors](https://orpc.dev/docs/error-handling#type‐safe-error-handling).
68
68
  *
69
69
  * Produces a nested map where each endpoint's error type is preserved.
70
70
  */
@@ -72,7 +72,7 @@ type InferClientErrors<T extends NestedClient<any>> = T extends Client<any, any,
72
72
  [K in keyof T]: T[K] extends NestedClient<any> ? InferClientErrors<T[K]> : never;
73
73
  };
74
74
  /**
75
- * Recursively infers a **union of all error types** from a client when you use [type-safe errors](https://orpc.unnoq.com/docs/error-handling#type‐safe-error-handling).
75
+ * Recursively infers a **union of all error types** from a client when you use [type-safe errors](https://orpc.dev/docs/error-handling#type‐safe-error-handling).
76
76
  *
77
77
  * Useful when you want to handle all possible errors from any endpoint at once.
78
78
  */
@@ -64,7 +64,7 @@ type InferClientBodyOutputs<T extends NestedClient<any>> = T extends Client<any,
64
64
  [K in keyof T]: T[K] extends NestedClient<any> ? InferClientBodyOutputs<T[K]> : never;
65
65
  };
66
66
  /**
67
- * Recursively infers the **error types** from a client when you use [type-safe errors](https://orpc.unnoq.com/docs/error-handling#type‐safe-error-handling).
67
+ * Recursively infers the **error types** from a client when you use [type-safe errors](https://orpc.dev/docs/error-handling#type‐safe-error-handling).
68
68
  *
69
69
  * Produces a nested map where each endpoint's error type is preserved.
70
70
  */
@@ -72,7 +72,7 @@ type InferClientErrors<T extends NestedClient<any>> = T extends Client<any, any,
72
72
  [K in keyof T]: T[K] extends NestedClient<any> ? InferClientErrors<T[K]> : never;
73
73
  };
74
74
  /**
75
- * Recursively infers a **union of all error types** from a client when you use [type-safe errors](https://orpc.unnoq.com/docs/error-handling#type‐safe-error-handling).
75
+ * Recursively infers a **union of all error types** from a client when you use [type-safe errors](https://orpc.dev/docs/error-handling#type‐safe-error-handling).
76
76
  *
77
77
  * Useful when you want to handle all possible errors from any endpoint at once.
78
78
  */
package/package.json CHANGED
@@ -1,16 +1,15 @@
1
1
  {
2
2
  "name": "@orpc/client",
3
3
  "type": "module",
4
- "version": "0.0.0-next.fe89a39",
4
+ "version": "0.0.0-next.ff2168f",
5
5
  "license": "MIT",
6
- "homepage": "https://orpc.unnoq.com",
6
+ "homepage": "https://orpc.dev",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "git+https://github.com/unnoq/orpc.git",
9
+ "url": "git+https://github.com/middleapi/orpc.git",
10
10
  "directory": "packages/client"
11
11
  },
12
12
  "keywords": [
13
- "unnoq",
14
13
  "orpc"
15
14
  ],
16
15
  "exports": {
@@ -49,13 +48,13 @@
49
48
  "dist"
50
49
  ],
51
50
  "dependencies": {
52
- "@orpc/shared": "0.0.0-next.fe89a39",
53
- "@orpc/standard-server-peer": "0.0.0-next.fe89a39",
54
- "@orpc/standard-server": "0.0.0-next.fe89a39",
55
- "@orpc/standard-server-fetch": "0.0.0-next.fe89a39"
51
+ "@orpc/standard-server": "0.0.0-next.ff2168f",
52
+ "@orpc/standard-server-fetch": "0.0.0-next.ff2168f",
53
+ "@orpc/shared": "0.0.0-next.ff2168f",
54
+ "@orpc/standard-server-peer": "0.0.0-next.ff2168f"
56
55
  },
57
56
  "devDependencies": {
58
- "zod": "^4.1.12"
57
+ "zod": "^4.3.2"
59
58
  },
60
59
  "scripts": {
61
60
  "build": "unbuild",