@proompteng/temporal-bun-sdk 0.1.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 (448) hide show
  1. package/README.md +387 -0
  2. package/dist/bin/start-worker.js +3 -0
  3. package/dist/bin/temporal-bun.js +3 -0
  4. package/dist/src/activities/index.d.ts +6 -0
  5. package/dist/src/activities/index.d.ts.map +1 -0
  6. package/dist/src/activities/index.js +5 -0
  7. package/dist/src/activities/index.js.map +1 -0
  8. package/dist/src/activities/lifecycle.d.ts +48 -0
  9. package/dist/src/activities/lifecycle.d.ts.map +1 -0
  10. package/dist/src/activities/lifecycle.js +306 -0
  11. package/dist/src/activities/lifecycle.js.map +1 -0
  12. package/dist/src/bin/replay-command.d.ts +104 -0
  13. package/dist/src/bin/replay-command.d.ts.map +1 -0
  14. package/dist/src/bin/replay-command.js +582 -0
  15. package/dist/src/bin/replay-command.js.map +1 -0
  16. package/dist/src/bin/start-worker.d.ts +3 -0
  17. package/dist/src/bin/start-worker.d.ts.map +1 -0
  18. package/dist/src/bin/start-worker.js +29 -0
  19. package/dist/src/bin/start-worker.js.map +1 -0
  20. package/dist/src/bin/temporal-bun.d.ts +25 -0
  21. package/dist/src/bin/temporal-bun.d.ts.map +1 -0
  22. package/dist/src/bin/temporal-bun.js +427 -0
  23. package/dist/src/bin/temporal-bun.js.map +1 -0
  24. package/dist/src/build_id_preflight.d.ts +7 -0
  25. package/dist/src/build_id_preflight.d.ts.map +1 -0
  26. package/dist/src/build_id_preflight.js +123 -0
  27. package/dist/src/build_id_preflight.js.map +1 -0
  28. package/dist/src/client/headers.d.ts +4 -0
  29. package/dist/src/client/headers.d.ts.map +1 -0
  30. package/dist/src/client/headers.js +79 -0
  31. package/dist/src/client/headers.js.map +1 -0
  32. package/dist/src/client/index.d.ts +2 -0
  33. package/dist/src/client/index.d.ts.map +1 -0
  34. package/dist/src/client/index.js +2 -0
  35. package/dist/src/client/index.js.map +1 -0
  36. package/dist/src/client/interceptors.d.ts +17 -0
  37. package/dist/src/client/interceptors.d.ts.map +1 -0
  38. package/dist/src/client/interceptors.js +71 -0
  39. package/dist/src/client/interceptors.js.map +1 -0
  40. package/dist/src/client/layer.d.ts +10 -0
  41. package/dist/src/client/layer.d.ts.map +1 -0
  42. package/dist/src/client/layer.js +7 -0
  43. package/dist/src/client/layer.js.map +1 -0
  44. package/dist/src/client/retries.d.ts +13 -0
  45. package/dist/src/client/retries.d.ts.map +1 -0
  46. package/dist/src/client/retries.js +51 -0
  47. package/dist/src/client/retries.js.map +1 -0
  48. package/dist/src/client/serialization.d.ts +48 -0
  49. package/dist/src/client/serialization.d.ts.map +1 -0
  50. package/dist/src/client/serialization.js +310 -0
  51. package/dist/src/client/serialization.js.map +1 -0
  52. package/dist/src/client/serialization.test.d.ts +2 -0
  53. package/dist/src/client/serialization.test.d.ts.map +1 -0
  54. package/dist/src/client/serialization.test.js +251 -0
  55. package/dist/src/client/serialization.test.js.map +1 -0
  56. package/dist/src/client/transport.d.ts +12 -0
  57. package/dist/src/client/transport.d.ts.map +1 -0
  58. package/dist/src/client/transport.js +36 -0
  59. package/dist/src/client/transport.js.map +1 -0
  60. package/dist/src/client/types.d.ts +51 -0
  61. package/dist/src/client/types.d.ts.map +1 -0
  62. package/dist/src/client/types.js +7 -0
  63. package/dist/src/client/types.js.map +1 -0
  64. package/dist/src/client.d.ts +92 -0
  65. package/dist/src/client.d.ts.map +1 -0
  66. package/dist/src/client.js +666 -0
  67. package/dist/src/client.js.map +1 -0
  68. package/dist/src/common/duration.d.ts +4 -0
  69. package/dist/src/common/duration.d.ts.map +1 -0
  70. package/dist/src/common/duration.js +14 -0
  71. package/dist/src/common/duration.js.map +1 -0
  72. package/dist/src/common/index.d.ts +2 -0
  73. package/dist/src/common/index.d.ts.map +1 -0
  74. package/dist/src/common/index.js +2 -0
  75. package/dist/src/common/index.js.map +1 -0
  76. package/dist/src/common/payloads/converter.d.ts +16 -0
  77. package/dist/src/common/payloads/converter.d.ts.map +1 -0
  78. package/dist/src/common/payloads/converter.js +33 -0
  79. package/dist/src/common/payloads/converter.js.map +1 -0
  80. package/dist/src/common/payloads/failure.d.ts +7 -0
  81. package/dist/src/common/payloads/failure.d.ts.map +1 -0
  82. package/dist/src/common/payloads/failure.js +53 -0
  83. package/dist/src/common/payloads/failure.js.map +1 -0
  84. package/dist/src/common/payloads/index.d.ts +4 -0
  85. package/dist/src/common/payloads/index.d.ts.map +1 -0
  86. package/dist/src/common/payloads/index.js +4 -0
  87. package/dist/src/common/payloads/index.js.map +1 -0
  88. package/dist/src/common/payloads/json-codec.d.ts +16 -0
  89. package/dist/src/common/payloads/json-codec.d.ts.map +1 -0
  90. package/dist/src/common/payloads/json-codec.js +185 -0
  91. package/dist/src/common/payloads/json-codec.js.map +1 -0
  92. package/dist/src/common/sleep.d.ts +2 -0
  93. package/dist/src/common/sleep.d.ts.map +1 -0
  94. package/dist/src/common/sleep.js +3 -0
  95. package/dist/src/common/sleep.js.map +1 -0
  96. package/dist/src/config.d.ts +115 -0
  97. package/dist/src/config.d.ts.map +1 -0
  98. package/dist/src/config.js +505 -0
  99. package/dist/src/config.js.map +1 -0
  100. package/dist/src/core-bridge/client.d.ts +36 -0
  101. package/dist/src/core-bridge/client.d.ts.map +1 -0
  102. package/dist/src/core-bridge/client.js +111 -0
  103. package/dist/src/core-bridge/client.js.map +1 -0
  104. package/dist/src/core-bridge/index.d.ts +4 -0
  105. package/dist/src/core-bridge/index.d.ts.map +1 -0
  106. package/dist/src/core-bridge/index.js +4 -0
  107. package/dist/src/core-bridge/index.js.map +1 -0
  108. package/dist/src/core-bridge/runtime.d.ts +20 -0
  109. package/dist/src/core-bridge/runtime.d.ts.map +1 -0
  110. package/dist/src/core-bridge/runtime.js +62 -0
  111. package/dist/src/core-bridge/runtime.js.map +1 -0
  112. package/dist/src/core-bridge/runtime.test.d.ts +2 -0
  113. package/dist/src/core-bridge/runtime.test.d.ts.map +1 -0
  114. package/dist/src/core-bridge/runtime.test.js +68 -0
  115. package/dist/src/core-bridge/runtime.test.js.map +1 -0
  116. package/dist/src/index.d.ts +11 -0
  117. package/dist/src/index.d.ts.map +1 -0
  118. package/dist/src/index.js +7 -0
  119. package/dist/src/index.js.map +1 -0
  120. package/dist/src/internal/core-bridge/native.d.ts +176 -0
  121. package/dist/src/internal/core-bridge/native.d.ts.map +1 -0
  122. package/dist/src/internal/core-bridge/native.js +1208 -0
  123. package/dist/src/internal/core-bridge/native.js.map +1 -0
  124. package/dist/src/observability/index.d.ts +21 -0
  125. package/dist/src/observability/index.d.ts.map +1 -0
  126. package/dist/src/observability/index.js +19 -0
  127. package/dist/src/observability/index.js.map +1 -0
  128. package/dist/src/observability/logger.d.ts +28 -0
  129. package/dist/src/observability/logger.d.ts.map +1 -0
  130. package/dist/src/observability/logger.js +53 -0
  131. package/dist/src/observability/logger.js.map +1 -0
  132. package/dist/src/observability/metrics.d.ts +28 -0
  133. package/dist/src/observability/metrics.d.ts.map +1 -0
  134. package/dist/src/observability/metrics.js +355 -0
  135. package/dist/src/observability/metrics.js.map +1 -0
  136. package/dist/src/proto/google/api/annotations_pb.d.ts +14 -0
  137. package/dist/src/proto/google/api/annotations_pb.d.ts.map +1 -0
  138. package/dist/src/proto/google/api/annotations_pb.js +27 -0
  139. package/dist/src/proto/google/api/annotations_pb.js.map +1 -0
  140. package/dist/src/proto/google/api/http_pb.d.ts +441 -0
  141. package/dist/src/proto/google/api/http_pb.d.ts.map +1 -0
  142. package/dist/src/proto/google/api/http_pb.js +34 -0
  143. package/dist/src/proto/google/api/http_pb.js.map +1 -0
  144. package/dist/src/proto/temporal/api/activity/v1/message_pb.d.ts +67 -0
  145. package/dist/src/proto/temporal/api/activity/v1/message_pb.d.ts.map +1 -0
  146. package/dist/src/proto/temporal/api/activity/v1/message_pb.js +17 -0
  147. package/dist/src/proto/temporal/api/activity/v1/message_pb.js.map +1 -0
  148. package/dist/src/proto/temporal/api/batch/v1/message_pb.d.ts +464 -0
  149. package/dist/src/proto/temporal/api/batch/v1/message_pb.d.ts.map +1 -0
  150. package/dist/src/proto/temporal/api/batch/v1/message_pb.js +71 -0
  151. package/dist/src/proto/temporal/api/batch/v1/message_pb.js.map +1 -0
  152. package/dist/src/proto/temporal/api/command/v1/message_pb.d.ts +796 -0
  153. package/dist/src/proto/temporal/api/command/v1/message_pb.d.ts.map +1 -0
  154. package/dist/src/proto/temporal/api/command/v1/message_pb.js +106 -0
  155. package/dist/src/proto/temporal/api/command/v1/message_pb.js.map +1 -0
  156. package/dist/src/proto/temporal/api/common/v1/message_pb.d.ts +751 -0
  157. package/dist/src/proto/temporal/api/common/v1/message_pb.d.ts.map +1 -0
  158. package/dist/src/proto/temporal/api/common/v1/message_pb.js +133 -0
  159. package/dist/src/proto/temporal/api/common/v1/message_pb.js.map +1 -0
  160. package/dist/src/proto/temporal/api/deployment/v1/message_pb.d.ts +639 -0
  161. package/dist/src/proto/temporal/api/deployment/v1/message_pb.d.ts.map +1 -0
  162. package/dist/src/proto/temporal/api/deployment/v1/message_pb.js +83 -0
  163. package/dist/src/proto/temporal/api/deployment/v1/message_pb.js.map +1 -0
  164. package/dist/src/proto/temporal/api/enums/v1/batch_operation_pb.d.ts +80 -0
  165. package/dist/src/proto/temporal/api/enums/v1/batch_operation_pb.d.ts.map +1 -0
  166. package/dist/src/proto/temporal/api/enums/v1/batch_operation_pb.js +85 -0
  167. package/dist/src/proto/temporal/api/enums/v1/batch_operation_pb.js.map +1 -0
  168. package/dist/src/proto/temporal/api/enums/v1/command_type_pb.d.ts +89 -0
  169. package/dist/src/proto/temporal/api/enums/v1/command_type_pb.d.ts.map +1 -0
  170. package/dist/src/proto/temporal/api/enums/v1/command_type_pb.js +93 -0
  171. package/dist/src/proto/temporal/api/enums/v1/command_type_pb.js.map +1 -0
  172. package/dist/src/proto/temporal/api/enums/v1/common_pb.d.ts +314 -0
  173. package/dist/src/proto/temporal/api/enums/v1/common_pb.d.ts.map +1 -0
  174. package/dist/src/proto/temporal/api/enums/v1/common_pb.js +326 -0
  175. package/dist/src/proto/temporal/api/enums/v1/common_pb.js.map +1 -0
  176. package/dist/src/proto/temporal/api/enums/v1/deployment_pb.d.ts +186 -0
  177. package/dist/src/proto/temporal/api/enums/v1/deployment_pb.d.ts.map +1 -0
  178. package/dist/src/proto/temporal/api/enums/v1/deployment_pb.js +193 -0
  179. package/dist/src/proto/temporal/api/enums/v1/deployment_pb.js.map +1 -0
  180. package/dist/src/proto/temporal/api/enums/v1/event_type_pb.d.ts +407 -0
  181. package/dist/src/proto/temporal/api/enums/v1/event_type_pb.d.ts.map +1 -0
  182. package/dist/src/proto/temporal/api/enums/v1/event_type_pb.js +411 -0
  183. package/dist/src/proto/temporal/api/enums/v1/event_type_pb.js.map +1 -0
  184. package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.d.ts +371 -0
  185. package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.d.ts.map +1 -0
  186. package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.js +380 -0
  187. package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.js.map +1 -0
  188. package/dist/src/proto/temporal/api/enums/v1/namespace_pb.d.ts +73 -0
  189. package/dist/src/proto/temporal/api/enums/v1/namespace_pb.d.ts.map +1 -0
  190. package/dist/src/proto/temporal/api/enums/v1/namespace_pb.js +79 -0
  191. package/dist/src/proto/temporal/api/enums/v1/namespace_pb.js.map +1 -0
  192. package/dist/src/proto/temporal/api/enums/v1/nexus_pb.d.ts +35 -0
  193. package/dist/src/proto/temporal/api/enums/v1/nexus_pb.d.ts.map +1 -0
  194. package/dist/src/proto/temporal/api/enums/v1/nexus_pb.js +39 -0
  195. package/dist/src/proto/temporal/api/enums/v1/nexus_pb.js.map +1 -0
  196. package/dist/src/proto/temporal/api/enums/v1/query_pb.d.ts +58 -0
  197. package/dist/src/proto/temporal/api/enums/v1/query_pb.d.ts.map +1 -0
  198. package/dist/src/proto/temporal/api/enums/v1/query_pb.js +63 -0
  199. package/dist/src/proto/temporal/api/enums/v1/query_pb.js.map +1 -0
  200. package/dist/src/proto/temporal/api/enums/v1/reset_pb.d.ts +108 -0
  201. package/dist/src/proto/temporal/api/enums/v1/reset_pb.d.ts.map +1 -0
  202. package/dist/src/proto/temporal/api/enums/v1/reset_pb.js +114 -0
  203. package/dist/src/proto/temporal/api/enums/v1/reset_pb.js.map +1 -0
  204. package/dist/src/proto/temporal/api/enums/v1/schedule_pb.d.ts +67 -0
  205. package/dist/src/proto/temporal/api/enums/v1/schedule_pb.d.ts.map +1 -0
  206. package/dist/src/proto/temporal/api/enums/v1/schedule_pb.js +71 -0
  207. package/dist/src/proto/temporal/api/enums/v1/schedule_pb.js.map +1 -0
  208. package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.d.ts +249 -0
  209. package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.d.ts.map +1 -0
  210. package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.js +259 -0
  211. package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.js.map +1 -0
  212. package/dist/src/proto/temporal/api/enums/v1/update_pb.d.ts +78 -0
  213. package/dist/src/proto/temporal/api/enums/v1/update_pb.d.ts.map +1 -0
  214. package/dist/src/proto/temporal/api/enums/v1/update_pb.js +83 -0
  215. package/dist/src/proto/temporal/api/enums/v1/update_pb.js.map +1 -0
  216. package/dist/src/proto/temporal/api/enums/v1/workflow_pb.d.ts +408 -0
  217. package/dist/src/proto/temporal/api/enums/v1/workflow_pb.d.ts.map +1 -0
  218. package/dist/src/proto/temporal/api/enums/v1/workflow_pb.js +422 -0
  219. package/dist/src/proto/temporal/api/enums/v1/workflow_pb.js.map +1 -0
  220. package/dist/src/proto/temporal/api/errordetails/v1/message_pb.d.ts +331 -0
  221. package/dist/src/proto/temporal/api/errordetails/v1/message_pb.d.ts.map +1 -0
  222. package/dist/src/proto/temporal/api/errordetails/v1/message_pb.js +104 -0
  223. package/dist/src/proto/temporal/api/errordetails/v1/message_pb.js.map +1 -0
  224. package/dist/src/proto/temporal/api/export/v1/message_pb.d.ts +39 -0
  225. package/dist/src/proto/temporal/api/export/v1/message_pb.d.ts.map +1 -0
  226. package/dist/src/proto/temporal/api/export/v1/message_pb.js +20 -0
  227. package/dist/src/proto/temporal/api/export/v1/message_pb.js.map +1 -0
  228. package/dist/src/proto/temporal/api/failure/v1/message_pb.d.ts +381 -0
  229. package/dist/src/proto/temporal/api/failure/v1/message_pb.d.ts.map +1 -0
  230. package/dist/src/proto/temporal/api/failure/v1/message_pb.js +74 -0
  231. package/dist/src/proto/temporal/api/failure/v1/message_pb.js.map +1 -0
  232. package/dist/src/proto/temporal/api/filter/v1/message_pb.d.ts +73 -0
  233. package/dist/src/proto/temporal/api/filter/v1/message_pb.d.ts.map +1 -0
  234. package/dist/src/proto/temporal/api/filter/v1/message_pb.js +31 -0
  235. package/dist/src/proto/temporal/api/filter/v1/message_pb.js.map +1 -0
  236. package/dist/src/proto/temporal/api/history/v1/message_pb.d.ts +3136 -0
  237. package/dist/src/proto/temporal/api/history/v1/message_pb.d.ts.map +1 -0
  238. package/dist/src/proto/temporal/api/history/v1/message_pb.js +317 -0
  239. package/dist/src/proto/temporal/api/history/v1/message_pb.js.map +1 -0
  240. package/dist/src/proto/temporal/api/namespace/v1/message_pb.d.ts +242 -0
  241. package/dist/src/proto/temporal/api/namespace/v1/message_pb.d.ts.map +1 -0
  242. package/dist/src/proto/temporal/api/namespace/v1/message_pb.js +46 -0
  243. package/dist/src/proto/temporal/api/namespace/v1/message_pb.js.map +1 -0
  244. package/dist/src/proto/temporal/api/nexus/v1/message_pb.d.ts +549 -0
  245. package/dist/src/proto/temporal/api/nexus/v1/message_pb.d.ts.map +1 -0
  246. package/dist/src/proto/temporal/api/nexus/v1/message_pb.js +97 -0
  247. package/dist/src/proto/temporal/api/nexus/v1/message_pb.js.map +1 -0
  248. package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.d.ts +499 -0
  249. package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.d.ts.map +1 -0
  250. package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.js +137 -0
  251. package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.js.map +1 -0
  252. package/dist/src/proto/temporal/api/operatorservice/v1/service_pb.d.ts +153 -0
  253. package/dist/src/proto/temporal/api/operatorservice/v1/service_pb.d.ts.map +1 -0
  254. package/dist/src/proto/temporal/api/operatorservice/v1/service_pb.js +22 -0
  255. package/dist/src/proto/temporal/api/operatorservice/v1/service_pb.js.map +1 -0
  256. package/dist/src/proto/temporal/api/protocol/v1/message_pb.d.ts +64 -0
  257. package/dist/src/proto/temporal/api/protocol/v1/message_pb.d.ts.map +1 -0
  258. package/dist/src/proto/temporal/api/protocol/v1/message_pb.js +15 -0
  259. package/dist/src/proto/temporal/api/protocol/v1/message_pb.js.map +1 -0
  260. package/dist/src/proto/temporal/api/query/v1/message_pb.d.ts +96 -0
  261. package/dist/src/proto/temporal/api/query/v1/message_pb.d.ts.map +1 -0
  262. package/dist/src/proto/temporal/api/query/v1/message_pb.js +28 -0
  263. package/dist/src/proto/temporal/api/query/v1/message_pb.js.map +1 -0
  264. package/dist/src/proto/temporal/api/replication/v1/message_pb.d.ts +67 -0
  265. package/dist/src/proto/temporal/api/replication/v1/message_pb.d.ts.map +1 -0
  266. package/dist/src/proto/temporal/api/replication/v1/message_pb.js +26 -0
  267. package/dist/src/proto/temporal/api/replication/v1/message_pb.js.map +1 -0
  268. package/dist/src/proto/temporal/api/rules/v1/message_pb.d.ts +172 -0
  269. package/dist/src/proto/temporal/api/rules/v1/message_pb.d.ts.map +1 -0
  270. package/dist/src/proto/temporal/api/rules/v1/message_pb.js +35 -0
  271. package/dist/src/proto/temporal/api/rules/v1/message_pb.js.map +1 -0
  272. package/dist/src/proto/temporal/api/schedule/v1/message_pb.d.ts +779 -0
  273. package/dist/src/proto/temporal/api/schedule/v1/message_pb.d.ts.map +1 -0
  274. package/dist/src/proto/temporal/api/schedule/v1/message_pb.js +95 -0
  275. package/dist/src/proto/temporal/api/schedule/v1/message_pb.js.map +1 -0
  276. package/dist/src/proto/temporal/api/sdk/v1/enhanced_stack_trace_pb.d.ts +157 -0
  277. package/dist/src/proto/temporal/api/sdk/v1/enhanced_stack_trace_pb.d.ts.map +1 -0
  278. package/dist/src/proto/temporal/api/sdk/v1/enhanced_stack_trace_pb.js +34 -0
  279. package/dist/src/proto/temporal/api/sdk/v1/enhanced_stack_trace_pb.js.map +1 -0
  280. package/dist/src/proto/temporal/api/sdk/v1/task_complete_metadata_pb.d.ts +71 -0
  281. package/dist/src/proto/temporal/api/sdk/v1/task_complete_metadata_pb.d.ts.map +1 -0
  282. package/dist/src/proto/temporal/api/sdk/v1/task_complete_metadata_pb.js +14 -0
  283. package/dist/src/proto/temporal/api/sdk/v1/task_complete_metadata_pb.js.map +1 -0
  284. package/dist/src/proto/temporal/api/sdk/v1/user_metadata_pb.d.ts +37 -0
  285. package/dist/src/proto/temporal/api/sdk/v1/user_metadata_pb.d.ts.map +1 -0
  286. package/dist/src/proto/temporal/api/sdk/v1/user_metadata_pb.js +15 -0
  287. package/dist/src/proto/temporal/api/sdk/v1/user_metadata_pb.js.map +1 -0
  288. package/dist/src/proto/temporal/api/sdk/v1/worker_config_pb.d.ts +84 -0
  289. package/dist/src/proto/temporal/api/sdk/v1/worker_config_pb.d.ts.map +1 -0
  290. package/dist/src/proto/temporal/api/sdk/v1/worker_config_pb.js +24 -0
  291. package/dist/src/proto/temporal/api/sdk/v1/worker_config_pb.js.map +1 -0
  292. package/dist/src/proto/temporal/api/sdk/v1/workflow_metadata_pb.d.ts +99 -0
  293. package/dist/src/proto/temporal/api/sdk/v1/workflow_metadata_pb.d.ts.map +1 -0
  294. package/dist/src/proto/temporal/api/sdk/v1/workflow_metadata_pb.js +24 -0
  295. package/dist/src/proto/temporal/api/sdk/v1/workflow_metadata_pb.js.map +1 -0
  296. package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.d.ts +757 -0
  297. package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.d.ts.map +1 -0
  298. package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.js +138 -0
  299. package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.js.map +1 -0
  300. package/dist/src/proto/temporal/api/update/v1/message_pb.d.ts +230 -0
  301. package/dist/src/proto/temporal/api/update/v1/message_pb.d.ts.map +1 -0
  302. package/dist/src/proto/temporal/api/update/v1/message_pb.js +57 -0
  303. package/dist/src/proto/temporal/api/update/v1/message_pb.js.map +1 -0
  304. package/dist/src/proto/temporal/api/version/v1/message_pb.d.ts +85 -0
  305. package/dist/src/proto/temporal/api/version/v1/message_pb.d.ts.map +1 -0
  306. package/dist/src/proto/temporal/api/version/v1/message_pb.js +26 -0
  307. package/dist/src/proto/temporal/api/version/v1/message_pb.js.map +1 -0
  308. package/dist/src/proto/temporal/api/worker/v1/message_pb.d.ts +311 -0
  309. package/dist/src/proto/temporal/api/worker/v1/message_pb.d.ts.map +1 -0
  310. package/dist/src/proto/temporal/api/worker/v1/message_pb.js +42 -0
  311. package/dist/src/proto/temporal/api/worker/v1/message_pb.js.map +1 -0
  312. package/dist/src/proto/temporal/api/workflow/v1/message_pb.d.ts +1500 -0
  313. package/dist/src/proto/temporal/api/workflow/v1/message_pb.d.ts.map +1 -0
  314. package/dist/src/proto/temporal/api/workflow/v1/message_pb.js +183 -0
  315. package/dist/src/proto/temporal/api/workflow/v1/message_pb.js.map +1 -0
  316. package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.d.ts +6967 -0
  317. package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.d.ts.map +1 -0
  318. package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.js +1073 -0
  319. package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.js.map +1 -0
  320. package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.d.ts +1305 -0
  321. package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.d.ts.map +1 -0
  322. package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.js +27 -0
  323. package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.js.map +1 -0
  324. package/dist/src/runtime/cli-layer.d.ts +12 -0
  325. package/dist/src/runtime/cli-layer.d.ts.map +1 -0
  326. package/dist/src/runtime/cli-layer.js +19 -0
  327. package/dist/src/runtime/cli-layer.js.map +1 -0
  328. package/dist/src/runtime/config-layer.d.ts +9 -0
  329. package/dist/src/runtime/config-layer.d.ts.map +1 -0
  330. package/dist/src/runtime/config-layer.js +15 -0
  331. package/dist/src/runtime/config-layer.js.map +1 -0
  332. package/dist/src/runtime/effect-layers.d.ts +518 -0
  333. package/dist/src/runtime/effect-layers.d.ts.map +1 -0
  334. package/dist/src/runtime/effect-layers.js +68 -0
  335. package/dist/src/runtime/effect-layers.js.map +1 -0
  336. package/dist/src/runtime/worker-app.d.ts +14 -0
  337. package/dist/src/runtime/worker-app.d.ts.map +1 -0
  338. package/dist/src/runtime/worker-app.js +58 -0
  339. package/dist/src/runtime/worker-app.js.map +1 -0
  340. package/dist/src/telemetry/runtime.d.ts +5 -0
  341. package/dist/src/telemetry/runtime.d.ts.map +1 -0
  342. package/dist/src/telemetry/runtime.js +94 -0
  343. package/dist/src/telemetry/runtime.js.map +1 -0
  344. package/dist/src/worker/activity-context.d.ts +30 -0
  345. package/dist/src/worker/activity-context.d.ts.map +1 -0
  346. package/dist/src/worker/activity-context.js +9 -0
  347. package/dist/src/worker/activity-context.js.map +1 -0
  348. package/dist/src/worker/build-id.d.ts +20 -0
  349. package/dist/src/worker/build-id.d.ts.map +1 -0
  350. package/dist/src/worker/build-id.js +98 -0
  351. package/dist/src/worker/build-id.js.map +1 -0
  352. package/dist/src/worker/concurrency.d.ts +31 -0
  353. package/dist/src/worker/concurrency.d.ts.map +1 -0
  354. package/dist/src/worker/concurrency.js +129 -0
  355. package/dist/src/worker/concurrency.js.map +1 -0
  356. package/dist/src/worker/defaults.d.ts +9 -0
  357. package/dist/src/worker/defaults.d.ts.map +1 -0
  358. package/dist/src/worker/defaults.js +53 -0
  359. package/dist/src/worker/defaults.js.map +1 -0
  360. package/dist/src/worker/index.d.ts +7 -0
  361. package/dist/src/worker/index.d.ts.map +1 -0
  362. package/dist/src/worker/index.js +4 -0
  363. package/dist/src/worker/index.js.map +1 -0
  364. package/dist/src/worker/layer.d.ts +19 -0
  365. package/dist/src/worker/layer.d.ts.map +1 -0
  366. package/dist/src/worker/layer.js +71 -0
  367. package/dist/src/worker/layer.js.map +1 -0
  368. package/dist/src/worker/runtime.d.ts +59 -0
  369. package/dist/src/worker/runtime.d.ts.map +1 -0
  370. package/dist/src/worker/runtime.js +1415 -0
  371. package/dist/src/worker/runtime.js.map +1 -0
  372. package/dist/src/worker/service.d.ts +19 -0
  373. package/dist/src/worker/service.d.ts.map +1 -0
  374. package/dist/src/worker/service.js +14 -0
  375. package/dist/src/worker/service.js.map +1 -0
  376. package/dist/src/worker/sticky-cache.d.ts +41 -0
  377. package/dist/src/worker/sticky-cache.d.ts.map +1 -0
  378. package/dist/src/worker/sticky-cache.js +127 -0
  379. package/dist/src/worker/sticky-cache.js.map +1 -0
  380. package/dist/src/worker.d.ts +30 -0
  381. package/dist/src/worker.d.ts.map +1 -0
  382. package/dist/src/worker.js +82 -0
  383. package/dist/src/worker.js.map +1 -0
  384. package/dist/src/workflow/commands.d.ts +84 -0
  385. package/dist/src/workflow/commands.d.ts.map +1 -0
  386. package/dist/src/workflow/commands.js +159 -0
  387. package/dist/src/workflow/commands.js.map +1 -0
  388. package/dist/src/workflow/context.d.ts +119 -0
  389. package/dist/src/workflow/context.d.ts.map +1 -0
  390. package/dist/src/workflow/context.js +197 -0
  391. package/dist/src/workflow/context.js.map +1 -0
  392. package/dist/src/workflow/definition.d.ts +15 -0
  393. package/dist/src/workflow/definition.d.ts.map +1 -0
  394. package/dist/src/workflow/definition.js +19 -0
  395. package/dist/src/workflow/definition.js.map +1 -0
  396. package/dist/src/workflow/determinism.d.ts +54 -0
  397. package/dist/src/workflow/determinism.d.ts.map +1 -0
  398. package/dist/src/workflow/determinism.js +147 -0
  399. package/dist/src/workflow/determinism.js.map +1 -0
  400. package/dist/src/workflow/errors.d.ts +37 -0
  401. package/dist/src/workflow/errors.d.ts.map +1 -0
  402. package/dist/src/workflow/errors.js +35 -0
  403. package/dist/src/workflow/errors.js.map +1 -0
  404. package/dist/src/workflow/executor.d.ts +35 -0
  405. package/dist/src/workflow/executor.d.ts.map +1 -0
  406. package/dist/src/workflow/executor.js +178 -0
  407. package/dist/src/workflow/executor.js.map +1 -0
  408. package/dist/src/workflow/index.d.ts +8 -0
  409. package/dist/src/workflow/index.d.ts.map +1 -0
  410. package/dist/src/workflow/index.js +8 -0
  411. package/dist/src/workflow/index.js.map +1 -0
  412. package/dist/src/workflow/registry.d.ts +9 -0
  413. package/dist/src/workflow/registry.d.ts.map +1 -0
  414. package/dist/src/workflow/registry.js +51 -0
  415. package/dist/src/workflow/registry.js.map +1 -0
  416. package/dist/src/workflow/replay.d.ts +87 -0
  417. package/dist/src/workflow/replay.d.ts.map +1 -0
  418. package/dist/src/workflow/replay.js +759 -0
  419. package/dist/src/workflow/replay.js.map +1 -0
  420. package/dist/src/workflow/runtime/bootstrap.d.ts +15 -0
  421. package/dist/src/workflow/runtime/bootstrap.d.ts.map +1 -0
  422. package/dist/src/workflow/runtime/bootstrap.js +124 -0
  423. package/dist/src/workflow/runtime/bootstrap.js.map +1 -0
  424. package/dist/src/workflow/runtime/engine.d.ts +21 -0
  425. package/dist/src/workflow/runtime/engine.d.ts.map +1 -0
  426. package/dist/src/workflow/runtime/engine.js +73 -0
  427. package/dist/src/workflow/runtime/engine.js.map +1 -0
  428. package/dist/src/workflow/runtime/environment.d.ts +29 -0
  429. package/dist/src/workflow/runtime/environment.d.ts.map +1 -0
  430. package/dist/src/workflow/runtime/environment.js +298 -0
  431. package/dist/src/workflow/runtime/environment.js.map +1 -0
  432. package/dist/src/workflow/runtime/index.d.ts +7 -0
  433. package/dist/src/workflow/runtime/index.d.ts.map +1 -0
  434. package/dist/src/workflow/runtime/index.js +4 -0
  435. package/dist/src/workflow/runtime/index.js.map +1 -0
  436. package/dist/src/workflow/runtime/info.d.ts +5 -0
  437. package/dist/src/workflow/runtime/info.d.ts.map +1 -0
  438. package/dist/src/workflow/runtime/info.js +22 -0
  439. package/dist/src/workflow/runtime/info.js.map +1 -0
  440. package/dist/src/workflow/runtime/replay.d.ts +26 -0
  441. package/dist/src/workflow/runtime/replay.d.ts.map +1 -0
  442. package/dist/src/workflow/runtime/replay.js +254 -0
  443. package/dist/src/workflow/runtime/replay.js.map +1 -0
  444. package/dist/src/workflows/index.d.ts +3 -0
  445. package/dist/src/workflows/index.d.ts.map +1 -0
  446. package/dist/src/workflows/index.js +15 -0
  447. package/dist/src/workflows/index.js.map +1 -0
  448. package/package.json +74 -0
@@ -0,0 +1,666 @@
1
+ import { create, toBinary } from '@bufbuild/protobuf';
2
+ import { Code, ConnectError, createClient } from '@connectrpc/connect';
3
+ import { createGrpcTransport } from '@connectrpc/connect-node';
4
+ import { Context, Effect } from 'effect';
5
+ import * as Option from 'effect/Option';
6
+ import { createDefaultHeaders, mergeHeaders, normalizeMetadataHeaders } from './client/headers';
7
+ import { makeDefaultInterceptorBuilder } from './client/interceptors';
8
+ import { withTemporalRetry } from './client/retries';
9
+ import { buildCancelRequest, buildQueryRequest, buildSignalRequest, buildSignalWithStartRequest, buildStartWorkflowRequest, buildTerminateRequest, computeSignalRequestId, createSignalRequestEntropy, decodeMemoAttributes, decodeSearchAttributes, encodeMemoAttributes, encodeSearchAttributes, } from './client/serialization';
10
+ import { buildTransportOptions, normalizeTemporalAddress } from './client/transport';
11
+ import { createWorkflowHandle, } from './client/types';
12
+ import { createDefaultDataConverter, decodePayloadsToValues } from './common/payloads';
13
+ import { loadTemporalConfig } from './config';
14
+ import { createObservabilityServices } from './observability';
15
+ import { DescribeNamespaceRequestSchema, DescribeNamespaceResponseSchema, } from './proto/temporal/api/workflowservice/v1/request_response_pb';
16
+ import { WorkflowService } from './proto/temporal/api/workflowservice/v1/service_pb';
17
+ import { LoggerService, MetricsExporterService, MetricsService, TemporalConfigService, WorkflowServiceClientService, } from './runtime/effect-layers';
18
+ export const temporalCallOptions = (options) => {
19
+ const copy = { ...options };
20
+ Object.defineProperty(copy, CALL_OPTIONS_MARKER, {
21
+ value: true,
22
+ enumerable: false,
23
+ configurable: false,
24
+ });
25
+ Object.defineProperty(copy, '__temporalCallOptions', {
26
+ value: true,
27
+ enumerable: false,
28
+ configurable: false,
29
+ });
30
+ return copy;
31
+ };
32
+ const DEFAULT_TLS_SUGGESTIONS = [
33
+ 'Verify TEMPORAL_TLS_CA_PATH, CERT_PATH, and KEY_PATH point to valid PEM files',
34
+ 'Ensure TEMPORAL_TLS_SERVER_NAME matches the certificate Subject Alternative Name',
35
+ 'Set TEMPORAL_ALLOW_INSECURE=1 only for trusted development clusters',
36
+ ];
37
+ export class TemporalTlsHandshakeError extends Error {
38
+ cause;
39
+ suggestions;
40
+ constructor(message, options = {}) {
41
+ super(message);
42
+ this.name = 'TemporalTlsHandshakeError';
43
+ this.cause = options.cause;
44
+ this.suggestions = options.suggestions ?? DEFAULT_TLS_SUGGESTIONS;
45
+ }
46
+ }
47
+ const CALL_OPTIONS_MARKER = Symbol.for('temporal.bun.callOptions');
48
+ const describeError = (error) => {
49
+ if (error instanceof Error) {
50
+ return error.message;
51
+ }
52
+ return String(error);
53
+ };
54
+ const TLS_ERROR_CODE_PREFIXES = ['ERR_TLS_', 'ERR_SSL_'];
55
+ const TLS_ERROR_MESSAGE_HINTS = [/handshake/i, /certificate/i, /secure tls/i, /ssl/i];
56
+ const isCallOptionsCandidate = (value) => {
57
+ if (!value || typeof value !== 'object') {
58
+ return false;
59
+ }
60
+ if (CALL_OPTIONS_MARKER in value) {
61
+ return true;
62
+ }
63
+ return value.__temporalCallOptions === true;
64
+ };
65
+ const unwrapTlsCause = (error) => {
66
+ if (error instanceof TemporalTlsHandshakeError && error.cause instanceof Error) {
67
+ return error.cause;
68
+ }
69
+ if (error instanceof ConnectError && error.cause instanceof Error) {
70
+ return error.cause;
71
+ }
72
+ if (error instanceof Error) {
73
+ return error;
74
+ }
75
+ return undefined;
76
+ };
77
+ const wrapRpcError = (error) => {
78
+ const cause = unwrapTlsCause(error);
79
+ if (!cause) {
80
+ return error;
81
+ }
82
+ const code = cause.code;
83
+ if (typeof code === 'string' && TLS_ERROR_CODE_PREFIXES.some((prefix) => code.startsWith(prefix))) {
84
+ return new TemporalTlsHandshakeError(`Temporal TLS handshake failed (${code})`, { cause });
85
+ }
86
+ if (cause.message?.toLowerCase().includes('h2 is not supported')) {
87
+ return new TemporalTlsHandshakeError('Temporal endpoint rejected TLS/HTTP2 handshakes', { cause });
88
+ }
89
+ if (TLS_ERROR_MESSAGE_HINTS.some((pattern) => pattern.test(cause.message))) {
90
+ return new TemporalTlsHandshakeError('Temporal TLS handshake failed', { cause });
91
+ }
92
+ return error;
93
+ };
94
+ export const createTemporalClient = async (options = {}) => {
95
+ const config = options.config ?? (await loadTemporalConfig());
96
+ const observability = await Effect.runPromise(createObservabilityServices({
97
+ logLevel: config.logLevel,
98
+ logFormat: config.logFormat,
99
+ metrics: config.metricsExporter,
100
+ }, {
101
+ logger: options.logger,
102
+ metricsRegistry: options.metrics,
103
+ metricsExporter: options.metricsExporter,
104
+ }));
105
+ const { logger, metricsRegistry, metricsExporter } = observability;
106
+ let transport = options.transport;
107
+ let workflowService = options.workflowService;
108
+ let createdTransport;
109
+ if (!workflowService) {
110
+ if (!transport) {
111
+ const interceptorBuilder = options.interceptorBuilder ?? makeDefaultInterceptorBuilder();
112
+ const defaultInterceptors = await Effect.runPromise(interceptorBuilder.build({
113
+ namespace: options.namespace ?? config.namespace,
114
+ identity: options.identity ?? config.workerIdentity,
115
+ logger,
116
+ metricsRegistry,
117
+ metricsExporter,
118
+ }));
119
+ const shouldUseTls = Boolean(config.tls || config.allowInsecureTls);
120
+ const baseUrl = normalizeTemporalAddress(config.address, shouldUseTls);
121
+ const allInterceptors = [...defaultInterceptors, ...(options.interceptors ?? [])];
122
+ const transportOptions = buildTransportOptions(baseUrl, config, allInterceptors);
123
+ transport = createGrpcTransport(transportOptions);
124
+ createdTransport = transport;
125
+ }
126
+ if (!transport) {
127
+ throw new Error('Temporal transport is not available');
128
+ }
129
+ workflowService = createClient(WorkflowService, transport);
130
+ }
131
+ if (!workflowService) {
132
+ throw new Error('Temporal workflow service is not available');
133
+ }
134
+ const effect = makeTemporalClientEffect({
135
+ ...options,
136
+ config,
137
+ logger,
138
+ metrics: metricsRegistry,
139
+ metricsExporter,
140
+ workflowService,
141
+ transport,
142
+ });
143
+ try {
144
+ return await Effect.runPromise(effect.pipe(Effect.provideService(TemporalConfigService, config), Effect.provideService(LoggerService, logger), Effect.provideService(MetricsService, metricsRegistry), Effect.provideService(MetricsExporterService, metricsExporter), Effect.provideService(WorkflowServiceClientService, workflowService)));
145
+ }
146
+ catch (error) {
147
+ await createdTransport?.close?.();
148
+ throw error;
149
+ }
150
+ };
151
+ export const makeTemporalClientEffect = (options = {}) => Effect.gen(function* () {
152
+ const config = options.config ?? (yield* TemporalConfigService);
153
+ const namespace = options.namespace ?? config.namespace;
154
+ const identity = options.identity ?? config.workerIdentity;
155
+ const taskQueue = options.taskQueue ?? config.taskQueue;
156
+ const dataConverter = options.dataConverter ?? createDefaultDataConverter();
157
+ const initialHeaders = createDefaultHeaders(config.apiKey);
158
+ const logger = options.logger ?? (yield* LoggerService);
159
+ const metricsRegistry = options.metrics ?? (yield* MetricsService);
160
+ const metricsExporter = options.metricsExporter ?? (yield* MetricsExporterService);
161
+ const workflowServiceFromContext = yield* Effect.contextWith((context) => Context.getOption(context, WorkflowServiceClientService));
162
+ let workflowService = options.workflowService ?? Option.getOrUndefined(workflowServiceFromContext);
163
+ let transport = options.transport;
164
+ if (!workflowService) {
165
+ if (!transport) {
166
+ const interceptorBuilder = options.interceptorBuilder ?? makeDefaultInterceptorBuilder();
167
+ const defaultInterceptors = yield* interceptorBuilder.build({
168
+ namespace,
169
+ identity,
170
+ logger,
171
+ metricsRegistry,
172
+ metricsExporter,
173
+ });
174
+ const allInterceptors = [...defaultInterceptors, ...(options.interceptors ?? [])];
175
+ const shouldUseTls = Boolean(config.tls || config.allowInsecureTls);
176
+ const baseUrl = normalizeTemporalAddress(config.address, shouldUseTls);
177
+ const transportOptions = buildTransportOptions(baseUrl, config, allInterceptors);
178
+ transport = createGrpcTransport(transportOptions);
179
+ }
180
+ if (!transport) {
181
+ throw new Error('Temporal transport is not available');
182
+ }
183
+ workflowService = createClient(WorkflowService, transport);
184
+ }
185
+ const clientMetrics = yield* Effect.promise(() => TemporalClientImpl.initMetrics(metricsRegistry));
186
+ if (!workflowService) {
187
+ throw new Error('Temporal workflow service is not available');
188
+ }
189
+ const client = new TemporalClientImpl({
190
+ transport,
191
+ workflowService,
192
+ config,
193
+ namespace,
194
+ identity,
195
+ taskQueue,
196
+ dataConverter,
197
+ headers: initialHeaders,
198
+ logger,
199
+ metrics: clientMetrics,
200
+ metricsExporter,
201
+ });
202
+ return { client, config };
203
+ });
204
+ class TemporalClientImpl {
205
+ namespace;
206
+ config;
207
+ dataConverter;
208
+ workflow;
209
+ memo;
210
+ searchAttributes;
211
+ transport;
212
+ workflowService;
213
+ defaultIdentity;
214
+ defaultTaskQueue;
215
+ #logger;
216
+ #clientMetrics;
217
+ #metricsExporter;
218
+ closed = false;
219
+ headers;
220
+ static async initMetrics(registry) {
221
+ const makeCounter = (name, description) => Effect.runPromise(registry.counter(name, description));
222
+ const makeHistogram = (name, description) => Effect.runPromise(registry.histogram(name, description));
223
+ return {
224
+ operationCount: await makeCounter('temporal_client_operations_total', 'Temporal client operation calls'),
225
+ operationLatency: await makeHistogram('temporal_client_operation_latency_ms', 'Latency for Temporal client operations'),
226
+ operationErrors: await makeCounter('temporal_client_operation_errors_total', 'Temporal client operation errors'),
227
+ };
228
+ }
229
+ constructor(handles) {
230
+ this.transport = handles.transport;
231
+ this.workflowService = handles.workflowService;
232
+ this.config = handles.config;
233
+ this.namespace = handles.namespace;
234
+ this.defaultIdentity = handles.identity;
235
+ this.defaultTaskQueue = handles.taskQueue;
236
+ this.dataConverter = handles.dataConverter;
237
+ this.headers = { ...handles.headers };
238
+ this.#logger = handles.logger;
239
+ this.#clientMetrics = handles.metrics;
240
+ this.#metricsExporter = handles.metricsExporter;
241
+ this.memo = {
242
+ encode: (input) => encodeMemoAttributes(this.dataConverter, input),
243
+ decode: (memo) => decodeMemoAttributes(this.dataConverter, memo),
244
+ };
245
+ this.searchAttributes = {
246
+ encode: (input) => encodeSearchAttributes(this.dataConverter, input),
247
+ decode: (attributes) => decodeSearchAttributes(this.dataConverter, attributes),
248
+ };
249
+ this.workflow = {
250
+ start: (options, callOptions) => this.startWorkflow(options, callOptions),
251
+ signal: (handle, signalName, ...args) => this.signalWorkflow(handle, signalName, ...args),
252
+ query: (handle, queryName, ...args) => this.queryWorkflow(handle, queryName, ...args),
253
+ terminate: (handle, options, callOptions) => this.terminateWorkflow(handle, options, callOptions),
254
+ cancel: (handle, callOptions) => this.cancelWorkflow(handle, callOptions),
255
+ signalWithStart: (options, callOptions) => this.signalWithStart(options, callOptions),
256
+ };
257
+ }
258
+ async startWorkflow(options, callOptions) {
259
+ return this.#instrumentOperation('startWorkflow', async () => {
260
+ this.ensureOpen();
261
+ const parsedOptions = sanitizeStartWorkflowOptions(options);
262
+ const request = await buildStartWorkflowRequest({
263
+ options: parsedOptions,
264
+ defaults: {
265
+ namespace: this.namespace,
266
+ identity: this.defaultIdentity,
267
+ taskQueue: this.defaultTaskQueue,
268
+ },
269
+ }, this.dataConverter);
270
+ const response = await this.executeRpc('startWorkflow', (rpcOptions) => this.workflowService.startWorkflowExecution(request, rpcOptions), callOptions);
271
+ return this.toStartWorkflowResult(response, {
272
+ workflowId: request.workflowId,
273
+ namespace: request.namespace,
274
+ firstExecutionRunId: response.started ? response.runId : undefined,
275
+ });
276
+ });
277
+ }
278
+ async signalWorkflow(handle, signalName, ...rawArgs) {
279
+ return this.#instrumentOperation('signalWorkflow', async () => {
280
+ this.ensureOpen();
281
+ const resolvedHandle = resolveHandle(this.namespace, handle);
282
+ const normalizedSignalName = ensureNonEmptyString(signalName, 'signalName');
283
+ const { values, callOptions } = this.#splitArgsAndOptions(rawArgs);
284
+ const identity = this.defaultIdentity;
285
+ const entropy = createSignalRequestEntropy();
286
+ const requestId = await computeSignalRequestId({
287
+ namespace: resolvedHandle.namespace,
288
+ workflowId: resolvedHandle.workflowId,
289
+ runId: resolvedHandle.runId,
290
+ firstExecutionRunId: resolvedHandle.firstExecutionRunId,
291
+ signalName: normalizedSignalName,
292
+ identity,
293
+ args: values,
294
+ }, this.dataConverter, { entropy });
295
+ const request = await buildSignalRequest({
296
+ handle: resolvedHandle,
297
+ signalName: normalizedSignalName,
298
+ args: values,
299
+ identity,
300
+ requestId,
301
+ }, this.dataConverter);
302
+ await this.executeRpc('signalWorkflow', (rpcOptions) => this.workflowService.signalWorkflowExecution(request, rpcOptions), callOptions);
303
+ });
304
+ }
305
+ async queryWorkflow(handle, queryName, ...rawArgs) {
306
+ return this.#instrumentOperation('queryWorkflow', async () => {
307
+ this.ensureOpen();
308
+ const resolvedHandle = resolveHandle(this.namespace, handle);
309
+ const { values, callOptions } = this.#splitArgsAndOptions(rawArgs);
310
+ const request = await buildQueryRequest(resolvedHandle, queryName, values, this.dataConverter);
311
+ const response = await this.executeRpc('queryWorkflow', (rpcOptions) => this.workflowService.queryWorkflow(request, rpcOptions), callOptions);
312
+ return this.parseQueryResult(response);
313
+ });
314
+ }
315
+ async terminateWorkflow(handle, options = {}, callOptions) {
316
+ return this.#instrumentOperation('terminateWorkflow', async () => {
317
+ this.ensureOpen();
318
+ const resolvedHandle = resolveHandle(this.namespace, handle);
319
+ const parsedOptions = sanitizeTerminateWorkflowOptions(options);
320
+ const request = await buildTerminateRequest(resolvedHandle, parsedOptions, this.dataConverter, this.defaultIdentity);
321
+ await this.executeRpc('terminateWorkflow', (rpcOptions) => this.workflowService.terminateWorkflowExecution(request, rpcOptions), callOptions);
322
+ });
323
+ }
324
+ async cancelWorkflow(handle, callOptions) {
325
+ return this.#instrumentOperation('cancelWorkflow', async () => {
326
+ this.ensureOpen();
327
+ const resolvedHandle = resolveHandle(this.namespace, handle);
328
+ const request = buildCancelRequest(resolvedHandle, this.defaultIdentity);
329
+ await this.executeRpc('cancelWorkflow', (rpcOptions) => this.workflowService.requestCancelWorkflowExecution(request, rpcOptions), callOptions);
330
+ });
331
+ }
332
+ async signalWithStart(options, callOptions) {
333
+ return this.#instrumentOperation('signalWithStart', async () => {
334
+ this.ensureOpen();
335
+ const startOptions = sanitizeStartWorkflowOptions(options);
336
+ const signalName = ensureNonEmptyString(options.signalName, 'signalName');
337
+ const signalArgs = options.signalArgs ?? [];
338
+ if (!Array.isArray(signalArgs)) {
339
+ throw new Error('signalArgs must be an array when provided');
340
+ }
341
+ const request = await buildSignalWithStartRequest({
342
+ options: {
343
+ ...startOptions,
344
+ signalName,
345
+ signalArgs,
346
+ },
347
+ defaults: {
348
+ namespace: this.namespace,
349
+ identity: this.defaultIdentity,
350
+ taskQueue: this.defaultTaskQueue,
351
+ },
352
+ }, this.dataConverter);
353
+ const response = await this.executeRpc('signalWithStartWorkflow', (rpcOptions) => this.workflowService.signalWithStartWorkflowExecution(request, rpcOptions), callOptions);
354
+ return this.toStartWorkflowResult(response, {
355
+ workflowId: request.workflowId,
356
+ namespace: request.namespace,
357
+ firstExecutionRunId: response.started ? response.runId : undefined,
358
+ });
359
+ });
360
+ }
361
+ async describeNamespace(targetNamespace, callOptions) {
362
+ return this.#instrumentOperation('describeNamespace', async () => {
363
+ this.ensureOpen();
364
+ const request = create(DescribeNamespaceRequestSchema, {
365
+ namespace: targetNamespace ?? this.namespace,
366
+ });
367
+ const response = await this.executeRpc('describeNamespace', (rpcOptions) => this.workflowService.describeNamespace(request, rpcOptions), callOptions);
368
+ return toBinary(DescribeNamespaceResponseSchema, response);
369
+ });
370
+ }
371
+ async updateHeaders(headers) {
372
+ if (this.closed) {
373
+ throw new Error('Temporal client has already been shut down');
374
+ }
375
+ const normalized = normalizeMetadataHeaders(headers);
376
+ this.headers = mergeHeaders(this.headers, normalized);
377
+ }
378
+ async shutdown() {
379
+ if (this.closed)
380
+ return;
381
+ this.closed = true;
382
+ if (this.transport) {
383
+ const maybeClose = this.transport.close;
384
+ if (typeof maybeClose === 'function') {
385
+ await maybeClose.call(this.transport);
386
+ }
387
+ }
388
+ await this.#flushMetrics();
389
+ }
390
+ async #flushMetrics() {
391
+ try {
392
+ await Effect.runPromise(this.#metricsExporter.flush());
393
+ }
394
+ catch (error) {
395
+ this.#log('warn', 'failed to flush client metrics exporter', {
396
+ error: describeError(error),
397
+ });
398
+ }
399
+ }
400
+ #recordMetrics(durationMs, failed) {
401
+ void Effect.runPromise(this.#clientMetrics.operationCount.inc());
402
+ void Effect.runPromise(this.#clientMetrics.operationLatency.observe(durationMs));
403
+ if (failed) {
404
+ void Effect.runPromise(this.#clientMetrics.operationErrors.inc());
405
+ }
406
+ }
407
+ async #instrumentOperation(operation, action) {
408
+ const start = Date.now();
409
+ try {
410
+ const result = await action();
411
+ this.#log('debug', `temporal client ${operation} succeeded`, {
412
+ operation,
413
+ namespace: this.namespace,
414
+ });
415
+ this.#recordMetrics(Date.now() - start, false);
416
+ return result;
417
+ }
418
+ catch (error) {
419
+ this.#log('error', `temporal client ${operation} failed`, {
420
+ operation,
421
+ error: describeError(error),
422
+ });
423
+ this.#recordMetrics(Date.now() - start, true);
424
+ throw error;
425
+ }
426
+ }
427
+ #log(level, message, fields) {
428
+ void Effect.runPromise(this.#logger.log(level, message, fields).pipe(Effect.catchAll((error) => Effect.sync(() => {
429
+ console.warn(`[temporal-bun-sdk] client logger failure: ${describeError(error)}`);
430
+ }))));
431
+ }
432
+ ensureOpen() {
433
+ if (this.closed) {
434
+ throw new Error('Temporal client has been shut down');
435
+ }
436
+ }
437
+ #splitArgsAndOptions(args) {
438
+ if (!args.length) {
439
+ return { values: [] };
440
+ }
441
+ const last = args[args.length - 1];
442
+ if (isCallOptionsCandidate(last)) {
443
+ return {
444
+ values: args.slice(0, -1),
445
+ callOptions: last,
446
+ };
447
+ }
448
+ return { values: args };
449
+ }
450
+ #mergeRetryPolicy(overrides) {
451
+ const base = this.config.rpcRetryPolicy;
452
+ if (!overrides) {
453
+ return {
454
+ ...base,
455
+ retryableStatusCodes: [...base.retryableStatusCodes],
456
+ };
457
+ }
458
+ const maxAttempts = overrides.maxAttempts ?? base.maxAttempts;
459
+ const initialDelayMs = overrides.initialDelayMs ?? base.initialDelayMs;
460
+ const maxDelayMs = overrides.maxDelayMs ?? base.maxDelayMs;
461
+ const backoffCoefficient = overrides.backoffCoefficient ?? base.backoffCoefficient;
462
+ const jitterFactor = overrides.jitterFactor ?? base.jitterFactor;
463
+ if (!Number.isInteger(maxAttempts) || maxAttempts <= 0) {
464
+ throw new Error('retryPolicy.maxAttempts must be a positive integer');
465
+ }
466
+ if (!Number.isInteger(initialDelayMs) || initialDelayMs <= 0) {
467
+ throw new Error('retryPolicy.initialDelayMs must be a positive integer');
468
+ }
469
+ if (!Number.isInteger(maxDelayMs) || maxDelayMs <= 0) {
470
+ throw new Error('retryPolicy.maxDelayMs must be a positive integer');
471
+ }
472
+ if (maxDelayMs < initialDelayMs) {
473
+ throw new Error('retryPolicy.maxDelayMs must be greater than or equal to retryPolicy.initialDelayMs');
474
+ }
475
+ if (typeof backoffCoefficient !== 'number' || !Number.isFinite(backoffCoefficient) || backoffCoefficient <= 0) {
476
+ throw new Error('retryPolicy.backoffCoefficient must be a positive number');
477
+ }
478
+ if (typeof jitterFactor !== 'number' || jitterFactor < 0 || jitterFactor > 1) {
479
+ throw new Error('retryPolicy.jitterFactor must be between 0 and 1');
480
+ }
481
+ const retryableStatusCodes = overrides.retryableStatusCodes
482
+ ? [...overrides.retryableStatusCodes]
483
+ : [...base.retryableStatusCodes];
484
+ return {
485
+ maxAttempts,
486
+ initialDelayMs,
487
+ maxDelayMs,
488
+ backoffCoefficient,
489
+ jitterFactor,
490
+ retryableStatusCodes,
491
+ };
492
+ }
493
+ #buildCallContext(overrides) {
494
+ const userHeaders = overrides?.headers ? normalizeMetadataHeaders(overrides.headers) : undefined;
495
+ const mergedHeaders = userHeaders ? mergeHeaders(this.headers, userHeaders) : { ...this.headers };
496
+ const timeout = overrides?.timeoutMs;
497
+ const signal = overrides?.signal;
498
+ return {
499
+ create: () => ({
500
+ headers: { ...mergedHeaders },
501
+ timeoutMs: timeout,
502
+ signal,
503
+ }),
504
+ retryPolicy: this.#mergeRetryPolicy(overrides?.retryPolicy),
505
+ };
506
+ }
507
+ async executeRpc(operation, rpc, overrides) {
508
+ const { create, retryPolicy } = this.#buildCallContext(overrides);
509
+ let attempt = 0;
510
+ const effect = Effect.tryPromise({
511
+ try: () => {
512
+ attempt += 1;
513
+ return rpc(create());
514
+ },
515
+ catch: (error) => wrapRpcError(error),
516
+ }).pipe(Effect.tapError((error) => Effect.sync(() => {
517
+ this.#log('warn', `temporal rpc ${operation} attempt failed`, {
518
+ operation,
519
+ attempt,
520
+ error: describeError(error),
521
+ });
522
+ })));
523
+ const result = await Effect.runPromise(withTemporalRetry(effect, retryPolicy));
524
+ if (attempt > 1) {
525
+ this.#log('info', `temporal rpc ${operation} succeeded after ${attempt} attempts`, {
526
+ operation,
527
+ attempts: attempt,
528
+ });
529
+ }
530
+ return result;
531
+ }
532
+ toStartWorkflowResult(response, metadata) {
533
+ const runId = ensureNonEmptyString(response.runId, 'runId');
534
+ const workflowId = ensureNonEmptyString(metadata.workflowId, 'workflowId');
535
+ const namespace = ensureNonEmptyString(metadata.namespace, 'namespace');
536
+ const firstExecutionRunId = metadata.firstExecutionRunId
537
+ ? ensureNonEmptyString(metadata.firstExecutionRunId, 'firstExecutionRunId')
538
+ : undefined;
539
+ const parsed = {
540
+ runId,
541
+ workflowId,
542
+ namespace,
543
+ firstExecutionRunId,
544
+ };
545
+ return {
546
+ ...parsed,
547
+ handle: createWorkflowHandle(parsed),
548
+ };
549
+ }
550
+ async parseQueryResult(response) {
551
+ if (response.queryRejected) {
552
+ throw new ConnectError('Temporal query was rejected', Code.FailedPrecondition, undefined, undefined, {
553
+ message: response.queryRejected.status.toString(),
554
+ });
555
+ }
556
+ const payloads = response.queryResult?.payloads ?? [];
557
+ if (!payloads.length) {
558
+ return null;
559
+ }
560
+ const [value] = await decodePayloadsToValues(this.dataConverter, payloads);
561
+ return value ?? null;
562
+ }
563
+ }
564
+ const ensureOptionalTrimmedString = (value, field, minLength = 0) => {
565
+ if (value === undefined) {
566
+ return undefined;
567
+ }
568
+ const trimmed = value.trim();
569
+ if (trimmed.length < minLength) {
570
+ throw new Error(`${field} must be at least ${minLength} characters`);
571
+ }
572
+ return trimmed;
573
+ };
574
+ const ensureNonEmptyString = (value, field) => {
575
+ const trimmed = ensureOptionalTrimmedString(value, field, 1);
576
+ if (trimmed === undefined) {
577
+ throw new Error(`${field} must be a non-empty string`);
578
+ }
579
+ return trimmed;
580
+ };
581
+ const ensureOptionalPositiveInteger = (value, field) => {
582
+ if (value === undefined) {
583
+ return undefined;
584
+ }
585
+ if (!Number.isInteger(value) || value <= 0) {
586
+ throw new Error(`${field} must be a positive integer`);
587
+ }
588
+ return value;
589
+ };
590
+ const ensureOptionalInteger = (value, field, minimum = Number.MIN_SAFE_INTEGER) => {
591
+ if (value === undefined) {
592
+ return undefined;
593
+ }
594
+ if (!Number.isInteger(value) || value < minimum) {
595
+ throw new Error(`${field} must be an integer greater than or equal to ${minimum}`);
596
+ }
597
+ return value;
598
+ };
599
+ const ensureOptionalPositiveNumber = (value, field) => {
600
+ if (value === undefined) {
601
+ return undefined;
602
+ }
603
+ if (Number.isNaN(value) || value <= 0) {
604
+ throw new Error(`${field} must be a positive number`);
605
+ }
606
+ return value;
607
+ };
608
+ const sanitizeRetryPolicy = (policy) => {
609
+ if (!policy) {
610
+ return undefined;
611
+ }
612
+ const sanitized = {};
613
+ sanitized.initialIntervalMs = ensureOptionalPositiveInteger(policy.initialIntervalMs, 'retryPolicy.initialIntervalMs');
614
+ sanitized.maximumIntervalMs = ensureOptionalPositiveInteger(policy.maximumIntervalMs, 'retryPolicy.maximumIntervalMs');
615
+ sanitized.maximumAttempts = ensureOptionalInteger(policy.maximumAttempts, 'retryPolicy.maximumAttempts', 0);
616
+ sanitized.backoffCoefficient = ensureOptionalPositiveNumber(policy.backoffCoefficient, 'retryPolicy.backoffCoefficient');
617
+ if (policy.nonRetryableErrorTypes !== undefined) {
618
+ if (!Array.isArray(policy.nonRetryableErrorTypes)) {
619
+ throw new Error('retryPolicy.nonRetryableErrorTypes must be an array when provided');
620
+ }
621
+ sanitized.nonRetryableErrorTypes = policy.nonRetryableErrorTypes.map((type, index) => ensureNonEmptyString(type, `retryPolicy.nonRetryableErrorTypes[${index}]`));
622
+ }
623
+ return sanitized;
624
+ };
625
+ const sanitizeStartWorkflowOptions = (options) => {
626
+ const sanitized = {
627
+ ...options,
628
+ workflowId: ensureNonEmptyString(options.workflowId, 'workflowId'),
629
+ workflowType: ensureNonEmptyString(options.workflowType, 'workflowType'),
630
+ };
631
+ sanitized.taskQueue = ensureOptionalTrimmedString(options.taskQueue, 'taskQueue', 1);
632
+ sanitized.namespace = ensureOptionalTrimmedString(options.namespace, 'namespace', 1);
633
+ sanitized.identity = ensureOptionalTrimmedString(options.identity, 'identity', 1);
634
+ sanitized.cronSchedule = ensureOptionalTrimmedString(options.cronSchedule, 'cronSchedule', 1);
635
+ sanitized.requestId = ensureOptionalTrimmedString(options.requestId, 'requestId', 1);
636
+ sanitized.workflowExecutionTimeoutMs = ensureOptionalPositiveInteger(options.workflowExecutionTimeoutMs, 'workflowExecutionTimeoutMs');
637
+ sanitized.workflowRunTimeoutMs = ensureOptionalPositiveInteger(options.workflowRunTimeoutMs, 'workflowRunTimeoutMs');
638
+ sanitized.workflowTaskTimeoutMs = ensureOptionalPositiveInteger(options.workflowTaskTimeoutMs, 'workflowTaskTimeoutMs');
639
+ sanitized.retryPolicy = sanitizeRetryPolicy(options.retryPolicy);
640
+ return sanitized;
641
+ };
642
+ const sanitizeTerminateWorkflowOptions = (options = {}) => {
643
+ if (options.details !== undefined && !Array.isArray(options.details)) {
644
+ throw new Error('details must be an array when provided');
645
+ }
646
+ return {
647
+ ...options,
648
+ reason: options.reason === undefined ? undefined : options.reason.trim(),
649
+ runId: ensureOptionalTrimmedString(options.runId, 'runId', 1),
650
+ firstExecutionRunId: ensureOptionalTrimmedString(options.firstExecutionRunId, 'firstExecutionRunId', 1),
651
+ };
652
+ };
653
+ const resolveHandle = (defaultNamespace, handle) => {
654
+ const workflowId = ensureNonEmptyString(handle.workflowId, 'workflowId');
655
+ const namespace = ensureOptionalTrimmedString(handle.namespace, 'namespace', 1) ?? defaultNamespace;
656
+ const runId = ensureOptionalTrimmedString(handle.runId, 'runId', 1);
657
+ const firstExecutionRunId = ensureOptionalTrimmedString(handle.firstExecutionRunId, 'firstExecutionRunId', 1);
658
+ return {
659
+ workflowId,
660
+ namespace,
661
+ runId,
662
+ firstExecutionRunId,
663
+ };
664
+ };
665
+ export { buildTransportOptions, normalizeTemporalAddress } from './client/transport';
666
+ //# sourceMappingURL=client.js.map