@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,66 @@
1
+ import { RPCDuplicateProcedureError, RPCProcedureNotFoundError, } from "../errors/rpc.errors.js";
2
+ import { MAX_PROCEDURES } from "../constants/rpcConstants.core.js";
3
+ /**
4
+ * Registry for RPC procedures.
5
+ *
6
+ * Enforces uniqueness and provides O(1) lookup by procedure name.
7
+ */
8
+ export class RPCProcedureRegistry {
9
+ procedures = new Map();
10
+ /**
11
+ * Registers a procedure.
12
+ *
13
+ * @throws {RPCDuplicateProcedureError} if a procedure with the same name is already registered.
14
+ */
15
+ register(procedure) {
16
+ if (this.procedures.size >= MAX_PROCEDURES) {
17
+ throw new Error(`Maximum number of procedures (${MAX_PROCEDURES}) exceeded.`);
18
+ }
19
+ const existing = this.procedures.get(procedure.name);
20
+ if (existing !== undefined) {
21
+ throw new RPCDuplicateProcedureError(procedure.name);
22
+ }
23
+ this.procedures.set(procedure.name, Object.freeze(procedure));
24
+ }
25
+ /**
26
+ * Retrieves a procedure by name.
27
+ */
28
+ get(name) {
29
+ return this.procedures.get(name);
30
+ }
31
+ /**
32
+ * Determines whether a procedure is registered.
33
+ */
34
+ has(name) {
35
+ return this.procedures.has(name);
36
+ }
37
+ /**
38
+ * Retrieves a procedure by name or throws.
39
+ */
40
+ require(name) {
41
+ const procedure = this.get(name);
42
+ if (procedure === undefined) {
43
+ throw new RPCProcedureNotFoundError(name);
44
+ }
45
+ return procedure;
46
+ }
47
+ /**
48
+ * Returns all registered procedure names.
49
+ */
50
+ list() {
51
+ return Array.from(this.procedures.keys());
52
+ }
53
+ /**
54
+ * Unregisters a procedure.
55
+ */
56
+ unregister(name) {
57
+ return this.procedures.delete(name);
58
+ }
59
+ /**
60
+ * Clears all registered procedures.
61
+ */
62
+ clear() {
63
+ this.procedures.clear();
64
+ }
65
+ }
66
+ //# sourceMappingURL=rpcProcedureRegistry.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcProcedureRegistry.core.js","sourceRoot":"","sources":["../../../src/rpc/procedure/rpcProcedureRegistry.core.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE;;;;GAIG;AACH,MAAM,OAAO,oBAAoB;IACd,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE9D;;;;OAIG;IACH,QAAQ,CAAC,SAAuB;QAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,iCAAiC,cAAc,aAAa,CAC7D,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAY;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,37 @@
1
+ import type { RPCProcedure } from "./rpcProcedure.type.js";
2
+ import type { RPCProcedureName } from "../types/rpcProcedureName.type.js";
3
+ /**
4
+ * Router for grouping RPC procedures by namespace.
5
+ */
6
+ export declare class RPCProcedureRouter {
7
+ private readonly routes;
8
+ /**
9
+ * Registers a procedure in this router.
10
+ */
11
+ register(procedure: RPCProcedure): this;
12
+ /**
13
+ * Retrieves a procedure by name.
14
+ */
15
+ get(name: RPCProcedureName): RPCProcedure | undefined;
16
+ /**
17
+ * Determines whether a procedure is registered.
18
+ */
19
+ has(name: RPCProcedureName): boolean;
20
+ /**
21
+ * Requires a procedure by name or throws.
22
+ */
23
+ require(name: RPCProcedureName): RPCProcedure;
24
+ /**
25
+ * Returns all registered procedures.
26
+ */
27
+ list(): readonly RPCProcedure[];
28
+ /**
29
+ * Unregisters a procedure.
30
+ */
31
+ unregister(name: RPCProcedureName): boolean;
32
+ /**
33
+ * Clears all procedures.
34
+ */
35
+ clear(): void;
36
+ }
37
+ //# sourceMappingURL=rpcProcedureRouter.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcProcedureRouter.core.d.ts","sourceRoot":"","sources":["../../../src/rpc/procedure/rpcProcedureRouter.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAO1E;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAE1D;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI,CAQtC;IAED;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,GAAG,SAAS,CAEpD;IAED;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAEnC;IAED;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,CAM5C;IAED;;OAEG;IACH,IAAI,IAAI,SAAS,YAAY,EAAE,CAE9B;IAED;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAE1C;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAEZ;CACF"}
@@ -0,0 +1,59 @@
1
+ import { RPCDuplicateProcedureError, RPCProcedureNotFoundError, } from "../errors/rpc.errors.js";
2
+ /**
3
+ * Router for grouping RPC procedures by namespace.
4
+ */
5
+ export class RPCProcedureRouter {
6
+ routes = new Map();
7
+ /**
8
+ * Registers a procedure in this router.
9
+ */
10
+ register(procedure) {
11
+ const existing = this.routes.get(procedure.name);
12
+ if (existing !== undefined) {
13
+ throw new RPCDuplicateProcedureError(procedure.name);
14
+ }
15
+ this.routes.set(procedure.name, Object.freeze(procedure));
16
+ return this;
17
+ }
18
+ /**
19
+ * Retrieves a procedure by name.
20
+ */
21
+ get(name) {
22
+ return this.routes.get(name);
23
+ }
24
+ /**
25
+ * Determines whether a procedure is registered.
26
+ */
27
+ has(name) {
28
+ return this.routes.has(name);
29
+ }
30
+ /**
31
+ * Requires a procedure by name or throws.
32
+ */
33
+ require(name) {
34
+ const procedure = this.get(name);
35
+ if (procedure === undefined) {
36
+ throw new RPCProcedureNotFoundError(name);
37
+ }
38
+ return procedure;
39
+ }
40
+ /**
41
+ * Returns all registered procedures.
42
+ */
43
+ list() {
44
+ return Array.from(this.routes.values());
45
+ }
46
+ /**
47
+ * Unregisters a procedure.
48
+ */
49
+ unregister(name) {
50
+ return this.routes.delete(name);
51
+ }
52
+ /**
53
+ * Clears all procedures.
54
+ */
55
+ clear() {
56
+ this.routes.clear();
57
+ }
58
+ }
59
+ //# sourceMappingURL=rpcProcedureRouter.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcProcedureRouter.core.js","sourceRoot":"","sources":["../../../src/rpc/procedure/rpcProcedureRouter.core.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACZ,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE1D;;OAEG;IACH,QAAQ,CAAC,SAAuB;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAsB;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAsB;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAsB;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAsB;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @zudojs/rpc/reliability/cancellation
3
+ *
4
+ * Cancellation utilities for RPC operations.
5
+ */
6
+ /**
7
+ * Creates an AbortSignal that can be triggered manually.
8
+ */
9
+ export declare function createCancellableSignal(): AbortSignal;
10
+ /**
11
+ * Cancels an AbortSignal by aborting its controller.
12
+ */
13
+ export declare function cancelSignal(signal: AbortSignal): void;
14
+ //# sourceMappingURL=rpcCancellation.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcCancellation.helper.d.ts","sourceRoot":"","sources":["../../../../src/rpc/reliability/cancellation/rpcCancellation.helper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,WAAW,CAGrD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAItD"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @zudojs/rpc/reliability/cancellation
3
+ *
4
+ * Cancellation utilities for RPC operations.
5
+ */
6
+ /**
7
+ * Creates an AbortSignal that can be triggered manually.
8
+ */
9
+ export function createCancellableSignal() {
10
+ const controller = new AbortController();
11
+ return controller.signal;
12
+ }
13
+ /**
14
+ * Cancels an AbortSignal by aborting its controller.
15
+ */
16
+ export function cancelSignal(signal) {
17
+ if (!signal.aborted) {
18
+ signal.abort();
19
+ }
20
+ }
21
+ //# sourceMappingURL=rpcCancellation.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcCancellation.helper.js","sourceRoot":"","sources":["../../../../src/rpc/reliability/cancellation/rpcCancellation.helper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,OAAO,UAAU,CAAC,MAAM,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAmB;IAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAuC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @zudojs/rpc/reliability/deadline
3
+ *
4
+ * Deadline utilities for RPC operations.
5
+ */
6
+ /**
7
+ * Calculates the remaining time until a deadline.
8
+ */
9
+ export declare function getRemainingTime(deadline: number): number;
10
+ /**
11
+ * Checks if a deadline has been exceeded.
12
+ */
13
+ export declare function isDeadlineExceeded(deadline: number): boolean;
14
+ /**
15
+ * Throws if the deadline has been exceeded.
16
+ */
17
+ export declare function throwIfDeadlineExceeded(deadline: number): void;
18
+ //# sourceMappingURL=rpcDeadline.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcDeadline.helper.d.ts","sourceRoot":"","sources":["../../../../src/rpc/reliability/deadline/rpcDeadline.helper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAI9D"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @zudojs/rpc/reliability/deadline
3
+ *
4
+ * Deadline utilities for RPC operations.
5
+ */
6
+ /**
7
+ * Calculates the remaining time until a deadline.
8
+ */
9
+ export function getRemainingTime(deadline) {
10
+ const remaining = deadline - Date.now();
11
+ return Math.max(0, remaining);
12
+ }
13
+ /**
14
+ * Checks if a deadline has been exceeded.
15
+ */
16
+ export function isDeadlineExceeded(deadline) {
17
+ return Date.now() >= deadline;
18
+ }
19
+ /**
20
+ * Throws if the deadline has been exceeded.
21
+ */
22
+ export function throwIfDeadlineExceeded(deadline) {
23
+ if (isDeadlineExceeded(deadline)) {
24
+ throw new Error("Deadline exceeded.");
25
+ }
26
+ }
27
+ //# sourceMappingURL=rpcDeadline.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcDeadline.helper.js","sourceRoot":"","sources":["../../../../src/rpc/reliability/deadline/rpcDeadline.helper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { createTimeout, withTimeout } from "./timeout/rpcTimeout.helper.js";
2
+ export { getRemainingTime, isDeadlineExceeded, throwIfDeadlineExceeded, } from "./deadline/rpcDeadline.helper.js";
3
+ export { createCancellableSignal, cancelSignal, } from "./cancellation/rpcCancellation.helper.js";
4
+ export type { RPCBackoff, RPCRetryOptions } from "./retry/rpcRetry.helper.js";
5
+ export { DEFAULT_RETRY_OPTIONS, calculateRetryDelay, retry, } from "./retry/rpcRetry.helper.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rpc/reliability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE5E,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,uBAAuB,EACvB,YAAY,GACb,MAAM,0CAA0C,CAAC;AAElD,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,GACN,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { createTimeout, withTimeout } from "./timeout/rpcTimeout.helper.js";
2
+ export { getRemainingTime, isDeadlineExceeded, throwIfDeadlineExceeded, } from "./deadline/rpcDeadline.helper.js";
3
+ export { createCancellableSignal, cancelSignal, } from "./cancellation/rpcCancellation.helper.js";
4
+ export { DEFAULT_RETRY_OPTIONS, calculateRetryDelay, retry, } from "./retry/rpcRetry.helper.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rpc/reliability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE5E,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,uBAAuB,EACvB,YAAY,GACb,MAAM,0CAA0C,CAAC;AAIlD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,GACN,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @zudojs/rpc/reliability/retry
3
+ *
4
+ * Retry utilities for RPC operations.
5
+ */
6
+ /**
7
+ * Retry backoff strategies.
8
+ */
9
+ export type RPCBackoff = "fixed" | "linear" | "exponential";
10
+ /**
11
+ * Retry options.
12
+ */
13
+ export interface RPCRetryOptions {
14
+ readonly attempts: number;
15
+ readonly delay: number;
16
+ readonly maxDelay?: number;
17
+ readonly backoff?: RPCBackoff;
18
+ readonly retryIf?: (error: unknown) => boolean;
19
+ }
20
+ /**
21
+ * Default retry options.
22
+ */
23
+ export declare const DEFAULT_RETRY_OPTIONS: RPCRetryOptions;
24
+ /**
25
+ * Calculates the delay for a retry attempt.
26
+ */
27
+ export declare function calculateRetryDelay(attempt: number, options: RPCRetryOptions): number;
28
+ /**
29
+ * Retries an asynchronous operation.
30
+ */
31
+ export declare function retry<T>(operation: () => Promise<T>, options: RPCRetryOptions): Promise<T>;
32
+ //# sourceMappingURL=rpcRetry.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcRetry.helper.d.ts","sourceRoot":"","sources":["../../../../src/rpc/reliability/retry/rpcRetry.helper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAE9B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAChD;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,eAGnC,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,GACvB,MAAM,CAaR;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,CAAC,CAAC,CAqBZ"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @zudojs/rpc/reliability/retry
3
+ *
4
+ * Retry utilities for RPC operations.
5
+ */
6
+ /**
7
+ * Default retry options.
8
+ */
9
+ export const DEFAULT_RETRY_OPTIONS = {
10
+ attempts: 1,
11
+ delay: 0,
12
+ };
13
+ /**
14
+ * Calculates the delay for a retry attempt.
15
+ */
16
+ export function calculateRetryDelay(attempt, options) {
17
+ const backoff = options.backoff ?? "fixed";
18
+ const maxDelay = options.maxDelay ?? 30_000;
19
+ let delay = options.delay;
20
+ if (backoff === "linear") {
21
+ delay = options.delay * attempt;
22
+ }
23
+ else if (backoff === "exponential") {
24
+ delay = options.delay * 2 ** (attempt - 1);
25
+ }
26
+ return Math.min(delay, maxDelay);
27
+ }
28
+ /**
29
+ * Retries an asynchronous operation.
30
+ */
31
+ export async function retry(operation, options) {
32
+ const attempts = Math.max(1, options.attempts);
33
+ for (let attempt = 0; attempt < attempts; attempt += 1) {
34
+ try {
35
+ return await operation();
36
+ }
37
+ catch (error) {
38
+ if (attempt >= attempts - 1) {
39
+ throw error;
40
+ }
41
+ if (options.retryIf && !options.retryIf(error)) {
42
+ throw error;
43
+ }
44
+ const delay = calculateRetryDelay(attempt + 1, options);
45
+ await new Promise((resolve) => setTimeout(resolve, delay));
46
+ }
47
+ }
48
+ throw new Error("Retry loop exited unexpectedly.");
49
+ }
50
+ //# sourceMappingURL=rpcRetry.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcRetry.helper.js","sourceRoot":"","sources":["../../../../src/rpc/reliability/retry/rpcRetry.helper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsBH;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAoB;IACpD,QAAQ,EAAE,CAAC;IACX,KAAK,EAAE,CAAC;CACT,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,OAAwB;IAExB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC;IAE5C,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAE1B,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;IAClC,CAAC;SAAM,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QACrC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,SAA2B,EAC3B,OAAwB;IAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE/C,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/C,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @zudojs/rpc/reliability/timeout
3
+ *
4
+ * Timeout utilities for RPC operations.
5
+ */
6
+ /**
7
+ * Creates a timeout promise that rejects after the given duration.
8
+ */
9
+ export declare function createTimeout(duration: number): Promise<never>;
10
+ /**
11
+ * Wraps a promise with a timeout.
12
+ */
13
+ export declare function withTimeout<T>(promise: Promise<T>, duration: number): Promise<T>;
14
+ //# sourceMappingURL=rpcTimeout.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcTimeout.helper.d.ts","sourceRoot":"","sources":["../../../../src/rpc/reliability/timeout/rpcTimeout.helper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAM9D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,CAAC,CAAC,CAEZ"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @zudojs/rpc/reliability/timeout
3
+ *
4
+ * Timeout utilities for RPC operations.
5
+ */
6
+ /**
7
+ * Creates a timeout promise that rejects after the given duration.
8
+ */
9
+ export function createTimeout(duration) {
10
+ return new Promise((_, reject) => {
11
+ setTimeout(() => {
12
+ reject(new Error(`Operation timed out after ${duration}ms.`));
13
+ }, duration);
14
+ });
15
+ }
16
+ /**
17
+ * Wraps a promise with a timeout.
18
+ */
19
+ export async function withTimeout(promise, duration) {
20
+ return Promise.race([promise, createTimeout(duration)]);
21
+ }
22
+ //# sourceMappingURL=rpcTimeout.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcTimeout.helper.js","sourceRoot":"","sources":["../../../../src/rpc/reliability/timeout/rpcTimeout.helper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAC/B,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,QAAQ,KAAK,CAAC,CAAC,CAAC;QAChE,CAAC,EAAE,QAAQ,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAmB,EACnB,QAAgB;IAEhB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { RPCServer } from "./rpcServer.core.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rpc/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { RPCServer } from "./rpcServer.core.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rpc/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,27 @@
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 { RPCProcedureRegistry } from "../procedure/rpcProcedureRegistry.core.js";
5
+ import { RPCMiddlewareStack } from "../middleware/rpcMiddleware.core.js";
6
+ /**
7
+ * RPC server that receives and dispatches requests.
8
+ */
9
+ export declare class RPCServer {
10
+ private readonly registry;
11
+ private readonly middleware;
12
+ private readonly dispatcher;
13
+ constructor(registry?: RPCProcedureRegistry, middleware?: RPCMiddlewareStack);
14
+ /**
15
+ * Registers a procedure.
16
+ */
17
+ register(procedure: RPCProcedure): this;
18
+ /**
19
+ * Handles an incoming RPC request.
20
+ */
21
+ handle(request: RPCRequest): Promise<RPCResponse>;
22
+ /**
23
+ * Returns the procedure registry.
24
+ */
25
+ getRegistry(): RPCProcedureRegistry;
26
+ }
27
+ //# sourceMappingURL=rpcServer.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcServer.core.d.ts","sourceRoot":"","sources":["../../../src/rpc/server/rpcServer.core.ts"],"names":[],"mappings":"AAAA,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,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAYzE;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAEhD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAE3C,YACE,QAAQ,CAAC,EAAE,oBAAoB,EAC/B,UAAU,CAAC,EAAE,kBAAkB,EAKhC;IAED;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI,CAGtC;IAED;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAsBtD;IAED;;OAEG;IACH,WAAW,IAAI,oBAAoB,CAElC;CACF"}
@@ -0,0 +1,59 @@
1
+ import { RPCProcedureRegistry } from "../procedure/rpcProcedureRegistry.core.js";
2
+ import { RPCMiddlewareStack } from "../middleware/rpcMiddleware.core.js";
3
+ import { RPCDispatcher } from "../dispatcher/rpcDispatcher.core.js";
4
+ import { createRPCErrorResponse } from "../types/rpcResponse.type.js";
5
+ import { RPCInternalError, RPCProcedureNotFoundError, RPCValidationError, } from "../errors/rpc.errors.js";
6
+ /**
7
+ * RPC server that receives and dispatches requests.
8
+ */
9
+ export class RPCServer {
10
+ registry;
11
+ middleware;
12
+ dispatcher;
13
+ constructor(registry, middleware) {
14
+ this.registry = registry ?? new RPCProcedureRegistry();
15
+ this.middleware = middleware ?? new RPCMiddlewareStack();
16
+ this.dispatcher = new RPCDispatcher(this.registry, this.middleware);
17
+ }
18
+ /**
19
+ * Registers a procedure.
20
+ */
21
+ register(procedure) {
22
+ this.registry.register(procedure);
23
+ return this;
24
+ }
25
+ /**
26
+ * Handles an incoming RPC request.
27
+ */
28
+ async handle(request) {
29
+ try {
30
+ return await this.dispatcher.dispatch(request);
31
+ }
32
+ catch (error) {
33
+ if (error instanceof RPCProcedureNotFoundError) {
34
+ return createRPCErrorResponse(request.id, {
35
+ code: "RPC_PROCEDURE_NOT_FOUND",
36
+ message: error.message,
37
+ });
38
+ }
39
+ if (error instanceof RPCValidationError) {
40
+ return createRPCErrorResponse(request.id, {
41
+ code: "RPC_VALIDATION_ERROR",
42
+ message: error.message,
43
+ details: error.issues,
44
+ });
45
+ }
46
+ return createRPCErrorResponse(request.id, {
47
+ code: "RPC_INTERNAL_ERROR",
48
+ message: error instanceof Error ? error.message : "Unknown error",
49
+ });
50
+ }
51
+ }
52
+ /**
53
+ * Returns the procedure registry.
54
+ */
55
+ getRegistry() {
56
+ return this.registry;
57
+ }
58
+ }
59
+ //# sourceMappingURL=rpcServer.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcServer.core.js","sourceRoot":"","sources":["../../../src/rpc/server/rpcServer.core.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,MAAM,OAAO,SAAS;IACH,QAAQ,CAAuB;IAE/B,UAAU,CAAqB;IAE/B,UAAU,CAAgB;IAE3C,YACE,QAA+B,EAC/B,UAA+B;QAE/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,oBAAoB,EAAE,CAAC;QACvD,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,IAAI,kBAAkB,EAAE,CAAC;QACzD,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,SAAuB;QAC9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,OAAmB;QAC9B,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;gBAC/C,OAAO,sBAAsB,CAAC,OAAO,CAAC,EAAE,EAAE;oBACxC,IAAI,EAAE,yBAAyB;oBAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB,CAAC,CAAC;YACL,CAAC;YACD,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;gBACxC,OAAO,sBAAsB,CAAC,OAAO,CAAC,EAAE,EAAE;oBACxC,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,OAAO,EAAE,KAAK,CAAC,MAAM;iBACtB,CAAC,CAAC;YACL,CAAC;YACD,OAAO,sBAAsB,CAAC,OAAO,CAAC,EAAE,EAAE;gBACxC,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAClE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ export type { RPCStreamingHandler, RPCStreamingProcedure, } from "./rpcStreaming.type.js";
2
+ export { createRPCStreamingProcedure } from "./rpcStreaming.type.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rpc/streaming/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createRPCStreamingProcedure } from "./rpcStreaming.type.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rpc/streaming/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @zudojs/rpc/streaming
3
+ *
4
+ * Streaming types for RPC operations.
5
+ */
6
+ /**
7
+ * A streaming RPC procedure handler.
8
+ */
9
+ export type RPCStreamingHandler<TInput = unknown, TOutput = unknown> = (input: TInput, context: RPCContext) => AsyncIterable<TOutput>;
10
+ import type { RPCContext } from "../context/rpcContext.type.js";
11
+ /**
12
+ * An RPC streaming procedure definition.
13
+ */
14
+ export interface RPCStreamingProcedure<TInput = unknown, TOutput = unknown> {
15
+ readonly name: string;
16
+ readonly handler: RPCStreamingHandler<TInput, TOutput>;
17
+ }
18
+ /**
19
+ * Creates a streaming RPC procedure.
20
+ */
21
+ export declare function createRPCStreamingProcedure<TInput = unknown, TOutput = unknown>(name: string, handler: RPCStreamingHandler<TInput, TOutput>): RPCStreamingProcedure<TInput, TOutput>;
22
+ //# sourceMappingURL=rpcStreaming.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcStreaming.type.d.ts","sourceRoot":"","sources":["../../../src/rpc/streaming/rpcStreaming.type.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,CACrE,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,KAChB,aAAa,CAAC,OAAO,CAAC,CAAC;AAE5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,GAAG,OAAO,EAChB,OAAO,GAAG,OAAO,EAEjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5C,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAKxC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @zudojs/rpc/streaming
3
+ *
4
+ * Streaming types for RPC operations.
5
+ */
6
+ /**
7
+ * Creates a streaming RPC procedure.
8
+ */
9
+ export function createRPCStreamingProcedure(name, handler) {
10
+ return Object.freeze({
11
+ name,
12
+ handler,
13
+ });
14
+ }
15
+ //# sourceMappingURL=rpcStreaming.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcStreaming.type.js","sourceRoot":"","sources":["../../../src/rpc/streaming/rpcStreaming.type.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqBH;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAIzC,IAAY,EACZ,OAA6C;IAE7C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI;QACJ,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export type { RPCTransport, RPCTransportRequestOptions, } from "./rpcTransport.type.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rpc/transport/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rpc/transport/index.ts"],"names":[],"mappings":""}