@zudojs/rpc 0.0.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.
Files changed (147) hide show
  1. package/README.md +58 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/index.d.ts +45 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +39 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/rpc/client/index.d.ts +3 -0
  8. package/dist/rpc/client/index.d.ts.map +1 -0
  9. package/dist/rpc/client/index.js +2 -0
  10. package/dist/rpc/client/index.js.map +1 -0
  11. package/dist/rpc/client/rpcClient.core.d.ts +26 -0
  12. package/dist/rpc/client/rpcClient.core.d.ts.map +1 -0
  13. package/dist/rpc/client/rpcClient.core.js +60 -0
  14. package/dist/rpc/client/rpcClient.core.js.map +1 -0
  15. package/dist/rpc/constants/index.d.ts +2 -0
  16. package/dist/rpc/constants/index.d.ts.map +1 -0
  17. package/dist/rpc/constants/index.js +2 -0
  18. package/dist/rpc/constants/index.js.map +1 -0
  19. package/dist/rpc/constants/rpcConstants.core.d.ts +30 -0
  20. package/dist/rpc/constants/rpcConstants.core.d.ts.map +1 -0
  21. package/dist/rpc/constants/rpcConstants.core.js +30 -0
  22. package/dist/rpc/constants/rpcConstants.core.js.map +1 -0
  23. package/dist/rpc/context/index.d.ts +3 -0
  24. package/dist/rpc/context/index.d.ts.map +1 -0
  25. package/dist/rpc/context/index.js +2 -0
  26. package/dist/rpc/context/index.js.map +1 -0
  27. package/dist/rpc/context/rpcContext.type.d.ts +18 -0
  28. package/dist/rpc/context/rpcContext.type.d.ts.map +1 -0
  29. package/dist/rpc/context/rpcContext.type.js +20 -0
  30. package/dist/rpc/context/rpcContext.type.js.map +1 -0
  31. package/dist/rpc/dispatcher/index.d.ts +2 -0
  32. package/dist/rpc/dispatcher/index.d.ts.map +1 -0
  33. package/dist/rpc/dispatcher/index.js +2 -0
  34. package/dist/rpc/dispatcher/index.js.map +1 -0
  35. package/dist/rpc/dispatcher/rpcDispatcher.core.d.ts +19 -0
  36. package/dist/rpc/dispatcher/rpcDispatcher.core.d.ts.map +1 -0
  37. package/dist/rpc/dispatcher/rpcDispatcher.core.js +38 -0
  38. package/dist/rpc/dispatcher/rpcDispatcher.core.js.map +1 -0
  39. package/dist/rpc/errors/index.d.ts +3 -0
  40. package/dist/rpc/errors/index.d.ts.map +1 -0
  41. package/dist/rpc/errors/index.js +2 -0
  42. package/dist/rpc/errors/index.js.map +1 -0
  43. package/dist/rpc/errors/rpc.errors.d.ts +3 -0
  44. package/dist/rpc/errors/rpc.errors.d.ts.map +1 -0
  45. package/dist/rpc/errors/rpc.errors.js +2 -0
  46. package/dist/rpc/errors/rpc.errors.js.map +1 -0
  47. package/dist/rpc/interceptor/index.d.ts +3 -0
  48. package/dist/rpc/interceptor/index.d.ts.map +1 -0
  49. package/dist/rpc/interceptor/index.js +2 -0
  50. package/dist/rpc/interceptor/index.js.map +1 -0
  51. package/dist/rpc/interceptor/rpcInterceptor.type.d.ts +12 -0
  52. package/dist/rpc/interceptor/rpcInterceptor.type.d.ts.map +1 -0
  53. package/dist/rpc/interceptor/rpcInterceptor.type.js +11 -0
  54. package/dist/rpc/interceptor/rpcInterceptor.type.js.map +1 -0
  55. package/dist/rpc/middleware/index.d.ts +3 -0
  56. package/dist/rpc/middleware/index.d.ts.map +1 -0
  57. package/dist/rpc/middleware/index.js +2 -0
  58. package/dist/rpc/middleware/index.js.map +1 -0
  59. package/dist/rpc/middleware/rpcMiddleware.core.d.ts +17 -0
  60. package/dist/rpc/middleware/rpcMiddleware.core.d.ts.map +1 -0
  61. package/dist/rpc/middleware/rpcMiddleware.core.js +29 -0
  62. package/dist/rpc/middleware/rpcMiddleware.core.js.map +1 -0
  63. package/dist/rpc/procedure/index.d.ts +5 -0
  64. package/dist/rpc/procedure/index.d.ts.map +1 -0
  65. package/dist/rpc/procedure/index.js +4 -0
  66. package/dist/rpc/procedure/index.js.map +1 -0
  67. package/dist/rpc/procedure/rpcProcedure.type.d.ts +27 -0
  68. package/dist/rpc/procedure/rpcProcedure.type.d.ts.map +1 -0
  69. package/dist/rpc/procedure/rpcProcedure.type.js +11 -0
  70. package/dist/rpc/procedure/rpcProcedure.type.js.map +1 -0
  71. package/dist/rpc/procedure/rpcProcedureRegistry.core.d.ts +40 -0
  72. package/dist/rpc/procedure/rpcProcedureRegistry.core.d.ts.map +1 -0
  73. package/dist/rpc/procedure/rpcProcedureRegistry.core.js +66 -0
  74. package/dist/rpc/procedure/rpcProcedureRegistry.core.js.map +1 -0
  75. package/dist/rpc/procedure/rpcProcedureRouter.core.d.ts +37 -0
  76. package/dist/rpc/procedure/rpcProcedureRouter.core.d.ts.map +1 -0
  77. package/dist/rpc/procedure/rpcProcedureRouter.core.js +59 -0
  78. package/dist/rpc/procedure/rpcProcedureRouter.core.js.map +1 -0
  79. package/dist/rpc/reliability/cancellation/rpcCancellation.helper.d.ts +14 -0
  80. package/dist/rpc/reliability/cancellation/rpcCancellation.helper.d.ts.map +1 -0
  81. package/dist/rpc/reliability/cancellation/rpcCancellation.helper.js +21 -0
  82. package/dist/rpc/reliability/cancellation/rpcCancellation.helper.js.map +1 -0
  83. package/dist/rpc/reliability/deadline/rpcDeadline.helper.d.ts +18 -0
  84. package/dist/rpc/reliability/deadline/rpcDeadline.helper.d.ts.map +1 -0
  85. package/dist/rpc/reliability/deadline/rpcDeadline.helper.js +27 -0
  86. package/dist/rpc/reliability/deadline/rpcDeadline.helper.js.map +1 -0
  87. package/dist/rpc/reliability/index.d.ts +6 -0
  88. package/dist/rpc/reliability/index.d.ts.map +1 -0
  89. package/dist/rpc/reliability/index.js +5 -0
  90. package/dist/rpc/reliability/index.js.map +1 -0
  91. package/dist/rpc/reliability/retry/rpcRetry.helper.d.ts +32 -0
  92. package/dist/rpc/reliability/retry/rpcRetry.helper.d.ts.map +1 -0
  93. package/dist/rpc/reliability/retry/rpcRetry.helper.js +50 -0
  94. package/dist/rpc/reliability/retry/rpcRetry.helper.js.map +1 -0
  95. package/dist/rpc/reliability/timeout/rpcTimeout.helper.d.ts +14 -0
  96. package/dist/rpc/reliability/timeout/rpcTimeout.helper.d.ts.map +1 -0
  97. package/dist/rpc/reliability/timeout/rpcTimeout.helper.js +22 -0
  98. package/dist/rpc/reliability/timeout/rpcTimeout.helper.js.map +1 -0
  99. package/dist/rpc/server/index.d.ts +2 -0
  100. package/dist/rpc/server/index.d.ts.map +1 -0
  101. package/dist/rpc/server/index.js +2 -0
  102. package/dist/rpc/server/index.js.map +1 -0
  103. package/dist/rpc/server/rpcServer.core.d.ts +27 -0
  104. package/dist/rpc/server/rpcServer.core.d.ts.map +1 -0
  105. package/dist/rpc/server/rpcServer.core.js +59 -0
  106. package/dist/rpc/server/rpcServer.core.js.map +1 -0
  107. package/dist/rpc/streaming/index.d.ts +3 -0
  108. package/dist/rpc/streaming/index.d.ts.map +1 -0
  109. package/dist/rpc/streaming/index.js +2 -0
  110. package/dist/rpc/streaming/index.js.map +1 -0
  111. package/dist/rpc/streaming/rpcStreaming.type.d.ts +22 -0
  112. package/dist/rpc/streaming/rpcStreaming.type.d.ts.map +1 -0
  113. package/dist/rpc/streaming/rpcStreaming.type.js +15 -0
  114. package/dist/rpc/streaming/rpcStreaming.type.js.map +1 -0
  115. package/dist/rpc/transport/index.d.ts +2 -0
  116. package/dist/rpc/transport/index.d.ts.map +1 -0
  117. package/dist/rpc/transport/index.js +2 -0
  118. package/dist/rpc/transport/index.js.map +1 -0
  119. package/dist/rpc/transport/rpcTransport.type.d.ts +17 -0
  120. package/dist/rpc/transport/rpcTransport.type.d.ts.map +1 -0
  121. package/dist/rpc/transport/rpcTransport.type.js +2 -0
  122. package/dist/rpc/transport/rpcTransport.type.js.map +1 -0
  123. package/dist/rpc/types/index.d.ts +13 -0
  124. package/dist/rpc/types/index.d.ts.map +1 -0
  125. package/dist/rpc/types/index.js +9 -0
  126. package/dist/rpc/types/index.js.map +1 -0
  127. package/dist/rpc/types/rpcMetadata.type.d.ts +31 -0
  128. package/dist/rpc/types/rpcMetadata.type.d.ts.map +1 -0
  129. package/dist/rpc/types/rpcMetadata.type.js +7 -0
  130. package/dist/rpc/types/rpcMetadata.type.js.map +1 -0
  131. package/dist/rpc/types/rpcProcedureName.type.d.ts +12 -0
  132. package/dist/rpc/types/rpcProcedureName.type.d.ts.map +1 -0
  133. package/dist/rpc/types/rpcProcedureName.type.js +7 -0
  134. package/dist/rpc/types/rpcProcedureName.type.js.map +1 -0
  135. package/dist/rpc/types/rpcRequest.type.d.ts +27 -0
  136. package/dist/rpc/types/rpcRequest.type.d.ts.map +1 -0
  137. package/dist/rpc/types/rpcRequest.type.js +11 -0
  138. package/dist/rpc/types/rpcRequest.type.js.map +1 -0
  139. package/dist/rpc/types/rpcResponse.type.d.ts +32 -0
  140. package/dist/rpc/types/rpcResponse.type.d.ts.map +1 -0
  141. package/dist/rpc/types/rpcResponse.type.js +33 -0
  142. package/dist/rpc/types/rpcResponse.type.js.map +1 -0
  143. package/dist/testing/index.d.ts +11 -0
  144. package/dist/testing/index.d.ts.map +1 -0
  145. package/dist/testing/index.js +10 -0
  146. package/dist/testing/index.js.map +1 -0
  147. package/package.json +53 -0
@@ -0,0 +1,26 @@
1
+ import type { RPCTransport } from "../transport/rpcTransport.type.js";
2
+ /**
3
+ * Options for RPC client calls.
4
+ */
5
+ export interface RPCCallOptions {
6
+ readonly timeout?: number;
7
+ readonly signal?: AbortSignal;
8
+ readonly metadata?: Record<string, string | number | boolean | undefined>;
9
+ }
10
+ /**
11
+ * RPC client for invoking remote procedures.
12
+ */
13
+ export declare class RPCClient {
14
+ private readonly transport;
15
+ private readonly pending;
16
+ constructor(transport: RPCTransport);
17
+ /**
18
+ * Calls a remote procedure.
19
+ */
20
+ call<TInput = unknown, TOutput = unknown>(procedure: string, input: TInput, options?: RPCCallOptions): Promise<TOutput>;
21
+ /**
22
+ * Creates a timeout promise for an RPC call.
23
+ */
24
+ private createTimeout;
25
+ }
26
+ //# sourceMappingURL=rpcClient.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcClient.core.d.ts","sourceRoot":"","sources":["../../../src/rpc/client/rpcClient.core.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAWtE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAE9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;CAC3E;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IAEzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGpB;IAEJ,YAAY,SAAS,EAAE,YAAY,EAElC;IAED;;OAEG;IACG,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAC5C,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,OAAO,CAAC,CA2BlB;IAED;;OAEG;IACH,OAAO,CAAC,aAAa;CAmBtB"}
@@ -0,0 +1,60 @@
1
+ import { createRPCRequest } from "../types/rpcRequest.type.js";
2
+ import { RPCProcedureNotFoundError } from "../errors/rpc.errors.js";
3
+ import { DEFAULT_RPC_TIMEOUT, MAX_PENDING_REQUESTS, } from "../constants/rpcConstants.core.js";
4
+ /**
5
+ * RPC client for invoking remote procedures.
6
+ */
7
+ export class RPCClient {
8
+ transport;
9
+ pending = new Map();
10
+ constructor(transport) {
11
+ this.transport = transport;
12
+ }
13
+ /**
14
+ * Calls a remote procedure.
15
+ */
16
+ async call(procedure, input, options = {}) {
17
+ const id = crypto.randomUUID();
18
+ const timeout = options.timeout ?? DEFAULT_RPC_TIMEOUT;
19
+ if (this.pending.size >= MAX_PENDING_REQUESTS) {
20
+ throw new Error("Too many pending RPC requests.");
21
+ }
22
+ const response = await Promise.race([
23
+ this.transport.send(createRPCRequest({
24
+ id,
25
+ procedure,
26
+ payload: input,
27
+ metadata: options.metadata,
28
+ })),
29
+ this.createTimeout(id, timeout),
30
+ ]);
31
+ if (!response.success) {
32
+ const error = new Error(response.error?.message ?? "RPC call failed.");
33
+ error.code = response.error?.code;
34
+ throw error;
35
+ }
36
+ return response.result;
37
+ }
38
+ /**
39
+ * Creates a timeout promise for an RPC call.
40
+ */
41
+ createTimeout(id, timeout) {
42
+ return new Promise((resolve, reject) => {
43
+ const timer = setTimeout(() => {
44
+ this.pending.delete(id);
45
+ reject(new Error(`RPC call timed out after ${timeout}ms.`));
46
+ }, timeout);
47
+ this.pending.set(id, {
48
+ resolve: (response) => {
49
+ clearTimeout(timer);
50
+ resolve(response);
51
+ },
52
+ reject: (error) => {
53
+ clearTimeout(timer);
54
+ reject(error);
55
+ },
56
+ });
57
+ });
58
+ }
59
+ }
60
+ //# sourceMappingURL=rpcClient.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcClient.core.js","sourceRoot":"","sources":["../../../src/rpc/client/rpcClient.core.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAa3C;;GAEG;AACH,MAAM,OAAO,SAAS;IACH,SAAS,CAAe;IAExB,OAAO,GAAG,IAAI,GAAG,EAG/B,CAAC;IAEJ,YAAY,SAAuB;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CACR,SAAiB,EACjB,KAAa,EACb,OAAO,GAAmB,EAAE;QAE5B,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,mBAAmB,CAAC;QAEvD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,oBAAoB,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,gBAAgB,CAAC;gBACf,EAAE;gBACF,SAAS;gBACT,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC,CACH;YACD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,kBAAkB,CAAC,CAAC;YACtE,KAAsC,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;YACpE,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,QAAQ,CAAC,MAAiB,CAAC;IACpC,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,EAAU,EAAE,OAAe;QAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,OAAO,KAAK,CAAC,CAAC,CAAC;YAC9D,CAAC,EAAE,OAAO,CAAC,CAAC;YAEZ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE;gBACnB,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;oBACpB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpB,CAAC;gBACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;oBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export { DEFAULT_RPC_TIMEOUT, MAX_RPC_PAYLOAD_SIZE, MAX_PENDING_REQUESTS, MAX_MIDDLEWARE, MAX_PROCEDURES, PROCEDURE_NAME_PATTERN, } from "./rpcConstants.core.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rpc/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,sBAAsB,GACvB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { DEFAULT_RPC_TIMEOUT, MAX_RPC_PAYLOAD_SIZE, MAX_PENDING_REQUESTS, MAX_MIDDLEWARE, MAX_PROCEDURES, PROCEDURE_NAME_PATTERN, } from "./rpcConstants.core.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rpc/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,sBAAsB,GACvB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @zudojs/rpc/constants
3
+ *
4
+ * Shared constants for the RPC package.
5
+ */
6
+ /**
7
+ * Default timeout for RPC operations (30 seconds).
8
+ */
9
+ export declare const DEFAULT_RPC_TIMEOUT = 30000;
10
+ /**
11
+ * Maximum payload size for RPC messages (1MB).
12
+ */
13
+ export declare const MAX_RPC_PAYLOAD_SIZE: number;
14
+ /**
15
+ * Maximum number of pending requests allowed in the client.
16
+ */
17
+ export declare const MAX_PENDING_REQUESTS = 1024;
18
+ /**
19
+ * Maximum number of middleware entries allowed in a stack.
20
+ */
21
+ export declare const MAX_MIDDLEWARE = 32;
22
+ /**
23
+ * Maximum number of procedures allowed in a registry.
24
+ */
25
+ export declare const MAX_PROCEDURES = 4096;
26
+ /**
27
+ * Procedure name pattern: dot-separated lowercase identifiers.
28
+ */
29
+ export declare const PROCEDURE_NAME_PATTERN: RegExp;
30
+ //# sourceMappingURL=rpcConstants.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcConstants.core.d.ts","sourceRoot":"","sources":["../../../src/rpc/constants/rpcConstants.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,oBAAoB,QAAc,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,sBAAsB,QACU,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @zudojs/rpc/constants
3
+ *
4
+ * Shared constants for the RPC package.
5
+ */
6
+ /**
7
+ * Default timeout for RPC operations (30 seconds).
8
+ */
9
+ export const DEFAULT_RPC_TIMEOUT = 30_000;
10
+ /**
11
+ * Maximum payload size for RPC messages (1MB).
12
+ */
13
+ export const MAX_RPC_PAYLOAD_SIZE = 1024 * 1024;
14
+ /**
15
+ * Maximum number of pending requests allowed in the client.
16
+ */
17
+ export const MAX_PENDING_REQUESTS = 1024;
18
+ /**
19
+ * Maximum number of middleware entries allowed in a stack.
20
+ */
21
+ export const MAX_MIDDLEWARE = 32;
22
+ /**
23
+ * Maximum number of procedures allowed in a registry.
24
+ */
25
+ export const MAX_PROCEDURES = 4096;
26
+ /**
27
+ * Procedure name pattern: dot-separated lowercase identifiers.
28
+ */
29
+ export const PROCEDURE_NAME_PATTERN = /^[a-z][a-zA-Z0-9]*(\.[a-z][a-zA-Z0-9]*)+$/;
30
+ //# sourceMappingURL=rpcConstants.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcConstants.core.js","sourceRoot":"","sources":["../../../src/rpc/constants/rpcConstants.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GACjC,2CAA2C,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { RPCContext } from "./rpcContext.type.js";
2
+ export { createRPCContext } from "./rpcContext.type.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rpc/context/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createRPCContext } from "./rpcContext.type.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rpc/context/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { RPCMetadata } from "../types/rpcMetadata.type.js";
2
+ import type { RPCRequest } from "../types/rpcRequest.type.js";
3
+ /**
4
+ * Context passed through the RPC execution pipeline.
5
+ */
6
+ export interface RPCContext {
7
+ readonly request: RPCRequest;
8
+ readonly metadata: RPCMetadata;
9
+ readonly signal: AbortSignal;
10
+ readonly state: Map<string, unknown>;
11
+ get<T>(key: string): T | undefined;
12
+ set<T>(key: string, value: T): void;
13
+ }
14
+ /**
15
+ * Creates a new RPC context.
16
+ */
17
+ export declare function createRPCContext(request: RPCRequest, signal: AbortSignal): RPCContext;
18
+ //# sourceMappingURL=rpcContext.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcContext.type.d.ts","sourceRoot":"","sources":["../../../src/rpc/context/rpcContext.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAE7B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAE/B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAErC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAEnC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;CACrC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,WAAW,GAClB,UAAU,CAiBZ"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Creates a new RPC context.
3
+ */
4
+ export function createRPCContext(request, signal) {
5
+ const state = new Map();
6
+ const context = {
7
+ request,
8
+ metadata: request.metadata,
9
+ signal,
10
+ state,
11
+ get(key) {
12
+ return state.get(key);
13
+ },
14
+ set(key, value) {
15
+ state.set(key, value);
16
+ },
17
+ };
18
+ return Object.freeze(context);
19
+ }
20
+ //# sourceMappingURL=rpcContext.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcContext.type.js","sourceRoot":"","sources":["../../../src/rpc/context/rpcContext.type.ts"],"names":[],"mappings":"AAqBA;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAmB,EACnB,MAAmB;IAEnB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IAEzC,MAAM,OAAO,GAAG;QACd,OAAO;QACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM;QACN,KAAK;QACL,GAAG,CAAI,GAAW;YAChB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAkB,CAAC;QACzC,CAAC;QACD,GAAG,CAAI,GAAW,EAAE,KAAQ;YAC1B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;KACF,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAe,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { RPCDispatcher } from "./rpcDispatcher.core.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rpc/dispatcher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { RPCDispatcher } from "./rpcDispatcher.core.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rpc/dispatcher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { RPCRequest } from "../types/rpcRequest.type.js";
2
+ import type { RPCResponse } from "../types/rpcResponse.type.js";
3
+ import type { RPCProcedure } from "../procedure/rpcProcedure.type.js";
4
+ import type { RPCMiddlewareStack } from "../middleware/rpcMiddleware.core.js";
5
+ /**
6
+ * Dispatches RPC requests to registered procedures.
7
+ */
8
+ export declare class RPCDispatcher {
9
+ private readonly registry;
10
+ private readonly middleware;
11
+ constructor(registry: {
12
+ require(name: string): RPCProcedure;
13
+ }, middleware: RPCMiddlewareStack);
14
+ /**
15
+ * Dispatches an RPC request.
16
+ */
17
+ dispatch(request: RPCRequest): Promise<RPCResponse>;
18
+ }
19
+ //# sourceMappingURL=rpcDispatcher.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcDispatcher.core.d.ts","sourceRoot":"","sources":["../../../src/rpc/dispatcher/rpcDispatcher.core.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAW9E;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAEvB;IAEF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD,YACE,QAAQ,EAAE;QAAE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAA;KAAE,EACjD,UAAU,EAAE,kBAAkB,EAI/B;IAED;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAuBxD;CACF"}
@@ -0,0 +1,38 @@
1
+ import { createRPCContext } from "../context/rpcContext.type.js";
2
+ import { createRPCResponse } from "../types/rpcResponse.type.js";
3
+ import { RPCProcedureNotFoundError, RPCValidationError, } from "../errors/rpc.errors.js";
4
+ /**
5
+ * Dispatches RPC requests to registered procedures.
6
+ */
7
+ export class RPCDispatcher {
8
+ registry;
9
+ middleware;
10
+ constructor(registry, middleware) {
11
+ this.registry = registry;
12
+ this.middleware = middleware;
13
+ }
14
+ /**
15
+ * Dispatches an RPC request.
16
+ */
17
+ async dispatch(request) {
18
+ const procedure = this.registry.require(request.procedure);
19
+ const signal = new AbortController().signal;
20
+ const context = createRPCContext(request, signal);
21
+ try {
22
+ const result = await this.middleware.execute(context, async () => {
23
+ return procedure.handler(request.payload, context);
24
+ });
25
+ return createRPCResponse(request.id, result);
26
+ }
27
+ catch (error) {
28
+ if (error instanceof RPCProcedureNotFoundError) {
29
+ throw error;
30
+ }
31
+ if (error instanceof RPCValidationError) {
32
+ throw error;
33
+ }
34
+ throw new Error(`Handler for procedure "${request.procedure}" threw: ${String(error)}`);
35
+ }
36
+ }
37
+ }
38
+ //# sourceMappingURL=rpcDispatcher.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcDispatcher.core.js","sourceRoot":"","sources":["../../../src/rpc/dispatcher/rpcDispatcher.core.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EACL,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,MAAM,OAAO,aAAa;IACP,QAAQ,CAEvB;IAEe,UAAU,CAAqB;IAEhD,YACE,QAAiD,EACjD,UAA8B;QAE9B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAmB;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC;QAC5C,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAElD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;gBAC/D,OAAO,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YAEH,OAAO,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;gBAC/C,MAAM,KAAK,CAAC;YACd,CAAC;YACD,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;gBACxC,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,KAAK,CACb,0BAA0B,OAAO,CAAC,SAAS,YAAY,MAAM,CAAC,KAAK,CAAC,EAAE,CACvE,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ export { RPCError, RPCProcedureNotFoundError, RPCInvalidRequestError, RPCValidationError, RPCAuthenticationError, RPCForbiddenError, RPCTimeoutError, RPCCancelledError, RPCInternalError, RPCTransportError, RPCSerializationError, RPCDeserializationError, RPCUnavailableError, RPCRateLimitedError, RPCDeadlineExceededError, RPCDuplicateProcedureError, createRPCError, isRPCError, } from "./rpc.errors.js";
2
+ export type { RPCErrorOptions } from "./rpc.errors.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rpc/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,cAAc,EACd,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { RPCError, RPCProcedureNotFoundError, RPCInvalidRequestError, RPCValidationError, RPCAuthenticationError, RPCForbiddenError, RPCTimeoutError, RPCCancelledError, RPCInternalError, RPCTransportError, RPCSerializationError, RPCDeserializationError, RPCUnavailableError, RPCRateLimitedError, RPCDeadlineExceededError, RPCDuplicateProcedureError, createRPCError, isRPCError, } from "./rpc.errors.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rpc/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,cAAc,EACd,UAAU,GACX,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { RPCError, RPCProcedureNotFoundError, RPCInvalidRequestError, RPCValidationError, RPCAuthenticationError, RPCForbiddenError, RPCTimeoutError, RPCCancelledError, RPCInternalError, RPCTransportError, RPCSerializationError, RPCDeserializationError, RPCUnavailableError, RPCRateLimitedError, RPCDeadlineExceededError, RPCDuplicateProcedureError, createRPCError, isRPCError, } from "@zudojs/errors";
2
+ export type { RPCErrorOptions } from "@zudojs/errors";
3
+ //# sourceMappingURL=rpc.errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.errors.d.ts","sourceRoot":"","sources":["../../../src/rpc/errors/rpc.errors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,cAAc,EACd,UAAU,GACX,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { RPCError, RPCProcedureNotFoundError, RPCInvalidRequestError, RPCValidationError, RPCAuthenticationError, RPCForbiddenError, RPCTimeoutError, RPCCancelledError, RPCInternalError, RPCTransportError, RPCSerializationError, RPCDeserializationError, RPCUnavailableError, RPCRateLimitedError, RPCDeadlineExceededError, RPCDuplicateProcedureError, createRPCError, isRPCError, } from "@zudojs/errors";
2
+ //# sourceMappingURL=rpc.errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.errors.js","sourceRoot":"","sources":["../../../src/rpc/errors/rpc.errors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,cAAc,EACd,UAAU,GACX,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { RPCInterceptor } from "./rpcInterceptor.type.js";
2
+ export { createNoopRPCInterceptor } from "./rpcInterceptor.type.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rpc/interceptor/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createNoopRPCInterceptor } from "./rpcInterceptor.type.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rpc/interceptor/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { RPCContext } from "../context/rpcContext.type.js";
2
+ /**
3
+ * Interceptor that wraps RPC procedure execution.
4
+ */
5
+ export interface RPCInterceptor {
6
+ intercept(context: RPCContext, next: () => Promise<unknown>): Promise<unknown>;
7
+ }
8
+ /**
9
+ * Creates a no-op interceptor.
10
+ */
11
+ export declare function createNoopRPCInterceptor(): RPCInterceptor;
12
+ //# sourceMappingURL=rpcInterceptor.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcInterceptor.type.d.ts","sourceRoot":"","sources":["../../../src/rpc/interceptor/rpcInterceptor.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,CACP,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAC3B,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,cAAc,CAMzD"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Creates a no-op interceptor.
3
+ */
4
+ export function createNoopRPCInterceptor() {
5
+ return {
6
+ async intercept(_context, next) {
7
+ return next();
8
+ },
9
+ };
10
+ }
11
+ //# sourceMappingURL=rpcInterceptor.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcInterceptor.type.js","sourceRoot":"","sources":["../../../src/rpc/interceptor/rpcInterceptor.type.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI;YAC5B,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { RPCMiddleware } from "./rpcMiddleware.core.js";
2
+ export { RPCMiddlewareStack } from "./rpcMiddleware.core.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rpc/middleware/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { RPCMiddlewareStack } from "./rpcMiddleware.core.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rpc/middleware/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { RPCContext } from "../context/rpcContext.type.js";
2
+ /**
3
+ * Middleware function for the RPC pipeline.
4
+ */
5
+ export type RPCMiddleware = (context: RPCContext, next: () => Promise<unknown>) => Promise<unknown>;
6
+ /**
7
+ * Stack of RPC middleware.
8
+ */
9
+ export declare class RPCMiddlewareStack {
10
+ private readonly middleware;
11
+ constructor(middleware?: RPCMiddleware[]);
12
+ /**
13
+ * Executes the middleware stack around the given handler.
14
+ */
15
+ execute(context: RPCContext, handler: () => Promise<unknown>): Promise<unknown>;
16
+ }
17
+ //# sourceMappingURL=rpcMiddleware.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcMiddleware.core.d.ts","sourceRoot":"","sources":["../../../src/rpc/middleware/rpcMiddleware.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KACzB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IAEtD,YAAY,UAAU,GAAE,aAAa,EAAO,EAE3C;IAED;;OAEG;IACG,OAAO,CACX,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC,CAoBlB;CACF"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Stack of RPC middleware.
3
+ */
4
+ export class RPCMiddlewareStack {
5
+ middleware;
6
+ constructor(middleware = []) {
7
+ this.middleware = Object.freeze([...middleware]);
8
+ }
9
+ /**
10
+ * Executes the middleware stack around the given handler.
11
+ */
12
+ async execute(context, handler) {
13
+ const stack = this.middleware;
14
+ let index = 0;
15
+ const runNext = async () => {
16
+ if (index >= stack.length) {
17
+ return handler();
18
+ }
19
+ const mw = stack[index];
20
+ index += 1;
21
+ if (!mw) {
22
+ return handler();
23
+ }
24
+ return mw(context, runNext);
25
+ };
26
+ return runNext();
27
+ }
28
+ }
29
+ //# sourceMappingURL=rpcMiddleware.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcMiddleware.core.js","sourceRoot":"","sources":["../../../src/rpc/middleware/rpcMiddleware.core.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACZ,UAAU,CAA2B;IAEtD,YAAY,UAAU,GAAoB,EAAE;QAC1C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,OAAmB,EACnB,OAA+B;QAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,MAAM,OAAO,GAAG,KAAK,IAAsB,EAAE;YAC3C,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO,OAAO,EAAE,CAAC;YACnB,CAAC;YAED,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YACxB,KAAK,IAAI,CAAC,CAAC;YAEX,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,OAAO,EAAE,CAAC;YACnB,CAAC;YAED,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEF,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export type { RPCHandler, RPCProcedure, RPCProcedureOptions, } from "./rpcProcedure.type.js";
2
+ export { createRPCProcedure } from "./rpcProcedure.type.js";
3
+ export { RPCProcedureRegistry } from "./rpcProcedureRegistry.core.js";
4
+ export { RPCProcedureRouter } from "./rpcProcedureRouter.core.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rpc/procedure/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,YAAY,EACZ,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { createRPCProcedure } from "./rpcProcedure.type.js";
2
+ export { RPCProcedureRegistry } from "./rpcProcedureRegistry.core.js";
3
+ export { RPCProcedureRouter } from "./rpcProcedureRouter.core.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rpc/procedure/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { RPCProcedureName } from "../types/rpcProcedureName.type.js";
2
+ import type { RPCContext } from "../context/rpcContext.type.js";
3
+ /**
4
+ * Handler for an RPC procedure.
5
+ */
6
+ export type RPCHandler<TInput = unknown, TOutput = unknown> = (input: TInput, context: RPCContext) => Promise<TOutput> | TOutput;
7
+ /**
8
+ * Options for an RPC procedure.
9
+ */
10
+ export interface RPCProcedureOptions {
11
+ readonly idempotent?: boolean;
12
+ readonly timeout?: number;
13
+ readonly description?: string;
14
+ }
15
+ /**
16
+ * An RPC procedure definition.
17
+ */
18
+ export interface RPCProcedure<TInput = unknown, TOutput = unknown> {
19
+ readonly name: RPCProcedureName;
20
+ readonly handler: RPCHandler<TInput, TOutput>;
21
+ readonly options?: RPCProcedureOptions;
22
+ }
23
+ /**
24
+ * Creates a new RPC procedure.
25
+ */
26
+ export declare function createRPCProcedure<TInput = unknown, TOutput = unknown>(name: RPCProcedureName, handler: RPCHandler<TInput, TOutput>, options?: RPCProcedureOptions): RPCProcedure<TInput, TOutput>;
27
+ //# sourceMappingURL=rpcProcedure.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcProcedure.type.d.ts","sourceRoot":"","sources":["../../../src/rpc/procedure/rpcProcedure.type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,CAC5D,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,KAChB,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAE9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAC/D,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAEhC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9C,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EACpE,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,OAAO,GAAE,mBAAwB,GAChC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAM/B"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Creates a new RPC procedure.
3
+ */
4
+ export function createRPCProcedure(name, handler, options = {}) {
5
+ return Object.freeze({
6
+ name,
7
+ handler,
8
+ options: Object.freeze(options),
9
+ });
10
+ }
11
+ //# sourceMappingURL=rpcProcedure.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcProcedure.type.js","sourceRoot":"","sources":["../../../src/rpc/procedure/rpcProcedure.type.ts"],"names":[],"mappings":"AAoCA;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAsB,EACtB,OAAoC,EACpC,OAAO,GAAwB,EAAE;IAEjC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI;QACJ,OAAO;QACP,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;KAChC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { RPCProcedure } from "./rpcProcedure.type.js";
2
+ /**
3
+ * Registry for RPC procedures.
4
+ *
5
+ * Enforces uniqueness and provides O(1) lookup by procedure name.
6
+ */
7
+ export declare class RPCProcedureRegistry {
8
+ private readonly procedures;
9
+ /**
10
+ * Registers a procedure.
11
+ *
12
+ * @throws {RPCDuplicateProcedureError} if a procedure with the same name is already registered.
13
+ */
14
+ register(procedure: RPCProcedure): void;
15
+ /**
16
+ * Retrieves a procedure by name.
17
+ */
18
+ get(name: string): RPCProcedure | undefined;
19
+ /**
20
+ * Determines whether a procedure is registered.
21
+ */
22
+ has(name: string): boolean;
23
+ /**
24
+ * Retrieves a procedure by name or throws.
25
+ */
26
+ require(name: string): RPCProcedure;
27
+ /**
28
+ * Returns all registered procedure names.
29
+ */
30
+ list(): readonly string[];
31
+ /**
32
+ * Unregisters a procedure.
33
+ */
34
+ unregister(name: string): boolean;
35
+ /**
36
+ * Clears all registered procedures.
37
+ */
38
+ clear(): void;
39
+ }
40
+ //# sourceMappingURL=rpcProcedureRegistry.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcProcedureRegistry.core.d.ts","sourceRoot":"","sources":["../../../src/rpc/procedure/rpcProcedureRegistry.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAS3D;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAE9D;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI,CAatC;IAED;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE1C;IAED;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzB;IAED;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAMlC;IAED;;OAEG;IACH,IAAI,IAAI,SAAS,MAAM,EAAE,CAExB;IAED;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhC;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAEZ;CACF"}