@ankhorage/contracts 26.2.0 → 26.2.2
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/CHANGELOG.md +12 -0
- package/README.md +1 -1
- package/dist/appManifest/bindings.js +1 -1
- package/dist/appManifest/bindings.js.map +1 -1
- package/dist/appManifest/constants.js.map +1 -1
- package/dist/appManifest/dataSources.js +2 -2
- package/dist/appManifest/dataSources.js.map +1 -1
- package/dist/appManifest/isAppManifest.d.ts +1 -1
- package/dist/appManifest/isAppManifest.d.ts.map +1 -1
- package/dist/appManifest/isAppManifest.js +8 -8
- package/dist/appManifest/isAppManifest.js.map +1 -1
- package/dist/appManifest/isAppStateSpec.d.ts +1 -1
- package/dist/appManifest/isAppStateSpec.d.ts.map +1 -1
- package/dist/appManifest/isAppStateSpec.js.map +1 -1
- package/dist/appManifest/isManifestValue.js +1 -1
- package/dist/appManifest/isManifestValue.js.map +1 -1
- package/dist/appManifest/media.d.ts +1 -1
- package/dist/appManifest/media.d.ts.map +1 -1
- package/dist/appManifest/media.js +1 -1
- package/dist/appManifest/media.js.map +1 -1
- package/dist/appManifest/navigator.d.ts +1 -1
- package/dist/appManifest/navigator.d.ts.map +1 -1
- package/dist/appManifest/navigator.js +3 -3
- package/dist/appManifest/navigator.js.map +1 -1
- package/dist/appManifest/navigatorOptions.js +1 -1
- package/dist/appManifest/navigatorOptions.js.map +1 -1
- package/dist/appManifest/parseAppManifest.d.ts +1 -1
- package/dist/appManifest/parseAppManifest.d.ts.map +1 -1
- package/dist/appManifest/parseAppManifest.js +1 -1
- package/dist/appManifest/parseAppManifest.js.map +1 -1
- package/dist/appManifest/screens.d.ts +2 -2
- package/dist/appManifest/screens.d.ts.map +1 -1
- package/dist/appManifest/screens.js +6 -6
- package/dist/appManifest/screens.js.map +1 -1
- package/dist/appManifest.d.ts +4 -4
- package/dist/appManifest.d.ts.map +1 -1
- package/dist/appManifest.js +2 -2
- package/dist/appManifest.js.map +1 -1
- package/dist/auth.d.ts +5 -5
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js.map +1 -1
- package/dist/bindings.d.ts +3 -3
- package/dist/bindings.d.ts.map +1 -1
- package/dist/bindings.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/data/apis.d.ts +6 -6
- package/dist/data/apis.d.ts.map +1 -1
- package/dist/data/apis.js.map +1 -1
- package/dist/data/diagnostics.d.ts +1 -1
- package/dist/data/diagnostics.d.ts.map +1 -1
- package/dist/data/diagnostics.js.map +1 -1
- package/dist/data/endpoints.d.ts +5 -5
- package/dist/data/endpoints.d.ts.map +1 -1
- package/dist/data/endpoints.js.map +1 -1
- package/dist/data/index.d.ts +10 -10
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +10 -10
- package/dist/data/index.js.map +1 -1
- package/dist/data/isApiDefinitionRegistry.d.ts +1 -1
- package/dist/data/isApiDefinitionRegistry.d.ts.map +1 -1
- package/dist/data/isApiDefinitionRegistry.js +2 -2
- package/dist/data/isApiDefinitionRegistry.js.map +1 -1
- package/dist/data/operations.d.ts +5 -5
- package/dist/data/operations.d.ts.map +1 -1
- package/dist/data/operations.js.map +1 -1
- package/dist/data/refs.d.ts +2 -2
- package/dist/data/refs.d.ts.map +1 -1
- package/dist/data/refs.js.map +1 -1
- package/dist/data/schemas.d.ts +3 -3
- package/dist/data/schemas.d.ts.map +1 -1
- package/dist/data/schemas.js.map +1 -1
- package/dist/data/sources.d.ts +6 -6
- package/dist/data/sources.d.ts.map +1 -1
- package/dist/data/sources.js.map +1 -1
- package/dist/data/values.d.ts +1 -1
- package/dist/data/values.d.ts.map +1 -1
- package/dist/data/values.js.map +1 -1
- package/dist/icon.js +1 -1
- package/dist/icon.js.map +1 -1
- package/dist/index.d.ts +24 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -24
- package/dist/index.js.map +1 -1
- package/dist/infra/isInfraAdapterDescriptor.d.ts +1 -1
- package/dist/infra/isInfraAdapterDescriptor.d.ts.map +1 -1
- package/dist/infra/isInfraAdapterDescriptor.js +2 -2
- package/dist/infra/isInfraAdapterDescriptor.js.map +1 -1
- package/dist/infra/isInfraAuthSpec.d.ts +1 -1
- package/dist/infra/isInfraAuthSpec.d.ts.map +1 -1
- package/dist/infra/isInfraAuthSpec.js +4 -4
- package/dist/infra/isInfraAuthSpec.js.map +1 -1
- package/dist/infra/isInfraCredentialRef.js +1 -1
- package/dist/infra/isInfraCredentialRef.js.map +1 -1
- package/dist/infra/isInfraDeploymentSpec.d.ts +1 -1
- package/dist/infra/isInfraDeploymentSpec.d.ts.map +1 -1
- package/dist/infra/isInfraDeploymentSpec.js +4 -4
- package/dist/infra/isInfraDeploymentSpec.js.map +1 -1
- package/dist/infra/isInfraEnvironmentSpec.d.ts +1 -1
- package/dist/infra/isInfraEnvironmentSpec.d.ts.map +1 -1
- package/dist/infra/isInfraEnvironmentSpec.js +8 -8
- package/dist/infra/isInfraEnvironmentSpec.js.map +1 -1
- package/dist/infra/isInfraManifest.d.ts +1 -1
- package/dist/infra/isInfraManifest.d.ts.map +1 -1
- package/dist/infra/isInfraManifest.js +5 -5
- package/dist/infra/isInfraManifest.js.map +1 -1
- package/dist/infra/isInfraWorkloadHealth.js +2 -2
- package/dist/infra/isInfraWorkloadHealth.js.map +1 -1
- package/dist/infra/isInfraWorkloadSpec.d.ts +1 -1
- package/dist/infra/isInfraWorkloadSpec.d.ts.map +1 -1
- package/dist/infra/isInfraWorkloadSpec.js +5 -5
- package/dist/infra/isInfraWorkloadSpec.js.map +1 -1
- package/dist/infra/isInfraWorkloadValue.js +3 -3
- package/dist/infra/isInfraWorkloadValue.js.map +1 -1
- package/dist/infra/parseInfraManifest.d.ts +2 -2
- package/dist/infra/parseInfraManifest.d.ts.map +1 -1
- package/dist/infra/parseInfraManifest.js +1 -1
- package/dist/infra/parseInfraManifest.js.map +1 -1
- package/dist/infra/validateInfraAdapterSelection.d.ts +3 -3
- package/dist/infra/validateInfraAdapterSelection.d.ts.map +1 -1
- package/dist/infra/validateInfraAdapterSelection.js +2 -2
- package/dist/infra/validateInfraAdapterSelection.js.map +1 -1
- package/dist/infra.d.ts +15 -15
- package/dist/infra.d.ts.map +1 -1
- package/dist/infra.js +9 -9
- package/dist/infra.js.map +1 -1
- package/dist/infraCatalog.d.ts +8 -8
- package/dist/infraCatalog.js +8 -8
- package/dist/infraCatalog.js.map +1 -1
- package/dist/media.d.ts +1 -1
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js.map +1 -1
- package/dist/navigator/catalog.d.ts +3 -3
- package/dist/navigator/catalog.d.ts.map +1 -1
- package/dist/navigator/catalog.js.map +1 -1
- package/dist/navigator/extensions.d.ts +2 -2
- package/dist/navigator/extensions.d.ts.map +1 -1
- package/dist/navigator/extensions.js.map +1 -1
- package/dist/navigator/generation.d.ts +1 -1
- package/dist/navigator/generation.d.ts.map +1 -1
- package/dist/navigator/generation.js.map +1 -1
- package/dist/navigator/planning.d.ts +3 -3
- package/dist/navigator/planning.d.ts.map +1 -1
- package/dist/navigator/planning.js.map +1 -1
- package/dist/navigator.d.ts +7 -7
- package/dist/navigator.d.ts.map +1 -1
- package/dist/navigator.js +1 -1
- package/dist/navigator.js.map +1 -1
- package/dist/requirements.d.ts +1 -1
- package/dist/requirements.d.ts.map +1 -1
- package/dist/requirements.js.map +1 -1
- package/dist/runtimeCallbacks.d.ts +1 -1
- package/dist/runtimeCallbacks.d.ts.map +1 -1
- package/dist/runtimeCallbacks.js.map +1 -1
- package/dist/state.d.ts +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js.map +1 -1
- package/dist/structure/generated.d.ts +2 -2
- package/dist/structure/generated.js +2 -2
- package/dist/structure/generated.js.map +1 -1
- package/dist/structure/index.d.ts +1 -1
- package/dist/structure/index.d.ts.map +1 -1
- package/dist/structure/index.js.map +1 -1
- package/dist/structure/isStructureDescriptor.d.ts +1 -1
- package/dist/structure/isStructureDescriptor.d.ts.map +1 -1
- package/dist/structure/isStructureDescriptor.js.map +1 -1
- package/dist/structure/types.d.ts +1 -1
- package/dist/structure/types.d.ts.map +1 -1
- package/dist/structure/types.js.map +1 -1
- package/dist/theme.d.ts +1 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js.map +1 -1
- package/dist/types/appManifest.d.ts +1 -1
- package/dist/types/appManifest.d.ts.map +1 -1
- package/dist/types/appManifest.js.map +1 -1
- package/dist/types/infraAdapters.d.ts +7 -7
- package/dist/types/infraAdapters.d.ts.map +1 -1
- package/dist/types/infraAdapters.js.map +1 -1
- package/dist/types/infraLifecycle.d.ts +4 -4
- package/dist/types/infraLifecycle.d.ts.map +1 -1
- package/dist/types/infraLifecycle.js.map +1 -1
- package/dist/types/infraManifest.d.ts +8 -8
- package/dist/types/infraManifest.d.ts.map +1 -1
- package/dist/types/infraManifest.js.map +1 -1
- package/dist/types/infraSecrets.d.ts +1 -1
- package/dist/types/infraSecrets.d.ts.map +1 -1
- package/dist/types/infraSecrets.js.map +1 -1
- package/dist/types/infraTargets.d.ts +1 -1
- package/dist/types/infraTargets.d.ts.map +1 -1
- package/dist/types/infraTargets.js.map +1 -1
- package/dist/types/infraWorkload.d.ts +2 -2
- package/dist/types/infraWorkload.d.ts.map +1 -1
- package/dist/types/infraWorkload.js.map +1 -1
- package/dist/types.d.ts +13 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/ui.d.ts +2 -2
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js.map +1 -1
- package/package.json +4 -4
- package/src/appManifest/bindings.ts +1 -1
- package/src/appManifest/constants.ts +1 -1
- package/src/appManifest/dataSources.ts +2 -2
- package/src/appManifest/isAppManifest.ts +9 -9
- package/src/appManifest/isAppStateSpec.ts +1 -1
- package/src/appManifest/isManifestValue.ts +1 -1
- package/src/appManifest/media.ts +1 -1
- package/src/appManifest/navigator.ts +3 -3
- package/src/appManifest/navigatorOptions.ts +1 -1
- package/src/appManifest/parseAppManifest.ts +2 -2
- package/src/appManifest/screens.ts +6 -6
- package/src/appManifest.ts +4 -4
- package/src/auth.ts +6 -6
- package/src/bindings.ts +3 -3
- package/src/cli/index.ts +1 -1
- package/src/data/apis.ts +6 -6
- package/src/data/diagnostics.ts +1 -1
- package/src/data/endpoints.ts +5 -5
- package/src/data/index.ts +10 -10
- package/src/data/isApiDefinitionRegistry.ts +3 -3
- package/src/data/operations.ts +5 -5
- package/src/data/refs.ts +2 -2
- package/src/data/schemas.ts +3 -3
- package/src/data/sources.ts +6 -6
- package/src/data/values.ts +1 -1
- package/src/icon.ts +1 -1
- package/src/index.ts +24 -24
- package/src/infra/isInfraAdapterDescriptor.ts +3 -3
- package/src/infra/isInfraAuthSpec.ts +6 -6
- package/src/infra/isInfraCredentialRef.ts +1 -1
- package/src/infra/isInfraDeploymentSpec.ts +6 -6
- package/src/infra/isInfraEnvironmentSpec.ts +10 -10
- package/src/infra/isInfraManifest.ts +7 -7
- package/src/infra/isInfraWorkloadHealth.ts +2 -2
- package/src/infra/isInfraWorkloadSpec.ts +7 -7
- package/src/infra/isInfraWorkloadValue.ts +4 -4
- package/src/infra/parseInfraManifest.ts +3 -3
- package/src/infra/validateInfraAdapterSelection.ts +5 -5
- package/src/infra.test.ts +1 -1
- package/src/infra.ts +15 -15
- package/src/infraCatalog.ts +8 -8
- package/src/infraPackedConsumer.test.ts +102 -0
- package/src/media.ts +1 -1
- package/src/navigator/catalog.ts +3 -3
- package/src/navigator/extensions.ts +2 -2
- package/src/navigator/generation.ts +1 -1
- package/src/navigator/planning.ts +3 -3
- package/src/navigator.ts +7 -7
- package/src/requirements.ts +1 -1
- package/src/runtimeCallbacks.ts +1 -1
- package/src/state.ts +1 -1
- package/src/structure/generated.ts +2 -2
- package/src/structure/index.ts +1 -1
- package/src/structure/isStructureDescriptor.ts +1 -1
- package/src/structure/types.ts +1 -1
- package/src/theme.ts +1 -1
- package/src/types/appManifest.ts +1 -1
- package/src/types/infraAdapters.ts +7 -7
- package/src/types/infraLifecycle.ts +4 -4
- package/src/types/infraManifest.ts +8 -8
- package/src/types/infraSecrets.ts +1 -1
- package/src/types/infraTargets.ts +1 -1
- package/src/types/infraWorkload.ts +2 -2
- package/src/types.ts +13 -13
- package/src/ui.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isInfraEnvironmentSpec.js","sourceRoot":"","sources":["../../src/infra/isInfraEnvironmentSpec.ts"],"names":[],"mappings":"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","sourcesContent":["import { isRecord } from '@ankhorage/utility/object';\nimport { isNonEmptyString } from '@ankhorage/utility/string';\n\nimport { isSerializableSet } from '../collections';\nimport { INFRA_ADAPTER_CATALOG } from '../infraCatalog';\nimport type {\n InfraEnvironmentSpec,\n InfraObjectStorageSpec,\n InfraS3PersistenceTarget,\n InfraScheduledDatabaseBackupSpec,\n} from '../types/infraManifest';\nimport type { InfraShape } from '../types/infraValidation';\nimport { infraFields } from './infraFields';\nimport { isInfraAuthSpec } from './isInfraAuthSpec';\nimport { isInfraCredentialRef } from './isInfraCredentialRef';\nimport { isInfraDeploymentSpec } from './isInfraDeploymentSpec';\nimport { isInfraShape } from './isInfraShape';\nimport { isInfraWorkloadSpec } from './isInfraWorkloadSpec';\n\n/*** Validate sibling capabilities and their required relationships within one environment. */\nexport function isInfraEnvironmentSpec(value: unknown): value is InfraEnvironmentSpec {\n return (\n isEnvironmentShape(value) &&\n hasServiceDependencies(value) &&\n hasNetworkingRelationships(value) &&\n hasUniquePublishedPorts(value)\n );\n}\n\n/*** Check all environment field shapes before inspecting canonical dependency metadata. */\nfunction isEnvironmentShape(value: unknown): value is InfraEnvironmentSpec {\n return isInfraShape(value, {\n deployment: isInfraDeploymentSpec,\n database: (database) =>\n database === undefined ||\n isInfraShape(database, {\n provider: (provider) => provider === 'supabase',\n tier: (tier) => tier === undefined || tier === 'dev' || tier === 'prod',\n backup: (backup) => backup === undefined || isScheduledDatabaseBackup(backup),\n }),\n objectStorage: (storage) => storage === undefined || isObjectStorage(storage),\n auth: (auth) => auth === undefined || isInfraAuthSpec(auth),\n authz: (authz) =>\n authz === undefined ||\n isInfraShape(authz, {\n provider: (provider) => provider === 'cerbos',\n kind: (kind) => kind === 'ABAC' || kind === 'RBAC',\n policies: (policies) => policies === undefined || isPolicyFiles(policies),\n }),\n secretStore: (store) =>\n store === undefined ||\n isInfraShape(store, {\n provider: (provider) => provider === 'supabase-vault',\n schema: infraFields.optionalText,\n }),\n networking: (networking) =>\n networking === undefined ||\n isInfraShape(networking, {\n domain: infraFields.optionalText,\n publicBaseUrl: (publicBaseUrl) =>\n publicBaseUrl === undefined || isPublicHttpOrigin(publicBaseUrl),\n tls: (tls) =>\n tls === undefined ||\n isInfraShape(tls, {\n mode: (mode) => mode === 'acme-http-01',\n contactEmail: isNonEmptyString,\n }),\n }),\n workloads: (workloads) => workloads === undefined || isWorkloads(workloads),\n } satisfies InfraShape<InfraEnvironmentSpec>);\n}\n\n/*** Public workload configuration uses one canonical absolute HTTP(S) origin without path state. */\nfunction isPublicHttpOrigin(value: unknown): boolean {\n if (!isNonEmptyString(value)) return false;\n try {\n const url = new URL(value);\n return (url.protocol === 'http:' || url.protocol === 'https:') && url.origin === value;\n } catch {\n return false;\n }\n}\n\n/*** Automatic TLS requires one matching HTTPS origin and public DNS hostname. */\nfunction hasNetworkingRelationships(value: InfraEnvironmentSpec): boolean {\n const { networking } = value;\n if (networking?.tls === undefined) return true;\n if (networking.domain === undefined || networking.publicBaseUrl === undefined) return false;\n const url = new URL(networking.publicBaseUrl);\n return url.protocol === 'https:' && url.hostname === networking.domain;\n}\n\n/*** Validate portable, unique Cerbos policy files without host paths or traversal. */\nfunction isPolicyFiles(value: unknown): boolean {\n return (\n isRecord(value) &&\n Object.entries(value).every(\n ([path, content]) =>\n isNonEmptyString(path) &&\n !path.startsWith('/') &&\n !path.split('/').includes('..') &&\n isNonEmptyString(content),\n )\n );\n}\n\n/*** Validate provider-neutral scheduled database backup intent. */\nfunction isScheduledDatabaseBackup(value: unknown): value is InfraScheduledDatabaseBackupSpec {\n return isInfraShape(value, {\n mode: (mode) => mode === 'scheduled',\n target: isS3PersistenceTarget,\n intervalHours: (interval) =>\n interval === undefined ||\n (typeof interval === 'number' && Number.isInteger(interval) && interval > 0),\n });\n}\n\n/*** Validate one portable S3-compatible persistence target without resolving credentials. */\nfunction isS3PersistenceTarget(value: unknown): value is InfraS3PersistenceTarget {\n return isInfraShape(value, {\n endpoint: isPublicHttpOrigin,\n region: isNonEmptyString,\n bucket: isNonEmptyString,\n credentials: isInfraCredentialRef,\n forcePathStyle: (forcePathStyle) =>\n forcePathStyle === undefined || typeof forcePathStyle === 'boolean',\n });\n}\n\n/*** Object storage can vary independently from database/auth; there is no implicit auto provider. */\nfunction isObjectStorage(value: unknown): boolean {\n if (!isRecord(value)) return false;\n const common = {\n provider: (provider: unknown) => provider === value.provider,\n buckets: (buckets: unknown) => buckets === undefined || isSerializableSet(buckets),\n };\n if (value.provider === 'supabase') {\n return isInfraShape(value, {\n ...common,\n provider: (provider) => provider === 'supabase',\n backend: (backend) => backend === undefined || isS3PersistenceTarget(backend),\n } satisfies InfraShape<Extract<InfraObjectStorageSpec, { readonly provider: 'supabase' }>>);\n }\n return isInfraShape(value, {\n ...common,\n provider: (provider) => provider === 'r2',\n accountId: infraFields.optionalText,\n credentials: (credentials) => credentials === undefined || isInfraCredentialRef(credentials),\n } satisfies InfraShape<Extract<InfraObjectStorageSpec, { readonly provider: 'r2' }>>);\n}\n\n/*** Duplicate desired workload identities cannot be reconciled safely. */\nfunction isWorkloads(value: unknown): boolean {\n return (\n isRecord(value) &&\n Object.entries(value).every(\n ([workloadId, workload]) => isInfraWorkloadSpec(workload) && workload.id === workloadId,\n )\n );\n}\n\n/*** Prevent two workloads in one environment from claiming the same external listener. */\nfunction hasUniquePublishedPorts(value: InfraEnvironmentSpec): boolean {\n const ports = Object.values(value.workloads ?? {}).flatMap((workload) =>\n Object.values(workload.ports ?? {}).flatMap(({ publishedPort }) =>\n publishedPort === undefined ? [] : [publishedPort],\n ),\n );\n return new Set(ports).size === ports.length;\n}\n\n/*** Check catalog dependencies against selected sibling capabilities and runtime capabilities. */\nfunction hasServiceDependencies(value: InfraEnvironmentSpec): boolean {\n const selections = [\n value.database,\n value.auth,\n value.authz,\n value.objectStorage,\n value.secretStore,\n ];\n const runtime = Object.values(INFRA_ADAPTER_CATALOG).find(\n (entry) => entry.id === value.deployment.runtime.provider,\n );\n const capabilities = new Set<string>([\n 'compute',\n ...(runtime?.capabilities ?? []),\n ...Object.entries(value)\n .filter(([, selection]) => selection !== undefined)\n .map(([capability]) => capability),\n ]);\n return Object.values(INFRA_ADAPTER_CATALOG)\n .filter((entry) => selections.some((selection) => selection?.provider === entry.id))\n .every((entry) => entry.dependencies.every((dependency) => capabilities.has(dependency)));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"isInfraEnvironmentSpec.js","sourceRoot":"","sources":["../../src/infra/isInfraEnvironmentSpec.ts"],"names":[],"mappings":"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","sourcesContent":["import { isRecord } from '@ankhorage/utility/object';\nimport { isNonEmptyString } from '@ankhorage/utility/string';\n\nimport { isSerializableSet } from '../collections.js';\nimport { INFRA_ADAPTER_CATALOG } from '../infraCatalog.js';\nimport type {\n InfraEnvironmentSpec,\n InfraObjectStorageSpec,\n InfraS3PersistenceTarget,\n InfraScheduledDatabaseBackupSpec,\n} from '../types/infraManifest.js';\nimport type { InfraShape } from '../types/infraValidation.js';\nimport { infraFields } from './infraFields.js';\nimport { isInfraAuthSpec } from './isInfraAuthSpec.js';\nimport { isInfraCredentialRef } from './isInfraCredentialRef.js';\nimport { isInfraDeploymentSpec } from './isInfraDeploymentSpec.js';\nimport { isInfraShape } from './isInfraShape.js';\nimport { isInfraWorkloadSpec } from './isInfraWorkloadSpec.js';\n\n/*** Validate sibling capabilities and their required relationships within one environment. */\nexport function isInfraEnvironmentSpec(value: unknown): value is InfraEnvironmentSpec {\n return (\n isEnvironmentShape(value) &&\n hasServiceDependencies(value) &&\n hasNetworkingRelationships(value) &&\n hasUniquePublishedPorts(value)\n );\n}\n\n/*** Check all environment field shapes before inspecting canonical dependency metadata. */\nfunction isEnvironmentShape(value: unknown): value is InfraEnvironmentSpec {\n return isInfraShape(value, {\n deployment: isInfraDeploymentSpec,\n database: (database) =>\n database === undefined ||\n isInfraShape(database, {\n provider: (provider) => provider === 'supabase',\n tier: (tier) => tier === undefined || tier === 'dev' || tier === 'prod',\n backup: (backup) => backup === undefined || isScheduledDatabaseBackup(backup),\n }),\n objectStorage: (storage) => storage === undefined || isObjectStorage(storage),\n auth: (auth) => auth === undefined || isInfraAuthSpec(auth),\n authz: (authz) =>\n authz === undefined ||\n isInfraShape(authz, {\n provider: (provider) => provider === 'cerbos',\n kind: (kind) => kind === 'ABAC' || kind === 'RBAC',\n policies: (policies) => policies === undefined || isPolicyFiles(policies),\n }),\n secretStore: (store) =>\n store === undefined ||\n isInfraShape(store, {\n provider: (provider) => provider === 'supabase-vault',\n schema: infraFields.optionalText,\n }),\n networking: (networking) =>\n networking === undefined ||\n isInfraShape(networking, {\n domain: infraFields.optionalText,\n publicBaseUrl: (publicBaseUrl) =>\n publicBaseUrl === undefined || isPublicHttpOrigin(publicBaseUrl),\n tls: (tls) =>\n tls === undefined ||\n isInfraShape(tls, {\n mode: (mode) => mode === 'acme-http-01',\n contactEmail: isNonEmptyString,\n }),\n }),\n workloads: (workloads) => workloads === undefined || isWorkloads(workloads),\n } satisfies InfraShape<InfraEnvironmentSpec>);\n}\n\n/*** Public workload configuration uses one canonical absolute HTTP(S) origin without path state. */\nfunction isPublicHttpOrigin(value: unknown): boolean {\n if (!isNonEmptyString(value)) return false;\n try {\n const url = new URL(value);\n return (url.protocol === 'http:' || url.protocol === 'https:') && url.origin === value;\n } catch {\n return false;\n }\n}\n\n/*** Automatic TLS requires one matching HTTPS origin and public DNS hostname. */\nfunction hasNetworkingRelationships(value: InfraEnvironmentSpec): boolean {\n const { networking } = value;\n if (networking?.tls === undefined) return true;\n if (networking.domain === undefined || networking.publicBaseUrl === undefined) return false;\n const url = new URL(networking.publicBaseUrl);\n return url.protocol === 'https:' && url.hostname === networking.domain;\n}\n\n/*** Validate portable, unique Cerbos policy files without host paths or traversal. */\nfunction isPolicyFiles(value: unknown): boolean {\n return (\n isRecord(value) &&\n Object.entries(value).every(\n ([path, content]) =>\n isNonEmptyString(path) &&\n !path.startsWith('/') &&\n !path.split('/').includes('..') &&\n isNonEmptyString(content),\n )\n );\n}\n\n/*** Validate provider-neutral scheduled database backup intent. */\nfunction isScheduledDatabaseBackup(value: unknown): value is InfraScheduledDatabaseBackupSpec {\n return isInfraShape(value, {\n mode: (mode) => mode === 'scheduled',\n target: isS3PersistenceTarget,\n intervalHours: (interval) =>\n interval === undefined ||\n (typeof interval === 'number' && Number.isInteger(interval) && interval > 0),\n });\n}\n\n/*** Validate one portable S3-compatible persistence target without resolving credentials. */\nfunction isS3PersistenceTarget(value: unknown): value is InfraS3PersistenceTarget {\n return isInfraShape(value, {\n endpoint: isPublicHttpOrigin,\n region: isNonEmptyString,\n bucket: isNonEmptyString,\n credentials: isInfraCredentialRef,\n forcePathStyle: (forcePathStyle) =>\n forcePathStyle === undefined || typeof forcePathStyle === 'boolean',\n });\n}\n\n/*** Object storage can vary independently from database/auth; there is no implicit auto provider. */\nfunction isObjectStorage(value: unknown): boolean {\n if (!isRecord(value)) return false;\n const common = {\n provider: (provider: unknown) => provider === value.provider,\n buckets: (buckets: unknown) => buckets === undefined || isSerializableSet(buckets),\n };\n if (value.provider === 'supabase') {\n return isInfraShape(value, {\n ...common,\n provider: (provider) => provider === 'supabase',\n backend: (backend) => backend === undefined || isS3PersistenceTarget(backend),\n } satisfies InfraShape<Extract<InfraObjectStorageSpec, { readonly provider: 'supabase' }>>);\n }\n return isInfraShape(value, {\n ...common,\n provider: (provider) => provider === 'r2',\n accountId: infraFields.optionalText,\n credentials: (credentials) => credentials === undefined || isInfraCredentialRef(credentials),\n } satisfies InfraShape<Extract<InfraObjectStorageSpec, { readonly provider: 'r2' }>>);\n}\n\n/*** Duplicate desired workload identities cannot be reconciled safely. */\nfunction isWorkloads(value: unknown): boolean {\n return (\n isRecord(value) &&\n Object.entries(value).every(\n ([workloadId, workload]) => isInfraWorkloadSpec(workload) && workload.id === workloadId,\n )\n );\n}\n\n/*** Prevent two workloads in one environment from claiming the same external listener. */\nfunction hasUniquePublishedPorts(value: InfraEnvironmentSpec): boolean {\n const ports = Object.values(value.workloads ?? {}).flatMap((workload) =>\n Object.values(workload.ports ?? {}).flatMap(({ publishedPort }) =>\n publishedPort === undefined ? [] : [publishedPort],\n ),\n );\n return new Set(ports).size === ports.length;\n}\n\n/*** Check catalog dependencies against selected sibling capabilities and runtime capabilities. */\nfunction hasServiceDependencies(value: InfraEnvironmentSpec): boolean {\n const selections = [\n value.database,\n value.auth,\n value.authz,\n value.objectStorage,\n value.secretStore,\n ];\n const runtime = Object.values(INFRA_ADAPTER_CATALOG).find(\n (entry) => entry.id === value.deployment.runtime.provider,\n );\n const capabilities = new Set<string>([\n 'compute',\n ...(runtime?.capabilities ?? []),\n ...Object.entries(value)\n .filter(([, selection]) => selection !== undefined)\n .map(([capability]) => capability),\n ]);\n return Object.values(INFRA_ADAPTER_CATALOG)\n .filter((entry) => selections.some((selection) => selection?.provider === entry.id))\n .every((entry) => entry.dependencies.every((dependency) => capabilities.has(dependency)));\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { InfraManifest } from '../types/infraManifest';
|
|
1
|
+
import type { InfraManifest } from '../types/infraManifest.js';
|
|
2
2
|
/*** Validate standalone infrastructure without AppManifest, Deploy or provider package side effects. */
|
|
3
3
|
export declare function isInfraManifest(value: unknown): value is InfraManifest;
|
|
4
4
|
//# sourceMappingURL=isInfraManifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isInfraManifest.d.ts","sourceRoot":"","sources":["../../src/infra/isInfraManifest.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,
|
|
1
|
+
{"version":3,"file":"isInfraManifest.d.ts","sourceRoot":"","sources":["../../src/infra/isInfraManifest.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,2BAA2B,CAAC;AAKhF,wGAAwG;AACxG,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAMtE"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { isRecord } from '@ankhorage/utility/object';
|
|
2
|
-
import { isApiDefinitionRegistry } from '../data/isApiDefinitionRegistry';
|
|
3
|
-
import { APP_ENVIRONMENT_IDS } from '../environments';
|
|
4
|
-
import { isSerializableValue } from '../serializable';
|
|
5
|
-
import { isInfraEnvironmentSpec } from './isInfraEnvironmentSpec';
|
|
6
|
-
import { isInfraShape } from './isInfraShape';
|
|
2
|
+
import { isApiDefinitionRegistry } from '../data/isApiDefinitionRegistry.js';
|
|
3
|
+
import { APP_ENVIRONMENT_IDS } from '../environments.js';
|
|
4
|
+
import { isSerializableValue } from '../serializable.js';
|
|
5
|
+
import { isInfraEnvironmentSpec } from './isInfraEnvironmentSpec.js';
|
|
6
|
+
import { isInfraShape } from './isInfraShape.js';
|
|
7
7
|
/*** Validate standalone infrastructure without AppManifest, Deploy or provider package side effects. */
|
|
8
8
|
export function isInfraManifest(value) {
|
|
9
9
|
return isInfraShape(value, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isInfraManifest.js","sourceRoot":"","sources":["../../src/infra/isInfraManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,uBAAuB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"isInfraManifest.js","sourceRoot":"","sources":["../../src/infra/isInfraManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,wGAAwG;AACxG,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,YAAY,CAAC,KAAK,EAAE;QACzB,YAAY,EAAE,cAAc;QAC5B,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,uBAAuB,CAAC,IAAI,CAAC;QACnE,OAAO,EAAE,gBAAgB;KACU,CAAC,CAAC;AACzC,CAAC;AAED,sGAAsG;AACtG,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3E,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAChC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,CACrB,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC;QAC5C,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,GAAG,KAAK,OAAO,CAAC,IAAI,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAC1F,CAAC;AACJ,CAAC;AAED,gGAAgG;AAChG,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACrE,CAAC;AAED,2CAA2C;AAC3C,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,YAAY,CAAC,KAAK,EAAE;QACzB,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,mBAAmB,CAAC,MAAM,CAAC;KACxE,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { isRecord } from '@ankhorage/utility/object';\n\nimport { isApiDefinitionRegistry } from '../data/isApiDefinitionRegistry.js';\nimport { APP_ENVIRONMENT_IDS } from '../environments.js';\nimport { isSerializableValue } from '../serializable.js';\nimport type { InfraManifest, InfraModuleSpec } from '../types/infraManifest.js';\nimport type { InfraShape } from '../types/infraValidation.js';\nimport { isInfraEnvironmentSpec } from './isInfraEnvironmentSpec.js';\nimport { isInfraShape } from './isInfraShape.js';\n\n/*** Validate standalone infrastructure without AppManifest, Deploy or provider package side effects. */\nexport function isInfraManifest(value: unknown): value is InfraManifest {\n return isInfraShape(value, {\n environments: isEnvironments,\n apis: (apis) => apis === undefined || isApiDefinitionRegistry(apis),\n modules: isModuleRegistry,\n } satisfies InfraShape<InfraManifest>);\n}\n\n/*** Local is required; preview and production are optional but never inferred from arbitrary keys. */\nfunction isEnvironments(value: unknown): boolean {\n if (!isRecord(value) || !isInfraEnvironmentSpec(value.local)) return false;\n return Object.entries(value).every(\n ([key, environment]) =>\n APP_ENVIRONMENT_IDS.some((id) => id === key) &&\n ((environment === undefined && key !== 'local') || isInfraEnvironmentSpec(environment)),\n );\n}\n\n/*** Validate installed module identity and optional serializable module-owned configuration. */\nfunction isModuleRegistry(value: unknown): boolean {\n return isRecord(value) && Object.values(value).every(isModuleSpec);\n}\n\n/*** Validate one module registry entry. */\nfunction isModuleSpec(value: unknown): value is InfraModuleSpec {\n return isInfraShape(value, {\n config: (config) => config === undefined || isSerializableValue(config),\n });\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isRecord } from '@ankhorage/utility/object';
|
|
2
|
-
import { infraFields } from './infraFields';
|
|
3
|
-
import { isInfraShape } from './isInfraShape';
|
|
2
|
+
import { infraFields } from './infraFields.js';
|
|
3
|
+
import { isInfraShape } from './isInfraShape.js';
|
|
4
4
|
/*** Validate runtime-neutral readiness probes and bounded numeric parameters. */
|
|
5
5
|
export function isInfraWorkloadHealth(value) {
|
|
6
6
|
if (!isRecord(value))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isInfraWorkloadHealth.js","sourceRoot":"","sources":["../../src/infra/isInfraWorkloadHealth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"isInfraWorkloadHealth.js","sourceRoot":"","sources":["../../src/infra/isInfraWorkloadHealth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,iFAAiF;AACjF,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,MAAM,GAAG;QACb,eAAe,EAAE,WAAW,CAAC,uBAAuB;QACpD,cAAc,EAAE,WAAW,CAAC,uBAAuB;QACnD,gBAAgB,EAAE,WAAW,CAAC,uBAAuB;KACtD,CAAC;IACF,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,YAAY,CAAC,KAAK,EAAE;gBACzB,GAAG,MAAM;gBACT,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM;gBAC/B,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;aACjE,CAAC,CAAC;QACL,KAAK,KAAK;YACR,OAAO,YAAY,CAAC,KAAK,EAAE;gBACzB,GAAG,MAAM;gBACT,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK;gBAC9B,IAAI,EAAE,WAAW,CAAC,IAAI;aACvB,CAAC,CAAC;QACL,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,KAAK,EAAE;gBACzB,GAAG,MAAM;gBACT,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS;gBAClC,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CACnB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;aAC/E,CAAC,CAAC;QACL;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC","sourcesContent":["import { isRecord } from '@ankhorage/utility/object';\n\nimport { infraFields } from './infraFields.js';\nimport { isInfraShape } from './isInfraShape.js';\n\n/*** Validate runtime-neutral readiness probes and bounded numeric parameters. */\nexport function isInfraWorkloadHealth(value: unknown): boolean {\n if (!isRecord(value)) return false;\n const timing = {\n intervalSeconds: infraFields.optionalPositiveInteger,\n timeoutSeconds: infraFields.optionalPositiveInteger,\n failureThreshold: infraFields.optionalPositiveInteger,\n };\n switch (value.kind) {\n case 'http':\n return isInfraShape(value, {\n ...timing,\n kind: (kind) => kind === 'http',\n port: infraFields.port,\n path: (path) => typeof path === 'string' && path.startsWith('/'),\n });\n case 'tcp':\n return isInfraShape(value, {\n ...timing,\n kind: (kind) => kind === 'tcp',\n port: infraFields.port,\n });\n case 'command':\n return isInfraShape(value, {\n ...timing,\n kind: (kind) => kind === 'command',\n command: (command) =>\n Array.isArray(command) && command.length > 0 && infraFields.strings(command),\n });\n default:\n return false;\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { InfraWorkloadSpec } from '../types/infraWorkload';
|
|
1
|
+
import type { InfraWorkloadSpec } from '../types/infraWorkload.js';
|
|
2
2
|
/*** Validate the portable desired workload; runtime-specific fields and plaintext secret objects fail. */
|
|
3
3
|
export declare function isInfraWorkloadSpec(value: unknown): value is InfraWorkloadSpec;
|
|
4
4
|
//# sourceMappingURL=isInfraWorkloadSpec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isInfraWorkloadSpec.d.ts","sourceRoot":"","sources":["../../src/infra/isInfraWorkloadSpec.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"isInfraWorkloadSpec.d.ts","sourceRoot":"","sources":["../../src/infra/isInfraWorkloadSpec.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAMnE,0GAA0G;AAC1G,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CA8B9E"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { isStringArray } from '@ankhorage/utility/array';
|
|
2
2
|
import { isRecord } from '@ankhorage/utility/object';
|
|
3
3
|
import { isNonEmptyString } from '@ankhorage/utility/string';
|
|
4
|
-
import { isSerializableSet } from '../collections';
|
|
5
|
-
import { infraFields } from './infraFields';
|
|
6
|
-
import { isInfraShape } from './isInfraShape';
|
|
7
|
-
import { isInfraWorkloadHealth } from './isInfraWorkloadHealth';
|
|
8
|
-
import { isInfraWorkloadValue } from './isInfraWorkloadValue';
|
|
4
|
+
import { isSerializableSet } from '../collections.js';
|
|
5
|
+
import { infraFields } from './infraFields.js';
|
|
6
|
+
import { isInfraShape } from './isInfraShape.js';
|
|
7
|
+
import { isInfraWorkloadHealth } from './isInfraWorkloadHealth.js';
|
|
8
|
+
import { isInfraWorkloadValue } from './isInfraWorkloadValue.js';
|
|
9
9
|
/*** Validate the portable desired workload; runtime-specific fields and plaintext secret objects fail. */
|
|
10
10
|
export function isInfraWorkloadSpec(value) {
|
|
11
11
|
if (!isInfraShape(value, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isInfraWorkloadSpec.js","sourceRoot":"","sources":["../../src/infra/isInfraWorkloadSpec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"isInfraWorkloadSpec.js","sourceRoot":"","sources":["../../src/infra/isInfraWorkloadSpec.ts"],"names":[],"mappings":"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","sourcesContent":["import { isStringArray } from '@ankhorage/utility/array';\nimport { isRecord } from '@ankhorage/utility/object';\nimport { isNonEmptyString } from '@ankhorage/utility/string';\n\nimport { isSerializableSet } from '../collections.js';\nimport type { InfraShape } from '../types/infraValidation.js';\nimport type { InfraWorkloadSpec } from '../types/infraWorkload.js';\nimport { infraFields } from './infraFields.js';\nimport { isInfraShape } from './isInfraShape.js';\nimport { isInfraWorkloadHealth } from './isInfraWorkloadHealth.js';\nimport { isInfraWorkloadValue } from './isInfraWorkloadValue.js';\n\n/*** Validate the portable desired workload; runtime-specific fields and plaintext secret objects fail. */\nexport function isInfraWorkloadSpec(value: unknown): value is InfraWorkloadSpec {\n if (\n !isInfraShape(value, {\n id: isNonEmptyString,\n artifact: (artifact) =>\n isInfraShape(artifact, { kind: (kind) => kind === 'image', image: isNonEmptyString }),\n command: infraFields.optionalStrings,\n args: (args) => args === undefined || isStringArray(args),\n ports: (ports) => ports === undefined || isPortRegistry(ports),\n environment: (environment) =>\n environment === undefined ||\n (isRecord(environment) && Object.values(environment).every(isInfraWorkloadValue)),\n files: (files) => files === undefined || isFileMap(files),\n health: (health) => health === undefined || isInfraWorkloadHealth(health),\n resources: (resources) =>\n resources === undefined ||\n isInfraShape(resources, {\n cpuMillis: infraFields.optionalPositiveInteger,\n memoryMiB: infraFields.optionalPositiveInteger,\n }),\n persistence: (volumes) => volumes === undefined || isVolumeRegistry(volumes),\n exposure: (exposure) =>\n exposure === undefined || exposure === 'internal' || exposure === 'public',\n replicas: infraFields.optionalNonnegativeInteger,\n dependsOn: (dependsOn) => dependsOn === undefined || isSerializableSet(dependsOn),\n } satisfies InfraShape<InfraWorkloadSpec>)\n ) {\n return false;\n }\n return hasValidPublishedPorts(value);\n}\n\n/*** Validate named transport ports keyed by their stable authored name. */\nfunction isPortRegistry(value: unknown): boolean {\n return (\n isRecord(value) &&\n Object.entries(value).every(([name, port]) => isNonEmptyString(name) && isPort(port))\n );\n}\n\n/*** Named transport ports stay independent from runtime resource types. */\nfunction isPort(value: unknown): boolean {\n return isInfraShape(value, {\n port: infraFields.port,\n protocol: (protocol) => protocol === undefined || protocol === 'tcp' || protocol === 'udp',\n publishedPort: infraFields.optionalPort,\n });\n}\n\n/*** Require fixed external listeners to belong to one public workload replica. */\nfunction hasValidPublishedPorts(workload: unknown): boolean {\n if (!isRecord(workload)) return false;\n const ports = isRecord(workload.ports) ? Object.values(workload.ports) : [];\n const published = ports.flatMap((port) => {\n if (!isRecord(port) || typeof port.publishedPort !== 'number') return [];\n return [port.publishedPort];\n });\n return (\n new Set(published).size === published.length &&\n (published.length === 0 ||\n (workload.exposure === 'public' &&\n (workload.replicas === undefined ||\n (typeof workload.replicas === 'number' && workload.replicas <= 1))))\n );\n}\n\n/*** Validate portable config/policy files keyed by their absolute container path. */\nfunction isFileMap(value: unknown): boolean {\n return (\n isRecord(value) &&\n Object.entries(value).every(\n ([filePath, content]) => isAbsoluteWorkloadPath(filePath) && isInfraWorkloadValue(content),\n )\n );\n}\n\n/*** Validate persistence volumes by stable ID and keep mount paths unique within one workload. */\nfunction isVolumeRegistry(value: unknown): boolean {\n if (!isRecord(value)) return false;\n const entries = Object.entries(value);\n if (\n !entries.every(\n ([volumeId, volume]) => isVolume(volume) && isRecord(volume) && volume.id === volumeId,\n )\n ) {\n return false;\n }\n const mountPaths = Object.values(value).map((volume) =>\n isRecord(volume) ? volume.mountPath : undefined,\n );\n return new Set(mountPaths).size === mountPaths.length;\n}\n\n/*** Persistence has explicit ownership-local identity, optional initialization and retention policy. */\nfunction isVolume(value: unknown): boolean {\n return isInfraShape(value, {\n id: isNonEmptyString,\n mountPath: isAbsoluteWorkloadPath,\n sizeGiB: infraFields.positiveInteger,\n seed: (seed) => seed === undefined || seed === 'image',\n retention: (retention) => retention === 'retain' || retention === 'delete-on-destroy',\n });\n}\n\n/*** Workload paths are absolute container paths, never relative host traversal. */\nfunction isAbsoluteWorkloadPath(value: unknown): boolean {\n return (\n typeof value === 'string' &&\n value.startsWith('/') &&\n value.length > 1 &&\n !value.split('/').includes('..')\n );\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { isRecord } from '@ankhorage/utility/object';
|
|
2
2
|
import { isNonEmptyString } from '@ankhorage/utility/string';
|
|
3
|
-
import { APP_ENVIRONMENT_IDS } from '../environments';
|
|
4
|
-
import { isInfraCredentialRef } from './isInfraCredentialRef';
|
|
5
|
-
import { isInfraShape } from './isInfraShape';
|
|
3
|
+
import { APP_ENVIRONMENT_IDS } from '../environments.js';
|
|
4
|
+
import { isInfraCredentialRef } from './isInfraCredentialRef.js';
|
|
5
|
+
import { isInfraShape } from './isInfraShape.js';
|
|
6
6
|
/*** Workload values explicitly distinguish public literals, output dependencies and secret references. */
|
|
7
7
|
export function isInfraWorkloadValue(value) {
|
|
8
8
|
return (isInfraWorkloadScalarValue(value) ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isInfraWorkloadValue.js","sourceRoot":"","sources":["../../src/infra/isInfraWorkloadValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"isInfraWorkloadValue.js","sourceRoot":"","sources":["../../src/infra/isInfraWorkloadValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,0GAA0G;AAC1G,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,CACL,0BAA0B,CAAC,KAAK,CAAC;QACjC,YAAY,CAAC,KAAK,EAAE;YAClB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,UAAU;YACnC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CACrB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACvB,QAAQ,CAAC,MAAM,GAAG,CAAC;gBACnB,QAAQ,CAAC,KAAK,CAAC,0BAA0B,CAAC;SAC7C,CAAC,CACH,CAAC;AACJ,CAAC;AAED,0DAA0D;AAC1D,SAAS,0BAA0B,CAAC,KAAc;IAChD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,KAAK,EAAE;gBACzB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS;gBAClC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ;aAC5C,CAAC,CAAC;QACL,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,KAAK,EAAE;gBACzB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ;gBACjC,UAAU,EAAE,gBAAgB;gBAC5B,MAAM,EAAE,gBAAgB;aACzB,CAAC,CAAC;QACL,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,KAAK,EAAE;gBACzB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ;gBACjC,SAAS,EAAE,iBAAiB;aAC7B,CAAC,CAAC;QACL,KAAK,YAAY;YACf,OAAO,YAAY,CAAC,KAAK,EAAE;gBACzB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,YAAY;gBACrC,SAAS,EAAE,oBAAoB;gBAC/B,GAAG,EAAE,gBAAgB;aACtB,CAAC,CAAC;QACL;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,YAAY,CAAC,KAAK,EAAE;QACzB,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,cAAc;QAC7C,SAAS,EAAE,gBAAgB;QAC3B,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC;QAClF,GAAG,EAAE,gBAAgB;QACrB,GAAG,EAAE,gBAAgB;KACtB,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { isRecord } from '@ankhorage/utility/object';\nimport { isNonEmptyString } from '@ankhorage/utility/string';\n\nimport { APP_ENVIRONMENT_IDS } from '../environments.js';\nimport type { InfraWorkloadScalarValue } from '../types/infraWorkload.js';\nimport { isInfraCredentialRef } from './isInfraCredentialRef.js';\nimport { isInfraShape } from './isInfraShape.js';\n\n/*** Workload values explicitly distinguish public literals, output dependencies and secret references. */\nexport function isInfraWorkloadValue(value: unknown): boolean {\n return (\n isInfraWorkloadScalarValue(value) ||\n isInfraShape(value, {\n kind: (kind) => kind === 'template',\n segments: (segments) =>\n Array.isArray(segments) &&\n segments.length > 0 &&\n segments.every(isInfraWorkloadScalarValue),\n })\n );\n}\n\n/*** Validate one non-composite workload value segment. */\nfunction isInfraWorkloadScalarValue(value: unknown): value is InfraWorkloadScalarValue {\n if (!isRecord(value)) return false;\n switch (value.kind) {\n case 'literal':\n return isInfraShape(value, {\n kind: (kind) => kind === 'literal',\n value: (field) => typeof field === 'string',\n });\n case 'output':\n return isInfraShape(value, {\n kind: (kind) => kind === 'output',\n resourceId: isNonEmptyString,\n output: isNonEmptyString,\n });\n case 'secret':\n return isInfraShape(value, {\n kind: (kind) => kind === 'secret',\n reference: isSecretReference,\n });\n case 'credential':\n return isInfraShape(value, {\n kind: (kind) => kind === 'credential',\n reference: isInfraCredentialRef,\n key: isNonEmptyString,\n });\n default:\n return false;\n }\n}\n\n/*** Managed secret references contain identity only, never privileged payloads. */\nfunction isSecretReference(value: unknown): boolean {\n return isInfraShape(value, {\n source: (source) => source === 'secret-store',\n projectId: isNonEmptyString,\n environment: (environment) => APP_ENVIRONMENT_IDS.some((id) => id === environment),\n ref: isNonEmptyString,\n key: isNonEmptyString,\n });\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { InfraResult } from '../types/infraLifecycle';
|
|
2
|
-
import type { InfraManifest } from '../types/infraManifest';
|
|
1
|
+
import type { InfraResult } from '../types/infraLifecycle.js';
|
|
2
|
+
import type { InfraManifest } from '../types/infraManifest.js';
|
|
3
3
|
/** Parse unknown infrastructure input; package availability and credentials are separate validation stages. */
|
|
4
4
|
export declare function parseInfraManifest(value: unknown): InfraResult<InfraManifest>;
|
|
5
5
|
//# sourceMappingURL=parseInfraManifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseInfraManifest.d.ts","sourceRoot":"","sources":["../../src/infra/parseInfraManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"parseInfraManifest.d.ts","sourceRoot":"","sources":["../../src/infra/parseInfraManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG/D,+GAA+G;AAC/G,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAAC,aAAa,CAAC,CAc7E"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isInfraManifest } from './isInfraManifest';
|
|
1
|
+
import { isInfraManifest } from './isInfraManifest.js';
|
|
2
2
|
/** Parse unknown infrastructure input; package availability and credentials are separate validation stages. */
|
|
3
3
|
export function parseInfraManifest(value) {
|
|
4
4
|
return isInfraManifest(value)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseInfraManifest.js","sourceRoot":"","sources":["../../src/infra/parseInfraManifest.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"parseInfraManifest.js","sourceRoot":"","sources":["../../src/infra/parseInfraManifest.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,+GAA+G;AAC/G,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,eAAe,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;QACtC,CAAC,CAAC;YACE,EAAE,EAAE,KAAK;YACT,WAAW,EAAE;gBACX;oBACE,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EACL,gHAAgH;iBACnH;aACF;SACF,CAAC;AACR,CAAC","sourcesContent":["import type { InfraResult } from '../types/infraLifecycle.js';\nimport type { InfraManifest } from '../types/infraManifest.js';\nimport { isInfraManifest } from './isInfraManifest.js';\n\n/** Parse unknown infrastructure input; package availability and credentials are separate validation stages. */\nexport function parseInfraManifest(value: unknown): InfraResult<InfraManifest> {\n return isInfraManifest(value)\n ? { ok: true, value, diagnostics: [] }\n : {\n ok: false,\n diagnostics: [\n {\n severity: 'error',\n code: 'invalid_manifest',\n message:\n 'Expected canonical Infra environments with supported provider configuration and compute/runtime compatibility.',\n },\n ],\n };\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { InfraAdapterDescriptor } from '../types/infraAdapters';
|
|
2
|
-
import type { InfraResult } from '../types/infraLifecycle';
|
|
3
|
-
import type { InfraEnvironmentSpec } from '../types/infraManifest';
|
|
1
|
+
import type { InfraAdapterDescriptor } from '../types/infraAdapters.js';
|
|
2
|
+
import type { InfraResult } from '../types/infraLifecycle.js';
|
|
3
|
+
import type { InfraEnvironmentSpec } from '../types/infraManifest.js';
|
|
4
4
|
/** Validate supplied installed descriptors without imports or filesystem access; only selected packages matter. */
|
|
5
5
|
export declare function validateInfraAdapterSelection(environment: InfraEnvironmentSpec, installed: readonly unknown[]): InfraResult<readonly InfraAdapterDescriptor[]>;
|
|
6
6
|
//# sourceMappingURL=validateInfraAdapterSelection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateInfraAdapterSelection.d.ts","sourceRoot":"","sources":["../../src/infra/validateInfraAdapterSelection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"validateInfraAdapterSelection.d.ts","sourceRoot":"","sources":["../../src/infra/validateInfraAdapterSelection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAmB,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGtE,mHAAmH;AACnH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,oBAAoB,EACjC,SAAS,EAAE,SAAS,OAAO,EAAE,GAC5B,WAAW,CAAC,SAAS,sBAAsB,EAAE,CAAC,CA+BhD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { INFRA_ADAPTER_CATALOG } from '../infraCatalog';
|
|
2
|
-
import { isInfraAdapterDescriptor } from './isInfraAdapterDescriptor';
|
|
1
|
+
import { INFRA_ADAPTER_CATALOG } from '../infraCatalog.js';
|
|
2
|
+
import { isInfraAdapterDescriptor } from './isInfraAdapterDescriptor.js';
|
|
3
3
|
/** Validate supplied installed descriptors without imports or filesystem access; only selected packages matter. */
|
|
4
4
|
export function validateInfraAdapterSelection(environment, installed) {
|
|
5
5
|
const ids = new Set([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateInfraAdapterSelection.js","sourceRoot":"","sources":["../../src/infra/validateInfraAdapterSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"validateInfraAdapterSelection.js","sourceRoot":"","sources":["../../src/infra/validateInfraAdapterSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAI3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,mHAAmH;AACnH,MAAM,UAAU,6BAA6B,CAC3C,WAAiC,EACjC,SAA6B;IAE7B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;QAClB,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ;QACvC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ;QACvC,WAAW,CAAC,QAAQ,EAAE,QAAQ;QAC9B,WAAW,CAAC,aAAa,EAAE,QAAQ;QACnC,WAAW,CAAC,IAAI,EAAE,QAAQ;QAC1B,WAAW,CAAC,KAAK,EAAE,QAAQ;QAC3B,WAAW,CAAC,WAAW,EAAE,QAAQ;KAClC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAC/D,MAAM,WAAW,GAA+B,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACzE,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/E,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC;YACzB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE;oBACE,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EAAE,oBAAoB,KAAK,CAAC,EAAE,mCAAmC,KAAK,CAAC,OAAO,iDAAiD,KAAK,CAAC,aAAa,WAAW,OAAO,CAAC,MAAM,GAAG;iBACtL;aACF,CAAC;IACR,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;QAC5B,CAAC,CAAC;YACE,EAAE,EAAE,IAAI;YACR,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACjE,WAAW;SACZ,CAAC;AACR,CAAC","sourcesContent":["import { INFRA_ADAPTER_CATALOG } from '../infraCatalog.js';\nimport type { InfraAdapterDescriptor } from '../types/infraAdapters.js';\nimport type { InfraDiagnostic, InfraResult } from '../types/infraLifecycle.js';\nimport type { InfraEnvironmentSpec } from '../types/infraManifest.js';\nimport { isInfraAdapterDescriptor } from './isInfraAdapterDescriptor.js';\n\n/** Validate supplied installed descriptors without imports or filesystem access; only selected packages matter. */\nexport function validateInfraAdapterSelection(\n environment: InfraEnvironmentSpec,\n installed: readonly unknown[],\n): InfraResult<readonly InfraAdapterDescriptor[]> {\n const ids = new Set([\n environment.deployment.compute.provider,\n environment.deployment.runtime.provider,\n environment.database?.provider,\n environment.objectStorage?.provider,\n environment.auth?.provider,\n environment.authz?.provider,\n environment.secretStore?.provider,\n ]);\n const selected = Object.values(INFRA_ADAPTER_CATALOG).filter((entry) => ids.has(entry.id));\n const descriptors = installed.filter(isInfraAdapterDescriptor);\n const diagnostics: readonly InfraDiagnostic[] = selected.flatMap((entry) => {\n const matches = descriptors.filter((descriptor) => descriptor.id === entry.id);\n return matches.length === 1\n ? []\n : [\n {\n severity: 'error',\n code: 'adapter_unavailable',\n message: `Selected adapter ${entry.id} requires exactly one installed ${entry.package} descriptor matching Contracts config version ${entry.configVersion}; found ${matches.length}.`,\n },\n ];\n });\n return diagnostics.length > 0\n ? { ok: false, diagnostics }\n : {\n ok: true,\n value: descriptors.filter((descriptor) => ids.has(descriptor.id)),\n diagnostics,\n };\n}\n"]}
|
package/dist/infra.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/** Canonical standalone infrastructure contracts, catalog and side-effect-free validation. */
|
|
2
|
-
export { isInfraAdapterDescriptor } from './infra/isInfraAdapterDescriptor';
|
|
3
|
-
export { isInfraAuthSpec } from './infra/isInfraAuthSpec';
|
|
4
|
-
export { isInfraDeploymentSpec } from './infra/isInfraDeploymentSpec';
|
|
5
|
-
export { isInfraEnvironmentSpec } from './infra/isInfraEnvironmentSpec';
|
|
6
|
-
export { isInfraManifest } from './infra/isInfraManifest';
|
|
7
|
-
export { isInfraWorkloadSpec } from './infra/isInfraWorkloadSpec';
|
|
8
|
-
export { parseInfraManifest } from './infra/parseInfraManifest';
|
|
9
|
-
export { validateInfraAdapterSelection } from './infra/validateInfraAdapterSelection';
|
|
10
|
-
export { INFRA_ADAPTER_CATALOG, INFRA_RUNTIME_COMPATIBILITY } from './infraCatalog';
|
|
11
|
-
export type * from './types/infraAdapters';
|
|
12
|
-
export type * from './types/infraLifecycle';
|
|
13
|
-
export type * from './types/infraManifest';
|
|
14
|
-
export type * from './types/infraSecrets';
|
|
15
|
-
export type * from './types/infraTargets';
|
|
16
|
-
export type * from './types/infraWorkload';
|
|
2
|
+
export { isInfraAdapterDescriptor } from './infra/isInfraAdapterDescriptor.js';
|
|
3
|
+
export { isInfraAuthSpec } from './infra/isInfraAuthSpec.js';
|
|
4
|
+
export { isInfraDeploymentSpec } from './infra/isInfraDeploymentSpec.js';
|
|
5
|
+
export { isInfraEnvironmentSpec } from './infra/isInfraEnvironmentSpec.js';
|
|
6
|
+
export { isInfraManifest } from './infra/isInfraManifest.js';
|
|
7
|
+
export { isInfraWorkloadSpec } from './infra/isInfraWorkloadSpec.js';
|
|
8
|
+
export { parseInfraManifest } from './infra/parseInfraManifest.js';
|
|
9
|
+
export { validateInfraAdapterSelection } from './infra/validateInfraAdapterSelection.js';
|
|
10
|
+
export { INFRA_ADAPTER_CATALOG, INFRA_RUNTIME_COMPATIBILITY } from './infraCatalog.js';
|
|
11
|
+
export type * from './types/infraAdapters.js';
|
|
12
|
+
export type * from './types/infraLifecycle.js';
|
|
13
|
+
export type * from './types/infraManifest.js';
|
|
14
|
+
export type * from './types/infraSecrets.js';
|
|
15
|
+
export type * from './types/infraTargets.js';
|
|
16
|
+
export type * from './types/infraWorkload.js';
|
|
17
17
|
//# sourceMappingURL=infra.d.ts.map
|
package/dist/infra.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infra.d.ts","sourceRoot":"","sources":["../src/infra.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"infra.d.ts","sourceRoot":"","sources":["../src/infra.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AACvF,mBAAmB,0BAA0B,CAAC;AAC9C,mBAAmB,2BAA2B,CAAC;AAC/C,mBAAmB,0BAA0B,CAAC;AAC9C,mBAAmB,yBAAyB,CAAC;AAC7C,mBAAmB,yBAAyB,CAAC;AAC7C,mBAAmB,0BAA0B,CAAC"}
|
package/dist/infra.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/** Canonical standalone infrastructure contracts, catalog and side-effect-free validation. */
|
|
2
|
-
export { isInfraAdapterDescriptor } from './infra/isInfraAdapterDescriptor';
|
|
3
|
-
export { isInfraAuthSpec } from './infra/isInfraAuthSpec';
|
|
4
|
-
export { isInfraDeploymentSpec } from './infra/isInfraDeploymentSpec';
|
|
5
|
-
export { isInfraEnvironmentSpec } from './infra/isInfraEnvironmentSpec';
|
|
6
|
-
export { isInfraManifest } from './infra/isInfraManifest';
|
|
7
|
-
export { isInfraWorkloadSpec } from './infra/isInfraWorkloadSpec';
|
|
8
|
-
export { parseInfraManifest } from './infra/parseInfraManifest';
|
|
9
|
-
export { validateInfraAdapterSelection } from './infra/validateInfraAdapterSelection';
|
|
10
|
-
export { INFRA_ADAPTER_CATALOG, INFRA_RUNTIME_COMPATIBILITY } from './infraCatalog';
|
|
2
|
+
export { isInfraAdapterDescriptor } from './infra/isInfraAdapterDescriptor.js';
|
|
3
|
+
export { isInfraAuthSpec } from './infra/isInfraAuthSpec.js';
|
|
4
|
+
export { isInfraDeploymentSpec } from './infra/isInfraDeploymentSpec.js';
|
|
5
|
+
export { isInfraEnvironmentSpec } from './infra/isInfraEnvironmentSpec.js';
|
|
6
|
+
export { isInfraManifest } from './infra/isInfraManifest.js';
|
|
7
|
+
export { isInfraWorkloadSpec } from './infra/isInfraWorkloadSpec.js';
|
|
8
|
+
export { parseInfraManifest } from './infra/parseInfraManifest.js';
|
|
9
|
+
export { validateInfraAdapterSelection } from './infra/validateInfraAdapterSelection.js';
|
|
10
|
+
export { INFRA_ADAPTER_CATALOG, INFRA_RUNTIME_COMPATIBILITY } from './infraCatalog.js';
|
|
11
11
|
//# sourceMappingURL=infra.js.map
|
package/dist/infra.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infra.js","sourceRoot":"","sources":["../src/infra.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"infra.js","sourceRoot":"","sources":["../src/infra.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC","sourcesContent":["/** Canonical standalone infrastructure contracts, catalog and side-effect-free validation. */\nexport { isInfraAdapterDescriptor } from './infra/isInfraAdapterDescriptor.js';\nexport { isInfraAuthSpec } from './infra/isInfraAuthSpec.js';\nexport { isInfraDeploymentSpec } from './infra/isInfraDeploymentSpec.js';\nexport { isInfraEnvironmentSpec } from './infra/isInfraEnvironmentSpec.js';\nexport { isInfraManifest } from './infra/isInfraManifest.js';\nexport { isInfraWorkloadSpec } from './infra/isInfraWorkloadSpec.js';\nexport { parseInfraManifest } from './infra/parseInfraManifest.js';\nexport { validateInfraAdapterSelection } from './infra/validateInfraAdapterSelection.js';\nexport { INFRA_ADAPTER_CATALOG, INFRA_RUNTIME_COMPATIBILITY } from './infraCatalog.js';\nexport type * from './types/infraAdapters.js';\nexport type * from './types/infraLifecycle.js';\nexport type * from './types/infraManifest.js';\nexport type * from './types/infraSecrets.js';\nexport type * from './types/infraTargets.js';\nexport type * from './types/infraWorkload.js';\n"]}
|
package/dist/infraCatalog.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export declare const INFRA_RUNTIME_COMPATIBILITY: {
|
|
|
8
8
|
export declare const INFRA_ADAPTER_CATALOG: {
|
|
9
9
|
readonly local: {
|
|
10
10
|
readonly id: "local";
|
|
11
|
-
readonly package: "@ankhorage/local";
|
|
11
|
+
readonly package: "@ankhorage/infra-local";
|
|
12
12
|
readonly kind: "compute";
|
|
13
13
|
readonly configVersion: 1;
|
|
14
14
|
readonly capabilities: readonly ["compute"];
|
|
@@ -17,7 +17,7 @@ export declare const INFRA_ADAPTER_CATALOG: {
|
|
|
17
17
|
};
|
|
18
18
|
readonly hetzner: {
|
|
19
19
|
readonly id: "hetzner";
|
|
20
|
-
readonly package: "@ankhorage/hetzner";
|
|
20
|
+
readonly package: "@ankhorage/infra-hetzner";
|
|
21
21
|
readonly kind: "compute";
|
|
22
22
|
readonly configVersion: 1;
|
|
23
23
|
readonly capabilities: readonly ["compute"];
|
|
@@ -26,7 +26,7 @@ export declare const INFRA_ADAPTER_CATALOG: {
|
|
|
26
26
|
};
|
|
27
27
|
readonly minikube: {
|
|
28
28
|
readonly id: "minikube";
|
|
29
|
-
readonly package: "@ankhorage/minikube";
|
|
29
|
+
readonly package: "@ankhorage/infra-minikube";
|
|
30
30
|
readonly kind: "runtime";
|
|
31
31
|
readonly configVersion: 1;
|
|
32
32
|
readonly capabilities: readonly ["runtime", "workloads", "networking"];
|
|
@@ -35,7 +35,7 @@ export declare const INFRA_ADAPTER_CATALOG: {
|
|
|
35
35
|
};
|
|
36
36
|
readonly k3s: {
|
|
37
37
|
readonly id: "k3s";
|
|
38
|
-
readonly package: "@ankhorage/k3s";
|
|
38
|
+
readonly package: "@ankhorage/infra-k3s";
|
|
39
39
|
readonly kind: "runtime";
|
|
40
40
|
readonly configVersion: 1;
|
|
41
41
|
readonly capabilities: readonly ["runtime", "workloads", "networking"];
|
|
@@ -44,7 +44,7 @@ export declare const INFRA_ADAPTER_CATALOG: {
|
|
|
44
44
|
};
|
|
45
45
|
readonly 'docker-compose': {
|
|
46
46
|
readonly id: "docker-compose";
|
|
47
|
-
readonly package: "@ankhorage/docker-compose";
|
|
47
|
+
readonly package: "@ankhorage/infra-docker-compose";
|
|
48
48
|
readonly kind: "runtime";
|
|
49
49
|
readonly configVersion: 1;
|
|
50
50
|
readonly capabilities: readonly ["runtime", "workloads", "networking"];
|
|
@@ -53,7 +53,7 @@ export declare const INFRA_ADAPTER_CATALOG: {
|
|
|
53
53
|
};
|
|
54
54
|
readonly supabase: {
|
|
55
55
|
readonly id: "supabase";
|
|
56
|
-
readonly package: "@ankhorage/supabase";
|
|
56
|
+
readonly package: "@ankhorage/infra-supabase";
|
|
57
57
|
readonly kind: "service";
|
|
58
58
|
readonly configVersion: 1;
|
|
59
59
|
readonly capabilities: readonly ["database", "auth", "objectStorage"];
|
|
@@ -62,7 +62,7 @@ export declare const INFRA_ADAPTER_CATALOG: {
|
|
|
62
62
|
};
|
|
63
63
|
readonly cerbos: {
|
|
64
64
|
readonly id: "cerbos";
|
|
65
|
-
readonly package: "@ankhorage/cerbos";
|
|
65
|
+
readonly package: "@ankhorage/infra-cerbos";
|
|
66
66
|
readonly kind: "service";
|
|
67
67
|
readonly configVersion: 1;
|
|
68
68
|
readonly capabilities: readonly ["authz"];
|
|
@@ -71,7 +71,7 @@ export declare const INFRA_ADAPTER_CATALOG: {
|
|
|
71
71
|
};
|
|
72
72
|
readonly r2: {
|
|
73
73
|
readonly id: "r2";
|
|
74
|
-
readonly package: "@ankhorage/r2";
|
|
74
|
+
readonly package: "@ankhorage/infra-r2";
|
|
75
75
|
readonly kind: "service";
|
|
76
76
|
readonly configVersion: 1;
|
|
77
77
|
readonly capabilities: readonly ["objectStorage"];
|
package/dist/infraCatalog.js
CHANGED
|
@@ -8,7 +8,7 @@ export const INFRA_RUNTIME_COMPATIBILITY = {
|
|
|
8
8
|
export const INFRA_ADAPTER_CATALOG = {
|
|
9
9
|
local: {
|
|
10
10
|
id: 'local',
|
|
11
|
-
package: '@ankhorage/local',
|
|
11
|
+
package: '@ankhorage/infra-local',
|
|
12
12
|
kind: 'compute',
|
|
13
13
|
configVersion: 1,
|
|
14
14
|
capabilities: ['compute'],
|
|
@@ -17,7 +17,7 @@ export const INFRA_ADAPTER_CATALOG = {
|
|
|
17
17
|
},
|
|
18
18
|
hetzner: {
|
|
19
19
|
id: 'hetzner',
|
|
20
|
-
package: '@ankhorage/hetzner',
|
|
20
|
+
package: '@ankhorage/infra-hetzner',
|
|
21
21
|
kind: 'compute',
|
|
22
22
|
configVersion: 1,
|
|
23
23
|
capabilities: ['compute'],
|
|
@@ -26,7 +26,7 @@ export const INFRA_ADAPTER_CATALOG = {
|
|
|
26
26
|
},
|
|
27
27
|
minikube: {
|
|
28
28
|
id: 'minikube',
|
|
29
|
-
package: '@ankhorage/minikube',
|
|
29
|
+
package: '@ankhorage/infra-minikube',
|
|
30
30
|
kind: 'runtime',
|
|
31
31
|
configVersion: 1,
|
|
32
32
|
capabilities: ['runtime', 'workloads', 'networking'],
|
|
@@ -35,7 +35,7 @@ export const INFRA_ADAPTER_CATALOG = {
|
|
|
35
35
|
},
|
|
36
36
|
k3s: {
|
|
37
37
|
id: 'k3s',
|
|
38
|
-
package: '@ankhorage/k3s',
|
|
38
|
+
package: '@ankhorage/infra-k3s',
|
|
39
39
|
kind: 'runtime',
|
|
40
40
|
configVersion: 1,
|
|
41
41
|
capabilities: ['runtime', 'workloads', 'networking'],
|
|
@@ -44,7 +44,7 @@ export const INFRA_ADAPTER_CATALOG = {
|
|
|
44
44
|
},
|
|
45
45
|
'docker-compose': {
|
|
46
46
|
id: 'docker-compose',
|
|
47
|
-
package: '@ankhorage/docker-compose',
|
|
47
|
+
package: '@ankhorage/infra-docker-compose',
|
|
48
48
|
kind: 'runtime',
|
|
49
49
|
configVersion: 1,
|
|
50
50
|
capabilities: ['runtime', 'workloads', 'networking'],
|
|
@@ -53,7 +53,7 @@ export const INFRA_ADAPTER_CATALOG = {
|
|
|
53
53
|
},
|
|
54
54
|
supabase: {
|
|
55
55
|
id: 'supabase',
|
|
56
|
-
package: '@ankhorage/supabase',
|
|
56
|
+
package: '@ankhorage/infra-supabase',
|
|
57
57
|
kind: 'service',
|
|
58
58
|
configVersion: 1,
|
|
59
59
|
capabilities: ['database', 'auth', 'objectStorage'],
|
|
@@ -62,7 +62,7 @@ export const INFRA_ADAPTER_CATALOG = {
|
|
|
62
62
|
},
|
|
63
63
|
cerbos: {
|
|
64
64
|
id: 'cerbos',
|
|
65
|
-
package: '@ankhorage/cerbos',
|
|
65
|
+
package: '@ankhorage/infra-cerbos',
|
|
66
66
|
kind: 'service',
|
|
67
67
|
configVersion: 1,
|
|
68
68
|
capabilities: ['authz'],
|
|
@@ -71,7 +71,7 @@ export const INFRA_ADAPTER_CATALOG = {
|
|
|
71
71
|
},
|
|
72
72
|
r2: {
|
|
73
73
|
id: 'r2',
|
|
74
|
-
package: '@ankhorage/r2',
|
|
74
|
+
package: '@ankhorage/infra-r2',
|
|
75
75
|
kind: 'service',
|
|
76
76
|
configVersion: 1,
|
|
77
77
|
capabilities: ['objectStorage'],
|
package/dist/infraCatalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infraCatalog.js","sourceRoot":"","sources":["../src/infraCatalog.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,GAAG,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;IACzB,gBAAgB,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;CAC9B,CAAC;AAEX,kGAAkG;AAClG,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,KAAK,EAAE;QACL,EAAE,EAAE,OAAO;QACX,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"infraCatalog.js","sourceRoot":"","sources":["../src/infraCatalog.ts"],"names":[],"mappings":"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","sourcesContent":["/** One compatibility source for manifest types, validation, discovery and configuration UIs. */\nexport const INFRA_RUNTIME_COMPATIBILITY = {\n minikube: ['local'],\n k3s: ['local', 'hetzner'],\n 'docker-compose': ['local', 'hetzner'],\n} as const;\n\n/** Canonical package identities. Capabilities describe ownership, not eight mandatory methods. */\nexport const INFRA_ADAPTER_CATALOG = {\n local: {\n id: 'local',\n package: '@ankhorage/infra-local',\n kind: 'compute',\n configVersion: 1,\n capabilities: ['compute'],\n targets: ['local-host'],\n dependencies: [],\n },\n hetzner: {\n id: 'hetzner',\n package: '@ankhorage/infra-hetzner',\n kind: 'compute',\n configVersion: 1,\n capabilities: ['compute'],\n targets: ['ssh-host'],\n dependencies: [],\n },\n minikube: {\n id: 'minikube',\n package: '@ankhorage/infra-minikube',\n kind: 'runtime',\n configVersion: 1,\n capabilities: ['runtime', 'workloads', 'networking'],\n targets: ['local-host'],\n dependencies: ['compute'],\n },\n k3s: {\n id: 'k3s',\n package: '@ankhorage/infra-k3s',\n kind: 'runtime',\n configVersion: 1,\n capabilities: ['runtime', 'workloads', 'networking'],\n targets: ['local-host', 'ssh-host'],\n dependencies: ['compute'],\n },\n 'docker-compose': {\n id: 'docker-compose',\n package: '@ankhorage/infra-docker-compose',\n kind: 'runtime',\n configVersion: 1,\n capabilities: ['runtime', 'workloads', 'networking'],\n targets: ['local-host', 'ssh-host'],\n dependencies: ['compute'],\n },\n supabase: {\n id: 'supabase',\n package: '@ankhorage/infra-supabase',\n kind: 'service',\n configVersion: 1,\n capabilities: ['database', 'auth', 'objectStorage'],\n targets: [],\n dependencies: ['workloads'],\n },\n cerbos: {\n id: 'cerbos',\n package: '@ankhorage/infra-cerbos',\n kind: 'service',\n configVersion: 1,\n capabilities: ['authz'],\n targets: [],\n dependencies: ['workloads'],\n },\n r2: {\n id: 'r2',\n package: '@ankhorage/infra-r2',\n kind: 'service',\n configVersion: 1,\n capabilities: ['objectStorage'],\n targets: [],\n dependencies: [],\n },\n 'supabase-vault': {\n id: 'supabase-vault',\n package: '@ankhorage/supabase-vault',\n kind: 'service',\n configVersion: 1,\n capabilities: ['secretStore'],\n targets: [],\n dependencies: ['database'],\n },\n} as const;\n"]}
|