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.
- package/CHANGELOG.md +7 -0
- package/README.md +45 -3
- package/dist/ast/nodes.d.ts +91 -4
- package/dist/ast/nodes.js +14 -0
- package/dist/auth/circuit-breaker.d.ts +11 -0
- package/dist/auth/circuit-breaker.js +90 -18
- package/dist/auth/credentials.d.ts +6 -1
- package/dist/auth/credentials.js +12 -4
- package/dist/auth/oauth2-provider.js +13 -3
- package/dist/auth/rate-limiter.d.ts +12 -1
- package/dist/auth/rate-limiter.js +39 -26
- package/dist/auth/token-store.js +8 -1
- package/dist/cli.d.ts +24 -1
- package/dist/cli.js +149 -10
- package/dist/config/constants.d.ts +152 -0
- package/dist/config/constants.js +139 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.js +4 -0
- package/dist/control/index.d.ts +2 -0
- package/dist/control/index.js +1 -0
- package/dist/control/server.d.ts +105 -0
- package/dist/control/server.js +315 -0
- package/dist/control/types.d.ts +61 -0
- package/dist/control/types.js +7 -0
- package/dist/debug/cli-debugger.d.ts +17 -0
- package/dist/debug/cli-debugger.js +185 -0
- package/dist/debug/controller.d.ts +94 -0
- package/dist/debug/controller.js +45 -0
- package/dist/debug/index.d.ts +6 -0
- package/dist/debug/index.js +5 -0
- package/dist/errors/index.d.ts +67 -0
- package/dist/errors/index.js +89 -1
- package/dist/execution/index.d.ts +1 -1
- package/dist/execution/state.d.ts +24 -0
- package/dist/execution/store.js +2 -2
- package/dist/execution-log/events.d.ts +125 -0
- package/dist/execution-log/events.js +17 -0
- package/dist/execution-log/fold.d.ts +38 -0
- package/dist/execution-log/fold.js +54 -0
- package/dist/execution-log/index.d.ts +18 -0
- package/dist/execution-log/index.js +6 -0
- package/dist/execution-log/postgres-store.d.ts +36 -0
- package/dist/execution-log/postgres-store.js +108 -0
- package/dist/execution-log/resume.d.ts +11 -0
- package/dist/execution-log/resume.js +5 -0
- package/dist/execution-log/sqlite-store.d.ts +16 -0
- package/dist/execution-log/sqlite-store.js +101 -0
- package/dist/execution-log/store.d.ts +72 -0
- package/dist/execution-log/store.js +182 -0
- package/dist/index.d.ts +23 -2
- package/dist/index.js +35 -3
- package/dist/interpreter/context.d.ts +29 -0
- package/dist/interpreter/context.js +18 -0
- package/dist/interpreter/evaluator.d.ts +63 -1
- package/dist/interpreter/evaluator.js +219 -42
- package/dist/interpreter/executor.d.ts +132 -14
- package/dist/interpreter/executor.js +883 -178
- package/dist/interpreter/fetch-handler.d.ts +48 -1
- package/dist/interpreter/fetch-handler.js +216 -38
- package/dist/interpreter/http.d.ts +34 -0
- package/dist/interpreter/http.js +203 -28
- package/dist/interpreter/index.d.ts +5 -3
- package/dist/interpreter/index.js +4 -2
- package/dist/interpreter/pagination.d.ts +12 -3
- package/dist/interpreter/pagination.js +102 -32
- package/dist/interpreter/signals.d.ts +8 -0
- package/dist/interpreter/signals.js +12 -0
- package/dist/interpreter/source-manager.d.ts +75 -0
- package/dist/interpreter/source-manager.js +157 -0
- package/dist/interpreter/step-handlers/apply-handler.d.ts +29 -0
- package/dist/interpreter/step-handlers/apply-handler.js +79 -0
- package/dist/interpreter/step-handlers/for-handler.d.ts +16 -0
- package/dist/interpreter/step-handlers/for-handler.js +89 -7
- package/dist/interpreter/step-handlers/index.d.ts +4 -2
- package/dist/interpreter/step-handlers/index.js +4 -2
- package/dist/interpreter/step-handlers/match-handler.d.ts +9 -0
- package/dist/interpreter/step-handlers/match-handler.js +47 -17
- package/dist/interpreter/step-handlers/pause-handler.d.ts +52 -0
- package/dist/interpreter/step-handlers/pause-handler.js +87 -0
- package/dist/interpreter/step-handlers/store-handler.d.ts +17 -1
- package/dist/interpreter/step-handlers/store-handler.js +61 -20
- package/dist/interpreter/step-handlers/types.d.ts +3 -0
- package/dist/interpreter/step-handlers/validate-handler.d.ts +2 -1
- package/dist/interpreter/step-handlers/validate-handler.js +7 -2
- package/dist/interpreter/step-handlers/webhook-handler.d.ts +4 -0
- package/dist/interpreter/step-handlers/webhook-handler.js +31 -5
- package/dist/interpreter/store-manager.d.ts +46 -0
- package/dist/interpreter/store-manager.js +70 -0
- package/dist/lexer/index.d.ts +11 -4
- package/dist/lexer/index.js +11 -4
- package/dist/lexer/tokens.d.ts +17 -1
- package/dist/lexer/tokens.js +36 -0
- package/dist/loader/index.js +5 -8
- package/dist/mcp/index.d.ts +11 -0
- package/dist/mcp/index.js +11 -0
- package/dist/mcp/sandbox.d.ts +41 -0
- package/dist/mcp/sandbox.js +76 -0
- package/dist/mcp/server.d.ts +17 -0
- package/dist/mcp/server.js +504 -0
- package/dist/oas/index.d.ts +2 -0
- package/dist/oas/index.js +1 -0
- package/dist/oas/loader.d.ts +13 -1
- package/dist/oas/loader.js +25 -3
- package/dist/oas/mock-generator.d.ts +12 -0
- package/dist/oas/mock-generator.js +196 -0
- package/dist/oas/validator.js +45 -5
- package/dist/observability/events.d.ts +248 -0
- package/dist/observability/events.js +85 -0
- package/dist/observability/index.d.ts +15 -0
- package/dist/observability/index.js +12 -0
- package/dist/observability/logger.d.ts +106 -0
- package/dist/observability/logger.js +266 -0
- package/dist/observability/otel.d.ts +143 -0
- package/dist/observability/otel.js +421 -0
- package/dist/parser/action-parser.d.ts +105 -0
- package/dist/parser/action-parser.js +645 -0
- package/dist/parser/base.d.ts +7 -0
- package/dist/parser/base.js +11 -0
- package/dist/parser/expressions.d.ts +14 -0
- package/dist/parser/expressions.js +89 -6
- package/dist/parser/fetch-parser.d.ts +27 -0
- package/dist/parser/fetch-parser.js +280 -0
- package/dist/parser/index.d.ts +17 -0
- package/dist/parser/index.js +17 -0
- package/dist/parser/parser.d.ts +44 -46
- package/dist/parser/parser.js +122 -1070
- package/dist/parser/pipeline-parser.d.ts +12 -0
- package/dist/parser/pipeline-parser.js +52 -0
- package/dist/parser/schedule-parser.d.ts +7 -0
- package/dist/parser/schedule-parser.js +137 -0
- package/dist/parser/source-parser.d.ts +9 -0
- package/dist/parser/source-parser.js +151 -0
- package/dist/pause/index.d.ts +15 -0
- package/dist/pause/index.js +12 -0
- package/dist/pause/log-store.d.ts +33 -0
- package/dist/pause/log-store.js +98 -0
- package/dist/pause/manager.d.ts +130 -0
- package/dist/pause/manager.js +294 -0
- package/dist/pause/state.d.ts +93 -0
- package/dist/pause/state.js +103 -0
- package/dist/pause/store.d.ts +61 -0
- package/dist/pause/store.js +158 -0
- package/dist/plugin.d.ts +9 -12
- package/dist/plugin.js +10 -13
- package/dist/scheduler/cron-parser.d.ts +10 -3
- package/dist/scheduler/cron-parser.js +227 -48
- package/dist/scheduler/scheduler.js +56 -22
- package/dist/stores/factory.d.ts +7 -1
- package/dist/stores/factory.js +14 -3
- package/dist/stores/file.d.ts +26 -0
- package/dist/stores/file.js +67 -21
- package/dist/stores/index.d.ts +16 -1
- package/dist/stores/index.js +16 -1
- package/dist/stores/memory.d.ts +4 -0
- package/dist/stores/memory.js +8 -6
- package/dist/stores/postgrest.d.ts +28 -0
- package/dist/stores/postgrest.js +84 -37
- package/dist/stores/types.d.ts +17 -0
- package/dist/stores/types.js +12 -0
- package/dist/sync/index.d.ts +3 -2
- package/dist/sync/index.js +2 -1
- package/dist/sync/log-store.d.ts +30 -0
- package/dist/sync/log-store.js +45 -0
- package/dist/sync/store.js +1 -1
- package/dist/trace/index.d.ts +18 -0
- package/dist/trace/index.js +13 -0
- package/dist/trace/log-view.d.ts +57 -0
- package/dist/trace/log-view.js +76 -0
- package/dist/trace/recorder.d.ts +75 -0
- package/dist/trace/recorder.js +157 -0
- package/dist/trace/replay.d.ts +132 -0
- package/dist/trace/replay.js +264 -0
- package/dist/trace/state.d.ts +102 -0
- package/dist/trace/state.js +86 -0
- package/dist/trace/store.d.ts +75 -0
- package/dist/trace/store.js +250 -0
- package/dist/utils/deep-merge.d.ts +10 -0
- package/dist/utils/deep-merge.js +23 -0
- package/dist/utils/file.d.ts +13 -4
- package/dist/utils/file.js +70 -12
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.js +2 -1
- package/dist/utils/long-timeout.d.ts +19 -0
- package/dist/utils/long-timeout.js +33 -0
- package/dist/utils/path.d.ts +22 -1
- package/dist/utils/path.js +46 -1
- package/dist/utils/redact.d.ts +22 -0
- package/dist/utils/redact.js +42 -0
- package/dist/utils/type-guards.d.ts +58 -0
- package/dist/utils/type-guards.js +92 -0
- package/dist/webhook/server.d.ts +9 -0
- package/dist/webhook/server.js +122 -36
- package/dist/webhook/types.d.ts +9 -1
- package/package.json +76 -9
- package/.claude/settings.local.json +0 -31
- package/.claude/skills/api-integration.md +0 -125
- package/.claude/skills/database-schema.md +0 -51
- package/.claude/skills/dsl-design.md +0 -80
- package/.claude/skills/property-testing.md +0 -143
- package/.claude/skills/reqon/SKILL.md +0 -44
- package/.claude/skills/reqon/references/examples.md +0 -206
- package/.claude/skills/reqon/references/syntax.md +0 -263
- package/.claude/skills/vscode-extension.md +0 -113
- package/.github/dependabot.yml +0 -32
- package/.github/pull_request_template.md +0 -21
- package/.github/workflows/ci.yml +0 -174
- package/.github/workflows/release.yml +0 -73
- package/CLAUDE.md +0 -72
- package/CONTRIBUTING.md +0 -161
- package/TODO.md +0 -51
- package/dist/auth/auth.test.d.ts +0 -1
- package/dist/auth/auth.test.js +0 -255
- package/dist/errors/errors.test.d.ts +0 -1
- package/dist/errors/errors.test.js +0 -165
- package/dist/execution/execution.test.d.ts +0 -1
- package/dist/execution/execution.test.js +0 -246
- package/dist/integration.test.d.ts +0 -1
- package/dist/integration.test.js +0 -168
- package/dist/interpreter/evaluator.test.d.ts +0 -1
- package/dist/interpreter/evaluator.test.js +0 -512
- package/dist/interpreter/http.test.d.ts +0 -1
- package/dist/interpreter/http.test.js +0 -299
- package/dist/interpreter/progress.test.d.ts +0 -1
- package/dist/interpreter/progress.test.js +0 -216
- package/dist/interpreter/schema-matcher.test.d.ts +0 -1
- package/dist/interpreter/schema-matcher.test.js +0 -122
- package/dist/lexer/lexer.d.ts +0 -24
- package/dist/lexer/lexer.js +0 -264
- package/dist/lexer/lexer.test.d.ts +0 -1
- package/dist/lexer/lexer.test.js +0 -259
- package/dist/loader/loader.test.d.ts +0 -1
- package/dist/loader/loader.test.js +0 -287
- package/dist/oas/oas.test.d.ts +0 -1
- package/dist/oas/oas.test.js +0 -218
- package/dist/parser/expressions.test.d.ts +0 -1
- package/dist/parser/expressions.test.js +0 -378
- package/dist/parser/match.test.d.ts +0 -1
- package/dist/parser/match.test.js +0 -254
- package/dist/parser/parser.test.d.ts +0 -1
- package/dist/parser/parser.test.js +0 -333
- package/dist/parser/schedule.test.d.ts +0 -1
- package/dist/parser/schedule.test.js +0 -241
- package/dist/scheduler/cron-parser.test.d.ts +0 -1
- package/dist/scheduler/cron-parser.test.js +0 -188
- package/dist/stores/file.test.d.ts +0 -1
- package/dist/stores/file.test.js +0 -165
- package/dist/stores/memory.test.d.ts +0 -1
- package/dist/stores/memory.test.js +0 -157
- package/dist/stores/stores.test.d.ts +0 -1
- package/dist/stores/stores.test.js +0 -158
- package/dist/sync/sync.test.d.ts +0 -1
- package/dist/sync/sync.test.js +0 -221
- package/docusaurus/README.md +0 -41
- package/docusaurus/docs/advanced/execution-state.md +0 -283
- package/docusaurus/docs/advanced/extending-reqon.md +0 -388
- package/docusaurus/docs/advanced/multi-file-missions.md +0 -250
- package/docusaurus/docs/advanced/parallel-execution.md +0 -353
- package/docusaurus/docs/api-reference.md +0 -443
- package/docusaurus/docs/authentication/api-key.md +0 -339
- package/docusaurus/docs/authentication/basic.md +0 -276
- package/docusaurus/docs/authentication/bearer.md +0 -282
- package/docusaurus/docs/authentication/oauth2.md +0 -317
- package/docusaurus/docs/authentication/overview.md +0 -251
- package/docusaurus/docs/cli.md +0 -229
- package/docusaurus/docs/core-concepts/actions.md +0 -286
- package/docusaurus/docs/core-concepts/missions.md +0 -264
- package/docusaurus/docs/core-concepts/schemas.md +0 -353
- package/docusaurus/docs/core-concepts/sources.md +0 -339
- package/docusaurus/docs/core-concepts/stores.md +0 -332
- package/docusaurus/docs/dsl-syntax/expressions.md +0 -361
- package/docusaurus/docs/dsl-syntax/fetch.md +0 -293
- package/docusaurus/docs/dsl-syntax/for-loops.md +0 -324
- package/docusaurus/docs/dsl-syntax/map.md +0 -345
- package/docusaurus/docs/dsl-syntax/match.md +0 -387
- package/docusaurus/docs/dsl-syntax/pipelines.md +0 -397
- package/docusaurus/docs/dsl-syntax/validate.md +0 -401
- package/docusaurus/docs/error-handling/dead-letter-queues.md +0 -399
- package/docusaurus/docs/error-handling/flow-control.md +0 -337
- package/docusaurus/docs/error-handling/retry-strategies.md +0 -368
- package/docusaurus/docs/examples.md +0 -488
- package/docusaurus/docs/getting-started.md +0 -256
- package/docusaurus/docs/http/circuit-breaker.md +0 -401
- package/docusaurus/docs/http/incremental-sync.md +0 -394
- package/docusaurus/docs/http/pagination.md +0 -361
- package/docusaurus/docs/http/rate-limiting.md +0 -383
- package/docusaurus/docs/http/requests.md +0 -328
- package/docusaurus/docs/http/retry.md +0 -402
- package/docusaurus/docs/intro.md +0 -90
- package/docusaurus/docs/openapi/loading-specs.md +0 -305
- package/docusaurus/docs/openapi/operation-calls.md +0 -314
- package/docusaurus/docs/openapi/overview.md +0 -212
- package/docusaurus/docs/openapi/response-validation.md +0 -344
- package/docusaurus/docs/scheduling/cron.md +0 -305
- package/docusaurus/docs/scheduling/daemon-mode.md +0 -317
- package/docusaurus/docs/scheduling/intervals.md +0 -289
- package/docusaurus/docs/scheduling/overview.md +0 -231
- package/docusaurus/docs/stores/custom-adapters.md +0 -376
- package/docusaurus/docs/stores/file.md +0 -236
- package/docusaurus/docs/stores/memory.md +0 -193
- package/docusaurus/docs/stores/overview.md +0 -274
- package/docusaurus/docs/stores/postgrest.md +0 -316
- package/docusaurus/docusaurus.config.ts +0 -148
- package/docusaurus/package-lock.json +0 -18029
- package/docusaurus/package.json +0 -47
- package/docusaurus/sidebars.ts +0 -155
- package/docusaurus/src/components/HomepageFeatures/index.tsx +0 -105
- package/docusaurus/src/components/HomepageFeatures/styles.module.css +0 -12
- package/docusaurus/src/css/custom.css +0 -169
- package/docusaurus/src/pages/index.module.css +0 -48
- package/docusaurus/src/pages/index.tsx +0 -110
- package/docusaurus/src/pages/markdown-page.md +0 -7
- package/docusaurus/static/.nojekyll +0 -0
- package/docusaurus/static/img/docusaurus-social-card.jpg +0 -0
- package/docusaurus/static/img/docusaurus.png +0 -0
- package/docusaurus/static/img/favicon.ico +0 -0
- package/docusaurus/static/img/logo.svg +0 -10
- package/docusaurus/static/img/undraw_docusaurus_mountain.svg +0 -171
- package/docusaurus/static/img/undraw_docusaurus_react.svg +0 -170
- package/docusaurus/static/img/undraw_docusaurus_tree.svg +0 -40
- package/docusaurus/tsconfig.json +0 -8
- package/examples/README.md +0 -112
- package/examples/error-handling/README.md +0 -150
- package/examples/error-handling/payment-processor.vague +0 -287
- package/examples/github-sync/README.md +0 -74
- package/examples/github-sync/fetch-issues.vague +0 -47
- package/examples/github-sync/fetch-prs.vague +0 -40
- package/examples/github-sync/mission.vague +0 -101
- package/examples/github-sync/normalize.vague +0 -70
- package/examples/jsonplaceholder/README.md +0 -28
- package/examples/jsonplaceholder/posts.vague +0 -48
- package/examples/petstore/README.md +0 -35
- package/examples/petstore/openapi.yaml +0 -97
- package/examples/petstore/sync.vague +0 -52
- package/examples/temporal-comparison/README.md +0 -297
- package/examples/temporal-comparison/reconciliation.vague +0 -355
- package/examples/temporal-comparison/temporal/activities/index.ts +0 -8
- package/examples/temporal-comparison/temporal/activities/shipstation.ts +0 -225
- package/examples/temporal-comparison/temporal/activities/shopify.ts +0 -257
- package/examples/temporal-comparison/temporal/activities/storage.ts +0 -198
- package/examples/temporal-comparison/temporal/activities/stripe.ts +0 -169
- package/examples/temporal-comparison/temporal/activities/validation.ts +0 -205
- package/examples/temporal-comparison/temporal/client/schedule.ts +0 -218
- package/examples/temporal-comparison/temporal/config/retry.ts +0 -63
- package/examples/temporal-comparison/temporal/types/index.ts +0 -129
- package/examples/temporal-comparison/temporal/workers/main.ts +0 -130
- package/examples/temporal-comparison/temporal/workflows/orderReconciliation.ts +0 -262
- package/examples/xero/README.md +0 -88
- package/examples/xero/invoices.vague +0 -189
- package/src/api-integration.test.ts +0 -954
- package/src/ast/index.ts +0 -1
- package/src/ast/nodes.ts +0 -310
- package/src/auth/auth.test.ts +0 -326
- package/src/auth/circuit-breaker.test.ts +0 -390
- package/src/auth/circuit-breaker.ts +0 -379
- package/src/auth/credentials.test.ts +0 -273
- package/src/auth/credentials.ts +0 -246
- package/src/auth/index.ts +0 -40
- package/src/auth/oauth2-provider.ts +0 -177
- package/src/auth/rate-limiter.ts +0 -459
- package/src/auth/token-store.ts +0 -177
- package/src/auth/types.ts +0 -159
- package/src/benchmark/e2e.bench.ts +0 -288
- package/src/benchmark/evaluator.bench.ts +0 -331
- package/src/benchmark/fixtures.ts +0 -295
- package/src/benchmark/index.ts +0 -108
- package/src/benchmark/lexer.bench.ts +0 -69
- package/src/benchmark/parser.bench.ts +0 -103
- package/src/benchmark/resilience.bench.ts +0 -193
- package/src/benchmark/store.bench.ts +0 -147
- package/src/benchmark/utils.ts +0 -230
- package/src/cli.ts +0 -313
- package/src/errors/errors.test.ts +0 -234
- package/src/errors/index.ts +0 -223
- package/src/execution/execution.test.ts +0 -307
- package/src/execution/index.ts +0 -21
- package/src/execution/state.ts +0 -207
- package/src/execution/store.ts +0 -188
- package/src/index.ts +0 -169
- package/src/integration.test.ts +0 -192
- package/src/interpreter/context.ts +0 -57
- package/src/interpreter/evaluator.test.ts +0 -796
- package/src/interpreter/evaluator.ts +0 -245
- package/src/interpreter/executor.ts +0 -946
- package/src/interpreter/fetch-handler.ts +0 -302
- package/src/interpreter/http.test.ts +0 -423
- package/src/interpreter/http.ts +0 -308
- package/src/interpreter/index.ts +0 -32
- package/src/interpreter/pagination.ts +0 -207
- package/src/interpreter/progress.test.ts +0 -276
- package/src/interpreter/schema-matcher.test.ts +0 -160
- package/src/interpreter/schema-matcher.ts +0 -168
- package/src/interpreter/signals.ts +0 -73
- package/src/interpreter/step-handlers/for-handler.ts +0 -65
- package/src/interpreter/step-handlers/index.ts +0 -17
- package/src/interpreter/step-handlers/map-handler.ts +0 -24
- package/src/interpreter/step-handlers/match-handler.ts +0 -101
- package/src/interpreter/step-handlers/store-handler.ts +0 -78
- package/src/interpreter/step-handlers/types.ts +0 -17
- package/src/interpreter/step-handlers/validate-handler.ts +0 -30
- package/src/interpreter/step-handlers/webhook-handler.ts +0 -142
- package/src/lexer/index.ts +0 -18
- package/src/lexer/lexer.test.ts +0 -316
- package/src/lexer/tokens.ts +0 -179
- package/src/loader/index.ts +0 -288
- package/src/loader/loader.test.ts +0 -360
- package/src/oas/index.ts +0 -4
- package/src/oas/loader.ts +0 -126
- package/src/oas/oas.test.ts +0 -254
- package/src/oas/validator.ts +0 -299
- package/src/parser/base.ts +0 -124
- package/src/parser/expressions.test.ts +0 -525
- package/src/parser/expressions.ts +0 -314
- package/src/parser/index.ts +0 -3
- package/src/parser/match.test.ts +0 -296
- package/src/parser/parser.test.ts +0 -739
- package/src/parser/parser.ts +0 -1469
- package/src/parser/schedule.test.ts +0 -287
- package/src/parser/webhook.test.ts +0 -248
- package/src/plugin.ts +0 -83
- package/src/scheduler/cron-parser.test.ts +0 -236
- package/src/scheduler/cron-parser.ts +0 -236
- package/src/scheduler/index.ts +0 -10
- package/src/scheduler/scheduler.ts +0 -443
- package/src/scheduler/types.ts +0 -71
- package/src/stores/factory.ts +0 -104
- package/src/stores/file.test.ts +0 -276
- package/src/stores/file.ts +0 -211
- package/src/stores/index.ts +0 -6
- package/src/stores/memory.test.ts +0 -238
- package/src/stores/memory.ts +0 -63
- package/src/stores/postgrest.test.ts +0 -488
- package/src/stores/postgrest.ts +0 -263
- package/src/stores/stores.test.ts +0 -197
- package/src/stores/types.ts +0 -58
- package/src/sync/index.ts +0 -16
- package/src/sync/state.ts +0 -126
- package/src/sync/store.ts +0 -139
- package/src/sync/sync.test.ts +0 -271
- package/src/utils/async.ts +0 -10
- package/src/utils/file.ts +0 -106
- package/src/utils/index.ts +0 -14
- package/src/utils/logger.ts +0 -53
- package/src/utils/path.ts +0 -47
- package/src/webhook/index.ts +0 -15
- package/src/webhook/server.test.ts +0 -253
- package/src/webhook/server.ts +0 -389
- package/src/webhook/store.ts +0 -239
- package/src/webhook/types.ts +0 -93
- package/tsconfig.json +0 -17
- package/vitest.config.ts +0 -39
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
sidebar_position: 2
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Memory Store
|
|
6
|
-
|
|
7
|
-
The memory store uses an in-memory hash map. Data is lost when the process ends.
|
|
8
|
-
|
|
9
|
-
## Configuration
|
|
10
|
-
|
|
11
|
-
```vague
|
|
12
|
-
store cache: memory("cache")
|
|
13
|
-
store tempData: memory("temp-processing")
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## Use Cases
|
|
17
|
-
|
|
18
|
-
### Testing
|
|
19
|
-
|
|
20
|
-
```vague
|
|
21
|
-
mission TestSync {
|
|
22
|
-
store testData: memory("test")
|
|
23
|
-
|
|
24
|
-
action Test {
|
|
25
|
-
get "/test-data"
|
|
26
|
-
store response -> testData { key: .id }
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Temporary Processing
|
|
32
|
-
|
|
33
|
-
```vague
|
|
34
|
-
mission Transform {
|
|
35
|
-
store raw: memory("raw")
|
|
36
|
-
store processed: file("processed")
|
|
37
|
-
|
|
38
|
-
action FetchRaw {
|
|
39
|
-
get "/items"
|
|
40
|
-
store response -> raw { key: .id }
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
action Process {
|
|
44
|
-
for item in raw {
|
|
45
|
-
map item -> Processed { /* ... */ }
|
|
46
|
-
store item -> processed { key: .id }
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
run FetchRaw then Process
|
|
51
|
-
}
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Caching
|
|
55
|
-
|
|
56
|
-
```vague
|
|
57
|
-
mission CachedLookup {
|
|
58
|
-
store lookupCache: memory("lookup-cache")
|
|
59
|
-
|
|
60
|
-
action Fetch {
|
|
61
|
-
for id in idsToFetch {
|
|
62
|
-
// Check cache first
|
|
63
|
-
match lookupCache {
|
|
64
|
-
_ where lookupCache[id] != null -> continue,
|
|
65
|
-
_ -> {
|
|
66
|
-
get concat("/items/", id)
|
|
67
|
-
store response -> lookupCache { key: id }
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Intermediate Results
|
|
76
|
-
|
|
77
|
-
```vague
|
|
78
|
-
mission Pipeline {
|
|
79
|
-
store step1: memory("step1")
|
|
80
|
-
store step2: memory("step2")
|
|
81
|
-
store final: file("results")
|
|
82
|
-
|
|
83
|
-
action Step1 {
|
|
84
|
-
get "/source-data"
|
|
85
|
-
store response -> step1 { key: .id }
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
action Step2 {
|
|
89
|
-
for item in step1 {
|
|
90
|
-
map item -> Enriched { /* ... */ }
|
|
91
|
-
store item -> step2 { key: .id }
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
action Step3 {
|
|
96
|
-
for item in step2 {
|
|
97
|
-
validate item { /* ... */ }
|
|
98
|
-
store item -> final { key: .id }
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
run Step1 then Step2 then Step3
|
|
103
|
-
}
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## Characteristics
|
|
107
|
-
|
|
108
|
-
### Speed
|
|
109
|
-
|
|
110
|
-
Memory stores are the fastest option:
|
|
111
|
-
- O(1) read/write by key
|
|
112
|
-
- No I/O overhead
|
|
113
|
-
- No serialization
|
|
114
|
-
|
|
115
|
-
### Size Limits
|
|
116
|
-
|
|
117
|
-
Limited by available memory:
|
|
118
|
-
- Suitable for thousands to millions of small records
|
|
119
|
-
- Large objects may cause memory issues
|
|
120
|
-
- Monitor memory usage for large datasets
|
|
121
|
-
|
|
122
|
-
### Durability
|
|
123
|
-
|
|
124
|
-
Data is not persisted:
|
|
125
|
-
- Lost on process exit
|
|
126
|
-
- Lost on errors/crashes
|
|
127
|
-
- Not suitable for critical data
|
|
128
|
-
|
|
129
|
-
## Best Practices
|
|
130
|
-
|
|
131
|
-
### Use for Temporary Data
|
|
132
|
-
|
|
133
|
-
```vague
|
|
134
|
-
// Good: temporary processing
|
|
135
|
-
store temp: memory("temp")
|
|
136
|
-
|
|
137
|
-
// Not recommended: critical data
|
|
138
|
-
store customers: memory("customers") // Use file or sql instead
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### Combine with Persistent Stores
|
|
142
|
-
|
|
143
|
-
```vague
|
|
144
|
-
mission Hybrid {
|
|
145
|
-
store cache: memory("cache")
|
|
146
|
-
store persistent: file("data")
|
|
147
|
-
|
|
148
|
-
action Process {
|
|
149
|
-
// Use memory for working data
|
|
150
|
-
get "/items"
|
|
151
|
-
store response -> cache { key: .id }
|
|
152
|
-
|
|
153
|
-
// Process and save to persistent
|
|
154
|
-
for item in cache {
|
|
155
|
-
map item -> Processed { /* ... */ }
|
|
156
|
-
store item -> persistent { key: .id }
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
### Clear When Done
|
|
163
|
-
|
|
164
|
-
Memory is automatically released when mission ends, but you can clear explicitly:
|
|
165
|
-
|
|
166
|
-
```vague
|
|
167
|
-
action CleanUp {
|
|
168
|
-
// Clear temporary data
|
|
169
|
-
clear cache
|
|
170
|
-
}
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
## Programmatic Access
|
|
174
|
-
|
|
175
|
-
```typescript
|
|
176
|
-
import { execute } from 'reqon';
|
|
177
|
-
|
|
178
|
-
const result = await execute(source);
|
|
179
|
-
|
|
180
|
-
// Access memory store
|
|
181
|
-
const cache = result.stores.get('cache');
|
|
182
|
-
const items = await cache.list();
|
|
183
|
-
const item = await cache.get('key');
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
## Comparison with Other Stores
|
|
187
|
-
|
|
188
|
-
| Feature | Memory | File | SQL |
|
|
189
|
-
|---------|--------|------|-----|
|
|
190
|
-
| Speed | Fastest | Fast | Medium |
|
|
191
|
-
| Persistence | No | Yes | Yes |
|
|
192
|
-
| Scalability | Limited | Limited | High |
|
|
193
|
-
| Use Case | Testing, temp | Development | Production |
|
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
sidebar_position: 1
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Store Adapters Overview
|
|
6
|
-
|
|
7
|
-
Store adapters provide pluggable backends for data persistence. Reqon includes several built-in adapters and supports custom implementations.
|
|
8
|
-
|
|
9
|
-
## Available Adapters
|
|
10
|
-
|
|
11
|
-
| Adapter | Description | Best For |
|
|
12
|
-
|---------|-------------|----------|
|
|
13
|
-
| `memory` | In-memory hash map | Testing, temporary data |
|
|
14
|
-
| `file` | JSON file storage | Local development |
|
|
15
|
-
| `sql` | SQL database (via PostgREST) | Production with PostgreSQL |
|
|
16
|
-
| `nosql` | NoSQL database | MongoDB, DynamoDB |
|
|
17
|
-
|
|
18
|
-
## Quick Start
|
|
19
|
-
|
|
20
|
-
```vague
|
|
21
|
-
mission DataSync {
|
|
22
|
-
// Define stores
|
|
23
|
-
store cache: memory("cache")
|
|
24
|
-
store data: file("my-data")
|
|
25
|
-
store production: sql("items_table")
|
|
26
|
-
|
|
27
|
-
action Process {
|
|
28
|
-
get "/items"
|
|
29
|
-
|
|
30
|
-
// Write to store
|
|
31
|
-
store response -> data { key: .id }
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Store Interface
|
|
37
|
-
|
|
38
|
-
All adapters implement this interface:
|
|
39
|
-
|
|
40
|
-
```typescript
|
|
41
|
-
interface StoreAdapter {
|
|
42
|
-
// Read
|
|
43
|
-
get(key: string): Promise<Record | null>
|
|
44
|
-
list(filter?: FilterOptions): Promise<Record[]>
|
|
45
|
-
|
|
46
|
-
// Write
|
|
47
|
-
set(key: string, value: Record): Promise<void>
|
|
48
|
-
update(key: string, partial: Record): Promise<void>
|
|
49
|
-
|
|
50
|
-
// Delete
|
|
51
|
-
delete(key: string): Promise<void>
|
|
52
|
-
clear(): Promise<void>
|
|
53
|
-
}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## Writing Data
|
|
57
|
-
|
|
58
|
-
### Basic Store
|
|
59
|
-
|
|
60
|
-
```vague
|
|
61
|
-
store response -> myStore
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### With Key
|
|
65
|
-
|
|
66
|
-
```vague
|
|
67
|
-
store response -> myStore { key: .id }
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Upsert Mode
|
|
71
|
-
|
|
72
|
-
Insert or update based on key:
|
|
73
|
-
|
|
74
|
-
```vague
|
|
75
|
-
store response -> myStore { key: .id, upsert: true }
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### Partial Update
|
|
79
|
-
|
|
80
|
-
Update only specified fields:
|
|
81
|
-
|
|
82
|
-
```vague
|
|
83
|
-
store response -> myStore { key: .id, partial: true }
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
## Reading Data
|
|
87
|
-
|
|
88
|
-
### In For Loops
|
|
89
|
-
|
|
90
|
-
```vague
|
|
91
|
-
for item in myStore {
|
|
92
|
-
// Process each item
|
|
93
|
-
}
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### With Filtering
|
|
97
|
-
|
|
98
|
-
```vague
|
|
99
|
-
for item in myStore where .status == "active" {
|
|
100
|
-
// Process active items
|
|
101
|
-
}
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### Multiple Conditions
|
|
105
|
-
|
|
106
|
-
```vague
|
|
107
|
-
for item in myStore where .status == "pending" and .priority > 5 {
|
|
108
|
-
// Process high-priority pending items
|
|
109
|
-
}
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
## Store Operations
|
|
113
|
-
|
|
114
|
-
### Check Existence
|
|
115
|
-
|
|
116
|
-
```vague
|
|
117
|
-
match myStore {
|
|
118
|
-
[] -> abort "Store is empty",
|
|
119
|
-
_ -> continue
|
|
120
|
-
}
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### Count Items
|
|
124
|
-
|
|
125
|
-
```vague
|
|
126
|
-
validate {
|
|
127
|
-
assume length(myStore) > 0
|
|
128
|
-
}
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
### Cross-Store Operations
|
|
132
|
-
|
|
133
|
-
```vague
|
|
134
|
-
for order in orders {
|
|
135
|
-
for customer in customers where .id == order.customerId {
|
|
136
|
-
// Join data from multiple stores
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## Choosing an Adapter
|
|
142
|
-
|
|
143
|
-
### Development
|
|
144
|
-
|
|
145
|
-
```vague
|
|
146
|
-
// Use file for local development
|
|
147
|
-
store data: file("my-data")
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
### Testing
|
|
151
|
-
|
|
152
|
-
```vague
|
|
153
|
-
// Use memory for tests
|
|
154
|
-
store testData: memory("test")
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
### Production
|
|
158
|
-
|
|
159
|
-
```vague
|
|
160
|
-
// Use SQL/NoSQL for production
|
|
161
|
-
store data: sql("items")
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
## Environment-Based Selection
|
|
165
|
-
|
|
166
|
-
```vague
|
|
167
|
-
mission AdaptiveSync {
|
|
168
|
-
// Choose adapter based on environment
|
|
169
|
-
store data: match env("NODE_ENV") {
|
|
170
|
-
"production" => sql("items"),
|
|
171
|
-
"staging" => sql("items_staging"),
|
|
172
|
-
_ => file("items-dev")
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
## Store Configuration
|
|
178
|
-
|
|
179
|
-
### Via CLI
|
|
180
|
-
|
|
181
|
-
```bash
|
|
182
|
-
reqon mission.vague --store-config ./stores.json
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
### Configuration File
|
|
186
|
-
|
|
187
|
-
```json
|
|
188
|
-
{
|
|
189
|
-
"sql": {
|
|
190
|
-
"type": "postgrest",
|
|
191
|
-
"url": "https://project.supabase.co/rest/v1",
|
|
192
|
-
"apiKey": "your-anon-key"
|
|
193
|
-
},
|
|
194
|
-
"nosql": {
|
|
195
|
-
"type": "mongodb",
|
|
196
|
-
"url": "mongodb://localhost:27017",
|
|
197
|
-
"database": "reqon"
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
## Exporting Data
|
|
203
|
-
|
|
204
|
-
### Via CLI
|
|
205
|
-
|
|
206
|
-
```bash
|
|
207
|
-
reqon mission.vague --output ./exports/
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
Creates JSON files:
|
|
211
|
-
```
|
|
212
|
-
exports/
|
|
213
|
-
├── customers.json
|
|
214
|
-
├── orders.json
|
|
215
|
-
└── products.json
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
### Programmatically
|
|
219
|
-
|
|
220
|
-
```typescript
|
|
221
|
-
import { execute } from 'reqon';
|
|
222
|
-
|
|
223
|
-
const result = await execute(source);
|
|
224
|
-
|
|
225
|
-
for (const [name, store] of result.stores) {
|
|
226
|
-
const items = await store.list();
|
|
227
|
-
console.log(`${name}: ${items.length} items`);
|
|
228
|
-
}
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
## Best Practices
|
|
232
|
-
|
|
233
|
-
### Use Descriptive Names
|
|
234
|
-
|
|
235
|
-
```vague
|
|
236
|
-
// Good
|
|
237
|
-
store activeCustomers: file("active-customers")
|
|
238
|
-
store pendingInvoices: file("pending-invoices")
|
|
239
|
-
|
|
240
|
-
// Avoid
|
|
241
|
-
store data1: file("data1")
|
|
242
|
-
store temp: file("temp")
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
### Always Specify Keys
|
|
246
|
-
|
|
247
|
-
```vague
|
|
248
|
-
// Good: explicit key
|
|
249
|
-
store response -> items { key: .id }
|
|
250
|
-
|
|
251
|
-
// Risky: auto-generated keys
|
|
252
|
-
store response -> items
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
### Use Upsert for Syncs
|
|
256
|
-
|
|
257
|
-
```vague
|
|
258
|
-
// For incremental syncs
|
|
259
|
-
store response -> items { key: .id, upsert: true }
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
### Match Adapter to Use Case
|
|
263
|
-
|
|
264
|
-
| Use Case | Recommended |
|
|
265
|
-
|----------|-------------|
|
|
266
|
-
| Unit tests | `memory` |
|
|
267
|
-
| Local dev | `file` |
|
|
268
|
-
| CI/CD | `file` or `memory` |
|
|
269
|
-
| Staging | `sql` (separate DB) |
|
|
270
|
-
| Production | `sql` or `nosql` |
|
|
271
|
-
|
|
272
|
-
## Custom Adapters
|
|
273
|
-
|
|
274
|
-
See [Custom Adapters](./custom-adapters) for implementing your own store adapter.
|