windmill-cli 1.639.0 → 1.640.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 (142) hide show
  1. package/esm/deps/jsr.io/@std/log/0.224.14/rotating_file_handler.js +1 -1
  2. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_loader_state.js +216 -175
  3. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/parse.js +0 -2
  4. package/esm/deps.js +3 -3
  5. package/esm/gen/core/OpenAPI.js +1 -1
  6. package/esm/src/commands/lint/lint.js +417 -1
  7. package/esm/src/commands/sync/sync.js +16 -1
  8. package/esm/src/main.js +1 -1
  9. package/esm/src/utils/script_common.js +10 -0
  10. package/package.json +1 -1
  11. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/_create_walk_entry.d.ts.map +1 -1
  12. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/_get_file_info_type.d.ts.map +1 -1
  13. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/_is_same_path.d.ts.map +1 -1
  14. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/_is_subdir.d.ts.map +1 -1
  15. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/_to_path_string.d.ts.map +1 -1
  16. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/copy.d.ts.map +1 -1
  17. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/empty_dir.d.ts.map +1 -1
  18. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/ensure_dir.d.ts.map +1 -1
  19. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/ensure_file.d.ts.map +1 -1
  20. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/ensure_link.d.ts.map +1 -1
  21. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/ensure_symlink.d.ts.map +1 -1
  22. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/eol.d.ts.map +1 -1
  23. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/exists.d.ts.map +1 -1
  24. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/expand_glob.d.ts.map +1 -1
  25. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/mod.d.ts.map +1 -1
  26. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/move.d.ts.map +1 -1
  27. package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/walk.d.ts.map +1 -1
  28. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_chars.d.ts.map +1 -1
  29. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_dumper_state.d.ts.map +1 -1
  30. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_loader_state.d.ts +0 -5
  31. package/types/deps/jsr.io/@std/yaml/1.0.12/_loader_state.d.ts.map +1 -0
  32. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_schema.d.ts.map +1 -1
  33. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/binary.d.ts.map +1 -1
  34. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/bool.d.ts.map +1 -1
  35. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/float.d.ts.map +1 -1
  36. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/int.d.ts.map +1 -1
  37. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/map.d.ts.map +1 -1
  38. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/merge.d.ts.map +1 -1
  39. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/nil.d.ts.map +1 -1
  40. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/omap.d.ts.map +1 -1
  41. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/pairs.d.ts.map +1 -1
  42. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/regexp.d.ts.map +1 -1
  43. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/seq.d.ts.map +1 -1
  44. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/set.d.ts.map +1 -1
  45. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/str.d.ts.map +1 -1
  46. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/timestamp.d.ts.map +1 -1
  47. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/undefined.d.ts.map +1 -1
  48. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type.d.ts.map +1 -1
  49. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_utils.d.ts.map +1 -1
  50. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/mod.d.ts.map +1 -1
  51. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/parse.d.ts.map +1 -1
  52. package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/stringify.d.ts.map +1 -1
  53. package/types/deps.d.ts +3 -3
  54. package/types/src/commands/lint/lint.d.ts +11 -0
  55. package/types/src/commands/lint/lint.d.ts.map +1 -1
  56. package/types/src/commands/sync/sync.d.ts +2 -0
  57. package/types/src/commands/sync/sync.d.ts.map +1 -1
  58. package/types/src/core/conf.d.ts +1 -0
  59. package/types/src/core/conf.d.ts.map +1 -1
  60. package/types/src/main.d.ts +1 -1
  61. package/types/src/utils/script_common.d.ts +5 -0
  62. package/types/src/utils/script_common.d.ts.map +1 -1
  63. package/types/deps/jsr.io/@std/yaml/1.0.11/_loader_state.d.ts.map +0 -1
  64. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/_create_walk_entry.js +0 -0
  65. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/_get_file_info_type.js +0 -0
  66. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/_is_same_path.js +0 -0
  67. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/_is_subdir.js +0 -0
  68. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/_to_path_string.js +0 -0
  69. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/copy.js +0 -0
  70. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/empty_dir.js +0 -0
  71. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/ensure_dir.js +0 -0
  72. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/ensure_file.js +0 -0
  73. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/ensure_link.js +0 -0
  74. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/ensure_symlink.js +0 -0
  75. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/eol.js +0 -0
  76. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/exists.js +0 -0
  77. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/expand_glob.js +0 -0
  78. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/mod.js +0 -0
  79. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/move.js +0 -0
  80. /package/esm/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/walk.js +0 -0
  81. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_chars.js +0 -0
  82. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_dumper_state.js +0 -0
  83. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_schema.js +0 -0
  84. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/binary.js +0 -0
  85. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/bool.js +0 -0
  86. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/float.js +0 -0
  87. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/int.js +0 -0
  88. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/map.js +0 -0
  89. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/merge.js +0 -0
  90. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/nil.js +0 -0
  91. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/omap.js +0 -0
  92. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/pairs.js +0 -0
  93. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/regexp.js +0 -0
  94. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/seq.js +0 -0
  95. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/set.js +0 -0
  96. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/str.js +0 -0
  97. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/timestamp.js +0 -0
  98. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/undefined.js +0 -0
  99. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type.js +0 -0
  100. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_utils.js +0 -0
  101. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/mod.js +0 -0
  102. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/stringify.js +0 -0
  103. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/_create_walk_entry.d.ts +0 -0
  104. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/_get_file_info_type.d.ts +0 -0
  105. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/_is_same_path.d.ts +0 -0
  106. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/_is_subdir.d.ts +0 -0
  107. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/_to_path_string.d.ts +0 -0
  108. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/copy.d.ts +0 -0
  109. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/empty_dir.d.ts +0 -0
  110. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/ensure_dir.d.ts +0 -0
  111. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/ensure_file.d.ts +0 -0
  112. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/ensure_link.d.ts +0 -0
  113. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/ensure_symlink.d.ts +0 -0
  114. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/eol.d.ts +0 -0
  115. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/exists.d.ts +0 -0
  116. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/expand_glob.d.ts +0 -0
  117. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/mod.d.ts +0 -0
  118. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/move.d.ts +0 -0
  119. /package/types/deps/jsr.io/@std/fs/{1.0.22 → 1.0.23}/walk.d.ts +0 -0
  120. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_chars.d.ts +0 -0
  121. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_dumper_state.d.ts +0 -0
  122. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_schema.d.ts +0 -0
  123. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/binary.d.ts +0 -0
  124. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/bool.d.ts +0 -0
  125. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/float.d.ts +0 -0
  126. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/int.d.ts +0 -0
  127. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/map.d.ts +0 -0
  128. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/merge.d.ts +0 -0
  129. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/nil.d.ts +0 -0
  130. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/omap.d.ts +0 -0
  131. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/pairs.d.ts +0 -0
  132. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/regexp.d.ts +0 -0
  133. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/seq.d.ts +0 -0
  134. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/set.d.ts +0 -0
  135. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/str.d.ts +0 -0
  136. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/timestamp.d.ts +0 -0
  137. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/undefined.d.ts +0 -0
  138. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type.d.ts +0 -0
  139. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_utils.d.ts +0 -0
  140. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/mod.d.ts +0 -0
  141. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/parse.d.ts +0 -0
  142. /package/types/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/stringify.d.ts +0 -0
@@ -16,8 +16,6 @@ function sanitizeInput(input) {
16
16
  if (input.charCodeAt(0) === 0xfeff)
17
17
  input = input.slice(1);
18
18
  }
19
- // Use 0 as string terminator. That significantly simplifies bounds check.
20
- input += "\0";
21
19
  return input;
22
20
  }
23
21
  /**
package/esm/deps.js CHANGED
@@ -12,7 +12,7 @@ export { NpmProvider } from "./deps/jsr.io/@windmill-labs/cliffy-command/1.0.0-r
12
12
  export { Provider } from "./deps/jsr.io/@windmill-labs/cliffy-command/1.0.0-rc.5/upgrade/mod.js";
13
13
  export { CompletionsCommand } from "./deps/jsr.io/@windmill-labs/cliffy-command/1.0.0-rc.5/completions/mod.js";
14
14
  // std
15
- export { ensureDir } from "./deps/jsr.io/@std/fs/1.0.22/mod.js";
15
+ export { ensureDir } from "./deps/jsr.io/@std/fs/1.0.23/mod.js";
16
16
  export { SEPARATOR as SEP } from "./deps/jsr.io/@std/path/1.1.4/mod.js";
17
17
  export * as path from "./deps/jsr.io/@std/path/1.1.4/mod.js";
18
18
  export { encodeHex } from "./deps/jsr.io/@std/encoding/1.0.4/mod.js";
@@ -20,8 +20,8 @@ export { writeAllSync } from "./deps/jsr.io/@std/io/0.225.3/write_all.js";
20
20
  export { copy } from "./deps/jsr.io/@std/io/0.225.3/copy.js";
21
21
  export { readAll } from "./deps/jsr.io/@std/io/0.225.3/read_all.js";
22
22
  export * as log from "./deps/jsr.io/@std/log/0.224.14/mod.js";
23
- export { stringify as yamlStringify } from "./deps/jsr.io/@std/yaml/1.0.11/mod.js";
24
- import { parse as yamlParse } from "./deps/jsr.io/@std/yaml/1.0.11/mod.js";
23
+ export { stringify as yamlStringify } from "./deps/jsr.io/@std/yaml/1.0.12/mod.js";
24
+ import { parse as yamlParse } from "./deps/jsr.io/@std/yaml/1.0.12/mod.js";
25
25
  export async function yamlParseFile(path, options = {}) {
26
26
  try {
27
27
  return yamlParse(await dntShim.Deno.readTextFile(path), options);
@@ -32,7 +32,7 @@ export const OpenAPI = {
32
32
  PASSWORD: undefined,
33
33
  TOKEN: getEnv("WM_TOKEN"),
34
34
  USERNAME: undefined,
35
- VERSION: '1.639.0',
35
+ VERSION: '1.640.0',
36
36
  WITH_CREDENTIALS: true,
37
37
  interceptors: {
38
38
  request: new Interceptors(),
@@ -1,8 +1,11 @@
1
1
  import * as dntShim from "../../../_dnt.shims.js";
2
- import { colors, Command, log, path, SEP } from "../../../deps.js";
2
+ import { colors, Command, log, path, SEP, yamlParseFile, } from "../../../deps.js";
3
3
  import { mergeConfigWithConfigFile } from "../../core/conf.js";
4
4
  import { FSFSElement, ignoreF, readDirRecursiveWithIgnore, } from "../sync/sync.js";
5
5
  import { getValidationTargetFromFilename, WindmillYamlValidator, } from "windmill-yaml-validator";
6
+ import { inferContentTypeFromFilePath, languageNeedsLock, } from "../../utils/script_common.js";
7
+ import { isFlowInlineScriptPath, isAppInlineScriptPath, getFolderSuffix, } from "../../utils/resource_folders.js";
8
+ import { exts } from "../script/script.js";
6
9
  const YAML_FILE_REGEX = /\.ya?ml$/i;
7
10
  const NATIVE_TRIGGER_REGEX = /\.[^.]+_native_trigger\.ya?ml$/i;
8
11
  function normalizePath(p) {
@@ -47,6 +50,413 @@ function formatYamlDiagnostics(parsed) {
47
50
  }
48
51
  return diagnostics.map((d) => d?.message || "Invalid YAML document");
49
52
  }
53
+ /**
54
+ * Check if a lock value represents an actually resolved lock.
55
+ * Returns true if the lock is present and valid, false if missing.
56
+ * For `!inline` references, checks that the referenced file exists and is non-empty.
57
+ */
58
+ async function isLockResolved(lockValue, baseDir) {
59
+ if (lockValue === undefined)
60
+ return false;
61
+ // Array lock (v2 format) - if non-empty, locks are present
62
+ if (Array.isArray(lockValue)) {
63
+ const joined = lockValue.join("\n");
64
+ if (joined === "")
65
+ return false;
66
+ if (joined.startsWith("!inline ")) {
67
+ return await checkInlineFile(joined.substring("!inline ".length), baseDir);
68
+ }
69
+ return true;
70
+ }
71
+ if (lockValue === "")
72
+ return false;
73
+ // Inline file reference
74
+ if (lockValue.startsWith("!inline ")) {
75
+ return await checkInlineFile(lockValue.substring("!inline ".length), baseDir);
76
+ }
77
+ // Embedded lock content
78
+ return true;
79
+ }
80
+ async function checkInlineFile(relativePath, baseDir) {
81
+ const fullPath = path.join(baseDir, relativePath.trim());
82
+ try {
83
+ const stat = await dntShim.Deno.stat(fullPath);
84
+ return stat.size > 0;
85
+ }
86
+ catch {
87
+ return false;
88
+ }
89
+ }
90
+ /**
91
+ * Recursively find rawscript modules in a flow's module tree.
92
+ */
93
+ function findRawScriptsInModules(modules) {
94
+ const results = [];
95
+ if (!modules || !Array.isArray(modules))
96
+ return results;
97
+ for (const m of modules) {
98
+ if (!m?.value?.type)
99
+ continue;
100
+ if (m.value.type === "rawscript") {
101
+ results.push({
102
+ language: m.value.language,
103
+ lock: m.value.lock,
104
+ id: m.id ?? "unknown",
105
+ });
106
+ }
107
+ else if (m.value.type === "forloopflow" ||
108
+ m.value.type === "whileloopflow") {
109
+ results.push(...findRawScriptsInModules(m.value.modules));
110
+ }
111
+ else if (m.value.type === "branchall") {
112
+ for (const b of m.value.branches ?? []) {
113
+ results.push(...findRawScriptsInModules(b.modules));
114
+ }
115
+ }
116
+ else if (m.value.type === "branchone") {
117
+ for (const b of m.value.branches ?? []) {
118
+ results.push(...findRawScriptsInModules(b.modules));
119
+ }
120
+ if (m.value.default) {
121
+ results.push(...findRawScriptsInModules(m.value.default));
122
+ }
123
+ }
124
+ else if (m.value.type === "aiagent") {
125
+ for (const tool of m.value.tools ?? []) {
126
+ const toolValue = tool.value;
127
+ if (toolValue?.tool_type === "flowmodule" &&
128
+ toolValue?.type === "rawscript") {
129
+ results.push({
130
+ language: toolValue.language,
131
+ lock: toolValue.lock,
132
+ id: tool.id ?? "unknown",
133
+ });
134
+ }
135
+ }
136
+ }
137
+ }
138
+ return results;
139
+ }
140
+ /**
141
+ * Recursively find inlineScript objects in a normal app's value structure.
142
+ * Follows the same traversal as traverseAndProcessInlineScripts in app_metadata.ts.
143
+ */
144
+ function findInlineScriptsInApp(obj, currentPath = []) {
145
+ const results = [];
146
+ if (!obj || typeof obj !== "object")
147
+ return results;
148
+ if (Array.isArray(obj)) {
149
+ for (let i = 0; i < obj.length; i++) {
150
+ results.push(...findInlineScriptsInApp(obj[i], [...currentPath, `[${i}]`]));
151
+ }
152
+ return results;
153
+ }
154
+ for (const [key, value] of Object.entries(obj)) {
155
+ if (key === "inlineScript" && typeof value === "object" && value !== null) {
156
+ const script = value;
157
+ if (script.language) {
158
+ results.push({
159
+ language: script.language,
160
+ lock: script.lock,
161
+ path: [...currentPath, key].join("."),
162
+ });
163
+ }
164
+ }
165
+ else {
166
+ results.push(...findInlineScriptsInApp(value, [...currentPath, key]));
167
+ }
168
+ }
169
+ return results;
170
+ }
171
+ /**
172
+ * Check raw app backend runnables for missing locks.
173
+ * Reads YAML config files and code files from the backend/ folder.
174
+ */
175
+ async function checkRawAppRunnables(backendDir, rawAppYamlPath, defaultTs) {
176
+ const issues = [];
177
+ const allFiles = [];
178
+ for await (const entry of dntShim.Deno.readDir(backendDir)) {
179
+ if (entry.isFile) {
180
+ allFiles.push(entry.name);
181
+ }
182
+ }
183
+ // Track processed IDs to avoid duplicates
184
+ const processedIds = new Set();
185
+ // Process YAML files (explicit config)
186
+ for (const fileName of allFiles) {
187
+ if (!fileName.endsWith(".yaml"))
188
+ continue;
189
+ const runnableId = fileName.replace(".yaml", "");
190
+ processedIds.add(runnableId);
191
+ const filePath = path.join(backendDir, fileName);
192
+ let runnable;
193
+ try {
194
+ runnable = (await yamlParseFile(filePath));
195
+ }
196
+ catch {
197
+ continue;
198
+ }
199
+ // Only inline runnables need lock checking
200
+ if (runnable?.type !== "inline")
201
+ continue;
202
+ // Find the content file to determine language
203
+ let language = null;
204
+ for (const codeFile of allFiles) {
205
+ if (codeFile.endsWith(".yaml") || codeFile.endsWith(".lock") ||
206
+ !codeFile.startsWith(runnableId + "."))
207
+ continue;
208
+ language = inferContentTypeFromFilePath(codeFile, defaultTs);
209
+ break;
210
+ }
211
+ if (!language || !languageNeedsLock(language))
212
+ continue;
213
+ // Check for lock file
214
+ const lockFile = path.join(backendDir, `${runnableId}.lock`);
215
+ let hasLock = false;
216
+ try {
217
+ const stat = await dntShim.Deno.stat(lockFile);
218
+ hasLock = stat.size > 0;
219
+ }
220
+ catch {
221
+ // No lock file
222
+ }
223
+ // Also check if the runnable YAML has inlineScript.lock
224
+ if (!hasLock && runnable.inlineScript?.lock) {
225
+ hasLock = await isLockResolved(runnable.inlineScript.lock, backendDir);
226
+ }
227
+ if (!hasLock) {
228
+ issues.push({
229
+ path: rawAppYamlPath,
230
+ target: "raw_app_inline_script",
231
+ errors: [
232
+ `Missing lock for ${language} runnable '${runnableId}'. Run 'wmill app generate-locks' to generate locks.`,
233
+ ],
234
+ });
235
+ }
236
+ }
237
+ // Auto-detect code files without YAML config
238
+ for (const fileName of allFiles) {
239
+ if (fileName.endsWith(".yaml") || fileName.endsWith(".lock"))
240
+ continue;
241
+ // Extract runnableId from code file
242
+ let runnableId = null;
243
+ try {
244
+ const lang = inferContentTypeFromFilePath(fileName, defaultTs);
245
+ if (lang) {
246
+ // The runnableId is the filename without the extension portion
247
+ // We need to find which extension matches
248
+ for (const ext of exts) {
249
+ if (fileName.endsWith(ext)) {
250
+ runnableId = fileName.slice(0, -ext.length);
251
+ break;
252
+ }
253
+ }
254
+ }
255
+ }
256
+ catch {
257
+ continue;
258
+ }
259
+ if (!runnableId || processedIds.has(runnableId))
260
+ continue;
261
+ processedIds.add(runnableId);
262
+ let language;
263
+ try {
264
+ language = inferContentTypeFromFilePath(fileName, defaultTs);
265
+ }
266
+ catch {
267
+ continue;
268
+ }
269
+ if (!languageNeedsLock(language))
270
+ continue;
271
+ const lockFile = path.join(backendDir, `${runnableId}.lock`);
272
+ let hasLock = false;
273
+ try {
274
+ const stat = await dntShim.Deno.stat(lockFile);
275
+ hasLock = stat.size > 0;
276
+ }
277
+ catch {
278
+ // No lock file
279
+ }
280
+ if (!hasLock) {
281
+ issues.push({
282
+ path: rawAppYamlPath,
283
+ target: "raw_app_inline_script",
284
+ errors: [
285
+ `Missing lock for ${language} runnable '${runnableId}'. Run 'wmill app generate-locks' to generate locks.`,
286
+ ],
287
+ });
288
+ }
289
+ }
290
+ return issues;
291
+ }
292
+ /**
293
+ * Check for missing lock files across scripts, flow inline scripts,
294
+ * app inline scripts, and raw app backend scripts.
295
+ * Returns a list of issues for scripts/inline scripts that should have locks but don't.
296
+ */
297
+ export async function checkMissingLocks(opts, directory) {
298
+ const initialCwd = dntShim.Deno.cwd();
299
+ const targetDirectory = directory
300
+ ? path.resolve(initialCwd, directory)
301
+ : dntShim.Deno.cwd();
302
+ const { ...syncOpts } = opts;
303
+ const mergedOpts = await mergeConfigWithConfigFile(syncOpts);
304
+ const ignore = await ignoreF(mergedOpts);
305
+ const root = await FSFSElement(targetDirectory, [], false);
306
+ const issues = [];
307
+ const defaultTs = mergedOpts.defaultTs;
308
+ const flowSuffix = getFolderSuffix("flow");
309
+ const appSuffix = getFolderSuffix("app");
310
+ const rawAppSuffix = getFolderSuffix("raw_app");
311
+ // Collect all file paths and categorize them
312
+ const scriptYamls = [];
313
+ const flowYamls = [];
314
+ const appYamls = [];
315
+ const rawAppYamls = [];
316
+ for await (const entry of readDirRecursiveWithIgnore(ignore, root)) {
317
+ if (entry.isDirectory || entry.ignored)
318
+ continue;
319
+ const normalizedPath = normalizePath(entry.path);
320
+ // Standalone script metadata files (not inside flow/app folders)
321
+ if (normalizedPath.endsWith(".script.yaml") &&
322
+ !isFlowInlineScriptPath(normalizedPath) &&
323
+ !isAppInlineScriptPath(normalizedPath)) {
324
+ scriptYamls.push(normalizedPath);
325
+ }
326
+ // Flow definition files
327
+ if (normalizedPath.endsWith("/flow.yaml") &&
328
+ normalizedPath.includes(flowSuffix + "/")) {
329
+ flowYamls.push({
330
+ normalizedPath,
331
+ fullPath: path.join(targetDirectory, entry.path),
332
+ });
333
+ }
334
+ // Normal app definition files
335
+ if (normalizedPath.endsWith("/app.yaml") &&
336
+ normalizedPath.includes(appSuffix + "/")) {
337
+ appYamls.push({
338
+ normalizedPath,
339
+ fullPath: path.join(targetDirectory, entry.path),
340
+ });
341
+ }
342
+ // Raw app definition files
343
+ if (normalizedPath.endsWith("/raw_app.yaml") &&
344
+ normalizedPath.includes(rawAppSuffix + "/")) {
345
+ rawAppYamls.push({
346
+ normalizedPath,
347
+ fullPath: path.join(targetDirectory, entry.path),
348
+ });
349
+ }
350
+ }
351
+ // Check standalone scripts
352
+ for (const yamlPath of scriptYamls) {
353
+ const basePath = yamlPath.replace(/\.script\.yaml$/, "");
354
+ // Find the content file to determine language
355
+ let language = null;
356
+ for (const ext of exts) {
357
+ try {
358
+ await dntShim.Deno.stat(path.join(targetDirectory, basePath + ext));
359
+ language = inferContentTypeFromFilePath(basePath + ext, defaultTs);
360
+ break;
361
+ }
362
+ catch {
363
+ // Content file with this extension doesn't exist, try next
364
+ }
365
+ }
366
+ if (language && languageNeedsLock(language)) {
367
+ // Read the metadata to check the lock field
368
+ try {
369
+ const metadata = (await yamlParseFile(path.join(targetDirectory, yamlPath)));
370
+ const lockResolved = await isLockResolved(metadata?.lock, targetDirectory);
371
+ if (!lockResolved) {
372
+ issues.push({
373
+ path: yamlPath,
374
+ target: "script",
375
+ errors: [
376
+ `Missing lock for ${language} script. Run 'wmill script generate-metadata' to generate locks.`,
377
+ ],
378
+ });
379
+ }
380
+ }
381
+ catch (e) {
382
+ log.debug(`Failed to parse ${yamlPath}: ${e}`);
383
+ }
384
+ }
385
+ }
386
+ // Check flow inline scripts
387
+ for (const { normalizedPath: flowYamlPath, fullPath } of flowYamls) {
388
+ const flowDir = path.dirname(fullPath);
389
+ try {
390
+ const flowFile = (await yamlParseFile(fullPath));
391
+ if (!flowFile?.value?.modules)
392
+ continue;
393
+ const rawScripts = findRawScriptsInModules(flowFile.value.modules);
394
+ for (const script of rawScripts) {
395
+ if (!languageNeedsLock(script.language))
396
+ continue;
397
+ const lockResolved = await isLockResolved(script.lock, flowDir);
398
+ if (!lockResolved) {
399
+ issues.push({
400
+ path: flowYamlPath,
401
+ target: "flow_inline_script",
402
+ errors: [
403
+ `Missing lock for ${script.language} inline script '${script.id}'. Run 'wmill flow generate-locks' to generate locks.`,
404
+ ],
405
+ });
406
+ }
407
+ }
408
+ }
409
+ catch (e) {
410
+ log.debug(`Failed to parse flow ${flowYamlPath}: ${e}`);
411
+ }
412
+ }
413
+ // Check normal app inline scripts
414
+ for (const { normalizedPath: appYamlPath, fullPath } of appYamls) {
415
+ const appDir = path.dirname(fullPath);
416
+ try {
417
+ const appFile = (await yamlParseFile(fullPath));
418
+ if (!appFile?.value)
419
+ continue;
420
+ const inlineScripts = findInlineScriptsInApp(appFile.value);
421
+ for (const script of inlineScripts) {
422
+ if (!languageNeedsLock(script.language))
423
+ continue;
424
+ const lockResolved = await isLockResolved(script.lock, appDir);
425
+ if (!lockResolved) {
426
+ issues.push({
427
+ path: appYamlPath,
428
+ target: "app_inline_script",
429
+ errors: [
430
+ `Missing lock for ${script.language} inline script at '${script.path}'. Run 'wmill app generate-locks' to generate locks.`,
431
+ ],
432
+ });
433
+ }
434
+ }
435
+ }
436
+ catch (e) {
437
+ log.debug(`Failed to parse app ${appYamlPath}: ${e}`);
438
+ }
439
+ }
440
+ // Check raw app backend scripts
441
+ for (const { normalizedPath: rawAppYamlPath, fullPath } of rawAppYamls) {
442
+ const rawAppDir = path.dirname(fullPath);
443
+ const backendDir = path.join(rawAppDir, "backend");
444
+ try {
445
+ await dntShim.Deno.stat(backendDir);
446
+ }
447
+ catch {
448
+ continue; // No backend folder
449
+ }
450
+ try {
451
+ const runnableIssues = await checkRawAppRunnables(backendDir, rawAppYamlPath, defaultTs);
452
+ issues.push(...runnableIssues);
453
+ }
454
+ catch (e) {
455
+ log.debug(`Failed to check raw app runnables ${rawAppYamlPath}: ${e}`);
456
+ }
457
+ }
458
+ return issues;
459
+ }
50
460
  export async function runLint(opts, directory) {
51
461
  const initialCwd = dntShim.Deno.cwd();
52
462
  const explicitTargetDirectory = directory
@@ -110,6 +520,11 @@ export async function runLint(opts, directory) {
110
520
  validFiles += 1;
111
521
  }
112
522
  }
523
+ // Check for missing locks if --locks-required is set
524
+ if (opts.locksRequired) {
525
+ const lockIssues = await checkMissingLocks(opts, explicitTargetDirectory);
526
+ issues.push(...lockIssues);
527
+ }
113
528
  const invalidFiles = issues.length;
114
529
  const shouldFail = invalidFiles > 0 ||
115
530
  (!!opts.failOnWarn && warnings.length > 0);
@@ -180,5 +595,6 @@ const command = new Command()
180
595
  .arguments("[directory:string]")
181
596
  .option("--json", "Output results in JSON format")
182
597
  .option("--fail-on-warn", "Exit with code 1 when warnings are emitted")
598
+ .option("--locks-required", "Fail if scripts or flow inline scripts that need locks have no locks")
183
599
  .action(lint);
184
600
  export default command;
@@ -5,7 +5,7 @@ import { colors, Command, Confirm, ensureDir, log, minimatch, path, SEP, yamlPar
5
5
  import * as wmill from "../../../gen/services.gen.js";
6
6
  import { getTypeStrFromPath, parseFromPath, pushObj, showConflict, showDiff, extractNativeTriggerInfo, } from "../../types.js";
7
7
  import { downloadZip } from "./pull.js";
8
- import { runLint, printReport } from "../lint/lint.js";
8
+ import { runLint, printReport, checkMissingLocks } from "../lint/lint.js";
9
9
  import { exts, findContentFile, findResourceFile, handleScriptMetadata, removeExtensionToPath, } from "../script/script.js";
10
10
  import { handleFile } from "../script/script.js";
11
11
  import { deepEqual, fetchRemoteVersion, isFileResource, isRawAppFile, isWorkspaceDependencies, } from "../../utils/utils.js";
@@ -1713,6 +1713,20 @@ export async function push(opts) {
1713
1713
  dntShim.Deno.exit(1);
1714
1714
  }
1715
1715
  }
1716
+ if (opts.locksRequired) {
1717
+ log.info("Checking for missing locks...");
1718
+ const lockIssues = await checkMissingLocks(opts);
1719
+ if (lockIssues.length > 0) {
1720
+ for (const issue of lockIssues) {
1721
+ for (const error of issue.errors) {
1722
+ log.error(colors.red(` ${issue.path}: ${error}`));
1723
+ }
1724
+ }
1725
+ log.error(colors.red(`\nPush aborted: ${lockIssues.length} script(s) missing locks.`));
1726
+ dntShim.Deno.exit(1);
1727
+ }
1728
+ log.info(colors.green("All scripts have valid locks."));
1729
+ }
1716
1730
  const codebases = await listSyncCodebases(opts);
1717
1731
  if (opts.raw) {
1718
1732
  log.info("--raw is now the default, you can remove it as a flag");
@@ -2289,6 +2303,7 @@ const command = new Command()
2289
2303
  .option("--repository <repo:string>", "Specify repository path (e.g., u/user/repo) when multiple repositories exist")
2290
2304
  .option("--branch <branch:string>", "Override the current git branch (works even outside a git repository)")
2291
2305
  .option("--lint", "Run lint validation before pushing")
2306
+ .option("--locks-required", "Fail if scripts or flow inline scripts that need locks have no locks")
2292
2307
  // deno-lint-ignore no-explicit-any
2293
2308
  .action(push);
2294
2309
  export default command;
package/esm/src/main.js CHANGED
@@ -47,7 +47,7 @@ export { flow, app, script, workspace, resource, resourceType, user, variable, h
47
47
  // console.error(JSON.stringify(event.error, null, 4));
48
48
  // }
49
49
  // });
50
- export const VERSION = "1.639.0";
50
+ export const VERSION = "1.640.0";
51
51
  // Re-exported from constants.ts to maintain backwards compatibility
52
52
  export { WM_FORK_PREFIX } from "./core/constants.js";
53
53
  const command = new Command()
@@ -4,6 +4,16 @@ export const workspaceDependenciesLanguages = [
4
4
  { language: "php", filename: "composer.json" },
5
5
  { language: "go", filename: "go.mod" },
6
6
  ];
7
+ /**
8
+ * Returns true if a script in the given language requires a lock file.
9
+ * Matches the condition in updateScriptLock (metadata.ts).
10
+ */
11
+ export function languageNeedsLock(language) {
12
+ return (workspaceDependenciesLanguages.some((l) => l.language === language) ||
13
+ language === "deno" ||
14
+ language === "rust" ||
15
+ language === "ansible");
16
+ }
7
17
  export function inferContentTypeFromFilePath(contentPath, defaultTs) {
8
18
  if (contentPath.endsWith(".py")) {
9
19
  return "python3";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "windmill-cli",
3
- "version": "1.639.0",
3
+ "version": "1.640.0",
4
4
  "description": "CLI for Windmill",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1 +1 @@
1
- {"version":3,"file":"_create_walk_entry.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.22/_create_walk_entry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAOxD;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,OAAO,CAAC,IAAI,CAAC,QAAQ;IACtD,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,CAYjE;AAED,kEAAkE;AAClE,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAY5E"}
1
+ {"version":3,"file":"_create_walk_entry.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.23/_create_walk_entry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAOxD;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,OAAO,CAAC,IAAI,CAAC,QAAQ;IACtD,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,CAYjE;AAED,kEAAkE;AAClE,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAY5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"_get_file_info_type.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAGxD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AAElD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAQrF"}
1
+ {"version":3,"file":"_get_file_info_type.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.23/_get_file_info_type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAGxD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AAElD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAQrF"}
@@ -1 +1 @@
1
- {"version":3,"file":"_is_same_path.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.22/_is_same_path.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,EAAE,MAAM,GAAG,GAAG,GACjB,OAAO,CAKT"}
1
+ {"version":3,"file":"_is_same_path.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.23/_is_same_path.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,EAAE,MAAM,GAAG,GAAG,GACjB,OAAO,CAKT"}
@@ -1 +1 @@
1
- {"version":3,"file":"_is_subdir.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.22/_is_subdir.ts"],"names":[],"mappings":"AAOA;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,GAAG,aAAY,GACd,OAAO,CAYT"}
1
+ {"version":3,"file":"_is_subdir.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.23/_is_subdir.ts"],"names":[],"mappings":"AAOA;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,GAAG,aAAY,GACd,OAAO,CAYT"}
@@ -1 +1 @@
1
- {"version":3,"file":"_to_path_string.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.22/_to_path_string.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,GAAG,GAAG,GACpB,MAAM,CAER"}
1
+ {"version":3,"file":"_to_path_string.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.23/_to_path_string.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,GAAG,GAAG,GACpB,MAAM,CAER"}
@@ -1 +1 @@
1
- {"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.22/copy.ts"],"names":[],"mappings":"AAaA,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAoOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAsB,IAAI,CACxB,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,OAAO,GAAE,WAAgB,iBAwB1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,OAAO,GAAE,WAAgB,QAwB1B"}
1
+ {"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.23/copy.ts"],"names":[],"mappings":"AAaA,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAoOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAsB,IAAI,CACxB,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,OAAO,GAAE,WAAgB,iBAwB1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,OAAO,GAAE,WAAgB,QAwB1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"empty_dir.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.22/empty_dir.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,iBAkB/C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,QAmB7C"}
1
+ {"version":3,"file":"empty_dir.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.23/empty_dir.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,iBAkB/C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,QAmB7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"ensure_dir.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.22/ensure_dir.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,iBAuBhD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,QAuB9C"}
1
+ {"version":3,"file":"ensure_dir.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.23/ensure_dir.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,iBAuBhD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,QAuB9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"ensure_file.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.22/ensure_file.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBtE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAsB3D"}
1
+ {"version":3,"file":"ensure_file.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.23/ensure_file.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBtE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAsB3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"ensure_link.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.22/ensure_link.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,iBAKrE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,QAKnE"}
1
+ {"version":3,"file":"ensure_link.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.23/ensure_link.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,iBAKrE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,QAKnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"ensure_symlink.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.22/ensure_symlink.ts"],"names":[],"mappings":"AAyBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,GAAG,GAAG,EACpB,QAAQ,EAAE,MAAM,GAAG,GAAG,iBAyCvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,GAAG,EACpB,QAAQ,EAAE,MAAM,GAAG,GAAG,QAyCvB"}
1
+ {"version":3,"file":"ensure_symlink.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.23/ensure_symlink.ts"],"names":[],"mappings":"AAyBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,GAAG,GAAG,EACpB,QAAQ,EAAE,MAAM,GAAG,GAAG,iBAyCvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,GAAG,EACpB,QAAQ,EAAE,MAAM,GAAG,GAAG,QAyCvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"eol.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.22/eol.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,EAAE,EAAG,IAAa,CAAC;AAEhC,mDAAmD;AACnD,eAAO,MAAM,IAAI,EAAG,MAAe,CAAC;AAEpC;;;;;;;;;GASG;AACH,eAAO,MAAM,GAAG,EAAE,IAAI,GAAG,MAEgD,CAAC;AAI1E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,GAAG,IAAI,CAQzD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,GAAG,MAAM,CAE/D"}
1
+ {"version":3,"file":"eol.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.23/eol.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,EAAE,EAAG,IAAa,CAAC;AAEhC,mDAAmD;AACnD,eAAO,MAAM,IAAI,EAAG,MAAe,CAAC;AAEpC;;;;;;;;;GASG;AACH,eAAO,MAAM,GAAG,EAAE,IAAI,GAAG,MAEgD,CAAC;AAI1E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,GAAG,IAAI,CAQzD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,GAAG,MAAM,CAE/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"exists.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.22/exists.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgGG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,OAAO,CAAC,CAsClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+FG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAqCT"}
1
+ {"version":3,"file":"exists.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.23/exists.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgGG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,OAAO,CAAC,CAsClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+FG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAqCT"}
@@ -1 +1 @@
1
- {"version":3,"file":"expand_glob.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.22/expand_glob.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,oCAAoC,CAAC;AAQpF,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AAEvC,yEAAyE;AACzE,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;IAChE;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAuCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmLG;AACH,wBAAuB,UAAU,CAC/B,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,qBAAqB,CAAC,SAAS,CAAC,CAyGlC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAiB,cAAc,CAC7B,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,CAAC,SAAS,CAAC,CAuG7B"}
1
+ {"version":3,"file":"expand_glob.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.23/expand_glob.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,oCAAoC,CAAC;AAQpF,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AAEvC,yEAAyE;AACzE,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;IAChE;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAuCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmLG;AACH,wBAAuB,UAAU,CAC/B,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,qBAAqB,CAAC,SAAS,CAAC,CAyGlC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAiB,cAAc,CAC7B,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,CAAC,SAAS,CAAC,CAuG7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.22/mod.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/fs/1.0.23/mod.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}