@techspokes/typescript-wsdl-client 1.1.5 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +80 -68
- package/dist/app/generateApp.d.ts +0 -1
- package/dist/app/generateApp.js +1 -1
- 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 +268 -0
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +92 -2
- package/dist/client/checkedDirectRuntime.d.ts +40 -3
- package/dist/client/checkedDirectRuntime.js +28 -8
- package/dist/client/directClientRuntime.d.ts +27 -2
- package/dist/client/directClientRuntime.js +142 -89
- package/dist/client/directClientVersion.d.ts +3 -1
- package/dist/client/directClientVersion.js +3 -0
- package/dist/client/generateClient.d.ts +0 -1
- package/dist/client/generateClient.js +98 -28
- package/dist/client/generateDirectClient.d.ts +21 -3
- package/dist/client/generateDirectClient.js +138 -6
- package/dist/client/generateOperations.d.ts +0 -1
- package/dist/client/generateOperations.js +30 -11
- package/dist/client/generateTypes.d.ts +0 -1
- package/dist/client/generateUtils.d.ts +0 -1
- package/dist/client/generateUtils.js +7 -1
- package/dist/compiler/applicationGroups.d.ts +53 -0
- package/dist/compiler/applicationGroups.js +403 -0
- package/dist/compiler/buildCanonicalGraph.d.ts +0 -1
- package/dist/compiler/canonicalGraph.d.ts +4 -16
- package/dist/compiler/canonicalGraph.js +1 -8
- package/dist/compiler/catalogErrors.d.ts +0 -1
- package/dist/compiler/catalogProvenance.d.ts +0 -1
- package/dist/compiler/checkedAssessment.d.ts +0 -1
- package/dist/compiler/checkedAssessment.js +1 -1
- package/dist/compiler/checkedComponentSource.d.ts +16 -0
- package/dist/compiler/checkedComponentSource.js +31 -0
- package/dist/compiler/checkedSourcePreparation.d.ts +38 -1
- package/dist/compiler/checkedSourcePreparation.js +71 -0
- package/dist/compiler/complexTypeContent.d.ts +5 -6
- package/dist/compiler/complexTypeContent.js +2 -2
- package/dist/compiler/componentCorrespondence.d.ts +32 -0
- package/dist/compiler/componentCorrespondence.js +140 -0
- package/dist/compiler/componentRecordProjection.d.ts +112 -0
- package/dist/compiler/componentRecordProjection.js +329 -0
- package/dist/compiler/componentSoapPreparation.d.ts +20 -0
- package/dist/compiler/componentSoapPreparation.js +36 -0
- package/dist/compiler/composeCanonicalGraph.d.ts +0 -1
- package/dist/compiler/dataOwnership.d.ts +0 -1
- package/dist/compiler/dataOwnership.js +14 -4
- package/dist/compiler/datatypeValues.d.ts +0 -1
- package/dist/compiler/declarationIdentity.d.ts +22 -0
- package/dist/compiler/declarationIdentity.js +9 -0
- package/dist/compiler/directCodec.d.ts +79 -2
- package/dist/compiler/directCodec.js +310 -92
- package/dist/compiler/directExecutionPolicy.d.ts +0 -1
- package/dist/compiler/directOperation.d.ts +72 -8
- package/dist/compiler/directOperation.js +164 -19
- package/dist/compiler/directSoap.d.ts +29 -5
- package/dist/compiler/directSoap.js +154 -44
- package/dist/compiler/directSoapSource.d.ts +24 -1
- package/dist/compiler/directSoapSource.js +166 -19
- package/dist/compiler/directSourceCapsule.d.ts +74 -2
- package/dist/compiler/directSourceCapsule.js +484 -6
- package/dist/compiler/directStructure.d.ts +83 -6
- package/dist/compiler/directStructure.js +353 -58
- package/dist/compiler/directStructurePlan.d.ts +144 -2
- package/dist/compiler/directStructurePlan.js +615 -30
- package/dist/compiler/directValues.d.ts +76 -5
- package/dist/compiler/directValues.js +967 -117
- package/dist/compiler/finiteRe01Construction.d.ts +69 -0
- package/dist/compiler/finiteRe01Construction.js +422 -0
- package/dist/compiler/finiteRe01Verification.d.ts +81 -3
- package/dist/compiler/finiteRe01Verification.js +391 -4
- package/dist/compiler/generateCatalog.d.ts +0 -1
- package/dist/compiler/graphTraversal.d.ts +0 -1
- package/dist/compiler/hypotheticalScopedIdentity.d.ts +0 -1
- package/dist/compiler/legacyDeclarations.d.ts +26 -0
- package/dist/compiler/legacyDeclarations.js +144 -0
- package/dist/compiler/occurrenceAnalysis.d.ts +2 -1
- package/dist/compiler/occurrenceAnalysis.js +23 -7
- package/dist/compiler/originalSourceMembership.d.ts +0 -1
- package/dist/compiler/particleAttribution.d.ts +0 -1
- package/dist/compiler/particleAttribution.js +20 -0
- package/dist/compiler/particleDeclarationConsistency.d.ts +0 -1
- package/dist/compiler/particleDeclarationConsistency.js +9 -0
- package/dist/compiler/particleExtension.d.ts +0 -1
- package/dist/compiler/particleExtension.js +5 -1
- package/dist/compiler/particleLocalAssessment.d.ts +0 -1
- package/dist/compiler/particleRestriction.d.ts +0 -1
- package/dist/compiler/particleRestriction.js +6 -1
- package/dist/compiler/particleSemanticView.d.ts +2 -1
- package/dist/compiler/particleSemanticView.js +16 -3
- package/dist/compiler/particleWildcardRelation.d.ts +0 -1
- package/dist/compiler/projectionScalar.d.ts +49 -0
- package/dist/compiler/projectionScalar.js +218 -0
- package/dist/compiler/re01CandidateAssignments.d.ts +95 -0
- package/dist/compiler/re01CandidateAssignments.js +341 -0
- package/dist/compiler/re01CandidateCorrespondence.d.ts +22 -1
- package/dist/compiler/re01CandidateCorrespondence.js +167 -38
- package/dist/compiler/re01TypeProperties.d.ts +0 -1
- package/dist/compiler/re01TypePropertyValidation.d.ts +0 -1
- package/dist/compiler/resolveCanonicalGraph.d.ts +5 -2
- package/dist/compiler/resolveCanonicalGraph.js +77 -7
- package/dist/compiler/rpcStringValues.d.ts +30 -0
- package/dist/compiler/rpcStringValues.js +196 -0
- package/dist/compiler/rpcTypedValues.d.ts +48 -0
- package/dist/compiler/rpcTypedValues.js +190 -0
- package/dist/compiler/scalarSchemaAssessment.d.ts +0 -1
- package/dist/compiler/schemaAttributeGroupProperties.d.ts +0 -1
- package/dist/compiler/schemaAttributeProperties.d.ts +0 -1
- package/dist/compiler/schemaAttributeUses.d.ts +22 -2
- package/dist/compiler/schemaAttributeUses.js +86 -13
- package/dist/compiler/schemaBinaryWordReconstruction.d.ts +0 -1
- package/dist/compiler/schemaBuiltinFacets.d.ts +0 -1
- package/dist/compiler/schemaCalendarImages.d.ts +0 -1
- package/dist/compiler/schemaCalendarLanguage.d.ts +0 -1
- package/dist/compiler/schemaCompiler.d.ts +0 -1
- package/dist/compiler/schemaCompiler.js +44 -109
- package/dist/compiler/schemaComponentEquality.d.ts +0 -1
- package/dist/compiler/schemaConstructionAssessment.d.ts +34 -1
- package/dist/compiler/schemaConstructionAssessment.js +88 -6
- package/dist/compiler/schemaDatatypeValues.d.ts +0 -1
- package/dist/compiler/schemaDecimalLanguage.d.ts +0 -1
- package/dist/compiler/schemaDeclarationPrimitives.d.ts +7 -2
- package/dist/compiler/schemaDeclarationPrimitives.js +18 -1
- package/dist/compiler/schemaDocumentSyntax.d.ts +0 -1
- package/dist/compiler/schemaDurationLanguage.d.ts +0 -1
- package/dist/compiler/schemaElementInstance.d.ts +30 -0
- package/dist/compiler/schemaElementInstance.js +45 -0
- package/dist/compiler/schemaElementProperties.d.ts +0 -1
- package/dist/compiler/schemaEndpointWordCapacity.d.ts +0 -1
- package/dist/compiler/schemaExactCalendar.d.ts +0 -1
- package/dist/compiler/schemaFacetAnnotation.d.ts +0 -1
- package/dist/compiler/schemaGeneratedScalarShape.d.ts +0 -1
- package/dist/compiler/schemaGeneratedScalarShape.js +2 -0
- package/dist/compiler/schemaIdentityConstraints.d.ts +0 -1
- package/dist/compiler/schemaIeeeLanguage.d.ts +0 -1
- package/dist/compiler/schemaIntegerImages.d.ts +0 -1
- package/dist/compiler/schemaLexicalPredicates.d.ts +0 -1
- package/dist/compiler/schemaNotationProperties.d.ts +0 -1
- package/dist/compiler/schemaNumericImageConditions.d.ts +0 -1
- package/dist/compiler/schemaParticleWildcardProperties.d.ts +0 -1
- package/dist/compiler/schemaPattern.d.ts +0 -1
- package/dist/compiler/schemaRegularLanguage.d.ts +0 -1
- package/dist/compiler/schemaScalarContext.d.ts +5 -1
- package/dist/compiler/schemaScalarKernel.d.ts +0 -1
- package/dist/compiler/schemaScalarWitnesses.d.ts +0 -1
- package/dist/compiler/schemaSimpleTypeProperties.d.ts +0 -1
- package/dist/compiler/schemaSourceGrammar.d.ts +0 -1
- package/dist/compiler/schemaSourceLexical.d.ts +0 -1
- package/dist/compiler/schemaSourceValues.d.ts +0 -1
- package/dist/compiler/schemaSourceWildcards.d.ts +1 -2
- package/dist/compiler/schemaSourceWildcards.js +3 -1
- package/dist/compiler/schemaSymbolicSequences.d.ts +0 -1
- package/dist/compiler/schemaSymbolicValueSets.d.ts +0 -1
- package/dist/compiler/schemaSyntaxAssessment.d.ts +0 -1
- package/dist/compiler/schemaTemporalAliases.d.ts +0 -1
- package/dist/compiler/schemaTokenImages.d.ts +0 -1
- package/dist/compiler/schemaTypeIdentity.d.ts +0 -1
- package/dist/compiler/schemaTypeIdentity.js +2 -0
- package/dist/compiler/schemaTypeRelations.d.ts +0 -1
- package/dist/compiler/schemaUri.d.ts +0 -1
- package/dist/compiler/schemaValueContext.d.ts +0 -1
- package/dist/compiler/schemaValueImages.d.ts +0 -1
- package/dist/compiler/schemaValueSequences.d.ts +0 -1
- package/dist/compiler/semanticBudget.d.ts +18 -1
- package/dist/compiler/semanticBudget.js +17 -2
- package/dist/compiler/semanticCatalog.d.ts +2 -3
- package/dist/compiler/semanticContext.d.ts +12 -1
- package/dist/compiler/semanticContext.js +39 -0
- package/dist/compiler/semanticTypeDependencies.d.ts +0 -1
- package/dist/compiler/semanticTypeReference.d.ts +0 -1
- package/dist/compiler/shapeResolver.d.ts +0 -1
- package/dist/compiler/soapHeaders.d.ts +16 -0
- package/dist/compiler/soapHeaders.js +42 -0
- package/dist/compiler/sourceSchemaBinding.d.ts +0 -1
- 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 +0 -1
- package/dist/compiler/validateSemanticGraph.d.ts +0 -1
- package/dist/compiler/wildcardAlgebra.d.ts +0 -1
- 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/generateComposedGateway.d.ts +16 -0
- package/dist/gateway/generateComposedGateway.js +65 -0
- package/dist/gateway/generateGateway.d.ts +0 -1
- package/dist/gateway/generateGateway.js +1 -0
- package/dist/gateway/generators.d.ts +0 -1
- package/dist/gateway/generators.js +19 -4
- package/dist/gateway/helpers.d.ts +1 -1
- package/dist/gateway/helpers.js +15 -0
- package/dist/generation/componentShape.d.ts +14 -0
- package/dist/generation/componentShape.js +293 -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 +11 -2
- package/dist/index.js +4 -1
- package/dist/loader/fetch.d.ts +0 -1
- package/dist/loader/orderedSyntax.d.ts +12 -1
- package/dist/loader/orderedSyntax.js +40 -6
- package/dist/loader/resolutionDepth.d.ts +0 -1
- package/dist/loader/schemaInput.d.ts +28 -1
- package/dist/loader/schemaInput.js +41 -4
- package/dist/loader/schemaResources.d.ts +2 -1
- package/dist/loader/schemaResources.js +45 -4
- package/dist/loader/wsdlLoader.d.ts +0 -1
- package/dist/multiServicePipeline.d.ts +41 -0
- package/dist/multiServicePipeline.js +287 -0
- package/dist/openapi/casing.d.ts +0 -1
- package/dist/openapi/composeOpenAPI.d.ts +29 -0
- package/dist/openapi/composeOpenAPI.js +322 -0
- package/dist/openapi/generateOpenAPI.d.ts +0 -1
- 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 +7 -3
- package/dist/pipeline.js +15 -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/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 +0 -1
- package/dist/xsd/primitives.d.ts +0 -1
- package/docs/agent-skill.md +12 -1
- package/docs/api-reference.md +127 -9
- package/docs/checked-gateway.md +212 -0
- package/docs/checked-generation.md +167 -0
- package/docs/cli-reference.md +48 -6
- package/docs/concepts.md +139 -5
- package/docs/configuration.md +15 -4
- package/docs/corpus.md +33 -0
- package/docs/direct-values.md +13 -13
- package/docs/examples/checked-forecast.wsdl +19 -0
- package/docs/gateway-guide.md +104 -27
- package/docs/generated-code.md +22 -11
- package/docs/mapping-contract.md +114 -0
- package/docs/migration-playbook.md +5 -1
- package/docs/migration.md +124 -6
- package/docs/output-anatomy.md +21 -18
- package/docs/production.md +7 -5
- package/docs/start-here.md +19 -3
- package/docs/supported-patterns.md +24 -3
- package/docs/testing.md +119 -31
- package/docs/troubleshooting.md +3 -1
- package/llms.txt +16 -8
- package/package.json +64 -23
- package/src/runtime/checkedGatewayHost.tpl.txt +157 -0
- package/src/runtime/clientStreamMethods.tpl.txt +156 -148
- package/src/runtime/operationsStreamHelper.tpl.txt +6 -6
- package/src/runtime/streamXml.ts +49 -21
- package/dist/app/generateApp.d.ts.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/client/checkedDirectRuntime.d.ts.map +0 -1
- package/dist/client/directClientRuntime.d.ts.map +0 -1
- package/dist/client/directClientVersion.d.ts.map +0 -1
- package/dist/client/generateClient.d.ts.map +0 -1
- package/dist/client/generateDirectClient.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/buildCanonicalGraph.d.ts.map +0 -1
- package/dist/compiler/canonicalGraph.d.ts.map +0 -1
- package/dist/compiler/catalogErrors.d.ts.map +0 -1
- package/dist/compiler/catalogProvenance.d.ts.map +0 -1
- package/dist/compiler/checkedAssessment.d.ts.map +0 -1
- package/dist/compiler/checkedSourcePreparation.d.ts.map +0 -1
- package/dist/compiler/complexTypeContent.d.ts.map +0 -1
- package/dist/compiler/composeCanonicalGraph.d.ts.map +0 -1
- package/dist/compiler/dataOwnership.d.ts.map +0 -1
- package/dist/compiler/datatypeValues.d.ts.map +0 -1
- package/dist/compiler/directCodec.d.ts.map +0 -1
- package/dist/compiler/directExecutionPolicy.d.ts.map +0 -1
- package/dist/compiler/directOperation.d.ts.map +0 -1
- package/dist/compiler/directSoap.d.ts.map +0 -1
- package/dist/compiler/directSoapSource.d.ts.map +0 -1
- package/dist/compiler/directSourceCapsule.d.ts.map +0 -1
- package/dist/compiler/directStructure.d.ts.map +0 -1
- package/dist/compiler/directStructurePlan.d.ts.map +0 -1
- package/dist/compiler/directValues.d.ts.map +0 -1
- package/dist/compiler/finiteRe01Verification.d.ts.map +0 -1
- package/dist/compiler/generateCatalog.d.ts.map +0 -1
- package/dist/compiler/graphTraversal.d.ts.map +0 -1
- package/dist/compiler/hypotheticalScopedIdentity.d.ts.map +0 -1
- package/dist/compiler/occurrenceAnalysis.d.ts.map +0 -1
- package/dist/compiler/originalSourceMembership.d.ts.map +0 -1
- package/dist/compiler/particleAttribution.d.ts.map +0 -1
- package/dist/compiler/particleDeclarationConsistency.d.ts.map +0 -1
- package/dist/compiler/particleExtension.d.ts.map +0 -1
- package/dist/compiler/particleLocalAssessment.d.ts.map +0 -1
- package/dist/compiler/particleRestriction.d.ts.map +0 -1
- package/dist/compiler/particleSemanticView.d.ts.map +0 -1
- package/dist/compiler/particleWildcardRelation.d.ts.map +0 -1
- package/dist/compiler/re01CandidateCorrespondence.d.ts.map +0 -1
- package/dist/compiler/re01TypeProperties.d.ts.map +0 -1
- package/dist/compiler/re01TypePropertyValidation.d.ts.map +0 -1
- package/dist/compiler/resolveCanonicalGraph.d.ts.map +0 -1
- package/dist/compiler/scalarSchemaAssessment.d.ts.map +0 -1
- package/dist/compiler/schemaAttributeGroupProperties.d.ts.map +0 -1
- package/dist/compiler/schemaAttributeProperties.d.ts.map +0 -1
- package/dist/compiler/schemaAttributeUses.d.ts.map +0 -1
- package/dist/compiler/schemaBinaryWordReconstruction.d.ts.map +0 -1
- package/dist/compiler/schemaBuiltinFacets.d.ts.map +0 -1
- package/dist/compiler/schemaCalendarImages.d.ts.map +0 -1
- package/dist/compiler/schemaCalendarLanguage.d.ts.map +0 -1
- package/dist/compiler/schemaCompiler.d.ts.map +0 -1
- package/dist/compiler/schemaComponentEquality.d.ts.map +0 -1
- package/dist/compiler/schemaConstructionAssessment.d.ts.map +0 -1
- package/dist/compiler/schemaDatatypeValues.d.ts.map +0 -1
- package/dist/compiler/schemaDecimalLanguage.d.ts.map +0 -1
- package/dist/compiler/schemaDeclarationPrimitives.d.ts.map +0 -1
- package/dist/compiler/schemaDocumentSyntax.d.ts.map +0 -1
- package/dist/compiler/schemaDurationLanguage.d.ts.map +0 -1
- package/dist/compiler/schemaElementProperties.d.ts.map +0 -1
- package/dist/compiler/schemaEndpointWordCapacity.d.ts.map +0 -1
- package/dist/compiler/schemaExactCalendar.d.ts.map +0 -1
- package/dist/compiler/schemaFacetAnnotation.d.ts.map +0 -1
- package/dist/compiler/schemaGeneratedScalarShape.d.ts.map +0 -1
- package/dist/compiler/schemaIdentityConstraints.d.ts.map +0 -1
- package/dist/compiler/schemaIeeeLanguage.d.ts.map +0 -1
- package/dist/compiler/schemaIntegerImages.d.ts.map +0 -1
- package/dist/compiler/schemaLexicalPredicates.d.ts.map +0 -1
- package/dist/compiler/schemaNotationProperties.d.ts.map +0 -1
- package/dist/compiler/schemaNumericImageConditions.d.ts.map +0 -1
- package/dist/compiler/schemaParticleWildcardProperties.d.ts.map +0 -1
- package/dist/compiler/schemaPattern.d.ts.map +0 -1
- package/dist/compiler/schemaRegularLanguage.d.ts.map +0 -1
- package/dist/compiler/schemaScalarContext.d.ts.map +0 -1
- package/dist/compiler/schemaScalarKernel.d.ts.map +0 -1
- package/dist/compiler/schemaScalarWitnesses.d.ts.map +0 -1
- package/dist/compiler/schemaSimpleTypeProperties.d.ts.map +0 -1
- package/dist/compiler/schemaSourceGrammar.d.ts.map +0 -1
- package/dist/compiler/schemaSourceLexical.d.ts.map +0 -1
- package/dist/compiler/schemaSourceValues.d.ts.map +0 -1
- package/dist/compiler/schemaSourceWildcards.d.ts.map +0 -1
- package/dist/compiler/schemaSymbolicSequences.d.ts.map +0 -1
- package/dist/compiler/schemaSymbolicValueSets.d.ts.map +0 -1
- package/dist/compiler/schemaSyntaxAssessment.d.ts.map +0 -1
- package/dist/compiler/schemaTemporalAliases.d.ts.map +0 -1
- package/dist/compiler/schemaTokenImages.d.ts.map +0 -1
- package/dist/compiler/schemaTypeIdentity.d.ts.map +0 -1
- package/dist/compiler/schemaTypeRelations.d.ts.map +0 -1
- package/dist/compiler/schemaUri.d.ts.map +0 -1
- package/dist/compiler/schemaValueContext.d.ts.map +0 -1
- package/dist/compiler/schemaValueImages.d.ts.map +0 -1
- package/dist/compiler/schemaValueSequences.d.ts.map +0 -1
- package/dist/compiler/semanticBudget.d.ts.map +0 -1
- package/dist/compiler/semanticCatalog.d.ts.map +0 -1
- package/dist/compiler/semanticContext.d.ts.map +0 -1
- package/dist/compiler/semanticTypeDependencies.d.ts.map +0 -1
- package/dist/compiler/semanticTypeReference.d.ts.map +0 -1
- package/dist/compiler/shapeResolver.d.ts.map +0 -1
- package/dist/compiler/sourceSchemaBinding.d.ts.map +0 -1
- package/dist/compiler/structuralCompanions.d.ts.map +0 -1
- package/dist/compiler/validateSemanticGraph.d.ts.map +0 -1
- package/dist/compiler/wildcardAlgebra.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/orderedSyntax.d.ts.map +0 -1
- package/dist/loader/resolutionDepth.d.ts.map +0 -1
- package/dist/loader/schemaInput.d.ts.map +0 -1
- package/dist/loader/schemaResources.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/util/xmlWhitespace.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 -69
- package/docs/architecture.md +0 -158
- package/docs/content-model-analysis.md +0 -92
- package/docs/content-model-baseline.md +0 -121
- package/docs/content-model-catalog.md +0 -116
- package/docs/content-model-companions.md +0 -90
- package/docs/content-model-composition.md +0 -103
- package/docs/content-model-decisions.md +0 -79
- package/docs/content-model-gateway-feasibility.md +0 -169
- package/docs/content-model-graph.md +0 -121
- package/docs/content-model-loading.md +0 -163
- package/docs/content-model-matching.md +0 -85
- package/docs/content-model-readiness.md +0 -144
- package/docs/content-model-resolution.md +0 -81
- package/docs/content-model-s02-handoff.md +0 -98
- package/docs/content-model-s06-au-01.md +0 -425
- package/docs/content-model-s06-dt-01.md +0 -386
- package/docs/content-model-s06-pw-01.md +0 -350
- package/docs/content-model-s06-re-01-resolver-implementation.md +0 -869
- package/docs/content-model-s06-re-01-resolver.md +0 -513
- package/docs/content-model-s06-re-01-scalar-witnesses.md +0 -1423
- package/docs/content-model-s06-re-01-support-reconstruction.md +0 -6337
- package/docs/content-model-s06-re-01.md +0 -7477
- package/docs/content-model-s06-research-handoff.md +0 -909
- package/docs/content-model-shipped-fix.md +0 -83
- package/docs/content-model-soap-feasibility.md +0 -165
- package/docs/decisions/001-test-generation.md +0 -36
- package/docs/decisions/002-streamable-responses.md +0 -332
- package/docs/decisions/003-content-model-contracts.md +0 -280
- package/docs/file-naming-and-path-organization.md +0 -213
- package/docs/reference-validation.md +0 -243
- 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/releases/v1.1.5.md +0 -38
- 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
|
@@ -1,18 +1,30 @@
|
|
|
1
1
|
import { directLimit, directLoadingLimits } from './directExecutionPolicy.js';
|
|
2
2
|
/** Transient source-owned schema selection. This module grants no runtime admission. */
|
|
3
3
|
import { loadSemanticSchemaInput } from '../loader/schemaInput.js';
|
|
4
|
-
import { SchemaLoadingError, WSDL_NAMESPACE, syntaxAttribute, syntaxElements, isXmlNCName } from '../loader/orderedSyntax.js';
|
|
4
|
+
import { SchemaLoadingError, WSDL_NAMESPACE, XSD_NAMESPACE, syntaxAttribute, syntaxElements, isXmlNCName } from '../loader/orderedSyntax.js';
|
|
5
5
|
import { globalId } from './canonicalGraph.js';
|
|
6
6
|
import { createApplicationBudget, DEFAULT_MAX_NODES } from './semanticBudget.js';
|
|
7
7
|
import { qualifyDirectSource } from './checkedSourcePreparation.js';
|
|
8
|
+
import { qualifyComponentSource, inspectComponentSourceQualification } from './checkedComponentSource.js';
|
|
9
|
+
import { prepareWsdlPolicyRequirements, assertWsdlPolicyRequirements } from './wsdlPolicyRequirements.js';
|
|
8
10
|
const SOAP = 'http://schemas.xmlsoap.org/wsdl/soap/';
|
|
9
11
|
const HTTP = 'http://schemas.xmlsoap.org/soap/http';
|
|
12
|
+
const ADDRESSING_WSDL = 'http://www.w3.org/2006/05/addressing/wsdl';
|
|
13
|
+
/** Distinguish typed RPC parameters without inventing a document element.
|
|
14
|
+
* @param root Selected native message.
|
|
15
|
+
* @returns Whether the message uses the bounded RPC profile.
|
|
16
|
+
*/
|
|
17
|
+
export function isRpcMessageRoot(root) {
|
|
18
|
+
return 'kind' in root && root.kind === 'rpc-typed-parts-v1';
|
|
19
|
+
}
|
|
10
20
|
const issued = new WeakMap();
|
|
11
21
|
/** Object identity authenticates the exact issued roots; context IDs and digests do not. */
|
|
12
22
|
export function inspectDirectOperation(contract, expectedContext) {
|
|
13
23
|
const owned = issued.get(contract);
|
|
14
24
|
if (!owned || expectedContext !== undefined && owned.context !== expectedContext)
|
|
15
25
|
throw new TypeError('Unauthenticated or foreign direct operation');
|
|
26
|
+
if (owned.policyOwner)
|
|
27
|
+
assertWsdlPolicyRequirements(owned.source, owned.policyOwner);
|
|
16
28
|
return owned;
|
|
17
29
|
}
|
|
18
30
|
class Refusal extends Error {
|
|
@@ -32,10 +44,47 @@ export async function selectDirectOperation(source, selector, options) {
|
|
|
32
44
|
}
|
|
33
45
|
/** Private-module composition seam: portable reading and selection share one request. */
|
|
34
46
|
export async function selectDirectOperationInRequest(source, selector, options, budget) {
|
|
47
|
+
return selectOperationInRequest(source, selector, options, budget, 'direct');
|
|
48
|
+
}
|
|
49
|
+
/** Select through additive native component qualification without granting codec, transport or runtime admission.
|
|
50
|
+
* @remarks The same WSDL binding/message owner is used by the existing preview. New contracts carry a distinct
|
|
51
|
+
* basis and correspondence; preview codecs and source capsules continue to refuse them until independently extended.
|
|
52
|
+
* @returns Fresh source-bound operation roots or an explicit qualification/selection failure.
|
|
53
|
+
*/
|
|
54
|
+
export async function selectComponentOperation(source, selector, options) {
|
|
55
|
+
return selectComponentOperationInRequest(source, selector, options, createApplicationBudget(options.limits));
|
|
56
|
+
}
|
|
57
|
+
/** Private composition seam: artifact reading and fresh component selection share the same sticky request. */
|
|
58
|
+
export async function selectComponentOperationInRequest(source, selector, options, budget) {
|
|
59
|
+
return selectOperationInRequest(source, selector, { ...options, standardLibraries: Object.freeze([...(options.standardLibraries ?? [])]) }, budget, 'components');
|
|
60
|
+
}
|
|
61
|
+
/** Select requested service operations against one fresh native source snapshot and sticky request.
|
|
62
|
+
* @remarks Native whole-source qualification is reused by identity within this batch only. Every binding/message
|
|
63
|
+
* selection still runs through the same owner; no source flags, saved reports or operation-name guesses are consumed.
|
|
64
|
+
* @returns One result in each requested position, including explicit refusals. No requested operation is omitted.
|
|
65
|
+
*/
|
|
66
|
+
export async function selectComponentOperations(source, selectors, options) {
|
|
67
|
+
const budget = createApplicationBudget(options.limits), cache = {};
|
|
68
|
+
const owned = budget.snapshot(selectors);
|
|
69
|
+
if (!Array.isArray(owned) || Object.keys(owned).length !== owned.length)
|
|
70
|
+
throw new TypeError('Dense operation selectors required');
|
|
71
|
+
const results = [];
|
|
72
|
+
const captured = { ...options, standardLibraries: Object.freeze([...(options.standardLibraries ?? [])]) };
|
|
73
|
+
for (const selector of owned)
|
|
74
|
+
results.push(await selectOperationInRequest(source, selector, captured, budget, 'components', cache));
|
|
75
|
+
return Object.freeze(results);
|
|
76
|
+
}
|
|
77
|
+
async function selectOperationInRequest(source, selector, options, budget, profile, cache) {
|
|
35
78
|
const check = () => { if (options.signal?.aborted)
|
|
36
79
|
throw new Cancelled(); budget.chargeWork(); };
|
|
37
80
|
const refuse = (kind, rule) => { throw new Refusal(kind, rule); };
|
|
38
81
|
const failure = (kind, rule) => Object.freeze({ kind, rule, usage: Object.freeze({ ...budget.usage() }) });
|
|
82
|
+
const sourceFailure = (kind, rule) => {
|
|
83
|
+
const result = failure(kind, rule);
|
|
84
|
+
if (cache && result.kind !== 'selected')
|
|
85
|
+
cache.failure = result;
|
|
86
|
+
return result;
|
|
87
|
+
};
|
|
39
88
|
try {
|
|
40
89
|
// Fixed terminal envelope and issuance bookkeeping, before any source work.
|
|
41
90
|
budget.chargeWork(4096);
|
|
@@ -44,20 +93,43 @@ export async function selectDirectOperationInRequest(source, selector, options,
|
|
|
44
93
|
const name = (value) => value && typeof value.namespace === 'string' && typeof value.local === 'string' && isXmlNCName(value.local);
|
|
45
94
|
if (!name(ownedSelector.portType) || !name(ownedSelector.binding) || typeof ownedSelector.operation !== 'string' || !isXmlNCName(ownedSelector.operation))
|
|
46
95
|
return failure('selection-refused', 'explicit-selector');
|
|
47
|
-
|
|
96
|
+
if (cache?.failure)
|
|
97
|
+
return failure(cache.failure.kind, cache.failure.rule);
|
|
98
|
+
const input = cache?.input ?? await loadSemanticSchemaInput(source, { ...options.loading, limits: directLoadingLimits(budget, options.loading.limits), signal: options.signal, chargeWork: amount => { check(); budget.chargeWork(amount); } });
|
|
99
|
+
if (cache)
|
|
100
|
+
cache.input = input;
|
|
48
101
|
check();
|
|
49
102
|
const result = budget.guard(() => {
|
|
50
|
-
const
|
|
103
|
+
const qualificationOptions = { budget, maxNodes: options.limits?.maxNodes ?? directLimit(budget, DEFAULT_MAX_NODES), check };
|
|
104
|
+
const qualified = cache?.qualified ?? (profile === 'direct' ? qualifyDirectSource(input, qualificationOptions)
|
|
105
|
+
: qualifyComponentSource(input, { ...qualificationOptions, standardLibraries: options.standardLibraries }));
|
|
51
106
|
if (qualified.kind === 'resource-limit')
|
|
52
|
-
return
|
|
107
|
+
return sourceFailure('resource-limit', 'source-qualification');
|
|
53
108
|
if (qualified.kind === 'source-preparation-failed' && qualified.category === 'resource-limit')
|
|
54
|
-
return
|
|
55
|
-
if (qualified.kind !== 'qualified-source')
|
|
56
|
-
return
|
|
57
|
-
if (
|
|
58
|
-
|
|
59
|
-
const
|
|
109
|
+
return sourceFailure('resource-limit', 'source-preparation');
|
|
110
|
+
if (qualified.kind !== 'qualified-source' && qualified.kind !== 'component-source')
|
|
111
|
+
return sourceFailure(qualified.kind === 'source-preparation-failed' && qualified.category === 'invalid-schema' ? 'invalid-schema' : 'inconclusive', 'source-preparation');
|
|
112
|
+
if (qualified.kind === 'component-source')
|
|
113
|
+
inspectComponentSourceQualification(qualified, input);
|
|
114
|
+
const construction = qualified.kind === 'component-source' ? qualified.construction : qualified;
|
|
115
|
+
const eligible = qualified.kind === 'component-source' ? qualified.schemaEligible : qualified.eligible;
|
|
116
|
+
if (!eligible)
|
|
117
|
+
return sourceFailure(construction.localDisproved || construction.closure.kind === 'invalid-schema' ? 'invalid-schema' : 'inconclusive', qualified.kind === 'component-source' && qualified.correspondence.kind === 'inconclusive-correspondence'
|
|
118
|
+
? `whole-source-qualification:${qualified.correspondence.rule}${qualified.correspondence.path ? ':' + qualified.correspondence.path : ''}` : 'whole-source-qualification');
|
|
119
|
+
const { request } = construction;
|
|
60
120
|
const context = request.actual;
|
|
121
|
+
let policyOwner;
|
|
122
|
+
if (profile === 'components') {
|
|
123
|
+
const policies = cache?.policy ?? prepareWsdlPolicyRequirements(input, budget, check);
|
|
124
|
+
if (policies.kind !== 'wsdl-policy-requirements')
|
|
125
|
+
return sourceFailure(policies.kind, 'rule' in policies ? policies.rule : 'policy-budget');
|
|
126
|
+
assertWsdlPolicyRequirements(input, policies);
|
|
127
|
+
policyOwner = policies;
|
|
128
|
+
if (cache && qualified.kind === 'component-source') {
|
|
129
|
+
cache.qualified = qualified;
|
|
130
|
+
cache.policy = policies;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
61
133
|
const children = (node) => {
|
|
62
134
|
check();
|
|
63
135
|
budget.chargeWork(128 + node.children.length * 16 + node.attributes.length * 32);
|
|
@@ -70,6 +142,15 @@ export async function selectDirectOperationInRequest(source, selector, options,
|
|
|
70
142
|
return syntaxElements(node);
|
|
71
143
|
};
|
|
72
144
|
const attr = syntaxAttribute;
|
|
145
|
+
const addressingMessages = new Set();
|
|
146
|
+
if (profile === 'components')
|
|
147
|
+
for (const document of input.documents) {
|
|
148
|
+
for (const portType of children(document.root).filter(node => node.name.namespace === WSDL_NAMESPACE && node.name.local === 'portType'))
|
|
149
|
+
for (const operation of children(portType).filter(node => node.name.namespace === WSDL_NAMESPACE && node.name.local === 'operation'))
|
|
150
|
+
for (const message of children(operation).filter(node => node.name.namespace === WSDL_NAMESPACE && ['input', 'output', 'fault'].includes(node.name.local)))
|
|
151
|
+
addressingMessages.add(message);
|
|
152
|
+
}
|
|
153
|
+
const addressingAttribute = (node, namespace, local) => addressingMessages.has(node) && namespace === ADDRESSING_WSDL && local === 'Action';
|
|
73
154
|
const exactly = (node, namespace, local) => {
|
|
74
155
|
const found = children(node).filter(c => c.name.namespace === namespace && c.name.local === local);
|
|
75
156
|
if (found.length !== 1)
|
|
@@ -78,7 +159,8 @@ export async function selectDirectOperationInRequest(source, selector, options,
|
|
|
78
159
|
};
|
|
79
160
|
const shape = (node, allowed) => {
|
|
80
161
|
for (const child of children(node))
|
|
81
|
-
if (!allowed.includes(`${child.name.namespace}#${child.name.local}`)
|
|
162
|
+
if (!allowed.includes(`${child.name.namespace}#${child.name.local}`)
|
|
163
|
+
&& !policyOwner?.isPolicyMetadata(child))
|
|
82
164
|
refuse('unsupported', 'binding-child-shape');
|
|
83
165
|
for (const child of node.children) {
|
|
84
166
|
if (child.kind !== 'text')
|
|
@@ -93,7 +175,8 @@ export async function selectDirectOperationInRequest(source, selector, options,
|
|
|
93
175
|
const attrs = (node, allowed) => {
|
|
94
176
|
children(node);
|
|
95
177
|
for (const a of node.attributes)
|
|
96
|
-
if (a.name.namespace
|
|
178
|
+
if (!addressingAttribute(node, a.name.namespace, a.name.local)
|
|
179
|
+
&& (a.name.namespace !== '' || !allowed.includes(a.name.local)))
|
|
97
180
|
refuse('unsupported', 'binding-attribute-shape');
|
|
98
181
|
};
|
|
99
182
|
// Conservative extension policy: only known WSDL 1.1/SOAP 1.1 syntax, even when optional.
|
|
@@ -105,7 +188,7 @@ export async function selectDirectOperationInRequest(source, selector, options,
|
|
|
105
188
|
portType: ['name'], operation: ['name', 'parameterOrder'], input: ['name', 'message'], output: ['name', 'message'], fault: ['name', 'message'],
|
|
106
189
|
binding: ['name', 'type'], service: ['name'], port: ['name', 'binding'],
|
|
107
190
|
};
|
|
108
|
-
const soapAttributes = { binding: ['style', 'transport'], operation: ['soapAction', 'style'], body: ['use', 'parts'], fault: ['name', 'use'], address: ['location'] };
|
|
191
|
+
const soapAttributes = { binding: ['style', 'transport'], operation: ['soapAction', 'style'], body: profile === 'components' ? ['use', 'parts', 'namespace', 'encodingStyle'] : ['use', 'parts'], fault: ['name', 'use'], address: ['location'] };
|
|
109
192
|
for (const document of input.documents) {
|
|
110
193
|
const stack = [document.root];
|
|
111
194
|
while (stack.length) {
|
|
@@ -113,12 +196,18 @@ export async function selectDirectOperationInRequest(source, selector, options,
|
|
|
113
196
|
const nested = children(node);
|
|
114
197
|
if (qualifiedSchemas.has(node))
|
|
115
198
|
continue;
|
|
199
|
+
if (policyOwner?.isPolicyMetadata(node))
|
|
200
|
+
continue;
|
|
116
201
|
if (node.name.namespace === WSDL_NAMESPACE && node.name.local === 'documentation')
|
|
117
202
|
continue;
|
|
118
203
|
const allowed = node.name.namespace === WSDL_NAMESPACE ? attributes[node.name.local] : node.name.namespace === SOAP ? soapAttributes[node.name.local] : undefined;
|
|
119
204
|
if (!allowed)
|
|
120
205
|
return refuse('unsupported', 'wsdl-extension');
|
|
121
206
|
for (const a of node.attributes) {
|
|
207
|
+
// @why The May 2006 WSDL binding assigns no normative intent to Action without UsingAddressing.
|
|
208
|
+
// UsingAddressing remains unsupported, so these attributes are retained metadata, never SOAP header instructions.
|
|
209
|
+
if (addressingAttribute(node, a.name.namespace, a.name.local))
|
|
210
|
+
continue;
|
|
122
211
|
if (a.name.namespace === WSDL_NAMESPACE && a.name.local === 'required' && node.name.namespace === SOAP && ['true', '1', 'false', '0'].includes(a.value))
|
|
123
212
|
continue;
|
|
124
213
|
if (a.name.namespace !== '' || !allowed.includes(a.name.local))
|
|
@@ -174,7 +263,8 @@ export async function selectDirectOperationInRequest(source, selector, options,
|
|
|
174
263
|
return refuse('unsupported', 'soap-binding-style');
|
|
175
264
|
if (attr(soapBinding, 'transport') !== HTTP)
|
|
176
265
|
return refuse('unsupported', 'soap-transport');
|
|
177
|
-
|
|
266
|
+
const style = attr(soapOperation, 'style') ?? attr(soapBinding, 'style') ?? 'document';
|
|
267
|
+
if (style !== 'document' && !(profile === 'components' && style === 'rpc'))
|
|
178
268
|
return refuse('unsupported', 'soap-style');
|
|
179
269
|
const action = attr(soapOperation, 'soapAction');
|
|
180
270
|
if (action === undefined)
|
|
@@ -201,6 +291,7 @@ export async function selectDirectOperationInRequest(source, selector, options,
|
|
|
201
291
|
shape(boundSyntax, [soap(faultName === undefined ? 'body' : 'fault'), ws('documentation')]);
|
|
202
292
|
const body = exactly(boundSyntax, SOAP, faultName === undefined ? 'body' : 'fault');
|
|
203
293
|
shape(body, []);
|
|
294
|
+
attrs(body, faultName === undefined ? ['use', 'parts'] : ['use', 'name']);
|
|
204
295
|
if (attr(body, 'use') !== 'literal')
|
|
205
296
|
return refuse('unsupported', 'literal-required');
|
|
206
297
|
if (faultName !== undefined && attr(body, 'name') !== faultName)
|
|
@@ -227,17 +318,61 @@ export async function selectDirectOperationInRequest(source, selector, options,
|
|
|
227
318
|
return refuse('selection-refused', 'element-type');
|
|
228
319
|
return Object.freeze({ message: message.name, part: partName, element, type: element.type, source: part.source });
|
|
229
320
|
};
|
|
321
|
+
const rpcRoot = (messageSyntax, boundSyntax, direction) => {
|
|
322
|
+
attrs(messageSyntax, ['name', 'message']);
|
|
323
|
+
attrs(boundSyntax, ['name']);
|
|
324
|
+
shape(messageSyntax, [ws('documentation')]);
|
|
325
|
+
shape(boundSyntax, [soap('body'), ws('documentation')]);
|
|
326
|
+
const body = exactly(boundSyntax, SOAP, 'body');
|
|
327
|
+
shape(body, []);
|
|
328
|
+
const encoding = 'http://schemas.xmlsoap.org/soap/encoding/';
|
|
329
|
+
if (attr(body, 'use') !== 'encoded' || attr(body, 'encodingStyle')?.trim() !== encoding)
|
|
330
|
+
return refuse('unsupported', 'rpc-string-encoding');
|
|
331
|
+
const bodyNamespace = attr(body, 'namespace');
|
|
332
|
+
if (!bodyNamespace || !/^[A-Za-z][A-Za-z0-9+.-]*:/.test(bodyNamespace))
|
|
333
|
+
return refuse('unsupported', 'rpc-body-namespace');
|
|
334
|
+
const message = reference(portType, messageSyntax, 'message');
|
|
335
|
+
if (message.kind !== 'wsdl' || message.role !== 'message')
|
|
336
|
+
return refuse('selection-refused', 'message-reference');
|
|
337
|
+
shape(message.syntax, [ws('part'), ws('documentation')]);
|
|
338
|
+
const declared = children(message.syntax).filter(c => c.name.namespace === WSDL_NAMESPACE && c.name.local === 'part');
|
|
339
|
+
if (!declared.length || direction === 'output' && declared.length !== 1)
|
|
340
|
+
return refuse('unsupported', 'rpc-single-string-result');
|
|
341
|
+
const names = new Set();
|
|
342
|
+
const parts = declared.map(part => {
|
|
343
|
+
attrs(part, ['name', 'type']);
|
|
344
|
+
shape(part, [ws('documentation')]);
|
|
345
|
+
const name = attr(part, 'name');
|
|
346
|
+
if (!name || !isXmlNCName(name) || names.has(name))
|
|
347
|
+
return refuse('selection-refused', 'rpc-part-name');
|
|
348
|
+
names.add(name);
|
|
349
|
+
const path = part.source.path.slice(message.syntax.source.path.length) || '/';
|
|
350
|
+
const refs = message.references.filter(r => r.path === path && r.attribute === 'type');
|
|
351
|
+
if (refs.length !== 1)
|
|
352
|
+
return refuse('unsupported', 'rpc-part-type-required');
|
|
353
|
+
const resolved = context.resolve(refs[0].reference);
|
|
354
|
+
if (direction === 'output' && (resolved.kind !== 'builtin' || resolved.name.namespace !== XSD_NAMESPACE || resolved.name.local !== 'string'))
|
|
355
|
+
return refuse('unsupported', 'rpc-string-part-required');
|
|
356
|
+
return Object.freeze({ name, type: refs[0].reference, source: part.source });
|
|
357
|
+
});
|
|
358
|
+
if (attr(body, 'parts') !== undefined && attr(body, 'parts').trim().split(/[\t\r\n ]+/).join(' ') !== parts.map(p => p.name).join(' '))
|
|
359
|
+
return refuse('unsupported', 'rpc-body-parts');
|
|
360
|
+
return Object.freeze({ kind: 'rpc-typed-parts-v1', message: message.name, parts, bodyNamespace, encoding,
|
|
361
|
+
wrapper: { namespace: bodyNamespace, local: ownedSelector.operation + (direction === 'output' ? 'Response' : '') }, source: body.source });
|
|
362
|
+
};
|
|
230
363
|
const io = (direction, declaration) => {
|
|
231
364
|
const boundIo = exactly(bound, WSDL_NAMESPACE, direction);
|
|
232
365
|
const boundName = attr(boundIo, 'name');
|
|
233
366
|
const expectedName = attr(declaration, 'name') ?? `${ownedSelector.operation}${direction === 'input' ? 'Request' : 'Response'}`;
|
|
234
367
|
if (boundName !== undefined && boundName !== expectedName)
|
|
235
368
|
return refuse('selection-refused', 'binding-message-name');
|
|
236
|
-
return root(declaration, boundIo);
|
|
369
|
+
return style === 'rpc' ? rpcRoot(declaration, boundIo, direction) : root(declaration, boundIo);
|
|
237
370
|
};
|
|
238
371
|
const requestRoot = io('input', abstractInput), responseRoot = io('output', abstractOutput);
|
|
239
372
|
const declaredFaults = children(abstract).filter(c => c.name.namespace === WSDL_NAMESPACE && c.name.local === 'fault');
|
|
240
373
|
const boundFaults = children(bound).filter(c => c.name.namespace === WSDL_NAMESPACE && c.name.local === 'fault');
|
|
374
|
+
if (style === 'rpc' && (declaredFaults.length || boundFaults.length))
|
|
375
|
+
return refuse('unsupported', 'rpc-declared-fault');
|
|
241
376
|
if (declaredFaults.length !== boundFaults.length)
|
|
242
377
|
return refuse('selection-refused', 'fault-mapping');
|
|
243
378
|
const faultNames = new Set();
|
|
@@ -255,15 +390,25 @@ export async function selectDirectOperationInRequest(source, selector, options,
|
|
|
255
390
|
});
|
|
256
391
|
check();
|
|
257
392
|
// Charge publication traversal before retaining authority. Roots stay exact context objects.
|
|
258
|
-
const contract = { selector: ownedSelector, contextId: context.contextId,
|
|
259
|
-
|
|
393
|
+
const contract = { selector: ownedSelector, contextId: context.contextId,
|
|
394
|
+
basis: profile === 'direct' ? 'native-direct-premises-v1' : 'native-component-premises-v1',
|
|
395
|
+
correspondence: profile === 'direct' ? 'dated-XSD-2004-direct-v1' : 'dated-XSD-2004-components-v1',
|
|
396
|
+
binding: { version: '1.1', style: style, use: style === 'rpc' ? 'encoded' : 'literal',
|
|
397
|
+
...(style === 'rpc' ? { encoding: 'http://schemas.xmlsoap.org/soap/encoding/' } : {}), transport: HTTP, action, source: binding.context.source },
|
|
260
398
|
input: requestRoot, output: responseRoot, faults,
|
|
261
|
-
|
|
399
|
+
...(policyOwner ? { policy: policyOwner.forBinding(binding.syntax), addressingActions: { required: false,
|
|
400
|
+
input: attr(abstractInput, 'Action', ADDRESSING_WSDL), output: attr(abstractOutput, 'Action', ADDRESSING_WSDL),
|
|
401
|
+
faults: declaredFaults.flatMap(fault => {
|
|
402
|
+
const action = attr(fault, 'Action', ADDRESSING_WSDL);
|
|
403
|
+
return action === undefined ? [] : [{ name: attr(fault, 'name'), action }];
|
|
404
|
+
}) } } : {}),
|
|
405
|
+
missingCapabilities: ['matcher', 'projection', 'scalar-payload', 'bundle', 'codec', 'buffered-transport', 'structured-generation',
|
|
406
|
+
...(policyOwner?.forBinding(binding.syntax).kind === 'https-transport' ? ['policy-enforcement'] : [])], admitted: false };
|
|
262
407
|
budget.freeze(contract);
|
|
263
408
|
check();
|
|
264
409
|
budget.chargeWork(256);
|
|
265
410
|
const selected = Object.freeze({ kind: 'selected', contract, usage: Object.freeze({ ...budget.usage() }) });
|
|
266
|
-
issued.set(contract, Object.freeze({ contract, context, source: input, evidence: qualified }));
|
|
411
|
+
issued.set(contract, Object.freeze({ contract, context, source: input, evidence: qualified, ...(policyOwner ? { policyOwner } : {}) }));
|
|
267
412
|
return selected;
|
|
268
413
|
});
|
|
269
414
|
return result.kind === 'resource-limit' ? failure('resource-limit', 'request-budget') : result;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { DirectOperationContract } from './directOperation.js';
|
|
2
|
-
import type { DirectCodecFailure, DirectDecodedXml, DirectXmlLimits } from './directCodec.js';
|
|
2
|
+
import type { DirectCodecFailure, DirectDecodedXml, ComponentDecodedXml, DirectXmlLimits } from './directCodec.js';
|
|
3
3
|
import type { ExpandedName, SyntaxElement } from '../loader/orderedSyntax.js';
|
|
4
4
|
import type { ResolverUsage } from './semanticBudget.js';
|
|
5
|
+
import type { ComponentRecordProjection, ComponentRecordDecodedXml } from './componentRecordProjection.js';
|
|
5
6
|
export interface DirectSoapOptions {
|
|
6
7
|
readonly service: ExpandedName;
|
|
7
8
|
readonly port: string;
|
|
@@ -18,11 +19,12 @@ export interface DirectSoapFailure {
|
|
|
18
19
|
readonly kind: DirectCodecFailure['kind'] | 'transport' | 'protocol';
|
|
19
20
|
readonly rule: string;
|
|
20
21
|
readonly usage: ResolverUsage;
|
|
22
|
+
readonly phase?: 'input' | 'response';
|
|
21
23
|
}
|
|
22
|
-
|
|
24
|
+
type SoapResult<D> = DirectSoapFailure | Readonly<{
|
|
23
25
|
kind: 'soap-response' | 'soap-fault';
|
|
24
26
|
admitted: false;
|
|
25
|
-
decoded:
|
|
27
|
+
decoded: D;
|
|
26
28
|
/** Actual bounded HTTP entity bytes, before any decoding; caller-owned data. */
|
|
27
29
|
responseBytes: Uint8Array;
|
|
28
30
|
status: number;
|
|
@@ -33,10 +35,32 @@ export type DirectSoapResult = DirectSoapFailure | Readonly<{
|
|
|
33
35
|
string: string;
|
|
34
36
|
actor?: string;
|
|
35
37
|
}>;
|
|
38
|
+
/** Qualified optional response blocks ignored under SOAP 1.1; their application semantics were not assessed. */
|
|
39
|
+
ignoredHeaders?: readonly ExpandedName[];
|
|
36
40
|
usage: ResolverUsage;
|
|
37
41
|
}>;
|
|
42
|
+
export type DirectSoapResult = SoapResult<DirectDecodedXml>;
|
|
43
|
+
export type ComponentSoapResult = SoapResult<ComponentDecodedXml>;
|
|
44
|
+
export type ComponentRecordSoapResult = SoapResult<ComponentDecodedXml | ComponentRecordDecodedXml>;
|
|
45
|
+
export interface ComponentSoapOptions extends Omit<DirectSoapOptions, 'endpoint' | 'allowEndpoint'> {
|
|
46
|
+
readonly endpoint?: string;
|
|
47
|
+
/** Optional restriction; omission permits only the configured or selected address. */
|
|
48
|
+
readonly allowEndpoint?: (endpoint: URL) => boolean;
|
|
49
|
+
/** Additional caller-owned PEM trust anchor; certificate and hostname verification remain enabled. */
|
|
50
|
+
readonly ca?: string;
|
|
51
|
+
}
|
|
38
52
|
/** Shared entry guard: consumers must call before reading any SOAP option. */
|
|
39
|
-
export declare function directSoapOptionsShape(options: unknown, check: () => void): string | undefined;
|
|
53
|
+
export declare function directSoapOptionsShape(options: unknown, check: () => void, additional?: readonly string[]): string | undefined;
|
|
40
54
|
/** Authentication and fresh-value validation precede dependency bootstrap and all HTTP I/O. */
|
|
41
55
|
export declare function exchangeDirectSoap(contract: DirectOperationContract, inputMapping: unknown, application: unknown, options: DirectSoapOptions): Promise<DirectSoapResult>;
|
|
42
|
-
|
|
56
|
+
/** Execute one authenticated component mapping through the existing SOAP client and native XML checks.
|
|
57
|
+
* @remarks HTTPS transport with verified server identity is supported. Client certificates, timestamps and
|
|
58
|
+
* timestamp layouts refuse before I/O. Algorithm suites constrain WS-Security cryptographic operations;
|
|
59
|
+
* this fragment has no supporting tokens, signature or encryption operations and emits no security header.
|
|
60
|
+
* Optional caller restrictions narrow the selected/configured endpoint. No gateway or source admission is granted here.
|
|
61
|
+
* @returns A validated response/fault or explicit failure, with owned work and connections closed.
|
|
62
|
+
* @throws TypeError For foreign native handles. Invalid explicit timer/XML capacities throw RangeError.
|
|
63
|
+
*/
|
|
64
|
+
export declare function exchangeComponentSoap(contract: DirectOperationContract, inputMapping: unknown, application: unknown, options: ComponentSoapOptions): Promise<ComponentSoapResult>;
|
|
65
|
+
export declare function exchangeComponentSoap(contract: DirectOperationContract, inputMapping: unknown, application: unknown, options: ComponentSoapOptions, responseProjection: ComponentRecordProjection): Promise<ComponentRecordSoapResult>;
|
|
66
|
+
export {};
|