@restatedev/restate-sdk 0.9.2 → 1.0.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 (107) hide show
  1. package/README.md +10 -0
  2. package/dist/src/connection/buffered_connection.d.ts +1 -2
  3. package/dist/src/connection/buffered_connection.d.ts.map +1 -1
  4. package/dist/src/connection/buffered_connection.js.map +1 -1
  5. package/dist/src/connection/connection.d.ts +1 -0
  6. package/dist/src/connection/connection.d.ts.map +1 -1
  7. package/dist/src/connection/http_connection.d.ts +6 -2
  8. package/dist/src/connection/http_connection.d.ts.map +1 -1
  9. package/dist/src/connection/http_connection.js +8 -3
  10. package/dist/src/connection/http_connection.js.map +1 -1
  11. package/dist/src/connection/lambda_connection.d.ts +3 -1
  12. package/dist/src/connection/lambda_connection.d.ts.map +1 -1
  13. package/dist/src/connection/lambda_connection.js +6 -1
  14. package/dist/src/connection/lambda_connection.js.map +1 -1
  15. package/dist/src/context.d.ts +149 -44
  16. package/dist/src/context.d.ts.map +1 -1
  17. package/dist/src/context.js.map +1 -1
  18. package/dist/src/context_impl.d.ts +15 -12
  19. package/dist/src/context_impl.d.ts.map +1 -1
  20. package/dist/src/context_impl.js +109 -19
  21. package/dist/src/context_impl.js.map +1 -1
  22. package/dist/src/endpoint/endpoint_impl.d.ts +5 -6
  23. package/dist/src/endpoint/endpoint_impl.d.ts.map +1 -1
  24. package/dist/src/endpoint/endpoint_impl.js +44 -18
  25. package/dist/src/endpoint/endpoint_impl.js.map +1 -1
  26. package/dist/src/endpoint/http2_handler.d.ts.map +1 -1
  27. package/dist/src/endpoint/http2_handler.js +42 -9
  28. package/dist/src/endpoint/http2_handler.js.map +1 -1
  29. package/dist/src/endpoint/lambda_handler.d.ts.map +1 -1
  30. package/dist/src/endpoint/lambda_handler.js +34 -12
  31. package/dist/src/endpoint/lambda_handler.js.map +1 -1
  32. package/dist/src/endpoint.d.ts +5 -3
  33. package/dist/src/endpoint.d.ts.map +1 -1
  34. package/dist/src/endpoint.js.map +1 -1
  35. package/dist/src/generated/proto/discovery_pb.d.ts +18 -0
  36. package/dist/src/generated/proto/discovery_pb.d.ts.map +1 -0
  37. package/dist/src/generated/proto/discovery_pb.js +40 -0
  38. package/dist/src/generated/proto/discovery_pb.js.map +1 -0
  39. package/dist/src/generated/proto/protocol_pb.d.ts +186 -0
  40. package/dist/src/generated/proto/protocol_pb.d.ts.map +1 -1
  41. package/dist/src/generated/proto/protocol_pb.js +177 -1
  42. package/dist/src/generated/proto/protocol_pb.js.map +1 -1
  43. package/dist/src/generated/version.d.ts +1 -1
  44. package/dist/src/generated/version.js +1 -1
  45. package/dist/src/io/decoder.d.ts +0 -1
  46. package/dist/src/io/decoder.d.ts.map +1 -1
  47. package/dist/src/io/decoder.js +2 -8
  48. package/dist/src/io/decoder.js.map +1 -1
  49. package/dist/src/io/encoder.d.ts.map +1 -1
  50. package/dist/src/io/encoder.js +1 -2
  51. package/dist/src/io/encoder.js.map +1 -1
  52. package/dist/src/journal.d.ts.map +1 -1
  53. package/dist/src/journal.js +17 -0
  54. package/dist/src/journal.js.map +1 -1
  55. package/dist/src/logger.d.ts.map +1 -1
  56. package/dist/src/logger.js +0 -7
  57. package/dist/src/logger.js.map +1 -1
  58. package/dist/src/public_api.d.ts +4 -4
  59. package/dist/src/public_api.d.ts.map +1 -1
  60. package/dist/src/public_api.js +3 -26
  61. package/dist/src/public_api.js.map +1 -1
  62. package/dist/src/state_machine.d.ts +3 -2
  63. package/dist/src/state_machine.d.ts.map +1 -1
  64. package/dist/src/state_machine.js +9 -9
  65. package/dist/src/state_machine.js.map +1 -1
  66. package/dist/src/types/components.d.ts +31 -19
  67. package/dist/src/types/components.d.ts.map +1 -1
  68. package/dist/src/types/components.js +127 -30
  69. package/dist/src/types/components.js.map +1 -1
  70. package/dist/src/types/discovery.d.ts +6 -3
  71. package/dist/src/types/discovery.d.ts.map +1 -1
  72. package/dist/src/types/discovery.js +2 -0
  73. package/dist/src/types/discovery.js.map +1 -1
  74. package/dist/src/types/protocol.d.ts +13 -4
  75. package/dist/src/types/protocol.d.ts.map +1 -1
  76. package/dist/src/types/protocol.js +95 -5
  77. package/dist/src/types/protocol.js.map +1 -1
  78. package/dist/src/types/rpc.d.ts +276 -26
  79. package/dist/src/types/rpc.d.ts.map +1 -1
  80. package/dist/src/types/rpc.js +385 -5
  81. package/dist/src/types/rpc.js.map +1 -1
  82. package/dist/src/types/types.d.ts +2 -4
  83. package/dist/src/types/types.d.ts.map +1 -1
  84. package/dist/src/types/types.js +3 -14
  85. package/dist/src/types/types.js.map +1 -1
  86. package/dist/src/utils/serde.d.ts +2 -0
  87. package/dist/src/utils/serde.d.ts.map +1 -1
  88. package/dist/src/utils/serde.js +28 -4
  89. package/dist/src/utils/serde.js.map +1 -1
  90. package/dist/tsconfig.tsbuildinfo +1 -1
  91. package/package.json +3 -3
  92. package/dist/src/clients/workflow_client.d.ts +0 -77
  93. package/dist/src/clients/workflow_client.d.ts.map +0 -1
  94. package/dist/src/clients/workflow_client.js +0 -172
  95. package/dist/src/clients/workflow_client.js.map +0 -1
  96. package/dist/src/workflows/workflow.d.ts +0 -101
  97. package/dist/src/workflows/workflow.d.ts.map +0 -1
  98. package/dist/src/workflows/workflow.js +0 -84
  99. package/dist/src/workflows/workflow.js.map +0 -1
  100. package/dist/src/workflows/workflow_state_service.d.ts +0 -35
  101. package/dist/src/workflows/workflow_state_service.d.ts.map +0 -1
  102. package/dist/src/workflows/workflow_state_service.js +0 -201
  103. package/dist/src/workflows/workflow_state_service.js.map +0 -1
  104. package/dist/src/workflows/workflow_wrapper_service.d.ts +0 -10
  105. package/dist/src/workflows/workflow_wrapper_service.d.ts.map +0 -1
  106. package/dist/src/workflows/workflow_wrapper_service.js +0 -285
  107. package/dist/src/workflows/workflow_wrapper_service.js.map +0 -1
@@ -20,9 +20,11 @@ var ServiceType;
20
20
  (function (ServiceType) {
21
21
  ServiceType["VIRTUAL_OBJECT"] = "VIRTUAL_OBJECT";
22
22
  ServiceType["SERVICE"] = "SERVICE";
23
+ ServiceType["WORKFLOW"] = "WORKFLOW";
23
24
  })(ServiceType = exports.ServiceType || (exports.ServiceType = {}));
24
25
  var ServiceHandlerType;
25
26
  (function (ServiceHandlerType) {
27
+ ServiceHandlerType["WORKFLOW"] = "WORKFLOW";
26
28
  ServiceHandlerType["EXCLUSIVE"] = "EXCLUSIVE";
27
29
  ServiceHandlerType["SHARED"] = "SHARED";
28
30
  })(ServiceHandlerType = exports.ServiceHandlerType || (exports.ServiceHandlerType = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/types/discovery.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,2CAA2B,CAAA;IAC3B,qDAAqC,CAAA;AACvC,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB;AAED,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gDAAiC,CAAA;IACjC,kCAAmB,CAAA;AACrB,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB;AAED,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,6CAAuB,CAAA;IACvB,uCAAiB,CAAA;AACnB,CAAC,EAHW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAG7B"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/types/discovery.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,2CAA2B,CAAA;IAC3B,qDAAqC,CAAA;AACvC,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB;AAED,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,gDAAiC,CAAA;IACjC,kCAAmB,CAAA;IACnB,oCAAqB,CAAA;AACvB,CAAC,EAJW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAItB;AAED,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,2CAAqB,CAAA;IACrB,6CAAuB,CAAA;IACvB,uCAAiB,CAAA;AACnB,CAAC,EAJW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAI7B"}
@@ -1,7 +1,8 @@
1
1
  import { Message } from "@bufbuild/protobuf";
2
2
  import { CombinatorEntryMessage } from "../generated/proto/javascript_pb";
3
- import { AwakeableEntryMessage, OneWayCallEntryMessage, ClearStateEntryMessage, ClearAllStateEntryMessage, CompleteAwakeableEntryMessage, CompletionMessage, EntryAckMessage, ErrorMessage, EndMessage, GetStateEntryMessage, GetStateKeysEntryMessage, CallEntryMessage, OutputEntryMessage, InputEntryMessage, SetStateEntryMessage, SleepEntryMessage, StartMessage, SuspensionMessage, RunEntryMessage } from "../generated/proto/protocol_pb";
4
- export { AwakeableEntryMessage, OneWayCallEntryMessage, ClearStateEntryMessage, ClearAllStateEntryMessage, CompleteAwakeableEntryMessage, CompletionMessage, ErrorMessage, EndMessage, GetStateEntryMessage, GetStateKeysEntryMessage, CallEntryMessage, OutputEntryMessage, InputEntryMessage, SetStateEntryMessage, SleepEntryMessage, StartMessage, SuspensionMessage, EntryAckMessage, } from "../generated/proto/protocol_pb";
3
+ import { AwakeableEntryMessage, OneWayCallEntryMessage, ClearStateEntryMessage, ClearAllStateEntryMessage, CompleteAwakeableEntryMessage, CompletionMessage, EntryAckMessage, ErrorMessage, EndMessage, GetStateEntryMessage, GetStateKeysEntryMessage, CallEntryMessage, OutputEntryMessage, InputEntryMessage, SetStateEntryMessage, SleepEntryMessage, StartMessage, SuspensionMessage, RunEntryMessage, GetPromiseEntryMessage, PeekPromiseEntryMessage, CompletePromiseEntryMessage, ServiceProtocolVersion } from "../generated/proto/protocol_pb";
4
+ import { ServiceDiscoveryProtocolVersion } from "../generated/proto/discovery_pb";
5
+ export { AwakeableEntryMessage, OneWayCallEntryMessage, ClearStateEntryMessage, ClearAllStateEntryMessage, CompleteAwakeableEntryMessage, CompletionMessage, ErrorMessage, EndMessage, GetStateEntryMessage, GetStateKeysEntryMessage, CallEntryMessage, OutputEntryMessage, InputEntryMessage, SetStateEntryMessage, SleepEntryMessage, StartMessage, SuspensionMessage, EntryAckMessage, GetPromiseEntryMessage, PeekPromiseEntryMessage, CompletePromiseEntryMessage, } from "../generated/proto/protocol_pb";
5
6
  export declare const START_MESSAGE_TYPE = 0n;
6
7
  export declare const COMPLETION_MESSAGE_TYPE = 1n;
7
8
  export declare const SUSPENSION_MESSAGE_TYPE = 2n;
@@ -23,11 +24,19 @@ export declare const COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE = 3076n;
23
24
  export declare const AWAKEABLE_IDENTIFIER_PREFIX = "prom_1";
24
25
  export declare const SIDE_EFFECT_ENTRY_MESSAGE_TYPE: bigint;
25
26
  export declare const COMBINATOR_ENTRY_MESSAGE = 64514n;
27
+ export declare const GET_PROMISE_MESSAGE_TYPE = 2056n;
28
+ export declare const PEEK_PROMISE_MESSAGE_TYPE = 2057n;
29
+ export declare const COMPLETE_PROMISE_MESSAGE_TYPE = 2058n;
26
30
  export declare const KNOWN_MESSAGE_TYPES: Set<bigint>;
27
- export declare function formatMessageType(messageType: bigint): string;
31
+ export declare const formatMessageType: (messageType: bigint) => string;
28
32
  export declare const PROTOBUF_MESSAGE_BY_TYPE: Map<bigint, {
29
33
  new (): Message<any>;
30
34
  }>;
31
- export type ProtocolMessage = StartMessage | CompletionMessage | SuspensionMessage | ErrorMessage | EntryAckMessage | EndMessage | InputEntryMessage | OutputEntryMessage | GetStateEntryMessage | GetStateKeysEntryMessage | SetStateEntryMessage | ClearStateEntryMessage | ClearAllStateEntryMessage | SleepEntryMessage | CallEntryMessage | OneWayCallEntryMessage | AwakeableEntryMessage | CompleteAwakeableEntryMessage | RunEntryMessage | CombinatorEntryMessage;
35
+ export type ProtocolMessage = StartMessage | CompletionMessage | SuspensionMessage | ErrorMessage | EntryAckMessage | EndMessage | InputEntryMessage | OutputEntryMessage | GetStateEntryMessage | GetStateKeysEntryMessage | SetStateEntryMessage | ClearStateEntryMessage | ClearAllStateEntryMessage | SleepEntryMessage | CallEntryMessage | OneWayCallEntryMessage | AwakeableEntryMessage | CompleteAwakeableEntryMessage | RunEntryMessage | CombinatorEntryMessage | GetPromiseEntryMessage | PeekPromiseEntryMessage | CompletePromiseEntryMessage;
32
36
  export declare const SUSPENSION_TRIGGERS: bigint[];
37
+ export declare function isServiceProtocolVersionSupported(version: ServiceProtocolVersion): boolean;
38
+ export declare function parseServiceProtocolVersion(versionString: string | undefined): ServiceProtocolVersion;
39
+ export declare function serviceProtocolVersionToHeaderValue(serviceProtocolVersion: ServiceProtocolVersion): string;
40
+ export declare function serviceDiscoveryProtocolVersionToHeaderValue(serviceDiscoveryProtocolVersion: ServiceDiscoveryProtocolVersion): string;
41
+ export declare function selectSupportedServiceDiscoveryProtocolVersion(acceptVersionsString: string | undefined): ServiceDiscoveryProtocolVersion;
33
42
  //# sourceMappingURL=protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/types/protocol.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,6BAA6B,EAC7B,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EAChB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,6BAA6B,EAC7B,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,eAAe,GAChB,MAAM,gCAAgC,CAAC;AAGxC,eAAO,MAAM,kBAAkB,KAAU,CAAC;AAC1C,eAAO,MAAM,uBAAuB,KAAU,CAAC;AAC/C,eAAO,MAAM,uBAAuB,KAAU,CAAC;AAC/C,eAAO,MAAM,kBAAkB,KAAU,CAAC;AAC1C,eAAO,MAAM,sBAAsB,KAAU,CAAC;AAC9C,eAAO,MAAM,gBAAgB,KAAU,CAAC;AACxC,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAChD,eAAO,MAAM,yBAAyB,QAAU,CAAC;AACjD,eAAO,MAAM,4BAA4B,QAAU,CAAC;AACpD,eAAO,MAAM,4BAA4B,QAAU,CAAC;AACpD,eAAO,MAAM,8BAA8B,QAAU,CAAC;AACtD,eAAO,MAAM,kCAAkC,QAAU,CAAC;AAC1D,eAAO,MAAM,iCAAiC,QAAU,CAAC;AACzD,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAChD,eAAO,MAAM,yBAAyB,QAAU,CAAC;AACjD,eAAO,MAAM,oCAAoC,QAAU,CAAC;AAC5D,eAAO,MAAM,4BAA4B,QAAU,CAAC;AACpD,eAAO,MAAM,qCAAqC,QAAU,CAAC;AAE7D,eAAO,MAAM,2BAA2B,WAAW,CAAC;AAEpD,eAAO,MAAM,8BAA8B,QAAe,CAAC;AAI3D,eAAO,MAAM,wBAAwB,SAAU,CAAC;AAMhD,eAAO,MAAM,mBAAmB,aAqB9B,CAAC;AAyBH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,UAIpD;AA0BD,eAAO,MAAM,wBAAwB;;EAA6B,CAAC;AAEnE,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,YAAY,GACZ,eAAe,GACf,UAAU,GACV,iBAAiB,GACjB,kBAAkB,GAClB,oBAAoB,GACpB,wBAAwB,GACxB,oBAAoB,GACpB,sBAAsB,GACtB,yBAAyB,GACzB,iBAAiB,GACjB,gBAAgB,GAChB,sBAAsB,GACtB,qBAAqB,GACrB,6BAA6B,GAC7B,eAAe,GACf,sBAAsB,CAAC;AAI3B,eAAO,MAAM,mBAAmB,EAAE,MAAM,EASvC,CAAC"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/types/protocol.ts"],"names":[],"mappings":"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"}
@@ -10,9 +10,11 @@
10
10
  * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE
11
11
  */
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.SUSPENSION_TRIGGERS = exports.PROTOBUF_MESSAGE_BY_TYPE = exports.formatMessageType = exports.KNOWN_MESSAGE_TYPES = exports.COMBINATOR_ENTRY_MESSAGE = exports.SIDE_EFFECT_ENTRY_MESSAGE_TYPE = exports.AWAKEABLE_IDENTIFIER_PREFIX = exports.COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE = exports.AWAKEABLE_ENTRY_MESSAGE_TYPE = exports.BACKGROUND_INVOKE_ENTRY_MESSAGE_TYPE = exports.INVOKE_ENTRY_MESSAGE_TYPE = exports.SLEEP_ENTRY_MESSAGE_TYPE = exports.GET_STATE_KEYS_ENTRY_MESSAGE_TYPE = exports.CLEAR_ALL_STATE_ENTRY_MESSAGE_TYPE = exports.CLEAR_STATE_ENTRY_MESSAGE_TYPE = exports.SET_STATE_ENTRY_MESSAGE_TYPE = exports.GET_STATE_ENTRY_MESSAGE_TYPE = exports.OUTPUT_ENTRY_MESSAGE_TYPE = exports.INPUT_ENTRY_MESSAGE_TYPE = exports.END_MESSAGE_TYPE = exports.ENTRY_ACK_MESSAGE_TYPE = exports.ERROR_MESSAGE_TYPE = exports.SUSPENSION_MESSAGE_TYPE = exports.COMPLETION_MESSAGE_TYPE = exports.START_MESSAGE_TYPE = exports.EntryAckMessage = exports.SuspensionMessage = exports.StartMessage = exports.SleepEntryMessage = exports.SetStateEntryMessage = exports.InputEntryMessage = exports.OutputEntryMessage = exports.CallEntryMessage = exports.GetStateKeysEntryMessage = exports.GetStateEntryMessage = exports.EndMessage = exports.ErrorMessage = exports.CompletionMessage = exports.CompleteAwakeableEntryMessage = exports.ClearAllStateEntryMessage = exports.ClearStateEntryMessage = exports.OneWayCallEntryMessage = exports.AwakeableEntryMessage = void 0;
13
+ exports.isServiceProtocolVersionSupported = exports.SUSPENSION_TRIGGERS = exports.PROTOBUF_MESSAGE_BY_TYPE = exports.formatMessageType = exports.KNOWN_MESSAGE_TYPES = exports.COMPLETE_PROMISE_MESSAGE_TYPE = exports.PEEK_PROMISE_MESSAGE_TYPE = exports.GET_PROMISE_MESSAGE_TYPE = exports.COMBINATOR_ENTRY_MESSAGE = exports.SIDE_EFFECT_ENTRY_MESSAGE_TYPE = exports.AWAKEABLE_IDENTIFIER_PREFIX = exports.COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE = exports.AWAKEABLE_ENTRY_MESSAGE_TYPE = exports.BACKGROUND_INVOKE_ENTRY_MESSAGE_TYPE = exports.INVOKE_ENTRY_MESSAGE_TYPE = exports.SLEEP_ENTRY_MESSAGE_TYPE = exports.GET_STATE_KEYS_ENTRY_MESSAGE_TYPE = exports.CLEAR_ALL_STATE_ENTRY_MESSAGE_TYPE = exports.CLEAR_STATE_ENTRY_MESSAGE_TYPE = exports.SET_STATE_ENTRY_MESSAGE_TYPE = exports.GET_STATE_ENTRY_MESSAGE_TYPE = exports.OUTPUT_ENTRY_MESSAGE_TYPE = exports.INPUT_ENTRY_MESSAGE_TYPE = exports.END_MESSAGE_TYPE = exports.ENTRY_ACK_MESSAGE_TYPE = exports.ERROR_MESSAGE_TYPE = exports.SUSPENSION_MESSAGE_TYPE = exports.COMPLETION_MESSAGE_TYPE = exports.START_MESSAGE_TYPE = exports.CompletePromiseEntryMessage = exports.PeekPromiseEntryMessage = exports.GetPromiseEntryMessage = exports.EntryAckMessage = exports.SuspensionMessage = exports.StartMessage = exports.SleepEntryMessage = exports.SetStateEntryMessage = exports.InputEntryMessage = exports.OutputEntryMessage = exports.CallEntryMessage = exports.GetStateKeysEntryMessage = exports.GetStateEntryMessage = exports.EndMessage = exports.ErrorMessage = exports.CompletionMessage = exports.CompleteAwakeableEntryMessage = exports.ClearAllStateEntryMessage = exports.ClearStateEntryMessage = exports.OneWayCallEntryMessage = exports.AwakeableEntryMessage = void 0;
14
+ exports.selectSupportedServiceDiscoveryProtocolVersion = exports.serviceDiscoveryProtocolVersionToHeaderValue = exports.serviceProtocolVersionToHeaderValue = exports.parseServiceProtocolVersion = void 0;
14
15
  const javascript_pb_1 = require("../generated/proto/javascript_pb");
15
16
  const protocol_pb_1 = require("../generated/proto/protocol_pb");
17
+ const discovery_pb_1 = require("../generated/proto/discovery_pb");
16
18
  // Re-export the protobuf messages.
17
19
  var protocol_pb_2 = require("../generated/proto/protocol_pb");
18
20
  Object.defineProperty(exports, "AwakeableEntryMessage", { enumerable: true, get: function () { return protocol_pb_2.AwakeableEntryMessage; } });
@@ -33,6 +35,9 @@ Object.defineProperty(exports, "SleepEntryMessage", { enumerable: true, get: fun
33
35
  Object.defineProperty(exports, "StartMessage", { enumerable: true, get: function () { return protocol_pb_2.StartMessage; } });
34
36
  Object.defineProperty(exports, "SuspensionMessage", { enumerable: true, get: function () { return protocol_pb_2.SuspensionMessage; } });
35
37
  Object.defineProperty(exports, "EntryAckMessage", { enumerable: true, get: function () { return protocol_pb_2.EntryAckMessage; } });
38
+ Object.defineProperty(exports, "GetPromiseEntryMessage", { enumerable: true, get: function () { return protocol_pb_2.GetPromiseEntryMessage; } });
39
+ Object.defineProperty(exports, "PeekPromiseEntryMessage", { enumerable: true, get: function () { return protocol_pb_2.PeekPromiseEntryMessage; } });
40
+ Object.defineProperty(exports, "CompletePromiseEntryMessage", { enumerable: true, get: function () { return protocol_pb_2.CompletePromiseEntryMessage; } });
36
41
  // Export the protocol message types as defined by the restate protocol.
37
42
  exports.START_MESSAGE_TYPE = 0x0000n;
38
43
  exports.COMPLETION_MESSAGE_TYPE = 0x0001n;
@@ -57,7 +62,10 @@ exports.SIDE_EFFECT_ENTRY_MESSAGE_TYPE = 0x0c00n + 5n;
57
62
  // Export the custom message types
58
63
  // Side effects are custom messages because the runtime does not need to inspect them
59
64
  exports.COMBINATOR_ENTRY_MESSAGE = 0xfc02n;
60
- // Restate DuplexStream
65
+ // Durable promise
66
+ exports.GET_PROMISE_MESSAGE_TYPE = 0x808n;
67
+ exports.PEEK_PROMISE_MESSAGE_TYPE = 0x809n;
68
+ exports.COMPLETE_PROMISE_MESSAGE_TYPE = 0x80an;
61
69
  // Message types in the protocol.
62
70
  // Custom message types (per SDK) such as side effect entry message should not be included here.
63
71
  exports.KNOWN_MESSAGE_TYPES = new Set([
@@ -81,6 +89,9 @@ exports.KNOWN_MESSAGE_TYPES = new Set([
81
89
  exports.COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE,
82
90
  exports.SIDE_EFFECT_ENTRY_MESSAGE_TYPE,
83
91
  exports.COMBINATOR_ENTRY_MESSAGE,
92
+ exports.GET_PROMISE_MESSAGE_TYPE,
93
+ exports.PEEK_PROMISE_MESSAGE_TYPE,
94
+ exports.COMPLETE_PROMISE_MESSAGE_TYPE,
84
95
  ]);
85
96
  const PROTOBUF_MESSAGE_NAME_BY_TYPE = new Map([
86
97
  [exports.START_MESSAGE_TYPE, "StartMessage"],
@@ -103,10 +114,13 @@ const PROTOBUF_MESSAGE_NAME_BY_TYPE = new Map([
103
114
  [exports.COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE, "CompleteAwakeableEntryMessage"],
104
115
  [exports.SIDE_EFFECT_ENTRY_MESSAGE_TYPE, "RunEntryMessage"],
105
116
  [exports.COMBINATOR_ENTRY_MESSAGE, "CombinatorEntryMessage"],
117
+ [exports.GET_PROMISE_MESSAGE_TYPE, "GetPromiseEntryMessage"],
118
+ [exports.PEEK_PROMISE_MESSAGE_TYPE, "PeekPromiseEntryMessage"],
119
+ [exports.COMPLETE_PROMISE_MESSAGE_TYPE, "CompletePromiseEntryMessage"],
106
120
  ]);
107
- function formatMessageType(messageType) {
108
- return (PROTOBUF_MESSAGE_NAME_BY_TYPE.get(messageType) || messageType.toString());
109
- }
121
+ const formatMessageType = (messageType) => {
122
+ return (PROTOBUF_MESSAGE_NAME_BY_TYPE.get(messageType) ?? messageType.toString());
123
+ };
110
124
  exports.formatMessageType = formatMessageType;
111
125
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
112
126
  const PROTOBUF_MESSAGES = [
@@ -130,6 +144,9 @@ const PROTOBUF_MESSAGES = [
130
144
  [exports.COMPLETE_AWAKEABLE_ENTRY_MESSAGE_TYPE, protocol_pb_1.CompleteAwakeableEntryMessage],
131
145
  [exports.SIDE_EFFECT_ENTRY_MESSAGE_TYPE, protocol_pb_1.RunEntryMessage],
132
146
  [exports.COMBINATOR_ENTRY_MESSAGE, javascript_pb_1.CombinatorEntryMessage],
147
+ [exports.GET_PROMISE_MESSAGE_TYPE, protocol_pb_1.GetPromiseEntryMessage],
148
+ [exports.PEEK_PROMISE_MESSAGE_TYPE, protocol_pb_1.PeekPromiseEntryMessage],
149
+ [exports.COMPLETE_PROMISE_MESSAGE_TYPE, protocol_pb_1.CompletePromiseEntryMessage],
133
150
  ];
134
151
  exports.PROTOBUF_MESSAGE_BY_TYPE = new Map(PROTOBUF_MESSAGES);
135
152
  // These message types will trigger sending a suspension message from the runtime
@@ -143,5 +160,78 @@ exports.SUSPENSION_TRIGGERS = [
143
160
  exports.COMBINATOR_ENTRY_MESSAGE,
144
161
  // We need it because of the ack
145
162
  exports.SIDE_EFFECT_ENTRY_MESSAGE_TYPE,
163
+ // promises need completion
164
+ exports.GET_PROMISE_MESSAGE_TYPE,
165
+ exports.PEEK_PROMISE_MESSAGE_TYPE,
166
+ exports.COMPLETE_PROMISE_MESSAGE_TYPE,
146
167
  ];
168
+ const MIN_SERVICE_PROTOCOL_VERSION = protocol_pb_1.ServiceProtocolVersion.V1;
169
+ const MAX_SERVICE_PROTOCOL_VERSION = protocol_pb_1.ServiceProtocolVersion.V1;
170
+ const MIN_SERVICE_DISCOVERY_PROTOCOL_VERSION = discovery_pb_1.ServiceDiscoveryProtocolVersion.V1;
171
+ const MAX_SERVICE_DISCOVERY_PROTOCOL_VERSION = discovery_pb_1.ServiceDiscoveryProtocolVersion.V1;
172
+ function isServiceProtocolVersionSupported(version) {
173
+ return (version >= MIN_SERVICE_PROTOCOL_VERSION &&
174
+ version <= MAX_SERVICE_PROTOCOL_VERSION);
175
+ }
176
+ exports.isServiceProtocolVersionSupported = isServiceProtocolVersionSupported;
177
+ function isServiceDiscoveryProtocolVersionSupported(version) {
178
+ return (version >= MIN_SERVICE_DISCOVERY_PROTOCOL_VERSION &&
179
+ version <= MAX_SERVICE_DISCOVERY_PROTOCOL_VERSION);
180
+ }
181
+ function parseServiceProtocolVersion(versionString) {
182
+ // if nothing is set, assume we are using V1
183
+ if (versionString === undefined ||
184
+ versionString === null ||
185
+ versionString === "") {
186
+ return protocol_pb_1.ServiceProtocolVersion.V1;
187
+ }
188
+ versionString = versionString.trim();
189
+ if (versionString === "application/vnd.restate.invocation.v1") {
190
+ return protocol_pb_1.ServiceProtocolVersion.V1;
191
+ }
192
+ return protocol_pb_1.ServiceProtocolVersion.SERVICE_PROTOCOL_VERSION_UNSPECIFIED;
193
+ }
194
+ exports.parseServiceProtocolVersion = parseServiceProtocolVersion;
195
+ function serviceProtocolVersionToHeaderValue(serviceProtocolVersion) {
196
+ switch (serviceProtocolVersion) {
197
+ case protocol_pb_1.ServiceProtocolVersion.V1:
198
+ return "application/vnd.restate.invocation.v1";
199
+ default:
200
+ throw new Error(`Unsupported service discovery protocol version: ${serviceProtocolVersion}`);
201
+ }
202
+ }
203
+ exports.serviceProtocolVersionToHeaderValue = serviceProtocolVersionToHeaderValue;
204
+ function parseServiceDiscoveryProtocolVersion(versionString) {
205
+ versionString = versionString.trim();
206
+ if (versionString === "application/vnd.restate.endpointmanifest.v1+json") {
207
+ return discovery_pb_1.ServiceDiscoveryProtocolVersion.V1;
208
+ }
209
+ return discovery_pb_1.ServiceDiscoveryProtocolVersion.SERVICE_DISCOVERY_PROTOCOL_VERSION_UNSPECIFIED;
210
+ }
211
+ function serviceDiscoveryProtocolVersionToHeaderValue(serviceDiscoveryProtocolVersion) {
212
+ switch (serviceDiscoveryProtocolVersion) {
213
+ case discovery_pb_1.ServiceDiscoveryProtocolVersion.V1:
214
+ return "application/vnd.restate.endpointmanifest.v1+json";
215
+ default:
216
+ throw new Error(`Unsupported service discovery protocol version: ${serviceDiscoveryProtocolVersion}`);
217
+ }
218
+ }
219
+ exports.serviceDiscoveryProtocolVersionToHeaderValue = serviceDiscoveryProtocolVersionToHeaderValue;
220
+ function selectSupportedServiceDiscoveryProtocolVersion(acceptVersionsString) {
221
+ if (acceptVersionsString === undefined ||
222
+ acceptVersionsString === null ||
223
+ acceptVersionsString === "") {
224
+ return discovery_pb_1.ServiceDiscoveryProtocolVersion.V1;
225
+ }
226
+ let maxVersion = discovery_pb_1.ServiceDiscoveryProtocolVersion.SERVICE_DISCOVERY_PROTOCOL_VERSION_UNSPECIFIED;
227
+ acceptVersionsString.split(",").forEach((versionString) => {
228
+ const version = parseServiceDiscoveryProtocolVersion(versionString);
229
+ if (isServiceDiscoveryProtocolVersionSupported(version) &&
230
+ version > maxVersion) {
231
+ maxVersion = version;
232
+ }
233
+ });
234
+ return maxVersion;
235
+ }
236
+ exports.selectSupportedServiceDiscoveryProtocolVersion = selectSupportedServiceDiscoveryProtocolVersion;
147
237
  //# sourceMappingURL=protocol.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/types/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/types/protocol.ts"],"names":[],"mappings":"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"}
@@ -1,50 +1,300 @@
1
- import { CombineablePromise, Context, ObjectContext } from "../context";
2
- type WithoutRpcContext<F> = F extends (ctx: infer C extends Context, ...args: infer P) => infer R ? (...args: P) => R : never;
1
+ import { CombineablePromise, Context, ObjectContext, ObjectSharedContext, WorkflowContext, WorkflowSharedContext } from "../context";
2
+ import { ServiceHandler, ServiceDefinition, ObjectHandler, ObjectSharedHandler, VirtualObjectDefinition, WorkflowHandler, WorkflowDefinition, WorkflowSharedHandler } from "@restatedev/restate-sdk-core";
3
3
  export type Client<M> = {
4
- [K in keyof M as M[K] extends never ? never : K]: M[K] extends (...args: infer P) => PromiseLike<infer O> ? (...args: P) => CombineablePromise<O> : never;
4
+ [K in keyof M as M[K] extends never ? never : K]: M[K] extends (arg: any, ...args: infer P) => PromiseLike<infer O> ? (...args: P) => CombineablePromise<O> : never;
5
5
  };
6
6
  export type SendClient<M> = {
7
- [K in keyof M as M[K] extends never ? never : K]: M[K] extends (...args: infer P) => any ? (...args: P) => void : never;
7
+ [K in keyof M as M[K] extends never ? never : K]: M[K] extends (arg: any, ...args: infer P) => any ? (...args: P) => void : never;
8
8
  };
9
- export type ServiceHandler<F> = F extends (ctx: Context) => Promise<any> ? F : F extends (ctx: Context, input: any) => Promise<any> ? F : never;
10
- export type ServiceOpts<U> = {
11
- [K in keyof U]: U[K] extends ServiceHandler<any> ? U[K] : never;
9
+ export declare enum HandlerKind {
10
+ SERVICE = 0,
11
+ EXCLUSIVE = 1,
12
+ SHARED = 2,
13
+ WORKFLOW = 3
14
+ }
15
+ export type ServiceHandlerOpts = {
16
+ accept?: string;
17
+ contentType?: string;
18
+ inputDeserializer?: <T>(input: Uint8Array) => T | undefined;
19
+ outputSerializer?: <T>(output: T | undefined) => Uint8Array;
12
20
  };
13
- export type Service<U> = {
14
- [K in keyof U]: U[K] extends ServiceHandler<infer F> ? WithoutRpcContext<F> : never;
21
+ export type ObjectHandlerOpts = {
22
+ accept?: string;
23
+ contentType?: string;
24
+ inputDeserializer?: <T>(input: Uint8Array) => T | undefined;
25
+ outputSerializer?: <T>(output: T | undefined) => Uint8Array;
15
26
  };
16
- export type ServiceDefinition<P extends string, M> = {
17
- name: P;
18
- service?: Service<M>;
27
+ export type WorkflowHandlerOpts = {
28
+ accept?: string;
29
+ contentType?: string;
30
+ inputDeserializer?: <T>(input: Uint8Array) => T | undefined;
31
+ outputSerializer?: <T>(output: T | undefined) => Uint8Array;
32
+ };
33
+ export declare class HandlerWrapper {
34
+ readonly kind: HandlerKind;
35
+ private handler;
36
+ readonly accept: string;
37
+ readonly contentType: string;
38
+ readonly deserializer: (input: Uint8Array) => unknown;
39
+ readonly serializer: (input: unknown) => Uint8Array;
40
+ static from(kind: HandlerKind, handler: Function, opts?: ServiceHandlerOpts | ObjectHandlerOpts): HandlerWrapper;
41
+ static fromHandler(handler: any): HandlerWrapper | undefined;
42
+ private constructor();
43
+ bindInstance(t: unknown): void;
44
+ invoke(context: unknown, input: Uint8Array): Promise<Uint8Array>;
45
+ /**
46
+ * Instead of a HandlerWrapper with a handler property,
47
+ * return the original handler with a HandlerWrapper property.
48
+ * This is needed to keep the appearance of regular functions
49
+ * bound to an object, so that for example, `this.foo(ctx, arg)` would
50
+ * work.
51
+ */
52
+ transpose<F>(): F;
53
+ }
54
+ export declare namespace handlers {
55
+ /**
56
+ * Create a service handler.
57
+ *
58
+ * @param opts additional configuration
59
+ * @param fn the actual handler code to execute
60
+ */
61
+ function handler<F>(opts: ServiceHandlerOpts, fn: ServiceHandler<F, Context>): F;
62
+ namespace workflow {
63
+ function workflow<F>(opts: WorkflowHandlerOpts, fn: WorkflowHandler<F, WorkflowContext>): F;
64
+ function workflow<F>(fn: WorkflowHandler<F, WorkflowContext>): F;
65
+ /**
66
+ * Creates a shared handler for a workflow.
67
+ *
68
+ * A shared handler allows a read-only concurrent execution
69
+ * for a given key.
70
+ *
71
+ * @param opts additional configurations
72
+ * @param fn the handler to execute
73
+ */
74
+ function shared<F>(opts: WorkflowHandlerOpts, fn: WorkflowSharedHandler<F, WorkflowSharedContext>): F;
75
+ /**
76
+ * Creates a shared handler for a workflow.
77
+ *
78
+ * A shared handler allows a read-only concurrent execution
79
+ * for a given key.
80
+ *
81
+ * @param opts additional configurations
82
+ * @param fn the handler to execute
83
+ */
84
+ function shared<F>(fn: WorkflowSharedHandler<F, WorkflowSharedContext>): F;
85
+ }
86
+ namespace object {
87
+ /**
88
+ * Creates an exclusive handler for a virtual Object.
89
+ *
90
+ * note : This applies only to a virtual object.
91
+ *
92
+ * @param opts additional configurations
93
+ * @param fn the handler to execute
94
+ */
95
+ function exclusive<F>(opts: ObjectHandlerOpts, fn: ObjectHandler<F, ObjectContext>): F;
96
+ /**
97
+ * Creates an exclusive handler for a virtual Object.
98
+ *
99
+ *
100
+ * note 1: This applies only to a virtual object.
101
+ * note 2: This is the default for virtual objects, so if no
102
+ * additional reconfiguration is needed, you can simply
103
+ * use the handler directly (no need to use exclusive).
104
+ * This variant here is only for symmetry/convenance.
105
+ *
106
+ * @param fn the handler to execute
107
+ */
108
+ function exclusive<F>(fn: ObjectHandler<F, ObjectContext>): F;
109
+ /**
110
+ * Creates a shared handler for a virtual Object.
111
+ *
112
+ * A shared handler allows a read-only concurrent execution
113
+ * for a given key.
114
+ *
115
+ * note: This applies only to a virtual object.
116
+ *
117
+ * @param opts additional configurations
118
+ * @param fn the handler to execute
119
+ */
120
+ function shared<F>(opts: ObjectHandlerOpts, fn: ObjectSharedHandler<F, ObjectSharedContext>): F;
121
+ /**
122
+ * Creates a shared handler for a virtual Object.
123
+ *
124
+ * A shared handler allows a read-only concurrent execution
125
+ * for a given key.
126
+ *
127
+ * note: This applies only to a virtual object.
128
+ *
129
+ * @param opts additional configurations
130
+ * @param fn the handler to execute
131
+ */
132
+ function shared<F>(fn: ObjectSharedHandler<F, ObjectSharedContext>): F;
133
+ }
134
+ }
135
+ export type ServiceOpts<U> = {
136
+ [K in keyof U]: U[K] extends ServiceHandler<any, Context> ? U[K] : never;
19
137
  };
20
138
  /**
21
139
  * Define a Restate service.
22
140
  *
23
- * @param service
141
+ * @example Here is an example of how to define a service:
142
+ *
143
+ * ```ts
144
+ * const greeter = service({
145
+ * name: "greeter",
146
+ * handlers: {
147
+ * greet: async (ctx: Context, name: string) => {
148
+ * return `Hello ${name}`;
149
+ * }
150
+ * }
151
+ * });
152
+ * ```
153
+ *
154
+ * To use the service, you can bind it to an endpoint:
155
+ * ```
156
+ * ...
157
+ * endpoint.bind(greeter)
158
+ * ```
159
+ * @example To use a service, you can export its type to be used in a client:
160
+ * ```
161
+ * export type Greeter = typeof greeter;
162
+ * ...
163
+ * ...
164
+ * import type { Greeter } from "./greeter";
165
+ * const client = ctx.serviceClient<Greeter>({ name : "greeter"});
166
+ * client.greet("World").then(console.log);
167
+ * ```
168
+ *
169
+ * @example Alternatively to avoid repeating the service name, you can:
170
+ * ```
171
+ * import type {Greeter} from "./greeter";
172
+ * const Greeter: Greeter = { name : "greeter"};
173
+ *
174
+ * // now you can reference the service like this:
175
+ * const client = ctx.serviceClient(Greeter);
176
+ * ```
177
+ *
178
+ * @param name the service name
179
+ * @param handlers the handlers for the service
180
+ * @type P the name of the service
181
+ * @type M the handlers for the service
24
182
  */
25
183
  export declare const service: <P extends string, M>(service: {
26
184
  name: P;
27
185
  handlers: ServiceOpts<M>;
28
- }) => ServiceDefinition<P, Service<M>>;
29
- export type ObjectHandler<F> = F extends (ctx: ObjectContext, param: any) => Promise<any> ? F : F extends (ctx: ObjectContext) => Promise<any> ? F : never;
186
+ }) => ServiceDefinition<P, M>;
30
187
  export type ObjectOpts<U> = {
31
- [K in keyof U]: U[K] extends ObjectHandler<U[K]> ? U[K] : never;
32
- };
33
- export type VirtualObject<U> = {
34
- [K in keyof U]: U[K] extends ObjectHandler<infer F> ? WithoutRpcContext<F> : never;
35
- };
36
- export type VirtualObjectDefinition<P extends string, M> = {
37
- name: P;
38
- object?: VirtualObject<M>;
188
+ [K in keyof U]: U[K] extends ObjectHandler<U[K], ObjectContext> ? U[K] : U[K] extends ObjectHandler<U[K], ObjectSharedContext> ? U[K] : never;
39
189
  };
40
190
  /**
41
191
  * Define a Restate virtual object.
42
192
  *
43
- * @param object
193
+ * @example Here is an example of how to define a virtual object:
194
+ * ```ts
195
+ * const counter = object({
196
+ * name: "counter",
197
+ * handlers: {
198
+ * add: async (ctx: ObjectContext, amount: number) => {},
199
+ * get: async (ctx: ObjectContext) => {}
200
+ * }
201
+ * })
202
+ * ```
203
+ *
204
+ * @example To use the object, you can bind it to an endpoint:
205
+ * ```ts
206
+ * ...
207
+ * endpoint.bind(counter)
208
+ * ```
209
+ *
210
+ * @see to interact with the object, you can use the object client:
211
+ * ```ts
212
+ * ...
213
+ * const client = ctx.objectClient<typeof counter>({ name: "counter"});
214
+ * const res = await client.add(1)
215
+ * ```
216
+ *
217
+ * ### Shared handlers
218
+ *
219
+ * Shared handlers are used to allow concurrent read-only access to the object.
220
+ * This is useful when you want to allow multiple clients to read the object's state at the same time.
221
+ * To define a shared handler, you can use the `shared` decorator as shown below:
222
+ *
223
+ * ```ts
224
+ * const counter = object({
225
+ * name: "counter",
226
+ * handlers: {
227
+ *
228
+ * add: async (ctx: ObjectContext, amount: number) => { .. },
229
+ *
230
+ * get: handlers.object.shared(async (ctx: ObjectSharedContext) => {
231
+ * return ctx.get<number>("count");
232
+ * })
233
+ * }
234
+ * });
235
+ * ```
236
+ *
237
+ * @param name the name of the object
238
+ * @param handlers the handlers for the object
44
239
  */
45
240
  export declare const object: <P extends string, M>(object: {
46
241
  name: P;
47
242
  handlers: ObjectOpts<M>;
48
- }) => VirtualObjectDefinition<P, VirtualObject<M>>;
49
- export {};
243
+ }) => VirtualObjectDefinition<P, M>;
244
+ /**
245
+ * A workflow handlers is a type that describes the handlers for a workflow.
246
+ * The handlers must contain exactly one handler named 'run', and this handler must accept as a first argument a WorkflowContext.
247
+ * It can contain any number of additional handlers, which must accept as a first argument a WorkflowSharedContext.
248
+ * The handlers can not be named 'workflowSubmit', 'workflowAttach', 'workflowOutput' - as these are reserved.
249
+ * @see {@link workflow} for an example.
250
+ */
251
+ export type WorkflowOpts<U> = {
252
+ run: (ctx: WorkflowContext, argument: any) => Promise<any>;
253
+ } & {
254
+ [K in keyof U]: K extends "workflowSubmit" | "workflowAttach" | "workflowOutput" ? `${K} is a reserved keyword` : K extends "run" ? U[K] extends WorkflowHandler<U[K], WorkflowContext> ? U[K] : "An handler named 'run' must take as a first argument a WorkflowContext, and must return a Promise" : U[K] extends WorkflowSharedHandler<U[K], WorkflowSharedContext> ? U[K] : "An handler other then 'run' must accept as a first argument a WorkflowSharedContext";
255
+ };
256
+ /**
257
+ * Define a Restate workflow.
258
+ *
259
+ *
260
+ * @example Here is an example of how to define a workflow:
261
+ * ```ts
262
+ * const mywf = workflow({
263
+ * name: "mywf",
264
+ * handlers: {
265
+ * run: async (ctx: WorkflowContext, argument: any) => {
266
+ * return "Hello World";
267
+ * }
268
+ * }
269
+ * });
270
+ * ```
271
+ *
272
+ * ### Note:
273
+ * * That a workflow must contain exactly one handler named 'run', and this handler must accept as a first argument a WorkflowContext.
274
+ * * The workflow handlers other than 'run' must accept as a first argument a WorkflowSharedContext.
275
+ * * The workflow handlers can not be named 'workflowSubmit', 'workflowAttach', 'workflowOutput' - as these are reserved keywords.
276
+ *
277
+ * @example To use the workflow, you can bind it to an endpoint:
278
+ * ```ts
279
+ * endpoint.bind(mywf)
280
+ * ```
281
+ *
282
+ * @example To interact with the workflow, you can use the workflow client:
283
+ * ```ts
284
+ * const client = ctx.workflowClient<typeof mywf>({ name: "mywf"});
285
+ * const res = await client.run("Hello");
286
+ * ```
287
+ *
288
+ * To use the workflow client from any other environment (like a browser), please refer to the documentation.
289
+ * https://docs.restate.dev
290
+ *
291
+ *
292
+ *
293
+ * @param name the workflow name
294
+ * @param handlers the handlers for the workflow.
295
+ */
296
+ export declare const workflow: <P extends string, M>(workflow: {
297
+ name: P;
298
+ handlers: WorkflowOpts<M>;
299
+ }) => WorkflowDefinition<P, M>;
50
300
  //# sourceMappingURL=rpc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../src/types/rpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../src/types/rpc.ts"],"names":[],"mappings":"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"}