gagen 0.4.0 → 0.5.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.
Files changed (115) hide show
  1. package/README.md +161 -8
  2. package/esm/cli.d.ts.map +1 -1
  3. package/esm/cli.js +40 -0
  4. package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.14}/build_message.d.ts.map +1 -1
  5. package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.14}/diff.d.ts.map +1 -1
  6. package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.14}/diff_str.d.ts.map +1 -1
  7. package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.14}/format.d.ts.map +1 -1
  8. package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.14}/styles.d.ts.map +1 -1
  9. package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.14}/types.d.ts.map +1 -1
  10. package/esm/deps/jsr.io/@std/yaml/1.1.1/_chars.d.ts.map +1 -0
  11. package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_dumper_state.d.ts +2 -2
  12. package/esm/deps/jsr.io/@std/yaml/1.1.1/_dumper_state.d.ts.map +1 -0
  13. package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_dumper_state.js +2 -1
  14. package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_loader_state.d.ts +2 -2
  15. package/esm/deps/jsr.io/@std/yaml/1.1.1/_loader_state.d.ts.map +1 -0
  16. package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_loader_state.js +41 -24
  17. package/esm/deps/jsr.io/@std/yaml/1.1.1/_schema.d.ts.map +1 -0
  18. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type/binary.d.ts.map +1 -0
  19. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type/bool.d.ts.map +1 -0
  20. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type/float.d.ts.map +1 -0
  21. package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/float.js +4 -4
  22. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type/int.d.ts.map +1 -0
  23. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type/map.d.ts.map +1 -0
  24. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type/merge.d.ts.map +1 -0
  25. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type/nil.d.ts.map +1 -0
  26. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type/omap.d.ts.map +1 -0
  27. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type/pairs.d.ts.map +1 -0
  28. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type/regexp.d.ts.map +1 -0
  29. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type/seq.d.ts.map +1 -0
  30. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type/set.d.ts.map +1 -0
  31. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type/str.d.ts.map +1 -0
  32. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type/timestamp.d.ts.map +1 -0
  33. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type/undefined.d.ts.map +1 -0
  34. package/esm/deps/jsr.io/@std/yaml/1.1.1/_type.d.ts.map +1 -0
  35. package/esm/deps/jsr.io/@std/yaml/1.1.1/_utils.d.ts.map +1 -0
  36. package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/parse.d.ts +7 -5
  37. package/esm/deps/jsr.io/@std/yaml/1.1.1/parse.d.ts.map +1 -0
  38. package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/parse.js +3 -1
  39. package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/stringify.d.ts +1 -1
  40. package/esm/deps/jsr.io/@std/yaml/1.1.1/stringify.d.ts.map +1 -0
  41. package/esm/job.d.ts.map +1 -1
  42. package/esm/job.js +201 -62
  43. package/esm/mod.d.ts +3 -3
  44. package/esm/mod.d.ts.map +1 -1
  45. package/esm/mod.js +1 -1
  46. package/esm/pin.d.ts +34 -4
  47. package/esm/pin.d.ts.map +1 -1
  48. package/esm/pin.js +124 -40
  49. package/esm/step.d.ts +48 -1
  50. package/esm/step.d.ts.map +1 -1
  51. package/esm/step.js +117 -3
  52. package/esm/workflow.d.ts.map +1 -1
  53. package/esm/workflow.js +4 -4
  54. package/package.json +1 -1
  55. package/esm/deps/jsr.io/@std/yaml/1.0.12/_chars.d.ts.map +0 -1
  56. package/esm/deps/jsr.io/@std/yaml/1.0.12/_dumper_state.d.ts.map +0 -1
  57. package/esm/deps/jsr.io/@std/yaml/1.0.12/_loader_state.d.ts.map +0 -1
  58. package/esm/deps/jsr.io/@std/yaml/1.0.12/_schema.d.ts.map +0 -1
  59. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type/binary.d.ts.map +0 -1
  60. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type/bool.d.ts.map +0 -1
  61. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type/float.d.ts.map +0 -1
  62. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type/int.d.ts.map +0 -1
  63. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type/map.d.ts.map +0 -1
  64. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type/merge.d.ts.map +0 -1
  65. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type/nil.d.ts.map +0 -1
  66. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type/omap.d.ts.map +0 -1
  67. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type/pairs.d.ts.map +0 -1
  68. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type/regexp.d.ts.map +0 -1
  69. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type/seq.d.ts.map +0 -1
  70. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type/set.d.ts.map +0 -1
  71. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type/str.d.ts.map +0 -1
  72. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type/timestamp.d.ts.map +0 -1
  73. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type/undefined.d.ts.map +0 -1
  74. package/esm/deps/jsr.io/@std/yaml/1.0.12/_type.d.ts.map +0 -1
  75. package/esm/deps/jsr.io/@std/yaml/1.0.12/_utils.d.ts.map +0 -1
  76. package/esm/deps/jsr.io/@std/yaml/1.0.12/parse.d.ts.map +0 -1
  77. package/esm/deps/jsr.io/@std/yaml/1.0.12/stringify.d.ts.map +0 -1
  78. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_chars.d.ts +0 -0
  79. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_chars.js +0 -0
  80. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_schema.d.ts +0 -0
  81. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_schema.js +0 -0
  82. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/binary.d.ts +0 -0
  83. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/binary.js +0 -0
  84. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/bool.d.ts +0 -0
  85. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/bool.js +0 -0
  86. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/float.d.ts +0 -0
  87. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/int.d.ts +0 -0
  88. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/int.js +0 -0
  89. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/map.d.ts +0 -0
  90. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/map.js +0 -0
  91. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/merge.d.ts +0 -0
  92. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/merge.js +0 -0
  93. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/nil.d.ts +0 -0
  94. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/nil.js +0 -0
  95. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/omap.d.ts +0 -0
  96. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/omap.js +0 -0
  97. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/pairs.d.ts +0 -0
  98. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/pairs.js +0 -0
  99. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/regexp.d.ts +0 -0
  100. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/regexp.js +0 -0
  101. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/seq.d.ts +0 -0
  102. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/seq.js +0 -0
  103. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/set.d.ts +0 -0
  104. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/set.js +0 -0
  105. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/str.d.ts +0 -0
  106. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/str.js +0 -0
  107. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/timestamp.d.ts +0 -0
  108. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/timestamp.js +0 -0
  109. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/undefined.d.ts +0 -0
  110. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type/undefined.js +0 -0
  111. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type.d.ts +0 -0
  112. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_type.js +0 -0
  113. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_utils.d.ts +0 -0
  114. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/_utils.js +0 -0
  115. /package/esm/deps/jsr.io/@std/yaml/{1.0.12 → 1.1.1}/stringify.js +0 -0
package/esm/pin.js CHANGED
@@ -39,68 +39,143 @@ export function resolveRef(owner, repo, ref) {
39
39
  }
40
40
  throw new Error(`Could not resolve ref "${ref}" for ${owner}/${repo}`);
41
41
  }
42
- /** Resolves non-SHA refs in YAML content to commit hashes. */
42
+ /**
43
+ * Resolves non-SHA refs in YAML content to commit hashes, writing the
44
+ * original ref as an inline comment after the pinned `uses:` value.
45
+ */
43
46
  export function pinYamlContent(yamlStr, resolve = resolveRef, cache) {
44
47
  const pins = [];
45
- const seen = new Map();
48
+ const resolved = new Map();
46
49
  if (cache) {
47
50
  for (const entry of cache) {
48
- seen.set(entry.original, entry.hash);
51
+ resolved.set(entry.original, entry.hash);
49
52
  }
50
53
  }
51
- const content = yamlStr.replace(/^(\s+(?:-\s+)?uses:\s+)(.+)$/gm, (_match, prefix, usesValue) => {
52
- const trimmed = usesValue.trim();
53
- const parsed = parseActionUses(trimmed);
54
+ const content = yamlStr.replace(/^(\s+(?:-\s+)?uses:\s+)(\S+)([^\n]*)$/gm, (_match, prefix, usesValue, rest) => {
55
+ const parsed = parseActionUses(usesValue);
54
56
  if (!parsed)
55
- return `${prefix}${usesValue}`;
57
+ return `${prefix}${usesValue}${rest}`;
56
58
  if (isCommitHash(parsed.ref)) {
57
- // already pinned — preserve the existing pin entry from cache
58
- if (cache) {
59
+ // already pinned — recover the original ref from an inline comment
60
+ // or, failing that, from the legacy footer entries in the cache
61
+ const actionPath = usesValue.substring(0, usesValue.lastIndexOf("@"));
62
+ let originalRef;
63
+ const inlineMatch = rest.match(/^\s*#\s*(\S+)/);
64
+ if (inlineMatch) {
65
+ originalRef = inlineMatch[1];
66
+ }
67
+ else if (cache) {
59
68
  for (const entry of cache) {
60
69
  const ep = parseActionUses(entry.original);
61
70
  if (ep &&
62
71
  `${ep.owner}/${ep.repo}` === `${parsed.owner}/${parsed.repo}` &&
72
+ ep.path === parsed.path &&
63
73
  entry.hash === parsed.ref) {
64
- if (!pins.some((p) => p.original === entry.original)) {
65
- pins.push(entry);
66
- }
74
+ originalRef = ep.ref;
67
75
  break;
68
76
  }
69
77
  }
70
78
  }
71
- return `${prefix}${usesValue}`;
79
+ if (!originalRef)
80
+ return `${prefix}${usesValue}${rest}`;
81
+ const original = `${actionPath}@${originalRef}`;
82
+ if (!pins.some((p) => p.original === original)) {
83
+ pins.push({ original, hash: parsed.ref });
84
+ }
85
+ return `${prefix}${usesValue} # ${originalRef}`;
72
86
  }
73
- let hash = seen.get(trimmed);
87
+ let hash = resolved.get(usesValue);
74
88
  if (!hash) {
75
89
  hash = resolve(parsed.owner, parsed.repo, parsed.ref);
76
- seen.set(trimmed, hash);
90
+ resolved.set(usesValue, hash);
77
91
  }
78
- if (!pins.some((p) => p.original === trimmed)) {
79
- pins.push({ original: trimmed, hash });
92
+ if (!pins.some((p) => p.original === usesValue)) {
93
+ pins.push({ original: usesValue, hash });
80
94
  }
81
- const pinned = trimmed.replace(`@${parsed.ref}`, `@${hash}`);
82
- return `${prefix}${pinned}`;
95
+ const actionPath = usesValue.substring(0, usesValue.lastIndexOf("@"));
96
+ return `${prefix}${actionPath}@${hash} # ${parsed.ref}`;
83
97
  });
84
98
  return { content, pins };
85
99
  }
86
- /** Formats pin entries as comments to append to the file. */
87
- export function formatPinComments(pins) {
88
- if (pins.length === 0)
89
- return "";
90
- const sorted = [...pins].sort((a, b) => a.original < b.original ? -1 : a.original > b.original ? 1 : 0);
91
- const lines = sorted.map((p) => `# gagen:pin ${p.original} = ${p.hash}`);
92
- return "\n" + lines.join("\n") + "\n";
93
- }
94
- /** Extracts pin entries from file content. */
100
+ /**
101
+ * Extracts pin entries from file content. Reads the current inline format
102
+ * (`uses: owner/repo@HASH # ref`) and, for backwards compatibility, the
103
+ * legacy footer format (`# gagen:pin owner/repo@ref = HASH`).
104
+ */
95
105
  export function parsePinComments(content) {
96
106
  const pins = [];
97
- const re = /^# gagen:pin (.+) = ([0-9a-f]{40})$/gm;
98
- let match;
99
- while ((match = re.exec(content)) !== null) {
100
- pins.push({ original: match[1], hash: match[2] });
107
+ const seen = new Set();
108
+ const inlineRe = /^\s+(?:-\s+)?uses:\s+(\S+?)@([0-9a-f]{40})\s+#\s*(\S+)/gm;
109
+ let m;
110
+ while ((m = inlineRe.exec(content)) !== null) {
111
+ const original = `${m[1]}@${m[3]}`;
112
+ if (seen.has(original))
113
+ continue;
114
+ seen.add(original);
115
+ pins.push({ original, hash: m[2] });
116
+ }
117
+ const footerRe = /^# gagen:pin (.+) = ([0-9a-f]{40})$/gm;
118
+ while ((m = footerRe.exec(content)) !== null) {
119
+ if (seen.has(m[1]))
120
+ continue;
121
+ seen.add(m[1]);
122
+ pins.push({ original: m[1], hash: m[2] });
101
123
  }
102
124
  return pins;
103
125
  }
126
+ /**
127
+ * Collects the pinned version for each action across a set of generated
128
+ * YAML files. If an action appears in multiple files with different
129
+ * versions, it is returned as a conflict instead — conflicts must be
130
+ * resolved manually since there is no single correct target version.
131
+ */
132
+ export function collectActionVersions(yamlContents) {
133
+ const seen = new Map();
134
+ for (const content of yamlContents) {
135
+ for (const pin of parsePinComments(content)) {
136
+ const parsed = parseActionUses(pin.original);
137
+ if (!parsed)
138
+ continue;
139
+ const action = parsed.path
140
+ ? `${parsed.owner}/${parsed.repo}/${parsed.path}`
141
+ : `${parsed.owner}/${parsed.repo}`;
142
+ let set = seen.get(action);
143
+ if (!set) {
144
+ set = new Set();
145
+ seen.set(action, set);
146
+ }
147
+ set.add(parsed.ref);
148
+ }
149
+ }
150
+ const versions = new Map();
151
+ const conflicts = new Map();
152
+ for (const [action, set] of seen) {
153
+ if (set.size === 1) {
154
+ versions.set(action, [...set][0]);
155
+ }
156
+ else {
157
+ conflicts.set(action, [...set]);
158
+ }
159
+ }
160
+ return { versions, conflicts };
161
+ }
162
+ /**
163
+ * Rewrites literal `"owner/repo@<ref>"` (or single-quoted) strings in
164
+ * source code to use the target version from the given map. Only matches
165
+ * literals with a single owner/repo[/path]@ref shape; variables, template
166
+ * substitutions, and non-string forms are left alone.
167
+ */
168
+ export function pullVersionsInSource(source, versions) {
169
+ const changes = [];
170
+ const content = source.replace(/(["'])([^"'@\s/]+\/[^"'@\s/]+(?:\/[^"'@\s]+)?)@([^"'\s]+)\1/g, (match, quote, action, ref) => {
171
+ const target = versions.get(action);
172
+ if (!target || target === ref)
173
+ return match;
174
+ changes.push({ action, from: ref, to: target });
175
+ return `${quote}${action}@${target}${quote}`;
176
+ });
177
+ return { content, changes };
178
+ }
104
179
  /**
105
180
  * Replaces pinned hashes in a parsed YAML object with their original
106
181
  * tag/branch refs using the provided pin mapping.
@@ -125,19 +200,28 @@ export function unpinParsedYaml(obj, pins) {
125
200
  hashToOriginal.has(jobObj.uses)) {
126
201
  jobObj.uses = hashToOriginal.get(jobObj.uses);
127
202
  }
128
- // steps
203
+ // steps (including steps nested inside parallel: blocks)
129
204
  if (Array.isArray(jobObj.steps)) {
130
205
  for (const s of jobObj.steps) {
131
- if (typeof s === "object" && s !== null) {
132
- const stepObj = s;
133
- if (typeof stepObj.uses === "string" &&
134
- hashToOriginal.has(stepObj.uses)) {
135
- stepObj.uses = hashToOriginal.get(stepObj.uses);
136
- }
137
- }
206
+ unpinStep(s, hashToOriginal);
138
207
  }
139
208
  }
140
209
  }
141
210
  }
142
211
  return obj;
143
212
  }
213
+ /** Reverts a pinned hash on a single step, recursing into `parallel:` blocks. */
214
+ function unpinStep(step, hashToOriginal) {
215
+ if (typeof step !== "object" || step === null)
216
+ return;
217
+ const stepObj = step;
218
+ if (typeof stepObj.uses === "string" &&
219
+ hashToOriginal.has(stepObj.uses)) {
220
+ stepObj.uses = hashToOriginal.get(stepObj.uses);
221
+ }
222
+ if (Array.isArray(stepObj.parallel)) {
223
+ for (const child of stepObj.parallel) {
224
+ unpinStep(child, hashToOriginal);
225
+ }
226
+ }
227
+ }
package/esm/step.d.ts CHANGED
@@ -14,9 +14,32 @@ export interface StepConfig<O extends string = never> {
14
14
  readonly continueOnError?: boolean | string;
15
15
  readonly timeoutMinutes?: number;
16
16
  readonly outputs?: readonly O[];
17
+ /** Runs the step asynchronously so the job continues without waiting for it. */
18
+ readonly background?: boolean;
19
+ /**
20
+ * Makes this a `wait` step that blocks until the referenced background
21
+ * step(s) finish. Prefer `step.waitFor(...)`, which also wires up ordering.
22
+ */
23
+ readonly wait?: StepLike | readonly StepLike[];
24
+ /**
25
+ * Makes this a `wait-all` step that blocks until all active background steps
26
+ * finish. Prefer `step.waitForAll()`.
27
+ */
28
+ readonly waitAll?: boolean;
29
+ /**
30
+ * Makes this a `cancel` step that terminates the referenced background step.
31
+ * Prefer `step.cancel(...)`, which also wires up ordering.
32
+ */
33
+ readonly cancel?: StepLike;
17
34
  }
18
35
  export declare function resetStepCounter(): void;
19
36
  export type StepLike = Step<string> | StepRef<string> | StepConfig;
37
+ /**
38
+ * How a composite step's children relate to each other. "sequential" children
39
+ * run one after another (the default); "parallel" children run concurrently and
40
+ * serialize to a GitHub Actions `parallel:` block.
41
+ */
42
+ export type CompositeKind = "sequential" | "parallel";
20
43
  export declare class Step<O extends string = never> implements ExpressionSource {
21
44
  #private;
22
45
  readonly config: StepConfig<O>;
@@ -26,8 +49,10 @@ export declare class Step<O extends string = never> implements ExpressionSource
26
49
  readonly _crossJobDeps: readonly Step<string>[];
27
50
  readonly children: readonly StepLike[];
28
51
  constructor(config: StepConfig<O>, crossJobDeps?: Step<string>[]);
29
- constructor(children: readonly StepLike[]);
52
+ constructor(children: readonly StepLike[], kind?: CompositeKind);
30
53
  get id(): string;
54
+ /** Whether this composite's children run sequentially or in parallel. */
55
+ get kind(): CompositeKind;
31
56
  dependsOn(...deps: StepLike[]): StepRef<O>;
32
57
  comesAfter(...deps: StepLike[]): StepRef<O>;
33
58
  if(condition: ConditionLike): StepRef<O>;
@@ -38,12 +63,34 @@ export interface StepBuilder {
38
63
  if(condition: ConditionLike): StepBuilder;
39
64
  dependsOn(...deps: StepLike[]): StepBuilder;
40
65
  comesAfter(...deps: StepLike[]): StepBuilder;
66
+ /** Builds a parallel group from the args, carrying this builder's deps/condition. */
67
+ parallel(...args: (StepConfig | Step<string> | StepRef<string>)[]): StepRef<string>;
41
68
  }
42
69
  export interface StepFunction {
43
70
  <const O extends string = never>(...args: (StepConfig<O> | Step<string> | StepRef<string>)[]): Step<O>;
44
71
  if(condition: ConditionLike): StepBuilder;
45
72
  dependsOn(...deps: StepLike[]): StepBuilder;
46
73
  comesAfter(...deps: StepLike[]): StepBuilder;
74
+ /**
75
+ * Groups steps into a parallel block. The steps run concurrently and
76
+ * serialize to a GitHub Actions `parallel:` block. Shared dependencies
77
+ * (pulled in via `dependsOn`) are hoisted to run before the block.
78
+ */
79
+ parallel(...args: (StepConfig | Step<string> | StepRef<string>)[]): Step<string>;
80
+ /**
81
+ * Creates a `wait` step that blocks until the given background step(s)
82
+ * finish. The referenced steps are ordered before this one and must each be
83
+ * a background step with an explicit `id`.
84
+ */
85
+ waitFor(...steps: (Step<string> | StepRef<string>)[]): StepRef<string>;
86
+ /** Creates a `wait-all` step that blocks until all background steps finish. */
87
+ waitForAll(): Step<string>;
88
+ /**
89
+ * Creates a `cancel` step that terminates the given background step. The
90
+ * referenced step is ordered before this one and must be a background step
91
+ * with an explicit `id`.
92
+ */
93
+ cancel(target: Step<string> | StepRef<string>): StepRef<string>;
47
94
  }
48
95
  export declare const step: StepFunction;
49
96
  export declare class StepRef<O extends string = never> {
package/esm/step.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"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"}
package/esm/step.js CHANGED
@@ -9,7 +9,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _Step_id;
12
+ var _Step_id, _Step_kind;
13
13
  import { Condition, ExpressionValue, isAlwaysTrue, RawCondition, sourcesFrom, } from "./expression.js";
14
14
  let stepCounter = 0;
15
15
  // exported for testing only
@@ -17,8 +17,9 @@ export function resetStepCounter() {
17
17
  stepCounter = 0;
18
18
  }
19
19
  export class Step {
20
- constructor(configOrChildren, crossJobDeps) {
20
+ constructor(configOrChildren, second) {
21
21
  _Step_id.set(this, void 0);
22
+ _Step_kind.set(this, void 0);
22
23
  Object.defineProperty(this, "config", {
23
24
  enumerable: true,
24
25
  configurable: true,
@@ -50,16 +51,20 @@ export class Step {
50
51
  throw new Error("step() requires at least one step");
51
52
  }
52
53
  __classPrivateFieldSet(this, _Step_id, `_step_${stepCounter++}`, "f");
54
+ __classPrivateFieldSet(this, _Step_kind, second ?? "sequential", "f");
53
55
  this.config = {};
54
56
  this._crossJobDeps = Object.freeze([]);
55
57
  this.outputs = {};
56
58
  this.children = Object.freeze([...configOrChildren]);
57
59
  return;
58
60
  }
61
+ __classPrivateFieldSet(this, _Step_kind, "sequential", "f");
62
+ const crossJobDeps = second;
59
63
  const config = configOrChildren;
60
64
  if (config.outputs?.length && !config.id) {
61
65
  throw new Error("Step with outputs must have an explicit id");
62
66
  }
67
+ assertStepShape(config);
63
68
  __classPrivateFieldSet(this, _Step_id, config.id ?? `_step_${stepCounter++}`, "f");
64
69
  this.config = config;
65
70
  this._crossJobDeps = Object.freeze(crossJobDeps ?? []);
@@ -77,6 +82,10 @@ export class Step {
77
82
  get id() {
78
83
  return __classPrivateFieldGet(this, _Step_id, "f");
79
84
  }
85
+ /** Whether this composite's children run sequentially or in parallel. */
86
+ get kind() {
87
+ return __classPrivateFieldGet(this, _Step_kind, "f");
88
+ }
80
89
  dependsOn(...deps) {
81
90
  return new StepRef(this, { dependencies: deps });
82
91
  }
@@ -125,10 +134,26 @@ export class Step {
125
134
  ? this.config.run.join("\n")
126
135
  : this.config.run;
127
136
  }
137
+ if (this.config.background) {
138
+ result.background = true;
139
+ }
140
+ if (this.config.wait != null) {
141
+ const refs = Array.isArray(this.config.wait)
142
+ ? this.config.wait
143
+ : [this.config.wait];
144
+ const ids = [...new Set(refs.map(waitCancelTargetId))];
145
+ result.wait = ids.length === 1 ? ids[0] : ids;
146
+ }
147
+ if (this.config.waitAll) {
148
+ result["wait-all"] = null;
149
+ }
150
+ if (this.config.cancel != null) {
151
+ result.cancel = waitCancelTargetId(this.config.cancel);
152
+ }
128
153
  return result;
129
154
  }
130
155
  }
131
- _Step_id = new WeakMap();
156
+ _Step_id = new WeakMap(), _Step_kind = new WeakMap();
132
157
  function buildStepFromArgs(...args) {
133
158
  if (args.length === 0) {
134
159
  throw new Error("step() requires at least one argument");
@@ -192,13 +217,64 @@ function createStepBuilder(init) {
192
217
  afterDependencies: [...(init.afterDependencies ?? []), ...deps],
193
218
  });
194
219
  };
220
+ builder.parallel = (...args) => {
221
+ return new StepRef(buildParallelFromArgs(...args), {
222
+ condition: init.condition,
223
+ dependencies: init.dependencies ?? [],
224
+ afterDependencies: init.afterDependencies ?? [],
225
+ });
226
+ };
195
227
  return builder;
196
228
  }
197
229
  export const step = Object.assign(buildStepFromArgs, {
198
230
  if: (condition) => createStepBuilder({ condition }),
199
231
  dependsOn: (...deps) => createStepBuilder({ dependencies: deps }),
200
232
  comesAfter: (...deps) => createStepBuilder({ afterDependencies: deps }),
233
+ parallel: (...args) => buildParallelFromArgs(...args),
234
+ waitFor: (...steps) => buildWaitFor(...steps),
235
+ waitForAll: () => new Step({ waitAll: true }),
236
+ cancel: (target) => buildCancel(target),
201
237
  });
238
+ /** Builds a `wait` step that depends on (and orders after) its targets. */
239
+ function buildWaitFor(...steps) {
240
+ if (steps.length === 0) {
241
+ throw new Error("step.waitFor() requires at least one step");
242
+ }
243
+ for (const s of steps) {
244
+ assertWaitCancelTarget(s, "step.waitFor()", "each referenced step");
245
+ }
246
+ // keep the original Step/StepRef so the target's own deps are preserved
247
+ return new StepRef(new Step({ wait: steps }), {
248
+ dependencies: steps,
249
+ });
250
+ }
251
+ /** Builds a `cancel` step that depends on (and orders after) its target. */
252
+ function buildCancel(target) {
253
+ assertWaitCancelTarget(target, "step.cancel()", "the referenced step");
254
+ return new StepRef(new Step({ cancel: target }), {
255
+ dependencies: [target],
256
+ });
257
+ }
258
+ /** Validates a `waitFor`/`cancel` target: a background step with an explicit id. */
259
+ function assertWaitCancelTarget(target, call, subject) {
260
+ const step = unwrapStep(target);
261
+ if (!step.config.id) {
262
+ throw new Error(`${call} requires ${subject} to have an explicit id`);
263
+ }
264
+ if (!step.config.background) {
265
+ throw new Error(`${call} can only target a background step`);
266
+ }
267
+ }
268
+ /** Builds a parallel composite step from the given args. */
269
+ function buildParallelFromArgs(...args) {
270
+ if (args.length === 0) {
271
+ throw new Error("step.parallel() requires at least one argument");
272
+ }
273
+ const children = args.map((item) => item instanceof Step || item instanceof StepRef
274
+ ? item
275
+ : new Step(item));
276
+ return new Step(children, "parallel");
277
+ }
202
278
  // --- StepRef: immutable wrapper for per-usage deps/conditions ---
203
279
  export class StepRef {
204
280
  constructor(step, init) {
@@ -263,6 +339,44 @@ export class StepRef {
263
339
  }
264
340
  }
265
341
  // --- serialization helpers ---
342
+ /**
343
+ * Validates that a step does not combine mutually exclusive control keys.
344
+ * `wait`, `wait-all`, and `cancel` are distinct step kinds — each must stand
345
+ * alone (a step that waits or cancels does no work of its own).
346
+ */
347
+ function assertStepShape(config) {
348
+ const controlKeys = [];
349
+ if (config.wait != null)
350
+ controlKeys.push("wait");
351
+ if (config.waitAll)
352
+ controlKeys.push("wait-all");
353
+ if (config.cancel != null)
354
+ controlKeys.push("cancel");
355
+ if (controlKeys.length > 1) {
356
+ throw new Error(`A step cannot combine ${controlKeys.join(", ")} — ` +
357
+ "wait, wait-all, and cancel are mutually exclusive.");
358
+ }
359
+ if (controlKeys.length === 1) {
360
+ const work = [];
361
+ if (config.run != null)
362
+ work.push("run");
363
+ if (config.uses != null)
364
+ work.push("uses");
365
+ if (config.background)
366
+ work.push("background");
367
+ if (work.length > 0) {
368
+ throw new Error(`A ${controlKeys[0]} step cannot also have ${work.join(", ")}.`);
369
+ }
370
+ }
371
+ }
372
+ /** Resolves the explicit id of a step referenced by `wait`/`cancel`. */
373
+ function waitCancelTargetId(item) {
374
+ const step = unwrapStep(item);
375
+ if (!step.config.id) {
376
+ throw new Error("a step referenced by `wait` or `cancel` must have an explicit id");
377
+ }
378
+ return step.config.id;
379
+ }
266
380
  export function serializeConditionLike(c) {
267
381
  if (c instanceof Condition) {
268
382
  return c.toExpression();
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"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"}
package/esm/workflow.js CHANGED
@@ -11,11 +11,11 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
11
11
  };
12
12
  var _Workflow_config, _Workflow_jobs;
13
13
  import process from "node:process";
14
- import { parse } from "./deps/jsr.io/@std/yaml/1.0.12/parse.js";
15
- import { stringify } from "./deps/jsr.io/@std/yaml/1.0.12/stringify.js";
14
+ import { parse } from "./deps/jsr.io/@std/yaml/1.1.1/parse.js";
15
+ import { stringify } from "./deps/jsr.io/@std/yaml/1.1.1/stringify.js";
16
16
  import { ExpressionValue } from "./expression.js";
17
17
  import { Job, job as jobFn, resolveJobId } from "./job.js";
18
- import { formatPinComments, parsePinComments, pinYamlContent, unpinParsedYaml, } from "./pin.js";
18
+ import { parsePinComments, pinYamlContent, unpinParsedYaml } from "./pin.js";
19
19
  import fs from "node:fs";
20
20
  export class Workflow {
21
21
  constructor(config) {
@@ -154,7 +154,7 @@ export class Workflow {
154
154
  }
155
155
  }
156
156
  const result = pinYamlContent(expected, resolve, cache);
157
- output = result.content + formatPinComments(result.pins);
157
+ output = result.content;
158
158
  }
159
159
  fs.writeFileSync(options.filePath, output);
160
160
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gagen",
3
- "version": "0.4.0",
3
+ "version": "0.5.1",
4
4
  "description": "Generate complex GitHub Actions YAML files using a declarative API.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1 +0,0 @@
1
- {"version":3,"file":"_chars.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_chars.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,GAAG,QAAS,CAAC;AAC1B,eAAO,MAAM,GAAG,IAAO,CAAC;AACxB,eAAO,MAAM,SAAS,KAAO,CAAC;AAC9B,eAAO,MAAM,eAAe,KAAO,CAAC;AACpC,eAAO,MAAM,KAAK,KAAO,CAAC;AAC1B,eAAO,MAAM,WAAW,KAAO,CAAC;AAChC,eAAO,MAAM,YAAY,KAAO,CAAC;AACjC,eAAO,MAAM,KAAK,KAAO,CAAC;AAC1B,eAAO,MAAM,OAAO,KAAO,CAAC;AAC5B,eAAO,MAAM,SAAS,KAAO,CAAC;AAC9B,eAAO,MAAM,YAAY,KAAO,CAAC;AACjC,eAAO,MAAM,QAAQ,KAAO,CAAC;AAC7B,eAAO,MAAM,IAAI,KAAO,CAAC;AACzB,eAAO,MAAM,KAAK,KAAO,CAAC;AAC1B,eAAO,MAAM,KAAK,KAAO,CAAC;AAC1B,eAAO,MAAM,GAAG,KAAO,CAAC;AACxB,eAAO,MAAM,KAAK,KAAO,CAAC;AAC1B,eAAO,MAAM,YAAY,KAAO,CAAC;AACjC,eAAO,MAAM,YAAY,KAAO,CAAC;AACjC,eAAO,MAAM,QAAQ,KAAO,CAAC;AAC7B,eAAO,MAAM,aAAa,KAAO,CAAC;AAClC,eAAO,MAAM,mBAAmB,KAAO,CAAC;AACxC,eAAO,MAAM,SAAS,KAAO,CAAC;AAC9B,eAAO,MAAM,oBAAoB,KAAO,CAAC;AACzC,eAAO,MAAM,YAAY,KAAO,CAAC;AACjC,eAAO,MAAM,kBAAkB,MAAO,CAAC;AACvC,eAAO,MAAM,aAAa,MAAO,CAAC;AAClC,eAAO,MAAM,mBAAmB,MAAO,CAAC;AAExC,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAExC;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAQlD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_dumper_state.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_dumper_state.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_loader_state.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_loader_state.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_schema.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_schema.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAiBjD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE/E;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,MAAM,OAAO,GAAG,MAAM,CAC1B,QAAQ,GAAG,UAAU,EACrB,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAC1B,CAAC;AAqBF,MAAM,WAAW,MAAM;IACrB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB;AA2CD;;GAEG;AACH,eAAO,MAAM,cAAc,QAIzB,CAAC;AA2BH,eAAO,MAAM,UAAU,yBAMrB,CAAC;AAEH,wBAAgB,SAAS,CACvB,MAAM,GAAE,UAAsB,EAC9B,KAAK,CAAC,EAAE,YAAY,EAAE,GACrB,MAAM,CAWR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_type/binary.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAmHxC,eAAO,MAAM,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAO7C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bool.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_type/bool.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAMxC,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAyBxC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"float.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_type/float.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAgB,IAAI,EAAE,MAAM,aAAa,CAAC;AAkGtD,eAAO,MAAM,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAQxC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"int.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_type/int.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAqIxC,eAAO,MAAM,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAmCtC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_type/map.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CASxC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_type/merge.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAKzC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"nil.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_type/nil.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAmBpC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"omap.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_type/omap.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAiBxC,eAAO,MAAM,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAOjE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pairs.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_type/pairs.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAQxC,eAAO,MAAM,KAAK,EAAE,IAAI,CAAC,UAAU,CAQlC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"regexp.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_type/regexp.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAIxC,eAAO,MAAM,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAuBzC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"seq.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_type/seq.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAK3C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_type/set.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAS7D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"str.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_type/str.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAKtC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"timestamp.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_type/timestamp.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAsFxC,eAAO,MAAM,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAS1C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"undefined.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@std/yaml/1.0.12/_type/undefined.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAenD,CAAC"}