@techspokes/typescript-wsdl-client 1.1.3 → 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 +50 -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/generateClient.d.ts.map +1 -1
- package/dist/client/generateClient.js +22 -9
- 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/generated-code.md +4 -0
- package/docs/reference-validation.md +243 -0
- package/docs/releases/v1.1.4.md +36 -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 +27 -13
- package/src/generation/preambles/direct-client/typescript.preamble +3 -0
- package/src/runtime/clientStreamMethods.tpl.txt +1 -1
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
# ADR 003: Faithful Content Models and Integration Boundaries
|
|
2
|
+
|
|
3
|
+
Architecture contracts for S02 and the later content-model implementation. See the root [README](../../README.md).
|
|
4
|
+
|
|
5
|
+
## Status and authority
|
|
6
|
+
|
|
7
|
+
S02 contracts reconciled with the executed [SOAP probe](../content-model-soap-feasibility.md) and [gateway probe](../content-model-gateway-feasibility.md), October 9, 2026. The initial draft passed independent semantic and integration review at `2f88ec81f77f4fc5a06b78f2d507ae8e20fe7a7c` before either probe began. The [decision register](../content-model-decisions.md) is the single disposition/ownership register; [S02's handoff](../content-model-s02-handoff.md) and #149 record final review/check/delivery checkpoints. This ADR activates no production behavior.
|
|
8
|
+
|
|
9
|
+
[Epic #147](https://github.com/TechSpokes/typescript-wsdl-client/issues/147), [S02 #149](https://github.com/TechSpokes/typescript-wsdl-client/issues/149) and #168/#169/#170 supply the acceptance gates. [S01 baseline](../content-model-baseline.md) and [shipped-fix reconciliation](../content-model-shipped-fix.md) are evidence, including BCsabaEngine's separately attributed production report. Their [manifest](../../test/conformance/semantic-baseline.json) remains authoritative for case IDs and expected outcomes.
|
|
10
|
+
|
|
11
|
+
These contracts define the intended `xsd10-faithful-v1` profile, not the shipped support matrix. Implementation tasks must add independent fixtures before claiming each supported constraint. A missing implementation is an implementation gate, not permission to silently drop a rule.
|
|
12
|
+
|
|
13
|
+
## Input and canonical graph: S02-D01
|
|
14
|
+
|
|
15
|
+
Preserve ordered element/text syntax, expanded names, every element's in-scope namespaces, source URI, line/column and source digest before compiling. The syntax adapter belongs to #171; controlled resolution belongs to #172. DTDs, external entities and payload-driven schema fetching are forbidden.
|
|
16
|
+
|
|
17
|
+
Resolve relative references against the declaring node's effective base URI, initially the final retrieval URI after policy-checked redirects. #171 preserves inherited `xml:base`; #172 resolves it before each import/include, under the same scheme/host/root policy. Initially support local files and HTTP(S) through an explicit allow policy; reject other schemes. A user-authorized root does not authorize arbitrary imports: local imports stay within configured roots, and remote redirects and every import are rechecked against host/scheme policy.
|
|
18
|
+
|
|
19
|
+
Cache fetched bytes by canonical absolute retrieval URI and digest. Cache schema interpretation separately by `(resource digest, effective document/base URI, effective target namespace, include/import context)`; a chameleon include interpreted in two namespaces produces two contexts. Byte-identical schemas at different base URIs may resolve relative references differently and must not alias; #172 owns that fixture together with redirect and `xml:base` cases. Preserve cycle edges, fetch once per resource, and diagnose unresolved declarations after traversal rather than substituting empty types. #172 must define URI normalization without collapsing distinct query strings or filesystem identities.
|
|
20
|
+
|
|
21
|
+
The immutable graph (#173/#174) contains separate element/type/attribute/group declarations, particle nodes, local occurrence bounds, structured references, derivation edges, namespace constraints, source provenance and operation bindings. Global symbol identity is `(namespace URI, local name, symbol role)`; named local declarations and anonymous types additionally use containing declaration identity and stable source-relative paths. The same local element QName in two containing types may have different types and must remain distinct; #177 owns that fixture. Prefixes and generated TypeScript names are not identity.
|
|
22
|
+
|
|
23
|
+
Finite bounds use exact integers; persisted finite bounds are decimal strings and unbounded is a distinct token. Zero annihilates descendant bounds, including an unbounded descendant. #178 calculates summaries; #180 matches complete particle languages, including gaps, correlation and order. A min/max interval is never a complete validator.
|
|
24
|
+
|
|
25
|
+
References retain their roles and identities; recursion remains a reference. #175/#176 resolve references and derive extension by composition and restriction by checked language/attribute constraints. #179 rejects illegal schemas, including UPA violations and illegal `all` particles, before planning projections.
|
|
26
|
+
|
|
27
|
+
## Runtime values and projections: S02-D02
|
|
28
|
+
|
|
29
|
+
The graph describes allowed values; an XML value describes one value. #187 owns ordered XML values/events, with expanded element/attribute names, ordered children/text, namespace context for QName lexical values, nil state and scalar lexical/value context. Namespace declarations supply context and interpreted `xsi:nil` supplies nil state, rather than becoming ordinary application attributes; the lexical boundary retains their raw forms for security processing. Comments, processing instructions, prefix spelling, attribute order, entity spellings and transport chunk boundaries are outside fidelity; significant mixed text and child order are inside it.
|
|
30
|
+
|
|
31
|
+
Boundary shapes below are illustrative data contracts, not prescribed class or function APIs.
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
type ExpandedName = { namespace: string; local: string };
|
|
35
|
+
type TypeReference = { namespace: string; local: string; role: "type" };
|
|
36
|
+
type XmlValue = {
|
|
37
|
+
name: ExpandedName;
|
|
38
|
+
attributes: Array<{ name: ExpandedName; lexical: string }>;
|
|
39
|
+
nil: boolean;
|
|
40
|
+
content: Array<XmlValue | { text: string }>;
|
|
41
|
+
namespaces: Readonly<Record<string, string>>;
|
|
42
|
+
};
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
#182 selects compact objects/arrays only when reversible from observable XML values. Repeated `(a,b)` becomes an ordered sequence of pairs only if boundaries are uniquely inferable; repeated choices with mixed selections become an ordered tagged branch array when inferable. If invisible boundaries cannot be uniquely recovered, expose an ordered typed content representation, not independent name-keyed arrays or invented history.
|
|
46
|
+
|
|
47
|
+
Projection plans label each mapping `reversible`, `normalized` or `lossy`. Normalized mappings specify the precise equivalence class; lossy convenience views cannot be accepted as a faithful SOAP input without retained canonical content. Empty branch choices carry no recoverable wire identity. Zero-width repetitions normalize away; a required empty-capable choice is validated by language acceptance, not property presence.
|
|
48
|
+
|
|
49
|
+
Nil is independent of attributes. For a nillable element with attribute `id="7"`, a faithful representation can be `{nil:true, attributes:{id:"7"}}`; it cannot be reduced to `null`. Absence, `<x/>`, `<x xsi:nil="true"/>`, a null item and a null wrapper are distinct. Nil forbids content and preserves allowed attributes; #179/#180/#184 enforce the applicable declaration constraints.
|
|
50
|
+
|
|
51
|
+
## Equivalence and normalization: S02-D03
|
|
52
|
+
|
|
53
|
+
Target schema-defined XML values, not byte identity. `normalizeXml` compares expanded names, allowed attributes, meaningful ordered content, nil and type-specific scalar value meaning under the operation's resolved schema context. It applies the same declared default/fixed augmentation as XML assessment, so an absent defaulted attribute and its explicitly encoded assessed value compare equally. Only element-only insignificant whitespace is discarded; mixed-content whitespace remains. QName prefix changes are equivalent only when they resolve to the same expanded name.
|
|
54
|
+
|
|
55
|
+
`normalizeValue` returns a fresh value without mutating caller objects. It chooses the projection's documented canonical representative of invisible grouping, empty realizations and scalar lexical equivalence. It must preserve observable order and multiplicity; it cannot turn invalid branches into valid ones. Lexical-sensitive facets require retaining an admitted lexical witness or proving the selected representative satisfies every facet; value equality alone does not authorize rewriting a pattern-constrained lexical form.
|
|
56
|
+
|
|
57
|
+
The laws apply to schema/profile-valid XML and runtime-valid values within the selected faithful projection and declared validation scope. They do not promise equivalence for unsupported, invalid or lossy data.
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
decode(encode(value)) = normalizeValue(value)
|
|
61
|
+
normalizeXml(encode(decode(xml))) = normalizeXml(xml)
|
|
62
|
+
normalizeValue(normalizeValue(value)) = normalizeValue(value)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Falsifiable examples
|
|
66
|
+
|
|
67
|
+
| Case | Input and required observation |
|
|
68
|
+
|---|---|
|
|
69
|
+
| Reversible pairs | `(a=1,b=2),(a=3,b=4)` encodes `a,b,a,b`, never `a,a,b,b` |
|
|
70
|
+
| Mixed branch order | `[a(1),b(2),a(3)]` decodes in that order |
|
|
71
|
+
| Invisible boundaries | Groups `[a],[a,a]` and `[a,a],[a]` encode the same three `a` nodes |
|
|
72
|
+
| Canonical representative | Both invisible groupings normalize to the same ordered three-node value |
|
|
73
|
+
| Empty alternatives | Zero, one or several empty selections normalize to the same empty content |
|
|
74
|
+
| Nil attributes | Nil `x` with `id=7` retains `id=7` through both round trips |
|
|
75
|
+
| QName aliases | `p:T` and `q:T` with equal namespace bindings normalize equally |
|
|
76
|
+
| Scalar lexical form | Unconstrained decimal `+01.00` maps to value `1`; original caller text stays untouched |
|
|
77
|
+
| Lexical-sensitive facet | Decimal pattern `[+]0[0-9][.][0-9]{2}` retains an admitted witness such as `+01.00`, not `1` |
|
|
78
|
+
| Invalid input | A branch object containing mutually exclusive fields is rejected, never repaired |
|
|
79
|
+
|
|
80
|
+
Standards-defined whitespace/value normalization belongs to #184. API representation conversion is a separate explicit boundary (#183/#184/#198): HTTP decimal strings become exact scalar values in a new object. No JavaScript numeric coercion, removal of unknown fields or validator defaults may rescue an invalid submission.
|
|
81
|
+
|
|
82
|
+
XSD default/fixed augmentation is explicit in the XML assessment stage: defaulted optional attributes may be materialized, and present empty non-nil elements may receive their declared default. An absent element is not created to satisfy a required particle. Fixed values are checked by value; defaults never make a missing required API field valid. Normalized projections expose augmented values and their documented canonical encoding without changing the input.
|
|
83
|
+
|
|
84
|
+
## XSD 1.0 profile and enforcement: S02-D04
|
|
85
|
+
|
|
86
|
+
The profile selects legal XSD 1.0 sequences, choices, groups and `all` with legal bounds; zero, optional, repeated composite/nested alternatives and recursion remain in scope. Graph legality and reachable capability assessment (#179) precede particle matching (#180) and scalar validation (#184). Unsupported reachable features fail planning with the exact source/type/feature; unreachable declarations do not silently enlarge an operation's support claim.
|
|
87
|
+
|
|
88
|
+
### Profile-to-enforcement matrix
|
|
89
|
+
|
|
90
|
+
Each fixture below is an independent acceptance input: S01 IDs link to the existing manifest; named new fixture families are required deliverables of the implementing issue, not claims of executed S02 coverage. #181 and #207 qualify them against independent XSD engines; the known libxml2 zero-element disagreement remains explicit.
|
|
91
|
+
|
|
92
|
+
| Family / accepted domain | Conversion and validation boundary | Diagnostic / implementation | Independent fixture |
|
|
93
|
+
|---|---|---|---|
|
|
94
|
+
| Legal particles and exact counts | Ordered events; no flattening | `invalid-schema` #179; `invalid-value` #180 | S01 `sequence-order`, `finite-count-gap`, `zero-group-unbounded` |
|
|
95
|
+
| Empty/composite/repeated choice | Language acceptance, not presence counts | #179/#180/#182 | S01 `empty-alternative`, `required-multiple`; #181 mixed composites |
|
|
96
|
+
| Groups, recursion, extension/restriction | Resolved references and checked derivation | #175/#176/#179 | #177 group/recursive/derivation fixtures |
|
|
97
|
+
| Attributes, nil, simple/mixed content | Preserve attributes and text order; validate nil/content separately | #180/#184/#187/#188/#189 | #189 nil-with-attributes and mixed-text fixtures |
|
|
98
|
+
| Wildcard strict/lax/skip | Preserve ordered nodes; strict resolves and validates; lax validates known declarations; skip is opaque | #179/#180/#185/#189 | S01 `wildcard-sequence`; #189 wildcard modes |
|
|
99
|
+
| String family / whitespace | `string`, `normalizedString`, `token`, `language`, `Name`, `NCName`, `NMTOKEN`, `NMTOKENS`; type-specific grammar and whitespace | #184 grammar/normalization; #188/#189/#198 consume | #184 whitespace, name/language grammar and Unicode-length fixtures |
|
|
100
|
+
| Boolean | XML `true,false,1,0`; HTTP boolean only | Exact boolean conversion #184 | #184 invalid lexical boolean fixtures |
|
|
101
|
+
| Integer family | Signed decimal lexical forms; exact integer, subtype bounds | Canonical decimal string for HTTP; #184/#198 | #184 int64 extrema and out-of-range fixtures |
|
|
102
|
+
| Decimal | Finite base-10, no exponent; exact coefficient/scale | String-first; no Number rounding; #184/#198 | #184 decimal bounds and fraction/total digits |
|
|
103
|
+
| Float/double | XSD lexical domain including `INF,-INF,NaN`; IEEE type rounding | Tagged/string nonfinite HTTP values; #184/#183 | #184 nonfinite and rounding fixtures |
|
|
104
|
+
| Date/time/duration families | XSD lexical domain and timezone-presence semantics; no automatic UTC conversion | String representation; #184; no JS Date substitution | #184 timezone, leap/date and duration fixtures |
|
|
105
|
+
| Binary and anyURI | XSD lexical domain; decoded bytes for binary length; no URI dereference | Explicit canonical lexical conversion #184 | #184 invalid base64/hex and URI fixtures |
|
|
106
|
+
| QName | Resolve lexical prefix with local scope; preserve expanded name | HTTP `{namespace,local}`; unbound prefix is invalid; #184/#187 | #171 rebinding; #184 QName-value fixtures |
|
|
107
|
+
| Enumeration | Compare validated scalar values, not JS string coercion | #179 legality; #184 value check; #198 supplemental | #184 enum lexical aliases and rejection |
|
|
108
|
+
| Pattern | XSD regex semantics and derivation combination; ECMAScript subset only when equivalent | #179 rejects unsupported regex constructs; #184/#198 | #184 multiple-pattern and regex-difference fixtures |
|
|
109
|
+
| Numeric bounds / precision | Exact min/max inclusive/exclusive, totalDigits/fractionDigits | #184 shared exact arithmetic; #198 supplemental | #184 boundary values beyond safe integer |
|
|
110
|
+
| Length facets | XSD units: characters, bytes or list items according to type | #184; backend keywords only where equivalent | #184 non-BMP string and binary lengths |
|
|
111
|
+
| Default/fixed | Explicit schema assessment; fixed checked after scalar conversion | #179/#184/#189; API validator defaults disabled | #184 absent attribute/present empty element/fixed mismatch |
|
|
112
|
+
| List | Whitespace-separated supported atomic items; ordered item array | #179 legality; #184 item/facet validation; #183 JSON array | #184 empty/invalid item and list-length fixtures |
|
|
113
|
+
| Union | Declaration-order lexical member assessment; retain selected type, value and needed lexical witness | #179/#184; #183 tagged mapping; never infer from JS coercion | #184 overlapping lexical/member-order fixtures |
|
|
114
|
+
|
|
115
|
+
`anySimpleType` accepts lexical text with no invented constraints. `anyType` is an explicit opaque scope, not a validated concrete structure. NOTATION, ID/IDREF/IDREFS document identity, ENTITY/ENTITIES requiring DTD declarations, keys/keyrefs/unique, substitution-group and dynamic `xsi:type` polymorphism, `redefine`, attachments/MTOM and XSD 1.1 assertions/open content are excluded with `unsupported-capability`. #179 owns diagnosis; legacy behavior remains routed by S02-D10.
|
|
116
|
+
|
|
117
|
+
Supported pattern planning initially admits only an evidenced equivalent subset; it must diagnose every other construct rather than copy arbitrary XSD regex into JSON Schema. List/union of supported members are in scope; members using excluded constraints make the reachable type unsupported. Union member tags describe the member determined from encoded lexical data; a caller's alternative member tag that produces identical XML normalizes to the declaration-order assessment result, rather than promising unrecoverable member history. New scalar families cannot be marked verified from a profile label or a serializer test alone.
|
|
118
|
+
|
|
119
|
+
### Scalar pipeline
|
|
120
|
+
|
|
121
|
+
The [S06 research handoff](../content-model-s06-research-handoff.md) supplies separate AU01, RE01, PW01 and DT01 evidence and candidate interfaces.
|
|
122
|
+
The maintainer explicitly selected C1 attribute semantics with universal source-replacement matching, R-240 wildcard bounds and candidate A's calendar repairs.
|
|
123
|
+
Their local research acceptance is separate from RE01's missing completeness proof, #179 implementation and the factual BCE reference correction.
|
|
124
|
+
The existing profile and this enforcement matrix remain authoritative, with #179 owning schema integration and #184 owning the shared payload scalar implementation.
|
|
125
|
+
|
|
126
|
+
XML lexical assessment (#187/#189) retains lexical text and namespace context, then #184 validates/converts according to the type plan. #188 validates application values before encoding. #198 validates HTTP representation before explicit conversion; #199/#200 call the same scalar/particle owners for request and response semantics.
|
|
127
|
+
|
|
128
|
+
Diagnostic paths include operation, type/particle ID, expanded name, source location and instance path where available; values and credential-bearing headers are not copied into errors. `invalid-schema`, `invalid-value`, `unsupported-capability`, `resource-limit`, `incompatible-artifact`, `transport`, `soap-fault` and `cancelled` are distinct categories. #179/#180/#184 own semantic detail; adapters attach I/O context without changing categories.
|
|
129
|
+
|
|
130
|
+
## Portable contracts and dialects: S02-D05 / S02-D06
|
|
131
|
+
|
|
132
|
+
#182 owns the client projection; #183 owns HTTP JSON projection; #184 owns scalar rules. Type references remain structured until a backend resolves deterministic names. Exact integers/decimals use decimal strings in HTTP JSON, QName uses expanded names, binary uses canonical encoded text and nonfinite floats use explicit tagged/string representations. Client mappings may use exact runtime scalar types; those types never leak through JSON.stringify accidentally.
|
|
133
|
+
|
|
134
|
+
#185/#186 persist one data-only portable bundle: format/model/profile versions, graph/source digests, projection and codec plans, binding selection, declared capabilities, limits, validation/completion scope and fingerprint. The first formats are `catalogFormat:2`, `bundleFormat:1`, `model:"xsd10-faithful-v1"`; these are independent of npm version. No generated-source parsing or OpenAPI reconstruction creates missing XML structure.
|
|
135
|
+
|
|
136
|
+
Fingerprint SHA-256 covers a deterministic semantic serialization of graph, selected projections, profile, binding/capabilities and scope. Exclude timestamps, machine paths and documentation from semantic identity; include source digests separately for provenance. #185 validates bundle structure, references and limits before #186 compares compatibility; a digest detects mismatch but does not authenticate an untrusted artifact. Consumers negotiate exact format major/model/profile and supported required capabilities, and compare the same bundle fingerprint before dispatch. Unknown mandatory fields/capabilities fail closed; optional annotations can be ignored within a supported format.
|
|
137
|
+
|
|
138
|
+
OpenAPI 3.1.1 / its 2020-12-based schema dialect is the selected documentation target. Current output is 3.1.0; #197 implements the new target with completeness metadata. Runtime JSON Schema and serializer schemas are separately emitted draft-07 lowerings; they do not consume arbitrary OpenAPI schemas. The [gateway probe](../content-model-gateway-feasibility.md) executes strict route-local Ajv without coercion/defaults/removal, recursion, nullable boundaries, closure, facets and byte preservation. Unknown dialect keywords and missing supplemental plans fail closed.
|
|
139
|
+
|
|
140
|
+
JSON Schema constrains JSON representations; XSD regex, QName scope, exact decimal facets and complete particle languages require supplemental #184/#180 checks where the lowering is incomplete. Each plan declares completeness and supplemental requirements. The serializer is never a validator. #197 emits dialect-specific plans; #198 supplies validators; #199/#200 integrate validation and explicit conversion independently from serialization.
|
|
141
|
+
|
|
142
|
+
Use tested draft-07 serializer plans where they preserve admitted JSON values. Otherwise select explicit validated `JSON.stringify` fallback, retaining the independent response validator and shared supplemental rules. The current 150-reference heuristic is an executed existing policy, not a measured serializer maximum; #200 owns its qualified replacement or retention. Current generic `allOf` flattening changes meaning for closed disjoint members, and current fallback accepts invalid responses; neither behavior is adopted as faithful validation. Validate returned HTTP JSON independently and prove the serialized bytes preserve every admitted field/value; #200 must reject field loss before sending.
|
|
143
|
+
|
|
144
|
+
## SOAP adapters and security ordering: S02-D07
|
|
145
|
+
|
|
146
|
+
Retain ADR-002's dedicated streaming transport. The [SOAP probe](../content-model-soap-feasibility.md) establishes SOAP 1.1 document/literal feasibility through both actual generated execution paths with bounded raw-body/raw-response seams. #190 owns buffered integration and #192 owns shared request encoding plus streamed decoder integration. One #188 encoder produces ordered body content for both; transports own envelopes, namespace bindings, SOAP version/action/headers, endpoint selection and I/O, without a second particle/scalar engine.
|
|
147
|
+
|
|
148
|
+
Select node-soap's executed `_xml` complete-body or documented `$xml` child-content hook before its security stage, plus the dependency response event before name-keyed parsing. Buffered Basic/header/UsernameToken/signature/mTLS checks pass through that seam; incoming security verification remains a separately enforced qualification gate. Name-keyed parsed objects alone cannot carry `a,b,a` order. Streaming injects that same content at its envelope boundary and supplies namespace-aware ordered events from actual HTTP chunks to #189's decoder.
|
|
149
|
+
|
|
150
|
+
Select an operation's declared binding/version/port explicitly, not the first service port. Dispatch checks endpoint overrides, actions, HTTP/SOAP headers, faults, auth/security, cancellation and capabilities against the bundle. Unsupported/unverified combinations fail before sending; never silently omit credentials or signatures. #169's matrix must distinguish executed success/failure from source inspection and upstream documentation.
|
|
151
|
+
|
|
152
|
+
Validate/encode application input, build the envelope, then apply security-sensitive signatures to the final envelope before dispatch. Incoming signature/security verification precedes semantic normalization; preserve required raw bytes at that boundary. Changing prefixes, text or grouping after signing can invalidate signatures. No XML-value equivalence contract promises a byte-preserving signed round trip.
|
|
153
|
+
|
|
154
|
+
For a signature whose verification scope closes only at response EOF, records must not be exposed as authenticated before verification. #190 may use bounded buffering; #192/#193 must either use a separately proven incremental verification protocol or reject that streaming/security combination before dispatch. A signature failure is terminal failure and never successful completion. The verification-before-yield rule is mandatory even if record datatype validation succeeds.
|
|
155
|
+
|
|
156
|
+
The S02 minimum feasibility gate is local SOAP 1.1 document/literal HTTP: both actual paths must preserve a shared pre-encoded ordered body and expose response order/namespace/nil context before name-keyed parsing; buffered calls must preserve endpoint overrides, actions, HTTP Basic and HTTP/SOAP headers and faults; streaming calls must establish declared binding endpoint/action/HTTP response headers, HTTP failure, before-EOF records and a consumption/completion seam. Streaming auth, SOAP headers, SOAP faults and cancellation must be executed and classified even when the current path fails. A current omission is not a verified capability: the selected contract must name a fail-closed first-consumer owner and concrete seam for correction. Existing buffered security cannot be dropped; a new required security/transport combination with no evidenced adapter seam blocks S02 closure.
|
|
157
|
+
|
|
158
|
+
HTTP Basic/header auth, WS-Security, TLS client certificates, SOAP 1.2 and cancellation are separate capabilities. Preserve the legacy buffered capability surface through its legacy adapter. Only combinations executed by #169 may count as verified on the proposed faithful path; isolated later capability qualification can block #190/#192 without changing graph/value contracts, provided the required base transport feasibility is established.
|
|
159
|
+
|
|
160
|
+
The executed minimum passes, including per-call selected-port/action and buffered abort seams, raw namespace/nil context, streamed records before EOF, fault detection and cancellation correction seams. The locked dependency's shared-port-type action collision requires immutable selected-port routing and per-call version-appropriate action headers in #190; a mutable global action setter is rejected. Current streaming omits configured endpoint/security/headers/version overrides, accepts HTTP-200 faults as empty results, loses namespace/nil context during materialization and leaves input open after early return. #192/#193 must replace those narrow responsibilities with the demonstrated seams and reject every unqualified capability before dispatch; current omissions are executed failures, not support.
|
|
161
|
+
|
|
162
|
+
## Stream completion: S02-D08
|
|
163
|
+
|
|
164
|
+
#185 persists scope; #193 owns lifecycle/completion; #194 proves parity. Yielding a valid record is provisional: successful whole-response completion requires well-formed XML EOF, the selected SOAP version/envelope/body/wrapper grammar, valid records, declared wrapper/scalar and aggregate constraints, valid trailing content, and no SOAP fault or transport error.
|
|
165
|
+
|
|
166
|
+
For opaque/wildcard wrappers with companion record types, completion certifies SOAP grammar, configured wrapper/path shape and counts, record validity and declared trailing policy. It does not certify unknown wildcard/opaque content against a nonexistent concrete response schema. Strict wildcards validate resolved declarations; lax/skip coverage is reported explicitly. Unknown header blocks and `mustUnderstand` handling remain binding responsibilities, not silently validated record content.
|
|
167
|
+
|
|
168
|
+
Declare `full-response` or `records-with-declared-wrapper-scope` plus opaque exclusions in the bundle. A terminal outcome is success, failure, or cancellation; exhaustion after a validation failure must reject, not appear as success. Early consumer return cancels input and releases resources; it never certifies completion. Completion follows consumption and bounded backpressure, not an independent background drain. Gateway failures before bytes use an error envelope; failures after bytes abort the response as in ADR-002.
|
|
169
|
+
|
|
170
|
+
## Provisional resource budgets: S02-D09
|
|
171
|
+
|
|
172
|
+
These are selected defaults for the future faithful path, not measured maxima or changes to current production defaults. Limits are configurable downward; increases require an explicit caller policy within safe integer/exact-bound handling. #208 refines them with measurements; each first owner implements at/beyond-limit tests now.
|
|
173
|
+
|
|
174
|
+
| Limit | Default and unit | Enforcement owner / failure |
|
|
175
|
+
|---|---|---|
|
|
176
|
+
| Schema resource count | 128 distinct resources per compilation | #172 `resource-limit` |
|
|
177
|
+
| Schema bytes | 8 MiB per resource; 64 MiB aggregate decompressed | #172 `resource-limit` before parse |
|
|
178
|
+
| Resolution depth / redirects | 32 edges / 5 redirects per fetch | #172 `resource-limit` |
|
|
179
|
+
| Fetch time | 15,000 ms per resource; 120,000 ms compilation I/O | #172 `transport` timeout |
|
|
180
|
+
| Syntax/XML depth | 256 nested elements | #171/#187 `resource-limit` |
|
|
181
|
+
| Graph size | 100,000 declarations plus particles | #173/#179 `resource-limit` |
|
|
182
|
+
| Matching work | 1,000,000 state transitions; 10,000 live states per value | #180 `resource-limit`, no partial acceptance |
|
|
183
|
+
| Scalar size | 1 MiB UTF-8 lexical bytes; 4,096 numeric digits | #184/#187 `resource-limit` |
|
|
184
|
+
| Generated expansion | 10,000 alternatives per type; 16 MiB per generated file | #182/#195/#197 `resource-limit` or declared validated fallback |
|
|
185
|
+
| Buffered payload | 32 MiB decompressed XML/JSON bytes per operation | #187/#190/#199/#200 `resource-limit` |
|
|
186
|
+
| Streaming record | 4 MiB decoded UTF-8 bytes per record | #189/#193 `resource-limit` |
|
|
187
|
+
| Streaming queued data | 16 records and 8 MiB, whichever is first | #193 bounded backpressure / `resource-limit` |
|
|
188
|
+
| Aggregate counters | Exact integers, no numeric wraparound | #180/#193 `resource-limit` at configured operation count |
|
|
189
|
+
| Stream inactivity | 30,000 ms without upstream progress | #193 `transport` timeout |
|
|
190
|
+
|
|
191
|
+
Streaming has no global document-byte cap by default; it enforces depth, record, queue and operation aggregate constraints. Queue capacity pauses input; a single oversized record fails. User cancellation is `cancelled`, distinct from deadline exhaustion. S03 applies loading/depth budgets only, without implementing downstream codec budgets.
|
|
192
|
+
|
|
193
|
+
### Direct-client application ownership amendment, October 27, 2026
|
|
194
|
+
|
|
195
|
+
Normal generated-client execution does not inherit research/testing work or size quotas. Resource capacity, logs and operational failures belong to the application hosting the client or REST gateway. Callers may explicitly select their own timeout or size controls; no SOAP deadline is installed by default. Source/contract authorization, schema/protocol correctness and unsupported-feature refusals remain independent requirements.
|
|
196
|
+
|
|
197
|
+
The [current direct-client policy](../direct-values.md#current-direct-client-resource-policy) records the plan, implementation, test-profile values, product tradeoffs and measured before/after behavior. The private direct path uses an unmetered semantic-engine interface by default; bounded profiling and the existing native accounting remain explicit in tests/research for optimization and exhaustion measurements. This replaces synthetic procedural allocation reservations, including the quadratic source bootstrap reservation, without creating a second semantic engine.
|
|
198
|
+
|
|
199
|
+
The amendment supersedes prior mandatory per-invocation resource-accounting claims for normal direct clients. Existing research-tool defaults, historical measurements, public exports, legacy behavior and admission remain unchanged. No consumer CPU/memory protection or preemption guarantee is claimed.
|
|
200
|
+
|
|
201
|
+
## Compatibility and activation: S02-D10
|
|
202
|
+
|
|
203
|
+
Preserve the current legacy default for the 1.x line. The planned architecture release train is 2.0.0; earlier faithful evaluation is limited to unreleased opt-in development artifacts unless a reviewed ADR amendment authorizes an earlier supported release. A default public-shape switch requires that major release, integrated S17/S18 evidence and a separately approved activation PR. S02 merges docs/probes only; it neither announces a new release nor changes the default.
|
|
204
|
+
|
|
205
|
+
| Input / requested mode | Selected behavior | Diagnostic and first owner |
|
|
206
|
+
|---|---|---|
|
|
207
|
+
| Legacy unversioned flattened catalog / legacy | Supported through explicit legacy adapter | #174 route as legacy; preserve existing names/options |
|
|
208
|
+
| Legacy catalog / faithful | Regenerate from original WSDL/XSD | #174 `incompatible-artifact`: missing ordered semantics; show source compile command |
|
|
209
|
+
| Original source / legacy | Supported; derive legacy projection from one compiler during migration | #174/#195/#201 preserve defaults and deterministic names |
|
|
210
|
+
| Original source / faithful | Compile graph and new bundle only when profile/binding supported | #179 support diagnostic; #185/#201 opt-in routing |
|
|
211
|
+
| New bundle / compatible faithful consumers | Supported after versions/capabilities/fingerprint match | #185/#186/#195/#196 validate before call |
|
|
212
|
+
| New bundle / legacy-only consumer | Reject; regenerate matched artifacts for selected mode | #186/#201 `incompatible-artifact` |
|
|
213
|
+
| Mixed catalog/client/gateway/bundle fingerprints | Reject before dispatch; regenerate together | #185/#186/#195/#196/#201 name mismatched artifacts |
|
|
214
|
+
| Unknown format major/model/profile or required capability | Reject with expected/actual contract identifiers | #174/#186 runtime compatibility error |
|
|
215
|
+
| OpenAPI-only faithful gateway generation | Regeneration-required with portable bundle | #196/#201 missing SOAP contract diagnostic |
|
|
216
|
+
|
|
217
|
+
Names derive deterministically from symbol identities with stable namespace collision suffixes and source-relative anonymous paths. Keep legacy names on the legacy route; faithful mode may introduce new names/shapes explicitly. #184 owns naming rules and #195 consumes them with generator collision fixtures; a documentation edit or digest change cannot randomly rename symbols. Flattened information is never reconstructed by assertion. #204 qualifies integrated migration; #205 removes duplicate semantic ownership only after compatibility coverage.
|
|
218
|
+
|
|
219
|
+
## Rejected alternatives: S02-D11
|
|
220
|
+
|
|
221
|
+
Bounds-only patches cannot enforce count gaps, order or correlations. Universal property flattening loses branch/interleaving context. Raw parse-tree DTOs confuse schema syntax with application values and expose parser-specific prefixes/history.
|
|
222
|
+
|
|
223
|
+
One schema for all backends conflates XML semantics, HTTP representation, OpenAPI vocabulary and serializer support. A second schema/validation engine duplicates scalar/particle authority; target lowerings and supplemental checks consume one owned core. Raw fetch replacement without a binding/security capability gate can bypass authentication, headers or signatures. Removing dedicated streaming would restore full-response buffering without incremental evidence.
|
|
224
|
+
|
|
225
|
+
## Evidence and final gate
|
|
226
|
+
|
|
227
|
+
S01 executes the finite manifest and real occurrence transport harness, not these new faithful contracts. #169 commits eleven local HTTP/TLS/signing assertions for both actual paths, raw/ordered seams, invisible boundaries, namespaces/nil, streaming-before-EOF and capabilities. #170 commits nineteen route assertions comparing submitted, validator-visible, returned and byte-serialized values, preserving a host control route. Their [SOAP](../content-model-soap-feasibility.md) and [gateway](../content-model-gateway-feasibility.md) records distinguish generated behavior, test-only adapter feasibility and unverified combinations.
|
|
228
|
+
|
|
229
|
+
Final #168/#149 acceptance requires both reviewed probes, reconciled register entries, reviewed delivery revisions, local aggregate CI, hosted Node 24/26 and merged-main checks. Any unresolved graph, projection, bundle/runtime, required base transport or compatibility choice blocks S03. Later isolated capability qualification has an explicit affected consumer and cannot count as verified support.
|
|
230
|
+
|
|
231
|
+
## Primary references
|
|
232
|
+
|
|
233
|
+
- [XSD 1.0 structures, second edition](https://www.w3.org/TR/xmlschema-1/)
|
|
234
|
+
- [XSD 1.0 datatypes, second edition](https://www.w3.org/TR/xmlschema-2/)
|
|
235
|
+
- [Namespaces in XML 1.0, third edition](https://www.w3.org/TR/xml-names/)
|
|
236
|
+
- [XML Base, second edition](https://www.w3.org/TR/xmlbase/)
|
|
237
|
+
- [OpenAPI 3.1.1](https://spec.openapis.org/oas/v3.1.1.html)
|
|
238
|
+
- [ADR-002](002-streamable-responses.md): current dedicated streaming decision and shipped behavior
|
|
239
|
+
|
|
240
|
+
## Checked product assessment amendment: P1-D01
|
|
241
|
+
|
|
242
|
+
Issue [#367](https://github.com/TechSpokes/typescript-wsdl-client/issues/367) authorizes a separate checked-product track. Universal RE01 completeness remains a research goal, but is no longer an unconditional predecessor of qualified product delivery. This amendment supersedes historical blanket product gates only; the approved full profile and research completeness flags are unchanged.
|
|
243
|
+
|
|
244
|
+
The additive `assessSchemaSource` API and `wsdl-tsc assess --wsdl-source <source> --report <path>` command perform diagnostics only. They use the controlled loader with explicit roots/origins, source-bound native contexts and existing semantic owners. They cannot generate artifacts, dispatch SOAP or authorize later generation by replaying a report.
|
|
245
|
+
|
|
246
|
+
### Independent report dimensions
|
|
247
|
+
|
|
248
|
+
Report version `checked-assessment-v1` names scope `whole-actual-native-direct-v1`, model `xsd10-faithful-v1`, and basis `native-direct-premises-v1`. Established means all required source-document, whole actual component, generated scalar, notation, identity-formation, dependency and aggregate obligations in that scope have accepted native evidence. It is not a claim of complete dated-XSD validation: the independent dated-XSD correspondence dimension must also be established before any standards-based checked schema eligibility.
|
|
249
|
+
|
|
250
|
+
Each obligation records rule, component, origin context, evidence basis and an established/disproved/inconclusive result with evidence or an unresolved reason. Required work is inventoried before assessment; aggregate status is disproved if any sound actual failure exists, established only if every required duty is present and established, otherwise inconclusive. Interrupted or unenumerated work retains a required inventory/closure duty; empty arrays cannot imply success. Independent actual-component checks continue after ordinary unresolved/unsupported results, so unrelated actual failures remain discoverable.
|
|
251
|
+
|
|
252
|
+
The direct route checks actual source premises and primitive no-change derivation using the existing finite owner and its aggregate dependency discharge. A constructed B-v1/Q_f witness is never silently promoted to dated-XSD evidence. Constructed witnesses are excluded from this first product adapter; nonprimitive RE01 remains a named unresolved obligation, and lack of a witness is inconclusive, never original-schema invalidity.
|
|
253
|
+
|
|
254
|
+
Execution independently records completed, resource-limit, cancelled or failed. A normally finished limited strategy may be inconclusive; sticky exhaustion may not become completed. Partial reports retain known facts and explicitly unassessed duties; invalid unrelated actual declarations remain relevant to whole-Gamma legality.
|
|
255
|
+
|
|
256
|
+
Every discoverable WSDL portType operation has supported/unsupported/not-assessed capability entries for matching, projection, scalar payload validation, bundle, codec, buffered transport and structured generation. Schema legality does not establish runtime support. Checked admission requires completed execution, all required established schema and correspondence obligations, and all required implemented/tested runtime capabilities; this diagnostic milestone admits no generation.
|
|
257
|
+
|
|
258
|
+
### Identity, budgets and diagnostics
|
|
259
|
+
|
|
260
|
+
Reports include exact source resource digests, import/include edges and effective interpretation contexts, named limits, semantic contract/tool versions and request work/node usage. Ordering is deterministic by stable source/context/component/rule keys; ephemeral native request IDs are normalized to the report's actual context. URI identities use opaque request-local labels plus digests so credentials, query strings, absolute paths and source payloads are not published. Digests detect mismatches; they are neither authentication nor proof certificates.
|
|
261
|
+
|
|
262
|
+
One inclusive sticky request budget covers loading, preparation, native checking, copying, caching and publication, with the existing loader's byte/depth/time and structural limits retained as additional bounds. Cancellation is cooperative at stage and component boundaries; it is never a schema failure. Terminal escape reports retain an explicit unassessed closure duty and cannot grant admission.
|
|
263
|
+
|
|
264
|
+
The CLI writes only the requested JSON report and a concise status diagnostic. Execution takes exit precedence over schema facts: resource-limit is 4, cancelled is 5 and failed is 1, even when a known schema failure is retained. For completed execution, exit codes are 0 for established required schema scope and correspondence, 2 for inconclusive, 3 for disproved, 4 for resource-limit, 5 for cancelled, and 1 for loading/operational/report-write failure. Runtime unavailability is separately reported and does not turn schema invalid; no existing command, shape or legacy default changes.
|
|
265
|
+
|
|
266
|
+
### Qualified dated-XSD direct route
|
|
267
|
+
|
|
268
|
+
The first sufficient correspondence route accepts source-bound full native direct closure only when each root/inline schema contains named nonderived, nonmixed complex types with one sequence and global elements referring to those types or builtin string/boolean/int. Local sequence elements must have distinct local names and builtin string/boolean/int types; minOccurs is 0 or 1 and maxOccurs is 1 or unbounded. Schema attributes are limited to targetNamespace and form defaults; declarations use only name/type, and local elements may additionally use form and occurrence bounds.
|
|
269
|
+
|
|
270
|
+
No include/import/chameleon, annotations, foreign attributes, defaults/fixed, identity, attributes, substitution, facets, derivation or opaque builtin type falls within this sufficient route. Native construction and aggregate discharge remain required: the whitelist is correspondence evidence, never a second checker. Distinct names establish trivial EDC/UPA, ordinary sequence construction maps directly to the 2004 Structures rules, and the three builtin types use the 2004 Datatypes definitions. Other cases are correspondence-inconclusive; no generic native invalid-schema result is promoted to dated-XSD invalidity.
|
|
271
|
+
|
|
272
|
+
### Required acceptance boundary
|
|
273
|
+
|
|
274
|
+
Independent review must audit direct-route one-way soundness, whole-Gamma dependency closure, actual/candidate attribution, missing-duty aggregation and resource accounting. Comparison validators are corroboration only. No report establishes runtime payload matching, reversibility, binding/security support or end-to-end readiness; those remain the named downstream owners' acceptance duties.
|
|
275
|
+
|
|
276
|
+
### P1 accounting implementation
|
|
277
|
+
|
|
278
|
+
The report publisher reserves a fixed 1 MiB terminal envelope before source I/O, charges its copying/freezing/JSON escape bound to the same request, and checks conservative per-record byte bounds before retaining facts. Exhaustion publishes only already reserved facts plus an unassessed terminal duty; publication cannot restore completion or eligibility. Limits below the publication reservation fail before source work.
|
|
279
|
+
|
|
280
|
+
Canonical preparation reserves graph nodes before node construction, passes the caller's node limit to the builder, charges text/namespace construction and deterministic sorting, and shares request work with reference resolution. Context indexing additionally counts its admitted nodes; the usage node counter is cumulative preparation/context allocation accounting, not unique canonical component count. Existing loader byte/depth/time and resolver step caps remain additional named safety limits.
|