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,65 +0,0 @@
|
|
|
1
|
-
import type { ForStep, ActionStep } from '../../ast/nodes.js';
|
|
2
|
-
import type { StepHandler, StepHandlerDeps } from './types.js';
|
|
3
|
-
import { evaluate } from '../evaluator.js';
|
|
4
|
-
import { childContext, setVariable, getVariable } from '../context.js';
|
|
5
|
-
import type { ExecutionContext } from '../context.js';
|
|
6
|
-
|
|
7
|
-
export interface ForHandlerDeps extends StepHandlerDeps {
|
|
8
|
-
executeStep: (step: ActionStep, actionName: string, ctx: ExecutionContext) => Promise<void>;
|
|
9
|
-
actionName: string;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Handles for...in...where iteration steps
|
|
14
|
-
*/
|
|
15
|
-
export class ForHandler implements StepHandler<ForStep> {
|
|
16
|
-
constructor(private deps: ForHandlerDeps) {}
|
|
17
|
-
|
|
18
|
-
async execute(step: ForStep): Promise<void> {
|
|
19
|
-
const collection = await this.getCollection(step);
|
|
20
|
-
|
|
21
|
-
// Apply filter if present
|
|
22
|
-
const filtered = step.condition
|
|
23
|
-
? collection.filter((item) => evaluate(step.condition!, this.deps.ctx, item))
|
|
24
|
-
: collection;
|
|
25
|
-
|
|
26
|
-
this.deps.log(`Iterating over ${filtered.length} items`);
|
|
27
|
-
|
|
28
|
-
// Execute steps for each item
|
|
29
|
-
for (const item of filtered) {
|
|
30
|
-
await this.executeForItem(step, item);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
private async getCollection(step: ForStep): Promise<unknown[]> {
|
|
35
|
-
let collection: unknown[];
|
|
36
|
-
|
|
37
|
-
if (step.collection.type === 'Identifier') {
|
|
38
|
-
// It's a store reference
|
|
39
|
-
const store = this.deps.ctx.stores.get(step.collection.name);
|
|
40
|
-
if (store) {
|
|
41
|
-
collection = await store.list();
|
|
42
|
-
} else {
|
|
43
|
-
collection = (getVariable(this.deps.ctx, step.collection.name) as unknown[]) ?? [];
|
|
44
|
-
}
|
|
45
|
-
} else {
|
|
46
|
-
collection = evaluate(step.collection, this.deps.ctx) as unknown[];
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (!Array.isArray(collection)) {
|
|
50
|
-
throw new Error('For loop collection must be an array');
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return collection;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
private async executeForItem(step: ForStep, item: unknown): Promise<void> {
|
|
57
|
-
const childCtx = childContext(this.deps.ctx);
|
|
58
|
-
setVariable(childCtx, step.variable, item);
|
|
59
|
-
|
|
60
|
-
// Execute each inner step with child context
|
|
61
|
-
for (const innerStep of step.steps) {
|
|
62
|
-
await this.deps.executeStep(innerStep, this.deps.actionName, childCtx);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export { type StepHandler, type StepHandlerDeps } from './types.js';
|
|
2
|
-
export { ForHandler, type ForHandlerDeps } from './for-handler.js';
|
|
3
|
-
export { MapHandler } from './map-handler.js';
|
|
4
|
-
export { ValidateHandler } from './validate-handler.js';
|
|
5
|
-
export { StoreHandler } from './store-handler.js';
|
|
6
|
-
export { MatchHandler, type MatchHandlerDeps, type MatchResult } from './match-handler.js';
|
|
7
|
-
export { WebhookHandler, type WebhookHandlerDeps, type WebhookHandlerResult } from './webhook-handler.js';
|
|
8
|
-
|
|
9
|
-
// Export signals from the canonical location
|
|
10
|
-
export {
|
|
11
|
-
NoMatchError,
|
|
12
|
-
AbortError,
|
|
13
|
-
SkipSignal,
|
|
14
|
-
RetrySignal,
|
|
15
|
-
JumpSignal,
|
|
16
|
-
QueueSignal,
|
|
17
|
-
} from '../signals.js';
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { MapStep } from '../../ast/nodes.js';
|
|
2
|
-
import type { StepHandler, StepHandlerDeps } from './types.js';
|
|
3
|
-
import { evaluate } from '../evaluator.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Handles map...-> transformation steps
|
|
7
|
-
*/
|
|
8
|
-
export class MapHandler implements StepHandler<MapStep> {
|
|
9
|
-
constructor(private deps: StepHandlerDeps) {}
|
|
10
|
-
|
|
11
|
-
async execute(step: MapStep): Promise<void> {
|
|
12
|
-
const source = evaluate(step.source, this.deps.ctx) as Record<string, unknown>;
|
|
13
|
-
|
|
14
|
-
const mapped: Record<string, unknown> = {};
|
|
15
|
-
|
|
16
|
-
for (const mapping of step.mappings) {
|
|
17
|
-
mapped[mapping.field] = evaluate(mapping.expression, this.deps.ctx, source);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// Store mapped result in response for next step
|
|
21
|
-
this.deps.ctx.response = mapped;
|
|
22
|
-
this.deps.log(`Mapped to ${step.targetSchema}`);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import type { MatchStep, ActionStep, FlowDirective } from '../../ast/nodes.js';
|
|
2
|
-
import type { StepHandler, StepHandlerDeps } from './types.js';
|
|
3
|
-
import { evaluate } from '../evaluator.js';
|
|
4
|
-
import type { ExecutionContext } from '../context.js';
|
|
5
|
-
import { findMatchingSchema } from '../schema-matcher.js';
|
|
6
|
-
import {
|
|
7
|
-
NoMatchError,
|
|
8
|
-
AbortError,
|
|
9
|
-
SkipSignal,
|
|
10
|
-
RetrySignal,
|
|
11
|
-
JumpSignal,
|
|
12
|
-
QueueSignal,
|
|
13
|
-
} from '../signals.js';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Result of executing a match step
|
|
17
|
-
*/
|
|
18
|
-
export interface MatchResult {
|
|
19
|
-
/** The schema that matched (or '_' for wildcard) */
|
|
20
|
-
matchedSchema: string;
|
|
21
|
-
/** Flow directive if the arm specifies one */
|
|
22
|
-
flow?: FlowDirective;
|
|
23
|
-
/** Whether steps were executed (vs flow directive) */
|
|
24
|
-
stepsExecuted: boolean;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface MatchHandlerDeps extends StepHandlerDeps {
|
|
28
|
-
executeStep: (step: ActionStep, actionName: string, ctx: ExecutionContext) => Promise<void>;
|
|
29
|
-
actionName: string;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Handles match steps (schema overloading with flow control)
|
|
34
|
-
*/
|
|
35
|
-
export class MatchHandler {
|
|
36
|
-
constructor(private deps: MatchHandlerDeps) {}
|
|
37
|
-
|
|
38
|
-
async execute(step: MatchStep): Promise<void> {
|
|
39
|
-
const value = evaluate(step.target, this.deps.ctx);
|
|
40
|
-
|
|
41
|
-
// Get schema names from arms in order
|
|
42
|
-
const schemaNames = step.arms.map(arm => arm.schema);
|
|
43
|
-
|
|
44
|
-
// Find matching schema
|
|
45
|
-
const matchedSchema = findMatchingSchema(value, this.deps.ctx.schemas, schemaNames);
|
|
46
|
-
|
|
47
|
-
if (!matchedSchema) {
|
|
48
|
-
throw new NoMatchError(value);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
this.deps.log(`Matched schema: ${matchedSchema}`);
|
|
52
|
-
|
|
53
|
-
// Find the matching arm
|
|
54
|
-
const arm = step.arms.find(a => a.schema === matchedSchema);
|
|
55
|
-
|
|
56
|
-
if (!arm) {
|
|
57
|
-
// Shouldn't happen if findMatchingSchema works correctly
|
|
58
|
-
throw new NoMatchError(value);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Handle flow directive
|
|
62
|
-
if (arm.flow) {
|
|
63
|
-
// 'continue' means proceed normally - don't throw
|
|
64
|
-
if (arm.flow.type === 'continue') {
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
this.handleFlowDirective(arm.flow, value);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// Execute steps
|
|
71
|
-
if (arm.steps) {
|
|
72
|
-
for (const innerStep of arm.steps) {
|
|
73
|
-
await this.deps.executeStep(innerStep, this.deps.actionName, this.deps.ctx);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
private handleFlowDirective(flow: Exclude<FlowDirective, { type: 'continue' }>, value: unknown): never {
|
|
79
|
-
switch (flow.type) {
|
|
80
|
-
case 'skip':
|
|
81
|
-
throw new SkipSignal();
|
|
82
|
-
|
|
83
|
-
case 'abort':
|
|
84
|
-
throw new AbortError(flow.message);
|
|
85
|
-
|
|
86
|
-
case 'retry':
|
|
87
|
-
throw new RetrySignal(flow.backoff);
|
|
88
|
-
|
|
89
|
-
case 'jump':
|
|
90
|
-
throw new JumpSignal(flow.action, flow.then);
|
|
91
|
-
|
|
92
|
-
case 'queue':
|
|
93
|
-
throw new QueueSignal(value, flow.target);
|
|
94
|
-
|
|
95
|
-
default:
|
|
96
|
-
// This should never happen if TypeScript is working correctly
|
|
97
|
-
const _exhaustive: never = flow;
|
|
98
|
-
throw new Error(`Unknown flow directive: ${(_exhaustive as FlowDirective).type}`);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import type { StoreStep } from '../../ast/nodes.js';
|
|
2
|
-
import type { StepHandler, StepHandlerDeps } from './types.js';
|
|
3
|
-
import type { StoreAdapter } from '../../stores/types.js';
|
|
4
|
-
import { evaluate } from '../evaluator.js';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Handles store steps for persisting data
|
|
8
|
-
*/
|
|
9
|
-
export class StoreHandler implements StepHandler<StoreStep> {
|
|
10
|
-
constructor(private deps: StepHandlerDeps) {}
|
|
11
|
-
|
|
12
|
-
async execute(step: StoreStep): Promise<void> {
|
|
13
|
-
const store = this.deps.ctx.stores.get(step.target);
|
|
14
|
-
if (!store) {
|
|
15
|
-
throw new Error(`Store not found: ${step.target}`);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const source = evaluate(step.source, this.deps.ctx);
|
|
19
|
-
|
|
20
|
-
if (Array.isArray(source)) {
|
|
21
|
-
await this.storeMany(step, store, source);
|
|
22
|
-
} else {
|
|
23
|
-
await this.storeOne(step, store, source as Record<string, unknown>);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
private async storeMany(step: StoreStep, store: StoreAdapter, items: unknown[]): Promise<void> {
|
|
28
|
-
// Use bulk operation if available and not doing upserts (which need individual handling)
|
|
29
|
-
if (store.bulkSet && !step.options.upsert) {
|
|
30
|
-
const records: Array<{ key: string; value: Record<string, unknown> }> = [];
|
|
31
|
-
for (const item of items) {
|
|
32
|
-
const record = item as Record<string, unknown>;
|
|
33
|
-
const key = step.options.key
|
|
34
|
-
? String(evaluate(step.options.key, this.deps.ctx, record))
|
|
35
|
-
: String(record.id ?? Math.random());
|
|
36
|
-
|
|
37
|
-
if (step.options.partial !== undefined) {
|
|
38
|
-
record._partial = step.options.partial;
|
|
39
|
-
}
|
|
40
|
-
records.push({ key, value: record });
|
|
41
|
-
}
|
|
42
|
-
await store.bulkSet(records);
|
|
43
|
-
} else {
|
|
44
|
-
// Fall back to individual operations for upserts or stores without bulkSet
|
|
45
|
-
for (const item of items) {
|
|
46
|
-
const record = item as Record<string, unknown>;
|
|
47
|
-
await this.storeRecord(step, store, record);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
this.deps.log(`Stored ${items.length} items to ${step.target}`);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
private async storeOne(step: StoreStep, store: StoreAdapter, record: Record<string, unknown>): Promise<void> {
|
|
55
|
-
await this.storeRecord(step, store, record);
|
|
56
|
-
this.deps.log(`Stored item to ${step.target}`);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
private async storeRecord(
|
|
60
|
-
step: StoreStep,
|
|
61
|
-
store: StoreAdapter,
|
|
62
|
-
record: Record<string, unknown>
|
|
63
|
-
): Promise<void> {
|
|
64
|
-
const key = step.options.key
|
|
65
|
-
? String(evaluate(step.options.key, this.deps.ctx, record))
|
|
66
|
-
: String(record.id ?? Math.random());
|
|
67
|
-
|
|
68
|
-
if (step.options.partial !== undefined) {
|
|
69
|
-
record._partial = step.options.partial;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (step.options.upsert) {
|
|
73
|
-
await store.update(key, record);
|
|
74
|
-
} else {
|
|
75
|
-
await store.set(key, record);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { ActionStep } from '../../ast/nodes.js';
|
|
2
|
-
import type { ExecutionContext } from '../context.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Dependencies injected into step handlers
|
|
6
|
-
*/
|
|
7
|
-
export interface StepHandlerDeps {
|
|
8
|
-
ctx: ExecutionContext;
|
|
9
|
-
log: (message: string) => void;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Base interface for step handlers
|
|
14
|
-
*/
|
|
15
|
-
export interface StepHandler<TStep extends ActionStep> {
|
|
16
|
-
execute(step: TStep): Promise<void>;
|
|
17
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { ValidateStep } from '../../ast/nodes.js';
|
|
2
|
-
import type { StepHandler, StepHandlerDeps } from './types.js';
|
|
3
|
-
import { evaluate } from '../evaluator.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Handles validate steps with assume constraints
|
|
7
|
-
*/
|
|
8
|
-
export class ValidateHandler implements StepHandler<ValidateStep> {
|
|
9
|
-
constructor(private deps: StepHandlerDeps) {}
|
|
10
|
-
|
|
11
|
-
async execute(step: ValidateStep): Promise<void> {
|
|
12
|
-
const target = evaluate(step.target, this.deps.ctx);
|
|
13
|
-
|
|
14
|
-
for (const constraint of step.constraints) {
|
|
15
|
-
const result = evaluate(constraint.condition, this.deps.ctx, target);
|
|
16
|
-
|
|
17
|
-
if (!result) {
|
|
18
|
-
const message = constraint.message ?? `Validation failed: ${JSON.stringify(constraint.condition)}`;
|
|
19
|
-
|
|
20
|
-
if (constraint.severity === 'error') {
|
|
21
|
-
throw new Error(message);
|
|
22
|
-
} else {
|
|
23
|
-
this.deps.log(`Warning: ${message}`);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
this.deps.log('Validation passed');
|
|
29
|
-
}
|
|
30
|
-
}
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Webhook Handler
|
|
3
|
-
*
|
|
4
|
-
* Handles the 'wait' step for waiting on webhook callbacks.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import type { WebhookStep } from '../../ast/nodes.js';
|
|
8
|
-
import type { ExecutionContext } from '../context.js';
|
|
9
|
-
import { evaluate } from '../evaluator.js';
|
|
10
|
-
import type { WebhookServer, WebhookRegistration, WebhookEvent } from '../../webhook/index.js';
|
|
11
|
-
import { RetrySignal } from '../signals.js';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Dependencies for the webhook handler
|
|
15
|
-
*/
|
|
16
|
-
export interface WebhookHandlerDeps {
|
|
17
|
-
ctx: ExecutionContext;
|
|
18
|
-
webhookServer: WebhookServer;
|
|
19
|
-
executionId: string;
|
|
20
|
-
log: (message: string) => void;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Result of webhook handler execution
|
|
25
|
-
*/
|
|
26
|
-
export interface WebhookHandlerResult {
|
|
27
|
-
registration: WebhookRegistration;
|
|
28
|
-
events: WebhookEvent[];
|
|
29
|
-
webhookUrl: string;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Handler for webhook (wait) steps
|
|
34
|
-
*/
|
|
35
|
-
export class WebhookHandler {
|
|
36
|
-
private deps: WebhookHandlerDeps;
|
|
37
|
-
|
|
38
|
-
constructor(deps: WebhookHandlerDeps) {
|
|
39
|
-
this.deps = deps;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Execute the wait step
|
|
44
|
-
*/
|
|
45
|
-
async execute(step: WebhookStep): Promise<WebhookHandlerResult> {
|
|
46
|
-
const { ctx, webhookServer, executionId, log } = this.deps;
|
|
47
|
-
|
|
48
|
-
// Register webhook endpoint
|
|
49
|
-
const timeout = step.timeout ?? 300000; // 5 minutes default
|
|
50
|
-
const expectedEvents = step.expectedEvents ?? 1;
|
|
51
|
-
|
|
52
|
-
const registration = await webhookServer.register(executionId, {
|
|
53
|
-
path: step.path,
|
|
54
|
-
timeout,
|
|
55
|
-
expectedEvents,
|
|
56
|
-
filter: step.eventFilter ? JSON.stringify(step.eventFilter) : undefined,
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
const webhookUrl = webhookServer.getWebhookUrl(registration);
|
|
60
|
-
log(`Waiting for webhook: ${webhookUrl} (timeout: ${timeout}ms, expected: ${expectedEvents})`);
|
|
61
|
-
|
|
62
|
-
// Set the webhook URL in context for use in subsequent steps
|
|
63
|
-
ctx.response = {
|
|
64
|
-
webhookId: registration.id,
|
|
65
|
-
webhookUrl,
|
|
66
|
-
webhookPath: registration.path,
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
// Wait for webhook events
|
|
70
|
-
const result = await webhookServer.waitForEvents(registration.id, timeout);
|
|
71
|
-
|
|
72
|
-
if (result.timedOut) {
|
|
73
|
-
log(`Webhook timeout: ${webhookUrl}`);
|
|
74
|
-
|
|
75
|
-
// Check if retry is configured
|
|
76
|
-
if (step.retryOnTimeout) {
|
|
77
|
-
throw new RetrySignal(step.retryOnTimeout);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// If not retrying, still return partial results
|
|
81
|
-
if (result.events.length === 0) {
|
|
82
|
-
throw new Error(`Webhook timeout: no events received within ${timeout}ms`);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// Filter events if filter expression provided
|
|
87
|
-
let events = result.events;
|
|
88
|
-
if (step.eventFilter && events.length > 0) {
|
|
89
|
-
events = events.filter((event) => {
|
|
90
|
-
try {
|
|
91
|
-
const filterCtx = { ...ctx, response: event.body };
|
|
92
|
-
return evaluate(step.eventFilter!, filterCtx);
|
|
93
|
-
} catch {
|
|
94
|
-
return true; // Include on filter error
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
log(`Received ${events.length} webhook event(s)`);
|
|
100
|
-
|
|
101
|
-
// Set response to webhook events
|
|
102
|
-
if (events.length === 1) {
|
|
103
|
-
ctx.response = events[0].body;
|
|
104
|
-
} else {
|
|
105
|
-
ctx.response = events.map((e) => e.body);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// Store events if storage configured
|
|
109
|
-
if (step.storage) {
|
|
110
|
-
const store = ctx.stores.get(step.storage.target);
|
|
111
|
-
if (store) {
|
|
112
|
-
for (const event of events) {
|
|
113
|
-
const data = event.body as Record<string, unknown>;
|
|
114
|
-
let key: string;
|
|
115
|
-
|
|
116
|
-
if (step.storage.key) {
|
|
117
|
-
const keyCtx = { ...ctx, response: event.body };
|
|
118
|
-
const keyValue = evaluate(step.storage.key, keyCtx);
|
|
119
|
-
key = String(keyValue);
|
|
120
|
-
} else {
|
|
121
|
-
// Generate a key from the event ID
|
|
122
|
-
key = event.id;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
await store.set(key, data);
|
|
126
|
-
log(`Stored webhook event: ${key}`);
|
|
127
|
-
}
|
|
128
|
-
} else {
|
|
129
|
-
log(`Warning: Store '${step.storage.target}' not found for webhook storage`);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// Clean up registration
|
|
134
|
-
await webhookServer.unregister(registration.id);
|
|
135
|
-
|
|
136
|
-
return {
|
|
137
|
-
registration,
|
|
138
|
-
events,
|
|
139
|
-
webhookUrl,
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
}
|
package/src/lexer/index.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lexer module for Reqon.
|
|
3
|
-
*
|
|
4
|
-
* Uses Vague's Lexer with Reqon keywords registered via the plugin system.
|
|
5
|
-
* Importing this module automatically registers the Reqon plugin.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
// Import plugin to auto-register Reqon keywords with Vague
|
|
9
|
-
import '../plugin.js';
|
|
10
|
-
|
|
11
|
-
// Re-export Vague's Lexer and TokenType as the primary lexer
|
|
12
|
-
export { Lexer, Lexer as ReqonLexer, TokenType, type Token } from 'vague-lang';
|
|
13
|
-
|
|
14
|
-
// Export Reqon-specific token types and keywords
|
|
15
|
-
export { ReqonTokenType, REQON_KEYWORDS } from './tokens.js';
|
|
16
|
-
|
|
17
|
-
// Re-export Token type with Reqon compatibility alias
|
|
18
|
-
export type { Token as ReqonToken } from 'vague-lang';
|