@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,76 @@
|
|
|
1
|
+
import { createDefinitionBodySchema, definitionResponseSchema, definitionValidationErrorSchema } from '@shipfox/api-definitions-dto';
|
|
2
|
+
import { ProjectNotFoundError, requireProjectAccess } from '@shipfox/api-projects';
|
|
3
|
+
import { ClientError, defineRoute } from '@shipfox/node-fastify';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { DefinitionParseError } from '#core/errors.js';
|
|
6
|
+
import { hasAgentStepIntegrations } from '#core/has-agent-step-integrations.js';
|
|
7
|
+
import { parseDefinition } from '#core/parse-definition.js';
|
|
8
|
+
import { upsertDefinition } from '#db/definitions.js';
|
|
9
|
+
import { toDefinitionDto } from '#presentation/dto/index.js';
|
|
10
|
+
export function buildCreateDefinitionRoute(options = {}) {
|
|
11
|
+
return defineRoute({
|
|
12
|
+
method: 'POST',
|
|
13
|
+
path: '/',
|
|
14
|
+
description: 'Create or update a workflow definition',
|
|
15
|
+
schema: {
|
|
16
|
+
body: createDefinitionBodySchema,
|
|
17
|
+
response: {
|
|
18
|
+
200: definitionResponseSchema,
|
|
19
|
+
400: z.object({
|
|
20
|
+
code: z.string(),
|
|
21
|
+
message: z.string().optional(),
|
|
22
|
+
details: z.array(definitionValidationErrorSchema).optional()
|
|
23
|
+
}),
|
|
24
|
+
404: z.object({
|
|
25
|
+
code: z.string()
|
|
26
|
+
})
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
errorHandler: (error, _request, _reply)=>{
|
|
30
|
+
if (error instanceof DefinitionParseError) {
|
|
31
|
+
throw new ClientError(error.message, 'invalid-workflow-definition', {
|
|
32
|
+
details: error.details,
|
|
33
|
+
status: 400
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (error instanceof ProjectNotFoundError) {
|
|
37
|
+
throw new ClientError(error.message, 'project-not-found', {
|
|
38
|
+
status: 404
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
throw error;
|
|
42
|
+
},
|
|
43
|
+
handler: async (request)=>{
|
|
44
|
+
const { project_id: projectId, config_path, source, yaml: yamlString, sha, ref } = request.body;
|
|
45
|
+
const { project } = await requireProjectAccess({
|
|
46
|
+
request,
|
|
47
|
+
projectId
|
|
48
|
+
});
|
|
49
|
+
const structurallyParsed = parseDefinition(yamlString);
|
|
50
|
+
const { agentToolSelectionCatalogs, loadWorkspaceConnectionSnapshot, getIntegrationConnectionById } = options;
|
|
51
|
+
const parsed = agentToolSelectionCatalogs !== undefined && loadWorkspaceConnectionSnapshot !== undefined && hasAgentStepIntegrations(structurallyParsed.document) ? parseDefinition(yamlString, {
|
|
52
|
+
integrationValidationContext: {
|
|
53
|
+
agentToolSelectionCatalogs,
|
|
54
|
+
workspaceConnectionSnapshot: await loadWorkspaceConnectionSnapshot(project.workspaceId),
|
|
55
|
+
defaultConnectionSlug: getIntegrationConnectionById === undefined ? undefined : (await getIntegrationConnectionById(project.sourceConnectionId))?.slug
|
|
56
|
+
}
|
|
57
|
+
}) : structurallyParsed;
|
|
58
|
+
const definition = await upsertDefinition({
|
|
59
|
+
projectId,
|
|
60
|
+
workspaceId: project.workspaceId,
|
|
61
|
+
configPath: config_path,
|
|
62
|
+
source,
|
|
63
|
+
name: parsed.document.name,
|
|
64
|
+
document: parsed.document,
|
|
65
|
+
model: parsed.model,
|
|
66
|
+
sourceSnapshot: parsed.sourceSnapshot,
|
|
67
|
+
sha,
|
|
68
|
+
ref
|
|
69
|
+
});
|
|
70
|
+
return toDefinitionDto(definition);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
export const createDefinitionRoute = buildCreateDefinitionRoute();
|
|
75
|
+
|
|
76
|
+
//# sourceMappingURL=create-definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/create-definition.ts"],"sourcesContent":["import {\n createDefinitionBodySchema,\n definitionResponseSchema,\n definitionValidationErrorSchema,\n} from '@shipfox/api-definitions-dto';\nimport type {\n AgentToolSelectionCatalogs,\n GetIntegrationConnectionByIdFn,\n LoadWorkspaceConnectionSnapshot,\n} from '@shipfox/api-integration-core';\nimport {ProjectNotFoundError, requireProjectAccess} from '@shipfox/api-projects';\nimport {ClientError, defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {DefinitionParseError} from '#core/errors.js';\nimport {hasAgentStepIntegrations} from '#core/has-agent-step-integrations.js';\nimport {parseDefinition} from '#core/parse-definition.js';\nimport {upsertDefinition} from '#db/definitions.js';\nimport {toDefinitionDto} from '#presentation/dto/index.js';\n\nexport interface CreateDefinitionRouteOptions {\n agentToolSelectionCatalogs?: AgentToolSelectionCatalogs | undefined;\n loadWorkspaceConnectionSnapshot?: LoadWorkspaceConnectionSnapshot | undefined;\n getIntegrationConnectionById?: GetIntegrationConnectionByIdFn | undefined;\n}\n\nexport function buildCreateDefinitionRoute(options: CreateDefinitionRouteOptions = {}) {\n return defineRoute({\n method: 'POST',\n path: '/',\n description: 'Create or update a workflow definition',\n schema: {\n body: createDefinitionBodySchema,\n response: {\n 200: definitionResponseSchema,\n 400: z.object({\n code: z.string(),\n message: z.string().optional(),\n details: z.array(definitionValidationErrorSchema).optional(),\n }),\n 404: z.object({code: z.string()}),\n },\n },\n errorHandler: (error, _request, _reply) => {\n if (error instanceof DefinitionParseError) {\n throw new ClientError(error.message, 'invalid-workflow-definition', {\n details: error.details,\n status: 400,\n });\n }\n if (error instanceof ProjectNotFoundError) {\n throw new ClientError(error.message, 'project-not-found', {status: 404});\n }\n throw error;\n },\n handler: async (request) => {\n const {project_id: projectId, config_path, source, yaml: yamlString, sha, ref} = request.body;\n const {project} = await requireProjectAccess({request, projectId});\n\n const structurallyParsed = parseDefinition(yamlString);\n const {\n agentToolSelectionCatalogs,\n loadWorkspaceConnectionSnapshot,\n getIntegrationConnectionById,\n } = options;\n const parsed =\n agentToolSelectionCatalogs !== undefined &&\n loadWorkspaceConnectionSnapshot !== undefined &&\n hasAgentStepIntegrations(structurallyParsed.document)\n ? parseDefinition(yamlString, {\n integrationValidationContext: {\n agentToolSelectionCatalogs,\n workspaceConnectionSnapshot: await loadWorkspaceConnectionSnapshot(\n project.workspaceId,\n ),\n defaultConnectionSlug:\n getIntegrationConnectionById === undefined\n ? undefined\n : (await getIntegrationConnectionById(project.sourceConnectionId))?.slug,\n },\n })\n : structurallyParsed;\n\n const definition = await upsertDefinition({\n projectId,\n workspaceId: project.workspaceId,\n configPath: config_path,\n source,\n name: parsed.document.name,\n document: parsed.document,\n model: parsed.model,\n sourceSnapshot: parsed.sourceSnapshot,\n sha,\n ref,\n });\n\n return toDefinitionDto(definition);\n },\n });\n}\n\nexport const createDefinitionRoute = buildCreateDefinitionRoute();\n"],"names":["createDefinitionBodySchema","definitionResponseSchema","definitionValidationErrorSchema","ProjectNotFoundError","requireProjectAccess","ClientError","defineRoute","z","DefinitionParseError","hasAgentStepIntegrations","parseDefinition","upsertDefinition","toDefinitionDto","buildCreateDefinitionRoute","options","method","path","description","schema","body","response","object","code","string","message","optional","details","array","errorHandler","error","_request","_reply","status","handler","request","project_id","projectId","config_path","source","yaml","yamlString","sha","ref","project","structurallyParsed","agentToolSelectionCatalogs","loadWorkspaceConnectionSnapshot","getIntegrationConnectionById","parsed","undefined","document","integrationValidationContext","workspaceConnectionSnapshot","workspaceId","defaultConnectionSlug","sourceConnectionId","slug","definition","configPath","name","model","sourceSnapshot","createDefinitionRoute"],"mappings":"AAAA,SACEA,0BAA0B,EAC1BC,wBAAwB,EACxBC,+BAA+B,QAC1B,+BAA+B;AAMtC,SAAQC,oBAAoB,EAAEC,oBAAoB,QAAO,wBAAwB;AACjF,SAAQC,WAAW,EAAEC,WAAW,QAAO,wBAAwB;AAC/D,SAAQC,CAAC,QAAO,MAAM;AACtB,SAAQC,oBAAoB,QAAO,kBAAkB;AACrD,SAAQC,wBAAwB,QAAO,uCAAuC;AAC9E,SAAQC,eAAe,QAAO,4BAA4B;AAC1D,SAAQC,gBAAgB,QAAO,qBAAqB;AACpD,SAAQC,eAAe,QAAO,6BAA6B;AAQ3D,OAAO,SAASC,2BAA2BC,UAAwC,CAAC,CAAC;IACnF,OAAOR,YAAY;QACjBS,QAAQ;QACRC,MAAM;QACNC,aAAa;QACbC,QAAQ;YACNC,MAAMnB;YACNoB,UAAU;gBACR,KAAKnB;gBACL,KAAKM,EAAEc,MAAM,CAAC;oBACZC,MAAMf,EAAEgB,MAAM;oBACdC,SAASjB,EAAEgB,MAAM,GAAGE,QAAQ;oBAC5BC,SAASnB,EAAEoB,KAAK,CAACzB,iCAAiCuB,QAAQ;gBAC5D;gBACA,KAAKlB,EAAEc,MAAM,CAAC;oBAACC,MAAMf,EAAEgB,MAAM;gBAAE;YACjC;QACF;QACAK,cAAc,CAACC,OAAOC,UAAUC;YAC9B,IAAIF,iBAAiBrB,sBAAsB;gBACzC,MAAM,IAAIH,YAAYwB,MAAML,OAAO,EAAE,+BAA+B;oBAClEE,SAASG,MAAMH,OAAO;oBACtBM,QAAQ;gBACV;YACF;YACA,IAAIH,iBAAiB1B,sBAAsB;gBACzC,MAAM,IAAIE,YAAYwB,MAAML,OAAO,EAAE,qBAAqB;oBAACQ,QAAQ;gBAAG;YACxE;YACA,MAAMH;QACR;QACAI,SAAS,OAAOC;YACd,MAAM,EAACC,YAAYC,SAAS,EAAEC,WAAW,EAAEC,MAAM,EAAEC,MAAMC,UAAU,EAAEC,GAAG,EAAEC,GAAG,EAAC,GAAGR,QAAQf,IAAI;YAC7F,MAAM,EAACwB,OAAO,EAAC,GAAG,MAAMvC,qBAAqB;gBAAC8B;gBAASE;YAAS;YAEhE,MAAMQ,qBAAqBlC,gBAAgB8B;YAC3C,MAAM,EACJK,0BAA0B,EAC1BC,+BAA+B,EAC/BC,4BAA4B,EAC7B,GAAGjC;YACJ,MAAMkC,SACJH,+BAA+BI,aAC/BH,oCAAoCG,aACpCxC,yBAAyBmC,mBAAmBM,QAAQ,IAChDxC,gBAAgB8B,YAAY;gBAC1BW,8BAA8B;oBAC5BN;oBACAO,6BAA6B,MAAMN,gCACjCH,QAAQU,WAAW;oBAErBC,uBACEP,iCAAiCE,YAC7BA,YACC,CAAA,MAAMF,6BAA6BJ,QAAQY,kBAAkB,CAAA,GAAIC;gBAC1E;YACF,KACAZ;YAEN,MAAMa,aAAa,MAAM9C,iBAAiB;gBACxCyB;gBACAiB,aAAaV,QAAQU,WAAW;gBAChCK,YAAYrB;gBACZC;gBACAqB,MAAMX,OAAOE,QAAQ,CAACS,IAAI;gBAC1BT,UAAUF,OAAOE,QAAQ;gBACzBU,OAAOZ,OAAOY,KAAK;gBACnBC,gBAAgBb,OAAOa,cAAc;gBACrCpB;gBACAC;YACF;YAEA,OAAO9B,gBAAgB6C;QACzB;IACF;AACF;AAEA,OAAO,MAAMK,wBAAwBjD,6BAA6B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-definition.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/get-definition.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,kBAAkB,iDA6B7B,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { definitionResponseSchema } from '@shipfox/api-definitions-dto';
|
|
2
|
+
import { ProjectNotFoundError, requireProjectAccess } from '@shipfox/api-projects';
|
|
3
|
+
import { ClientError, defineRoute } from '@shipfox/node-fastify';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { getDefinitionById } from '#db/definitions.js';
|
|
6
|
+
import { toDefinitionDto } from '#presentation/dto/index.js';
|
|
7
|
+
export const getDefinitionRoute = defineRoute({
|
|
8
|
+
method: 'GET',
|
|
9
|
+
path: '/:id',
|
|
10
|
+
description: 'Get a definition by ID',
|
|
11
|
+
schema: {
|
|
12
|
+
params: z.object({
|
|
13
|
+
id: z.string().uuid()
|
|
14
|
+
}),
|
|
15
|
+
response: {
|
|
16
|
+
200: definitionResponseSchema
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
errorHandler: (error)=>{
|
|
20
|
+
if (error instanceof ProjectNotFoundError) {
|
|
21
|
+
throw new ClientError('Definition not found', 'not-found', {
|
|
22
|
+
status: 404
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
throw error;
|
|
26
|
+
},
|
|
27
|
+
handler: async (request)=>{
|
|
28
|
+
const { id } = request.params;
|
|
29
|
+
const definition = await getDefinitionById(id);
|
|
30
|
+
if (!definition) {
|
|
31
|
+
throw new ClientError('Definition not found', 'not-found', {
|
|
32
|
+
status: 404
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
await requireProjectAccess({
|
|
36
|
+
request,
|
|
37
|
+
projectId: definition.projectId
|
|
38
|
+
});
|
|
39
|
+
return toDefinitionDto(definition);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=get-definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/get-definition.ts"],"sourcesContent":["import {definitionResponseSchema} from '@shipfox/api-definitions-dto';\nimport {ProjectNotFoundError, requireProjectAccess} from '@shipfox/api-projects';\nimport {ClientError, defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {getDefinitionById} from '#db/definitions.js';\nimport {toDefinitionDto} from '#presentation/dto/index.js';\n\nexport const getDefinitionRoute = defineRoute({\n method: 'GET',\n path: '/:id',\n description: 'Get a definition by ID',\n schema: {\n params: z.object({\n id: z.string().uuid(),\n }),\n response: {\n 200: definitionResponseSchema,\n },\n },\n errorHandler: (error) => {\n if (error instanceof ProjectNotFoundError) {\n throw new ClientError('Definition not found', 'not-found', {status: 404});\n }\n throw error;\n },\n handler: async (request) => {\n const {id} = request.params;\n const definition = await getDefinitionById(id);\n\n if (!definition) {\n throw new ClientError('Definition not found', 'not-found', {status: 404});\n }\n await requireProjectAccess({request, projectId: definition.projectId});\n\n return toDefinitionDto(definition);\n },\n});\n"],"names":["definitionResponseSchema","ProjectNotFoundError","requireProjectAccess","ClientError","defineRoute","z","getDefinitionById","toDefinitionDto","getDefinitionRoute","method","path","description","schema","params","object","id","string","uuid","response","errorHandler","error","status","handler","request","definition","projectId"],"mappings":"AAAA,SAAQA,wBAAwB,QAAO,+BAA+B;AACtE,SAAQC,oBAAoB,EAAEC,oBAAoB,QAAO,wBAAwB;AACjF,SAAQC,WAAW,EAAEC,WAAW,QAAO,wBAAwB;AAC/D,SAAQC,CAAC,QAAO,MAAM;AACtB,SAAQC,iBAAiB,QAAO,qBAAqB;AACrD,SAAQC,eAAe,QAAO,6BAA6B;AAE3D,OAAO,MAAMC,qBAAqBJ,YAAY;IAC5CK,QAAQ;IACRC,MAAM;IACNC,aAAa;IACbC,QAAQ;QACNC,QAAQR,EAAES,MAAM,CAAC;YACfC,IAAIV,EAAEW,MAAM,GAAGC,IAAI;QACrB;QACAC,UAAU;YACR,KAAKlB;QACP;IACF;IACAmB,cAAc,CAACC;QACb,IAAIA,iBAAiBnB,sBAAsB;YACzC,MAAM,IAAIE,YAAY,wBAAwB,aAAa;gBAACkB,QAAQ;YAAG;QACzE;QACA,MAAMD;IACR;IACAE,SAAS,OAAOC;QACd,MAAM,EAACR,EAAE,EAAC,GAAGQ,QAAQV,MAAM;QAC3B,MAAMW,aAAa,MAAMlB,kBAAkBS;QAE3C,IAAI,CAACS,YAAY;YACf,MAAM,IAAIrB,YAAY,wBAAwB,aAAa;gBAACkB,QAAQ;YAAG;QACzE;QACA,MAAMnB,qBAAqB;YAACqB;YAASE,WAAWD,WAAWC,SAAS;QAAA;QAEpE,OAAOlB,gBAAgBiB;IACzB;AACF,GAAG"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RouteGroup } from '@shipfox/node-fastify';
|
|
2
|
+
import { type CreateDefinitionRouteOptions } from './create-definition.js';
|
|
3
|
+
export interface DefinitionRouteOptions extends CreateDefinitionRouteOptions {
|
|
4
|
+
}
|
|
5
|
+
export declare function createDefinitionRoutes(options?: DefinitionRouteOptions): RouteGroup[];
|
|
6
|
+
export declare const definitionRoutes: RouteGroup[];
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,wBAAwB,CAAC;AAKhC,MAAM,WAAW,sBAAuB,SAAQ,4BAA4B;CAAG;AAE/E,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,sBAA2B,GAAG,UAAU,EAAE,CAazF;AAED,eAAO,MAAM,gBAAgB,cAA2B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AUTH_USER } from '@shipfox/api-auth-context';
|
|
2
|
+
import { buildCreateDefinitionRoute } from './create-definition.js';
|
|
3
|
+
import { getDefinitionRoute } from './get-definition.js';
|
|
4
|
+
import { listDefinitionsRoute } from './list-definitions.js';
|
|
5
|
+
import { validateDefinitionRoute } from './validate-definition.js';
|
|
6
|
+
export function createDefinitionRoutes(options = {}) {
|
|
7
|
+
return [
|
|
8
|
+
{
|
|
9
|
+
prefix: '/definitions',
|
|
10
|
+
auth: AUTH_USER,
|
|
11
|
+
routes: [
|
|
12
|
+
buildCreateDefinitionRoute(options),
|
|
13
|
+
listDefinitionsRoute,
|
|
14
|
+
getDefinitionRoute,
|
|
15
|
+
validateDefinitionRoute
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
];
|
|
19
|
+
}
|
|
20
|
+
export const definitionRoutes = createDefinitionRoutes();
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/index.ts"],"sourcesContent":["import {AUTH_USER} from '@shipfox/api-auth-context';\nimport type {RouteGroup} from '@shipfox/node-fastify';\nimport {\n buildCreateDefinitionRoute,\n type CreateDefinitionRouteOptions,\n} from './create-definition.js';\nimport {getDefinitionRoute} from './get-definition.js';\nimport {listDefinitionsRoute} from './list-definitions.js';\nimport {validateDefinitionRoute} from './validate-definition.js';\n\nexport interface DefinitionRouteOptions extends CreateDefinitionRouteOptions {}\n\nexport function createDefinitionRoutes(options: DefinitionRouteOptions = {}): RouteGroup[] {\n return [\n {\n prefix: '/definitions',\n auth: AUTH_USER,\n routes: [\n buildCreateDefinitionRoute(options),\n listDefinitionsRoute,\n getDefinitionRoute,\n validateDefinitionRoute,\n ],\n },\n ];\n}\n\nexport const definitionRoutes = createDefinitionRoutes();\n"],"names":["AUTH_USER","buildCreateDefinitionRoute","getDefinitionRoute","listDefinitionsRoute","validateDefinitionRoute","createDefinitionRoutes","options","prefix","auth","routes","definitionRoutes"],"mappings":"AAAA,SAAQA,SAAS,QAAO,4BAA4B;AAEpD,SACEC,0BAA0B,QAErB,yBAAyB;AAChC,SAAQC,kBAAkB,QAAO,sBAAsB;AACvD,SAAQC,oBAAoB,QAAO,wBAAwB;AAC3D,SAAQC,uBAAuB,QAAO,2BAA2B;AAIjE,OAAO,SAASC,uBAAuBC,UAAkC,CAAC,CAAC;IACzE,OAAO;QACL;YACEC,QAAQ;YACRC,MAAMR;YACNS,QAAQ;gBACNR,2BAA2BK;gBAC3BH;gBACAD;gBACAE;aACD;QACH;KACD;AACH;AAEA,OAAO,MAAMM,mBAAmBL,yBAAyB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-definitions.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/list-definitions.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,oBAAoB,iDAqC/B,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { definitionListQuerySchema, definitionListResponseSchema } from '@shipfox/api-definitions-dto';
|
|
2
|
+
import { ProjectNotFoundError, requireProjectAccess } from '@shipfox/api-projects';
|
|
3
|
+
import { decodeStringIdCursor, encodeStringIdCursor } from '@shipfox/node-drizzle';
|
|
4
|
+
import { ClientError, defineRoute } from '@shipfox/node-fastify';
|
|
5
|
+
import { listDefinitions } from '#db/definitions.js';
|
|
6
|
+
import { getLatestDefinitionSyncState } from '#db/sync-states.js';
|
|
7
|
+
import { toDefinitionDto, toDefinitionSyncSummaryDto } from '#presentation/dto/index.js';
|
|
8
|
+
export const listDefinitionsRoute = defineRoute({
|
|
9
|
+
method: 'GET',
|
|
10
|
+
path: '/',
|
|
11
|
+
description: 'List all definitions for a project',
|
|
12
|
+
schema: {
|
|
13
|
+
querystring: definitionListQuerySchema,
|
|
14
|
+
response: {
|
|
15
|
+
200: definitionListResponseSchema
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
errorHandler: (error)=>{
|
|
19
|
+
if (error instanceof ProjectNotFoundError) {
|
|
20
|
+
throw new ClientError(error.message, 'project-not-found', {
|
|
21
|
+
status: 404
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
throw error;
|
|
25
|
+
},
|
|
26
|
+
handler: async (request)=>{
|
|
27
|
+
const { project_id: projectId, limit, cursor } = request.query;
|
|
28
|
+
const decodedCursor = decodeStringIdCursor(cursor);
|
|
29
|
+
if (cursor && !decodedCursor) {
|
|
30
|
+
throw new ClientError('Invalid cursor', 'invalid-cursor', {
|
|
31
|
+
status: 400
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const { project } = await requireProjectAccess({
|
|
35
|
+
request,
|
|
36
|
+
projectId
|
|
37
|
+
});
|
|
38
|
+
const result = await listDefinitions({
|
|
39
|
+
projectId,
|
|
40
|
+
limit,
|
|
41
|
+
cursor: decodedCursor
|
|
42
|
+
});
|
|
43
|
+
const syncState = await getLatestDefinitionSyncState({
|
|
44
|
+
projectId,
|
|
45
|
+
sourceConnectionId: project.sourceConnectionId,
|
|
46
|
+
sourceExternalRepositoryId: project.sourceExternalRepositoryId
|
|
47
|
+
});
|
|
48
|
+
return {
|
|
49
|
+
definitions: result.definitions.map(toDefinitionDto),
|
|
50
|
+
sync: toDefinitionSyncSummaryDto(syncState),
|
|
51
|
+
next_cursor: result.nextCursor ? encodeStringIdCursor(result.nextCursor) : null
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=list-definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/list-definitions.ts"],"sourcesContent":["import {\n definitionListQuerySchema,\n definitionListResponseSchema,\n} from '@shipfox/api-definitions-dto';\nimport {ProjectNotFoundError, requireProjectAccess} from '@shipfox/api-projects';\nimport {decodeStringIdCursor, encodeStringIdCursor} from '@shipfox/node-drizzle';\nimport {ClientError, defineRoute} from '@shipfox/node-fastify';\nimport {listDefinitions} from '#db/definitions.js';\nimport {getLatestDefinitionSyncState} from '#db/sync-states.js';\nimport {toDefinitionDto, toDefinitionSyncSummaryDto} from '#presentation/dto/index.js';\n\nexport const listDefinitionsRoute = defineRoute({\n method: 'GET',\n path: '/',\n description: 'List all definitions for a project',\n schema: {\n querystring: definitionListQuerySchema,\n response: {\n 200: definitionListResponseSchema,\n },\n },\n errorHandler: (error) => {\n if (error instanceof ProjectNotFoundError) {\n throw new ClientError(error.message, 'project-not-found', {status: 404});\n }\n throw error;\n },\n handler: async (request) => {\n const {project_id: projectId, limit, cursor} = request.query;\n const decodedCursor = decodeStringIdCursor(cursor);\n if (cursor && !decodedCursor) {\n throw new ClientError('Invalid cursor', 'invalid-cursor', {status: 400});\n }\n\n const {project} = await requireProjectAccess({request, projectId});\n const result = await listDefinitions({projectId, limit, cursor: decodedCursor});\n const syncState = await getLatestDefinitionSyncState({\n projectId,\n sourceConnectionId: project.sourceConnectionId,\n sourceExternalRepositoryId: project.sourceExternalRepositoryId,\n });\n\n return {\n definitions: result.definitions.map(toDefinitionDto),\n sync: toDefinitionSyncSummaryDto(syncState),\n next_cursor: result.nextCursor ? encodeStringIdCursor(result.nextCursor) : null,\n };\n },\n});\n"],"names":["definitionListQuerySchema","definitionListResponseSchema","ProjectNotFoundError","requireProjectAccess","decodeStringIdCursor","encodeStringIdCursor","ClientError","defineRoute","listDefinitions","getLatestDefinitionSyncState","toDefinitionDto","toDefinitionSyncSummaryDto","listDefinitionsRoute","method","path","description","schema","querystring","response","errorHandler","error","message","status","handler","request","project_id","projectId","limit","cursor","query","decodedCursor","project","result","syncState","sourceConnectionId","sourceExternalRepositoryId","definitions","map","sync","next_cursor","nextCursor"],"mappings":"AAAA,SACEA,yBAAyB,EACzBC,4BAA4B,QACvB,+BAA+B;AACtC,SAAQC,oBAAoB,EAAEC,oBAAoB,QAAO,wBAAwB;AACjF,SAAQC,oBAAoB,EAAEC,oBAAoB,QAAO,wBAAwB;AACjF,SAAQC,WAAW,EAAEC,WAAW,QAAO,wBAAwB;AAC/D,SAAQC,eAAe,QAAO,qBAAqB;AACnD,SAAQC,4BAA4B,QAAO,qBAAqB;AAChE,SAAQC,eAAe,EAAEC,0BAA0B,QAAO,6BAA6B;AAEvF,OAAO,MAAMC,uBAAuBL,YAAY;IAC9CM,QAAQ;IACRC,MAAM;IACNC,aAAa;IACbC,QAAQ;QACNC,aAAajB;QACbkB,UAAU;YACR,KAAKjB;QACP;IACF;IACAkB,cAAc,CAACC;QACb,IAAIA,iBAAiBlB,sBAAsB;YACzC,MAAM,IAAII,YAAYc,MAAMC,OAAO,EAAE,qBAAqB;gBAACC,QAAQ;YAAG;QACxE;QACA,MAAMF;IACR;IACAG,SAAS,OAAOC;QACd,MAAM,EAACC,YAAYC,SAAS,EAAEC,KAAK,EAAEC,MAAM,EAAC,GAAGJ,QAAQK,KAAK;QAC5D,MAAMC,gBAAgB1B,qBAAqBwB;QAC3C,IAAIA,UAAU,CAACE,eAAe;YAC5B,MAAM,IAAIxB,YAAY,kBAAkB,kBAAkB;gBAACgB,QAAQ;YAAG;QACxE;QAEA,MAAM,EAACS,OAAO,EAAC,GAAG,MAAM5B,qBAAqB;YAACqB;YAASE;QAAS;QAChE,MAAMM,SAAS,MAAMxB,gBAAgB;YAACkB;YAAWC;YAAOC,QAAQE;QAAa;QAC7E,MAAMG,YAAY,MAAMxB,6BAA6B;YACnDiB;YACAQ,oBAAoBH,QAAQG,kBAAkB;YAC9CC,4BAA4BJ,QAAQI,0BAA0B;QAChE;QAEA,OAAO;YACLC,aAAaJ,OAAOI,WAAW,CAACC,GAAG,CAAC3B;YACpC4B,MAAM3B,2BAA2BsB;YACjCM,aAAaP,OAAOQ,UAAU,GAAGnC,qBAAqB2B,OAAOQ,UAAU,IAAI;QAC7E;IACF;AACF,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-definition.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/validate-definition.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,uBAAuB,iDAwBlC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { definitionDtoSchema, definitionValidationErrorSchema } from '@shipfox/api-definitions-dto';
|
|
2
|
+
import { defineRoute } from '@shipfox/node-fastify';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { validateDefinition } from '#core/validate-definition.js';
|
|
5
|
+
const validateBodySchema = z.object({
|
|
6
|
+
yaml: z.string().min(1).max(1_000_000)
|
|
7
|
+
});
|
|
8
|
+
const validationResultSchema = z.union([
|
|
9
|
+
z.object({
|
|
10
|
+
valid: z.literal(true),
|
|
11
|
+
workflow_document: definitionDtoSchema.shape.workflow_document,
|
|
12
|
+
workflow_model: definitionDtoSchema.shape.workflow_model
|
|
13
|
+
}),
|
|
14
|
+
z.object({
|
|
15
|
+
valid: z.literal(false),
|
|
16
|
+
errors: z.array(definitionValidationErrorSchema)
|
|
17
|
+
})
|
|
18
|
+
]);
|
|
19
|
+
export const validateDefinitionRoute = defineRoute({
|
|
20
|
+
method: 'POST',
|
|
21
|
+
path: '/validate',
|
|
22
|
+
description: 'Validate a workflow definition without persisting',
|
|
23
|
+
schema: {
|
|
24
|
+
body: validateBodySchema,
|
|
25
|
+
response: {
|
|
26
|
+
200: validationResultSchema
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
handler: (request)=>{
|
|
30
|
+
const { yaml } = request.body;
|
|
31
|
+
const result = validateDefinition(yaml);
|
|
32
|
+
if (result.valid) {
|
|
33
|
+
return {
|
|
34
|
+
valid: true,
|
|
35
|
+
workflow_document: result.definition.document,
|
|
36
|
+
workflow_model: result.definition.model
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=validate-definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/validate-definition.ts"],"sourcesContent":["import {definitionDtoSchema, definitionValidationErrorSchema} from '@shipfox/api-definitions-dto';\nimport {defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {validateDefinition} from '#core/validate-definition.js';\n\nconst validateBodySchema = z.object({\n yaml: z.string().min(1).max(1_000_000),\n});\n\nconst validationResultSchema = z.union([\n z.object({\n valid: z.literal(true),\n workflow_document: definitionDtoSchema.shape.workflow_document,\n workflow_model: definitionDtoSchema.shape.workflow_model,\n }),\n z.object({\n valid: z.literal(false),\n errors: z.array(definitionValidationErrorSchema),\n }),\n]);\n\nexport const validateDefinitionRoute = defineRoute({\n method: 'POST',\n path: '/validate',\n description: 'Validate a workflow definition without persisting',\n schema: {\n body: validateBodySchema,\n response: {\n 200: validationResultSchema,\n },\n },\n handler: (request) => {\n const {yaml} = request.body;\n const result = validateDefinition(yaml);\n\n if (result.valid) {\n return {\n valid: true as const,\n workflow_document: result.definition.document,\n workflow_model: result.definition.model,\n };\n }\n\n return result;\n },\n});\n"],"names":["definitionDtoSchema","definitionValidationErrorSchema","defineRoute","z","validateDefinition","validateBodySchema","object","yaml","string","min","max","validationResultSchema","union","valid","literal","workflow_document","shape","workflow_model","errors","array","validateDefinitionRoute","method","path","description","schema","body","response","handler","request","result","definition","document","model"],"mappings":"AAAA,SAAQA,mBAAmB,EAAEC,+BAA+B,QAAO,+BAA+B;AAClG,SAAQC,WAAW,QAAO,wBAAwB;AAClD,SAAQC,CAAC,QAAO,MAAM;AACtB,SAAQC,kBAAkB,QAAO,+BAA+B;AAEhE,MAAMC,qBAAqBF,EAAEG,MAAM,CAAC;IAClCC,MAAMJ,EAAEK,MAAM,GAAGC,GAAG,CAAC,GAAGC,GAAG,CAAC;AAC9B;AAEA,MAAMC,yBAAyBR,EAAES,KAAK,CAAC;IACrCT,EAAEG,MAAM,CAAC;QACPO,OAAOV,EAAEW,OAAO,CAAC;QACjBC,mBAAmBf,oBAAoBgB,KAAK,CAACD,iBAAiB;QAC9DE,gBAAgBjB,oBAAoBgB,KAAK,CAACC,cAAc;IAC1D;IACAd,EAAEG,MAAM,CAAC;QACPO,OAAOV,EAAEW,OAAO,CAAC;QACjBI,QAAQf,EAAEgB,KAAK,CAAClB;IAClB;CACD;AAED,OAAO,MAAMmB,0BAA0BlB,YAAY;IACjDmB,QAAQ;IACRC,MAAM;IACNC,aAAa;IACbC,QAAQ;QACNC,MAAMpB;QACNqB,UAAU;YACR,KAAKf;QACP;IACF;IACAgB,SAAS,CAACC;QACR,MAAM,EAACrB,IAAI,EAAC,GAAGqB,QAAQH,IAAI;QAC3B,MAAMI,SAASzB,mBAAmBG;QAElC,IAAIsB,OAAOhB,KAAK,EAAE;YAChB,OAAO;gBACLA,OAAO;gBACPE,mBAAmBc,OAAOC,UAAU,CAACC,QAAQ;gBAC7Cd,gBAAgBY,OAAOC,UAAU,CAACE,KAAK;YACzC;QACF;QAEA,OAAOH;IACT;AACF,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/presentation/subscribers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAC,6BAA6B,EAAC,MAAM,wCAAwC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/subscribers/index.ts"],"sourcesContent":["export {onProjectSourceBound} from './on-project-source-bound.js';\nexport {onProjectSourceCommitObserved} from './on-project-source-commit-observed.js';\n"],"names":["onProjectSourceBound","onProjectSourceCommitObserved"],"mappings":"AAAA,SAAQA,oBAAoB,QAAO,+BAA+B;AAClE,SAAQC,6BAA6B,QAAO,yCAAyC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-project-source-bound.d.ts","sourceRoot":"","sources":["../../../src/presentation/subscribers/on-project-source-bound.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAGvE,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1F"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { startDefinitionSync } from './start-definition-sync.js';
|
|
2
|
+
export async function onProjectSourceBound(payload) {
|
|
3
|
+
await startDefinitionSync({
|
|
4
|
+
projectId: payload.projectId,
|
|
5
|
+
workspaceId: payload.workspaceId,
|
|
6
|
+
sourceConnectionId: payload.sourceConnectionId,
|
|
7
|
+
externalRepositoryId: payload.externalRepositoryId
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=on-project-source-bound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/subscribers/on-project-source-bound.ts"],"sourcesContent":["import type {ProjectSourceBoundEvent} from '@shipfox/api-projects-dto';\nimport {startDefinitionSync} from './start-definition-sync.js';\n\nexport async function onProjectSourceBound(payload: ProjectSourceBoundEvent): Promise<void> {\n await startDefinitionSync({\n projectId: payload.projectId,\n workspaceId: payload.workspaceId,\n sourceConnectionId: payload.sourceConnectionId,\n externalRepositoryId: payload.externalRepositoryId,\n });\n}\n"],"names":["startDefinitionSync","onProjectSourceBound","payload","projectId","workspaceId","sourceConnectionId","externalRepositoryId"],"mappings":"AACA,SAAQA,mBAAmB,QAAO,6BAA6B;AAE/D,OAAO,eAAeC,qBAAqBC,OAAgC;IACzE,MAAMF,oBAAoB;QACxBG,WAAWD,QAAQC,SAAS;QAC5BC,aAAaF,QAAQE,WAAW;QAChCC,oBAAoBH,QAAQG,kBAAkB;QAC9CC,sBAAsBJ,QAAQI,oBAAoB;IACpD;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-project-source-commit-observed.d.ts","sourceRoot":"","sources":["../../../src/presentation/subscribers/on-project-source-commit-observed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gCAAgC,EAAC,MAAM,2BAA2B,CAAC;AAGhF,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { startDefinitionSync } from './start-definition-sync.js';
|
|
2
|
+
export async function onProjectSourceCommitObserved(payload) {
|
|
3
|
+
await startDefinitionSync({
|
|
4
|
+
projectId: payload.projectId,
|
|
5
|
+
workspaceId: payload.workspaceId,
|
|
6
|
+
sourceConnectionId: payload.sourceConnectionId,
|
|
7
|
+
externalRepositoryId: payload.externalRepositoryId,
|
|
8
|
+
sourceRef: payload.ref,
|
|
9
|
+
sourceCommitSha: payload.headCommitSha
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=on-project-source-commit-observed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/subscribers/on-project-source-commit-observed.ts"],"sourcesContent":["import type {ProjectSourceCommitObservedEvent} from '@shipfox/api-projects-dto';\nimport {startDefinitionSync} from './start-definition-sync.js';\n\nexport async function onProjectSourceCommitObserved(\n payload: ProjectSourceCommitObservedEvent,\n): Promise<void> {\n await startDefinitionSync({\n projectId: payload.projectId,\n workspaceId: payload.workspaceId,\n sourceConnectionId: payload.sourceConnectionId,\n externalRepositoryId: payload.externalRepositoryId,\n sourceRef: payload.ref,\n sourceCommitSha: payload.headCommitSha,\n });\n}\n"],"names":["startDefinitionSync","onProjectSourceCommitObserved","payload","projectId","workspaceId","sourceConnectionId","externalRepositoryId","sourceRef","ref","sourceCommitSha","headCommitSha"],"mappings":"AACA,SAAQA,mBAAmB,QAAO,6BAA6B;AAE/D,OAAO,eAAeC,8BACpBC,OAAyC;IAEzC,MAAMF,oBAAoB;QACxBG,WAAWD,QAAQC,SAAS;QAC5BC,aAAaF,QAAQE,WAAW;QAChCC,oBAAoBH,QAAQG,kBAAkB;QAC9CC,sBAAsBJ,QAAQI,oBAAoB;QAClDC,WAAWL,QAAQM,GAAG;QACtBC,iBAAiBP,QAAQQ,aAAa;IACxC;AACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface StartDefinitionSyncParams {
|
|
2
|
+
projectId: string;
|
|
3
|
+
workspaceId: string;
|
|
4
|
+
sourceConnectionId: string;
|
|
5
|
+
externalRepositoryId: string;
|
|
6
|
+
sourceRef?: string | undefined;
|
|
7
|
+
sourceCommitSha?: string | undefined;
|
|
8
|
+
}
|
|
9
|
+
export declare function startDefinitionSync(params: StartDefinitionSyncParams): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=start-definition-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-definition-sync.d.ts","sourceRoot":"","sources":["../../../src/presentation/subscribers/start-definition-sync.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB1F"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { temporalClient } from '@shipfox/node-temporal';
|
|
2
|
+
import { DEFINITION_SYNC_WORKFLOW, DEFINITIONS_TASK_QUEUE } from '#temporal/index.js';
|
|
3
|
+
export async function startDefinitionSync(params) {
|
|
4
|
+
const workflowId = buildWorkflowId(params);
|
|
5
|
+
await temporalClient().workflow.start(DEFINITION_SYNC_WORKFLOW, {
|
|
6
|
+
taskQueue: DEFINITIONS_TASK_QUEUE,
|
|
7
|
+
workflowId,
|
|
8
|
+
workflowIdConflictPolicy: 'USE_EXISTING',
|
|
9
|
+
workflowIdReusePolicy: 'ALLOW_DUPLICATE',
|
|
10
|
+
args: [
|
|
11
|
+
{
|
|
12
|
+
projectId: params.projectId,
|
|
13
|
+
workspaceId: params.workspaceId,
|
|
14
|
+
sourceConnectionId: params.sourceConnectionId,
|
|
15
|
+
sourceExternalRepositoryId: params.externalRepositoryId,
|
|
16
|
+
sourceRef: params.sourceRef,
|
|
17
|
+
sourceCommitSha: params.sourceCommitSha
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function buildWorkflowId(params) {
|
|
23
|
+
return params.sourceCommitSha ? `definition-sync:${params.projectId}:${params.sourceCommitSha}` : `definition-sync:${params.projectId}:bind`;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=start-definition-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/subscribers/start-definition-sync.ts"],"sourcesContent":["import {temporalClient} from '@shipfox/node-temporal';\nimport {DEFINITION_SYNC_WORKFLOW, DEFINITIONS_TASK_QUEUE} from '#temporal/index.js';\n\nexport interface StartDefinitionSyncParams {\n projectId: string;\n workspaceId: string;\n sourceConnectionId: string;\n externalRepositoryId: string;\n sourceRef?: string | undefined;\n sourceCommitSha?: string | undefined;\n}\n\nexport async function startDefinitionSync(params: StartDefinitionSyncParams): Promise<void> {\n const workflowId = buildWorkflowId(params);\n\n await temporalClient().workflow.start(DEFINITION_SYNC_WORKFLOW, {\n taskQueue: DEFINITIONS_TASK_QUEUE,\n workflowId,\n workflowIdConflictPolicy: 'USE_EXISTING',\n workflowIdReusePolicy: 'ALLOW_DUPLICATE',\n args: [\n {\n projectId: params.projectId,\n workspaceId: params.workspaceId,\n sourceConnectionId: params.sourceConnectionId,\n sourceExternalRepositoryId: params.externalRepositoryId,\n sourceRef: params.sourceRef,\n sourceCommitSha: params.sourceCommitSha,\n },\n ],\n });\n}\n\nfunction buildWorkflowId(params: StartDefinitionSyncParams): string {\n return params.sourceCommitSha\n ? `definition-sync:${params.projectId}:${params.sourceCommitSha}`\n : `definition-sync:${params.projectId}:bind`;\n}\n"],"names":["temporalClient","DEFINITION_SYNC_WORKFLOW","DEFINITIONS_TASK_QUEUE","startDefinitionSync","params","workflowId","buildWorkflowId","workflow","start","taskQueue","workflowIdConflictPolicy","workflowIdReusePolicy","args","projectId","workspaceId","sourceConnectionId","sourceExternalRepositoryId","externalRepositoryId","sourceRef","sourceCommitSha"],"mappings":"AAAA,SAAQA,cAAc,QAAO,yBAAyB;AACtD,SAAQC,wBAAwB,EAAEC,sBAAsB,QAAO,qBAAqB;AAWpF,OAAO,eAAeC,oBAAoBC,MAAiC;IACzE,MAAMC,aAAaC,gBAAgBF;IAEnC,MAAMJ,iBAAiBO,QAAQ,CAACC,KAAK,CAACP,0BAA0B;QAC9DQ,WAAWP;QACXG;QACAK,0BAA0B;QAC1BC,uBAAuB;QACvBC,MAAM;YACJ;gBACEC,WAAWT,OAAOS,SAAS;gBAC3BC,aAAaV,OAAOU,WAAW;gBAC/BC,oBAAoBX,OAAOW,kBAAkB;gBAC7CC,4BAA4BZ,OAAOa,oBAAoB;gBACvDC,WAAWd,OAAOc,SAAS;gBAC3BC,iBAAiBf,OAAOe,eAAe;YACzC;SACD;IACH;AACF;AAEA,SAASb,gBAAgBF,MAAiC;IACxD,OAAOA,OAAOe,eAAe,GACzB,CAAC,gBAAgB,EAAEf,OAAOS,SAAS,CAAC,CAAC,EAAET,OAAOe,eAAe,EAAE,GAC/D,CAAC,gBAAgB,EAAEf,OAAOS,SAAS,CAAC,KAAK,CAAC;AAChD"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export type { DiscoverWorkflowsActivityResult, FetchAndApplyActivityInput, FetchAndApplyActivityResult, MarkSyncFailedActivityInput, PrepareSyncResult, SyncRefScopedInput, SyncWorkflowInput, } from './sync-activities.js';
|
|
2
|
+
export { createDefinitionSyncActivities } from './sync-activities.js';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/temporal/activities/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,+BAA+B,EAC/B,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,8BAA8B,EAAC,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/temporal/activities/index.ts"],"sourcesContent":["export type {\n DiscoverWorkflowsActivityResult,\n FetchAndApplyActivityInput,\n FetchAndApplyActivityResult,\n MarkSyncFailedActivityInput,\n PrepareSyncResult,\n SyncRefScopedInput,\n SyncWorkflowInput,\n} from './sync-activities.js';\nexport {createDefinitionSyncActivities} from './sync-activities.js';\n"],"names":["createDefinitionSyncActivities"],"mappings":"AASA,SAAQA,8BAA8B,QAAO,uBAAuB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { AgentToolSelectionCatalogs, IntegrationSourceControlService, LoadWorkspaceConnectionSnapshot } from '@shipfox/api-integration-core';
|
|
2
|
+
import type { DefinitionSyncErrorCode } from '#core/entities/sync-state.js';
|
|
3
|
+
export interface SyncWorkflowInput {
|
|
4
|
+
projectId: string;
|
|
5
|
+
workspaceId: string;
|
|
6
|
+
sourceConnectionId: string;
|
|
7
|
+
sourceExternalRepositoryId: string;
|
|
8
|
+
sourceRef?: string | undefined;
|
|
9
|
+
sourceCommitSha?: string | undefined;
|
|
10
|
+
}
|
|
11
|
+
export interface SyncRefScopedInput extends SyncWorkflowInput {
|
|
12
|
+
sourceRef: string;
|
|
13
|
+
}
|
|
14
|
+
export interface FetchAndApplyActivityInput extends SyncRefScopedInput {
|
|
15
|
+
paths: string[];
|
|
16
|
+
}
|
|
17
|
+
export interface MarkSyncFailedActivityInput extends Omit<SyncWorkflowInput, 'sourceRef'> {
|
|
18
|
+
sourceRef: string | null;
|
|
19
|
+
code: DefinitionSyncErrorCode;
|
|
20
|
+
message: string;
|
|
21
|
+
}
|
|
22
|
+
export interface PrepareSyncResult {
|
|
23
|
+
sourceRef: string;
|
|
24
|
+
sourceCommitSha?: string | undefined;
|
|
25
|
+
}
|
|
26
|
+
export interface DiscoverWorkflowsActivityResult {
|
|
27
|
+
paths: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface FetchAndApplyActivityResult {
|
|
30
|
+
appliedCount: number;
|
|
31
|
+
deletedCount: number;
|
|
32
|
+
}
|
|
33
|
+
export interface DefinitionSyncIntegrationValidationOptions {
|
|
34
|
+
agentToolSelectionCatalogs: AgentToolSelectionCatalogs;
|
|
35
|
+
loadWorkspaceConnectionSnapshot: LoadWorkspaceConnectionSnapshot;
|
|
36
|
+
getIntegrationConnectionById: (id: string) => Promise<{
|
|
37
|
+
slug: string;
|
|
38
|
+
} | undefined>;
|
|
39
|
+
}
|
|
40
|
+
export declare function createDefinitionSyncActivities(sourceControl: IntegrationSourceControlService, integrationValidation?: DefinitionSyncIntegrationValidationOptions | undefined): {
|
|
41
|
+
prepareDefinitionSync: (input: SyncWorkflowInput) => Promise<PrepareSyncResult>;
|
|
42
|
+
discoverDefinitionWorkflows: (input: SyncRefScopedInput) => Promise<DiscoverWorkflowsActivityResult>;
|
|
43
|
+
fetchAndApplyDefinitionWorkflows: (input: FetchAndApplyActivityInput) => Promise<FetchAndApplyActivityResult>;
|
|
44
|
+
markDefinitionSyncSucceeded: (input: SyncRefScopedInput) => Promise<void>;
|
|
45
|
+
markDefinitionSyncFailed: (input: MarkSyncFailedActivityInput) => Promise<void>;
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=sync-activities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-activities.d.ts","sourceRoot":"","sources":["../../../src/temporal/activities/sync-activities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,+BAA+B,EAC/B,+BAA+B,EAChC,MAAM,+BAA+B,CAAC;AAGvC,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AAU1E,MAAM,WAAW,iBAAiB;IAChC,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,kBAAmB,SAAQ,iBAAiB;IAC3D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,2BAA4B,SAAQ,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC;IACvF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,0CAA0C;IACzD,0BAA0B,EAAE,0BAA0B,CAAC;IACvD,+BAA+B,EAAE,+BAA+B,CAAC;IACjE,4BAA4B,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,GAAG,SAAS,CAAC,CAAC;CACnF;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,+BAA+B,EAC9C,qBAAqB,CAAC,EAAE,0CAA0C,GAAG,SAAS;mCAgBrE,iBAAiB,KACvB,OAAO,CAAC,iBAAiB,CAAC;yCAuBpB,kBAAkB,KACxB,OAAO,CAAC,+BAA+B,CAAC;8CAgBlC,0BAA0B,KAChC,OAAO,CAAC,2BAA2B,CAAC;yCAyCkB,kBAAkB,KAAG,OAAO,CAAC,IAAI,CAAC;sCAgBlF,2BAA2B,KACjC,OAAO,CAAC,IAAI,CAAC;EAxGjB"}
|