@astrale-os/sdk 0.6.0-beta.4 → 0.6.0-beta.40
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/README.md +191 -58
- package/dist/application/action/action.d.ts +6 -0
- package/dist/application/action/authoring.d.ts +1 -1
- package/dist/application/action/context.d.ts +47 -31
- package/dist/application/action/define.d.ts +3 -3
- package/dist/application/action/index.d.ts +1 -1
- package/dist/application/define.d.ts +8 -6
- package/dist/application/define.js +28 -14
- package/dist/application/dependency/index.d.ts +1 -1
- package/dist/application/dependency/invoker.d.ts +21 -10
- package/dist/application/domain.d.ts +30 -0
- package/dist/application/index.d.ts +4 -4
- package/dist/application/index.js +1 -1
- package/dist/application/integration/define.d.ts +8 -1
- package/dist/application/integration/index.d.ts +2 -2
- package/dist/application/integration/integration.d.ts +13 -1
- package/dist/application/integration/operation.d.ts +16 -3
- package/dist/application/mutation/authoring/properties.d.ts +5 -3
- package/dist/application/mutation/authoring/properties.js +35 -2
- package/dist/application/mutation/authoring/transition.js +4 -1
- package/dist/application/mutation/execution/execute.js +1 -1
- package/dist/application/mutation/failure.d.ts +6 -0
- package/dist/application/mutation/failure.js +24 -18
- package/dist/application/mutation/index.d.ts +1 -1
- package/dist/application/query/collection/union.js +11 -4
- package/dist/application/query/composite/plan.d.ts +0 -4
- package/dist/application/query/composite/plan.js +0 -2
- package/dist/application/query/conformance.d.ts +15 -0
- package/dist/application/query/conformance.js +46 -0
- package/dist/application/query/define.js +4 -3
- package/dist/application/query/execution/execute.d.ts +0 -1
- package/dist/application/query/execution/execute.js +7 -1
- package/dist/application/query/failure.d.ts +8 -0
- package/dist/application/query/failure.js +8 -0
- package/dist/application/query/index.d.ts +1 -1
- package/dist/application/query/index.js +1 -1
- package/dist/application/routes/admission.d.ts +2 -2
- package/dist/application/routes/admission.js +1 -1
- package/dist/application/routes/route.d.ts +2 -2
- package/dist/application/runtime/actions.js +3 -0
- package/dist/application/runtime/workflows.d.ts +3 -1
- package/dist/application/runtime/workflows.js +3 -4
- package/dist/application/view/define.js +4 -6
- package/dist/application/view/frontend.d.ts +2 -2
- package/dist/application/view/index.d.ts +1 -1
- package/dist/application/view/route.d.ts +0 -14
- package/dist/application/view/route.js +1 -64
- package/dist/application/workflow/authoring.d.ts +3 -2
- package/dist/application/workflow/context.d.ts +8 -2
- package/dist/application/workflow/define.d.ts +4 -4
- package/dist/application/workflow/define.js +14 -9
- package/dist/application/workflow/durable.d.ts +185 -0
- package/dist/application/workflow/index.d.ts +3 -2
- package/dist/application/workflow/runner/inline.js +3 -4
- package/dist/application/workflow/runner/runner.d.ts +2 -2
- package/dist/application/workflow/step/output.d.ts +2 -0
- package/dist/application/workflow/step/output.js +73 -0
- package/dist/application/workflow/workflow.d.ts +5 -3
- package/dist/deployment/adapter/adapter.d.ts +55 -13
- package/dist/deployment/adapter/bundle/bundle.d.ts +36 -0
- package/dist/deployment/adapter/bundle/file.d.ts +10 -0
- package/dist/deployment/adapter/bundle/index.d.ts +2 -0
- package/dist/deployment/adapter/define.d.ts +4 -3
- package/dist/deployment/adapter/define.js +107 -23
- package/dist/deployment/adapter/index.d.ts +4 -3
- package/dist/deployment/adapter/index.js +1 -0
- package/dist/deployment/adapter/release/command.d.ts +33 -0
- package/dist/deployment/adapter/release/context.d.ts +94 -0
- package/dist/deployment/adapter/release/index.d.ts +4 -0
- package/dist/deployment/adapter/release/index.js +1 -0
- package/dist/deployment/adapter/release/list.d.ts +53 -0
- package/dist/deployment/adapter/release/list.js +1 -0
- package/dist/deployment/adapter/release/refusal.d.ts +10 -0
- package/dist/deployment/adapter/release/refusal.js +14 -0
- package/dist/deployment/adapter/release/result.d.ts +56 -0
- package/dist/deployment/adapter/release/result.js +1 -0
- package/dist/deployment/address/configuration.d.ts +96 -0
- package/dist/deployment/address/configuration.js +274 -0
- package/dist/deployment/address/fingerprint.d.ts +5 -0
- package/dist/deployment/address/fingerprint.js +27 -0
- package/dist/deployment/address/index.d.ts +5 -0
- package/dist/deployment/address/index.js +4 -0
- package/dist/deployment/address/label.d.ts +42 -0
- package/dist/deployment/address/label.js +80 -0
- package/dist/deployment/address/line.d.ts +29 -0
- package/dist/deployment/address/line.js +53 -0
- package/dist/deployment/address/record.d.ts +73 -0
- package/dist/deployment/address/record.js +138 -0
- package/dist/deployment/address/summary.d.ts +30 -0
- package/dist/deployment/address/summary.js +1 -0
- package/dist/deployment/address/vectors.d.ts +60 -0
- package/dist/deployment/address/vectors.js +517 -0
- package/dist/deployment/authoring.d.ts +0 -2
- package/dist/deployment/authoring.js +0 -1
- package/dist/deployment/build/build.d.ts +8 -2
- package/dist/deployment/build/compile.d.ts +4 -4
- package/dist/deployment/build/compile.js +19 -17
- package/dist/deployment/build/frontend/compilation.d.ts +2 -4
- package/dist/deployment/build/frontend/compilation.js +0 -5
- package/dist/deployment/build/frontend/digest.js +1 -5
- package/dist/deployment/build/index.d.ts +1 -0
- package/dist/deployment/build/index.js +1 -0
- package/dist/deployment/build/manifest.d.ts +59 -0
- package/dist/deployment/build/manifest.js +118 -0
- package/dist/deployment/build/material.d.ts +2 -2
- package/dist/deployment/build/material.js +28 -13
- package/dist/deployment/build/schema.d.ts +2 -2
- package/dist/deployment/deployment.d.ts +3 -2
- package/dist/deployment/environment.d.ts +6 -0
- package/dist/deployment/environment.js +6 -0
- package/dist/deployment/index.d.ts +4 -6
- package/dist/deployment/index.js +1 -2
- package/dist/deployment/release/addressing.d.ts +6 -5
- package/dist/deployment/release/addressing.js +2 -3
- package/dist/deployment/release/assemble.d.ts +6 -3
- package/dist/deployment/release/assemble.js +12 -10
- package/dist/deployment/release/release.d.ts +16 -5
- package/dist/deployment/release/seal.d.ts +14 -0
- package/dist/deployment/release/seal.js +22 -0
- package/dist/deployment/release/{publication → served}/callables.d.ts +2 -2
- package/dist/deployment/release/{publication → served}/callables.js +2 -2
- package/dist/deployment/release/served/index.d.ts +11 -0
- package/dist/deployment/release/served/index.js +26 -0
- package/dist/deployment/release/{publication → served}/views.d.ts +2 -2
- package/dist/deployment/release/{publication → served}/views.js +0 -1
- package/dist/deployment/runtime/admission.d.ts +2 -2
- package/dist/deployment/runtime/admission.js +5 -5
- package/dist/deployment/verify/index.d.ts +3 -4
- package/dist/deployment/verify/index.js +2 -3
- package/dist/deployment/verify/preflight/bundle.d.ts +18 -0
- package/dist/deployment/verify/preflight/bundle.js +71 -0
- package/dist/deployment/verify/preflight/index.d.ts +1 -12
- package/dist/deployment/verify/preflight/index.js +1 -12
- package/dist/deployment/verify/readiness/fetch.d.ts +13 -0
- package/dist/deployment/verify/readiness/fetch.js +26 -0
- package/dist/deployment/verify/readiness/identity.d.ts +3 -6
- package/dist/deployment/verify/readiness/identity.js +3 -3
- package/dist/deployment/verify/readiness/index.d.ts +15 -8
- package/dist/deployment/verify/readiness/index.js +25 -6
- package/dist/deployment/verify/readiness/release.d.ts +8 -0
- package/dist/deployment/verify/readiness/release.js +22 -0
- package/dist/deployment/worker/address.d.ts +26 -0
- package/dist/deployment/worker/address.js +43 -0
- package/dist/deployment/worker/build.d.ts +60 -0
- package/dist/deployment/worker/build.js +172 -0
- package/dist/deployment/worker/configuration.d.ts +73 -0
- package/dist/deployment/worker/configuration.js +165 -0
- package/dist/deployment/worker/content.d.ts +38 -0
- package/dist/deployment/worker/content.js +169 -0
- package/dist/deployment/worker/index.d.ts +29 -0
- package/dist/deployment/worker/index.js +29 -0
- package/dist/deployment/worker/limits.d.ts +30 -0
- package/dist/deployment/worker/limits.js +30 -0
- package/dist/deployment/worker/record.d.ts +29 -0
- package/dist/deployment/worker/record.js +69 -0
- package/dist/deployment/worker/request.d.ts +118 -0
- package/dist/deployment/worker/request.js +280 -0
- package/dist/deployment/worker/response.d.ts +101 -0
- package/dist/deployment/worker/response.js +207 -0
- package/dist/execution/cache/cache.d.ts +17 -0
- package/dist/execution/cache/cache.js +11 -0
- package/dist/execution/cache/index.d.ts +2 -0
- package/dist/execution/cache/index.js +2 -0
- package/dist/execution/cache/memory.d.ts +13 -0
- package/dist/execution/cache/memory.js +48 -0
- package/dist/execution/identity/authentication.d.ts +33 -3
- package/dist/execution/identity/authentication.js +90 -36
- package/dist/execution/identity/callback.d.ts +20 -20
- package/dist/execution/identity/callback.js +34 -26
- package/dist/execution/identity/delivery.d.ts +6 -4
- package/dist/execution/identity/delivery.js +25 -20
- package/dist/execution/identity/identity.d.ts +17 -3
- package/dist/execution/identity/identity.js +12 -4
- package/dist/execution/identity/jwks.d.ts +5 -0
- package/dist/execution/identity/jwks.js +92 -102
- package/dist/execution/index.d.ts +6 -4
- package/dist/execution/index.js +4 -2
- package/dist/execution/invocation/admission/age.d.ts +57 -0
- package/dist/execution/invocation/admission/age.js +208 -0
- package/dist/execution/invocation/admission/authentication.d.ts +13 -13
- package/dist/execution/invocation/admission/authentication.js +52 -44
- package/dist/execution/invocation/admission/authority.d.ts +28 -6
- package/dist/execution/invocation/admission/authority.js +9 -2
- package/dist/execution/invocation/admission/index.d.ts +4 -3
- package/dist/execution/invocation/admission/index.js +3 -2
- package/dist/execution/invocation/admission/input.d.ts +2 -2
- package/dist/execution/invocation/admission/input.js +16 -2
- package/dist/execution/invocation/admission/target.d.ts +11 -0
- package/dist/execution/invocation/admission/target.js +22 -3
- package/dist/execution/invocation/capabilities/bind.d.ts +11 -0
- package/dist/execution/invocation/capabilities/bind.js +25 -0
- package/dist/execution/invocation/capabilities/index.d.ts +1 -0
- package/dist/execution/invocation/capabilities/index.js +1 -0
- package/dist/execution/invocation/dependency/bind.d.ts +3 -1
- package/dist/execution/invocation/dependency/bind.js +36 -16
- package/dist/execution/invocation/dispatch/context.d.ts +7 -6
- package/dist/execution/invocation/dispatch/context.js +11 -44
- package/dist/execution/invocation/dispatch/workflow.js +0 -4
- package/dist/execution/invocation/handler.js +8 -2
- package/dist/execution/invocation/index.d.ts +2 -2
- package/dist/execution/invocation/index.js +1 -1
- package/dist/execution/invocation/integration/authentication.d.ts +3 -3
- package/dist/execution/invocation/integration/authentication.js +7 -7
- package/dist/execution/invocation/integration/call.d.ts +2 -1
- package/dist/execution/invocation/integration/call.js +3 -3
- package/dist/execution/invocation/integration/clients.d.ts +1 -1
- package/dist/execution/invocation/integration/index.d.ts +1 -0
- package/dist/execution/invocation/integration/index.js +1 -0
- package/dist/execution/invocation/invocation.d.ts +6 -0
- package/dist/execution/invocation/invocation.js +129 -21
- package/dist/execution/invocation/lifecycle/active.d.ts +8 -2
- package/dist/execution/invocation/lifecycle/active.js +3 -3
- package/dist/execution/invocation/lifecycle/index.d.ts +1 -1
- package/dist/execution/invocation/result/errors.d.ts +0 -10
- package/dist/execution/invocation/result/errors.js +0 -17
- package/dist/execution/invocation/result/index.d.ts +2 -2
- package/dist/execution/invocation/result/index.js +1 -1
- package/dist/execution/invocation/result/project.js +41 -1
- package/dist/execution/node/serve.d.ts +2 -2
- package/dist/execution/node/serve.js +1 -1
- package/dist/execution/runtime/index.d.ts +1 -0
- package/dist/execution/runtime/index.js +1 -0
- package/dist/execution/runtime/load.d.ts +3 -3
- package/dist/execution/runtime/load.js +3 -2
- package/dist/execution/runtime/release.d.ts +17 -0
- package/dist/execution/runtime/release.js +7 -0
- package/dist/execution/serve.d.ts +18 -4
- package/dist/execution/serve.js +10 -0
- package/dist/execution/service/create.js +43 -7
- package/dist/execution/service/initialization.d.ts +4 -4
- package/dist/execution/service/initialization.js +23 -14
- package/dist/execution/service/release.d.ts +2 -2
- package/dist/execution/service/release.js +3 -2
- package/dist/execution/service/service.d.ts +20 -5
- package/dist/execution/service/serving/delivery.d.ts +5 -0
- package/dist/execution/service/{publication → serving}/delivery.js +4 -1
- package/dist/execution/service/{publication → serving}/index.d.ts +1 -1
- package/dist/execution/service/serving/installation.d.ts +4 -0
- package/dist/execution/service/serving/installation.js +9 -0
- package/dist/execution/service/serving/source.d.ts +11 -0
- package/dist/execution/service/serving/source.js +15 -0
- package/dist/execution/workflows/discovery.d.ts +14 -0
- package/dist/execution/workflows/discovery.js +151 -0
- package/dist/execution/workflows/engine.d.ts +89 -0
- package/dist/execution/workflows/engine.js +1 -0
- package/dist/execution/workflows/envelope.d.ts +12 -0
- package/dist/execution/workflows/envelope.js +46 -0
- package/dist/execution/workflows/failure.d.ts +46 -0
- package/dist/execution/workflows/failure.js +160 -0
- package/dist/execution/workflows/index.d.ts +4 -0
- package/dist/execution/workflows/index.js +3 -0
- package/dist/execution/workflows/integrations.d.ts +13 -0
- package/dist/execution/workflows/integrations.js +25 -0
- package/dist/execution/workflows/options.d.ts +66 -0
- package/dist/execution/workflows/options.js +148 -0
- package/dist/execution/workflows/receiver.d.ts +24 -0
- package/dist/execution/workflows/receiver.js +99 -0
- package/dist/execution/workflows/route.d.ts +12 -0
- package/dist/execution/workflows/route.js +35 -0
- package/dist/execution/workflows/run.d.ts +21 -0
- package/dist/execution/workflows/run.js +321 -0
- package/dist/execution/workflows/steps.d.ts +42 -0
- package/dist/execution/workflows/steps.js +67 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +2 -2
- package/dist/platform/graph/alias.d.ts +1 -5
- package/dist/platform/graph/alias.js +1 -5
- package/dist/platform/graph/document/index.d.ts +1 -1
- package/dist/platform/graph/document/index.js +1 -1
- package/dist/platform/graph/index.d.ts +1 -1
- package/dist/platform/graph/index.js +1 -1
- package/dist/platform/release/index.d.ts +2 -0
- package/dist/platform/release/index.js +2 -0
- package/dist/platform/schema/callable-authoring.d.ts +21 -0
- package/dist/platform/schema/callable-authoring.js +27 -0
- package/dist/platform/schema/class-authoring.d.ts +61 -11
- package/dist/platform/schema/class-authoring.js +37 -4
- package/dist/platform/schema/class-icon-svg.d.ts +9 -0
- package/dist/platform/schema/class-icon-svg.js +29 -0
- package/dist/platform/schema/class-icon.d.ts +3 -8
- package/dist/platform/schema/class-icon.js +2 -29
- package/dist/platform/schema/index.d.ts +6 -4
- package/dist/platform/schema/index.js +2 -1
- package/dist/platform/schema/property.d.ts +5 -0
- package/dist/platform/schema/schema-authoring.d.ts +14 -7
- package/dist/platform/schema/schema-authoring.js +5 -1
- package/dist/platform/versioning/dependents.d.ts +18 -0
- package/dist/platform/versioning/dependents.js +15 -0
- package/dist/platform/versioning/index.d.ts +5 -0
- package/dist/platform/versioning/index.js +5 -0
- package/dist/platform/versioning/name.d.ts +38 -0
- package/dist/platform/versioning/name.js +58 -0
- package/dist/platform/versioning/reference.d.ts +48 -0
- package/dist/platform/versioning/reference.js +95 -0
- package/dist/platform/versioning/version.d.ts +72 -0
- package/dist/platform/versioning/version.js +98 -0
- package/dist/project/admit.js +1 -5
- package/dist/project/define.d.ts +4 -4
- package/dist/project/define.js +55 -35
- package/dist/project/index.d.ts +1 -1
- package/dist/project/install-command.d.ts +6 -0
- package/dist/project/install-command.js +9 -0
- package/dist/project/project.d.ts +10 -8
- package/dist/testing/dataset/define.d.ts +1 -1
- package/dist/testing/durable/engine.d.ts +121 -0
- package/dist/testing/durable/engine.js +614 -0
- package/dist/testing/durable/index.d.ts +3 -0
- package/dist/testing/durable/index.js +1 -0
- package/dist/testing/durable/steps.d.ts +30 -0
- package/dist/testing/durable/steps.js +40 -0
- package/dist/testing/index.d.ts +6 -1
- package/dist/testing/index.js +5 -1
- package/dist/testing/load.js +1 -1
- package/dist/tooling/cli/adapter-command.d.ts +35 -0
- package/dist/tooling/cli/adapter-command.js +66 -0
- package/dist/tooling/cli/arguments.d.ts +17 -6
- package/dist/tooling/cli/arguments.js +175 -52
- package/dist/tooling/cli/build.d.ts +55 -0
- package/dist/tooling/cli/build.js +77 -0
- package/dist/tooling/cli/bun.d.ts +0 -1
- package/dist/tooling/cli/bun.js +0 -7
- package/dist/tooling/cli/commit.d.ts +35 -0
- package/dist/tooling/cli/commit.js +235 -0
- package/dist/tooling/cli/deploy-mode.d.ts +26 -0
- package/dist/tooling/cli/deploy-mode.js +59 -0
- package/dist/tooling/cli/deploy-result.d.ts +80 -0
- package/dist/tooling/cli/deploy-result.js +64 -0
- package/dist/tooling/cli/diff/declared.d.ts +7 -0
- package/dist/tooling/cli/diff/declared.js +27 -0
- package/dist/tooling/cli/diff/index.d.ts +30 -0
- package/dist/tooling/cli/diff/index.js +58 -0
- package/dist/tooling/cli/diff/render.d.ts +15 -0
- package/dist/tooling/cli/diff/render.js +131 -0
- package/dist/tooling/cli/diff/report.d.ts +88 -0
- package/dist/tooling/cli/diff/report.js +154 -0
- package/dist/tooling/cli/dotenv.d.ts +5 -5
- package/dist/tooling/cli/dotenv.js +6 -36
- package/dist/tooling/cli/help.js +173 -60
- package/dist/tooling/cli/immutable-deployment.d.ts +83 -0
- package/dist/tooling/cli/immutable-deployment.js +135 -0
- package/dist/tooling/cli/index.d.ts +12 -4
- package/dist/tooling/cli/index.js +6 -3
- package/dist/tooling/cli/installed-on.d.ts +83 -0
- package/dist/tooling/cli/installed-on.js +156 -0
- package/dist/tooling/cli/list.d.ts +152 -0
- package/dist/tooling/cli/list.js +331 -0
- package/dist/tooling/cli/log.d.ts +5 -2
- package/dist/tooling/cli/log.js +9 -2
- package/dist/tooling/cli/orchestrate.d.ts +0 -6
- package/dist/tooling/cli/orchestrate.js +246 -90
- package/dist/tooling/cli/project.d.ts +3 -3
- package/dist/tooling/cli/publish/index.d.ts +81 -0
- package/dist/tooling/cli/publish/index.js +383 -0
- package/dist/tooling/cli/publish/report.d.ts +49 -0
- package/dist/tooling/cli/publish/report.js +15 -0
- package/dist/tooling/cli/registry/client.d.ts +121 -0
- package/dist/tooling/cli/registry/client.js +354 -0
- package/dist/tooling/cli/registry/error.d.ts +11 -0
- package/dist/tooling/cli/registry/error.js +17 -0
- package/dist/tooling/cli/registry/executable.d.ts +35 -0
- package/dist/tooling/cli/registry/executable.js +96 -0
- package/dist/tooling/cli/registry/index.d.ts +9 -0
- package/dist/tooling/cli/registry/index.js +8 -0
- package/dist/tooling/cli/registry/installations.d.ts +67 -0
- package/dist/tooling/cli/registry/installations.js +108 -0
- package/dist/tooling/cli/registry/process.d.ts +36 -0
- package/dist/tooling/cli/registry/process.js +119 -0
- package/dist/tooling/cli/secrets.d.ts +9 -0
- package/dist/tooling/cli/secrets.js +19 -0
- package/dist/tooling/cli/yank.d.ts +34 -0
- package/dist/tooling/cli/yank.js +32 -0
- package/dist/tooling/linter/adapters/typescript/imports.d.ts +0 -1
- package/dist/tooling/linter/adapters/typescript/imports.js +1 -5
- package/dist/tooling/linter/adapters/typescript/index.d.ts +1 -1
- package/dist/tooling/linter/adapters/typescript/index.js +1 -1
- package/dist/tooling/linter/adapters/typescript/syntax.d.ts +3 -3
- package/dist/tooling/linter/adapters/typescript/syntax.js +13 -25
- package/dist/tooling/linter/implementations/source/callable-requirements.d.ts +1 -2
- package/dist/tooling/linter/implementations/source/callable-requirements.js +11 -16
- package/dist/tooling/linter/implementations/source/dependencies.js +13 -72
- package/dist/tooling/linter/implementations/source/global.js +1 -2
- package/dist/tooling/linter/implementations/source/mutations.js +18 -29
- package/dist/tooling/linter/implementations/source/providers.js +5 -5
- package/dist/tooling/linter/implementations/source/queries.js +1 -17
- package/dist/tooling/linter/implementations/source/shared.d.ts +12 -4
- package/dist/tooling/linter/implementations/source/shared.js +101 -46
- package/dist/tooling/linter/implementations/source/verifiers.js +0 -2
- package/dist/tooling/linter/implementations/source/views.js +2 -2
- package/dist/tooling/linter/implementations/source/workflows.js +500 -17
- package/dist/tooling/linter/policy/generated.js +14 -63
- package/dist/tooling/linter/requirements/registry.js +6 -8
- package/dist/tooling/packaging/declarations/ownership.js +1 -1
- package/dist/tooling/packaging/finalize.d.ts +1 -1
- package/dist/tooling/packaging/finalize.js +1 -1
- package/docs/admission-age.md +88 -0
- package/docs/auth-api-migration.md +55 -0
- package/docs/business-errors.md +42 -0
- package/docs/domain-definition-migration.md +44 -0
- package/docs/domain-schema-migration.md +36 -0
- package/docs/durable-workflows.md +418 -0
- package/docs/handler-dependencies.md +213 -0
- package/docs/release.md +155 -0
- package/docs/schema-cost.md +124 -0
- package/package.json +45 -16
- package/dist/application/application.d.ts +0 -28
- package/dist/application/query/execution/projection.d.ts +0 -3
- package/dist/application/query/execution/projection.js +0 -3
- package/dist/deployment/adapter/deploy/context.d.ts +0 -15
- package/dist/deployment/adapter/deploy/index.d.ts +0 -2
- package/dist/deployment/adapter/deploy/result.d.ts +0 -50
- package/dist/deployment/adapter/prepare/artifact.d.ts +0 -33
- package/dist/deployment/adapter/prepare/context.d.ts +0 -23
- package/dist/deployment/adapter/prepare/index.d.ts +0 -2
- package/dist/deployment/deploy.d.ts +0 -20
- package/dist/deployment/deploy.js +0 -31
- package/dist/deployment/release/publication/index.d.ts +0 -6
- package/dist/deployment/release/publication/index.js +0 -6
- package/dist/deployment/release/publication/manifest.d.ts +0 -3
- package/dist/deployment/release/publication/manifest.js +0 -5
- package/dist/deployment/release/publication/requirements.d.ts +0 -3
- package/dist/deployment/release/publication/requirements.js +0 -3
- package/dist/deployment/release/publication/seal.d.ts +0 -10
- package/dist/deployment/release/publication/seal.js +0 -39
- package/dist/deployment/verify/preflight/artifact.d.ts +0 -6
- package/dist/deployment/verify/preflight/artifact.js +0 -122
- package/dist/deployment/verify/preflight/publication.d.ts +0 -4
- package/dist/deployment/verify/preflight/publication.js +0 -14
- package/dist/deployment/verify/readiness/deployment.d.ts +0 -3
- package/dist/deployment/verify/readiness/deployment.js +0 -151
- package/dist/deployment/verify/readiness/publication.d.ts +0 -11
- package/dist/deployment/verify/readiness/publication.js +0 -41
- package/dist/execution/service/errors.d.ts +0 -3
- package/dist/execution/service/errors.js +0 -3
- package/dist/execution/service/publication/delivery.d.ts +0 -2
- package/dist/execution/service/publication/installation.d.ts +0 -3
- package/dist/execution/service/publication/installation.js +0 -8
- package/dist/execution/service/publication/source.d.ts +0 -3
- package/dist/execution/service/publication/source.js +0 -11
- package/dist/platform/publication/index.d.ts +0 -2
- package/dist/platform/publication/index.js +0 -2
- package/dist/tooling/cli/astrale/authority.d.ts +0 -5
- package/dist/tooling/cli/astrale/authority.js +0 -11
- package/dist/tooling/cli/astrale/executable.d.ts +0 -2
- package/dist/tooling/cli/astrale/executable.js +0 -47
- package/dist/tooling/cli/astrale/failure.d.ts +0 -6
- package/dist/tooling/cli/astrale/failure.js +0 -48
- package/dist/tooling/cli/astrale/instance.d.ts +0 -11
- package/dist/tooling/cli/astrale/instance.js +0 -52
- package/dist/tooling/cli/astrale/process.d.ts +0 -13
- package/dist/tooling/cli/astrale/process.js +0 -94
- package/dist/tooling/cli/astrale/version.d.ts +0 -18
- package/dist/tooling/cli/astrale/version.js +0 -55
- package/dist/tooling/cli/credential.d.ts +0 -2
- package/dist/tooling/cli/credential.js +0 -57
- package/dist/tooling/cli/deprecations.d.ts +0 -9
- package/dist/tooling/cli/deprecations.js +0 -15
- package/dist/tooling/cli/development/candidate.d.ts +0 -25
- package/dist/tooling/cli/development/candidate.js +0 -176
- package/dist/tooling/cli/development/deployment.d.ts +0 -16
- package/dist/tooling/cli/development/deployment.js +0 -39
- package/dist/tooling/cli/development/develop.d.ts +0 -11
- package/dist/tooling/cli/development/develop.js +0 -243
- package/dist/tooling/cli/development/lease.d.ts +0 -18
- package/dist/tooling/cli/development/lease.js +0 -163
- package/dist/tooling/cli/development/lifecycle.d.ts +0 -9
- package/dist/tooling/cli/development/lifecycle.js +0 -43
- package/dist/tooling/cli/development/project-imports.d.ts +0 -22
- package/dist/tooling/cli/development/project-imports.js +0 -39
- package/dist/tooling/cli/development/project-lock.d.ts +0 -16
- package/dist/tooling/cli/development/project-lock.js +0 -41
- package/dist/tooling/cli/development/rebuild.d.ts +0 -13
- package/dist/tooling/cli/development/rebuild.js +0 -58
- package/dist/tooling/cli/development/release-evidence.d.ts +0 -4
- package/dist/tooling/cli/development/release-evidence.js +0 -10
- package/dist/tooling/cli/development/report.d.ts +0 -6
- package/dist/tooling/cli/development/report.js +0 -14
- package/dist/tooling/cli/development/session-file.d.ts +0 -53
- package/dist/tooling/cli/development/session-file.js +0 -337
- package/dist/tooling/cli/development/source-watch.d.ts +0 -14
- package/dist/tooling/cli/development/source-watch.js +0 -140
- package/dist/tooling/cli/development/sources.d.ts +0 -7
- package/dist/tooling/cli/development/sources.js +0 -48
- package/dist/tooling/cli/development/target-lock.d.ts +0 -16
- package/dist/tooling/cli/development/target-lock.js +0 -68
- package/dist/tooling/cli/development/view.d.ts +0 -28
- package/dist/tooling/cli/development/view.js +0 -151
- package/dist/tooling/cli/environment-release.d.ts +0 -21
- package/dist/tooling/cli/environment-release.js +0 -46
- package/dist/tooling/cli/evidence.d.ts +0 -11
- package/dist/tooling/cli/evidence.js +0 -53
- package/dist/tooling/cli/installation/index.d.ts +0 -2
- package/dist/tooling/cli/installation/index.js +0 -1
- package/dist/tooling/cli/installation/observation.d.ts +0 -10
- package/dist/tooling/cli/installation/observation.js +0 -44
- package/dist/tooling/cli/installation/reconcile.d.ts +0 -32
- package/dist/tooling/cli/installation/reconcile.js +0 -122
- package/dist/tooling/linter/implementations/source/migrations.d.ts +0 -2
- package/dist/tooling/linter/implementations/source/migrations.js +0 -113
- package/dist/tooling/linter/qualification/index.d.ts +0 -10
- package/dist/tooling/linter/qualification/index.js +0 -2
- package/dist/tooling/linter/qualification/query-fixtures.d.ts +0 -2
- package/dist/tooling/linter/qualification/query-fixtures.js +0 -68
- package/dist/tooling/linter/qualification/runner.d.ts +0 -3
- package/dist/tooling/linter/qualification/runner.js +0 -6
- /package/dist/application/{application.js → domain.js} +0 -0
- /package/dist/{deployment/adapter/deploy/context.js → application/workflow/durable.js} +0 -0
- /package/dist/deployment/adapter/{deploy/index.js → bundle/bundle.js} +0 -0
- /package/dist/deployment/adapter/{deploy/result.js → bundle/file.js} +0 -0
- /package/dist/deployment/adapter/{prepare → bundle}/index.js +0 -0
- /package/dist/deployment/adapter/{prepare/artifact.js → release/command.js} +0 -0
- /package/dist/deployment/adapter/{prepare → release}/context.js +0 -0
- /package/dist/deployment/release/{publication → served}/routes.d.ts +0 -0
- /package/dist/deployment/release/{publication → served}/routes.js +0 -0
- /package/dist/execution/service/{publication → serving}/index.js +0 -0
package/dist/testing/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Development and test resources: schema-admitted demo Datasets, their lazy project references, and
|
|
3
|
+
* an in-memory engine that runs durable Workflows.
|
|
4
|
+
*/
|
|
2
5
|
export { DATASET_FORMAT, DATASET_VERSION, DatasetAdmissionError, decodeDataset, defineDataset, encodeDataset, isDataset, } from './dataset/index.js';
|
|
3
6
|
export type { AuthoredDatasetVariables, Dataset, DatasetClasses, DatasetEdgeInput, DatasetEndpoint, DatasetGraph, DatasetInput, DatasetJson, DatasetNode, DatasetNodeInput, DatasetReferences, DatasetReferenceInput, DatasetVariable, DatasetVariableJson, DatasetVariables, DatasetVariablesOf, SchemaOfDataset, } from './dataset/index.js';
|
|
4
7
|
export { loadDataset, loadDatasets } from './load.js';
|
|
@@ -7,3 +10,5 @@ export { dataset, isDatasetReference } from './reference.js';
|
|
|
7
10
|
export type { DatasetReference } from './reference.js';
|
|
8
11
|
export { isTests, tests } from './tests.js';
|
|
9
12
|
export type { Tests, TestsInput } from './tests.js';
|
|
13
|
+
export { createTestEngine } from './durable/index.js';
|
|
14
|
+
export type { TestEngine, TestEngineOptions, TestExecution, TestJournalEntry, TestStartOptions, TestStepCapabilities, } from './durable/index.js';
|
package/dist/testing/index.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Development and test resources: schema-admitted demo Datasets, their lazy project references, and
|
|
3
|
+
* an in-memory engine that runs durable Workflows.
|
|
4
|
+
*/
|
|
2
5
|
export { DATASET_FORMAT, DATASET_VERSION, DatasetAdmissionError, decodeDataset, defineDataset, encodeDataset, isDataset, } from './dataset/index.js';
|
|
3
6
|
export { loadDataset, loadDatasets } from './load.js';
|
|
4
7
|
export { dataset, isDatasetReference } from './reference.js';
|
|
5
8
|
export { isTests, tests } from './tests.js';
|
|
9
|
+
export { createTestEngine } from './durable/index.js';
|
package/dist/testing/load.js
CHANGED
|
@@ -21,7 +21,7 @@ export async function loadDataset(reference, load, source) {
|
|
|
21
21
|
throw new TypeError(`Dataset module ${reference.path} default export is not an admitted Dataset.`);
|
|
22
22
|
}
|
|
23
23
|
if (dataset.schema !== source) {
|
|
24
|
-
throw new TypeError(`Dataset ${dataset.id} (${reference.path}) targets Schema ${dataset.schema.origin}, not the exact
|
|
24
|
+
throw new TypeError(`Dataset ${dataset.id} (${reference.path}) targets Schema ${dataset.schema.origin}, not the exact Domain Schema.`);
|
|
25
25
|
}
|
|
26
26
|
return Object.freeze({ reference, dataset });
|
|
27
27
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { LoadedEnvironment } from './project.js';
|
|
2
|
+
/**
|
|
3
|
+
* `astrale-domain <adapter> <command> <environment> --json` on stdout: what one provider command
|
|
4
|
+
* of the Environment's adapter answered (adapter-cloudflare: `cloudflare plan` and
|
|
5
|
+
* `cloudflare init`, which provision its host on the operator's own account).
|
|
6
|
+
*/
|
|
7
|
+
export interface AdapterCommandReportV1 {
|
|
8
|
+
readonly format: 'astrale.adapter-command';
|
|
9
|
+
readonly version: 1;
|
|
10
|
+
/** `<adapter name>@<adapter version>` */
|
|
11
|
+
readonly adapter: string;
|
|
12
|
+
readonly command: string;
|
|
13
|
+
readonly environment: string;
|
|
14
|
+
/** 0 done; 1 refused or blocked. */
|
|
15
|
+
readonly exitCode: 0 | 1;
|
|
16
|
+
/** What the adapter's command answered, as it answered it. */
|
|
17
|
+
readonly result: unknown;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* `astrale-domain <adapter> <command> <environment> [--<option> <value>]... [--json]`: run one
|
|
21
|
+
* provider command an adapter declares, on an Environment that adapter deploys. The CLI only
|
|
22
|
+
* routes: it refuses an Environment whose adapter has another name, a command the adapter does
|
|
23
|
+
* not declare and an option the command does not declare, each before any effect, and prints what
|
|
24
|
+
* the command answers. Exit status: the command's (0 done, 1 refused or blocked), 1 when it could
|
|
25
|
+
* not run.
|
|
26
|
+
*/
|
|
27
|
+
export declare function runAdapterCommand(input: {
|
|
28
|
+
readonly adapter: string;
|
|
29
|
+
readonly command: string;
|
|
30
|
+
readonly environment: string;
|
|
31
|
+
readonly definition: LoadedEnvironment;
|
|
32
|
+
readonly options: Readonly<Record<string, string>>;
|
|
33
|
+
readonly json: boolean;
|
|
34
|
+
readonly signal: AbortSignal;
|
|
35
|
+
}): Promise<number>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { error, info, warn } from './log.js';
|
|
2
|
+
/**
|
|
3
|
+
* `astrale-domain <adapter> <command> <environment> [--<option> <value>]... [--json]`: run one
|
|
4
|
+
* provider command an adapter declares, on an Environment that adapter deploys. The CLI only
|
|
5
|
+
* routes: it refuses an Environment whose adapter has another name, a command the adapter does
|
|
6
|
+
* not declare and an option the command does not declare, each before any effect, and prints what
|
|
7
|
+
* the command answers. Exit status: the command's (0 done, 1 refused or blocked), 1 when it could
|
|
8
|
+
* not run.
|
|
9
|
+
*/
|
|
10
|
+
export async function runAdapterCommand(input) {
|
|
11
|
+
const { adapter, parameters } = input.definition.deployment;
|
|
12
|
+
const name = `${adapter.name}@${adapter.version}`;
|
|
13
|
+
if (adapter.name !== input.adapter) {
|
|
14
|
+
error(`Environment ${input.environment} deploys through adapter ${adapter.name}, not ` +
|
|
15
|
+
`${input.adapter}: run \`astrale-domain ${adapter.name} <command> ${input.environment}\`.`);
|
|
16
|
+
return 1;
|
|
17
|
+
}
|
|
18
|
+
const commands = 'commands' in adapter ? adapter.commands : undefined;
|
|
19
|
+
const command = commands?.[input.command];
|
|
20
|
+
if (command === undefined) {
|
|
21
|
+
const declared = Object.entries(commands ?? {}).map(([candidate, { summary }]) => `${candidate} (${summary})`);
|
|
22
|
+
error(`Adapter ${name} declares no command ${input.command}` +
|
|
23
|
+
(declared.length === 0 ? '.' : `; its commands: ${declared.join('; ')}.`));
|
|
24
|
+
return 1;
|
|
25
|
+
}
|
|
26
|
+
const declaredOptions = command.options ?? {};
|
|
27
|
+
const unknown = Object.keys(input.options).filter((option) => !Object.hasOwn(declaredOptions, option));
|
|
28
|
+
if (unknown.length > 0) {
|
|
29
|
+
const known = Object.entries(declaredOptions).map(([option, description]) => `--${option} (${description})`);
|
|
30
|
+
error(`${input.adapter} ${input.command} takes no option ${unknown.map((option) => `--${option}`).join(', ')}` +
|
|
31
|
+
(known.length === 0 ? '.' : `; its options: ${known.join('; ')}.`));
|
|
32
|
+
return 1;
|
|
33
|
+
}
|
|
34
|
+
let answered;
|
|
35
|
+
try {
|
|
36
|
+
answered = await command.run(parameters, {
|
|
37
|
+
environment: input.environment,
|
|
38
|
+
signal: input.signal,
|
|
39
|
+
options: Object.freeze({ ...input.options }),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
catch (cause) {
|
|
43
|
+
error(`${input.adapter} ${input.command} ${input.environment} (${name}) failed: ` +
|
|
44
|
+
(cause instanceof Error ? cause.message : String(cause)));
|
|
45
|
+
return 1;
|
|
46
|
+
}
|
|
47
|
+
for (const line of answered.warnings ?? [])
|
|
48
|
+
warn(line);
|
|
49
|
+
if (input.json) {
|
|
50
|
+
const report = Object.freeze({
|
|
51
|
+
format: 'astrale.adapter-command',
|
|
52
|
+
version: 1,
|
|
53
|
+
adapter: name,
|
|
54
|
+
command: input.command,
|
|
55
|
+
environment: input.environment,
|
|
56
|
+
exitCode: answered.exitCode,
|
|
57
|
+
result: answered.result,
|
|
58
|
+
});
|
|
59
|
+
process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
for (const line of answered.lines)
|
|
63
|
+
info(line);
|
|
64
|
+
}
|
|
65
|
+
return answered.exitCode;
|
|
66
|
+
}
|
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
import type { LintReportFormat } from '../linter/index.js';
|
|
2
|
-
|
|
2
|
+
import { type Version } from '../../platform/versioning/index.js';
|
|
3
|
+
export declare const COMMANDS: readonly ['build', 'deploy', 'diff', 'list', 'publish', 'test', 'lint', 'package', 'upgrade', 'yank'];
|
|
3
4
|
export type Command = (typeof COMMANDS)[number];
|
|
4
5
|
export interface ParsedArgs {
|
|
5
|
-
|
|
6
|
+
/** `adapter`: a provider command of an Environment's adapter (`<adapter> <command> <env>`). */
|
|
7
|
+
readonly command: Command | 'adapter';
|
|
6
8
|
readonly env: string;
|
|
7
9
|
readonly fix?: boolean;
|
|
8
10
|
readonly format?: LintReportFormat;
|
|
9
|
-
readonly deployOnly?: boolean;
|
|
10
11
|
readonly identity?: string;
|
|
11
|
-
readonly credentialFile?: string;
|
|
12
12
|
readonly suite?: string;
|
|
13
|
-
readonly sessionFile?: string;
|
|
14
|
-
readonly secretsFile?: string;
|
|
15
13
|
readonly channel?: string;
|
|
16
14
|
readonly check?: boolean;
|
|
15
|
+
readonly json?: boolean;
|
|
16
|
+
/** `yank`: the published version it names. */
|
|
17
|
+
readonly version?: Version;
|
|
18
|
+
/** `yank --undo`: restore the version instead of yanking it. */
|
|
19
|
+
readonly undo?: boolean;
|
|
20
|
+
readonly allowDirty?: boolean;
|
|
21
|
+
/** `list`: instances to ask what they run, in argument order. */
|
|
22
|
+
readonly instances?: readonly string[];
|
|
23
|
+
/** `<adapter> <command> <env>`: the adapter name and its command. */
|
|
24
|
+
readonly adapter?: string;
|
|
25
|
+
readonly adapterCommand?: string;
|
|
26
|
+
/** `<adapter> <command> <env> --<option> <value>`: the options, by name. */
|
|
27
|
+
readonly options?: Readonly<Record<string, string>>;
|
|
17
28
|
}
|
|
18
29
|
/** Parse the frozen `astrale-domain` command grammar without performing effects. */
|
|
19
30
|
export declare function parseArgs(argv: readonly string[]): ParsedArgs;
|
|
@@ -1,41 +1,43 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { acceptVersion } from '../../platform/versioning/index.js';
|
|
2
|
+
import { installCommand } from '../../project/install-command.js';
|
|
3
|
+
export const COMMANDS = [
|
|
4
|
+
'build',
|
|
5
|
+
'deploy',
|
|
6
|
+
'diff',
|
|
7
|
+
'list',
|
|
8
|
+
'publish',
|
|
9
|
+
'test',
|
|
10
|
+
'lint',
|
|
11
|
+
'package',
|
|
12
|
+
'upgrade',
|
|
13
|
+
'yank',
|
|
14
|
+
];
|
|
15
|
+
/** An adapter name or one of its command and option names, as `defineAdapter` admits them. */
|
|
16
|
+
const PROVIDER_NAME = /^[a-z][a-z0-9-]{0,31}$/u;
|
|
3
17
|
/** Parse the frozen `astrale-domain` command grammar without performing effects. */
|
|
4
18
|
export function parseArgs(argv) {
|
|
5
19
|
const [command, ...rest] = argv;
|
|
6
20
|
if (command === 'upgrade')
|
|
7
21
|
return parseUpgrade(rest);
|
|
22
|
+
if (command !== undefined && !COMMANDS.includes(command)) {
|
|
23
|
+
const provider = parseAdapterCommand(command, rest);
|
|
24
|
+
if (provider !== undefined)
|
|
25
|
+
return provider;
|
|
26
|
+
}
|
|
8
27
|
const fix = rest.includes('--fix');
|
|
9
28
|
const deployOnly = rest.includes('--deploy-only');
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
29
|
+
const json = rest.includes('--json');
|
|
30
|
+
const undo = rest.includes('--undo');
|
|
31
|
+
const allowDirty = rest.includes('--allow-dirty');
|
|
13
32
|
let identity;
|
|
14
33
|
let suite;
|
|
15
34
|
let format;
|
|
16
35
|
let environment;
|
|
36
|
+
const instances = [];
|
|
17
37
|
const cleaned = [];
|
|
18
38
|
for (let index = 0; index < rest.length; index += 1) {
|
|
19
39
|
const argument = rest[index];
|
|
20
|
-
if (argument === '--
|
|
21
|
-
sessionFile = absoluteFilePath('--session-file', rest[++index]);
|
|
22
|
-
}
|
|
23
|
-
else if (argument.startsWith('--session-file=')) {
|
|
24
|
-
sessionFile = absoluteFilePath('--session-file', argument.slice('--session-file='.length));
|
|
25
|
-
}
|
|
26
|
-
else if (argument === '--credential-file') {
|
|
27
|
-
credentialFile = absoluteFilePath('--credential-file', rest[++index]);
|
|
28
|
-
}
|
|
29
|
-
else if (argument.startsWith('--credential-file=')) {
|
|
30
|
-
credentialFile = absoluteFilePath('--credential-file', argument.slice('--credential-file='.length));
|
|
31
|
-
}
|
|
32
|
-
else if (argument === '--secrets-file') {
|
|
33
|
-
secretsFile = absoluteFilePath('--secrets-file', rest[++index]);
|
|
34
|
-
}
|
|
35
|
-
else if (argument.startsWith('--secrets-file=')) {
|
|
36
|
-
secretsFile = absoluteFilePath('--secrets-file', argument.slice('--secrets-file='.length));
|
|
37
|
-
}
|
|
38
|
-
else if (argument === '--as') {
|
|
40
|
+
if (argument === '--as') {
|
|
39
41
|
identity = requiredValue('--as', rest[++index]);
|
|
40
42
|
}
|
|
41
43
|
else if (argument.startsWith('--as=')) {
|
|
@@ -53,13 +55,24 @@ export function parseArgs(argv) {
|
|
|
53
55
|
else if (argument.startsWith('--environment=')) {
|
|
54
56
|
environment = requiredValue('--environment', argument.slice('--environment='.length));
|
|
55
57
|
}
|
|
58
|
+
else if (command === 'list' && argument === '--instance') {
|
|
59
|
+
// Only `list` asks instances; elsewhere `--instance` stays unknown, as deploy removed it.
|
|
60
|
+
instances.push(requiredValue('--instance', rest[++index]));
|
|
61
|
+
}
|
|
62
|
+
else if (command === 'list' && argument.startsWith('--instance=')) {
|
|
63
|
+
instances.push(requiredValue('--instance', argument.slice('--instance='.length)));
|
|
64
|
+
}
|
|
56
65
|
else if (argument === '--suite') {
|
|
57
66
|
suite = requiredValue('--suite', rest[++index]);
|
|
58
67
|
}
|
|
59
68
|
else if (argument.startsWith('--suite=')) {
|
|
60
69
|
suite = requiredValue('--suite', argument.slice('--suite='.length));
|
|
61
70
|
}
|
|
62
|
-
else if (argument === '--fix' ||
|
|
71
|
+
else if (argument === '--fix' ||
|
|
72
|
+
argument === '--deploy-only' ||
|
|
73
|
+
argument === '--json' ||
|
|
74
|
+
argument === '--undo' ||
|
|
75
|
+
argument === '--allow-dirty') {
|
|
63
76
|
continue;
|
|
64
77
|
}
|
|
65
78
|
else if (argument.startsWith('-')) {
|
|
@@ -71,23 +84,37 @@ export function parseArgs(argv) {
|
|
|
71
84
|
}
|
|
72
85
|
if (fix && command !== 'lint')
|
|
73
86
|
throw new Error('`--fix` is only valid for `lint`.');
|
|
74
|
-
if (
|
|
75
|
-
|
|
87
|
+
if (json &&
|
|
88
|
+
command !== 'build' &&
|
|
89
|
+
command !== 'deploy' &&
|
|
90
|
+
command !== 'diff' &&
|
|
91
|
+
command !== 'list' &&
|
|
92
|
+
command !== 'publish' &&
|
|
93
|
+
command !== 'yank') {
|
|
94
|
+
throw new Error('`--json` is only valid for `build`, `deploy`, `diff`, `list`, `publish`, `yank` or an adapter command.');
|
|
76
95
|
}
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
throw new Error('`--session-file`, `--credential-file`, and `--secrets-file` are only valid for `dev`.');
|
|
96
|
+
if (allowDirty && command !== 'publish') {
|
|
97
|
+
throw new Error('`--allow-dirty` is only valid for `publish`.');
|
|
80
98
|
}
|
|
81
|
-
if (
|
|
82
|
-
throw new Error('
|
|
99
|
+
if (undo && command !== 'yank')
|
|
100
|
+
throw new Error('`--undo` is only valid for `yank`.');
|
|
101
|
+
if (format !== undefined && command !== 'lint') {
|
|
102
|
+
throw new Error('`--format` is only valid for `lint`.');
|
|
83
103
|
}
|
|
84
|
-
if (
|
|
85
|
-
|
|
104
|
+
if (deployOnly && command !== 'deploy')
|
|
105
|
+
refuseDeployOnly(undefined);
|
|
106
|
+
if (identity !== undefined &&
|
|
107
|
+
command !== 'deploy' &&
|
|
108
|
+
command !== 'diff' &&
|
|
109
|
+
command !== 'list' &&
|
|
110
|
+
command !== 'publish') {
|
|
111
|
+
throw new Error('`--as` is only valid for `deploy`, `diff`, `list` or `publish`.');
|
|
86
112
|
}
|
|
87
|
-
if (environment !== undefined &&
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
113
|
+
if (environment !== undefined &&
|
|
114
|
+
command !== 'deploy' &&
|
|
115
|
+
command !== 'list' &&
|
|
116
|
+
command !== 'test') {
|
|
117
|
+
throw new Error('`--environment` is only valid for `deploy`, `list` or `test`.');
|
|
91
118
|
}
|
|
92
119
|
if (suite !== undefined && command !== 'test') {
|
|
93
120
|
throw new Error('`--suite` is only valid for `test`.');
|
|
@@ -97,31 +124,65 @@ export function parseArgs(argv) {
|
|
|
97
124
|
throw new Error('Choose either a positional Environment or `--environment`, not both.');
|
|
98
125
|
}
|
|
99
126
|
switch (command) {
|
|
100
|
-
case 'dev':
|
|
101
127
|
case 'deploy': {
|
|
102
128
|
if (positionals.length > 1) {
|
|
103
129
|
throw new Error(`\`${command}\` accepts exactly one Environment.`);
|
|
104
130
|
}
|
|
105
|
-
const env = environment ?? positionals[0]
|
|
131
|
+
const env = environment ?? positionals[0];
|
|
106
132
|
if (!env) {
|
|
107
133
|
throw new Error(`\`${command}\` requires an Environment, e.g. \`${command} development\`.`);
|
|
108
134
|
}
|
|
135
|
+
if (deployOnly)
|
|
136
|
+
refuseDeployOnly(command, env);
|
|
109
137
|
return {
|
|
110
138
|
command,
|
|
111
139
|
env,
|
|
112
|
-
...(
|
|
140
|
+
...(json ? { json: true } : {}),
|
|
113
141
|
...(identity === undefined ? {} : { identity }),
|
|
114
|
-
...(credentialFile === undefined ? {} : { credentialFile }),
|
|
115
|
-
...(sessionFile === undefined ? {} : { sessionFile }),
|
|
116
|
-
...(secretsFile === undefined ? {} : { secretsFile }),
|
|
117
142
|
};
|
|
118
143
|
}
|
|
144
|
+
case 'list':
|
|
145
|
+
// Every Environment of the Project, or the one `--environment` names.
|
|
146
|
+
if (positionals.length > 0) {
|
|
147
|
+
throw new Error('`list` does not accept positional arguments; use `--environment`.');
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
command: 'list',
|
|
151
|
+
env: environment ?? '',
|
|
152
|
+
...(json ? { json: true } : {}),
|
|
153
|
+
...(identity === undefined ? {} : { identity }),
|
|
154
|
+
...(instances.length === 0 ? {} : { instances: [...new Set(instances)] }),
|
|
155
|
+
};
|
|
119
156
|
case 'build':
|
|
120
157
|
case 'package':
|
|
121
158
|
if (positionals.length > 0) {
|
|
122
159
|
throw new Error(`\`${command}\` does not accept positional arguments.`);
|
|
123
160
|
}
|
|
124
|
-
return { command, env: '' };
|
|
161
|
+
return { command, env: '', ...(json ? { json: true } : {}) };
|
|
162
|
+
case 'diff':
|
|
163
|
+
// The version is package.json's: no command takes a version number (tech Versioning).
|
|
164
|
+
if (positionals.length > 0) {
|
|
165
|
+
throw new Error('`diff` does not accept positional arguments; it reads package.json.');
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
command: 'diff',
|
|
169
|
+
env: '',
|
|
170
|
+
...(json ? { json: true } : {}),
|
|
171
|
+
...(identity === undefined ? {} : { identity }),
|
|
172
|
+
};
|
|
173
|
+
case 'publish': {
|
|
174
|
+
// The version is package.json's: the one positional names the Environment (tech Versioning).
|
|
175
|
+
if (positionals.length !== 1) {
|
|
176
|
+
throw new Error('`publish` takes exactly one Environment, e.g. `publish production`; it reads the version from package.json.');
|
|
177
|
+
}
|
|
178
|
+
return {
|
|
179
|
+
command: 'publish',
|
|
180
|
+
env: positionals[0],
|
|
181
|
+
...(json ? { json: true } : {}),
|
|
182
|
+
...(allowDirty ? { allowDirty: true } : {}),
|
|
183
|
+
...(identity === undefined ? {} : { identity }),
|
|
184
|
+
};
|
|
185
|
+
}
|
|
125
186
|
case 'test':
|
|
126
187
|
if (positionals.length > 0) {
|
|
127
188
|
throw new Error('`test` does not accept positional arguments; use `--environment`.');
|
|
@@ -131,6 +192,18 @@ export function parseArgs(argv) {
|
|
|
131
192
|
env: environment ?? '',
|
|
132
193
|
...(suite === undefined ? {} : { suite }),
|
|
133
194
|
};
|
|
195
|
+
case 'yank': {
|
|
196
|
+
if (positionals.length !== 1) {
|
|
197
|
+
throw new Error('`yank` takes exactly one published version, e.g. `yank 1.5.0`.');
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
command: 'yank',
|
|
201
|
+
env: '',
|
|
202
|
+
version: acceptVersion(positionals[0]),
|
|
203
|
+
...(undo ? { undo: true } : {}),
|
|
204
|
+
...(json ? { json: true } : {}),
|
|
205
|
+
};
|
|
206
|
+
}
|
|
134
207
|
case 'lint':
|
|
135
208
|
if (positionals.length > 0)
|
|
136
209
|
throw new Error('`lint` does not accept positional arguments.');
|
|
@@ -144,6 +217,63 @@ export function parseArgs(argv) {
|
|
|
144
217
|
throw new Error(command ? `Unknown command "${command}".` : 'Missing command.');
|
|
145
218
|
}
|
|
146
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* `--deploy-only` suppressed the installation a deploy used to make. A deploy never installs
|
|
222
|
+
* (DX [.81399], AM-72), so the flag is refused before any effect, naming the commands that
|
|
223
|
+
* replace it. Its only consumer pins an SDK older than this refusal.
|
|
224
|
+
*/
|
|
225
|
+
function refuseDeployOnly(command, environment) {
|
|
226
|
+
const refusal = '`--deploy-only` is no longer accepted: a deploy never installs.';
|
|
227
|
+
if (command === undefined || environment === undefined)
|
|
228
|
+
throw new Error(refusal);
|
|
229
|
+
throw new Error(`${refusal} Run \`astrale-domain ${command} ${environment}\` without it, then install the ` +
|
|
230
|
+
`URL it prints with \`${installCommand()}\`.`);
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* `astrale-domain <adapter> <command> <environment> [--<option> <value>]... [--json]`: a provider
|
|
234
|
+
* command, routed once the Project is loaded to the adapter of that Environment. Anything that is
|
|
235
|
+
* not exactly an adapter name, a command and an Environment is no command at all (undefined).
|
|
236
|
+
*/
|
|
237
|
+
function parseAdapterCommand(adapter, args) {
|
|
238
|
+
if (!PROVIDER_NAME.test(adapter))
|
|
239
|
+
return undefined;
|
|
240
|
+
const positionals = [];
|
|
241
|
+
const options = {};
|
|
242
|
+
let json = false;
|
|
243
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
244
|
+
const argument = args[index];
|
|
245
|
+
if (argument === '--json') {
|
|
246
|
+
json = true;
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
if (!argument.startsWith('-')) {
|
|
250
|
+
positionals.push(argument);
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
const equals = argument.indexOf('=');
|
|
254
|
+
const name = argument.slice(2, equals === -1 ? undefined : equals);
|
|
255
|
+
if (!argument.startsWith('--') || !PROVIDER_NAME.test(name)) {
|
|
256
|
+
throw new Error(`Unknown flag "${argument}".`);
|
|
257
|
+
}
|
|
258
|
+
if (Object.hasOwn(options, name))
|
|
259
|
+
throw new Error(`--${name} is given twice.`);
|
|
260
|
+
options[name] =
|
|
261
|
+
equals === -1
|
|
262
|
+
? requiredValue(`--${name}`, args[++index])
|
|
263
|
+
: requiredValue(`--${name}`, argument.slice(equals + 1));
|
|
264
|
+
}
|
|
265
|
+
const [adapterCommand, env] = positionals;
|
|
266
|
+
if (positionals.length !== 2 || !PROVIDER_NAME.test(adapterCommand))
|
|
267
|
+
return undefined;
|
|
268
|
+
return {
|
|
269
|
+
command: 'adapter',
|
|
270
|
+
env: env,
|
|
271
|
+
adapter,
|
|
272
|
+
adapterCommand: adapterCommand,
|
|
273
|
+
options,
|
|
274
|
+
...(json ? { json: true } : {}),
|
|
275
|
+
};
|
|
276
|
+
}
|
|
147
277
|
function parseUpgrade(args) {
|
|
148
278
|
let channel = 'beta';
|
|
149
279
|
let check = false;
|
|
@@ -173,10 +303,3 @@ function requiredValue(flag, input) {
|
|
|
173
303
|
throw new Error(`${flag} needs a value.`);
|
|
174
304
|
return input;
|
|
175
305
|
}
|
|
176
|
-
function absoluteFilePath(flag, input) {
|
|
177
|
-
const value = requiredValue(flag, input);
|
|
178
|
-
if (!isAbsolute(value) || normalize(value) !== value) {
|
|
179
|
-
throw new Error(`${flag} needs a normalized absolute path, got "${value}"`);
|
|
180
|
-
}
|
|
181
|
-
return value;
|
|
182
|
-
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { Build, BuildDigest, BuildManifestV1, Bundle, Bundler, ResolvedRuntimeReference } from '../../deployment/index.js';
|
|
2
|
+
import type { LoadedProject } from './project.js';
|
|
3
|
+
/** `astrale-domain build --json`: the build digest of every distinct bundler of the Project. */
|
|
4
|
+
export interface BuildResultV1 {
|
|
5
|
+
readonly format: 'astrale.build-result';
|
|
6
|
+
readonly version: 1;
|
|
7
|
+
readonly origin: string;
|
|
8
|
+
readonly schema: {
|
|
9
|
+
readonly revision: BuildManifestV1['schema']['revision'];
|
|
10
|
+
};
|
|
11
|
+
readonly builds: readonly {
|
|
12
|
+
readonly bundler: {
|
|
13
|
+
readonly id: string;
|
|
14
|
+
readonly version: string;
|
|
15
|
+
};
|
|
16
|
+
readonly digest: BuildDigest;
|
|
17
|
+
}[];
|
|
18
|
+
}
|
|
19
|
+
/** One bundler a Project declares, with the Environments whose adapters declare it. */
|
|
20
|
+
export interface ProjectBundler {
|
|
21
|
+
readonly bundler: Bundler;
|
|
22
|
+
readonly environments: readonly {
|
|
23
|
+
readonly name: string;
|
|
24
|
+
/** `<adapter name>@<adapter version>` */
|
|
25
|
+
readonly adapter: string;
|
|
26
|
+
}[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The distinct bundlers of a Project's Environments, in declaration order. Environments whose
|
|
30
|
+
* adapters declare one bundler object share its build. Two copies of one bundler (two installed
|
|
31
|
+
* versions of its package) are two bundlers even under one id and version, since their code can
|
|
32
|
+
* differ.
|
|
33
|
+
*/
|
|
34
|
+
export declare function projectBundlers(project: LoadedProject): readonly ProjectBundler[];
|
|
35
|
+
/** Bundle one Build without any Environment and identify the bytes by their build digest. */
|
|
36
|
+
export declare function bundleBuild<const BuildValue extends Build>(input: {
|
|
37
|
+
readonly bundler: Bundler;
|
|
38
|
+
readonly projectDir: string;
|
|
39
|
+
readonly build: BuildValue;
|
|
40
|
+
readonly runtime: ResolvedRuntimeReference;
|
|
41
|
+
readonly signal: AbortSignal;
|
|
42
|
+
}): Promise<Bundle<BuildValue>>;
|
|
43
|
+
/**
|
|
44
|
+
* One entry per distinct build: copies of one bundler that produced the same bytes give one entry,
|
|
45
|
+
* copies that produced different bytes give one entry each.
|
|
46
|
+
*/
|
|
47
|
+
export declare function buildResult(build: Build, bundles: readonly Bundle[]): BuildResultV1;
|
|
48
|
+
/**
|
|
49
|
+
* A warning for every bundler id and version whose copies produced different bytes: each copy's
|
|
50
|
+
* Environments deploy their own build, so the Project has more than one build for that bundler.
|
|
51
|
+
*/
|
|
52
|
+
export declare function bundlerCopyWarnings(built: readonly {
|
|
53
|
+
readonly source: ProjectBundler;
|
|
54
|
+
readonly bundle: Bundle;
|
|
55
|
+
}[]): readonly string[];
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { verifyBundle } from '../../deployment/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* The distinct bundlers of a Project's Environments, in declaration order. Environments whose
|
|
4
|
+
* adapters declare one bundler object share its build. Two copies of one bundler (two installed
|
|
5
|
+
* versions of its package) are two bundlers even under one id and version, since their code can
|
|
6
|
+
* differ.
|
|
7
|
+
*/
|
|
8
|
+
export function projectBundlers(project) {
|
|
9
|
+
const bundlers = new Map();
|
|
10
|
+
for (const [name, environment] of Object.entries(project.environments)) {
|
|
11
|
+
const adapter = environment.deployment.adapter;
|
|
12
|
+
const environments = bundlers.get(adapter.bundler) ?? [];
|
|
13
|
+
environments.push(Object.freeze({ name, adapter: `${adapter.name}@${adapter.version}` }));
|
|
14
|
+
bundlers.set(adapter.bundler, environments);
|
|
15
|
+
}
|
|
16
|
+
return Object.freeze([...bundlers].map(([bundler, environments]) => Object.freeze({ bundler, environments: Object.freeze(environments) })));
|
|
17
|
+
}
|
|
18
|
+
/** Bundle one Build without any Environment and identify the bytes by their build digest. */
|
|
19
|
+
export async function bundleBuild(input) {
|
|
20
|
+
const source = await input.bundler.bundle({
|
|
21
|
+
projectDir: input.projectDir,
|
|
22
|
+
build: input.build,
|
|
23
|
+
runtime: input.runtime,
|
|
24
|
+
signal: input.signal,
|
|
25
|
+
});
|
|
26
|
+
return verifyBundle({
|
|
27
|
+
build: input.build,
|
|
28
|
+
runtime: input.runtime,
|
|
29
|
+
bundler: input.bundler,
|
|
30
|
+
source,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* One entry per distinct build: copies of one bundler that produced the same bytes give one entry,
|
|
35
|
+
* copies that produced different bytes give one entry each.
|
|
36
|
+
*/
|
|
37
|
+
export function buildResult(build, bundles) {
|
|
38
|
+
const builds = new Map();
|
|
39
|
+
for (const bundle of bundles) {
|
|
40
|
+
const { id, version } = bundle.manifest.bundler;
|
|
41
|
+
const key = JSON.stringify([id, version, bundle.digest]);
|
|
42
|
+
if (builds.has(key))
|
|
43
|
+
continue;
|
|
44
|
+
builds.set(key, Object.freeze({ bundler: Object.freeze({ id, version }), digest: bundle.digest }));
|
|
45
|
+
}
|
|
46
|
+
return Object.freeze({
|
|
47
|
+
format: 'astrale.build-result',
|
|
48
|
+
version: 1,
|
|
49
|
+
origin: build.schema.compiled.root.origin,
|
|
50
|
+
schema: Object.freeze({ revision: build.schema.compiled.root.revision }),
|
|
51
|
+
builds: Object.freeze([...builds.values()]),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* A warning for every bundler id and version whose copies produced different bytes: each copy's
|
|
56
|
+
* Environments deploy their own build, so the Project has more than one build for that bundler.
|
|
57
|
+
*/
|
|
58
|
+
export function bundlerCopyWarnings(built) {
|
|
59
|
+
const byBundler = new Map();
|
|
60
|
+
for (const { source, bundle } of built) {
|
|
61
|
+
const { id, version } = bundle.manifest.bundler;
|
|
62
|
+
const name = `${id}@${version}`;
|
|
63
|
+
const digests = byBundler.get(name) ?? new Map();
|
|
64
|
+
const environments = digests.get(bundle.digest) ?? [];
|
|
65
|
+
environments.push(...source.environments.map((environment) => `${environment.name}: ${environment.adapter}`));
|
|
66
|
+
digests.set(bundle.digest, environments);
|
|
67
|
+
byBundler.set(name, digests);
|
|
68
|
+
}
|
|
69
|
+
return Object.freeze([...byBundler]
|
|
70
|
+
.filter(([, digests]) => digests.size > 1)
|
|
71
|
+
.map(([name, digests]) => `Bundler ${name} gives ${digests.size} build digests for this tree: ` +
|
|
72
|
+
[...digests]
|
|
73
|
+
.map(([digest, environments]) => `${digest} (${environments.join(', ')})`)
|
|
74
|
+
.join('; ') +
|
|
75
|
+
'. These adapters load different copies of the bundler; align their versions ' +
|
|
76
|
+
'(`astrale-domain upgrade`) so that it gives one build.'));
|
|
77
|
+
}
|
|
@@ -10,6 +10,5 @@ export type BunOutcome = {
|
|
|
10
10
|
};
|
|
11
11
|
/** Re-enter the published executable under Bun only when authored TypeScript must be imported. */
|
|
12
12
|
export declare function runWithBun(executable: string, argv: readonly string[]): Promise<BunOutcome>;
|
|
13
|
-
export declare function isolateDevelopmentProcessGroup(argv: readonly string[], platform?: NodeJS.Platform): boolean;
|
|
14
13
|
/** Prefer the generated project's exact Bun package binary over an ambient executable or shim. */
|
|
15
14
|
export declare function resolveBunExecutable(cwd: string): string;
|
package/dist/tooling/cli/bun.js
CHANGED
|
@@ -14,10 +14,6 @@ export function runWithBun(executable, argv) {
|
|
|
14
14
|
return new Promise((resolve, reject) => {
|
|
15
15
|
const child = spawn(resolveBunExecutable(process.cwd()), [executable, ...argv], {
|
|
16
16
|
stdio: 'inherit',
|
|
17
|
-
// Keep a long-lived development runtime outside the launcher's terminal
|
|
18
|
-
// process group. The launcher receives Ctrl-C, forwards it exactly once,
|
|
19
|
-
// and remains alive until Bun finishes provider and Kernel cleanup.
|
|
20
|
-
detached: isolateDevelopmentProcessGroup(argv),
|
|
21
17
|
});
|
|
22
18
|
const handlers = FORWARDED_SIGNALS.map((signal) => [signal, () => child.kill(signal)]);
|
|
23
19
|
for (const [signal, handler] of handlers)
|
|
@@ -44,9 +40,6 @@ export function runWithBun(executable, argv) {
|
|
|
44
40
|
});
|
|
45
41
|
});
|
|
46
42
|
}
|
|
47
|
-
export function isolateDevelopmentProcessGroup(argv, platform = process.platform) {
|
|
48
|
-
return platform !== 'win32' && argv[0] === 'dev';
|
|
49
|
-
}
|
|
50
43
|
/** Prefer the generated project's exact Bun package binary over an ambient executable or shim. */
|
|
51
44
|
export function resolveBunExecutable(cwd) {
|
|
52
45
|
const projectRequire = createRequire(join(cwd, 'package.json'));
|