reqon-dsl 0.2.0 → 0.4.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 (450) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +45 -3
  3. package/dist/ast/nodes.d.ts +91 -4
  4. package/dist/ast/nodes.js +14 -0
  5. package/dist/auth/circuit-breaker.d.ts +11 -0
  6. package/dist/auth/circuit-breaker.js +90 -18
  7. package/dist/auth/credentials.d.ts +6 -1
  8. package/dist/auth/credentials.js +12 -4
  9. package/dist/auth/oauth2-provider.js +13 -3
  10. package/dist/auth/rate-limiter.d.ts +12 -1
  11. package/dist/auth/rate-limiter.js +39 -26
  12. package/dist/auth/token-store.js +8 -1
  13. package/dist/cli.d.ts +24 -1
  14. package/dist/cli.js +149 -10
  15. package/dist/config/constants.d.ts +152 -0
  16. package/dist/config/constants.js +139 -0
  17. package/dist/config/index.d.ts +4 -0
  18. package/dist/config/index.js +4 -0
  19. package/dist/control/index.d.ts +2 -0
  20. package/dist/control/index.js +1 -0
  21. package/dist/control/server.d.ts +105 -0
  22. package/dist/control/server.js +315 -0
  23. package/dist/control/types.d.ts +61 -0
  24. package/dist/control/types.js +7 -0
  25. package/dist/debug/cli-debugger.d.ts +17 -0
  26. package/dist/debug/cli-debugger.js +185 -0
  27. package/dist/debug/controller.d.ts +94 -0
  28. package/dist/debug/controller.js +45 -0
  29. package/dist/debug/index.d.ts +6 -0
  30. package/dist/debug/index.js +5 -0
  31. package/dist/errors/index.d.ts +67 -0
  32. package/dist/errors/index.js +89 -1
  33. package/dist/execution/index.d.ts +1 -1
  34. package/dist/execution/state.d.ts +24 -0
  35. package/dist/execution/store.js +2 -2
  36. package/dist/execution-log/events.d.ts +125 -0
  37. package/dist/execution-log/events.js +17 -0
  38. package/dist/execution-log/fold.d.ts +38 -0
  39. package/dist/execution-log/fold.js +54 -0
  40. package/dist/execution-log/index.d.ts +18 -0
  41. package/dist/execution-log/index.js +6 -0
  42. package/dist/execution-log/postgres-store.d.ts +36 -0
  43. package/dist/execution-log/postgres-store.js +108 -0
  44. package/dist/execution-log/resume.d.ts +11 -0
  45. package/dist/execution-log/resume.js +5 -0
  46. package/dist/execution-log/sqlite-store.d.ts +16 -0
  47. package/dist/execution-log/sqlite-store.js +101 -0
  48. package/dist/execution-log/store.d.ts +72 -0
  49. package/dist/execution-log/store.js +182 -0
  50. package/dist/index.d.ts +23 -2
  51. package/dist/index.js +35 -3
  52. package/dist/interpreter/context.d.ts +29 -0
  53. package/dist/interpreter/context.js +18 -0
  54. package/dist/interpreter/evaluator.d.ts +63 -1
  55. package/dist/interpreter/evaluator.js +219 -42
  56. package/dist/interpreter/executor.d.ts +132 -14
  57. package/dist/interpreter/executor.js +883 -178
  58. package/dist/interpreter/fetch-handler.d.ts +48 -1
  59. package/dist/interpreter/fetch-handler.js +216 -38
  60. package/dist/interpreter/http.d.ts +34 -0
  61. package/dist/interpreter/http.js +203 -28
  62. package/dist/interpreter/index.d.ts +5 -3
  63. package/dist/interpreter/index.js +4 -2
  64. package/dist/interpreter/pagination.d.ts +12 -3
  65. package/dist/interpreter/pagination.js +102 -32
  66. package/dist/interpreter/signals.d.ts +8 -0
  67. package/dist/interpreter/signals.js +12 -0
  68. package/dist/interpreter/source-manager.d.ts +75 -0
  69. package/dist/interpreter/source-manager.js +157 -0
  70. package/dist/interpreter/step-handlers/apply-handler.d.ts +29 -0
  71. package/dist/interpreter/step-handlers/apply-handler.js +79 -0
  72. package/dist/interpreter/step-handlers/for-handler.d.ts +16 -0
  73. package/dist/interpreter/step-handlers/for-handler.js +89 -7
  74. package/dist/interpreter/step-handlers/index.d.ts +4 -2
  75. package/dist/interpreter/step-handlers/index.js +4 -2
  76. package/dist/interpreter/step-handlers/match-handler.d.ts +9 -0
  77. package/dist/interpreter/step-handlers/match-handler.js +47 -17
  78. package/dist/interpreter/step-handlers/pause-handler.d.ts +52 -0
  79. package/dist/interpreter/step-handlers/pause-handler.js +87 -0
  80. package/dist/interpreter/step-handlers/store-handler.d.ts +17 -1
  81. package/dist/interpreter/step-handlers/store-handler.js +61 -20
  82. package/dist/interpreter/step-handlers/types.d.ts +3 -0
  83. package/dist/interpreter/step-handlers/validate-handler.d.ts +2 -1
  84. package/dist/interpreter/step-handlers/validate-handler.js +7 -2
  85. package/dist/interpreter/step-handlers/webhook-handler.d.ts +4 -0
  86. package/dist/interpreter/step-handlers/webhook-handler.js +31 -5
  87. package/dist/interpreter/store-manager.d.ts +46 -0
  88. package/dist/interpreter/store-manager.js +70 -0
  89. package/dist/lexer/index.d.ts +11 -4
  90. package/dist/lexer/index.js +11 -4
  91. package/dist/lexer/tokens.d.ts +17 -1
  92. package/dist/lexer/tokens.js +36 -0
  93. package/dist/loader/index.js +5 -8
  94. package/dist/mcp/index.d.ts +11 -0
  95. package/dist/mcp/index.js +11 -0
  96. package/dist/mcp/sandbox.d.ts +41 -0
  97. package/dist/mcp/sandbox.js +76 -0
  98. package/dist/mcp/server.d.ts +17 -0
  99. package/dist/mcp/server.js +504 -0
  100. package/dist/oas/index.d.ts +2 -0
  101. package/dist/oas/index.js +1 -0
  102. package/dist/oas/loader.d.ts +13 -1
  103. package/dist/oas/loader.js +25 -3
  104. package/dist/oas/mock-generator.d.ts +12 -0
  105. package/dist/oas/mock-generator.js +196 -0
  106. package/dist/oas/validator.js +45 -5
  107. package/dist/observability/events.d.ts +248 -0
  108. package/dist/observability/events.js +85 -0
  109. package/dist/observability/index.d.ts +15 -0
  110. package/dist/observability/index.js +12 -0
  111. package/dist/observability/logger.d.ts +106 -0
  112. package/dist/observability/logger.js +266 -0
  113. package/dist/observability/otel.d.ts +143 -0
  114. package/dist/observability/otel.js +421 -0
  115. package/dist/parser/action-parser.d.ts +105 -0
  116. package/dist/parser/action-parser.js +645 -0
  117. package/dist/parser/base.d.ts +7 -0
  118. package/dist/parser/base.js +11 -0
  119. package/dist/parser/expressions.d.ts +14 -0
  120. package/dist/parser/expressions.js +89 -6
  121. package/dist/parser/fetch-parser.d.ts +27 -0
  122. package/dist/parser/fetch-parser.js +280 -0
  123. package/dist/parser/index.d.ts +17 -0
  124. package/dist/parser/index.js +17 -0
  125. package/dist/parser/parser.d.ts +44 -46
  126. package/dist/parser/parser.js +122 -1070
  127. package/dist/parser/pipeline-parser.d.ts +12 -0
  128. package/dist/parser/pipeline-parser.js +52 -0
  129. package/dist/parser/schedule-parser.d.ts +7 -0
  130. package/dist/parser/schedule-parser.js +137 -0
  131. package/dist/parser/source-parser.d.ts +9 -0
  132. package/dist/parser/source-parser.js +151 -0
  133. package/dist/pause/index.d.ts +15 -0
  134. package/dist/pause/index.js +12 -0
  135. package/dist/pause/log-store.d.ts +33 -0
  136. package/dist/pause/log-store.js +98 -0
  137. package/dist/pause/manager.d.ts +130 -0
  138. package/dist/pause/manager.js +294 -0
  139. package/dist/pause/state.d.ts +93 -0
  140. package/dist/pause/state.js +103 -0
  141. package/dist/pause/store.d.ts +61 -0
  142. package/dist/pause/store.js +158 -0
  143. package/dist/plugin.d.ts +9 -12
  144. package/dist/plugin.js +10 -13
  145. package/dist/scheduler/cron-parser.d.ts +10 -3
  146. package/dist/scheduler/cron-parser.js +227 -48
  147. package/dist/scheduler/scheduler.js +56 -22
  148. package/dist/stores/factory.d.ts +7 -1
  149. package/dist/stores/factory.js +14 -3
  150. package/dist/stores/file.d.ts +26 -0
  151. package/dist/stores/file.js +67 -21
  152. package/dist/stores/index.d.ts +16 -1
  153. package/dist/stores/index.js +16 -1
  154. package/dist/stores/memory.d.ts +4 -0
  155. package/dist/stores/memory.js +8 -6
  156. package/dist/stores/postgrest.d.ts +28 -0
  157. package/dist/stores/postgrest.js +84 -37
  158. package/dist/stores/types.d.ts +17 -0
  159. package/dist/stores/types.js +12 -0
  160. package/dist/sync/index.d.ts +3 -2
  161. package/dist/sync/index.js +2 -1
  162. package/dist/sync/log-store.d.ts +30 -0
  163. package/dist/sync/log-store.js +45 -0
  164. package/dist/sync/store.js +1 -1
  165. package/dist/trace/index.d.ts +18 -0
  166. package/dist/trace/index.js +13 -0
  167. package/dist/trace/log-view.d.ts +57 -0
  168. package/dist/trace/log-view.js +76 -0
  169. package/dist/trace/recorder.d.ts +75 -0
  170. package/dist/trace/recorder.js +157 -0
  171. package/dist/trace/replay.d.ts +132 -0
  172. package/dist/trace/replay.js +264 -0
  173. package/dist/trace/state.d.ts +102 -0
  174. package/dist/trace/state.js +86 -0
  175. package/dist/trace/store.d.ts +75 -0
  176. package/dist/trace/store.js +250 -0
  177. package/dist/utils/deep-merge.d.ts +10 -0
  178. package/dist/utils/deep-merge.js +23 -0
  179. package/dist/utils/file.d.ts +13 -4
  180. package/dist/utils/file.js +70 -12
  181. package/dist/utils/index.d.ts +2 -1
  182. package/dist/utils/index.js +2 -1
  183. package/dist/utils/long-timeout.d.ts +19 -0
  184. package/dist/utils/long-timeout.js +33 -0
  185. package/dist/utils/path.d.ts +22 -1
  186. package/dist/utils/path.js +46 -1
  187. package/dist/utils/redact.d.ts +22 -0
  188. package/dist/utils/redact.js +42 -0
  189. package/dist/utils/type-guards.d.ts +58 -0
  190. package/dist/utils/type-guards.js +92 -0
  191. package/dist/webhook/server.d.ts +9 -0
  192. package/dist/webhook/server.js +122 -36
  193. package/dist/webhook/types.d.ts +9 -1
  194. package/package.json +76 -9
  195. package/.claude/settings.local.json +0 -31
  196. package/.claude/skills/api-integration.md +0 -125
  197. package/.claude/skills/database-schema.md +0 -51
  198. package/.claude/skills/dsl-design.md +0 -80
  199. package/.claude/skills/property-testing.md +0 -143
  200. package/.claude/skills/reqon/SKILL.md +0 -44
  201. package/.claude/skills/reqon/references/examples.md +0 -206
  202. package/.claude/skills/reqon/references/syntax.md +0 -263
  203. package/.claude/skills/vscode-extension.md +0 -113
  204. package/.github/dependabot.yml +0 -32
  205. package/.github/pull_request_template.md +0 -21
  206. package/.github/workflows/ci.yml +0 -174
  207. package/.github/workflows/release.yml +0 -73
  208. package/CLAUDE.md +0 -72
  209. package/CONTRIBUTING.md +0 -161
  210. package/TODO.md +0 -51
  211. package/dist/auth/auth.test.d.ts +0 -1
  212. package/dist/auth/auth.test.js +0 -255
  213. package/dist/errors/errors.test.d.ts +0 -1
  214. package/dist/errors/errors.test.js +0 -165
  215. package/dist/execution/execution.test.d.ts +0 -1
  216. package/dist/execution/execution.test.js +0 -246
  217. package/dist/integration.test.d.ts +0 -1
  218. package/dist/integration.test.js +0 -168
  219. package/dist/interpreter/evaluator.test.d.ts +0 -1
  220. package/dist/interpreter/evaluator.test.js +0 -512
  221. package/dist/interpreter/http.test.d.ts +0 -1
  222. package/dist/interpreter/http.test.js +0 -299
  223. package/dist/interpreter/progress.test.d.ts +0 -1
  224. package/dist/interpreter/progress.test.js +0 -216
  225. package/dist/interpreter/schema-matcher.test.d.ts +0 -1
  226. package/dist/interpreter/schema-matcher.test.js +0 -122
  227. package/dist/lexer/lexer.d.ts +0 -24
  228. package/dist/lexer/lexer.js +0 -264
  229. package/dist/lexer/lexer.test.d.ts +0 -1
  230. package/dist/lexer/lexer.test.js +0 -259
  231. package/dist/loader/loader.test.d.ts +0 -1
  232. package/dist/loader/loader.test.js +0 -287
  233. package/dist/oas/oas.test.d.ts +0 -1
  234. package/dist/oas/oas.test.js +0 -218
  235. package/dist/parser/expressions.test.d.ts +0 -1
  236. package/dist/parser/expressions.test.js +0 -378
  237. package/dist/parser/match.test.d.ts +0 -1
  238. package/dist/parser/match.test.js +0 -254
  239. package/dist/parser/parser.test.d.ts +0 -1
  240. package/dist/parser/parser.test.js +0 -333
  241. package/dist/parser/schedule.test.d.ts +0 -1
  242. package/dist/parser/schedule.test.js +0 -241
  243. package/dist/scheduler/cron-parser.test.d.ts +0 -1
  244. package/dist/scheduler/cron-parser.test.js +0 -188
  245. package/dist/stores/file.test.d.ts +0 -1
  246. package/dist/stores/file.test.js +0 -165
  247. package/dist/stores/memory.test.d.ts +0 -1
  248. package/dist/stores/memory.test.js +0 -157
  249. package/dist/stores/stores.test.d.ts +0 -1
  250. package/dist/stores/stores.test.js +0 -158
  251. package/dist/sync/sync.test.d.ts +0 -1
  252. package/dist/sync/sync.test.js +0 -221
  253. package/docusaurus/README.md +0 -41
  254. package/docusaurus/docs/advanced/execution-state.md +0 -283
  255. package/docusaurus/docs/advanced/extending-reqon.md +0 -388
  256. package/docusaurus/docs/advanced/multi-file-missions.md +0 -250
  257. package/docusaurus/docs/advanced/parallel-execution.md +0 -353
  258. package/docusaurus/docs/api-reference.md +0 -443
  259. package/docusaurus/docs/authentication/api-key.md +0 -339
  260. package/docusaurus/docs/authentication/basic.md +0 -276
  261. package/docusaurus/docs/authentication/bearer.md +0 -282
  262. package/docusaurus/docs/authentication/oauth2.md +0 -317
  263. package/docusaurus/docs/authentication/overview.md +0 -251
  264. package/docusaurus/docs/cli.md +0 -229
  265. package/docusaurus/docs/core-concepts/actions.md +0 -286
  266. package/docusaurus/docs/core-concepts/missions.md +0 -264
  267. package/docusaurus/docs/core-concepts/schemas.md +0 -353
  268. package/docusaurus/docs/core-concepts/sources.md +0 -339
  269. package/docusaurus/docs/core-concepts/stores.md +0 -332
  270. package/docusaurus/docs/dsl-syntax/expressions.md +0 -361
  271. package/docusaurus/docs/dsl-syntax/fetch.md +0 -293
  272. package/docusaurus/docs/dsl-syntax/for-loops.md +0 -324
  273. package/docusaurus/docs/dsl-syntax/map.md +0 -345
  274. package/docusaurus/docs/dsl-syntax/match.md +0 -387
  275. package/docusaurus/docs/dsl-syntax/pipelines.md +0 -397
  276. package/docusaurus/docs/dsl-syntax/validate.md +0 -401
  277. package/docusaurus/docs/error-handling/dead-letter-queues.md +0 -399
  278. package/docusaurus/docs/error-handling/flow-control.md +0 -337
  279. package/docusaurus/docs/error-handling/retry-strategies.md +0 -368
  280. package/docusaurus/docs/examples.md +0 -488
  281. package/docusaurus/docs/getting-started.md +0 -256
  282. package/docusaurus/docs/http/circuit-breaker.md +0 -401
  283. package/docusaurus/docs/http/incremental-sync.md +0 -394
  284. package/docusaurus/docs/http/pagination.md +0 -361
  285. package/docusaurus/docs/http/rate-limiting.md +0 -383
  286. package/docusaurus/docs/http/requests.md +0 -328
  287. package/docusaurus/docs/http/retry.md +0 -402
  288. package/docusaurus/docs/intro.md +0 -90
  289. package/docusaurus/docs/openapi/loading-specs.md +0 -305
  290. package/docusaurus/docs/openapi/operation-calls.md +0 -314
  291. package/docusaurus/docs/openapi/overview.md +0 -212
  292. package/docusaurus/docs/openapi/response-validation.md +0 -344
  293. package/docusaurus/docs/scheduling/cron.md +0 -305
  294. package/docusaurus/docs/scheduling/daemon-mode.md +0 -317
  295. package/docusaurus/docs/scheduling/intervals.md +0 -289
  296. package/docusaurus/docs/scheduling/overview.md +0 -231
  297. package/docusaurus/docs/stores/custom-adapters.md +0 -376
  298. package/docusaurus/docs/stores/file.md +0 -236
  299. package/docusaurus/docs/stores/memory.md +0 -193
  300. package/docusaurus/docs/stores/overview.md +0 -274
  301. package/docusaurus/docs/stores/postgrest.md +0 -316
  302. package/docusaurus/docusaurus.config.ts +0 -148
  303. package/docusaurus/package-lock.json +0 -18029
  304. package/docusaurus/package.json +0 -47
  305. package/docusaurus/sidebars.ts +0 -155
  306. package/docusaurus/src/components/HomepageFeatures/index.tsx +0 -105
  307. package/docusaurus/src/components/HomepageFeatures/styles.module.css +0 -12
  308. package/docusaurus/src/css/custom.css +0 -169
  309. package/docusaurus/src/pages/index.module.css +0 -48
  310. package/docusaurus/src/pages/index.tsx +0 -110
  311. package/docusaurus/src/pages/markdown-page.md +0 -7
  312. package/docusaurus/static/.nojekyll +0 -0
  313. package/docusaurus/static/img/docusaurus-social-card.jpg +0 -0
  314. package/docusaurus/static/img/docusaurus.png +0 -0
  315. package/docusaurus/static/img/favicon.ico +0 -0
  316. package/docusaurus/static/img/logo.svg +0 -10
  317. package/docusaurus/static/img/undraw_docusaurus_mountain.svg +0 -171
  318. package/docusaurus/static/img/undraw_docusaurus_react.svg +0 -170
  319. package/docusaurus/static/img/undraw_docusaurus_tree.svg +0 -40
  320. package/docusaurus/tsconfig.json +0 -8
  321. package/examples/README.md +0 -112
  322. package/examples/error-handling/README.md +0 -150
  323. package/examples/error-handling/payment-processor.vague +0 -287
  324. package/examples/github-sync/README.md +0 -74
  325. package/examples/github-sync/fetch-issues.vague +0 -47
  326. package/examples/github-sync/fetch-prs.vague +0 -40
  327. package/examples/github-sync/mission.vague +0 -101
  328. package/examples/github-sync/normalize.vague +0 -70
  329. package/examples/jsonplaceholder/README.md +0 -28
  330. package/examples/jsonplaceholder/posts.vague +0 -48
  331. package/examples/petstore/README.md +0 -35
  332. package/examples/petstore/openapi.yaml +0 -97
  333. package/examples/petstore/sync.vague +0 -52
  334. package/examples/temporal-comparison/README.md +0 -297
  335. package/examples/temporal-comparison/reconciliation.vague +0 -355
  336. package/examples/temporal-comparison/temporal/activities/index.ts +0 -8
  337. package/examples/temporal-comparison/temporal/activities/shipstation.ts +0 -225
  338. package/examples/temporal-comparison/temporal/activities/shopify.ts +0 -257
  339. package/examples/temporal-comparison/temporal/activities/storage.ts +0 -198
  340. package/examples/temporal-comparison/temporal/activities/stripe.ts +0 -169
  341. package/examples/temporal-comparison/temporal/activities/validation.ts +0 -205
  342. package/examples/temporal-comparison/temporal/client/schedule.ts +0 -218
  343. package/examples/temporal-comparison/temporal/config/retry.ts +0 -63
  344. package/examples/temporal-comparison/temporal/types/index.ts +0 -129
  345. package/examples/temporal-comparison/temporal/workers/main.ts +0 -130
  346. package/examples/temporal-comparison/temporal/workflows/orderReconciliation.ts +0 -262
  347. package/examples/xero/README.md +0 -88
  348. package/examples/xero/invoices.vague +0 -189
  349. package/src/api-integration.test.ts +0 -954
  350. package/src/ast/index.ts +0 -1
  351. package/src/ast/nodes.ts +0 -310
  352. package/src/auth/auth.test.ts +0 -326
  353. package/src/auth/circuit-breaker.test.ts +0 -390
  354. package/src/auth/circuit-breaker.ts +0 -379
  355. package/src/auth/credentials.test.ts +0 -273
  356. package/src/auth/credentials.ts +0 -246
  357. package/src/auth/index.ts +0 -40
  358. package/src/auth/oauth2-provider.ts +0 -177
  359. package/src/auth/rate-limiter.ts +0 -459
  360. package/src/auth/token-store.ts +0 -177
  361. package/src/auth/types.ts +0 -159
  362. package/src/benchmark/e2e.bench.ts +0 -288
  363. package/src/benchmark/evaluator.bench.ts +0 -331
  364. package/src/benchmark/fixtures.ts +0 -295
  365. package/src/benchmark/index.ts +0 -108
  366. package/src/benchmark/lexer.bench.ts +0 -69
  367. package/src/benchmark/parser.bench.ts +0 -103
  368. package/src/benchmark/resilience.bench.ts +0 -193
  369. package/src/benchmark/store.bench.ts +0 -147
  370. package/src/benchmark/utils.ts +0 -230
  371. package/src/cli.ts +0 -313
  372. package/src/errors/errors.test.ts +0 -234
  373. package/src/errors/index.ts +0 -223
  374. package/src/execution/execution.test.ts +0 -307
  375. package/src/execution/index.ts +0 -21
  376. package/src/execution/state.ts +0 -207
  377. package/src/execution/store.ts +0 -188
  378. package/src/index.ts +0 -169
  379. package/src/integration.test.ts +0 -192
  380. package/src/interpreter/context.ts +0 -57
  381. package/src/interpreter/evaluator.test.ts +0 -796
  382. package/src/interpreter/evaluator.ts +0 -245
  383. package/src/interpreter/executor.ts +0 -946
  384. package/src/interpreter/fetch-handler.ts +0 -302
  385. package/src/interpreter/http.test.ts +0 -423
  386. package/src/interpreter/http.ts +0 -308
  387. package/src/interpreter/index.ts +0 -32
  388. package/src/interpreter/pagination.ts +0 -207
  389. package/src/interpreter/progress.test.ts +0 -276
  390. package/src/interpreter/schema-matcher.test.ts +0 -160
  391. package/src/interpreter/schema-matcher.ts +0 -168
  392. package/src/interpreter/signals.ts +0 -73
  393. package/src/interpreter/step-handlers/for-handler.ts +0 -65
  394. package/src/interpreter/step-handlers/index.ts +0 -17
  395. package/src/interpreter/step-handlers/map-handler.ts +0 -24
  396. package/src/interpreter/step-handlers/match-handler.ts +0 -101
  397. package/src/interpreter/step-handlers/store-handler.ts +0 -78
  398. package/src/interpreter/step-handlers/types.ts +0 -17
  399. package/src/interpreter/step-handlers/validate-handler.ts +0 -30
  400. package/src/interpreter/step-handlers/webhook-handler.ts +0 -142
  401. package/src/lexer/index.ts +0 -18
  402. package/src/lexer/lexer.test.ts +0 -316
  403. package/src/lexer/tokens.ts +0 -179
  404. package/src/loader/index.ts +0 -288
  405. package/src/loader/loader.test.ts +0 -360
  406. package/src/oas/index.ts +0 -4
  407. package/src/oas/loader.ts +0 -126
  408. package/src/oas/oas.test.ts +0 -254
  409. package/src/oas/validator.ts +0 -299
  410. package/src/parser/base.ts +0 -124
  411. package/src/parser/expressions.test.ts +0 -525
  412. package/src/parser/expressions.ts +0 -314
  413. package/src/parser/index.ts +0 -3
  414. package/src/parser/match.test.ts +0 -296
  415. package/src/parser/parser.test.ts +0 -739
  416. package/src/parser/parser.ts +0 -1469
  417. package/src/parser/schedule.test.ts +0 -287
  418. package/src/parser/webhook.test.ts +0 -248
  419. package/src/plugin.ts +0 -83
  420. package/src/scheduler/cron-parser.test.ts +0 -236
  421. package/src/scheduler/cron-parser.ts +0 -236
  422. package/src/scheduler/index.ts +0 -10
  423. package/src/scheduler/scheduler.ts +0 -443
  424. package/src/scheduler/types.ts +0 -71
  425. package/src/stores/factory.ts +0 -104
  426. package/src/stores/file.test.ts +0 -276
  427. package/src/stores/file.ts +0 -211
  428. package/src/stores/index.ts +0 -6
  429. package/src/stores/memory.test.ts +0 -238
  430. package/src/stores/memory.ts +0 -63
  431. package/src/stores/postgrest.test.ts +0 -488
  432. package/src/stores/postgrest.ts +0 -263
  433. package/src/stores/stores.test.ts +0 -197
  434. package/src/stores/types.ts +0 -58
  435. package/src/sync/index.ts +0 -16
  436. package/src/sync/state.ts +0 -126
  437. package/src/sync/store.ts +0 -139
  438. package/src/sync/sync.test.ts +0 -271
  439. package/src/utils/async.ts +0 -10
  440. package/src/utils/file.ts +0 -106
  441. package/src/utils/index.ts +0 -14
  442. package/src/utils/logger.ts +0 -53
  443. package/src/utils/path.ts +0 -47
  444. package/src/webhook/index.ts +0 -15
  445. package/src/webhook/server.test.ts +0 -253
  446. package/src/webhook/server.ts +0 -389
  447. package/src/webhook/store.ts +0 -239
  448. package/src/webhook/types.ts +0 -93
  449. package/tsconfig.json +0 -17
  450. package/vitest.config.ts +0 -39
@@ -1,112 +0,0 @@
1
- # Reqon Examples
2
-
3
- This directory contains examples demonstrating Reqon's features for declarative data pipelines.
4
-
5
- ## Examples Overview
6
-
7
- | Example | Description | Key Features |
8
- |---------|-------------|--------------|
9
- | [jsonplaceholder](./jsonplaceholder/) | Basic public API sync | `auth: none`, fetch, map, for loops |
10
- | [petstore](./petstore/) | OpenAPI spec integration | OAS operationId, cursor pagination |
11
- | [xero](./xero/) | OAuth2 invoice sync | OAuth2, hydration, **match steps**, **flow control** |
12
- | [github-sync](./github-sync/) | Multi-file mission | **Folder structure**, **parallel execution**, schema matching |
13
- | [error-handling](./error-handling/) | Comprehensive error handling | **All flow control directives**, dead letter queues |
14
- | [temporal-comparison](./temporal-comparison/) | E-commerce reconciliation | Multi-source, **parallel execution**, rate limiting |
15
-
16
- ## Feature Index
17
-
18
- ### Multi-File Missions
19
- Organize large missions into folders with separate action files:
20
- ```
21
- github-sync/
22
- ├── mission.vague # Sources, stores, schemas, pipeline
23
- ├── fetch-issues.vague # Action file
24
- ├── fetch-prs.vague # Action file
25
- └── normalize.vague # Action file
26
- ```
27
- See: [github-sync](./github-sync/)
28
-
29
- ### Parallel Execution
30
- Run multiple actions concurrently:
31
- ```vague
32
- run [FetchOrders, FetchPayments, FetchShipments] then Reconcile
33
- ```
34
- See: [github-sync](./github-sync/), [temporal-comparison](./temporal-comparison/)
35
-
36
- ### Schema Overloading with Match Steps
37
- Handle different API response types declaratively:
38
- ```vague
39
- match response {
40
- SuccessSchema -> { store response -> cache },
41
- RateLimitError -> retry { maxAttempts: 5 },
42
- AuthError -> jump RefreshToken then retry,
43
- _ -> abort "Unexpected response"
44
- }
45
- ```
46
- See: [xero](./xero/), [error-handling](./error-handling/)
47
-
48
- ### Flow Control Directives
49
- Six directives for controlling execution flow:
50
-
51
- | Directive | Description | Example |
52
- |-----------|-------------|---------|
53
- | `continue` | Proceed to next step | `Schema -> continue` |
54
- | `skip` | Skip remaining steps | `Schema -> skip` |
55
- | `abort` | Halt mission | `Schema -> abort "Error"` |
56
- | `retry` | Retry with backoff | `Schema -> retry { maxAttempts: 5 }` |
57
- | `queue` | Send to dead letter queue | `Schema -> queue dlq` |
58
- | `jump` | Execute action, then continue | `Schema -> jump Refresh then retry` |
59
-
60
- See: [error-handling](./error-handling/)
61
-
62
- ### Authentication Types
63
- ```vague
64
- source API { auth: none } # Public API
65
- source API { auth: bearer } # Bearer token
66
- source API { auth: oauth2 } # OAuth2
67
- source API { auth: basic } # Basic auth
68
- source API { auth: api_key } # API key
69
- ```
70
-
71
- ### Pagination Strategies
72
- ```vague
73
- paginate: offset(page, 100) # Offset pagination
74
- paginate: page(page, 100) # Page number pagination
75
- paginate: cursor(cursor, 100, "nextCursor") # Cursor pagination
76
- ```
77
-
78
- ## Running Examples
79
-
80
- ```bash
81
- # Build first
82
- npm run build
83
-
84
- # Run any example
85
- node dist/cli.js examples/<example>/<file>.vague --verbose
86
-
87
- # Run multi-file mission (folder)
88
- node dist/cli.js examples/github-sync --verbose
89
-
90
- # Dry run (no actual API calls)
91
- node dist/cli.js examples/xero/invoices.vague --dry-run
92
-
93
- # With credentials
94
- node dist/cli.js examples/xero/invoices.vague --auth credentials.json
95
- ```
96
-
97
- ## Credentials Format
98
-
99
- Create a `credentials.json` file:
100
- ```json
101
- {
102
- "SourceName": {
103
- "type": "bearer",
104
- "token": "your-token"
105
- },
106
- "OAuthSource": {
107
- "type": "oauth2",
108
- "accessToken": "your-access-token",
109
- "refreshToken": "your-refresh-token"
110
- }
111
- }
112
- ```
@@ -1,150 +0,0 @@
1
- # Error Handling Example
2
-
3
- Demonstrates comprehensive error handling with schema matching and all flow control directives.
4
-
5
- ## What it does
6
-
7
- 1. **FetchPendingPayments**: Fetches payments with retry and auth refresh
8
- 2. **CheckFraudRisk**: Checks each payment for fraud, routing high-risk to review queue
9
- 3. **ProcessPayments**: Captures approved payments with full error handling
10
- 4. **GenerateReport**: Creates a summary of processing results
11
-
12
- ## Run
13
-
14
- ```bash
15
- node dist/cli.js examples/error-handling/payment-processor.vague --auth credentials.json --verbose
16
- ```
17
-
18
- ## Flow Control Directives
19
-
20
- This example demonstrates all six flow control directives:
21
-
22
- ### 1. `continue` - Proceed to next step
23
- ```vague
24
- match response {
25
- FraudWarning where .risk_level == "low" -> continue
26
- }
27
- ```
28
- When the condition matches, continue with the next steps in the action.
29
-
30
- ### 2. `skip` - Skip remaining steps in current iteration
31
- ```vague
32
- match response {
33
- _ -> skip // Unknown response - skip this payment, move to next
34
- }
35
- ```
36
- Skips remaining steps for the current item in a `for` loop but continues with the next item.
37
-
38
- ### 3. `abort "message"` - Halt mission with error
39
- ```vague
40
- match response {
41
- ServerError -> abort "Payment gateway unavailable"
42
- }
43
- ```
44
- Immediately stops the entire mission and reports the error.
45
-
46
- ### 4. `retry { config }` - Retry with backoff
47
- ```vague
48
- match response {
49
- RateLimitError -> retry {
50
- maxAttempts: 5,
51
- backoff: exponential, // or: linear, constant
52
- initialDelay: 5000,
53
- maxDelay: 120000
54
- }
55
- }
56
- ```
57
- Retries the current fetch with configurable backoff strategy.
58
-
59
- ### 5. `queue target` - Send to dead-letter queue
60
- ```vague
61
- match response {
62
- ServerError -> queue dead_letter_queue
63
- }
64
- ```
65
- Parks the current item for later processing or manual review.
66
-
67
- ### 6. `jump Action then retry` - Execute action, then continue
68
- ```vague
69
- match response {
70
- AuthenticationError -> jump RefreshAuth then retry
71
- }
72
- ```
73
- Jumps to another action (e.g., to refresh auth), then retries the original request.
74
-
75
- ## Schema Matching Patterns
76
-
77
- ### Simple Schema Match
78
- ```vague
79
- match response {
80
- PaymentSuccess -> { store response -> payments }
81
- }
82
- ```
83
-
84
- ### Schema with Guard Clause
85
- ```vague
86
- match response {
87
- FraudWarning where .risk_level == "high" -> queue fraud_review
88
- }
89
- ```
90
-
91
- ### Array Schema Match
92
- ```vague
93
- match response {
94
- [PaymentSuccess] -> { store response -> payments { key: .id } }
95
- }
96
- ```
97
-
98
- ### Wildcard (Catch-All)
99
- ```vague
100
- match response {
101
- SuccessSchema -> continue,
102
- ErrorSchema -> abort "Error occurred",
103
- _ -> skip // Handle any other response
104
- }
105
- ```
106
-
107
- ## Error Handling Patterns
108
-
109
- ### 1. Retry with Auth Refresh
110
- ```vague
111
- AuthenticationError -> jump RefreshAuth then retry
112
- ```
113
-
114
- ### 2. Progressive Backoff
115
- ```vague
116
- RateLimitError -> retry {
117
- maxAttempts: 5,
118
- backoff: exponential,
119
- initialDelay: 1000,
120
- maxDelay: 60000
121
- }
122
- ```
123
-
124
- ### 3. Dead Letter Queue for Failures
125
- ```vague
126
- ServerError -> queue dead_letter_queue
127
- ```
128
-
129
- ### 4. Conditional Processing
130
- ```vague
131
- match response {
132
- FraudWarning where .risk_level == "low" -> continue,
133
- FraudWarning where .risk_level == "medium" -> {
134
- store { ... } -> review_queue
135
- },
136
- FraudWarning where .risk_level == "high" -> {
137
- store { ... } -> fraud_queue
138
- }
139
- }
140
- ```
141
-
142
- ## Features demonstrated
143
-
144
- - All 6 flow control directives
145
- - Schema matching with guard clauses
146
- - Retry with exponential/linear/constant backoff
147
- - Token refresh via `jump...then retry`
148
- - Dead letter queue pattern
149
- - Conditional routing based on response content
150
- - Error logging and audit trails
@@ -1,287 +0,0 @@
1
- // Payment Processing Pipeline with Comprehensive Error Handling
2
- // Demonstrates all flow control directives: continue, skip, abort, retry, queue, jump
3
-
4
- mission ProcessPayments {
5
-
6
- // ============================================================
7
- // SOURCES
8
- // ============================================================
9
-
10
- source PaymentGateway {
11
- auth: bearer,
12
- base: "https://api.paymentgateway.com/v1",
13
- rateLimit: {
14
- strategy: "pause",
15
- maxWait: 60,
16
- fallbackRpm: 100
17
- }
18
- }
19
-
20
- source FraudDetection {
21
- auth: api_key,
22
- base: "https://fraud.example.com/api"
23
- }
24
-
25
- // ============================================================
26
- // STORES
27
- // ============================================================
28
-
29
- store pending_payments: memory("pending")
30
- store processed_payments: sql("payments")
31
- store failed_payments: memory("failed")
32
- store fraud_review_queue: memory("fraud_review")
33
- store dead_letter_queue: memory("dlq")
34
-
35
- // ============================================================
36
- // SCHEMAS - Response Types
37
- // ============================================================
38
-
39
- schema PaymentSuccess {
40
- id: string,
41
- status: string,
42
- amount: decimal,
43
- currency: string,
44
- captured_at: date
45
- }
46
-
47
- schema PaymentPending {
48
- id: string,
49
- status: string,
50
- requires_action: boolean
51
- }
52
-
53
- schema RateLimitError {
54
- error: string,
55
- retry_after: int
56
- }
57
-
58
- schema AuthenticationError {
59
- error: string,
60
- code: string
61
- }
62
-
63
- schema ValidationError {
64
- error: string,
65
- field: string,
66
- message: string
67
- }
68
-
69
- schema FraudWarning {
70
- risk_score: decimal,
71
- risk_level: string,
72
- recommendation: string
73
- }
74
-
75
- schema ServerError {
76
- error: string,
77
- request_id: string
78
- }
79
-
80
- // ============================================================
81
- // ACTION: Fetch Pending Payments
82
- // ============================================================
83
-
84
- action FetchPendingPayments {
85
- get "/payments" {
86
- body: { "status": "pending" },
87
- retry: {
88
- maxAttempts: 3,
89
- backoff: "exponential",
90
- initialDelay: 1000
91
- }
92
- }
93
-
94
- match response {
95
- // Success - store and continue
96
- [PaymentSuccess] -> {
97
- store response -> pending_payments { key: .id }
98
- },
99
-
100
- // Rate limited - retry with backoff
101
- RateLimitError -> retry {
102
- maxAttempts: 5,
103
- backoff: exponential,
104
- initialDelay: 5000,
105
- maxDelay: 120000
106
- },
107
-
108
- // Auth error - refresh token and retry
109
- AuthenticationError -> jump RefreshAuth then retry,
110
-
111
- // Server error - abort the mission
112
- ServerError -> abort "Payment gateway unavailable",
113
-
114
- // Unexpected response - log and continue with empty
115
- _ -> {
116
- store {
117
- error: "Unexpected response fetching payments",
118
- response: response,
119
- timestamp: now()
120
- } -> failed_payments { key: now() }
121
- }
122
- }
123
- }
124
-
125
- // ============================================================
126
- // ACTION: Refresh Authentication (called via jump)
127
- // ============================================================
128
-
129
- action RefreshAuth {
130
- post "/auth/refresh" {
131
- source: PaymentGateway,
132
- body: {
133
- "refresh_token": env("PAYMENT_REFRESH_TOKEN")
134
- }
135
- }
136
-
137
- match response {
138
- _ where .access_token != null -> continue,
139
- _ -> abort "Failed to refresh authentication"
140
- }
141
- }
142
-
143
- // ============================================================
144
- // ACTION: Check Fraud Risk
145
- // ============================================================
146
-
147
- action CheckFraudRisk {
148
- for payment in pending_payments {
149
- post "/check" {
150
- source: FraudDetection,
151
- body: {
152
- "payment_id": payment.id,
153
- "amount": payment.amount,
154
- "currency": payment.currency
155
- }
156
- }
157
-
158
- match response {
159
- // Low risk - continue processing
160
- FraudWarning where .risk_level == "low" -> continue,
161
-
162
- // Medium risk - queue for human review, skip this payment
163
- FraudWarning where .risk_level == "medium" -> {
164
- store {
165
- payment_id: payment.id,
166
- risk_score: response.risk_score,
167
- reason: "Medium risk - requires review"
168
- } -> fraud_review_queue { key: payment.id }
169
- },
170
-
171
- // High risk - queue and skip
172
- FraudWarning where .risk_level == "high" -> {
173
- store {
174
- payment_id: payment.id,
175
- risk_score: response.risk_score,
176
- reason: "High fraud risk detected"
177
- } -> fraud_review_queue { key: payment.id }
178
- },
179
-
180
- // Fraud service error - queue to DLQ for later processing
181
- ServerError -> queue dead_letter_queue,
182
-
183
- // Rate limited - retry
184
- RateLimitError -> retry {
185
- maxAttempts: 3,
186
- backoff: constant,
187
- initialDelay: 10000
188
- },
189
-
190
- // Unknown - skip but log
191
- _ -> skip
192
- }
193
- }
194
- }
195
-
196
- // ============================================================
197
- // ACTION: Process Approved Payments
198
- // ============================================================
199
-
200
- action ProcessPayments {
201
- // Only process payments not in fraud review
202
- for payment in pending_payments where not exists(fraud_review_queue[payment.id]) {
203
- post "/payments/{payment.id}/capture" {
204
- source: PaymentGateway,
205
- body: {
206
- "idempotency_key": payment.id + "_capture"
207
- }
208
- }
209
-
210
- match response {
211
- // Successfully captured
212
- PaymentSuccess -> {
213
- store response -> processed_payments {
214
- key: .id,
215
- upsert: true
216
- }
217
- },
218
-
219
- // Payment requires additional action (3DS, etc)
220
- PaymentPending where .requires_action == true -> {
221
- store {
222
- payment_id: payment.id,
223
- reason: "Requires customer action",
224
- status: "pending_action"
225
- } -> failed_payments { key: payment.id }
226
- },
227
-
228
- // Validation error - payment data issue
229
- ValidationError -> {
230
- store {
231
- payment_id: payment.id,
232
- error: response.message,
233
- field: response.field,
234
- status: "invalid"
235
- } -> failed_payments { key: payment.id }
236
- },
237
-
238
- // Rate limited
239
- RateLimitError -> retry {
240
- maxAttempts: 3,
241
- backoff: exponential,
242
- initialDelay: 2000
243
- },
244
-
245
- // Auth expired during processing
246
- AuthenticationError -> jump RefreshAuth then retry,
247
-
248
- // Server error - queue for retry later
249
- ServerError -> queue dead_letter_queue,
250
-
251
- // Catch-all - queue to DLQ
252
- _ -> queue dead_letter_queue
253
- }
254
- }
255
- }
256
-
257
- // ============================================================
258
- // ACTION: Generate Report
259
- // ============================================================
260
-
261
- action GenerateReport {
262
- map {
263
- processed: length(processed_payments),
264
- failed: length(failed_payments),
265
- fraud_flagged: length(fraud_review_queue),
266
- queued_for_retry: length(dead_letter_queue),
267
- completed_at: now()
268
- } -> report
269
-
270
- validate report {
271
- assume .processed >= 0
272
- }
273
-
274
- store response -> processed_payments {
275
- key: "report_" + now()
276
- }
277
- }
278
-
279
- // ============================================================
280
- // PIPELINE
281
- // ============================================================
282
-
283
- run FetchPendingPayments
284
- then CheckFraudRisk
285
- then ProcessPayments
286
- then GenerateReport
287
- }
@@ -1,74 +0,0 @@
1
- # GitHub Sync Example
2
-
3
- Demonstrates multi-file missions, parallel execution, and error handling with flow control.
4
-
5
- ## Folder Structure
6
-
7
- This mission is organized as a folder with separate action files:
8
-
9
- ```
10
- github-sync/
11
- ├── mission.vague # Main file: sources, stores, schemas, pipeline
12
- ├── fetch-issues.vague # Fetches issues with pagination and error handling
13
- ├── fetch-prs.vague # Fetches pull requests with error handling
14
- ├── normalize.vague # Normalizes to unified schema
15
- └── README.md
16
- ```
17
-
18
- ## What it does
19
-
20
- 1. **FetchIssues** and **FetchPRs** run in **parallel** to fetch data concurrently
21
- 2. **Normalize** runs after both complete, unifying issues and PRs into `work_items`
22
-
23
- ## Run
24
-
25
- ```bash
26
- # Run from folder path
27
- node dist/cli.js examples/github-sync --auth credentials.json --verbose
28
-
29
- # Environment variables needed
30
- export GITHUB_OWNER=your-org
31
- export GITHUB_REPO=your-repo
32
- ```
33
-
34
- Requires a `credentials.json`:
35
- ```json
36
- {
37
- "GitHub": {
38
- "type": "bearer",
39
- "token": "ghp_your_github_token"
40
- }
41
- }
42
- ```
43
-
44
- ## Features demonstrated
45
-
46
- ### Multi-file Missions
47
- - `mission.vague` contains sources, stores, schemas, and pipeline
48
- - Action files (`fetch-issues.vague`, etc.) are automatically discovered and merged
49
- - Actions can reference stores and schemas defined in the root file
50
-
51
- ### Parallel Execution
52
- ```vague
53
- run [FetchIssues, FetchPRs] then Normalize
54
- ```
55
- - `[FetchIssues, FetchPRs]` runs both actions concurrently
56
- - `then Normalize` waits for both to complete before running
57
-
58
- ### Schema Overloading with Match Steps
59
- ```vague
60
- match response {
61
- [GitHubIssue] -> { store response -> issues_raw },
62
- RateLimitError -> retry { maxAttempts: 5 },
63
- NotFoundError -> abort "Repository not found",
64
- _ -> skip
65
- }
66
- ```
67
-
68
- ### Flow Control Directives
69
- - `continue` - Proceed to next step
70
- - `skip` - Skip remaining steps in current action
71
- - `abort "message"` - Halt mission with error
72
- - `retry { ... }` - Retry with backoff configuration
73
- - `queue target` - Send to dead-letter queue
74
- - `jump ActionName then retry` - Execute another action, then retry
@@ -1,47 +0,0 @@
1
- // Fetch GitHub Issues with error handling
2
- // External action file - automatically merged into mission
3
-
4
- action FetchIssues {
5
- get "/repos/{GITHUB_OWNER}/{GITHUB_REPO}/issues" {
6
- source: GitHub,
7
- body: {
8
- "state": "all",
9
- "per_page": 100
10
- },
11
- paginate: page(page, 100),
12
- until: length(response) == 0,
13
- retry: {
14
- maxAttempts: 3,
15
- backoff: "exponential",
16
- initialDelay: 1000
17
- }
18
- }
19
-
20
- // Handle different response types with schema matching
21
- match response {
22
- // Success - continue processing
23
- [GitHubIssue] -> {
24
- store response -> issues_raw { key: .id }
25
- },
26
-
27
- // Rate limited - retry with backoff
28
- RateLimitError -> retry {
29
- maxAttempts: 5,
30
- backoff: exponential,
31
- initialDelay: 60000,
32
- maxDelay: 300000
33
- },
34
-
35
- // Repo not found - abort mission
36
- NotFoundError -> abort "Repository not found - check GITHUB_OWNER and GITHUB_REPO",
37
-
38
- // Unexpected response - log and skip
39
- _ -> {
40
- store {
41
- error: "Unexpected response in FetchIssues",
42
- response: response,
43
- timestamp: now()
44
- } -> errors { key: now() }
45
- }
46
- }
47
- }
@@ -1,40 +0,0 @@
1
- // Fetch GitHub Pull Requests with error handling
2
- // External action file - automatically merged into mission
3
-
4
- action FetchPRs {
5
- get "/repos/{GITHUB_OWNER}/{GITHUB_REPO}/pulls" {
6
- source: GitHub,
7
- body: {
8
- "state": "all",
9
- "per_page": 100
10
- },
11
- paginate: page(page, 100),
12
- until: length(response) == 0,
13
- retry: {
14
- maxAttempts: 3,
15
- backoff: "exponential",
16
- initialDelay: 1000
17
- }
18
- }
19
-
20
- // Handle different response types
21
- match response {
22
- // Success - store PRs
23
- [GitHubPR] -> {
24
- store response -> prs_raw { key: .id }
25
- },
26
-
27
- // Rate limited - retry
28
- RateLimitError -> retry {
29
- maxAttempts: 5,
30
- backoff: exponential,
31
- initialDelay: 60000
32
- },
33
-
34
- // Not found - abort
35
- NotFoundError -> abort "Repository not found",
36
-
37
- // Fallback - log error and skip
38
- _ -> skip
39
- }
40
- }