@rathnasgala2/schemas 2.11.0 → 2.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +164 -56
- package/THIRD_PARTY_LICENSES.json +79 -106
- package/diagnostics/diagnostic-map.json +443 -405
- package/diagnostics/diagnostic-map.public-runtime-origins.json +5 -0
- package/docs/catalogs/schema-inventory.json +33 -54
- package/examples/valid/adapter-capability/rules.json +11 -0
- package/examples/valid/artifact-manifest/rules.json +156 -177
- package/examples/valid/build-input/rules.json +67 -63
- package/examples/valid/build-provenance/rules.json +151 -172
- package/examples/valid/deployment-intent/rules.json +152 -148
- package/examples/valid/deployment-observation/rules.json +24 -20
- package/examples/valid/deployment-receipt/rules.json +152 -148
- package/examples/valid/navigation/rules.json +2 -4
- package/examples/valid/theme-contract/rules.json +4 -1
- package/fixtures/boundary/adapter-capability/rules.json +16 -0
- package/fixtures/boundary/artifact-manifest/rules.json +195 -202
- package/fixtures/boundary/build-input/rules.json +99 -86
- package/fixtures/boundary/build-provenance/rules.json +193 -202
- package/fixtures/boundary/deployment-intent/rules.json +186 -140
- package/fixtures/boundary/deployment-observation/rules.json +68 -18
- package/fixtures/boundary/deployment-receipt/rules.json +186 -140
- package/fixtures/boundary/navigation/rules.json +2 -17
- package/fixtures/boundary/theme-contract/rules.json +34 -0
- package/fixtures/invalid/adapter-capability/SCHEMA_STRING_TOO_LONG/cases.json +11 -0
- package/fixtures/invalid/adapter-capability/UTF8_BYTE_LENGTH_INVALID/cases.json +11 -0
- package/fixtures/invalid/artifact-manifest/ASCII_BYTE_LENGTH_INVALID/cases.json +13 -0
- package/fixtures/invalid/artifact-manifest/INTEGER_RANGE_INVALID/cases.json +24 -0
- package/fixtures/invalid/artifact-manifest/REQUEST_FIELD_UNKNOWN/cases.json +19 -19
- package/fixtures/invalid/artifact-manifest/SCHEMA_CONSTANT_INVALID/cases.json +48 -48
- package/fixtures/invalid/artifact-manifest/SCHEMA_ENUM_INVALID/cases.json +11 -11
- package/fixtures/invalid/artifact-manifest/SCHEMA_FORMAT_INVALID/cases.json +0 -9
- package/fixtures/invalid/artifact-manifest/SCHEMA_NEGATED_RULE_MATCHED/cases.json +0 -11
- package/fixtures/invalid/artifact-manifest/SCHEMA_PATTERN_INVALID/cases.json +0 -22
- package/fixtures/invalid/artifact-manifest/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +1105 -1105
- package/fixtures/invalid/artifact-manifest/SCHEMA_STRING_TOO_LONG/cases.json +4 -6
- package/fixtures/invalid/artifact-manifest/SCHEMA_STRING_TOO_SHORT/cases.json +9 -11
- package/fixtures/invalid/artifact-manifest/SCHEMA_TYPE_INVALID/cases.json +22 -31
- package/fixtures/invalid/artifact-manifest/UTF8_BYTE_LENGTH_INVALID/cases.json +0 -11
- package/fixtures/invalid/build-input/INTEGER_RANGE_INVALID/cases.json +13 -0
- package/fixtures/invalid/build-input/REQUEST_FIELD_UNKNOWN/cases.json +32 -32
- package/fixtures/invalid/build-input/SCHEMA_CONSTANT_INVALID/cases.json +11 -11
- package/fixtures/invalid/build-input/SCHEMA_ENUM_INVALID/cases.json +11 -11
- package/fixtures/invalid/build-input/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +78 -78
- package/fixtures/invalid/build-input/SCHEMA_TYPE_INVALID/cases.json +51 -18
- package/fixtures/invalid/build-provenance/ASCII_BYTE_LENGTH_INVALID/cases.json +13 -0
- package/fixtures/invalid/build-provenance/INTEGER_RANGE_INVALID/cases.json +22 -0
- package/fixtures/invalid/build-provenance/REQUEST_FIELD_UNKNOWN/cases.json +56 -56
- package/fixtures/invalid/build-provenance/SCHEMA_CONSTANT_INVALID/cases.json +37 -37
- package/fixtures/invalid/build-provenance/SCHEMA_ENUM_INVALID/cases.json +11 -11
- package/fixtures/invalid/build-provenance/SCHEMA_FORMAT_INVALID/cases.json +0 -9
- package/fixtures/invalid/build-provenance/SCHEMA_NEGATED_RULE_MATCHED/cases.json +0 -11
- package/fixtures/invalid/build-provenance/SCHEMA_PATTERN_INVALID/cases.json +0 -22
- package/fixtures/invalid/build-provenance/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +927 -927
- package/fixtures/invalid/build-provenance/SCHEMA_STRING_TOO_LONG/cases.json +9 -11
- package/fixtures/invalid/build-provenance/SCHEMA_STRING_TOO_SHORT/cases.json +8 -10
- package/fixtures/invalid/build-provenance/SCHEMA_TYPE_INVALID/cases.json +20 -25
- package/fixtures/invalid/build-provenance/UTF8_BYTE_LENGTH_INVALID/cases.json +0 -11
- package/fixtures/invalid/deployment-intent/INTEGER_RANGE_INVALID/cases.json +24 -0
- package/fixtures/invalid/deployment-intent/REQUEST_FIELD_UNKNOWN/cases.json +30 -30
- package/fixtures/invalid/deployment-intent/SCHEMA_CONSTANT_INVALID/cases.json +41 -41
- package/fixtures/invalid/deployment-intent/SCHEMA_ENUM_INVALID/cases.json +11 -11
- package/fixtures/invalid/deployment-intent/SCHEMA_FORMAT_INVALID/cases.json +0 -9
- package/fixtures/invalid/deployment-intent/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +1209 -1209
- package/fixtures/invalid/deployment-intent/SCHEMA_STRING_TOO_LONG/cases.json +9 -0
- package/fixtures/invalid/deployment-intent/SCHEMA_STRING_TOO_SHORT/cases.json +9 -0
- package/fixtures/invalid/deployment-intent/SCHEMA_TYPE_INVALID/cases.json +22 -20
- package/fixtures/invalid/deployment-observation/INTEGER_RANGE_INVALID/cases.json +24 -0
- package/fixtures/invalid/deployment-observation/REQUEST_FIELD_UNKNOWN/cases.json +16 -16
- package/fixtures/invalid/deployment-observation/SCHEMA_FORMAT_INVALID/cases.json +0 -9
- package/fixtures/invalid/deployment-observation/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +39 -39
- package/fixtures/invalid/deployment-observation/SCHEMA_STRING_TOO_LONG/cases.json +11 -0
- package/fixtures/invalid/deployment-observation/SCHEMA_STRING_TOO_SHORT/cases.json +11 -0
- package/fixtures/invalid/deployment-observation/SCHEMA_TYPE_INVALID/cases.json +11 -11
- package/fixtures/invalid/deployment-receipt/INTEGER_RANGE_INVALID/cases.json +24 -0
- package/fixtures/invalid/deployment-receipt/REQUEST_FIELD_UNKNOWN/cases.json +70 -70
- package/fixtures/invalid/deployment-receipt/SCHEMA_CONSTANT_INVALID/cases.json +36 -36
- package/fixtures/invalid/deployment-receipt/SCHEMA_ENUM_INVALID/cases.json +11 -11
- package/fixtures/invalid/deployment-receipt/SCHEMA_FORMAT_INVALID/cases.json +0 -9
- package/fixtures/invalid/deployment-receipt/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +1304 -1304
- package/fixtures/invalid/deployment-receipt/SCHEMA_STRING_TOO_LONG/cases.json +9 -0
- package/fixtures/invalid/deployment-receipt/SCHEMA_STRING_TOO_SHORT/cases.json +9 -0
- package/fixtures/invalid/deployment-receipt/SCHEMA_TYPE_INVALID/cases.json +22 -20
- package/fixtures/invalid/navigation/SCHEMA_ARRAY_TOO_LONG/cases.json +0 -15
- package/fixtures/invalid/navigation/SCHEMA_CONSTANT_INVALID/cases.json +11 -0
- package/fixtures/invalid/navigation/SCHEMA_TYPE_INVALID/cases.json +0 -11
- package/fixtures/invalid/theme-contract/INTEGER_RANGE_INVALID/cases.json +11 -0
- package/fixtures/invalid/theme-contract/SCHEMA_FORMAT_INVALID/cases.json +0 -9
- package/fixtures/invalid/theme-contract/SCHEMA_STRING_TOO_LONG/cases.json +9 -0
- package/fixtures/invalid/theme-contract/SCHEMA_STRING_TOO_SHORT/cases.json +9 -0
- package/fixtures/manifest.json +3217 -2930
- package/fixtures/unknown-field/adapter-capability/rules.json +2 -0
- package/fixtures/unknown-field/artifact-manifest/rules.json +111 -114
- package/fixtures/unknown-field/build-input/rules.json +36 -32
- package/fixtures/unknown-field/build-provenance/rules.json +111 -114
- package/fixtures/unknown-field/deployment-intent/rules.json +109 -105
- package/fixtures/unknown-field/deployment-observation/rules.json +24 -20
- package/fixtures/unknown-field/deployment-receipt/rules.json +109 -105
- package/fixtures/unknown-field/navigation/rules.json +1 -3
- package/fixtures/unknown-field/theme-contract/rules.json +3 -0
- package/generated/browser/runtime-origins-validator-core.d.mts +10 -0
- package/generated/browser/runtime-origins-validator-core.mjs +35 -0
- package/generated/browser/validator-core.d.mts +10 -0
- package/generated/browser/validator-core.mjs +80 -0
- package/generated/typescript/contracts/artifact-manifest.d.ts +49 -48
- package/generated/typescript/contracts/build-input.d.ts +15 -15
- package/generated/typescript/contracts/build-provenance.d.ts +51 -50
- package/generated/typescript/contracts/deployment-intent.d.ts +6 -6
- package/generated/typescript/contracts/deployment-observation.d.ts +1 -1
- package/generated/typescript/contracts/deployment-receipt.d.ts +5 -5
- package/generated/typescript/contracts/navigation.d.ts +1 -1
- package/generated/typescript/index.js +11 -37
- package/openapi/http-catalog.json +2 -2
- package/openapi/openapi.yaml +18 -10
- package/package.json +19 -16
- package/sbom.cdx.json +23 -23
- package/schemas/adapter-capability.schema.json +5 -1
- package/schemas/appearance.schema.json +1 -1
- package/schemas/artifact-manifest.schema.json +15 -18
- package/schemas/build-input.schema.json +18 -11
- package/schemas/build-provenance.schema.json +15 -18
- package/schemas/deployment-intent.schema.json +13 -8
- package/schemas/deployment-observation.schema.json +10 -5
- package/schemas/deployment-receipt.schema.json +12 -7
- package/schemas/navigation.schema.json +5 -26
- package/schemas/theme-contract.schema.json +4 -2
- package/src/index.js +2 -2
- package/src/internal/browser-schema-validator.js +43 -0
- package/src/internal/format-validators.js +1 -1
- package/src/internal/gala-keywords.js +148 -0
- package/src/internal/validator-core.js +244 -108
- package/src/runtime-origins.js +18 -18
- package/types/index.d.ts +2 -2
- package/types/internal/browser-schema-validator.d.ts +16 -0
- package/types/internal/format-validators.d.ts +1 -1
- package/types/internal/gala-keywords.d.ts +68 -0
- package/types/internal/validator-core.d.ts +80 -1
- package/compatibility/compatibility.json +0 -594
- package/generated/java/src/main/java/io/gala/schema/generated/GalaSchemaRegistry.java +0 -67
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityAdapterConfigurationCapabilities.java +0 -24
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityAdapterIdentity.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityCapabilityDecision.java +0 -62
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityCredentialEgressProfile.java +0 -35
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityDestinationIdentity.java +0 -25
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityDestinationProviderCoordinates.java +0 -19
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityDocument.java +0 -52
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityFilesystemProviderLimits.java +0 -32
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityGithubActionsOidcOriginCatalog.java +0 -25
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityHttpProviderLimits.java +0 -72
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemAllowlist.java +0 -21
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemAllowlistEntry.java +0 -28
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemCapabilityEvidence.java +0 -42
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemControlPublication.java +0 -26
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemControlRow.java +0 -44
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemFailureEvidence.java +0 -40
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemObservationEvidence.java +0 -40
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemPlatform.java +0 -25
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemProbeSummary.java +0 -32
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemProbeTranscript.java +0 -25
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemReplacement.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemSurfaceIdentity.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityManagedExecutionBudget.java +0 -26
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityPagesOidcCredentialEgress.java +0 -30
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityProviderCallClassBinding.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityProviderCredentialEgress.java +0 -26
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityProviderCredentialHeader.java +0 -24
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityProviderDerivedHeader.java +0 -18
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityProviderFixedHeader.java +0 -18
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityProviderRequestTemplate.java +0 -39
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilitySpacesControlPlaneBinding.java +0 -32
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilitySpacesControlPlaneRequest.java +0 -26
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilitySpacesControlPlaneRequestCatalog.java +0 -31
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilitySpacesControlPlaneResponseCatalog.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilitySpacesWebsiteConfiguration.java +0 -24
- package/generated/java/src/main/java/io/gala/schema/generated/model/AppearanceColorMode.java +0 -19
- package/generated/java/src/main/java/io/gala/schema/generated/model/AppearanceDocument.java +0 -37
- package/generated/java/src/main/java/io/gala/schema/generated/model/AppearanceExtensionMap.java +0 -15
- package/generated/java/src/main/java/io/gala/schema/generated/model/AppearanceSemanticTokens.java +0 -15
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestActionPinEvidence.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestArtifactLicenseConclusion.java +0 -21
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestAssertedWorkload.java +0 -44
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestBuildSandboxEvidence.java +0 -38
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestDocument.java +0 -73
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestFinding.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestAsset.java +0 -24
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestCompositionIdentity.java +0 -25
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestExcludedInput.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestIncludedSource.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestRedirect.java +0 -24
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestRoute.java +0 -28
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestSourceIdentity.java +0 -26
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestValidationEvidence.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestMeasurement.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestPackageIdentity.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestRenderPolicyIdentity.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestReproducibleBuildRecord.java +0 -56
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestWorkflowCarrierEvidence.java +0 -26
- package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestWorkflowFileEvidence.java +0 -26
- package/generated/java/src/main/java/io/gala/schema/generated/model/AuthorDocument.java +0 -33
- package/generated/java/src/main/java/io/gala/schema/generated/model/AuthorExtensionMap.java +0 -15
- package/generated/java/src/main/java/io/gala/schema/generated/model/AuthorLocalizedAuthor.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/AuthorSocialLink.java +0 -19
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputAdapterIdentity.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputAppearanceNormalized.java +0 -33
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputAuthorNormalized.java +0 -31
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputBuildPackages.java +0 -25
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputColorMode.java +0 -19
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputContentBuildRecord.java +0 -33
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputContentFrontmatterNormalized.java +0 -44
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputDestinationCapabilityProfile.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputDocument.java +0 -51
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputLocalizedAuthor.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputModuleBuildSelection.java +0 -15
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputNavigationItem.java +0 -23
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputNavigationLeaf.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputNavigationNormalized.java +0 -21
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputPackageIdentity.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputPublicationNormalized.java +0 -39
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputRenderPolicyIdentity.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputRenderableBody.java +0 -26
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputRepositorySnapshot.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputResolvedFile.java +0 -18
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputResolvedMedia.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputSemanticTokens.java +0 -15
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputSocialLink.java +0 -19
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceActionPinEvidence.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceArtifactLicenseConclusion.java +0 -21
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceAssertedWorkload.java +0 -44
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceBuildSandboxEvidence.java +0 -38
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceDocument.java +0 -69
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceFinding.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestAsset.java +0 -24
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestCompositionIdentity.java +0 -25
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestExcludedInput.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestIncludedSource.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestRedirect.java +0 -24
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestRoute.java +0 -28
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestSourceIdentity.java +0 -26
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestValidationEvidence.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceMeasurement.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenancePackageIdentity.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceRenderPolicyIdentity.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceReproducibleBuildRecord.java +0 -56
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceWorkflowCarrierEvidence.java +0 -26
- package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceWorkflowFileEvidence.java +0 -26
- package/generated/java/src/main/java/io/gala/schema/generated/model/ContentFrontmatterDocument.java +0 -50
- package/generated/java/src/main/java/io/gala/schema/generated/model/ContentFrontmatterExtensionMap.java +0 -15
- package/generated/java/src/main/java/io/gala/schema/generated/model/ContentFrontmatterMediaRef.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentActivationBasis.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentActivationDetectionObservation.java +0 -33
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentActivationDetectionPlan.java +0 -44
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentActivationDetectionProbe.java +0 -52
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentAdapterIdentity.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentCancellationFinalizationEvidence.java +0 -41
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentDeadlineFinalizationEvidence.java +0 -39
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentDeadlineFinalizationStream.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentDeploymentPolicyDecision.java +0 -75
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentDestinationIdentity.java +0 -25
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentDestinationMutationAuthority.java +0 -36
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentDestinationProviderCoordinates.java +0 -19
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentDocument.java +0 -136
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentExpectedRedirectHop.java +0 -23
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentObservedVerificationHeader.java +0 -19
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentPackageIdentity.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentPagesInterveningRunAttempt.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentPagesReconciliationCommand.java +0 -48
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentPagesReconciliationRecovery.java +0 -41
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentPagesRunAttemptGapProof.java +0 -27
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentPublicGenerationMarkerPayload.java +0 -24
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentPublicProbeObservation.java +0 -54
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentRecognizedPriorRouteContract.java +0 -30
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentRenderPolicyIdentity.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentReproducibleBuildRecord.java +0 -56
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentSupersessionFinalizationEvidence.java +0 -45
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentVerificationHeaderExpectation.java +0 -18
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentVerificationPlanTarget.java +0 -52
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationActivationDetectionObservation.java +0 -33
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationActivationDetectionProbe.java +0 -52
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationAdapterIdentity.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationCancellationFinalizationEvidence.java +0 -41
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationDeadlineFinalizationEvidence.java +0 -39
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationDeadlineFinalizationStream.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationDestinationIdentity.java +0 -25
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationDestinationProviderCoordinates.java +0 -19
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationDocument.java +0 -57
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationExpectedRedirectHop.java +0 -23
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationObservedVerificationHeader.java +0 -19
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationPackageIdentity.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationPublicProbeObservation.java +0 -54
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationRecognizedPriorRouteContract.java +0 -30
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationRenderPolicyIdentity.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationSupersessionFinalizationEvidence.java +0 -45
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationVerificationHeaderExpectation.java +0 -18
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationVerificationPlanTarget.java +0 -52
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptActivationBasis.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptActivationDetectionObservation.java +0 -33
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptActivationDetectionPlan.java +0 -44
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptActivationDetectionProbe.java +0 -52
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptAdapterIdentity.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptCancellationFinalizationEvidence.java +0 -41
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeadlineFinalizationEvidence.java +0 -39
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeadlineFinalizationStream.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentAttempt.java +0 -38
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentFailure.java +0 -24
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentObservation.java +0 -53
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentPolicyDecision.java +0 -75
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentStageEvidence.java +0 -36
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentStageInput.java +0 -26
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentStageObservationEvidenceReference.java +0 -18
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentStageResult.java +0 -31
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDestinationIdentity.java +0 -25
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDestinationMutationAuthority.java +0 -36
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDestinationProviderCoordinates.java +0 -19
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDocument.java +0 -105
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptExpectedRedirectHop.java +0 -23
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptFinding.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptObservedVerificationHeader.java +0 -19
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptPackageIdentity.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptPagesInterveningRunAttempt.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptPagesReconciliationCommand.java +0 -48
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptPagesReconciliationRecovery.java +0 -41
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptPagesRunAttemptGapProof.java +0 -27
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptPublicGenerationMarkerPayload.java +0 -24
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptPublicProbeObservation.java +0 -54
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptRecognizedPriorRouteContract.java +0 -30
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptRenderPolicyIdentity.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptReproducibleBuildRecord.java +0 -56
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptSupersessionFinalizationEvidence.java +0 -45
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptVerificationHeaderExpectation.java +0 -18
- package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptVerificationPlanTarget.java +0 -52
- package/generated/java/src/main/java/io/gala/schema/generated/model/EventEnvelopeDocument.java +0 -46
- package/generated/java/src/main/java/io/gala/schema/generated/model/EventEnvelopeRegisteredEventPayload.java +0 -26
- package/generated/java/src/main/java/io/gala/schema/generated/model/LockDependencyEdge.java +0 -18
- package/generated/java/src/main/java/io/gala/schema/generated/model/LockDocument.java +0 -39
- package/generated/java/src/main/java/io/gala/schema/generated/model/LockLockedPackage.java +0 -26
- package/generated/java/src/main/java/io/gala/schema/generated/model/LockLockedTemplate.java +0 -28
- package/generated/java/src/main/java/io/gala/schema/generated/model/LockPackageIdentity.java +0 -22
- package/generated/java/src/main/java/io/gala/schema/generated/model/NavigationDocument.java +0 -25
- package/generated/java/src/main/java/io/gala/schema/generated/model/NavigationExtensionMap.java +0 -15
- package/generated/java/src/main/java/io/gala/schema/generated/model/NavigationNavigationItem.java +0 -23
- package/generated/java/src/main/java/io/gala/schema/generated/model/NavigationNavigationLeaf.java +0 -23
- package/generated/java/src/main/java/io/gala/schema/generated/model/ProblemDocument.java +0 -37
- package/generated/java/src/main/java/io/gala/schema/generated/model/ProblemFieldError.java +0 -18
- package/generated/java/src/main/java/io/gala/schema/generated/model/PublicGenerationMarkerDocument.java +0 -24
- package/generated/java/src/main/java/io/gala/schema/generated/model/PublicRuntimeOriginsDocument.java +0 -44
- package/generated/java/src/main/java/io/gala/schema/generated/model/PublicationDocument.java +0 -41
- package/generated/java/src/main/java/io/gala/schema/generated/model/PublicationExtensionMap.java +0 -15
- package/generated/java/src/main/java/io/gala/schema/generated/model/PublicationFooterCard.java +0 -23
- package/generated/java/src/main/java/io/gala/schema/generated/model/PublicationPublicationProfile.java +0 -18
- package/generated/java/src/main/java/io/gala/schema/generated/model/PublicationSocialLink.java +0 -19
- package/generated/java/src/main/java/io/gala/schema/generated/model/RepositoryAssetRoot.java +0 -16
- package/generated/java/src/main/java/io/gala/schema/generated/model/RepositoryContentRoot.java +0 -23
- package/generated/java/src/main/java/io/gala/schema/generated/model/RepositoryDocument.java +0 -41
- package/generated/java/src/main/java/io/gala/schema/generated/model/RepositoryExtensionMap.java +0 -15
- package/generated/java/src/main/java/io/gala/schema/generated/model/RepositoryGeneratedRoot.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/TemplateCompositionDocument.java +0 -18
- package/generated/java/src/main/java/io/gala/schema/generated/model/ThemeContractDocument.java +0 -53
- package/generated/java/src/main/java/io/gala/schema/generated/model/ThemeContractPassiveAsset.java +0 -24
- package/generated/java/src/main/java/io/gala/schema/generated/model/ThemeContractThemeBudgets.java +0 -20
- package/generated/java/src/main/java/io/gala/schema/generated/model/ThemeContractThemeToken.java +0 -22
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/adapter-capability.schema.json +0 -2689
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/appearance.schema.json +0 -226
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/artifact-manifest.schema.json +0 -1063
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/author.schema.json +0 -231
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/build-input.schema.json +0 -866
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/build-provenance.schema.json +0 -937
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/content-frontmatter.schema.json +0 -241
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/deployment-intent.schema.json +0 -2067
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/deployment-observation.schema.json +0 -1654
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/deployment-receipt.schema.json +0 -5546
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/event-envelope.schema.json +0 -195
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/lock.schema.json +0 -326
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/navigation.schema.json +0 -229
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/problem.schema.json +0 -194
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/public-generation-marker.schema.json +0 -142
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/public-runtime-origins.schema.json +0 -183
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/publication.schema.json +0 -248
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/repository.schema.json +0 -219
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/template-composition.schema.json +0 -133
- package/generated/java/src/main/resources/io/gala/schema/generated/schemas/theme-contract.schema.json +0 -850
- package/generated/typescript/validator-core.cjs +0 -17
- package/openapi/generator/spring.json +0 -22
- package/openapi/generator/typescript-fetch.json +0 -19
- package/openapi/source/authentication.yaml +0 -557
- package/openapi/source/callbacks.yaml +0 -332
- package/openapi/source/components.yaml +0 -5670
- package/openapi/source/github.yaml +0 -351
- package/openapi/source/internal.yaml +0 -71
- package/openapi/source/membership-invitations.yaml +0 -203
- package/openapi/source/organizations.yaml +0 -11144
- package/openapi/source/root.yaml +0 -20
- package/openapi/source/self.yaml +0 -1940
- package/openapi/source/session.yaml +0 -308
- package/openapi/source/workloads.yaml +0 -744
- package/src/internal/build-artifact-semantics.js +0 -4391
- package/src/internal/deployment-record-semantics.js +0 -7567
- package/src/internal/deployment-stage-semantics.js +0 -1207
- package/src/internal/http-problem-contract.js +0 -35
- package/src/internal/managed-evidence-journal.js +0 -160
- package/src/internal/public-runtime-origins.js +0 -143
- package/src/internal/theme-composition-semantics.js +0 -2441
- package/types/internal/build-artifact-semantics.d.ts +0 -77
- package/types/internal/deployment-record-semantics.d.ts +0 -313
- package/types/internal/deployment-stage-semantics.d.ts +0 -108
- package/types/internal/http-problem-contract.d.ts +0 -4
- package/types/internal/managed-evidence-journal.d.ts +0 -26
- package/types/internal/public-runtime-origins.d.ts +0 -22
- package/types/internal/theme-composition-semantics.d.ts +0 -143
|
@@ -1,17 +1,39 @@
|
|
|
1
1
|
import Ajv2020Module from 'ajv/dist/2020.js';
|
|
2
2
|
import formatsPlugin from 'ajv-formats';
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
import {
|
|
5
|
+
galaAsciiByteLength,
|
|
6
|
+
galaDecisionPhase,
|
|
7
|
+
galaGraphemeLength,
|
|
8
|
+
galaMaxCanonicalBytes,
|
|
9
|
+
galaMaximum,
|
|
10
|
+
galaUtf8ByteLength,
|
|
11
|
+
} from './gala-keywords.js';
|
|
12
|
+
import { assertUnicodeScalarString } from './unicode17.js';
|
|
7
13
|
|
|
8
14
|
const Ajv2020 = /** @type {typeof import('ajv/dist/2020.js').default} */ (
|
|
9
15
|
/** @type {unknown} */ (Ajv2020Module)
|
|
10
16
|
);
|
|
11
17
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
18
|
+
// Every S0 root's `$id` is immutable at `2.0.0`: contract *content* moves
|
|
19
|
+
// forward in the npm package version (2.0.0 -> 2.12.0 and beyond), never in
|
|
20
|
+
// the `$id`, so the same schema identity keeps resolving across releases.
|
|
21
|
+
// This constant is that policy made explicit and enforced -- see
|
|
22
|
+
// docs/COMPATIBILITY.md.
|
|
23
|
+
const IMMUTABLE_SCHEMA_VERSION = '2.0.0';
|
|
24
|
+
|
|
25
|
+
const SCHEMA_ID_PATTERN = /^urn:gala:(schema|metadata):([a-z0-9-]+):([^:]+)$/u;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Stable fallback diagnostic code for a rule/keyword pair the committed
|
|
29
|
+
* diagnostic map has no entry for. `validateGalaDocument` is on the request
|
|
30
|
+
* path in both the api and the App; if the compiled schemas and the
|
|
31
|
+
* diagnostic map ever fall out of step (a stale published tarball, a partial
|
|
32
|
+
* upgrade, a schema patch applied without `npm run diagnostics:generate`),
|
|
33
|
+
* an ordinary invalid input must still come back as a rejected result, not
|
|
34
|
+
* an exception thrown out of the consumer's validation call (SCH-H14).
|
|
35
|
+
*/
|
|
36
|
+
const UNMAPPED_RULE_CODE = 'SCHEMA_RULE_UNMAPPED';
|
|
15
37
|
|
|
16
38
|
/**
|
|
17
39
|
* Recover a contract's kebab-case name from its exact immutable schema
|
|
@@ -24,10 +46,22 @@ const SCHEMA_ID_SUFFIX = ':2.0.0';
|
|
|
24
46
|
* @returns {string} contract name
|
|
25
47
|
*/
|
|
26
48
|
function contractFromSchemaId(schemaId) {
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
49
|
+
const match = SCHEMA_ID_PATTERN.exec(schemaId);
|
|
50
|
+
if (match === null) {
|
|
51
|
+
throw new Error(
|
|
52
|
+
`Schema identity "${schemaId}" does not match urn:gala:(schema|metadata):<contract>:<version>`,
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
const contract = match[2] ?? '';
|
|
56
|
+
const version = match[3] ?? '';
|
|
57
|
+
if (version !== IMMUTABLE_SCHEMA_VERSION) {
|
|
58
|
+
throw new Error(
|
|
59
|
+
`Schema identity "${schemaId}" has version "${version}"; every root's $id is pinned at ` +
|
|
60
|
+
`"${IMMUTABLE_SCHEMA_VERSION}" and never bumps (see docs/COMPATIBILITY.md) -- contract ` +
|
|
61
|
+
`content changes go in the package version instead.`,
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
return contract;
|
|
31
65
|
}
|
|
32
66
|
|
|
33
67
|
/**
|
|
@@ -47,10 +81,34 @@ function contractFromSchemaId(schemaId) {
|
|
|
47
81
|
* @typedef {{
|
|
48
82
|
* schemasById: ReadonlyMap<string, Record<string, unknown>>,
|
|
49
83
|
* validatorsById: ReadonlyMap<string, import('ajv').ValidateFunction>,
|
|
50
|
-
*
|
|
84
|
+
* strictAjv: import('ajv/dist/2020.js').default,
|
|
85
|
+
* legacyAjv: import('ajv/dist/2020.js').default,
|
|
86
|
+
* fragmentAjv: import('ajv/dist/2020.js').default,
|
|
87
|
+
* cardinalityValidators: Map<string, import('ajv').ValidateFunction>
|
|
51
88
|
* }} Registry
|
|
52
89
|
*/
|
|
53
90
|
|
|
91
|
+
/**
|
|
92
|
+
* The callable shape both an `ajv.compile()`-produced validate function and
|
|
93
|
+
* a precompiled standalone one share: callable, with `.errors` populated
|
|
94
|
+
* (Ajv error objects) on rejection. `ajv.compile()`'s richer
|
|
95
|
+
* `import('ajv').ValidateFunction` additionally carries `.schema`/
|
|
96
|
+
* `.schemaEnv`, which a standalone-generated function does not.
|
|
97
|
+
*
|
|
98
|
+
* @typedef {((value: unknown) => boolean) & {errors?: AjvError[] | null}} MinimalValidateFunction
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* The subset of `Registry` document-level validation actually needs: just a
|
|
103
|
+
* schema-identity-keyed map of validate functions, precompiled or
|
|
104
|
+
* `ajv.compile()`-produced alike (SCH-C2's `createPrecompiledValidatorSuite`
|
|
105
|
+
* constructs one of these without ever building a real `Registry`).
|
|
106
|
+
*
|
|
107
|
+
* @typedef {{
|
|
108
|
+
* validatorsById: ReadonlyMap<string, MinimalValidateFunction>
|
|
109
|
+
* }} DocumentValidatorRegistry
|
|
110
|
+
*/
|
|
111
|
+
|
|
54
112
|
/** @typedef {import('ajv').ErrorObject} AjvError */
|
|
55
113
|
|
|
56
114
|
/**
|
|
@@ -73,108 +131,46 @@ function contractFromSchemaId(schemaId) {
|
|
|
73
131
|
*/
|
|
74
132
|
|
|
75
133
|
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
* @returns {boolean} whether the value is in range
|
|
81
|
-
*/
|
|
82
|
-
function withinBounds(value, bounds) {
|
|
83
|
-
return (
|
|
84
|
-
(bounds.minimum === undefined || value >= bounds.minimum) &&
|
|
85
|
-
(bounds.maximum === undefined || value <= bounds.maximum)
|
|
86
|
-
);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Register Gala's assertion keywords.
|
|
134
|
+
* Register Gala's assertion keywords, wiring each of `gala-keywords.js`'s
|
|
135
|
+
* pure implementations into a closure-based `ajv.addKeyword` definition.
|
|
136
|
+
* `strict: true` would otherwise refuse to compile a schema using any of
|
|
137
|
+
* these as an unknown keyword (SCH-H1).
|
|
91
138
|
*
|
|
92
139
|
* @param {import('ajv/dist/2020.js').default} ajv registry
|
|
93
140
|
* @returns {void}
|
|
94
141
|
*/
|
|
95
142
|
function addGalaKeywords(ajv) {
|
|
143
|
+
ajv.addKeyword({
|
|
144
|
+
keyword: 'x-gala-decision-phase',
|
|
145
|
+
validate: galaDecisionPhase,
|
|
146
|
+
});
|
|
96
147
|
ajv.addKeyword({
|
|
97
148
|
keyword: 'x-gala-asciiByteLength',
|
|
98
149
|
schemaType: 'object',
|
|
99
150
|
type: 'string',
|
|
100
|
-
validate:
|
|
101
|
-
/** @type {{minimum?: number, maximum?: number}} */ bounds,
|
|
102
|
-
/** @type {string} */ value,
|
|
103
|
-
) =>
|
|
104
|
-
[...value].every((character) => character.charCodeAt(0) <= 0x7f) &&
|
|
105
|
-
withinBounds(value.length, bounds),
|
|
151
|
+
validate: galaAsciiByteLength,
|
|
106
152
|
});
|
|
107
153
|
ajv.addKeyword({
|
|
108
154
|
keyword: 'x-gala-utf8ByteLength',
|
|
109
155
|
schemaType: 'object',
|
|
110
156
|
type: 'string',
|
|
111
|
-
validate:
|
|
112
|
-
/** @type {{minimum?: number, maximum?: number}} */ bounds,
|
|
113
|
-
/** @type {string} */ value,
|
|
114
|
-
) => {
|
|
115
|
-
try {
|
|
116
|
-
assertUnicodeScalarString(value);
|
|
117
|
-
return withinBounds(utf8Bytes(value).length, bounds);
|
|
118
|
-
} catch (error) {
|
|
119
|
-
if (
|
|
120
|
-
error instanceof TypeError &&
|
|
121
|
-
error.message === 'UNICODE_SCALAR_INVALID'
|
|
122
|
-
) {
|
|
123
|
-
return false;
|
|
124
|
-
}
|
|
125
|
-
throw error;
|
|
126
|
-
}
|
|
127
|
-
},
|
|
157
|
+
validate: galaUtf8ByteLength,
|
|
128
158
|
});
|
|
129
159
|
ajv.addKeyword({
|
|
130
160
|
keyword: 'x-gala-graphemeLength',
|
|
131
161
|
schemaType: 'object',
|
|
132
162
|
type: 'string',
|
|
133
|
-
validate:
|
|
134
|
-
/** @type {{minimum?: number, maximum?: number}} */ bounds,
|
|
135
|
-
/** @type {string} */ value,
|
|
136
|
-
) => {
|
|
137
|
-
try {
|
|
138
|
-
return withinBounds(graphemeLength17(value), bounds);
|
|
139
|
-
} catch (error) {
|
|
140
|
-
if (
|
|
141
|
-
error instanceof TypeError &&
|
|
142
|
-
error.message === 'UNICODE_SCALAR_INVALID'
|
|
143
|
-
) {
|
|
144
|
-
return false;
|
|
145
|
-
}
|
|
146
|
-
throw error;
|
|
147
|
-
}
|
|
148
|
-
},
|
|
163
|
+
validate: galaGraphemeLength,
|
|
149
164
|
});
|
|
150
165
|
ajv.addKeyword({
|
|
151
166
|
keyword: 'x-gala-maxCanonicalBytes',
|
|
152
167
|
schemaType: 'number',
|
|
153
|
-
validate:
|
|
154
|
-
try {
|
|
155
|
-
return canonicalizeJcsBytes(value).byteLength <= maximum;
|
|
156
|
-
} catch {
|
|
157
|
-
return false;
|
|
158
|
-
}
|
|
159
|
-
},
|
|
168
|
+
validate: galaMaxCanonicalBytes,
|
|
160
169
|
});
|
|
161
170
|
ajv.addKeyword({
|
|
162
171
|
keyword: 'x-gala-maximum',
|
|
163
172
|
schemaType: ['number', 'string'],
|
|
164
|
-
validate:
|
|
165
|
-
/** @type {number | string} */ maximum,
|
|
166
|
-
/** @type {unknown} */ value,
|
|
167
|
-
) => {
|
|
168
|
-
if (typeof value !== 'string' && typeof value !== 'number') return true;
|
|
169
|
-
if (typeof value === 'string' && !/^(?:0|[1-9][0-9]*)$/u.test(value)) {
|
|
170
|
-
return true;
|
|
171
|
-
}
|
|
172
|
-
try {
|
|
173
|
-
return BigInt(value) <= BigInt(maximum);
|
|
174
|
-
} catch {
|
|
175
|
-
return true;
|
|
176
|
-
}
|
|
177
|
-
},
|
|
173
|
+
validate: galaMaximum,
|
|
178
174
|
});
|
|
179
175
|
}
|
|
180
176
|
|
|
@@ -197,17 +193,63 @@ function collectFormats(value, formats) {
|
|
|
197
193
|
}
|
|
198
194
|
|
|
199
195
|
/**
|
|
200
|
-
*
|
|
196
|
+
* Roots whose `allOf`/`if`/`then`/`else` composition Ajv's `strictTypes`/
|
|
197
|
+
* `strictRequired` cannot see across: a conditional branch's `properties`/
|
|
198
|
+
* `required` describes a value or a required member declared by a
|
|
199
|
+
* *sibling* branch in the same `allOf`, not locally, and strict mode flags
|
|
200
|
+
* that as if it were a typo (SCH-H1).
|
|
201
|
+
*
|
|
202
|
+
* This is a **shrinking-only** allowlist: `test/t15-strict-allowlist.test.js`
|
|
203
|
+
* asserts it is a subset of the set recorded there when the allowlist was
|
|
204
|
+
* introduced, so a new root or a reconciled `$defs` shape can be added to
|
|
205
|
+
* this file only by removing an existing entry, never by adding one net
|
|
206
|
+
* new. Every root *not* listed here already compiles clean under full
|
|
207
|
+
* `strictTypes`/`strictRequired` and must stay that way.
|
|
208
|
+
*
|
|
209
|
+
* As of this allowlist's introduction, the 14 listed roots account for 756
|
|
210
|
+
* strict-mode diagnostics (`strictTypes` + `strictRequired` combined); the
|
|
211
|
+
* remaining 6 roots (`appearance`, `event-envelope`,
|
|
212
|
+
* `public-generation-marker`, `public-runtime-origins`, `repository`,
|
|
213
|
+
* `template-composition`) have zero.
|
|
214
|
+
*
|
|
215
|
+
* @type {ReadonlySet<string>}
|
|
216
|
+
*/
|
|
217
|
+
export const LEGACY_STRICT_TYPES_ALLOWLIST = new Set([
|
|
218
|
+
'adapter-capability',
|
|
219
|
+
'artifact-manifest',
|
|
220
|
+
'author',
|
|
221
|
+
'build-input',
|
|
222
|
+
'build-provenance',
|
|
223
|
+
'content-frontmatter',
|
|
224
|
+
'deployment-intent',
|
|
225
|
+
'deployment-observation',
|
|
226
|
+
'deployment-receipt',
|
|
227
|
+
'lock',
|
|
228
|
+
'navigation',
|
|
229
|
+
'problem',
|
|
230
|
+
'publication',
|
|
231
|
+
'theme-contract',
|
|
232
|
+
]);
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Build one Ajv instance with Gala's formats and keywords registered.
|
|
201
236
|
*
|
|
202
237
|
* @param {readonly Record<string, unknown>[]} schemas schema documents, in registration order
|
|
203
238
|
* @param {(formatName: string, value: string) => boolean} validateFormat Gala format dispatcher
|
|
204
|
-
* @
|
|
239
|
+
* @param {boolean} strictComposition whether `strictTypes`/`strictRequired`
|
|
240
|
+
* are enabled (see `LEGACY_STRICT_TYPES_ALLOWLIST`)
|
|
241
|
+
* @returns {import('ajv/dist/2020.js').default} configured Ajv instance
|
|
205
242
|
*/
|
|
206
|
-
function
|
|
243
|
+
function buildAjv(schemas, validateFormat, strictComposition) {
|
|
207
244
|
const formats = new Set();
|
|
208
245
|
for (const schema of schemas) collectFormats(schema, formats);
|
|
209
246
|
|
|
210
|
-
const ajv = new Ajv2020({
|
|
247
|
+
const ajv = new Ajv2020({
|
|
248
|
+
allErrors: true,
|
|
249
|
+
strict: true,
|
|
250
|
+
strictTypes: strictComposition,
|
|
251
|
+
strictRequired: strictComposition,
|
|
252
|
+
});
|
|
211
253
|
/** @type {import('ajv-formats').default} */ (
|
|
212
254
|
/** @type {unknown} */ (formatsPlugin)
|
|
213
255
|
)(ajv);
|
|
@@ -221,14 +263,60 @@ function createRegistry(schemas, validateFormat) {
|
|
|
221
263
|
});
|
|
222
264
|
}
|
|
223
265
|
}
|
|
266
|
+
return ajv;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Create the immutable schema and validator registries. Every root compiles
|
|
271
|
+
* under full `strict: true` (unknown keywords, unknown formats, tuple and
|
|
272
|
+
* number strictness); roots on `LEGACY_STRICT_TYPES_ALLOWLIST` compile with
|
|
273
|
+
* `strictTypes`/`strictRequired` relaxed, every other root compiles with
|
|
274
|
+
* both enabled (SCH-H1).
|
|
275
|
+
*
|
|
276
|
+
* @param {readonly Record<string, unknown>[]} schemas schema documents, in registration order
|
|
277
|
+
* @param {(formatName: string, value: string) => boolean} validateFormat Gala format dispatcher
|
|
278
|
+
* @returns {Registry} registries
|
|
279
|
+
*/
|
|
280
|
+
function createRegistry(schemas, validateFormat) {
|
|
281
|
+
const strictAjv = buildAjv(schemas, validateFormat, true);
|
|
282
|
+
const legacyAjv = buildAjv(schemas, validateFormat, false);
|
|
283
|
+
// Fragment-level lookups (validateFragment's getSchema by $id + JSON
|
|
284
|
+
// Pointer, and validateArrayCardinality's ad-hoc schemas) are internal,
|
|
285
|
+
// Node-only parity/fixture tooling, never the public document-validation
|
|
286
|
+
// path SCH-H1 targets. Compiling an arbitrary JSON-pointer fragment in
|
|
287
|
+
// isolation loses the ancestor `type` context it had inside its parent
|
|
288
|
+
// schema (Ajv's strict "missing type" check only looks at the current
|
|
289
|
+
// schema object's own siblings), so a perfectly fine nested
|
|
290
|
+
// `allOf`/`if`/`then` fragment -- the *same* shape that motivated
|
|
291
|
+
// LEGACY_STRICT_TYPES_ALLOWLIST, and reachable from shared `$defs` used by
|
|
292
|
+
// roots outside that allowlist too (`colorMode`'s `if` branches, for one)
|
|
293
|
+
// -- throws when fragment-compiled even though the whole-document compile
|
|
294
|
+
// never does. This instance is always relaxed, independent of which
|
|
295
|
+
// document-level Ajv a root's real validator was compiled on.
|
|
296
|
+
const fragmentAjv = buildAjv(schemas, validateFormat, false);
|
|
297
|
+
for (const schema of schemas) {
|
|
298
|
+
fragmentAjv.addSchema(schema, String(schema.$id));
|
|
299
|
+
}
|
|
300
|
+
|
|
224
301
|
const schemasById = new Map();
|
|
225
302
|
const validatorsById = new Map();
|
|
226
303
|
for (const schema of schemas) {
|
|
227
304
|
const schemaId = String(schema.$id);
|
|
305
|
+
const contract = contractFromSchemaId(schemaId);
|
|
306
|
+
const ajv = LEGACY_STRICT_TYPES_ALLOWLIST.has(contract)
|
|
307
|
+
? legacyAjv
|
|
308
|
+
: strictAjv;
|
|
228
309
|
schemasById.set(schemaId, schema);
|
|
229
310
|
validatorsById.set(schemaId, ajv.compile(schema));
|
|
230
311
|
}
|
|
231
|
-
return {
|
|
312
|
+
return {
|
|
313
|
+
schemasById,
|
|
314
|
+
validatorsById,
|
|
315
|
+
strictAjv,
|
|
316
|
+
legacyAjv,
|
|
317
|
+
fragmentAjv,
|
|
318
|
+
cardinalityValidators: new Map(),
|
|
319
|
+
};
|
|
232
320
|
}
|
|
233
321
|
|
|
234
322
|
/**
|
|
@@ -389,12 +477,8 @@ function normalizeError(diagnosticMap, contract, basePointer, value, error) {
|
|
|
389
477
|
const rule = ruleIdentity(contract, basePointer, error);
|
|
390
478
|
const mapping = diagnosticMap.rules[rule];
|
|
391
479
|
const keyword = normalizedKeyword(error.keyword);
|
|
392
|
-
const code =
|
|
393
|
-
|
|
394
|
-
throw new Error(
|
|
395
|
-
`Diagnostic rule ${rule} and keyword ${keyword} are unmapped`,
|
|
396
|
-
);
|
|
397
|
-
}
|
|
480
|
+
const code =
|
|
481
|
+
mapping?.code ?? diagnosticMap.keywords[keyword] ?? UNMAPPED_RULE_CODE;
|
|
398
482
|
const catalog = diagnosticMap.codes[code];
|
|
399
483
|
if (!catalog) throw new Error(`Diagnostic code ${code} is not cataloged`);
|
|
400
484
|
const property =
|
|
@@ -526,7 +610,7 @@ function unicodeScalarDiagnostic(diagnosticMap, value, instancePointer) {
|
|
|
526
610
|
/**
|
|
527
611
|
* Validate one complete Gala document against an exact registered schema identity.
|
|
528
612
|
*
|
|
529
|
-
* @param {
|
|
613
|
+
* @param {DocumentValidatorRegistry} registry validators by schema identity
|
|
530
614
|
* @param {DiagnosticMap} diagnosticMap shared diagnostic normalization map
|
|
531
615
|
* @param {string} schemaId exact immutable schema identity
|
|
532
616
|
* @param {unknown} value document value
|
|
@@ -588,7 +672,9 @@ function validateFragment(
|
|
|
588
672
|
schemaPointer,
|
|
589
673
|
value,
|
|
590
674
|
) {
|
|
591
|
-
const validator = registry.
|
|
675
|
+
const validator = registry.fragmentAjv.getSchema(
|
|
676
|
+
`${schemaId}${schemaPointer}`,
|
|
677
|
+
);
|
|
592
678
|
if (!validator) {
|
|
593
679
|
throw new Error(
|
|
594
680
|
`Registered schema fragment is absent: ${schemaId}${schemaPointer}`,
|
|
@@ -611,14 +697,11 @@ function validateFragment(
|
|
|
611
697
|
errors.map((error) => {
|
|
612
698
|
const rule = ruleIdentity(contract, schemaPointer, error);
|
|
613
699
|
const keyword = normalizedKeyword(error.keyword);
|
|
614
|
-
|
|
615
|
-
diagnosticMap.rules[rule]?.code ??
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
);
|
|
620
|
-
}
|
|
621
|
-
return code;
|
|
700
|
+
return (
|
|
701
|
+
diagnosticMap.rules[rule]?.code ??
|
|
702
|
+
diagnosticMap.keywords[keyword] ??
|
|
703
|
+
UNMAPPED_RULE_CODE
|
|
704
|
+
);
|
|
622
705
|
}),
|
|
623
706
|
),
|
|
624
707
|
].sort(),
|
|
@@ -651,6 +734,11 @@ function normalizedInlineResult(diagnosticMap, keywords) {
|
|
|
651
734
|
*
|
|
652
735
|
* Item schemas are validated separately by the parity harness so compact
|
|
653
736
|
* recipes never allocate hundreds of thousands of complex object witnesses.
|
|
737
|
+
* The compiled validator for a given {minItems, maxItems, uniqueItems} shape
|
|
738
|
+
* is cached on the registry (SCH-M7): only a handful of distinct shapes
|
|
739
|
+
* exist across the fixture corpus, but this runs once per cardinality
|
|
740
|
+
* fixture case, so compiling on every call would recompile the same handful
|
|
741
|
+
* of schemas thousands of times over one parity run.
|
|
654
742
|
*
|
|
655
743
|
* @param {Registry} registry compiled schema registry
|
|
656
744
|
* @param {DiagnosticMap} diagnosticMap shared diagnostic normalization map
|
|
@@ -666,7 +754,19 @@ function validateArrayCardinality(registry, diagnosticMap, schema, length) {
|
|
|
666
754
|
...(schema.maxItems === undefined ? {} : { maxItems: schema.maxItems }),
|
|
667
755
|
...(schema.uniqueItems === true ? { uniqueItems: true } : {}),
|
|
668
756
|
};
|
|
669
|
-
|
|
757
|
+
// Only a handful of distinct {minItems, maxItems, uniqueItems} shapes
|
|
758
|
+
// exist across the whole fixture corpus, but this is called once per
|
|
759
|
+
// cardinality fixture case (thousands, across a full parity run).
|
|
760
|
+
// Compiling once per distinct shape and reusing the compiled validator
|
|
761
|
+
// (rather than ajv.compile()-ing the same shape repeatedly) is what
|
|
762
|
+
// SCH-M7 asks for; the cache lives on the registry so it is scoped to
|
|
763
|
+
// one createValidatorSuite call, not process-global.
|
|
764
|
+
const cacheKey = JSON.stringify(cardinalitySchema);
|
|
765
|
+
let validator = registry.cardinalityValidators.get(cacheKey);
|
|
766
|
+
if (validator === undefined) {
|
|
767
|
+
validator = registry.fragmentAjv.compile(cardinalitySchema);
|
|
768
|
+
registry.cardinalityValidators.set(cacheKey, validator);
|
|
769
|
+
}
|
|
670
770
|
const values = schema.uniqueItems
|
|
671
771
|
? Array.from({ length }, (_, index) => index)
|
|
672
772
|
: Array.from({ length }, () => null);
|
|
@@ -726,3 +826,39 @@ export function createValidatorSuite({
|
|
|
726
826
|
validateArrayCardinality(registry, diagnosticMap, schema, length),
|
|
727
827
|
});
|
|
728
828
|
}
|
|
829
|
+
|
|
830
|
+
/**
|
|
831
|
+
* Bind a document validator surface to an already-compiled set of Ajv
|
|
832
|
+
* validate functions instead of raw schemas -- no `ajv.compile` and
|
|
833
|
+
* therefore no `new Function` in this path.
|
|
834
|
+
*
|
|
835
|
+
* This is what `.` and `./runtime-origins` use (SCH-C2): their compiled
|
|
836
|
+
* validators come from `codegen/generate-contracts.ts`'s browser standalone
|
|
837
|
+
* core, generated ahead of time with real Gala format and `x-gala-*`
|
|
838
|
+
* keyword semantics baked into the compiled source. Every Ajv validate
|
|
839
|
+
* function -- precompiled or `ajv.compile()`-produced -- has the same
|
|
840
|
+
* callable shape (`fn(value)` returning a boolean, `fn.errors` populated on
|
|
841
|
+
* rejection in the same shape), so the exact same diagnostic normalization
|
|
842
|
+
* (`validateDocument`) applies unchanged; only fragment- and cardinality-
|
|
843
|
+
* level validation are unavailable here, because they runtime-compile
|
|
844
|
+
* schema fragments the precompiled core does not carry -- Node-only fixture
|
|
845
|
+
* and parity tooling keeps using `createValidatorSuite` for those.
|
|
846
|
+
*
|
|
847
|
+
* @param {{
|
|
848
|
+
* validators: Record<string, MinimalValidateFunction>,
|
|
849
|
+
* diagnosticMap: DiagnosticMap
|
|
850
|
+
* }} dependencies precompiled validators by schema identity, and the shared
|
|
851
|
+
* diagnostic map
|
|
852
|
+
* @returns {{
|
|
853
|
+
* schemaIds: readonly string[],
|
|
854
|
+
* validateDocument: (schemaId: string, value: unknown) => GalaValidationResult
|
|
855
|
+
* }} bound validator surface
|
|
856
|
+
*/
|
|
857
|
+
export function createPrecompiledValidatorSuite({ validators, diagnosticMap }) {
|
|
858
|
+
const registry = { validatorsById: new Map(Object.entries(validators)) };
|
|
859
|
+
return Object.freeze({
|
|
860
|
+
schemaIds: Object.freeze([...registry.validatorsById.keys()].sort()),
|
|
861
|
+
validateDocument: (schemaId, value) =>
|
|
862
|
+
validateDocument(registry, diagnosticMap, schemaId, value),
|
|
863
|
+
});
|
|
864
|
+
}
|
package/src/runtime-origins.js
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Narrow browser entry point for the public runtime-origins contract.
|
|
3
3
|
*
|
|
4
|
-
* The package root (`.`) binds all
|
|
5
|
-
* SPDX licence list, the Unicode 17 tables, the IANA language
|
|
6
|
-
* and the complete 7,804-rule diagnostic map — around 5.3 MB
|
|
7
|
-
* that a browser bundle pays for in full. A client that only
|
|
8
|
-
* `urn:gala:schema:public-runtime-origins:2.0.0` needs none
|
|
9
|
-
* material and none of the other
|
|
10
|
-
* point binds exactly that one schema and exactly that one
|
|
11
|
-
* the diagnostic map, through the same validator core
|
|
12
|
-
* semantics as the root export. Identical inputs
|
|
13
|
-
* diagnostics; the only difference is what is
|
|
4
|
+
* The package root (`.`) binds all twenty contracts, which transitively
|
|
5
|
+
* pins the SPDX licence list, the Unicode 17 tables, the IANA language
|
|
6
|
+
* subtag registry and the complete 7,804-rule diagnostic map — around 5.3 MB
|
|
7
|
+
* of source data that a browser bundle pays for in full. A client that only
|
|
8
|
+
* reads and writes `urn:gala:schema:public-runtime-origins:2.0.0` needs none
|
|
9
|
+
* of the SPDX material and none of the other nineteen contracts' rules, so
|
|
10
|
+
* this entry point binds exactly that one schema and exactly that one
|
|
11
|
+
* contract's slice of the diagnostic map, through the same validator core
|
|
12
|
+
* and the same format semantics as the root export. Identical inputs
|
|
13
|
+
* therefore produce identical diagnostics; the only difference is what is
|
|
14
|
+
* absent.
|
|
15
|
+
*
|
|
16
|
+
* Like the `.` export, this binds a precompiled standalone validator
|
|
17
|
+
* (SCH-C2): no runtime `ajv.compile()` happens at import.
|
|
14
18
|
*
|
|
15
19
|
* The `.` export is unchanged and remains the general-purpose surface.
|
|
16
20
|
*
|
|
@@ -18,19 +22,15 @@
|
|
|
18
22
|
*/
|
|
19
23
|
|
|
20
24
|
import diagnosticMap from '../diagnostics/diagnostic-map.public-runtime-origins.json' with { type: 'json' };
|
|
21
|
-
import
|
|
22
|
-
import {
|
|
23
|
-
import { createValidatorSuite } from './internal/validator-core.js';
|
|
25
|
+
import { SCHEMA_VALIDATORS } from '../generated/browser/runtime-origins-validator-core.mjs';
|
|
26
|
+
import { createPrecompiledValidatorSuite } from './internal/validator-core.js';
|
|
24
27
|
|
|
25
|
-
const SUITE =
|
|
26
|
-
|
|
27
|
-
/** @type {Record<string, unknown>} */ (publicRuntimeOriginsSchema),
|
|
28
|
-
],
|
|
28
|
+
const SUITE = createPrecompiledValidatorSuite({
|
|
29
|
+
validators: SCHEMA_VALIDATORS,
|
|
29
30
|
diagnosticMap:
|
|
30
31
|
/** @type {import('./internal/validator-core.js').DiagnosticMap} */ (
|
|
31
32
|
diagnosticMap
|
|
32
33
|
),
|
|
33
|
-
validateFormat: validateGalaFormatCore,
|
|
34
34
|
});
|
|
35
35
|
|
|
36
36
|
/** The one schema identity this narrow entry point accepts. */
|
package/types/index.d.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @param {string} schemaId exact immutable schema identity
|
|
5
5
|
* @param {unknown} value document value
|
|
6
|
-
* @returns {import('./internal/schema-validator.js').GalaValidationResult} validation result
|
|
6
|
+
* @returns {import('./internal/browser-schema-validator.js').GalaValidationResult} validation result
|
|
7
7
|
*/
|
|
8
|
-
export function validateGalaDocument(schemaId: string, value: unknown): import("./internal/schema-validator.js").GalaValidationResult;
|
|
8
|
+
export function validateGalaDocument(schemaId: string, value: unknown): import("./internal/browser-schema-validator.js").GalaValidationResult;
|
|
9
9
|
/** Exact immutable identities accepted by the validator registry. */
|
|
10
10
|
export const GALA_SCHEMA_IDS: readonly string[];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate one complete Gala document and return stable diagnostics.
|
|
3
|
+
*
|
|
4
|
+
* @param {string} schemaId exact immutable schema identity
|
|
5
|
+
* @param {unknown} value document value
|
|
6
|
+
* @returns {GalaValidationResult} validation result
|
|
7
|
+
*/
|
|
8
|
+
export function validateRegisteredDocument(schemaId: string, value: unknown): GalaValidationResult;
|
|
9
|
+
/**
|
|
10
|
+
* @typedef {import('./validator-core.js').GalaDiagnostic} GalaDiagnostic
|
|
11
|
+
* @typedef {import('./validator-core.js').GalaValidationResult} GalaValidationResult
|
|
12
|
+
*/
|
|
13
|
+
/** Exact immutable identities accepted by the public registry. */
|
|
14
|
+
export const REGISTERED_SCHEMA_IDS: readonly string[];
|
|
15
|
+
export type GalaDiagnostic = import("./validator-core.js").GalaDiagnostic;
|
|
16
|
+
export type GalaValidationResult = import("./validator-core.js").GalaValidationResult;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Validate one custom Gala string format for fixture generation and audits.
|
|
3
3
|
* Unknown format names fail closed.
|
|
4
4
|
*
|
|
5
|
-
* The complete
|
|
5
|
+
* The complete 20-contract surface needs `gala-spdx-expression`, so this
|
|
6
6
|
* module adds that one branch on top of the browser-light core dispatcher and
|
|
7
7
|
* delegates everything else unchanged. Importing this module pulls in the
|
|
8
8
|
* pinned SPDX licence list; importing the core does not.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `x-gala-asciiByteLength`: every scalar is ASCII and the byte (== code
|
|
3
|
+
* unit, for ASCII) length is within bounds.
|
|
4
|
+
*
|
|
5
|
+
* @param {{minimum?: number, maximum?: number}} bounds declared bounds
|
|
6
|
+
* @param {string} value candidate string
|
|
7
|
+
* @returns {boolean} whether the value satisfies the keyword
|
|
8
|
+
*/
|
|
9
|
+
export function galaAsciiByteLength(bounds: {
|
|
10
|
+
minimum?: number;
|
|
11
|
+
maximum?: number;
|
|
12
|
+
}, value: string): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* `x-gala-utf8ByteLength`: the value is Unicode-scalar-clean and its UTF-8
|
|
15
|
+
* byte length is within bounds.
|
|
16
|
+
*
|
|
17
|
+
* @param {{minimum?: number, maximum?: number}} bounds declared bounds
|
|
18
|
+
* @param {string} value candidate string
|
|
19
|
+
* @returns {boolean} whether the value satisfies the keyword
|
|
20
|
+
*/
|
|
21
|
+
export function galaUtf8ByteLength(bounds: {
|
|
22
|
+
minimum?: number;
|
|
23
|
+
maximum?: number;
|
|
24
|
+
}, value: string): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* `x-gala-graphemeLength`: the UAX #29 extended grapheme cluster count is
|
|
27
|
+
* within bounds.
|
|
28
|
+
*
|
|
29
|
+
* @param {{minimum?: number, maximum?: number}} bounds declared bounds
|
|
30
|
+
* @param {string} value candidate string
|
|
31
|
+
* @returns {boolean} whether the value satisfies the keyword
|
|
32
|
+
*/
|
|
33
|
+
export function galaGraphemeLength(bounds: {
|
|
34
|
+
minimum?: number;
|
|
35
|
+
maximum?: number;
|
|
36
|
+
}, value: string): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* `x-gala-maxCanonicalBytes`: the RFC 8785 JCS-canonicalized byte length of
|
|
39
|
+
* the whole value does not exceed the declared maximum.
|
|
40
|
+
*
|
|
41
|
+
* @param {number} maximum declared inclusive maximum
|
|
42
|
+
* @param {unknown} value candidate value
|
|
43
|
+
* @returns {boolean} whether the value satisfies the keyword
|
|
44
|
+
*/
|
|
45
|
+
export function galaMaxCanonicalBytes(maximum: number, value: unknown): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* `x-gala-maximum`: the value, read as a non-negative decimal integer, does
|
|
48
|
+
* not exceed the declared maximum.
|
|
49
|
+
*
|
|
50
|
+
* Fails closed (SCH-H13): a range assertion in a package whose README
|
|
51
|
+
* describes it as fail-closed must reject what it cannot evaluate rather
|
|
52
|
+
* than defer to a pattern/format keyword that may not be present on every
|
|
53
|
+
* `$def` using this keyword (see SCH-C3).
|
|
54
|
+
*
|
|
55
|
+
* @param {number | string} maximum declared inclusive maximum
|
|
56
|
+
* @param {unknown} value candidate value
|
|
57
|
+
* @returns {boolean} whether the value satisfies the keyword
|
|
58
|
+
*/
|
|
59
|
+
export function galaMaximum(maximum: number | string, value: unknown): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* `x-gala-decision-phase`: pure annotation, not an assertion. It marks
|
|
62
|
+
* which DEC-097 lifecycle phase (issuance vs. deploy) a property belongs to
|
|
63
|
+
* for digest scoping (see LOCAL-62 in README.md) and carries no independent
|
|
64
|
+
* validation rule of its own.
|
|
65
|
+
*
|
|
66
|
+
* @returns {true} always valid
|
|
67
|
+
*/
|
|
68
|
+
export function galaDecisionPhase(): true;
|