@shware/workflow 0.0.0-stage → 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 (442) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +154 -2
  3. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  4. package/dist/apns-relay.cjs +105 -0
  5. package/dist/apns-relay.cjs.map +1 -0
  6. package/dist/apns-relay.d.cts +28 -0
  7. package/dist/apns-relay.d.cts.map +1 -0
  8. package/dist/apns-relay.d.mts +28 -0
  9. package/dist/apns-relay.d.mts.map +1 -0
  10. package/dist/apns-relay.mjs +104 -0
  11. package/dist/apns-relay.mjs.map +1 -0
  12. package/dist/apns.cjs +121 -0
  13. package/dist/apns.cjs.map +1 -0
  14. package/dist/apns.d.cts +63 -0
  15. package/dist/apns.d.cts.map +1 -0
  16. package/dist/apns.d.mts +63 -0
  17. package/dist/apns.d.mts.map +1 -0
  18. package/dist/apns.mjs +116 -0
  19. package/dist/apns.mjs.map +1 -0
  20. package/dist/client.cjs +125 -0
  21. package/dist/client.cjs.map +1 -0
  22. package/dist/client.d.cts +108 -0
  23. package/dist/client.d.cts.map +1 -0
  24. package/dist/client.d.mts +108 -0
  25. package/dist/client.d.mts.map +1 -0
  26. package/dist/client.mjs +122 -0
  27. package/dist/client.mjs.map +1 -0
  28. package/dist/cloudflare/bindings.cjs +28 -0
  29. package/dist/cloudflare/bindings.cjs.map +1 -0
  30. package/dist/cloudflare/bindings.d.cts +144 -0
  31. package/dist/cloudflare/bindings.d.cts.map +1 -0
  32. package/dist/cloudflare/bindings.d.mts +144 -0
  33. package/dist/cloudflare/bindings.d.mts.map +1 -0
  34. package/dist/cloudflare/bindings.mjs +25 -0
  35. package/dist/cloudflare/bindings.mjs.map +1 -0
  36. package/dist/cloudflare/channels.cjs +164 -0
  37. package/dist/cloudflare/channels.cjs.map +1 -0
  38. package/dist/cloudflare/channels.d.cts +29 -0
  39. package/dist/cloudflare/channels.d.cts.map +1 -0
  40. package/dist/cloudflare/channels.d.mts +29 -0
  41. package/dist/cloudflare/channels.d.mts.map +1 -0
  42. package/dist/cloudflare/channels.mjs +161 -0
  43. package/dist/cloudflare/channels.mjs.map +1 -0
  44. package/dist/cloudflare/d1-env.cjs +17 -0
  45. package/dist/cloudflare/d1-env.cjs.map +1 -0
  46. package/dist/cloudflare/d1-env.d.cts +12 -0
  47. package/dist/cloudflare/d1-env.d.cts.map +1 -0
  48. package/dist/cloudflare/d1-env.d.mts +12 -0
  49. package/dist/cloudflare/d1-env.d.mts.map +1 -0
  50. package/dist/cloudflare/d1-env.mjs +16 -0
  51. package/dist/cloudflare/d1-env.mjs.map +1 -0
  52. package/dist/cloudflare/index.cjs +54 -0
  53. package/dist/cloudflare/index.d.cts +19 -0
  54. package/dist/cloudflare/index.d.mts +19 -0
  55. package/dist/cloudflare/index.mjs +16 -0
  56. package/dist/cloudflare/router.cjs +516 -0
  57. package/dist/cloudflare/router.cjs.map +1 -0
  58. package/dist/cloudflare/router.d.cts +157 -0
  59. package/dist/cloudflare/router.d.cts.map +1 -0
  60. package/dist/cloudflare/router.d.mts +157 -0
  61. package/dist/cloudflare/router.d.mts.map +1 -0
  62. package/dist/cloudflare/router.mjs +503 -0
  63. package/dist/cloudflare/router.mjs.map +1 -0
  64. package/dist/cloudflare/runner.cjs +225 -0
  65. package/dist/cloudflare/runner.cjs.map +1 -0
  66. package/dist/cloudflare/runner.d.cts +73 -0
  67. package/dist/cloudflare/runner.d.cts.map +1 -0
  68. package/dist/cloudflare/runner.d.mts +73 -0
  69. package/dist/cloudflare/runner.d.mts.map +1 -0
  70. package/dist/cloudflare/runner.mjs +224 -0
  71. package/dist/cloudflare/runner.mjs.map +1 -0
  72. package/dist/cloudflare/schema.sql +127 -0
  73. package/dist/cloudflare/senders.cjs +114 -0
  74. package/dist/cloudflare/senders.cjs.map +1 -0
  75. package/dist/cloudflare/senders.d.cts +68 -0
  76. package/dist/cloudflare/senders.d.cts.map +1 -0
  77. package/dist/cloudflare/senders.d.mts +68 -0
  78. package/dist/cloudflare/senders.d.mts.map +1 -0
  79. package/dist/cloudflare/senders.mjs +108 -0
  80. package/dist/cloudflare/senders.mjs.map +1 -0
  81. package/dist/cloudflare/worker.cjs +228 -0
  82. package/dist/cloudflare/worker.cjs.map +1 -0
  83. package/dist/cloudflare/worker.d.cts +92 -0
  84. package/dist/cloudflare/worker.d.cts.map +1 -0
  85. package/dist/cloudflare/worker.d.mts +92 -0
  86. package/dist/cloudflare/worker.d.mts.map +1 -0
  87. package/dist/cloudflare/worker.mjs +224 -0
  88. package/dist/cloudflare/worker.mjs.map +1 -0
  89. package/dist/cloudflare/workers.d.cjs +0 -0
  90. package/dist/cloudflare/workers.d.cts +44 -0
  91. package/dist/cloudflare/workers.d.cts.map +1 -0
  92. package/dist/cloudflare/workers.d.mts +44 -0
  93. package/dist/cloudflare/workers.d.mts.map +1 -0
  94. package/dist/config.cjs +151 -0
  95. package/dist/config.cjs.map +1 -0
  96. package/dist/config.d.cts +149 -0
  97. package/dist/config.d.cts.map +1 -0
  98. package/dist/config.d.mts +149 -0
  99. package/dist/config.d.mts.map +1 -0
  100. package/dist/config.mjs +143 -0
  101. package/dist/config.mjs.map +1 -0
  102. package/dist/contract.cjs +212 -0
  103. package/dist/contract.cjs.map +1 -0
  104. package/dist/contract.d.cts +90 -0
  105. package/dist/contract.d.cts.map +1 -0
  106. package/dist/contract.d.mts +90 -0
  107. package/dist/contract.d.mts.map +1 -0
  108. package/dist/contract.mjs +206 -0
  109. package/dist/contract.mjs.map +1 -0
  110. package/dist/dsl/action.cjs +29 -0
  111. package/dist/dsl/action.cjs.map +1 -0
  112. package/dist/dsl/action.d.cts +64 -0
  113. package/dist/dsl/action.d.cts.map +1 -0
  114. package/dist/dsl/action.d.mts +64 -0
  115. package/dist/dsl/action.d.mts.map +1 -0
  116. package/dist/dsl/action.mjs +28 -0
  117. package/dist/dsl/action.mjs.map +1 -0
  118. package/dist/dsl/base.cjs +34 -0
  119. package/dist/dsl/base.cjs.map +1 -0
  120. package/dist/dsl/base.d.cts +45 -0
  121. package/dist/dsl/base.d.cts.map +1 -0
  122. package/dist/dsl/base.d.mts +45 -0
  123. package/dist/dsl/base.d.mts.map +1 -0
  124. package/dist/dsl/base.mjs +30 -0
  125. package/dist/dsl/base.mjs.map +1 -0
  126. package/dist/dsl/bundle.cjs +207 -0
  127. package/dist/dsl/bundle.cjs.map +1 -0
  128. package/dist/dsl/bundle.d.cts +19 -0
  129. package/dist/dsl/bundle.d.cts.map +1 -0
  130. package/dist/dsl/bundle.d.mts +19 -0
  131. package/dist/dsl/bundle.d.mts.map +1 -0
  132. package/dist/dsl/bundle.mjs +206 -0
  133. package/dist/dsl/bundle.mjs.map +1 -0
  134. package/dist/dsl/condition.cjs +177 -0
  135. package/dist/dsl/condition.cjs.map +1 -0
  136. package/dist/dsl/condition.d.cts +140 -0
  137. package/dist/dsl/condition.d.cts.map +1 -0
  138. package/dist/dsl/condition.d.mts +140 -0
  139. package/dist/dsl/condition.d.mts.map +1 -0
  140. package/dist/dsl/condition.mjs +156 -0
  141. package/dist/dsl/condition.mjs.map +1 -0
  142. package/dist/dsl/flow.cjs +228 -0
  143. package/dist/dsl/flow.cjs.map +1 -0
  144. package/dist/dsl/flow.d.cts +223 -0
  145. package/dist/dsl/flow.d.cts.map +1 -0
  146. package/dist/dsl/flow.d.mts +223 -0
  147. package/dist/dsl/flow.d.mts.map +1 -0
  148. package/dist/dsl/flow.mjs +226 -0
  149. package/dist/dsl/flow.mjs.map +1 -0
  150. package/dist/dsl/index.cjs +38 -0
  151. package/dist/dsl/index.d.cts +10 -0
  152. package/dist/dsl/index.d.mts +10 -0
  153. package/dist/dsl/index.mjs +9 -0
  154. package/dist/dsl/refs.cjs +59 -0
  155. package/dist/dsl/refs.cjs.map +1 -0
  156. package/dist/dsl/refs.d.cts +88 -0
  157. package/dist/dsl/refs.d.cts.map +1 -0
  158. package/dist/dsl/refs.d.mts +88 -0
  159. package/dist/dsl/refs.d.mts.map +1 -0
  160. package/dist/dsl/refs.mjs +55 -0
  161. package/dist/dsl/refs.mjs.map +1 -0
  162. package/dist/dsl/template.cjs +65 -0
  163. package/dist/dsl/template.cjs.map +1 -0
  164. package/dist/dsl/template.d.cts +75 -0
  165. package/dist/dsl/template.d.cts.map +1 -0
  166. package/dist/dsl/template.d.mts +75 -0
  167. package/dist/dsl/template.d.mts.map +1 -0
  168. package/dist/dsl/template.mjs +63 -0
  169. package/dist/dsl/template.mjs.map +1 -0
  170. package/dist/dsl/trigger.cjs +40 -0
  171. package/dist/dsl/trigger.cjs.map +1 -0
  172. package/dist/dsl/trigger.d.cts +65 -0
  173. package/dist/dsl/trigger.d.cts.map +1 -0
  174. package/dist/dsl/trigger.d.mts +65 -0
  175. package/dist/dsl/trigger.d.mts.map +1 -0
  176. package/dist/dsl/trigger.mjs +39 -0
  177. package/dist/dsl/trigger.mjs.map +1 -0
  178. package/dist/dsl/workflow.cjs +121 -0
  179. package/dist/dsl/workflow.cjs.map +1 -0
  180. package/dist/dsl/workflow.d.cts +59 -0
  181. package/dist/dsl/workflow.d.cts.map +1 -0
  182. package/dist/dsl/workflow.d.mts +59 -0
  183. package/dist/dsl/workflow.d.mts.map +1 -0
  184. package/dist/dsl/workflow.mjs +120 -0
  185. package/dist/dsl/workflow.mjs.map +1 -0
  186. package/dist/engine/actions.cjs +27 -0
  187. package/dist/engine/actions.cjs.map +1 -0
  188. package/dist/engine/actions.d.cts +40 -0
  189. package/dist/engine/actions.d.cts.map +1 -0
  190. package/dist/engine/actions.d.mts +40 -0
  191. package/dist/engine/actions.d.mts.map +1 -0
  192. package/dist/engine/actions.mjs +26 -0
  193. package/dist/engine/actions.mjs.map +1 -0
  194. package/dist/engine/bucket.cjs +72 -0
  195. package/dist/engine/bucket.cjs.map +1 -0
  196. package/dist/engine/bucket.d.cts +32 -0
  197. package/dist/engine/bucket.d.cts.map +1 -0
  198. package/dist/engine/bucket.d.mts +32 -0
  199. package/dist/engine/bucket.d.mts.map +1 -0
  200. package/dist/engine/bucket.mjs +69 -0
  201. package/dist/engine/bucket.mjs.map +1 -0
  202. package/dist/engine/condition.cjs +166 -0
  203. package/dist/engine/condition.cjs.map +1 -0
  204. package/dist/engine/condition.d.cts +52 -0
  205. package/dist/engine/condition.d.cts.map +1 -0
  206. package/dist/engine/condition.d.mts +52 -0
  207. package/dist/engine/condition.d.mts.map +1 -0
  208. package/dist/engine/condition.mjs +161 -0
  209. package/dist/engine/condition.mjs.map +1 -0
  210. package/dist/engine/index.cjs +20 -0
  211. package/dist/engine/index.d.cts +8 -0
  212. package/dist/engine/index.d.mts +8 -0
  213. package/dist/engine/index.mjs +7 -0
  214. package/dist/engine/interpreter.cjs +428 -0
  215. package/dist/engine/interpreter.cjs.map +1 -0
  216. package/dist/engine/interpreter.d.cts +6 -0
  217. package/dist/engine/interpreter.d.cts.map +1 -0
  218. package/dist/engine/interpreter.d.mts +6 -0
  219. package/dist/engine/interpreter.d.mts.map +1 -0
  220. package/dist/engine/interpreter.mjs +427 -0
  221. package/dist/engine/interpreter.mjs.map +1 -0
  222. package/dist/engine/ports.cjs +0 -0
  223. package/dist/engine/ports.d.cts +252 -0
  224. package/dist/engine/ports.d.cts.map +1 -0
  225. package/dist/engine/ports.d.mts +252 -0
  226. package/dist/engine/ports.d.mts.map +1 -0
  227. package/dist/engine/ports.mjs +1 -0
  228. package/dist/engine/recipient.cjs +23 -0
  229. package/dist/engine/recipient.cjs.map +1 -0
  230. package/dist/engine/recipient.d.cts +13 -0
  231. package/dist/engine/recipient.d.cts.map +1 -0
  232. package/dist/engine/recipient.d.mts +13 -0
  233. package/dist/engine/recipient.d.mts.map +1 -0
  234. package/dist/engine/recipient.mjs +22 -0
  235. package/dist/engine/recipient.mjs.map +1 -0
  236. package/dist/engine/time-scale.cjs +54 -0
  237. package/dist/engine/time-scale.cjs.map +1 -0
  238. package/dist/engine/time-scale.d.cts +31 -0
  239. package/dist/engine/time-scale.d.cts.map +1 -0
  240. package/dist/engine/time-scale.d.mts +31 -0
  241. package/dist/engine/time-scale.d.mts.map +1 -0
  242. package/dist/engine/time-scale.mjs +52 -0
  243. package/dist/engine/time-scale.mjs.map +1 -0
  244. package/dist/engine/time-window.cjs +149 -0
  245. package/dist/engine/time-window.cjs.map +1 -0
  246. package/dist/engine/time-window.d.cts +22 -0
  247. package/dist/engine/time-window.d.cts.map +1 -0
  248. package/dist/engine/time-window.d.mts +22 -0
  249. package/dist/engine/time-window.d.mts.map +1 -0
  250. package/dist/engine/time-window.mjs +147 -0
  251. package/dist/engine/time-window.mjs.map +1 -0
  252. package/dist/fcm.cjs +125 -0
  253. package/dist/fcm.cjs.map +1 -0
  254. package/dist/fcm.d.cts +48 -0
  255. package/dist/fcm.d.cts.map +1 -0
  256. package/dist/fcm.d.mts +48 -0
  257. package/dist/fcm.d.mts.map +1 -0
  258. package/dist/fcm.mjs +121 -0
  259. package/dist/fcm.mjs.map +1 -0
  260. package/dist/hash.cjs +245 -0
  261. package/dist/hash.cjs.map +1 -0
  262. package/dist/hash.d.cts +30 -0
  263. package/dist/hash.d.cts.map +1 -0
  264. package/dist/hash.d.mts +30 -0
  265. package/dist/hash.d.mts.map +1 -0
  266. package/dist/hash.mjs +239 -0
  267. package/dist/hash.mjs.map +1 -0
  268. package/dist/index.cjs +100 -0
  269. package/dist/index.d.cts +18 -0
  270. package/dist/index.d.mts +18 -0
  271. package/dist/index.mjs +17 -0
  272. package/dist/ir.cjs +366 -0
  273. package/dist/ir.cjs.map +1 -0
  274. package/dist/ir.d.cts +486 -0
  275. package/dist/ir.d.cts.map +1 -0
  276. package/dist/ir.d.mts +486 -0
  277. package/dist/ir.d.mts.map +1 -0
  278. package/dist/ir.mjs +344 -0
  279. package/dist/ir.mjs.map +1 -0
  280. package/dist/jwt.cjs +22 -0
  281. package/dist/jwt.cjs.map +1 -0
  282. package/dist/jwt.d.cts +9 -0
  283. package/dist/jwt.d.cts.map +1 -0
  284. package/dist/jwt.d.mts +9 -0
  285. package/dist/jwt.d.mts.map +1 -0
  286. package/dist/jwt.mjs +20 -0
  287. package/dist/jwt.mjs.map +1 -0
  288. package/dist/plan.cjs +223 -0
  289. package/dist/plan.cjs.map +1 -0
  290. package/dist/plan.d.cts +68 -0
  291. package/dist/plan.d.cts.map +1 -0
  292. package/dist/plan.d.mts +68 -0
  293. package/dist/plan.d.mts.map +1 -0
  294. package/dist/plan.mjs +221 -0
  295. package/dist/plan.mjs.map +1 -0
  296. package/dist/postgres-js.cjs +42 -0
  297. package/dist/postgres-js.cjs.map +1 -0
  298. package/dist/postgres-js.d.cts +28 -0
  299. package/dist/postgres-js.d.cts.map +1 -0
  300. package/dist/postgres-js.d.mts +28 -0
  301. package/dist/postgres-js.d.mts.map +1 -0
  302. package/dist/postgres-js.mjs +38 -0
  303. package/dist/postgres-js.mjs.map +1 -0
  304. package/dist/provenance.cjs +67 -0
  305. package/dist/provenance.cjs.map +1 -0
  306. package/dist/provenance.d.cts +41 -0
  307. package/dist/provenance.d.cts.map +1 -0
  308. package/dist/provenance.d.mts +41 -0
  309. package/dist/provenance.d.mts.map +1 -0
  310. package/dist/provenance.mjs +65 -0
  311. package/dist/provenance.mjs.map +1 -0
  312. package/dist/push.cjs +14 -0
  313. package/dist/push.cjs.map +1 -0
  314. package/dist/push.d.cts +16 -0
  315. package/dist/push.d.cts.map +1 -0
  316. package/dist/push.d.mts +16 -0
  317. package/dist/push.d.mts.map +1 -0
  318. package/dist/push.mjs +13 -0
  319. package/dist/push.mjs.map +1 -0
  320. package/dist/react-email.cjs +48 -0
  321. package/dist/react-email.cjs.map +1 -0
  322. package/dist/react-email.d.cts +7 -0
  323. package/dist/react-email.d.cts.map +1 -0
  324. package/dist/react-email.d.mts +7 -0
  325. package/dist/react-email.d.mts.map +1 -0
  326. package/dist/react-email.mjs +47 -0
  327. package/dist/react-email.mjs.map +1 -0
  328. package/dist/reporting/classify.cjs +42 -0
  329. package/dist/reporting/classify.cjs.map +1 -0
  330. package/dist/reporting/classify.d.cts +60 -0
  331. package/dist/reporting/classify.d.cts.map +1 -0
  332. package/dist/reporting/classify.d.mts +60 -0
  333. package/dist/reporting/classify.d.mts.map +1 -0
  334. package/dist/reporting/classify.mjs +38 -0
  335. package/dist/reporting/classify.mjs.map +1 -0
  336. package/dist/reporting/observer.cjs +63 -0
  337. package/dist/reporting/observer.cjs.map +1 -0
  338. package/dist/reporting/observer.d.cts +18 -0
  339. package/dist/reporting/observer.d.cts.map +1 -0
  340. package/dist/reporting/observer.d.mts +18 -0
  341. package/dist/reporting/observer.d.mts.map +1 -0
  342. package/dist/reporting/observer.mjs +62 -0
  343. package/dist/reporting/observer.mjs.map +1 -0
  344. package/dist/reporting/tracking.cjs +153 -0
  345. package/dist/reporting/tracking.cjs.map +1 -0
  346. package/dist/reporting/tracking.d.cts +43 -0
  347. package/dist/reporting/tracking.d.cts.map +1 -0
  348. package/dist/reporting/tracking.d.mts +43 -0
  349. package/dist/reporting/tracking.d.mts.map +1 -0
  350. package/dist/reporting/tracking.mjs +151 -0
  351. package/dist/reporting/tracking.mjs.map +1 -0
  352. package/dist/runtime.cjs +19 -0
  353. package/dist/runtime.cjs.map +1 -0
  354. package/dist/runtime.d.cts +30 -0
  355. package/dist/runtime.d.cts.map +1 -0
  356. package/dist/runtime.d.mts +30 -0
  357. package/dist/runtime.d.mts.map +1 -0
  358. package/dist/runtime.mjs +18 -0
  359. package/dist/runtime.mjs.map +1 -0
  360. package/dist/store/d1.cjs +185 -0
  361. package/dist/store/d1.cjs.map +1 -0
  362. package/dist/store/d1.d.cts +55 -0
  363. package/dist/store/d1.d.cts.map +1 -0
  364. package/dist/store/d1.d.mts +55 -0
  365. package/dist/store/d1.d.mts.map +1 -0
  366. package/dist/store/d1.mjs +184 -0
  367. package/dist/store/d1.mjs.map +1 -0
  368. package/dist/store/facts.cjs +60 -0
  369. package/dist/store/facts.cjs.map +1 -0
  370. package/dist/store/facts.d.cts +38 -0
  371. package/dist/store/facts.d.cts.map +1 -0
  372. package/dist/store/facts.d.mts +38 -0
  373. package/dist/store/facts.d.mts.map +1 -0
  374. package/dist/store/facts.mjs +58 -0
  375. package/dist/store/facts.mjs.map +1 -0
  376. package/dist/store/index.cjs +31 -0
  377. package/dist/store/index.cjs.map +1 -0
  378. package/dist/store/index.d.cts +291 -0
  379. package/dist/store/index.d.cts.map +1 -0
  380. package/dist/store/index.d.mts +291 -0
  381. package/dist/store/index.d.mts.map +1 -0
  382. package/dist/store/index.mjs +22 -0
  383. package/dist/store/index.mjs.map +1 -0
  384. package/dist/store/postgres-reporting.cjs +213 -0
  385. package/dist/store/postgres-reporting.cjs.map +1 -0
  386. package/dist/store/postgres-reporting.d.cts +63 -0
  387. package/dist/store/postgres-reporting.d.cts.map +1 -0
  388. package/dist/store/postgres-reporting.d.mts +63 -0
  389. package/dist/store/postgres-reporting.d.mts.map +1 -0
  390. package/dist/store/postgres-reporting.mjs +212 -0
  391. package/dist/store/postgres-reporting.mjs.map +1 -0
  392. package/dist/store/postgres.cjs +309 -0
  393. package/dist/store/postgres.cjs.map +1 -0
  394. package/dist/store/postgres.d.cts +77 -0
  395. package/dist/store/postgres.d.cts.map +1 -0
  396. package/dist/store/postgres.d.mts +77 -0
  397. package/dist/store/postgres.d.mts.map +1 -0
  398. package/dist/store/postgres.mjs +306 -0
  399. package/dist/store/postgres.mjs.map +1 -0
  400. package/dist/store/sql.cjs +24 -0
  401. package/dist/store/sql.cjs.map +1 -0
  402. package/dist/store/sql.d.cts +25 -0
  403. package/dist/store/sql.d.cts.map +1 -0
  404. package/dist/store/sql.d.mts +25 -0
  405. package/dist/store/sql.d.mts.map +1 -0
  406. package/dist/store/sql.mjs +23 -0
  407. package/dist/store/sql.mjs.map +1 -0
  408. package/dist/store/tables.cjs +404 -0
  409. package/dist/store/tables.cjs.map +1 -0
  410. package/dist/store/tables.d.cts +81 -0
  411. package/dist/store/tables.d.cts.map +1 -0
  412. package/dist/store/tables.d.mts +81 -0
  413. package/dist/store/tables.d.mts.map +1 -0
  414. package/dist/store/tables.mjs +399 -0
  415. package/dist/store/tables.mjs.map +1 -0
  416. package/dist/templates.cjs +247 -0
  417. package/dist/templates.cjs.map +1 -0
  418. package/dist/templates.d.cts +187 -0
  419. package/dist/templates.d.cts.map +1 -0
  420. package/dist/templates.d.mts +187 -0
  421. package/dist/templates.d.mts.map +1 -0
  422. package/dist/templates.mjs +230 -0
  423. package/dist/templates.mjs.map +1 -0
  424. package/dist/webhooks.cjs +96 -0
  425. package/dist/webhooks.cjs.map +1 -0
  426. package/dist/webhooks.d.cts +25 -0
  427. package/dist/webhooks.d.cts.map +1 -0
  428. package/dist/webhooks.d.mts +25 -0
  429. package/dist/webhooks.d.mts.map +1 -0
  430. package/dist/webhooks.mjs +94 -0
  431. package/dist/webhooks.mjs.map +1 -0
  432. package/dist/webpush.cjs +180 -0
  433. package/dist/webpush.cjs.map +1 -0
  434. package/dist/webpush.d.cts +53 -0
  435. package/dist/webpush.d.cts.map +1 -0
  436. package/dist/webpush.d.mts +53 -0
  437. package/dist/webpush.d.mts.map +1 -0
  438. package/dist/webpush.mjs +175 -0
  439. package/dist/webpush.mjs.map +1 -0
  440. package/package.json +189 -3
  441. package/src/cloudflare/schema.sql +127 -0
  442. package/src/cloudflare/workers.d.ts +44 -0
@@ -0,0 +1,157 @@
1
+ import { TriggerIR } from "../ir.cjs";
2
+ import { Contract } from "../contract.cjs";
3
+ import { JourneyEnv } from "./bindings.cjs";
4
+ import { JourneyStore, ProfileProps } from "../store/index.cjs";
5
+ //#region src/cloudflare/router.d.ts
6
+ /**
7
+ * Ingest router. An incoming event does four things: it is stored, it wakes
8
+ * waiting instances, it is matched against event triggers, and it re-evaluates
9
+ * segment-trigger membership. Plus /deploy (persist a bundle) and /identify
10
+ * (merge a profile — which wakes property-condition waits via
11
+ * PROFILE_UPDATED_EVENT and re-evaluates segment triggers too).
12
+ *
13
+ * Storage goes through a JourneyStore; the `store` argument defaults to the
14
+ * D1 + KV store built from the env's bindings, so a Worker that only has those
15
+ * calls these functions exactly as before.
16
+ */
17
+ export interface IngestInput {
18
+ userId: string;
19
+ event: string;
20
+ payload?: Record<string, unknown>;
21
+ ts?: number;
22
+ /**
23
+ * This occurrence's identity, and with it the idempotency of sending it.
24
+ *
25
+ * Only the sender can know whether two deliveries describe one occurrence or
26
+ * two, so the engine does not decide: an id it has already stored makes the
27
+ * second delivery a no-op. That matters because ingest is reachable from two
28
+ * retrying callers — an HTTP client retrying a 500, and the interpreter's
29
+ * send_event step being retried after it already committed its row — and a
30
+ * second copy of an event silently changes every count- and window-based
31
+ * condition that reads the log.
32
+ *
33
+ * Callers that retry should send an id they can reproduce. Omitting it gets
34
+ * a fresh one, which records the event as its own occurrence.
35
+ */
36
+ id?: string;
37
+ }
38
+ export interface IngestResult {
39
+ /** The occurrence's identity: the caller's `id`, or the one minted for it. */
40
+ id: string;
41
+ /** False when that id was already in the log: nothing was written this time. */
42
+ stored: boolean;
43
+ woke: number;
44
+ started: string[];
45
+ }
46
+ export declare function ingestEvent(env: JourneyEnv, input: IngestInput, store?: JourneyStore): Promise<IngestResult>;
47
+ /**
48
+ * Segment-entry triggers, maintained lazily: on each ingest/identify for a
49
+ * user, re-evaluate every trigger-routed segment for that user and act on the
50
+ * membership transition (enter → start journeys, leave → drop membership so a
51
+ * later re-entry is observable). Purely time-driven drift (an inactivity
52
+ * segment turning true by clock alone) has no event to ride on: the scheduled
53
+ * sweep catches it (`sweepSegments`).
54
+ */
55
+ export declare function refreshSegmentTriggers(env: JourneyEnv, store: JourneyStore, userId: string, ts: number): Promise<string[]>;
56
+ export interface SweepResult {
57
+ users: number;
58
+ /** Journeys the segments' entries started. */
59
+ started: string[];
60
+ /** Each deployed segment's size after the sweep (empty when the store keeps no reporting). */
61
+ sizes: {
62
+ segment: string;
63
+ size: number;
64
+ }[];
65
+ }
66
+ /**
67
+ * The scheduled sweep: every deployed segment evaluated for every known user — the evaluator a
68
+ * journey's conditions run on, so a member is exactly who a journey would see in it. Membership
69
+ * follows (joiners keep the time they joined, leavers are removed), segment triggers start the
70
+ * journeys of whoever entered by the clock alone, and the store records each segment's size.
71
+ * It walks users one by one: fine for thousands, a large audience wants SQL-side evaluation.
72
+ */
73
+ export declare function sweepSegments(env: JourneyEnv, store: JourneyStore, now?: number): Promise<SweepResult>;
74
+ export interface IdentifyResult {
75
+ ok: true;
76
+ props: ProfileProps;
77
+ woke: number;
78
+ started: string[];
79
+ }
80
+ /**
81
+ * Merge-patch profile properties (a null removes one), then wake property waits
82
+ * and re-evaluate segment triggers. The merge is one statement in the store, so
83
+ * two identifies landing together cannot lose each other's fields.
84
+ */
85
+ export declare function identifyUser(env: JourneyEnv, userId: string, props: ProfileProps, store?: JourneyStore): Promise<IdentifyResult>;
86
+ export interface DeviceRegistration {
87
+ userId: string;
88
+ token: string;
89
+ platform: string;
90
+ ts?: number;
91
+ }
92
+ /**
93
+ * A push token registered for the user (or moved to them from another account: a token belongs
94
+ * to one user at a time). Wakes the waits that read devices (`reachable('push')` inside
95
+ * `waitUntil`), for the new owner and the previous one.
96
+ */
97
+ export declare function registerDevice(env: JourneyEnv, device: DeviceRegistration, store?: JourneyStore): Promise<{
98
+ ok: true;
99
+ woke: number;
100
+ }>;
101
+ /**
102
+ * Forget a user (a deleted account): the request is recorded first, then carried out. An
103
+ * instance that will not stop leaves it pending — nothing erased yet — and the scheduled sweep
104
+ * retries it; `erased: false` says so.
105
+ */
106
+ export declare function forgetUser(env: JourneyEnv, userId: string, store?: JourneyStore, now?: number): Promise<{
107
+ ok: true;
108
+ erased: boolean;
109
+ pending: string[];
110
+ }>;
111
+ /**
112
+ * The user signed out on the device: the token stays registered, bound to nobody, so the next
113
+ * sign-in only has to bind it again. Wakes the former owner's device waits (`reachable('push')`
114
+ * may no longer hold).
115
+ */
116
+ export declare function unbindDevice(env: JourneyEnv, token: string, store?: JourneyStore): Promise<{
117
+ ok: true;
118
+ woke: number;
119
+ }>;
120
+ /** A push token forgotten for good (the push service reports it gone); wakes its owner's device waits. */
121
+ export declare function removeDevice(env: JourneyEnv, token: string, store?: JourneyStore): Promise<{
122
+ ok: true;
123
+ woke: number;
124
+ }>;
125
+ export interface DeployResult {
126
+ workflows: string[];
127
+ /**
128
+ * Workflows whose trigger type has no runtime routing yet — they deploy (the
129
+ * IR is stored and versioned) but will never start until the routing lands.
130
+ * Currently: date (TODO — needs cron + Queues, instance creation is
131
+ * rate-limited and a date trigger fans out to the whole audience at once)
132
+ * and webhook (TODO — needs endpoint allocation).
133
+ */
134
+ unrouted: {
135
+ workflow: string;
136
+ trigger: TriggerIR['type'];
137
+ }[];
138
+ }
139
+ /** A bundle whose declared hashes do not describe its contents — rejected before anything is written. */
140
+ export declare class BundleIntegrityError extends Error {
141
+ constructor(message: string);
142
+ }
143
+ /** Bundle deploy, terraform-apply style: workflow bodies first (content-addressed, so a failed deploy leaves only harmless orphans), then the routing swap. */
144
+ export declare function deployBundle(env: JourneyEnv, bundle: unknown, store?: JourneyStore): Promise<DeployResult>;
145
+ /**
146
+ * How the ingest API applies a contract: 'enforce' refuses an invalid event or
147
+ * patch with a 400 before anything is stored, woken or started; 'report' logs
148
+ * the issues (event id, name, field paths — never the payload) and accepts it,
149
+ * for checking real producers before turning enforcement on.
150
+ */
151
+ export interface IngestValidation {
152
+ contract?: Contract | undefined;
153
+ mode?: 'enforce' | 'report' | undefined;
154
+ }
155
+ export declare function handleRequest(request: Request, env: JourneyEnv, store?: JourneyStore, validation?: IngestValidation): Promise<Response>;
156
+ //#endregion
157
+ //# sourceMappingURL=router.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.cts","names":[],"sources":["../../src/cloudflare/router.ts"],"mappings":";;;;;;;;;;;;;;;;iBAuCiB;EACf;EACA;EACA,UAAU;EACV;;;;;;;;;;;;;;;EAeA;;iBAGe;;EAEf;;EAEA;EACA;EACA;;wBAGoB,YACpB,KAAK,YACL,OAAO,aACP,QAAO,eACN,QAAQ;;;;;;;;;wBAsGW,uBACpB,KAAK,YACL,OAAO,cACP,gBACA,aACC;iBAgFc;EACf;;EAEA;;EAEA;IAAS;IAAiB;;;;;;;;;;wBAUN,cACpB,KAAK,YACL,OAAO,cACP,eACC,QAAQ;iBAqFM;EACf;EACA,OAAO;EACP;EACA;;;;;;;wBAQoB,aACpB,KAAK,YACL,gBACA,OAAO,cACP,QAAO,eACN,QAAQ;iBAUM;EACf;EACA;EACA;EACA;;;;;;;wBAQoB,eACpB,KAAK,YACL,QAAQ,oBACR,QAAO,eACN;EAAU;EAAU;;;;;;;wBAoED,WACpB,KAAK,YACL,gBACA,QAAO,cACP,eACC;EAAU;EAAU;EAAiB;;;;;;;wBAUlB,aACpB,KAAK,YACL,eACA,QAAO,eACN;EAAU;EAAU;;;wBAQD,aACpB,KAAK,YACL,eACA,QAAO,eACN;EAAU;EAAU;;iBASN;EACf;;;;;;;;EAQA;IAAY;IAAkB,SAAS;;;;qBAI5B,6BAA6B;EACxC,YAAY;;;wBAyCQ,aACpB,KAAK,YACL,iBACA,QAAO,eACN,QAAQ;;;;;;;iBA+CM;EACf,WAAW;EACX;;wBAGoB,cACpB,SAAS,SACT,KAAK,YACL,QAAO,cACP,aAAY,mBACX,QAAQ"}
@@ -0,0 +1,157 @@
1
+ import { TriggerIR } from "../ir.mjs";
2
+ import { Contract } from "../contract.mjs";
3
+ import { JourneyEnv } from "./bindings.mjs";
4
+ import { JourneyStore, ProfileProps } from "../store/index.mjs";
5
+ //#region src/cloudflare/router.d.ts
6
+ /**
7
+ * Ingest router. An incoming event does four things: it is stored, it wakes
8
+ * waiting instances, it is matched against event triggers, and it re-evaluates
9
+ * segment-trigger membership. Plus /deploy (persist a bundle) and /identify
10
+ * (merge a profile — which wakes property-condition waits via
11
+ * PROFILE_UPDATED_EVENT and re-evaluates segment triggers too).
12
+ *
13
+ * Storage goes through a JourneyStore; the `store` argument defaults to the
14
+ * D1 + KV store built from the env's bindings, so a Worker that only has those
15
+ * calls these functions exactly as before.
16
+ */
17
+ export interface IngestInput {
18
+ userId: string;
19
+ event: string;
20
+ payload?: Record<string, unknown>;
21
+ ts?: number;
22
+ /**
23
+ * This occurrence's identity, and with it the idempotency of sending it.
24
+ *
25
+ * Only the sender can know whether two deliveries describe one occurrence or
26
+ * two, so the engine does not decide: an id it has already stored makes the
27
+ * second delivery a no-op. That matters because ingest is reachable from two
28
+ * retrying callers — an HTTP client retrying a 500, and the interpreter's
29
+ * send_event step being retried after it already committed its row — and a
30
+ * second copy of an event silently changes every count- and window-based
31
+ * condition that reads the log.
32
+ *
33
+ * Callers that retry should send an id they can reproduce. Omitting it gets
34
+ * a fresh one, which records the event as its own occurrence.
35
+ */
36
+ id?: string;
37
+ }
38
+ export interface IngestResult {
39
+ /** The occurrence's identity: the caller's `id`, or the one minted for it. */
40
+ id: string;
41
+ /** False when that id was already in the log: nothing was written this time. */
42
+ stored: boolean;
43
+ woke: number;
44
+ started: string[];
45
+ }
46
+ export declare function ingestEvent(env: JourneyEnv, input: IngestInput, store?: JourneyStore): Promise<IngestResult>;
47
+ /**
48
+ * Segment-entry triggers, maintained lazily: on each ingest/identify for a
49
+ * user, re-evaluate every trigger-routed segment for that user and act on the
50
+ * membership transition (enter → start journeys, leave → drop membership so a
51
+ * later re-entry is observable). Purely time-driven drift (an inactivity
52
+ * segment turning true by clock alone) has no event to ride on: the scheduled
53
+ * sweep catches it (`sweepSegments`).
54
+ */
55
+ export declare function refreshSegmentTriggers(env: JourneyEnv, store: JourneyStore, userId: string, ts: number): Promise<string[]>;
56
+ export interface SweepResult {
57
+ users: number;
58
+ /** Journeys the segments' entries started. */
59
+ started: string[];
60
+ /** Each deployed segment's size after the sweep (empty when the store keeps no reporting). */
61
+ sizes: {
62
+ segment: string;
63
+ size: number;
64
+ }[];
65
+ }
66
+ /**
67
+ * The scheduled sweep: every deployed segment evaluated for every known user — the evaluator a
68
+ * journey's conditions run on, so a member is exactly who a journey would see in it. Membership
69
+ * follows (joiners keep the time they joined, leavers are removed), segment triggers start the
70
+ * journeys of whoever entered by the clock alone, and the store records each segment's size.
71
+ * It walks users one by one: fine for thousands, a large audience wants SQL-side evaluation.
72
+ */
73
+ export declare function sweepSegments(env: JourneyEnv, store: JourneyStore, now?: number): Promise<SweepResult>;
74
+ export interface IdentifyResult {
75
+ ok: true;
76
+ props: ProfileProps;
77
+ woke: number;
78
+ started: string[];
79
+ }
80
+ /**
81
+ * Merge-patch profile properties (a null removes one), then wake property waits
82
+ * and re-evaluate segment triggers. The merge is one statement in the store, so
83
+ * two identifies landing together cannot lose each other's fields.
84
+ */
85
+ export declare function identifyUser(env: JourneyEnv, userId: string, props: ProfileProps, store?: JourneyStore): Promise<IdentifyResult>;
86
+ export interface DeviceRegistration {
87
+ userId: string;
88
+ token: string;
89
+ platform: string;
90
+ ts?: number;
91
+ }
92
+ /**
93
+ * A push token registered for the user (or moved to them from another account: a token belongs
94
+ * to one user at a time). Wakes the waits that read devices (`reachable('push')` inside
95
+ * `waitUntil`), for the new owner and the previous one.
96
+ */
97
+ export declare function registerDevice(env: JourneyEnv, device: DeviceRegistration, store?: JourneyStore): Promise<{
98
+ ok: true;
99
+ woke: number;
100
+ }>;
101
+ /**
102
+ * Forget a user (a deleted account): the request is recorded first, then carried out. An
103
+ * instance that will not stop leaves it pending — nothing erased yet — and the scheduled sweep
104
+ * retries it; `erased: false` says so.
105
+ */
106
+ export declare function forgetUser(env: JourneyEnv, userId: string, store?: JourneyStore, now?: number): Promise<{
107
+ ok: true;
108
+ erased: boolean;
109
+ pending: string[];
110
+ }>;
111
+ /**
112
+ * The user signed out on the device: the token stays registered, bound to nobody, so the next
113
+ * sign-in only has to bind it again. Wakes the former owner's device waits (`reachable('push')`
114
+ * may no longer hold).
115
+ */
116
+ export declare function unbindDevice(env: JourneyEnv, token: string, store?: JourneyStore): Promise<{
117
+ ok: true;
118
+ woke: number;
119
+ }>;
120
+ /** A push token forgotten for good (the push service reports it gone); wakes its owner's device waits. */
121
+ export declare function removeDevice(env: JourneyEnv, token: string, store?: JourneyStore): Promise<{
122
+ ok: true;
123
+ woke: number;
124
+ }>;
125
+ export interface DeployResult {
126
+ workflows: string[];
127
+ /**
128
+ * Workflows whose trigger type has no runtime routing yet — they deploy (the
129
+ * IR is stored and versioned) but will never start until the routing lands.
130
+ * Currently: date (TODO — needs cron + Queues, instance creation is
131
+ * rate-limited and a date trigger fans out to the whole audience at once)
132
+ * and webhook (TODO — needs endpoint allocation).
133
+ */
134
+ unrouted: {
135
+ workflow: string;
136
+ trigger: TriggerIR['type'];
137
+ }[];
138
+ }
139
+ /** A bundle whose declared hashes do not describe its contents — rejected before anything is written. */
140
+ export declare class BundleIntegrityError extends Error {
141
+ constructor(message: string);
142
+ }
143
+ /** Bundle deploy, terraform-apply style: workflow bodies first (content-addressed, so a failed deploy leaves only harmless orphans), then the routing swap. */
144
+ export declare function deployBundle(env: JourneyEnv, bundle: unknown, store?: JourneyStore): Promise<DeployResult>;
145
+ /**
146
+ * How the ingest API applies a contract: 'enforce' refuses an invalid event or
147
+ * patch with a 400 before anything is stored, woken or started; 'report' logs
148
+ * the issues (event id, name, field paths — never the payload) and accepts it,
149
+ * for checking real producers before turning enforcement on.
150
+ */
151
+ export interface IngestValidation {
152
+ contract?: Contract | undefined;
153
+ mode?: 'enforce' | 'report' | undefined;
154
+ }
155
+ export declare function handleRequest(request: Request, env: JourneyEnv, store?: JourneyStore, validation?: IngestValidation): Promise<Response>;
156
+ //#endregion
157
+ //# sourceMappingURL=router.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.mts","names":[],"sources":["../../src/cloudflare/router.ts"],"mappings":";;;;;;;;;;;;;;;;iBAuCiB;EACf;EACA;EACA,UAAU;EACV;;;;;;;;;;;;;;;EAeA;;iBAGe;;EAEf;;EAEA;EACA;EACA;;wBAGoB,YACpB,KAAK,YACL,OAAO,aACP,QAAO,eACN,QAAQ;;;;;;;;;wBAsGW,uBACpB,KAAK,YACL,OAAO,cACP,gBACA,aACC;iBAgFc;EACf;;EAEA;;EAEA;IAAS;IAAiB;;;;;;;;;;wBAUN,cACpB,KAAK,YACL,OAAO,cACP,eACC,QAAQ;iBAqFM;EACf;EACA,OAAO;EACP;EACA;;;;;;;wBAQoB,aACpB,KAAK,YACL,gBACA,OAAO,cACP,QAAO,eACN,QAAQ;iBAUM;EACf;EACA;EACA;EACA;;;;;;;wBAQoB,eACpB,KAAK,YACL,QAAQ,oBACR,QAAO,eACN;EAAU;EAAU;;;;;;;wBAoED,WACpB,KAAK,YACL,gBACA,QAAO,cACP,eACC;EAAU;EAAU;EAAiB;;;;;;;wBAUlB,aACpB,KAAK,YACL,eACA,QAAO,eACN;EAAU;EAAU;;;wBAQD,aACpB,KAAK,YACL,eACA,QAAO,eACN;EAAU;EAAU;;iBASN;EACf;;;;;;;;EAQA;IAAY;IAAkB,SAAS;;;;qBAI5B,6BAA6B;EACxC,YAAY;;;wBAyCQ,aACpB,KAAK,YACL,iBACA,QAAO,eACN,QAAQ;;;;;;;iBA+CM;EACf,WAAW;EACX;;wBAGoB,cACpB,SAAS,SACT,KAAK,YACL,QAAO,cACP,aAAY,mBACX,QAAQ"}