windmill-ts 1.4.4 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "windmill-ts",
3
- "version": "1.4.4",
3
+ "version": "1.6.0",
4
4
  "description": "Type-safe client for Windmill",
5
5
  "main": "dist/src/index.js",
6
6
  "bin": "dist/src/index.js",
@@ -13,27 +13,27 @@
13
13
  "author": "Tsvetomir Bonev <me@invak.id>",
14
14
  "license": "Unlicense",
15
15
  "devDependencies": {
16
- "@types/node": "^22.9.0",
17
- "rimraf": "^6.0.1",
18
- "typescript": "^5.6.3"
16
+ "@types/node": "24.10.13",
17
+ "rimraf": "6.1.3",
18
+ "typescript": "5.9.3"
19
19
  },
20
20
  "dependencies": {
21
- "@stdlib/string-camelcase": "^0.2.2",
22
- "@stdlib/string-capitalize": "^0.3.0",
23
- "chalk": "^5.3.0",
24
- "commander": "^12.1.0",
25
- "dedent": "^1.5.3",
26
- "json-schema-to-zod": "^2.4.1",
27
- "listr2": "^8.2.5",
28
- "p-queue": "^8.0.1",
29
- "p-retry": "^7.1.0",
30
- "rxjs": "^7.8.1",
31
- "to-valid-identifier": "^0.1.1",
32
- "ts-morph": "^26.0.0",
33
- "windmill-client": "^1.522.0",
34
- "yaml": "^2.7.0",
35
- "zod": "^4.0.5",
36
- "zod-to-json-schema": "^3.24.6"
21
+ "@stdlib/string-camelcase": "0.2.3",
22
+ "@stdlib/string-capitalize": "0.3.1",
23
+ "chalk": "5.6.2",
24
+ "cli-spinners": "^3.4.0",
25
+ "commander": "14.0.3",
26
+ "dedent": "1.7.1",
27
+ "json-schema-to-zod": "2.7.0",
28
+ "log-update": "^7.1.0",
29
+ "p-queue": "9.1.0",
30
+ "p-retry": "7.1.1",
31
+ "to-valid-identifier": "1.0.0",
32
+ "ts-morph": "27.0.2",
33
+ "windmill-client": "1.644.0",
34
+ "yaml": "2.8.2",
35
+ "zod": "4.3.6",
36
+ "zod-to-json-schema": "3.25.1"
37
37
  },
38
38
  "repository": {
39
39
  "type": "git",
@@ -43,5 +43,6 @@
43
43
  "url": "https://github.com/invakid404/windmill-ts/issues"
44
44
  },
45
45
  "homepage": "https://github.com/invakid404/windmill-ts#readme",
46
- "files": ["dist", "README.md"]
46
+ "files": ["dist", "README.md"],
47
+ "packageManager": "pnpm@10.30.2"
47
48
  }
@@ -3,40 +3,66 @@ import { listFlows } from "../windmill/flows.js";
3
3
  import { getContext } from "./context.js";
4
4
  import { generateSchemas } from "./common.js";
5
5
  const mapName = "flows";
6
- const preamble = dedent `
7
- export const runFlow = <Path extends keyof typeof ${mapName}>(
8
- flowPath: Path,
9
- args: z.input<(typeof ${mapName})[Path]>,
10
- ) => {
11
- const schema = ${mapName}[flowPath];
12
-
13
- return wmill.runFlow(flowPath, schema.parse(args));
14
- };
15
-
6
+ const preamble = dedent `
16
7
  type RunFlowAsyncOptions = {
17
8
  scheduledFor?: Date | null;
18
9
  detached?: boolean;
10
+ /** Override the worker tag for this run */
11
+ tag?: string;
19
12
  };
20
13
 
21
- export const runFlowAsync = <Path extends keyof typeof ${mapName}>(
14
+ type RunFlowOptions = RunFlowAsyncOptions & {
15
+ /** Log status messages while waiting for the job to complete */
16
+ verbose?: boolean;
17
+ };
18
+
19
+ // NOTE: We use raw fetch here because JobService.runFlowByPath doesn't
20
+ // expose the root_job parameter, which is needed for proper job hierarchy tracking.
21
+ export const runFlowAsync = async <Path extends keyof typeof ${mapName}>(
22
22
  flowPath: Path,
23
23
  args: z.input<(typeof ${mapName})[Path]>,
24
24
  options?: RunFlowAsyncOptions,
25
25
  ) => {
26
- const { scheduledFor, detached = false } = options ?? {};
26
+ const { scheduledFor, detached = true, tag } = options ?? {};
27
27
  const schema = ${mapName}[flowPath];
28
28
 
29
- const runner = detached
30
- ? runDetached
31
- : <T extends unknown>(cb: () => Promise<T>) => cb();
32
-
33
29
  const scheduledInSeconds = Math.ceil(
34
30
  Math.max((scheduledFor?.getTime() ?? 0) - Date.now(), 0) / 1000,
35
31
  );
36
32
 
37
- return runner(
38
- () => wmill.runFlowAsync(flowPath, schema.parse(args), scheduledInSeconds)
39
- );
33
+ const params: Record<string, string> = {};
34
+ if (scheduledInSeconds) params["scheduled_in_secs"] = String(scheduledInSeconds);
35
+ if (tag) params["tag"] = tag;
36
+ if (!detached) {
37
+ const parentJobId = process.env["WM_JOB_ID"];
38
+ if (parentJobId) params["parent_job"] = parentJobId;
39
+ const rootJobId = process.env["WM_ROOT_FLOW_JOB_ID"];
40
+ if (rootJobId) params["root_job"] = rootJobId;
41
+ }
42
+
43
+ const url = new URL(\`\${wmill.OpenAPI.BASE}/w/\${process.env["WM_WORKSPACE"]}/jobs/run/f/\${flowPath}\`);
44
+ url.search = new URLSearchParams(params).toString();
45
+
46
+ const response = await fetch(url, {
47
+ method: "POST",
48
+ headers: {
49
+ "Content-Type": "application/json",
50
+ "Authorization": \`Bearer \${wmill.OpenAPI.TOKEN}\`,
51
+ },
52
+ body: JSON.stringify(schema.parse(args)),
53
+ });
54
+
55
+ return response.text();
56
+ };
57
+
58
+ export const runFlow = async <Path extends keyof typeof ${mapName}>(
59
+ flowPath: Path,
60
+ args: z.input<(typeof ${mapName})[Path]>,
61
+ options?: RunFlowOptions,
62
+ ) => {
63
+ const { verbose, ...asyncOptions } = options ?? {};
64
+ const jobId = await runFlowAsync(flowPath, args, asyncOptions);
65
+ return wmill.waitJob(jobId, verbose);
40
66
  };
41
67
 
42
68
  export const getFlowArgsSchema = <Path extends keyof typeof ${mapName}>(
@@ -1 +1 @@
1
- {"version":3,"file":"flows.js","sourceRoot":"","sources":["../../../src/generator/flows.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,QAAQ,GAAG,MAAM,CAAA;sDAC+B,OAAO;;4BAEjC,OAAO;;qBAEd,OAAO;;;;;;;;;;2DAU+B,OAAO;;4BAEtC,OAAO;;;;qBAId,OAAO;;;;;;;;;;;;;;;gEAeoC,OAAO;;;aAG1D,OAAO;;;wCAGoB,OAAO;;kEAEmB,OAAO;CACxE,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE;IACxD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,EAAG,CAAC;IAExC,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEtB,OAAO,eAAe,CAAC;QACrB,SAAS,EAAE,SAAS,EAAE;QACtB,OAAO;QACP,QAAQ;QACR,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;KAClC,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"flows.js","sourceRoot":"","sources":["../../../src/generator/flows.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,QAAQ,GAAG,MAAM,CAAA;;;;;;;;;;;;;;;iEAe0C,OAAO;;4BAE5C,OAAO;;;;qBAId,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4DA+BgC,OAAO;;4BAEvC,OAAO;;;;;;;;gEAQ6B,OAAO;;;aAG1D,OAAO;;;wCAGoB,OAAO;;kEAEmB,OAAO;CACxE,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE;IACxD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,EAAG,CAAC;IAExC,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEtB,OAAO,eAAe,CAAC;QACrB,SAAS,EAAE,SAAS,EAAE;QACtB,OAAO;QACP,QAAQ;QACR,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;KAClC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -6,8 +6,7 @@ import { generateScripts } from "./scripts.js";
6
6
  import { generateResources } from "./resources.js";
7
7
  import { generateFlows } from "./flows.js";
8
8
  import { runWithBuffer } from "./common.js";
9
- import { Listr } from "listr2";
10
- import { Observable } from "rxjs";
9
+ import { runTasks } from "./taskRunner.js";
11
10
  import { getConfig } from "../config/index.js";
12
11
  const subtasks = {
13
12
  "Generate resources": {
@@ -29,21 +28,11 @@ export const generate = async (output, outputDir, options) => {
29
28
  const allResourceTypes = await listResourceTypes();
30
29
  return run(output, outputDir, allResourceTypes, async () => {
31
30
  await writePreamble();
32
- const tasks = new Listr(Object.entries(subtasks).map(([name, task], idx) => {
33
- return {
34
- title: name,
35
- task: (ctx) => new Observable((subscriber) => {
36
- ctx.results ??= [];
37
- ctx.results[idx] = runWithBuffer(() => task.runner(subscriber));
38
- }),
39
- enabled: !config || task.isEnabled(config),
40
- rendererOptions: {
41
- persistentOutput: true,
42
- },
43
- };
44
- }), { concurrent: true, renderer: spinners ? "default" : "silent" });
45
- const ctx = await tasks.run();
46
- const results = await Promise.all(ctx.results).then((results) => results.filter((result) => result != null));
31
+ const results = (await runTasks(Object.entries(subtasks).map(([name, task]) => ({
32
+ title: name,
33
+ task: (observer) => runWithBuffer(() => task.runner(observer)),
34
+ enabled: !config || task.isEnabled(config),
35
+ })), { silent: !spinners })).filter((result) => result != null);
47
36
  for (const { buffer } of results) {
48
37
  await pipeline(buffer, output, { end: false });
49
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAiB,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAU,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAavD,MAAM,QAAQ,GAAG;IACf,oBAAoB,EAAE;QACpB,MAAM,EAAE,iBAAiB;QACzB,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;KACtB;IACD,kBAAkB,EAAE;QAClB,MAAM,EAAE,eAAe;QACvB,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO;KAC9C;IACD,gBAAgB,EAAE;QAChB,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;KAC5C;CACsC,CAAC;AAE1C,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,MAAgB,EAChB,SAAiB,EACjB,OAAyB,EACzB,EAAE;IACF,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IAEjC,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAEnD,OAAO,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,aAAa,EAAE,CAAC;QAEtB,MAAM,OAAO,GAAG,CACd,MAAM,QAAQ,CACZ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,CAAC,QAAkB,EAAE,EAAE,CAC3B,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5C,OAAO,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;SAC3C,CAAC,CAAC,EACH,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,CACtB,CACF,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QAErC,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;YACjC,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,11 +1,9 @@
1
1
  import dedent from "dedent";
2
2
  import { getContext } from "./context.js";
3
- export const envStorageName = "envStorage";
4
3
  const preamble = dedent `
5
4
  // This file is auto-generated by windmill-ts, do not modify it manually
6
5
  import { z } from 'zod';
7
6
  import * as wmill from 'windmill-client';
8
- import type { AsyncLocalStorage } from 'node:async_hooks';
9
7
  ${
10
8
  /* NOTE: Windmill has JSX enabled, so <T> is illegal.
11
9
  The usual way to fix this is <T,>, but some formatters/editors
@@ -27,53 +25,6 @@ const preamble = dedent `
27
25
  }
28
26
  }) as T;
29
27
  }
30
-
31
- let ${envStorageName}: AsyncLocalStorage<Record<string, string | undefined>> | null = null;
32
- let initPromise: Promise<void> | null = null;
33
-
34
- const initEnvStorage = () => initPromise ??= (async () => {
35
- if (typeof process === 'undefined') {
36
- return;
37
- }
38
-
39
- const { AsyncLocalStorage } = await import('node:async_hooks');
40
- ${envStorageName} = new AsyncLocalStorage();
41
-
42
- const originalProcessEnv = process.env;
43
- process.env = new Proxy(originalProcessEnv, {
44
- get: (target, prop, receiver) => {
45
- const store = ${envStorageName}!.getStore();
46
- if (store != null && prop in store && typeof prop === 'string') {
47
- return store[prop];
48
- }
49
-
50
- return Reflect.get(target, prop, receiver);
51
- },
52
- set: (target, prop, value, receiver) => {
53
- if (typeof prop === 'string') {
54
- target[prop] = value;
55
- return true;
56
- }
57
-
58
- return Reflect.set(target, prop, value, receiver);
59
- }
60
- });
61
- })();
62
-
63
- export const runDetached = async <T extends unknown>(cb: () => Promise<T>) => {
64
- await initEnvStorage();
65
-
66
- if (${envStorageName} == null) {
67
- console.warn("Calling \`runDetached\` in a non-Node environment is unsupported.");
68
-
69
- return cb();
70
- }
71
-
72
- return ${envStorageName}.run(
73
- { WM_JOB_ID: undefined, WM_ROOT_FLOW_JOB_ID: undefined },
74
- () => cb(),
75
- );
76
- };
77
28
  `;
78
29
  export const writePreamble = async () => {
79
30
  const { write } = getContext();
@@ -1 +1 @@
1
- {"version":3,"file":"preamble.js","sourceRoot":"","sources":["../../../src/generator/preamble.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC;AAE3C,MAAM,QAAQ,GAAG,MAAM,CAAA;;;;;IAKnB;AACA;;qEAEqE,CAAC,EACxE;;;;;;;;;;;;;;;;;;;QAmBM,cAAc;;;;;;;;;MAShB,cAAc;;;;;wBAKI,cAAc;;;;;;;;;;;;;;;;;;;;;UAqB5B,cAAc;;;;;;aAMX,cAAc;;;;;CAK1B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;IACtC,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,EAAG,CAAC;IAEhC,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC,CAAC"}
1
+ {"version":3,"file":"preamble.js","sourceRoot":"","sources":["../../../src/generator/preamble.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,QAAQ,GAAG,MAAM,CAAA;;;;IAInB;AACA;;qEAEqE,CAAC,EACxE;;;;;;;;;;;;;;;;;;CAkBD,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;IACtC,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,EAAG,CAAC;IAEhC,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC,CAAC"}
@@ -3,44 +3,66 @@ import { listScripts } from "../windmill/scripts.js";
3
3
  import { getContext } from "./context.js";
4
4
  import { generateSchemas } from "./common.js";
5
5
  const mapName = "scripts";
6
- const preamble = dedent `
7
- export const runScript = <Path extends keyof typeof ${mapName}>(
8
- scriptPath: Path,
9
- args: z.input<(typeof ${mapName})[Path]>,
10
- ) => {
11
- const schema = ${mapName}[scriptPath];
12
-
13
- return wmill.runScriptByPath(scriptPath, schema.parse(args));
14
- };
15
-
6
+ const preamble = dedent `
16
7
  type RunScriptAsyncOptions = {
17
8
  scheduledFor?: Date | null;
18
9
  detached?: boolean;
10
+ /** Override the worker tag for this run */
11
+ tag?: string;
19
12
  };
20
13
 
21
- export const runScriptAsync = <Path extends keyof typeof ${mapName}>(
14
+ type RunScriptOptions = RunScriptAsyncOptions & {
15
+ /** Log status messages while waiting for the job to complete */
16
+ verbose?: boolean;
17
+ };
18
+
19
+ // NOTE: We use raw fetch here because JobService.runScriptByPath doesn't
20
+ // expose the root_job parameter, which is needed for proper job hierarchy tracking.
21
+ export const runScriptAsync = async <Path extends keyof typeof ${mapName}>(
22
22
  scriptPath: Path,
23
23
  args: z.input<(typeof ${mapName})[Path]>,
24
24
  options?: RunScriptAsyncOptions,
25
25
  ) => {
26
- const { scheduledFor, detached = false } = options ?? {};
26
+ const { scheduledFor, detached = false, tag } = options ?? {};
27
27
  const schema = ${mapName}[scriptPath];
28
28
 
29
- const runner = detached
30
- ? runDetached
31
- : <T extends unknown>(cb: () => Promise<T>) => cb();
32
-
33
29
  const scheduledInSeconds = Math.ceil(
34
30
  Math.max((scheduledFor?.getTime() ?? 0) - Date.now(), 0) / 1000,
35
31
  );
36
32
 
37
- return runner(() =>
38
- wmill.runScriptByPathAsync(
39
- scriptPath,
40
- schema.parse(args),
41
- scheduledInSeconds,
42
- ),
43
- );
33
+ const params: Record<string, string> = {};
34
+ if (scheduledInSeconds) params["scheduled_in_secs"] = String(scheduledInSeconds);
35
+ if (tag) params["tag"] = tag;
36
+ if (!detached) {
37
+ const parentJobId = process.env["WM_JOB_ID"];
38
+ if (parentJobId) params["parent_job"] = parentJobId;
39
+ const rootJobId = process.env["WM_ROOT_FLOW_JOB_ID"];
40
+ if (rootJobId) params["root_job"] = rootJobId;
41
+ }
42
+
43
+ const url = new URL(\`\${wmill.OpenAPI.BASE}/w/\${process.env["WM_WORKSPACE"]}/jobs/run/p/\${scriptPath}\`);
44
+ url.search = new URLSearchParams(params).toString();
45
+
46
+ const response = await fetch(url, {
47
+ method: "POST",
48
+ headers: {
49
+ "Content-Type": "application/json",
50
+ "Authorization": \`Bearer \${wmill.OpenAPI.TOKEN}\`,
51
+ },
52
+ body: JSON.stringify(schema.parse(args)),
53
+ });
54
+
55
+ return response.text();
56
+ };
57
+
58
+ export const runScript = async <Path extends keyof typeof ${mapName}>(
59
+ scriptPath: Path,
60
+ args: z.input<(typeof ${mapName})[Path]>,
61
+ options?: RunScriptOptions,
62
+ ) => {
63
+ const { verbose, ...asyncOptions } = options ?? {};
64
+ const jobId = await runScriptAsync(scriptPath, args, asyncOptions);
65
+ return wmill.waitJob(jobId, verbose);
44
66
  };
45
67
 
46
68
  export const getScriptArgsSchema = <Path extends keyof typeof ${mapName}>(
@@ -1 +1 @@
1
- {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../../src/generator/scripts.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,OAAO,GAAG,SAAS,CAAC;AAE1B,MAAM,QAAQ,GAAG,MAAM,CAAA;wDACiC,OAAO;;4BAEnC,OAAO;;qBAEd,OAAO;;;;;;;;;;6DAUiC,OAAO;;4BAExC,OAAO;;;;qBAId,OAAO;;;;;;;;;;;;;;;;;;;kEAmBsC,OAAO;;;aAG5D,OAAO;;;0CAGsB,OAAO;;sEAEqB,OAAO;CAC5E,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE;IAC1D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,EAAG,CAAC;IAExC,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEtB,OAAO,eAAe,CAAC;QACrB,SAAS,EAAE,WAAW,EAAE;QACxB,OAAO;QACP,QAAQ;QACR,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;KACpC,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../../src/generator/scripts.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,OAAO,GAAG,SAAS,CAAC;AAE1B,MAAM,QAAQ,GAAG,MAAM,CAAA;;;;;;;;;;;;;;;mEAe4C,OAAO;;4BAE9C,OAAO;;;;qBAId,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8DA+BkC,OAAO;;4BAEzC,OAAO;;;;;;;;kEAQ+B,OAAO;;;aAG5D,OAAO;;;0CAGsB,OAAO;;sEAEqB,OAAO;CAC5E,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE;IAC1D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,EAAG,CAAC;IAExC,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEtB,OAAO,eAAe,CAAC;QACrB,SAAS,EAAE,WAAW,EAAE;QACxB,OAAO;QACP,QAAQ;QACR,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;KACpC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,92 @@
1
+ import logUpdate from "log-update";
2
+ import cliSpinners from "cli-spinners";
3
+ import chalk from "chalk";
4
+ export const runTasks = async (definitions, options) => {
5
+ const { silent = false } = options ?? {};
6
+ const tasks = definitions
7
+ .filter((d) => d.enabled !== false)
8
+ .map((def) => {
9
+ const task = {
10
+ title: def.title,
11
+ status: "running",
12
+ message: "",
13
+ promise: undefined,
14
+ };
15
+ const observer = {
16
+ next(message) {
17
+ task.message = message;
18
+ },
19
+ error(err) {
20
+ task.status = "failed";
21
+ task.error = err;
22
+ },
23
+ complete() {
24
+ if (task.status === "running") {
25
+ task.status = "done";
26
+ }
27
+ },
28
+ };
29
+ task.promise = def.task(observer).then((result) => {
30
+ if (task.status === "failed") {
31
+ throw task.error;
32
+ }
33
+ if (task.status === "running")
34
+ task.status = "done";
35
+ return result;
36
+ }, (err) => {
37
+ task.status = "failed";
38
+ task.error ??= err;
39
+ throw err;
40
+ });
41
+ return task;
42
+ });
43
+ if (silent) {
44
+ return Promise.all(tasks.map((t) => t.promise));
45
+ }
46
+ const isTTY = process.stdout.isTTY ?? false;
47
+ if (!isTTY) {
48
+ const settled = await Promise.allSettled(tasks.map((t) => t.promise));
49
+ for (const task of tasks) {
50
+ const icon = task.status === "failed" ? "✖" : "✔";
51
+ const suffix = task.message ? ` [${task.message}]` : "";
52
+ console.log(`${icon} ${task.title}${suffix}`);
53
+ }
54
+ const results = [];
55
+ for (const outcome of settled) {
56
+ if (outcome.status === "rejected") {
57
+ throw outcome.reason;
58
+ }
59
+ results.push(outcome.value);
60
+ }
61
+ return results;
62
+ }
63
+ const spinner = cliSpinners.dots;
64
+ let frameIdx = 0;
65
+ const render = () => {
66
+ const frame = spinner.frames[frameIdx % spinner.frames.length];
67
+ frameIdx++;
68
+ const lines = tasks.map((task) => {
69
+ const suffix = task.message ? chalk.dim(` [${task.message}]`) : "";
70
+ switch (task.status) {
71
+ case "running":
72
+ return `${chalk.yellow(frame)} ${task.title}${suffix}`;
73
+ case "done":
74
+ return `${chalk.green("✔")} ${task.title}${suffix}`;
75
+ case "failed":
76
+ return `${chalk.red("✖")} ${task.title}${suffix}`;
77
+ }
78
+ });
79
+ logUpdate(lines.join("\n"));
80
+ };
81
+ const interval = setInterval(render, spinner.interval);
82
+ render();
83
+ try {
84
+ return await Promise.all(tasks.map((t) => t.promise));
85
+ }
86
+ finally {
87
+ clearInterval(interval);
88
+ render();
89
+ logUpdate.done();
90
+ }
91
+ };
92
+ //# sourceMappingURL=taskRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskRunner.js","sourceRoot":"","sources":["../../../src/generator/taskRunner.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ export async function* listFlows(concurrency) {
16
16
  const promises = pageData.map(({ path }) => queue.add(() => wmill.FlowService.getFlowByPath({
17
17
  workspace,
18
18
  path,
19
- }), { throwOnTimeout: true }));
19
+ })));
20
20
  yield* promises;
21
21
  }
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"flows.js","sourceRoot":"","sources":["../../../src/windmill/flows.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AAEzC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,CAAC,WAAoB;IACnD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE,WAAW,EAAE,WAAW,IAAI,CAAC,EAAE,CAAC,CAAC;IAE5D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;IAE/C,KAAK,IAAI,IAAI,GAAG,CAAC,GAAI,EAAE,IAAI,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;YACjD,SAAS;YACT,IAAI;YACJ,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CACzC,KAAK,CAAC,GAAG,CACP,GAAG,EAAE,CACH,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC;YAC9B,SAAS;YACT,IAAI;SACL,CAAC,EACJ,EAAE,cAAc,EAAE,IAAI,EAAE,CACzB,CACF,CAAC;QAEF,KAAK,CAAC,CAAC,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"flows.js","sourceRoot":"","sources":["../../../src/windmill/flows.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AAEzC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,CAAC,WAAoB;IACnD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE,WAAW,EAAE,WAAW,IAAI,CAAC,EAAE,CAAC,CAAC;IAE5D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;IAE/C,KAAK,IAAI,IAAI,GAAG,CAAC,GAAI,EAAE,IAAI,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;YACjD,SAAS;YACT,IAAI;YACJ,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CACzC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CACb,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC;YAC9B,SAAS;YACT,IAAI;SACL,CAAC,CACH,CACF,CAAC;QAEF,KAAK,CAAC,CAAC,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -16,7 +16,7 @@ export async function* listScripts(concurrency) {
16
16
  const promises = pageData.map(({ path }) => queue.add(() => wmill.ScriptService.getScriptByPath({
17
17
  workspace,
18
18
  path,
19
- }), { throwOnTimeout: true }));
19
+ })));
20
20
  yield* promises;
21
21
  }
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../../src/windmill/scripts.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AAEzC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,WAAW,CAAC,WAAoB;IACrD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE,WAAW,EAAE,WAAW,IAAI,CAAC,EAAE,CAAC,CAAC;IAE5D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;IAE/C,KAAK,IAAI,IAAI,GAAG,CAAC,GAAI,EAAE,IAAI,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC;YACrD,SAAS;YACT,IAAI;YACJ,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CACzC,KAAK,CAAC,GAAG,CACP,GAAG,EAAE,CACH,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC;YAClC,SAAS;YACT,IAAI;SACL,CAAC,EACJ,EAAE,cAAc,EAAE,IAAI,EAAE,CACzB,CACF,CAAC;QAEF,KAAK,CAAC,CAAC,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../../src/windmill/scripts.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AAEzC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,WAAW,CAAC,WAAoB;IACrD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE,WAAW,EAAE,WAAW,IAAI,CAAC,EAAE,CAAC,CAAC;IAE5D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;IAE/C,KAAK,IAAI,IAAI,GAAG,CAAC,GAAI,EAAE,IAAI,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC;YACrD,SAAS;YACT,IAAI;YACJ,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CACzC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CACb,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC;YAClC,SAAS;YACT,IAAI;SACL,CAAC,CACH,CACF,CAAC;QAEF,KAAK,CAAC,CAAC,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "windmill-ts",
3
- "version": "1.4.4",
3
+ "version": "1.6.0",
4
4
  "description": "Type-safe client for Windmill",
5
5
  "main": "dist/src/index.js",
6
6
  "bin": "dist/src/index.js",
@@ -9,27 +9,27 @@
9
9
  "author": "Tsvetomir Bonev <me@invak.id>",
10
10
  "license": "Unlicense",
11
11
  "devDependencies": {
12
- "@types/node": "^22.9.0",
13
- "rimraf": "^6.0.1",
14
- "typescript": "^5.6.3"
12
+ "@types/node": "24.10.13",
13
+ "rimraf": "6.1.3",
14
+ "typescript": "5.9.3"
15
15
  },
16
16
  "dependencies": {
17
- "@stdlib/string-camelcase": "^0.2.2",
18
- "@stdlib/string-capitalize": "^0.3.0",
19
- "chalk": "^5.3.0",
20
- "commander": "^12.1.0",
21
- "dedent": "^1.5.3",
22
- "json-schema-to-zod": "^2.4.1",
23
- "listr2": "^8.2.5",
24
- "p-queue": "^8.0.1",
25
- "p-retry": "^7.1.0",
26
- "rxjs": "^7.8.1",
27
- "to-valid-identifier": "^0.1.1",
28
- "ts-morph": "^26.0.0",
29
- "windmill-client": "^1.522.0",
30
- "yaml": "^2.7.0",
31
- "zod": "^4.0.5",
32
- "zod-to-json-schema": "^3.24.6"
17
+ "@stdlib/string-camelcase": "0.2.3",
18
+ "@stdlib/string-capitalize": "0.3.1",
19
+ "chalk": "5.6.2",
20
+ "cli-spinners": "^3.4.0",
21
+ "commander": "14.0.3",
22
+ "dedent": "1.7.1",
23
+ "json-schema-to-zod": "2.7.0",
24
+ "log-update": "^7.1.0",
25
+ "p-queue": "9.1.0",
26
+ "p-retry": "7.1.1",
27
+ "to-valid-identifier": "1.0.0",
28
+ "ts-morph": "27.0.2",
29
+ "windmill-client": "1.644.0",
30
+ "yaml": "2.8.2",
31
+ "zod": "4.3.6",
32
+ "zod-to-json-schema": "3.25.1"
33
33
  },
34
34
  "repository": {
35
35
  "type": "git",