@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.
- package/.turbo/turbo-build.log +13 -12
- package/CHANGELOG.md +91 -0
- package/dist/core/entities/index.d.ts +1 -0
- package/dist/core/entities/index.d.ts.map +1 -1
- package/dist/core/entities/index.js +1 -0
- package/dist/core/entities/index.js.map +1 -1
- package/dist/core/entities/sync-state.d.ts +4 -0
- package/dist/core/entities/sync-state.d.ts.map +1 -1
- package/dist/core/entities/sync-state.js +10 -0
- package/dist/core/entities/sync-state.js.map +1 -1
- package/dist/core/entities/validation-warning.d.ts +6 -0
- package/dist/core/entities/validation-warning.d.ts.map +1 -0
- package/dist/core/entities/validation-warning.js +3 -0
- package/dist/core/entities/validation-warning.js.map +1 -0
- package/dist/core/parse-definition.d.ts +9 -7
- package/dist/core/parse-definition.d.ts.map +1 -1
- package/dist/core/parse-definition.js +14 -2
- package/dist/core/parse-definition.js.map +1 -1
- package/dist/core/sync-definitions.d.ts +2 -0
- package/dist/core/sync-definitions.d.ts.map +1 -1
- package/dist/core/sync-definitions.js +6 -5
- package/dist/core/sync-definitions.js.map +1 -1
- package/dist/core/validate-definition.d.ts +9 -5
- package/dist/core/validate-definition.d.ts.map +1 -1
- package/dist/core/validate-definition.js +23 -2
- package/dist/core/validate-definition.js.map +1 -1
- package/dist/core/workflow-model/index.d.ts +1 -1
- package/dist/core/workflow-model/index.d.ts.map +1 -1
- package/dist/core/workflow-model/index.js.map +1 -1
- package/dist/core/workflow-model/invalid-workflow-model-error.d.ts +3 -1
- package/dist/core/workflow-model/invalid-workflow-model-error.d.ts.map +1 -1
- package/dist/core/workflow-model/invalid-workflow-model-error.js.map +1 -1
- package/dist/core/workflow-model/normalize-if-condition.d.ts +0 -1
- package/dist/core/workflow-model/normalize-if-condition.d.ts.map +1 -1
- package/dist/core/workflow-model/normalize-if-condition.js +0 -1
- package/dist/core/workflow-model/normalize-if-condition.js.map +1 -1
- package/dist/core/workflow-model/normalize-job-checkout.d.ts +15 -3
- package/dist/core/workflow-model/normalize-job-checkout.d.ts.map +1 -1
- package/dist/core/workflow-model/normalize-job-checkout.js +83 -4
- package/dist/core/workflow-model/normalize-job-checkout.js.map +1 -1
- package/dist/core/workflow-model/normalize-job-listening.js +0 -1
- package/dist/core/workflow-model/normalize-job-listening.js.map +1 -1
- package/dist/core/workflow-model/normalize-job-success.d.ts.map +1 -1
- package/dist/core/workflow-model/normalize-job-success.js +0 -1
- package/dist/core/workflow-model/normalize-job-success.js.map +1 -1
- package/dist/core/workflow-model/normalize-jobs.d.ts.map +1 -1
- package/dist/core/workflow-model/normalize-jobs.js +310 -45
- package/dist/core/workflow-model/normalize-jobs.js.map +1 -1
- package/dist/core/workflow-model/normalize-step-gate.js +0 -1
- package/dist/core/workflow-model/normalize-step-gate.js.map +1 -1
- package/dist/core/workflow-model/normalize-triggers.d.ts.map +1 -1
- package/dist/core/workflow-model/normalize-triggers.js +0 -1
- package/dist/core/workflow-model/normalize-triggers.js.map +1 -1
- package/dist/core/workflow-model/normalize-workflow-document.d.ts +3 -0
- package/dist/core/workflow-model/normalize-workflow-document.d.ts.map +1 -1
- package/dist/core/workflow-model/normalize-workflow-document.js +34 -4
- package/dist/core/workflow-model/normalize-workflow-document.js.map +1 -1
- package/dist/core/workflow-model/parse-interpolation-field.d.ts +1 -1
- package/dist/core/workflow-model/parse-interpolation-field.d.ts.map +1 -1
- package/dist/core/workflow-model/parse-interpolation-field.js +27 -57
- package/dist/core/workflow-model/parse-interpolation-field.js.map +1 -1
- package/dist/core/workflow-model/validate-literal-name.d.ts +12 -0
- package/dist/core/workflow-model/validate-literal-name.d.ts.map +1 -0
- package/dist/core/workflow-model/validate-literal-name.js +36 -0
- package/dist/core/workflow-model/validate-literal-name.js.map +1 -0
- package/dist/core/workflow-model/validate-predicate-expression.d.ts +1 -2
- package/dist/core/workflow-model/validate-predicate-expression.d.ts.map +1 -1
- package/dist/core/workflow-model/validate-predicate-expression.js +31 -90
- package/dist/core/workflow-model/validate-predicate-expression.js.map +1 -1
- package/dist/core/workflow-model/validation-issue.d.ts +2 -1
- package/dist/core/workflow-model/validation-issue.d.ts.map +1 -1
- package/dist/core/workflow-model/validation-issue.js +8 -2
- package/dist/core/workflow-model/validation-issue.js.map +1 -1
- package/dist/core/workflow-model/workflow-field-label.d.ts.map +1 -1
- package/dist/core/workflow-model/workflow-field-label.js +16 -2
- package/dist/core/workflow-model/workflow-field-label.js.map +1 -1
- package/dist/db/db.d.ts +38 -0
- package/dist/db/db.d.ts.map +1 -1
- package/dist/db/schema/sync-states.d.ts +19 -0
- package/dist/db/schema/sync-states.d.ts.map +1 -1
- package/dist/db/schema/sync-states.js +3 -1
- package/dist/db/schema/sync-states.js.map +1 -1
- package/dist/db/sync-states.d.ts +2 -1
- package/dist/db/sync-states.d.ts.map +1 -1
- package/dist/db/sync-states.js +4 -0
- package/dist/db/sync-states.js.map +1 -1
- package/dist/presentation/dto/definition.d.ts.map +1 -1
- package/dist/presentation/dto/definition.js +2 -1
- package/dist/presentation/dto/definition.js.map +1 -1
- package/dist/presentation/routes/project-access.d.ts +1 -0
- package/dist/presentation/routes/project-access.d.ts.map +1 -1
- package/dist/presentation/routes/validate-definition.d.ts.map +1 -1
- package/dist/presentation/routes/validate-definition.js +5 -3
- package/dist/presentation/routes/validate-definition.js.map +1 -1
- package/dist/temporal/activities/sync-activities.d.ts +6 -2
- package/dist/temporal/activities/sync-activities.d.ts.map +1 -1
- package/dist/temporal/activities/sync-activities.js +8 -1
- package/dist/temporal/activities/sync-activities.js.map +1 -1
- package/dist/temporal/workflows/definition-sync.js +4 -1
- package/dist/temporal/workflows/definition-sync.js.map +1 -1
- package/dist/temporal/workflows/index.bundle.js +9029 -3
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/drizzle/0002_lumpy_ben_parker.sql +1 -0
- package/drizzle/meta/0002_snapshot.json +534 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +14 -14
- package/src/core/entities/index.ts +1 -0
- package/src/core/entities/sync-state.ts +23 -0
- package/src/core/entities/validation-warning.ts +5 -0
- package/src/core/parse-definition-warnings.test.ts +33 -0
- package/src/core/parse-definition.test.ts +7 -1
- package/src/core/parse-definition.ts +28 -10
- package/src/core/sync-definitions.test.ts +39 -0
- package/src/core/sync-definitions.ts +14 -4
- package/src/core/validate-definition.test.ts +128 -0
- package/src/core/validate-definition.ts +39 -8
- package/src/core/workflow-model/README.md +2 -2
- package/src/core/workflow-model/index.ts +1 -0
- package/src/core/workflow-model/invalid-workflow-model-error.ts +8 -2
- package/src/core/workflow-model/normalize-if-condition.ts +0 -2
- package/src/core/workflow-model/normalize-job-checkout.ts +105 -8
- package/src/core/workflow-model/normalize-job-listening.ts +0 -1
- package/src/core/workflow-model/normalize-job-success.ts +0 -1
- package/src/core/workflow-model/normalize-jobs.ts +330 -49
- package/src/core/workflow-model/normalize-step-gate.ts +0 -1
- package/src/core/workflow-model/normalize-triggers.ts +0 -1
- package/src/core/workflow-model/normalize-workflow-document.test.ts +759 -185
- package/src/core/workflow-model/normalize-workflow-document.ts +29 -4
- package/src/core/workflow-model/parse-interpolation-field.ts +50 -79
- package/src/core/workflow-model/validate-literal-name.ts +64 -0
- package/src/core/workflow-model/validate-predicate-expression.test.ts +153 -15
- package/src/core/workflow-model/validate-predicate-expression.ts +52 -120
- package/src/core/workflow-model/validation-issue.ts +4 -0
- package/src/core/workflow-model/workflow-field-label.ts +16 -2
- package/src/core/workflow-yaml/README.md +2 -2
- package/src/db/schema/sync-states.ts +4 -1
- package/src/db/sync-states.test.ts +57 -0
- package/src/db/sync-states.ts +6 -0
- package/src/presentation/dto/definition.ts +1 -0
- package/src/presentation/routes/create-definition.test.ts +3 -3
- package/src/presentation/routes/get-definition.test.ts +1 -1
- package/src/presentation/routes/list-definitions.test.ts +2 -1
- package/src/presentation/routes/validate-definition.test.ts +1 -0
- package/src/presentation/routes/validate-definition.ts +7 -1
- package/src/temporal/activities/sync-activities.test.ts +16 -0
- package/src/temporal/activities/sync-activities.ts +18 -3
- package/src/temporal/workflows/definition-sync.ts +1 -1
- package/test/agent-validation-catalog.ts +17 -0
- package/test/fixtures/valid-listening-job.yml +2 -1
- 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-
|
|
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,
|
|
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-
|
|
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,
|
|
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
|
|
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 {
|
|
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(
|
|
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,
|
|
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
|
-
|
|
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
|
|
14
|
+
contents: checkout.permissions?.contents ?? DEFAULT_JOB_CHECKOUT.permissions.contents
|
|
7
15
|
},
|
|
8
|
-
persistCredentials: checkout
|
|
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
|
|
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
|
|
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,
|
|
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"}
|
|
@@ -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
|
|
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;
|
|
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"}
|