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,305 +0,0 @@
1
- ---
2
- sidebar_position: 2
3
- ---
4
-
5
- # Cron Expressions
6
-
7
- Reqon supports full cron expression syntax for precise scheduling.
8
-
9
- ## Syntax
10
-
11
- ```vague
12
- schedule: cron "minute hour day month weekday"
13
- ```
14
-
15
- ## Field Reference
16
-
17
- | Field | Values | Special Characters |
18
- |-------|--------|-------------------|
19
- | Minute | 0-59 | * , - / |
20
- | Hour | 0-23 | * , - / |
21
- | Day of Month | 1-31 | * , - / |
22
- | Month | 1-12 | * , - / |
23
- | Day of Week | 0-6 (0=Sunday) | * , - / |
24
-
25
- ## Special Characters
26
-
27
- | Character | Meaning | Example |
28
- |-----------|---------|---------|
29
- | `*` | Any value | `* * * * *` = every minute |
30
- | `,` | Value list | `0,30 * * * *` = minute 0 and 30 |
31
- | `-` | Range | `0 9-17 * * *` = 9am to 5pm |
32
- | `/` | Step | `*/15 * * * *` = every 15 minutes |
33
-
34
- ## Common Patterns
35
-
36
- ### Every Minute
37
-
38
- ```vague
39
- schedule: cron "* * * * *"
40
- ```
41
-
42
- ### Every Hour
43
-
44
- ```vague
45
- // At minute 0
46
- schedule: cron "0 * * * *"
47
- ```
48
-
49
- ### Every N Minutes
50
-
51
- ```vague
52
- // Every 5 minutes
53
- schedule: cron "*/5 * * * *"
54
-
55
- // Every 15 minutes
56
- schedule: cron "*/15 * * * *"
57
-
58
- // Every 30 minutes
59
- schedule: cron "*/30 * * * *"
60
- ```
61
-
62
- ### Every N Hours
63
-
64
- ```vague
65
- // Every 2 hours
66
- schedule: cron "0 */2 * * *"
67
-
68
- // Every 6 hours
69
- schedule: cron "0 */6 * * *"
70
-
71
- // Every 12 hours
72
- schedule: cron "0 */12 * * *"
73
- ```
74
-
75
- ### Daily
76
-
77
- ```vague
78
- // At midnight
79
- schedule: cron "0 0 * * *"
80
-
81
- // At 6am
82
- schedule: cron "0 6 * * *"
83
-
84
- // At 9am
85
- schedule: cron "0 9 * * *"
86
-
87
- // At 11pm
88
- schedule: cron "0 23 * * *"
89
- ```
90
-
91
- ### Multiple Times Per Day
92
-
93
- ```vague
94
- // At 9am and 5pm
95
- schedule: cron "0 9,17 * * *"
96
-
97
- // At midnight, 8am, 4pm
98
- schedule: cron "0 0,8,16 * * *"
99
- ```
100
-
101
- ### Weekly
102
-
103
- ```vague
104
- // Every Sunday at midnight
105
- schedule: cron "0 0 * * 0"
106
-
107
- // Every Monday at 9am
108
- schedule: cron "0 9 * * 1"
109
-
110
- // Every Friday at 5pm
111
- schedule: cron "0 17 * * 5"
112
- ```
113
-
114
- ### Weekdays Only
115
-
116
- ```vague
117
- // Weekdays at 9am
118
- schedule: cron "0 9 * * 1-5"
119
-
120
- // Weekdays every hour during business hours
121
- schedule: cron "0 9-17 * * 1-5"
122
- ```
123
-
124
- ### Weekends Only
125
-
126
- ```vague
127
- // Weekends at noon
128
- schedule: cron "0 12 * * 0,6"
129
- ```
130
-
131
- ### Monthly
132
-
133
- ```vague
134
- // First of month at midnight
135
- schedule: cron "0 0 1 * *"
136
-
137
- // First of month at 6am
138
- schedule: cron "0 6 1 * *"
139
-
140
- // 15th of month at noon
141
- schedule: cron "0 12 15 * *"
142
-
143
- // Last day approach: run on 28th
144
- schedule: cron "0 0 28 * *"
145
- ```
146
-
147
- ### Quarterly
148
-
149
- ```vague
150
- // First day of quarter at 6am
151
- schedule: cron "0 6 1 1,4,7,10 *"
152
- ```
153
-
154
- ### Yearly
155
-
156
- ```vague
157
- // January 1st at midnight
158
- schedule: cron "0 0 1 1 *"
159
-
160
- // First Monday of year (approximate)
161
- schedule: cron "0 9 1-7 1 1"
162
- ```
163
-
164
- ## Complex Examples
165
-
166
- ### Business Hours Only
167
-
168
- ```vague
169
- // Every 30 minutes, 9am-5pm, weekdays
170
- schedule: cron "*/30 9-17 * * 1-5"
171
- ```
172
-
173
- ### Night Batch Jobs
174
-
175
- ```vague
176
- // At 2am every day
177
- schedule: cron "0 2 * * *"
178
- ```
179
-
180
- ### Multiple Specific Times
181
-
182
- ```vague
183
- // 8am, 12pm, 6pm every day
184
- schedule: cron "0 8,12,18 * * *"
185
- ```
186
-
187
- ### End of Month (Approximation)
188
-
189
- ```vague
190
- // 28th of every month
191
- schedule: cron "0 0 28 * *"
192
- ```
193
-
194
- ## Timezone Handling
195
-
196
- Cron expressions use the system timezone by default.
197
-
198
- ### Specify Timezone
199
-
200
- ```vague
201
- mission TimezoneSync {
202
- schedule: cron "0 9 * * *"
203
- timezone: "America/New_York"
204
- }
205
- ```
206
-
207
- ### UTC
208
-
209
- ```vague
210
- mission UTCSync {
211
- schedule: cron "0 9 * * *"
212
- timezone: "UTC"
213
- }
214
- ```
215
-
216
- ## Testing Cron Expressions
217
-
218
- ### Dry Run
219
-
220
- ```bash
221
- reqon ./mission.vague --dry-run
222
- # Shows: Next run at: 2024-01-20 09:00:00
223
- ```
224
-
225
- ### Validate Expression
226
-
227
- ```bash
228
- reqon --validate-cron "0 9 * * *"
229
- # Valid cron expression
230
- # Next 5 runs:
231
- # 2024-01-20 09:00:00
232
- # 2024-01-21 09:00:00
233
- # 2024-01-22 09:00:00
234
- # 2024-01-23 09:00:00
235
- # 2024-01-24 09:00:00
236
- ```
237
-
238
- ## Best Practices
239
-
240
- ### Avoid Midnight
241
-
242
- Many systems run jobs at midnight, causing load spikes:
243
-
244
- ```vague
245
- // Instead of 0 0 * * *
246
- schedule: cron "0 3 * * *" // 3am
247
- ```
248
-
249
- ### Spread Load
250
-
251
- Stagger related jobs:
252
-
253
- ```vague
254
- mission SyncCustomers {
255
- schedule: cron "0 * * * *" // On the hour
256
- }
257
-
258
- mission SyncOrders {
259
- schedule: cron "15 * * * *" // 15 past
260
- }
261
-
262
- mission SyncProducts {
263
- schedule: cron "30 * * * *" // 30 past
264
- }
265
- ```
266
-
267
- ### Consider Execution Time
268
-
269
- Account for job duration:
270
-
271
- ```vague
272
- // If job takes 10 minutes, don't schedule every 5
273
- schedule: cron "*/15 * * * *" // Every 15 minutes
274
-
275
- // Or use skipIfRunning
276
- skipIfRunning: true
277
- ```
278
-
279
- ## Troubleshooting
280
-
281
- ### Wrong Times
282
-
283
- Check timezone settings:
284
-
285
- ```bash
286
- date # System time
287
- TZ=UTC date # UTC time
288
- ```
289
-
290
- ### Missed Runs
291
-
292
- If daemon was down, jobs don't backfill. Consider:
293
-
294
- ```vague
295
- retryOnFailure: { maxAttempts: 3 }
296
- ```
297
-
298
- ### Expression Errors
299
-
300
- Validate syntax:
301
-
302
- ```bash
303
- reqon --validate-cron "invalid"
304
- # Error: Invalid cron expression
305
- ```
@@ -1,317 +0,0 @@
1
- ---
2
- sidebar_position: 4
3
- ---
4
-
5
- # Daemon Mode
6
-
7
- Daemon mode runs Reqon as a long-running service, executing scheduled missions automatically.
8
-
9
- ## Starting the Daemon
10
-
11
- ```bash
12
- reqon ./missions/ --daemon
13
- ```
14
-
15
- ## How It Works
16
-
17
- 1. Daemon loads all missions from the specified path
18
- 2. Parses schedule configurations
19
- 3. Runs missions according to their schedules
20
- 4. Continues until stopped
21
-
22
- ## Command Options
23
-
24
- ```bash
25
- reqon ./missions/ --daemon [options]
26
-
27
- Options:
28
- --auth <file> Credentials file
29
- --verbose Enable detailed logging
30
- --check-interval How often to check schedules (default: 1000ms)
31
- ```
32
-
33
- ## Example Setup
34
-
35
- ### Mission Files
36
-
37
- ```
38
- missions/
39
- ├── sync-customers.vague
40
- ├── sync-orders.vague
41
- └── daily-report.vague
42
- ```
43
-
44
- ### sync-customers.vague
45
-
46
- ```vague
47
- mission SyncCustomers {
48
- schedule: every 15 minutes
49
-
50
- source API { auth: bearer, base: "https://api.example.com" }
51
- store customers: file("customers")
52
-
53
- action Sync {
54
- get "/customers" { since: lastSync }
55
- store response -> customers { key: .id, upsert: true }
56
- }
57
-
58
- run Sync
59
- }
60
- ```
61
-
62
- ### Running
63
-
64
- ```bash
65
- reqon ./missions/ --daemon --auth ./credentials.json --verbose
66
- ```
67
-
68
- ## Process Management
69
-
70
- ### Foreground
71
-
72
- ```bash
73
- reqon ./missions/ --daemon
74
- ```
75
-
76
- Press Ctrl+C to stop.
77
-
78
- ### Background (Linux)
79
-
80
- ```bash
81
- nohup reqon ./missions/ --daemon > reqon.log 2>&1 &
82
- ```
83
-
84
- ### Systemd Service
85
-
86
- Create `/etc/systemd/system/reqon.service`:
87
-
88
- ```ini
89
- [Unit]
90
- Description=Reqon Data Sync Daemon
91
- After=network.target
92
-
93
- [Service]
94
- Type=simple
95
- User=reqon
96
- WorkingDirectory=/opt/reqon
97
- ExecStart=/usr/bin/npx reqon ./missions/ --daemon --auth ./credentials.json
98
- Restart=on-failure
99
- RestartSec=10
100
-
101
- [Install]
102
- WantedBy=multi-user.target
103
- ```
104
-
105
- Enable and start:
106
-
107
- ```bash
108
- sudo systemctl enable reqon
109
- sudo systemctl start reqon
110
- ```
111
-
112
- ### Docker
113
-
114
- Dockerfile:
115
-
116
- ```dockerfile
117
- FROM node:20-alpine
118
-
119
- WORKDIR /app
120
- COPY package*.json ./
121
- RUN npm install
122
-
123
- COPY . .
124
-
125
- CMD ["npx", "reqon", "./missions/", "--daemon"]
126
- ```
127
-
128
- docker-compose.yml:
129
-
130
- ```yaml
131
- version: '3'
132
- services:
133
- reqon:
134
- build: .
135
- volumes:
136
- - ./missions:/app/missions
137
- - ./credentials.json:/app/credentials.json
138
- - reqon-data:/app/.vague-data
139
- environment:
140
- - NODE_ENV=production
141
- restart: unless-stopped
142
-
143
- volumes:
144
- reqon-data:
145
- ```
146
-
147
- ## Graceful Shutdown
148
-
149
- Reqon handles SIGINT and SIGTERM:
150
-
151
- 1. Stops accepting new runs
152
- 2. Waits for in-progress missions to complete
153
- 3. Saves state
154
- 4. Exits cleanly
155
-
156
- ```bash
157
- # Graceful stop
158
- kill -TERM $(pgrep -f "reqon.*daemon")
159
-
160
- # Or with systemd
161
- systemctl stop reqon
162
- ```
163
-
164
- ## Health Checks
165
-
166
- ### Status Endpoint
167
-
168
- Enable HTTP health endpoint:
169
-
170
- ```bash
171
- reqon ./missions/ --daemon --health-port 8080
172
- ```
173
-
174
- Check health:
175
-
176
- ```bash
177
- curl http://localhost:8080/health
178
- # {"status":"ok","uptime":3600,"missionsLoaded":3}
179
- ```
180
-
181
- ### File-Based Health
182
-
183
- ```vague
184
- mission HealthCheck {
185
- schedule: every 1 minute
186
-
187
- action Check {
188
- store { status: "ok", timestamp: now() } -> health
189
- }
190
- }
191
- ```
192
-
193
- Monitor the health store file.
194
-
195
- ## Logging
196
-
197
- ### Log Levels
198
-
199
- ```bash
200
- # Default logging
201
- reqon ./missions/ --daemon
202
-
203
- # Verbose logging
204
- reqon ./missions/ --daemon --verbose
205
-
206
- # Environment variable
207
- REQON_LOG_LEVEL=debug reqon ./missions/ --daemon
208
- ```
209
-
210
- ### Log Output
211
-
212
- ```
213
- [2024-01-20 09:00:00] [INFO] Starting Reqon daemon
214
- [2024-01-20 09:00:00] [INFO] Loaded 3 missions
215
- [2024-01-20 09:00:00] [INFO] SyncCustomers: Next run at 09:15:00
216
- [2024-01-20 09:00:00] [INFO] SyncOrders: Next run at 09:05:00
217
- [2024-01-20 09:00:00] [INFO] DailyReport: Next run at 2024-01-21 00:00:00
218
- [2024-01-20 09:05:00] [INFO] SyncOrders: Starting run
219
- [2024-01-20 09:05:02] [INFO] SyncOrders: Completed (2.1s)
220
- ```
221
-
222
- ### Structured Logging
223
-
224
- ```bash
225
- REQON_LOG_FORMAT=json reqon ./missions/ --daemon
226
- ```
227
-
228
- ```json
229
- {"timestamp":"2024-01-20T09:00:00Z","level":"info","message":"Starting run","mission":"SyncCustomers"}
230
- ```
231
-
232
- ## Monitoring
233
-
234
- ### Metrics
235
-
236
- Export metrics with `--metrics-port`:
237
-
238
- ```bash
239
- reqon ./missions/ --daemon --metrics-port 9090
240
- ```
241
-
242
- Prometheus format:
243
-
244
- ```
245
- # HELP reqon_mission_runs_total Total mission runs
246
- reqon_mission_runs_total{mission="SyncCustomers",status="success"} 142
247
- reqon_mission_runs_total{mission="SyncCustomers",status="failure"} 3
248
-
249
- # HELP reqon_mission_duration_seconds Mission run duration
250
- reqon_mission_duration_seconds{mission="SyncCustomers",quantile="0.5"} 2.1
251
- ```
252
-
253
- ### Alerting
254
-
255
- Create alerting rules:
256
-
257
- ```yaml
258
- groups:
259
- - name: reqon
260
- rules:
261
- - alert: ReqonMissionFailing
262
- expr: rate(reqon_mission_runs_total{status="failure"}[5m]) > 0.1
263
- for: 10m
264
- labels:
265
- severity: warning
266
- annotations:
267
- summary: "Mission {{ $labels.mission }} is failing"
268
- ```
269
-
270
- ## Best Practices
271
-
272
- ### Use Separate Credentials
273
-
274
- ```bash
275
- # Production credentials
276
- reqon ./missions/ --daemon --auth ./prod-credentials.json
277
- ```
278
-
279
- ### Run as Non-Root
280
-
281
- ```bash
282
- # Create dedicated user
283
- useradd -r -s /bin/false reqon
284
-
285
- # Run as that user
286
- sudo -u reqon reqon ./missions/ --daemon
287
- ```
288
-
289
- ### Persistent Storage
290
-
291
- Ensure `.vague-data` is on persistent storage:
292
-
293
- ```yaml
294
- volumes:
295
- - /var/lib/reqon:/app/.vague-data
296
- ```
297
-
298
- ### Health Monitoring
299
-
300
- Always enable health checks:
301
-
302
- ```bash
303
- reqon ./missions/ --daemon --health-port 8080
304
- ```
305
-
306
- ### Log Rotation
307
-
308
- ```bash
309
- # Use logrotate
310
- /var/log/reqon/*.log {
311
- daily
312
- rotate 7
313
- compress
314
- missingok
315
- notifempty
316
- }
317
- ```