@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,257 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ const require_rpc = require('../types/rpc.cjs');
3
+ let __restatedev_restate_sdk_core = require("@restatedev/restate-sdk-core");
4
+ __restatedev_restate_sdk_core = require_rolldown_runtime.__toESM(__restatedev_restate_sdk_core);
5
+
6
+ //#region src/endpoint/components.ts
7
+ function handlerInputDiscovery(handler, defaultSerde) {
8
+ const serde$1 = handler.inputSerde ?? defaultSerde;
9
+ let contentType = void 0;
10
+ let jsonSchema = void 0;
11
+ if (serde$1.jsonSchema) {
12
+ jsonSchema = serde$1.jsonSchema;
13
+ contentType = handler.accept ?? serde$1.contentType;
14
+ } else if (handler.accept) contentType = handler.accept;
15
+ else if (serde$1.contentType) contentType = serde$1.contentType;
16
+ else return {};
17
+ return {
18
+ required: false,
19
+ contentType,
20
+ jsonSchema
21
+ };
22
+ }
23
+ function handlerOutputDiscovery(handler, defaultSerde) {
24
+ const serde$1 = handler.outputSerde ?? defaultSerde;
25
+ let contentType = void 0;
26
+ let jsonSchema = void 0;
27
+ if (serde$1.jsonSchema) {
28
+ jsonSchema = serde$1.jsonSchema;
29
+ contentType = serde$1.contentType ?? "application/json";
30
+ } else if (serde$1.contentType) contentType = serde$1.contentType;
31
+ else return { setContentTypeIfEmpty: false };
32
+ return {
33
+ setContentTypeIfEmpty: false,
34
+ jsonSchema,
35
+ contentType
36
+ };
37
+ }
38
+ var ServiceComponent = class {
39
+ handlers = /* @__PURE__ */ new Map();
40
+ constructor(componentName, description, metadata, options) {
41
+ this.componentName = componentName;
42
+ this.description = description;
43
+ this.metadata = metadata;
44
+ this.options = options;
45
+ }
46
+ name() {
47
+ return this.componentName;
48
+ }
49
+ add(name, handlerWrapper) {
50
+ this.handlers.set(name, new ServiceHandler(name, handlerWrapper, this));
51
+ }
52
+ discovery() {
53
+ const handlers = [...this.handlers.entries()].map(([name, handler]) => {
54
+ return {
55
+ name,
56
+ ...commonHandlerOptions(handler.handlerWrapper, this.options?.serde ?? __restatedev_restate_sdk_core.serde.json)
57
+ };
58
+ });
59
+ return {
60
+ name: this.componentName,
61
+ ty: "SERVICE",
62
+ handlers,
63
+ documentation: this.description,
64
+ metadata: this.metadata,
65
+ ...commonServiceOptions(this.options)
66
+ };
67
+ }
68
+ handlerMatching(url) {
69
+ return this.handlers.get(url.handlerName);
70
+ }
71
+ };
72
+ var ServiceHandler = class {
73
+ constructor(handlerName, handlerWrapper, parent) {
74
+ this.handlerName = handlerName;
75
+ this.handlerWrapper = handlerWrapper;
76
+ this.parent = parent;
77
+ }
78
+ name() {
79
+ return this.handlerName;
80
+ }
81
+ component() {
82
+ return this.parent;
83
+ }
84
+ kind() {
85
+ return this.handlerWrapper.kind;
86
+ }
87
+ invoke(context, input) {
88
+ return this.handlerWrapper.invoke(context, input);
89
+ }
90
+ };
91
+ var VirtualObjectComponent = class {
92
+ handlers = /* @__PURE__ */ new Map();
93
+ constructor(componentName, description, metadata, options) {
94
+ this.componentName = componentName;
95
+ this.description = description;
96
+ this.metadata = metadata;
97
+ this.options = options;
98
+ }
99
+ name() {
100
+ return this.componentName;
101
+ }
102
+ add(name, wrapper) {
103
+ this.handlers.set(name, new VirtualObjectHandler(name, wrapper, this));
104
+ }
105
+ discovery() {
106
+ const handlers = [...this.handlers.entries()].map(([name, handler]) => {
107
+ return {
108
+ name,
109
+ ty: handler.kind() === require_rpc.HandlerKind.EXCLUSIVE ? "EXCLUSIVE" : "SHARED",
110
+ ...commonHandlerOptions(handler.handlerWrapper, this.options?.serde ?? __restatedev_restate_sdk_core.serde.json)
111
+ };
112
+ });
113
+ return {
114
+ name: this.componentName,
115
+ ty: "VIRTUAL_OBJECT",
116
+ handlers,
117
+ documentation: this.description,
118
+ metadata: this.metadata,
119
+ ...commonServiceOptions(this.options)
120
+ };
121
+ }
122
+ handlerMatching(url) {
123
+ return this.handlers.get(url.handlerName);
124
+ }
125
+ };
126
+ var VirtualObjectHandler = class {
127
+ constructor(handlerName, handlerWrapper, parent) {
128
+ this.handlerName = handlerName;
129
+ this.handlerWrapper = handlerWrapper;
130
+ this.parent = parent;
131
+ }
132
+ name() {
133
+ return this.handlerName;
134
+ }
135
+ component() {
136
+ return this.parent;
137
+ }
138
+ kind() {
139
+ return this.handlerWrapper.kind;
140
+ }
141
+ invoke(context, input) {
142
+ return this.handlerWrapper.invoke(context, input);
143
+ }
144
+ };
145
+ var WorkflowComponent = class {
146
+ handlers = /* @__PURE__ */ new Map();
147
+ constructor(componentName, description, metadata, options) {
148
+ this.componentName = componentName;
149
+ this.description = description;
150
+ this.metadata = metadata;
151
+ this.options = options;
152
+ }
153
+ name() {
154
+ return this.componentName;
155
+ }
156
+ add(name, wrapper) {
157
+ this.handlers.set(name, new WorkflowHandler(name, wrapper, this));
158
+ }
159
+ discovery() {
160
+ const handlers = [...this.handlers.entries()].map(([name, handler]) => {
161
+ return {
162
+ name,
163
+ ty: handler.kind() === require_rpc.HandlerKind.WORKFLOW ? "WORKFLOW" : "SHARED",
164
+ workflowCompletionRetention: handler.kind() === require_rpc.HandlerKind.WORKFLOW && this.options?.workflowRetention !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(this.options?.workflowRetention) : void 0,
165
+ ...commonHandlerOptions(handler.handlerWrapper, this.options?.serde ?? __restatedev_restate_sdk_core.serde.json)
166
+ };
167
+ });
168
+ return {
169
+ name: this.componentName,
170
+ ty: "WORKFLOW",
171
+ handlers,
172
+ documentation: this.description,
173
+ metadata: this.metadata,
174
+ ...commonServiceOptions(this.options)
175
+ };
176
+ }
177
+ handlerMatching(url) {
178
+ return this.handlers.get(url.handlerName);
179
+ }
180
+ };
181
+ var WorkflowHandler = class {
182
+ constructor(handlerName, handlerWrapper, parent) {
183
+ this.handlerName = handlerName;
184
+ this.handlerWrapper = handlerWrapper;
185
+ this.parent = parent;
186
+ }
187
+ name() {
188
+ return this.handlerName;
189
+ }
190
+ component() {
191
+ return this.parent;
192
+ }
193
+ kind() {
194
+ return this.handlerWrapper.kind;
195
+ }
196
+ invoke(context, input) {
197
+ return this.handlerWrapper.invoke(context, input);
198
+ }
199
+ };
200
+ function parseUrlComponents(urlPath) {
201
+ if (!urlPath) return {
202
+ type: "unknown",
203
+ path: ""
204
+ };
205
+ const fragments = urlPath.split("/");
206
+ if (fragments.length >= 3 && fragments[fragments.length - 3] === "invoke") return {
207
+ type: "invoke",
208
+ componentName: fragments[fragments.length - 2],
209
+ handlerName: fragments[fragments.length - 1]
210
+ };
211
+ if (fragments.length > 0 && fragments[fragments.length - 1] === "discover") return { type: "discover" };
212
+ if (fragments.length > 0 && fragments[fragments.length - 1] === "health") return { type: "health" };
213
+ return {
214
+ type: "unknown",
215
+ path: urlPath
216
+ };
217
+ }
218
+ function commonServiceOptions(options) {
219
+ return {
220
+ journalRetention: options?.journalRetention !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options.journalRetention) : void 0,
221
+ idempotencyRetention: options?.idempotencyRetention !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options.idempotencyRetention) : void 0,
222
+ inactivityTimeout: options?.inactivityTimeout !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options.inactivityTimeout) : void 0,
223
+ abortTimeout: options?.abortTimeout !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options.abortTimeout) : void 0,
224
+ ingressPrivate: options?.ingressPrivate,
225
+ enableLazyState: options !== void 0 && "enableLazyState" in options ? options.enableLazyState : void 0,
226
+ retryPolicyExponentiationFactor: options?.retryPolicy?.exponentiationFactor,
227
+ retryPolicyInitialInterval: options?.retryPolicy?.initialInterval !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options?.retryPolicy?.initialInterval) : void 0,
228
+ retryPolicyMaxInterval: options?.retryPolicy?.maxInterval !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(options?.retryPolicy?.maxInterval) : void 0,
229
+ retryPolicyMaxAttempts: options?.retryPolicy?.maxAttempts,
230
+ retryPolicyOnMaxAttempts: options?.retryPolicy?.onMaxAttempts === "kill" ? "KILL" : options?.retryPolicy?.onMaxAttempts === "pause" ? "PAUSE" : void 0
231
+ };
232
+ }
233
+ function commonHandlerOptions(wrapper, defaultSerde) {
234
+ return {
235
+ input: handlerInputDiscovery(wrapper, defaultSerde),
236
+ output: handlerOutputDiscovery(wrapper, defaultSerde),
237
+ journalRetention: wrapper.journalRetention !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.journalRetention) : void 0,
238
+ idempotencyRetention: wrapper.idempotencyRetention !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.idempotencyRetention) : void 0,
239
+ inactivityTimeout: wrapper.inactivityTimeout !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.inactivityTimeout) : void 0,
240
+ abortTimeout: wrapper.abortTimeout !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.abortTimeout) : void 0,
241
+ ingressPrivate: wrapper.ingressPrivate,
242
+ enableLazyState: wrapper.enableLazyState,
243
+ retryPolicyExponentiationFactor: wrapper.retryPolicy?.exponentiationFactor,
244
+ retryPolicyInitialInterval: wrapper.retryPolicy?.initialInterval !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.retryPolicy?.initialInterval) : void 0,
245
+ retryPolicyMaxInterval: wrapper.retryPolicy?.maxInterval !== void 0 ? (0, __restatedev_restate_sdk_core.millisOrDurationToMillis)(wrapper.retryPolicy?.maxInterval) : void 0,
246
+ retryPolicyMaxAttempts: wrapper.retryPolicy?.maxAttempts,
247
+ retryPolicyOnMaxAttempts: wrapper.retryPolicy?.onMaxAttempts === "kill" ? "KILL" : wrapper.retryPolicy?.onMaxAttempts === "pause" ? "PAUSE" : void 0,
248
+ documentation: wrapper.description,
249
+ metadata: wrapper.metadata
250
+ };
251
+ }
252
+
253
+ //#endregion
254
+ exports.ServiceComponent = ServiceComponent;
255
+ exports.VirtualObjectComponent = VirtualObjectComponent;
256
+ exports.WorkflowComponent = WorkflowComponent;
257
+ exports.parseUrlComponents = parseUrlComponents;
@@ -0,0 +1,253 @@
1
+ import { HandlerKind } from "../types/rpc.js";
2
+ import { millisOrDurationToMillis, serde } from "@restatedev/restate-sdk-core";
3
+
4
+ //#region src/endpoint/components.ts
5
+ function handlerInputDiscovery(handler, defaultSerde) {
6
+ const serde$1 = handler.inputSerde ?? defaultSerde;
7
+ let contentType = void 0;
8
+ let jsonSchema = void 0;
9
+ if (serde$1.jsonSchema) {
10
+ jsonSchema = serde$1.jsonSchema;
11
+ contentType = handler.accept ?? serde$1.contentType;
12
+ } else if (handler.accept) contentType = handler.accept;
13
+ else if (serde$1.contentType) contentType = serde$1.contentType;
14
+ else return {};
15
+ return {
16
+ required: false,
17
+ contentType,
18
+ jsonSchema
19
+ };
20
+ }
21
+ function handlerOutputDiscovery(handler, defaultSerde) {
22
+ const serde$1 = handler.outputSerde ?? defaultSerde;
23
+ let contentType = void 0;
24
+ let jsonSchema = void 0;
25
+ if (serde$1.jsonSchema) {
26
+ jsonSchema = serde$1.jsonSchema;
27
+ contentType = serde$1.contentType ?? "application/json";
28
+ } else if (serde$1.contentType) contentType = serde$1.contentType;
29
+ else return { setContentTypeIfEmpty: false };
30
+ return {
31
+ setContentTypeIfEmpty: false,
32
+ jsonSchema,
33
+ contentType
34
+ };
35
+ }
36
+ var ServiceComponent = class {
37
+ handlers = /* @__PURE__ */ new Map();
38
+ constructor(componentName, description, metadata, options) {
39
+ this.componentName = componentName;
40
+ this.description = description;
41
+ this.metadata = metadata;
42
+ this.options = options;
43
+ }
44
+ name() {
45
+ return this.componentName;
46
+ }
47
+ add(name, handlerWrapper) {
48
+ this.handlers.set(name, new ServiceHandler$1(name, handlerWrapper, this));
49
+ }
50
+ discovery() {
51
+ const handlers = [...this.handlers.entries()].map(([name, handler]) => {
52
+ return {
53
+ name,
54
+ ...commonHandlerOptions(handler.handlerWrapper, this.options?.serde ?? serde.json)
55
+ };
56
+ });
57
+ return {
58
+ name: this.componentName,
59
+ ty: "SERVICE",
60
+ handlers,
61
+ documentation: this.description,
62
+ metadata: this.metadata,
63
+ ...commonServiceOptions(this.options)
64
+ };
65
+ }
66
+ handlerMatching(url) {
67
+ return this.handlers.get(url.handlerName);
68
+ }
69
+ };
70
+ var ServiceHandler$1 = class {
71
+ constructor(handlerName, handlerWrapper, parent) {
72
+ this.handlerName = handlerName;
73
+ this.handlerWrapper = handlerWrapper;
74
+ this.parent = parent;
75
+ }
76
+ name() {
77
+ return this.handlerName;
78
+ }
79
+ component() {
80
+ return this.parent;
81
+ }
82
+ kind() {
83
+ return this.handlerWrapper.kind;
84
+ }
85
+ invoke(context, input) {
86
+ return this.handlerWrapper.invoke(context, input);
87
+ }
88
+ };
89
+ var VirtualObjectComponent = class {
90
+ handlers = /* @__PURE__ */ new Map();
91
+ constructor(componentName, description, metadata, options) {
92
+ this.componentName = componentName;
93
+ this.description = description;
94
+ this.metadata = metadata;
95
+ this.options = options;
96
+ }
97
+ name() {
98
+ return this.componentName;
99
+ }
100
+ add(name, wrapper) {
101
+ this.handlers.set(name, new VirtualObjectHandler(name, wrapper, this));
102
+ }
103
+ discovery() {
104
+ const handlers = [...this.handlers.entries()].map(([name, handler]) => {
105
+ return {
106
+ name,
107
+ ty: handler.kind() === HandlerKind.EXCLUSIVE ? "EXCLUSIVE" : "SHARED",
108
+ ...commonHandlerOptions(handler.handlerWrapper, this.options?.serde ?? serde.json)
109
+ };
110
+ });
111
+ return {
112
+ name: this.componentName,
113
+ ty: "VIRTUAL_OBJECT",
114
+ handlers,
115
+ documentation: this.description,
116
+ metadata: this.metadata,
117
+ ...commonServiceOptions(this.options)
118
+ };
119
+ }
120
+ handlerMatching(url) {
121
+ return this.handlers.get(url.handlerName);
122
+ }
123
+ };
124
+ var VirtualObjectHandler = class {
125
+ constructor(handlerName, handlerWrapper, parent) {
126
+ this.handlerName = handlerName;
127
+ this.handlerWrapper = handlerWrapper;
128
+ this.parent = parent;
129
+ }
130
+ name() {
131
+ return this.handlerName;
132
+ }
133
+ component() {
134
+ return this.parent;
135
+ }
136
+ kind() {
137
+ return this.handlerWrapper.kind;
138
+ }
139
+ invoke(context, input) {
140
+ return this.handlerWrapper.invoke(context, input);
141
+ }
142
+ };
143
+ var WorkflowComponent = class {
144
+ handlers = /* @__PURE__ */ new Map();
145
+ constructor(componentName, description, metadata, options) {
146
+ this.componentName = componentName;
147
+ this.description = description;
148
+ this.metadata = metadata;
149
+ this.options = options;
150
+ }
151
+ name() {
152
+ return this.componentName;
153
+ }
154
+ add(name, wrapper) {
155
+ this.handlers.set(name, new WorkflowHandler$1(name, wrapper, this));
156
+ }
157
+ discovery() {
158
+ const handlers = [...this.handlers.entries()].map(([name, handler]) => {
159
+ return {
160
+ name,
161
+ ty: handler.kind() === HandlerKind.WORKFLOW ? "WORKFLOW" : "SHARED",
162
+ workflowCompletionRetention: handler.kind() === HandlerKind.WORKFLOW && this.options?.workflowRetention !== void 0 ? millisOrDurationToMillis(this.options?.workflowRetention) : void 0,
163
+ ...commonHandlerOptions(handler.handlerWrapper, this.options?.serde ?? serde.json)
164
+ };
165
+ });
166
+ return {
167
+ name: this.componentName,
168
+ ty: "WORKFLOW",
169
+ handlers,
170
+ documentation: this.description,
171
+ metadata: this.metadata,
172
+ ...commonServiceOptions(this.options)
173
+ };
174
+ }
175
+ handlerMatching(url) {
176
+ return this.handlers.get(url.handlerName);
177
+ }
178
+ };
179
+ var WorkflowHandler$1 = class {
180
+ constructor(handlerName, handlerWrapper, parent) {
181
+ this.handlerName = handlerName;
182
+ this.handlerWrapper = handlerWrapper;
183
+ this.parent = parent;
184
+ }
185
+ name() {
186
+ return this.handlerName;
187
+ }
188
+ component() {
189
+ return this.parent;
190
+ }
191
+ kind() {
192
+ return this.handlerWrapper.kind;
193
+ }
194
+ invoke(context, input) {
195
+ return this.handlerWrapper.invoke(context, input);
196
+ }
197
+ };
198
+ function parseUrlComponents(urlPath) {
199
+ if (!urlPath) return {
200
+ type: "unknown",
201
+ path: ""
202
+ };
203
+ const fragments = urlPath.split("/");
204
+ if (fragments.length >= 3 && fragments[fragments.length - 3] === "invoke") return {
205
+ type: "invoke",
206
+ componentName: fragments[fragments.length - 2],
207
+ handlerName: fragments[fragments.length - 1]
208
+ };
209
+ if (fragments.length > 0 && fragments[fragments.length - 1] === "discover") return { type: "discover" };
210
+ if (fragments.length > 0 && fragments[fragments.length - 1] === "health") return { type: "health" };
211
+ return {
212
+ type: "unknown",
213
+ path: urlPath
214
+ };
215
+ }
216
+ function commonServiceOptions(options) {
217
+ return {
218
+ journalRetention: options?.journalRetention !== void 0 ? millisOrDurationToMillis(options.journalRetention) : void 0,
219
+ idempotencyRetention: options?.idempotencyRetention !== void 0 ? millisOrDurationToMillis(options.idempotencyRetention) : void 0,
220
+ inactivityTimeout: options?.inactivityTimeout !== void 0 ? millisOrDurationToMillis(options.inactivityTimeout) : void 0,
221
+ abortTimeout: options?.abortTimeout !== void 0 ? millisOrDurationToMillis(options.abortTimeout) : void 0,
222
+ ingressPrivate: options?.ingressPrivate,
223
+ enableLazyState: options !== void 0 && "enableLazyState" in options ? options.enableLazyState : void 0,
224
+ retryPolicyExponentiationFactor: options?.retryPolicy?.exponentiationFactor,
225
+ retryPolicyInitialInterval: options?.retryPolicy?.initialInterval !== void 0 ? millisOrDurationToMillis(options?.retryPolicy?.initialInterval) : void 0,
226
+ retryPolicyMaxInterval: options?.retryPolicy?.maxInterval !== void 0 ? millisOrDurationToMillis(options?.retryPolicy?.maxInterval) : void 0,
227
+ retryPolicyMaxAttempts: options?.retryPolicy?.maxAttempts,
228
+ retryPolicyOnMaxAttempts: options?.retryPolicy?.onMaxAttempts === "kill" ? "KILL" : options?.retryPolicy?.onMaxAttempts === "pause" ? "PAUSE" : void 0
229
+ };
230
+ }
231
+ function commonHandlerOptions(wrapper, defaultSerde) {
232
+ return {
233
+ input: handlerInputDiscovery(wrapper, defaultSerde),
234
+ output: handlerOutputDiscovery(wrapper, defaultSerde),
235
+ journalRetention: wrapper.journalRetention !== void 0 ? millisOrDurationToMillis(wrapper.journalRetention) : void 0,
236
+ idempotencyRetention: wrapper.idempotencyRetention !== void 0 ? millisOrDurationToMillis(wrapper.idempotencyRetention) : void 0,
237
+ inactivityTimeout: wrapper.inactivityTimeout !== void 0 ? millisOrDurationToMillis(wrapper.inactivityTimeout) : void 0,
238
+ abortTimeout: wrapper.abortTimeout !== void 0 ? millisOrDurationToMillis(wrapper.abortTimeout) : void 0,
239
+ ingressPrivate: wrapper.ingressPrivate,
240
+ enableLazyState: wrapper.enableLazyState,
241
+ retryPolicyExponentiationFactor: wrapper.retryPolicy?.exponentiationFactor,
242
+ retryPolicyInitialInterval: wrapper.retryPolicy?.initialInterval !== void 0 ? millisOrDurationToMillis(wrapper.retryPolicy?.initialInterval) : void 0,
243
+ retryPolicyMaxInterval: wrapper.retryPolicy?.maxInterval !== void 0 ? millisOrDurationToMillis(wrapper.retryPolicy?.maxInterval) : void 0,
244
+ retryPolicyMaxAttempts: wrapper.retryPolicy?.maxAttempts,
245
+ retryPolicyOnMaxAttempts: wrapper.retryPolicy?.onMaxAttempts === "kill" ? "KILL" : wrapper.retryPolicy?.onMaxAttempts === "pause" ? "PAUSE" : void 0,
246
+ documentation: wrapper.description,
247
+ metadata: wrapper.metadata
248
+ };
249
+ }
250
+
251
+ //#endregion
252
+ export { ServiceComponent, VirtualObjectComponent, WorkflowComponent, parseUrlComponents };
253
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","names":["serde","componentName: string","description?: string","metadata?: Record<string, string>","options?: ServiceOptions","ServiceHandler","handlers: d.Handler[]","handlerName: string","handlerWrapper: HandlerWrapper","parent: ServiceComponent","options?: ObjectOptions","parent: VirtualObjectComponent","options?: WorkflowOptions","WorkflowHandler","parent: WorkflowComponent"],"sources":["../../src/endpoint/components.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 * as d from \"./discovery.js\";\nimport type { ContextImpl } from \"../context_impl.js\";\nimport type {\n HandlerWrapper,\n ObjectOptions,\n ServiceOptions,\n WorkflowOptions,\n} from \"../types/rpc.js\";\nimport { HandlerKind } from \"../types/rpc.js\";\nimport type { Serde } from \"@restatedev/restate-sdk-core\";\nimport { millisOrDurationToMillis, serde } from \"@restatedev/restate-sdk-core\";\n\n//\n// Interfaces\n//\nexport interface Component {\n name(): string;\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined;\n discovery(): d.Service;\n options?: ServiceOptions | ObjectOptions | WorkflowOptions;\n}\n\nexport interface ComponentHandler {\n name(): string;\n component(): Component;\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array>;\n kind(): HandlerKind;\n}\n\n//\n// Service\n//\n\nfunction handlerInputDiscovery(\n handler: HandlerWrapper,\n defaultSerde: Serde<any>\n): d.InputPayload {\n const serde = handler.inputSerde ?? defaultSerde;\n\n let contentType = undefined;\n let jsonSchema = undefined;\n\n if (serde.jsonSchema) {\n jsonSchema = serde.jsonSchema;\n contentType = handler.accept ?? serde.contentType;\n } else if (handler.accept) {\n contentType = handler.accept;\n } else if (serde.contentType) {\n contentType = serde.contentType;\n } else {\n // no input information\n return {};\n }\n\n return {\n required: false,\n contentType,\n jsonSchema,\n };\n}\n\nfunction handlerOutputDiscovery(\n handler: HandlerWrapper,\n defaultSerde: Serde<any>\n): d.OutputPayload {\n const serde = handler.outputSerde ?? defaultSerde;\n\n let contentType = undefined;\n let jsonSchema = undefined;\n\n if (serde.jsonSchema) {\n jsonSchema = serde.jsonSchema;\n contentType = serde.contentType ?? \"application/json\";\n } else if (serde.contentType) {\n contentType = serde.contentType;\n } else {\n // no input information\n return { setContentTypeIfEmpty: false };\n }\n\n return {\n setContentTypeIfEmpty: false,\n jsonSchema,\n contentType,\n };\n}\n\nexport class ServiceComponent implements Component {\n private readonly handlers: Map<string, ServiceHandler> = new Map();\n\n constructor(\n private readonly componentName: string,\n public readonly description?: string,\n public readonly metadata?: Record<string, string>,\n public readonly options?: ServiceOptions\n ) {}\n\n name(): string {\n return this.componentName;\n }\n\n add(name: string, handlerWrapper: HandlerWrapper) {\n this.handlers.set(name, new ServiceHandler(name, handlerWrapper, this));\n }\n\n discovery(): d.Service {\n const handlers: d.Handler[] = [...this.handlers.entries()].map(\n ([name, handler]) => {\n return {\n name,\n ...commonHandlerOptions(\n handler.handlerWrapper,\n this.options?.serde ?? serde.json\n ),\n } satisfies d.Handler;\n }\n );\n\n return {\n name: this.componentName,\n ty: \"SERVICE\",\n handlers,\n documentation: this.description,\n metadata: this.metadata,\n ...commonServiceOptions(this.options),\n } satisfies d.Service;\n }\n\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined {\n return this.handlers.get(url.handlerName);\n }\n}\n\nexport class ServiceHandler implements ComponentHandler {\n constructor(\n private readonly handlerName: string,\n public readonly handlerWrapper: HandlerWrapper,\n private readonly parent: ServiceComponent\n ) {}\n\n name(): string {\n return this.handlerName;\n }\n\n component(): Component {\n return this.parent;\n }\n\n kind(): HandlerKind {\n return this.handlerWrapper.kind;\n }\n\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array> {\n return this.handlerWrapper.invoke(context, input);\n }\n}\n\n//\n// Virtual Object\n//\n\nexport class VirtualObjectComponent implements Component {\n private readonly handlers: Map<string, VirtualObjectHandler> = new Map();\n\n constructor(\n public readonly componentName: string,\n public readonly description?: string,\n public readonly metadata?: Record<string, string>,\n public readonly options?: ObjectOptions\n ) {}\n\n name(): string {\n return this.componentName;\n }\n\n add(name: string, wrapper: HandlerWrapper) {\n this.handlers.set(name, new VirtualObjectHandler(name, wrapper, this));\n }\n\n discovery(): d.Service {\n const handlers: d.Handler[] = [...this.handlers.entries()].map(\n ([name, handler]) => {\n return {\n name,\n ty: handler.kind() === HandlerKind.EXCLUSIVE ? \"EXCLUSIVE\" : \"SHARED\",\n ...commonHandlerOptions(\n handler.handlerWrapper,\n this.options?.serde ?? serde.json\n ),\n } satisfies d.Handler;\n }\n );\n\n return {\n name: this.componentName,\n ty: \"VIRTUAL_OBJECT\",\n handlers,\n documentation: this.description,\n metadata: this.metadata,\n ...commonServiceOptions(this.options),\n } satisfies d.Service;\n }\n\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined {\n return this.handlers.get(url.handlerName);\n }\n}\n\nexport class VirtualObjectHandler implements ComponentHandler {\n constructor(\n private readonly handlerName: string,\n public readonly handlerWrapper: HandlerWrapper,\n private readonly parent: VirtualObjectComponent\n ) {}\n\n name(): string {\n return this.handlerName;\n }\n\n component(): Component {\n return this.parent;\n }\n\n kind(): HandlerKind {\n return this.handlerWrapper.kind;\n }\n\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array> {\n return this.handlerWrapper.invoke(context, input);\n }\n}\n\n// Workflow\n\nexport class WorkflowComponent implements Component {\n private readonly handlers: Map<string, WorkflowHandler> = new Map();\n\n constructor(\n public readonly componentName: string,\n public readonly description?: string,\n public readonly metadata?: Record<string, string>,\n public readonly options?: WorkflowOptions\n ) {}\n\n name(): string {\n return this.componentName;\n }\n\n add(name: string, wrapper: HandlerWrapper) {\n this.handlers.set(name, new WorkflowHandler(name, wrapper, this));\n }\n\n discovery(): d.Service {\n const handlers: d.Handler[] = [...this.handlers.entries()].map(\n ([name, handler]) => {\n return {\n name,\n ty: handler.kind() === HandlerKind.WORKFLOW ? \"WORKFLOW\" : \"SHARED\",\n workflowCompletionRetention:\n handler.kind() === HandlerKind.WORKFLOW &&\n this.options?.workflowRetention !== undefined\n ? millisOrDurationToMillis(this.options?.workflowRetention)\n : undefined,\n ...commonHandlerOptions(\n handler.handlerWrapper,\n this.options?.serde ?? serde.json\n ),\n } satisfies d.Handler;\n }\n );\n\n return {\n name: this.componentName,\n ty: \"WORKFLOW\",\n handlers,\n documentation: this.description,\n metadata: this.metadata,\n ...commonServiceOptions(this.options),\n } satisfies d.Service;\n }\n\n handlerMatching(url: InvokePathComponents): ComponentHandler | undefined {\n return this.handlers.get(url.handlerName);\n }\n}\n\nexport class WorkflowHandler implements ComponentHandler {\n constructor(\n private readonly handlerName: string,\n public readonly handlerWrapper: HandlerWrapper,\n private readonly parent: WorkflowComponent\n ) {}\n\n name(): string {\n return this.handlerName;\n }\n component(): Component {\n return this.parent;\n }\n\n kind(): HandlerKind {\n return this.handlerWrapper.kind;\n }\n\n invoke(context: ContextImpl, input: Uint8Array): Promise<Uint8Array> {\n return this.handlerWrapper.invoke(context, input);\n }\n}\n\nexport type PathComponents =\n | InvokePathComponents\n | { type: \"discover\" }\n | { type: \"health\" }\n | { type: \"unknown\"; path: string };\n\nexport type InvokePathComponents = {\n type: \"invoke\";\n componentName: string;\n handlerName: string;\n};\n\nexport function parseUrlComponents(urlPath?: string): PathComponents {\n if (!urlPath) {\n return { type: \"unknown\", path: \"\" };\n }\n const fragments = urlPath.split(\"/\");\n if (fragments.length >= 3 && fragments[fragments.length - 3] === \"invoke\") {\n return {\n type: \"invoke\",\n componentName: fragments[fragments.length - 2]!,\n handlerName: fragments[fragments.length - 1]!,\n };\n }\n if (fragments.length > 0 && fragments[fragments.length - 1] === \"discover\") {\n return { type: \"discover\" };\n }\n if (fragments.length > 0 && fragments[fragments.length - 1] === \"health\") {\n return { type: \"health\" };\n }\n return { type: \"unknown\", path: urlPath };\n}\n\nfunction commonServiceOptions(\n options?: ServiceOptions | ObjectOptions | WorkflowOptions\n): Partial<d.Service> {\n return {\n journalRetention:\n options?.journalRetention !== undefined\n ? millisOrDurationToMillis(options.journalRetention)\n : undefined,\n idempotencyRetention:\n options?.idempotencyRetention !== undefined\n ? millisOrDurationToMillis(options.idempotencyRetention)\n : undefined,\n inactivityTimeout:\n options?.inactivityTimeout !== undefined\n ? millisOrDurationToMillis(options.inactivityTimeout)\n : undefined,\n abortTimeout:\n options?.abortTimeout !== undefined\n ? millisOrDurationToMillis(options.abortTimeout)\n : undefined,\n ingressPrivate: options?.ingressPrivate,\n enableLazyState:\n options !== undefined && \"enableLazyState\" in options\n ? options.enableLazyState\n : undefined,\n retryPolicyExponentiationFactor: options?.retryPolicy?.exponentiationFactor,\n retryPolicyInitialInterval:\n options?.retryPolicy?.initialInterval !== undefined\n ? millisOrDurationToMillis(options?.retryPolicy?.initialInterval)\n : undefined,\n retryPolicyMaxInterval:\n options?.retryPolicy?.maxInterval !== undefined\n ? millisOrDurationToMillis(options?.retryPolicy?.maxInterval)\n : undefined,\n retryPolicyMaxAttempts: options?.retryPolicy?.maxAttempts,\n retryPolicyOnMaxAttempts: (options?.retryPolicy?.onMaxAttempts === \"kill\"\n ? \"KILL\"\n : options?.retryPolicy?.onMaxAttempts === \"pause\"\n ? \"PAUSE\"\n : undefined) as d.RetryPolicyOnMaxAttempts,\n };\n}\n\nfunction commonHandlerOptions(\n wrapper: HandlerWrapper,\n defaultSerde: Serde<any>\n) {\n return {\n input: handlerInputDiscovery(wrapper, defaultSerde),\n output: handlerOutputDiscovery(wrapper, defaultSerde),\n journalRetention:\n wrapper.journalRetention !== undefined\n ? millisOrDurationToMillis(wrapper.journalRetention)\n : undefined,\n idempotencyRetention:\n wrapper.idempotencyRetention !== undefined\n ? millisOrDurationToMillis(wrapper.idempotencyRetention)\n : undefined,\n inactivityTimeout:\n wrapper.inactivityTimeout !== undefined\n ? millisOrDurationToMillis(wrapper.inactivityTimeout)\n : undefined,\n abortTimeout:\n wrapper.abortTimeout !== undefined\n ? millisOrDurationToMillis(wrapper.abortTimeout)\n : undefined,\n ingressPrivate: wrapper.ingressPrivate,\n enableLazyState: wrapper.enableLazyState,\n retryPolicyExponentiationFactor: wrapper.retryPolicy?.exponentiationFactor,\n retryPolicyInitialInterval:\n wrapper.retryPolicy?.initialInterval !== undefined\n ? millisOrDurationToMillis(wrapper.retryPolicy?.initialInterval)\n : undefined,\n retryPolicyMaxInterval:\n wrapper.retryPolicy?.maxInterval !== undefined\n ? millisOrDurationToMillis(wrapper.retryPolicy?.maxInterval)\n : undefined,\n retryPolicyMaxAttempts: wrapper.retryPolicy?.maxAttempts,\n retryPolicyOnMaxAttempts: (wrapper.retryPolicy?.onMaxAttempts === \"kill\"\n ? \"KILL\"\n : wrapper.retryPolicy?.onMaxAttempts === \"pause\"\n ? \"PAUSE\"\n : undefined) as d.RetryPolicyOnMaxAttempts1,\n\n documentation: wrapper.description,\n metadata: wrapper.metadata,\n };\n}\n"],"mappings":";;;;AA8CA,SAAS,sBACP,SACA,cACgB;CAChB,MAAMA,UAAQ,QAAQ,cAAc;CAEpC,IAAI,cAAc;CAClB,IAAI,aAAa;AAEjB,KAAIA,QAAM,YAAY;AACpB,eAAaA,QAAM;AACnB,gBAAc,QAAQ,UAAUA,QAAM;YAC7B,QAAQ,OACjB,eAAc,QAAQ;UACbA,QAAM,YACf,eAAcA,QAAM;KAGpB,QAAO,EAAE;AAGX,QAAO;EACL,UAAU;EACV;EACA;EACD;;AAGH,SAAS,uBACP,SACA,cACiB;CACjB,MAAMA,UAAQ,QAAQ,eAAe;CAErC,IAAI,cAAc;CAClB,IAAI,aAAa;AAEjB,KAAIA,QAAM,YAAY;AACpB,eAAaA,QAAM;AACnB,gBAAcA,QAAM,eAAe;YAC1BA,QAAM,YACf,eAAcA,QAAM;KAGpB,QAAO,EAAE,uBAAuB,OAAO;AAGzC,QAAO;EACL,uBAAuB;EACvB;EACA;EACD;;AAGH,IAAa,mBAAb,MAAmD;CACjD,AAAiB,2BAAwC,IAAI,KAAK;CAElE,YACE,AAAiBC,eACjB,AAAgBC,aAChB,AAAgBC,UAChB,AAAgBC,SAChB;EAJiB;EACD;EACA;EACA;;CAGlB,OAAe;AACb,SAAO,KAAK;;CAGd,IAAI,MAAc,gBAAgC;AAChD,OAAK,SAAS,IAAI,MAAM,IAAIC,iBAAe,MAAM,gBAAgB,KAAK,CAAC;;CAGzE,YAAuB;EACrB,MAAMC,WAAwB,CAAC,GAAG,KAAK,SAAS,SAAS,CAAC,CAAC,KACxD,CAAC,MAAM,aAAa;AACnB,UAAO;IACL;IACA,GAAG,qBACD,QAAQ,gBACR,KAAK,SAAS,SAAS,MAAM,KAC9B;IACF;IAEJ;AAED,SAAO;GACL,MAAM,KAAK;GACX,IAAI;GACJ;GACA,eAAe,KAAK;GACpB,UAAU,KAAK;GACf,GAAG,qBAAqB,KAAK,QAAQ;GACtC;;CAGH,gBAAgB,KAAyD;AACvE,SAAO,KAAK,SAAS,IAAI,IAAI,YAAY;;;AAI7C,IAAaD,mBAAb,MAAwD;CACtD,YACE,AAAiBE,aACjB,AAAgBC,gBAChB,AAAiBC,QACjB;EAHiB;EACD;EACC;;CAGnB,OAAe;AACb,SAAO,KAAK;;CAGd,YAAuB;AACrB,SAAO,KAAK;;CAGd,OAAoB;AAClB,SAAO,KAAK,eAAe;;CAG7B,OAAO,SAAsB,OAAwC;AACnE,SAAO,KAAK,eAAe,OAAO,SAAS,MAAM;;;AAQrD,IAAa,yBAAb,MAAyD;CACvD,AAAiB,2BAA8C,IAAI,KAAK;CAExE,YACE,AAAgBR,eAChB,AAAgBC,aAChB,AAAgBC,UAChB,AAAgBO,SAChB;EAJgB;EACA;EACA;EACA;;CAGlB,OAAe;AACb,SAAO,KAAK;;CAGd,IAAI,MAAc,SAAyB;AACzC,OAAK,SAAS,IAAI,MAAM,IAAI,qBAAqB,MAAM,SAAS,KAAK,CAAC;;CAGxE,YAAuB;EACrB,MAAMJ,WAAwB,CAAC,GAAG,KAAK,SAAS,SAAS,CAAC,CAAC,KACxD,CAAC,MAAM,aAAa;AACnB,UAAO;IACL;IACA,IAAI,QAAQ,MAAM,KAAK,YAAY,YAAY,cAAc;IAC7D,GAAG,qBACD,QAAQ,gBACR,KAAK,SAAS,SAAS,MAAM,KAC9B;IACF;IAEJ;AAED,SAAO;GACL,MAAM,KAAK;GACX,IAAI;GACJ;GACA,eAAe,KAAK;GACpB,UAAU,KAAK;GACf,GAAG,qBAAqB,KAAK,QAAQ;GACtC;;CAGH,gBAAgB,KAAyD;AACvE,SAAO,KAAK,SAAS,IAAI,IAAI,YAAY;;;AAI7C,IAAa,uBAAb,MAA8D;CAC5D,YACE,AAAiBC,aACjB,AAAgBC,gBAChB,AAAiBG,QACjB;EAHiB;EACD;EACC;;CAGnB,OAAe;AACb,SAAO,KAAK;;CAGd,YAAuB;AACrB,SAAO,KAAK;;CAGd,OAAoB;AAClB,SAAO,KAAK,eAAe;;CAG7B,OAAO,SAAsB,OAAwC;AACnE,SAAO,KAAK,eAAe,OAAO,SAAS,MAAM;;;AAMrD,IAAa,oBAAb,MAAoD;CAClD,AAAiB,2BAAyC,IAAI,KAAK;CAEnE,YACE,AAAgBV,eAChB,AAAgBC,aAChB,AAAgBC,UAChB,AAAgBS,SAChB;EAJgB;EACA;EACA;EACA;;CAGlB,OAAe;AACb,SAAO,KAAK;;CAGd,IAAI,MAAc,SAAyB;AACzC,OAAK,SAAS,IAAI,MAAM,IAAIC,kBAAgB,MAAM,SAAS,KAAK,CAAC;;CAGnE,YAAuB;EACrB,MAAMP,WAAwB,CAAC,GAAG,KAAK,SAAS,SAAS,CAAC,CAAC,KACxD,CAAC,MAAM,aAAa;AACnB,UAAO;IACL;IACA,IAAI,QAAQ,MAAM,KAAK,YAAY,WAAW,aAAa;IAC3D,6BACE,QAAQ,MAAM,KAAK,YAAY,YAC/B,KAAK,SAAS,sBAAsB,SAChC,yBAAyB,KAAK,SAAS,kBAAkB,GACzD;IACN,GAAG,qBACD,QAAQ,gBACR,KAAK,SAAS,SAAS,MAAM,KAC9B;IACF;IAEJ;AAED,SAAO;GACL,MAAM,KAAK;GACX,IAAI;GACJ;GACA,eAAe,KAAK;GACpB,UAAU,KAAK;GACf,GAAG,qBAAqB,KAAK,QAAQ;GACtC;;CAGH,gBAAgB,KAAyD;AACvE,SAAO,KAAK,SAAS,IAAI,IAAI,YAAY;;;AAI7C,IAAaO,oBAAb,MAAyD;CACvD,YACE,AAAiBN,aACjB,AAAgBC,gBAChB,AAAiBM,QACjB;EAHiB;EACD;EACC;;CAGnB,OAAe;AACb,SAAO,KAAK;;CAEd,YAAuB;AACrB,SAAO,KAAK;;CAGd,OAAoB;AAClB,SAAO,KAAK,eAAe;;CAG7B,OAAO,SAAsB,OAAwC;AACnE,SAAO,KAAK,eAAe,OAAO,SAAS,MAAM;;;AAgBrD,SAAgB,mBAAmB,SAAkC;AACnE,KAAI,CAAC,QACH,QAAO;EAAE,MAAM;EAAW,MAAM;EAAI;CAEtC,MAAM,YAAY,QAAQ,MAAM,IAAI;AACpC,KAAI,UAAU,UAAU,KAAK,UAAU,UAAU,SAAS,OAAO,SAC/D,QAAO;EACL,MAAM;EACN,eAAe,UAAU,UAAU,SAAS;EAC5C,aAAa,UAAU,UAAU,SAAS;EAC3C;AAEH,KAAI,UAAU,SAAS,KAAK,UAAU,UAAU,SAAS,OAAO,WAC9D,QAAO,EAAE,MAAM,YAAY;AAE7B,KAAI,UAAU,SAAS,KAAK,UAAU,UAAU,SAAS,OAAO,SAC9D,QAAO,EAAE,MAAM,UAAU;AAE3B,QAAO;EAAE,MAAM;EAAW,MAAM;EAAS;;AAG3C,SAAS,qBACP,SACoB;AACpB,QAAO;EACL,kBACE,SAAS,qBAAqB,SAC1B,yBAAyB,QAAQ,iBAAiB,GAClD;EACN,sBACE,SAAS,yBAAyB,SAC9B,yBAAyB,QAAQ,qBAAqB,GACtD;EACN,mBACE,SAAS,sBAAsB,SAC3B,yBAAyB,QAAQ,kBAAkB,GACnD;EACN,cACE,SAAS,iBAAiB,SACtB,yBAAyB,QAAQ,aAAa,GAC9C;EACN,gBAAgB,SAAS;EACzB,iBACE,YAAY,UAAa,qBAAqB,UAC1C,QAAQ,kBACR;EACN,iCAAiC,SAAS,aAAa;EACvD,4BACE,SAAS,aAAa,oBAAoB,SACtC,yBAAyB,SAAS,aAAa,gBAAgB,GAC/D;EACN,wBACE,SAAS,aAAa,gBAAgB,SAClC,yBAAyB,SAAS,aAAa,YAAY,GAC3D;EACN,wBAAwB,SAAS,aAAa;EAC9C,0BAA2B,SAAS,aAAa,kBAAkB,SAC/D,SACA,SAAS,aAAa,kBAAkB,UACtC,UACA;EACP;;AAGH,SAAS,qBACP,SACA,cACA;AACA,QAAO;EACL,OAAO,sBAAsB,SAAS,aAAa;EACnD,QAAQ,uBAAuB,SAAS,aAAa;EACrD,kBACE,QAAQ,qBAAqB,SACzB,yBAAyB,QAAQ,iBAAiB,GAClD;EACN,sBACE,QAAQ,yBAAyB,SAC7B,yBAAyB,QAAQ,qBAAqB,GACtD;EACN,mBACE,QAAQ,sBAAsB,SAC1B,yBAAyB,QAAQ,kBAAkB,GACnD;EACN,cACE,QAAQ,iBAAiB,SACrB,yBAAyB,QAAQ,aAAa,GAC9C;EACN,gBAAgB,QAAQ;EACxB,iBAAiB,QAAQ;EACzB,iCAAiC,QAAQ,aAAa;EACtD,4BACE,QAAQ,aAAa,oBAAoB,SACrC,yBAAyB,QAAQ,aAAa,gBAAgB,GAC9D;EACN,wBACE,QAAQ,aAAa,gBAAgB,SACjC,yBAAyB,QAAQ,aAAa,YAAY,GAC1D;EACN,wBAAwB,QAAQ,aAAa;EAC7C,0BAA2B,QAAQ,aAAa,kBAAkB,SAC9D,SACA,QAAQ,aAAa,kBAAkB,UACrC,UACA;EAEN,eAAe,QAAQ;EACvB,UAAU,QAAQ;EACnB"}
@@ -0,0 +1,117 @@
1
+ const require_rpc = require('../types/rpc.cjs');
2
+ const require_components = require('./components.cjs');
3
+ const require_logger_transport = require('../logging/logger_transport.cjs');
4
+ const require_logger = require('../logging/logger.cjs');
5
+ const require_console_logger_transport = require('../logging/console_logger_transport.cjs');
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 = require_console_logger_transport.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 = require_logger.createLogger(this.loggerTransport, require_logger_transport.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 require_components.ServiceComponent(name, definition.description, definition.metadata, {
76
+ ...defaultServiceOptions,
77
+ ...definition?.options
78
+ });
79
+ for (const [route, handler] of Object.entries(router)) {
80
+ const wrapper = require_rpc.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 require_components.VirtualObjectComponent(name, definition.description, definition.metadata, {
90
+ ...defaultServiceOptions,
91
+ ...definition?.options
92
+ });
93
+ for (const [route, handler] of Object.entries(router)) {
94
+ const wrapper = require_rpc.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 require_components.WorkflowComponent(name, definition.description, definition.metadata, {
104
+ ...defaultServiceOptions,
105
+ ...definition?.options
106
+ });
107
+ for (const [route, handler] of Object.entries(workflow)) {
108
+ const wrapper = require_rpc.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
+ exports.EndpointBuilder = EndpointBuilder;