@restatedev/restate-sdk-cloudflare-workers 1.9.0 → 1.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 (265) hide show
  1. package/LICENSE +21 -0
  2. package/dist/_virtual/rolldown_runtime.cjs +25 -0
  3. package/dist/common_api.cjs +25 -0
  4. package/dist/common_api.d.cts +30 -0
  5. package/dist/common_api.d.cts.map +1 -0
  6. package/dist/common_api.d.ts +30 -0
  7. package/dist/common_api.d.ts.map +1 -0
  8. package/dist/common_api.js +19 -0
  9. package/dist/common_api.js.map +1 -0
  10. package/dist/context.cjs +29 -0
  11. package/dist/context.d.cts +699 -0
  12. package/dist/context.d.cts.map +1 -0
  13. package/dist/context.d.ts +699 -0
  14. package/dist/context.d.ts.map +1 -0
  15. package/dist/context.js +29 -0
  16. package/dist/context.js.map +1 -0
  17. package/dist/context_impl.cjs +441 -0
  18. package/dist/context_impl.js +440 -0
  19. package/dist/context_impl.js.map +1 -0
  20. package/dist/endpoint/components.cjs +257 -0
  21. package/dist/endpoint/components.js +253 -0
  22. package/dist/endpoint/components.js.map +1 -0
  23. package/dist/endpoint/endpoint.cjs +117 -0
  24. package/dist/endpoint/endpoint.js +118 -0
  25. package/dist/endpoint/endpoint.js.map +1 -0
  26. package/dist/endpoint/fetch_endpoint.cjs +41 -0
  27. package/dist/endpoint/fetch_endpoint.d.cts +39 -0
  28. package/dist/endpoint/fetch_endpoint.d.cts.map +1 -0
  29. package/dist/endpoint/fetch_endpoint.d.ts +39 -0
  30. package/dist/endpoint/fetch_endpoint.d.ts.map +1 -0
  31. package/dist/endpoint/fetch_endpoint.js +42 -0
  32. package/dist/endpoint/fetch_endpoint.js.map +1 -0
  33. package/dist/endpoint/handlers/fetch.cjs +21 -0
  34. package/dist/endpoint/handlers/fetch.js +21 -0
  35. package/dist/endpoint/handlers/fetch.js.map +1 -0
  36. package/dist/endpoint/handlers/generic.cjs +328 -0
  37. package/dist/endpoint/handlers/generic.js +324 -0
  38. package/dist/endpoint/handlers/generic.js.map +1 -0
  39. package/dist/endpoint/handlers/lambda.cjs +93 -0
  40. package/dist/endpoint/handlers/lambda.js +89 -0
  41. package/dist/endpoint/handlers/lambda.js.map +1 -0
  42. package/dist/endpoint/lambda_endpoint.cjs +36 -0
  43. package/dist/endpoint/lambda_endpoint.d.cts +26 -0
  44. package/dist/endpoint/lambda_endpoint.d.cts.map +1 -0
  45. package/dist/endpoint/lambda_endpoint.d.ts +26 -0
  46. package/dist/endpoint/lambda_endpoint.d.ts.map +1 -0
  47. package/dist/endpoint/lambda_endpoint.js +37 -0
  48. package/dist/endpoint/lambda_endpoint.js.map +1 -0
  49. package/dist/endpoint/node_endpoint.cjs +101 -0
  50. package/dist/endpoint/node_endpoint.js +99 -0
  51. package/dist/endpoint/node_endpoint.js.map +1 -0
  52. package/dist/endpoint/types.d.cts +61 -0
  53. package/dist/endpoint/types.d.cts.map +1 -0
  54. package/dist/endpoint/types.d.ts +61 -0
  55. package/dist/endpoint/types.d.ts.map +1 -0
  56. package/dist/endpoint/withOptions.cjs +15 -0
  57. package/dist/endpoint/withOptions.js +15 -0
  58. package/dist/endpoint/withOptions.js.map +1 -0
  59. package/dist/endpoint.d.cts +112 -0
  60. package/dist/endpoint.d.cts.map +1 -0
  61. package/dist/endpoint.d.ts +112 -0
  62. package/dist/endpoint.d.ts.map +1 -0
  63. package/dist/fetch.cjs +83 -0
  64. package/dist/fetch.d.cts +52 -0
  65. package/dist/fetch.d.cts.map +1 -0
  66. package/dist/fetch.d.ts +52 -0
  67. package/dist/fetch.d.ts.map +1 -0
  68. package/dist/{esm/src/fetch.js → fetch.js} +15 -18
  69. package/dist/fetch.js.map +1 -0
  70. package/dist/index.cjs +48 -0
  71. package/dist/index.d.cts +9 -0
  72. package/dist/index.d.ts +9 -0
  73. package/dist/index.js +7 -0
  74. package/dist/io.cjs +48 -0
  75. package/dist/io.js +48 -0
  76. package/dist/io.js.map +1 -0
  77. package/dist/lambda.cjs +74 -0
  78. package/dist/lambda.d.cts +32 -0
  79. package/dist/lambda.d.cts.map +1 -0
  80. package/dist/lambda.d.ts +32 -0
  81. package/dist/lambda.d.ts.map +1 -0
  82. package/dist/lambda.js +35 -0
  83. package/dist/lambda.js.map +1 -0
  84. package/dist/logging/console_logger_transport.cjs +54 -0
  85. package/dist/logging/console_logger_transport.js +54 -0
  86. package/dist/logging/console_logger_transport.js.map +1 -0
  87. package/dist/logging/logger.cjs +43 -0
  88. package/dist/logging/logger.js +44 -0
  89. package/dist/logging/logger.js.map +1 -0
  90. package/dist/logging/logger_transport.cjs +42 -0
  91. package/dist/logging/logger_transport.d.cts +57 -0
  92. package/dist/logging/logger_transport.d.cts.map +1 -0
  93. package/dist/logging/logger_transport.d.ts +57 -0
  94. package/dist/logging/logger_transport.d.ts.map +1 -0
  95. package/dist/logging/logger_transport.js +40 -0
  96. package/dist/logging/logger_transport.js.map +1 -0
  97. package/dist/node.cjs +90 -0
  98. package/dist/node.d.cts +51 -0
  99. package/dist/node.d.cts.map +1 -0
  100. package/dist/node.d.ts +51 -0
  101. package/dist/node.d.ts.map +1 -0
  102. package/dist/node.js +50 -0
  103. package/dist/node.js.map +1 -0
  104. package/dist/package.cjs +11 -0
  105. package/dist/package.js +6 -0
  106. package/dist/package.js.map +1 -0
  107. package/dist/promises.cjs +234 -0
  108. package/dist/promises.js +226 -0
  109. package/dist/promises.js.map +1 -0
  110. package/dist/types/errors.cjs +110 -0
  111. package/dist/types/errors.d.cts +71 -0
  112. package/dist/types/errors.d.cts.map +1 -0
  113. package/dist/types/errors.d.ts +71 -0
  114. package/dist/types/errors.d.ts.map +1 -0
  115. package/dist/types/errors.js +102 -0
  116. package/dist/types/errors.js.map +1 -0
  117. package/dist/types/rpc.cjs +425 -0
  118. package/dist/types/rpc.d.cts +580 -0
  119. package/dist/types/rpc.d.cts.map +1 -0
  120. package/dist/types/rpc.d.ts +580 -0
  121. package/dist/types/rpc.d.ts.map +1 -0
  122. package/dist/types/rpc.js +406 -0
  123. package/dist/types/rpc.js.map +1 -0
  124. package/dist/user_agent.cjs +7 -0
  125. package/dist/user_agent.js +8 -0
  126. package/dist/user_agent.js.map +1 -0
  127. package/dist/utils/completable_promise.cjs +22 -0
  128. package/dist/utils/completable_promise.js +22 -0
  129. package/dist/utils/completable_promise.js.map +1 -0
  130. package/dist/utils/rand.cjs +72 -0
  131. package/dist/utils/rand.js +71 -0
  132. package/dist/utils/rand.js.map +1 -0
  133. package/dist/utils/streams.cjs +14 -0
  134. package/dist/utils/streams.js +13 -0
  135. package/dist/utils/streams.js.map +1 -0
  136. package/package.json +30 -52
  137. package/dist/esm/src/common_api.d.ts +0 -37
  138. package/dist/esm/src/common_api.d.ts.map +0 -1
  139. package/dist/esm/src/common_api.js +0 -32
  140. package/dist/esm/src/common_api.js.map +0 -1
  141. package/dist/esm/src/context.d.ts +0 -695
  142. package/dist/esm/src/context.d.ts.map +0 -1
  143. package/dist/esm/src/context.js +0 -87
  144. package/dist/esm/src/context.js.map +0 -1
  145. package/dist/esm/src/context_impl.d.ts +0 -69
  146. package/dist/esm/src/context_impl.d.ts.map +0 -1
  147. package/dist/esm/src/context_impl.js +0 -592
  148. package/dist/esm/src/context_impl.js.map +0 -1
  149. package/dist/esm/src/endpoint/components.d.ts +0 -97
  150. package/dist/esm/src/endpoint/components.d.ts.map +0 -1
  151. package/dist/esm/src/endpoint/components.js +0 -343
  152. package/dist/esm/src/endpoint/components.js.map +0 -1
  153. package/dist/esm/src/endpoint/discovery.d.ts +0 -184
  154. package/dist/esm/src/endpoint/discovery.d.ts.map +0 -1
  155. package/dist/esm/src/endpoint/discovery.js +0 -8
  156. package/dist/esm/src/endpoint/discovery.js.map +0 -1
  157. package/dist/esm/src/endpoint/endpoint.d.ts +0 -39
  158. package/dist/esm/src/endpoint/endpoint.d.ts.map +0 -1
  159. package/dist/esm/src/endpoint/endpoint.js +0 -155
  160. package/dist/esm/src/endpoint/endpoint.js.map +0 -1
  161. package/dist/esm/src/endpoint/fetch_endpoint.d.ts +0 -49
  162. package/dist/esm/src/endpoint/fetch_endpoint.d.ts.map +0 -1
  163. package/dist/esm/src/endpoint/fetch_endpoint.js +0 -49
  164. package/dist/esm/src/endpoint/fetch_endpoint.js.map +0 -1
  165. package/dist/esm/src/endpoint/handlers/fetch.d.ts +0 -5
  166. package/dist/esm/src/endpoint/handlers/fetch.d.ts.map +0 -1
  167. package/dist/esm/src/endpoint/handlers/fetch.js +0 -31
  168. package/dist/esm/src/endpoint/handlers/fetch.js.map +0 -1
  169. package/dist/esm/src/endpoint/handlers/generic.d.ts +0 -56
  170. package/dist/esm/src/endpoint/handlers/generic.d.ts.map +0 -1
  171. package/dist/esm/src/endpoint/handlers/generic.js +0 -447
  172. package/dist/esm/src/endpoint/handlers/generic.js.map +0 -1
  173. package/dist/esm/src/endpoint/handlers/lambda.d.ts +0 -10
  174. package/dist/esm/src/endpoint/handlers/lambda.d.ts.map +0 -1
  175. package/dist/esm/src/endpoint/handlers/lambda.js +0 -142
  176. package/dist/esm/src/endpoint/handlers/lambda.js.map +0 -1
  177. package/dist/esm/src/endpoint/lambda_endpoint.d.ts +0 -30
  178. package/dist/esm/src/endpoint/lambda_endpoint.d.ts.map +0 -1
  179. package/dist/esm/src/endpoint/lambda_endpoint.js +0 -48
  180. package/dist/esm/src/endpoint/lambda_endpoint.js.map +0 -1
  181. package/dist/esm/src/endpoint/node_endpoint.d.ts +0 -16
  182. package/dist/esm/src/endpoint/node_endpoint.d.ts.map +0 -1
  183. package/dist/esm/src/endpoint/node_endpoint.js +0 -111
  184. package/dist/esm/src/endpoint/node_endpoint.js.map +0 -1
  185. package/dist/esm/src/endpoint/types.d.ts +0 -55
  186. package/dist/esm/src/endpoint/types.d.ts.map +0 -1
  187. package/dist/esm/src/endpoint/types.js +0 -2
  188. package/dist/esm/src/endpoint/types.js.map +0 -1
  189. package/dist/esm/src/endpoint/withOptions.d.ts +0 -4
  190. package/dist/esm/src/endpoint/withOptions.d.ts.map +0 -1
  191. package/dist/esm/src/endpoint/withOptions.js +0 -19
  192. package/dist/esm/src/endpoint/withOptions.js.map +0 -1
  193. package/dist/esm/src/endpoint.d.ts +0 -108
  194. package/dist/esm/src/endpoint.d.ts.map +0 -1
  195. package/dist/esm/src/endpoint.js +0 -12
  196. package/dist/esm/src/endpoint.js.map +0 -1
  197. package/dist/esm/src/fetch.d.ts +0 -43
  198. package/dist/esm/src/fetch.d.ts.map +0 -1
  199. package/dist/esm/src/fetch.js.map +0 -1
  200. package/dist/esm/src/generated/version.d.ts +0 -2
  201. package/dist/esm/src/generated/version.d.ts.map +0 -1
  202. package/dist/esm/src/generated/version.js +0 -2
  203. package/dist/esm/src/generated/version.js.map +0 -1
  204. package/dist/esm/src/io.d.ts +0 -24
  205. package/dist/esm/src/io.d.ts.map +0 -1
  206. package/dist/esm/src/io.js +0 -73
  207. package/dist/esm/src/io.js.map +0 -1
  208. package/dist/esm/src/lambda.d.ts +0 -23
  209. package/dist/esm/src/lambda.d.ts.map +0 -1
  210. package/dist/esm/src/lambda.js +0 -37
  211. package/dist/esm/src/lambda.js.map +0 -1
  212. package/dist/esm/src/logging/console_logger_transport.d.ts +0 -5
  213. package/dist/esm/src/logging/console_logger_transport.d.ts.map +0 -1
  214. package/dist/esm/src/logging/console_logger_transport.js +0 -94
  215. package/dist/esm/src/logging/console_logger_transport.js.map +0 -1
  216. package/dist/esm/src/logging/logger.d.ts +0 -10
  217. package/dist/esm/src/logging/logger.d.ts.map +0 -1
  218. package/dist/esm/src/logging/logger.js +0 -57
  219. package/dist/esm/src/logging/logger.js.map +0 -1
  220. package/dist/esm/src/logging/logger_transport.d.ts +0 -52
  221. package/dist/esm/src/logging/logger_transport.d.ts.map +0 -1
  222. package/dist/esm/src/logging/logger_transport.js +0 -55
  223. package/dist/esm/src/logging/logger_transport.js.map +0 -1
  224. package/dist/esm/src/node.d.ts +0 -39
  225. package/dist/esm/src/node.d.ts.map +0 -1
  226. package/dist/esm/src/node.js +0 -52
  227. package/dist/esm/src/node.js.map +0 -1
  228. package/dist/esm/src/promises.d.ts +0 -111
  229. package/dist/esm/src/promises.d.ts.map +0 -1
  230. package/dist/esm/src/promises.js +0 -314
  231. package/dist/esm/src/promises.js.map +0 -1
  232. package/dist/esm/src/public_api.d.ts +0 -2
  233. package/dist/esm/src/public_api.d.ts.map +0 -1
  234. package/dist/esm/src/public_api.js +0 -12
  235. package/dist/esm/src/public_api.js.map +0 -1
  236. package/dist/esm/src/types/errors.d.ts +0 -74
  237. package/dist/esm/src/types/errors.d.ts.map +0 -1
  238. package/dist/esm/src/types/errors.js +0 -128
  239. package/dist/esm/src/types/errors.js.map +0 -1
  240. package/dist/esm/src/types/rpc.d.ts +0 -620
  241. package/dist/esm/src/types/rpc.d.ts.map +0 -1
  242. package/dist/esm/src/types/rpc.js +0 -577
  243. package/dist/esm/src/types/rpc.js.map +0 -1
  244. package/dist/esm/src/user_agent.d.ts +0 -2
  245. package/dist/esm/src/user_agent.d.ts.map +0 -1
  246. package/dist/esm/src/user_agent.js +0 -13
  247. package/dist/esm/src/user_agent.js.map +0 -1
  248. package/dist/esm/src/utils/completable_promise.d.ts +0 -9
  249. package/dist/esm/src/utils/completable_promise.d.ts.map +0 -1
  250. package/dist/esm/src/utils/completable_promise.js +0 -30
  251. package/dist/esm/src/utils/completable_promise.js.map +0 -1
  252. package/dist/esm/src/utils/rand.d.ts +0 -13
  253. package/dist/esm/src/utils/rand.d.ts.map +0 -1
  254. package/dist/esm/src/utils/rand.js +0 -109
  255. package/dist/esm/src/utils/rand.js.map +0 -1
  256. package/dist/esm/src/utils/streams.d.ts +0 -3
  257. package/dist/esm/src/utils/streams.d.ts.map +0 -1
  258. package/dist/esm/src/utils/streams.js +0 -20
  259. package/dist/esm/src/utils/streams.js.map +0 -1
  260. package/dist/esm/tsconfig.tsbuildinfo +0 -1
  261. /package/dist/{esm/src/endpoint → endpoint}/handlers/vm/sdk_shared_core_wasm_bindings.d.ts +0 -0
  262. /package/dist/{esm/src/endpoint → endpoint}/handlers/vm/sdk_shared_core_wasm_bindings.js +0 -0
  263. /package/dist/{esm/src/endpoint → endpoint}/handlers/vm/sdk_shared_core_wasm_bindings_bg.js +0 -0
  264. /package/dist/{esm/src/endpoint → endpoint}/handlers/vm/sdk_shared_core_wasm_bindings_bg.wasm +0 -0
  265. /package/dist/{esm/src/endpoint → endpoint}/handlers/vm/sdk_shared_core_wasm_bindings_bg.wasm.d.ts +0 -0
@@ -0,0 +1,118 @@
1
+ import { HandlerWrapper } from "../types/rpc.js";
2
+ import { ServiceComponent, VirtualObjectComponent, WorkflowComponent } from "./components.js";
3
+ import { LogSource } from "../logging/logger_transport.js";
4
+ import { createLogger } from "../logging/logger.js";
5
+ import { defaultLoggerTransport } from "../logging/console_logger_transport.js";
6
+
7
+ //#region src/endpoint/endpoint.ts
8
+ function isServiceDefinition(m) {
9
+ return m && m.service !== void 0;
10
+ }
11
+ function isObjectDefinition(m) {
12
+ return m && m.object !== void 0;
13
+ }
14
+ function isWorkflowDefinition(m) {
15
+ return m && m.workflow !== void 0;
16
+ }
17
+ var EndpointBuilder = class {
18
+ serviceDefinitions = /* @__PURE__ */ new Map();
19
+ loggerTransport = defaultLoggerTransport;
20
+ keySet = [];
21
+ defaultServiceOptions = {};
22
+ journalValueCodecProvider;
23
+ bind(definition) {
24
+ if (definition.name.indexOf("/") !== -1) throw new Error("service name must not contain any slash '/'");
25
+ this.serviceDefinitions.set(definition.name, definition);
26
+ }
27
+ addIdentityKeys(...keys) {
28
+ this.keySet.push(...keys);
29
+ }
30
+ setDefaultServiceOptions(options) {
31
+ this.defaultServiceOptions = options;
32
+ }
33
+ setLogger(newLogger) {
34
+ this.loggerTransport = newLogger;
35
+ }
36
+ setJournalValueCodecProvider(codecProvider) {
37
+ this.journalValueCodecProvider = codecProvider;
38
+ }
39
+ build() {
40
+ const rlog = createLogger(this.loggerTransport, LogSource.SYSTEM);
41
+ const components = /* @__PURE__ */ new Map();
42
+ for (const [name, definition] of this.serviceDefinitions) if (isServiceDefinition(definition)) {
43
+ const { name: name$1, service } = definition;
44
+ if (!service) throw new TypeError(`no service implementation found.`);
45
+ components.set(name$1, buildServiceComponent(name$1, service, definition, this.defaultServiceOptions));
46
+ } else if (isObjectDefinition(definition)) {
47
+ const { name: name$1, object } = definition;
48
+ if (!object) throw new TypeError(`no object implementation found.`);
49
+ components.set(name$1, buildVirtualObjectComponent(name$1, object, definition, this.defaultServiceOptions));
50
+ } else if (isWorkflowDefinition(definition)) {
51
+ const { name: name$1, workflow } = definition;
52
+ if (!workflow) throw new TypeError(`no workflow implementation found.`);
53
+ components.set(name$1, buildWorkflowComponent(name$1, workflow, definition, this.defaultServiceOptions));
54
+ } else throw new TypeError(`cannot bind ${name}, can only bind a service or a virtual object or a workflow definition`);
55
+ const discoveryMetadata = computeDiscovery(components);
56
+ return {
57
+ keySet: this.keySet,
58
+ loggerTransport: this.loggerTransport,
59
+ rlog,
60
+ components,
61
+ discoveryMetadata,
62
+ journalValueCodec: this.journalValueCodecProvider ? this.journalValueCodecProvider() : void 0
63
+ };
64
+ }
65
+ };
66
+ function computeDiscovery(components) {
67
+ return {
68
+ minProtocolVersion: 5,
69
+ maxProtocolVersion: 6,
70
+ services: [...components.values()].map((c) => c.discovery())
71
+ };
72
+ }
73
+ function buildServiceComponent(name, router, definition, defaultServiceOptions) {
74
+ if (name.indexOf("/") !== -1) throw new Error("service name must not contain any slash '/'");
75
+ const component = new ServiceComponent(name, definition.description, definition.metadata, {
76
+ ...defaultServiceOptions,
77
+ ...definition?.options
78
+ });
79
+ for (const [route, handler] of Object.entries(router)) {
80
+ const wrapper = HandlerWrapper.fromHandler(handler);
81
+ if (!wrapper) throw new TypeError(`${route} is not a restate handler.`);
82
+ wrapper.bindInstance(router);
83
+ component.add(route, wrapper);
84
+ }
85
+ return component;
86
+ }
87
+ function buildVirtualObjectComponent(name, router, definition, defaultServiceOptions) {
88
+ if (name.indexOf("/") !== -1) throw new Error("service name must not contain any slash '/'");
89
+ const component = new VirtualObjectComponent(name, definition.description, definition.metadata, {
90
+ ...defaultServiceOptions,
91
+ ...definition?.options
92
+ });
93
+ for (const [route, handler] of Object.entries(router)) {
94
+ const wrapper = HandlerWrapper.fromHandler(handler);
95
+ if (!wrapper) throw new TypeError(`${route} is not a restate handler.`);
96
+ wrapper.bindInstance(router);
97
+ component.add(route, wrapper);
98
+ }
99
+ return component;
100
+ }
101
+ function buildWorkflowComponent(name, workflow, definition, defaultServiceOptions) {
102
+ if (name.indexOf("/") !== -1) throw new Error("service name must not contain any slash '/'");
103
+ const component = new WorkflowComponent(name, definition.description, definition.metadata, {
104
+ ...defaultServiceOptions,
105
+ ...definition?.options
106
+ });
107
+ for (const [route, handler] of Object.entries(workflow)) {
108
+ const wrapper = HandlerWrapper.fromHandler(handler);
109
+ if (!wrapper) throw new TypeError(`${route} is not a restate handler.`);
110
+ wrapper.bindInstance(workflow);
111
+ component.add(route, wrapper);
112
+ }
113
+ return component;
114
+ }
115
+
116
+ //#endregion
117
+ export { EndpointBuilder };
118
+ //# sourceMappingURL=endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint.js","names":["name"],"sources":["../../src/endpoint/endpoint.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH\n *\n * This file is part of the Restate SDK for Node.js/TypeScript,\n * which is released under the MIT license.\n *\n * You can find a copy of the license in file LICENSE in the root\n * directory of this repository or package, or at\n * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type {\n JournalValueCodec,\n ServiceDefinition,\n VirtualObjectDefinition,\n WorkflowDefinition,\n} from \"@restatedev/restate-sdk-core\";\n\nimport type {\n ObjectOptions,\n ServiceOptions,\n WorkflowOptions,\n} from \"../types/rpc.js\";\nimport { HandlerWrapper } from \"../types/rpc.js\";\nimport type { Component } from \"./components.js\";\nimport {\n ServiceComponent,\n VirtualObjectComponent,\n WorkflowComponent,\n} from \"./components.js\";\nimport type * as discovery from \"./discovery.js\";\nimport { defaultLoggerTransport } from \"../logging/console_logger_transport.js\";\nimport {\n type LoggerTransport,\n LogSource,\n} from \"../logging/logger_transport.js\";\nimport type { Logger } from \"../logging/logger.js\";\nimport { createLogger } from \"../logging/logger.js\";\nimport type { DefaultServiceOptions } from \"../endpoint.js\";\n\nfunction isServiceDefinition<P extends string, M>(\n m: Record<string, any>\n): m is ServiceDefinition<P, M> & { service: M } {\n return m && m.service !== undefined;\n}\n\nfunction isObjectDefinition<P extends string, M>(\n m: Record<string, any>\n): m is VirtualObjectDefinition<P, M> & { object: M } {\n return m && m.object !== undefined;\n}\n\nfunction isWorkflowDefinition<P extends string, M>(\n m: Record<string, any>\n): m is WorkflowDefinition<P, M> & { workflow: M } {\n return m && m.workflow !== undefined;\n}\n\n/**\n * Services can have additional information that is not part of the definition.\n * For example a description or metadata.\n */\ntype ServiceAuxInfo = {\n description?: string;\n metadata?: Record<string, any>;\n options?: ServiceOptions | ObjectOptions | WorkflowOptions;\n};\n\nexport type Endpoint = {\n loggerTransport: LoggerTransport;\n components: Map<string, Component>;\n keySet: string[];\n /**\n * This is a simple console without contextual info.\n *\n * This should be used only in cases where no contextual info is available.\n */\n rlog: Logger;\n /**\n * All discovery metadata, except protocol mode provided by the node/fetch/lambda endpoint implementations\n */\n discoveryMetadata: Omit<discovery.Endpoint, \"protocolMode\">;\n\n /**\n * Codec provider to use for journal values.\n */\n journalValueCodec?: Promise<JournalValueCodec>;\n};\n\nexport class EndpointBuilder {\n private readonly serviceDefinitions: Map<\n string,\n | ServiceDefinition<string, any>\n | VirtualObjectDefinition<string, any>\n | WorkflowDefinition<string, any>\n > = new Map();\n private loggerTransport: LoggerTransport = defaultLoggerTransport;\n private keySet: string[] = [];\n private defaultServiceOptions: DefaultServiceOptions = {};\n private journalValueCodecProvider?: () => Promise<JournalValueCodec>;\n\n public bind<P extends string, M>(\n definition:\n | ServiceDefinition<P, M>\n | VirtualObjectDefinition<P, M>\n | WorkflowDefinition<P, M>\n ) {\n // Validate service name\n if (definition.name.indexOf(\"/\") !== -1) {\n throw new Error(\"service name must not contain any slash '/'\");\n }\n\n this.serviceDefinitions.set(definition.name, definition);\n }\n\n public addIdentityKeys(...keys: string[]) {\n this.keySet.push(...keys);\n }\n\n public setDefaultServiceOptions(options: DefaultServiceOptions) {\n this.defaultServiceOptions = options;\n }\n\n public setLogger(newLogger: LoggerTransport) {\n this.loggerTransport = newLogger;\n }\n\n public setJournalValueCodecProvider(\n codecProvider: () => Promise<JournalValueCodec>\n ) {\n this.journalValueCodecProvider = codecProvider;\n }\n\n public build(): Endpoint {\n const rlog = createLogger(this.loggerTransport, LogSource.SYSTEM);\n\n // Build the components\n const components = new Map<string, Component>();\n for (const [name, definition] of this.serviceDefinitions) {\n if (isServiceDefinition(definition)) {\n const { name, service } = definition;\n if (!service) {\n throw new TypeError(`no service implementation found.`);\n }\n components.set(\n name,\n buildServiceComponent(\n name,\n service,\n definition as ServiceAuxInfo,\n this.defaultServiceOptions\n )\n );\n } else if (isObjectDefinition(definition)) {\n const { name, object } = definition;\n if (!object) {\n throw new TypeError(`no object implementation found.`);\n }\n components.set(\n name,\n buildVirtualObjectComponent(\n name,\n object,\n definition as ServiceAuxInfo,\n this.defaultServiceOptions\n )\n );\n } else if (isWorkflowDefinition(definition)) {\n const { name, workflow } = definition;\n if (!workflow) {\n throw new TypeError(`no workflow implementation found.`);\n }\n components.set(\n name,\n buildWorkflowComponent(\n name,\n workflow,\n definition as ServiceAuxInfo,\n this.defaultServiceOptions\n )\n );\n } else {\n throw new TypeError(\n `cannot bind ${name}, can only bind a service or a virtual object or a workflow definition`\n );\n }\n }\n\n // Compute discovery metadata\n const discoveryMetadata = computeDiscovery(components);\n\n return {\n keySet: this.keySet,\n loggerTransport: this.loggerTransport,\n rlog,\n components,\n discoveryMetadata,\n journalValueCodec: this.journalValueCodecProvider\n ? this.journalValueCodecProvider()\n : undefined,\n };\n }\n}\n\nfunction computeDiscovery(\n components: Map<string, Component>\n): discovery.Endpoint {\n return {\n minProtocolVersion: 5,\n maxProtocolVersion: 6,\n services: [...components.values()].map((c) => c.discovery()),\n };\n}\n\nfunction buildServiceComponent(\n name: string,\n router: any,\n definition: ServiceAuxInfo,\n defaultServiceOptions: DefaultServiceOptions\n): ServiceComponent {\n if (name.indexOf(\"/\") !== -1) {\n throw new Error(\"service name must not contain any slash '/'\");\n }\n const component = new ServiceComponent(\n name,\n definition.description,\n definition.metadata,\n {\n ...defaultServiceOptions,\n ...(definition?.options as ServiceOptions),\n }\n );\n\n for (const [route, handler] of Object.entries(\n router as { [s: string]: any }\n )) {\n const wrapper = HandlerWrapper.fromHandler(handler);\n if (!wrapper) {\n throw new TypeError(`${route} is not a restate handler.`);\n }\n wrapper.bindInstance(router);\n component.add(route, wrapper);\n }\n\n return component;\n}\n\nfunction buildVirtualObjectComponent(\n name: string,\n router: any,\n definition: ServiceAuxInfo,\n defaultServiceOptions: DefaultServiceOptions\n): VirtualObjectComponent {\n if (name.indexOf(\"/\") !== -1) {\n throw new Error(\"service name must not contain any slash '/'\");\n }\n const component = new VirtualObjectComponent(\n name,\n definition.description,\n definition.metadata,\n {\n ...defaultServiceOptions,\n ...(definition?.options as ObjectOptions),\n }\n );\n\n for (const [route, handler] of Object.entries(\n router as { [s: string]: any }\n )) {\n const wrapper = HandlerWrapper.fromHandler(handler);\n if (!wrapper) {\n throw new TypeError(`${route} is not a restate handler.`);\n }\n wrapper.bindInstance(router);\n component.add(route, wrapper);\n }\n return component;\n}\n\nfunction buildWorkflowComponent(\n name: string,\n workflow: any,\n definition: ServiceAuxInfo,\n defaultServiceOptions: DefaultServiceOptions\n): WorkflowComponent {\n if (name.indexOf(\"/\") !== -1) {\n throw new Error(\"service name must not contain any slash '/'\");\n }\n const component = new WorkflowComponent(\n name,\n definition.description,\n definition.metadata,\n {\n ...defaultServiceOptions,\n ...(definition?.options as WorkflowOptions),\n }\n );\n\n for (const [route, handler] of Object.entries(\n workflow as { [s: string]: any }\n )) {\n const wrapper = HandlerWrapper.fromHandler(handler);\n if (!wrapper) {\n throw new TypeError(`${route} is not a restate handler.`);\n }\n wrapper.bindInstance(workflow);\n component.add(route, wrapper);\n }\n return component;\n}\n"],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ const require_generic = require('./handlers/generic.cjs');
2
+ const require_endpoint = require('./endpoint.cjs');
3
+ const require_fetch = require('./handlers/fetch.cjs');
4
+
5
+ //#region src/endpoint/fetch_endpoint.ts
6
+ var FetchEndpointImpl = class {
7
+ constructor(protocolMode) {
8
+ this.protocolMode = protocolMode;
9
+ }
10
+ builder = new require_endpoint.EndpointBuilder();
11
+ bind(definition) {
12
+ this.builder.bind(definition);
13
+ return this;
14
+ }
15
+ withIdentityV1(...keys) {
16
+ this.builder.addIdentityKeys(...keys);
17
+ return this;
18
+ }
19
+ defaultServiceOptions(options) {
20
+ this.builder.setDefaultServiceOptions(options);
21
+ return this;
22
+ }
23
+ setLogger(newLogger) {
24
+ this.builder.setLogger(newLogger);
25
+ return this;
26
+ }
27
+ bidirectional(set = true) {
28
+ this.protocolMode = set ? "BIDI_STREAM" : "REQUEST_RESPONSE";
29
+ return this;
30
+ }
31
+ journalValueCodecProvider(codecProvider) {
32
+ this.builder.setJournalValueCodecProvider(codecProvider);
33
+ return this;
34
+ }
35
+ handler() {
36
+ return require_fetch.fetcher(new require_generic.GenericHandler(this.builder.build(), this.protocolMode, {}));
37
+ }
38
+ };
39
+
40
+ //#endregion
41
+ exports.FetchEndpointImpl = FetchEndpointImpl;
@@ -0,0 +1,39 @@
1
+ import "../logging/logger_transport.cjs";
2
+ import { RestateEndpointBase } from "../endpoint.cjs";
3
+ import { JournalValueCodec, ServiceDefinition, VirtualObjectDefinition, WorkflowDefinition } from "@restatedev/restate-sdk-core";
4
+
5
+ //#region src/endpoint/fetch_endpoint.d.ts
6
+
7
+ /**
8
+ * Generic Fetch encapsulates all the Restate services served by this endpoint.
9
+ *
10
+ *
11
+ * @example
12
+ * A typical request-response handler would look like this:
13
+ * ```
14
+ * import * as restate from "@restatedev/restate-sdk/fetch";
15
+ *
16
+ * export default restate
17
+ * .endpoint()
18
+ * .bind(myService)
19
+ * .handler();
20
+ * @example
21
+ * A typical bidirectional handler (works with http2 and some http1.1 servers) would look like this:
22
+ * ```
23
+ * import * as restate from "@restatedev/restate-sdk/fetch";
24
+ *
25
+ * export default restate
26
+ * .endpoint()
27
+ * .bidirectional()
28
+ * .bind(myService)
29
+ * .handler();
30
+ */
31
+ interface FetchEndpoint extends RestateEndpointBase<FetchEndpoint> {
32
+ handler(): {
33
+ fetch: (request: Request, ...extraArgs: unknown[]) => Promise<Response>;
34
+ };
35
+ bidirectional(set?: boolean): FetchEndpoint;
36
+ }
37
+ //#endregion
38
+ export { FetchEndpoint };
39
+ //# sourceMappingURL=fetch_endpoint.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch_endpoint.d.cts","names":[],"sources":["../../src/endpoint/fetch_endpoint.ts"],"sourcesContent":[],"mappings":";;;;;;;AAmDA;;;;;;;;;;;;;;;;;;;;;;;UAAiB,aAAA,SAAsB,oBAAoB;;qBAEtC,qCAAqC,QAAQ;;gCAElC"}
@@ -0,0 +1,39 @@
1
+ import "../logging/logger_transport.js";
2
+ import { RestateEndpointBase } from "../endpoint.js";
3
+ import { JournalValueCodec, ServiceDefinition, VirtualObjectDefinition, WorkflowDefinition } from "@restatedev/restate-sdk-core";
4
+
5
+ //#region src/endpoint/fetch_endpoint.d.ts
6
+
7
+ /**
8
+ * Generic Fetch encapsulates all the Restate services served by this endpoint.
9
+ *
10
+ *
11
+ * @example
12
+ * A typical request-response handler would look like this:
13
+ * ```
14
+ * import * as restate from "@restatedev/restate-sdk/fetch";
15
+ *
16
+ * export default restate
17
+ * .endpoint()
18
+ * .bind(myService)
19
+ * .handler();
20
+ * @example
21
+ * A typical bidirectional handler (works with http2 and some http1.1 servers) would look like this:
22
+ * ```
23
+ * import * as restate from "@restatedev/restate-sdk/fetch";
24
+ *
25
+ * export default restate
26
+ * .endpoint()
27
+ * .bidirectional()
28
+ * .bind(myService)
29
+ * .handler();
30
+ */
31
+ interface FetchEndpoint extends RestateEndpointBase<FetchEndpoint> {
32
+ handler(): {
33
+ fetch: (request: Request, ...extraArgs: unknown[]) => Promise<Response>;
34
+ };
35
+ bidirectional(set?: boolean): FetchEndpoint;
36
+ }
37
+ //#endregion
38
+ export { FetchEndpoint };
39
+ //# sourceMappingURL=fetch_endpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch_endpoint.d.ts","names":[],"sources":["../../src/endpoint/fetch_endpoint.ts"],"sourcesContent":[],"mappings":";;;;;;;AAmDA;;;;;;;;;;;;;;;;;;;;;;;UAAiB,aAAA,SAAsB,oBAAoB;;qBAEtC,qCAAqC,QAAQ;;gCAElC"}
@@ -0,0 +1,42 @@
1
+ import { GenericHandler } from "./handlers/generic.js";
2
+ import { EndpointBuilder } from "./endpoint.js";
3
+ import { fetcher } from "./handlers/fetch.js";
4
+
5
+ //#region src/endpoint/fetch_endpoint.ts
6
+ var FetchEndpointImpl = class {
7
+ constructor(protocolMode) {
8
+ this.protocolMode = protocolMode;
9
+ }
10
+ builder = new EndpointBuilder();
11
+ bind(definition) {
12
+ this.builder.bind(definition);
13
+ return this;
14
+ }
15
+ withIdentityV1(...keys) {
16
+ this.builder.addIdentityKeys(...keys);
17
+ return this;
18
+ }
19
+ defaultServiceOptions(options) {
20
+ this.builder.setDefaultServiceOptions(options);
21
+ return this;
22
+ }
23
+ setLogger(newLogger) {
24
+ this.builder.setLogger(newLogger);
25
+ return this;
26
+ }
27
+ bidirectional(set = true) {
28
+ this.protocolMode = set ? "BIDI_STREAM" : "REQUEST_RESPONSE";
29
+ return this;
30
+ }
31
+ journalValueCodecProvider(codecProvider) {
32
+ this.builder.setJournalValueCodecProvider(codecProvider);
33
+ return this;
34
+ }
35
+ handler() {
36
+ return fetcher(new GenericHandler(this.builder.build(), this.protocolMode, {}));
37
+ }
38
+ };
39
+
40
+ //#endregion
41
+ export { FetchEndpointImpl };
42
+ //# sourceMappingURL=fetch_endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch_endpoint.js","names":["protocolMode: ProtocolMode"],"sources":["../../src/endpoint/fetch_endpoint.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH\n *\n * This file is part of the Restate SDK for Node.js/TypeScript,\n * which is released under the MIT license.\n *\n * You can find a copy of the license in file LICENSE in the root\n * directory of this repository or package, or at\n * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE\n */\n\nimport type {\n JournalValueCodec,\n ServiceDefinition,\n VirtualObjectDefinition,\n WorkflowDefinition,\n} from \"@restatedev/restate-sdk-core\";\nimport { EndpointBuilder } from \"./endpoint.js\";\nimport type {\n DefaultServiceOptions,\n RestateEndpointBase,\n} from \"../endpoint.js\";\nimport { GenericHandler } from \"./handlers/generic.js\";\nimport { fetcher } from \"./handlers/fetch.js\";\nimport type { LoggerTransport } from \"../logging/logger_transport.js\";\nimport type { ProtocolMode } from \"./discovery.js\";\n\n/**\n * Generic Fetch encapsulates all the Restate services served by this endpoint.\n *\n *\n * @example\n * A typical request-response handler would look like this:\n * ```\n * import * as restate from \"@restatedev/restate-sdk/fetch\";\n *\n * export default restate\n * .endpoint()\n * .bind(myService)\n * .handler();\n * @example\n * A typical bidirectional handler (works with http2 and some http1.1 servers) would look like this:\n * ```\n * import * as restate from \"@restatedev/restate-sdk/fetch\";\n *\n * export default restate\n * .endpoint()\n * .bidirectional()\n * .bind(myService)\n * .handler();\n */\nexport interface FetchEndpoint extends RestateEndpointBase<FetchEndpoint> {\n handler(): {\n fetch: (request: Request, ...extraArgs: unknown[]) => Promise<Response>;\n };\n bidirectional(set?: boolean): FetchEndpoint;\n}\n\nexport class FetchEndpointImpl implements FetchEndpoint {\n constructor(private protocolMode: ProtocolMode) {}\n private builder: EndpointBuilder = new EndpointBuilder();\n\n public bind<P extends string, M>(\n definition:\n | ServiceDefinition<P, M>\n | VirtualObjectDefinition<P, M>\n | WorkflowDefinition<P, M>\n ): FetchEndpoint {\n this.builder.bind(definition);\n return this;\n }\n\n public withIdentityV1(...keys: string[]): FetchEndpoint {\n this.builder.addIdentityKeys(...keys);\n return this;\n }\n\n public defaultServiceOptions(options: DefaultServiceOptions): FetchEndpoint {\n this.builder.setDefaultServiceOptions(options);\n return this;\n }\n\n public setLogger(newLogger: LoggerTransport): FetchEndpoint {\n this.builder.setLogger(newLogger);\n return this;\n }\n\n public bidirectional(set: boolean = true): FetchEndpoint {\n this.protocolMode = set ? \"BIDI_STREAM\" : \"REQUEST_RESPONSE\";\n return this;\n }\n\n public journalValueCodecProvider(\n codecProvider: () => Promise<JournalValueCodec>\n ): FetchEndpoint {\n this.builder.setJournalValueCodecProvider(codecProvider);\n return this;\n }\n\n handler(): {\n fetch: (request: Request, ...extraArgs: unknown[]) => Promise<Response>;\n } {\n const genericHandler = new GenericHandler(\n this.builder.build(),\n this.protocolMode,\n {}\n );\n return fetcher(genericHandler);\n }\n}\n"],"mappings":";;;;;AA0DA,IAAa,oBAAb,MAAwD;CACtD,YAAY,AAAQA,cAA4B;EAA5B;;CACpB,AAAQ,UAA2B,IAAI,iBAAiB;CAExD,AAAO,KACL,YAIe;AACf,OAAK,QAAQ,KAAK,WAAW;AAC7B,SAAO;;CAGT,AAAO,eAAe,GAAG,MAA+B;AACtD,OAAK,QAAQ,gBAAgB,GAAG,KAAK;AACrC,SAAO;;CAGT,AAAO,sBAAsB,SAA+C;AAC1E,OAAK,QAAQ,yBAAyB,QAAQ;AAC9C,SAAO;;CAGT,AAAO,UAAU,WAA2C;AAC1D,OAAK,QAAQ,UAAU,UAAU;AACjC,SAAO;;CAGT,AAAO,cAAc,MAAe,MAAqB;AACvD,OAAK,eAAe,MAAM,gBAAgB;AAC1C,SAAO;;CAGT,AAAO,0BACL,eACe;AACf,OAAK,QAAQ,6BAA6B,cAAc;AACxD,SAAO;;CAGT,UAEE;AAMA,SAAO,QALgB,IAAI,eACzB,KAAK,QAAQ,OAAO,EACpB,KAAK,cACL,EAAE,CACH,CAC6B"}
@@ -0,0 +1,21 @@
1
+
2
+ //#region src/endpoint/handlers/fetch.ts
3
+ function fetcher(handler) {
4
+ return { fetch: async (event, ...extraArgs) => {
5
+ const request = {
6
+ url: event.url,
7
+ headers: Object.fromEntries(event.headers.entries()),
8
+ body: event.body,
9
+ extraArgs,
10
+ abortSignal: event.signal
11
+ };
12
+ const resp = await handler.handle(request);
13
+ return new Response(resp.body, {
14
+ status: resp.statusCode,
15
+ headers: resp.headers
16
+ });
17
+ } };
18
+ }
19
+
20
+ //#endregion
21
+ exports.fetcher = fetcher;
@@ -0,0 +1,21 @@
1
+ //#region src/endpoint/handlers/fetch.ts
2
+ function fetcher(handler) {
3
+ return { fetch: async (event, ...extraArgs) => {
4
+ const request = {
5
+ url: event.url,
6
+ headers: Object.fromEntries(event.headers.entries()),
7
+ body: event.body,
8
+ extraArgs,
9
+ abortSignal: event.signal
10
+ };
11
+ const resp = await handler.handle(request);
12
+ return new Response(resp.body, {
13
+ status: resp.statusCode,
14
+ headers: resp.headers
15
+ });
16
+ } };
17
+ }
18
+
19
+ //#endregion
20
+ export { fetcher };
21
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","names":["request: RestateRequest"],"sources":["../../../src/endpoint/handlers/fetch.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH\n *\n * This file is part of the Restate SDK for Node.js/TypeScript,\n * which is released under the MIT license.\n *\n * You can find a copy of the license in file LICENSE in the root\n * directory of this repository or package, or at\n * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE\n */\n\nimport type { GenericHandler, RestateRequest } from \"./generic.js\";\n\nexport function fetcher(handler: GenericHandler) {\n return {\n fetch: async (\n event: Request,\n ...extraArgs: unknown[]\n ): Promise<Response> => {\n const url = event.url;\n const headers = Object.fromEntries(event.headers.entries());\n\n const request: RestateRequest = {\n url,\n headers,\n body: event.body,\n extraArgs,\n abortSignal: event.signal,\n };\n\n const resp = await handler.handle(request);\n\n return new Response(resp.body, {\n status: resp.statusCode,\n headers: resp.headers,\n });\n },\n };\n}\n"],"mappings":";AAaA,SAAgB,QAAQ,SAAyB;AAC/C,QAAO,EACL,OAAO,OACL,OACA,GAAG,cACmB;EAItB,MAAMA,UAA0B;GAC9B,KAJU,MAAM;GAKhB,SAJc,OAAO,YAAY,MAAM,QAAQ,SAAS,CAAC;GAKzD,MAAM,MAAM;GACZ;GACA,aAAa,MAAM;GACpB;EAED,MAAM,OAAO,MAAM,QAAQ,OAAO,QAAQ;AAE1C,SAAO,IAAI,SAAS,KAAK,MAAM;GAC7B,QAAQ,KAAK;GACb,SAAS,KAAK;GACf,CAAC;IAEL"}