@resonatehq/sdk 0.9.6 → 0.10.0

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 (234) hide show
  1. package/README.md +84 -12
  2. package/dist/clock.d.ts.map +1 -0
  3. package/dist/clock.js +12 -0
  4. package/dist/clock.js.map +1 -0
  5. package/dist/codec.d.ts +11 -0
  6. package/dist/codec.d.ts.map +1 -0
  7. package/dist/codec.js +115 -0
  8. package/dist/codec.js.map +1 -0
  9. package/dist/computation.d.ts +40 -0
  10. package/dist/computation.d.ts.map +1 -0
  11. package/dist/computation.js +152 -0
  12. package/dist/computation.js.map +1 -0
  13. package/dist/{src/context.d.ts → context.d.ts} +65 -40
  14. package/dist/context.d.ts.map +1 -0
  15. package/dist/{src/context.js → context.js} +131 -153
  16. package/dist/context.js.map +1 -0
  17. package/dist/core.d.ts +45 -0
  18. package/dist/core.d.ts.map +1 -0
  19. package/dist/core.js +140 -0
  20. package/dist/core.js.map +1 -0
  21. package/dist/coroutine.d.ts +37 -0
  22. package/dist/coroutine.d.ts.map +1 -0
  23. package/dist/coroutine.js +258 -0
  24. package/dist/coroutine.js.map +1 -0
  25. package/dist/{src/decorator.d.ts → decorator.d.ts} +8 -8
  26. package/dist/decorator.d.ts.map +1 -0
  27. package/dist/decorator.js +149 -0
  28. package/dist/decorator.js.map +1 -0
  29. package/dist/encryptor.d.ts +10 -0
  30. package/dist/encryptor.d.ts.map +1 -0
  31. package/dist/encryptor.js +9 -0
  32. package/dist/encryptor.js.map +1 -0
  33. package/dist/{src/exceptions.d.ts → exceptions.d.ts} +4 -1
  34. package/dist/exceptions.d.ts.map +1 -0
  35. package/dist/{src/exceptions.js → exceptions.js} +11 -11
  36. package/dist/exceptions.js.map +1 -0
  37. package/dist/{src/heartbeat.d.ts → heartbeat.d.ts} +5 -3
  38. package/dist/heartbeat.d.ts.map +1 -0
  39. package/dist/heartbeat.js +50 -0
  40. package/dist/heartbeat.js.map +1 -0
  41. package/dist/index.d.ts +21 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +15 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/logger.d.ts +33 -0
  46. package/dist/logger.d.ts.map +1 -0
  47. package/dist/logger.js +54 -0
  48. package/dist/logger.js.map +1 -0
  49. package/dist/network/http.d.ts +82 -0
  50. package/dist/network/http.d.ts.map +1 -0
  51. package/dist/network/http.js +339 -0
  52. package/dist/network/http.js.map +1 -0
  53. package/dist/network/local.d.ts +179 -0
  54. package/dist/network/local.d.ts.map +1 -0
  55. package/dist/network/local.js +1232 -0
  56. package/dist/network/local.js.map +1 -0
  57. package/dist/network/network.d.ts +16 -0
  58. package/dist/network/network.d.ts.map +1 -0
  59. package/dist/network/network.js +2 -0
  60. package/dist/network/network.js.map +1 -0
  61. package/dist/network/types.d.ts +1279 -0
  62. package/dist/network/types.d.ts.map +1 -0
  63. package/dist/network/types.js +919 -0
  64. package/dist/network/types.js.map +1 -0
  65. package/dist/{src/options.d.ts → options.d.ts} +10 -4
  66. package/dist/options.d.ts.map +1 -0
  67. package/dist/options.js +32 -0
  68. package/dist/options.js.map +1 -0
  69. package/dist/promises.d.ts +41 -0
  70. package/dist/promises.d.ts.map +1 -0
  71. package/dist/promises.js +113 -0
  72. package/dist/promises.js.map +1 -0
  73. package/dist/{src/registry.d.ts → registry.d.ts} +1 -1
  74. package/dist/registry.d.ts.map +1 -0
  75. package/dist/{src/registry.js → registry.js} +6 -13
  76. package/dist/registry.js.map +1 -0
  77. package/dist/resonate.d.ts +168 -0
  78. package/dist/resonate.d.ts.map +1 -0
  79. package/dist/resonate.js +488 -0
  80. package/dist/resonate.js.map +1 -0
  81. package/dist/retries.d.ts.map +1 -0
  82. package/dist/{src/retries.js → retries.js} +4 -11
  83. package/dist/retries.js.map +1 -0
  84. package/dist/schedules.d.ts +22 -0
  85. package/dist/schedules.d.ts.map +1 -0
  86. package/dist/schedules.js +65 -0
  87. package/dist/schedules.js.map +1 -0
  88. package/dist/trace.d.ts +79 -0
  89. package/dist/trace.d.ts.map +1 -0
  90. package/dist/trace.js +224 -0
  91. package/dist/trace.js.map +1 -0
  92. package/dist/types.d.ts +21 -0
  93. package/dist/types.d.ts.map +1 -0
  94. package/dist/types.js +2 -0
  95. package/dist/types.js.map +1 -0
  96. package/dist/{src/util.d.ts → util.d.ts} +10 -6
  97. package/dist/util.d.ts.map +1 -0
  98. package/dist/util.js +156 -0
  99. package/dist/util.js.map +1 -0
  100. package/package.json +18 -10
  101. package/dist/dev/network.d.ts +0 -34
  102. package/dist/dev/network.d.ts.map +0 -1
  103. package/dist/dev/network.js +0 -115
  104. package/dist/dev/network.js.map +0 -1
  105. package/dist/dev/server.d.ts +0 -89
  106. package/dist/dev/server.d.ts.map +0 -1
  107. package/dist/dev/server.js +0 -890
  108. package/dist/dev/server.js.map +0 -1
  109. package/dist/sim/example-1.d.ts +0 -2
  110. package/dist/sim/example-1.d.ts.map +0 -1
  111. package/dist/sim/example-1.js +0 -95
  112. package/dist/sim/example-1.js.map +0 -1
  113. package/dist/sim/example-2.d.ts +0 -2
  114. package/dist/sim/example-2.d.ts.map +0 -1
  115. package/dist/sim/example-2.js +0 -97
  116. package/dist/sim/example-2.js.map +0 -1
  117. package/dist/sim/example-3.d.ts +0 -2
  118. package/dist/sim/example-3.d.ts.map +0 -1
  119. package/dist/sim/example-3.js +0 -97
  120. package/dist/sim/example-3.js.map +0 -1
  121. package/dist/sim/main.d.ts +0 -14
  122. package/dist/sim/main.d.ts.map +0 -1
  123. package/dist/sim/main.js +0 -207
  124. package/dist/sim/main.js.map +0 -1
  125. package/dist/sim/src/server.d.ts +0 -15
  126. package/dist/sim/src/server.d.ts.map +0 -1
  127. package/dist/sim/src/server.js +0 -85
  128. package/dist/sim/src/server.js.map +0 -1
  129. package/dist/sim/src/simulator.d.ts +0 -65
  130. package/dist/sim/src/simulator.d.ts.map +0 -1
  131. package/dist/sim/src/simulator.js +0 -236
  132. package/dist/sim/src/simulator.js.map +0 -1
  133. package/dist/sim/src/worker.d.ts +0 -23
  134. package/dist/sim/src/worker.d.ts.map +0 -1
  135. package/dist/sim/src/worker.js +0 -217
  136. package/dist/sim/src/worker.js.map +0 -1
  137. package/dist/src/clock.d.ts.map +0 -1
  138. package/dist/src/clock.js +0 -17
  139. package/dist/src/clock.js.map +0 -1
  140. package/dist/src/computation.d.ts +0 -49
  141. package/dist/src/computation.d.ts.map +0 -1
  142. package/dist/src/computation.js +0 -314
  143. package/dist/src/computation.js.map +0 -1
  144. package/dist/src/context.d.ts.map +0 -1
  145. package/dist/src/context.js.map +0 -1
  146. package/dist/src/core.d.ts +0 -12
  147. package/dist/src/core.d.ts.map +0 -1
  148. package/dist/src/core.js +0 -28
  149. package/dist/src/core.js.map +0 -1
  150. package/dist/src/coroutine.d.ts +0 -42
  151. package/dist/src/coroutine.d.ts.map +0 -1
  152. package/dist/src/coroutine.js +0 -364
  153. package/dist/src/coroutine.js.map +0 -1
  154. package/dist/src/decorator.d.ts.map +0 -1
  155. package/dist/src/decorator.js +0 -220
  156. package/dist/src/decorator.js.map +0 -1
  157. package/dist/src/encoder.d.ts +0 -12
  158. package/dist/src/encoder.d.ts.map +0 -1
  159. package/dist/src/encoder.js +0 -101
  160. package/dist/src/encoder.js.map +0 -1
  161. package/dist/src/encryptor.d.ts +0 -10
  162. package/dist/src/encryptor.d.ts.map +0 -1
  163. package/dist/src/encryptor.js +0 -13
  164. package/dist/src/encryptor.js.map +0 -1
  165. package/dist/src/exceptions.d.ts.map +0 -1
  166. package/dist/src/exceptions.js.map +0 -1
  167. package/dist/src/handler.d.ts +0 -49
  168. package/dist/src/handler.d.ts.map +0 -1
  169. package/dist/src/handler.js +0 -316
  170. package/dist/src/handler.js.map +0 -1
  171. package/dist/src/heartbeat.d.ts.map +0 -1
  172. package/dist/src/heartbeat.js +0 -87
  173. package/dist/src/heartbeat.js.map +0 -1
  174. package/dist/src/index.d.ts +0 -15
  175. package/dist/src/index.d.ts.map +0 -1
  176. package/dist/src/index.js +0 -61
  177. package/dist/src/index.js.map +0 -1
  178. package/dist/src/network/network.d.ts +0 -254
  179. package/dist/src/network/network.d.ts.map +0 -1
  180. package/dist/src/network/network.js +0 -4
  181. package/dist/src/network/network.js.map +0 -1
  182. package/dist/src/network/remote.d.ts +0 -85
  183. package/dist/src/network/remote.d.ts.map +0 -1
  184. package/dist/src/network/remote.js +0 -523
  185. package/dist/src/network/remote.js.map +0 -1
  186. package/dist/src/nursery.d.ts +0 -19
  187. package/dist/src/nursery.d.ts.map +0 -1
  188. package/dist/src/nursery.js +0 -102
  189. package/dist/src/nursery.js.map +0 -1
  190. package/dist/src/options.d.ts.map +0 -1
  191. package/dist/src/options.js +0 -70
  192. package/dist/src/options.js.map +0 -1
  193. package/dist/src/processor/processor.d.ts +0 -12
  194. package/dist/src/processor/processor.d.ts.map +0 -1
  195. package/dist/src/processor/processor.js +0 -43
  196. package/dist/src/processor/processor.js.map +0 -1
  197. package/dist/src/promises.d.ts +0 -54
  198. package/dist/src/promises.d.ts.map +0 -1
  199. package/dist/src/promises.js +0 -169
  200. package/dist/src/promises.js.map +0 -1
  201. package/dist/src/registry.d.ts.map +0 -1
  202. package/dist/src/registry.js.map +0 -1
  203. package/dist/src/resonate-inner.d.ts +0 -60
  204. package/dist/src/resonate-inner.d.ts.map +0 -1
  205. package/dist/src/resonate-inner.js +0 -97
  206. package/dist/src/resonate-inner.js.map +0 -1
  207. package/dist/src/resonate.d.ts +0 -341
  208. package/dist/src/resonate.d.ts.map +0 -1
  209. package/dist/src/resonate.js +0 -591
  210. package/dist/src/resonate.js.map +0 -1
  211. package/dist/src/retries.d.ts.map +0 -1
  212. package/dist/src/retries.js.map +0 -1
  213. package/dist/src/schedules.d.ts +0 -19
  214. package/dist/src/schedules.d.ts.map +0 -1
  215. package/dist/src/schedules.js +0 -85
  216. package/dist/src/schedules.js.map +0 -1
  217. package/dist/src/tasks.d.ts +0 -9
  218. package/dist/src/tasks.d.ts.map +0 -1
  219. package/dist/src/tasks.js +0 -61
  220. package/dist/src/tasks.js.map +0 -1
  221. package/dist/src/tracer.d.ts +0 -23
  222. package/dist/src/tracer.d.ts.map +0 -1
  223. package/dist/src/tracer.js +0 -25
  224. package/dist/src/tracer.js.map +0 -1
  225. package/dist/src/types.d.ts +0 -28
  226. package/dist/src/types.d.ts.map +0 -1
  227. package/dist/src/types.js +0 -11
  228. package/dist/src/types.js.map +0 -1
  229. package/dist/src/util.d.ts.map +0 -1
  230. package/dist/src/util.js +0 -120
  231. package/dist/src/util.js.map +0 -1
  232. package/dist/tsconfig.build.tsbuildinfo +0 -1
  233. /package/dist/{src/clock.d.ts → clock.d.ts} +0 -0
  234. /package/dist/{src/retries.d.ts → retries.d.ts} +0 -0
@@ -0,0 +1,149 @@
1
+ import { DIE, Future, LFC, LFI, RFC, RFI } from "./context.js";
2
+ import * as util from "./util.js";
3
+ export class Decorator {
4
+ generator;
5
+ // Tracks the id of a pending "call" (LFC/RFC) that needs auto-await.
6
+ // Because `yield*` on LFC/RFC iterators produces two yields, the decorator
7
+ // intercepts the promise response and auto-emits an `internal.await` before
8
+ // feeding the resolved value back to the generator.
9
+ // null = not mid-call, non-null = waiting for the promise for this call id.
10
+ pendingCall = null;
11
+ nextState = "internal.nothing";
12
+ constructor(generator) {
13
+ this.generator = generator;
14
+ }
15
+ next(value) {
16
+ util.assert(value.type === this.nextState, `Generator called with type "${value.type}" expected "${this.nextState}"`);
17
+ // Auto-await for calls (LFC/RFC): intercept the promise response and
18
+ // emit an `internal.await` so the coroutine resolves the value before
19
+ // feeding it back to the generator.
20
+ if (value.type === "internal.promise" && this.pendingCall !== null) {
21
+ const callId = this.pendingCall;
22
+ this.pendingCall = null;
23
+ this.nextState = "internal.literal";
24
+ return { type: "internal.await", id: callId, promise: value };
25
+ }
26
+ const result = this.safeGeneratorNext(this.toExternal(value));
27
+ if (result.done) {
28
+ this.nextState = "over";
29
+ return {
30
+ type: "internal.return",
31
+ value: this.toLiteral(result.value),
32
+ };
33
+ }
34
+ return this.toInternal(result.value);
35
+ }
36
+ // From internal type to external type
37
+ // Having to return a Result<> is an artifact of not being able to check
38
+ // the instance of "Result" at runtime
39
+ toExternal(value) {
40
+ switch (value.type) {
41
+ case "internal.nothing":
42
+ return { kind: "value", value: undefined };
43
+ case "internal.promise":
44
+ if (value.state === "pending") {
45
+ return { kind: "value", value: new Future(value.id, "pending", undefined, value.mode) };
46
+ }
47
+ return { kind: "value", value: new Future(value.id, "completed", value.value.value) };
48
+ case "internal.literal":
49
+ return value.value;
50
+ }
51
+ }
52
+ // From external type to internal type
53
+ toInternal(event) {
54
+ if (event instanceof LFI || event instanceof LFC) {
55
+ if (event instanceof LFC)
56
+ this.pendingCall = event.id;
57
+ this.nextState = "internal.promise";
58
+ return {
59
+ type: "internal.async.l",
60
+ id: event.id,
61
+ func: event.func,
62
+ args: event.args ?? [],
63
+ version: event.version,
64
+ retryPolicy: event.retryPolicy,
65
+ createReq: event.createReq,
66
+ };
67
+ }
68
+ if (event instanceof RFI || event instanceof RFC) {
69
+ if (event instanceof RFC)
70
+ this.pendingCall = event.id;
71
+ this.nextState = "internal.promise";
72
+ return {
73
+ type: "internal.async.r",
74
+ id: event.id,
75
+ mode: event.mode,
76
+ func: event.func,
77
+ version: event.version,
78
+ createReq: event.createReq,
79
+ };
80
+ }
81
+ if (event instanceof DIE) {
82
+ this.nextState = "internal.nothing";
83
+ return {
84
+ type: "internal.die",
85
+ condition: event.condition,
86
+ error: event.error,
87
+ };
88
+ }
89
+ if (event instanceof Future) {
90
+ this.nextState = "internal.literal";
91
+ if (event.state === "completed") {
92
+ util.assertDefined(event.value);
93
+ return {
94
+ type: "internal.await",
95
+ id: event.id,
96
+ promise: {
97
+ type: "internal.promise",
98
+ state: "completed",
99
+ id: event.id,
100
+ value: { type: "internal.literal", value: event.value },
101
+ },
102
+ };
103
+ }
104
+ return {
105
+ type: "internal.await",
106
+ id: event.id,
107
+ promise: {
108
+ type: "internal.promise",
109
+ state: "pending",
110
+ // biome-ignore lint/complexity/useLiteralKeys: We need to access this private member, it is only private to the user
111
+ mode: event["mode"],
112
+ id: event.id,
113
+ },
114
+ };
115
+ }
116
+ throw new Error("Unexpected input to extToInt");
117
+ }
118
+ toLiteral(result) {
119
+ return {
120
+ type: "internal.literal",
121
+ value: result,
122
+ };
123
+ }
124
+ safeGeneratorNext(value) {
125
+ try {
126
+ let itResult;
127
+ if (value.kind === "error") {
128
+ itResult = this.generator.throw(value.error);
129
+ }
130
+ else {
131
+ itResult = this.generator.next(value.value);
132
+ }
133
+ if (!itResult.done) {
134
+ return itResult;
135
+ }
136
+ return {
137
+ done: true,
138
+ value: { kind: "value", value: itResult.value },
139
+ };
140
+ }
141
+ catch (e) {
142
+ return {
143
+ done: true,
144
+ value: { kind: "error", error: e },
145
+ };
146
+ }
147
+ }
148
+ }
149
+ //# sourceMappingURL=decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorator.js","sourceRoot":"","sources":["../src/decorator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Value } from "./network/types.js";
2
+ export interface Encryptor {
3
+ encrypt(plaintext: Value): Value;
4
+ decrypt(ciphertext: Value): Value;
5
+ }
6
+ export declare class NoopEncryptor implements Encryptor {
7
+ encrypt(plaintext: Value): Value;
8
+ decrypt(ciphertext: Value): Value;
9
+ }
10
+ //# sourceMappingURL=encryptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryptor.d.ts","sourceRoot":"","sources":["../src/encryptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK,CAAC;IACjC,OAAO,CAAC,UAAU,EAAE,KAAK,GAAG,KAAK,CAAC;CACnC;AAED,qBAAa,aAAc,YAAW,SAAS;IAC7C,OAAO,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK;IAIhC,OAAO,CAAC,UAAU,EAAE,KAAK,GAAG,KAAK;CAGlC"}
@@ -0,0 +1,9 @@
1
+ export class NoopEncryptor {
2
+ encrypt(plaintext) {
3
+ return plaintext;
4
+ }
5
+ decrypt(ciphertext) {
6
+ return ciphertext;
7
+ }
8
+ }
9
+ //# sourceMappingURL=encryptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryptor.js","sourceRoot":"","sources":["../src/encryptor.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,aAAa;IACxB,OAAO,CAAC,SAAgB;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,UAAiB;QACvB,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -16,7 +16,10 @@ export declare class ResonateError extends Error {
16
16
  retriable?: boolean;
17
17
  serverError?: ResonateServerError;
18
18
  });
19
- log(verbose: boolean): void;
19
+ log(logger: import("./logger.js").Logger): void;
20
+ }
21
+ export declare class ResonateTimeoutException extends Error {
22
+ constructor(cause: string);
20
23
  }
21
24
  declare const _default: {
22
25
  REGISTRY_VERSION_INVALID: (v: number) => ResonateError;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../src/exceptions.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;CACjB,CAAC;AAEF,qBAAa,aAAc,SAAQ,KAAK;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,mBAAmB,CAAC;gBAGhC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,EACE,IAAY,EACZ,KAAK,EACL,SAAiB,EACjB,WAAW,GACZ,GAAE;QACD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,mBAAmB,CAAC;KAC9B;IAaR,GAAG,CAAC,MAAM,EAAE,OAAO,aAAa,EAAE,MAAM;CAWzC;AAED,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,KAAK,EAAE,MAAM;CAI1B;;kCAG+B,MAAM;;8CAMM,MAAM,KAAK,MAAM,MAAM,MAAM;0CAIjC,MAAM,KAAK,MAAM;uCAMpB,MAAM;mCAGV,MAAM;oCAKL,MAAM,KAAK,GAAG;oCAMd,MAAM,KAAK,GAAG;oCAMd,MAAM,KAAK,GAAG;oCAMd,MAAM,KAAK,GAAG;iBAMjC,MAAM,OAAO,MAAM,GAAG,SAAS;sBAO1B,GAAG,MAAM,OAAO,MAAM,mBAAmB;;AAxD7D,wBA2DE"}
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ResonateError = void 0;
4
- class ResonateError extends Error {
1
+ export class ResonateError extends Error {
5
2
  code;
6
3
  type;
7
4
  next;
@@ -18,15 +15,18 @@ class ResonateError extends Error {
18
15
  this.retriable = retriable;
19
16
  this.serverError = serverError;
20
17
  }
21
- log(verbose) {
22
- console.error(`${this.type}. ${this.message}. ${this.next}. (See ${this.href} for more information)`);
23
- if (verbose) {
24
- console.error(this);
25
- }
18
+ log(logger) {
19
+ logger.error({ component: "error", code: this.code, type: this.type, next: this.next, href: this.href }, `${this.type}. ${this.message}. ${this.next}. (See ${this.href} for more information)`);
20
+ logger.debug({ component: "error", code: this.code, error: this.stack ?? this.message }, `${this.type} full error details`);
26
21
  }
27
22
  }
28
- exports.ResonateError = ResonateError;
29
- exports.default = {
23
+ export class ResonateTimeoutException extends Error {
24
+ constructor(cause) {
25
+ super(`platform failure: ${cause}`);
26
+ this.name = "ResonateTimeoutException";
27
+ }
28
+ }
29
+ export default {
30
30
  REGISTRY_VERSION_INVALID: (v) => {
31
31
  return new ResonateError("00", "Registry", `Function version must be greater than zero (${v} provided)`);
32
32
  },
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../src/exceptions.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,17 @@
1
- import type { Network } from "./network/network";
1
+ import type { Logger } from "./logger.js";
2
+ import type { Send } from "./types.js";
2
3
  export interface Heartbeat {
3
4
  start(): void;
4
5
  stop(): void;
5
6
  }
6
7
  export declare class AsyncHeartbeat implements Heartbeat {
7
- private network;
8
8
  private intervalId;
9
+ private send;
9
10
  private pid;
10
11
  private counter;
11
12
  private delay;
12
- constructor(pid: string, delay: number, network: Network);
13
+ private logger;
14
+ constructor(pid: string, delay: number, send: Send, logger: Logger);
13
15
  start(): void;
14
16
  private heartbeat;
15
17
  stop(): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../src/heartbeat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,MAAM,WAAW,SAAS;IACxB,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;CACd;AAED,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;gBAEX,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM;IAOlE,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,SAAS;IAkBjB,IAAI,IAAI,IAAI;IAIZ,OAAO,CAAC,oBAAoB;CAM7B;AAED,qBAAa,aAAc,YAAW,SAAS;IAC7C,KAAK,IAAI,IAAI;IACb,IAAI,IAAI,IAAI;CACb"}
@@ -0,0 +1,50 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { VERSION } from "./util.js";
3
+ export class AsyncHeartbeat {
4
+ intervalId;
5
+ send;
6
+ pid;
7
+ counter = 0;
8
+ delay;
9
+ logger;
10
+ constructor(pid, delay, send, logger) {
11
+ this.pid = pid;
12
+ this.delay = delay;
13
+ this.send = send;
14
+ this.logger = logger;
15
+ }
16
+ start() {
17
+ this.counter++;
18
+ if (!this.intervalId) {
19
+ this.heartbeat();
20
+ }
21
+ }
22
+ heartbeat() {
23
+ this.intervalId = setInterval(() => {
24
+ this.send({
25
+ kind: "task.heartbeat",
26
+ head: { corrId: randomUUID(), version: VERSION },
27
+ data: {
28
+ pid: this.pid,
29
+ tasks: [],
30
+ },
31
+ }).catch((err) => {
32
+ this.logger.warn({ component: "heartbeat", pid: this.pid, error: err instanceof Error ? err.message : String(err) }, "Failed to send heartbeat");
33
+ });
34
+ }, this.delay);
35
+ }
36
+ stop() {
37
+ this.clearIntervalIfMatch(this.counter);
38
+ }
39
+ clearIntervalIfMatch(counter) {
40
+ if (this.counter === counter) {
41
+ clearInterval(this.intervalId);
42
+ this.intervalId = undefined;
43
+ }
44
+ }
45
+ }
46
+ export class NoopHeartbeat {
47
+ start() { }
48
+ stop() { }
49
+ }
50
+ //# sourceMappingURL=heartbeat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../src/heartbeat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,MAAM,OAAO,cAAc;IACjB,UAAU,CAA6C;IACvD,IAAI,CAAO;IACX,GAAG,CAAS;IACZ,OAAO,GAAG,CAAC,CAAC;IACZ,KAAK,CAAS;IACd,MAAM,CAAS;IAEvB,YAAY,GAAW,EAAE,KAAa,EAAE,IAAU,EAAE,MAAc;QAChE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;gBAChD,IAAI,EAAE;oBACJ,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,KAAK,EAAE,EAAE;iBACV;aACF,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAClG,0BAA0B,CAC3B,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEO,oBAAoB,CAAC,OAAe;QAC1C,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC7B,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC9B,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,aAAa;IACxB,KAAK,KAAU,CAAC;IAChB,IAAI,KAAU,CAAC;CAChB"}
@@ -0,0 +1,21 @@
1
+ export { WallClock } from "./clock.js";
2
+ export { Codec } from "./codec.js";
3
+ export { Status } from "./computation.js";
4
+ export { Context } from "./context.js";
5
+ export { Core } from "./core.js";
6
+ export { type Encryptor, NoopEncryptor } from "./encryptor.js";
7
+ export { ResonateTimeoutException } from "./exceptions.js";
8
+ export { AsyncHeartbeat, NoopHeartbeat } from "./heartbeat.js";
9
+ export { ConsoleLogger, type Logger, type LogLevel } from "./logger.js";
10
+ export { type HttpAdapter, HttpNetwork, PollMessageSource, PushMessageSource } from "./network/http.js";
11
+ export { LocalNetwork } from "./network/local.js";
12
+ export type { Network, Recv, Send } from "./network/network.js";
13
+ export * from "./network/types.js";
14
+ export { Message } from "./network/types.js";
15
+ export { OptionsBuilder } from "./options.js";
16
+ export { Registry } from "./registry.js";
17
+ export { Resonate, ResonateFunc, ResonateHandle } from "./resonate.js";
18
+ export { awaitThenResumeOrSuspend, blockIsSole, dedupIsSole, type Event, exclusiveLifecycle, isWellFormed, rootSpawn, rpcHasCallee, runHasCallee, spawnIsFirst, type Trace, TraceCollector, terminalIsLast, uniqueSpawn, uniqueTerminal, } from "./trace.js";
19
+ export type { Effects } from "./types.js";
20
+ export { Func } from "./types.js";
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,KAAK,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAChE,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EACL,wBAAwB,EACxB,WAAW,EACX,WAAW,EACX,KAAK,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,KAAK,KAAK,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ export { WallClock } from "./clock.js";
2
+ export { Codec } from "./codec.js";
3
+ export { Core } from "./core.js";
4
+ export { NoopEncryptor } from "./encryptor.js";
5
+ export { ResonateTimeoutException } from "./exceptions.js";
6
+ export { AsyncHeartbeat, NoopHeartbeat } from "./heartbeat.js";
7
+ export { ConsoleLogger } from "./logger.js";
8
+ export { HttpNetwork, PollMessageSource, PushMessageSource } from "./network/http.js";
9
+ export { LocalNetwork } from "./network/local.js";
10
+ export * from "./network/types.js";
11
+ export { OptionsBuilder } from "./options.js";
12
+ export { Registry } from "./registry.js";
13
+ export { Resonate } from "./resonate.js";
14
+ export { awaitThenResumeOrSuspend, blockIsSole, dedupIsSole, exclusiveLifecycle, isWellFormed, rootSpawn, rpcHasCallee, runHasCallee, spawnIsFirst, TraceCollector, terminalIsLast, uniqueSpawn, uniqueTerminal, } from "./trace.js";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAkB,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAA8B,MAAM,aAAa,CAAC;AACxE,OAAO,EAAoB,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAgC,MAAM,eAAe,CAAC;AACvE,OAAO,EACL,wBAAwB,EACxB,WAAW,EACX,WAAW,EAEX,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EAEZ,cAAc,EACd,cAAc,EACd,WAAW,EACX,cAAc,GACf,MAAM,YAAY,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Structured logging interface for the Resonate SDK.
3
+ *
4
+ * Users can inject any logger that satisfies this interface (e.g., pino, winston)
5
+ * via the Resonate constructor. The default implementation is {@link ConsoleLogger}.
6
+ */
7
+ export interface Logger {
8
+ debug(fields: Record<string, any>, msg: string): void;
9
+ info(fields: Record<string, any>, msg: string): void;
10
+ warn(fields: Record<string, any>, msg: string): void;
11
+ error(fields: Record<string, any>, msg: string): void;
12
+ }
13
+ export type LogLevel = "debug" | "info" | "warn" | "error";
14
+ /**
15
+ * Default structured logger that writes JSON lines to stdout/stderr.
16
+ *
17
+ * - debug and info go to `console.log` (stdout)
18
+ * - warn goes to `console.warn` (stderr)
19
+ * - error goes to `console.error` (stderr)
20
+ *
21
+ * Messages at levels below the configured `level` are suppressed.
22
+ */
23
+ export declare class ConsoleLogger implements Logger {
24
+ private level;
25
+ constructor(level?: LogLevel);
26
+ debug(fields: Record<string, any>, msg: string): void;
27
+ info(fields: Record<string, any>, msg: string): void;
28
+ warn(fields: Record<string, any>, msg: string): void;
29
+ error(fields: Record<string, any>, msg: string): void;
30
+ private shouldLog;
31
+ private emit;
32
+ }
33
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACvD;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAS3D;;;;;;;;GAQG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,OAAO,CAAC,KAAK,CAAW;gBAEZ,KAAK,GAAE,QAAiB;IAIpC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAKrD,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAKpD,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAKpD,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAKrD,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,IAAI;CASb"}
package/dist/logger.js ADDED
@@ -0,0 +1,54 @@
1
+ const LOG_LEVEL_ORDER = {
2
+ debug: 0,
3
+ info: 1,
4
+ warn: 2,
5
+ error: 3,
6
+ };
7
+ /**
8
+ * Default structured logger that writes JSON lines to stdout/stderr.
9
+ *
10
+ * - debug and info go to `console.log` (stdout)
11
+ * - warn goes to `console.warn` (stderr)
12
+ * - error goes to `console.error` (stderr)
13
+ *
14
+ * Messages at levels below the configured `level` are suppressed.
15
+ */
16
+ export class ConsoleLogger {
17
+ level;
18
+ constructor(level = "warn") {
19
+ this.level = level;
20
+ }
21
+ debug(fields, msg) {
22
+ if (!this.shouldLog("debug"))
23
+ return;
24
+ this.emit("debug", fields, msg, console.log);
25
+ }
26
+ info(fields, msg) {
27
+ if (!this.shouldLog("info"))
28
+ return;
29
+ this.emit("info", fields, msg, console.log);
30
+ }
31
+ warn(fields, msg) {
32
+ if (!this.shouldLog("warn"))
33
+ return;
34
+ this.emit("warn", fields, msg, console.warn);
35
+ }
36
+ error(fields, msg) {
37
+ if (!this.shouldLog("error"))
38
+ return;
39
+ this.emit("error", fields, msg, console.error);
40
+ }
41
+ shouldLog(level) {
42
+ return LOG_LEVEL_ORDER[level] >= LOG_LEVEL_ORDER[this.level];
43
+ }
44
+ emit(level, fields, msg, writer) {
45
+ const entry = {
46
+ timestamp: new Date().toISOString(),
47
+ level,
48
+ msg,
49
+ ...fields,
50
+ };
51
+ writer(JSON.stringify(entry));
52
+ }
53
+ }
54
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAeA,MAAM,eAAe,GAA6B;IAChD,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,OAAO,aAAa;IAChB,KAAK,CAAW;IAExB,YAAY,QAAkB,MAAM;QAClC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,MAA2B,EAAE,GAAW;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,OAAO;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC,MAA2B,EAAE,GAAW;QAC3C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAAE,OAAO;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,MAA2B,EAAE,GAAW;QAC3C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAAE,OAAO;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,MAA2B,EAAE,GAAW;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,OAAO;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAEO,SAAS,CAAC,KAAe;QAC/B,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;IAEO,IAAI,CAAC,KAAa,EAAE,MAA2B,EAAE,GAAW,EAAE,MAAgC;QACpG,MAAM,KAAK,GAAG;YACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK;YACL,GAAG;YACH,GAAG,MAAM;SACV,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,82 @@
1
+ import type { Logger } from "../logger.js";
2
+ import type { Network } from "./network.js";
3
+ import { type Message, type Request, type Response } from "./types.js";
4
+ export interface HttpAdapter {
5
+ readonly unicast: string;
6
+ readonly anycast: string;
7
+ init(): Promise<void>;
8
+ stop(): Promise<void>;
9
+ onReceive(callback: (msg: Message) => void): void;
10
+ }
11
+ export interface HttpNetworkConfig {
12
+ url?: string;
13
+ timeout?: number;
14
+ headers?: {
15
+ [key: string]: string;
16
+ };
17
+ token?: string;
18
+ logger?: Logger;
19
+ adapter?: HttpAdapter;
20
+ }
21
+ export declare class HttpNetwork implements Network {
22
+ private url;
23
+ private timeout;
24
+ private headers;
25
+ private token?;
26
+ private adapter?;
27
+ private logger?;
28
+ constructor({ url, timeout, headers, token, logger, adapter, }: HttpNetworkConfig);
29
+ get unicast(): string;
30
+ get anycast(): string;
31
+ init(): Promise<void>;
32
+ stop(): Promise<void>;
33
+ recv(callback: (msg: Message) => void): void;
34
+ private static readonly PROTOCOL_STATUSES;
35
+ send: <K extends Request["kind"]>(req: Extract<Request, {
36
+ kind: K;
37
+ }>) => Promise<Extract<Response, {
38
+ kind: K;
39
+ }>>;
40
+ }
41
+ export declare class PollMessageSource implements HttpAdapter {
42
+ readonly unicast: string;
43
+ readonly anycast: string;
44
+ private pollUrl;
45
+ private headers;
46
+ private eventSource;
47
+ private callbacks;
48
+ private logger?;
49
+ private reconnectAttempt;
50
+ private static readonly INITIAL_BACKOFF_MS;
51
+ private static readonly MAX_BACKOFF_MS;
52
+ constructor({ url, token, logger, }: {
53
+ url: string;
54
+ token?: string;
55
+ logger?: Logger;
56
+ });
57
+ private connect;
58
+ private deliver;
59
+ init(): Promise<void>;
60
+ stop(): Promise<void>;
61
+ onReceive(callback: (msg: Message) => void): void;
62
+ }
63
+ export declare class PushMessageSource implements HttpAdapter {
64
+ unicast: string;
65
+ anycast: string;
66
+ private host;
67
+ private port;
68
+ private server;
69
+ private callbacks;
70
+ private logger?;
71
+ constructor({ host, port, logger, }?: {
72
+ host?: string;
73
+ port?: number;
74
+ logger?: Logger;
75
+ });
76
+ init(): Promise<void>;
77
+ stop(): Promise<void>;
78
+ private handleRequest;
79
+ private deliver;
80
+ onReceive(callback: (msg: Message) => void): void;
81
+ }
82
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/network/http.ts"],"names":[],"mappings":"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"}