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,174 +0,0 @@
1
- name: CI
2
-
3
- on:
4
- push:
5
- branches: [main]
6
- pull_request:
7
- branches: [main]
8
-
9
- concurrency:
10
- group: ${{ github.workflow }}-${{ github.ref }}
11
- cancel-in-progress: true
12
-
13
- jobs:
14
- test:
15
- name: Test (Node ${{ matrix.node-version }})
16
- runs-on: ubuntu-latest
17
-
18
- strategy:
19
- fail-fast: false
20
- matrix:
21
- node-version: [18, 20, 22]
22
-
23
- steps:
24
- - name: Checkout reqon
25
- uses: actions/checkout@v4
26
-
27
- - name: Checkout vague dependency
28
- uses: actions/checkout@v4
29
- with:
30
- repository: mcclowes/vague
31
- path: ../vague
32
-
33
- - name: Setup Node.js ${{ matrix.node-version }}
34
- uses: actions/setup-node@v4
35
- with:
36
- node-version: ${{ matrix.node-version }}
37
- cache: 'npm'
38
-
39
- - name: Install vague dependencies
40
- run: npm ci
41
- working-directory: ../vague
42
-
43
- - name: Build vague
44
- run: npm run build
45
- working-directory: ../vague
46
-
47
- - name: Install dependencies
48
- run: npm ci
49
-
50
- - name: Run tests
51
- run: npm run test:run
52
-
53
- - name: Build
54
- run: npm run build
55
-
56
- coverage:
57
- name: Coverage
58
- runs-on: ubuntu-latest
59
- needs: test
60
-
61
- steps:
62
- - name: Checkout reqon
63
- uses: actions/checkout@v4
64
-
65
- - name: Checkout vague dependency
66
- uses: actions/checkout@v4
67
- with:
68
- repository: mcclowes/vague
69
- path: ../vague
70
-
71
- - name: Setup Node.js
72
- uses: actions/setup-node@v4
73
- with:
74
- node-version: 20
75
- cache: 'npm'
76
-
77
- - name: Install vague dependencies
78
- run: npm ci
79
- working-directory: ../vague
80
-
81
- - name: Build vague
82
- run: npm run build
83
- working-directory: ../vague
84
-
85
- - name: Install dependencies
86
- run: npm ci
87
-
88
- - name: Run tests with coverage
89
- run: npm run test:coverage
90
-
91
- - name: Upload coverage reports
92
- uses: codecov/codecov-action@v4
93
- with:
94
- token: ${{ secrets.CODECOV_TOKEN }}
95
- directory: ./coverage
96
- fail_ci_if_error: false
97
- verbose: true
98
-
99
- typecheck:
100
- name: Type Check
101
- runs-on: ubuntu-latest
102
-
103
- steps:
104
- - name: Checkout reqon
105
- uses: actions/checkout@v4
106
-
107
- - name: Checkout vague dependency
108
- uses: actions/checkout@v4
109
- with:
110
- repository: mcclowes/vague
111
- path: ../vague
112
-
113
- - name: Setup Node.js
114
- uses: actions/setup-node@v4
115
- with:
116
- node-version: 20
117
- cache: 'npm'
118
-
119
- - name: Install vague dependencies
120
- run: npm ci
121
- working-directory: ../vague
122
-
123
- - name: Build vague
124
- run: npm run build
125
- working-directory: ../vague
126
-
127
- - name: Install dependencies
128
- run: npm ci
129
-
130
- - name: Type check
131
- run: npx tsc --noEmit
132
-
133
- benchmark:
134
- name: Benchmark
135
- runs-on: ubuntu-latest
136
- if: github.event_name == 'push' && github.ref == 'refs/heads/main'
137
- needs: test
138
-
139
- steps:
140
- - name: Checkout reqon
141
- uses: actions/checkout@v4
142
-
143
- - name: Checkout vague dependency
144
- uses: actions/checkout@v4
145
- with:
146
- repository: mcclowes/vague
147
- path: ../vague
148
-
149
- - name: Setup Node.js
150
- uses: actions/setup-node@v4
151
- with:
152
- node-version: 20
153
- cache: 'npm'
154
-
155
- - name: Install vague dependencies
156
- run: npm ci
157
- working-directory: ../vague
158
-
159
- - name: Build vague
160
- run: npm run build
161
- working-directory: ../vague
162
-
163
- - name: Install dependencies
164
- run: npm ci
165
-
166
- - name: Run benchmarks
167
- run: npm run bench
168
-
169
- - name: Upload benchmark results
170
- uses: actions/upload-artifact@v4
171
- with:
172
- name: benchmark-results
173
- path: benchmark-results.json
174
- if-no-files-found: ignore
@@ -1,73 +0,0 @@
1
- name: Release
2
-
3
- on:
4
- push:
5
- tags:
6
- - 'v*'
7
-
8
- permissions:
9
- contents: write
10
- id-token: write
11
-
12
- jobs:
13
- release:
14
- name: Release
15
- runs-on: ubuntu-latest
16
-
17
- steps:
18
- - name: Checkout reqon
19
- uses: actions/checkout@v4
20
-
21
- - name: Checkout vague dependency
22
- uses: actions/checkout@v4
23
- with:
24
- repository: mcclowes/vague
25
- path: ../vague
26
-
27
- - name: Setup Node.js
28
- uses: actions/setup-node@v4
29
- with:
30
- node-version: 20
31
- cache: 'npm'
32
- registry-url: 'https://registry.npmjs.org'
33
-
34
- - name: Install vague dependencies
35
- run: npm ci
36
- working-directory: ../vague
37
-
38
- - name: Build vague
39
- run: npm run build
40
- working-directory: ../vague
41
-
42
- - name: Install dependencies
43
- run: npm ci
44
-
45
- - name: Run tests
46
- run: npm run test:run
47
-
48
- - name: Build
49
- run: npm run build
50
-
51
- - name: Update package.json for publishing
52
- run: |
53
- # Replace local file dependency with published version for npm
54
- # This assumes vague-lang is published to npm
55
- node -e "
56
- const pkg = require('./package.json');
57
- if (pkg.dependencies['vague-lang']?.startsWith('file:')) {
58
- pkg.dependencies['vague-lang'] = '*';
59
- }
60
- require('fs').writeFileSync('./package.json', JSON.stringify(pkg, null, 2));
61
- "
62
-
63
- - name: Publish to npm
64
- run: npm publish --provenance --access public
65
- env:
66
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
67
-
68
- - name: Create GitHub Release
69
- uses: softprops/action-gh-release@v2
70
- with:
71
- generate_release_notes: true
72
- draft: false
73
- prerelease: ${{ contains(github.ref, '-alpha') || contains(github.ref, '-beta') || contains(github.ref, '-rc') }}
package/CLAUDE.md DELETED
@@ -1,72 +0,0 @@
1
- # Reqon
2
-
3
- A declarative DSL framework for fetch, map, validate pipelines - built on [Vague](https://github.com/mcclowes/vague).
4
-
5
- ## Architecture
6
-
7
- - **Vague** is the DSL layer (lexer, parser, expression syntax)
8
- - **Reqon** is the runtime/framework extending Vague with execution semantics
9
-
10
- ## Project Structure
11
-
12
- ```
13
- src/
14
- ├── ast/ # Extended AST nodes (missions, actions, steps)
15
- ├── auth/ # Rate limiting and authentication providers
16
- ├── errors/ # Structured error classes (ParseError, RuntimeError, etc.)
17
- ├── execution/ # Execution state management and persistence
18
- ├── interpreter/ # Runtime execution
19
- │ ├── context.ts # Execution context (stores, variables)
20
- │ ├── evaluator.ts # Expression evaluation
21
- │ ├── executor.ts # Mission/action execution
22
- │ ├── fetch-handler.ts # HTTP fetch with sync checkpoints
23
- │ ├── pagination.ts # Pagination strategies (offset, page, cursor)
24
- │ └── http.ts # HTTP client with retry/backoff
25
- ├── lexer/ # Reqon keywords (uses Vague's lexer via plugin)
26
- ├── oas/ # OpenAPI spec integration
27
- ├── parser/ # Parser for mission/action/fetch/store syntax
28
- ├── scheduler/ # Cron scheduling for missions
29
- ├── stores/ # Store adapters (memory, file, extensible to SQL/NoSQL)
30
- ├── sync/ # Incremental sync checkpointing
31
- ├── utils/ # Shared utilities (sleep, path traversal, logger)
32
- ├── index.ts # Main exports
33
- └── cli.ts # CLI entry point
34
- ```
35
-
36
- ## Commands
37
-
38
- ```bash
39
- npm run build # Compile TypeScript
40
- npm run test # Run tests in watch mode
41
- npm run test:run # Run tests once
42
- npm run dev # Watch mode compilation
43
- ```
44
-
45
- ## DSL Syntax
46
-
47
- Key constructs:
48
- - `mission` - Pipeline definition
49
- - `source` - API source with auth (oauth2, bearer, basic, api_key), or from OAS spec
50
- - `store` - Storage target (memory, file, sql, nosql)
51
- - `action` - Discrete pipeline step
52
- - `fetch` - HTTP request with optional pagination/retry, or OAS operationId reference
53
- - `for...in...where` - Iteration with filtering
54
- - `map...->` - Schema transformation
55
- - `validate` - Constraint checking with `assume`
56
- - `run...then` - Pipeline sequencing (supports `run [A, B] then C` for parallel)
57
- - `match` - Pattern matching (from Vague)
58
- - `since: lastSync` - Incremental sync with checkpointing
59
-
60
- ## Code Conventions
61
-
62
- - TypeScript with strict mode
63
- - Vitest for testing
64
- - Test files alongside implementation (`*.test.ts`)
65
- - Vague dependency via local file link (`file:../vague`)
66
-
67
- ## Key Decisions
68
-
69
- 1. **Extends Vague**: Reqon uses Vague's lexer (via plugin system) and expression syntax; parser extends Vague's token types
70
- 2. **Keyword conflicts**: Parser explicitly handles Reqon keywords (key, partial, upsert, page, etc.) when they appear in option contexts
71
- 3. **`response` identifier**: Special-cased in evaluator to reference `ctx.response`
72
- 4. **Store adapters**: Interface-based design for pluggable storage backends
package/CONTRIBUTING.md DELETED
@@ -1,161 +0,0 @@
1
- # Contributing to Reqon
2
-
3
- Thank you for your interest in contributing to Reqon! This guide will help you get started.
4
-
5
- ## Getting Started
6
-
7
- ### Prerequisites
8
-
9
- - Node.js 18 or higher
10
- - npm
11
- - [Vague](https://github.com/mcclowes/vague) cloned as a sibling directory (required for local development)
12
-
13
- ### Setup
14
-
15
- 1. Clone the repository:
16
- ```bash
17
- git clone https://github.com/mcclowes/reqon.git
18
- cd reqon
19
- ```
20
-
21
- 2. Clone Vague as a sibling directory:
22
- ```bash
23
- cd ..
24
- git clone https://github.com/mcclowes/vague.git
25
- cd reqon
26
- ```
27
-
28
- 3. Install dependencies:
29
- ```bash
30
- npm install
31
- ```
32
-
33
- 4. Build the project:
34
- ```bash
35
- npm run build
36
- ```
37
-
38
- 5. Run tests to verify setup:
39
- ```bash
40
- npm run test:run
41
- ```
42
-
43
- ## Development Workflow
44
-
45
- ### Available Scripts
46
-
47
- | Command | Description |
48
- |---------|-------------|
49
- | `npm run build` | Compile TypeScript to `dist/` |
50
- | `npm run dev` | Watch mode compilation |
51
- | `npm run test` | Run tests in watch mode |
52
- | `npm run test:run` | Run tests once |
53
- | `npm run test:coverage` | Run tests with coverage report |
54
-
55
- ### Project Structure
56
-
57
- ```
58
- src/
59
- ├── ast/ # Extended AST nodes (missions, actions, steps)
60
- ├── auth/ # Rate limiting and authentication providers
61
- ├── errors/ # Structured error classes
62
- ├── execution/ # Execution state management and persistence
63
- ├── interpreter/ # Runtime execution (context, evaluator, executor)
64
- ├── lexer/ # Reqon keywords (uses Vague's lexer via plugin)
65
- ├── oas/ # OpenAPI spec integration
66
- ├── parser/ # Parser for mission/action/fetch/store syntax
67
- ├── scheduler/ # Cron scheduling for missions
68
- ├── stores/ # Store adapters (memory, file, postgrest)
69
- ├── sync/ # Incremental sync checkpointing
70
- ├── utils/ # Shared utilities
71
- ├── index.ts # Main exports
72
- └── cli.ts # CLI entry point
73
- ```
74
-
75
- ## Code Conventions
76
-
77
- ### TypeScript
78
-
79
- - Strict mode is enabled
80
- - Use explicit types for function parameters and return values
81
- - Prefer `interface` over `type` for object shapes
82
-
83
- ### Testing
84
-
85
- - Tests use [Vitest](https://vitest.dev/)
86
- - Test files are co-located with implementation: `feature.ts` → `feature.test.ts`
87
- - Write tests for new functionality
88
- - Ensure existing tests pass before submitting
89
-
90
- Example test structure:
91
- ```typescript
92
- import { describe, it, expect } from 'vitest';
93
-
94
- describe('FeatureName', () => {
95
- it('should do something specific', () => {
96
- // Arrange
97
- // Act
98
- // Assert
99
- expect(result).toBe(expected);
100
- });
101
- });
102
- ```
103
-
104
- ### Architecture
105
-
106
- Reqon extends [Vague](https://github.com/mcclowes/vague), which provides the core DSL layer (lexer, parser, expression syntax). Reqon adds:
107
-
108
- - Mission/action/step AST nodes
109
- - HTTP fetch with pagination and retry
110
- - Store adapters for persistence
111
- - Execution context and runtime
112
-
113
- When adding features:
114
- - Extend Vague's lexer/parser if adding new expression syntax
115
- - Add new step types in `src/ast/` and handle them in `src/interpreter/executor.ts`
116
- - New store backends implement the `StoreAdapter` interface in `src/stores/`
117
-
118
- ## Submitting Changes
119
-
120
- ### Pull Requests
121
-
122
- 1. Fork the repository
123
- 2. Create a feature branch from `main`
124
- 3. Make your changes
125
- 4. Ensure tests pass: `npm run test:run`
126
- 5. Ensure the build succeeds: `npm run build`
127
- 6. Submit a pull request
128
-
129
- ### Commit Messages
130
-
131
- Write clear, concise commit messages that describe what changed and why:
132
-
133
- ```
134
- Add cursor-based pagination support
135
-
136
- - Implement cursor pagination strategy in pagination.ts
137
- - Add cursor option to fetch step parser
138
- - Add tests for cursor pagination
139
- ```
140
-
141
- ### Code Review
142
-
143
- All submissions require review. We aim to provide feedback within a few days.
144
-
145
- ## Reporting Issues
146
-
147
- When reporting bugs, please include:
148
-
149
- - Reqon version
150
- - Node.js version
151
- - Minimal reproduction case (ideally a `.vague` snippet)
152
- - Expected vs actual behavior
153
- - Error messages and stack traces
154
-
155
- ## Questions?
156
-
157
- Open an issue for questions about contributing or the codebase architecture.
158
-
159
- ## License
160
-
161
- By contributing, you agree that your contributions will be licensed under the ISC License.
package/TODO.md DELETED
@@ -1,51 +0,0 @@
1
- # TODO
2
-
3
- ## Core Features
4
-
5
- - [x] **State persistence** - Durable execution state for resumable missions with checkpointing
6
- - [x] **Incremental sync** - `since: lastSync` parameter for "only fetch changed since last run"
7
- - [ ] **Idempotency** - Upsert semantics and conflict resolution strategies
8
- - [x] **Schema overloading** - `match response { Schema1 -> ..., Schema2 -> ... }` - auto-fork based on response shape matching
9
- - [x] **Error handling via match** - Flow control directives (continue, skip, abort, retry, queue, jump) in match arms
10
- - [x] **Multi-file missions** - Split actions into separate files within a folder (mission.vague + action files)
11
- - [x] **Vague plugin system** - Extended Vague with runtime-extensible keywords and statement parsers; Reqon exports a plugin for Vague integration
12
-
13
- ## Store Adapters
14
-
15
- - [x] **File adapter** - JSON file-based storage in `.reqon-data/` for local development
16
- - [ ] **SQL adapter** - PostgreSQL/MySQL store implementation
17
- - [ ] **NoSQL adapter** - MongoDB/DynamoDB store implementation
18
-
19
- ## API Integration
20
-
21
- - [x] **OpenAPI integration** - Load sources from OAS, resolve operationIds, validate responses
22
- - [x] **Rate limiting** - Adaptive rate limiter, parses X-RateLimit-* headers, respects Retry-After, supports pause/throttle/fail strategies with callbacks
23
- - [x] **OAuth2 flow** - Token store interface, auto-refresh before expiry, 401 retry with refresh
24
- - [ ] **Connection registry** - Multi-tenant token management with proactive refresh
25
-
26
- ## DSL Enhancements
27
-
28
- - [x] **`is` type checking** - `assume .items is array` syntax
29
- - [x] **Parallel execution** - `run [Step1, Step2] then Step3` (bracket syntax for parallel stages)
30
- - [x] **Conditional actions** - `run Step1 then Step2 if condition` (already implemented in parser)
31
- - [x] **Variables/let bindings** - Reusable values within missions
32
- - [x] **Schema definitions** - Full Vague schema support with validation and matching
33
-
34
- ## Developer Experience
35
-
36
- - [x] **Better error messages** - Line numbers, column, source context with pointer in parse/lexer/runtime errors
37
- - [ ] **VS Code extension** - Syntax highlighting and LSP for `.vague` files
38
- - [ ] **Debug mode** - Step-through execution with state inspection
39
- - [ ] **Dry run improvements** - Mock responses based on schema
40
-
41
- ## Testing
42
-
43
- - [ ] **Integration tests with real APIs** - Xero sandbox, etc.
44
- - [ ] **Property-based testing** - Fuzzing the parser
45
- - [ ] **Benchmark suite** - Performance testing for large datasets
46
-
47
- ## Documentation
48
-
49
- - [ ] **More examples** - QuickBooks, Stripe, Shopify integrations
50
- - [ ] **Architecture docs** - How Reqon extends Vague
51
- - [ ] **Contributing guide**
@@ -1 +0,0 @@
1
- export {};