gagen 0.2.7 → 0.2.8

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.
@@ -23,11 +23,6 @@ export declare class ExpressionValue {
23
23
  /** wrap in `${{ }}` for use in YAML */
24
24
  toString(): string;
25
25
  }
26
- /**
27
- * A boolean condition used in `if` fields. Supports fluent `.and()`, `.or()`,
28
- * `.not()` composition. Tracks all ExpressionSources referenced so that
29
- * dependencies can be inferred automatically.
30
- */
31
26
  export declare abstract class Condition {
32
27
  readonly sources: ReadonlySet<ExpressionSource>;
33
28
  constructor(sources: ReadonlySet<ExpressionSource>);
@@ -52,6 +47,8 @@ export declare abstract class Condition {
52
47
  flattenAnd(): Condition[];
53
48
  /** returns the flat OR children of this condition as Condition objects */
54
49
  flattenOr(): Condition[];
50
+ /** returns true if this condition always evaluates to true */
51
+ isAlwaysTrue(): boolean;
55
52
  /** render without `${{ }}` wrapping */
56
53
  abstract toExpression(): string;
57
54
  /** render wrapped in `${{ }}` for YAML `if` fields */
@@ -74,6 +71,8 @@ export declare class FunctionCallCondition extends Condition {
74
71
  export declare class RawCondition extends Condition {
75
72
  #private;
76
73
  constructor(expression: string, sources: ReadonlySet<ExpressionSource>);
74
+ isAlwaysTrue(): boolean;
75
+ not(): Condition;
77
76
  toExpression(): string;
78
77
  }
79
78
  /** Creates an ExpressionValue from a raw expression string. */
@@ -171,6 +170,10 @@ export declare const conditions: {
171
170
  */
172
171
  readonly isRunnerArch: (arch: "X86" | "X64" | "ARM" | "ARM64") => Condition;
173
172
  };
173
+ /** Checks if a condition-like value always evaluates to true. */
174
+ export declare function isAlwaysTrue(c: Condition | ExpressionValue | string): boolean;
175
+ /** Checks if a condition-like value always evaluates to false. */
176
+ export declare function isAlwaysFalse(c: Condition | ExpressionValue | string): boolean;
174
177
  export declare function formatLiteral(value: string | number | boolean): string;
175
178
  export declare function sourcesFrom(...sourceables: ({
176
179
  source?: ExpressionSource;
@@ -208,5 +211,17 @@ export declare class ElseIfBuilder {
208
211
  /** Provide the value for this branch. */
209
212
  then(value: TernaryValue): ThenBuilder;
210
213
  }
214
+ /** Maps a property type to Condition (for booleans/conditions) or ExpressionValue (for values). */
215
+ export type ExprOf<T> = [T] extends [boolean | Condition] ? Condition : ExpressionValue;
216
+ /** Maps all properties of an object to their expression/condition form. */
217
+ export type ExprMap<T extends Record<string, unknown>> = {
218
+ readonly [K in keyof T & string]: ExprOf<T[K]>;
219
+ };
220
+ /**
221
+ * Converts an object with plain values into an object with typed
222
+ * Condition/ExpressionValue properties. Booleans become Conditions,
223
+ * strings/numbers become ExpressionValues that serialize inline.
224
+ */
225
+ export declare function defineExprObj<const T extends Record<string, unknown>>(obj: T): ExprMap<T>;
211
226
  export {};
212
227
  //# sourceMappingURL=expression.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../src/expression.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../src/expression.ts"],"names":[],"mappings":"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"}
package/esm/expression.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 _ExpressionValue_expression, _ExpressionValue_allSources, _ComparisonCondition_left, _ComparisonCondition_op, _ComparisonCondition_right, _FunctionCallCondition_fn, _FunctionCallCondition_args, _LogicalCondition_instances, _a, _LogicalCondition_left, _LogicalCondition_right, _LogicalCondition_needsParens, _NotCondition_inner, _RawCondition_expression, _ThenBuilder_branches, _ThenBuilder_sources, _ElseIfBuilder_branches, _ElseIfBuilder_sources, _ElseIfBuilder_condition;
12
+ var _ExpressionValue_expression, _ExpressionValue_allSources, _ComparisonCondition_left, _ComparisonCondition_op, _ComparisonCondition_right, _FunctionCallCondition_fn, _FunctionCallCondition_args, _LogicalCondition_instances, _a, _LogicalCondition_left, _LogicalCondition_right, _LogicalCondition_needsParens, _NotCondition_inner, _RawCondition_expression, _ThenBuilder_branches, _ThenBuilder_sources, _ElseIfBuilder_branches, _ElseIfBuilder_sources, _ElseIfBuilder_condition, _InlineValue_plainValue;
13
13
  const EMPTY_SOURCES = new Set();
14
14
  /**
15
15
  * An expression that resolves to a value inside a GitHub Actions workflow.
@@ -45,10 +45,20 @@ export class ExpressionValue {
45
45
  return __classPrivateFieldGet(this, _ExpressionValue_expression, "f");
46
46
  }
47
47
  equals(value) {
48
- return new ComparisonCondition(__classPrivateFieldGet(this, _ExpressionValue_expression, "f"), "==", value, sourcesFrom(this));
48
+ const sources = sourcesFrom(this);
49
+ if (isLiteralExpression(__classPrivateFieldGet(this, _ExpressionValue_expression, "f"))) {
50
+ const isEqual = __classPrivateFieldGet(this, _ExpressionValue_expression, "f") === formatLiteral(value);
51
+ return new RawCondition(isEqual ? "true" : "false", sources);
52
+ }
53
+ return new ComparisonCondition(__classPrivateFieldGet(this, _ExpressionValue_expression, "f"), "==", value, sources);
49
54
  }
50
55
  notEquals(value) {
51
- return new ComparisonCondition(__classPrivateFieldGet(this, _ExpressionValue_expression, "f"), "!=", value, sourcesFrom(this));
56
+ const sources = sourcesFrom(this);
57
+ if (isLiteralExpression(__classPrivateFieldGet(this, _ExpressionValue_expression, "f"))) {
58
+ const isEqual = __classPrivateFieldGet(this, _ExpressionValue_expression, "f") === formatLiteral(value);
59
+ return new RawCondition(isEqual ? "false" : "true", sources);
60
+ }
61
+ return new ComparisonCondition(__classPrivateFieldGet(this, _ExpressionValue_expression, "f"), "!=", value, sources);
52
62
  }
53
63
  startsWith(prefix) {
54
64
  return new FunctionCallCondition("startsWith", [__classPrivateFieldGet(this, _ExpressionValue_expression, "f"), formatLiteral(prefix)], sourcesFrom(this));
@@ -70,6 +80,13 @@ _ExpressionValue_expression = new WeakMap(), _ExpressionValue_allSources = new W
70
80
  * `.not()` composition. Tracks all ExpressionSources referenced so that
71
81
  * dependencies can be inferred automatically.
72
82
  */
83
+ // helpers for construction-time simplification
84
+ function isTrueCondition(c) {
85
+ return c instanceof RawCondition && c.toExpression() === "true";
86
+ }
87
+ function isFalseCondition(c) {
88
+ return c instanceof RawCondition && c.toExpression() === "false";
89
+ }
73
90
  export class Condition {
74
91
  constructor(sources) {
75
92
  Object.defineProperty(this, "sources", {
@@ -81,18 +98,30 @@ export class Condition {
81
98
  this.sources = sources;
82
99
  }
83
100
  and(other) {
84
- if (other === true)
101
+ const right = typeof other === "boolean"
102
+ ? new RawCondition(String(other), EMPTY_SOURCES)
103
+ : other;
104
+ if (isTrueCondition(this))
105
+ return right;
106
+ if (isTrueCondition(right))
85
107
  return this;
86
- if (other === false)
87
- return new RawCondition("false", this.sources);
88
- return new LogicalCondition("&&", this, other, unionSources(this, other));
108
+ if (isFalseCondition(this) || isFalseCondition(right)) {
109
+ return new RawCondition("false", unionSources(this, right));
110
+ }
111
+ return new LogicalCondition("&&", this, right, unionSources(this, right));
89
112
  }
90
113
  or(other) {
91
- if (other === false)
114
+ const right = typeof other === "boolean"
115
+ ? new RawCondition(String(other), EMPTY_SOURCES)
116
+ : other;
117
+ if (isFalseCondition(this))
118
+ return right;
119
+ if (isFalseCondition(right))
92
120
  return this;
93
- if (other === true)
94
- return new RawCondition("true", this.sources);
95
- return new LogicalCondition("||", this, other, unionSources(this, other));
121
+ if (isTrueCondition(this) || isTrueCondition(right)) {
122
+ return new RawCondition("true", unionSources(this, right));
123
+ }
124
+ return new LogicalCondition("||", this, right, unionSources(this, right));
96
125
  }
97
126
  not() {
98
127
  return new NotCondition(this, this.sources);
@@ -123,6 +152,10 @@ export class Condition {
123
152
  flattenOr() {
124
153
  return [this];
125
154
  }
155
+ /** returns true if this condition always evaluates to true */
156
+ isAlwaysTrue() {
157
+ return false;
158
+ }
126
159
  /** render wrapped in `${{ }}` for YAML `if` fields */
127
160
  toString() {
128
161
  return `\${{ ${this.toExpression()} }}`;
@@ -244,6 +277,18 @@ export class RawCondition extends Condition {
244
277
  _RawCondition_expression.set(this, void 0);
245
278
  __classPrivateFieldSet(this, _RawCondition_expression, expression, "f");
246
279
  }
280
+ isAlwaysTrue() {
281
+ return __classPrivateFieldGet(this, _RawCondition_expression, "f") === "true";
282
+ }
283
+ not() {
284
+ if (__classPrivateFieldGet(this, _RawCondition_expression, "f") === "true") {
285
+ return new RawCondition("false", this.sources);
286
+ }
287
+ if (__classPrivateFieldGet(this, _RawCondition_expression, "f") === "false") {
288
+ return new RawCondition("true", this.sources);
289
+ }
290
+ return super.not();
291
+ }
247
292
  toExpression() {
248
293
  return __classPrivateFieldGet(this, _RawCondition_expression, "f");
249
294
  }
@@ -349,11 +394,37 @@ export const conditions = {
349
394
  isRunnerArch: (arch) => expr("runner.arch").equals(arch),
350
395
  };
351
396
  // --- helpers ---
397
+ /** Checks if a condition-like value always evaluates to true. */
398
+ export function isAlwaysTrue(c) {
399
+ if (c instanceof Condition)
400
+ return c.isAlwaysTrue();
401
+ if (typeof c === "string")
402
+ return c === "true";
403
+ return false;
404
+ }
405
+ /** Checks if a condition-like value always evaluates to false. */
406
+ export function isAlwaysFalse(c) {
407
+ if (c instanceof Condition)
408
+ return isFalseCondition(c);
409
+ if (typeof c === "string")
410
+ return c === "false";
411
+ return false;
412
+ }
352
413
  export function formatLiteral(value) {
353
414
  if (typeof value === "string")
354
415
  return `'${value}'`;
355
416
  return String(value);
356
417
  }
418
+ /** checks if an expression string is a literal (quoted string, number, or boolean) */
419
+ function isLiteralExpression(expr) {
420
+ if (expr.startsWith("'") && expr.endsWith("'"))
421
+ return true;
422
+ if (expr === "true" || expr === "false")
423
+ return true;
424
+ if (expr.length > 0 && String(Number(expr)) === expr)
425
+ return true;
426
+ return false;
427
+ }
357
428
  export function sourcesFrom(...sourceables) {
358
429
  const set = new Set();
359
430
  for (const v of sourceables) {
@@ -470,3 +541,44 @@ export class ElseIfBuilder {
470
541
  }
471
542
  }
472
543
  _ElseIfBuilder_branches = new WeakMap(), _ElseIfBuilder_sources = new WeakMap(), _ElseIfBuilder_condition = new WeakMap();
544
+ // --- inline value (serializes as plain value, not ${{ }}) ---
545
+ class InlineValue extends ExpressionValue {
546
+ constructor(value) {
547
+ super(typeof value === "string" ? `'${value}'` : String(value));
548
+ _InlineValue_plainValue.set(this, void 0);
549
+ __classPrivateFieldSet(this, _InlineValue_plainValue, String(value), "f");
550
+ }
551
+ toString() {
552
+ return __classPrivateFieldGet(this, _InlineValue_plainValue, "f");
553
+ }
554
+ }
555
+ _InlineValue_plainValue = new WeakMap();
556
+ /**
557
+ * Converts an object with plain values into an object with typed
558
+ * Condition/ExpressionValue properties. Booleans become Conditions,
559
+ * strings/numbers become ExpressionValues that serialize inline.
560
+ */
561
+ export function defineExprObj(obj) {
562
+ const result = {};
563
+ for (const [key, value] of Object.entries(obj)) {
564
+ if (value instanceof Condition) {
565
+ result[key] = value;
566
+ }
567
+ else if (value instanceof ExpressionValue) {
568
+ result[key] = value;
569
+ }
570
+ else if (typeof value === "boolean") {
571
+ result[key] = new RawCondition(String(value), EMPTY_SOURCES);
572
+ }
573
+ else if (typeof value === "string") {
574
+ result[key] = new InlineValue(value);
575
+ }
576
+ else if (typeof value === "number") {
577
+ result[key] = new InlineValue(value);
578
+ }
579
+ else {
580
+ throw new Error(`Unsupported value type for key "${key}"`);
581
+ }
582
+ }
583
+ return result;
584
+ }
package/esm/job.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type ExpressionSource, ExpressionValue } from "./expression.js";
2
2
  import type { Permissions } from "./permissions.js";
3
- import { type ConditionLike, type ConfigValue, Step, type StepLike } from "./step.js";
3
+ import { type ConditionLike, type ConfigValue, type MaybeStepLike, Step, type StepLike } from "./step.js";
4
4
  interface CommonJobFields {
5
5
  name?: string | ExpressionValue;
6
6
  needs?: Job[];
@@ -51,7 +51,7 @@ export interface ReusableJobConfig extends CommonJobFields {
51
51
  export type JobConfig = StepsJobConfig | ReusableJobConfig;
52
52
  export interface StepsJobDef extends StepsJobConfig {
53
53
  id?: string;
54
- steps: StepLike | StepLike[];
54
+ steps: MaybeStepLike | MaybeStepLike[];
55
55
  outputs?: Record<string, ExpressionValue>;
56
56
  }
57
57
  export interface ReusableJobDef extends ReusableJobConfig {
package/esm/job.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"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"}
package/esm/job.js CHANGED
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _Job_instances, _Job_id, _Job_config, _Job_leafItems, _Job_outputDefs, _Job_cachedGraph, _Job_cachedLeafSteps, _Job_buildGraph;
13
- import { Condition, ExpressionValue, } from "./expression.js";
13
+ import { Condition, ExpressionValue, isAlwaysFalse, isAlwaysTrue, } from "./expression.js";
14
14
  import { Matrix } from "./matrix.js";
15
15
  import { serializeConditionLike, serializeConfigValues, Step, StepRef, toCondition, unwrapSteps, } from "./step.js";
16
16
  function ensureEntry(graph, step) {
@@ -322,7 +322,7 @@ export class Job {
322
322
  if (needs.length > 0) {
323
323
  result.needs = needs.map((j) => j.id);
324
324
  }
325
- if (config.if != null) {
325
+ if (config.if != null && !isAlwaysTrue(config.if)) {
326
326
  result.if = serializeConditionLike(config.if);
327
327
  }
328
328
  if ("uses" in config) {
@@ -430,9 +430,12 @@ export class Job {
430
430
  const { graph } = __classPrivateFieldGet(this, _Job_instances, "m", _Job_buildGraph).call(this);
431
431
  const resolvedSteps = this.resolveSteps();
432
432
  const effectiveConditions = computeEffectiveConditions(resolvedSteps, graph);
433
- result.steps = resolvedSteps.map((s) => {
434
- return s.toYaml(effectiveConditions.get(s));
435
- });
433
+ result.steps = resolvedSteps
434
+ .filter((s) => {
435
+ const cond = effectiveConditions.get(s);
436
+ return cond == null || !isAlwaysFalse(cond);
437
+ })
438
+ .map((s) => s.toYaml(effectiveConditions.get(s)));
436
439
  return result;
437
440
  }
438
441
  }
@@ -996,7 +999,7 @@ export function job(id, config) {
996
999
  }
997
1000
  const { id: _id, steps, outputs, ...jobConfig } = config;
998
1001
  return new Job(id, jobConfig, {
999
- steps: Array.isArray(steps) ? steps : [steps],
1002
+ steps: (Array.isArray(steps) ? steps : [steps]).filter((s) => s != null),
1000
1003
  outputs,
1001
1004
  });
1002
1005
  }
package/esm/mod.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import "./_dnt.polyfills.js";
2
2
  export { Step, step, StepRef } from "./step.js";
3
- export type { ConditionLike, ConfigValue, StepBuilder, StepConfig, StepFunction, StepLike, } from "./step.js";
3
+ export type { ConditionLike, ConfigValue, MaybeStepLike, StepBuilder, StepConfig, StepFunction, StepLike, } from "./step.js";
4
4
  export { Job, job } from "./job.js";
5
5
  export type { JobConfig, JobDef, ReusableJobConfig, ReusableJobDef, ServiceContainer, StepsJobConfig, StepsJobDef, } from "./job.js";
6
6
  export { createWorkflow, isLinting, Workflow } from "./workflow.js";
7
7
  export type { WorkflowCallInput, WorkflowCallOutput, WorkflowCallSecret, WorkflowCallTrigger, WorkflowConfig, WorkflowTriggers, } from "./workflow.js";
8
- export { Condition, conditions, ElseIfBuilder, expr, ExpressionValue, ThenBuilder, } from "./expression.js";
9
- export type { ExpressionSource, TernaryValue } from "./expression.js";
8
+ export { Condition, conditions, defineExprObj, ElseIfBuilder, expr, ExpressionValue, ThenBuilder, } from "./expression.js";
9
+ export type { ExpressionSource, ExprMap, ExprOf, TernaryValue, } from "./expression.js";
10
10
  export { defineMatrix, Matrix } from "./matrix.js";
11
11
  export type { PermissionLevel, Permissions, PermissionScope, } from "./permissions.js";
12
12
  export { Artifact, defineArtifact } from "./artifact.js";
package/esm/mod.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,YAAY,EACZ,QAAQ,GACT,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,YAAY,EACV,SAAS,EACT,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,WAAW,GACZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,SAAS,EACT,UAAU,EACV,aAAa,EACb,IAAI,EACJ,eAAe,EACf,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EACV,eAAe,EACf,WAAW,EACX,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EACV,eAAe,EACf,cAAc,EACd,YAAY,GACb,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACV,YAAY,EACZ,QAAQ,GACT,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,YAAY,EACV,SAAS,EACT,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,WAAW,GACZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,SAAS,EACT,UAAU,EACV,aAAa,EACb,aAAa,EACb,IAAI,EACJ,eAAe,EACf,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,gBAAgB,EAChB,OAAO,EACP,MAAM,EACN,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EACV,eAAe,EACf,WAAW,EACX,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EACV,eAAe,EACf,cAAc,EACd,YAAY,GACb,MAAM,eAAe,CAAC"}
package/esm/mod.js CHANGED
@@ -2,6 +2,6 @@ import "./_dnt.polyfills.js";
2
2
  export { Step, step, StepRef } from "./step.js";
3
3
  export { Job, job } from "./job.js";
4
4
  export { createWorkflow, isLinting, Workflow } from "./workflow.js";
5
- export { Condition, conditions, ElseIfBuilder, expr, ExpressionValue, ThenBuilder, } from "./expression.js";
5
+ export { Condition, conditions, defineExprObj, ElseIfBuilder, expr, ExpressionValue, ThenBuilder, } from "./expression.js";
6
6
  export { defineMatrix, Matrix } from "./matrix.js";
7
7
  export { Artifact, defineArtifact } from "./artifact.js";
package/esm/step.d.ts CHANGED
@@ -17,6 +17,7 @@ export interface StepConfig<O extends string = never> {
17
17
  }
18
18
  export declare function resetStepCounter(): void;
19
19
  export type StepLike = Step<string> | StepRef<string>;
20
+ export type MaybeStepLike = StepLike | null | undefined;
20
21
  export declare class Step<O extends string = never> implements ExpressionSource {
21
22
  #private;
22
23
  readonly config: StepConfig<O>;
@@ -26,24 +27,24 @@ export declare class Step<O extends string = never> implements ExpressionSource
26
27
  readonly _crossJobDeps: readonly Step<string>[];
27
28
  readonly children: readonly StepLike[];
28
29
  constructor(config: StepConfig<O>, crossJobDeps?: Step<string>[]);
29
- constructor(children: readonly StepLike[]);
30
+ constructor(children: readonly MaybeStepLike[]);
30
31
  get id(): string;
31
- dependsOn(...deps: StepLike[]): StepRef<O>;
32
- comesAfter(...deps: StepLike[]): StepRef<O>;
32
+ dependsOn(...deps: MaybeStepLike[]): StepRef<O>;
33
+ comesAfter(...deps: MaybeStepLike[]): StepRef<O>;
33
34
  if(condition: ConditionLike): StepRef<O>;
34
35
  toYaml(effectiveIf?: Condition): Record<string, unknown>;
35
36
  }
36
37
  export interface StepBuilder {
37
- <const O extends string = never>(...args: (StepConfig<O> | Step<string> | StepRef<string>)[]): StepRef<O>;
38
+ <const O extends string = never>(...args: (StepConfig<O> | Step<string> | StepRef<string> | null | undefined)[]): StepRef<O>;
38
39
  if(condition: ConditionLike): StepBuilder;
39
- dependsOn(...deps: StepLike[]): StepBuilder;
40
- comesAfter(...deps: StepLike[]): StepBuilder;
40
+ dependsOn(...deps: MaybeStepLike[]): StepBuilder;
41
+ comesAfter(...deps: MaybeStepLike[]): StepBuilder;
41
42
  }
42
43
  export interface StepFunction {
43
- <const O extends string = never>(...args: (StepConfig<O> | Step<string> | StepRef<string>)[]): Step<O>;
44
+ <const O extends string = never>(...args: (StepConfig<O> | Step<string> | StepRef<string> | null | undefined)[]): Step<O>;
44
45
  if(condition: ConditionLike): StepBuilder;
45
- dependsOn(...deps: StepLike[]): StepBuilder;
46
- comesAfter(...deps: StepLike[]): StepBuilder;
46
+ dependsOn(...deps: MaybeStepLike[]): StepBuilder;
47
+ comesAfter(...deps: MaybeStepLike[]): StepBuilder;
47
48
  }
48
49
  export declare const step: StepFunction;
49
50
  export declare class StepRef<O extends string = never> {
@@ -61,8 +62,8 @@ export declare class StepRef<O extends string = never> {
61
62
  get outputs(): {
62
63
  [K in O]: ExpressionValue;
63
64
  };
64
- dependsOn(...deps: StepLike[]): StepRef<O>;
65
- comesAfter(...deps: StepLike[]): StepRef<O>;
65
+ dependsOn(...deps: MaybeStepLike[]): StepRef<O>;
66
+ comesAfter(...deps: MaybeStepLike[]): StepRef<O>;
66
67
  if(condition: ConditionLike): StepRef<O>;
67
68
  }
68
69
  export declare function serializeConditionLike(c: ConditionLike): string;
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
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _Step_id;
13
- import { Condition, ExpressionValue, RawCondition, sourcesFrom, } from "./expression.js";
13
+ import { Condition, ExpressionValue, isAlwaysTrue, RawCondition, sourcesFrom, } from "./expression.js";
14
14
  let stepCounter = 0;
15
15
  // exported for testing only
16
16
  export function resetStepCounter() {
@@ -46,14 +46,15 @@ export class Step {
46
46
  });
47
47
  if (Array.isArray(configOrChildren)) {
48
48
  // composite step (group of children)
49
- if (configOrChildren.length === 0) {
49
+ const children = configOrChildren.filter((c) => c != null);
50
+ if (children.length === 0) {
50
51
  throw new Error("step() requires at least one step");
51
52
  }
52
53
  __classPrivateFieldSet(this, _Step_id, `_step_${stepCounter++}`, "f");
53
54
  this.config = {};
54
55
  this._crossJobDeps = Object.freeze([]);
55
56
  this.outputs = {};
56
- this.children = Object.freeze([...configOrChildren]);
57
+ this.children = Object.freeze(children);
57
58
  return;
58
59
  }
59
60
  const config = configOrChildren;
@@ -78,10 +79,14 @@ export class Step {
78
79
  return __classPrivateFieldGet(this, _Step_id, "f");
79
80
  }
80
81
  dependsOn(...deps) {
81
- return new StepRef(this, { dependencies: deps });
82
+ return new StepRef(this, {
83
+ dependencies: deps.filter((d) => d != null),
84
+ });
82
85
  }
83
86
  comesAfter(...deps) {
84
- return new StepRef(this, { afterDependencies: deps });
87
+ return new StepRef(this, {
88
+ afterDependencies: deps.filter((d) => d != null),
89
+ });
85
90
  }
86
91
  if(condition) {
87
92
  return new StepRef(this, { condition });
@@ -99,7 +104,7 @@ export class Step {
99
104
  result.uses = this.config.uses;
100
105
  }
101
106
  const ifCondition = effectiveIf ?? this.config.if;
102
- if (ifCondition != null) {
107
+ if (ifCondition != null && !isAlwaysTrue(ifCondition)) {
103
108
  result.if = serializeConditionLike(ifCondition);
104
109
  }
105
110
  if (this.config.shell != null) {
@@ -130,14 +135,15 @@ export class Step {
130
135
  }
131
136
  _Step_id = new WeakMap();
132
137
  function buildStepFromArgs(...args) {
133
- if (args.length === 0) {
138
+ const filtered = args.filter((a) => a != null);
139
+ if (filtered.length === 0) {
134
140
  throw new Error("step() requires at least one argument");
135
141
  }
136
- if (args.length === 1) {
137
- return new Step(args[0]);
142
+ if (filtered.length === 1) {
143
+ return new Step(filtered[0]);
138
144
  }
139
145
  const children = [];
140
- for (const item of args) {
146
+ for (const item of filtered) {
141
147
  if (item instanceof Step || item instanceof StepRef) {
142
148
  children.push(item);
143
149
  }
@@ -174,21 +180,31 @@ function createStepBuilder(init) {
174
180
  builder.dependsOn = (...deps) => {
175
181
  return createStepBuilder({
176
182
  ...init,
177
- dependencies: [...(init.dependencies ?? []), ...deps],
183
+ dependencies: [
184
+ ...(init.dependencies ?? []),
185
+ ...deps.filter((d) => d != null),
186
+ ],
178
187
  });
179
188
  };
180
189
  builder.comesAfter = (...deps) => {
181
190
  return createStepBuilder({
182
191
  ...init,
183
- afterDependencies: [...(init.afterDependencies ?? []), ...deps],
192
+ afterDependencies: [
193
+ ...(init.afterDependencies ?? []),
194
+ ...deps.filter((d) => d != null),
195
+ ],
184
196
  });
185
197
  };
186
198
  return builder;
187
199
  }
188
200
  export const step = Object.assign(buildStepFromArgs, {
189
201
  if: (condition) => createStepBuilder({ condition }),
190
- dependsOn: (...deps) => createStepBuilder({ dependencies: deps }),
191
- comesAfter: (...deps) => createStepBuilder({ afterDependencies: deps }),
202
+ dependsOn: (...deps) => createStepBuilder({
203
+ dependencies: deps.filter((d) => d != null),
204
+ }),
205
+ comesAfter: (...deps) => createStepBuilder({
206
+ afterDependencies: deps.filter((d) => d != null),
207
+ }),
192
208
  });
193
209
  // --- StepRef: immutable wrapper for per-usage deps/conditions ---
194
210
  export class StepRef {
@@ -234,7 +250,10 @@ export class StepRef {
234
250
  dependsOn(...deps) {
235
251
  return new StepRef(this.step, {
236
252
  condition: this.condition,
237
- dependencies: [...this.dependencies, ...deps],
253
+ dependencies: [
254
+ ...this.dependencies,
255
+ ...deps.filter((d) => d != null),
256
+ ],
238
257
  afterDependencies: this.afterDependencies,
239
258
  });
240
259
  }
@@ -242,7 +261,10 @@ export class StepRef {
242
261
  return new StepRef(this.step, {
243
262
  condition: this.condition,
244
263
  dependencies: this.dependencies,
245
- afterDependencies: [...this.afterDependencies, ...deps],
264
+ afterDependencies: [
265
+ ...this.afterDependencies,
266
+ ...deps.filter((d) => d != null),
267
+ ],
246
268
  });
247
269
  }
248
270
  if(condition) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gagen",
3
- "version": "0.2.7",
3
+ "version": "0.2.8",
4
4
  "description": "Generate complex GitHub Actions YAML files using a declarative API.",
5
5
  "repository": {
6
6
  "type": "git",