@techspokes/typescript-wsdl-client 1.1.4 → 1.1.8
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 +81 -35
- package/dist/app/generateApp.d.ts +0 -1
- package/dist/app/generateApp.js +8 -6
- package/dist/app/generateCheckedApp.d.ts +38 -0
- package/dist/app/generateCheckedApp.js +108 -0
- package/dist/checkedPipeline.d.ts +155 -0
- package/dist/checkedPipeline.js +448 -0
- package/dist/checkedPlanning.d.ts +123 -0
- package/dist/checkedPlanning.js +245 -0
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +123 -5
- package/dist/client/checkedDirectRuntime.d.ts +96 -0
- package/dist/client/checkedDirectRuntime.js +43 -0
- package/dist/client/directClientRuntime.d.ts +74 -0
- package/dist/client/directClientRuntime.js +165 -0
- package/dist/client/directClientVersion.d.ts +6 -0
- package/dist/client/directClientVersion.js +6 -0
- package/dist/client/generateClient.d.ts +0 -1
- package/dist/client/generateClient.js +26 -12
- package/dist/client/generateDirectClient.d.ts +32 -0
- package/dist/client/generateDirectClient.js +268 -0
- package/dist/client/generateOperations.d.ts +0 -1
- package/dist/client/generateTypes.d.ts +0 -1
- package/dist/client/generateUtils.d.ts +0 -1
- package/dist/client/generateUtils.js +3 -1
- package/dist/compiler/applicationGroups.d.ts +53 -0
- package/dist/compiler/applicationGroups.js +403 -0
- package/dist/compiler/buildCanonicalGraph.d.ts +6 -0
- package/dist/compiler/buildCanonicalGraph.js +381 -0
- package/dist/compiler/canonicalGraph.d.ts +197 -0
- package/dist/compiler/canonicalGraph.js +37 -0
- package/dist/compiler/catalogErrors.d.ts +17 -0
- package/dist/compiler/catalogErrors.js +86 -0
- package/dist/compiler/catalogProvenance.d.ts +14 -0
- package/dist/compiler/catalogProvenance.js +229 -0
- package/dist/compiler/checkedAssessment.d.ts +90 -0
- package/dist/compiler/checkedAssessment.js +300 -0
- package/dist/compiler/checkedComponentSource.d.ts +16 -0
- package/dist/compiler/checkedComponentSource.js +31 -0
- package/dist/compiler/checkedSourcePreparation.d.ts +72 -0
- package/dist/compiler/checkedSourcePreparation.js +202 -0
- package/dist/compiler/complexTypeContent.d.ts +58 -0
- package/dist/compiler/complexTypeContent.js +558 -0
- package/dist/compiler/componentCorrespondence.d.ts +32 -0
- package/dist/compiler/componentCorrespondence.js +140 -0
- package/dist/compiler/componentRecordProjection.d.ts +109 -0
- package/dist/compiler/componentRecordProjection.js +319 -0
- package/dist/compiler/componentSoapPreparation.d.ts +20 -0
- package/dist/compiler/componentSoapPreparation.js +36 -0
- package/dist/compiler/composeCanonicalGraph.d.ts +68 -0
- package/dist/compiler/composeCanonicalGraph.js +252 -0
- package/dist/compiler/dataOwnership.d.ts +21 -0
- package/dist/compiler/dataOwnership.js +167 -0
- package/dist/compiler/datatypeValues.d.ts +46 -0
- package/dist/compiler/datatypeValues.js +275 -0
- package/dist/compiler/directCodec.d.ts +116 -0
- package/dist/compiler/directCodec.js +377 -0
- package/dist/compiler/directExecutionPolicy.d.ts +9 -0
- package/dist/compiler/directExecutionPolicy.js +17 -0
- package/dist/compiler/directOperation.d.ts +114 -0
- package/dist/compiler/directOperation.js +373 -0
- package/dist/compiler/directSoap.d.ts +66 -0
- package/dist/compiler/directSoap.js +391 -0
- package/dist/compiler/directSoapSource.d.ts +38 -0
- package/dist/compiler/directSoapSource.js +233 -0
- package/dist/compiler/directSourceCapsule.d.ts +169 -0
- package/dist/compiler/directSourceCapsule.js +727 -0
- package/dist/compiler/directStructure.d.ts +128 -0
- package/dist/compiler/directStructure.js +543 -0
- package/dist/compiler/directStructurePlan.d.ts +149 -0
- package/dist/compiler/directStructurePlan.js +623 -0
- package/dist/compiler/directValues.d.ts +128 -0
- package/dist/compiler/directValues.js +1116 -0
- package/dist/compiler/finiteRe01Construction.d.ts +69 -0
- package/dist/compiler/finiteRe01Construction.js +422 -0
- package/dist/compiler/finiteRe01Verification.d.ts +218 -0
- package/dist/compiler/finiteRe01Verification.js +1217 -0
- package/dist/compiler/generateCatalog.d.ts +0 -1
- package/dist/compiler/graphTraversal.d.ts +10 -0
- package/dist/compiler/graphTraversal.js +37 -0
- package/dist/compiler/hypotheticalScopedIdentity.d.ts +22 -0
- package/dist/compiler/hypotheticalScopedIdentity.js +81 -0
- package/dist/compiler/occurrenceAnalysis.d.ts +66 -0
- package/dist/compiler/occurrenceAnalysis.js +316 -0
- package/dist/compiler/originalSourceMembership.d.ts +5 -0
- package/dist/compiler/originalSourceMembership.js +31 -0
- package/dist/compiler/particleAttribution.d.ts +16 -0
- package/dist/compiler/particleAttribution.js +494 -0
- package/dist/compiler/particleDeclarationConsistency.d.ts +23 -0
- package/dist/compiler/particleDeclarationConsistency.js +206 -0
- package/dist/compiler/particleExtension.d.ts +21 -0
- package/dist/compiler/particleExtension.js +123 -0
- package/dist/compiler/particleLocalAssessment.d.ts +19 -0
- package/dist/compiler/particleLocalAssessment.js +92 -0
- package/dist/compiler/particleRestriction.d.ts +23 -0
- package/dist/compiler/particleRestriction.js +494 -0
- package/dist/compiler/particleSemanticView.d.ts +51 -0
- package/dist/compiler/particleSemanticView.js +310 -0
- package/dist/compiler/particleWildcardRelation.d.ts +87 -0
- package/dist/compiler/particleWildcardRelation.js +143 -0
- package/dist/compiler/projectionScalar.d.ts +32 -0
- package/dist/compiler/projectionScalar.js +184 -0
- package/dist/compiler/re01CandidateAssignments.d.ts +95 -0
- package/dist/compiler/re01CandidateAssignments.js +341 -0
- package/dist/compiler/re01CandidateCorrespondence.d.ts +85 -0
- package/dist/compiler/re01CandidateCorrespondence.js +701 -0
- package/dist/compiler/re01TypeProperties.d.ts +70 -0
- package/dist/compiler/re01TypeProperties.js +120 -0
- package/dist/compiler/re01TypePropertyValidation.d.ts +22 -0
- package/dist/compiler/re01TypePropertyValidation.js +161 -0
- package/dist/compiler/resolveCanonicalGraph.d.ts +41 -0
- package/dist/compiler/resolveCanonicalGraph.js +240 -0
- package/dist/compiler/scalarSchemaAssessment.d.ts +424 -0
- package/dist/compiler/scalarSchemaAssessment.js +5198 -0
- package/dist/compiler/schemaAttributeGroupProperties.d.ts +16 -0
- package/dist/compiler/schemaAttributeGroupProperties.js +53 -0
- package/dist/compiler/schemaAttributeProperties.d.ts +9 -0
- package/dist/compiler/schemaAttributeProperties.js +11 -0
- package/dist/compiler/schemaAttributeUses.d.ts +110 -0
- package/dist/compiler/schemaAttributeUses.js +798 -0
- package/dist/compiler/schemaBinaryWordReconstruction.d.ts +9 -0
- package/dist/compiler/schemaBinaryWordReconstruction.js +33 -0
- package/dist/compiler/schemaBuiltinFacets.d.ts +13 -0
- package/dist/compiler/schemaBuiltinFacets.js +51 -0
- package/dist/compiler/schemaCalendarImages.d.ts +7 -0
- package/dist/compiler/schemaCalendarImages.js +204 -0
- package/dist/compiler/schemaCalendarLanguage.d.ts +10 -0
- package/dist/compiler/schemaCalendarLanguage.js +227 -0
- package/dist/compiler/schemaCompiler.d.ts +0 -1
- package/dist/compiler/schemaComponentEquality.d.ts +27 -0
- package/dist/compiler/schemaComponentEquality.js +446 -0
- package/dist/compiler/schemaConstructionAssessment.d.ts +79 -0
- package/dist/compiler/schemaConstructionAssessment.js +745 -0
- package/dist/compiler/schemaDatatypeValues.d.ts +3 -0
- package/dist/compiler/schemaDatatypeValues.js +2 -0
- package/dist/compiler/schemaDecimalLanguage.d.ts +6 -0
- package/dist/compiler/schemaDecimalLanguage.js +102 -0
- package/dist/compiler/schemaDeclarationPrimitives.d.ts +39 -0
- package/dist/compiler/schemaDeclarationPrimitives.js +211 -0
- package/dist/compiler/schemaDocumentSyntax.d.ts +54 -0
- package/dist/compiler/schemaDocumentSyntax.js +294 -0
- package/dist/compiler/schemaDurationLanguage.d.ts +10 -0
- package/dist/compiler/schemaDurationLanguage.js +170 -0
- package/dist/compiler/schemaElementInstance.d.ts +30 -0
- package/dist/compiler/schemaElementInstance.js +45 -0
- package/dist/compiler/schemaElementProperties.d.ts +15 -0
- package/dist/compiler/schemaElementProperties.js +23 -0
- package/dist/compiler/schemaEndpointWordCapacity.d.ts +35 -0
- package/dist/compiler/schemaEndpointWordCapacity.js +39 -0
- package/dist/compiler/schemaExactCalendar.d.ts +72 -0
- package/dist/compiler/schemaExactCalendar.js +264 -0
- package/dist/compiler/schemaFacetAnnotation.d.ts +31 -0
- package/dist/compiler/schemaFacetAnnotation.js +199 -0
- package/dist/compiler/schemaGeneratedScalarShape.d.ts +34 -0
- package/dist/compiler/schemaGeneratedScalarShape.js +178 -0
- package/dist/compiler/schemaIdentityConstraints.d.ts +72 -0
- package/dist/compiler/schemaIdentityConstraints.js +362 -0
- package/dist/compiler/schemaIeeeLanguage.d.ts +42 -0
- package/dist/compiler/schemaIeeeLanguage.js +759 -0
- package/dist/compiler/schemaIntegerImages.d.ts +10 -0
- package/dist/compiler/schemaIntegerImages.js +113 -0
- package/dist/compiler/schemaLexicalPredicates.d.ts +28 -0
- package/dist/compiler/schemaLexicalPredicates.js +63 -0
- package/dist/compiler/schemaNotationProperties.d.ts +31 -0
- package/dist/compiler/schemaNotationProperties.js +84 -0
- package/dist/compiler/schemaNumericImageConditions.d.ts +23 -0
- package/dist/compiler/schemaNumericImageConditions.js +66 -0
- package/dist/compiler/schemaParticleWildcardProperties.d.ts +19 -0
- package/dist/compiler/schemaParticleWildcardProperties.js +43 -0
- package/dist/compiler/schemaPattern.d.ts +1061 -0
- package/dist/compiler/schemaPattern.js +581 -0
- package/dist/compiler/schemaRegularLanguage.d.ts +66 -0
- package/dist/compiler/schemaRegularLanguage.js +1166 -0
- package/dist/compiler/schemaScalarContext.d.ts +85 -0
- package/dist/compiler/schemaScalarContext.js +78 -0
- package/dist/compiler/schemaScalarKernel.d.ts +181 -0
- package/dist/compiler/schemaScalarKernel.js +391 -0
- package/dist/compiler/schemaScalarWitnesses.d.ts +5 -0
- package/dist/compiler/schemaScalarWitnesses.js +118 -0
- package/dist/compiler/schemaSimpleTypeProperties.d.ts +94 -0
- package/dist/compiler/schemaSimpleTypeProperties.js +103 -0
- package/dist/compiler/schemaSourceGrammar.d.ts +26 -0
- package/dist/compiler/schemaSourceGrammar.js +290 -0
- package/dist/compiler/schemaSourceLexical.d.ts +3 -0
- package/dist/compiler/schemaSourceLexical.js +12 -0
- package/dist/compiler/schemaSourceValues.d.ts +50 -0
- package/dist/compiler/schemaSourceValues.js +225 -0
- package/dist/compiler/schemaSourceWildcards.d.ts +27 -0
- package/dist/compiler/schemaSourceWildcards.js +249 -0
- package/dist/compiler/schemaSymbolicSequences.d.ts +15 -0
- package/dist/compiler/schemaSymbolicSequences.js +99 -0
- package/dist/compiler/schemaSymbolicValueSets.d.ts +31 -0
- package/dist/compiler/schemaSymbolicValueSets.js +149 -0
- package/dist/compiler/schemaSyntaxAssessment.d.ts +24 -0
- package/dist/compiler/schemaSyntaxAssessment.js +361 -0
- package/dist/compiler/schemaTemporalAliases.d.ts +5 -0
- package/dist/compiler/schemaTemporalAliases.js +195 -0
- package/dist/compiler/schemaTokenImages.d.ts +8 -0
- package/dist/compiler/schemaTokenImages.js +142 -0
- package/dist/compiler/schemaTypeIdentity.d.ts +38 -0
- package/dist/compiler/schemaTypeIdentity.js +80 -0
- package/dist/compiler/schemaTypeRelations.d.ts +37 -0
- package/dist/compiler/schemaTypeRelations.js +576 -0
- package/dist/compiler/schemaUri.d.ts +12 -0
- package/dist/compiler/schemaUri.js +103 -0
- package/dist/compiler/schemaValueContext.d.ts +25 -0
- package/dist/compiler/schemaValueContext.js +1 -0
- package/dist/compiler/schemaValueImages.d.ts +9 -0
- package/dist/compiler/schemaValueImages.js +142 -0
- package/dist/compiler/schemaValueSequences.d.ts +14 -0
- package/dist/compiler/schemaValueSequences.js +19 -0
- package/dist/compiler/semanticBudget.d.ts +67 -0
- package/dist/compiler/semanticBudget.js +193 -0
- package/dist/compiler/semanticCatalog.d.ts +121 -0
- package/dist/compiler/semanticCatalog.js +160 -0
- package/dist/compiler/semanticContext.d.ts +183 -0
- package/dist/compiler/semanticContext.js +1207 -0
- package/dist/compiler/semanticTypeDependencies.d.ts +7 -0
- package/dist/compiler/semanticTypeDependencies.js +64 -0
- package/dist/compiler/semanticTypeReference.d.ts +23 -0
- package/dist/compiler/semanticTypeReference.js +36 -0
- package/dist/compiler/shapeResolver.d.ts +1 -1
- package/dist/compiler/shapeResolver.js +7 -9
- package/dist/compiler/soapHeaders.d.ts +16 -0
- package/dist/compiler/soapHeaders.js +42 -0
- package/dist/compiler/sourceSchemaBinding.d.ts +25 -0
- package/dist/compiler/sourceSchemaBinding.js +39 -0
- package/dist/compiler/standardSchemaComponents.d.ts +71 -0
- package/dist/compiler/standardSchemaComponents.js +74 -0
- package/dist/compiler/standardSchemaConstruction.d.ts +20 -0
- package/dist/compiler/standardSchemaConstruction.js +34 -0
- package/dist/compiler/structuralCompanions.d.ts +15 -0
- package/dist/compiler/structuralCompanions.js +232 -0
- package/dist/compiler/validateSemanticGraph.d.ts +4 -0
- package/dist/compiler/validateSemanticGraph.js +376 -0
- package/dist/compiler/wildcardAlgebra.d.ts +25 -0
- package/dist/compiler/wildcardAlgebra.js +155 -0
- package/dist/compiler/wsdlPolicyRequirements.d.ts +43 -0
- package/dist/compiler/wsdlPolicyRequirements.js +239 -0
- package/dist/config.d.ts +0 -1
- package/dist/gateway/generateCheckedGateway.d.ts +32 -0
- package/dist/gateway/generateCheckedGateway.js +293 -0
- package/dist/gateway/generateGateway.d.ts +0 -1
- package/dist/gateway/generateGateway.js +2 -2
- package/dist/gateway/generators.d.ts +0 -1
- package/dist/gateway/helpers.d.ts +0 -1
- package/dist/generation/componentShape.d.ts +14 -0
- package/dist/generation/componentShape.js +269 -0
- package/dist/generation/preamble.d.ts +0 -1
- package/dist/generation/sourceLayout.d.ts +13 -0
- package/dist/generation/sourceLayout.js +40 -0
- package/dist/generation/writeGeneratedSource.d.ts +0 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +3 -0
- package/dist/loader/fetch.d.ts +0 -1
- package/dist/loader/orderedSyntax.d.ts +84 -0
- package/dist/loader/orderedSyntax.js +222 -0
- package/dist/loader/resolutionDepth.d.ts +6 -0
- package/dist/loader/resolutionDepth.js +65 -0
- package/dist/loader/schemaInput.d.ts +80 -0
- package/dist/loader/schemaInput.js +249 -0
- package/dist/loader/schemaResources.d.ts +60 -0
- package/dist/loader/schemaResources.js +333 -0
- package/dist/loader/wsdlLoader.d.ts +0 -1
- package/dist/openapi/casing.d.ts +0 -1
- package/dist/openapi/generateOpenAPI.d.ts +0 -1
- package/dist/openapi/generateOpenAPI.js +2 -2
- package/dist/openapi/generatePaths.d.ts +0 -1
- package/dist/openapi/generateSchemas.d.ts +0 -1
- package/dist/openapi/security.d.ts +0 -1
- package/dist/pipeline.d.ts +6 -2
- package/dist/pipeline.js +13 -0
- package/dist/test/generateCheckedTests.d.ts +17 -0
- package/dist/test/generateCheckedTests.js +60 -0
- package/dist/test/generateTests.d.ts +0 -1
- package/dist/test/generateTests.js +2 -2
- package/dist/test/generators.d.ts +0 -1
- package/dist/test/mockData.d.ts +0 -1
- package/dist/test/mockData.js +20 -14
- package/dist/util/attributeWildcards.d.ts +0 -1
- package/dist/util/builder.d.ts +0 -1
- package/dist/util/catalogMeta.d.ts +0 -1
- package/dist/util/checkedCliDiagnostics.d.ts +11 -0
- package/dist/util/checkedCliDiagnostics.js +22 -0
- package/dist/util/cli.d.ts +0 -1
- package/dist/util/errors.d.ts +0 -1
- package/dist/util/imports.d.ts +0 -1
- package/dist/util/runtimeSource.d.ts +0 -1
- package/dist/util/runtimeSource.js +3 -5
- package/dist/util/securityConfig.d.ts +0 -1
- package/dist/util/streamConfig.d.ts +0 -1
- package/dist/util/tools.d.ts +0 -1
- package/dist/util/xmlWhitespace.d.ts +2 -0
- package/dist/util/xmlWhitespace.js +4 -0
- package/dist/xsd/primitives.d.ts +0 -1
- package/docs/agent-skill.md +2 -0
- package/docs/api-reference.md +1 -1
- package/docs/checked-gateway.md +210 -0
- package/docs/checked-generation.md +161 -0
- package/docs/cli-reference.md +43 -1
- package/docs/concepts.md +136 -1
- package/docs/configuration.md +5 -1
- package/docs/corpus.md +33 -0
- package/docs/direct-values.md +311 -0
- package/docs/examples/checked-forecast.wsdl +19 -0
- package/docs/gateway-guide.md +1 -1
- package/docs/generated-code.md +10 -5
- package/docs/mapping-contract.md +114 -0
- package/docs/migration-playbook.md +1 -1
- package/docs/output-anatomy.md +1 -1
- package/docs/start-here.md +8 -2
- package/docs/supported-patterns.md +17 -5
- package/docs/testing.md +117 -31
- package/llms.txt +7 -7
- package/package.json +79 -25
- package/src/generation/preambles/direct-client/typescript.preamble +3 -0
- package/src/runtime/checkedGatewayHost.tpl.txt +157 -0
- package/src/runtime/streamXml.ts +1 -1
- package/dist/app/generateApp.d.ts.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/client/generateClient.d.ts.map +0 -1
- package/dist/client/generateOperations.d.ts.map +0 -1
- package/dist/client/generateTypes.d.ts.map +0 -1
- package/dist/client/generateUtils.d.ts.map +0 -1
- package/dist/compiler/generateCatalog.d.ts.map +0 -1
- package/dist/compiler/schemaCompiler.d.ts.map +0 -1
- package/dist/compiler/shapeResolver.d.ts.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/gateway/generateGateway.d.ts.map +0 -1
- package/dist/gateway/generators.d.ts.map +0 -1
- package/dist/gateway/helpers.d.ts.map +0 -1
- package/dist/generation/preamble.d.ts.map +0 -1
- package/dist/generation/writeGeneratedSource.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/loader/fetch.d.ts.map +0 -1
- package/dist/loader/wsdlLoader.d.ts.map +0 -1
- package/dist/openapi/casing.d.ts.map +0 -1
- package/dist/openapi/generateOpenAPI.d.ts.map +0 -1
- package/dist/openapi/generatePaths.d.ts.map +0 -1
- package/dist/openapi/generateSchemas.d.ts.map +0 -1
- package/dist/openapi/security.d.ts.map +0 -1
- package/dist/pipeline.d.ts.map +0 -1
- package/dist/runtime/jsonArray.d.ts +0 -24
- package/dist/runtime/jsonArray.d.ts.map +0 -1
- package/dist/runtime/jsonArray.js +0 -52
- package/dist/runtime/ndjson.d.ts +0 -24
- package/dist/runtime/ndjson.d.ts.map +0 -1
- package/dist/runtime/ndjson.js +0 -30
- package/dist/runtime/streamXml.d.ts +0 -45
- package/dist/runtime/streamXml.d.ts.map +0 -1
- package/dist/runtime/streamXml.js +0 -212
- package/dist/test/generateTests.d.ts.map +0 -1
- package/dist/test/generators.d.ts.map +0 -1
- package/dist/test/mockData.d.ts.map +0 -1
- package/dist/util/attributeWildcards.d.ts.map +0 -1
- package/dist/util/builder.d.ts.map +0 -1
- package/dist/util/catalogMeta.d.ts.map +0 -1
- package/dist/util/cli.d.ts.map +0 -1
- package/dist/util/errors.d.ts.map +0 -1
- package/dist/util/imports.d.ts.map +0 -1
- package/dist/util/runtimeSource.d.ts.map +0 -1
- package/dist/util/securityConfig.d.ts.map +0 -1
- package/dist/util/streamConfig.d.ts.map +0 -1
- package/dist/util/tools.d.ts.map +0 -1
- package/dist/xsd/primitives.d.ts.map +0 -1
- package/docs/AGENTS.md +0 -47
- package/docs/README.md +0 -56
- package/docs/architecture.md +0 -149
- package/docs/decisions/001-test-generation.md +0 -36
- package/docs/decisions/002-streamable-responses.md +0 -330
- package/docs/file-naming-and-path-organization.md +0 -213
- package/docs/releases/README.md +0 -94
- package/docs/releases/v0.20.0.md +0 -22
- package/docs/releases/v0.21.0.md +0 -30
- package/docs/releases/v0.22.0.md +0 -30
- package/docs/releases/v0.23.0.md +0 -31
- package/docs/releases/v0.24.0.md +0 -38
- package/docs/releases/v0.25.0.md +0 -31
- package/docs/releases/v0.25.2.md +0 -32
- package/docs/releases/v0.26.0.md +0 -32
- package/docs/releases/v0.27.0.md +0 -31
- package/docs/releases/v0.28.0.md +0 -32
- package/docs/releases/v0.29.0.md +0 -32
- package/docs/releases/v0.30.0.md +0 -30
- package/docs/releases/v0.30.1.md +0 -31
- package/docs/releases/v0.30.2.md +0 -30
- package/docs/releases/v0.30.3.md +0 -33
- package/docs/releases/v0.31.0.md +0 -33
- package/docs/releases/v0.32.0.md +0 -33
- package/docs/releases/v0.33.0.md +0 -34
- package/docs/releases/v0.34.0.md +0 -30
- package/docs/releases/v0.35.0.md +0 -33
- package/docs/releases/v0.36.0.md +0 -32
- package/docs/releases/v0.37.0.md +0 -33
- package/docs/releases/v0.38.0.md +0 -35
- package/docs/releases/v0.39.0.md +0 -35
- package/docs/releases/v0.40.0.md +0 -45
- package/docs/releases/v0.40.1.md +0 -34
- package/docs/releases/v1.0.0.md +0 -42
- package/docs/releases/v1.0.1.md +0 -38
- package/docs/releases/v1.0.2.md +0 -51
- package/docs/releases/v1.0.3.md +0 -37
- package/docs/releases/v1.0.4.md +0 -45
- package/docs/releases/v1.0.5.md +0 -41
- package/docs/releases/v1.0.6.md +0 -35
- package/docs/releases/v1.0.7.md +0 -36
- package/docs/releases/v1.1.0.md +0 -42
- package/docs/releases/v1.1.1.md +0 -44
- package/docs/releases/v1.1.2.md +0 -42
- package/docs/releases/v1.1.3.md +0 -36
- package/docs/releases/v1.1.4.md +0 -36
- package/docs/roadmap/README.md +0 -107
- package/docs/roadmap/v1.0-capability-conformance-framework.md +0 -582
- package/docs/roadmap/v1.0-choice-union-mode.md +0 -90
- package/docs/roadmap/v1.0-contract-audit.md +0 -75
- package/docs/roadmap/v1.0-json-array-streaming.md +0 -101
- package/docs/roadmap/v1.0-openapi-fastify-compatibility.md +0 -99
- package/docs/roadmap/v1.0-release-candidate-gates.md +0 -92
- package/docs/roadmap/v1.0-wsdl-coverage-matrix.md +0 -200
- package/docs/roadmap/v1.0-xs-anyattribute-wildcard-bag.md +0 -932
- package/src/runtime/jsonArray.ts +0 -55
- package/src/runtime/ndjson.ts +0 -32
|
@@ -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,79 @@
|
|
|
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 { AttributeRestrictionPair } from './schemaAttributeUses.js';
|
|
6
|
+
import type { ScalarResult } from './schemaScalarKernel.js';
|
|
7
|
+
import type { ScalarObligation } from './scalarSchemaAssessment.js';
|
|
8
|
+
import type { CorrespondenceReceipt } from './re01CandidateCorrespondence.js';
|
|
9
|
+
import type { SemanticTypeDependency, SemanticTypeReference } from './semanticTypeReference.js';
|
|
10
|
+
import type { IdentityConstraintDependency } from './schemaIdentityConstraints.js';
|
|
11
|
+
import type { StandardElementConstruction } from './standardSchemaConstruction.js';
|
|
12
|
+
export type ConstructionObligation = Readonly<{
|
|
13
|
+
rule: string;
|
|
14
|
+
component: NodeId;
|
|
15
|
+
contextId: string;
|
|
16
|
+
}>;
|
|
17
|
+
export type ComponentConstructionReceipt = Readonly<{
|
|
18
|
+
kind: 'checked';
|
|
19
|
+
authority: 'XSD10-component-construction-v1';
|
|
20
|
+
contextId: string;
|
|
21
|
+
component: NodeId;
|
|
22
|
+
scope: 'local-component-premises' | 'original-source-syntax-only';
|
|
23
|
+
receipts: readonly object[];
|
|
24
|
+
dependencies: readonly NodeId[];
|
|
25
|
+
builtinDependencies: readonly string[];
|
|
26
|
+
standardDependencies: readonly StandardElementConstruction[];
|
|
27
|
+
typeDependencies: readonly SemanticTypeDependency[];
|
|
28
|
+
identityConstraintDependencies: readonly IdentityConstraintDependency[];
|
|
29
|
+
re01?: Readonly<{
|
|
30
|
+
target: NodeId;
|
|
31
|
+
ancestor: SemanticTypeReference;
|
|
32
|
+
primitive: boolean;
|
|
33
|
+
}>;
|
|
34
|
+
obligations: readonly ConstructionObligation[];
|
|
35
|
+
discharged: readonly ConstructionObligation[];
|
|
36
|
+
}>;
|
|
37
|
+
export type ConstructionFailure = Readonly<{
|
|
38
|
+
kind: 'invalid-schema' | 'candidate-rejected' | 'unsupported-capability' | 'unresolved';
|
|
39
|
+
rule: string;
|
|
40
|
+
component: NodeId;
|
|
41
|
+
message: string;
|
|
42
|
+
contextId?: string;
|
|
43
|
+
}>;
|
|
44
|
+
export type ComponentConstructionResult = ComponentConstructionReceipt | ConstructionFailure | ResourceLimitFailure;
|
|
45
|
+
/** Original syntax under a prohibited use/zero particle has no local component. */
|
|
46
|
+
export declare function isAbsentOriginalSourceComponent(context: SemanticContext, id: NodeId): boolean;
|
|
47
|
+
export declare function assertComponentConstruction(context: SemanticContext, receipt: ComponentConstructionReceipt): void;
|
|
48
|
+
export declare function checkComponentConstruction(context: SemanticContext, id: NodeId, options?: Readonly<{
|
|
49
|
+
correspondence?: CorrespondenceReceipt;
|
|
50
|
+
}>): ComponentConstructionResult;
|
|
51
|
+
export type SimpleRestrictionPredicate = Readonly<{
|
|
52
|
+
kind: 'checked-simple-restriction-predicate';
|
|
53
|
+
contextId: string;
|
|
54
|
+
target: NodeId;
|
|
55
|
+
base: NodeId;
|
|
56
|
+
attributes: AttributeRestrictionPair;
|
|
57
|
+
scalar: Extract<ScalarResult<boolean>, {
|
|
58
|
+
kind: 'checked';
|
|
59
|
+
}>;
|
|
60
|
+
typeDependencies: readonly SemanticTypeDependency[];
|
|
61
|
+
scalarObligations: readonly ScalarObligation[];
|
|
62
|
+
remaining: readonly ['source-and-base-construction', 'alternative-derivation-interpretation'];
|
|
63
|
+
}>;
|
|
64
|
+
export type SimpleRestrictionPredicateResult = SimpleRestrictionPredicate | ResourceLimitFailure | Readonly<{
|
|
65
|
+
kind: 'not-simple-restriction';
|
|
66
|
+
rule: string;
|
|
67
|
+
component: NodeId;
|
|
68
|
+
contextId: string;
|
|
69
|
+
details?: object;
|
|
70
|
+
}>;
|
|
71
|
+
/** Authenticate the paired predicate; it never replaces the target's actual derivation. */
|
|
72
|
+
export declare function assertSimpleRestrictionPredicate(context: SemanticContext, receipt: SimpleRestrictionPredicate): void;
|
|
73
|
+
/** Evaluate simple-content restriction constraints for the actual target properties and an explicit alternative base.
|
|
74
|
+
* @remarks Reuses the AU derivation owner and scalar content-derivation kernel. No target node, raw property,
|
|
75
|
+
* TYPE/SCOPE lookup or stored base edge is replaced. Whole construction and the in-principle derivation interpretation
|
|
76
|
+
* remain separate duties; failure of an alternative never declares the source schema invalid.
|
|
77
|
+
* @returns An authenticated native predicate, an explicit predicate/unavailability diagnostic, or sticky resource failure.
|
|
78
|
+
*/
|
|
79
|
+
export declare function checkSimpleRestrictionPredicate(context: SemanticContext, target: NodeId, base: NodeId): SimpleRestrictionPredicateResult;
|