@techspokes/typescript-wsdl-client 1.1.4 → 1.1.5
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 +49 -1
- package/dist/app/generateApp.d.ts.map +1 -1
- package/dist/app/generateApp.js +8 -6
- package/dist/cli.js +49 -5
- package/dist/client/checkedDirectRuntime.d.ts +59 -0
- package/dist/client/checkedDirectRuntime.d.ts.map +1 -0
- package/dist/client/checkedDirectRuntime.js +23 -0
- package/dist/client/directClientRuntime.d.ts +49 -0
- package/dist/client/directClientRuntime.d.ts.map +1 -0
- package/dist/client/directClientRuntime.js +112 -0
- package/dist/client/directClientVersion.d.ts +4 -0
- package/dist/client/directClientVersion.d.ts.map +1 -0
- package/dist/client/directClientVersion.js +3 -0
- package/dist/client/generateDirectClient.d.ts +14 -0
- package/dist/client/generateDirectClient.d.ts.map +1 -0
- package/dist/client/generateDirectClient.js +136 -0
- package/dist/compiler/buildCanonicalGraph.d.ts +7 -0
- package/dist/compiler/buildCanonicalGraph.d.ts.map +1 -0
- package/dist/compiler/buildCanonicalGraph.js +381 -0
- package/dist/compiler/canonicalGraph.d.ts +198 -0
- package/dist/compiler/canonicalGraph.d.ts.map +1 -0
- package/dist/compiler/canonicalGraph.js +37 -0
- package/dist/compiler/catalogErrors.d.ts +18 -0
- package/dist/compiler/catalogErrors.d.ts.map +1 -0
- package/dist/compiler/catalogErrors.js +86 -0
- package/dist/compiler/catalogProvenance.d.ts +15 -0
- package/dist/compiler/catalogProvenance.d.ts.map +1 -0
- package/dist/compiler/catalogProvenance.js +229 -0
- package/dist/compiler/checkedAssessment.d.ts +91 -0
- package/dist/compiler/checkedAssessment.d.ts.map +1 -0
- package/dist/compiler/checkedAssessment.js +300 -0
- package/dist/compiler/checkedSourcePreparation.d.ts +35 -0
- package/dist/compiler/checkedSourcePreparation.d.ts.map +1 -0
- package/dist/compiler/checkedSourcePreparation.js +131 -0
- package/dist/compiler/complexTypeContent.d.ts +59 -0
- package/dist/compiler/complexTypeContent.d.ts.map +1 -0
- package/dist/compiler/complexTypeContent.js +558 -0
- package/dist/compiler/composeCanonicalGraph.d.ts +69 -0
- package/dist/compiler/composeCanonicalGraph.d.ts.map +1 -0
- package/dist/compiler/composeCanonicalGraph.js +252 -0
- package/dist/compiler/dataOwnership.d.ts +22 -0
- package/dist/compiler/dataOwnership.d.ts.map +1 -0
- package/dist/compiler/dataOwnership.js +157 -0
- package/dist/compiler/datatypeValues.d.ts +47 -0
- package/dist/compiler/datatypeValues.d.ts.map +1 -0
- package/dist/compiler/datatypeValues.js +275 -0
- package/dist/compiler/directCodec.d.ts +59 -0
- package/dist/compiler/directCodec.d.ts.map +1 -0
- package/dist/compiler/directCodec.js +192 -0
- package/dist/compiler/directExecutionPolicy.d.ts +10 -0
- package/dist/compiler/directExecutionPolicy.d.ts.map +1 -0
- package/dist/compiler/directExecutionPolicy.js +17 -0
- package/dist/compiler/directOperation.d.ts +72 -0
- package/dist/compiler/directOperation.d.ts.map +1 -0
- package/dist/compiler/directOperation.js +282 -0
- package/dist/compiler/directSoap.d.ts +42 -0
- package/dist/compiler/directSoap.d.ts.map +1 -0
- package/dist/compiler/directSoap.js +298 -0
- package/dist/compiler/directSoapSource.d.ts +15 -0
- package/dist/compiler/directSoapSource.d.ts.map +1 -0
- package/dist/compiler/directSoapSource.js +86 -0
- package/dist/compiler/directSourceCapsule.d.ts +97 -0
- package/dist/compiler/directSourceCapsule.d.ts.map +1 -0
- package/dist/compiler/directSourceCapsule.js +305 -0
- package/dist/compiler/directStructure.d.ts +51 -0
- package/dist/compiler/directStructure.d.ts.map +1 -0
- package/dist/compiler/directStructure.js +252 -0
- package/dist/compiler/directStructurePlan.d.ts +16 -0
- package/dist/compiler/directStructurePlan.d.ts.map +1 -0
- package/dist/compiler/directStructurePlan.js +58 -0
- package/dist/compiler/directValues.d.ts +69 -0
- package/dist/compiler/directValues.d.ts.map +1 -0
- package/dist/compiler/directValues.js +282 -0
- package/dist/compiler/finiteRe01Verification.d.ts +140 -0
- package/dist/compiler/finiteRe01Verification.d.ts.map +1 -0
- package/dist/compiler/finiteRe01Verification.js +830 -0
- package/dist/compiler/graphTraversal.d.ts +11 -0
- package/dist/compiler/graphTraversal.d.ts.map +1 -0
- package/dist/compiler/graphTraversal.js +37 -0
- package/dist/compiler/hypotheticalScopedIdentity.d.ts +23 -0
- package/dist/compiler/hypotheticalScopedIdentity.d.ts.map +1 -0
- package/dist/compiler/hypotheticalScopedIdentity.js +81 -0
- package/dist/compiler/occurrenceAnalysis.d.ts +65 -0
- package/dist/compiler/occurrenceAnalysis.d.ts.map +1 -0
- package/dist/compiler/occurrenceAnalysis.js +300 -0
- package/dist/compiler/originalSourceMembership.d.ts +6 -0
- package/dist/compiler/originalSourceMembership.d.ts.map +1 -0
- package/dist/compiler/originalSourceMembership.js +31 -0
- package/dist/compiler/particleAttribution.d.ts +17 -0
- package/dist/compiler/particleAttribution.d.ts.map +1 -0
- package/dist/compiler/particleAttribution.js +474 -0
- package/dist/compiler/particleDeclarationConsistency.d.ts +24 -0
- package/dist/compiler/particleDeclarationConsistency.d.ts.map +1 -0
- package/dist/compiler/particleDeclarationConsistency.js +197 -0
- package/dist/compiler/particleExtension.d.ts +22 -0
- package/dist/compiler/particleExtension.d.ts.map +1 -0
- package/dist/compiler/particleExtension.js +119 -0
- package/dist/compiler/particleLocalAssessment.d.ts +20 -0
- package/dist/compiler/particleLocalAssessment.d.ts.map +1 -0
- package/dist/compiler/particleLocalAssessment.js +92 -0
- package/dist/compiler/particleRestriction.d.ts +24 -0
- package/dist/compiler/particleRestriction.d.ts.map +1 -0
- package/dist/compiler/particleRestriction.js +489 -0
- package/dist/compiler/particleSemanticView.d.ts +50 -0
- package/dist/compiler/particleSemanticView.d.ts.map +1 -0
- package/dist/compiler/particleSemanticView.js +297 -0
- package/dist/compiler/particleWildcardRelation.d.ts +88 -0
- package/dist/compiler/particleWildcardRelation.d.ts.map +1 -0
- package/dist/compiler/particleWildcardRelation.js +143 -0
- package/dist/compiler/re01CandidateCorrespondence.d.ts +64 -0
- package/dist/compiler/re01CandidateCorrespondence.d.ts.map +1 -0
- package/dist/compiler/re01CandidateCorrespondence.js +572 -0
- package/dist/compiler/re01TypeProperties.d.ts +71 -0
- package/dist/compiler/re01TypeProperties.d.ts.map +1 -0
- package/dist/compiler/re01TypeProperties.js +120 -0
- package/dist/compiler/re01TypePropertyValidation.d.ts +23 -0
- package/dist/compiler/re01TypePropertyValidation.d.ts.map +1 -0
- package/dist/compiler/re01TypePropertyValidation.js +161 -0
- package/dist/compiler/resolveCanonicalGraph.d.ts +38 -0
- package/dist/compiler/resolveCanonicalGraph.d.ts.map +1 -0
- package/dist/compiler/resolveCanonicalGraph.js +170 -0
- package/dist/compiler/scalarSchemaAssessment.d.ts +425 -0
- package/dist/compiler/scalarSchemaAssessment.d.ts.map +1 -0
- package/dist/compiler/scalarSchemaAssessment.js +5198 -0
- package/dist/compiler/schemaAttributeGroupProperties.d.ts +17 -0
- package/dist/compiler/schemaAttributeGroupProperties.d.ts.map +1 -0
- package/dist/compiler/schemaAttributeGroupProperties.js +53 -0
- package/dist/compiler/schemaAttributeProperties.d.ts +10 -0
- package/dist/compiler/schemaAttributeProperties.d.ts.map +1 -0
- package/dist/compiler/schemaAttributeProperties.js +11 -0
- package/dist/compiler/schemaAttributeUses.d.ts +90 -0
- package/dist/compiler/schemaAttributeUses.d.ts.map +1 -0
- package/dist/compiler/schemaAttributeUses.js +725 -0
- package/dist/compiler/schemaBinaryWordReconstruction.d.ts +10 -0
- package/dist/compiler/schemaBinaryWordReconstruction.d.ts.map +1 -0
- package/dist/compiler/schemaBinaryWordReconstruction.js +33 -0
- package/dist/compiler/schemaBuiltinFacets.d.ts +14 -0
- package/dist/compiler/schemaBuiltinFacets.d.ts.map +1 -0
- package/dist/compiler/schemaBuiltinFacets.js +51 -0
- package/dist/compiler/schemaCalendarImages.d.ts +8 -0
- package/dist/compiler/schemaCalendarImages.d.ts.map +1 -0
- package/dist/compiler/schemaCalendarImages.js +204 -0
- package/dist/compiler/schemaCalendarLanguage.d.ts +11 -0
- package/dist/compiler/schemaCalendarLanguage.d.ts.map +1 -0
- package/dist/compiler/schemaCalendarLanguage.js +227 -0
- package/dist/compiler/schemaComponentEquality.d.ts +28 -0
- package/dist/compiler/schemaComponentEquality.d.ts.map +1 -0
- package/dist/compiler/schemaComponentEquality.js +446 -0
- package/dist/compiler/schemaConstructionAssessment.d.ts +46 -0
- package/dist/compiler/schemaConstructionAssessment.d.ts.map +1 -0
- package/dist/compiler/schemaConstructionAssessment.js +663 -0
- package/dist/compiler/schemaDatatypeValues.d.ts +4 -0
- package/dist/compiler/schemaDatatypeValues.d.ts.map +1 -0
- package/dist/compiler/schemaDatatypeValues.js +2 -0
- package/dist/compiler/schemaDecimalLanguage.d.ts +7 -0
- package/dist/compiler/schemaDecimalLanguage.d.ts.map +1 -0
- package/dist/compiler/schemaDecimalLanguage.js +102 -0
- package/dist/compiler/schemaDeclarationPrimitives.d.ts +34 -0
- package/dist/compiler/schemaDeclarationPrimitives.d.ts.map +1 -0
- package/dist/compiler/schemaDeclarationPrimitives.js +194 -0
- package/dist/compiler/schemaDocumentSyntax.d.ts +55 -0
- package/dist/compiler/schemaDocumentSyntax.d.ts.map +1 -0
- package/dist/compiler/schemaDocumentSyntax.js +294 -0
- package/dist/compiler/schemaDurationLanguage.d.ts +11 -0
- package/dist/compiler/schemaDurationLanguage.d.ts.map +1 -0
- package/dist/compiler/schemaDurationLanguage.js +170 -0
- package/dist/compiler/schemaElementProperties.d.ts +16 -0
- package/dist/compiler/schemaElementProperties.d.ts.map +1 -0
- package/dist/compiler/schemaElementProperties.js +23 -0
- package/dist/compiler/schemaEndpointWordCapacity.d.ts +36 -0
- package/dist/compiler/schemaEndpointWordCapacity.d.ts.map +1 -0
- package/dist/compiler/schemaEndpointWordCapacity.js +39 -0
- package/dist/compiler/schemaExactCalendar.d.ts +73 -0
- package/dist/compiler/schemaExactCalendar.d.ts.map +1 -0
- package/dist/compiler/schemaExactCalendar.js +264 -0
- package/dist/compiler/schemaFacetAnnotation.d.ts +32 -0
- package/dist/compiler/schemaFacetAnnotation.d.ts.map +1 -0
- package/dist/compiler/schemaFacetAnnotation.js +199 -0
- package/dist/compiler/schemaGeneratedScalarShape.d.ts +35 -0
- package/dist/compiler/schemaGeneratedScalarShape.d.ts.map +1 -0
- package/dist/compiler/schemaGeneratedScalarShape.js +176 -0
- package/dist/compiler/schemaIdentityConstraints.d.ts +73 -0
- package/dist/compiler/schemaIdentityConstraints.d.ts.map +1 -0
- package/dist/compiler/schemaIdentityConstraints.js +362 -0
- package/dist/compiler/schemaIeeeLanguage.d.ts +43 -0
- package/dist/compiler/schemaIeeeLanguage.d.ts.map +1 -0
- package/dist/compiler/schemaIeeeLanguage.js +759 -0
- package/dist/compiler/schemaIntegerImages.d.ts +11 -0
- package/dist/compiler/schemaIntegerImages.d.ts.map +1 -0
- package/dist/compiler/schemaIntegerImages.js +113 -0
- package/dist/compiler/schemaLexicalPredicates.d.ts +29 -0
- package/dist/compiler/schemaLexicalPredicates.d.ts.map +1 -0
- package/dist/compiler/schemaLexicalPredicates.js +63 -0
- package/dist/compiler/schemaNotationProperties.d.ts +32 -0
- package/dist/compiler/schemaNotationProperties.d.ts.map +1 -0
- package/dist/compiler/schemaNotationProperties.js +84 -0
- package/dist/compiler/schemaNumericImageConditions.d.ts +24 -0
- package/dist/compiler/schemaNumericImageConditions.d.ts.map +1 -0
- package/dist/compiler/schemaNumericImageConditions.js +66 -0
- package/dist/compiler/schemaParticleWildcardProperties.d.ts +20 -0
- package/dist/compiler/schemaParticleWildcardProperties.d.ts.map +1 -0
- package/dist/compiler/schemaParticleWildcardProperties.js +43 -0
- package/dist/compiler/schemaPattern.d.ts +1062 -0
- package/dist/compiler/schemaPattern.d.ts.map +1 -0
- package/dist/compiler/schemaPattern.js +581 -0
- package/dist/compiler/schemaRegularLanguage.d.ts +67 -0
- package/dist/compiler/schemaRegularLanguage.d.ts.map +1 -0
- package/dist/compiler/schemaRegularLanguage.js +1166 -0
- package/dist/compiler/schemaScalarContext.d.ts +81 -0
- package/dist/compiler/schemaScalarContext.d.ts.map +1 -0
- package/dist/compiler/schemaScalarContext.js +78 -0
- package/dist/compiler/schemaScalarKernel.d.ts +182 -0
- package/dist/compiler/schemaScalarKernel.d.ts.map +1 -0
- package/dist/compiler/schemaScalarKernel.js +391 -0
- package/dist/compiler/schemaScalarWitnesses.d.ts +6 -0
- package/dist/compiler/schemaScalarWitnesses.d.ts.map +1 -0
- package/dist/compiler/schemaScalarWitnesses.js +118 -0
- package/dist/compiler/schemaSimpleTypeProperties.d.ts +95 -0
- package/dist/compiler/schemaSimpleTypeProperties.d.ts.map +1 -0
- package/dist/compiler/schemaSimpleTypeProperties.js +103 -0
- package/dist/compiler/schemaSourceGrammar.d.ts +27 -0
- package/dist/compiler/schemaSourceGrammar.d.ts.map +1 -0
- package/dist/compiler/schemaSourceGrammar.js +290 -0
- package/dist/compiler/schemaSourceLexical.d.ts +4 -0
- package/dist/compiler/schemaSourceLexical.d.ts.map +1 -0
- package/dist/compiler/schemaSourceLexical.js +12 -0
- package/dist/compiler/schemaSourceValues.d.ts +51 -0
- package/dist/compiler/schemaSourceValues.d.ts.map +1 -0
- package/dist/compiler/schemaSourceValues.js +225 -0
- package/dist/compiler/schemaSourceWildcards.d.ts +28 -0
- package/dist/compiler/schemaSourceWildcards.d.ts.map +1 -0
- package/dist/compiler/schemaSourceWildcards.js +247 -0
- package/dist/compiler/schemaSymbolicSequences.d.ts +16 -0
- package/dist/compiler/schemaSymbolicSequences.d.ts.map +1 -0
- package/dist/compiler/schemaSymbolicSequences.js +99 -0
- package/dist/compiler/schemaSymbolicValueSets.d.ts +32 -0
- package/dist/compiler/schemaSymbolicValueSets.d.ts.map +1 -0
- package/dist/compiler/schemaSymbolicValueSets.js +149 -0
- package/dist/compiler/schemaSyntaxAssessment.d.ts +25 -0
- package/dist/compiler/schemaSyntaxAssessment.d.ts.map +1 -0
- package/dist/compiler/schemaSyntaxAssessment.js +361 -0
- package/dist/compiler/schemaTemporalAliases.d.ts +6 -0
- package/dist/compiler/schemaTemporalAliases.d.ts.map +1 -0
- package/dist/compiler/schemaTemporalAliases.js +195 -0
- package/dist/compiler/schemaTokenImages.d.ts +9 -0
- package/dist/compiler/schemaTokenImages.d.ts.map +1 -0
- package/dist/compiler/schemaTokenImages.js +142 -0
- package/dist/compiler/schemaTypeIdentity.d.ts +39 -0
- package/dist/compiler/schemaTypeIdentity.d.ts.map +1 -0
- package/dist/compiler/schemaTypeIdentity.js +78 -0
- package/dist/compiler/schemaTypeRelations.d.ts +38 -0
- package/dist/compiler/schemaTypeRelations.d.ts.map +1 -0
- package/dist/compiler/schemaTypeRelations.js +576 -0
- package/dist/compiler/schemaUri.d.ts +13 -0
- package/dist/compiler/schemaUri.d.ts.map +1 -0
- package/dist/compiler/schemaUri.js +103 -0
- package/dist/compiler/schemaValueContext.d.ts +26 -0
- package/dist/compiler/schemaValueContext.d.ts.map +1 -0
- package/dist/compiler/schemaValueContext.js +1 -0
- package/dist/compiler/schemaValueImages.d.ts +10 -0
- package/dist/compiler/schemaValueImages.d.ts.map +1 -0
- package/dist/compiler/schemaValueImages.js +142 -0
- package/dist/compiler/schemaValueSequences.d.ts +15 -0
- package/dist/compiler/schemaValueSequences.d.ts.map +1 -0
- package/dist/compiler/schemaValueSequences.js +19 -0
- package/dist/compiler/semanticBudget.d.ts +50 -0
- package/dist/compiler/semanticBudget.d.ts.map +1 -0
- package/dist/compiler/semanticBudget.js +178 -0
- package/dist/compiler/semanticCatalog.d.ts +122 -0
- package/dist/compiler/semanticCatalog.d.ts.map +1 -0
- package/dist/compiler/semanticCatalog.js +160 -0
- package/dist/compiler/semanticContext.d.ts +172 -0
- package/dist/compiler/semanticContext.d.ts.map +1 -0
- package/dist/compiler/semanticContext.js +1168 -0
- package/dist/compiler/semanticTypeDependencies.d.ts +8 -0
- package/dist/compiler/semanticTypeDependencies.d.ts.map +1 -0
- package/dist/compiler/semanticTypeDependencies.js +64 -0
- package/dist/compiler/semanticTypeReference.d.ts +24 -0
- package/dist/compiler/semanticTypeReference.d.ts.map +1 -0
- package/dist/compiler/semanticTypeReference.js +36 -0
- package/dist/compiler/shapeResolver.d.ts +1 -0
- package/dist/compiler/shapeResolver.d.ts.map +1 -1
- package/dist/compiler/shapeResolver.js +7 -9
- package/dist/compiler/sourceSchemaBinding.d.ts +26 -0
- package/dist/compiler/sourceSchemaBinding.d.ts.map +1 -0
- package/dist/compiler/sourceSchemaBinding.js +39 -0
- package/dist/compiler/structuralCompanions.d.ts +16 -0
- package/dist/compiler/structuralCompanions.d.ts.map +1 -0
- package/dist/compiler/structuralCompanions.js +232 -0
- package/dist/compiler/validateSemanticGraph.d.ts +5 -0
- package/dist/compiler/validateSemanticGraph.d.ts.map +1 -0
- package/dist/compiler/validateSemanticGraph.js +376 -0
- package/dist/compiler/wildcardAlgebra.d.ts +26 -0
- package/dist/compiler/wildcardAlgebra.d.ts.map +1 -0
- package/dist/compiler/wildcardAlgebra.js +155 -0
- package/dist/gateway/generateGateway.d.ts.map +1 -1
- package/dist/gateway/generateGateway.js +2 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/loader/orderedSyntax.d.ts +77 -0
- package/dist/loader/orderedSyntax.d.ts.map +1 -0
- package/dist/loader/orderedSyntax.js +202 -0
- package/dist/loader/resolutionDepth.d.ts +7 -0
- package/dist/loader/resolutionDepth.d.ts.map +1 -0
- package/dist/loader/resolutionDepth.js +65 -0
- package/dist/loader/schemaInput.d.ts +53 -0
- package/dist/loader/schemaInput.d.ts.map +1 -0
- package/dist/loader/schemaInput.js +212 -0
- package/dist/loader/schemaResources.d.ts +59 -0
- package/dist/loader/schemaResources.d.ts.map +1 -0
- package/dist/loader/schemaResources.js +292 -0
- package/dist/openapi/generateOpenAPI.d.ts.map +1 -1
- package/dist/openapi/generateOpenAPI.js +2 -2
- package/dist/test/generateTests.d.ts.map +1 -1
- package/dist/test/generateTests.js +2 -2
- package/dist/util/xmlWhitespace.d.ts +3 -0
- package/dist/util/xmlWhitespace.d.ts.map +1 -0
- package/dist/util/xmlWhitespace.js +4 -0
- package/docs/README.md +14 -1
- package/docs/architecture.md +9 -0
- package/docs/cli-reference.md +21 -1
- package/docs/content-model-analysis.md +92 -0
- package/docs/content-model-baseline.md +121 -0
- package/docs/content-model-catalog.md +116 -0
- package/docs/content-model-companions.md +90 -0
- package/docs/content-model-composition.md +103 -0
- package/docs/content-model-decisions.md +79 -0
- package/docs/content-model-gateway-feasibility.md +169 -0
- package/docs/content-model-graph.md +121 -0
- package/docs/content-model-loading.md +163 -0
- package/docs/content-model-matching.md +85 -0
- package/docs/content-model-readiness.md +144 -0
- package/docs/content-model-resolution.md +81 -0
- package/docs/content-model-s02-handoff.md +98 -0
- package/docs/content-model-s06-au-01.md +425 -0
- package/docs/content-model-s06-dt-01.md +386 -0
- package/docs/content-model-s06-pw-01.md +350 -0
- package/docs/content-model-s06-re-01-resolver-implementation.md +869 -0
- package/docs/content-model-s06-re-01-resolver.md +513 -0
- package/docs/content-model-s06-re-01-scalar-witnesses.md +1423 -0
- package/docs/content-model-s06-re-01-support-reconstruction.md +6337 -0
- package/docs/content-model-s06-re-01.md +7477 -0
- package/docs/content-model-s06-research-handoff.md +909 -0
- package/docs/content-model-shipped-fix.md +83 -0
- package/docs/content-model-soap-feasibility.md +165 -0
- package/docs/decisions/002-streamable-responses.md +2 -0
- package/docs/decisions/003-content-model-contracts.md +280 -0
- package/docs/direct-values.md +311 -0
- package/docs/reference-validation.md +243 -0
- package/docs/releases/v1.1.5.md +38 -0
- package/docs/roadmap/README.md +2 -2
- package/docs/supported-patterns.md +13 -5
- package/package.json +26 -13
- package/src/generation/preambles/direct-client/typescript.preamble +3 -0
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
import { assertSemanticContext } from './semanticContext.js';
|
|
2
|
+
import { createSchemaScalarKernel } from './schemaScalarKernel.js';
|
|
3
|
+
import { declarationMethods, RelationProblem } from './schemaTypeRelations.js';
|
|
4
|
+
import { checkDeclarationValueProperty } from './schemaDeclarationPrimitives.js';
|
|
5
|
+
import { readOriginalAttributeProperties, assessSourceAttributeUses } from './schemaAttributeUses.js';
|
|
6
|
+
import { deriveActualComplexContent, deriveOriginalComplexPropertyContent, deriveModelGroupContent } from './complexTypeContent.js';
|
|
7
|
+
import { prepareSemanticParticleView } from './particleSemanticView.js';
|
|
8
|
+
import { XSD_NAMESPACE } from '../loader/orderedSyntax.js';
|
|
9
|
+
import { declaredType, resolveSemanticType } from './schemaTypeIdentity.js';
|
|
10
|
+
import { collectSemanticTypeDependencies } from './semanticTypeDependencies.js';
|
|
11
|
+
import { readElementIdentityConstraints, collectIdentityConstraintDependencies } from './schemaIdentityConstraints.js';
|
|
12
|
+
class Incomplete extends Error {
|
|
13
|
+
result;
|
|
14
|
+
constructor(result) {
|
|
15
|
+
super(result.kind);
|
|
16
|
+
this.result = result;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function compareComponentProperties(context, a, b) {
|
|
20
|
+
assertSemanticContext(context);
|
|
21
|
+
const budget = context.budget, charge = (n = 1) => budget.chargeWork(n);
|
|
22
|
+
return budget.guard(() => {
|
|
23
|
+
charge(3);
|
|
24
|
+
for (const node of [a, b]) {
|
|
25
|
+
charge(46);
|
|
26
|
+
const field = node && typeof node === 'object' ? Object.getOwnPropertyDescriptor(node, 'id') : undefined;
|
|
27
|
+
if (!field || !('value' in field) || typeof field.value !== 'string')
|
|
28
|
+
throw new TypeError('Unauthenticated or foreign component equality operand');
|
|
29
|
+
const found = context.lookup(field.value);
|
|
30
|
+
if (found.kind !== 'found' || found.node !== node)
|
|
31
|
+
throw new TypeError('Unauthenticated or foreign component equality operand');
|
|
32
|
+
}
|
|
33
|
+
const scalar = createSchemaScalarKernel(context);
|
|
34
|
+
charge(12);
|
|
35
|
+
const dependencies = new Set(), obligations = new Set(['component-validity']), scalarObligations = [];
|
|
36
|
+
const typeDependencies = collectSemanticTypeDependencies(context);
|
|
37
|
+
const identityConstraintDependencies = collectIdentityConstraintDependencies(context);
|
|
38
|
+
const remember = (required) => {
|
|
39
|
+
for (const item of required) {
|
|
40
|
+
charge(4 + scalarObligations.length);
|
|
41
|
+
if (!scalarObligations.some(prior => prior.rule === item.rule && prior.component === item.component && (prior.contextId ?? context.contextId) === (item.contextId ?? context.contextId)))
|
|
42
|
+
scalarObligations.push(item);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const read = (node) => { charge(2 + node.id.length); dependencies.add(node.id); };
|
|
46
|
+
const unresolved = (node, rule, message) => {
|
|
47
|
+
charge(12 + node.length + rule.length + message.length);
|
|
48
|
+
throw new Incomplete(Object.freeze({ kind: 'unresolved', component: node, rule, message }));
|
|
49
|
+
};
|
|
50
|
+
const unwrap = (result) => {
|
|
51
|
+
if (result.kind !== 'checked')
|
|
52
|
+
throw new Incomplete(result);
|
|
53
|
+
typeDependencies.add(result.typeDependencies);
|
|
54
|
+
remember(result.obligations);
|
|
55
|
+
return result.value;
|
|
56
|
+
};
|
|
57
|
+
const get = (id) => {
|
|
58
|
+
const selected = context.lookup(id);
|
|
59
|
+
if (selected.kind !== 'found')
|
|
60
|
+
return unresolved(id, 'component-property-reference', 'Required component property is unavailable');
|
|
61
|
+
read(selected.node);
|
|
62
|
+
return selected.node;
|
|
63
|
+
};
|
|
64
|
+
const textEqual = (x, y) => budget.compareText(x, y) === 0;
|
|
65
|
+
const methods = (x, y, property) => {
|
|
66
|
+
const left = declarationMethods(context, x, property), right = declarationMethods(context, y, property);
|
|
67
|
+
charge(2 + left.length * (right.length + 1) + right.length * (left.length + 1));
|
|
68
|
+
return left.every(value => right.includes(value)) && right.every(value => left.includes(value));
|
|
69
|
+
};
|
|
70
|
+
const enqueue = (state, task) => { charge(6); state.tasks.push(task); };
|
|
71
|
+
const reference = (state, x, y) => {
|
|
72
|
+
const left = context.resolve(x), right = context.resolve(y);
|
|
73
|
+
if (left.kind !== 'found' && left.kind !== 'builtin' || right.kind !== 'found' && right.kind !== 'builtin')
|
|
74
|
+
return unresolved(a.id, 'component-property-reference', 'Referenced type or declaration is unavailable');
|
|
75
|
+
if (left.kind === 'builtin' || right.kind === 'builtin')
|
|
76
|
+
return left.kind === 'builtin' && right.kind === 'builtin'
|
|
77
|
+
&& textEqual(left.name.namespace, right.name.namespace) && textEqual(left.name.local, right.name.local);
|
|
78
|
+
enqueue(state, { kind: 'node', a: left.node, b: right.node });
|
|
79
|
+
return true;
|
|
80
|
+
};
|
|
81
|
+
const typeIdentity = (selector) => {
|
|
82
|
+
const selected = resolveSemanticType(context, selector);
|
|
83
|
+
if (selected.kind !== 'component' && selected.kind !== 'builtin' && selected.kind !== 'original-generated')
|
|
84
|
+
return unresolved(a.id, 'component-property-reference', 'Referenced semantic type is unavailable');
|
|
85
|
+
if (selected.kind === 'component')
|
|
86
|
+
read(selected.node);
|
|
87
|
+
return selected;
|
|
88
|
+
};
|
|
89
|
+
const typeOperand = (selector) => {
|
|
90
|
+
const selected = typeIdentity(selector);
|
|
91
|
+
charge(3);
|
|
92
|
+
typeDependencies.add([{ contextId: context.contextId, type: selected.identity }]);
|
|
93
|
+
return selected;
|
|
94
|
+
};
|
|
95
|
+
const typeReference = (state, x, y, owner) => {
|
|
96
|
+
const left = typeIdentity(x), right = typeIdentity(y);
|
|
97
|
+
// Complex references select properties; full validity belongs to construction.
|
|
98
|
+
if (left.kind === 'component' && right.kind === 'component' && left.node === right.node && left.node.kind === 'complexType')
|
|
99
|
+
return true;
|
|
100
|
+
if (left.kind === 'component' && left.node.kind === 'complexType' || right.kind === 'component' && right.node.kind === 'complexType') {
|
|
101
|
+
if (left.kind !== 'component' || right.kind !== 'component' || left.node.kind !== 'complexType' || right.node.kind !== 'complexType')
|
|
102
|
+
return false;
|
|
103
|
+
enqueue(state, { kind: 'node', a: left.node, b: right.node });
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
charge(6);
|
|
107
|
+
typeDependencies.add([{ contextId: context.contextId, type: left.identity }, { contextId: context.contextId, type: right.identity }]);
|
|
108
|
+
if (left.kind === 'builtin' && right.kind === 'builtin')
|
|
109
|
+
return textEqual(left.name.namespace, right.name.namespace) && textEqual(left.name.local, right.name.local);
|
|
110
|
+
if (left.kind === 'builtin' && left.name.local === 'anyType' || right.kind === 'builtin' && right.name.local === 'anyType')
|
|
111
|
+
return false;
|
|
112
|
+
enqueue(state, { kind: 'scalar', a: x, b: y, owner });
|
|
113
|
+
return true;
|
|
114
|
+
};
|
|
115
|
+
const scope = (node) => {
|
|
116
|
+
if (node.identity.kind === 'global')
|
|
117
|
+
return 'global';
|
|
118
|
+
charge(2);
|
|
119
|
+
const seen = new Set();
|
|
120
|
+
let current = node;
|
|
121
|
+
while (current.identity.kind === 'scoped') {
|
|
122
|
+
charge(4);
|
|
123
|
+
if (seen.has(current.id))
|
|
124
|
+
return unresolved(node.id, 'component-property-scope', 'Scope containment has a cycle');
|
|
125
|
+
seen.add(current.id);
|
|
126
|
+
current = get(current.identity.owner);
|
|
127
|
+
if (current.kind === 'complexType')
|
|
128
|
+
return current;
|
|
129
|
+
if (current.kind === 'group' || current.kind === 'attributeGroup')
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
return undefined;
|
|
133
|
+
};
|
|
134
|
+
const namespace = (node) => {
|
|
135
|
+
if (node.identity.kind === 'global')
|
|
136
|
+
return node.identity.name.namespace;
|
|
137
|
+
const raw = context.rawTypeProperties(node.id) ?? context.rawSimpleTypeProperties(node.id);
|
|
138
|
+
if (raw?.targetNamespace !== undefined)
|
|
139
|
+
return raw.targetNamespace;
|
|
140
|
+
const original = context.sourceNode(node.id);
|
|
141
|
+
if (original)
|
|
142
|
+
return original.context.effectiveNamespace;
|
|
143
|
+
return unresolved(node.id, 'component-type-target-namespace', 'Anonymous helper requires an explicit target namespace property');
|
|
144
|
+
};
|
|
145
|
+
const wildcard = (x, y) => {
|
|
146
|
+
if (!x || !y)
|
|
147
|
+
return x === y;
|
|
148
|
+
if (x.processContents !== y.processContents || x.namespace.kind !== y.namespace.kind)
|
|
149
|
+
return false;
|
|
150
|
+
const left = budget.sorted(x.namespace.namespaces, budget.compareText), right = budget.sorted(y.namespace.namespaces, budget.compareText);
|
|
151
|
+
charge(left.length + right.length + 1);
|
|
152
|
+
return left.length === right.length && left.every((value, index) => textEqual(value, right[index]));
|
|
153
|
+
};
|
|
154
|
+
const values = (x, y) => {
|
|
155
|
+
if (x.value?.kind !== y.value?.kind)
|
|
156
|
+
return false;
|
|
157
|
+
if (!x.value || !y.value)
|
|
158
|
+
return true;
|
|
159
|
+
const left = checkDeclarationValueProperty(context, x.id), right = checkDeclarationValueProperty(context, y.id);
|
|
160
|
+
if (left.kind !== 'checked')
|
|
161
|
+
throw new Incomplete(left);
|
|
162
|
+
if (right.kind !== 'checked')
|
|
163
|
+
throw new Incomplete(right);
|
|
164
|
+
typeDependencies.add(left.typeDependencies);
|
|
165
|
+
typeDependencies.add(right.typeDependencies);
|
|
166
|
+
remember(left.scalarObligations);
|
|
167
|
+
remember(right.scalarObligations);
|
|
168
|
+
for (const receipt of [left, right])
|
|
169
|
+
for (const required of receipt.obligations) {
|
|
170
|
+
charge();
|
|
171
|
+
if (required !== 'declared-type-component-validity')
|
|
172
|
+
obligations.add(required);
|
|
173
|
+
}
|
|
174
|
+
if (!left.constraint || !right.constraint)
|
|
175
|
+
return unresolved(x.id, 'component-value-property', 'Typed declaration constraint is unavailable');
|
|
176
|
+
return unwrap(scalar.equivalent(left.constraint.type, left.constraint.lexical, right.constraint.type, right.constraint.lexical, x.id));
|
|
177
|
+
};
|
|
178
|
+
const pair = (pairs, x, y) => {
|
|
179
|
+
charge(6 + x.length + y.length);
|
|
180
|
+
let row = pairs.get(x);
|
|
181
|
+
if (row?.has(y))
|
|
182
|
+
return 'seen';
|
|
183
|
+
if (!row) {
|
|
184
|
+
charge(2);
|
|
185
|
+
row = new Set();
|
|
186
|
+
pairs.set(x, row);
|
|
187
|
+
}
|
|
188
|
+
row.add(y);
|
|
189
|
+
return 'new';
|
|
190
|
+
};
|
|
191
|
+
const scalarPair = (state, x, y, owner) => {
|
|
192
|
+
charge(3);
|
|
193
|
+
typeOperand(x);
|
|
194
|
+
typeOperand(y);
|
|
195
|
+
const left = unwrap(scalar.contentProperties(x, owner)), right = unwrap(scalar.contentProperties(y, owner));
|
|
196
|
+
// GSC1 identities and ordinary scalar identities share one property owner.
|
|
197
|
+
// Closing this separate pair recurrence proves property equality only.
|
|
198
|
+
if (textEqual(left.definition, right.definition) || pair(state.scalarPairs, left.definition, right.definition) === 'seen')
|
|
199
|
+
return true;
|
|
200
|
+
if (!!left.name !== !!right.name || left.name && right.name && (!textEqual(left.name.namespace, right.name.namespace) || !textEqual(left.name.local, right.name.local)))
|
|
201
|
+
return false;
|
|
202
|
+
if (!textEqual(left.targetNamespace, right.targetNamespace) || left.variety !== right.variety || left.primitive !== right.primitive)
|
|
203
|
+
return false;
|
|
204
|
+
charge(2 + left.final.length * (right.final.length + 1) + right.final.length * (left.final.length + 1));
|
|
205
|
+
if (!left.final.every(value => right.final.includes(value)) || !right.final.every(value => left.final.includes(value)))
|
|
206
|
+
return false;
|
|
207
|
+
// Annotation is excluded by cos-particle-extend. Equal complete base,
|
|
208
|
+
// variety constituents and facet properties determine equal fundamental
|
|
209
|
+
// properties; no unevaluated fundamental value is invented here.
|
|
210
|
+
if (!unwrap(scalar.facetPropertiesEquivalent(x, y, owner)))
|
|
211
|
+
return false;
|
|
212
|
+
if (!!left.base !== !!right.base || !!left.item !== !!right.item || (left.members?.length ?? 0) !== (right.members?.length ?? 0))
|
|
213
|
+
return false;
|
|
214
|
+
if (left.base && right.base)
|
|
215
|
+
enqueue(state, { kind: 'scalar', a: left.base, b: right.base, owner });
|
|
216
|
+
if (left.item && right.item)
|
|
217
|
+
enqueue(state, { kind: 'scalar', a: left.item, b: right.item, owner });
|
|
218
|
+
for (let index = 0; index < (left.members?.length ?? 0); index++) {
|
|
219
|
+
charge();
|
|
220
|
+
enqueue(state, { kind: 'scalar', a: left.members[index], b: right.members[index], owner });
|
|
221
|
+
}
|
|
222
|
+
return true;
|
|
223
|
+
};
|
|
224
|
+
const content = (node) => {
|
|
225
|
+
const mapped = context.kind === 'actual' ? deriveActualComplexContent(context, node.id) : deriveOriginalComplexPropertyContent(context, node.id);
|
|
226
|
+
if (mapped.kind !== 'checked')
|
|
227
|
+
throw new Incomplete(mapped);
|
|
228
|
+
return mapped.view;
|
|
229
|
+
};
|
|
230
|
+
const particles = (state, x, y) => {
|
|
231
|
+
if (x.content.kind !== y.content.kind)
|
|
232
|
+
return false;
|
|
233
|
+
if (x.content.kind === 'empty')
|
|
234
|
+
return true;
|
|
235
|
+
if (x.content.kind === 'simple' && y.content.kind === 'simple') {
|
|
236
|
+
charge(6);
|
|
237
|
+
// Raw content selects its scalar property; actual projections can be diagnostic.
|
|
238
|
+
const leftOperand = context.kind === 'candidate' ? x.content.type : { kind: 'local', target: x.type };
|
|
239
|
+
const rightOperand = context.kind === 'candidate' ? y.content.type : { kind: 'local', target: y.type };
|
|
240
|
+
enqueue(state, { kind: 'scalar', a: leftOperand, b: rightOperand, owner: x.type });
|
|
241
|
+
return true;
|
|
242
|
+
}
|
|
243
|
+
if (!('particle' in x.content) || !('particle' in y.content))
|
|
244
|
+
return unresolved(x.type, 'component-content-properties', 'Opaque builtin content has no complete component property view');
|
|
245
|
+
const left = prepareSemanticParticleView(context, x, 'declared'), right = prepareSemanticParticleView(context, y, 'declared');
|
|
246
|
+
if (left.kind !== 'checked')
|
|
247
|
+
throw new Incomplete(left);
|
|
248
|
+
if (right.kind !== 'checked')
|
|
249
|
+
throw new Incomplete(right);
|
|
250
|
+
typeDependencies.add(left.view.typeDependencies);
|
|
251
|
+
typeDependencies.add(right.view.typeDependencies);
|
|
252
|
+
enqueue(state, { kind: 'particle', a: left.view.root, b: right.view.root });
|
|
253
|
+
return true;
|
|
254
|
+
};
|
|
255
|
+
const attributes = (node) => {
|
|
256
|
+
const result = context.kind === 'actual' ? assessSourceAttributeUses(context, node.id) : readOriginalAttributeProperties(context, node.id);
|
|
257
|
+
if (result.kind !== 'checked')
|
|
258
|
+
throw new Incomplete(result);
|
|
259
|
+
typeDependencies.add(result.typeDependencies);
|
|
260
|
+
remember(result.scalarObligations);
|
|
261
|
+
for (const item of result.value.schemaOperands) {
|
|
262
|
+
read(item.source);
|
|
263
|
+
read(item.declaration);
|
|
264
|
+
}
|
|
265
|
+
return result.value;
|
|
266
|
+
};
|
|
267
|
+
const nodePair = (state, x, y) => {
|
|
268
|
+
read(x);
|
|
269
|
+
read(y);
|
|
270
|
+
if (pair(state.pairs, x.id, y.id) === 'seen' || x === y)
|
|
271
|
+
return true;
|
|
272
|
+
if (x.kind !== y.kind)
|
|
273
|
+
return false;
|
|
274
|
+
if (x.identity.kind === 'global' || y.identity.kind === 'global') {
|
|
275
|
+
if (x.identity.kind !== 'global' || y.identity.kind !== 'global')
|
|
276
|
+
return false;
|
|
277
|
+
if (x.identity.role !== y.identity.role || !textEqual(x.identity.name.namespace, y.identity.name.namespace) || !textEqual(x.identity.name.local, y.identity.name.local))
|
|
278
|
+
return false;
|
|
279
|
+
}
|
|
280
|
+
if ((x.kind === 'element' || x.kind === 'attribute') && (y.kind === 'element' || y.kind === 'attribute')) {
|
|
281
|
+
if (!textEqual(x.name.namespace, y.name.namespace) || !textEqual(x.name.local, y.name.local))
|
|
282
|
+
return false;
|
|
283
|
+
const left = scope(x), right = scope(y);
|
|
284
|
+
if (typeof left === 'object' && typeof right === 'object')
|
|
285
|
+
enqueue(state, { kind: 'node', a: left, b: right });
|
|
286
|
+
else if (left !== right)
|
|
287
|
+
return false;
|
|
288
|
+
if (!typeReference(state, declaredType(context, x), declaredType(context, y), x.id) || !values(x, y))
|
|
289
|
+
return false;
|
|
290
|
+
if (x.kind === 'element' && y.kind === 'element') {
|
|
291
|
+
if (x.abstract !== y.abstract || x.nillable !== y.nillable || !methods(x, y, 'final') || !methods(x, y, 'block'))
|
|
292
|
+
return false;
|
|
293
|
+
if (!!x.substitutionGroup !== !!y.substitutionGroup)
|
|
294
|
+
return false;
|
|
295
|
+
if (x.substitutionGroup && y.substitutionGroup && !reference(state, x.substitutionGroup, y.substitutionGroup))
|
|
296
|
+
return false;
|
|
297
|
+
const leftIC = readElementIdentityConstraints(context, x.id), rightIC = readElementIdentityConstraints(context, y.id);
|
|
298
|
+
if (leftIC.kind !== 'checked')
|
|
299
|
+
throw new Incomplete(leftIC);
|
|
300
|
+
if (rightIC.kind !== 'checked')
|
|
301
|
+
throw new Incomplete(rightIC);
|
|
302
|
+
identityConstraintDependencies.add(leftIC.identityConstraintDependencies);
|
|
303
|
+
identityConstraintDependencies.add(rightIC.identityConstraintDependencies);
|
|
304
|
+
charge(2 + leftIC.value.length * (rightIC.value.length + 1));
|
|
305
|
+
if (leftIC.value.length !== rightIC.value.length || !leftIC.value.every(id => rightIC.value.includes(id)))
|
|
306
|
+
return false;
|
|
307
|
+
}
|
|
308
|
+
return true;
|
|
309
|
+
}
|
|
310
|
+
if (x.kind === 'simpleType' && y.kind === 'simpleType') {
|
|
311
|
+
charge(6);
|
|
312
|
+
enqueue(state, { kind: 'scalar', a: { kind: 'local', target: x.id }, b: { kind: 'local', target: y.id }, owner: x.id });
|
|
313
|
+
return true;
|
|
314
|
+
}
|
|
315
|
+
if (x.kind === 'complexType' && y.kind === 'complexType') {
|
|
316
|
+
if (!textEqual(namespace(x), namespace(y)) || !methods(x, y, 'final') || !methods(x, y, 'block'))
|
|
317
|
+
return false;
|
|
318
|
+
const left = context.rawTypeProperties(x.id), right = context.rawTypeProperties(y.id);
|
|
319
|
+
if (context.kind === 'candidate' && (!left && !context.originalComplexPropertySource(x.id) || !right && !context.originalComplexPropertySource(y.id)))
|
|
320
|
+
return unresolved(x.id, 'component-complex-properties', 'Candidate complex properties require a raw row or an untouched original');
|
|
321
|
+
const xm = left?.derivation.method ?? x.derivation?.kind ?? 'restriction', ym = right?.derivation.method ?? y.derivation?.kind ?? 'restriction';
|
|
322
|
+
if (xm !== ym || (left?.abstract ?? x.abstract) !== (right?.abstract ?? y.abstract))
|
|
323
|
+
return false;
|
|
324
|
+
const ur = { kind: 'builtin', name: { namespace: XSD_NAMESPACE, local: 'anyType' } };
|
|
325
|
+
if (!typeReference(state, left?.derivation.base ?? x.derivation?.base ?? ur, right?.derivation.base ?? y.derivation?.base ?? ur, x.id))
|
|
326
|
+
return false;
|
|
327
|
+
const xa = attributes(x), ya = attributes(y);
|
|
328
|
+
if (!wildcard(xa.wildcard, ya.wildcard) || xa.uses.length !== ya.uses.length)
|
|
329
|
+
return false;
|
|
330
|
+
enqueue(state, { kind: 'uses', a: xa.uses, b: ya.uses });
|
|
331
|
+
return particles(state, content(x), content(y));
|
|
332
|
+
}
|
|
333
|
+
if ((x.kind === 'particle' || x.kind === 'group') && (y.kind === 'particle' || y.kind === 'group')) {
|
|
334
|
+
const left = deriveModelGroupContent(context, x.id), right = deriveModelGroupContent(context, y.id);
|
|
335
|
+
if (left.kind !== 'checked')
|
|
336
|
+
throw new Incomplete(left);
|
|
337
|
+
if (right.kind !== 'checked')
|
|
338
|
+
throw new Incomplete(right);
|
|
339
|
+
return particles(state, left.view, right.view);
|
|
340
|
+
}
|
|
341
|
+
return unresolved(x.id, 'component-properties', 'This component kind has no complete recursive property view');
|
|
342
|
+
};
|
|
343
|
+
const finish = (value) => {
|
|
344
|
+
charge(dependencies.size + obligations.size + scalarObligations.length + 12);
|
|
345
|
+
return budget.freeze(budget.snapshot({ kind: 'checked', value, contextId: context.contextId, authority: 'XSD10-component-properties-v1',
|
|
346
|
+
obligations: [...obligations], scalarObligations, dependencies: [...dependencies], typeDependencies: typeDependencies.snapshot(),
|
|
347
|
+
identityConstraintDependencies: identityConstraintDependencies.snapshot() }));
|
|
348
|
+
};
|
|
349
|
+
charge(12);
|
|
350
|
+
const states = [{ tasks: [{ kind: 'node', a, b }], pairs: new Map(), scalarPairs: new Map() }];
|
|
351
|
+
let unknown;
|
|
352
|
+
while (states.length) {
|
|
353
|
+
charge(3);
|
|
354
|
+
const state = states.pop();
|
|
355
|
+
let valid = true;
|
|
356
|
+
try {
|
|
357
|
+
while (valid && state.tasks.length) {
|
|
358
|
+
charge(4);
|
|
359
|
+
const task = state.tasks.pop();
|
|
360
|
+
if (task.kind === 'node')
|
|
361
|
+
valid = nodePair(state, task.a, task.b);
|
|
362
|
+
else if (task.kind === 'scalar')
|
|
363
|
+
valid = scalarPair(state, task.a, task.b, task.owner);
|
|
364
|
+
else if (task.kind === 'particle') {
|
|
365
|
+
const x = task.a, y = task.b;
|
|
366
|
+
if (x === y || x.originalParticle !== undefined && x.originalParticle === y.originalParticle)
|
|
367
|
+
continue;
|
|
368
|
+
if (x.kind !== y.kind || !textEqual(x.occurs.min, y.occurs.min) || !textEqual(x.occurs.max, y.occurs.max) || x.children.length !== y.children.length) {
|
|
369
|
+
valid = false;
|
|
370
|
+
continue;
|
|
371
|
+
}
|
|
372
|
+
if (x.originalParticle) {
|
|
373
|
+
charge(2 + x.originalParticle.length);
|
|
374
|
+
dependencies.add(x.originalParticle);
|
|
375
|
+
}
|
|
376
|
+
if (y.originalParticle) {
|
|
377
|
+
charge(2 + y.originalParticle.length);
|
|
378
|
+
dependencies.add(y.originalParticle);
|
|
379
|
+
}
|
|
380
|
+
if (x.element && y.element)
|
|
381
|
+
enqueue(state, { kind: 'node', a: x.element, b: y.element });
|
|
382
|
+
else if (x.wildcard && y.wildcard) {
|
|
383
|
+
valid = wildcard({ namespace: x.wildcard.namespace, processContents: x.wildcard.processContents, sources: [] }, { namespace: y.wildcard.namespace, processContents: y.wildcard.processContents, sources: [] });
|
|
384
|
+
}
|
|
385
|
+
for (let index = 0; index < x.children.length; index++)
|
|
386
|
+
enqueue(state, { kind: 'particle', a: x.children[index], b: y.children[index] });
|
|
387
|
+
}
|
|
388
|
+
else if (task.kind === 'use') {
|
|
389
|
+
const x = task.a, y = task.b;
|
|
390
|
+
read(x.source);
|
|
391
|
+
read(y.source);
|
|
392
|
+
if (pair(state.pairs, x.id, y.id) === 'seen')
|
|
393
|
+
continue;
|
|
394
|
+
if (x.required !== y.required || x.own?.kind !== y.own?.kind) {
|
|
395
|
+
valid = false;
|
|
396
|
+
continue;
|
|
397
|
+
}
|
|
398
|
+
enqueue(state, { kind: 'node', a: x.declaration, b: y.declaration });
|
|
399
|
+
if (x.own && y.own)
|
|
400
|
+
valid = unwrap(scalar.equivalent(x.own.value.type, x.own.value.lexical, y.own.value.type, y.own.value.lexical, x.id));
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
if (!task.a.length) {
|
|
404
|
+
valid = !task.b.length;
|
|
405
|
+
continue;
|
|
406
|
+
}
|
|
407
|
+
if (task.a.length !== task.b.length) {
|
|
408
|
+
valid = false;
|
|
409
|
+
continue;
|
|
410
|
+
}
|
|
411
|
+
const first = task.a[0];
|
|
412
|
+
for (let index = 0; index < task.b.length; index++) {
|
|
413
|
+
charge(6);
|
|
414
|
+
const other = task.b[index];
|
|
415
|
+
if (!textEqual(first.declaration.name.namespace, other.declaration.name.namespace) || !textEqual(first.declaration.name.local, other.declaration.name.local))
|
|
416
|
+
continue;
|
|
417
|
+
charge(state.tasks.length + (state.pairs.size + state.scalarPairs.size) * 2 + task.a.length + task.b.length + 14);
|
|
418
|
+
const pairs = new Map(), scalarPairs = new Map();
|
|
419
|
+
for (const [id, row] of state.pairs) {
|
|
420
|
+
charge(row.size + 3);
|
|
421
|
+
pairs.set(id, new Set(row));
|
|
422
|
+
}
|
|
423
|
+
for (const [id, row] of state.scalarPairs) {
|
|
424
|
+
charge(row.size + 3);
|
|
425
|
+
scalarPairs.set(id, new Set(row));
|
|
426
|
+
}
|
|
427
|
+
const fork = { tasks: [...state.tasks, { kind: 'uses', a: task.a.slice(1), b: task.b.filter((_, n) => n !== index) }, { kind: 'use', a: first, b: other }], pairs, scalarPairs };
|
|
428
|
+
states.push(fork);
|
|
429
|
+
}
|
|
430
|
+
valid = false;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
if (valid)
|
|
434
|
+
return finish(true);
|
|
435
|
+
}
|
|
436
|
+
catch (error) {
|
|
437
|
+
if (error instanceof Incomplete || error instanceof RelationProblem) {
|
|
438
|
+
unknown ??= error.result;
|
|
439
|
+
continue;
|
|
440
|
+
}
|
|
441
|
+
throw error;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
return unknown ?? finish(false);
|
|
445
|
+
});
|
|
446
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** Concrete local component premises; the finite proof driver owns their closure. */
|
|
2
|
+
import type { NodeId } from './canonicalGraph.js';
|
|
3
|
+
import type { SemanticContext } from './semanticContext.js';
|
|
4
|
+
import type { ResourceLimitFailure } from './semanticBudget.js';
|
|
5
|
+
import type { CorrespondenceReceipt } from './re01CandidateCorrespondence.js';
|
|
6
|
+
import type { SemanticTypeDependency, SemanticTypeReference } from './semanticTypeReference.js';
|
|
7
|
+
import type { IdentityConstraintDependency } from './schemaIdentityConstraints.js';
|
|
8
|
+
export type ConstructionObligation = Readonly<{
|
|
9
|
+
rule: string;
|
|
10
|
+
component: NodeId;
|
|
11
|
+
contextId: string;
|
|
12
|
+
}>;
|
|
13
|
+
export type ComponentConstructionReceipt = Readonly<{
|
|
14
|
+
kind: 'checked';
|
|
15
|
+
authority: 'XSD10-component-construction-v1';
|
|
16
|
+
contextId: string;
|
|
17
|
+
component: NodeId;
|
|
18
|
+
scope: 'local-component-premises' | 'original-source-syntax-only';
|
|
19
|
+
receipts: readonly object[];
|
|
20
|
+
dependencies: readonly NodeId[];
|
|
21
|
+
builtinDependencies: readonly string[];
|
|
22
|
+
typeDependencies: readonly SemanticTypeDependency[];
|
|
23
|
+
identityConstraintDependencies: readonly IdentityConstraintDependency[];
|
|
24
|
+
re01?: Readonly<{
|
|
25
|
+
target: NodeId;
|
|
26
|
+
ancestor: SemanticTypeReference;
|
|
27
|
+
primitive: boolean;
|
|
28
|
+
}>;
|
|
29
|
+
obligations: readonly ConstructionObligation[];
|
|
30
|
+
discharged: readonly ConstructionObligation[];
|
|
31
|
+
}>;
|
|
32
|
+
export type ConstructionFailure = Readonly<{
|
|
33
|
+
kind: 'invalid-schema' | 'candidate-rejected' | 'unsupported-capability' | 'unresolved';
|
|
34
|
+
rule: string;
|
|
35
|
+
component: NodeId;
|
|
36
|
+
message: string;
|
|
37
|
+
contextId?: string;
|
|
38
|
+
}>;
|
|
39
|
+
export type ComponentConstructionResult = ComponentConstructionReceipt | ConstructionFailure | ResourceLimitFailure;
|
|
40
|
+
/** Original syntax under a prohibited use/zero particle has no local component. */
|
|
41
|
+
export declare function isAbsentOriginalSourceComponent(context: SemanticContext, id: NodeId): boolean;
|
|
42
|
+
export declare function assertComponentConstruction(context: SemanticContext, receipt: ComponentConstructionReceipt): void;
|
|
43
|
+
export declare function checkComponentConstruction(context: SemanticContext, id: NodeId, options?: Readonly<{
|
|
44
|
+
correspondence?: CorrespondenceReceipt;
|
|
45
|
+
}>): ComponentConstructionResult;
|
|
46
|
+
//# sourceMappingURL=schemaConstructionAssessment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaConstructionAssessment.d.ts","sourceRoot":"","sources":["../../src/compiler/schemaConstructionAssessment.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,KAAK,EAAY,MAAM,EAAY,MAAM,qBAAqB,CAAC;AAGtE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,qBAAqB,CAAC;AAuB9D,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAC,sBAAsB,EAAE,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AAI9F,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,gCAAgC,CAAC;AAEjF,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC;AACpG,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC;IAClD,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,iCAAiC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IACpG,KAAK,EAAE,0BAA0B,GAAG,6BAA6B,CAAC;IAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/F,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACxE,gBAAgB,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACpD,8BAA8B,EAAE,SAAS,4BAA4B,EAAE,CAAC;IACxE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,qBAAqB,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAC,CAAC,CAAC;IACvF,WAAW,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC/C,UAAU,EAAE,SAAS,sBAAsB,EAAE,CAAC;CAC/C,CAAC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IAAC,IAAI,EAAE,gBAAgB,GAAG,oBAAoB,GAAG,wBAAwB,GAAG,YAAY,CAAC;IAClI,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC;AACzE,MAAM,MAAM,2BAA2B,GAAG,4BAA4B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;AAMpH,mFAAmF;AACnF,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAI7F;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,4BAA4B,GAAG,IAAI,CAGjH;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAC7E,OAAO,GAAE,QAAQ,CAAC;IAAC,cAAc,CAAC,EAAE,qBAAqB,CAAA;CAAC,CAAM,GAAG,2BAA2B,CA2c/F"}
|