@restatedev/restate-sdk 1.2.0 → 1.3.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 (142) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/src/common_api.d.ts +6 -3
  3. package/dist/cjs/src/common_api.d.ts.map +1 -1
  4. package/dist/cjs/src/common_api.js +7 -1
  5. package/dist/cjs/src/common_api.js.map +1 -1
  6. package/dist/cjs/src/context.d.ts +39 -7
  7. package/dist/cjs/src/context.d.ts.map +1 -1
  8. package/dist/cjs/src/context.js.map +1 -1
  9. package/dist/cjs/src/context_impl.d.ts +16 -18
  10. package/dist/cjs/src/context_impl.d.ts.map +1 -1
  11. package/dist/cjs/src/context_impl.js +109 -116
  12. package/dist/cjs/src/context_impl.js.map +1 -1
  13. package/dist/cjs/src/endpoint/endpoint_builder.js +1 -1
  14. package/dist/cjs/src/endpoint/fetch_endpoint.d.ts +2 -2
  15. package/dist/cjs/src/endpoint/fetch_endpoint.d.ts.map +1 -1
  16. package/dist/cjs/src/endpoint/fetch_endpoint.js.map +1 -1
  17. package/dist/cjs/src/endpoint/handlers/generic.d.ts.map +1 -1
  18. package/dist/cjs/src/endpoint/handlers/generic.js +2 -1
  19. package/dist/cjs/src/endpoint/handlers/generic.js.map +1 -1
  20. package/dist/cjs/src/endpoint.d.ts +6 -0
  21. package/dist/cjs/src/endpoint.d.ts.map +1 -1
  22. package/dist/cjs/src/generated/version.d.ts +1 -1
  23. package/dist/cjs/src/generated/version.js +1 -1
  24. package/dist/cjs/src/journal.d.ts.map +1 -1
  25. package/dist/cjs/src/journal.js +1 -3
  26. package/dist/cjs/src/journal.js.map +1 -1
  27. package/dist/cjs/src/local_state_store.d.ts +2 -4
  28. package/dist/cjs/src/local_state_store.d.ts.map +1 -1
  29. package/dist/cjs/src/local_state_store.js +9 -10
  30. package/dist/cjs/src/local_state_store.js.map +1 -1
  31. package/dist/cjs/src/state_machine.d.ts +2 -1
  32. package/dist/cjs/src/state_machine.d.ts.map +1 -1
  33. package/dist/cjs/src/state_machine.js.map +1 -1
  34. package/dist/cjs/src/types/rpc.d.ts +128 -11
  35. package/dist/cjs/src/types/rpc.d.ts.map +1 -1
  36. package/dist/cjs/src/types/rpc.js +215 -24
  37. package/dist/cjs/src/types/rpc.js.map +1 -1
  38. package/dist/cjs/src/user_agent.d.ts +1 -1
  39. package/dist/cjs/src/utils/rand.d.ts +1 -3
  40. package/dist/cjs/src/utils/rand.d.ts.map +1 -1
  41. package/dist/cjs/src/utils/rand.js +1 -1
  42. package/dist/cjs/src/utils/rand.js.map +1 -1
  43. package/dist/cjs/src/utils/utils.d.ts +0 -2
  44. package/dist/cjs/src/utils/utils.d.ts.map +1 -1
  45. package/dist/cjs/src/utils/utils.js +1 -11
  46. package/dist/cjs/src/utils/utils.js.map +1 -1
  47. package/dist/cjs/test/complete_awakeable.test.js +1 -1
  48. package/dist/cjs/test/complete_awakeable.test.js.map +1 -1
  49. package/dist/cjs/test/get_state.test.js +0 -5
  50. package/dist/cjs/test/get_state.test.js.map +1 -1
  51. package/dist/cjs/test/lambda.test.js +19 -7
  52. package/dist/cjs/test/lambda.test.js.map +1 -1
  53. package/dist/cjs/test/promise_combinators.test.js +2 -2
  54. package/dist/cjs/test/promise_combinators.test.js.map +1 -1
  55. package/dist/cjs/test/protoutils.d.ts +5 -5
  56. package/dist/cjs/test/protoutils.d.ts.map +1 -1
  57. package/dist/cjs/test/protoutils.js +35 -26
  58. package/dist/cjs/test/protoutils.js.map +1 -1
  59. package/dist/cjs/test/service_bind.test.js +25 -5
  60. package/dist/cjs/test/service_bind.test.js.map +1 -1
  61. package/dist/cjs/test/testdriver.d.ts +2 -0
  62. package/dist/cjs/test/testdriver.d.ts.map +1 -1
  63. package/dist/cjs/test/testdriver.js +11 -0
  64. package/dist/cjs/test/testdriver.js.map +1 -1
  65. package/dist/cjs/test/utils.test.js +0 -11
  66. package/dist/cjs/test/utils.test.js.map +1 -1
  67. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  68. package/dist/esm/src/common_api.d.ts +6 -3
  69. package/dist/esm/src/common_api.d.ts.map +1 -1
  70. package/dist/esm/src/common_api.js +3 -1
  71. package/dist/esm/src/common_api.js.map +1 -1
  72. package/dist/esm/src/context.d.ts +39 -7
  73. package/dist/esm/src/context.d.ts.map +1 -1
  74. package/dist/esm/src/context.js.map +1 -1
  75. package/dist/esm/src/context_impl.d.ts +16 -18
  76. package/dist/esm/src/context_impl.d.ts.map +1 -1
  77. package/dist/esm/src/context_impl.js +110 -117
  78. package/dist/esm/src/context_impl.js.map +1 -1
  79. package/dist/esm/src/endpoint/endpoint_builder.js +1 -1
  80. package/dist/esm/src/endpoint/fetch_endpoint.d.ts +2 -2
  81. package/dist/esm/src/endpoint/fetch_endpoint.d.ts.map +1 -1
  82. package/dist/esm/src/endpoint/fetch_endpoint.js.map +1 -1
  83. package/dist/esm/src/endpoint/handlers/generic.d.ts.map +1 -1
  84. package/dist/esm/src/endpoint/handlers/generic.js +2 -1
  85. package/dist/esm/src/endpoint/handlers/generic.js.map +1 -1
  86. package/dist/esm/src/endpoint.d.ts +6 -0
  87. package/dist/esm/src/endpoint.d.ts.map +1 -1
  88. package/dist/esm/src/generated/version.d.ts +1 -1
  89. package/dist/esm/src/generated/version.js +1 -1
  90. package/dist/esm/src/journal.d.ts.map +1 -1
  91. package/dist/esm/src/journal.js +2 -4
  92. package/dist/esm/src/journal.js.map +1 -1
  93. package/dist/esm/src/local_state_store.d.ts +2 -4
  94. package/dist/esm/src/local_state_store.d.ts.map +1 -1
  95. package/dist/esm/src/local_state_store.js +9 -10
  96. package/dist/esm/src/local_state_store.js.map +1 -1
  97. package/dist/esm/src/state_machine.d.ts +2 -1
  98. package/dist/esm/src/state_machine.d.ts.map +1 -1
  99. package/dist/esm/src/state_machine.js.map +1 -1
  100. package/dist/esm/src/types/rpc.d.ts +128 -11
  101. package/dist/esm/src/types/rpc.d.ts.map +1 -1
  102. package/dist/esm/src/types/rpc.js +209 -23
  103. package/dist/esm/src/types/rpc.js.map +1 -1
  104. package/dist/esm/src/user_agent.d.ts +1 -1
  105. package/dist/esm/src/utils/rand.d.ts +1 -3
  106. package/dist/esm/src/utils/rand.d.ts.map +1 -1
  107. package/dist/esm/src/utils/rand.js +1 -1
  108. package/dist/esm/src/utils/rand.js.map +1 -1
  109. package/dist/esm/src/utils/utils.d.ts +0 -2
  110. package/dist/esm/src/utils/utils.d.ts.map +1 -1
  111. package/dist/esm/src/utils/utils.js +0 -8
  112. package/dist/esm/src/utils/utils.js.map +1 -1
  113. package/dist/esm/test/complete_awakeable.test.js +1 -1
  114. package/dist/esm/test/complete_awakeable.test.js.map +1 -1
  115. package/dist/esm/test/get_state.test.js +0 -5
  116. package/dist/esm/test/get_state.test.js.map +1 -1
  117. package/dist/esm/test/lambda.test.js +19 -7
  118. package/dist/esm/test/lambda.test.js.map +1 -1
  119. package/dist/esm/test/promise_combinators.test.js +2 -2
  120. package/dist/esm/test/promise_combinators.test.js.map +1 -1
  121. package/dist/esm/test/protoutils.d.ts +5 -5
  122. package/dist/esm/test/protoutils.d.ts.map +1 -1
  123. package/dist/esm/test/protoutils.js +35 -26
  124. package/dist/esm/test/protoutils.js.map +1 -1
  125. package/dist/esm/test/service_bind.test.js +25 -5
  126. package/dist/esm/test/service_bind.test.js.map +1 -1
  127. package/dist/esm/test/testdriver.d.ts +2 -0
  128. package/dist/esm/test/testdriver.d.ts.map +1 -1
  129. package/dist/esm/test/testdriver.js +11 -0
  130. package/dist/esm/test/testdriver.js.map +1 -1
  131. package/dist/esm/test/utils.test.js +1 -12
  132. package/dist/esm/test/utils.test.js.map +1 -1
  133. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  134. package/package.json +2 -2
  135. package/dist/cjs/src/utils/serde.d.ts +0 -5
  136. package/dist/cjs/src/utils/serde.d.ts.map +0 -1
  137. package/dist/cjs/src/utils/serde.js +0 -50
  138. package/dist/cjs/src/utils/serde.js.map +0 -1
  139. package/dist/esm/src/utils/serde.d.ts +0 -5
  140. package/dist/esm/src/utils/serde.d.ts.map +0 -1
  141. package/dist/esm/src/utils/serde.js +0 -43
  142. package/dist/esm/src/utils/serde.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  import type { Client, SendClient } from "./types/rpc.js";
3
- import type { RestateContext, RestateObjectContext, RestateObjectSharedContext, RestateWorkflowContext, RestateWorkflowSharedContext, Service, ServiceDefinitionFrom, VirtualObject, VirtualObjectDefinitionFrom, Workflow, WorkflowDefinitionFrom } from "@restatedev/restate-sdk-core";
3
+ import type { RestateContext, RestateObjectContext, RestateObjectSharedContext, RestateWorkflowContext, RestateWorkflowSharedContext, Service, ServiceDefinitionFrom, VirtualObject, VirtualObjectDefinitionFrom, Workflow, WorkflowDefinitionFrom, Serde } from "@restatedev/restate-sdk-core";
4
4
  /**
5
5
  * Represents the original request as sent to this handler.
6
6
  *
@@ -58,7 +58,7 @@ export interface KeyValueStore<TState extends TypedState> {
58
58
  * @example
59
59
  * const state = await ctx.get<string>("STATE");
60
60
  */
61
- get<TValue, TKey extends keyof TState = string>(name: TState extends UntypedState ? string : TKey): Promise<(TState extends UntypedState ? TValue : TState[TKey]) | null>;
61
+ get<TValue, TKey extends keyof TState = string>(name: TState extends UntypedState ? string : TKey, serde?: Serde<TState extends UntypedState ? TValue : TState[TKey]>): Promise<(TState extends UntypedState ? TValue : TState[TKey]) | null>;
62
62
  stateKeys(): Promise<Array<string>>;
63
63
  /**
64
64
  * Set/store state in the Restate runtime.
@@ -71,7 +71,7 @@ export interface KeyValueStore<TState extends TypedState> {
71
71
  * @example
72
72
  * ctx.set("STATE", "Hello");
73
73
  */
74
- set<TValue, TKey extends keyof TState = string>(name: TState extends UntypedState ? string : TKey, value: TState extends UntypedState ? TValue : TState[TKey]): void;
74
+ set<TValue, TKey extends keyof TState = string>(name: TState extends UntypedState ? string : TKey, value: TState extends UntypedState ? TValue : TState[TKey], serde?: Serde<TState extends UntypedState ? TValue : TState[TKey]>): void;
75
75
  /**
76
76
  * Clear/delete state in the Restate runtime.
77
77
  * @param name key of the state to delete
@@ -130,6 +130,35 @@ export interface ContextDate {
130
130
  * A function that can be run and its result durably persisted by Restate.
131
131
  */
132
132
  export type RunAction<T> = (() => Promise<T>) | (() => T);
133
+ export type RunOptions<T> = {
134
+ serde?: Serde<T>;
135
+ };
136
+ /**
137
+ * Call a handler directly avoiding restate's type safety checks.
138
+ * This is a generic machnisim to invoke handlers directly by only knowing
139
+ * the service and handler name, (or key in the case of objects or workflows)
140
+ */
141
+ export type GenericCall<REQ, RES> = {
142
+ service: string;
143
+ method: string;
144
+ parameter: REQ;
145
+ key?: string;
146
+ inputSerde?: Serde<REQ>;
147
+ outputSerde?: Serde<RES>;
148
+ };
149
+ /**
150
+ * Send a message to an handler directly avoiding restate's type safety checks.
151
+ * This is a generic machnisim to invoke handlers directly by only knowing
152
+ * the service and handler name, (or key in the case of objects or workflows)
153
+ */
154
+ export type GenericSend<REQ> = {
155
+ service: string;
156
+ method: string;
157
+ parameter: REQ;
158
+ key?: string;
159
+ inputSerde?: Serde<REQ>;
160
+ delay?: number;
161
+ };
133
162
  /**
134
163
  * The context that gives access to all Restate-backed operations, for example
135
164
  * - sending reliable messages / RPC through Restate
@@ -212,6 +241,7 @@ export interface Context extends RestateContext {
212
241
  * @param action the action to run.
213
242
  */
214
243
  run<T>(name: string, action: RunAction<T>): Promise<T>;
244
+ run<T>(name: string, action: RunAction<T>, options: RunOptions<T>): Promise<T>;
215
245
  /**
216
246
  * Register an awakeable and pause the processing until the awakeable ID (and optional payload) have been returned to the service
217
247
  * (via ctx.completeAwakeable(...)). The SDK deserializes the payload with `JSON.parse(result.toString()) as T`.
@@ -231,7 +261,7 @@ export interface Context extends RestateContext {
231
261
  * // Wait for the external service to wake this service back up
232
262
  * const result = await awakeable.promise;
233
263
  */
234
- awakeable<T>(): {
264
+ awakeable<T>(serde?: Serde<T>): {
235
265
  id: string;
236
266
  promise: CombineablePromise<T>;
237
267
  };
@@ -247,7 +277,7 @@ export interface Context extends RestateContext {
247
277
  * // The sleeping service should have sent the awakeableIdentifier string to this service.
248
278
  * ctx.resolveAwakeable(awakeableIdentifier, "hello");
249
279
  */
250
- resolveAwakeable<T>(id: string, payload?: T): void;
280
+ resolveAwakeable<T>(id: string, payload?: T, serde?: Serde<T>): void;
251
281
  /**
252
282
  * Reject an awakeable. When rejecting, the service waiting on this awakeable will be woken up with a terminal error with the provided reason.
253
283
  * @param id the string ID of the awakeable.
@@ -379,6 +409,8 @@ export interface Context extends RestateContext {
379
409
  * @param opts Send options
380
410
  */
381
411
  objectSendClient<D>(obj: VirtualObjectDefinitionFrom<D>, key: string, opts?: SendOptions): SendClient<VirtualObject<D>>;
412
+ genericCall<REQ = Uint8Array, RES = Uint8Array>(call: GenericCall<REQ, RES>): Promise<RES>;
413
+ genericSend<REQ = Uint8Array>(call: GenericSend<REQ>): void;
382
414
  /**
383
415
  * Returns the raw request that triggered that handler.
384
416
  * Use that object to inspect the original request headers
@@ -424,7 +456,7 @@ export interface ObjectSharedContext<TState extends TypedState = UntypedState> e
424
456
  * @example
425
457
  * const state = await ctx.get<string>("STATE");
426
458
  */
427
- get<TValue, TKey extends keyof TState = string>(name: TState extends UntypedState ? string : TKey): Promise<(TState extends UntypedState ? TValue : TState[TKey]) | null>;
459
+ get<TValue, TKey extends keyof TState = string>(name: TState extends UntypedState ? string : TKey, serde?: Serde<TState extends UntypedState ? TValue : TState[TKey]>): Promise<(TState extends UntypedState ? TValue : TState[TKey]) | null>;
428
460
  /**
429
461
  * Retrieve all the state keys for this object.
430
462
  */
@@ -548,7 +580,7 @@ export interface WorkflowSharedContext<TState extends TypedState = UntypedState>
548
580
  *
549
581
  * @param name the name of the durable promise
550
582
  */
551
- promise<T = void>(name: string): DurablePromise<T>;
583
+ promise<T>(name: string, serde?: Serde<T>): DurablePromise<T>;
552
584
  }
553
585
  export interface WorkflowContext<TState extends TypedState = UntypedState> extends WorkflowSharedContext<TState>, ObjectContext<TState>, RestateWorkflowContext {
554
586
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgBH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAugBhD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC;;;;;;;;OAQG;IACH,GAAG,CACD,MAAS;QAET,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,WAAW,CAAC,gBAAgB,CACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EACzB,MAAM,CAGN,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,CACF,MAAS;QAET,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,WAAW,CAAC,gBAAgB,CACjC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAC1B,MAAM,CACwB,CAAC;IACnC,CAAC;IAED;;;;;;;;;OASG;IACH,GAAG,CACD,MAAS;QAET,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,WAAW,CAAC,gBAAgB,CACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EACzB,MAAM,CACwB,CAAC;IACnC,CAAC;IAED;;;;;;;;OAQG;IACH,UAAU,CACR,MAAS;QAIT,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,WAAW,CAAC,gBAAgB,CACjC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAChC,MAAM,CAGN,CAAC;IACL,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiBH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAyjBhD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC;;;;;;;;OAQG;IACH,GAAG,CACD,MAAS;QAET,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,WAAW,CAAC,gBAAgB,CACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EACzB,MAAM,CAGN,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,CACF,MAAS;QAET,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,WAAW,CAAC,gBAAgB,CACjC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAC1B,MAAM,CACwB,CAAC;IACnC,CAAC;IAED;;;;;;;;;OASG;IACH,GAAG,CACD,MAAS;QAET,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,WAAW,CAAC,gBAAgB,CACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EACzB,MAAM,CACwB,CAAC;IACnC,CAAC;IAED;;;;;;;;OAQG;IACH,UAAU,CACR,MAAS;QAIT,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,WAAW,CAAC,gBAAgB,CACjC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAChC,MAAM,CAGN,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -1,12 +1,10 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
- import type { CombineablePromise, ContextDate, DurablePromise, ObjectContext, Rand, Request, RunAction, SendOptions, WorkflowContext } from "./context.js";
2
+ import type { CombineablePromise, ContextDate, DurablePromise, GenericCall, GenericSend, ObjectContext, Rand, Request, RunAction, RunOptions, SendOptions, WorkflowContext } from "./context.js";
4
3
  import type { StateMachine } from "./state_machine.js";
5
- import type { Client, SendClient } from "./types/rpc.js";
6
4
  import { HandlerKind } from "./types/rpc.js";
7
- import type { Service, ServiceDefinitionFrom, VirtualObjectDefinitionFrom, VirtualObject, WorkflowDefinitionFrom, Workflow } from "@restatedev/restate-sdk-core";
5
+ import type { Client, SendClient } from "./types/rpc.js";
6
+ import type { Service, ServiceDefinitionFrom, VirtualObjectDefinitionFrom, VirtualObject, WorkflowDefinitionFrom, Workflow, Serde } from "@restatedev/restate-sdk-core";
8
7
  import type { WrappedPromise } from "./utils/promises.js";
9
- import { Buffer } from "node:buffer";
10
8
  export type InternalCombineablePromise<T> = CombineablePromise<T> & {
11
9
  journalIndex: number;
12
10
  };
@@ -19,31 +17,31 @@ export declare class ContextImpl implements ObjectContext, WorkflowContext {
19
17
  private readonly invocationRequest;
20
18
  readonly rand: Rand;
21
19
  readonly date: ContextDate;
22
- constructor(id: Buffer, console: Console, handlerKind: HandlerKind, keyedContextKey: string | undefined, invocationValue: Uint8Array, invocationHeaders: ReadonlyMap<string, string>, attemptHeaders: ReadonlyMap<string, string | string[] | undefined>, extraArgs: unknown[], stateMachine: StateMachine);
23
- workflowClient<D>(opts: WorkflowDefinitionFrom<D>, key: string): Client<Workflow<D>>;
24
- promise<T = void>(name: string): DurablePromise<T>;
20
+ constructor(id: Uint8Array, console: Console, handlerKind: HandlerKind, keyedContextKey: string | undefined, invocationValue: Uint8Array, invocationHeaders: ReadonlyMap<string, string>, attemptHeaders: ReadonlyMap<string, string | string[] | undefined>, extraArgs: unknown[], stateMachine: StateMachine);
21
+ promise<T>(name: string, serde?: Serde<T>): DurablePromise<T>;
25
22
  get key(): string;
26
23
  request(): Request;
27
- get<T>(name: string): Promise<T | null>;
24
+ get<T>(name: string, serde?: Serde<T>): Promise<T | null>;
28
25
  stateKeys(): Promise<Array<string>>;
29
- set<T>(name: string, value: T): void;
26
+ set<T>(name: string, value: T, serde?: Serde<T>): void;
30
27
  clear(name: string): void;
31
28
  clearAll(): void;
32
- private invoke;
33
- private invokeOneWay;
29
+ genericCall<REQ = Uint8Array, RES = Uint8Array>(call: GenericCall<REQ, RES>): Promise<RES>;
30
+ genericSend<REQ = Uint8Array>(send: GenericSend<REQ>): void;
34
31
  serviceClient<D>({ name }: ServiceDefinitionFrom<D>): Client<Service<D>>;
35
32
  objectClient<D>({ name }: VirtualObjectDefinitionFrom<D>, key: string): Client<VirtualObject<D>>;
36
- serviceSendClient<D>(service: ServiceDefinitionFrom<D>, opts?: SendOptions): SendClient<Service<D>>;
37
- objectSendClient<D>(obj: VirtualObjectDefinitionFrom<D>, key: string, opts?: SendOptions): SendClient<VirtualObject<D>>;
38
- workflowSendClient<D>(def: WorkflowDefinitionFrom<D>, key: string, opts?: SendOptions): SendClient<Workflow<D>>;
39
- run<T>(nameOrAction: string | RunAction<T>, actionSecondParameter?: RunAction<T>): Promise<T>;
33
+ workflowClient<D>({ name }: WorkflowDefinitionFrom<D>, key: string): Client<Workflow<D>>;
34
+ serviceSendClient<D>({ name }: ServiceDefinitionFrom<D>, opts?: SendOptions): SendClient<Service<D>>;
35
+ objectSendClient<D>({ name }: VirtualObjectDefinitionFrom<D>, key: string, opts?: SendOptions): SendClient<VirtualObject<D>>;
36
+ workflowSendClient<D>({ name }: WorkflowDefinitionFrom<D>, key: string, opts?: SendOptions): SendClient<Workflow<D>>;
37
+ run<T>(nameOrAction: string | RunAction<T>, actionSecondParameter?: RunAction<T>, options?: RunOptions<T>): Promise<T>;
40
38
  sleep(millis: number): CombineablePromise<void>;
41
39
  private sleepInternal;
42
- awakeable<T>(): {
40
+ awakeable<T>(serde?: Serde<T>): {
43
41
  id: string;
44
42
  promise: CombineablePromise<T>;
45
43
  };
46
- resolveAwakeable<T>(id: string, payload?: T): void;
44
+ resolveAwakeable<T>(id: string, payload?: T, serde?: Serde<T>): void;
47
45
  rejectAwakeable(id: string, reason: string): void;
48
46
  private completeAwakeable;
49
47
  static createCombinator<T extends readonly CombineablePromise<unknown>[]>(combinatorConstructor: (promises: PromiseLike<unknown>[]) => Promise<unknown>, promises: T): WrappedPromise<unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"context_impl.d.ts","sourceRoot":"","sources":["../../../src/context_impl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context_impl.d.ts","sourceRoot":"","sources":["../../../src/context_impl.ts"],"names":[],"mappings":"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"}
@@ -11,13 +11,12 @@
11
11
  import { AwakeableEntryMessage, OneWayCallEntryMessage, CompleteAwakeableEntryMessage, Empty, GetStateEntryMessage, GetStateKeysEntryMessage, CallEntryMessage, RunEntryMessage, SleepEntryMessage, GetPromiseEntryMessage, PeekPromiseEntryMessage, CompletePromiseEntryMessage, } from "./generated/proto/protocol_pb.js";
12
12
  import { AWAKEABLE_ENTRY_MESSAGE_TYPE, AWAKEABLE_IDENTIFIER_PREFIX, BACKGROUND_INVOKE_ENTRY_MESSAGE_TYPE, CLEAR_ALL_STATE_ENTRY_MESSAGE_TYPE, CLEAR_STATE_ENTRY_MESSAGE_TYPE, COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE, GET_STATE_ENTRY_MESSAGE_TYPE, GET_STATE_KEYS_ENTRY_MESSAGE_TYPE, INVOKE_ENTRY_MESSAGE_TYPE, SET_STATE_ENTRY_MESSAGE_TYPE, SIDE_EFFECT_ENTRY_MESSAGE_TYPE, SLEEP_ENTRY_MESSAGE_TYPE, GET_PROMISE_MESSAGE_TYPE, PEEK_PROMISE_MESSAGE_TYPE, COMPLETE_PROMISE_MESSAGE_TYPE, } from "./types/protocol.js";
13
13
  import { RetryableError, TerminalError, ensureError, TimeoutError, INTERNAL_ERROR_CODE, UNKNOWN_ERROR_CODE, errorToFailure, } from "./types/errors.js";
14
- import { jsonSerialize, jsonDeserialize } from "./utils/utils.js";
15
14
  import { protoInt64 } from "@bufbuild/protobuf";
16
- import { HandlerKind } from "./types/rpc.js";
15
+ import { HandlerKind, makeRpcCallProxy, makeRpcSendProxy, defaultSerde, } from "./types/rpc.js";
16
+ import { serde } from "@restatedev/restate-sdk-core";
17
17
  import { RandImpl } from "./utils/rand.js";
18
18
  import { newJournalEntryPromiseId } from "./promise_combinator_tracker.js";
19
19
  import { Buffer } from "node:buffer";
20
- import { deserializeJson, serializeJson } from "./utils/serde.js";
21
20
  export class ContextImpl {
22
21
  console;
23
22
  handlerKind;
@@ -52,20 +51,8 @@ export class ContextImpl {
52
51
  };
53
52
  this.rand = new RandImpl(id, this.checkState.bind(this));
54
53
  }
55
- workflowClient(opts, key) {
56
- const { name } = opts;
57
- const clientProxy = new Proxy({}, {
58
- get: (_target, prop) => {
59
- const route = prop;
60
- return (...args) => {
61
- return this.invoke(name, route, args.shift(), key, serializeJson, deserializeJson);
62
- };
63
- },
64
- });
65
- return clientProxy;
66
- }
67
- promise(name) {
68
- return new DurablePromiseImpl(this, name);
54
+ promise(name, serde) {
55
+ return new DurablePromiseImpl(this, name, serde);
69
56
  }
70
57
  get key() {
71
58
  switch (this.handlerKind) {
@@ -87,11 +74,13 @@ export class ContextImpl {
87
74
  return this.invocationRequest;
88
75
  }
89
76
  // DON'T make this function async!!! see sideEffect comment for details.
90
- get(name) {
77
+ get(name, serde) {
91
78
  // Check if this is a valid action
92
79
  this.checkState("get state");
93
80
  // Create the message and let the state machine process it
94
- const msg = new GetStateEntryMessage({ key: Buffer.from(name) });
81
+ const msg = new GetStateEntryMessage({
82
+ key: new TextEncoder().encode(name),
83
+ });
95
84
  const completed = this.stateMachine.localStateStore.tryCompleteGet(name, msg);
96
85
  const getState = async () => {
97
86
  const result = await this.stateMachine.handleUserCodeMessage(GET_STATE_ENTRY_MESSAGE_TYPE, msg, completed);
@@ -102,10 +91,10 @@ export class ContextImpl {
102
91
  if (!completed) {
103
92
  this.stateMachine.localStateStore.add(name, result);
104
93
  }
105
- if (!(result instanceof Buffer)) {
94
+ if (!(result instanceof Uint8Array)) {
106
95
  return null;
107
96
  }
108
- return jsonDeserialize(result.toString());
97
+ return (serde ?? defaultSerde()).deserialize(result);
109
98
  };
110
99
  return getState();
111
100
  }
@@ -118,13 +107,14 @@ export class ContextImpl {
118
107
  const completed = this.stateMachine.localStateStore.tryCompletedGetStateKeys(msg);
119
108
  const getStateKeys = async () => {
120
109
  const result = await this.stateMachine.handleUserCodeMessage(GET_STATE_KEYS_ENTRY_MESSAGE_TYPE, msg, completed);
121
- return result.keys.map((b) => b.toString());
110
+ return result.keys.map((b) => new TextDecoder().decode(b));
122
111
  };
123
112
  return getStateKeys();
124
113
  }
125
- set(name, value) {
114
+ set(name, value, serde) {
126
115
  this.checkState("set state");
127
- const msg = this.stateMachine.localStateStore.set(name, value);
116
+ const bytes = (serde ?? defaultSerde()).serialize(value);
117
+ const msg = this.stateMachine.localStateStore.set(name, bytes);
128
118
  this.stateMachine
129
119
  .handleUserCodeMessage(SET_STATE_ENTRY_MESSAGE_TYPE, msg)
130
120
  .catch((e) => this.stateMachine.handleDanglingPromiseError(e));
@@ -144,108 +134,79 @@ export class ContextImpl {
144
134
  .catch((e) => this.stateMachine.handleDanglingPromiseError(e));
145
135
  }
146
136
  // --- Calls, background calls, etc
147
- // DON'T make this function async!!! see sideEffect comment for details.
148
- invoke(service, method, data, key, serializer, deserializer) {
149
- this.checkState("invoke");
137
+ //
138
+ genericCall(call) {
139
+ const requestSerde = call.inputSerde ?? serde.binary;
140
+ const responseSerde = call.outputSerde ?? serde.binary;
141
+ const parameter = requestSerde.serialize(call.parameter);
150
142
  const msg = new CallEntryMessage({
151
- serviceName: service,
152
- handlerName: method,
153
- parameter: serializer ? serializer(data) : data,
154
- key,
143
+ serviceName: call.service,
144
+ handlerName: call.method,
145
+ parameter,
146
+ key: call.key,
155
147
  });
156
- return this.markCombineablePromise(this.stateMachine.handleUserCodeMessage(INVOKE_ENTRY_MESSAGE_TYPE, msg).transform((res) => {
157
- if (deserializer) {
158
- return deserializer(res);
159
- }
160
- return res;
161
- }));
162
- }
163
- async invokeOneWay(service, method, data, serializer, delay, key) {
164
- const actualDelay = delay || 0;
165
- const invokeTime = actualDelay > 0 ? Date.now() + actualDelay : protoInt64.zero;
148
+ const rawRequest = this.stateMachine.handleUserCodeMessage(INVOKE_ENTRY_MESSAGE_TYPE, msg);
149
+ const decoded = rawRequest.transform((res) => responseSerde.deserialize(res));
150
+ return this.markCombineablePromise(decoded);
151
+ }
152
+ genericSend(send) {
153
+ const requestSerde = send.inputSerde ?? serde.binary;
154
+ const parameter = requestSerde.serialize(send.parameter);
155
+ const actualDelay = send.delay || 0;
156
+ const jsInvokeTime = actualDelay > 0 ? Date.now() + actualDelay : protoInt64.zero;
157
+ const invokeTime = protoInt64.parse(jsInvokeTime);
166
158
  const msg = new OneWayCallEntryMessage({
167
- serviceName: service,
168
- handlerName: method,
169
- parameter: serializer ? serializer(data) : data,
170
- invokeTime: protoInt64.parse(invokeTime),
171
- key,
159
+ serviceName: send.service,
160
+ handlerName: send.method,
161
+ parameter,
162
+ invokeTime,
163
+ key: send.key,
164
+ });
165
+ this.stateMachine
166
+ .handleUserCodeMessage(BACKGROUND_INVOKE_ENTRY_MESSAGE_TYPE, msg)
167
+ .catch((e) => {
168
+ this.stateMachine.handleDanglingPromiseError(e);
172
169
  });
173
- await this.stateMachine.handleUserCodeMessage(BACKGROUND_INVOKE_ENTRY_MESSAGE_TYPE, msg);
174
170
  }
175
171
  serviceClient({ name }) {
176
- const clientProxy = new Proxy({}, {
177
- get: (_target, prop) => {
178
- const route = prop;
179
- return (...args) => {
180
- return this.invoke(name, route, args.shift(), undefined, serializeJson, deserializeJson);
181
- };
182
- },
183
- });
184
- return clientProxy;
172
+ return makeRpcCallProxy((call) => this.genericCall(call), name);
185
173
  }
186
174
  objectClient({ name }, key) {
187
- const clientProxy = new Proxy({}, {
188
- get: (_target, prop) => {
189
- const route = prop;
190
- return (...args) => {
191
- return this.invoke(name, route, args.shift(), key, serializeJson, deserializeJson);
192
- };
193
- },
194
- });
195
- return clientProxy;
196
- }
197
- serviceSendClient(service, opts) {
198
- const clientProxy = new Proxy({}, {
199
- get: (_target, prop) => {
200
- const route = prop;
201
- return (...args) => {
202
- this.invokeOneWay(service.name, route, args.shift(), serializeJson, opts?.delay).catch((e) => {
203
- this.stateMachine.handleDanglingPromiseError(e);
204
- });
205
- };
206
- },
207
- });
208
- return clientProxy;
209
- }
210
- objectSendClient(obj, key, opts) {
211
- const clientProxy = new Proxy({}, {
212
- get: (_target, prop) => {
213
- const route = prop;
214
- return (...args) => {
215
- this.invokeOneWay(obj.name, route, args.shift(), serializeJson, opts?.delay, key).catch((e) => {
216
- this.stateMachine.handleDanglingPromiseError(e);
217
- });
218
- };
219
- },
220
- });
221
- return clientProxy;
222
- }
223
- workflowSendClient(def, key, opts) {
224
- const clientProxy = new Proxy({}, {
225
- get: (_target, prop) => {
226
- const route = prop;
227
- return (...args) => {
228
- this.invokeOneWay(def.name, route, args.shift(), serializeJson, opts?.delay, key).catch((e) => {
229
- this.stateMachine.handleDanglingPromiseError(e);
230
- });
231
- };
232
- },
233
- });
234
- return clientProxy;
175
+ return makeRpcCallProxy((call) => this.genericCall(call), name, key);
176
+ }
177
+ workflowClient({ name }, key) {
178
+ return makeRpcCallProxy((call) => this.genericCall(call), name, key);
179
+ }
180
+ serviceSendClient({ name }, opts) {
181
+ return makeRpcSendProxy((send) => this.genericSend(send), name, undefined, opts?.delay);
182
+ }
183
+ objectSendClient({ name }, key, opts) {
184
+ return makeRpcSendProxy((send) => this.genericSend(send), name, key, opts?.delay);
185
+ }
186
+ workflowSendClient({ name }, key, opts) {
187
+ return makeRpcSendProxy((send) => this.genericSend(send), name, key, opts?.delay);
235
188
  }
236
189
  // DON'T make this function async!!!
237
190
  // The reason is that we want the errors thrown by the initial checks to be propagated in the caller context,
238
191
  // and not in the promise context. To understand the semantic difference, make this function async and run the
239
192
  // UnawaitedSideEffectShouldFailSubsequentContextCall test.
240
- run(nameOrAction, actionSecondParameter) {
193
+ run(nameOrAction, actionSecondParameter, options) {
241
194
  this.checkState("run");
242
195
  const { name, action } = unpack(nameOrAction, actionSecondParameter);
243
196
  this.executingRun = true;
197
+ const serde = options?.serde ?? defaultSerde();
244
198
  const executeRun = async () => {
245
199
  // in replay mode, we directly return the value from the log
246
200
  if (this.stateMachine.nextEntryWillBeReplayed()) {
247
201
  const emptyMsg = new RunEntryMessage({});
248
- return this.stateMachine.handleUserCodeMessage(SIDE_EFFECT_ENTRY_MESSAGE_TYPE, emptyMsg);
202
+ return this.stateMachine
203
+ .handleUserCodeMessage(SIDE_EFFECT_ENTRY_MESSAGE_TYPE, emptyMsg)
204
+ .transform((result) => {
205
+ if (!result || result instanceof Empty) {
206
+ return undefined;
207
+ }
208
+ return serde.deserialize(result);
209
+ });
249
210
  }
250
211
  let sideEffectResult;
251
212
  try {
@@ -291,7 +252,7 @@ export class ContextImpl {
291
252
  name,
292
253
  result: {
293
254
  case: "value",
294
- value: Buffer.from(jsonSerialize(sideEffectResult)),
255
+ value: serde.serialize(sideEffectResult),
295
256
  },
296
257
  })
297
258
  : new RunEntryMessage({
@@ -324,17 +285,23 @@ export class ContextImpl {
324
285
  }));
325
286
  }
326
287
  // -- Awakeables
327
- awakeable() {
288
+ awakeable(serde) {
328
289
  this.checkState("awakeable");
329
290
  const msg = new AwakeableEntryMessage();
330
291
  const promise = this.stateMachine
331
292
  .handleUserCodeMessage(AWAKEABLE_ENTRY_MESSAGE_TYPE, msg)
332
293
  .transform((result) => {
333
- if (!(result instanceof Buffer)) {
294
+ if (!(result instanceof Uint8Array)) {
334
295
  // This should either be a filled buffer or an empty buffer but never anything else.
335
296
  throw RetryableError.internal("Awakeable was not resolved with a buffer payload");
336
297
  }
337
- return JSON.parse(result.toString());
298
+ if (!serde) {
299
+ return defaultSerde().deserialize(result);
300
+ }
301
+ if (result.length == 0) {
302
+ return undefined;
303
+ }
304
+ return serde.deserialize(result);
338
305
  });
339
306
  // This needs to be done after handling the message in the state machine
340
307
  // otherwise the index is not yet incremented.
@@ -346,14 +313,24 @@ export class ContextImpl {
346
313
  promise: this.markCombineablePromise(promise),
347
314
  };
348
315
  }
349
- resolveAwakeable(id, payload) {
316
+ resolveAwakeable(id, payload, serde) {
350
317
  // We coerce undefined to null as null can be stringified by JSON.stringify
351
- const payloadToWrite = payload === undefined ? null : payload;
318
+ let value;
319
+ if (serde) {
320
+ value =
321
+ payload == undefined ? new Uint8Array() : serde.serialize(payload);
322
+ }
323
+ else {
324
+ value =
325
+ payload != undefined
326
+ ? defaultSerde().serialize(payload)
327
+ : defaultSerde().serialize(null);
328
+ }
352
329
  this.checkState("resolveAwakeable");
353
330
  this.completeAwakeable(id, {
354
331
  result: {
355
332
  case: "value",
356
- value: Buffer.from(JSON.stringify(payloadToWrite)),
333
+ value,
357
334
  },
358
335
  });
359
336
  }
@@ -454,9 +431,11 @@ function extractContext(n) {
454
431
  class DurablePromiseImpl {
455
432
  ctx;
456
433
  name;
457
- constructor(ctx, name) {
434
+ serde;
435
+ constructor(ctx, name, serde) {
458
436
  this.ctx = ctx;
459
437
  this.name = name;
438
+ this.serde = serde ?? defaultSerde();
460
439
  }
461
440
  then(onfulfilled, onrejected) {
462
441
  return this.get().then(onfulfilled, onrejected);
@@ -474,7 +453,15 @@ class DurablePromiseImpl {
474
453
  });
475
454
  return this.ctx.markCombineablePromise(this.ctx.stateMachine
476
455
  .handleUserCodeMessage(GET_PROMISE_MESSAGE_TYPE, msg)
477
- .transform((v) => deserializeJson(v)));
456
+ .transform((v) => {
457
+ if (!v) {
458
+ return undefined;
459
+ }
460
+ if (v instanceof Empty) {
461
+ return undefined;
462
+ }
463
+ return this.serde.deserialize(v);
464
+ }));
478
465
  }
479
466
  peek() {
480
467
  const msg = new PeekPromiseEntryMessage({
@@ -482,14 +469,20 @@ class DurablePromiseImpl {
482
469
  });
483
470
  return this.ctx.stateMachine
484
471
  .handleUserCodeMessage(PEEK_PROMISE_MESSAGE_TYPE, msg)
485
- .transform((v) => v instanceof Empty ? undefined : deserializeJson(v));
472
+ .transform((v) => {
473
+ if (!v || v instanceof Empty) {
474
+ return undefined;
475
+ }
476
+ return this.serde.deserialize(v);
477
+ });
486
478
  }
487
479
  resolve(value) {
480
+ const buffer = value != undefined ? this.serde.serialize(value) : new Uint8Array();
488
481
  const msg = new CompletePromiseEntryMessage({
489
482
  key: this.name,
490
483
  completion: {
491
484
  case: "completionValue",
492
- value: serializeJson(value),
485
+ value: buffer,
493
486
  },
494
487
  });
495
488
  return this.ctx.stateMachine.handleUserCodeMessage(COMPLETE_PROMISE_MESSAGE_TYPE, msg);