windmill-ts 1.7.2 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -89,6 +89,16 @@ resources:
89
89
  # Optional extension to append to the import (e.g., ".ts" or ".js")
90
90
  importExtension: ".js"
91
91
 
92
+ # Optional resolver hook consulted before the generated client falls back to
93
+ # embedded resource values or wmill.getResource(path).
94
+ resolver:
95
+ # Import path for the resolver, relative to the config
96
+ importPath: "./resource-resolver"
97
+ # Name of the exported resolver function
98
+ importName: "resolveResource"
99
+ # Optional extension to append to the import (e.g., ".ts" or ".js")
100
+ importExtension: ".js"
101
+
92
102
  # Script generation configuration
93
103
  scripts:
94
104
  # Whether to generate script-related code (default: true)
@@ -149,6 +159,62 @@ const resource = await getResource("my/resource/path");
149
159
  // TypeScript will infer the correct type based on the resource type
150
160
  ```
151
161
 
162
+ ### Resource Resolver Hook
163
+
164
+ Generated clients export a `ResourceResolver` hook API. A resolver can return a
165
+ resource value before the normal generated behavior runs. Returning `undefined`
166
+ continues to the default behavior: embedded value first when configured, then
167
+ `wmill.getResource(path)`. Returned values still go through normal validation
168
+ and resource transformers unless the caller uses `skipValidation` or
169
+ `skipTransformer`.
170
+
171
+ Configured resolvers are imported from `resources.resolver`:
172
+
173
+ ```typescript
174
+ import type { ResourceResolver } from "./generated-client";
175
+
176
+ export const resolveResource: ResourceResolver = ({ path }) => {
177
+ if (path === "f/app/redis" && !process.env["WM_JOB_ID"]) {
178
+ return {
179
+ value: {
180
+ host: process.env["REDIS_HOST"],
181
+ port: Number(process.env["REDIS_PORT"] ?? 6379),
182
+ },
183
+ };
184
+ }
185
+
186
+ return undefined;
187
+ };
188
+ ```
189
+
190
+ Configured resolver modules are imported by the generated client in every
191
+ environment that imports the client, so their top-level imports and side effects
192
+ run everywhere. Keep top-level imports safe for all target runtimes; if a
193
+ resolver needs a module that is only available in one environment, load it with a
194
+ dynamic `import()` inside that branch. Use `import type` for generated-client
195
+ types to avoid a value-import cycle back into the generated client.
196
+
197
+ You can also register or replace a resolver at runtime:
198
+
199
+ ```typescript
200
+ import { resolvedResource, setResourceResolver } from "./generated-client";
201
+
202
+ setResourceResolver(({ path }) => {
203
+ if (path === "f/app/redis") {
204
+ return resolvedResource({ host: "localhost", port: 6379 });
205
+ }
206
+
207
+ return undefined;
208
+ });
209
+ ```
210
+
211
+ The resolver context includes:
212
+
213
+ - `path` and `resourceType`
214
+ - `options`, the `getResource` options for the current call
215
+ - `hasEmbeddedResource`
216
+ - `resolveEmbedded()`, `fetchResource()`, and `resolveDefault()` helpers
217
+
152
218
  ## How It Works
153
219
 
154
220
  The generator:
package/dist/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "windmill-ts",
3
- "version": "1.7.2",
3
+ "version": "1.8.1",
4
4
  "description": "Type-safe client for Windmill",
5
5
  "main": "dist/src/index.js",
6
6
  "bin": "dist/src/index.js",
7
7
  "type": "module",
8
8
  "scripts": {
9
9
  "build": "rimraf dist/ && tsc",
10
+ "test": "pnpm run build && node --test tests/*.test.mjs",
10
11
  "prepublishOnly": "npm run build"
11
12
  },
12
13
  "keywords": [],
@@ -15,7 +16,7 @@
15
16
  "devDependencies": {
16
17
  "@types/node": "24.12.0",
17
18
  "rimraf": "6.1.3",
18
- "typescript": "5.9.3"
19
+ "typescript": "6.0.2"
19
20
  },
20
21
  "dependencies": {
21
22
  "@stdlib/string-camelcase": "0.2.3",
@@ -24,20 +25,20 @@
24
25
  "cli-spinners": "3.4.0",
25
26
  "commander": "14.0.3",
26
27
  "dedent": "1.7.2",
27
- "json-schema-to-zod": "2.7.0",
28
+ "json-schema-to-zod": "2.8.1",
28
29
  "log-update": "7.2.0",
29
30
  "p-queue": "9.1.0",
30
31
  "p-retry": "8.0.0",
31
32
  "to-valid-identifier": "1.0.0",
32
33
  "ts-morph": "27.0.2",
33
- "windmill-client": "1.666.0",
34
+ "windmill-client": "1.668.5",
34
35
  "yaml": "2.8.3",
35
36
  "zod": "4.3.6",
36
37
  "zod-to-json-schema": "3.25.2"
37
38
  },
38
39
  "pnpm": {
39
40
  "overrides": {
40
- "brace-expansion@<5.0.5": "5.0.5",
41
+ "brace-expansion@<5.0.5": "5.0.6",
41
42
  "picomatch@<4.0.4": "4.0.4"
42
43
  }
43
44
  },
@@ -1,12 +1,19 @@
1
1
  import { z } from "zod";
2
- const TransformerSchema = z
2
+ const ImportNameSchema = z
3
+ .string()
4
+ .regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/, "Must be a valid JavaScript identifier");
5
+ const ImportExtensionSchema = z
6
+ .string()
7
+ .regex(/^(?:|\.[A-Za-z0-9]+)$/, "Must be empty or a dot-prefixed extension")
8
+ .default("");
9
+ const ImportHookSchema = z
3
10
  .object({
4
- // Import path for the transformer, relative to the config
5
- importPath: z.string(),
6
- // Name of the exported transformer
7
- importName: z.string(),
11
+ // Import path for the hook, relative to the config
12
+ importPath: z.string().min(1),
13
+ // Name of the exported hook
14
+ importName: ImportNameSchema,
8
15
  // Extension to append to the import, if necessary (e.g., '.js' or '.ts')
9
- importExtension: z.string().default(""),
16
+ importExtension: ImportExtensionSchema,
10
17
  })
11
18
  .nullish();
12
19
  const EmbedSchema = z
@@ -21,13 +28,15 @@ const ResourceOptionsSchema = z
21
28
  .object({
22
29
  // Map from resource type to default resource path
23
30
  defaults: z.record(z.string(), z.string().nullable()).default({}),
24
- transformer: TransformerSchema,
31
+ transformer: ImportHookSchema,
25
32
  individualResourceTypeExports: z.boolean().default(false),
26
33
  // When true, resource type schemas will use z.looseObject() instead of z.object()
27
34
  // to allow passthrough of unknown fields
28
35
  looseSchemas: z.boolean().default(false),
29
36
  // Embed resource values directly in the generated client
30
37
  embed: EmbedSchema,
38
+ // Optional resolver hook consulted before embedded/backend resource fetches
39
+ resolver: ImportHookSchema,
31
40
  })
32
41
  .prefault({});
33
42
  const ScriptOptionsSchema = z
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,iBAAiB,GAAG,CAAC;KACxB,MAAM,CAAC;IACN,0DAA0D;IAC1D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,mCAAmC;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,yEAAyE;IACzE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACxC,CAAC;KACD,OAAO,EAAE,CAAC;AAEb,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,yEAAyE;IACzE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,6DAA6D;IAC7D,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAC5C,CAAC;KACD,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEhB,MAAM,qBAAqB,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,kDAAkD;IAClD,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjE,WAAW,EAAE,iBAAiB;IAC9B,6BAA6B,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACzD,kFAAkF;IAClF,yCAAyC;IACzC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACxC,yDAAyD;IACzD,KAAK,EAAE,WAAW;CACnB,CAAC;KACD,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEhB,MAAM,mBAAmB,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACtC,CAAC;KACD,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEhB,MAAM,iBAAiB,GAAG,CAAC;KACxB,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACtC,CAAC;KACD,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEhB,MAAM,uBAAuB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACjD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAClD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CACrC,CAAC;KACD,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEhB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,SAAS,EAAE,qBAAqB;IAChC,OAAO,EAAE,mBAAmB;IAC5B,KAAK,EAAE,iBAAiB;IACxB,UAAU,EAAE,uBAAuB;CACpC,CAAC;KACD,QAAQ,CAAC,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ const resourceToTypeMap = "resourceToType";
10
10
  const resourceTypesTypeName = "ResourceTypes";
11
11
  const resourceTransformerName = "_resourcesTransformer";
12
12
  const defaultResourceTransformerName = "_DefaultResourceTransformer";
13
+ const configuredResourceResolverName = "_configuredResourceResolver";
13
14
  const defaultPerResourceTypeMap = "defaultPerResourceType";
14
15
  const embeddedResourcesMapName = "_embeddedResources";
15
16
  const resolveVariablesFnName = "_resolveVariables";
@@ -38,13 +39,58 @@ const resolveVariablesFnCode = dedent `
38
39
  return obj;
39
40
  }
40
41
  `;
41
- const getDataFetchExpr = (embed) => {
42
- if (!embed.enabled)
43
- return `await wmill.getResource(path)`;
44
- const entry = `${embeddedResourcesMapName}[path]`;
45
- if (!embed.resolveVariables || !embed.hasResourcesWithVars)
46
- return `path in ${embeddedResourcesMapName} ? structuredClone(${entry}.value) : await wmill.getResource(path)`;
47
- return `path in ${embeddedResourcesMapName} ? (${entry}.hasVars ? await ${resolveVariablesFnName}(${entry}.value) : structuredClone(${entry}.value)) : await wmill.getResource(path)`;
42
+ const resolveConfiguredImport = (hook, outputDir, configPath) => {
43
+ if (!hook?.importPath || !hook.importName) {
44
+ return null;
45
+ }
46
+ const configDir = configPath ? path.dirname(configPath) : process.cwd();
47
+ let importPath = path.resolve(configDir, hook.importPath);
48
+ importPath = path.relative(outputDir, importPath);
49
+ importPath = importPath.replace(/\\/g, "/");
50
+ if (!importPath.startsWith("./") && !importPath.startsWith("../")) {
51
+ importPath = `./${importPath}`;
52
+ }
53
+ if (hook.importExtension) {
54
+ const extension = path.extname(importPath);
55
+ if (extension) {
56
+ importPath = importPath.slice(0, -extension.length);
57
+ }
58
+ }
59
+ return {
60
+ importPath: hook.importExtension
61
+ ? `${importPath}${hook.importExtension}`
62
+ : importPath,
63
+ importName: hook.importName,
64
+ };
65
+ };
66
+ const getEmbeddedResolverCode = (embed) => {
67
+ if (!embed.enabled) {
68
+ return dedent `
69
+ const _hasEmbeddedResource = (_path: string) => false;
70
+
71
+ const _resolveEmbeddedResource = async (
72
+ _path: string,
73
+ ): Promise<unknown | undefined> => undefined;
74
+ `;
75
+ }
76
+ const valueExpression = embed.resolveVariables && embed.hasResourcesWithVars
77
+ ? `entry.hasVars ? await ${resolveVariablesFnName}(entry.value) : structuredClone(entry.value)`
78
+ : "structuredClone(entry.value)";
79
+ return dedent `
80
+ const _hasEmbeddedResource = (path: string) =>
81
+ path in ${embeddedResourcesMapName};
82
+
83
+ const _resolveEmbeddedResource = async (
84
+ path: string,
85
+ ): Promise<unknown | undefined> => {
86
+ if (!_hasEmbeddedResource(path)) {
87
+ return undefined;
88
+ }
89
+
90
+ const entry = ${embeddedResourcesMapName}[path as keyof typeof ${embeddedResourcesMapName}];
91
+ return ${valueExpression};
92
+ };
93
+ `;
48
94
  };
49
95
  const hasVarReferences = (obj) => {
50
96
  if (typeof obj === "string")
@@ -55,7 +101,7 @@ const hasVarReferences = (obj) => {
55
101
  return Object.values(obj).some(hasVarReferences);
56
102
  return false;
57
103
  };
58
- const getPreamble = (embed) => dedent `
104
+ const getPreamble = ({ embed, hasConfiguredResourceResolver, }) => dedent `
59
105
  export type Cast<T, U> = T extends U ? T : U;
60
106
 
61
107
  export interface Transformer {
@@ -71,7 +117,89 @@ const getPreamble = (embed) => dedent `
71
117
  ApplyTransformer<typeof ${resourceTransformerName}, Resource>
72
118
  >;
73
119
 
74
- type GetResourceOptions = { skipValidation?: boolean; skipTransformer?: boolean };
120
+ export type GetResourceOptions = {
121
+ skipValidation?: boolean;
122
+ skipTransformer?: boolean;
123
+ };
124
+
125
+ export type ResourcePath = keyof typeof ${resourceToTypeMap};
126
+ export type ResourceTypeName = keyof ${resourceTypesTypeName} & string;
127
+
128
+ export type ResourceResolverContext = {
129
+ path: string;
130
+ resourceType: ResourceTypeName;
131
+ options: Readonly<GetResourceOptions>;
132
+ hasEmbeddedResource: boolean;
133
+ resolveEmbedded: () => Promise<unknown | undefined>;
134
+ fetchResource: () => Promise<unknown>;
135
+ resolveDefault: () => Promise<unknown>;
136
+ };
137
+
138
+ export type ResourceResolverResult = { value: unknown } | undefined;
139
+
140
+ export const resolvedResource = (value: unknown): ResourceResolverResult => ({
141
+ value,
142
+ });
143
+
144
+ export type ResourceResolver = (
145
+ context: ResourceResolverContext,
146
+ ) => ResourceResolverResult | Promise<ResourceResolverResult>;
147
+
148
+ let _runtimeResourceResolver: ResourceResolver | undefined;
149
+
150
+ export const setResourceResolver = (
151
+ resolver: ResourceResolver | undefined,
152
+ ) => {
153
+ _runtimeResourceResolver = resolver;
154
+ };
155
+
156
+ export const getResourceResolver = (): ResourceResolver | undefined =>
157
+ _runtimeResourceResolver ?? ${hasConfiguredResourceResolver ? configuredResourceResolverName : "undefined"};
158
+
159
+ ${getEmbeddedResolverCode(embed)}
160
+
161
+ const _fetchResource = (path: string): Promise<unknown> =>
162
+ wmill.getResource(path);
163
+
164
+ const _resolveDefaultResource = async (path: string): Promise<unknown> => {
165
+ const embeddedResource = await _resolveEmbeddedResource(path);
166
+ if (embeddedResource !== undefined) {
167
+ return embeddedResource;
168
+ }
169
+
170
+ return _fetchResource(path);
171
+ };
172
+
173
+ const _resolveResourceData = async ({
174
+ path,
175
+ resourceType,
176
+ options,
177
+ }: {
178
+ path: string;
179
+ resourceType: ResourceTypeName;
180
+ options?: GetResourceOptions;
181
+ }): Promise<unknown> => {
182
+ const resolver = getResourceResolver();
183
+ const resolverOptions = Object.freeze({ ...(options ?? {}) });
184
+
185
+ const resolveDefault = () => _resolveDefaultResource(path);
186
+
187
+ if (resolver == null) {
188
+ return resolveDefault();
189
+ }
190
+
191
+ const resolved = await resolver({
192
+ path,
193
+ resourceType,
194
+ options: resolverOptions,
195
+ hasEmbeddedResource: _hasEmbeddedResource(path),
196
+ resolveEmbedded: () => _resolveEmbeddedResource(path),
197
+ fetchResource: () => _fetchResource(path),
198
+ resolveDefault,
199
+ });
200
+
201
+ return resolved === undefined ? resolveDefault() : resolved.value;
202
+ };
75
203
 
76
204
  type GetResource = {
77
205
  <Path extends keyof typeof ${resourceToTypeMap}>(
@@ -90,23 +218,28 @@ const getPreamble = (embed) => dedent `
90
218
  path: string,
91
219
  resourceTypeOrOptions?: string | GetResourceOptions,
92
220
  maybeOptions?: GetResourceOptions,
93
- ) => {
221
+ ): Promise<any> => {
94
222
  const resourceType = typeof resourceTypeOrOptions === "string" ? resourceTypeOrOptions : undefined;
95
223
  const options = typeof resourceTypeOrOptions === "object" ? resourceTypeOrOptions : maybeOptions;
96
224
 
97
- if (${resourceToTypeMap}[path] == null) {
225
+ const resource = ${resourceToTypeMap}[path as ResourcePath];
226
+ if (resource == null) {
98
227
  throw new Error(\`Unknown resource: \${JSON.stringify(path)}\`);
99
228
  }
100
229
 
101
- const { name, schema } = ${resourceToTypeMap}[path];
230
+ const { name, schema } = resource;
102
231
  if (resourceType != null && name !== resourceType) {
103
232
  throw new Error(
104
233
  \`Unexpected resource type: expected \${JSON.stringify(resourceType)} but resource \${JSON.stringify(path)} has type \${JSON.stringify(name)}\`,
105
234
  );
106
235
  }
107
236
 
108
- const data = ${getDataFetchExpr(embed)};
109
- const parsedData = options?.skipValidation ? data : schema.parse(data);
237
+ const data = await _resolveResourceData({
238
+ path,
239
+ resourceType: name as ResourceTypeName,
240
+ options,
241
+ });
242
+ const parsedData = (options?.skipValidation ? data : schema.parse(data)) as object;
110
243
 
111
244
  if (options?.skipTransformer) {
112
245
  return parsedData;
@@ -188,36 +321,20 @@ const getPreamble = (embed) => dedent `
188
321
  `;
189
322
  export const generateResources = async (observer) => {
190
323
  const { write, allResourceTypes, config, outputDir } = getContext();
191
- let transformerPath = config.resources.transformer?.importPath;
192
- let transformerName = config.resources.transformer?.importName;
193
- const transformerExtension = config.resources.transformer?.importExtension;
194
- if (!transformerPath || !transformerName) {
195
- transformerName = defaultResourceTransformerName;
196
- transformerPath = "";
324
+ const transformerImport = resolveConfiguredImport(config.resources.transformer, outputDir, config.configPath);
325
+ if (!transformerImport) {
197
326
  await write(defaultResourceTransformer);
198
327
  }
199
- if (transformerPath) {
200
- // Resolve path relative to config dir
201
- const configDir = config.configPath
202
- ? path.dirname(config.configPath)
203
- : process.cwd();
204
- transformerPath = path.resolve(configDir, transformerPath);
205
- // Get relative path in relation to output dir
206
- transformerPath = path.relative(outputDir, transformerPath);
207
- if (!transformerPath.startsWith("./") &&
208
- !transformerPath.startsWith("../")) {
209
- transformerPath = `./${transformerPath}`;
210
- }
211
- // Strip extension
212
- const extension = path.extname(transformerPath);
213
- transformerPath = transformerPath.slice(0, -extension.length);
214
- }
215
- if (transformerPath && transformerName) {
216
- await write(`import { ${transformerName} as ${resourceTransformerName} } from ${JSON.stringify(`${transformerPath}${transformerExtension}`)};`);
328
+ if (transformerImport) {
329
+ await write(`import { ${transformerImport.importName} as ${resourceTransformerName} } from ${JSON.stringify(transformerImport.importPath)};`);
217
330
  }
218
331
  else {
219
332
  await write(`const ${resourceTransformerName} = ${defaultResourceTransformerName};`);
220
333
  }
334
+ const resolverImport = resolveConfiguredImport(config.resources.resolver, outputDir, config.configPath);
335
+ if (resolverImport) {
336
+ await write(`import { ${resolverImport.importName} as ${configuredResourceResolverName} } from ${JSON.stringify(resolverImport.importPath)};`);
337
+ }
221
338
  observer.next("Fetching all resources...");
222
339
  const resourcesByType = new Map();
223
340
  const allWorkspacePaths = new Map();
@@ -260,9 +377,12 @@ export const generateResources = async (observer) => {
260
377
  }
261
378
  const hasResourcesWithVars = embeddedPathsWithVars.size > 0;
262
379
  await write(getPreamble({
263
- enabled: hasEmbeddedResources,
264
- resolveVariables: config.resources.embed.resolveVariables,
265
- hasResourcesWithVars,
380
+ embed: {
381
+ enabled: hasEmbeddedResources,
382
+ resolveVariables: config.resources.embed.resolveVariables,
383
+ hasResourcesWithVars,
384
+ },
385
+ hasConfiguredResourceResolver: resolverImport != null,
266
386
  }));
267
387
  observer.next("Generating schemas...");
268
388
  const defaultPerResourceType = new Map();
@@ -358,4 +478,9 @@ const makeReferencesSchema = (resourceType, paths) => {
358
478
  };
359
479
  };
360
480
  const resourceTypeToTSTypeName = (resourceTypeName) => toValidIdentifier(capitalize(camelCase(resourceTypeName)));
481
+ export const __testing = {
482
+ getEmbeddedResolverCode,
483
+ getPreamble,
484
+ resolveConfiguredImport,
485
+ };
361
486
  //# sourceMappingURL=resources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/generator/resources.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,SAAS,MAAM,0BAA0B,CAAC;AAEjD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAC3C,MAAM,qBAAqB,GAAG,eAAe,CAAC;AAE9C,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AACxD,MAAM,8BAA8B,GAAG,6BAA6B,CAAC;AAErE,MAAM,yBAAyB,GAAG,wBAAwB,CAAC;AAC3D,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AACtD,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAEnD,MAAM,0BAA0B,GAAG,MAAM,CAAA;UAC/B,8BAA8B;;;;;;CAMvC,CAAC;AAEF,MAAM,sBAAsB,GAAG,MAAM,CAAA;mBAClB,sBAAsB;;;;;mCAKN,sBAAsB;;;;8DAIK,sBAAsB;;;;;;CAMnF,CAAC;AAQF,MAAM,gBAAgB,GAAG,CAAC,KAA2B,EAAE,EAAE;IACvD,IAAI,CAAC,KAAK,CAAC,OAAO;QAAE,OAAO,+BAA+B,CAAC;IAC3D,MAAM,KAAK,GAAG,GAAG,wBAAwB,QAAQ,CAAC;IAClD,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,oBAAoB;QACxD,OAAO,WAAW,wBAAwB,sBAAsB,KAAK,yCAAyC,CAAC;IACjH,OAAO,WAAW,wBAAwB,OAAO,KAAK,oBAAoB,sBAAsB,IAAI,KAAK,6BAA6B,KAAK,0CAA0C,CAAC;AACxL,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,GAAY,EAAW,EAAE;IACjD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1D,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;QACxC,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAA2B,EAAE,EAAE,CAAC,MAAM,CAAA;;;;;;;;;;;;;8BAa7B,uBAAuB;;;;;;iCAMpB,iBAAiB;;;+CAGH,iBAAiB;0BACtC,qBAAqB;;;;+BAIhB,qBAAqB;;;;;;;;;;;;UAY1C,iBAAiB;;;;+BAII,iBAAiB;;;;;;;mBAO7B,gBAAgB,CAAC,KAAK,CAAC;;;;;;;0BAOhB,uBAAuB;;;;;;;;;;mBAU9B,yBAAyB;;;;;;;;qEAQyB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;4DA0B9B,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BhF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE;IAC5D,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,EAAG,CAAC;IAErE,IAAI,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC;IAC/D,IAAI,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC;IAC/D,MAAM,oBAAoB,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,eAAe,CAAC;IAC3E,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,eAAe,GAAG,8BAA8B,CAAC;QACjD,eAAe,GAAG,EAAE,CAAC;QAErB,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,sCAAsC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU;YACjC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;YACjC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAElB,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAE3D,8CAA8C;QAC9C,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAC5D,IACE,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;YACjC,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,EAClC,CAAC;YACD,eAAe,GAAG,KAAK,eAAe,EAAE,CAAC;QAC3C,CAAC;QAED,kBAAkB;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAChD,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,eAAe,IAAI,eAAe,EAAE,CAAC;QACvC,MAAM,KAAK,CACT,YAAY,eAAe,OAAO,uBAAuB,WAAW,IAAI,CAAC,SAAS,CAAC,GAAG,eAAe,GAAG,oBAAoB,EAAE,CAAC,GAAG,CACnI,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,CACT,SAAS,uBAAuB,MAAM,8BAA8B,GAAG,CACxE,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,MAAM,eAAe,GAAG,IAAI,GAAG,EAAoB,CAAC;IACpD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpD,IAAI,KAAK,EAAE,MAAM,EACf,aAAa,EAAE,gBAAgB,EAC/B,IAAI,GACL,IAAI,aAAa,EAAE,EAAE,CAAC;QACrB,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAE9C,IAAI,CAAC,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,EAAE,CAAC;YAC5C,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAC1D,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,oBAAoB,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACrE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAmB,CAAC;IAClD,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhD,IAAI,oBAAoB,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAEtD,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CACrC,CAAC;QAEF,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACrD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClC,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACtD,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;oBACzB,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,kCAAkC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAC/G,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,0BAA0B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,yBAAyB,CAC7E,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACrD,IAAI,KAAc,CAAC;YACnB,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CACb,qCAAqC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAC9G,CAAC;YACJ,CAAC;YACD,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAErC,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,IAAI,GAAG,CAAC,CAAC;IAC5D,MAAM,KAAK,CAAC,WAAW,CAAC;QACtB,OAAO,EAAE,oBAAoB;QAC7B,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB;QACzD,oBAAoB;KACrB,CAAC,CAAC,CAAC;IAEJ,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAEvC,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzD,KAAK,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC;QACxD,MAAM,YAAY,GAAG,gBAAgB,CAAC,gBAAgB,CAAE,CAAC;QAEzD,MAAM,cAAc,GAAG,sBAAsB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,kBAAkB,GAAG,WAAW,CAAC,YAAY,CAAC,MAAe,EAAE;YACnE,oBAAoB,EAAE,sBAAsB;YAC5C,mBAAmB,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY;SACnD,CAAC,CAAC;QAEH,MAAM,KAAK,CACT,MAAM,CAAA;gBACI,cAAc;kBACZ,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;oBAC/B,kBAAkB;;OAE/B,CACF,CAAC;QAEF,MAAM,oBAAoB,GAAG,4BAA4B,CACvD,YAAY,CAAC,IAAI,CAClB,CAAC;QACF,MAAM,gBAAgB,GAAG,WAAW,CAClC,oBAAoB,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAC/C,CAAC;QAEF,MAAM,KAAK,CACT,SAAS,oBAAoB,uBAAuB,gBAAgB,IAAI,CACzE,CAAC;QAEF,MAAM,WAAW,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACpE,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,sBAAsB,CAAC,GAAG,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,IAAI,oBAAoB,EAAE,CAAC;YACpE,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,KAAK,CAAC,SAAS,wBAAwB,MAAM,CAAC,CAAC;QACrD,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,OAAO,KAAK,CAAC,CAAC;QACzG,CAAC;QACD,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,KAAK,CAAC,SAAS,iBAAiB,wBAAwB,CAAC,CAAC;IAChE,KAAK,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC;QACxD,MAAM,cAAc,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;QAChE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,cAAc,GAAG,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,MAAM,KAAK,CAAC,eAAe,CAAC,CAAC;IAE7B,MAAM,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAChE,KAAK,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC;QACxD,MAAM,KAAK,CACT,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAC1E,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,CAAC,eAAe,CAAC,CAAC;IAE7B,MAAM,KAAK,CAAC,eAAe,qBAAqB,MAAM,CAAC,CAAC;IAExD,MAAM,iBAAiB,GAAG,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjE,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;QACjD,MAAM,cAAc,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;QAChE,MAAM,KAAK,CACT,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,qBAAqB,cAAc,eAAe,CACtF,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,KAAK,CAAC,gBAAgB,yBAAyB,MAAM,CAAC,CAAC;IAC7D,KAAK,MAAM,CACT,gBAAgB,EAChB,WAAW,EACZ,IAAI,sBAAsB,CAAC,OAAO,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,CACT,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CACvE,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;IAE1B,IAAI,MAAM,CAAC,SAAS,CAAC,6BAA6B,EAAE,CAAC;QACnD,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;YAE5D,MAAM,KAAK,CACT,eAAe,QAAQ,MAAM,qBAAqB,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAC3F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,YAAoB,EAAE,EAAE,CACnE,iBAAiB,CAAC,GAAG,YAAY,aAAa,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,YAAoB,EAAE,EAAE,CAC7D,iBAAiB,CAAC,GAAG,YAAY,OAAO,CAAC,CAAC;AAE5C,MAAM,sBAAsB,GAAG,CAAC,YAAoB,EAAE,KAAe,EAAE,EAAE;IACvE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAG,CAAC;IAEjC,OAAO,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ;QAC9C,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;QACzC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAClB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACV,CAAC,CAAC,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,YAAoB,EAAE,KAAe,EAAE,EAAE;IACrE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAEjD,IAAI,cAAc,GAAG,sBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAChE,IAAI,cAAc,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,cAAc,GAAG,QAAQ,cAAc,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,cAAc,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,6BAA6B,YAAY,kBAAkB,cAAc,yBAAyB,CACnG,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,IAAI;QACV,GAAG,CAAC,cAAc,IAAI,IAAI,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;KACtC,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,gBAAwB,EAAE,EAAE,CAC5D,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/generator/resources.ts"],"names":[],"mappings":"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"}
@@ -13,10 +13,16 @@ export async function* listFlows(concurrency) {
13
13
  if (pageData.length === 0) {
14
14
  break;
15
15
  }
16
- const promises = pageData.map(({ path }) => queue.add(() => wmill.FlowService.getFlowByPath({
17
- workspace,
18
- path,
19
- })));
16
+ const promises = pageData.map(async ({ path }) => {
17
+ const flow = await queue.add(() => wmill.FlowService.getFlowByPath({
18
+ workspace,
19
+ path,
20
+ }));
21
+ if (flow == null) {
22
+ throw new Error(`Flow ${JSON.stringify(path)} returned no data`);
23
+ }
24
+ return flow;
25
+ });
20
26
  yield* promises;
21
27
  }
22
28
  }
@@ -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,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"}
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,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YAC/C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAChC,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC;gBAC9B,SAAS;gBACT,IAAI;aACL,CAAC,CACH,CAAC;YACF,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACnE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,CAAC,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -13,10 +13,16 @@ export async function* listScripts(concurrency) {
13
13
  if (pageData.length === 0) {
14
14
  break;
15
15
  }
16
- const promises = pageData.map(({ path }) => queue.add(() => wmill.ScriptService.getScriptByPath({
17
- workspace,
18
- path,
19
- })));
16
+ const promises = pageData.map(async ({ path }) => {
17
+ const script = await queue.add(() => wmill.ScriptService.getScriptByPath({
18
+ workspace,
19
+ path,
20
+ }));
21
+ if (script == null) {
22
+ throw new Error(`Script ${JSON.stringify(path)} returned no data`);
23
+ }
24
+ return script;
25
+ });
20
26
  yield* promises;
21
27
  }
22
28
  }
@@ -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,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"}
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,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YAC/C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAClC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC;gBAClC,SAAS;gBACT,IAAI;aACL,CAAC,CACH,CAAC;YACF,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,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.7.2",
3
+ "version": "1.8.1",
4
4
  "description": "Type-safe client for Windmill",
5
5
  "main": "dist/src/index.js",
6
6
  "bin": "dist/src/index.js",
@@ -11,7 +11,7 @@
11
11
  "devDependencies": {
12
12
  "@types/node": "24.12.0",
13
13
  "rimraf": "6.1.3",
14
- "typescript": "5.9.3"
14
+ "typescript": "6.0.2"
15
15
  },
16
16
  "dependencies": {
17
17
  "@stdlib/string-camelcase": "0.2.3",
@@ -20,13 +20,13 @@
20
20
  "cli-spinners": "3.4.0",
21
21
  "commander": "14.0.3",
22
22
  "dedent": "1.7.2",
23
- "json-schema-to-zod": "2.7.0",
23
+ "json-schema-to-zod": "2.8.1",
24
24
  "log-update": "7.2.0",
25
25
  "p-queue": "9.1.0",
26
26
  "p-retry": "8.0.0",
27
27
  "to-valid-identifier": "1.0.0",
28
28
  "ts-morph": "27.0.2",
29
- "windmill-client": "1.666.0",
29
+ "windmill-client": "1.668.5",
30
30
  "yaml": "2.8.3",
31
31
  "zod": "4.3.6",
32
32
  "zod-to-json-schema": "3.25.2"
@@ -44,6 +44,7 @@
44
44
  "README.md"
45
45
  ],
46
46
  "scripts": {
47
- "build": "rimraf dist/ && tsc"
47
+ "build": "rimraf dist/ && tsc",
48
+ "test": "pnpm run build && node --test tests/*.test.mjs"
48
49
  }
49
50
  }