terse-cli 0.4.7 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/commands/deploy.d.ts.map +1 -1
  2. package/dist/commands/deploy.js +3 -2
  3. package/dist/commands/deploy.js.map +1 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/providers/typescript/TypeScriptProvider.d.ts +2 -0
  7. package/dist/providers/typescript/TypeScriptProvider.d.ts.map +1 -1
  8. package/dist/providers/typescript/TypeScriptProvider.js +32 -13
  9. package/dist/providers/typescript/TypeScriptProvider.js.map +1 -1
  10. package/dist/providers/typescript/jobMacro.d.ts +1 -2
  11. package/dist/providers/typescript/jobMacro.d.ts.map +1 -1
  12. package/dist/providers/typescript/jobMacro.js +69 -111
  13. package/dist/providers/typescript/jobMacro.js.map +1 -1
  14. package/dist/providers/typescript/jobSources.d.ts +7 -0
  15. package/dist/providers/typescript/jobSources.d.ts.map +1 -0
  16. package/dist/providers/typescript/jobSources.js +46 -0
  17. package/dist/providers/typescript/jobSources.js.map +1 -0
  18. package/dist/providers/typescript/runtimes/durableJobRuntime.d.ts.map +1 -1
  19. package/dist/providers/typescript/runtimes/durableJobRuntime.js +98 -54
  20. package/dist/providers/typescript/runtimes/durableJobRuntime.js.map +1 -1
  21. package/dist/providers/typescript/stepMacro.d.ts +2 -29
  22. package/dist/providers/typescript/stepMacro.d.ts.map +1 -1
  23. package/dist/providers/typescript/stepMacro.js +29 -120
  24. package/dist/providers/typescript/stepMacro.js.map +1 -1
  25. package/dist/providers/typescript/terseWorkflow.d.ts +8 -0
  26. package/dist/providers/typescript/terseWorkflow.d.ts.map +1 -0
  27. package/dist/providers/typescript/terseWorkflow.js +8 -0
  28. package/dist/providers/typescript/terseWorkflow.js.map +1 -0
  29. package/package.json +6 -8
  30. package/templates/typescript/init/gitignore.hbs +1 -0
  31. package/templates/typescript/init/package.json.hbs +0 -1
  32. package/dist/providers/typescript/durableRuntime.d.ts +0 -20
  33. package/dist/providers/typescript/durableRuntime.d.ts.map +0 -1
  34. package/dist/providers/typescript/durableRuntime.js +0 -211
  35. package/dist/providers/typescript/durableRuntime.js.map +0 -1
  36. package/dist/providers/typescript/rewindRun.d.ts +0 -9
  37. package/dist/providers/typescript/rewindRun.d.ts.map +0 -1
  38. package/dist/providers/typescript/rewindRun.js +0 -111
  39. package/dist/providers/typescript/rewindRun.js.map +0 -1
  40. package/dist/providers/typescript/terseWorkflowBuilder.d.ts +0 -8
  41. package/dist/providers/typescript/terseWorkflowBuilder.d.ts.map +0 -1
  42. package/dist/providers/typescript/terseWorkflowBuilder.js +0 -70
  43. package/dist/providers/typescript/terseWorkflowBuilder.js.map +0 -1
  44. package/dist/providers/typescript/workflowCoreVersion.d.ts +0 -2
  45. package/dist/providers/typescript/workflowCoreVersion.d.ts.map +0 -1
  46. package/dist/providers/typescript/workflowCoreVersion.js +0 -7
  47. package/dist/providers/typescript/workflowCoreVersion.js.map +0 -1
  48. package/dist/providers/typescript/workflowShim.d.ts +0 -2
  49. package/dist/providers/typescript/workflowShim.d.ts.map +0 -1
  50. package/dist/providers/typescript/workflowShim.js +0 -51
  51. package/dist/providers/typescript/workflowShim.js.map +0 -1
  52. package/dist/terseWorld.d.ts +0 -4
  53. package/dist/terseWorld.d.ts.map +0 -1
  54. package/dist/terseWorld.js +0 -46
  55. package/dist/terseWorld.js.map +0 -1
  56. package/templates/typescript/workflow-shim/api.js +0 -5
  57. package/templates/typescript/workflow-shim/index.js +0 -2
  58. package/templates/typescript/workflow-shim/internal/builtins.js +0 -83
  59. package/templates/typescript/workflow-shim/internal/class-serialization.js +0 -1
  60. package/templates/typescript/workflow-shim/runtime.js +0 -1
  61. package/templates/typescript/workflow-shim/stdlib.js +0 -18
  62. package/templates/typescript/workflow-shim/workflow.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"jobMacro.js","sourceRoot":"","sources":["../../../src/providers/typescript/jobMacro.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jobMacro.js","sourceRoot":"","sources":["../../../src/providers/typescript/jobMacro.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type PrepareJobSourcesParams = {
2
+ readonly cwd: string;
3
+ readonly entryFile: string;
4
+ };
5
+ /** Copies and macro-transforms project sources for direct loading through tsx. */
6
+ export declare function prepareJobSources({ cwd, entryFile }: PrepareJobSourcesParams): string;
7
+ //# sourceMappingURL=jobSources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobSources.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/jobSources.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,uBAAuB,GAAG;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,uBAAuB,GAAG,MAAM,CAiBrF"}
@@ -0,0 +1,46 @@
1
+ import fs from "node:fs";
2
+ import { createRequire } from "node:module";
3
+ import path from "node:path";
4
+ import { transformJobSource } from "./jobMacro.js";
5
+ /** Copies and macro-transforms project sources for direct loading through tsx. */
6
+ export function prepareJobSources({ cwd, entryFile }) {
7
+ const sourceDirectory = path.join(cwd, "src");
8
+ const runtimeDirectory = path.join(cwd, ".terse", "runtime");
9
+ const preparedSourceDirectory = path.join(runtimeDirectory, "src");
10
+ fs.rmSync(runtimeDirectory, { recursive: true, force: true });
11
+ fs.mkdirSync(runtimeDirectory, { recursive: true });
12
+ fs.cpSync(sourceDirectory, preparedSourceDirectory, { recursive: true });
13
+ const ts = loadTypescript(cwd);
14
+ for (const file of findSourceFiles(preparedSourceDirectory)) {
15
+ const source = fs.readFileSync(file, "utf8");
16
+ const transformed = transformJobSource(ts, source, path.relative(cwd, file));
17
+ if (transformed.code !== source)
18
+ fs.writeFileSync(file, transformed.code);
19
+ }
20
+ return path.join(runtimeDirectory, entryFile);
21
+ }
22
+ function findSourceFiles(directory) {
23
+ const files = [];
24
+ for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
25
+ const file = path.join(directory, entry.name);
26
+ if (entry.isDirectory())
27
+ files.push(...findSourceFiles(file));
28
+ else if (/\.(?:ts|tsx|mts|cts)$/.test(entry.name))
29
+ files.push(file);
30
+ }
31
+ return files;
32
+ }
33
+ function loadTypescript(cwd) {
34
+ try {
35
+ return createRequire(path.join(cwd, "package.json"))("typescript");
36
+ }
37
+ catch {
38
+ try {
39
+ return createRequire(import.meta.url)("typescript");
40
+ }
41
+ catch {
42
+ throw new Error("Durable execution needs TypeScript in your project. Run: npm install --save-dev typescript");
43
+ }
44
+ }
45
+ }
46
+ //# sourceMappingURL=jobSources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobSources.js","sourceRoot":"","sources":["../../../src/providers/typescript/jobSources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAOlD,kFAAkF;AAClF,MAAM,UAAU,iBAAiB,CAAC,EAAE,GAAG,EAAE,SAAS,EAA2B;IACzE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;IAC5D,MAAM,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;IAElE,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7D,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACnD,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,uBAAuB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAExE,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;IAC9B,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC5C,MAAM,WAAW,GAAG,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;QAC5E,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM;YAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;IAC7E,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB;IACtC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC7C,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAA;aACxD,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvE,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IAC/B,IAAI,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IACtE,CAAC;IAAC,MAAM,CAAC;QACL,IAAI,CAAC;YACD,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAA;QACvD,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAA;QACjH,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"durableJobRuntime.d.ts","sourceRoot":"","sources":["../../../../src/providers/typescript/runtimes/durableJobRuntime.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,UAAU,EAAkE,MAAM,iBAAiB,CAAA;AAGjH,eAAO,MAAM,iBAAiB,EAAE,UAsC/B,CAAA"}
1
+ {"version":3,"file":"durableJobRuntime.d.ts","sourceRoot":"","sources":["../../../../src/providers/typescript/runtimes/durableJobRuntime.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,UAAU,EAAkE,MAAM,iBAAiB,CAAA;AAGjH,eAAO,MAAM,iBAAiB,EAAE,UA0C/B,CAAA"}
@@ -1,15 +1,20 @@
1
1
  import chalk from "chalk";
2
+ import { FileJournalStore, Runtime } from "little-durable";
2
3
  import path from "node:path";
3
- import { readRuntimeKeyOrBail } from "../../../api.js";
4
+ import { __fetchRegisteredDurableWorkflow, __inputRequestHook, fetchRegisteredJobs } from "terse-sdk";
5
+ import { runWithJobContext } from "terse-sdk/dist/runIdentity/jobContextStore.js";
6
+ import { ApiRoutes } from "terse-types";
7
+ import { fetchWithAuth, readRuntimeKeyOrBail } from "../../../api.js";
4
8
  import { CliError } from "../../../cliError.js";
5
9
  import { BACKEND_URL } from "../../../config.js";
6
- import { isCliRunCommandEnabled } from "../../../env.js";
7
- import { closeDurableRuntime, getDurableRuntime } from "../durableRuntime.js";
8
- import { readRunStatus, resolveWorkflowRunId, rewindFailedRun } from "../rewindRun.js";
10
+ import { readProjectConfig } from "../../../projectConfig.js";
11
+ import { shouldRunTerseWorkflow } from "../terseWorkflow.js";
9
12
  import { formatErrorDetail } from "./JobRuntime.js";
10
13
  import { withSession } from "./session.js";
11
14
  export const durableJobRuntime = {
12
15
  async executeJob(job, runId, event, opts) {
16
+ if (!runId)
17
+ throw new CliError("durable_run_id_missing", "Durable execution requires a run ID.");
13
18
  const isVerbose = opts?.verbose ?? true;
14
19
  const pauseUiAround = opts?.pauseUiAround ?? (async (fn) => fn());
15
20
  const apiKey = readRuntimeKeyOrBail();
@@ -17,12 +22,17 @@ export const durableJobRuntime = {
17
22
  await withSession(apiKey, isVerbose, pauseUiAround, async (sessionId) => {
18
23
  if (isVerbose)
19
24
  console.log(chalk.cyan(` Job "${job.name}" started`));
20
- const rt = await getDurableRuntime(process.cwd());
21
- await rt.start();
22
- const dispatched = await rt.dispatchJob(job.name, { sessionId, runId, apiBaseUrl: BACKEND_URL }, event);
23
- // We can't await in the Modal Sandbox. This polls, and a blocked run will never exit.
24
- if (!isCliRunCommandEnabled())
25
- await dispatched.awaitResult();
25
+ const journalStore = createJournalStore();
26
+ const runtime = new Runtime({ journalStore });
27
+ const context = jobContext({ sessionId, runId, job, projectId: opts?.projectId });
28
+ const shouldRun = await shouldRunTerseWorkflow({ job, event, context });
29
+ if (!shouldRun)
30
+ return;
31
+ const workflow = __fetchRegisteredDurableWorkflow(job.name);
32
+ if (!workflow)
33
+ throw new Error(`No durable workflow was registered for job "${job.name}".`);
34
+ const outcome = await runWithJobContext(context, () => runtime.start(workflow, { runId, input: event }).waitForOutcome());
35
+ await handleOutcome({ runId, outcome, apiKey });
26
36
  }, opts?.onSessionEvent, opts?.session);
27
37
  }
28
38
  catch (error) {
@@ -30,10 +40,6 @@ export const durableJobRuntime = {
30
40
  throw error;
31
41
  throw new CliError("job_execution_failed", `Job "${job.name}" threw an error.`, { detail: formatErrorDetail(error) });
32
42
  }
33
- finally {
34
- if (!isCliRunCommandEnabled())
35
- await closeDurableRuntime();
36
- }
37
43
  },
38
44
  async resumeRun(runId, opts) {
39
45
  return driveResume(runId, opts);
@@ -46,31 +52,40 @@ async function driveResume(runId, opts, input) {
46
52
  const isVerbose = opts?.verbose ?? true;
47
53
  const pauseUiAround = opts?.pauseUiAround ?? (async (fn) => fn());
48
54
  const apiKey = readRuntimeKeyOrBail();
49
- const dataDir = resolveDataDir();
50
- const workflowRunId = resolveWorkflowRunId(dataDir, runId);
51
- const status = readRunStatus(dataDir, workflowRunId);
52
55
  try {
53
- await withSession(apiKey, isVerbose, pauseUiAround, async () => {
54
- if (status === "failed") {
55
- const { rewoundStepId } = rewindFailedRun(dataDir, workflowRunId);
56
- if (isVerbose)
57
- console.log(chalk.yellow(` Re-driving failed run ${workflowRunId}${rewoundStepId ? " from the failed step" : ""}; completed steps replay from the journal`));
58
- }
59
- else if (isVerbose) {
60
- console.log(chalk.cyan(` Resuming run ${workflowRunId}`));
61
- }
62
- const rt = await getDurableRuntime(process.cwd());
63
- if (input) {
64
- await deliverInput(rt, input, isVerbose);
65
- }
66
- else {
67
- await rt.start();
68
- }
69
- if (isCliRunCommandEnabled())
70
- return;
71
- await rt.awaitRunResult(workflowRunId);
56
+ await withSession(apiKey, isVerbose, pauseUiAround, async (sessionId) => {
57
+ const journalStore = createJournalStore();
58
+ const runtime = new Runtime({ journalStore });
59
+ const run = await runtime.getRun({ runId });
60
+ const job = fetchRegisteredJobs().get(run.workflowName);
61
+ if (!job)
62
+ throw new Error(`No registered job matches durable workflow "${run.workflowName}".`);
63
+ const workflow = __fetchRegisteredDurableWorkflow(job.name);
64
+ if (!workflow)
65
+ throw new Error(`No durable workflow was registered for job "${job.name}".`);
72
66
  if (isVerbose)
73
- console.log(chalk.green(` Run ${workflowRunId} completed`));
67
+ console.log(chalk.cyan(` Resuming run ${runId}`));
68
+ const context = jobContext({ sessionId, runId, job, projectId: readProjectConfig()?.projectId });
69
+ const outcome = await runWithJobContext(context, async () => {
70
+ const suspension = await runtime.getSuspension({ runId });
71
+ if (input) {
72
+ if (!suspension || suspension.request.name !== __inputRequestHook.name) {
73
+ throw new Error(`No unresolved input wait with token "${input.token}" exists in run "${runId}".`);
74
+ }
75
+ const request = __inputRequestHook.request.safeParse(suspension.request.payload);
76
+ if (!request.success || request.data.token !== input.token) {
77
+ throw new Error(`No unresolved input wait with token "${input.token}" exists in run "${runId}".`);
78
+ }
79
+ const resolution = __inputRequestHook.resolution.parse(input.payload);
80
+ return runtime.resumeHook(__inputRequestHook, { runId, workflow, waitId: suspension.waitId, resolution }).waitForOutcome();
81
+ }
82
+ return suspension?.request.name === "timer"
83
+ ? runtime.resumeTimer(workflow, { runId, waitId: suspension.waitId }).waitForOutcome()
84
+ : runtime.resume(workflow, { runId }).waitForOutcome();
85
+ });
86
+ await handleOutcome({ runId, outcome, apiKey });
87
+ if (isVerbose && outcome.status === "completed")
88
+ console.log(chalk.green(` Run ${runId} completed`));
74
89
  });
75
90
  }
76
91
  catch (error) {
@@ -78,26 +93,55 @@ async function driveResume(runId, opts, input) {
78
93
  throw error;
79
94
  throw new CliError("run_resume_failed", `Run "${runId}" could not be resumed.`, { detail: formatErrorDetail(error) });
80
95
  }
81
- finally {
82
- if (!isCliRunCommandEnabled())
83
- await closeDurableRuntime();
84
- }
85
96
  }
86
- function resolveDataDir() {
87
- return process.env.WORKFLOW_LOCAL_DATA_DIR ?? path.join(process.cwd(), ".terse", "data");
97
+ function createJournalStore() {
98
+ return new FileJournalStore(resolveDataDirectory());
88
99
  }
89
- // Input resumes skip start(): resumeHook re-queues the run itself, and start()'s
90
- // crash-recovery wake would add a concurrent second replay.
91
- async function deliverInput(rt, input, isVerbose) {
92
- try {
93
- await rt.deliverInput(input.token, input.payload);
94
- if (isVerbose)
95
- console.log(chalk.cyan(` Delivered input response to hook ${input.token}`));
100
+ function resolveDataDirectory() {
101
+ return process.env.TERSE_JOURNAL_ROOT ?? path.join(process.cwd(), ".terse", "data");
102
+ }
103
+ function jobContext({ sessionId, runId, job, projectId }) {
104
+ return {
105
+ sessionId,
106
+ runId,
107
+ apiBaseUrl: BACKEND_URL,
108
+ jobName: job.name,
109
+ projectId
110
+ };
111
+ }
112
+ async function handleOutcome({ runId, outcome, apiKey }) {
113
+ if (outcome.status === "completed")
114
+ return;
115
+ if (outcome.status === "failed") {
116
+ const error = new Error(outcome.error.message);
117
+ error.name = outcome.error.name;
118
+ throw error;
96
119
  }
97
- catch (error) {
98
- // Stale token: recovery replay instead; the run re-parks on its real wait.
99
- console.log(chalk.yellow(` Could not deliver input response to hook ${input.token}: ${formatErrorDetail(error)}`));
100
- await rt.start();
120
+ const body = suspendRequest({ runId, suspension: outcome.suspension });
121
+ await fetchWithAuth(ApiRoutes.SDK.SUSPEND, apiKey, body, "POST");
122
+ }
123
+ function suspendRequest({ runId, suspension }) {
124
+ const payload = suspension.request.payload;
125
+ if (suspension.request.name === "timer") {
126
+ if (typeof payload !== "object" || payload === null || Array.isArray(payload) || typeof payload.wakeAt !== "string") {
127
+ throw new Error("Timer suspension has an invalid wakeAt.");
128
+ }
129
+ return {
130
+ runId,
131
+ kind: "timer",
132
+ delaySeconds: Math.max(1, Math.ceil((Date.parse(payload.wakeAt) - Date.now()) / 1_000)),
133
+ idempotencyKey: suspension.waitId
134
+ };
135
+ }
136
+ if (suspension.request.name === __inputRequestHook.name) {
137
+ const input = __inputRequestHook.request.parse(payload);
138
+ return {
139
+ runId,
140
+ kind: "input",
141
+ hookToken: input.token,
142
+ idempotencyKey: suspension.waitId
143
+ };
101
144
  }
145
+ throw new Error(`Terse does not know how to park hook "${suspension.request.name}".`);
102
146
  }
103
147
  //# sourceMappingURL=durableJobRuntime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"durableJobRuntime.js","sourceRoot":"","sources":["../../../../src/providers/typescript/runtimes/durableJobRuntime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"durableJobRuntime.js","sourceRoot":"","sources":["../../../../src/providers/typescript/runtimes/durableJobRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAE1D,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,gCAAgC,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAErG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAA;AAEjF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,EAAgE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,CAAC,MAAM,iBAAiB,GAAe;IACzC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI;QACpC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,QAAQ,CAAC,wBAAwB,EAAE,sCAAsC,CAAC,CAAA;QAEhG,MAAM,SAAS,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,CAAA;QACvC,MAAM,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAA;QAErC,IAAI,CAAC;YACD,MAAM,WAAW,CACb,MAAM,EACN,SAAS,EACT,aAAa,EACb,KAAK,EAAC,SAAS,EAAC,EAAE;gBACd,IAAI,SAAS;oBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAA;gBACrE,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAA;gBACzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;gBAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;gBACjF,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;gBACvE,IAAI,CAAC,SAAS;oBAAE,OAAM;gBACtB,MAAM,QAAQ,GAAG,gCAAgC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC3D,IAAI,CAAC,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,GAAG,CAAC,IAAI,IAAI,CAAC,CAAA;gBAE3F,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAA;gBACzH,MAAM,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;YACnD,CAAC,EACD,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,OAAO,CAChB,CAAA;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,YAAY,QAAQ;gBAAE,MAAM,KAAK,CAAA;YAC1C,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,QAAQ,GAAG,CAAC,IAAI,mBAAmB,EAAE,EAAE,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACzH,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI;QACvB,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI;QACvC,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAC1C,CAAC;CACJ,CAAA;AAED,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,IAAkC,EAAE,KAAuB;IACjG,MAAM,SAAS,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,CAAA;IACvC,MAAM,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAC/D,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAA;IAErC,IAAI,CAAC;QACD,MAAM,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAC,SAAS,EAAC,EAAE;YAClE,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAA;YACzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;YAC7C,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YAC3C,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;YACvD,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,GAAG,CAAC,YAAY,IAAI,CAAC,CAAA;YAC9F,MAAM,QAAQ,GAAG,gCAAgC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC3D,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,GAAG,CAAC,IAAI,IAAI,CAAC,CAAA;YAE3F,IAAI,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC,CAAA;YACjE,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;YAChG,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,KAAK,IAA6B,EAAE;gBACjF,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;gBAEzD,IAAI,KAAK,EAAE,CAAC;oBACR,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,EAAE,CAAC;wBACrE,MAAM,IAAI,KAAK,CAAC,wCAAwC,KAAK,CAAC,KAAK,oBAAoB,KAAK,IAAI,CAAC,CAAA;oBACrG,CAAC;oBACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;oBAChF,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;wBACzD,MAAM,IAAI,KAAK,CAAC,wCAAwC,KAAK,CAAC,KAAK,oBAAoB,KAAK,IAAI,CAAC,CAAA;oBACrG,CAAC;oBACD,MAAM,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;oBACrE,OAAO,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,cAAc,EAAE,CAAA;gBAC9H,CAAC;gBAED,OAAO,UAAU,EAAE,OAAO,CAAC,IAAI,KAAK,OAAO;oBACvC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,cAAc,EAAE;oBACtF,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,CAAA;YAC9D,CAAC,CAAC,CAAA;YAEF,MAAM,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;YAE/C,IAAI,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAA;QACzG,CAAC,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,KAAK,YAAY,QAAQ;YAAE,MAAM,KAAK,CAAA;QAC1C,MAAM,IAAI,QAAQ,CAAC,mBAAmB,EAAE,QAAQ,KAAK,yBAAyB,EAAE,EAAE,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACzH,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB;IACvB,OAAO,IAAI,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,CAAA;AACvD,CAAC;AAED,SAAS,oBAAoB;IACzB,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;AACvF,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAsF;IACxI,OAAO;QACH,SAAS;QACT,KAAK;QACL,UAAU,EAAE,WAAW;QACvB,OAAO,EAAE,GAAG,CAAC,IAAI;QACjB,SAAS;KACZ,CAAA;AACL,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAA8D;IAC/G,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW;QAAE,OAAM;IAC1C,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC9C,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAA;QAC/B,MAAM,KAAK,CAAA;IACf,CAAC;IAED,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IACtE,MAAM,aAAa,CAA4B,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AAC/F,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,KAAK,EAAE,UAAU,EAA6C;IACpF,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAA;IAC1C,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACtC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAClH,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC9D,CAAC;QACD,OAAO;YACH,KAAK;YACL,IAAI,EAAE,OAAO;YACb,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;YACvF,cAAc,EAAE,UAAU,CAAC,MAAM;SACpC,CAAA;IACL,CAAC;IAED,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACvD,OAAO;YACH,KAAK;YACL,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,KAAK,CAAC,KAAK;YACtB,cAAc,EAAE,UAAU,CAAC,MAAM;SACpC,CAAA;IACL,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,yCAAyC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAA;AACzF,CAAC"}
@@ -1,37 +1,10 @@
1
1
  import type TS from "typescript";
2
- export type StepDef = {
3
- name: string;
4
- def: string;
5
- };
6
2
  export type StepEdit = {
7
3
  start: number;
8
4
  end: number;
9
5
  text: string;
10
6
  };
11
- export declare enum StepCallKind {
12
- JobStep = "jobStep",
13
- Step = "step"
14
- }
15
- export type StepCall = {
16
- kind: StepCallKind.Step;
17
- call: TS.CallExpression;
18
- } | {
19
- kind: StepCallKind.JobStep;
20
- call: TS.CallExpression;
21
- config: TS.ObjectLiteralExpression;
22
- };
23
7
  export declare function findStepImportName(ts: typeof TS, sf: TS.SourceFile): string | null;
24
- export declare function matchStepCall(ts: typeof TS, node: TS.Node, stepName: string | null): StepCall | null;
25
- export declare function transformStep(ts: typeof TS, sf: TS.SourceFile, step: Extract<StepCall, {
26
- kind: StepCallKind.Step;
27
- }>, fileName: string, index: number, stepName: string | null): {
28
- stepDef: StepDef;
29
- edit: StepEdit;
30
- };
31
- export declare function transformJobStep(ts: typeof TS, sf: TS.SourceFile, step: Extract<StepCall, {
32
- kind: StepCallKind.JobStep;
33
- }>, fileName: string, index: number, stepName: string | null): {
34
- stepDef: StepDef;
35
- edit: StepEdit;
36
- } | null;
8
+ export declare function matchStepCall(ts: typeof TS, node: TS.Node, stepName: string | null): TS.CallExpression | null;
9
+ export declare function transformStep(ts: typeof TS, sf: TS.SourceFile, call: TS.CallExpression, fileName: string, index: number): StepEdit;
37
10
  //# sourceMappingURL=stepMacro.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stepMacro.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/stepMacro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAA;AAEhC,MAAM,MAAM,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AACnD,MAAM,MAAM,QAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnE,oBAAY,YAAY;IACpB,OAAO,YAAY;IACnB,IAAI,SAAS;CAChB;AAED,MAAM,MAAM,QAAQ,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;IAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;IAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC;IAAC,MAAM,EAAE,EAAE,CAAC,uBAAuB,CAAA;CAAE,CAAA;AAIzK,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CASlF;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,CASpG;AAOD,wBAAgB,aAAa,CACzB,EAAE,EAAE,OAAO,EAAE,EACb,EAAE,EAAE,EAAE,CAAC,UAAU,EACjB,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAA;CAAE,CAAC,EACpD,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,IAAI,GACxB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CA2CtC;AAID,wBAAgB,gBAAgB,CAC5B,EAAE,EAAE,OAAO,EAAE,EACb,EAAE,EAAE,EAAE,CAAC,UAAU,EACjB,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAA;CAAE,CAAC,EACvD,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,IAAI,GACxB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG,IAAI,CAe7C"}
1
+ {"version":3,"file":"stepMacro.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/stepMacro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAA;AAEhC,MAAM,MAAM,QAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnE,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CASlF;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC,cAAc,GAAG,IAAI,CAG7G;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAkClI"}
@@ -1,10 +1,3 @@
1
- export var StepCallKind;
2
- (function (StepCallKind) {
3
- StepCallKind["JobStep"] = "jobStep";
4
- StepCallKind["Step"] = "step";
5
- })(StepCallKind || (StepCallKind = {}));
6
- // The local binding of `import { step } from "terse-sdk"` (aliases included), so plain
7
- // `step` stays a safe name: user-defined step() functions never match the macro.
8
1
  export function findStepImportName(ts, sf) {
9
2
  for (const statement of sf.statements) {
10
3
  if (!ts.isImportDeclaration(statement) || !ts.isStringLiteralLike(statement.moduleSpecifier) || statement.moduleSpecifier.text !== "terse-sdk")
@@ -12,122 +5,79 @@ export function findStepImportName(ts, sf) {
12
5
  const named = statement.importClause?.namedBindings;
13
6
  if (!named || !ts.isNamedImports(named))
14
7
  continue;
15
- const element = named.elements.find(el => (el.propertyName ?? el.name).text === "step");
8
+ const element = named.elements.find(candidate => (candidate.propertyName ?? candidate.name).text === "step");
16
9
  if (element)
17
10
  return element.name.text;
18
11
  }
19
12
  return null;
20
13
  }
21
14
  export function matchStepCall(ts, node, stepName) {
22
- if (!ts.isCallExpression(node) || !ts.isIdentifier(node.expression))
15
+ if (!stepName || !ts.isCallExpression(node) || !ts.isIdentifier(node.expression) || node.expression.text !== stepName)
23
16
  return null;
24
- if (stepName !== null && node.expression.text === stepName) {
25
- return { kind: StepCallKind.Step, call: node };
26
- }
27
- if (node.expression.text === "jobStep" && node.arguments.length > 0 && ts.isObjectLiteralExpression(node.arguments[0])) {
28
- return { kind: StepCallKind.JobStep, call: node, config: node.arguments[0] };
29
- }
30
- return null;
17
+ return node;
31
18
  }
32
- // MARK: step
33
- // `step(client.method(args))` hoists only the callee into a "use step" function.
34
- // The argument expressions stay at the call site, where they evaluate in workflow
35
- // scope and cross the step boundary as serialized step arguments.
36
- export function transformStep(ts, sf, step, fileName, index, stepName) {
37
- const { call } = step;
19
+ export function transformStep(ts, sf, call, fileName, index) {
38
20
  const inner = call.arguments.length === 1 ? call.arguments[0] : undefined;
39
- if (inner === undefined)
21
+ if (!inner)
40
22
  throw stepMacroError(sf, call, fileName, "step() takes exactly one argument: a direct call, e.g. step(client.method(args)).");
41
- if (!ts.isCallExpression(inner))
23
+ if (!ts.isCallExpression(inner)) {
42
24
  throw stepMacroError(sf, call, fileName, "step() must wrap a direct call, e.g. step(client.method(args)). Storing the promise in a variable first is not supported.");
43
- if (containsStepCall(ts, inner, stepName))
25
+ }
26
+ if (containsStepCall(ts, inner, ts.isIdentifier(call.expression) ? call.expression.text : null)) {
44
27
  throw stepMacroError(sf, call, fileName, "Steps cannot be nested inside a step() call. Await each step separately.");
28
+ }
45
29
  const calleeNames = [];
46
- let optionalChain = false;
47
30
  let calleeRoot = inner.expression;
48
31
  while (ts.isPropertyAccessExpression(calleeRoot)) {
49
32
  calleeNames.unshift(calleeRoot.name.text);
50
- if (calleeRoot.questionDotToken)
51
- optionalChain = true;
52
33
  calleeRoot = calleeRoot.expression;
53
34
  }
54
35
  if (!ts.isIdentifier(calleeRoot)) {
55
36
  throw stepMacroError(sf, call, fileName, "step() requires a plain property path like step(client.method(args)). Computed access and intermediate calls are not supported.");
56
37
  }
57
38
  calleeNames.unshift(calleeRoot.text);
58
- if (isDeclaredInEnclosingScopes(ts, call, calleeRoot.text)) {
59
- throw stepMacroError(sf, call, fileName, `\`${calleeRoot.text}\` is declared inside the handler. The step runs in a separate bundle, so move \`${calleeRoot.text}\` to module scope.`);
60
- }
61
- for (const arg of inner.arguments) {
62
- const fnArg = findLiteralFunctionArg(ts, arg);
63
- if (fnArg) {
64
- throw stepMacroError(sf, fnArg, fileName, "A function passed as a step argument cannot cross the step boundary, because step arguments are serialized into the journal. Move the whole call into a module-scope helper so the callback stays inside the step, then wrap the helper call in step().");
39
+ for (const argument of inner.arguments) {
40
+ const functionValue = findLiteralFunctionArgument(ts, argument);
41
+ if (functionValue) {
42
+ throw stepMacroError(sf, functionValue, fileName, "A function cannot cross the durable step input boundary. Move the callback inside a helper and wrap that helper call in step().");
65
43
  }
66
44
  }
67
- // `typeof` type queries reject `?.`, so optional-chain callees fall back to untyped args.
68
- const calleeText = inner.expression.getText(sf);
69
- const paramsType = optionalChain ? "" : `: Parameters<typeof ${calleeText}>`;
70
- const returnType = optionalChain ? "" : `: Promise<Awaited<ReturnType<typeof ${calleeText}>>>`;
71
- const name = `terseStep_${calleeNames.join("_")}_${index}`;
72
- const def = `export async function ${name}(...__terseArgs${paramsType})${returnType} {\n` + ` "use step"\n` + ` return await ${calleeText}(...__terseArgs)\n` + `}`;
73
- const text = `${name}(${inner.arguments.map(a => a.getText(sf)).join(", ")})`;
74
- return { stepDef: { name, def }, edit: { start: call.getStart(sf), end: call.getEnd(), text } };
75
- }
76
- // MARK: jobStep
77
- export function transformJobStep(ts, sf, step, fileName, index, stepName) {
78
- const isProp = (p, key) => ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === key;
79
- const { call, config } = step;
80
- const inputProp = config.properties.find(p => isProp(p, "input"));
81
- const inputSchemaProp = config.properties.find(p => isProp(p, "inputSchema"));
82
- const outputSchemaProp = config.properties.find(p => isProp(p, "outputSchema"));
83
- const run = config.properties.find(p => isProp(p, "run"))?.initializer;
84
- if (!run || !(ts.isArrowFunction(run) || ts.isFunctionExpression(run)))
85
- return null;
86
- if (containsStepCall(ts, config, stepName))
87
- throw stepMacroError(sf, call, fileName, "Steps cannot be nested inside a jobStep(). Await each step separately.");
88
- const name = `terseStep_${index}`;
89
- const def = stepFunctionText(ts, sf, name, run, inputSchemaProp?.initializer, outputSchemaProp?.initializer);
90
- const text = `${name}(${inputProp ? inputProp.initializer.getText(sf) : ""})`;
91
- return { stepDef: { name, def }, edit: { start: call.getStart(sf), end: call.getEnd(), text } };
45
+ const callee = inner.expression.getText(sf);
46
+ const args = inner.arguments.map(argument => argument.getText(sf)).join(", ");
47
+ const name = `${calleeNames.join(".")}:${index}`;
48
+ const text = `__runDurableStep({ name: "${name}", input: [${args}] as const, run: async (__terseArgs) => await ${callee}(...__terseArgs) })`;
49
+ return { start: call.getStart(sf), end: call.getEnd(), text };
92
50
  }
93
- function stepFunctionText(ts, sf, name, run, inputSchema, outputSchema) {
94
- const param = inputSchema ? "__terseArgs" : "";
95
- const parseInput = inputSchema ? ` const __terseInput = (${inputSchema.getText(sf)}).parse(__terseArgs)\n` : "";
96
- const callRun = inputSchema ? `(${run.getText(sf)})(__terseInput)` : `(${run.getText(sf)})()`;
97
- const validated = outputSchema ? `(${outputSchema.getText(sf)}).parse(__terseResult)` : `__terseResult`;
98
- return `export async function ${name}(${param}) {\n` + ` "use step"\n` + parseInput + ` const __terseResult = await ${callRun}\n` + ` return ${validated}\n` + `}`;
51
+ function containsStepCall(ts, node, stepName) {
52
+ const visit = (candidate) => {
53
+ if (matchStepCall(ts, candidate, stepName))
54
+ return true;
55
+ return ts.forEachChild(candidate, visit);
56
+ };
57
+ return ts.forEachChild(node, visit) ?? false;
99
58
  }
100
- // MARK: Helpers
101
- // Finds a function expression that ends up inside the evaluated argument value,
102
- // where serialization would reject it: the argument itself, or a literal object
103
- // property / array element (recursively). Functions merely consumed while the
104
- // argument evaluates, like the arrow in `users.map(u => u.email)`, are fine since
105
- // only the resulting data crosses the boundary. Those sit inside call expressions,
106
- // which this deliberately does not descend into.
107
- function findLiteralFunctionArg(ts, node) {
59
+ function findLiteralFunctionArgument(ts, node) {
108
60
  if (ts.isArrowFunction(node) || ts.isFunctionExpression(node))
109
61
  return node;
110
62
  if (ts.isParenthesizedExpression(node) || ts.isAsExpression(node) || ts.isSatisfiesExpression(node))
111
- return findLiteralFunctionArg(ts, node.expression);
63
+ return findLiteralFunctionArgument(ts, node.expression);
112
64
  if (ts.isObjectLiteralExpression(node)) {
113
65
  for (const property of node.properties) {
114
66
  if (ts.isMethodDeclaration(property) || ts.isGetAccessorDeclaration(property) || ts.isSetAccessorDeclaration(property))
115
67
  return property;
116
68
  if (ts.isPropertyAssignment(property)) {
117
- const found = findLiteralFunctionArg(ts, property.initializer);
69
+ const found = findLiteralFunctionArgument(ts, property.initializer);
118
70
  if (found)
119
71
  return found;
120
72
  }
121
73
  }
122
- return null;
123
74
  }
124
75
  if (ts.isArrayLiteralExpression(node)) {
125
76
  for (const element of node.elements) {
126
- const found = findLiteralFunctionArg(ts, element);
77
+ const found = findLiteralFunctionArgument(ts, element);
127
78
  if (found)
128
79
  return found;
129
80
  }
130
- return null;
131
81
  }
132
82
  return null;
133
83
  }
@@ -135,45 +85,4 @@ function stepMacroError(sf, node, fileName, message) {
135
85
  const line = sf.getLineAndCharacterOfPosition(node.getStart(sf)).line + 1;
136
86
  return new Error(`${fileName}:${line}: ${message}`);
137
87
  }
138
- function containsStepCall(ts, node, stepName) {
139
- const walk = (n) => (matchStepCall(ts, n, stepName) ? true : ts.forEachChild(n, walk));
140
- return ts.forEachChild(node, walk) ?? false;
141
- }
142
- // Lexical lookup along the parent chain: params of enclosing functions and
143
- // declarations directly inside enclosing blocks. Anything not found here is
144
- // module-scope (or a global), which the steps bundle can also see.
145
- function isDeclaredInEnclosingScopes(ts, from, name) {
146
- let cur = from.parent;
147
- while (cur && !ts.isSourceFile(cur)) {
148
- if (scopeDeclares(ts, cur, name))
149
- return true;
150
- cur = cur.parent;
151
- }
152
- return false;
153
- }
154
- function scopeDeclares(ts, node, name) {
155
- if (ts.isFunctionLike(node))
156
- return node.parameters.some(p => bindingDeclares(ts, p.name, name));
157
- if (ts.isBlock(node))
158
- return node.statements.some(s => statementDeclares(ts, s, name));
159
- if (ts.isCatchClause(node))
160
- return node.variableDeclaration !== undefined && bindingDeclares(ts, node.variableDeclaration.name, name);
161
- if (ts.isForOfStatement(node) || ts.isForInStatement(node))
162
- return ts.isVariableDeclarationList(node.initializer) && node.initializer.declarations.some(d => bindingDeclares(ts, d.name, name));
163
- if (ts.isForStatement(node))
164
- return node.initializer !== undefined && ts.isVariableDeclarationList(node.initializer) && node.initializer.declarations.some(d => bindingDeclares(ts, d.name, name));
165
- return false;
166
- }
167
- function statementDeclares(ts, statement, name) {
168
- if (ts.isVariableStatement(statement))
169
- return statement.declarationList.declarations.some(d => bindingDeclares(ts, d.name, name));
170
- if (ts.isFunctionDeclaration(statement) || ts.isClassDeclaration(statement))
171
- return statement.name?.text === name;
172
- return false;
173
- }
174
- function bindingDeclares(ts, binding, name) {
175
- if (ts.isIdentifier(binding))
176
- return binding.text === name;
177
- return binding.elements.some(el => !ts.isOmittedExpression(el) && bindingDeclares(ts, el.name, name));
178
- }
179
88
  //# sourceMappingURL=stepMacro.js.map