@mastra/temporal 0.0.0-branches-as-default-20260512170712

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +238 -0
  2. package/LICENSE.md +30 -0
  3. package/README.md +107 -0
  4. package/dist/chunk-BF6TR7JX.js +9 -0
  5. package/dist/chunk-BF6TR7JX.js.map +1 -0
  6. package/dist/chunk-DYBSPLCJ.cjs +11 -0
  7. package/dist/chunk-DYBSPLCJ.cjs.map +1 -0
  8. package/dist/index.cjs +132 -0
  9. package/dist/index.cjs.map +1 -0
  10. package/dist/index.d.ts +3 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +130 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/mastra-deployer-UCBGECM5.js +39 -0
  15. package/dist/mastra-deployer-UCBGECM5.js.map +1 -0
  16. package/dist/mastra-deployer-YVT5GB5G.cjs +41 -0
  17. package/dist/mastra-deployer-YVT5GB5G.cjs.map +1 -0
  18. package/dist/mastra-deployer.d.ts +16 -0
  19. package/dist/mastra-deployer.d.ts.map +1 -0
  20. package/dist/plugin.d.ts +16 -0
  21. package/dist/plugin.d.ts.map +1 -0
  22. package/dist/run.d.ts +24 -0
  23. package/dist/run.d.ts.map +1 -0
  24. package/dist/temporal-workflow-runtime.mjs +295 -0
  25. package/dist/transforms/activities.d.ts +11 -0
  26. package/dist/transforms/activities.d.ts.map +1 -0
  27. package/dist/transforms/shared.d.ts +23 -0
  28. package/dist/transforms/shared.d.ts.map +1 -0
  29. package/dist/transforms/temporal-workflow-runtime.d.mts +92 -0
  30. package/dist/transforms/temporal-workflow-runtime.d.mts.map +1 -0
  31. package/dist/transforms/workflows.d.ts +20 -0
  32. package/dist/transforms/workflows.d.ts.map +1 -0
  33. package/dist/types.d.ts +4 -0
  34. package/dist/types.d.ts.map +1 -0
  35. package/dist/utils.d.ts +2 -0
  36. package/dist/utils.d.ts.map +1 -0
  37. package/dist/worker.cjs +1336 -0
  38. package/dist/worker.cjs.map +1 -0
  39. package/dist/worker.d.ts +2 -0
  40. package/dist/worker.d.ts.map +1 -0
  41. package/dist/worker.js +1310 -0
  42. package/dist/worker.js.map +1 -0
  43. package/dist/workflow.d.ts +27 -0
  44. package/dist/workflow.d.ts.map +1 -0
  45. package/package.json +95 -0
package/dist/index.js ADDED
@@ -0,0 +1,130 @@
1
+ import { toWorkflowType } from './chunk-BF6TR7JX.js';
2
+ import { createStep, Workflow, Run } from '@mastra/core/workflows';
3
+
4
+ var TemporalRun = class extends Run {
5
+ client;
6
+ taskQueue;
7
+ constructor(params, temporalParams) {
8
+ super(params);
9
+ this.client = temporalParams.client;
10
+ this.taskQueue = temporalParams.taskQueue;
11
+ }
12
+ async start(args = {}) {
13
+ const input = await this._validateInput(args.inputData);
14
+ const initialState = await this._validateInitialState(args.initialState);
15
+ await this._validateRequestContext(args.requestContext);
16
+ try {
17
+ const handle = await this.client.workflow.start(toWorkflowType(this.workflowId), {
18
+ taskQueue: this.taskQueue,
19
+ workflowId: this.runId,
20
+ args: [
21
+ {
22
+ inputData: input,
23
+ initialState,
24
+ requestContext: args.requestContext ? Object.fromEntries(args.requestContext.entries()) : {},
25
+ runId: this.runId,
26
+ resourceId: this.resourceId,
27
+ outputOptions: args.outputOptions,
28
+ tracingOptions: args.tracingOptions,
29
+ perStep: args.perStep
30
+ }
31
+ ]
32
+ });
33
+ const result = await handle.result();
34
+ return {
35
+ status: "success",
36
+ input,
37
+ result,
38
+ state: initialState,
39
+ steps: {}
40
+ };
41
+ } catch (error) {
42
+ return {
43
+ status: "failed",
44
+ input,
45
+ error: error instanceof Error ? error : new Error(String(error)),
46
+ state: initialState,
47
+ steps: {}
48
+ };
49
+ }
50
+ }
51
+ async startAsync(args = {}) {
52
+ const input = await this._validateInput(args.inputData);
53
+ const initialState = await this._validateInitialState(args.initialState);
54
+ await this._validateRequestContext(args.requestContext);
55
+ await this.client.workflow.start(toWorkflowType(this.workflowId), {
56
+ taskQueue: this.taskQueue,
57
+ workflowId: this.runId,
58
+ args: [
59
+ {
60
+ inputData: input,
61
+ initialState,
62
+ requestContext: args.requestContext ? Object.fromEntries(args.requestContext.entries()) : {},
63
+ runId: this.runId,
64
+ resourceId: this.resourceId,
65
+ outputOptions: args.outputOptions,
66
+ tracingOptions: args.tracingOptions,
67
+ perStep: args.perStep
68
+ }
69
+ ]
70
+ });
71
+ return { runId: this.runId };
72
+ }
73
+ };
74
+
75
+ // src/workflow.ts
76
+ var TemporalWorkflow = class extends Workflow {
77
+ temporalClient;
78
+ taskQueue;
79
+ startToCloseTimeout;
80
+ constructor(params, temporalParams) {
81
+ super(params);
82
+ this.engineType = "temporal";
83
+ this.temporalClient = temporalParams.client;
84
+ this.taskQueue = temporalParams.taskQueue;
85
+ this.startToCloseTimeout = temporalParams.startToCloseTimeout ?? "1 minute";
86
+ }
87
+ async createRun(options) {
88
+ const runId = options?.runId ?? crypto.randomUUID();
89
+ const run = new TemporalRun(
90
+ {
91
+ workflowId: this.id,
92
+ runId,
93
+ resourceId: options?.resourceId,
94
+ stateSchema: this.stateSchema,
95
+ inputSchema: this.inputSchema,
96
+ requestContextSchema: this.requestContextSchema,
97
+ executionEngine: this.executionEngine,
98
+ executionGraph: this.executionGraph,
99
+ mastra: this.mastra,
100
+ retryConfig: this.retryConfig,
101
+ serializedStepGraph: this.serializedStepGraph,
102
+ disableScorers: options?.disableScorers,
103
+ tracingPolicy: this.options.tracingPolicy,
104
+ workflowSteps: this.steps,
105
+ validateInputs: this.options.validateInputs,
106
+ workflowEngineType: this.engineType,
107
+ cleanup: void 0
108
+ },
109
+ {
110
+ client: this.temporalClient,
111
+ taskQueue: this.taskQueue
112
+ }
113
+ );
114
+ this.runs.set(runId, run);
115
+ return run;
116
+ }
117
+ };
118
+ function createWorkflow(config, temporal) {
119
+ return new TemporalWorkflow(config, temporal);
120
+ }
121
+ function init(temporalParams) {
122
+ return {
123
+ createWorkflow: (config) => createWorkflow(config, temporalParams),
124
+ createStep
125
+ };
126
+ }
127
+
128
+ export { init };
129
+ //# sourceMappingURL=index.js.map
130
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/run.ts","../src/workflow.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { RequestContext } from '@mastra/core/di';\nimport { Run } from '@mastra/core/workflows';\nimport type { Step, WorkflowResult, WorkflowRunStartOptions } from '@mastra/core/workflows';\nimport type { Client } from '@temporalio/client';\nimport type { TemporalEngineType } from './types';\nimport { toWorkflowType } from './utils';\n\ntype TemporalRunStartArgs<TState, TInput, TRequestContext> = {\n inputData?: TInput;\n initialState?: TState;\n requestContext?: RequestContext<TRequestContext>;\n} & WorkflowRunStartOptions;\n\nexport class TemporalRun<\n TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n unknown,\n TemporalEngineType\n >[],\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TRequestContext extends Record<string, any> | unknown = unknown,\n> extends Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext> {\n private readonly client: Client;\n private readonly taskQueue: string;\n\n constructor(\n params: ConstructorParameters<typeof Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>>[0],\n temporalParams: {\n client: Client;\n taskQueue: string;\n },\n ) {\n super(params);\n\n this.client = temporalParams.client;\n this.taskQueue = temporalParams.taskQueue;\n }\n\n async start(args: TemporalRunStartArgs<TState, TInput, TRequestContext> = {}) {\n const input = await this._validateInput(args.inputData);\n const initialState = await this._validateInitialState(args.initialState);\n await this._validateRequestContext(args.requestContext as RequestContext<unknown> | undefined);\n\n try {\n const handle = await this.client.workflow.start(toWorkflowType(this.workflowId), {\n taskQueue: this.taskQueue,\n workflowId: this.runId,\n args: [\n {\n inputData: input,\n initialState,\n requestContext: args.requestContext ? Object.fromEntries(args.requestContext.entries()) : {},\n runId: this.runId,\n resourceId: this.resourceId,\n outputOptions: args.outputOptions,\n tracingOptions: args.tracingOptions,\n perStep: args.perStep,\n },\n ],\n });\n const result = await handle.result();\n\n return {\n status: 'success',\n input: input as TInput,\n result: result as TOutput,\n state: initialState,\n steps: {},\n } as WorkflowResult<TState, TInput, TOutput, TSteps>;\n } catch (error) {\n return {\n status: 'failed',\n input: input as TInput,\n error: error instanceof Error ? error : new Error(String(error)),\n state: initialState,\n steps: {},\n } as WorkflowResult<TState, TInput, TOutput, TSteps>;\n }\n }\n\n async startAsync(args: TemporalRunStartArgs<TState, TInput, TRequestContext> = {}) {\n const input = await this._validateInput(args.inputData);\n const initialState = await this._validateInitialState(args.initialState);\n await this._validateRequestContext(args.requestContext as RequestContext<unknown> | undefined);\n\n await this.client.workflow.start(toWorkflowType(this.workflowId), {\n taskQueue: this.taskQueue,\n workflowId: this.runId,\n args: [\n {\n inputData: input,\n initialState,\n requestContext: args.requestContext ? Object.fromEntries(args.requestContext.entries()) : {},\n runId: this.runId,\n resourceId: this.resourceId,\n outputOptions: args.outputOptions,\n tracingOptions: args.tracingOptions,\n perStep: args.perStep,\n },\n ],\n });\n\n return { runId: this.runId };\n }\n}\n","import { Workflow, createStep } from '@mastra/core/workflows';\nimport type { Step, WorkflowConfig } from '@mastra/core/workflows';\nimport type { Client } from '@temporalio/client';\nimport { TemporalRun } from './run';\nimport type { TemporalEngineType } from './types';\n\nexport type TemporalWorkflowParams = {\n client: Client;\n taskQueue: string;\n startToCloseTimeout?: string;\n};\n\nexport class TemporalWorkflow<\n TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n unknown,\n TemporalEngineType\n >[],\n TWorkflowId extends string = string,\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TPrevSchema = TInput,\n TRequestContext extends Record<string, any> | unknown = unknown,\n> extends Workflow<TemporalEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TPrevSchema, TRequestContext> {\n private readonly temporalClient: Client;\n readonly taskQueue: string;\n readonly startToCloseTimeout: string;\n\n constructor(\n params: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>,\n temporalParams: TemporalWorkflowParams,\n ) {\n super(params);\n\n this.engineType = 'temporal';\n this.temporalClient = temporalParams.client;\n this.taskQueue = temporalParams.taskQueue;\n this.startToCloseTimeout = temporalParams.startToCloseTimeout ?? '1 minute';\n }\n\n async createRun(options?: { runId?: string; resourceId?: string; disableScorers?: boolean }) {\n const runId = options?.runId ?? crypto.randomUUID();\n const run = new TemporalRun<TSteps, TState, TInput, TOutput, TRequestContext>(\n {\n workflowId: this.id,\n runId,\n resourceId: options?.resourceId,\n stateSchema: this.stateSchema,\n inputSchema: this.inputSchema,\n requestContextSchema: this.requestContextSchema,\n executionEngine: this.executionEngine,\n executionGraph: this.executionGraph,\n mastra: this.mastra,\n retryConfig: this.retryConfig,\n serializedStepGraph: this.serializedStepGraph,\n disableScorers: options?.disableScorers,\n tracingPolicy: this.options.tracingPolicy,\n workflowSteps: this.steps,\n validateInputs: this.options.validateInputs,\n workflowEngineType: this.engineType,\n cleanup: undefined,\n },\n {\n client: this.temporalClient,\n taskQueue: this.taskQueue,\n },\n );\n\n this.runs.set(runId, run);\n return run;\n }\n}\n\nexport function createWorkflow<\n TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<\n string,\n unknown,\n unknown,\n unknown,\n unknown,\n unknown,\n TemporalEngineType\n >[],\n TWorkflowId extends string = string,\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TRequestContext extends Record<string, any> | unknown = unknown,\n>(\n config: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>,\n temporal: TemporalWorkflowParams,\n) {\n return new TemporalWorkflow<TSteps, TWorkflowId, TState, TInput, TOutput, TInput, TRequestContext>(config, temporal);\n}\n\nexport function init(temporalParams: TemporalWorkflowParams) {\n return {\n createWorkflow: <\n TWorkflowId extends string,\n TState = unknown,\n TInput = unknown,\n TOutput = unknown,\n TSteps extends Step[] = Step[],\n TRequestContext extends Record<string, any> | unknown = unknown,\n >(\n config: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps, TRequestContext>,\n ) => createWorkflow<TSteps, TWorkflowId, TState, TInput, TOutput, TRequestContext>(config, temporalParams),\n createStep,\n };\n}\n"]}
@@ -0,0 +1,39 @@
1
+ import { Bundler } from '@mastra/deployer/bundler';
2
+
3
+ // src/mastra-deployer.ts
4
+ var BuildBundler = class extends Bundler {
5
+ constructor() {
6
+ super("Temporal");
7
+ this.platform = process.versions?.bun ? "neutral" : "node";
8
+ }
9
+ async getUserBundlerOptions(mastraEntryFile, outputDirectory) {
10
+ const bundlerOptions = await super.getUserBundlerOptions(mastraEntryFile, outputDirectory);
11
+ return {
12
+ ...bundlerOptions,
13
+ externals: true,
14
+ sourcemap: true
15
+ };
16
+ }
17
+ getEnvFiles() {
18
+ return Promise.resolve([]);
19
+ }
20
+ installDependencies() {
21
+ return Promise.resolve();
22
+ }
23
+ copyPublic() {
24
+ return Promise.resolve();
25
+ }
26
+ writePackageJson() {
27
+ return Promise.resolve();
28
+ }
29
+ async bundle(entryFile, outputDirectory, { toolsPaths, projectRoot }) {
30
+ return this._bundle(entryFile, entryFile, { outputDirectory, projectRoot }, toolsPaths);
31
+ }
32
+ async lint(entryFile, outputDirectory, toolsPaths) {
33
+ await super.lint(entryFile, outputDirectory, toolsPaths);
34
+ }
35
+ };
36
+
37
+ export { BuildBundler };
38
+ //# sourceMappingURL=mastra-deployer-UCBGECM5.js.map
39
+ //# sourceMappingURL=mastra-deployer-UCBGECM5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mastra-deployer.ts"],"names":[],"mappings":";;;AAGO,IAAM,YAAA,GAAN,cAA2B,OAAA,CAAQ;AAAA,EACxC,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,UAAU,CAAA;AAChB,IAAA,IAAA,CAAK,QAAA,GAAW,OAAA,CAAQ,QAAA,EAAU,GAAA,GAAM,SAAA,GAAY,MAAA;AAAA,EACtD;AAAA,EAEA,MAAgB,qBAAA,CACd,eAAA,EACA,eAAA,EACyC;AACzC,IAAA,MAAM,cAAA,GAAiB,MAAM,KAAA,CAAM,qBAAA,CAAsB,iBAAiB,eAAe,CAAA;AAEzF,IAAA,OAAO;AAAA,MACL,GAAG,cAAA;AAAA,MACH,SAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW;AAAA,KACb;AAAA,EACF;AAAA,EAEA,WAAA,GAAiC;AAC/B,IAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,EAAE,CAAA;AAAA,EAC3B;AAAA,EAEU,mBAAA,GAAqC;AAC7C,IAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,EACzB;AAAA,EAEU,UAAA,GAA4B;AACpC,IAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,EACzB;AAAA,EAEA,gBAAA,GAAkC;AAChC,IAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,EACzB;AAAA,EAEA,MAAM,MAAA,CACJ,SAAA,EACA,iBACA,EAAE,UAAA,EAAY,aAAY,EACX;AACf,IAAA,OAAO,IAAA,CAAK,QAAQ,SAAA,EAAW,SAAA,EAAW,EAAE,eAAA,EAAiB,WAAA,IAAe,UAAU,CAAA;AAAA,EACxF;AAAA,EAEA,MAAM,IAAA,CAAK,SAAA,EAAmB,eAAA,EAAyB,UAAA,EAAkD;AACvG,IAAA,MAAM,KAAA,CAAM,IAAA,CAAK,SAAA,EAAW,eAAA,EAAiB,UAAU,CAAA;AAAA,EACzD;AACF","file":"mastra-deployer-UCBGECM5.js","sourcesContent":["import type { Config } from '@mastra/core/mastra';\nimport { Bundler } from '@mastra/deployer/bundler';\n\nexport class BuildBundler extends Bundler {\n constructor() {\n super('Temporal');\n this.platform = process.versions?.bun ? 'neutral' : 'node';\n }\n\n protected async getUserBundlerOptions(\n mastraEntryFile: string,\n outputDirectory: string,\n ): Promise<NonNullable<Config['bundler']>> {\n const bundlerOptions = await super.getUserBundlerOptions(mastraEntryFile, outputDirectory);\n\n return {\n ...bundlerOptions,\n externals: true,\n sourcemap: true,\n };\n }\n\n getEnvFiles(): Promise<string[]> {\n return Promise.resolve([]);\n }\n\n protected installDependencies(): Promise<void> {\n return Promise.resolve();\n }\n\n protected copyPublic(): Promise<void> {\n return Promise.resolve();\n }\n\n writePackageJson(): Promise<void> {\n return Promise.resolve();\n }\n\n async bundle(\n entryFile: string,\n outputDirectory: string,\n { toolsPaths, projectRoot }: { toolsPaths: (string | string[])[]; projectRoot: string },\n ): Promise<void> {\n return this._bundle(entryFile, entryFile, { outputDirectory, projectRoot }, toolsPaths);\n }\n\n async lint(entryFile: string, outputDirectory: string, toolsPaths: (string | string[])[]): Promise<void> {\n await super.lint(entryFile, outputDirectory, toolsPaths);\n }\n}\n"]}
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ var bundler = require('@mastra/deployer/bundler');
4
+
5
+ // src/mastra-deployer.ts
6
+ var BuildBundler = class extends bundler.Bundler {
7
+ constructor() {
8
+ super("Temporal");
9
+ this.platform = process.versions?.bun ? "neutral" : "node";
10
+ }
11
+ async getUserBundlerOptions(mastraEntryFile, outputDirectory) {
12
+ const bundlerOptions = await super.getUserBundlerOptions(mastraEntryFile, outputDirectory);
13
+ return {
14
+ ...bundlerOptions,
15
+ externals: true,
16
+ sourcemap: true
17
+ };
18
+ }
19
+ getEnvFiles() {
20
+ return Promise.resolve([]);
21
+ }
22
+ installDependencies() {
23
+ return Promise.resolve();
24
+ }
25
+ copyPublic() {
26
+ return Promise.resolve();
27
+ }
28
+ writePackageJson() {
29
+ return Promise.resolve();
30
+ }
31
+ async bundle(entryFile, outputDirectory, { toolsPaths, projectRoot }) {
32
+ return this._bundle(entryFile, entryFile, { outputDirectory, projectRoot }, toolsPaths);
33
+ }
34
+ async lint(entryFile, outputDirectory, toolsPaths) {
35
+ await super.lint(entryFile, outputDirectory, toolsPaths);
36
+ }
37
+ };
38
+
39
+ exports.BuildBundler = BuildBundler;
40
+ //# sourceMappingURL=mastra-deployer-YVT5GB5G.cjs.map
41
+ //# sourceMappingURL=mastra-deployer-YVT5GB5G.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mastra-deployer.ts"],"names":["Bundler"],"mappings":";;;;;AAGO,IAAM,YAAA,GAAN,cAA2BA,eAAA,CAAQ;AAAA,EACxC,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,UAAU,CAAA;AAChB,IAAA,IAAA,CAAK,QAAA,GAAW,OAAA,CAAQ,QAAA,EAAU,GAAA,GAAM,SAAA,GAAY,MAAA;AAAA,EACtD;AAAA,EAEA,MAAgB,qBAAA,CACd,eAAA,EACA,eAAA,EACyC;AACzC,IAAA,MAAM,cAAA,GAAiB,MAAM,KAAA,CAAM,qBAAA,CAAsB,iBAAiB,eAAe,CAAA;AAEzF,IAAA,OAAO;AAAA,MACL,GAAG,cAAA;AAAA,MACH,SAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW;AAAA,KACb;AAAA,EACF;AAAA,EAEA,WAAA,GAAiC;AAC/B,IAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,EAAE,CAAA;AAAA,EAC3B;AAAA,EAEU,mBAAA,GAAqC;AAC7C,IAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,EACzB;AAAA,EAEU,UAAA,GAA4B;AACpC,IAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,EACzB;AAAA,EAEA,gBAAA,GAAkC;AAChC,IAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,EACzB;AAAA,EAEA,MAAM,MAAA,CACJ,SAAA,EACA,iBACA,EAAE,UAAA,EAAY,aAAY,EACX;AACf,IAAA,OAAO,IAAA,CAAK,QAAQ,SAAA,EAAW,SAAA,EAAW,EAAE,eAAA,EAAiB,WAAA,IAAe,UAAU,CAAA;AAAA,EACxF;AAAA,EAEA,MAAM,IAAA,CAAK,SAAA,EAAmB,eAAA,EAAyB,UAAA,EAAkD;AACvG,IAAA,MAAM,KAAA,CAAM,IAAA,CAAK,SAAA,EAAW,eAAA,EAAiB,UAAU,CAAA;AAAA,EACzD;AACF","file":"mastra-deployer-YVT5GB5G.cjs","sourcesContent":["import type { Config } from '@mastra/core/mastra';\nimport { Bundler } from '@mastra/deployer/bundler';\n\nexport class BuildBundler extends Bundler {\n constructor() {\n super('Temporal');\n this.platform = process.versions?.bun ? 'neutral' : 'node';\n }\n\n protected async getUserBundlerOptions(\n mastraEntryFile: string,\n outputDirectory: string,\n ): Promise<NonNullable<Config['bundler']>> {\n const bundlerOptions = await super.getUserBundlerOptions(mastraEntryFile, outputDirectory);\n\n return {\n ...bundlerOptions,\n externals: true,\n sourcemap: true,\n };\n }\n\n getEnvFiles(): Promise<string[]> {\n return Promise.resolve([]);\n }\n\n protected installDependencies(): Promise<void> {\n return Promise.resolve();\n }\n\n protected copyPublic(): Promise<void> {\n return Promise.resolve();\n }\n\n writePackageJson(): Promise<void> {\n return Promise.resolve();\n }\n\n async bundle(\n entryFile: string,\n outputDirectory: string,\n { toolsPaths, projectRoot }: { toolsPaths: (string | string[])[]; projectRoot: string },\n ): Promise<void> {\n return this._bundle(entryFile, entryFile, { outputDirectory, projectRoot }, toolsPaths);\n }\n\n async lint(entryFile: string, outputDirectory: string, toolsPaths: (string | string[])[]): Promise<void> {\n await super.lint(entryFile, outputDirectory, toolsPaths);\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import type { Config } from '@mastra/core/mastra';
2
+ import { Bundler } from '@mastra/deployer/bundler';
3
+ export declare class BuildBundler extends Bundler {
4
+ constructor();
5
+ protected getUserBundlerOptions(mastraEntryFile: string, outputDirectory: string): Promise<NonNullable<Config['bundler']>>;
6
+ getEnvFiles(): Promise<string[]>;
7
+ protected installDependencies(): Promise<void>;
8
+ protected copyPublic(): Promise<void>;
9
+ writePackageJson(): Promise<void>;
10
+ bundle(entryFile: string, outputDirectory: string, { toolsPaths, projectRoot }: {
11
+ toolsPaths: (string | string[])[];
12
+ projectRoot: string;
13
+ }): Promise<void>;
14
+ lint(entryFile: string, outputDirectory: string, toolsPaths: (string | string[])[]): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=mastra-deployer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mastra-deployer.d.ts","sourceRoot":"","sources":["../src/mastra-deployer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,qBAAa,YAAa,SAAQ,OAAO;;cAMvB,qBAAqB,CACnC,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAU1C,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIhC,SAAS,CAAC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9C,SAAS,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE;QAAE,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GACtF,OAAO,CAAC,IAAI,CAAC;IAIV,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzG"}
@@ -0,0 +1,16 @@
1
+ import type { WorkerOptions, WorkerPlugin } from '@temporalio/worker';
2
+ export declare class MastraPlugin implements WorkerPlugin {
3
+ #private;
4
+ name: string;
5
+ constructor();
6
+ prebuild({ entryFile, projectRoot, }: {
7
+ entryFile: string;
8
+ projectRoot?: string;
9
+ }): Promise<ReturnType<typeof this.getTemporalWorkerOptions>>;
10
+ getTemporalWorkerOptions(temporalOutputDir: string): {
11
+ workflowsPath: WorkerOptions['workflowsPath'];
12
+ activities: WorkerOptions['activities'];
13
+ };
14
+ configureWorker(options: WorkerOptions): WorkerOptions;
15
+ }
16
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAsBtE,qBAAa,YAAa,YAAW,YAAY;;IAG/C,IAAI,SAAY;;IAiBV,QAAQ,CAAC,EACb,SAAS,EACT,WAA2B,GAC5B,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAoE7D,wBAAwB,CAAC,iBAAiB,EAAE,MAAM,GAAG;QAEnD,aAAa,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAC9C,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;KACzC;IAeD,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa;CAYvD"}
package/dist/run.d.ts ADDED
@@ -0,0 +1,24 @@
1
+ import type { RequestContext } from '@mastra/core/di';
2
+ import { Run } from '@mastra/core/workflows';
3
+ import type { Step, WorkflowResult, WorkflowRunStartOptions } from '@mastra/core/workflows';
4
+ import type { Client } from '@temporalio/client';
5
+ import type { TemporalEngineType } from './types.js';
6
+ type TemporalRunStartArgs<TState, TInput, TRequestContext> = {
7
+ inputData?: TInput;
8
+ initialState?: TState;
9
+ requestContext?: RequestContext<TRequestContext>;
10
+ } & WorkflowRunStartOptions;
11
+ export declare class TemporalRun<TSteps extends Step<string, any, any, any, any, any, TemporalEngineType, any>[] = Step<string, unknown, unknown, unknown, unknown, unknown, TemporalEngineType>[], TState = unknown, TInput = unknown, TOutput = unknown, TRequestContext extends Record<string, any> | unknown = unknown> extends Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext> {
12
+ private readonly client;
13
+ private readonly taskQueue;
14
+ constructor(params: ConstructorParameters<typeof Run<TemporalEngineType, TSteps, TState, TInput, TOutput, TRequestContext>>[0], temporalParams: {
15
+ client: Client;
16
+ taskQueue: string;
17
+ });
18
+ start(args?: TemporalRunStartArgs<TState, TInput, TRequestContext>): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>>;
19
+ startAsync(args?: TemporalRunStartArgs<TState, TInput, TRequestContext>): Promise<{
20
+ runId: string;
21
+ }>;
22
+ }
23
+ export {};
24
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC7C,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC5F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD,KAAK,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,IAAI;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;CAClD,GAAG,uBAAuB,CAAC;AAE5B,qBAAa,WAAW,CACtB,MAAM,SAAS,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CACpF,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,kBAAkB,CACnB,EAAE,EACH,MAAM,GAAG,OAAO,EAChB,MAAM,GAAG,OAAO,EAChB,OAAO,GAAG,OAAO,EACjB,eAAe,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,GAAG,OAAO,CAC/D,SAAQ,GAAG,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC;IACjF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAGjC,MAAM,EAAE,qBAAqB,CAAC,OAAO,GAAG,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAClH,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB;IAQG,KAAK,CAAC,IAAI,GAAE,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAM;IA0CtE,UAAU,CAAC,IAAI,GAAE,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAM;;;CAwBlF"}
@@ -0,0 +1,295 @@
1
+ import { executeChild, proxyActivities, log, sleep } from '@temporalio/workflow';
2
+
3
+ export class TemporalExecutionEngine {
4
+ startToCloseTimeout;
5
+ activityHandle;
6
+
7
+ constructor(params) {
8
+ this.startToCloseTimeout = params?.options?.startToCloseTimeout ?? '1 minute';
9
+ this.activityHandle = proxyActivities({ startToCloseTimeout: this.startToCloseTimeout });
10
+ }
11
+
12
+ async execute(params) {
13
+ let result = params.input;
14
+ const stepResults = {};
15
+
16
+ for (const entry of params.graph.steps) {
17
+ result = await this.executeEntry(entry, result, stepResults);
18
+ }
19
+
20
+ return {
21
+ status: 'success',
22
+ input: params.input,
23
+ result,
24
+ state: params.initialState,
25
+ steps: stepResults,
26
+ };
27
+ }
28
+
29
+ async executeEntry(entry, inputData, stepResults) {
30
+ switch (entry.type) {
31
+ case 'step': {
32
+ log.info('step', { stepId: entry.step.id });
33
+ const out = await this.activityHandle[entry.step.id]({ inputData });
34
+ stepResults[entry.step.id] = out;
35
+ return out;
36
+ }
37
+
38
+ case 'childWorkflow': {
39
+ log.info('childWorkflow', { workflowType: entry.workflowType });
40
+ const childResult = await executeChild(entry.workflowType, { args: [{ inputData }] });
41
+ const out = childResult?.result ?? childResult;
42
+ stepResults[entry.workflowType] = out;
43
+ return out;
44
+ }
45
+
46
+ case 'sleep': {
47
+ const duration = entry.duration ?? (entry.fn ? await this.activityHandle[entry.fn]({ inputData }) : 0);
48
+ log.info('sleep', { id: entry.id, duration });
49
+ await sleep(duration);
50
+ return inputData;
51
+ }
52
+
53
+ case 'sleepUntil': {
54
+ const date =
55
+ entry.date != null
56
+ ? new Date(entry.date)
57
+ : entry.fn
58
+ ? new Date(await this.activityHandle[entry.fn]({ inputData }))
59
+ : new Date();
60
+ log.info('sleepUntil', { id: entry.id, date: date.toISOString() });
61
+ const duration = Math.max(0, date.getTime() - Date.now());
62
+ await sleep(duration);
63
+ return inputData;
64
+ }
65
+
66
+ case 'parallel': {
67
+ log.info('parallel', { steps: entry.steps.map(s => s.step.id) });
68
+ const results = await Promise.all(entry.steps.map(s => this.activityHandle[s.step.id]({ inputData })));
69
+ const out = {};
70
+
71
+ entry.steps.forEach((s, i) => {
72
+ out[s.step.id] = results[i];
73
+ stepResults[s.step.id] = results[i];
74
+ });
75
+
76
+ return out;
77
+ }
78
+
79
+ case 'conditional': {
80
+ log.info('conditional', {
81
+ conditions: entry.serializedConditions.map(condition => condition.id),
82
+ });
83
+ const condResults = await Promise.all(
84
+ entry.serializedConditions.map(condition => this.activityHandle[condition.id]({ inputData })),
85
+ );
86
+ const out = {};
87
+
88
+ for (let i = 0; i < entry.steps.length; i++) {
89
+ if (condResults[i]) {
90
+ const stepId = entry.steps[i].step.id;
91
+ const res = await this.activityHandle[stepId]({ inputData });
92
+ out[stepId] = res;
93
+ stepResults[stepId] = res;
94
+ }
95
+ }
96
+
97
+ return out;
98
+ }
99
+
100
+ case 'loop': {
101
+ log.info('loop', { step: entry.step.id, loopType: entry.loopType });
102
+ let current = inputData;
103
+
104
+ while (true) {
105
+ current = await this.activityHandle[entry.step.id]({ inputData: current });
106
+ stepResults[entry.step.id] = current;
107
+ const shouldContinue = Boolean(
108
+ await this.activityHandle[entry.serializedCondition.id]({ inputData: current }),
109
+ );
110
+
111
+ if (entry.loopType === 'dowhile' ? !shouldContinue : shouldContinue) {
112
+ break;
113
+ }
114
+ }
115
+
116
+ return current;
117
+ }
118
+
119
+ case 'foreach': {
120
+ log.info('foreach', { step: entry.step.id, concurrency: entry.opts.concurrency });
121
+ const items = Array.isArray(inputData) ? inputData : [];
122
+ const concurrency = Math.max(1, entry.opts.concurrency ?? 1);
123
+ const results = new Array(items.length);
124
+ let index = 0;
125
+ const workers = Array.from({ length: Math.min(concurrency, items.length) }, async () => {
126
+ while (true) {
127
+ const i = index++;
128
+ if (i >= items.length) {
129
+ break;
130
+ }
131
+ results[i] = await this.activityHandle[entry.step.id]({ inputData: items[i] });
132
+ }
133
+ });
134
+
135
+ await Promise.all(workers);
136
+ stepResults[entry.step.id] = results;
137
+ return results;
138
+ }
139
+
140
+ default:
141
+ return inputData;
142
+ }
143
+ }
144
+ }
145
+
146
+ export function createWorkflow(workflowId) {
147
+ const stepFlow = [];
148
+ let autoId = 0;
149
+ const nextId = prefix => `${prefix}_${autoId++}`;
150
+
151
+ const workflow = async startArgs => {
152
+ const engine = new TemporalExecutionEngine({
153
+ options: {
154
+ startToCloseTimeout: '1 minute',
155
+ },
156
+ });
157
+
158
+ return engine.execute({
159
+ workflowId,
160
+ runId: startArgs?.runId,
161
+ resourceId: startArgs?.resourceId,
162
+ graph: {
163
+ id: workflowId,
164
+ steps: stepFlow,
165
+ },
166
+ input: startArgs?.inputData,
167
+ initialState: startArgs?.initialState,
168
+ });
169
+ };
170
+
171
+ return Object.assign(workflow, {
172
+ then(stepId) {
173
+ stepFlow.push({
174
+ type: 'step',
175
+ step: {
176
+ id: stepId,
177
+ },
178
+ });
179
+ return workflow;
180
+ },
181
+ thenWorkflow(workflowType) {
182
+ stepFlow.push({
183
+ type: 'childWorkflow',
184
+ workflowType,
185
+ });
186
+ return workflow;
187
+ },
188
+ sleep(durationOrFnId) {
189
+ if (typeof durationOrFnId === 'number') {
190
+ stepFlow.push({
191
+ type: 'sleep',
192
+ id: nextId('sleep'),
193
+ duration: durationOrFnId,
194
+ });
195
+ } else {
196
+ stepFlow.push({
197
+ type: 'sleep',
198
+ id: nextId('sleep'),
199
+ fn: durationOrFnId,
200
+ });
201
+ }
202
+ return workflow;
203
+ },
204
+ sleepUntil(dateOrFnId) {
205
+ if (dateOrFnId instanceof Date) {
206
+ stepFlow.push({
207
+ type: 'sleepUntil',
208
+ id: nextId('sleepUntil'),
209
+ date: dateOrFnId.toISOString(),
210
+ });
211
+ } else if (typeof dateOrFnId === 'number' || (typeof dateOrFnId === 'string' && !isNaN(Date.parse(dateOrFnId)))) {
212
+ stepFlow.push({
213
+ type: 'sleepUntil',
214
+ id: nextId('sleepUntil'),
215
+ date: new Date(dateOrFnId).toISOString(),
216
+ });
217
+ } else {
218
+ stepFlow.push({
219
+ type: 'sleepUntil',
220
+ id: nextId('sleepUntil'),
221
+ fn: dateOrFnId,
222
+ });
223
+ }
224
+ return workflow;
225
+ },
226
+ parallel(stepIds) {
227
+ stepFlow.push({
228
+ type: 'parallel',
229
+ steps: stepIds.map(id => ({
230
+ type: 'step',
231
+ step: {
232
+ id,
233
+ },
234
+ })),
235
+ });
236
+ return workflow;
237
+ },
238
+ branch(pairs) {
239
+ stepFlow.push({
240
+ type: 'conditional',
241
+ serializedConditions: pairs.map(pair => ({
242
+ id: pair[0],
243
+ })),
244
+ steps: pairs.map(pair => ({
245
+ type: 'step',
246
+ step: {
247
+ id: pair[1],
248
+ },
249
+ })),
250
+ });
251
+ return workflow;
252
+ },
253
+ dowhile(stepId, condId) {
254
+ stepFlow.push({
255
+ type: 'loop',
256
+ step: {
257
+ id: stepId,
258
+ },
259
+ serializedCondition: {
260
+ id: condId,
261
+ },
262
+ loopType: 'dowhile',
263
+ });
264
+ return workflow;
265
+ },
266
+ dountil(stepId, condId) {
267
+ stepFlow.push({
268
+ type: 'loop',
269
+ step: {
270
+ id: stepId,
271
+ },
272
+ serializedCondition: {
273
+ id: condId,
274
+ },
275
+ loopType: 'dountil',
276
+ });
277
+ return workflow;
278
+ },
279
+ foreach(stepId, opts) {
280
+ stepFlow.push({
281
+ type: 'foreach',
282
+ step: {
283
+ id: stepId,
284
+ },
285
+ opts: {
286
+ concurrency: opts?.concurrency ?? 1,
287
+ },
288
+ });
289
+ return workflow;
290
+ },
291
+ commit() {
292
+ return workflow;
293
+ },
294
+ });
295
+ }
@@ -0,0 +1,11 @@
1
+ export interface TemporalActivityBinding {
2
+ exportName: string;
3
+ stepId: string;
4
+ }
5
+ export interface BuildTemporalActivitiesModuleResult {
6
+ outputPath: string;
7
+ activityBindings: TemporalActivityBinding[];
8
+ }
9
+ export declare function collectTemporalActivityBindings(sourceText: string, filePath: string): TemporalActivityBinding[];
10
+ export declare function buildTemporalActivitiesModule(entryFile: string, outputDirectory: string, outputFileName: string): Promise<BuildTemporalActivitiesModuleResult>;
11
+ //# sourceMappingURL=activities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activities.d.ts","sourceRoot":"","sources":["../../src/transforms/activities.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mCAAmC;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;CAC7C;AAED,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,uBAAuB,EAAE,CAkE/G;AA6HD,wBAAsB,6BAA6B,CACjD,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,mCAAmC,CAAC,CA0T9C"}
@@ -0,0 +1,23 @@
1
+ import * as t from '@babel/types';
2
+ export declare const parserPlugins: readonly ["typescript", "jsx", "classProperties", "classPrivateProperties", "classPrivateMethods", "topLevelAwait", "importAttributes", "decorators-legacy"];
3
+ export declare function parseModule(filePath: string, sourceText?: string): t.File;
4
+ export declare function isIdentifierNamed(node: t.Node, name: string): boolean;
5
+ export declare function isTemporalHelperModule(source: string): boolean;
6
+ export declare const strippedExternalModules: Set<string>;
7
+ export declare function isStrippedExternalModule(source: string): boolean;
8
+ export declare function collectImportedNames(statement: t.ImportDeclaration): Set<string>;
9
+ export declare function nodeReferencesName(node: t.Node, names: Set<string>): boolean;
10
+ export declare function isWorkflowHelperDestructure(declaration: t.VariableDeclarator): boolean;
11
+ export declare function isCreateWorkflowCall(node: t.Node): node is t.CallExpression;
12
+ export declare function isCreateStepCall(node: t.Node): node is t.CallExpression;
13
+ export declare function getObjectPropertyName(property: t.ObjectProperty | t.ObjectMethod): string | null;
14
+ export declare function walk(node: t.Node | null | undefined, visitor: (node: t.Node) => false | void): void;
15
+ export declare function hasCreateWorkflowCall(node: t.Node): boolean;
16
+ export declare function getStepNameFromCall(node: t.CallExpression): string | null;
17
+ export declare function createExportedStepStatement(name: string, initializer: t.Expression): t.ExportNamedDeclaration;
18
+ export declare function collectInlineCreateSteps(node: t.Node, seenNames: Set<string>, statements: t.Statement[], onStep?: (exportName: string, call: t.CallExpression) => void): void;
19
+ export declare function getCreateStepId(node: t.Node | null | undefined): string | null;
20
+ export declare function shouldCountIdentifierAsReference(parent: t.Node | null, key: string | null): boolean;
21
+ export declare function collectRuntimeReferencedIdentifiers(node: t.Node): Set<string>;
22
+ export declare function pruneUnusedTopLevelBindings(statements: t.Statement[]): t.Statement[];
23
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/transforms/shared.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC,eAAO,MAAM,aAAa,8JAShB,CAAC;AACX,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,CAUzE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAErE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,eAAO,MAAM,uBAAuB,aAA2D,CAAC;AAEhG,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,CAAC,CAAC,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAC,CAgBhF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAW5E;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,CAAC,CAAC,kBAAkB,GAAG,OAAO,CAYtF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,cAAc,CAE3E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,cAAc,CAEvE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,YAAY,GAAG,MAAM,GAAG,IAAI,CAchG;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,IAAI,CA2BnG;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,OAAO,CAW3D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,GAAG,MAAM,GAAG,IAAI,CAUzE;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,sBAAsB,CAI7G;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,CAAC,CAAC,IAAI,EACZ,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EACtB,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,EACzB,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,cAAc,KAAK,IAAI,GAC5D,IAAI,CAgBN;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAwB9E;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CA+DnG;AAED,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAsC7E;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,CA4IpF"}