@astrale-os/sdk 0.6.0-beta.4 → 0.6.0-beta.41
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 +197 -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/attempts.d.ts +87 -0
- package/dist/execution/workflows/attempts.js +205 -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 +83 -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 +39 -0
- package/dist/execution/workflows/failure.js +143 -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 +81 -0
- package/dist/execution/workflows/options.js +158 -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 +23 -0
- package/dist/execution/workflows/run.js +365 -0
- package/dist/execution/workflows/steps.d.ts +48 -0
- package/dist/execution/workflows/steps.js +93 -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 +128 -0
- package/dist/testing/durable/engine.js +619 -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 +45 -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 +499 -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 +445 -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
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
2
|
import { propertyChain, resolveImportedSymbol, unwrap, visit, } from '../../adapters/typescript/index.js';
|
|
3
|
-
import {
|
|
4
|
-
import { ambiguity, calls, isForeignDomain, production, violation } from './shared.js';
|
|
3
|
+
import { domainFunctionRequirements, callableReference, callableSelector, declaredDomainDependencies, remoteCallableKey, } from './callable-requirements.js';
|
|
4
|
+
import { ambiguity, calls, contextPath, isForeignDomain, production, violation } from './shared.js';
|
|
5
5
|
export const dependencyRules = [
|
|
6
6
|
{
|
|
7
7
|
id: 'FNC-XDOM-DECLARED',
|
|
8
|
-
ruleRevision: '
|
|
8
|
+
ruleRevision: '72f960f87ac682695ea495925e31d15b9bd640b25d90ac1dcc6a1329a0be51b0',
|
|
9
9
|
evaluate(project) {
|
|
10
10
|
const evidence = [];
|
|
11
11
|
for (const file of production(project, 'functions')) {
|
|
@@ -19,15 +19,15 @@ export const dependencyRules = [
|
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
id: 'FNC-XDOM-REQ',
|
|
22
|
-
ruleRevision: '
|
|
22
|
+
ruleRevision: 'a4666ebb09b2027983edc2ffc6411692ade9877ee9c4f23c4b0a8d157a0cf385',
|
|
23
23
|
evaluate(project) {
|
|
24
24
|
const { targets, evidence } = observeInvocations(project);
|
|
25
|
-
const declared =
|
|
25
|
+
const declared = domainFunctionRequirements(project);
|
|
26
26
|
const results = evidence.filter(({ kind }) => kind === 'ambiguity');
|
|
27
27
|
for (const target of targets) {
|
|
28
28
|
if (declared.keys.has(remoteCallableKey(target)))
|
|
29
29
|
continue;
|
|
30
|
-
results.push((declared.indeterminate ? ambiguity : violation)(target.file, target.node, `Remote Domain callable ${target.module} ${target.selector.join('.')} lacks one provable exact
|
|
30
|
+
results.push((declared.indeterminate ? ambiguity : violation)(target.file, target.node, `Remote Domain callable ${target.module} ${target.selector.join('.')} lacks one provable exact Domain Function requirement.`));
|
|
31
31
|
}
|
|
32
32
|
return results;
|
|
33
33
|
},
|
|
@@ -70,16 +70,18 @@ function observeInvocations(project) {
|
|
|
70
70
|
let alias;
|
|
71
71
|
let selector;
|
|
72
72
|
if (path[0] === 'dependencies') {
|
|
73
|
-
if (path.length !== 4 || !['caller', 'self'
|
|
74
|
-
evidence.push(violation(file, node, 'Dependency invocation requires one direct alias and one explicit caller
|
|
73
|
+
if (path.length !== 4 || !['caller', 'self'].includes(path[2])) {
|
|
74
|
+
evidence.push(violation(file, node, 'Dependency invocation requires one direct alias and one explicit caller or self authority.'));
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
77
77
|
alias = path[1];
|
|
78
78
|
selector = selectedCallable(node.arguments[0]);
|
|
79
79
|
}
|
|
80
|
-
else if (path[0] === 'kernel'
|
|
81
|
-
(path.length
|
|
82
|
-
(
|
|
80
|
+
else if (path[0] === 'kernel') {
|
|
81
|
+
if (path.length !== 2 && (path.length !== 3 || !['caller', 'self'].includes(path[1]))) {
|
|
82
|
+
evidence.push(violation(file, node, 'Kernel invocation requires the default, caller, or self authority.'));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
83
85
|
const argument = node.arguments[0];
|
|
84
86
|
if (!argument) {
|
|
85
87
|
evidence.push(violation(file, node, 'Kernel invocation requires one canonical typed reference.'));
|
|
@@ -156,64 +158,3 @@ function selectedCallable(input) {
|
|
|
156
158
|
const chain = expression && propertyChain(expression);
|
|
157
159
|
return chain && chain[0] === parameter.text ? chain.slice(1) : undefined;
|
|
158
160
|
}
|
|
159
|
-
/** Resolve handler context bindings and one immutable local alias without following arbitrary helpers. */
|
|
160
|
-
function contextPath(input, run, aliases = 1) {
|
|
161
|
-
const expression = unwrap(input);
|
|
162
|
-
if (ts.isPropertyAccessExpression(expression)) {
|
|
163
|
-
const base = contextPath(expression.expression, run, aliases);
|
|
164
|
-
return base && [...base, expression.name.text];
|
|
165
|
-
}
|
|
166
|
-
if (ts.isElementAccessExpression(expression)) {
|
|
167
|
-
const base = contextPath(expression.expression, run, aliases);
|
|
168
|
-
return base && [...base, '[computed]'];
|
|
169
|
-
}
|
|
170
|
-
if (!ts.isIdentifier(expression))
|
|
171
|
-
return undefined;
|
|
172
|
-
let current = expression.parent;
|
|
173
|
-
while (current) {
|
|
174
|
-
if (ts.isFunctionLike(current)) {
|
|
175
|
-
for (const parameter of current.parameters) {
|
|
176
|
-
const path = bindingPath(parameter.name, expression.text);
|
|
177
|
-
if (path)
|
|
178
|
-
return current === run && parameter === run.parameters[0] ? path : undefined;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
if (ts.isBlock(current) || ts.isSourceFile(current)) {
|
|
182
|
-
for (const statement of current.statements) {
|
|
183
|
-
if (ts.isFunctionDeclaration(statement) && statement.name?.text === expression.text)
|
|
184
|
-
return undefined;
|
|
185
|
-
if (!ts.isVariableStatement(statement))
|
|
186
|
-
continue;
|
|
187
|
-
for (const declaration of statement.declarationList.declarations) {
|
|
188
|
-
const path = bindingPath(declaration.name, expression.text);
|
|
189
|
-
if (!path)
|
|
190
|
-
continue;
|
|
191
|
-
if (aliases === 0 ||
|
|
192
|
-
!declaration.initializer ||
|
|
193
|
-
declaration.end > expression.pos ||
|
|
194
|
-
!(statement.declarationList.flags & ts.NodeFlags.Const))
|
|
195
|
-
return undefined;
|
|
196
|
-
const base = contextPath(declaration.initializer, run, aliases - 1);
|
|
197
|
-
return base && [...base, ...path];
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
current = current.parent;
|
|
202
|
-
}
|
|
203
|
-
return undefined;
|
|
204
|
-
}
|
|
205
|
-
function bindingPath(name, identifier) {
|
|
206
|
-
if (ts.isIdentifier(name))
|
|
207
|
-
return name.text === identifier ? [] : undefined;
|
|
208
|
-
if (!ts.isObjectBindingPattern(name))
|
|
209
|
-
return undefined;
|
|
210
|
-
for (const element of name.elements) {
|
|
211
|
-
if (element.dotDotDotToken)
|
|
212
|
-
continue;
|
|
213
|
-
const nested = bindingPath(element.name, identifier);
|
|
214
|
-
const property = element.propertyName ?? (ts.isIdentifier(element.name) ? element.name : undefined);
|
|
215
|
-
if (nested && property && (ts.isIdentifier(property) || ts.isStringLiteral(property)))
|
|
216
|
-
return [property.text, ...nested];
|
|
217
|
-
}
|
|
218
|
-
return undefined;
|
|
219
|
-
}
|
|
@@ -506,7 +506,6 @@ export const globalRules = [
|
|
|
506
506
|
{ layer: 'queries', name: 'defineQuery', members: [undefined] },
|
|
507
507
|
{ layer: 'queries', name: 'defineCompositeQuery', members: [undefined] },
|
|
508
508
|
{ layer: 'mutations', name: 'defineMutation', members: [undefined] },
|
|
509
|
-
{ layer: 'migrations', name: 'defineMigration', members: [undefined] },
|
|
510
509
|
];
|
|
511
510
|
for (const definition of definitions) {
|
|
512
511
|
for (const file of production(project, definition.layer)) {
|
|
@@ -887,7 +886,7 @@ function isDomainDefinitionCall(file, call) {
|
|
|
887
886
|
const expression = unwrap(call.expression);
|
|
888
887
|
const direct = importedSymbol(file, expression);
|
|
889
888
|
if (direct?.module.startsWith('@astrale-os/sdk') &&
|
|
890
|
-
(direct.name === '
|
|
889
|
+
(direct.name === 'defineDomain' ||
|
|
891
890
|
direct.name === 'defineFrontend' ||
|
|
892
891
|
direct.name === 'defineRuntime' ||
|
|
893
892
|
direct.name === 'requirements')) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
2
|
import { isLocalAlias } from '../../../../platform/graph/alias.js';
|
|
3
|
-
import { expressionType, importedSymbol, propertyChain, staticText, unwrap, visit, } from '../../adapters/typescript/index.js';
|
|
3
|
+
import { expressionType, importedSymbol, propertyChain, staticText, unwrap, visit, visitOwnBody, } from '../../adapters/typescript/index.js';
|
|
4
4
|
import { ambiguity, callback, calls, DSL_MODULES, definitionOriginAmbiguity, definitionObjects, domainProjectorEvidence, forbiddenIoImport, hasForbiddenGlobalCall, production, violation, } from './shared.js';
|
|
5
5
|
import { stateMachineIdentity, statePropertyIdentity } from './state-machine.js';
|
|
6
6
|
const FORBIDDEN_LAYERS = new Set(['integrations', 'functions', 'providers', 'queries']);
|
|
@@ -8,7 +8,7 @@ const FORBIDDEN_CALLS = new Set(['invoke', 'query', 'retry', 'run', 'submit']);
|
|
|
8
8
|
export const mutationRules = [
|
|
9
9
|
{
|
|
10
10
|
id: 'MUT-PLAN-REQ',
|
|
11
|
-
ruleRevision: '
|
|
11
|
+
ruleRevision: '73f37ffa6b2fa4a1f236749696404d6b1fb399f1ea0e3947d8ac4df7073b3ceb',
|
|
12
12
|
evaluate(project) {
|
|
13
13
|
const evidence = [];
|
|
14
14
|
const targets = [];
|
|
@@ -30,7 +30,7 @@ export const mutationRules = [
|
|
|
30
30
|
targets.push({ file, node: selectedClass, ...target, operation: classOperation });
|
|
31
31
|
}
|
|
32
32
|
else if (selectedClass && expressionSelectsDependency(selectedClass)) {
|
|
33
|
-
evidence.push(ambiguity(file, selectedClass, 'Mutation plan selects a foreign Class dynamically, so its
|
|
33
|
+
evidence.push(ambiguity(file, selectedClass, 'Mutation plan selects a foreign Class dynamically, so its Domain requirement cannot be proven.'));
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
36
|
}
|
|
@@ -46,21 +46,21 @@ export const mutationRules = [
|
|
|
46
46
|
}
|
|
47
47
|
if (targets.length === 0 && identityCalls.length === 0)
|
|
48
48
|
return evidence;
|
|
49
|
-
const requirements =
|
|
49
|
+
const requirements = domainPlanRequirements(project);
|
|
50
50
|
for (const target of targets) {
|
|
51
51
|
const key = classRequirementKey(target.dependency, target.className, target.operation);
|
|
52
52
|
if (requirements.classes.has(key))
|
|
53
53
|
continue;
|
|
54
54
|
evidence.push(requirements.indeterminate
|
|
55
|
-
? ambiguity(target.file, target.node, `
|
|
56
|
-
: violation(target.file, target.node, `Mutation plan dependency ${target.dependency} Class ${target.className} lacks
|
|
55
|
+
? ambiguity(target.file, target.node, `Domain Class requirements are opaque for dependency ${target.dependency} Class ${target.className}.`)
|
|
56
|
+
: violation(target.file, target.node, `Mutation plan dependency ${target.dependency} Class ${target.className} lacks Domain ${target.operation} authority.`));
|
|
57
57
|
}
|
|
58
58
|
for (const invocation of identityCalls) {
|
|
59
59
|
if (!requirements.functions.has(invocation.syscall)) {
|
|
60
60
|
const name = invocation.syscall === 'register' ? 'Register' : 'Provision';
|
|
61
61
|
evidence.push(requirements.indeterminate
|
|
62
|
-
? ambiguity(invocation.file, invocation.node, `
|
|
63
|
-
: violation(invocation.file, invocation.node, `Kernel ${name} invocation lacks the exact
|
|
62
|
+
? ambiguity(invocation.file, invocation.node, `Domain Function requirements are opaque for Kernel ${name}.`)
|
|
63
|
+
: violation(invocation.file, invocation.node, `Kernel ${name} invocation lacks the exact Domain Function requirement.`));
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
return evidence;
|
|
@@ -748,24 +748,24 @@ function parameterProperty(use, sourceName) {
|
|
|
748
748
|
const property = element.propertyName ?? element.name;
|
|
749
749
|
return (ts.isIdentifier(property) || ts.isStringLiteral(property)) && property.text === sourceName;
|
|
750
750
|
}
|
|
751
|
-
function
|
|
752
|
-
const
|
|
753
|
-
const file =
|
|
751
|
+
function domainPlanRequirements(project) {
|
|
752
|
+
const domainPath = project.policy.rootFiles.find(({ id }) => id === 'domain')?.sourcePath;
|
|
753
|
+
const file = domainPath && project.filesByPath.get(domainPath);
|
|
754
754
|
if (!file)
|
|
755
755
|
return emptyPlanRequirements(true);
|
|
756
|
-
const
|
|
756
|
+
const definitions = [];
|
|
757
757
|
visit(file.source, (node) => {
|
|
758
758
|
if (!ts.isCallExpression(node))
|
|
759
759
|
return;
|
|
760
760
|
const symbol = importedSymbol(file, node.expression);
|
|
761
|
-
if (symbol?.name === '
|
|
762
|
-
(symbol.module === '@astrale-os/sdk' || symbol.module === '@astrale-os/sdk/
|
|
763
|
-
|
|
761
|
+
if (symbol?.name === 'defineDomain' &&
|
|
762
|
+
(symbol.module === '@astrale-os/sdk' || symbol.module === '@astrale-os/sdk/domain')) {
|
|
763
|
+
definitions.push(node);
|
|
764
764
|
}
|
|
765
765
|
});
|
|
766
|
-
if (
|
|
766
|
+
if (definitions.length !== 1)
|
|
767
767
|
return emptyPlanRequirements(true);
|
|
768
|
-
const input = staticObject(
|
|
768
|
+
const input = staticObject(definitions[0].arguments[0]);
|
|
769
769
|
const requirementValue = input && assignedValue(input, 'requirements');
|
|
770
770
|
if (requirementValue === undefined)
|
|
771
771
|
return emptyPlanRequirements(false);
|
|
@@ -774,7 +774,7 @@ function applicationPlanRequirements(project) {
|
|
|
774
774
|
if (!requirementCall ||
|
|
775
775
|
requirementSymbol?.name !== 'requirements' ||
|
|
776
776
|
(requirementSymbol.module !== '@astrale-os/sdk' &&
|
|
777
|
-
requirementSymbol.module !== '@astrale-os/sdk/
|
|
777
|
+
requirementSymbol.module !== '@astrale-os/sdk/domain')) {
|
|
778
778
|
return emptyPlanRequirements(true);
|
|
779
779
|
}
|
|
780
780
|
const definition = staticObject(requirementCall.arguments[0]);
|
|
@@ -1399,17 +1399,6 @@ function referencesIdentifier(arguments_, name) {
|
|
|
1399
1399
|
}
|
|
1400
1400
|
return found;
|
|
1401
1401
|
}
|
|
1402
|
-
function visitOwnBody(fn, callback) {
|
|
1403
|
-
if (!fn.body)
|
|
1404
|
-
return;
|
|
1405
|
-
const walk = (node) => {
|
|
1406
|
-
callback(node);
|
|
1407
|
-
if (node !== fn.body && ts.isFunctionLike(node))
|
|
1408
|
-
return;
|
|
1409
|
-
node.forEachChild(walk);
|
|
1410
|
-
};
|
|
1411
|
-
walk(fn.body);
|
|
1412
|
-
}
|
|
1413
1402
|
function returnedValues(fn) {
|
|
1414
1403
|
if (!fn.body)
|
|
1415
1404
|
return 0;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
2
|
import { propertyChain, resolveImportedSymbol, resolveProjectImport, unwrap, visit, } from '../../adapters/typescript/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { domainFunctionRequirements, callableReference, callableSelector, externalFacade, lexicalConstInitializer, remoteCallableKey, } from './callable-requirements.js';
|
|
4
4
|
import { ambiguity, production, violation } from './shared.js';
|
|
5
5
|
const LOCAL_DOMAIN_LAYERS = new Set([
|
|
6
6
|
'functions',
|
|
@@ -54,7 +54,7 @@ export const providerRules = [
|
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
id: 'PRV-XDOM-REQ',
|
|
57
|
-
ruleRevision: '
|
|
57
|
+
ruleRevision: 'b3fc6c409374b924b1b06c17f6d3702ec9d1e9e7a286bd955a151d0bf12c5b24',
|
|
58
58
|
evaluate(project) {
|
|
59
59
|
const targets = [];
|
|
60
60
|
const evidence = [];
|
|
@@ -71,14 +71,14 @@ export const providerRules = [
|
|
|
71
71
|
}
|
|
72
72
|
if (targets.length === 0)
|
|
73
73
|
return evidence;
|
|
74
|
-
const declared =
|
|
74
|
+
const declared = domainFunctionRequirements(project);
|
|
75
75
|
for (const target of targets) {
|
|
76
76
|
if (declared.keys.has(remoteCallableKey(target)))
|
|
77
77
|
continue;
|
|
78
78
|
const selector = target.selector.join('.');
|
|
79
79
|
evidence.push(declared.indeterminate
|
|
80
|
-
? ambiguity(target.file, target.node, `
|
|
81
|
-
: violation(target.file, target.node, `Remote Domain callable ${target.module} ${selector} lacks one exact
|
|
80
|
+
? ambiguity(target.file, target.node, `Domain Function requirements are opaque for ${target.module} ${selector}.`)
|
|
81
|
+
: violation(target.file, target.node, `Remote Domain callable ${target.module} ${selector} lacks one exact Domain Function requirement.`));
|
|
82
82
|
}
|
|
83
83
|
return evidence;
|
|
84
84
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
import { importedSymbol, observeQueryDefinitions, propertyChain, queryCollectionKind, unwrap, visit, } from '../../adapters/typescript/index.js';
|
|
2
|
+
import { bindingContains, importedSymbol, observeQueryDefinitions, propertyChain, queryCollectionKind, unwrap, visit, visitOwnBody, } from '../../adapters/typescript/index.js';
|
|
3
3
|
import { decideCanonicalQuery, decideSingleQuery } from '../../analysis/query/index.js';
|
|
4
4
|
import { ambiguity, callback, definitionOriginAmbiguity, definitionObjects, domainProjectorEvidence, propertyExpression, production, returnedExpressions, staticId, violation, } from './shared.js';
|
|
5
5
|
import { sourceEvidence } from './verifier.js';
|
|
@@ -1130,22 +1130,6 @@ function enclosingFunction(node) {
|
|
|
1130
1130
|
current = current.parent;
|
|
1131
1131
|
return current;
|
|
1132
1132
|
}
|
|
1133
|
-
function bindingContains(binding, name) {
|
|
1134
|
-
if (ts.isIdentifier(binding))
|
|
1135
|
-
return binding.text === name;
|
|
1136
|
-
return binding.elements.some((element) => !ts.isOmittedExpression(element) && bindingContains(element.name, name));
|
|
1137
|
-
}
|
|
1138
|
-
function visitOwnBody(fn, callback) {
|
|
1139
|
-
if (!fn.body)
|
|
1140
|
-
return;
|
|
1141
|
-
const walk = (node) => {
|
|
1142
|
-
callback(node);
|
|
1143
|
-
if (node !== fn.body && ts.isFunctionLike(node))
|
|
1144
|
-
return;
|
|
1145
|
-
node.forEachChild(walk);
|
|
1146
|
-
};
|
|
1147
|
-
walk(fn.body);
|
|
1148
|
-
}
|
|
1149
1133
|
function isCompositeLeaf(expression, file) {
|
|
1150
1134
|
if (!expression || !ts.isIdentifier(unwrap(expression)))
|
|
1151
1135
|
return false;
|
|
@@ -25,20 +25,28 @@ export declare function domainProjectorEvidence(file: SourceFile, importedName:
|
|
|
25
25
|
export declare function violation(file: SourceFile, node: ts.Node, evidence: string): SourceRuleEvidence;
|
|
26
26
|
export declare function ambiguity(file: SourceFile, node: ts.Node, evidence: string): SourceRuleEvidence;
|
|
27
27
|
export declare function localTarget(project: SourceProject, file: SourceFile, sourceImport: SourceImport): SourceFile | undefined;
|
|
28
|
-
export declare function importedLayer(project: SourceProject, file: SourceFile, sourceImport: SourceImport): string | undefined;
|
|
29
28
|
export declare function isForeignDomain(specifier: string): boolean;
|
|
30
29
|
export declare function packageRoot(specifier: string): string;
|
|
31
30
|
export declare function isDeepPackageImport(specifier: string): boolean;
|
|
32
31
|
export declare function propertyExpression(object: ts.ObjectLiteralExpression | undefined, name: string): ts.Expression | undefined;
|
|
33
32
|
export declare function callback(object: ts.ObjectLiteralExpression | undefined, name: string): ts.FunctionLikeDeclaration | undefined;
|
|
34
33
|
export declare function returnedExpressions(fn: ts.FunctionLikeDeclaration): ts.Expression[];
|
|
35
|
-
export declare function callChain(expression: ts.Expression): readonly string[] | undefined;
|
|
36
34
|
export declare function staticId(expression: ts.Expression | undefined): string | undefined;
|
|
37
35
|
export declare function hasForbiddenGlobalCall(file: SourceFile): Array<{
|
|
38
36
|
node: ts.Node;
|
|
39
37
|
name: string;
|
|
40
38
|
}>;
|
|
39
|
+
/** The global a call reaches, as `name(…)` with no import or local binding, or `globalThis.name(…)`. */
|
|
40
|
+
export declare function globalCallName(file: SourceFile, node: ts.CallExpression): string | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* The member path an expression reads from a global: `Date.now` when no import or local binding
|
|
43
|
+
* names `Date`, the same through `globalThis.Date.now`.
|
|
44
|
+
*/
|
|
45
|
+
export declare function globalPath(file: SourceFile, input: ts.Expression): readonly string[] | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Resolve the path of `input` from the first parameter of `run`, or of a durable Step callback in
|
|
48
|
+
* it, through one immutable local alias, without following arbitrary helpers.
|
|
49
|
+
*/
|
|
50
|
+
export declare function contextPath(input: ts.Expression, run: ts.FunctionLikeDeclaration, aliases?: number): readonly string[] | undefined;
|
|
41
51
|
export declare function isLocallyBoundIdentifier(node: ts.Identifier): boolean;
|
|
42
52
|
export declare function forbiddenIoImport(specifier: string): boolean;
|
|
43
|
-
export declare function variableName(call: ts.CallExpression): string | undefined;
|
|
44
|
-
export declare function allPropertyNames(object: ts.ObjectLiteralExpression): string[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
import { importedSymbol, location, objectProperty, propertyChain, resolveImportedSymbol, resolveProjectImport, staticText, unwrap, visit, } from '../../adapters/typescript/index.js';
|
|
2
|
+
import { bindingContains, importedSymbol, location, objectProperty, propertyChain, resolveImportedSymbol, resolveProjectImport, staticText, unwrap, visit, } from '../../adapters/typescript/index.js';
|
|
3
3
|
export const SDK_MODULES = new Set([
|
|
4
4
|
'@astrale-os/sdk',
|
|
5
5
|
'@astrale-os/sdk/action',
|
|
@@ -159,9 +159,6 @@ export function ambiguity(file, node, evidence) {
|
|
|
159
159
|
export function localTarget(project, file, sourceImport) {
|
|
160
160
|
return resolveProjectImport(project, file, sourceImport.specifier);
|
|
161
161
|
}
|
|
162
|
-
export function importedLayer(project, file, sourceImport) {
|
|
163
|
-
return localTarget(project, file, sourceImport)?.layer;
|
|
164
|
-
}
|
|
165
162
|
export function isForeignDomain(specifier) {
|
|
166
163
|
if (specifier.startsWith('@astrale-domains/'))
|
|
167
164
|
return true;
|
|
@@ -209,14 +206,6 @@ export function returnedExpressions(fn) {
|
|
|
209
206
|
fn.body.forEachChild(walk);
|
|
210
207
|
return expressions;
|
|
211
208
|
}
|
|
212
|
-
export function callChain(expression) {
|
|
213
|
-
const target = unwrap(expression);
|
|
214
|
-
if (ts.isCallExpression(target))
|
|
215
|
-
return propertyChain(target.expression);
|
|
216
|
-
if (ts.isPropertyAccessExpression(target))
|
|
217
|
-
return propertyChain(target);
|
|
218
|
-
return undefined;
|
|
219
|
-
}
|
|
220
209
|
export function staticId(expression) {
|
|
221
210
|
return staticText(expression);
|
|
222
211
|
}
|
|
@@ -226,22 +215,109 @@ export function hasForbiddenGlobalCall(file) {
|
|
|
226
215
|
visit(file.source, (node) => {
|
|
227
216
|
if (!ts.isCallExpression(node))
|
|
228
217
|
return;
|
|
229
|
-
const
|
|
230
|
-
if (
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
218
|
+
const name = globalCallName(file, node);
|
|
219
|
+
if (name !== undefined && forbidden.has(name))
|
|
220
|
+
result.push({ node, name });
|
|
221
|
+
});
|
|
222
|
+
return result;
|
|
223
|
+
}
|
|
224
|
+
/** The global a call reaches, as `name(…)` with no import or local binding, or `globalThis.name(…)`. */
|
|
225
|
+
export function globalCallName(file, node) {
|
|
226
|
+
const path = globalPath(file, node.expression);
|
|
227
|
+
return path?.length === 1 ? path[0] : undefined;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* The member path an expression reads from a global: `Date.now` when no import or local binding
|
|
231
|
+
* names `Date`, the same through `globalThis.Date.now`.
|
|
232
|
+
*/
|
|
233
|
+
export function globalPath(file, input) {
|
|
234
|
+
const expression = unwrap(input);
|
|
235
|
+
const chain = propertyChain(expression);
|
|
236
|
+
if (!chain)
|
|
237
|
+
return undefined;
|
|
238
|
+
let root = expression;
|
|
239
|
+
while (ts.isPropertyAccessExpression(root))
|
|
240
|
+
root = unwrap(root.expression);
|
|
241
|
+
if (!ts.isIdentifier(root) || isLocallyBound(root, root.text))
|
|
242
|
+
return undefined;
|
|
243
|
+
if (chain[0] === 'globalThis')
|
|
244
|
+
return chain.length > 1 ? chain.slice(1) : undefined;
|
|
245
|
+
return importedSymbol(file, root) ? undefined : chain;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Resolve the path of `input` from the first parameter of `run`, or of a durable Step callback in
|
|
249
|
+
* it, through one immutable local alias, without following arbitrary helpers.
|
|
250
|
+
*/
|
|
251
|
+
export function contextPath(input, run, aliases = 1) {
|
|
252
|
+
const expression = unwrap(input);
|
|
253
|
+
if (ts.isPropertyAccessExpression(expression)) {
|
|
254
|
+
const base = contextPath(expression.expression, run, aliases);
|
|
255
|
+
return base && [...base, expression.name.text];
|
|
256
|
+
}
|
|
257
|
+
if (ts.isElementAccessExpression(expression)) {
|
|
258
|
+
const base = contextPath(expression.expression, run, aliases);
|
|
259
|
+
return base && [...base, '[computed]'];
|
|
260
|
+
}
|
|
261
|
+
if (!ts.isIdentifier(expression))
|
|
262
|
+
return undefined;
|
|
263
|
+
let current = expression.parent;
|
|
264
|
+
while (current) {
|
|
265
|
+
if (ts.isFunctionLike(current)) {
|
|
266
|
+
for (const parameter of current.parameters) {
|
|
267
|
+
const path = bindingPath(parameter.name, expression.text);
|
|
268
|
+
if (path)
|
|
269
|
+
return parameter === current.parameters[0] &&
|
|
270
|
+
(current === run || stepCallback(current, run))
|
|
271
|
+
? path
|
|
272
|
+
: undefined;
|
|
236
273
|
}
|
|
237
|
-
return;
|
|
238
274
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
275
|
+
if (ts.isBlock(current) || ts.isSourceFile(current)) {
|
|
276
|
+
for (const statement of current.statements) {
|
|
277
|
+
if (ts.isFunctionDeclaration(statement) && statement.name?.text === expression.text)
|
|
278
|
+
return undefined;
|
|
279
|
+
if (!ts.isVariableStatement(statement))
|
|
280
|
+
continue;
|
|
281
|
+
for (const declaration of statement.declarationList.declarations) {
|
|
282
|
+
const path = bindingPath(declaration.name, expression.text);
|
|
283
|
+
if (!path)
|
|
284
|
+
continue;
|
|
285
|
+
if (aliases === 0 ||
|
|
286
|
+
!declaration.initializer ||
|
|
287
|
+
declaration.end > expression.pos ||
|
|
288
|
+
!(statement.declarationList.flags & ts.NodeFlags.Const))
|
|
289
|
+
return undefined;
|
|
290
|
+
const base = contextPath(declaration.initializer, run, aliases - 1);
|
|
291
|
+
return base && [...base, ...path];
|
|
292
|
+
}
|
|
293
|
+
}
|
|
242
294
|
}
|
|
243
|
-
|
|
244
|
-
|
|
295
|
+
current = current.parent;
|
|
296
|
+
}
|
|
297
|
+
return undefined;
|
|
298
|
+
}
|
|
299
|
+
/** A durable Step callback receives the handler's capabilities under the same names. */
|
|
300
|
+
function stepCallback(callback, run) {
|
|
301
|
+
const call = callback.parent;
|
|
302
|
+
if (!ts.isCallExpression(call) || call.arguments[1] !== callback)
|
|
303
|
+
return false;
|
|
304
|
+
const callee = contextPath(call.expression, run, 0);
|
|
305
|
+
return callee?.length === 2 && callee[0] === 'step' && callee[1] === 'run';
|
|
306
|
+
}
|
|
307
|
+
function bindingPath(name, identifier) {
|
|
308
|
+
if (ts.isIdentifier(name))
|
|
309
|
+
return name.text === identifier ? [] : undefined;
|
|
310
|
+
if (!ts.isObjectBindingPattern(name))
|
|
311
|
+
return undefined;
|
|
312
|
+
for (const element of name.elements) {
|
|
313
|
+
if (element.dotDotDotToken)
|
|
314
|
+
continue;
|
|
315
|
+
const nested = bindingPath(element.name, identifier);
|
|
316
|
+
const property = element.propertyName ?? (ts.isIdentifier(element.name) ? element.name : undefined);
|
|
317
|
+
if (nested && property && (ts.isIdentifier(property) || ts.isStringLiteral(property)))
|
|
318
|
+
return [property.text, ...nested];
|
|
319
|
+
}
|
|
320
|
+
return undefined;
|
|
245
321
|
}
|
|
246
322
|
export function isLocallyBoundIdentifier(node) {
|
|
247
323
|
return isLocallyBound(node, node.text);
|
|
@@ -251,22 +327,6 @@ export function forbiddenIoImport(specifier) {
|
|
|
251
327
|
!specifier.startsWith('node:assert') &&
|
|
252
328
|
!specifier.startsWith('node:util/types'));
|
|
253
329
|
}
|
|
254
|
-
export function variableName(call) {
|
|
255
|
-
const parent = call.parent;
|
|
256
|
-
return ts.isVariableDeclaration(parent) && ts.isIdentifier(parent.name)
|
|
257
|
-
? parent.name.text
|
|
258
|
-
: undefined;
|
|
259
|
-
}
|
|
260
|
-
export function allPropertyNames(object) {
|
|
261
|
-
return object.properties.flatMap((property) => {
|
|
262
|
-
if (!('name' in property) || !property.name)
|
|
263
|
-
return [];
|
|
264
|
-
const name = ts.isIdentifier(property.name) || ts.isStringLiteral(property.name)
|
|
265
|
-
? property.name.text
|
|
266
|
-
: undefined;
|
|
267
|
-
return name ? [name] : [];
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
330
|
function isLocallyBound(node, name) {
|
|
271
331
|
let current = node.parent;
|
|
272
332
|
while (current) {
|
|
@@ -312,8 +372,3 @@ function statementDeclares(statement, name) {
|
|
|
312
372
|
}
|
|
313
373
|
return false;
|
|
314
374
|
}
|
|
315
|
-
function bindingContains(binding, name) {
|
|
316
|
-
if (ts.isIdentifier(binding))
|
|
317
|
-
return binding.text === name;
|
|
318
|
-
return binding.elements.some((element) => ts.isOmittedExpression(element) ? false : bindingContains(element.name, name));
|
|
319
|
-
}
|
|
@@ -2,7 +2,6 @@ import { actionRules } from './actions.js';
|
|
|
2
2
|
import { dependencyRules } from './dependencies.js';
|
|
3
3
|
import { globalRules } from './global.js';
|
|
4
4
|
import { integrationRules } from './integrations.js';
|
|
5
|
-
import { migrationRules } from './migrations.js';
|
|
6
5
|
import { mutationRules } from './mutations.js';
|
|
7
6
|
import { providerRules } from './providers.js';
|
|
8
7
|
import { queryRules } from './queries.js';
|
|
@@ -23,7 +22,6 @@ export const sourceRuleVerifiers = Object.freeze([
|
|
|
23
22
|
...mutationRules,
|
|
24
23
|
...workflowRules,
|
|
25
24
|
...dependencyRules,
|
|
26
|
-
...migrationRules,
|
|
27
25
|
...integrationRules,
|
|
28
26
|
...actionRules,
|
|
29
27
|
...providerRules,
|
|
@@ -11,7 +11,7 @@ const DECLARATIONS = [
|
|
|
11
11
|
];
|
|
12
12
|
const FRONTEND_MODULES = new Set([
|
|
13
13
|
'@astrale-os/sdk',
|
|
14
|
-
'@astrale-os/sdk/
|
|
14
|
+
'@astrale-os/sdk/domain',
|
|
15
15
|
'@astrale-os/sdk/view',
|
|
16
16
|
]);
|
|
17
17
|
export const viewRules = [
|
|
@@ -48,7 +48,7 @@ export const viewRules = [
|
|
|
48
48
|
evidence.push(uncertain);
|
|
49
49
|
continue;
|
|
50
50
|
}
|
|
51
|
-
evidence.push(violation(file, definition.call, 'Views composes an SDK frontend; move defineFrontend beside
|
|
51
|
+
evidence.push(violation(file, definition.call, 'Views composes an SDK frontend; move defineFrontend beside defineDomain in domain.ts.'));
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
return evidence;
|