@proompteng/temporal-bun-sdk 0.5.0 → 0.6.1
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/README.md +6 -14
- package/dist/src/bin/lint-workflows-command.d.ts +31 -0
- package/dist/src/bin/lint-workflows-command.d.ts.map +1 -0
- package/dist/src/bin/lint-workflows-command.js +239 -0
- package/dist/src/bin/lint-workflows-command.js.map +1 -0
- package/dist/src/bin/replay-command.d.ts +34 -7
- package/dist/src/bin/replay-command.d.ts.map +1 -1
- package/dist/src/bin/replay-command.js +211 -34
- package/dist/src/bin/replay-command.js.map +1 -1
- package/dist/src/bin/temporal-bun.d.ts +3 -2
- package/dist/src/bin/temporal-bun.d.ts.map +1 -1
- package/dist/src/bin/temporal-bun.js +22 -1
- package/dist/src/bin/temporal-bun.js.map +1 -1
- package/dist/src/bin/workflow-lint/config.d.ts +20 -0
- package/dist/src/bin/workflow-lint/config.d.ts.map +1 -0
- package/dist/src/bin/workflow-lint/config.js +50 -0
- package/dist/src/bin/workflow-lint/config.js.map +1 -0
- package/dist/src/bin/workflow-lint/graph.d.ts +25 -0
- package/dist/src/bin/workflow-lint/graph.d.ts.map +1 -0
- package/dist/src/bin/workflow-lint/graph.js +124 -0
- package/dist/src/bin/workflow-lint/graph.js.map +1 -0
- package/dist/src/bin/workflow-lint/rules.d.ts +15 -0
- package/dist/src/bin/workflow-lint/rules.d.ts.map +1 -0
- package/dist/src/bin/workflow-lint/rules.js +124 -0
- package/dist/src/bin/workflow-lint/rules.js.map +1 -0
- package/dist/src/client.d.ts +200 -0
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +636 -3
- package/dist/src/client.js.map +1 -1
- package/dist/src/config.d.ts +16 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +59 -4
- package/dist/src/config.js.map +1 -1
- package/dist/src/index.d.ts +8 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/interceptors/types.d.ts +1 -1
- package/dist/src/interceptors/types.d.ts.map +1 -1
- package/dist/src/interceptors/types.js.map +1 -1
- package/dist/src/proto/protoc-gen-openapiv2/options/annotations_pb.d.ts +62 -0
- package/dist/src/proto/protoc-gen-openapiv2/options/annotations_pb.d.ts.map +1 -0
- package/dist/src/proto/protoc-gen-openapiv2/options/annotations_pb.js +65 -0
- package/dist/src/proto/protoc-gen-openapiv2/options/annotations_pb.js.map +1 -0
- package/dist/src/proto/protoc-gen-openapiv2/options/openapiv2_pb.d.ts +1448 -0
- package/dist/src/proto/protoc-gen-openapiv2/options/openapiv2_pb.d.ts.map +1 -0
- package/dist/src/proto/protoc-gen-openapiv2/options/openapiv2_pb.js +304 -0
- package/dist/src/proto/protoc-gen-openapiv2/options/openapiv2_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/activity/v1/message_pb.d.ts +347 -2
- package/dist/src/proto/temporal/api/activity/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/activity/v1/message_pb.js +23 -3
- package/dist/src/proto/temporal/api/activity/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/cloud/account/v1/message_pb.d.ts +242 -0
- package/dist/src/proto/temporal/api/cloud/account/v1/message_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/cloud/account/v1/message_pb.js +76 -0
- package/dist/src/proto/temporal/api/cloud/account/v1/message_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/cloud/auditlog/v1/message_pb.d.ts +109 -0
- package/dist/src/proto/temporal/api/cloud/auditlog/v1/message_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/cloud/auditlog/v1/message_pb.js +20 -0
- package/dist/src/proto/temporal/api/cloud/auditlog/v1/message_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/request_response_pb.d.ts +2988 -0
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/request_response_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/request_response_pb.js +669 -0
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/request_response_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/service_pb.d.ts +656 -0
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/service_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/service_pb.js +19 -0
- package/dist/src/proto/temporal/api/cloud/cloudservice/v1/service_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/cloud/connectivityrule/v1/message_pb.d.ts +132 -0
- package/dist/src/proto/temporal/api/cloud/connectivityrule/v1/message_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/cloud/connectivityrule/v1/message_pb.js +31 -0
- package/dist/src/proto/temporal/api/cloud/connectivityrule/v1/message_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/cloud/identity/v1/message_pb.d.ts +783 -0
- package/dist/src/proto/temporal/api/cloud/identity/v1/message_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/cloud/identity/v1/message_pb.js +209 -0
- package/dist/src/proto/temporal/api/cloud/identity/v1/message_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/cloud/namespace/v1/message_pb.d.ts +976 -0
- package/dist/src/proto/temporal/api/cloud/namespace/v1/message_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/cloud/namespace/v1/message_pb.js +271 -0
- package/dist/src/proto/temporal/api/cloud/namespace/v1/message_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/cloud/nexus/v1/message_pb.d.ts +201 -0
- package/dist/src/proto/temporal/api/cloud/nexus/v1/message_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/cloud/nexus/v1/message_pb.js +42 -0
- package/dist/src/proto/temporal/api/cloud/nexus/v1/message_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/cloud/operation/v1/message_pb.d.ts +129 -0
- package/dist/src/proto/temporal/api/cloud/operation/v1/message_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/cloud/operation/v1/message_pb.js +65 -0
- package/dist/src/proto/temporal/api/cloud/operation/v1/message_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/cloud/region/v1/message_pb.d.ts +76 -0
- package/dist/src/proto/temporal/api/cloud/region/v1/message_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/cloud/region/v1/message_pb.js +38 -0
- package/dist/src/proto/temporal/api/cloud/region/v1/message_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/cloud/resource/v1/message_pb.d.ts +79 -0
- package/dist/src/proto/temporal/api/cloud/resource/v1/message_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/cloud/resource/v1/message_pb.js +83 -0
- package/dist/src/proto/temporal/api/cloud/resource/v1/message_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/cloud/sink/v1/message_pb.d.ts +137 -0
- package/dist/src/proto/temporal/api/cloud/sink/v1/message_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/cloud/sink/v1/message_pb.js +29 -0
- package/dist/src/proto/temporal/api/cloud/sink/v1/message_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/cloud/usage/v1/message_pb.d.ts +166 -0
- package/dist/src/proto/temporal/api/cloud/usage/v1/message_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/cloud/usage/v1/message_pb.js +96 -0
- package/dist/src/proto/temporal/api/cloud/usage/v1/message_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/command/v1/message_pb.d.ts +36 -1
- package/dist/src/proto/temporal/api/command/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/command/v1/message_pb.js +1 -1
- package/dist/src/proto/temporal/api/command/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/common/v1/message_pb.d.ts +24 -0
- package/dist/src/proto/temporal/api/common/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/common/v1/message_pb.js +6 -1
- package/dist/src/proto/temporal/api/common/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/deployment/v1/message_pb.d.ts +41 -0
- package/dist/src/proto/temporal/api/deployment/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/deployment/v1/message_pb.js +6 -1
- package/dist/src/proto/temporal/api/deployment/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/activity_pb.d.ts +145 -0
- package/dist/src/proto/temporal/api/enums/v1/activity_pb.d.ts.map +1 -0
- package/dist/src/proto/temporal/api/enums/v1/activity_pb.js +151 -0
- package/dist/src/proto/temporal/api/enums/v1/activity_pb.js.map +1 -0
- package/dist/src/proto/temporal/api/enums/v1/event_type_pb.d.ts +13 -1
- package/dist/src/proto/temporal/api/enums/v1/event_type_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/event_type_pb.js +13 -1
- package/dist/src/proto/temporal/api/enums/v1/event_type_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.d.ts +6 -0
- package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.js +6 -0
- package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/workflow_pb.d.ts +102 -16
- package/dist/src/proto/temporal/api/enums/v1/workflow_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/enums/v1/workflow_pb.js +104 -16
- package/dist/src/proto/temporal/api/enums/v1/workflow_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/errordetails/v1/message_pb.d.ts +22 -0
- package/dist/src/proto/temporal/api/errordetails/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/errordetails/v1/message_pb.js +6 -1
- package/dist/src/proto/temporal/api/errordetails/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/history/v1/message_pb.d.ts +148 -8
- package/dist/src/proto/temporal/api/history/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/history/v1/message_pb.js +22 -12
- package/dist/src/proto/temporal/api/history/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/namespace/v1/message_pb.d.ts +36 -0
- package/dist/src/proto/temporal/api/namespace/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/namespace/v1/message_pb.js +6 -1
- package/dist/src/proto/temporal/api/namespace/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.d.ts +12 -0
- package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.js +1 -1
- package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/workflow/v1/message_pb.d.ts +105 -21
- package/dist/src/proto/temporal/api/workflow/v1/message_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/workflow/v1/message_pb.js +6 -3
- package/dist/src/proto/temporal/api/workflow/v1/message_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.d.ts +702 -13
- package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.js +107 -1
- package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.js.map +1 -1
- package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.d.ts +157 -9
- package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.d.ts.map +1 -1
- package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.js +1 -1
- package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.js.map +1 -1
- package/dist/src/runtime/effect-layers.d.ts +50 -0
- package/dist/src/runtime/effect-layers.d.ts.map +1 -1
- package/dist/src/search-attributes.d.ts +13 -0
- package/dist/src/search-attributes.d.ts.map +1 -0
- package/dist/src/search-attributes.js +23 -0
- package/dist/src/search-attributes.js.map +1 -0
- package/dist/src/testing/index.d.ts +3 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +2 -0
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/testing/test-environment.d.ts +36 -0
- package/dist/src/testing/test-environment.d.ts.map +1 -0
- package/dist/src/testing/test-environment.js +239 -0
- package/dist/src/testing/test-environment.js.map +1 -0
- package/dist/src/worker/concurrency.d.ts +4 -4
- package/dist/src/worker/concurrency.d.ts.map +1 -1
- package/dist/src/worker/concurrency.js +12 -2
- package/dist/src/worker/concurrency.js.map +1 -1
- package/dist/src/worker/defaults.d.ts +1 -0
- package/dist/src/worker/defaults.d.ts.map +1 -1
- package/dist/src/worker/defaults.js +74 -1
- package/dist/src/worker/defaults.js.map +1 -1
- package/dist/src/worker/index.d.ts +5 -0
- package/dist/src/worker/index.d.ts.map +1 -1
- package/dist/src/worker/index.js +3 -0
- package/dist/src/worker/index.js.map +1 -1
- package/dist/src/worker/plugins.d.ts +26 -0
- package/dist/src/worker/plugins.d.ts.map +1 -0
- package/dist/src/worker/plugins.js +25 -0
- package/dist/src/worker/plugins.js.map +1 -0
- package/dist/src/worker/runtime.d.ts +6 -0
- package/dist/src/worker/runtime.d.ts.map +1 -1
- package/dist/src/worker/runtime.js +278 -20
- package/dist/src/worker/runtime.js.map +1 -1
- package/dist/src/worker/sticky-cache.d.ts +3 -1
- package/dist/src/worker/sticky-cache.d.ts.map +1 -1
- package/dist/src/worker/sticky-cache.js.map +1 -1
- package/dist/src/worker/tuner.d.ts +8 -0
- package/dist/src/worker/tuner.d.ts.map +1 -0
- package/dist/src/worker/tuner.js +5 -0
- package/dist/src/worker/tuner.js.map +1 -0
- package/dist/src/worker.d.ts +4 -0
- package/dist/src/worker.d.ts.map +1 -1
- package/dist/src/worker.js +9 -2
- package/dist/src/worker.js.map +1 -1
- package/dist/src/workflow/commands.d.ts +17 -2
- package/dist/src/workflow/commands.d.ts.map +1 -1
- package/dist/src/workflow/commands.js +39 -1
- package/dist/src/workflow/commands.js.map +1 -1
- package/dist/src/workflow/context.d.ts +25 -0
- package/dist/src/workflow/context.d.ts.map +1 -1
- package/dist/src/workflow/context.js +116 -18
- package/dist/src/workflow/context.js.map +1 -1
- package/dist/src/workflow/executor.d.ts +5 -1
- package/dist/src/workflow/executor.d.ts.map +1 -1
- package/dist/src/workflow/executor.js +10 -0
- package/dist/src/workflow/executor.js.map +1 -1
- package/dist/src/workflow/guards.d.ts +5 -0
- package/dist/src/workflow/guards.d.ts.map +1 -0
- package/dist/src/workflow/guards.js +453 -0
- package/dist/src/workflow/guards.js.map +1 -0
- package/dist/src/workflow/log.d.ts +1 -0
- package/dist/src/workflow/log.d.ts.map +1 -1
- package/dist/src/workflow/log.js +4 -1
- package/dist/src/workflow/log.js.map +1 -1
- package/dist/src/workflow/module-load.d.ts +8 -0
- package/dist/src/workflow/module-load.d.ts.map +1 -0
- package/dist/src/workflow/module-load.js +5 -0
- package/dist/src/workflow/module-load.js.map +1 -0
- package/dist/src/workflow/replay.d.ts.map +1 -1
- package/dist/src/workflow/replay.js +131 -8
- package/dist/src/workflow/replay.js.map +1 -1
- package/package.json +8 -2
package/README.md
CHANGED
|
@@ -49,7 +49,6 @@ A Bun-first Temporal SDK implemented entirely in TypeScript. It speaks gRPC over
|
|
|
49
49
|
TEMPORAL_DETERMINISM_MARKER_MAX_DETAIL_BYTES=1800000 # optional – skip markers exceeding size limit
|
|
50
50
|
TEMPORAL_ACTIVITY_HEARTBEAT_INTERVAL_MS=4000 # optional – heartbeat throttle interval in ms
|
|
51
51
|
TEMPORAL_ACTIVITY_HEARTBEAT_RPC_TIMEOUT_MS=5000 # optional – heartbeat RPC timeout in ms
|
|
52
|
-
TEMPORAL_WORKER_DEPLOYMENT_NAME=replay-worker # optional – worker deployment metadata
|
|
53
52
|
TEMPORAL_WORKER_BUILD_ID=git-sha # optional – build-id for versioning
|
|
54
53
|
```
|
|
55
54
|
|
|
@@ -505,22 +504,15 @@ Pass your converter to both the worker and client factories to keep payload hand
|
|
|
505
504
|
|
|
506
505
|
## Worker versioning and build IDs
|
|
507
506
|
|
|
508
|
-
Workers derive their build ID
|
|
507
|
+
Workers derive their build ID (in priority order) from:
|
|
509
508
|
|
|
510
|
-
1.
|
|
511
|
-
2.
|
|
512
|
-
3.
|
|
509
|
+
1. `deployment.buildId` passed to `createWorker(...)` / `WorkerRuntime.create(...)`
|
|
510
|
+
2. `TEMPORAL_WORKER_BUILD_ID`
|
|
511
|
+
3. a derived value based on the configured `workflowsPath` contents (recommended default)
|
|
513
512
|
|
|
514
|
-
|
|
513
|
+
When `deployment.versioningMode` is `WorkerVersioningMode.VERSIONED`, the worker includes deployment metadata (deployment name + build ID) in poll/response requests so the server can route workflow tasks to the correct build.
|
|
515
514
|
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
```
|
|
519
|
-
[temporal-bun-sdk] registered worker build ID replay-worker@1.2.3 for default/replay-fixtures
|
|
520
|
-
[temporal-bun-sdk] skipping worker build ID registration for default/replay-fixtures: worker versioning API unavailable (Unimplemented (12)). If you are running against the Temporal CLI dev server via bun scripts/start-temporal-cli.ts this warning is expected because that server does not implement worker versioning APIs yet.
|
|
521
|
-
```
|
|
522
|
-
|
|
523
|
-
Production clusters should enable worker versioning, watch for the registration log during deploys, and alert on failures so versioned queues stay healthy.
|
|
515
|
+
The Bun SDK does not call the deprecated Build ID Compatibility APIs (Version Set-based “worker versioning v0.1”), since they may be disabled on some namespaces.
|
|
524
516
|
|
|
525
517
|
## License
|
|
526
518
|
MIT © ProomptEng AI
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type WorkflowLintFormat, type WorkflowLintMode } from './workflow-lint/config';
|
|
2
|
+
import { type WorkflowLintViolation } from './workflow-lint/rules';
|
|
3
|
+
export type LintWorkflowsExitCode = 0 | 1;
|
|
4
|
+
export type LintWorkflowsResult = {
|
|
5
|
+
readonly exitCode: LintWorkflowsExitCode;
|
|
6
|
+
readonly mode: WorkflowLintMode;
|
|
7
|
+
readonly format: WorkflowLintFormat;
|
|
8
|
+
readonly entries: readonly string[];
|
|
9
|
+
readonly violations: readonly WorkflowLintViolation[];
|
|
10
|
+
readonly configSource?: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const executeLintWorkflows: (options: {
|
|
13
|
+
readonly cwd?: string;
|
|
14
|
+
readonly workflows?: readonly string[];
|
|
15
|
+
readonly mode?: WorkflowLintMode;
|
|
16
|
+
readonly format?: WorkflowLintFormat;
|
|
17
|
+
readonly configPath?: string;
|
|
18
|
+
readonly changedOnly?: boolean;
|
|
19
|
+
}) => Promise<LintWorkflowsResult>;
|
|
20
|
+
export declare const printLintWorkflows: (result: LintWorkflowsResult, options?: {
|
|
21
|
+
outPath?: string;
|
|
22
|
+
}) => Promise<void>;
|
|
23
|
+
export declare const parseLintWorkflowsFlags: (flags: Record<string, string | boolean>) => {
|
|
24
|
+
workflows: string[];
|
|
25
|
+
mode: WorkflowLintMode;
|
|
26
|
+
format: WorkflowLintFormat;
|
|
27
|
+
configPath: string;
|
|
28
|
+
changedOnly: boolean;
|
|
29
|
+
};
|
|
30
|
+
export declare const withTempDir: <T>(fn: (dir: string) => Promise<T>) => Promise<T>;
|
|
31
|
+
//# sourceMappingURL=lint-workflows-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint-workflows-command.d.ts","sourceRoot":"","sources":["../../../src/bin/lint-workflows-command.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0B,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE/G,OAAO,EAAyB,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAEzF,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAAA;AAEzC,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAA;IACxC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAA;IACrD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B,CAAA;AA4GD,eAAO,MAAM,oBAAoB,GAAU,SAAS;IAClD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAA;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAC/B,KAAG,OAAO,CAAC,mBAAmB,CAgF9B,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,QAAQ,mBAAmB,EAAE,UAAU;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,kBAqCnG,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;;;;;;CAyB9E,CAAA;AAGD,eAAO,MAAM,WAAW,GAAU,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAI/E,CAAA"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { mkdir, mkdtemp, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { dirname, resolve } from 'node:path';
|
|
5
|
+
import { loadWorkflowLintConfig } from './workflow-lint/config';
|
|
6
|
+
import { buildWorkflowLintGraph } from './workflow-lint/graph';
|
|
7
|
+
import { lintWorkflowModuleAst } from './workflow-lint/rules';
|
|
8
|
+
class WorkflowLintCommandError extends Error {
|
|
9
|
+
constructor(message) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = 'WorkflowLintCommandError';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const truthy = new Set(['1', 'true', 't', 'yes', 'y', 'on']);
|
|
15
|
+
const readStringFlag = (value) => typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined;
|
|
16
|
+
const readBooleanFlag = (value) => {
|
|
17
|
+
if (value === true)
|
|
18
|
+
return true;
|
|
19
|
+
if (typeof value === 'string')
|
|
20
|
+
return truthy.has(value.trim().toLowerCase());
|
|
21
|
+
return false;
|
|
22
|
+
};
|
|
23
|
+
const parseMode = (raw) => {
|
|
24
|
+
const normalized = raw?.trim().toLowerCase();
|
|
25
|
+
if (!normalized)
|
|
26
|
+
return undefined;
|
|
27
|
+
if (normalized === 'strict' || normalized === 'warn' || normalized === 'off') {
|
|
28
|
+
return normalized;
|
|
29
|
+
}
|
|
30
|
+
return undefined;
|
|
31
|
+
};
|
|
32
|
+
const parseFormat = (raw) => {
|
|
33
|
+
const normalized = raw?.trim().toLowerCase();
|
|
34
|
+
if (!normalized)
|
|
35
|
+
return undefined;
|
|
36
|
+
if (normalized === 'text' || normalized === 'json') {
|
|
37
|
+
return normalized;
|
|
38
|
+
}
|
|
39
|
+
return undefined;
|
|
40
|
+
};
|
|
41
|
+
const splitRepeatable = (value) => {
|
|
42
|
+
if (!value)
|
|
43
|
+
return [];
|
|
44
|
+
return value
|
|
45
|
+
.split(',')
|
|
46
|
+
.map((token) => token.trim())
|
|
47
|
+
.filter((token) => token.length > 0);
|
|
48
|
+
};
|
|
49
|
+
const resolveDefaultMode = (env) => parseMode(env.TEMPORAL_WORKFLOW_LINT) ?? (readBooleanFlag(env.CI) ? 'strict' : 'warn');
|
|
50
|
+
const defaultDenyImports = new Set([
|
|
51
|
+
'@proompteng/temporal-bun-sdk/client',
|
|
52
|
+
'@proompteng/temporal-bun-sdk/worker',
|
|
53
|
+
'node:fs',
|
|
54
|
+
'node:fs/promises',
|
|
55
|
+
'node:net',
|
|
56
|
+
'node:http',
|
|
57
|
+
'node:https',
|
|
58
|
+
'node:dgram',
|
|
59
|
+
'node:tls',
|
|
60
|
+
'node:child_process',
|
|
61
|
+
'node:worker_threads',
|
|
62
|
+
'fs',
|
|
63
|
+
'net',
|
|
64
|
+
'http',
|
|
65
|
+
'https',
|
|
66
|
+
'child_process',
|
|
67
|
+
'worker_threads',
|
|
68
|
+
]);
|
|
69
|
+
const defaultDenyGlobals = new Set(['fetch', 'WebSocket', 'setTimeout', 'setInterval', 'Bun.spawn', 'Deno.run']);
|
|
70
|
+
const defaultDenyMemberExpressions = new Set(['process.env', 'Bun.env']);
|
|
71
|
+
const expandWorkflowEntries = async (cwdPath, patterns) => {
|
|
72
|
+
const entries = new Set();
|
|
73
|
+
for (const pattern of patterns) {
|
|
74
|
+
const resolved = resolve(cwdPath, pattern);
|
|
75
|
+
if (existsSync(resolved)) {
|
|
76
|
+
entries.add(resolved);
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
// Bun supports glob scanning natively.
|
|
80
|
+
const glob = new Bun.Glob(pattern);
|
|
81
|
+
for await (const match of glob.scan({ cwd: cwdPath, onlyFiles: true })) {
|
|
82
|
+
entries.add(resolve(cwdPath, match));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return [...entries].sort();
|
|
86
|
+
};
|
|
87
|
+
const listChangedFiles = async (cwdPath) => {
|
|
88
|
+
const child = Bun.spawn(['git', 'diff', '--name-only', '--diff-filter=ACMRTUXB', 'origin/main...HEAD'], {
|
|
89
|
+
cwd: cwdPath,
|
|
90
|
+
stdout: 'pipe',
|
|
91
|
+
stderr: 'pipe',
|
|
92
|
+
});
|
|
93
|
+
const text = await new Response(child.stdout).text();
|
|
94
|
+
const files = text
|
|
95
|
+
.split('\n')
|
|
96
|
+
.map((line) => line.trim())
|
|
97
|
+
.filter((line) => line.length > 0)
|
|
98
|
+
.map((line) => resolve(cwdPath, line));
|
|
99
|
+
return new Set(files);
|
|
100
|
+
};
|
|
101
|
+
export const executeLintWorkflows = async (options) => {
|
|
102
|
+
// TODO(TBS-NDG-003): implement workflow lint CLI
|
|
103
|
+
const cwdPath = options.cwd ?? process.cwd();
|
|
104
|
+
const mode = options.mode ?? resolveDefaultMode(process.env);
|
|
105
|
+
const format = options.format ?? 'text';
|
|
106
|
+
if (mode === 'off') {
|
|
107
|
+
return { exitCode: 0, mode, format, entries: [], violations: [] };
|
|
108
|
+
}
|
|
109
|
+
const { config, source } = await loadWorkflowLintConfig(cwdPath, options.configPath);
|
|
110
|
+
const patterns = options.workflows && options.workflows.length > 0 ? options.workflows : (config?.entries ?? []);
|
|
111
|
+
if (patterns.length === 0) {
|
|
112
|
+
throw new WorkflowLintCommandError('No workflow entries provided. Use --workflows or .temporal-bun-workflows.json.');
|
|
113
|
+
}
|
|
114
|
+
const entries = await expandWorkflowEntries(cwdPath, patterns);
|
|
115
|
+
if (entries.length === 0) {
|
|
116
|
+
throw new WorkflowLintCommandError('No workflow entry files matched the configured patterns.');
|
|
117
|
+
}
|
|
118
|
+
const denyImports = new Set(defaultDenyImports);
|
|
119
|
+
const denyGlobals = new Set(defaultDenyGlobals);
|
|
120
|
+
const denyMemberExpressions = new Set(defaultDenyMemberExpressions);
|
|
121
|
+
for (const item of config?.deny?.imports ?? [])
|
|
122
|
+
denyImports.add(item);
|
|
123
|
+
for (const item of config?.deny?.globals ?? [])
|
|
124
|
+
denyGlobals.add(item);
|
|
125
|
+
for (const item of config?.deny?.memberExpressions ?? [])
|
|
126
|
+
denyMemberExpressions.add(item);
|
|
127
|
+
for (const allowed of config?.allow?.imports ?? [])
|
|
128
|
+
denyImports.delete(allowed);
|
|
129
|
+
for (const allowed of config?.allow?.globals ?? [])
|
|
130
|
+
denyGlobals.delete(allowed);
|
|
131
|
+
for (const allowed of config?.allow?.memberExpressions ?? [])
|
|
132
|
+
denyMemberExpressions.delete(allowed);
|
|
133
|
+
const changedFiles = options.changedOnly ? await listChangedFiles(cwdPath) : undefined;
|
|
134
|
+
const violations = [];
|
|
135
|
+
for (const entry of entries) {
|
|
136
|
+
const { graph, violations: graphViolations } = await buildWorkflowLintGraph({
|
|
137
|
+
entry,
|
|
138
|
+
cwd: cwdPath,
|
|
139
|
+
denyImports,
|
|
140
|
+
});
|
|
141
|
+
const modules = [...graph.modules].sort();
|
|
142
|
+
if (changedFiles && !modules.some((file) => changedFiles.has(file))) {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
for (const violation of graphViolations) {
|
|
146
|
+
violations.push({
|
|
147
|
+
filePath: violation.filePath,
|
|
148
|
+
rule: violation.rule === 'dynamic-import' ? 'dynamic-import' : 'deny-import',
|
|
149
|
+
message: violation.message,
|
|
150
|
+
line: 1,
|
|
151
|
+
column: 1,
|
|
152
|
+
...(violation.specifier ? { details: { specifier: violation.specifier } } : {}),
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
for (const filePath of modules) {
|
|
156
|
+
const fileViolations = await lintWorkflowModuleAst({
|
|
157
|
+
filePath,
|
|
158
|
+
denyGlobals,
|
|
159
|
+
denyMemberExpressions,
|
|
160
|
+
denyImports,
|
|
161
|
+
});
|
|
162
|
+
violations.push(...fileViolations);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const exitCode = violations.length > 0 && mode === 'strict' ? 1 : 0;
|
|
166
|
+
return {
|
|
167
|
+
exitCode,
|
|
168
|
+
mode,
|
|
169
|
+
format,
|
|
170
|
+
entries,
|
|
171
|
+
violations,
|
|
172
|
+
...(source ? { configSource: source } : {}),
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
export const printLintWorkflows = async (result, options) => {
|
|
176
|
+
const lines = [];
|
|
177
|
+
lines.push(`temporal-bun lint-workflows (${result.mode})`);
|
|
178
|
+
if (result.configSource) {
|
|
179
|
+
lines.push(` config: ${result.configSource}`);
|
|
180
|
+
}
|
|
181
|
+
lines.push(` entries: ${result.entries.length}`);
|
|
182
|
+
lines.push(` violations: ${result.violations.length}`);
|
|
183
|
+
if (result.format === 'json') {
|
|
184
|
+
const payload = JSON.stringify(result, null, 2);
|
|
185
|
+
console.log(payload);
|
|
186
|
+
if (options?.outPath) {
|
|
187
|
+
await mkdir(dirname(options.outPath), { recursive: true });
|
|
188
|
+
await writeFile(options.outPath, payload);
|
|
189
|
+
}
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
for (const line of lines) {
|
|
193
|
+
console.log(line);
|
|
194
|
+
}
|
|
195
|
+
if (result.violations.length > 0) {
|
|
196
|
+
const grouped = new Map();
|
|
197
|
+
for (const violation of result.violations) {
|
|
198
|
+
const list = grouped.get(violation.filePath) ?? [];
|
|
199
|
+
list.push(violation);
|
|
200
|
+
grouped.set(violation.filePath, list);
|
|
201
|
+
}
|
|
202
|
+
for (const [filePath, fileViolations] of grouped) {
|
|
203
|
+
console.log(`\n${filePath}`);
|
|
204
|
+
for (const v of fileViolations) {
|
|
205
|
+
console.log(` ${v.line}:${v.column} ${v.rule} ${v.message}`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
export const parseLintWorkflowsFlags = (flags) => {
|
|
211
|
+
const workflows = [
|
|
212
|
+
...splitRepeatable(readStringFlag(flags.workflows)),
|
|
213
|
+
...splitRepeatable(readStringFlag(flags.workflow)),
|
|
214
|
+
...splitRepeatable(readStringFlag(flags.entries)),
|
|
215
|
+
];
|
|
216
|
+
const workflowsFromRepeatable = [
|
|
217
|
+
readStringFlag(flags['workflows-0']),
|
|
218
|
+
readStringFlag(flags['workflows-1']),
|
|
219
|
+
readStringFlag(flags['workflows-2']),
|
|
220
|
+
].filter(Boolean);
|
|
221
|
+
const mode = parseMode(readStringFlag(flags.mode));
|
|
222
|
+
const format = parseFormat(readStringFlag(flags.format));
|
|
223
|
+
const configPath = readStringFlag(flags.config);
|
|
224
|
+
const changedOnly = readBooleanFlag(flags['changed-only']);
|
|
225
|
+
return {
|
|
226
|
+
workflows: [...workflows, ...workflowsFromRepeatable],
|
|
227
|
+
mode,
|
|
228
|
+
format,
|
|
229
|
+
configPath,
|
|
230
|
+
changedOnly,
|
|
231
|
+
};
|
|
232
|
+
};
|
|
233
|
+
// Used by tests for isolated temp workspace runs.
|
|
234
|
+
export const withTempDir = async (fn) => {
|
|
235
|
+
const root = await mkdtemp(resolve(tmpdir(), 'temporal-bun-lint-'));
|
|
236
|
+
await mkdir(root, { recursive: true });
|
|
237
|
+
return await fn(root);
|
|
238
|
+
};
|
|
239
|
+
//# sourceMappingURL=lint-workflows-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint-workflows-command.js","sourceRoot":"","sources":["../../../src/bin/lint-workflows-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ interface WorkflowExecutionRef {
|
|
|
11
11
|
readonly workflowId: string;
|
|
12
12
|
readonly runId: string;
|
|
13
13
|
}
|
|
14
|
-
interface
|
|
14
|
+
interface ReplaySingleOptions {
|
|
15
15
|
readonly historyFile?: string;
|
|
16
16
|
readonly execution?: WorkflowExecutionRef;
|
|
17
17
|
readonly workflowType?: string;
|
|
@@ -19,7 +19,22 @@ interface ReplayCommandOptions {
|
|
|
19
19
|
readonly temporalCliPath?: string;
|
|
20
20
|
readonly source: ReplayHistorySourcePreference;
|
|
21
21
|
readonly jsonOutput: boolean;
|
|
22
|
+
readonly debug: boolean;
|
|
22
23
|
}
|
|
24
|
+
interface ReplayDirectoryOptions {
|
|
25
|
+
readonly historyDir: string;
|
|
26
|
+
readonly outDir?: string;
|
|
27
|
+
readonly workflowType?: string;
|
|
28
|
+
readonly namespaceOverride?: string;
|
|
29
|
+
readonly temporalCliPath?: string;
|
|
30
|
+
readonly source: ReplayHistorySourcePreference;
|
|
31
|
+
readonly jsonOutput: boolean;
|
|
32
|
+
readonly debug: boolean;
|
|
33
|
+
}
|
|
34
|
+
type ReplayCommandOptions = ReplaySingleOptions | ReplayDirectoryOptions;
|
|
35
|
+
type ReplayExecutionOptions = ReplaySingleOptions & {
|
|
36
|
+
execution: WorkflowExecutionRef;
|
|
37
|
+
};
|
|
23
38
|
interface HistoryMetadata {
|
|
24
39
|
readonly workflowId?: string;
|
|
25
40
|
readonly runId?: string;
|
|
@@ -50,6 +65,16 @@ export interface ReplayRunResult {
|
|
|
50
65
|
readonly exitCode: number;
|
|
51
66
|
readonly summary: ReplaySummary;
|
|
52
67
|
}
|
|
68
|
+
export interface ReplayBatchResult {
|
|
69
|
+
readonly exitCode: number;
|
|
70
|
+
readonly summaries: readonly ReplaySummary[];
|
|
71
|
+
readonly historyDir: string;
|
|
72
|
+
readonly outDir?: string;
|
|
73
|
+
readonly reportPath?: string;
|
|
74
|
+
readonly startedAtIso: string;
|
|
75
|
+
readonly durationMs: number;
|
|
76
|
+
readonly status: 'ok' | 'nondeterministic';
|
|
77
|
+
}
|
|
53
78
|
export interface ReplaySummary {
|
|
54
79
|
readonly workflow: WorkflowInfo;
|
|
55
80
|
readonly history: {
|
|
@@ -63,6 +88,8 @@ export interface ReplaySummary {
|
|
|
63
88
|
readonly hasMarker: boolean;
|
|
64
89
|
readonly mismatchCount: number;
|
|
65
90
|
readonly mismatches: DeterminismDiffResult['mismatches'];
|
|
91
|
+
readonly ignoredMismatchCount?: number;
|
|
92
|
+
readonly ignoredMismatches?: DeterminismDiffResult['mismatches'];
|
|
66
93
|
readonly failureMetadata?: WorkflowDeterminismFailureMetadata;
|
|
67
94
|
};
|
|
68
95
|
readonly attempts: HistoryLoaderAttempt[];
|
|
@@ -75,30 +102,30 @@ declare class ReplayCommandError extends Error {
|
|
|
75
102
|
readonly details?: Record<string, unknown>;
|
|
76
103
|
constructor(message: string, details?: Record<string, unknown>);
|
|
77
104
|
}
|
|
78
|
-
export declare const executeReplay: (flagsOrOptions: Record<string, string | boolean> | ReplayCommandOptions) => Effect.Effect<ReplayRunResult, ReplayCommandError, TemporalConfigService | ObservabilityService | WorkflowServiceClientService>;
|
|
105
|
+
export declare const executeReplay: (flagsOrOptions: Record<string, string | boolean> | ReplayCommandOptions) => Effect.Effect<ReplayRunResult | ReplayBatchResult, ReplayCommandError, TemporalConfigService | ObservabilityService | WorkflowServiceClientService>;
|
|
79
106
|
export declare const parseReplayOptions: (flags: Record<string, string | boolean>) => ReplayCommandOptions;
|
|
80
107
|
export declare const parseExecutionFlag: (value: string) => WorkflowExecutionRef;
|
|
81
108
|
declare function loadHistoryViaCli({ options, config, namespace, }: {
|
|
82
|
-
readonly options:
|
|
109
|
+
readonly options: ReplayExecutionOptions;
|
|
83
110
|
readonly config: TemporalConfig;
|
|
84
111
|
readonly namespace: string;
|
|
85
112
|
}): Promise<HistorySourceRecord>;
|
|
86
113
|
declare function loadHistoryViaService({ options, config, namespace, workflowService, }: {
|
|
87
|
-
readonly options:
|
|
114
|
+
readonly options: ReplayExecutionOptions;
|
|
88
115
|
readonly config: TemporalConfig;
|
|
89
116
|
readonly namespace: string;
|
|
90
117
|
readonly workflowService: WorkflowServiceClient;
|
|
91
118
|
}): Promise<HistorySourceRecord>;
|
|
92
|
-
export declare const printReplaySummary: (
|
|
119
|
+
export declare const printReplaySummary: (result: ReplayRunResult | ReplayBatchResult, jsonOutput: boolean) => void;
|
|
93
120
|
export declare const replayCommandTestHooks: {
|
|
94
121
|
loadHistoryFromFile: (filePath: string) => Promise<HistorySourceRecord>;
|
|
95
122
|
loadExecutionHistory: ({ options, config, loaders, workflowService, }: {
|
|
96
|
-
readonly options:
|
|
123
|
+
readonly options: ReplayExecutionOptions;
|
|
97
124
|
readonly config: TemporalConfig;
|
|
98
125
|
readonly loaders: HistoryLoaders;
|
|
99
126
|
readonly workflowService: WorkflowServiceClient;
|
|
100
127
|
}) => Promise<HistoryLoadOutcome>;
|
|
101
|
-
executeReplay: (flagsOrOptions: Record<string, string | boolean> | ReplayCommandOptions) => Effect.Effect<ReplayRunResult, ReplayCommandError, TemporalConfigService | ObservabilityService | WorkflowServiceClientService>;
|
|
128
|
+
executeReplay: (flagsOrOptions: Record<string, string | boolean> | ReplayCommandOptions) => Effect.Effect<ReplayRunResult | ReplayBatchResult, ReplayCommandError, TemporalConfigService | ObservabilityService | WorkflowServiceClientService>;
|
|
102
129
|
};
|
|
103
130
|
export {};
|
|
104
131
|
//# sourceMappingURL=replay-command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay-command.d.ts","sourceRoot":"","sources":["../../../src/bin/replay-command.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAI/C,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,6CAA6C,CAAA;AAE9F,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,4BAA4B,EAC7B,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAA;AACjF,OAAO,EACL,KAAK,qBAAqB,EAI3B,MAAM,oBAAoB,CAAA;AAE3B,KAAK,uBAAuB,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAA;AACzD,MAAM,MAAM,6BAA6B,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAA;AAQtE,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,UAAU,
|
|
1
|
+
{"version":3,"file":"replay-command.d.ts","sourceRoot":"","sources":["../../../src/bin/replay-command.ts"],"names":[],"mappings":"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"}
|