@shipfox/api-definitions 2.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 +2 -0
- package/.turbo/turbo-type$colon$emit.log +1 -0
- package/.turbo/turbo-type.log +1 -0
- package/CHANGELOG.md +215 -0
- package/LICENSE +21 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +35 -0
- package/dist/config.js.map +1 -0
- package/dist/core/entities/index.d.ts +5 -0
- package/dist/core/entities/index.d.ts.map +1 -0
- package/dist/core/entities/index.js +6 -0
- package/dist/core/entities/index.js.map +1 -0
- package/dist/core/entities/integration-context.d.ts +11 -0
- package/dist/core/entities/integration-context.d.ts.map +1 -0
- package/dist/core/entities/integration-context.js +3 -0
- package/dist/core/entities/integration-context.js.map +1 -0
- package/dist/core/entities/sync-state.d.ts +19 -0
- package/dist/core/entities/sync-state.d.ts.map +1 -0
- package/dist/core/entities/sync-state.js +20 -0
- package/dist/core/entities/sync-state.js.map +1 -0
- package/dist/core/entities/workflow-definition.d.ts +35 -0
- package/dist/core/entities/workflow-definition.d.ts.map +1 -0
- package/dist/core/entities/workflow-definition.js +3 -0
- package/dist/core/entities/workflow-definition.js.map +1 -0
- package/dist/core/entities/workflow-model.d.ts +138 -0
- package/dist/core/entities/workflow-model.d.ts.map +1 -0
- package/dist/core/entities/workflow-model.js +3 -0
- package/dist/core/entities/workflow-model.js.map +1 -0
- package/dist/core/errors.d.ts +10 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +14 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/has-agent-step-integrations.d.ts +3 -0
- package/dist/core/has-agent-step-integrations.d.ts.map +1 -0
- package/dist/core/has-agent-step-integrations.js +5 -0
- package/dist/core/has-agent-step-integrations.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +9 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/parse-definition.d.ts +9 -0
- package/dist/core/parse-definition.d.ts.map +1 -0
- package/dist/core/parse-definition.js +17 -0
- package/dist/core/parse-definition.js.map +1 -0
- package/dist/core/sync-definitions.d.ts +44 -0
- package/dist/core/sync-definitions.d.ts.map +1 -0
- package/dist/core/sync-definitions.js +140 -0
- package/dist/core/sync-definitions.js.map +1 -0
- package/dist/core/validate-definition.d.ts +20 -0
- package/dist/core/validate-definition.d.ts.map +1 -0
- package/dist/core/validate-definition.js +61 -0
- package/dist/core/validate-definition.js.map +1 -0
- package/dist/core/workflow-model/constants.d.ts +2 -0
- package/dist/core/workflow-model/constants.d.ts.map +1 -0
- package/dist/core/workflow-model/constants.js +3 -0
- package/dist/core/workflow-model/constants.js.map +1 -0
- package/dist/core/workflow-model/cron-trigger.d.ts +16 -0
- package/dist/core/workflow-model/cron-trigger.d.ts.map +1 -0
- package/dist/core/workflow-model/cron-trigger.js +85 -0
- package/dist/core/workflow-model/cron-trigger.js.map +1 -0
- package/dist/core/workflow-model/index.d.ts +4 -0
- package/dist/core/workflow-model/index.d.ts.map +1 -0
- package/dist/core/workflow-model/index.js +5 -0
- package/dist/core/workflow-model/index.js.map +1 -0
- package/dist/core/workflow-model/invalid-workflow-model-error.d.ts +15 -0
- package/dist/core/workflow-model/invalid-workflow-model-error.d.ts.map +1 -0
- package/dist/core/workflow-model/invalid-workflow-model-error.js +9 -0
- package/dist/core/workflow-model/invalid-workflow-model-error.js.map +1 -0
- package/dist/core/workflow-model/map-job-ids.d.ts +4 -0
- package/dist/core/workflow-model/map-job-ids.d.ts.map +1 -0
- package/dist/core/workflow-model/map-job-ids.js +33 -0
- package/dist/core/workflow-model/map-job-ids.js.map +1 -0
- package/dist/core/workflow-model/normalize-agent-integrations.d.ts +12 -0
- package/dist/core/workflow-model/normalize-agent-integrations.d.ts.map +1 -0
- package/dist/core/workflow-model/normalize-agent-integrations.js +157 -0
- package/dist/core/workflow-model/normalize-agent-integrations.js.map +1 -0
- package/dist/core/workflow-model/normalize-dependencies.d.ts +6 -0
- package/dist/core/workflow-model/normalize-dependencies.d.ts.map +1 -0
- package/dist/core/workflow-model/normalize-dependencies.js +119 -0
- package/dist/core/workflow-model/normalize-dependencies.js.map +1 -0
- package/dist/core/workflow-model/normalize-env.d.ts +17 -0
- package/dist/core/workflow-model/normalize-env.d.ts.map +1 -0
- package/dist/core/workflow-model/normalize-env.js +40 -0
- package/dist/core/workflow-model/normalize-env.js.map +1 -0
- package/dist/core/workflow-model/normalize-if-condition.d.ts +14 -0
- package/dist/core/workflow-model/normalize-if-condition.d.ts.map +1 -0
- package/dist/core/workflow-model/normalize-if-condition.js +75 -0
- package/dist/core/workflow-model/normalize-if-condition.js.map +1 -0
- package/dist/core/workflow-model/normalize-job-checkout.d.ts +5 -0
- package/dist/core/workflow-model/normalize-job-checkout.d.ts.map +1 -0
- package/dist/core/workflow-model/normalize-job-checkout.js +16 -0
- package/dist/core/workflow-model/normalize-job-checkout.js.map +1 -0
- package/dist/core/workflow-model/normalize-job-listening.d.ts +10 -0
- package/dist/core/workflow-model/normalize-job-listening.d.ts.map +1 -0
- package/dist/core/workflow-model/normalize-job-listening.js +125 -0
- package/dist/core/workflow-model/normalize-job-listening.js.map +1 -0
- package/dist/core/workflow-model/normalize-job-success.d.ts +11 -0
- package/dist/core/workflow-model/normalize-job-success.d.ts.map +1 -0
- package/dist/core/workflow-model/normalize-job-success.js +23 -0
- package/dist/core/workflow-model/normalize-job-success.js.map +1 -0
- package/dist/core/workflow-model/normalize-jobs.d.ts +12 -0
- package/dist/core/workflow-model/normalize-jobs.d.ts.map +1 -0
- package/dist/core/workflow-model/normalize-jobs.js +935 -0
- package/dist/core/workflow-model/normalize-jobs.js.map +1 -0
- package/dist/core/workflow-model/normalize-needs.d.ts +2 -0
- package/dist/core/workflow-model/normalize-needs.d.ts.map +1 -0
- package/dist/core/workflow-model/normalize-needs.js +16 -0
- package/dist/core/workflow-model/normalize-needs.js.map +1 -0
- package/dist/core/workflow-model/normalize-step-gate.d.ts +15 -0
- package/dist/core/workflow-model/normalize-step-gate.d.ts.map +1 -0
- package/dist/core/workflow-model/normalize-step-gate.js +89 -0
- package/dist/core/workflow-model/normalize-step-gate.js.map +1 -0
- package/dist/core/workflow-model/normalize-step-outputs.d.ts +10 -0
- package/dist/core/workflow-model/normalize-step-outputs.d.ts.map +1 -0
- package/dist/core/workflow-model/normalize-step-outputs.js +32 -0
- package/dist/core/workflow-model/normalize-step-outputs.js.map +1 -0
- package/dist/core/workflow-model/normalize-triggers.d.ts +11 -0
- package/dist/core/workflow-model/normalize-triggers.d.ts.map +1 -0
- package/dist/core/workflow-model/normalize-triggers.js +128 -0
- package/dist/core/workflow-model/normalize-triggers.js.map +1 -0
- package/dist/core/workflow-model/normalize-workflow-document.d.ts +11 -0
- package/dist/core/workflow-model/normalize-workflow-document.d.ts.map +1 -0
- package/dist/core/workflow-model/normalize-workflow-document.js +43 -0
- package/dist/core/workflow-model/normalize-workflow-document.js.map +1 -0
- package/dist/core/workflow-model/parse-duration-ms.d.ts +11 -0
- package/dist/core/workflow-model/parse-duration-ms.d.ts.map +1 -0
- package/dist/core/workflow-model/parse-duration-ms.js +47 -0
- package/dist/core/workflow-model/parse-duration-ms.js.map +1 -0
- package/dist/core/workflow-model/parse-interpolation-field.d.ts +14 -0
- package/dist/core/workflow-model/parse-interpolation-field.d.ts.map +1 -0
- package/dist/core/workflow-model/parse-interpolation-field.js +377 -0
- package/dist/core/workflow-model/parse-interpolation-field.js.map +1 -0
- package/dist/core/workflow-model/stable-id.d.ts +2 -0
- package/dist/core/workflow-model/stable-id.d.ts.map +1 -0
- package/dist/core/workflow-model/stable-id.js +8 -0
- package/dist/core/workflow-model/stable-id.js.map +1 -0
- package/dist/core/workflow-model/validate-job-references.d.ts +10 -0
- package/dist/core/workflow-model/validate-job-references.d.ts.map +1 -0
- package/dist/core/workflow-model/validate-job-references.js +42 -0
- package/dist/core/workflow-model/validate-job-references.js.map +1 -0
- package/dist/core/workflow-model/validate-predicate-expression.d.ts +14 -0
- package/dist/core/workflow-model/validate-predicate-expression.d.ts.map +1 -0
- package/dist/core/workflow-model/validate-predicate-expression.js +273 -0
- package/dist/core/workflow-model/validate-predicate-expression.js.map +1 -0
- package/dist/core/workflow-model/validation-issue.d.ts +8 -0
- package/dist/core/workflow-model/validation-issue.d.ts.map +1 -0
- package/dist/core/workflow-model/validation-issue.js +17 -0
- package/dist/core/workflow-model/validation-issue.js.map +1 -0
- package/dist/core/workflow-model/workflow-field-label.d.ts +3 -0
- package/dist/core/workflow-model/workflow-field-label.d.ts.map +1 -0
- package/dist/core/workflow-model/workflow-field-label.js +47 -0
- package/dist/core/workflow-model/workflow-field-label.js.map +1 -0
- package/dist/core/workflow-yaml/index.d.ts +3 -0
- package/dist/core/workflow-yaml/index.d.ts.map +1 -0
- package/dist/core/workflow-yaml/index.js +4 -0
- package/dist/core/workflow-yaml/index.js.map +1 -0
- package/dist/core/workflow-yaml/invalid-workflow-yaml-error.d.ts +16 -0
- package/dist/core/workflow-yaml/invalid-workflow-yaml-error.d.ts.map +1 -0
- package/dist/core/workflow-yaml/invalid-workflow-yaml-error.js +12 -0
- package/dist/core/workflow-yaml/invalid-workflow-yaml-error.js.map +1 -0
- package/dist/core/workflow-yaml/parse-workflow-yaml.d.ts +9 -0
- package/dist/core/workflow-yaml/parse-workflow-yaml.d.ts.map +1 -0
- package/dist/core/workflow-yaml/parse-workflow-yaml.js +52 -0
- package/dist/core/workflow-yaml/parse-workflow-yaml.js.map +1 -0
- package/dist/core/workflow-yaml/source-locations.d.ts +3 -0
- package/dist/core/workflow-yaml/source-locations.d.ts.map +1 -0
- package/dist/core/workflow-yaml/source-locations.js +48 -0
- package/dist/core/workflow-yaml/source-locations.js.map +1 -0
- package/dist/db/db.d.ts +1277 -0
- package/dist/db/db.d.ts.map +1 -0
- package/dist/db/db.js +22 -0
- package/dist/db/db.js.map +1 -0
- package/dist/db/definition-triggers.d.ts +4 -0
- package/dist/db/definition-triggers.d.ts.map +1 -0
- package/dist/db/definition-triggers.js +17 -0
- package/dist/db/definition-triggers.js.map +1 -0
- package/dist/db/definitions.d.ts +63 -0
- package/dist/db/definitions.d.ts.map +1 -0
- package/dist/db/definitions.js +208 -0
- package/dist/db/definitions.js.map +1 -0
- package/dist/db/index.d.ts +8 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +10 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/schema/common.d.ts +2 -0
- package/dist/db/schema/common.d.ts.map +1 -0
- package/dist/db/schema/common.js +4 -0
- package/dist/db/schema/common.js.map +1 -0
- package/dist/db/schema/definitions.d.ts +237 -0
- package/dist/db/schema/definitions.d.ts.map +1 -0
- package/dist/db/schema/definitions.js +63 -0
- package/dist/db/schema/definitions.js.map +1 -0
- package/dist/db/schema/outbox.d.ts +195 -0
- package/dist/db/schema/outbox.d.ts.map +1 -0
- package/dist/db/schema/outbox.js +5 -0
- package/dist/db/schema/outbox.js.map +1 -0
- package/dist/db/schema/sync-states.d.ts +218 -0
- package/dist/db/schema/sync-states.d.ts.map +1 -0
- package/dist/db/schema/sync-states.js +68 -0
- package/dist/db/schema/sync-states.js.map +1 -0
- package/dist/db/sync-states.d.ts +21 -0
- package/dist/db/sync-states.d.ts.map +1 -0
- package/dist/db/sync-states.js +47 -0
- package/dist/db/sync-states.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -0
- package/dist/presentation/dto/definition.d.ts +6 -0
- package/dist/presentation/dto/definition.d.ts.map +1 -0
- package/dist/presentation/dto/definition.js +35 -0
- package/dist/presentation/dto/definition.js.map +1 -0
- package/dist/presentation/dto/index.d.ts +2 -0
- package/dist/presentation/dto/index.d.ts.map +1 -0
- package/dist/presentation/dto/index.js +3 -0
- package/dist/presentation/dto/index.js.map +1 -0
- package/dist/presentation/index.d.ts +2 -0
- package/dist/presentation/index.d.ts.map +1 -0
- package/dist/presentation/index.js +3 -0
- package/dist/presentation/index.js.map +1 -0
- package/dist/presentation/routes/create-definition.d.ts +9 -0
- package/dist/presentation/routes/create-definition.d.ts.map +1 -0
- package/dist/presentation/routes/create-definition.js +76 -0
- package/dist/presentation/routes/create-definition.js.map +1 -0
- package/dist/presentation/routes/get-definition.d.ts +2 -0
- package/dist/presentation/routes/get-definition.d.ts.map +1 -0
- package/dist/presentation/routes/get-definition.js +43 -0
- package/dist/presentation/routes/get-definition.js.map +1 -0
- package/dist/presentation/routes/index.d.ts +7 -0
- package/dist/presentation/routes/index.d.ts.map +1 -0
- package/dist/presentation/routes/index.js +22 -0
- package/dist/presentation/routes/index.js.map +1 -0
- package/dist/presentation/routes/list-definitions.d.ts +2 -0
- package/dist/presentation/routes/list-definitions.d.ts.map +1 -0
- package/dist/presentation/routes/list-definitions.js +56 -0
- package/dist/presentation/routes/list-definitions.js.map +1 -0
- package/dist/presentation/routes/validate-definition.d.ts +2 -0
- package/dist/presentation/routes/validate-definition.d.ts.map +1 -0
- package/dist/presentation/routes/validate-definition.js +43 -0
- package/dist/presentation/routes/validate-definition.js.map +1 -0
- package/dist/presentation/subscribers/index.d.ts +3 -0
- package/dist/presentation/subscribers/index.d.ts.map +1 -0
- package/dist/presentation/subscribers/index.js +4 -0
- package/dist/presentation/subscribers/index.js.map +1 -0
- package/dist/presentation/subscribers/on-project-source-bound.d.ts +3 -0
- package/dist/presentation/subscribers/on-project-source-bound.d.ts.map +1 -0
- package/dist/presentation/subscribers/on-project-source-bound.js +11 -0
- package/dist/presentation/subscribers/on-project-source-bound.js.map +1 -0
- package/dist/presentation/subscribers/on-project-source-commit-observed.d.ts +3 -0
- package/dist/presentation/subscribers/on-project-source-commit-observed.d.ts.map +1 -0
- package/dist/presentation/subscribers/on-project-source-commit-observed.js +13 -0
- package/dist/presentation/subscribers/on-project-source-commit-observed.js.map +1 -0
- package/dist/presentation/subscribers/start-definition-sync.d.ts +10 -0
- package/dist/presentation/subscribers/start-definition-sync.d.ts.map +1 -0
- package/dist/presentation/subscribers/start-definition-sync.js +26 -0
- package/dist/presentation/subscribers/start-definition-sync.js.map +1 -0
- package/dist/temporal/activities/index.d.ts +3 -0
- package/dist/temporal/activities/index.d.ts.map +1 -0
- package/dist/temporal/activities/index.js +3 -0
- package/dist/temporal/activities/index.js.map +1 -0
- package/dist/temporal/activities/sync-activities.d.ts +47 -0
- package/dist/temporal/activities/sync-activities.d.ts.map +1 -0
- package/dist/temporal/activities/sync-activities.js +128 -0
- package/dist/temporal/activities/sync-activities.js.map +1 -0
- package/dist/temporal/constants.d.ts +3 -0
- package/dist/temporal/constants.d.ts.map +1 -0
- package/dist/temporal/constants.js +4 -0
- package/dist/temporal/constants.js.map +1 -0
- package/dist/temporal/index.d.ts +3 -0
- package/dist/temporal/index.d.ts.map +1 -0
- package/dist/temporal/index.js +4 -0
- package/dist/temporal/index.js.map +1 -0
- package/dist/temporal/workflows/definition-sync.d.ts +20 -0
- package/dist/temporal/workflows/definition-sync.d.ts.map +1 -0
- package/dist/temporal/workflows/definition-sync.js +95 -0
- package/dist/temporal/workflows/definition-sync.js.map +1 -0
- package/dist/temporal/workflows/index.d.ts +2 -0
- package/dist/temporal/workflows/index.d.ts.map +1 -0
- package/dist/temporal/workflows/index.js +3 -0
- package/dist/temporal/workflows/index.js.map +1 -0
- package/dist/tsconfig.test.tsbuildinfo +1 -0
- package/drizzle/0000_initial.sql +64 -0
- package/drizzle/0001_definition_list_pagination.sql +1 -0
- package/drizzle/meta/0000_snapshot.json +527 -0
- package/drizzle/meta/_journal.json +20 -0
- package/drizzle.config.ts +11 -0
- package/package.json +89 -0
- package/src/config.test.ts +23 -0
- package/src/config.ts +50 -0
- package/src/core/entities/index.ts +4 -0
- package/src/core/entities/integration-context.ts +21 -0
- package/src/core/entities/sync-state.ts +40 -0
- package/src/core/entities/workflow-definition.ts +38 -0
- package/src/core/entities/workflow-model.ts +162 -0
- package/src/core/errors.ts +21 -0
- package/src/core/has-agent-step-integrations.ts +7 -0
- package/src/core/index.ts +23 -0
- package/src/core/parse-definition.test.ts +200 -0
- package/src/core/parse-definition.ts +28 -0
- package/src/core/sync-definitions.test.ts +390 -0
- package/src/core/sync-definitions.ts +216 -0
- package/src/core/validate-definition.test.ts +152 -0
- package/src/core/validate-definition.ts +72 -0
- package/src/core/workflow-model/README.md +129 -0
- package/src/core/workflow-model/constants.ts +1 -0
- package/src/core/workflow-model/cron-trigger.test.ts +29 -0
- package/src/core/workflow-model/cron-trigger.ts +83 -0
- package/src/core/workflow-model/index.ts +9 -0
- package/src/core/workflow-model/invalid-workflow-model-error.ts +71 -0
- package/src/core/workflow-model/map-job-ids.ts +33 -0
- package/src/core/workflow-model/normalize-agent-integrations.ts +208 -0
- package/src/core/workflow-model/normalize-dependencies.ts +139 -0
- package/src/core/workflow-model/normalize-env.ts +48 -0
- package/src/core/workflow-model/normalize-if-condition.ts +126 -0
- package/src/core/workflow-model/normalize-job-checkout.ts +19 -0
- package/src/core/workflow-model/normalize-job-listening.ts +121 -0
- package/src/core/workflow-model/normalize-job-success.ts +28 -0
- package/src/core/workflow-model/normalize-jobs.ts +1010 -0
- package/src/core/workflow-model/normalize-needs.ts +12 -0
- package/src/core/workflow-model/normalize-step-gate.ts +90 -0
- package/src/core/workflow-model/normalize-step-outputs.ts +36 -0
- package/src/core/workflow-model/normalize-triggers.ts +130 -0
- package/src/core/workflow-model/normalize-workflow-document.test.ts +4463 -0
- package/src/core/workflow-model/normalize-workflow-document.ts +63 -0
- package/src/core/workflow-model/parse-duration-ms.ts +58 -0
- package/src/core/workflow-model/parse-interpolation-field.ts +566 -0
- package/src/core/workflow-model/stable-id.ts +12 -0
- package/src/core/workflow-model/validate-job-references.ts +54 -0
- package/src/core/workflow-model/validate-predicate-expression.test.ts +161 -0
- package/src/core/workflow-model/validate-predicate-expression.ts +406 -0
- package/src/core/workflow-model/validation-issue.ts +27 -0
- package/src/core/workflow-model/workflow-field-label.ts +50 -0
- package/src/core/workflow-yaml/README.md +77 -0
- package/src/core/workflow-yaml/index.ts +11 -0
- package/src/core/workflow-yaml/invalid-workflow-yaml-error.ts +23 -0
- package/src/core/workflow-yaml/parse-workflow-yaml.test.ts +71 -0
- package/src/core/workflow-yaml/parse-workflow-yaml.ts +74 -0
- package/src/core/workflow-yaml/source-locations.ts +62 -0
- package/src/db/db.ts +18 -0
- package/src/db/definition-triggers.test.ts +95 -0
- package/src/db/definition-triggers.ts +17 -0
- package/src/db/definitions.test.ts +1309 -0
- package/src/db/definitions.ts +357 -0
- package/src/db/index.ts +31 -0
- package/src/db/schema/common.ts +3 -0
- package/src/db/schema/definitions.test.ts +36 -0
- package/src/db/schema/definitions.ts +76 -0
- package/src/db/schema/outbox.ts +4 -0
- package/src/db/schema/sync-states.ts +79 -0
- package/src/db/sync-states.test.ts +90 -0
- package/src/db/sync-states.ts +86 -0
- package/src/index.ts +104 -0
- package/src/presentation/dto/definition.test.ts +59 -0
- package/src/presentation/dto/definition.ts +41 -0
- package/src/presentation/dto/index.ts +1 -0
- package/src/presentation/index.ts +1 -0
- package/src/presentation/routes/create-definition.test.ts +356 -0
- package/src/presentation/routes/create-definition.ts +101 -0
- package/src/presentation/routes/get-definition.test.ts +79 -0
- package/src/presentation/routes/get-definition.ts +37 -0
- package/src/presentation/routes/index.test.ts +41 -0
- package/src/presentation/routes/index.ts +28 -0
- package/src/presentation/routes/list-definitions.test.ts +195 -0
- package/src/presentation/routes/list-definitions.ts +49 -0
- package/src/presentation/routes/validate-definition.test.ts +63 -0
- package/src/presentation/routes/validate-definition.ts +46 -0
- package/src/presentation/subscribers/index.ts +2 -0
- package/src/presentation/subscribers/on-project-source-bound.test.ts +65 -0
- package/src/presentation/subscribers/on-project-source-bound.ts +11 -0
- package/src/presentation/subscribers/on-project-source-commit-observed.test.ts +56 -0
- package/src/presentation/subscribers/on-project-source-commit-observed.ts +15 -0
- package/src/presentation/subscribers/start-definition-sync.ts +38 -0
- package/src/temporal/activities/index.ts +10 -0
- package/src/temporal/activities/sync-activities.test.ts +337 -0
- package/src/temporal/activities/sync-activities.ts +206 -0
- package/src/temporal/constants.ts +2 -0
- package/src/temporal/index.ts +2 -0
- package/src/temporal/workflows/definition-sync.test.ts +59 -0
- package/src/temporal/workflows/definition-sync.ts +116 -0
- package/src/temporal/workflows/index.ts +1 -0
- package/test/env.ts +7 -0
- package/test/factories/definition.ts +66 -0
- package/test/fixtures/invalid-cycle.yml +13 -0
- package/test/fixtures/invalid-missing-name.yml +4 -0
- package/test/fixtures/invalid-yaml-syntax.yml +6 -0
- package/test/fixtures/valid-dag.yml +25 -0
- package/test/fixtures/valid-listening-job.yml +21 -0
- package/test/fixtures/valid-simple.yml +18 -0
- package/test/fixtures/workflow-yaml/invalid/invalid-yaml-syntax.yaml +6 -0
- package/test/fixtures/workflow-yaml/invalid/missing-step-run.yaml +5 -0
- package/test/fixtures/workflow-yaml/valid/simple-build.document.json +26 -0
- package/test/fixtures/workflow-yaml/valid/simple-build.yaml +14 -0
- package/test/globalSetup.ts +25 -0
- package/test/index.ts +1 -0
- package/test/setup.ts +17 -0
- package/tsconfig.build.json +9 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/tsconfig.json +3 -0
- package/tsconfig.test.json +8 -0
- package/vitest.config.ts +11 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { Context } from '@temporalio/activity';
|
|
2
|
+
import { ApplicationFailure } from '@temporalio/common';
|
|
3
|
+
import { classifySyncFailure, discoverWorkflowFiles, fetchAndParseWorkflows, resolveSyncSource, UNRESOLVED_SYNC_REF } from '#core/index.js';
|
|
4
|
+
import { applyVcsDefinitionsBatch, markDefinitionSyncState } from '#db/index.js';
|
|
5
|
+
export function createDefinitionSyncActivities(sourceControl, integrationValidation) {
|
|
6
|
+
return {
|
|
7
|
+
prepareDefinitionSync: createPrepareDefinitionSyncActivity(sourceControl),
|
|
8
|
+
discoverDefinitionWorkflows: createDiscoverDefinitionWorkflowsActivity(sourceControl),
|
|
9
|
+
fetchAndApplyDefinitionWorkflows: createFetchAndApplyActivity(sourceControl, integrationValidation),
|
|
10
|
+
markDefinitionSyncSucceeded: createMarkSyncSucceededActivity(),
|
|
11
|
+
markDefinitionSyncFailed: createMarkSyncFailedActivity()
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function createPrepareDefinitionSyncActivity(sourceControl) {
|
|
15
|
+
return async function prepareDefinitionSync(input) {
|
|
16
|
+
return await runWithPermanentTranslation(async ()=>{
|
|
17
|
+
const sourceRef = input.sourceRef ?? (await resolveSyncSource({
|
|
18
|
+
...input,
|
|
19
|
+
sourceControl
|
|
20
|
+
})).ref;
|
|
21
|
+
await markDefinitionSyncState({
|
|
22
|
+
projectId: input.projectId,
|
|
23
|
+
sourceConnectionId: input.sourceConnectionId,
|
|
24
|
+
sourceExternalRepositoryId: input.sourceExternalRepositoryId,
|
|
25
|
+
ref: sourceRef,
|
|
26
|
+
status: 'syncing',
|
|
27
|
+
lastErrorCode: null,
|
|
28
|
+
lastErrorMessage: null,
|
|
29
|
+
startedAt: new Date(),
|
|
30
|
+
finishedAt: null
|
|
31
|
+
});
|
|
32
|
+
return {
|
|
33
|
+
sourceRef,
|
|
34
|
+
sourceCommitSha: input.sourceCommitSha
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function createDiscoverDefinitionWorkflowsActivity(sourceControl) {
|
|
40
|
+
return async function discoverDefinitionWorkflows(input) {
|
|
41
|
+
return await runWithPermanentTranslation(async ()=>{
|
|
42
|
+
return await discoverWorkflowFiles({
|
|
43
|
+
...input,
|
|
44
|
+
ref: input.sourceCommitSha ?? input.sourceRef,
|
|
45
|
+
sourceControl
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function createFetchAndApplyActivity(sourceControl, integrationValidation) {
|
|
51
|
+
return async function fetchAndApplyDefinitionWorkflows(input) {
|
|
52
|
+
return await runWithPermanentTranslation(async ()=>{
|
|
53
|
+
const definitions = await fetchAndParseWorkflows({
|
|
54
|
+
...input,
|
|
55
|
+
ref: input.sourceCommitSha ?? input.sourceRef,
|
|
56
|
+
sourceControl,
|
|
57
|
+
onProgress: (path)=>Context.current().heartbeat({
|
|
58
|
+
path
|
|
59
|
+
}),
|
|
60
|
+
loadIntegrationValidationContext: integrationValidation === undefined ? undefined : async ()=>{
|
|
61
|
+
const sourceConnection = await integrationValidation.getIntegrationConnectionById(input.sourceConnectionId);
|
|
62
|
+
return {
|
|
63
|
+
agentToolSelectionCatalogs: integrationValidation.agentToolSelectionCatalogs,
|
|
64
|
+
workspaceConnectionSnapshot: await integrationValidation.loadWorkspaceConnectionSnapshot(input.workspaceId),
|
|
65
|
+
defaultConnectionSlug: sourceConnection?.slug
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return await applyVcsDefinitionsBatch({
|
|
70
|
+
projectId: input.projectId,
|
|
71
|
+
workspaceId: input.workspaceId,
|
|
72
|
+
ref: input.sourceRef,
|
|
73
|
+
upserts: definitions.map((entry)=>({
|
|
74
|
+
configPath: entry.path,
|
|
75
|
+
name: entry.name,
|
|
76
|
+
document: entry.definition.document,
|
|
77
|
+
model: entry.definition.model,
|
|
78
|
+
sourceSnapshot: entry.definition.sourceSnapshot,
|
|
79
|
+
contentHash: entry.contentHash
|
|
80
|
+
}))
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function createMarkSyncSucceededActivity() {
|
|
86
|
+
return async function markDefinitionSyncSucceeded(input) {
|
|
87
|
+
await markDefinitionSyncState({
|
|
88
|
+
projectId: input.projectId,
|
|
89
|
+
sourceConnectionId: input.sourceConnectionId,
|
|
90
|
+
sourceExternalRepositoryId: input.sourceExternalRepositoryId,
|
|
91
|
+
ref: input.sourceRef,
|
|
92
|
+
status: 'succeeded',
|
|
93
|
+
lastErrorCode: null,
|
|
94
|
+
lastErrorMessage: null,
|
|
95
|
+
finishedAt: new Date()
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function createMarkSyncFailedActivity() {
|
|
100
|
+
return async function markDefinitionSyncFailed(input) {
|
|
101
|
+
await markDefinitionSyncState({
|
|
102
|
+
projectId: input.projectId,
|
|
103
|
+
sourceConnectionId: input.sourceConnectionId,
|
|
104
|
+
sourceExternalRepositoryId: input.sourceExternalRepositoryId,
|
|
105
|
+
ref: input.sourceRef ?? UNRESOLVED_SYNC_REF,
|
|
106
|
+
status: 'failed',
|
|
107
|
+
lastErrorCode: input.code,
|
|
108
|
+
lastErrorMessage: input.message,
|
|
109
|
+
finishedAt: new Date()
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
async function runWithPermanentTranslation(operation) {
|
|
114
|
+
try {
|
|
115
|
+
return await operation();
|
|
116
|
+
} catch (error) {
|
|
117
|
+
if (error instanceof ApplicationFailure) {
|
|
118
|
+
throw error;
|
|
119
|
+
}
|
|
120
|
+
const failure = classifySyncFailure(error);
|
|
121
|
+
if (!failure.retryable) {
|
|
122
|
+
throw ApplicationFailure.nonRetryable(failure.message, failure.code);
|
|
123
|
+
}
|
|
124
|
+
throw ApplicationFailure.retryable(failure.message, failure.code);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
//# sourceMappingURL=sync-activities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/temporal/activities/sync-activities.ts"],"sourcesContent":["import type {\n AgentToolSelectionCatalogs,\n IntegrationSourceControlService,\n LoadWorkspaceConnectionSnapshot,\n} from '@shipfox/api-integration-core';\nimport {Context} from '@temporalio/activity';\nimport {ApplicationFailure} from '@temporalio/common';\nimport type {DefinitionSyncErrorCode} from '#core/entities/sync-state.js';\nimport {\n classifySyncFailure,\n discoverWorkflowFiles,\n fetchAndParseWorkflows,\n resolveSyncSource,\n UNRESOLVED_SYNC_REF,\n} from '#core/index.js';\nimport {applyVcsDefinitionsBatch, markDefinitionSyncState} from '#db/index.js';\n\nexport interface SyncWorkflowInput {\n projectId: string;\n workspaceId: string;\n sourceConnectionId: string;\n sourceExternalRepositoryId: string;\n sourceRef?: string | undefined;\n sourceCommitSha?: string | undefined;\n}\n\nexport interface SyncRefScopedInput extends SyncWorkflowInput {\n sourceRef: string;\n}\n\nexport interface FetchAndApplyActivityInput extends SyncRefScopedInput {\n paths: string[];\n}\n\nexport interface MarkSyncFailedActivityInput extends Omit<SyncWorkflowInput, 'sourceRef'> {\n sourceRef: string | null;\n code: DefinitionSyncErrorCode;\n message: string;\n}\n\nexport interface PrepareSyncResult {\n sourceRef: string;\n sourceCommitSha?: string | undefined;\n}\n\nexport interface DiscoverWorkflowsActivityResult {\n paths: string[];\n}\n\nexport interface FetchAndApplyActivityResult {\n appliedCount: number;\n deletedCount: number;\n}\n\nexport interface DefinitionSyncIntegrationValidationOptions {\n agentToolSelectionCatalogs: AgentToolSelectionCatalogs;\n loadWorkspaceConnectionSnapshot: LoadWorkspaceConnectionSnapshot;\n getIntegrationConnectionById: (id: string) => Promise<{slug: string} | undefined>;\n}\n\nexport function createDefinitionSyncActivities(\n sourceControl: IntegrationSourceControlService,\n integrationValidation?: DefinitionSyncIntegrationValidationOptions | undefined,\n) {\n return {\n prepareDefinitionSync: createPrepareDefinitionSyncActivity(sourceControl),\n discoverDefinitionWorkflows: createDiscoverDefinitionWorkflowsActivity(sourceControl),\n fetchAndApplyDefinitionWorkflows: createFetchAndApplyActivity(\n sourceControl,\n integrationValidation,\n ),\n markDefinitionSyncSucceeded: createMarkSyncSucceededActivity(),\n markDefinitionSyncFailed: createMarkSyncFailedActivity(),\n };\n}\n\nfunction createPrepareDefinitionSyncActivity(sourceControl: IntegrationSourceControlService) {\n return async function prepareDefinitionSync(\n input: SyncWorkflowInput,\n ): Promise<PrepareSyncResult> {\n return await runWithPermanentTranslation(async () => {\n const sourceRef = input.sourceRef ?? (await resolveSyncSource({...input, sourceControl})).ref;\n\n await markDefinitionSyncState({\n projectId: input.projectId,\n sourceConnectionId: input.sourceConnectionId,\n sourceExternalRepositoryId: input.sourceExternalRepositoryId,\n ref: sourceRef,\n status: 'syncing',\n lastErrorCode: null,\n lastErrorMessage: null,\n startedAt: new Date(),\n finishedAt: null,\n });\n\n return {sourceRef, sourceCommitSha: input.sourceCommitSha};\n });\n };\n}\n\nfunction createDiscoverDefinitionWorkflowsActivity(sourceControl: IntegrationSourceControlService) {\n return async function discoverDefinitionWorkflows(\n input: SyncRefScopedInput,\n ): Promise<DiscoverWorkflowsActivityResult> {\n return await runWithPermanentTranslation(async () => {\n return await discoverWorkflowFiles({\n ...input,\n ref: input.sourceCommitSha ?? input.sourceRef,\n sourceControl,\n });\n });\n };\n}\n\nfunction createFetchAndApplyActivity(\n sourceControl: IntegrationSourceControlService,\n integrationValidation?: DefinitionSyncIntegrationValidationOptions | undefined,\n) {\n return async function fetchAndApplyDefinitionWorkflows(\n input: FetchAndApplyActivityInput,\n ): Promise<FetchAndApplyActivityResult> {\n return await runWithPermanentTranslation(async () => {\n const definitions = await fetchAndParseWorkflows({\n ...input,\n ref: input.sourceCommitSha ?? input.sourceRef,\n sourceControl,\n onProgress: (path) => Context.current().heartbeat({path}),\n loadIntegrationValidationContext:\n integrationValidation === undefined\n ? undefined\n : async () => {\n const sourceConnection = await integrationValidation.getIntegrationConnectionById(\n input.sourceConnectionId,\n );\n return {\n agentToolSelectionCatalogs: integrationValidation.agentToolSelectionCatalogs,\n workspaceConnectionSnapshot:\n await integrationValidation.loadWorkspaceConnectionSnapshot(input.workspaceId),\n defaultConnectionSlug: sourceConnection?.slug,\n };\n },\n });\n\n return await applyVcsDefinitionsBatch({\n projectId: input.projectId,\n workspaceId: input.workspaceId,\n ref: input.sourceRef,\n upserts: definitions.map((entry) => ({\n configPath: entry.path,\n name: entry.name,\n document: entry.definition.document,\n model: entry.definition.model,\n sourceSnapshot: entry.definition.sourceSnapshot,\n contentHash: entry.contentHash,\n })),\n });\n });\n };\n}\n\nfunction createMarkSyncSucceededActivity() {\n return async function markDefinitionSyncSucceeded(input: SyncRefScopedInput): Promise<void> {\n await markDefinitionSyncState({\n projectId: input.projectId,\n sourceConnectionId: input.sourceConnectionId,\n sourceExternalRepositoryId: input.sourceExternalRepositoryId,\n ref: input.sourceRef,\n status: 'succeeded',\n lastErrorCode: null,\n lastErrorMessage: null,\n finishedAt: new Date(),\n });\n };\n}\n\nfunction createMarkSyncFailedActivity() {\n return async function markDefinitionSyncFailed(\n input: MarkSyncFailedActivityInput,\n ): Promise<void> {\n await markDefinitionSyncState({\n projectId: input.projectId,\n sourceConnectionId: input.sourceConnectionId,\n sourceExternalRepositoryId: input.sourceExternalRepositoryId,\n ref: input.sourceRef ?? UNRESOLVED_SYNC_REF,\n status: 'failed',\n lastErrorCode: input.code,\n lastErrorMessage: input.message,\n finishedAt: new Date(),\n });\n };\n}\n\nasync function runWithPermanentTranslation<T>(operation: () => Promise<T>): Promise<T> {\n try {\n return await operation();\n } catch (error) {\n if (error instanceof ApplicationFailure) {\n throw error;\n }\n const failure = classifySyncFailure(error);\n if (!failure.retryable) {\n throw ApplicationFailure.nonRetryable(failure.message, failure.code);\n }\n throw ApplicationFailure.retryable(failure.message, failure.code);\n }\n}\n"],"names":["Context","ApplicationFailure","classifySyncFailure","discoverWorkflowFiles","fetchAndParseWorkflows","resolveSyncSource","UNRESOLVED_SYNC_REF","applyVcsDefinitionsBatch","markDefinitionSyncState","createDefinitionSyncActivities","sourceControl","integrationValidation","prepareDefinitionSync","createPrepareDefinitionSyncActivity","discoverDefinitionWorkflows","createDiscoverDefinitionWorkflowsActivity","fetchAndApplyDefinitionWorkflows","createFetchAndApplyActivity","markDefinitionSyncSucceeded","createMarkSyncSucceededActivity","markDefinitionSyncFailed","createMarkSyncFailedActivity","input","runWithPermanentTranslation","sourceRef","ref","projectId","sourceConnectionId","sourceExternalRepositoryId","status","lastErrorCode","lastErrorMessage","startedAt","Date","finishedAt","sourceCommitSha","definitions","onProgress","path","current","heartbeat","loadIntegrationValidationContext","undefined","sourceConnection","getIntegrationConnectionById","agentToolSelectionCatalogs","workspaceConnectionSnapshot","loadWorkspaceConnectionSnapshot","workspaceId","defaultConnectionSlug","slug","upserts","map","entry","configPath","name","document","definition","model","sourceSnapshot","contentHash","code","message","operation","error","failure","retryable","nonRetryable"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/temporal/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AACzD,eAAO,MAAM,wBAAwB,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/temporal/constants.ts"],"sourcesContent":["export const DEFINITIONS_TASK_QUEUE = 'definitions-sync';\nexport const DEFINITION_SYNC_WORKFLOW = 'definitionSyncWorkflow';\n"],"names":["DEFINITIONS_TASK_QUEUE","DEFINITION_SYNC_WORKFLOW"],"mappings":"AAAA,OAAO,MAAMA,yBAAyB,mBAAmB;AACzD,OAAO,MAAMC,2BAA2B,yBAAyB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/temporal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,8BAA8B,EAAC,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAC,wBAAwB,EAAE,sBAAsB,EAAC,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/temporal/index.ts"],"sourcesContent":["export {createDefinitionSyncActivities} from './activities/index.js';\nexport {DEFINITION_SYNC_WORKFLOW, DEFINITIONS_TASK_QUEUE} from './constants.js';\n"],"names":["createDefinitionSyncActivities","DEFINITION_SYNC_WORKFLOW","DEFINITIONS_TASK_QUEUE"],"mappings":"AAAA,SAAQA,8BAA8B,QAAO,wBAAwB;AACrE,SAAQC,wBAAwB,EAAEC,sBAAsB,QAAO,iBAAiB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type DefinitionSyncErrorCode } from '#core/entities/sync-state.js';
|
|
2
|
+
export interface DefinitionSyncWorkflowInput {
|
|
3
|
+
projectId: string;
|
|
4
|
+
workspaceId: string;
|
|
5
|
+
sourceConnectionId: string;
|
|
6
|
+
sourceExternalRepositoryId: string;
|
|
7
|
+
sourceRef?: string | undefined;
|
|
8
|
+
sourceCommitSha?: string | undefined;
|
|
9
|
+
}
|
|
10
|
+
export interface DefinitionSyncWorkflowResult {
|
|
11
|
+
sourceRef: string;
|
|
12
|
+
appliedCount: number;
|
|
13
|
+
deletedCount: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function definitionSyncWorkflow(input: DefinitionSyncWorkflowInput): Promise<DefinitionSyncWorkflowResult>;
|
|
16
|
+
export declare function classifyWorkflowError(error: unknown): {
|
|
17
|
+
code: DefinitionSyncErrorCode;
|
|
18
|
+
message: string;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=definition-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition-sync.d.ts","sourceRoot":"","sources":["../../../src/temporal/workflows/definition-sync.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,8BAA8B,CAAC;AAGtC,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AA8BD,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,4BAA4B,CAAC,CA6CvC;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG;IACrD,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB,CASA"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { ActivityFailure, ApplicationFailure, proxyActivities } from '@temporalio/workflow';
|
|
2
|
+
import { isDefinitionSyncErrorCode } from '#core/entities/sync-state.js';
|
|
3
|
+
const PROVIDER_RETRY = {
|
|
4
|
+
initialInterval: '5 seconds',
|
|
5
|
+
backoffCoefficient: 2,
|
|
6
|
+
maximumInterval: '1 minute',
|
|
7
|
+
maximumAttempts: 5
|
|
8
|
+
};
|
|
9
|
+
const DB_RETRY = {
|
|
10
|
+
initialInterval: '1 second',
|
|
11
|
+
backoffCoefficient: 2,
|
|
12
|
+
maximumInterval: '15 seconds',
|
|
13
|
+
maximumAttempts: 5
|
|
14
|
+
};
|
|
15
|
+
const { prepareDefinitionSync, discoverDefinitionWorkflows, fetchAndApplyDefinitionWorkflows } = proxyActivities({
|
|
16
|
+
startToCloseTimeout: '5 minutes',
|
|
17
|
+
heartbeatTimeout: '30 seconds',
|
|
18
|
+
retry: PROVIDER_RETRY
|
|
19
|
+
});
|
|
20
|
+
const { markDefinitionSyncSucceeded, markDefinitionSyncFailed } = proxyActivities({
|
|
21
|
+
startToCloseTimeout: '30 seconds',
|
|
22
|
+
retry: DB_RETRY
|
|
23
|
+
});
|
|
24
|
+
export async function definitionSyncWorkflow(input) {
|
|
25
|
+
let sourceRef = null;
|
|
26
|
+
try {
|
|
27
|
+
const prepared = await prepareDefinitionSync(input);
|
|
28
|
+
sourceRef = prepared.sourceRef;
|
|
29
|
+
const source = {
|
|
30
|
+
...input,
|
|
31
|
+
sourceRef: prepared.sourceRef,
|
|
32
|
+
sourceCommitSha: prepared.sourceCommitSha
|
|
33
|
+
};
|
|
34
|
+
const { paths } = await discoverDefinitionWorkflows(source);
|
|
35
|
+
const applied = await fetchAndApplyDefinitionWorkflows({
|
|
36
|
+
...source,
|
|
37
|
+
paths
|
|
38
|
+
});
|
|
39
|
+
await markDefinitionSyncSucceeded(source);
|
|
40
|
+
return {
|
|
41
|
+
sourceRef,
|
|
42
|
+
appliedCount: applied.appliedCount,
|
|
43
|
+
deletedCount: applied.deletedCount
|
|
44
|
+
};
|
|
45
|
+
} catch (error) {
|
|
46
|
+
const { code, message } = classifyWorkflowError(error);
|
|
47
|
+
try {
|
|
48
|
+
await markDefinitionSyncFailed({
|
|
49
|
+
...input,
|
|
50
|
+
sourceRef,
|
|
51
|
+
code,
|
|
52
|
+
message
|
|
53
|
+
});
|
|
54
|
+
} catch (markFailedError) {
|
|
55
|
+
const failureOptions = {
|
|
56
|
+
message: `Definition sync failed with ${code}: ${message}; additionally failed to persist failure state: ${formatWorkflowError(markFailedError)}`,
|
|
57
|
+
type: 'definition-sync-failure-persistence-failed',
|
|
58
|
+
nonRetryable: true,
|
|
59
|
+
details: [
|
|
60
|
+
{
|
|
61
|
+
syncFailureCode: code,
|
|
62
|
+
syncFailureMessage: message,
|
|
63
|
+
failurePersistenceMessage: formatWorkflowError(markFailedError)
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
};
|
|
67
|
+
throw ApplicationFailure.create(error instanceof Error ? {
|
|
68
|
+
...failureOptions,
|
|
69
|
+
cause: error
|
|
70
|
+
} : failureOptions);
|
|
71
|
+
}
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export function classifyWorkflowError(error) {
|
|
76
|
+
if (error instanceof ActivityFailure && error.cause instanceof ApplicationFailure) {
|
|
77
|
+
return classifyWorkflowError(error.cause);
|
|
78
|
+
}
|
|
79
|
+
if (error instanceof ApplicationFailure) {
|
|
80
|
+
const code = isDefinitionSyncErrorCode(error.type) ? error.type : 'unknown';
|
|
81
|
+
return {
|
|
82
|
+
code,
|
|
83
|
+
message: error.message ?? code
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
code: 'unknown',
|
|
88
|
+
message: error instanceof Error ? error.message : String(error)
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function formatWorkflowError(error) {
|
|
92
|
+
return error instanceof Error ? error.message : String(error);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
//# sourceMappingURL=definition-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/temporal/workflows/definition-sync.ts"],"sourcesContent":["import {ActivityFailure, ApplicationFailure, proxyActivities} from '@temporalio/workflow';\nimport {\n type DefinitionSyncErrorCode,\n isDefinitionSyncErrorCode,\n} from '#core/entities/sync-state.js';\nimport type {createDefinitionSyncActivities} from '../activities/index.js';\n\nexport interface DefinitionSyncWorkflowInput {\n projectId: string;\n workspaceId: string;\n sourceConnectionId: string;\n sourceExternalRepositoryId: string;\n sourceRef?: string | undefined;\n sourceCommitSha?: string | undefined;\n}\n\nexport interface DefinitionSyncWorkflowResult {\n sourceRef: string;\n appliedCount: number;\n deletedCount: number;\n}\n\nconst PROVIDER_RETRY = {\n initialInterval: '5 seconds',\n backoffCoefficient: 2,\n maximumInterval: '1 minute',\n maximumAttempts: 5,\n} as const;\n\nconst DB_RETRY = {\n initialInterval: '1 second',\n backoffCoefficient: 2,\n maximumInterval: '15 seconds',\n maximumAttempts: 5,\n} as const;\n\nconst {prepareDefinitionSync, discoverDefinitionWorkflows, fetchAndApplyDefinitionWorkflows} =\n proxyActivities<ReturnType<typeof createDefinitionSyncActivities>>({\n startToCloseTimeout: '5 minutes',\n heartbeatTimeout: '30 seconds',\n retry: PROVIDER_RETRY,\n });\n\nconst {markDefinitionSyncSucceeded, markDefinitionSyncFailed} = proxyActivities<\n ReturnType<typeof createDefinitionSyncActivities>\n>({\n startToCloseTimeout: '30 seconds',\n retry: DB_RETRY,\n});\n\nexport async function definitionSyncWorkflow(\n input: DefinitionSyncWorkflowInput,\n): Promise<DefinitionSyncWorkflowResult> {\n let sourceRef: string | null = null;\n\n try {\n const prepared = await prepareDefinitionSync(input);\n sourceRef = prepared.sourceRef;\n\n const source = {\n ...input,\n sourceRef: prepared.sourceRef,\n sourceCommitSha: prepared.sourceCommitSha,\n };\n const {paths} = await discoverDefinitionWorkflows(source);\n const applied = await fetchAndApplyDefinitionWorkflows({...source, paths});\n\n await markDefinitionSyncSucceeded(source);\n\n return {\n sourceRef,\n appliedCount: applied.appliedCount,\n deletedCount: applied.deletedCount,\n };\n } catch (error) {\n const {code, message} = classifyWorkflowError(error);\n try {\n await markDefinitionSyncFailed({...input, sourceRef, code, message});\n } catch (markFailedError) {\n const failureOptions = {\n message: `Definition sync failed with ${code}: ${message}; additionally failed to persist failure state: ${formatWorkflowError(markFailedError)}`,\n type: 'definition-sync-failure-persistence-failed',\n nonRetryable: true,\n details: [\n {\n syncFailureCode: code,\n syncFailureMessage: message,\n failurePersistenceMessage: formatWorkflowError(markFailedError),\n },\n ],\n };\n throw ApplicationFailure.create(\n error instanceof Error ? {...failureOptions, cause: error} : failureOptions,\n );\n }\n throw error;\n }\n}\n\nexport function classifyWorkflowError(error: unknown): {\n code: DefinitionSyncErrorCode;\n message: string;\n} {\n if (error instanceof ActivityFailure && error.cause instanceof ApplicationFailure) {\n return classifyWorkflowError(error.cause);\n }\n if (error instanceof ApplicationFailure) {\n const code = isDefinitionSyncErrorCode(error.type) ? error.type : 'unknown';\n return {code, message: error.message ?? code};\n }\n return {code: 'unknown', message: error instanceof Error ? error.message : String(error)};\n}\n\nfunction formatWorkflowError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"],"names":["ActivityFailure","ApplicationFailure","proxyActivities","isDefinitionSyncErrorCode","PROVIDER_RETRY","initialInterval","backoffCoefficient","maximumInterval","maximumAttempts","DB_RETRY","prepareDefinitionSync","discoverDefinitionWorkflows","fetchAndApplyDefinitionWorkflows","startToCloseTimeout","heartbeatTimeout","retry","markDefinitionSyncSucceeded","markDefinitionSyncFailed","definitionSyncWorkflow","input","sourceRef","prepared","source","sourceCommitSha","paths","applied","appliedCount","deletedCount","error","code","message","classifyWorkflowError","markFailedError","failureOptions","formatWorkflowError","type","nonRetryable","details","syncFailureCode","syncFailureMessage","failurePersistenceMessage","create","Error","cause","String"],"mappings":"AAAA,SAAQA,eAAe,EAAEC,kBAAkB,EAAEC,eAAe,QAAO,uBAAuB;AAC1F,SAEEC,yBAAyB,QACpB,+BAA+B;AAkBtC,MAAMC,iBAAiB;IACrBC,iBAAiB;IACjBC,oBAAoB;IACpBC,iBAAiB;IACjBC,iBAAiB;AACnB;AAEA,MAAMC,WAAW;IACfJ,iBAAiB;IACjBC,oBAAoB;IACpBC,iBAAiB;IACjBC,iBAAiB;AACnB;AAEA,MAAM,EAACE,qBAAqB,EAAEC,2BAA2B,EAAEC,gCAAgC,EAAC,GAC1FV,gBAAmE;IACjEW,qBAAqB;IACrBC,kBAAkB;IAClBC,OAAOX;AACT;AAEF,MAAM,EAACY,2BAA2B,EAAEC,wBAAwB,EAAC,GAAGf,gBAE9D;IACAW,qBAAqB;IACrBE,OAAON;AACT;AAEA,OAAO,eAAeS,uBACpBC,KAAkC;IAElC,IAAIC,YAA2B;IAE/B,IAAI;QACF,MAAMC,WAAW,MAAMX,sBAAsBS;QAC7CC,YAAYC,SAASD,SAAS;QAE9B,MAAME,SAAS;YACb,GAAGH,KAAK;YACRC,WAAWC,SAASD,SAAS;YAC7BG,iBAAiBF,SAASE,eAAe;QAC3C;QACA,MAAM,EAACC,KAAK,EAAC,GAAG,MAAMb,4BAA4BW;QAClD,MAAMG,UAAU,MAAMb,iCAAiC;YAAC,GAAGU,MAAM;YAAEE;QAAK;QAExE,MAAMR,4BAA4BM;QAElC,OAAO;YACLF;YACAM,cAAcD,QAAQC,YAAY;YAClCC,cAAcF,QAAQE,YAAY;QACpC;IACF,EAAE,OAAOC,OAAO;QACd,MAAM,EAACC,IAAI,EAAEC,OAAO,EAAC,GAAGC,sBAAsBH;QAC9C,IAAI;YACF,MAAMX,yBAAyB;gBAAC,GAAGE,KAAK;gBAAEC;gBAAWS;gBAAMC;YAAO;QACpE,EAAE,OAAOE,iBAAiB;YACxB,MAAMC,iBAAiB;gBACrBH,SAAS,CAAC,4BAA4B,EAAED,KAAK,EAAE,EAAEC,QAAQ,gDAAgD,EAAEI,oBAAoBF,kBAAkB;gBACjJG,MAAM;gBACNC,cAAc;gBACdC,SAAS;oBACP;wBACEC,iBAAiBT;wBACjBU,oBAAoBT;wBACpBU,2BAA2BN,oBAAoBF;oBACjD;iBACD;YACH;YACA,MAAM/B,mBAAmBwC,MAAM,CAC7Bb,iBAAiBc,QAAQ;gBAAC,GAAGT,cAAc;gBAAEU,OAAOf;YAAK,IAAIK;QAEjE;QACA,MAAML;IACR;AACF;AAEA,OAAO,SAASG,sBAAsBH,KAAc;IAIlD,IAAIA,iBAAiB5B,mBAAmB4B,MAAMe,KAAK,YAAY1C,oBAAoB;QACjF,OAAO8B,sBAAsBH,MAAMe,KAAK;IAC1C;IACA,IAAIf,iBAAiB3B,oBAAoB;QACvC,MAAM4B,OAAO1B,0BAA0ByB,MAAMO,IAAI,IAAIP,MAAMO,IAAI,GAAG;QAClE,OAAO;YAACN;YAAMC,SAASF,MAAME,OAAO,IAAID;QAAI;IAC9C;IACA,OAAO;QAACA,MAAM;QAAWC,SAASF,iBAAiBc,QAAQd,MAAME,OAAO,GAAGc,OAAOhB;IAAM;AAC1F;AAEA,SAASM,oBAAoBN,KAAc;IACzC,OAAOA,iBAAiBc,QAAQd,MAAME,OAAO,GAAGc,OAAOhB;AACzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/temporal/workflows/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/temporal/workflows/index.ts"],"sourcesContent":["export {definitionSyncWorkflow} from './definition-sync.js';\n"],"names":["definitionSyncWorkflow"],"mappings":"AAAA,SAAQA,sBAAsB,QAAO,uBAAuB"}
|