@shipfox/api-definitions 10.2.0 → 12.0.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 (150) hide show
  1. package/.turbo/turbo-build.log +13 -12
  2. package/CHANGELOG.md +91 -0
  3. package/dist/core/entities/index.d.ts +1 -0
  4. package/dist/core/entities/index.d.ts.map +1 -1
  5. package/dist/core/entities/index.js +1 -0
  6. package/dist/core/entities/index.js.map +1 -1
  7. package/dist/core/entities/sync-state.d.ts +4 -0
  8. package/dist/core/entities/sync-state.d.ts.map +1 -1
  9. package/dist/core/entities/sync-state.js +10 -0
  10. package/dist/core/entities/sync-state.js.map +1 -1
  11. package/dist/core/entities/validation-warning.d.ts +6 -0
  12. package/dist/core/entities/validation-warning.d.ts.map +1 -0
  13. package/dist/core/entities/validation-warning.js +3 -0
  14. package/dist/core/entities/validation-warning.js.map +1 -0
  15. package/dist/core/parse-definition.d.ts +9 -7
  16. package/dist/core/parse-definition.d.ts.map +1 -1
  17. package/dist/core/parse-definition.js +14 -2
  18. package/dist/core/parse-definition.js.map +1 -1
  19. package/dist/core/sync-definitions.d.ts +2 -0
  20. package/dist/core/sync-definitions.d.ts.map +1 -1
  21. package/dist/core/sync-definitions.js +6 -5
  22. package/dist/core/sync-definitions.js.map +1 -1
  23. package/dist/core/validate-definition.d.ts +9 -5
  24. package/dist/core/validate-definition.d.ts.map +1 -1
  25. package/dist/core/validate-definition.js +23 -2
  26. package/dist/core/validate-definition.js.map +1 -1
  27. package/dist/core/workflow-model/index.d.ts +1 -1
  28. package/dist/core/workflow-model/index.d.ts.map +1 -1
  29. package/dist/core/workflow-model/index.js.map +1 -1
  30. package/dist/core/workflow-model/invalid-workflow-model-error.d.ts +3 -1
  31. package/dist/core/workflow-model/invalid-workflow-model-error.d.ts.map +1 -1
  32. package/dist/core/workflow-model/invalid-workflow-model-error.js.map +1 -1
  33. package/dist/core/workflow-model/normalize-if-condition.d.ts +0 -1
  34. package/dist/core/workflow-model/normalize-if-condition.d.ts.map +1 -1
  35. package/dist/core/workflow-model/normalize-if-condition.js +0 -1
  36. package/dist/core/workflow-model/normalize-if-condition.js.map +1 -1
  37. package/dist/core/workflow-model/normalize-job-checkout.d.ts +15 -3
  38. package/dist/core/workflow-model/normalize-job-checkout.d.ts.map +1 -1
  39. package/dist/core/workflow-model/normalize-job-checkout.js +83 -4
  40. package/dist/core/workflow-model/normalize-job-checkout.js.map +1 -1
  41. package/dist/core/workflow-model/normalize-job-listening.js +0 -1
  42. package/dist/core/workflow-model/normalize-job-listening.js.map +1 -1
  43. package/dist/core/workflow-model/normalize-job-success.d.ts.map +1 -1
  44. package/dist/core/workflow-model/normalize-job-success.js +0 -1
  45. package/dist/core/workflow-model/normalize-job-success.js.map +1 -1
  46. package/dist/core/workflow-model/normalize-jobs.d.ts.map +1 -1
  47. package/dist/core/workflow-model/normalize-jobs.js +310 -45
  48. package/dist/core/workflow-model/normalize-jobs.js.map +1 -1
  49. package/dist/core/workflow-model/normalize-step-gate.js +0 -1
  50. package/dist/core/workflow-model/normalize-step-gate.js.map +1 -1
  51. package/dist/core/workflow-model/normalize-triggers.d.ts.map +1 -1
  52. package/dist/core/workflow-model/normalize-triggers.js +0 -1
  53. package/dist/core/workflow-model/normalize-triggers.js.map +1 -1
  54. package/dist/core/workflow-model/normalize-workflow-document.d.ts +3 -0
  55. package/dist/core/workflow-model/normalize-workflow-document.d.ts.map +1 -1
  56. package/dist/core/workflow-model/normalize-workflow-document.js +34 -4
  57. package/dist/core/workflow-model/normalize-workflow-document.js.map +1 -1
  58. package/dist/core/workflow-model/parse-interpolation-field.d.ts +1 -1
  59. package/dist/core/workflow-model/parse-interpolation-field.d.ts.map +1 -1
  60. package/dist/core/workflow-model/parse-interpolation-field.js +27 -57
  61. package/dist/core/workflow-model/parse-interpolation-field.js.map +1 -1
  62. package/dist/core/workflow-model/validate-literal-name.d.ts +12 -0
  63. package/dist/core/workflow-model/validate-literal-name.d.ts.map +1 -0
  64. package/dist/core/workflow-model/validate-literal-name.js +36 -0
  65. package/dist/core/workflow-model/validate-literal-name.js.map +1 -0
  66. package/dist/core/workflow-model/validate-predicate-expression.d.ts +1 -2
  67. package/dist/core/workflow-model/validate-predicate-expression.d.ts.map +1 -1
  68. package/dist/core/workflow-model/validate-predicate-expression.js +31 -90
  69. package/dist/core/workflow-model/validate-predicate-expression.js.map +1 -1
  70. package/dist/core/workflow-model/validation-issue.d.ts +2 -1
  71. package/dist/core/workflow-model/validation-issue.d.ts.map +1 -1
  72. package/dist/core/workflow-model/validation-issue.js +8 -2
  73. package/dist/core/workflow-model/validation-issue.js.map +1 -1
  74. package/dist/core/workflow-model/workflow-field-label.d.ts.map +1 -1
  75. package/dist/core/workflow-model/workflow-field-label.js +16 -2
  76. package/dist/core/workflow-model/workflow-field-label.js.map +1 -1
  77. package/dist/db/db.d.ts +38 -0
  78. package/dist/db/db.d.ts.map +1 -1
  79. package/dist/db/schema/sync-states.d.ts +19 -0
  80. package/dist/db/schema/sync-states.d.ts.map +1 -1
  81. package/dist/db/schema/sync-states.js +3 -1
  82. package/dist/db/schema/sync-states.js.map +1 -1
  83. package/dist/db/sync-states.d.ts +2 -1
  84. package/dist/db/sync-states.d.ts.map +1 -1
  85. package/dist/db/sync-states.js +4 -0
  86. package/dist/db/sync-states.js.map +1 -1
  87. package/dist/presentation/dto/definition.d.ts.map +1 -1
  88. package/dist/presentation/dto/definition.js +2 -1
  89. package/dist/presentation/dto/definition.js.map +1 -1
  90. package/dist/presentation/routes/project-access.d.ts +1 -0
  91. package/dist/presentation/routes/project-access.d.ts.map +1 -1
  92. package/dist/presentation/routes/validate-definition.d.ts.map +1 -1
  93. package/dist/presentation/routes/validate-definition.js +5 -3
  94. package/dist/presentation/routes/validate-definition.js.map +1 -1
  95. package/dist/temporal/activities/sync-activities.d.ts +6 -2
  96. package/dist/temporal/activities/sync-activities.d.ts.map +1 -1
  97. package/dist/temporal/activities/sync-activities.js +8 -1
  98. package/dist/temporal/activities/sync-activities.js.map +1 -1
  99. package/dist/temporal/workflows/definition-sync.js +4 -1
  100. package/dist/temporal/workflows/definition-sync.js.map +1 -1
  101. package/dist/temporal/workflows/index.bundle.js +9029 -3
  102. package/dist/tsconfig.test.tsbuildinfo +1 -1
  103. package/drizzle/0002_lumpy_ben_parker.sql +1 -0
  104. package/drizzle/meta/0002_snapshot.json +534 -0
  105. package/drizzle/meta/_journal.json +7 -0
  106. package/package.json +14 -14
  107. package/src/core/entities/index.ts +1 -0
  108. package/src/core/entities/sync-state.ts +23 -0
  109. package/src/core/entities/validation-warning.ts +5 -0
  110. package/src/core/parse-definition-warnings.test.ts +33 -0
  111. package/src/core/parse-definition.test.ts +7 -1
  112. package/src/core/parse-definition.ts +28 -10
  113. package/src/core/sync-definitions.test.ts +39 -0
  114. package/src/core/sync-definitions.ts +14 -4
  115. package/src/core/validate-definition.test.ts +128 -0
  116. package/src/core/validate-definition.ts +39 -8
  117. package/src/core/workflow-model/README.md +2 -2
  118. package/src/core/workflow-model/index.ts +1 -0
  119. package/src/core/workflow-model/invalid-workflow-model-error.ts +8 -2
  120. package/src/core/workflow-model/normalize-if-condition.ts +0 -2
  121. package/src/core/workflow-model/normalize-job-checkout.ts +105 -8
  122. package/src/core/workflow-model/normalize-job-listening.ts +0 -1
  123. package/src/core/workflow-model/normalize-job-success.ts +0 -1
  124. package/src/core/workflow-model/normalize-jobs.ts +330 -49
  125. package/src/core/workflow-model/normalize-step-gate.ts +0 -1
  126. package/src/core/workflow-model/normalize-triggers.ts +0 -1
  127. package/src/core/workflow-model/normalize-workflow-document.test.ts +759 -185
  128. package/src/core/workflow-model/normalize-workflow-document.ts +29 -4
  129. package/src/core/workflow-model/parse-interpolation-field.ts +50 -79
  130. package/src/core/workflow-model/validate-literal-name.ts +64 -0
  131. package/src/core/workflow-model/validate-predicate-expression.test.ts +153 -15
  132. package/src/core/workflow-model/validate-predicate-expression.ts +52 -120
  133. package/src/core/workflow-model/validation-issue.ts +4 -0
  134. package/src/core/workflow-model/workflow-field-label.ts +16 -2
  135. package/src/core/workflow-yaml/README.md +2 -2
  136. package/src/db/schema/sync-states.ts +4 -1
  137. package/src/db/sync-states.test.ts +57 -0
  138. package/src/db/sync-states.ts +6 -0
  139. package/src/presentation/dto/definition.ts +1 -0
  140. package/src/presentation/routes/create-definition.test.ts +3 -3
  141. package/src/presentation/routes/get-definition.test.ts +1 -1
  142. package/src/presentation/routes/list-definitions.test.ts +2 -1
  143. package/src/presentation/routes/validate-definition.test.ts +1 -0
  144. package/src/presentation/routes/validate-definition.ts +7 -1
  145. package/src/temporal/activities/sync-activities.test.ts +16 -0
  146. package/src/temporal/activities/sync-activities.ts +18 -3
  147. package/src/temporal/workflows/definition-sync.ts +1 -1
  148. package/test/agent-validation-catalog.ts +17 -0
  149. package/test/fixtures/valid-listening-job.yml +2 -1
  150. package/tsconfig.build.tsbuildinfo +1 -1
@@ -1,11 +1,13 @@
1
1
  export declare const invalidWorkflowModelErrorCode = "invalid-workflow-model";
2
- export type WorkflowModelValidationIssueCode = 'context-unavailable-at-fill-site' | 'context-unavailable-at-predicate-site' | 'computed-context-key' | 'duplicate-job-id' | 'duplicate-step-id' | 'duplicate-trigger-id' | 'harness-provider-incompatible' | 'harness-thinking-incompatible' | 'harness-tool-incompatible' | 'integration-connection-not-capable' | 'integration-connection-not-found' | 'integration-write-not-allowed' | 'invalid-cron-event' | 'invalid-cron-schedule' | 'invalid-cron-timezone' | 'invalid-provider' | 'invalid-trigger-filter' | 'invalid-interpolation-expression' | 'invalid-interpolation-template' | 'invalid-duration' | 'invalid-listener-filter' | 'invalid-job-if' | 'invalid-job-output' | 'invalid-job-success' | 'invalid-output-schema' | 'invalid-runner-label' | 'invalid-step-gate-restart-from' | 'invalid-step-gate-success' | 'invalid-step-if' | 'job-dependency-cycle' | 'listening-job-missing-resolution-source' | 'listening-timeout-exceeds-run-timeout' | 'missing-harness-for-tools' | 'missing-connection-for-integration' | 'missing-job-needs-edge' | 'missing-cron-schedule' | 'missing-runner-label' | 'multiple-manual-triggers' | 'runner-context-not-bare' | 'runner-context-in-field' | 'runner-context-in-server-predicate' | 'self-job-dependency' | 'too-many-runner-labels' | 'unknown-secret-store' | 'unknown-interpolation-context' | 'unknown-integration-method' | 'unknown-integration-tool' | 'unknown-job-dependency' | 'untrusted-context-in-field' | 'vars-context-in-server-predicate';
2
+ export type WorkflowModelValidationIssueCode = 'context-unavailable-at-fill-site' | 'dynamic-name-self-reference' | 'context-unavailable-at-predicate-site' | 'computed-context-key' | 'checkout-target-invalid' | 'duplicate-job-id' | 'duplicate-step-id' | 'duplicate-trigger-id' | 'harness-provider-incompatible' | 'harness-thinking-incompatible' | 'harness-tool-incompatible' | 'integration-connection-not-capable' | 'integration-connection-not-found' | 'integration-write-not-allowed' | 'invalid-cron-event' | 'invalid-cron-schedule' | 'invalid-cron-timezone' | 'invalid-provider' | 'invalid-trigger-filter' | 'invalid-interpolation-expression' | 'invalid-interpolation-template' | 'invalid-duration' | 'invalid-listener-filter' | 'invalid-model' | 'invalid-job-if' | 'invalid-job-output' | 'invalid-job-success' | 'invalid-output-schema' | 'invalid-runner-label' | 'invalid-step-gate-restart-from' | 'invalid-step-gate-success' | 'invalid-step-if' | 'job-dependency-cycle' | 'listening-job-missing-resolution-source' | 'listening-timeout-exceeds-run-timeout' | 'missing-harness-for-tools' | 'missing-connection-for-integration' | 'missing-job-needs-edge' | 'missing-cron-schedule' | 'missing-runner-label' | 'multiple-manual-triggers' | 'runner-context-not-bare' | 'runner-context-in-field' | 'runner-context-in-server-predicate' | 're-evaluating-command' | 'self-job-dependency' | 'too-many-runner-labels' | 'unknown-secret-store' | 'unknown-interpolation-context' | 'unknown-integration-method' | 'unknown-integration-tool' | 'unknown-job-dependency' | 'untrusted-agent-selection-context';
3
3
  export type WorkflowModelValidationIssuePathSegment = string | number;
4
+ export type WorkflowModelValidationIssueSeverity = 'error' | 'warning';
4
5
  export interface WorkflowModelValidationIssue {
5
6
  readonly code: WorkflowModelValidationIssueCode;
6
7
  readonly message: string;
7
8
  readonly path: readonly WorkflowModelValidationIssuePathSegment[];
8
9
  readonly details?: Readonly<Record<string, unknown>>;
10
+ readonly severity?: WorkflowModelValidationIssueSeverity;
9
11
  }
10
12
  export declare class InvalidWorkflowModelError extends Error {
11
13
  readonly issues: readonly WorkflowModelValidationIssue[];
@@ -1 +1 @@
1
- {"version":3,"file":"invalid-workflow-model-error.d.ts","sourceRoot":"","sources":["../../../src/core/workflow-model/invalid-workflow-model-error.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,2BAA2B,CAAC;AAEtE,MAAM,MAAM,gCAAgC,GACxC,kCAAkC,GAClC,uCAAuC,GACvC,sBAAsB,GACtB,kBAAkB,GAClB,mBAAmB,GACnB,sBAAsB,GACtB,+BAA+B,GAC/B,+BAA+B,GAC/B,2BAA2B,GAC3B,oCAAoC,GACpC,kCAAkC,GAClC,+BAA+B,GAC/B,oBAAoB,GACpB,uBAAuB,GACvB,uBAAuB,GACvB,kBAAkB,GAClB,wBAAwB,GACxB,kCAAkC,GAClC,gCAAgC,GAChC,kBAAkB,GAClB,yBAAyB,GACzB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,uBAAuB,GACvB,sBAAsB,GACtB,gCAAgC,GAChC,2BAA2B,GAC3B,iBAAiB,GACjB,sBAAsB,GACtB,yCAAyC,GACzC,uCAAuC,GACvC,2BAA2B,GAC3B,oCAAoC,GACpC,wBAAwB,GACxB,uBAAuB,GACvB,sBAAsB,GACtB,0BAA0B,GAC1B,yBAAyB,GACzB,yBAAyB,GACzB,oCAAoC,GACpC,qBAAqB,GACrB,wBAAwB,GACxB,sBAAsB,GACtB,+BAA+B,GAC/B,4BAA4B,GAC5B,0BAA0B,GAC1B,wBAAwB,GACxB,4BAA4B,GAC5B,kCAAkC,CAAC;AAEvC,MAAM,MAAM,uCAAuC,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtE,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,gCAAgC,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,uCAAuC,EAAE,CAAC;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACtD;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAGtC,QAAQ,CAAC,MAAM,EAAE,SAAS,4BAA4B,EAAE;IAFpE,QAAQ,CAAC,IAAI,4BAAiC;gBAEzB,MAAM,EAAE,SAAS,4BAA4B,EAAE;CAIrE"}
1
+ {"version":3,"file":"invalid-workflow-model-error.d.ts","sourceRoot":"","sources":["../../../src/core/workflow-model/invalid-workflow-model-error.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,2BAA2B,CAAC;AAEtE,MAAM,MAAM,gCAAgC,GACxC,kCAAkC,GAClC,6BAA6B,GAC7B,uCAAuC,GACvC,sBAAsB,GACtB,yBAAyB,GACzB,kBAAkB,GAClB,mBAAmB,GACnB,sBAAsB,GACtB,+BAA+B,GAC/B,+BAA+B,GAC/B,2BAA2B,GAC3B,oCAAoC,GACpC,kCAAkC,GAClC,+BAA+B,GAC/B,oBAAoB,GACpB,uBAAuB,GACvB,uBAAuB,GACvB,kBAAkB,GAClB,wBAAwB,GACxB,kCAAkC,GAClC,gCAAgC,GAChC,kBAAkB,GAClB,yBAAyB,GACzB,eAAe,GACf,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,uBAAuB,GACvB,sBAAsB,GACtB,gCAAgC,GAChC,2BAA2B,GAC3B,iBAAiB,GACjB,sBAAsB,GACtB,yCAAyC,GACzC,uCAAuC,GACvC,2BAA2B,GAC3B,oCAAoC,GACpC,wBAAwB,GACxB,uBAAuB,GACvB,sBAAsB,GACtB,0BAA0B,GAC1B,yBAAyB,GACzB,yBAAyB,GACzB,oCAAoC,GACpC,uBAAuB,GACvB,qBAAqB,GACrB,wBAAwB,GACxB,sBAAsB,GACtB,+BAA+B,GAC/B,4BAA4B,GAC5B,0BAA0B,GAC1B,wBAAwB,GACxB,mCAAmC,CAAC;AAExC,MAAM,MAAM,uCAAuC,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtE,MAAM,MAAM,oCAAoC,GAAG,OAAO,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,gCAAgC,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,uCAAuC,EAAE,CAAC;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,oCAAoC,CAAC;CAC1D;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAGtC,QAAQ,CAAC,MAAM,EAAE,SAAS,4BAA4B,EAAE;IAFpE,QAAQ,CAAC,IAAI,4BAAiC;gBAEzB,MAAM,EAAE,SAAS,4BAA4B,EAAE;CAIrE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/workflow-model/invalid-workflow-model-error.ts"],"sourcesContent":["export const invalidWorkflowModelErrorCode = 'invalid-workflow-model';\n\nexport type WorkflowModelValidationIssueCode =\n | 'context-unavailable-at-fill-site'\n | 'context-unavailable-at-predicate-site'\n | 'computed-context-key'\n | 'duplicate-job-id'\n | 'duplicate-step-id'\n | 'duplicate-trigger-id'\n | 'harness-provider-incompatible'\n | 'harness-thinking-incompatible'\n | 'harness-tool-incompatible'\n | 'integration-connection-not-capable'\n | 'integration-connection-not-found'\n | 'integration-write-not-allowed'\n | 'invalid-cron-event'\n | 'invalid-cron-schedule'\n | 'invalid-cron-timezone'\n | 'invalid-provider'\n | 'invalid-trigger-filter'\n | 'invalid-interpolation-expression'\n | 'invalid-interpolation-template'\n | 'invalid-duration'\n | 'invalid-listener-filter'\n | 'invalid-job-if'\n | 'invalid-job-output'\n | 'invalid-job-success'\n | 'invalid-output-schema'\n | 'invalid-runner-label'\n | 'invalid-step-gate-restart-from'\n | 'invalid-step-gate-success'\n | 'invalid-step-if'\n | 'job-dependency-cycle'\n | 'listening-job-missing-resolution-source'\n | 'listening-timeout-exceeds-run-timeout'\n | 'missing-harness-for-tools'\n | 'missing-connection-for-integration'\n | 'missing-job-needs-edge'\n | 'missing-cron-schedule'\n | 'missing-runner-label'\n | 'multiple-manual-triggers'\n | 'runner-context-not-bare'\n | 'runner-context-in-field'\n | 'runner-context-in-server-predicate'\n | 'self-job-dependency'\n | 'too-many-runner-labels'\n | 'unknown-secret-store'\n | 'unknown-interpolation-context'\n | 'unknown-integration-method'\n | 'unknown-integration-tool'\n | 'unknown-job-dependency'\n | 'untrusted-context-in-field'\n | 'vars-context-in-server-predicate';\n\nexport type WorkflowModelValidationIssuePathSegment = string | number;\n\nexport interface WorkflowModelValidationIssue {\n readonly code: WorkflowModelValidationIssueCode;\n readonly message: string;\n readonly path: readonly WorkflowModelValidationIssuePathSegment[];\n readonly details?: Readonly<Record<string, unknown>>;\n}\n\nexport class InvalidWorkflowModelError extends Error {\n readonly code = invalidWorkflowModelErrorCode;\n\n constructor(readonly issues: readonly WorkflowModelValidationIssue[]) {\n super('Invalid workflow model');\n this.name = 'InvalidWorkflowModelError';\n }\n}\n"],"names":["invalidWorkflowModelErrorCode","InvalidWorkflowModelError","Error","issues","code","name"],"mappings":"AAAA,OAAO,MAAMA,gCAAgC,yBAAyB;AA+DtE,OAAO,MAAMC,kCAAkCC;IAG7C,YAAY,AAASC,MAA+C,CAAE;QACpE,KAAK,CAAC,gCADaA,SAAAA,aAFZC,OAAOJ;QAId,IAAI,CAACK,IAAI,GAAG;IACd;AACF"}
1
+ {"version":3,"sources":["../../../src/core/workflow-model/invalid-workflow-model-error.ts"],"sourcesContent":["export const invalidWorkflowModelErrorCode = 'invalid-workflow-model';\n\nexport type WorkflowModelValidationIssueCode =\n | 'context-unavailable-at-fill-site'\n | 'dynamic-name-self-reference'\n | 'context-unavailable-at-predicate-site'\n | 'computed-context-key'\n | 'checkout-target-invalid'\n | 'duplicate-job-id'\n | 'duplicate-step-id'\n | 'duplicate-trigger-id'\n | 'harness-provider-incompatible'\n | 'harness-thinking-incompatible'\n | 'harness-tool-incompatible'\n | 'integration-connection-not-capable'\n | 'integration-connection-not-found'\n | 'integration-write-not-allowed'\n | 'invalid-cron-event'\n | 'invalid-cron-schedule'\n | 'invalid-cron-timezone'\n | 'invalid-provider'\n | 'invalid-trigger-filter'\n | 'invalid-interpolation-expression'\n | 'invalid-interpolation-template'\n | 'invalid-duration'\n | 'invalid-listener-filter'\n | 'invalid-model'\n | 'invalid-job-if'\n | 'invalid-job-output'\n | 'invalid-job-success'\n | 'invalid-output-schema'\n | 'invalid-runner-label'\n | 'invalid-step-gate-restart-from'\n | 'invalid-step-gate-success'\n | 'invalid-step-if'\n | 'job-dependency-cycle'\n | 'listening-job-missing-resolution-source'\n | 'listening-timeout-exceeds-run-timeout'\n | 'missing-harness-for-tools'\n | 'missing-connection-for-integration'\n | 'missing-job-needs-edge'\n | 'missing-cron-schedule'\n | 'missing-runner-label'\n | 'multiple-manual-triggers'\n | 'runner-context-not-bare'\n | 'runner-context-in-field'\n | 'runner-context-in-server-predicate'\n | 're-evaluating-command'\n | 'self-job-dependency'\n | 'too-many-runner-labels'\n | 'unknown-secret-store'\n | 'unknown-interpolation-context'\n | 'unknown-integration-method'\n | 'unknown-integration-tool'\n | 'unknown-job-dependency'\n | 'untrusted-agent-selection-context';\n\nexport type WorkflowModelValidationIssuePathSegment = string | number;\n\nexport type WorkflowModelValidationIssueSeverity = 'error' | 'warning';\n\nexport interface WorkflowModelValidationIssue {\n readonly code: WorkflowModelValidationIssueCode;\n readonly message: string;\n readonly path: readonly WorkflowModelValidationIssuePathSegment[];\n readonly details?: Readonly<Record<string, unknown>>;\n readonly severity?: WorkflowModelValidationIssueSeverity;\n}\n\nexport class InvalidWorkflowModelError extends Error {\n readonly code = invalidWorkflowModelErrorCode;\n\n constructor(readonly issues: readonly WorkflowModelValidationIssue[]) {\n super('Invalid workflow model');\n this.name = 'InvalidWorkflowModelError';\n }\n}\n"],"names":["invalidWorkflowModelErrorCode","InvalidWorkflowModelError","Error","issues","code","name"],"mappings":"AAAA,OAAO,MAAMA,gCAAgC,yBAAyB;AAqEtE,OAAO,MAAMC,kCAAkCC;IAG7C,YAAY,AAASC,MAA+C,CAAE;QACpE,KAAK,CAAC,gCADaA,SAAAA,aAFZC,OAAOJ;QAId,IAAI,CAACK,IAAI,GAAG;IACd;AACF"}
@@ -3,7 +3,6 @@ import type { WorkflowModelValidationIssue, WorkflowModelValidationIssueCode, Wo
3
3
  export declare function normalizeIfCondition(params: {
4
4
  readonly field: Extract<WorkflowPredicateField, 'job.if' | 'step.if'>;
5
5
  readonly source: string | undefined;
6
- readonly site: 'job-activation' | 'step-dispatch';
7
6
  readonly path: readonly WorkflowModelValidationIssuePathSegment[];
8
7
  readonly invalidCode: Extract<WorkflowModelValidationIssueCode, 'invalid-job-if' | 'invalid-step-if'>;
9
8
  readonly invalidMessage: string;
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-if-condition.d.ts","sourceRoot":"","sources":["../../../src/core/workflow-model/normalize-if-condition.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,yBAAyB,EAI9B,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAE5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,4BAA4B,EAC5B,gCAAgC,EAChC,uCAAuC,EACxC,MAAM,mCAAmC,CAAC;AAO3C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,sBAAsB,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC;IACtE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,eAAe,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,SAAS,uCAAuC,EAAE,CAAC;IAClE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAC3B,gCAAgC,EAChC,gBAAgB,GAAG,iBAAiB,CACrC,CAAC;IACF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,4BAA4B,EAAE,CAAC;IAChD,QAAQ,CAAC,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnD,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;CACjD,GAAG,kBAAkB,GAAG,SAAS,CAoCjC"}
1
+ {"version":3,"file":"normalize-if-condition.d.ts","sourceRoot":"","sources":["../../../src/core/workflow-model/normalize-if-condition.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,yBAAyB,EAI9B,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAE5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,4BAA4B,EAC5B,gCAAgC,EAChC,uCAAuC,EACxC,MAAM,mCAAmC,CAAC;AAO3C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,sBAAsB,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC;IACtE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,uCAAuC,EAAE,CAAC;IAClE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAC3B,gCAAgC,EAChC,gBAAgB,GAAG,iBAAiB,CACrC,CAAC;IACF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,4BAA4B,EAAE,CAAC;IAChD,QAAQ,CAAC,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnD,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;CACjD,GAAG,kBAAkB,GAAG,SAAS,CAmCjC"}
@@ -31,7 +31,6 @@ export function normalizeIfCondition(params) {
31
31
  return validatePredicateExpression({
32
32
  field: params.field,
33
33
  source: expressionSegment.expression.source,
34
- site: params.site,
35
34
  path: params.path,
36
35
  invalidCode: params.invalidCode,
37
36
  invalidMessage: params.invalidMessage,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/workflow-model/normalize-if-condition.ts"],"sourcesContent":["import {\n type ExpressionTypeEnvironment,\n extractExactContextRoots,\n InvalidWorkflowTemplateError,\n parseWorkflowTemplate,\n type WorkflowExpression,\n type WorkflowPredicateField,\n type WorkflowTemplateExprSegment,\n} from '@shipfox/expression';\nimport type {\n WorkflowModelValidationIssue,\n WorkflowModelValidationIssueCode,\n WorkflowModelValidationIssuePathSegment,\n} from './invalid-workflow-model-error.js';\nimport {validatePredicateExpression} from './validate-predicate-expression.js';\nimport {issue} from './validation-issue.js';\nimport {workflowFieldLabel} from './workflow-field-label.js';\n\nconst ifExpressionSyntax = `\\${{ }}`;\n\nexport function normalizeIfCondition(params: {\n readonly field: Extract<WorkflowPredicateField, 'job.if' | 'step.if'>;\n readonly source: string | undefined;\n readonly site: 'job-activation' | 'step-dispatch';\n readonly path: readonly WorkflowModelValidationIssuePathSegment[];\n readonly invalidCode: Extract<\n WorkflowModelValidationIssueCode,\n 'invalid-job-if' | 'invalid-step-if'\n >;\n readonly invalidMessage: string;\n readonly issues: WorkflowModelValidationIssue[];\n readonly allowedJobReferences: ReadonlySet<string>;\n readonly typeOverlay: ExpressionTypeEnvironment;\n}): WorkflowExpression | undefined {\n if (params.source === undefined) return undefined;\n const source = params.source;\n\n const expressionSegment = parseSingleExpression({...params, source});\n if (expressionSegment === undefined) return undefined;\n\n const roots = extractExactContextRoots(expressionSegment.expression.source);\n if (roots.includes('needs') && params.allowedJobReferences.size === 0) {\n params.issues.push(\n issue({\n code: params.invalidCode,\n message: `${workflowFieldLabel(params.field)} cannot reference needs because the job has no direct needs.`,\n path: params.path,\n details: {\n field: params.field,\n source: params.source,\n contextRoots: roots,\n rejectedRoots: ['needs'],\n },\n }),\n );\n return undefined;\n }\n\n return validatePredicateExpression({\n field: params.field,\n source: expressionSegment.expression.source,\n site: params.site,\n path: params.path,\n invalidCode: params.invalidCode,\n invalidMessage: params.invalidMessage,\n issues: params.issues,\n allowedJobReferences: params.allowedJobReferences,\n typeOverlay: params.typeOverlay,\n });\n}\n\nfunction parseSingleExpression(params: {\n readonly field: WorkflowPredicateField;\n readonly source: string;\n readonly path: readonly WorkflowModelValidationIssuePathSegment[];\n readonly invalidCode: WorkflowModelValidationIssueCode;\n readonly invalidMessage: string;\n readonly issues: WorkflowModelValidationIssue[];\n}): WorkflowTemplateExprSegment | undefined {\n let segments: ReturnType<typeof parseWorkflowTemplate>;\n try {\n segments = parseWorkflowTemplate(params.source);\n } catch (error) {\n params.issues.push(\n invalidIfIssue({\n ...params,\n reason:\n error instanceof InvalidWorkflowTemplateError\n ? error.reason\n : 'Template source did not parse.',\n }),\n );\n return undefined;\n }\n\n const [segment] = segments;\n if (segment?.kind === 'expr' && segments.length === 1) return segment;\n\n params.issues.push(\n invalidIfIssue({\n ...params,\n reason: `${workflowFieldLabel(params.field)} must be exactly one ${ifExpressionSyntax} expression.`,\n }),\n );\n return undefined;\n}\n\nfunction invalidIfIssue(params: {\n readonly field: WorkflowPredicateField;\n readonly source: string;\n readonly path: readonly WorkflowModelValidationIssuePathSegment[];\n readonly invalidCode: WorkflowModelValidationIssueCode;\n readonly invalidMessage: string;\n readonly reason: string;\n}): WorkflowModelValidationIssue {\n return issue({\n code: params.invalidCode,\n message: params.invalidMessage,\n path: params.path,\n details: {\n field: params.field,\n source: params.source,\n reason: params.reason,\n },\n });\n}\n"],"names":["extractExactContextRoots","InvalidWorkflowTemplateError","parseWorkflowTemplate","validatePredicateExpression","issue","workflowFieldLabel","ifExpressionSyntax","normalizeIfCondition","params","source","undefined","expressionSegment","parseSingleExpression","roots","expression","includes","allowedJobReferences","size","issues","push","code","invalidCode","message","field","path","details","contextRoots","rejectedRoots","site","invalidMessage","typeOverlay","segments","error","invalidIfIssue","reason","segment","kind","length"],"mappings":"AAAA,SAEEA,wBAAwB,EACxBC,4BAA4B,EAC5BC,qBAAqB,QAIhB,sBAAsB;AAM7B,SAAQC,2BAA2B,QAAO,qCAAqC;AAC/E,SAAQC,KAAK,QAAO,wBAAwB;AAC5C,SAAQC,kBAAkB,QAAO,4BAA4B;AAE7D,MAAMC,qBAAqB,CAAC,OAAO,CAAC;AAEpC,OAAO,SAASC,qBAAqBC,MAapC;IACC,IAAIA,OAAOC,MAAM,KAAKC,WAAW,OAAOA;IACxC,MAAMD,SAASD,OAAOC,MAAM;IAE5B,MAAME,oBAAoBC,sBAAsB;QAAC,GAAGJ,MAAM;QAAEC;IAAM;IAClE,IAAIE,sBAAsBD,WAAW,OAAOA;IAE5C,MAAMG,QAAQb,yBAAyBW,kBAAkBG,UAAU,CAACL,MAAM;IAC1E,IAAII,MAAME,QAAQ,CAAC,YAAYP,OAAOQ,oBAAoB,CAACC,IAAI,KAAK,GAAG;QACrET,OAAOU,MAAM,CAACC,IAAI,CAChBf,MAAM;YACJgB,MAAMZ,OAAOa,WAAW;YACxBC,SAAS,GAAGjB,mBAAmBG,OAAOe,KAAK,EAAE,4DAA4D,CAAC;YAC1GC,MAAMhB,OAAOgB,IAAI;YACjBC,SAAS;gBACPF,OAAOf,OAAOe,KAAK;gBACnBd,QAAQD,OAAOC,MAAM;gBACrBiB,cAAcb;gBACdc,eAAe;oBAAC;iBAAQ;YAC1B;QACF;QAEF,OAAOjB;IACT;IAEA,OAAOP,4BAA4B;QACjCoB,OAAOf,OAAOe,KAAK;QACnBd,QAAQE,kBAAkBG,UAAU,CAACL,MAAM;QAC3CmB,MAAMpB,OAAOoB,IAAI;QACjBJ,MAAMhB,OAAOgB,IAAI;QACjBH,aAAab,OAAOa,WAAW;QAC/BQ,gBAAgBrB,OAAOqB,cAAc;QACrCX,QAAQV,OAAOU,MAAM;QACrBF,sBAAsBR,OAAOQ,oBAAoB;QACjDc,aAAatB,OAAOsB,WAAW;IACjC;AACF;AAEA,SAASlB,sBAAsBJ,MAO9B;IACC,IAAIuB;IACJ,IAAI;QACFA,WAAW7B,sBAAsBM,OAAOC,MAAM;IAChD,EAAE,OAAOuB,OAAO;QACdxB,OAAOU,MAAM,CAACC,IAAI,CAChBc,eAAe;YACb,GAAGzB,MAAM;YACT0B,QACEF,iBAAiB/B,+BACb+B,MAAME,MAAM,GACZ;QACR;QAEF,OAAOxB;IACT;IAEA,MAAM,CAACyB,QAAQ,GAAGJ;IAClB,IAAII,SAASC,SAAS,UAAUL,SAASM,MAAM,KAAK,GAAG,OAAOF;IAE9D3B,OAAOU,MAAM,CAACC,IAAI,CAChBc,eAAe;QACb,GAAGzB,MAAM;QACT0B,QAAQ,GAAG7B,mBAAmBG,OAAOe,KAAK,EAAE,qBAAqB,EAAEjB,mBAAmB,YAAY,CAAC;IACrG;IAEF,OAAOI;AACT;AAEA,SAASuB,eAAezB,MAOvB;IACC,OAAOJ,MAAM;QACXgB,MAAMZ,OAAOa,WAAW;QACxBC,SAASd,OAAOqB,cAAc;QAC9BL,MAAMhB,OAAOgB,IAAI;QACjBC,SAAS;YACPF,OAAOf,OAAOe,KAAK;YACnBd,QAAQD,OAAOC,MAAM;YACrByB,QAAQ1B,OAAO0B,MAAM;QACvB;IACF;AACF"}
1
+ {"version":3,"sources":["../../../src/core/workflow-model/normalize-if-condition.ts"],"sourcesContent":["import {\n type ExpressionTypeEnvironment,\n extractExactContextRoots,\n InvalidWorkflowTemplateError,\n parseWorkflowTemplate,\n type WorkflowExpression,\n type WorkflowPredicateField,\n type WorkflowTemplateExprSegment,\n} from '@shipfox/expression';\nimport type {\n WorkflowModelValidationIssue,\n WorkflowModelValidationIssueCode,\n WorkflowModelValidationIssuePathSegment,\n} from './invalid-workflow-model-error.js';\nimport {validatePredicateExpression} from './validate-predicate-expression.js';\nimport {issue} from './validation-issue.js';\nimport {workflowFieldLabel} from './workflow-field-label.js';\n\nconst ifExpressionSyntax = `\\${{ }}`;\n\nexport function normalizeIfCondition(params: {\n readonly field: Extract<WorkflowPredicateField, 'job.if' | 'step.if'>;\n readonly source: string | undefined;\n readonly path: readonly WorkflowModelValidationIssuePathSegment[];\n readonly invalidCode: Extract<\n WorkflowModelValidationIssueCode,\n 'invalid-job-if' | 'invalid-step-if'\n >;\n readonly invalidMessage: string;\n readonly issues: WorkflowModelValidationIssue[];\n readonly allowedJobReferences: ReadonlySet<string>;\n readonly typeOverlay: ExpressionTypeEnvironment;\n}): WorkflowExpression | undefined {\n if (params.source === undefined) return undefined;\n const source = params.source;\n\n const expressionSegment = parseSingleExpression({...params, source});\n if (expressionSegment === undefined) return undefined;\n\n const roots = extractExactContextRoots(expressionSegment.expression.source);\n if (roots.includes('needs') && params.allowedJobReferences.size === 0) {\n params.issues.push(\n issue({\n code: params.invalidCode,\n message: `${workflowFieldLabel(params.field)} cannot reference needs because the job has no direct needs.`,\n path: params.path,\n details: {\n field: params.field,\n source: params.source,\n contextRoots: roots,\n rejectedRoots: ['needs'],\n },\n }),\n );\n return undefined;\n }\n\n return validatePredicateExpression({\n field: params.field,\n source: expressionSegment.expression.source,\n path: params.path,\n invalidCode: params.invalidCode,\n invalidMessage: params.invalidMessage,\n issues: params.issues,\n allowedJobReferences: params.allowedJobReferences,\n typeOverlay: params.typeOverlay,\n });\n}\n\nfunction parseSingleExpression(params: {\n readonly field: WorkflowPredicateField;\n readonly source: string;\n readonly path: readonly WorkflowModelValidationIssuePathSegment[];\n readonly invalidCode: WorkflowModelValidationIssueCode;\n readonly invalidMessage: string;\n readonly issues: WorkflowModelValidationIssue[];\n}): WorkflowTemplateExprSegment | undefined {\n let segments: ReturnType<typeof parseWorkflowTemplate>;\n try {\n segments = parseWorkflowTemplate(params.source);\n } catch (error) {\n params.issues.push(\n invalidIfIssue({\n ...params,\n reason:\n error instanceof InvalidWorkflowTemplateError\n ? error.reason\n : 'Template source did not parse.',\n }),\n );\n return undefined;\n }\n\n const [segment] = segments;\n if (segment?.kind === 'expr' && segments.length === 1) return segment;\n\n params.issues.push(\n invalidIfIssue({\n ...params,\n reason: `${workflowFieldLabel(params.field)} must be exactly one ${ifExpressionSyntax} expression.`,\n }),\n );\n return undefined;\n}\n\nfunction invalidIfIssue(params: {\n readonly field: WorkflowPredicateField;\n readonly source: string;\n readonly path: readonly WorkflowModelValidationIssuePathSegment[];\n readonly invalidCode: WorkflowModelValidationIssueCode;\n readonly invalidMessage: string;\n readonly reason: string;\n}): WorkflowModelValidationIssue {\n return issue({\n code: params.invalidCode,\n message: params.invalidMessage,\n path: params.path,\n details: {\n field: params.field,\n source: params.source,\n reason: params.reason,\n },\n });\n}\n"],"names":["extractExactContextRoots","InvalidWorkflowTemplateError","parseWorkflowTemplate","validatePredicateExpression","issue","workflowFieldLabel","ifExpressionSyntax","normalizeIfCondition","params","source","undefined","expressionSegment","parseSingleExpression","roots","expression","includes","allowedJobReferences","size","issues","push","code","invalidCode","message","field","path","details","contextRoots","rejectedRoots","invalidMessage","typeOverlay","segments","error","invalidIfIssue","reason","segment","kind","length"],"mappings":"AAAA,SAEEA,wBAAwB,EACxBC,4BAA4B,EAC5BC,qBAAqB,QAIhB,sBAAsB;AAM7B,SAAQC,2BAA2B,QAAO,qCAAqC;AAC/E,SAAQC,KAAK,QAAO,wBAAwB;AAC5C,SAAQC,kBAAkB,QAAO,4BAA4B;AAE7D,MAAMC,qBAAqB,CAAC,OAAO,CAAC;AAEpC,OAAO,SAASC,qBAAqBC,MAYpC;IACC,IAAIA,OAAOC,MAAM,KAAKC,WAAW,OAAOA;IACxC,MAAMD,SAASD,OAAOC,MAAM;IAE5B,MAAME,oBAAoBC,sBAAsB;QAAC,GAAGJ,MAAM;QAAEC;IAAM;IAClE,IAAIE,sBAAsBD,WAAW,OAAOA;IAE5C,MAAMG,QAAQb,yBAAyBW,kBAAkBG,UAAU,CAACL,MAAM;IAC1E,IAAII,MAAME,QAAQ,CAAC,YAAYP,OAAOQ,oBAAoB,CAACC,IAAI,KAAK,GAAG;QACrET,OAAOU,MAAM,CAACC,IAAI,CAChBf,MAAM;YACJgB,MAAMZ,OAAOa,WAAW;YACxBC,SAAS,GAAGjB,mBAAmBG,OAAOe,KAAK,EAAE,4DAA4D,CAAC;YAC1GC,MAAMhB,OAAOgB,IAAI;YACjBC,SAAS;gBACPF,OAAOf,OAAOe,KAAK;gBACnBd,QAAQD,OAAOC,MAAM;gBACrBiB,cAAcb;gBACdc,eAAe;oBAAC;iBAAQ;YAC1B;QACF;QAEF,OAAOjB;IACT;IAEA,OAAOP,4BAA4B;QACjCoB,OAAOf,OAAOe,KAAK;QACnBd,QAAQE,kBAAkBG,UAAU,CAACL,MAAM;QAC3Ce,MAAMhB,OAAOgB,IAAI;QACjBH,aAAab,OAAOa,WAAW;QAC/BO,gBAAgBpB,OAAOoB,cAAc;QACrCV,QAAQV,OAAOU,MAAM;QACrBF,sBAAsBR,OAAOQ,oBAAoB;QACjDa,aAAarB,OAAOqB,WAAW;IACjC;AACF;AAEA,SAASjB,sBAAsBJ,MAO9B;IACC,IAAIsB;IACJ,IAAI;QACFA,WAAW5B,sBAAsBM,OAAOC,MAAM;IAChD,EAAE,OAAOsB,OAAO;QACdvB,OAAOU,MAAM,CAACC,IAAI,CAChBa,eAAe;YACb,GAAGxB,MAAM;YACTyB,QACEF,iBAAiB9B,+BACb8B,MAAME,MAAM,GACZ;QACR;QAEF,OAAOvB;IACT;IAEA,MAAM,CAACwB,QAAQ,GAAGJ;IAClB,IAAII,SAASC,SAAS,UAAUL,SAASM,MAAM,KAAK,GAAG,OAAOF;IAE9D1B,OAAOU,MAAM,CAACC,IAAI,CAChBa,eAAe;QACb,GAAGxB,MAAM;QACTyB,QAAQ,GAAG5B,mBAAmBG,OAAOe,KAAK,EAAE,qBAAqB,EAAEjB,mBAAmB,YAAY,CAAC;IACrG;IAEF,OAAOI;AACT;AAEA,SAASsB,eAAexB,MAOvB;IACC,OAAOJ,MAAM;QACXgB,MAAMZ,OAAOa,WAAW;QACxBC,SAASd,OAAOoB,cAAc;QAC9BJ,MAAMhB,OAAOgB,IAAI;QACjBC,SAAS;YACPF,OAAOf,OAAOe,KAAK;YACnBd,QAAQD,OAAOC,MAAM;YACrBwB,QAAQzB,OAAOyB,MAAM;QACvB;IACF;AACF"}
@@ -1,5 +1,17 @@
1
- import { DEFAULT_JOB_CHECKOUT, type WorkflowModelJobCheckout } from '@shipfox/api-definitions-dto';
2
- import type { WorkflowDocumentJobCheckout } from '@shipfox/workflow-document';
1
+ import { DEFAULT_JOB_CHECKOUT, type WorkflowModelCheckout, type WorkflowModelJobCheckout } from '@shipfox/api-definitions-dto';
2
+ import type { AvailabilitySite, ExpressionTypeEnvironment } from '@shipfox/expression';
3
+ import { type WorkflowDocumentCheckout, type WorkflowDocumentJob } from '@shipfox/workflow-document';
4
+ import type { WorkflowModelValidationIssue, WorkflowModelValidationIssuePathSegment } from './invalid-workflow-model-error.js';
3
5
  export { DEFAULT_JOB_CHECKOUT };
4
- export declare function normalizeJobCheckout(checkout: WorkflowDocumentJobCheckout | undefined): WorkflowModelJobCheckout;
6
+ export declare function normalizeJobCheckout(params: {
7
+ checkout: WorkflowDocumentJob['checkout'];
8
+ }): WorkflowModelJobCheckout | false;
9
+ export declare function normalizeCheckout(params: {
10
+ checkout: WorkflowDocumentCheckout;
11
+ issues: WorkflowModelValidationIssue[];
12
+ path: readonly WorkflowModelValidationIssuePathSegment[];
13
+ fillSite: AvailabilitySite;
14
+ allowedJobReferences?: ReadonlySet<string>;
15
+ typeOverlay?: ExpressionTypeEnvironment | undefined;
16
+ }): WorkflowModelCheckout;
5
17
  //# sourceMappingURL=normalize-job-checkout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-job-checkout.d.ts","sourceRoot":"","sources":["../../../src/core/workflow-model/normalize-job-checkout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAE,KAAK,wBAAwB,EAAC,MAAM,8BAA8B,CAAC;AACjG,OAAO,KAAK,EAAC,2BAA2B,EAAC,MAAM,4BAA4B,CAAC;AAE5E,OAAO,EAAC,oBAAoB,EAAC,CAAC;AAE9B,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,2BAA2B,GAAG,SAAS,GAChD,wBAAwB,CAQ1B"}
1
+ {"version":3,"file":"normalize-job-checkout.d.ts","sourceRoot":"","sources":["../../../src/core/workflow-model/normalize-job-checkout.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAGpB,KAAK,qBAAqB,EAE1B,KAAK,wBAAwB,EAC9B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAC,gBAAgB,EAAE,yBAAyB,EAAC,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,4BAA4B,EAC5B,uCAAuC,EACxC,MAAM,mCAAmC,CAAC;AAI3C,OAAO,EAAC,oBAAoB,EAAC,CAAC;AAI9B,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,QAAQ,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;CAC3C,GAAG,wBAAwB,GAAG,KAAK,CAYnC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,MAAM,EAAE,4BAA4B,EAAE,CAAC;IACvC,IAAI,EAAE,SAAS,uCAAuC,EAAE,CAAC;IACzD,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,WAAW,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;CACrD,GAAG,qBAAqB,CAyCxB"}
@@ -1,12 +1,91 @@
1
- import { DEFAULT_JOB_CHECKOUT } from '@shipfox/api-definitions-dto';
1
+ import { DEFAULT_JOB_CHECKOUT, WORKFLOW_MODEL_CHECKOUT_TARGET_FIELDS } from '@shipfox/api-definitions-dto';
2
+ import { checkoutTargetValidationIssues } from '@shipfox/workflow-document';
3
+ import { parseInterpolationField } from './parse-interpolation-field.js';
4
+ import { issue } from './validation-issue.js';
2
5
  export { DEFAULT_JOB_CHECKOUT };
3
- export function normalizeJobCheckout(checkout) {
6
+ const DEFAULT_CHECKOUT_FETCH_DEPTH = 1;
7
+ export function normalizeJobCheckout(params) {
8
+ if (params.checkout === false) {
9
+ return false;
10
+ }
11
+ const checkout = params.checkout ?? {};
4
12
  return {
5
13
  permissions: {
6
- contents: checkout?.permissions?.contents ?? DEFAULT_JOB_CHECKOUT.permissions.contents
14
+ contents: checkout.permissions?.contents ?? DEFAULT_JOB_CHECKOUT.permissions.contents
7
15
  },
8
- persistCredentials: checkout?.['persist-credentials'] ?? DEFAULT_JOB_CHECKOUT.persistCredentials
16
+ persistCredentials: checkout['persist-credentials'] ?? DEFAULT_JOB_CHECKOUT.persistCredentials
9
17
  };
10
18
  }
19
+ export function normalizeCheckout(params) {
20
+ validateCheckoutTargetShape(params);
21
+ const templates = {};
22
+ for (const [key, field] of WORKFLOW_MODEL_CHECKOUT_TARGET_FIELDS){
23
+ const source = params.checkout[key];
24
+ if (source === undefined) continue;
25
+ const template = parseInterpolationField({
26
+ field,
27
+ source,
28
+ path: [
29
+ ...params.path,
30
+ key
31
+ ],
32
+ issues: params.issues,
33
+ fillSite: params.fillSite,
34
+ ...params.allowedJobReferences === undefined ? {} : {
35
+ allowedJobReferences: params.allowedJobReferences
36
+ },
37
+ ...params.typeOverlay === undefined ? {} : {
38
+ typeOverlay: params.typeOverlay
39
+ }
40
+ });
41
+ if (template === undefined) continue;
42
+ templates[key] = template;
43
+ }
44
+ const normalized = {
45
+ ...params.checkout.project === undefined ? {} : {
46
+ project: params.checkout.project
47
+ },
48
+ ...params.checkout.connection === undefined ? {} : {
49
+ connection: params.checkout.connection
50
+ },
51
+ ...params.checkout.repository === undefined ? {} : {
52
+ repository: params.checkout.repository
53
+ },
54
+ ...params.checkout.ref === undefined ? {} : {
55
+ ref: params.checkout.ref
56
+ },
57
+ fetchDepth: params.checkout['fetch-depth'] ?? DEFAULT_CHECKOUT_FETCH_DEPTH,
58
+ ...params.checkout.path === undefined ? {} : {
59
+ path: params.checkout.path
60
+ },
61
+ permissions: {
62
+ contents: params.checkout.permissions?.contents ?? DEFAULT_JOB_CHECKOUT.permissions.contents
63
+ },
64
+ persistCredentials: params.checkout['persist-credentials'] ?? DEFAULT_JOB_CHECKOUT.persistCredentials,
65
+ ...params.checkout.force === undefined ? {} : {
66
+ force: params.checkout.force
67
+ },
68
+ ...Object.keys(templates).length === 0 ? {} : {
69
+ templates
70
+ }
71
+ };
72
+ return normalized;
73
+ }
74
+ function validateCheckoutTargetShape(params) {
75
+ for (const validationIssue of checkoutTargetValidationIssues(params.checkout)){
76
+ const message = validationIssue.kind === 'project-with-connection' ? 'Checkout target "connection" cannot be combined with "project".' : validationIssue.kind === 'project-with-repository' ? 'Checkout target "repository" cannot be combined with "project".' : 'Checkout target "connection" requires "repository".';
77
+ params.issues.push(issue({
78
+ code: 'checkout-target-invalid',
79
+ message,
80
+ path: [
81
+ ...params.path,
82
+ validationIssue.path
83
+ ],
84
+ details: {
85
+ fields: validationIssue.fields
86
+ }
87
+ }));
88
+ }
89
+ }
11
90
 
12
91
  //# sourceMappingURL=normalize-job-checkout.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/workflow-model/normalize-job-checkout.ts"],"sourcesContent":["import {DEFAULT_JOB_CHECKOUT, type WorkflowModelJobCheckout} from '@shipfox/api-definitions-dto';\nimport type {WorkflowDocumentJobCheckout} from '@shipfox/workflow-document';\n\nexport {DEFAULT_JOB_CHECKOUT};\n\nexport function normalizeJobCheckout(\n checkout: WorkflowDocumentJobCheckout | undefined,\n): WorkflowModelJobCheckout {\n return {\n permissions: {\n contents: checkout?.permissions?.contents ?? DEFAULT_JOB_CHECKOUT.permissions.contents,\n },\n persistCredentials:\n checkout?.['persist-credentials'] ?? DEFAULT_JOB_CHECKOUT.persistCredentials,\n };\n}\n"],"names":["DEFAULT_JOB_CHECKOUT","normalizeJobCheckout","checkout","permissions","contents","persistCredentials"],"mappings":"AAAA,SAAQA,oBAAoB,QAAsC,+BAA+B;AAGjG,SAAQA,oBAAoB,GAAE;AAE9B,OAAO,SAASC,qBACdC,QAAiD;IAEjD,OAAO;QACLC,aAAa;YACXC,UAAUF,UAAUC,aAAaC,YAAYJ,qBAAqBG,WAAW,CAACC,QAAQ;QACxF;QACAC,oBACEH,UAAU,CAAC,sBAAsB,IAAIF,qBAAqBK,kBAAkB;IAChF;AACF"}
1
+ {"version":3,"sources":["../../../src/core/workflow-model/normalize-job-checkout.ts"],"sourcesContent":["import {\n DEFAULT_JOB_CHECKOUT,\n WORKFLOW_MODEL_CHECKOUT_TARGET_FIELDS,\n type WorkflowFieldTemplate,\n type WorkflowModelCheckout,\n type WorkflowModelCheckoutTargetKey,\n type WorkflowModelJobCheckout,\n} from '@shipfox/api-definitions-dto';\nimport type {AvailabilitySite, ExpressionTypeEnvironment} from '@shipfox/expression';\nimport {\n checkoutTargetValidationIssues,\n type WorkflowDocumentCheckout,\n type WorkflowDocumentJob,\n} from '@shipfox/workflow-document';\nimport type {\n WorkflowModelValidationIssue,\n WorkflowModelValidationIssuePathSegment,\n} from './invalid-workflow-model-error.js';\nimport {parseInterpolationField} from './parse-interpolation-field.js';\nimport {issue} from './validation-issue.js';\n\nexport {DEFAULT_JOB_CHECKOUT};\n\nconst DEFAULT_CHECKOUT_FETCH_DEPTH = 1;\n\nexport function normalizeJobCheckout(params: {\n checkout: WorkflowDocumentJob['checkout'];\n}): WorkflowModelJobCheckout | false {\n if (params.checkout === false) {\n return false;\n }\n\n const checkout = params.checkout ?? {};\n return {\n permissions: {\n contents: checkout.permissions?.contents ?? DEFAULT_JOB_CHECKOUT.permissions.contents,\n },\n persistCredentials: checkout['persist-credentials'] ?? DEFAULT_JOB_CHECKOUT.persistCredentials,\n };\n}\n\nexport function normalizeCheckout(params: {\n checkout: WorkflowDocumentCheckout;\n issues: WorkflowModelValidationIssue[];\n path: readonly WorkflowModelValidationIssuePathSegment[];\n fillSite: AvailabilitySite;\n allowedJobReferences?: ReadonlySet<string>;\n typeOverlay?: ExpressionTypeEnvironment | undefined;\n}): WorkflowModelCheckout {\n validateCheckoutTargetShape(params);\n\n const templates: Partial<Record<WorkflowModelCheckoutTargetKey, WorkflowFieldTemplate>> = {};\n for (const [key, field] of WORKFLOW_MODEL_CHECKOUT_TARGET_FIELDS) {\n const source = params.checkout[key];\n if (source === undefined) continue;\n\n const template = parseInterpolationField({\n field,\n source,\n path: [...params.path, key],\n issues: params.issues,\n fillSite: params.fillSite,\n ...(params.allowedJobReferences === undefined\n ? {}\n : {allowedJobReferences: params.allowedJobReferences}),\n ...(params.typeOverlay === undefined ? {} : {typeOverlay: params.typeOverlay}),\n });\n if (template === undefined) continue;\n\n templates[key] = template;\n }\n\n const normalized = {\n ...(params.checkout.project === undefined ? {} : {project: params.checkout.project}),\n ...(params.checkout.connection === undefined ? {} : {connection: params.checkout.connection}),\n ...(params.checkout.repository === undefined ? {} : {repository: params.checkout.repository}),\n ...(params.checkout.ref === undefined ? {} : {ref: params.checkout.ref}),\n fetchDepth: params.checkout['fetch-depth'] ?? DEFAULT_CHECKOUT_FETCH_DEPTH,\n ...(params.checkout.path === undefined ? {} : {path: params.checkout.path}),\n permissions: {\n contents: params.checkout.permissions?.contents ?? DEFAULT_JOB_CHECKOUT.permissions.contents,\n },\n persistCredentials:\n params.checkout['persist-credentials'] ?? DEFAULT_JOB_CHECKOUT.persistCredentials,\n ...(params.checkout.force === undefined ? {} : {force: params.checkout.force}),\n ...(Object.keys(templates).length === 0 ? {} : {templates}),\n } satisfies WorkflowModelCheckout;\n\n return normalized;\n}\n\nfunction validateCheckoutTargetShape(params: {\n checkout: WorkflowDocumentCheckout;\n issues: WorkflowModelValidationIssue[];\n path: readonly WorkflowModelValidationIssuePathSegment[];\n}): void {\n for (const validationIssue of checkoutTargetValidationIssues(params.checkout)) {\n const message =\n validationIssue.kind === 'project-with-connection'\n ? 'Checkout target \"connection\" cannot be combined with \"project\".'\n : validationIssue.kind === 'project-with-repository'\n ? 'Checkout target \"repository\" cannot be combined with \"project\".'\n : 'Checkout target \"connection\" requires \"repository\".';\n params.issues.push(\n issue({\n code: 'checkout-target-invalid',\n message,\n path: [...params.path, validationIssue.path],\n details: {fields: validationIssue.fields},\n }),\n );\n }\n}\n"],"names":["DEFAULT_JOB_CHECKOUT","WORKFLOW_MODEL_CHECKOUT_TARGET_FIELDS","checkoutTargetValidationIssues","parseInterpolationField","issue","DEFAULT_CHECKOUT_FETCH_DEPTH","normalizeJobCheckout","params","checkout","permissions","contents","persistCredentials","normalizeCheckout","validateCheckoutTargetShape","templates","key","field","source","undefined","template","path","issues","fillSite","allowedJobReferences","typeOverlay","normalized","project","connection","repository","ref","fetchDepth","force","Object","keys","length","validationIssue","message","kind","push","code","details","fields"],"mappings":"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"}
@@ -111,7 +111,6 @@ function normalizeListeningTrigger(params) {
111
111
  validatePredicateExpression({
112
112
  field: params.field,
113
113
  source: params.trigger.filter,
114
- site: 'job-activation',
115
114
  path: params.path,
116
115
  invalidCode: 'invalid-listener-filter',
117
116
  invalidMessage: `${params.field === 'listener.on' ? 'Listener on' : 'Listener until'} filter must be a valid CEL boolean expression.`,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/workflow-model/normalize-job-listening.ts"],"sourcesContent":["import type {WorkflowDocumentJob} from '@shipfox/workflow-document';\nimport type {WorkflowModelJobListening} from '../entities/workflow-model.js';\nimport {DEFAULT_RUN_TIMEOUT_MS} from './constants.js';\nimport type {WorkflowModelValidationIssue} from './invalid-workflow-model-error.js';\nimport {normalizeTriggerEntry} from './normalize-triggers.js';\nimport {parseDurationMs} from './parse-duration-ms.js';\nimport {validatePredicateExpression} from './validate-predicate-expression.js';\nimport {issue} from './validation-issue.js';\n\nexport function normalizeJobListening(params: {\n job: WorkflowDocumentJob;\n sourceName: string;\n issues: WorkflowModelValidationIssue[];\n allowedJobReferences: ReadonlySet<string>;\n}): WorkflowModelJobListening | undefined {\n const path = ['jobs', params.sourceName] as const;\n const listening = params.job.listening;\n\n if (listening === undefined) {\n return undefined;\n }\n\n const timeoutMs = parseDurationMs({\n source: listening.timeout,\n path: [...path, 'listening', 'timeout'],\n issues: params.issues,\n maxMs: DEFAULT_RUN_TIMEOUT_MS,\n outOfRangeCode: 'listening-timeout-exceeds-run-timeout',\n outOfRangeMessage: 'Listening job timeout must be between 1s and the workflow run timeout.',\n });\n const debounceMs = parseDurationMs({\n source: listening.batch?.debounce,\n path: [...path, 'listening', 'batch', 'debounce'],\n issues: params.issues,\n });\n const maxWaitMs = parseDurationMs({\n source: listening.batch?.max_wait,\n path: [...path, 'listening', 'batch', 'max_wait'],\n issues: params.issues,\n });\n\n if (\n listening.until === undefined &&\n listening.timeout === undefined &&\n listening.max_executions === undefined\n ) {\n params.issues.push(\n issue({\n code: 'listening-job-missing-resolution-source',\n message: `Listening job \"${params.sourceName}\" must declare until, timeout, or max_executions.`,\n path: [...path, 'listening'],\n }),\n );\n }\n\n const batch =\n debounceMs === undefined && listening.batch?.max_size === undefined && maxWaitMs === undefined\n ? undefined\n : {\n ...(debounceMs === undefined ? {} : {debounceMs}),\n ...(listening.batch?.max_size === undefined ? {} : {maxSize: listening.batch.max_size}),\n ...(maxWaitMs === undefined ? {} : {maxWaitMs}),\n };\n\n return {\n on: listening.on.map((trigger, index) =>\n normalizeListeningTrigger({\n trigger,\n field: 'listener.on',\n path: [...path, 'listening', 'on', index, 'filter'],\n issues: params.issues,\n allowedJobReferences: params.allowedJobReferences,\n }),\n ),\n ...(listening.until === undefined\n ? {}\n : {\n until: listening.until.map((trigger, index) =>\n normalizeListeningTrigger({\n trigger,\n field: 'listener.until',\n path: [...path, 'listening', 'until', index, 'filter'],\n issues: params.issues,\n allowedJobReferences: params.allowedJobReferences,\n }),\n ),\n }),\n ...(timeoutMs === undefined ? {} : {timeoutMs}),\n ...(listening.max_executions === undefined ? {} : {maxExecutions: listening.max_executions}),\n ...(batch === undefined ? {} : {batch}),\n onResolve: listening.on_resolve ?? 'finish',\n };\n}\n\nfunction normalizeListeningTrigger(params: {\n trigger: {\n readonly source: string;\n readonly event: string;\n readonly with?: Readonly<Record<string, unknown>> | undefined;\n readonly filter?: string | undefined;\n };\n field: 'listener.on' | 'listener.until';\n path: readonly (string | number)[];\n issues: WorkflowModelValidationIssue[];\n allowedJobReferences: ReadonlySet<string>;\n}): WorkflowModelJobListening['on'][number] {\n if (params.trigger.filter !== undefined) {\n validatePredicateExpression({\n field: params.field,\n source: params.trigger.filter,\n site: 'job-activation',\n path: params.path,\n invalidCode: 'invalid-listener-filter',\n invalidMessage: `${params.field === 'listener.on' ? 'Listener on' : 'Listener until'} filter must be a valid CEL boolean expression.`,\n issues: params.issues,\n allowedJobReferences: params.allowedJobReferences,\n });\n }\n\n return normalizeTriggerEntry(params.trigger);\n}\n"],"names":["DEFAULT_RUN_TIMEOUT_MS","normalizeTriggerEntry","parseDurationMs","validatePredicateExpression","issue","normalizeJobListening","params","path","sourceName","listening","job","undefined","timeoutMs","source","timeout","issues","maxMs","outOfRangeCode","outOfRangeMessage","debounceMs","batch","debounce","maxWaitMs","max_wait","until","max_executions","push","code","message","max_size","maxSize","on","map","trigger","index","normalizeListeningTrigger","field","allowedJobReferences","maxExecutions","onResolve","on_resolve","filter","site","invalidCode","invalidMessage"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/core/workflow-model/normalize-job-listening.ts"],"sourcesContent":["import type {WorkflowDocumentJob} from '@shipfox/workflow-document';\nimport type {WorkflowModelJobListening} from '../entities/workflow-model.js';\nimport {DEFAULT_RUN_TIMEOUT_MS} from './constants.js';\nimport type {WorkflowModelValidationIssue} from './invalid-workflow-model-error.js';\nimport {normalizeTriggerEntry} from './normalize-triggers.js';\nimport {parseDurationMs} from './parse-duration-ms.js';\nimport {validatePredicateExpression} from './validate-predicate-expression.js';\nimport {issue} from './validation-issue.js';\n\nexport function normalizeJobListening(params: {\n job: WorkflowDocumentJob;\n sourceName: string;\n issues: WorkflowModelValidationIssue[];\n allowedJobReferences: ReadonlySet<string>;\n}): WorkflowModelJobListening | undefined {\n const path = ['jobs', params.sourceName] as const;\n const listening = params.job.listening;\n\n if (listening === undefined) {\n return undefined;\n }\n\n const timeoutMs = parseDurationMs({\n source: listening.timeout,\n path: [...path, 'listening', 'timeout'],\n issues: params.issues,\n maxMs: DEFAULT_RUN_TIMEOUT_MS,\n outOfRangeCode: 'listening-timeout-exceeds-run-timeout',\n outOfRangeMessage: 'Listening job timeout must be between 1s and the workflow run timeout.',\n });\n const debounceMs = parseDurationMs({\n source: listening.batch?.debounce,\n path: [...path, 'listening', 'batch', 'debounce'],\n issues: params.issues,\n });\n const maxWaitMs = parseDurationMs({\n source: listening.batch?.max_wait,\n path: [...path, 'listening', 'batch', 'max_wait'],\n issues: params.issues,\n });\n\n if (\n listening.until === undefined &&\n listening.timeout === undefined &&\n listening.max_executions === undefined\n ) {\n params.issues.push(\n issue({\n code: 'listening-job-missing-resolution-source',\n message: `Listening job \"${params.sourceName}\" must declare until, timeout, or max_executions.`,\n path: [...path, 'listening'],\n }),\n );\n }\n\n const batch =\n debounceMs === undefined && listening.batch?.max_size === undefined && maxWaitMs === undefined\n ? undefined\n : {\n ...(debounceMs === undefined ? {} : {debounceMs}),\n ...(listening.batch?.max_size === undefined ? {} : {maxSize: listening.batch.max_size}),\n ...(maxWaitMs === undefined ? {} : {maxWaitMs}),\n };\n\n return {\n on: listening.on.map((trigger, index) =>\n normalizeListeningTrigger({\n trigger,\n field: 'listener.on',\n path: [...path, 'listening', 'on', index, 'filter'],\n issues: params.issues,\n allowedJobReferences: params.allowedJobReferences,\n }),\n ),\n ...(listening.until === undefined\n ? {}\n : {\n until: listening.until.map((trigger, index) =>\n normalizeListeningTrigger({\n trigger,\n field: 'listener.until',\n path: [...path, 'listening', 'until', index, 'filter'],\n issues: params.issues,\n allowedJobReferences: params.allowedJobReferences,\n }),\n ),\n }),\n ...(timeoutMs === undefined ? {} : {timeoutMs}),\n ...(listening.max_executions === undefined ? {} : {maxExecutions: listening.max_executions}),\n ...(batch === undefined ? {} : {batch}),\n onResolve: listening.on_resolve ?? 'finish',\n };\n}\n\nfunction normalizeListeningTrigger(params: {\n trigger: {\n readonly source: string;\n readonly event: string;\n readonly with?: Readonly<Record<string, unknown>> | undefined;\n readonly filter?: string | undefined;\n };\n field: 'listener.on' | 'listener.until';\n path: readonly (string | number)[];\n issues: WorkflowModelValidationIssue[];\n allowedJobReferences: ReadonlySet<string>;\n}): WorkflowModelJobListening['on'][number] {\n if (params.trigger.filter !== undefined) {\n validatePredicateExpression({\n field: params.field,\n source: params.trigger.filter,\n path: params.path,\n invalidCode: 'invalid-listener-filter',\n invalidMessage: `${params.field === 'listener.on' ? 'Listener on' : 'Listener until'} filter must be a valid CEL boolean expression.`,\n issues: params.issues,\n allowedJobReferences: params.allowedJobReferences,\n });\n }\n\n return normalizeTriggerEntry(params.trigger);\n}\n"],"names":["DEFAULT_RUN_TIMEOUT_MS","normalizeTriggerEntry","parseDurationMs","validatePredicateExpression","issue","normalizeJobListening","params","path","sourceName","listening","job","undefined","timeoutMs","source","timeout","issues","maxMs","outOfRangeCode","outOfRangeMessage","debounceMs","batch","debounce","maxWaitMs","max_wait","until","max_executions","push","code","message","max_size","maxSize","on","map","trigger","index","normalizeListeningTrigger","field","allowedJobReferences","maxExecutions","onResolve","on_resolve","filter","invalidCode","invalidMessage"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-job-success.d.ts","sourceRoot":"","sources":["../../../src/core/workflow-model/normalize-job-success.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC;AAGpF,OAAO,EAAC,mBAAmB,EAAC,CAAC;AAE7B,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,4BAA4B,EAAE,CAAC;IACvC,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;CACrD,GAAG,MAAM,GAAG,SAAS,CAerB"}
1
+ {"version":3,"file":"normalize-job-success.d.ts","sourceRoot":"","sources":["../../../src/core/workflow-model/normalize-job-success.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC;AAGpF,OAAO,EAAC,mBAAmB,EAAC,CAAC;AAE7B,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,4BAA4B,EAAE,CAAC;IACvC,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;CACrD,GAAG,MAAM,GAAG,SAAS,CAcrB"}
@@ -6,7 +6,6 @@ export function normalizeJobSuccess(params) {
6
6
  const expression = validatePredicateExpression({
7
7
  field: 'job.success',
8
8
  source: params.source,
9
- site: 'job-resolution',
10
9
  path: [
11
10
  'jobs',
12
11
  params.sourceName,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/workflow-model/normalize-job-success.ts"],"sourcesContent":["import {DEFAULT_JOB_SUCCESS} from '@shipfox/api-definitions-dto';\nimport type {ExpressionTypeEnvironment} from '@shipfox/expression';\nimport type {WorkflowModelValidationIssue} from './invalid-workflow-model-error.js';\nimport {validatePredicateExpression} from './validate-predicate-expression.js';\n\nexport {DEFAULT_JOB_SUCCESS};\n\nexport function normalizeJobSuccess(params: {\n source: string | undefined;\n sourceName: string;\n issues: WorkflowModelValidationIssue[];\n allowedJobReferences: ReadonlySet<string>;\n typeOverlay?: ExpressionTypeEnvironment | undefined;\n}): string | undefined {\n if (params.source === undefined) return undefined;\n\n const expression = validatePredicateExpression({\n field: 'job.success',\n source: params.source,\n site: 'job-resolution',\n path: ['jobs', params.sourceName, 'success'],\n invalidCode: 'invalid-job-success',\n invalidMessage: 'Job success must be a valid CEL boolean expression.',\n issues: params.issues,\n allowedJobReferences: params.allowedJobReferences,\n typeOverlay: params.typeOverlay,\n });\n return expression?.source;\n}\n"],"names":["DEFAULT_JOB_SUCCESS","validatePredicateExpression","normalizeJobSuccess","params","source","undefined","expression","field","site","path","sourceName","invalidCode","invalidMessage","issues","allowedJobReferences","typeOverlay"],"mappings":"AAAA,SAAQA,mBAAmB,QAAO,+BAA+B;AAGjE,SAAQC,2BAA2B,QAAO,qCAAqC;AAE/E,SAAQD,mBAAmB,GAAE;AAE7B,OAAO,SAASE,oBAAoBC,MAMnC;IACC,IAAIA,OAAOC,MAAM,KAAKC,WAAW,OAAOA;IAExC,MAAMC,aAAaL,4BAA4B;QAC7CM,OAAO;QACPH,QAAQD,OAAOC,MAAM;QACrBI,MAAM;QACNC,MAAM;YAAC;YAAQN,OAAOO,UAAU;YAAE;SAAU;QAC5CC,aAAa;QACbC,gBAAgB;QAChBC,QAAQV,OAAOU,MAAM;QACrBC,sBAAsBX,OAAOW,oBAAoB;QACjDC,aAAaZ,OAAOY,WAAW;IACjC;IACA,OAAOT,YAAYF;AACrB"}
1
+ {"version":3,"sources":["../../../src/core/workflow-model/normalize-job-success.ts"],"sourcesContent":["import {DEFAULT_JOB_SUCCESS} from '@shipfox/api-definitions-dto';\nimport type {ExpressionTypeEnvironment} from '@shipfox/expression';\nimport type {WorkflowModelValidationIssue} from './invalid-workflow-model-error.js';\nimport {validatePredicateExpression} from './validate-predicate-expression.js';\n\nexport {DEFAULT_JOB_SUCCESS};\n\nexport function normalizeJobSuccess(params: {\n source: string | undefined;\n sourceName: string;\n issues: WorkflowModelValidationIssue[];\n allowedJobReferences: ReadonlySet<string>;\n typeOverlay?: ExpressionTypeEnvironment | undefined;\n}): string | undefined {\n if (params.source === undefined) return undefined;\n\n const expression = validatePredicateExpression({\n field: 'job.success',\n source: params.source,\n path: ['jobs', params.sourceName, 'success'],\n invalidCode: 'invalid-job-success',\n invalidMessage: 'Job success must be a valid CEL boolean expression.',\n issues: params.issues,\n allowedJobReferences: params.allowedJobReferences,\n typeOverlay: params.typeOverlay,\n });\n return expression?.source;\n}\n"],"names":["DEFAULT_JOB_SUCCESS","validatePredicateExpression","normalizeJobSuccess","params","source","undefined","expression","field","path","sourceName","invalidCode","invalidMessage","issues","allowedJobReferences","typeOverlay"],"mappings":"AAAA,SAAQA,mBAAmB,QAAO,+BAA+B;AAGjE,SAAQC,2BAA2B,QAAO,qCAAqC;AAE/E,SAAQD,mBAAmB,GAAE;AAE7B,OAAO,SAASE,oBAAoBC,MAMnC;IACC,IAAIA,OAAOC,MAAM,KAAKC,WAAW,OAAOA;IAExC,MAAMC,aAAaL,4BAA4B;QAC7CM,OAAO;QACPH,QAAQD,OAAOC,MAAM;QACrBI,MAAM;YAAC;YAAQL,OAAOM,UAAU;YAAE;SAAU;QAC5CC,aAAa;QACbC,gBAAgB;QAChBC,QAAQT,OAAOS,MAAM;QACrBC,sBAAsBV,OAAOU,oBAAoB;QACjDC,aAAaX,OAAOW,WAAW;IACjC;IACA,OAAOR,YAAYF;AACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-jobs.d.ts","sourceRoot":"","sources":["../../../src/core/workflow-model/normalize-jobs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,qCAAqC,CAAC;AAgBhF,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,oCAAoC,CAAC;AACrF,OAAO,KAAK,EAIV,gBAAgB,EAIhB,6BAA6B,EAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,mCAAmC,CAAC;AAepF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IACxD,QAAQ,CAAC,4BAA4B,CAAC,EAAE,4BAA4B,GAAG,SAAS,CAAC;CAClF;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,gBAAgB,EAC1B,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9C,MAAM,EAAE,4BAA4B,EAAE,EACtC,mBAAmB,EAAE,6BAA6B,GAAG,SAAS,EAC9D,OAAO,EAAE,gBAAgB,GACxB,SAAS,gBAAgB,EAAE,CA6D7B"}
1
+ {"version":3,"file":"normalize-jobs.d.ts","sourceRoot":"","sources":["../../../src/core/workflow-model/normalize-jobs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,qCAAqC,CAAC;AAqBhF,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,oCAAoC,CAAC;AACrF,OAAO,KAAK,EAKV,gBAAgB,EAKhB,6BAA6B,EAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACV,4BAA4B,EAE7B,MAAM,mCAAmC,CAAC;AAgB3C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IACxD,QAAQ,CAAC,4BAA4B,CAAC,EAAE,4BAA4B,GAAG,SAAS,CAAC;CAClF;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,gBAAgB,EAC1B,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9C,MAAM,EAAE,4BAA4B,EAAE,EACtC,mBAAmB,EAAE,6BAA6B,GAAG,SAAS,EAC9D,OAAO,EAAE,gBAAgB,GACxB,SAAS,gBAAgB,EAAE,CA6D7B"}