flingit 0.0.62 → 0.0.65

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 (521) hide show
  1. package/dist/cli/commands/dev.d.ts.map +1 -1
  2. package/dist/cli/commands/dev.js +9 -5
  3. package/dist/cli/commands/dev.js.map +1 -1
  4. package/dist/cli/commands/email.d.ts +2 -0
  5. package/dist/cli/commands/email.d.ts.map +1 -1
  6. package/dist/cli/commands/email.js +3 -0
  7. package/dist/cli/commands/email.js.map +1 -1
  8. package/dist/cli/commands/workflow.d.ts +51 -0
  9. package/dist/cli/commands/workflow.d.ts.map +1 -0
  10. package/dist/cli/commands/workflow.js +479 -0
  11. package/dist/cli/commands/workflow.js.map +1 -0
  12. package/dist/cli/deploy/bundler.d.ts.map +1 -1
  13. package/dist/cli/deploy/bundler.js +17 -1
  14. package/dist/cli/deploy/bundler.js.map +1 -1
  15. package/dist/cli/index.d.ts.map +1 -1
  16. package/dist/cli/index.js +2 -0
  17. package/dist/cli/index.js.map +1 -1
  18. package/dist/index.d.ts +4 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +3 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/runtime/entry.d.ts +7 -0
  23. package/dist/runtime/entry.d.ts.map +1 -1
  24. package/dist/runtime/entry.js +71 -2
  25. package/dist/runtime/entry.js.map +1 -1
  26. package/dist/types/workflow.d.ts +82 -0
  27. package/dist/types/workflow.d.ts.map +1 -0
  28. package/dist/types/workflow.js +8 -0
  29. package/dist/types/workflow.js.map +1 -0
  30. package/dist/worker-runtime/d1-event-store.d.ts +22 -0
  31. package/dist/worker-runtime/d1-event-store.d.ts.map +1 -0
  32. package/dist/worker-runtime/d1-event-store.js +227 -0
  33. package/dist/worker-runtime/d1-event-store.js.map +1 -0
  34. package/dist/worker-runtime/entry-extract.d.ts.map +1 -1
  35. package/dist/worker-runtime/entry-extract.js +6 -3
  36. package/dist/worker-runtime/entry-extract.js.map +1 -1
  37. package/dist/worker-runtime/entry.d.ts.map +1 -1
  38. package/dist/worker-runtime/entry.js +105 -3
  39. package/dist/worker-runtime/entry.js.map +1 -1
  40. package/dist/worker-runtime/index.d.ts +2 -0
  41. package/dist/worker-runtime/index.d.ts.map +1 -1
  42. package/dist/worker-runtime/index.js +5 -0
  43. package/dist/worker-runtime/index.js.map +1 -1
  44. package/dist/workflow/runtime.d.ts +56 -0
  45. package/dist/workflow/runtime.d.ts.map +1 -0
  46. package/dist/workflow/runtime.js +450 -0
  47. package/dist/workflow/runtime.js.map +1 -0
  48. package/node_modules/@glideapps/ts-necessities/LICENSE +21 -0
  49. package/node_modules/@glideapps/ts-necessities/README.md +16 -0
  50. package/node_modules/@glideapps/ts-necessities/dist/branded-strings.d.ts +39 -0
  51. package/node_modules/@glideapps/ts-necessities/dist/default-map.d.ts +53 -0
  52. package/node_modules/@glideapps/ts-necessities/dist/index.d.mts +113 -0
  53. package/node_modules/@glideapps/ts-necessities/dist/index.d.ts +113 -0
  54. package/node_modules/@glideapps/ts-necessities/dist/index.js +237 -0
  55. package/node_modules/@glideapps/ts-necessities/dist/index.mjs +189 -0
  56. package/node_modules/@glideapps/ts-necessities/package.json +52 -0
  57. package/node_modules/@rollup/rollup-linux-x64-gnu/README.md +3 -0
  58. package/node_modules/@rollup/rollup-linux-x64-gnu/package.json +25 -0
  59. package/node_modules/@rollup/rollup-linux-x64-gnu/rollup.linux-x64-gnu.node +0 -0
  60. package/node_modules/base64-js/LICENSE +21 -0
  61. package/node_modules/base64-js/README.md +34 -0
  62. package/node_modules/base64-js/base64js.min.js +1 -0
  63. package/node_modules/base64-js/index.d.ts +3 -0
  64. package/node_modules/base64-js/index.js +150 -0
  65. package/node_modules/base64-js/package.json +47 -0
  66. package/node_modules/better-sqlite3/LICENSE +21 -0
  67. package/node_modules/better-sqlite3/README.md +99 -0
  68. package/node_modules/better-sqlite3/binding.gyp +38 -0
  69. package/node_modules/better-sqlite3/deps/common.gypi +68 -0
  70. package/node_modules/better-sqlite3/deps/copy.js +31 -0
  71. package/node_modules/better-sqlite3/deps/defines.gypi +41 -0
  72. package/node_modules/better-sqlite3/deps/download.sh +122 -0
  73. package/node_modules/better-sqlite3/deps/patches/1208.patch +15 -0
  74. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +265994 -0
  75. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +13968 -0
  76. package/node_modules/better-sqlite3/deps/sqlite3/sqlite3ext.h +730 -0
  77. package/node_modules/better-sqlite3/deps/sqlite3.gyp +80 -0
  78. package/node_modules/better-sqlite3/deps/test_extension.c +21 -0
  79. package/node_modules/better-sqlite3/lib/database.js +90 -0
  80. package/node_modules/better-sqlite3/lib/index.js +3 -0
  81. package/node_modules/better-sqlite3/lib/methods/aggregate.js +43 -0
  82. package/node_modules/better-sqlite3/lib/methods/backup.js +67 -0
  83. package/node_modules/better-sqlite3/lib/methods/function.js +31 -0
  84. package/node_modules/better-sqlite3/lib/methods/inspect.js +7 -0
  85. package/node_modules/better-sqlite3/lib/methods/pragma.js +12 -0
  86. package/node_modules/better-sqlite3/lib/methods/serialize.js +16 -0
  87. package/node_modules/better-sqlite3/lib/methods/table.js +189 -0
  88. package/node_modules/better-sqlite3/lib/methods/transaction.js +78 -0
  89. package/node_modules/better-sqlite3/lib/methods/wrappers.js +54 -0
  90. package/node_modules/better-sqlite3/lib/sqlite-error.js +20 -0
  91. package/node_modules/better-sqlite3/lib/util.js +12 -0
  92. package/node_modules/better-sqlite3/package.json +59 -0
  93. package/node_modules/better-sqlite3/src/addon.cpp +47 -0
  94. package/node_modules/better-sqlite3/src/better_sqlite3.cpp +74 -0
  95. package/node_modules/better-sqlite3/src/objects/backup.cpp +120 -0
  96. package/node_modules/better-sqlite3/src/objects/backup.hpp +36 -0
  97. package/node_modules/better-sqlite3/src/objects/database.cpp +417 -0
  98. package/node_modules/better-sqlite3/src/objects/database.hpp +103 -0
  99. package/node_modules/better-sqlite3/src/objects/statement-iterator.cpp +113 -0
  100. package/node_modules/better-sqlite3/src/objects/statement-iterator.hpp +50 -0
  101. package/node_modules/better-sqlite3/src/objects/statement.cpp +383 -0
  102. package/node_modules/better-sqlite3/src/objects/statement.hpp +58 -0
  103. package/node_modules/better-sqlite3/src/util/bind-map.cpp +73 -0
  104. package/node_modules/better-sqlite3/src/util/binder.cpp +193 -0
  105. package/node_modules/better-sqlite3/src/util/constants.cpp +172 -0
  106. package/node_modules/better-sqlite3/src/util/custom-aggregate.cpp +121 -0
  107. package/node_modules/better-sqlite3/src/util/custom-function.cpp +59 -0
  108. package/node_modules/better-sqlite3/src/util/custom-table.cpp +409 -0
  109. package/node_modules/better-sqlite3/src/util/data-converter.cpp +17 -0
  110. package/node_modules/better-sqlite3/src/util/data.cpp +194 -0
  111. package/node_modules/better-sqlite3/src/util/helpers.cpp +109 -0
  112. package/node_modules/better-sqlite3/src/util/macros.cpp +83 -0
  113. package/node_modules/better-sqlite3/src/util/query-macros.cpp +71 -0
  114. package/node_modules/better-sqlite3/src/util/row-builder.cpp +49 -0
  115. package/node_modules/bindings/LICENSE.md +22 -0
  116. package/node_modules/bindings/README.md +98 -0
  117. package/node_modules/bindings/bindings.js +221 -0
  118. package/node_modules/bindings/package.json +28 -0
  119. package/node_modules/bl/.travis.yml +17 -0
  120. package/node_modules/bl/BufferList.js +396 -0
  121. package/node_modules/bl/LICENSE.md +13 -0
  122. package/node_modules/bl/README.md +247 -0
  123. package/node_modules/bl/bl.js +84 -0
  124. package/node_modules/bl/package.json +37 -0
  125. package/node_modules/bl/test/convert.js +21 -0
  126. package/node_modules/bl/test/indexOf.js +492 -0
  127. package/node_modules/bl/test/isBufferList.js +32 -0
  128. package/node_modules/bl/test/test.js +869 -0
  129. package/node_modules/buffer/AUTHORS.md +70 -0
  130. package/node_modules/buffer/LICENSE +21 -0
  131. package/node_modules/buffer/README.md +410 -0
  132. package/node_modules/buffer/index.d.ts +186 -0
  133. package/node_modules/buffer/index.js +1817 -0
  134. package/node_modules/buffer/package.json +96 -0
  135. package/node_modules/chownr/LICENSE +15 -0
  136. package/node_modules/chownr/README.md +3 -0
  137. package/node_modules/chownr/chownr.js +167 -0
  138. package/node_modules/chownr/package.json +29 -0
  139. package/node_modules/decompress-response/index.d.ts +22 -0
  140. package/node_modules/decompress-response/index.js +58 -0
  141. package/node_modules/decompress-response/license +9 -0
  142. package/node_modules/decompress-response/package.json +56 -0
  143. package/node_modules/decompress-response/readme.md +48 -0
  144. package/node_modules/deep-extend/LICENSE +20 -0
  145. package/node_modules/deep-extend/README.md +91 -0
  146. package/node_modules/deep-extend/index.js +1 -0
  147. package/node_modules/deep-extend/lib/deep-extend.js +150 -0
  148. package/node_modules/deep-extend/package.json +62 -0
  149. package/node_modules/detect-libc/LICENSE +201 -0
  150. package/node_modules/detect-libc/README.md +163 -0
  151. package/node_modules/detect-libc/index.d.ts +14 -0
  152. package/node_modules/detect-libc/lib/detect-libc.js +313 -0
  153. package/node_modules/detect-libc/lib/elf.js +39 -0
  154. package/node_modules/detect-libc/lib/filesystem.js +51 -0
  155. package/node_modules/detect-libc/lib/process.js +24 -0
  156. package/node_modules/detect-libc/package.json +44 -0
  157. package/node_modules/determined/LICENSE +18 -0
  158. package/node_modules/determined/README.md +317 -0
  159. package/node_modules/determined/dist/index.cjs +370 -0
  160. package/node_modules/determined/dist/index.d.cts +110 -0
  161. package/node_modules/determined/dist/index.d.ts +110 -0
  162. package/node_modules/determined/dist/index.js +332 -0
  163. package/node_modules/determined/package.json +45 -0
  164. package/node_modules/end-of-stream/LICENSE +21 -0
  165. package/node_modules/end-of-stream/README.md +54 -0
  166. package/node_modules/end-of-stream/index.js +96 -0
  167. package/node_modules/end-of-stream/package.json +37 -0
  168. package/node_modules/expand-template/.travis.yml +6 -0
  169. package/node_modules/expand-template/LICENSE +21 -0
  170. package/node_modules/expand-template/README.md +43 -0
  171. package/node_modules/expand-template/index.js +26 -0
  172. package/node_modules/expand-template/package.json +29 -0
  173. package/node_modules/expand-template/test.js +67 -0
  174. package/node_modules/file-uri-to-path/.npmignore +1 -0
  175. package/node_modules/file-uri-to-path/.travis.yml +30 -0
  176. package/node_modules/file-uri-to-path/History.md +21 -0
  177. package/node_modules/file-uri-to-path/LICENSE +20 -0
  178. package/node_modules/file-uri-to-path/README.md +74 -0
  179. package/node_modules/file-uri-to-path/index.d.ts +2 -0
  180. package/node_modules/file-uri-to-path/index.js +66 -0
  181. package/node_modules/file-uri-to-path/package.json +32 -0
  182. package/node_modules/file-uri-to-path/test/test.js +24 -0
  183. package/node_modules/file-uri-to-path/test/tests.json +13 -0
  184. package/node_modules/flingflow/.nvmrc +1 -0
  185. package/node_modules/flingflow/AGENTS.md +5 -0
  186. package/node_modules/flingflow/README.md +679 -0
  187. package/node_modules/flingflow/SPEC.md +554 -0
  188. package/node_modules/flingflow/TESTING.md +506 -0
  189. package/node_modules/flingflow/dist/backoff.d.ts +9 -0
  190. package/node_modules/flingflow/dist/backoff.js +14 -0
  191. package/node_modules/flingflow/dist/backoff.js.map +1 -0
  192. package/node_modules/flingflow/dist/clock.d.ts +13 -0
  193. package/node_modules/flingflow/dist/clock.js +21 -0
  194. package/node_modules/flingflow/dist/clock.js.map +1 -0
  195. package/node_modules/flingflow/dist/context.d.ts +8 -0
  196. package/node_modules/flingflow/dist/context.js +45 -0
  197. package/node_modules/flingflow/dist/context.js.map +1 -0
  198. package/node_modules/flingflow/dist/engine.d.ts +29 -0
  199. package/node_modules/flingflow/dist/engine.js +306 -0
  200. package/node_modules/flingflow/dist/engine.js.map +1 -0
  201. package/node_modules/flingflow/dist/index.d.ts +18 -0
  202. package/node_modules/flingflow/dist/index.js +14 -0
  203. package/node_modules/flingflow/dist/index.js.map +1 -0
  204. package/node_modules/flingflow/dist/recovery.d.ts +16 -0
  205. package/node_modules/flingflow/dist/recovery.js +118 -0
  206. package/node_modules/flingflow/dist/recovery.js.map +1 -0
  207. package/node_modules/flingflow/dist/registry.d.ts +24 -0
  208. package/node_modules/flingflow/dist/registry.js +29 -0
  209. package/node_modules/flingflow/dist/registry.js.map +1 -0
  210. package/node_modules/flingflow/dist/store-memory.d.ts +29 -0
  211. package/node_modules/flingflow/dist/store-memory.js +349 -0
  212. package/node_modules/flingflow/dist/store-memory.js.map +1 -0
  213. package/node_modules/flingflow/dist/store-sqlite.d.ts +30 -0
  214. package/node_modules/flingflow/dist/store-sqlite.js +400 -0
  215. package/node_modules/flingflow/dist/store-sqlite.js.map +1 -0
  216. package/node_modules/flingflow/dist/store.d.ts +39 -0
  217. package/node_modules/flingflow/dist/store.js +21 -0
  218. package/node_modules/flingflow/dist/store.js.map +1 -0
  219. package/node_modules/flingflow/dist/stress.d.ts +1 -0
  220. package/node_modules/flingflow/dist/stress.js +377 -0
  221. package/node_modules/flingflow/dist/stress.js.map +1 -0
  222. package/node_modules/flingflow/dist/transitions.d.ts +14 -0
  223. package/node_modules/flingflow/dist/transitions.js +28 -0
  224. package/node_modules/flingflow/dist/transitions.js.map +1 -0
  225. package/node_modules/flingflow/dist/types.d.ts +114 -0
  226. package/node_modules/flingflow/dist/types.js +10 -0
  227. package/node_modules/flingflow/dist/types.js.map +1 -0
  228. package/node_modules/flingflow/eslint.config.js +94 -0
  229. package/node_modules/flingflow/package.json +66 -0
  230. package/node_modules/flingflow/src/backoff.ts +14 -0
  231. package/node_modules/flingflow/src/clock.ts +29 -0
  232. package/node_modules/flingflow/src/context.ts +60 -0
  233. package/node_modules/flingflow/src/engine.ts +367 -0
  234. package/node_modules/flingflow/src/index.ts +52 -0
  235. package/node_modules/flingflow/src/recovery.ts +144 -0
  236. package/node_modules/flingflow/src/registry.ts +52 -0
  237. package/node_modules/flingflow/src/store-memory.ts +378 -0
  238. package/node_modules/flingflow/src/store-sqlite.ts +451 -0
  239. package/node_modules/flingflow/src/store.ts +55 -0
  240. package/node_modules/flingflow/src/stress.ts +423 -0
  241. package/node_modules/flingflow/src/transitions.ts +38 -0
  242. package/node_modules/flingflow/src/types.ts +84 -0
  243. package/node_modules/flingflow/test/backoff.test.ts +54 -0
  244. package/node_modules/flingflow/test/context.test.ts +94 -0
  245. package/node_modules/flingflow/test/engine.test.ts +362 -0
  246. package/node_modules/flingflow/test/fixtures.ts +58 -0
  247. package/node_modules/flingflow/test/recovery.test.ts +176 -0
  248. package/node_modules/flingflow/test/simulation.test.ts +395 -0
  249. package/node_modules/flingflow/test/store-conformance.ts +344 -0
  250. package/node_modules/flingflow/test/store-memory.test.ts +8 -0
  251. package/node_modules/flingflow/test/store-sqlite.test.ts +8 -0
  252. package/node_modules/flingflow/tsconfig.json +18 -0
  253. package/node_modules/flingflow/tsconfig.lint.json +5 -0
  254. package/node_modules/flingflow/tsconfig.typecheck.json +20 -0
  255. package/node_modules/flingflow/vitest.config.ts +10 -0
  256. package/node_modules/fs-constants/LICENSE +21 -0
  257. package/node_modules/fs-constants/README.md +26 -0
  258. package/node_modules/fs-constants/browser.js +1 -0
  259. package/node_modules/fs-constants/index.js +1 -0
  260. package/node_modules/fs-constants/package.json +19 -0
  261. package/node_modules/github-from-package/.travis.yml +4 -0
  262. package/node_modules/github-from-package/LICENSE +18 -0
  263. package/node_modules/github-from-package/example/package.json +8 -0
  264. package/node_modules/github-from-package/example/url.js +3 -0
  265. package/node_modules/github-from-package/index.js +17 -0
  266. package/node_modules/github-from-package/package.json +30 -0
  267. package/node_modules/github-from-package/readme.markdown +53 -0
  268. package/node_modules/github-from-package/test/a.json +8 -0
  269. package/node_modules/github-from-package/test/b.json +5 -0
  270. package/node_modules/github-from-package/test/c.json +5 -0
  271. package/node_modules/github-from-package/test/d.json +7 -0
  272. package/node_modules/github-from-package/test/e.json +5 -0
  273. package/node_modules/github-from-package/test/url.js +19 -0
  274. package/node_modules/ieee754/LICENSE +11 -0
  275. package/node_modules/ieee754/README.md +51 -0
  276. package/node_modules/ieee754/index.d.ts +10 -0
  277. package/node_modules/ieee754/index.js +85 -0
  278. package/node_modules/ieee754/package.json +52 -0
  279. package/node_modules/inherits/LICENSE +16 -0
  280. package/node_modules/inherits/README.md +42 -0
  281. package/node_modules/inherits/inherits.js +9 -0
  282. package/node_modules/inherits/inherits_browser.js +27 -0
  283. package/node_modules/inherits/package.json +29 -0
  284. package/node_modules/ini/LICENSE +15 -0
  285. package/node_modules/ini/README.md +102 -0
  286. package/node_modules/ini/ini.js +206 -0
  287. package/node_modules/ini/package.json +33 -0
  288. package/node_modules/mimic-response/index.d.ts +17 -0
  289. package/node_modules/mimic-response/index.js +77 -0
  290. package/node_modules/mimic-response/license +9 -0
  291. package/node_modules/mimic-response/package.json +42 -0
  292. package/node_modules/mimic-response/readme.md +78 -0
  293. package/node_modules/minimist/.eslintrc +29 -0
  294. package/node_modules/minimist/.github/FUNDING.yml +12 -0
  295. package/node_modules/minimist/.nycrc +14 -0
  296. package/node_modules/minimist/CHANGELOG.md +298 -0
  297. package/node_modules/minimist/LICENSE +18 -0
  298. package/node_modules/minimist/README.md +121 -0
  299. package/node_modules/minimist/example/parse.js +4 -0
  300. package/node_modules/minimist/index.js +263 -0
  301. package/node_modules/minimist/package.json +75 -0
  302. package/node_modules/minimist/test/all_bool.js +34 -0
  303. package/node_modules/minimist/test/bool.js +177 -0
  304. package/node_modules/minimist/test/dash.js +43 -0
  305. package/node_modules/minimist/test/default_bool.js +37 -0
  306. package/node_modules/minimist/test/dotted.js +24 -0
  307. package/node_modules/minimist/test/kv_short.js +32 -0
  308. package/node_modules/minimist/test/long.js +33 -0
  309. package/node_modules/minimist/test/num.js +38 -0
  310. package/node_modules/minimist/test/parse.js +209 -0
  311. package/node_modules/minimist/test/parse_modified.js +11 -0
  312. package/node_modules/minimist/test/proto.js +64 -0
  313. package/node_modules/minimist/test/short.js +69 -0
  314. package/node_modules/minimist/test/stop_early.js +17 -0
  315. package/node_modules/minimist/test/unknown.js +104 -0
  316. package/node_modules/minimist/test/whitespace.js +10 -0
  317. package/node_modules/mkdirp-classic/LICENSE +21 -0
  318. package/node_modules/mkdirp-classic/README.md +18 -0
  319. package/node_modules/mkdirp-classic/index.js +98 -0
  320. package/node_modules/mkdirp-classic/package.json +18 -0
  321. package/node_modules/napi-build-utils/.github/workflows/run-npm-tests.yml +31 -0
  322. package/node_modules/napi-build-utils/LICENSE +21 -0
  323. package/node_modules/napi-build-utils/README.md +52 -0
  324. package/node_modules/napi-build-utils/index.js +214 -0
  325. package/node_modules/napi-build-utils/index.md +0 -0
  326. package/node_modules/napi-build-utils/package.json +42 -0
  327. package/node_modules/neverthrow/LICENSE +22 -0
  328. package/node_modules/neverthrow/README.md +1683 -0
  329. package/node_modules/neverthrow/dist/index.cjs.js +510 -0
  330. package/node_modules/neverthrow/dist/index.d.ts +408 -0
  331. package/node_modules/neverthrow/dist/index.es.js +497 -0
  332. package/node_modules/neverthrow/package.json +64 -0
  333. package/node_modules/node-abi/LICENSE +21 -0
  334. package/node_modules/node-abi/README.md +54 -0
  335. package/node_modules/node-abi/abi_registry.json +425 -0
  336. package/node_modules/node-abi/index.js +179 -0
  337. package/node_modules/node-abi/package.json +45 -0
  338. package/node_modules/once/LICENSE +15 -0
  339. package/node_modules/once/README.md +79 -0
  340. package/node_modules/once/once.js +42 -0
  341. package/node_modules/once/package.json +33 -0
  342. package/node_modules/prebuild-install/CHANGELOG.md +131 -0
  343. package/node_modules/prebuild-install/CONTRIBUTING.md +6 -0
  344. package/node_modules/prebuild-install/LICENSE +21 -0
  345. package/node_modules/prebuild-install/README.md +163 -0
  346. package/node_modules/prebuild-install/asset.js +44 -0
  347. package/node_modules/prebuild-install/bin.js +78 -0
  348. package/node_modules/prebuild-install/download.js +142 -0
  349. package/node_modules/prebuild-install/error.js +14 -0
  350. package/node_modules/prebuild-install/help.txt +16 -0
  351. package/node_modules/prebuild-install/index.js +1 -0
  352. package/node_modules/prebuild-install/log.js +33 -0
  353. package/node_modules/prebuild-install/package.json +67 -0
  354. package/node_modules/prebuild-install/proxy.js +35 -0
  355. package/node_modules/prebuild-install/rc.js +64 -0
  356. package/node_modules/prebuild-install/util.js +143 -0
  357. package/node_modules/pump/.github/FUNDING.yml +2 -0
  358. package/node_modules/pump/.travis.yml +5 -0
  359. package/node_modules/pump/LICENSE +21 -0
  360. package/node_modules/pump/README.md +74 -0
  361. package/node_modules/pump/SECURITY.md +5 -0
  362. package/node_modules/pump/index.js +86 -0
  363. package/node_modules/pump/package.json +24 -0
  364. package/node_modules/pump/test-browser.js +66 -0
  365. package/node_modules/pump/test-node.js +53 -0
  366. package/node_modules/rc/LICENSE.APACHE2 +15 -0
  367. package/node_modules/rc/LICENSE.BSD +26 -0
  368. package/node_modules/rc/LICENSE.MIT +24 -0
  369. package/node_modules/rc/README.md +227 -0
  370. package/node_modules/rc/browser.js +7 -0
  371. package/node_modules/rc/cli.js +4 -0
  372. package/node_modules/rc/index.js +53 -0
  373. package/node_modules/rc/lib/utils.js +104 -0
  374. package/node_modules/rc/package.json +29 -0
  375. package/node_modules/rc/test/ini.js +16 -0
  376. package/node_modules/rc/test/nested-env-vars.js +50 -0
  377. package/node_modules/rc/test/test.js +59 -0
  378. package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  379. package/node_modules/readable-stream/GOVERNANCE.md +136 -0
  380. package/node_modules/readable-stream/LICENSE +47 -0
  381. package/node_modules/readable-stream/README.md +106 -0
  382. package/node_modules/readable-stream/errors-browser.js +127 -0
  383. package/node_modules/readable-stream/errors.js +116 -0
  384. package/node_modules/readable-stream/experimentalWarning.js +17 -0
  385. package/node_modules/readable-stream/lib/_stream_duplex.js +126 -0
  386. package/node_modules/readable-stream/lib/_stream_passthrough.js +37 -0
  387. package/node_modules/readable-stream/lib/_stream_readable.js +1027 -0
  388. package/node_modules/readable-stream/lib/_stream_transform.js +190 -0
  389. package/node_modules/readable-stream/lib/_stream_writable.js +641 -0
  390. package/node_modules/readable-stream/lib/internal/streams/async_iterator.js +180 -0
  391. package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +183 -0
  392. package/node_modules/readable-stream/lib/internal/streams/destroy.js +96 -0
  393. package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +86 -0
  394. package/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
  395. package/node_modules/readable-stream/lib/internal/streams/from.js +52 -0
  396. package/node_modules/readable-stream/lib/internal/streams/pipeline.js +86 -0
  397. package/node_modules/readable-stream/lib/internal/streams/state.js +22 -0
  398. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  399. package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  400. package/node_modules/readable-stream/package.json +68 -0
  401. package/node_modules/readable-stream/readable-browser.js +9 -0
  402. package/node_modules/readable-stream/readable.js +16 -0
  403. package/node_modules/safe-buffer/LICENSE +21 -0
  404. package/node_modules/safe-buffer/README.md +584 -0
  405. package/node_modules/safe-buffer/index.d.ts +187 -0
  406. package/node_modules/safe-buffer/index.js +65 -0
  407. package/node_modules/safe-buffer/package.json +51 -0
  408. package/node_modules/semver/LICENSE +15 -0
  409. package/node_modules/semver/README.md +664 -0
  410. package/node_modules/semver/bin/semver.js +191 -0
  411. package/node_modules/semver/classes/comparator.js +143 -0
  412. package/node_modules/semver/classes/index.js +7 -0
  413. package/node_modules/semver/classes/range.js +557 -0
  414. package/node_modules/semver/classes/semver.js +333 -0
  415. package/node_modules/semver/functions/clean.js +8 -0
  416. package/node_modules/semver/functions/cmp.js +54 -0
  417. package/node_modules/semver/functions/coerce.js +62 -0
  418. package/node_modules/semver/functions/compare-build.js +9 -0
  419. package/node_modules/semver/functions/compare-loose.js +5 -0
  420. package/node_modules/semver/functions/compare.js +7 -0
  421. package/node_modules/semver/functions/diff.js +60 -0
  422. package/node_modules/semver/functions/eq.js +5 -0
  423. package/node_modules/semver/functions/gt.js +5 -0
  424. package/node_modules/semver/functions/gte.js +5 -0
  425. package/node_modules/semver/functions/inc.js +21 -0
  426. package/node_modules/semver/functions/lt.js +5 -0
  427. package/node_modules/semver/functions/lte.js +5 -0
  428. package/node_modules/semver/functions/major.js +5 -0
  429. package/node_modules/semver/functions/minor.js +5 -0
  430. package/node_modules/semver/functions/neq.js +5 -0
  431. package/node_modules/semver/functions/parse.js +18 -0
  432. package/node_modules/semver/functions/patch.js +5 -0
  433. package/node_modules/semver/functions/prerelease.js +8 -0
  434. package/node_modules/semver/functions/rcompare.js +5 -0
  435. package/node_modules/semver/functions/rsort.js +5 -0
  436. package/node_modules/semver/functions/satisfies.js +12 -0
  437. package/node_modules/semver/functions/sort.js +5 -0
  438. package/node_modules/semver/functions/valid.js +8 -0
  439. package/node_modules/semver/index.js +91 -0
  440. package/node_modules/semver/internal/constants.js +37 -0
  441. package/node_modules/semver/internal/debug.js +11 -0
  442. package/node_modules/semver/internal/identifiers.js +29 -0
  443. package/node_modules/semver/internal/lrucache.js +42 -0
  444. package/node_modules/semver/internal/parse-options.js +17 -0
  445. package/node_modules/semver/internal/re.js +223 -0
  446. package/node_modules/semver/package.json +78 -0
  447. package/node_modules/semver/preload.js +4 -0
  448. package/node_modules/semver/range.bnf +16 -0
  449. package/node_modules/semver/ranges/gtr.js +6 -0
  450. package/node_modules/semver/ranges/intersects.js +9 -0
  451. package/node_modules/semver/ranges/ltr.js +6 -0
  452. package/node_modules/semver/ranges/max-satisfying.js +27 -0
  453. package/node_modules/semver/ranges/min-satisfying.js +26 -0
  454. package/node_modules/semver/ranges/min-version.js +63 -0
  455. package/node_modules/semver/ranges/outside.js +82 -0
  456. package/node_modules/semver/ranges/simplify.js +49 -0
  457. package/node_modules/semver/ranges/subset.js +249 -0
  458. package/node_modules/semver/ranges/to-comparators.js +10 -0
  459. package/node_modules/semver/ranges/valid.js +13 -0
  460. package/node_modules/simple-concat/.travis.yml +3 -0
  461. package/node_modules/simple-concat/LICENSE +20 -0
  462. package/node_modules/simple-concat/README.md +44 -0
  463. package/node_modules/simple-concat/index.js +15 -0
  464. package/node_modules/simple-concat/package.json +47 -0
  465. package/node_modules/simple-concat/test/basic.js +41 -0
  466. package/node_modules/simple-get/.github/dependabot.yml +15 -0
  467. package/node_modules/simple-get/.github/workflows/ci.yml +23 -0
  468. package/node_modules/simple-get/LICENSE +20 -0
  469. package/node_modules/simple-get/README.md +333 -0
  470. package/node_modules/simple-get/index.js +108 -0
  471. package/node_modules/simple-get/package.json +67 -0
  472. package/node_modules/string_decoder/LICENSE +48 -0
  473. package/node_modules/string_decoder/README.md +47 -0
  474. package/node_modules/string_decoder/lib/string_decoder.js +296 -0
  475. package/node_modules/string_decoder/package.json +34 -0
  476. package/node_modules/strip-json-comments/index.js +70 -0
  477. package/node_modules/strip-json-comments/license +21 -0
  478. package/node_modules/strip-json-comments/package.json +42 -0
  479. package/node_modules/strip-json-comments/readme.md +64 -0
  480. package/node_modules/tar-fs/.travis.yml +6 -0
  481. package/node_modules/tar-fs/LICENSE +21 -0
  482. package/node_modules/tar-fs/README.md +165 -0
  483. package/node_modules/tar-fs/index.js +363 -0
  484. package/node_modules/tar-fs/package.json +41 -0
  485. package/node_modules/tar-fs/test/fixtures/a/hello.txt +1 -0
  486. package/node_modules/tar-fs/test/fixtures/b/a/test.txt +1 -0
  487. package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
  488. package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
  489. package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
  490. package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
  491. package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
  492. package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
  493. package/node_modules/tar-fs/test/fixtures/e/file +0 -0
  494. package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
  495. package/node_modules/tar-fs/test/index.js +346 -0
  496. package/node_modules/tar-stream/LICENSE +21 -0
  497. package/node_modules/tar-stream/README.md +168 -0
  498. package/node_modules/tar-stream/extract.js +257 -0
  499. package/node_modules/tar-stream/headers.js +295 -0
  500. package/node_modules/tar-stream/index.js +2 -0
  501. package/node_modules/tar-stream/pack.js +255 -0
  502. package/node_modules/tar-stream/package.json +58 -0
  503. package/node_modules/tar-stream/sandbox.js +11 -0
  504. package/node_modules/tunnel-agent/LICENSE +55 -0
  505. package/node_modules/tunnel-agent/README.md +4 -0
  506. package/node_modules/tunnel-agent/index.js +244 -0
  507. package/node_modules/tunnel-agent/package.json +22 -0
  508. package/node_modules/util-deprecate/History.md +16 -0
  509. package/node_modules/util-deprecate/LICENSE +24 -0
  510. package/node_modules/util-deprecate/README.md +53 -0
  511. package/node_modules/util-deprecate/browser.js +67 -0
  512. package/node_modules/util-deprecate/node.js +6 -0
  513. package/node_modules/util-deprecate/package.json +27 -0
  514. package/node_modules/wrappy/LICENSE +15 -0
  515. package/node_modules/wrappy/README.md +36 -0
  516. package/node_modules/wrappy/package.json +29 -0
  517. package/node_modules/wrappy/wrappy.js +33 -0
  518. package/package.json +12 -2
  519. package/templates/default/dot-claude/skills/fling/.hash +1 -1
  520. package/templates/default/dot-claude/skills/fling/SKILL.md +56 -29
  521. package/templates/default/dot-claude/skills/fling/references/WORKFLOWS.md +368 -0
@@ -0,0 +1,24 @@
1
+ (The MIT License)
2
+
3
+ Copyright (c) 2014 Nathan Rajlich <nathan@tootallnate.net>
4
+
5
+ Permission is hereby granted, free of charge, to any person
6
+ obtaining a copy of this software and associated documentation
7
+ files (the "Software"), to deal in the Software without
8
+ restriction, including without limitation the rights to use,
9
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the
11
+ Software is furnished to do so, subject to the following
12
+ conditions:
13
+
14
+ The above copyright notice and this permission notice shall be
15
+ included in all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
19
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
21
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
22
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24
+ OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,53 @@
1
+ util-deprecate
2
+ ==============
3
+ ### The Node.js `util.deprecate()` function with browser support
4
+
5
+ In Node.js, this module simply re-exports the `util.deprecate()` function.
6
+
7
+ In the web browser (i.e. via browserify), a browser-specific implementation
8
+ of the `util.deprecate()` function is used.
9
+
10
+
11
+ ## API
12
+
13
+ A `deprecate()` function is the only thing exposed by this module.
14
+
15
+ ``` javascript
16
+ // setup:
17
+ exports.foo = deprecate(foo, 'foo() is deprecated, use bar() instead');
18
+
19
+
20
+ // users see:
21
+ foo();
22
+ // foo() is deprecated, use bar() instead
23
+ foo();
24
+ foo();
25
+ ```
26
+
27
+
28
+ ## License
29
+
30
+ (The MIT License)
31
+
32
+ Copyright (c) 2014 Nathan Rajlich <nathan@tootallnate.net>
33
+
34
+ Permission is hereby granted, free of charge, to any person
35
+ obtaining a copy of this software and associated documentation
36
+ files (the "Software"), to deal in the Software without
37
+ restriction, including without limitation the rights to use,
38
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
39
+ copies of the Software, and to permit persons to whom the
40
+ Software is furnished to do so, subject to the following
41
+ conditions:
42
+
43
+ The above copyright notice and this permission notice shall be
44
+ included in all copies or substantial portions of the Software.
45
+
46
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
47
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
48
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
49
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
50
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
51
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
52
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
53
+ OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,67 @@
1
+
2
+ /**
3
+ * Module exports.
4
+ */
5
+
6
+ module.exports = deprecate;
7
+
8
+ /**
9
+ * Mark that a method should not be used.
10
+ * Returns a modified function which warns once by default.
11
+ *
12
+ * If `localStorage.noDeprecation = true` is set, then it is a no-op.
13
+ *
14
+ * If `localStorage.throwDeprecation = true` is set, then deprecated functions
15
+ * will throw an Error when invoked.
16
+ *
17
+ * If `localStorage.traceDeprecation = true` is set, then deprecated functions
18
+ * will invoke `console.trace()` instead of `console.error()`.
19
+ *
20
+ * @param {Function} fn - the function to deprecate
21
+ * @param {String} msg - the string to print to the console when `fn` is invoked
22
+ * @returns {Function} a new "deprecated" version of `fn`
23
+ * @api public
24
+ */
25
+
26
+ function deprecate (fn, msg) {
27
+ if (config('noDeprecation')) {
28
+ return fn;
29
+ }
30
+
31
+ var warned = false;
32
+ function deprecated() {
33
+ if (!warned) {
34
+ if (config('throwDeprecation')) {
35
+ throw new Error(msg);
36
+ } else if (config('traceDeprecation')) {
37
+ console.trace(msg);
38
+ } else {
39
+ console.warn(msg);
40
+ }
41
+ warned = true;
42
+ }
43
+ return fn.apply(this, arguments);
44
+ }
45
+
46
+ return deprecated;
47
+ }
48
+
49
+ /**
50
+ * Checks `localStorage` for boolean values for the given `name`.
51
+ *
52
+ * @param {String} name
53
+ * @returns {Boolean}
54
+ * @api private
55
+ */
56
+
57
+ function config (name) {
58
+ // accessing global.localStorage can trigger a DOMException in sandboxed iframes
59
+ try {
60
+ if (!global.localStorage) return false;
61
+ } catch (_) {
62
+ return false;
63
+ }
64
+ var val = global.localStorage[name];
65
+ if (null == val) return false;
66
+ return String(val).toLowerCase() === 'true';
67
+ }
@@ -0,0 +1,6 @@
1
+
2
+ /**
3
+ * For Node.js, simply re-export the core `util.deprecate` function.
4
+ */
5
+
6
+ module.exports = require('util').deprecate;
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "util-deprecate",
3
+ "version": "1.0.2",
4
+ "description": "The Node.js `util.deprecate()` function with browser support",
5
+ "main": "node.js",
6
+ "browser": "browser.js",
7
+ "scripts": {
8
+ "test": "echo \"Error: no test specified\" && exit 1"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git://github.com/TooTallNate/util-deprecate.git"
13
+ },
14
+ "keywords": [
15
+ "util",
16
+ "deprecate",
17
+ "browserify",
18
+ "browser",
19
+ "node"
20
+ ],
21
+ "author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
22
+ "license": "MIT",
23
+ "bugs": {
24
+ "url": "https://github.com/TooTallNate/util-deprecate/issues"
25
+ },
26
+ "homepage": "https://github.com/TooTallNate/util-deprecate"
27
+ }
@@ -0,0 +1,15 @@
1
+ The ISC License
2
+
3
+ Copyright (c) Isaac Z. Schlueter and Contributors
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15
+ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
@@ -0,0 +1,36 @@
1
+ # wrappy
2
+
3
+ Callback wrapping utility
4
+
5
+ ## USAGE
6
+
7
+ ```javascript
8
+ var wrappy = require("wrappy")
9
+
10
+ // var wrapper = wrappy(wrapperFunction)
11
+
12
+ // make sure a cb is called only once
13
+ // See also: http://npm.im/once for this specific use case
14
+ var once = wrappy(function (cb) {
15
+ var called = false
16
+ return function () {
17
+ if (called) return
18
+ called = true
19
+ return cb.apply(this, arguments)
20
+ }
21
+ })
22
+
23
+ function printBoo () {
24
+ console.log('boo')
25
+ }
26
+ // has some rando property
27
+ printBoo.iAmBooPrinter = true
28
+
29
+ var onlyPrintOnce = once(printBoo)
30
+
31
+ onlyPrintOnce() // prints 'boo'
32
+ onlyPrintOnce() // does nothing
33
+
34
+ // random property is retained!
35
+ assert.equal(onlyPrintOnce.iAmBooPrinter, true)
36
+ ```
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "wrappy",
3
+ "version": "1.0.2",
4
+ "description": "Callback wrapping utility",
5
+ "main": "wrappy.js",
6
+ "files": [
7
+ "wrappy.js"
8
+ ],
9
+ "directories": {
10
+ "test": "test"
11
+ },
12
+ "dependencies": {},
13
+ "devDependencies": {
14
+ "tap": "^2.3.1"
15
+ },
16
+ "scripts": {
17
+ "test": "tap --coverage test/*.js"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/npm/wrappy"
22
+ },
23
+ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
24
+ "license": "ISC",
25
+ "bugs": {
26
+ "url": "https://github.com/npm/wrappy/issues"
27
+ },
28
+ "homepage": "https://github.com/npm/wrappy"
29
+ }
@@ -0,0 +1,33 @@
1
+ // Returns a wrapper function that returns a wrapped callback
2
+ // The wrapper function should do some stuff, and return a
3
+ // presumably different callback function.
4
+ // This makes sure that own properties are retained, so that
5
+ // decorations and such are not lost along the way.
6
+ module.exports = wrappy
7
+ function wrappy (fn, cb) {
8
+ if (fn && cb) return wrappy(fn)(cb)
9
+
10
+ if (typeof fn !== 'function')
11
+ throw new TypeError('need wrapper function')
12
+
13
+ Object.keys(fn).forEach(function (k) {
14
+ wrapper[k] = fn[k]
15
+ })
16
+
17
+ return wrapper
18
+
19
+ function wrapper() {
20
+ var args = new Array(arguments.length)
21
+ for (var i = 0; i < args.length; i++) {
22
+ args[i] = arguments[i]
23
+ }
24
+ var ret = fn.apply(this, args)
25
+ var cb = args[args.length-1]
26
+ if (typeof ret === 'function' && ret !== cb) {
27
+ Object.keys(cb).forEach(function (k) {
28
+ ret[k] = cb[k]
29
+ })
30
+ }
31
+ return ret
32
+ }
33
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flingit",
3
- "version": "0.0.62",
3
+ "version": "0.0.65",
4
4
  "description": "Small Software Platform - Build and deploy personal tools through conversation",
5
5
  "type": "module",
6
6
  "engines": {
@@ -59,7 +59,8 @@
59
59
  "url": "https://github.com/glideapps/fling.git"
60
60
  },
61
61
  "scripts": {
62
- "build": "npm run build:env && npm run build:shared && tsc && npm run build:hash",
62
+ "build": "npm run build:flingflow && npm run build:env && npm run build:shared && tsc && npm run build:hash",
63
+ "build:flingflow": "cd packages/flingflow && npm run build",
63
64
  "build:env": "tsx scripts/generate-build-env.ts",
64
65
  "build:shared": "tsc -p tsconfig.shared.json",
65
66
  "build:hash": "tsx scripts/compute-skills-hash.ts",
@@ -82,6 +83,7 @@
82
83
  },
83
84
  "dependencies": {
84
85
  "@clack/prompts": "^0.11.0",
86
+ "determined": "^0.1.0",
85
87
  "@hono/node-server": "^1.19.11",
86
88
  "@hono/zod-validator": "^0.7.6",
87
89
  "aws4fetch": "^1.0.20",
@@ -91,11 +93,16 @@
91
93
  "croner": "^9.1.0",
92
94
  "dotenv": "^17.2.3",
93
95
  "esbuild": "^0.27.2",
96
+ "flingflow": "*",
97
+ "neverthrow": "^8.2.0",
94
98
  "hono": "^4.12.7",
95
99
  "postal-mime": "^2.7.3",
96
100
  "tsx": "^4.19.0",
97
101
  "zod": "^4"
98
102
  },
103
+ "bundledDependencies": [
104
+ "flingflow"
105
+ ],
99
106
  "devDependencies": {
100
107
  "@cloudflare/workers-types": "^4.0.0",
101
108
  "@eslint/js": "^9.39.2",
@@ -110,6 +117,9 @@
110
117
  "vitest": "^4.0.17",
111
118
  "wrangler": "^4.60.0"
112
119
  },
120
+ "workspaces": [
121
+ "packages/*"
122
+ ],
113
123
  "keywords": [
114
124
  "fling",
115
125
  "small-software",
@@ -1 +1 @@
1
- b0503c93c5eb120d485b6c6759642b5b
1
+ 3967bbd0369b234b644298e4e6435cdf
@@ -41,7 +41,8 @@ Fling provides these primitives that work identically in local development and p
41
41
  7. **Inbound Email** - Handle emails sent to `<project-slug>@flingit.run` with `onEmail` — see `references/EMAIL-INBOUND.md`
42
42
  8. **Email Sending** - Send transactional emails from `<project-slug>@flingit.run` — see `references/EMAIL-SEND.md`
43
43
  9. **Discord** and **Slack** - Chat bot integration — see `references/DISCORD.md` and `references/SLACK.md`
44
- 10. **WASM** - WebAssembly modules for compute-intensive tasks
44
+ 10. **Workflows** - Durable multi-step workflows with automatic retries — see `references/WORKFLOWS.md`
45
+ 11. **WASM** - WebAssembly modules for compute-intensive tasks
45
46
 
46
47
  ## Project Structure
47
48
 
@@ -59,8 +60,9 @@ index.html # Vite entry HTML
59
60
  vite.config.ts # Vite configuration
60
61
  .fling/
61
62
  secrets # Local secrets (gitignored)
62
- data/
63
- local.db # SQLite database (gitignored)
63
+ data/ # Local database & storage (gitignored)
64
+ local.db # SQLite database
65
+ storage/ # Local blog storage
64
66
  ```
65
67
 
66
68
  ## Quick Reference
@@ -320,31 +322,18 @@ This gives collaborators:
320
322
  **Offer to help set this up.** You can create the GitHub repository, write the GitHub Actions workflow file, and guide them through adding collaborators.
321
323
 
322
324
  ## Important Constraints
323
-
324
- 1. **Backend code runs in Cloudflare Workers** - This is NOT a Node.js environment. You cannot use Node.js-specific APIs (`fs`, `path`, `child_process`, etc.) or npm packages that depend on them. Only use packages that explicitly support Cloudflare Workers or are pure JavaScript/TypeScript with no Node.js dependencies.
325
-
326
- 2. **Memory limit (~128MB)** - Workers have limited memory. Cannot process large datasets in memory. Use streaming, pagination, or chunked processing for large data.
327
-
328
- 3. **Bundle size limit (10MB)** - Cloudflare Workers have a 10MB bundle size limit. Choose lightweight packages to stay under this limit. For example, use `pdf-lib` for PDF generation instead of heavier alternatives like `jspdf`. Avoid packages that bundle large dependencies.
329
-
330
- 4. **Feature scope** - Fling supports frontend, backend, database, cron jobs, file storage (R2), inbound email, and Slack/Discord integrations.
331
-
332
- 5. **Database operations cannot be at module top-level** - They must be inside route handlers or functions called by them.
333
-
334
- 6. **Secrets throw on missing** - No default values. Use `fling secret set` to configure.
335
-
336
- 7. **Use /api prefix for backend routes** - Required for Vite proxy during development.
337
-
338
- 8. **Run commands yourself** - You have bash access. Don't ask the user to run `fling it`, `fling dev`, `npm start`, etc. Execute them directly.
339
-
340
- 9. **Reserved paths (`/__*`)** - Paths starting with `/__` are reserved for internal platform use (e.g., `/__cron` for cron jobs). Do not create routes with these prefixes.
341
-
342
- 10. **Feedback** - If the user encounters problems that directly or indirectly have to do with fling, suggest to them leaving feedback. Details in `references/FEEDBACK.md`.
343
-
344
- 11. **Keep the "Made with Fling" badge** - The template includes a small "Made with Fling" badge in the bottom-left corner of the page. Do not remove or hide it unless the user explicitly asks you to.
345
-
346
- 12. **Never run `fling project takedown` without explicit user confirmation** - This command permanently deletes the deployed project including all data in the production database, all files in storage, and the deployed worker code. You MUST NOT run this command unless the user has explicitly confirmed that they understand and accept that all data in their published app will be permanently lost. Always explain what will be destroyed before asking for confirmation.
347
-
325
+ - **Backend code runs in Cloudflare Workers** - This is NOT a Node.js environment. You cannot use Node.js-specific APIs (`fs`, `path`, `child_process`, etc.) or npm packages that depend on them. Only use packages that explicitly support Cloudflare Workers or are pure JavaScript/TypeScript with no Node.js dependencies.
326
+ - **Memory limit (~128MB)** - Workers have limited memory. Cannot process large datasets in memory. Use streaming, pagination, or chunked processing for large data.
327
+ - **Bundle size limit (10MB)** - Cloudflare Workers have a 10MB bundle size limit. Choose lightweight packages to stay under this limit. For example, use `pdf-lib` for PDF generation instead of heavier alternatives like `jspdf`. Avoid packages that bundle large dependencies.
328
+ - **Database operations cannot be at module top-level** - They must be inside route handlers or functions called by them.
329
+ - **Secrets throw on missing** - No default values. Use `fling secret set` to configure.
330
+ - **Use workflows for long-running or important cron jobs** - Cron jobs should not run more than a few minutes. For longer jobs, as well as for cron jobs that must run even if failures happen, kick off a workflow.
331
+ - **Use /api prefix for backend routes** - Required for Vite proxy during development.
332
+ - **Run commands yourself** - You have bash access. Don't ask the user to run `fling it`, `fling dev`, `npm start`, etc. Execute them directly.
333
+ - **Reserved paths (`/__*`)** - Paths starting with `/__` are reserved for internal platform use (e.g., `/__cron` for cron jobs). Do not create routes with these prefixes.
334
+ - **Feedback** - If the user encounters problems that directly or indirectly have to do with fling, suggest to them leaving feedback. Details in `references/FEEDBACK.md`.
335
+ - **Keep the "Made with Fling" badge** - The template includes a small "Made with Fling" badge in the bottom-left corner of the page. Do not remove or hide it unless the user explicitly asks you to.
336
+ - **Never run `fling project takedown` without explicit user confirmation** - This command permanently deletes the deployed project including all data in the production database, all files in storage, and the deployed worker code. You MUST NOT run this command unless the user has explicitly confirmed that they understand and accept that all data in their published app will be permanently lost. Always explain what will be destroyed before asking for confirmation.
348
337
  **If the user's request might hit platform limitations, warn them early and suggest alternatives.**
349
338
 
350
339
  ## Migrations
@@ -367,6 +356,44 @@ migrate("001_create_users", async () => {
367
356
  });
368
357
  ```
369
358
 
359
+ ## Workflows
360
+
361
+ Durable multi-step workflows with automatic retries and scratchpad state. Errors are retried automatically. Use workflows for long-running tasks or when it's important that something definitely happens, even in the face of intermittent failures. Do not use workflows for synchronous operations - just use HTTP handlers for that.
362
+
363
+ Register workflows at module top-level and start them from route handlers.
364
+
365
+ ```typescript
366
+ import { workflow, type WorkflowContinuation, type WorkflowCtx, NonRetryableError } from "flingit";
367
+
368
+ workflow("order-fulfillment", {
369
+ async start(ctx: WorkflowCtx): Promise<WorkflowContinuation> {
370
+ const qty = await ctx.get("qty") as number;
371
+ if (qty <= 0) throw new NonRetryableError("Invalid quantity");
372
+ return { step: "charge" };
373
+ },
374
+ async charge(ctx: WorkflowCtx): Promise<WorkflowContinuation> {
375
+ const itemId = await ctx.get("itemId") as string;
376
+ const qty = await ctx.get("qty") as number;
377
+ const chargeId = await processPayment({ itemId, qty });
378
+ ctx.set("chargeId", chargeId);
379
+ return { step: "ship" };
380
+ },
381
+ async ship(ctx: WorkflowCtx): Promise<WorkflowContinuation> {
382
+ const chargeId = await ctx.get("chargeId") as string;
383
+ await scheduleShipment(chargeId);
384
+ return { done: true, result: { shipped: true, chargeId } };
385
+ },
386
+ }, { maxAttempts: 5 });
387
+
388
+ // Start from a route handler (fire-and-forget)
389
+ app.post("/api/orders", async (c) => {
390
+ const run = await workflow.start("order-fulfillment", await c.req.json());
391
+ return c.json({ runId: run.runId, status: "accepted" });
392
+ });
393
+ ```
394
+
395
+ See `references/WORKFLOWS.md` for the full API, scratchpad semantics, error handling, and recovery details.
396
+
370
397
  ## Backend Assets (Images, Fonts, etc.)
371
398
 
372
399
  If the backend needs to return or process an asset (image, icon, font), keep it small and store the base64 data in a separate file to keep your main code clean:
@@ -395,7 +422,7 @@ This approach:
395
422
 
396
423
  **For large assets:** Serve them from the frontend (`public/` folder) instead.
397
424
 
398
- See `references/API.md` for detailed API reference, `references/EMAIL-INBOUND.md` for inbound email handlers and payload fields, `references/EMAIL-SEND.md` for sending transactional emails, `references/EXAMPLES.md` for common patterns, `references/FEEDBACK.md` for collecting user feedback, and `references/GH-ACTION.md` for setting up automatic deployments with GitHub Actions.
425
+ See `references/API.md` for detailed API reference, `references/EMAIL-INBOUND.md` for inbound email handlers and payload fields, `references/EMAIL-SEND.md` for sending transactional emails, `references/EXAMPLES.md` for common patterns, `references/FEEDBACK.md` for collecting user feedback, `references/GH-ACTION.md` for setting up automatic deployments with GitHub Actions, and `references/WORKFLOWS.md` for the full workflow API.
399
426
 
400
427
  ## Updates
401
428