@techspokes/typescript-wsdl-client 1.1.5 → 1.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -66
- 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 +245 -0
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +75 -1
- 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 +26 -12
- 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/generateTypes.d.ts +0 -1
- package/dist/client/generateUtils.d.ts +0 -1
- package/dist/client/generateUtils.js +3 -1
- package/dist/compiler/applicationGroups.d.ts +53 -0
- package/dist/compiler/applicationGroups.js +403 -0
- package/dist/compiler/buildCanonicalGraph.d.ts +0 -1
- package/dist/compiler/canonicalGraph.d.ts +0 -1
- 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 +109 -0
- package/dist/compiler/componentRecordProjection.js +319 -0
- package/dist/compiler/componentSoapPreparation.d.ts +20 -0
- package/dist/compiler/componentSoapPreparation.js +36 -0
- package/dist/compiler/composeCanonicalGraph.d.ts +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/directCodec.d.ts +59 -2
- package/dist/compiler/directCodec.js +275 -90
- package/dist/compiler/directExecutionPolicy.d.ts +0 -1
- package/dist/compiler/directOperation.d.ts +46 -4
- package/dist/compiler/directOperation.js +105 -14
- package/dist/compiler/directSoap.d.ts +29 -5
- package/dist/compiler/directSoap.js +130 -37
- 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 +428 -6
- package/dist/compiler/directStructure.d.ts +83 -6
- package/dist/compiler/directStructure.js +349 -58
- package/dist/compiler/directStructurePlan.d.ts +135 -2
- package/dist/compiler/directStructurePlan.js +594 -29
- package/dist/compiler/directValues.d.ts +63 -4
- package/dist/compiler/directValues.js +950 -116
- 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/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 +32 -0
- package/dist/compiler/projectionScalar.js +184 -0
- package/dist/compiler/re01CandidateAssignments.d.ts +95 -0
- package/dist/compiler/re01CandidateAssignments.js +341 -0
- package/dist/compiler/re01CandidateCorrespondence.d.ts +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/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/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 +1 -2
- 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/generateGateway.d.ts +0 -1
- package/dist/gateway/generators.d.ts +0 -1
- package/dist/gateway/helpers.d.ts +0 -1
- package/dist/generation/componentShape.d.ts +14 -0
- package/dist/generation/componentShape.js +269 -0
- package/dist/generation/preamble.d.ts +0 -1
- package/dist/generation/sourceLayout.d.ts +13 -0
- package/dist/generation/sourceLayout.js +40 -0
- package/dist/generation/writeGeneratedSource.d.ts +0 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.js +2 -1
- package/dist/loader/fetch.d.ts +0 -1
- package/dist/loader/orderedSyntax.d.ts +8 -1
- package/dist/loader/orderedSyntax.js +26 -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/openapi/casing.d.ts +0 -1
- 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 +6 -2
- package/dist/pipeline.js +13 -0
- package/dist/test/generateCheckedTests.d.ts +17 -0
- package/dist/test/generateCheckedTests.js +60 -0
- package/dist/test/generateTests.d.ts +0 -1
- package/dist/test/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 +2 -0
- package/docs/api-reference.md +1 -1
- package/docs/checked-gateway.md +210 -0
- package/docs/checked-generation.md +161 -0
- package/docs/cli-reference.md +23 -1
- package/docs/concepts.md +136 -1
- package/docs/configuration.md +5 -1
- 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 +1 -1
- package/docs/generated-code.md +10 -5
- package/docs/mapping-contract.md +114 -0
- package/docs/migration-playbook.md +1 -1
- package/docs/output-anatomy.md +1 -1
- package/docs/start-here.md +8 -2
- package/docs/supported-patterns.md +7 -3
- package/docs/testing.md +117 -31
- package/llms.txt +7 -7
- package/package.json +63 -22
- package/src/runtime/checkedGatewayHost.tpl.txt +157 -0
- package/src/runtime/streamXml.ts +1 -1
- package/dist/app/generateApp.d.ts.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/client/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
|
@@ -4,33 +4,41 @@ import { checkSemanticBudget } from './semanticBudget.js';
|
|
|
4
4
|
import { DataOwnershipLimitError } from './dataOwnership.js';
|
|
5
5
|
import { types } from 'node:util';
|
|
6
6
|
import { inspectDirectOperation } from './directOperation.js';
|
|
7
|
-
import { inspectDirectValueMapping, expandDirectValue, assessDirectScalars } from './directValues.js';
|
|
8
|
-
import { matchDirectOperation } from './directStructure.js';
|
|
7
|
+
import { inspectDirectValueMapping, expandDirectValue, assessDirectScalars, inspectComponentValueMapping, expandProjectionValue, assessProjectionScalars } from './directValues.js';
|
|
8
|
+
import { matchDirectOperation, matchDirectProjection } from './directStructure.js';
|
|
9
9
|
import { parseOrderedSyntax, SchemaLoadingError, XML_NAMESPACE } from '../loader/orderedSyntax.js';
|
|
10
|
+
import { isXmlNamespaceBinding } from './directStructurePlan.js';
|
|
10
11
|
export const DIRECT_XML_LIMITS = Object.freeze({ maxBytes: 1024 * 1024, maxDepth: 256, maxNodes: 100_000, maxText: 1024 * 1024 });
|
|
12
|
+
const componentObservations = new WeakSet();
|
|
11
13
|
class Stop extends Error {
|
|
12
14
|
kind;
|
|
13
15
|
rule;
|
|
14
|
-
|
|
16
|
+
source;
|
|
17
|
+
constructor(kind, rule, source) {
|
|
15
18
|
super(rule);
|
|
16
19
|
this.kind = kind;
|
|
17
20
|
this.rule = rule;
|
|
21
|
+
this.source = source;
|
|
18
22
|
}
|
|
19
23
|
}
|
|
20
|
-
|
|
24
|
+
const directProfile = Object.freeze({ version: 'direct-values-v1', basis: 'native-direct-premises-v1',
|
|
25
|
+
correspondence: 'dated-XSD-2004-direct-v1', rule: 'direct-codec-version' });
|
|
26
|
+
const componentProfile = Object.freeze({ version: 'component-values-v1', basis: 'native-component-premises-v1',
|
|
27
|
+
correspondence: 'dated-XSD-2004-components-v1', rule: 'component-codec-version' });
|
|
28
|
+
function runMapping(contract, supplied, options, profile, inspect, work) {
|
|
21
29
|
// Identity before all property reads, including version checks.
|
|
22
|
-
const mapping =
|
|
30
|
+
const mapping = inspect(supplied, contract);
|
|
23
31
|
const { budget } = inspectDirectOperation(contract).context;
|
|
24
32
|
const check = () => { checkSemanticBudget(budget); if (options.signal?.aborted)
|
|
25
33
|
throw new Stop('cancelled', 'cooperative-cancellation'); };
|
|
26
34
|
try {
|
|
27
35
|
const result = budget.guard(() => {
|
|
28
36
|
check();
|
|
29
|
-
if (mapping.version !==
|
|
30
|
-
|| contract.basis !==
|
|
37
|
+
if (mapping.version !== profile.version || mapping.contextId !== contract.contextId
|
|
38
|
+
|| contract.basis !== profile.basis || contract.correspondence !== profile.correspondence
|
|
31
39
|
|| contract.binding.version !== '1.1' || contract.binding.style !== 'document' || contract.binding.use !== 'literal'
|
|
32
40
|
|| contract.binding.transport !== 'http://schemas.xmlsoap.org/soap/http')
|
|
33
|
-
throw new Stop('unsupported',
|
|
41
|
+
throw new Stop('unsupported', profile.rule);
|
|
34
42
|
const direction = mapping.direction;
|
|
35
43
|
const root = direction.kind === 'fault' ? contract.faults.find(f => {
|
|
36
44
|
check();
|
|
@@ -72,7 +80,8 @@ function run(contract, supplied, options, work) {
|
|
|
72
80
|
if (error instanceof DataOwnershipLimitError)
|
|
73
81
|
return { kind: 'resource-limit', rule: error.message, usage: budget.usage() };
|
|
74
82
|
if (error instanceof Stop)
|
|
75
|
-
return Object.freeze({ kind: error.kind, rule: error.rule,
|
|
83
|
+
return Object.freeze({ kind: error.kind, rule: error.rule,
|
|
84
|
+
...(error.source ? { source: error.source, payloadPath: error.source.path } : {}), usage: Object.freeze({ ...budget.usage() }) });
|
|
76
85
|
if (error instanceof SchemaLoadingError)
|
|
77
86
|
return Object.freeze({ kind: error.category === 'invalid-schema' ? 'xml-invalid'
|
|
78
87
|
: error.category === 'resource-limit' ? 'resource-limit' : 'unsupported', rule: error.message, source: error.source,
|
|
@@ -80,103 +89,254 @@ function run(contract, supplied, options, work) {
|
|
|
80
89
|
throw error;
|
|
81
90
|
}
|
|
82
91
|
}
|
|
92
|
+
function run(contract, mapping, options, work) {
|
|
93
|
+
return runMapping(contract, mapping, options, directProfile, inspectDirectValueMapping, work);
|
|
94
|
+
}
|
|
95
|
+
function runComponent(contract, mapping, options, work) {
|
|
96
|
+
return runMapping(contract, mapping, options, componentProfile, (value, owner) => inspectComponentValueMapping(value, owner).mapping, work);
|
|
97
|
+
}
|
|
98
|
+
/** Serialize only native inverse output; source names and values have already passed their native owners. */
|
|
99
|
+
function emitObservedXml(payload, { budget, limits, check }) {
|
|
100
|
+
const pieces = [];
|
|
101
|
+
let byteLength = 0, nodes = 0, textUnits = 0, nextPrefix = 0;
|
|
102
|
+
const prefixes = new Map();
|
|
103
|
+
const append = (text) => {
|
|
104
|
+
check();
|
|
105
|
+
const size = Buffer.byteLength(text, 'utf8');
|
|
106
|
+
if (size > limits.maxBytes - byteLength)
|
|
107
|
+
throw new Stop('resource-limit', 'XML byte limit');
|
|
108
|
+
byteLength += size;
|
|
109
|
+
pieces.push(text);
|
|
110
|
+
};
|
|
111
|
+
const escape = (text, attribute = false) => {
|
|
112
|
+
check();
|
|
113
|
+
return text.replace(/[&<>\r"\t\n]/g, c => c === '&' ? '&' : c === '<' ? '<' : c === '>' ? '>'
|
|
114
|
+
: c === '\r' ? ' ' : attribute && c === '"' ? '"' : attribute && c === '\t' ? '	'
|
|
115
|
+
: attribute && c === '\n' ? ' ' : c);
|
|
116
|
+
};
|
|
117
|
+
const prefixFor = (namespace) => {
|
|
118
|
+
if (!namespace)
|
|
119
|
+
return '';
|
|
120
|
+
if (namespace === 'http://www.w3.org/2000/xmlns/')
|
|
121
|
+
throw new Stop('unsupported', 'namespace-declaration-as-data');
|
|
122
|
+
let prefix = namespace === XML_NAMESPACE ? 'xml' : prefixes.get(namespace);
|
|
123
|
+
if (namespace && prefix === undefined) {
|
|
124
|
+
prefix = `n${nextPrefix++}`;
|
|
125
|
+
prefixes.set(namespace, prefix);
|
|
126
|
+
}
|
|
127
|
+
return prefix;
|
|
128
|
+
};
|
|
129
|
+
const tasks = [{ kind: 'element', node: payload, depth: 1 }];
|
|
130
|
+
while (tasks.length) {
|
|
131
|
+
check();
|
|
132
|
+
const task = tasks.pop();
|
|
133
|
+
if (task.kind === 'close') {
|
|
134
|
+
append(`</${task.name}>`);
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
budget.reserveNodes(1);
|
|
138
|
+
if (task.kind === 'text') {
|
|
139
|
+
if (++nodes > limits.maxNodes || task.value.length > limits.maxText - textUnits)
|
|
140
|
+
throw new Stop('resource-limit', 'XML node/text limit');
|
|
141
|
+
textUnits += task.value.length;
|
|
142
|
+
append(escape(task.value));
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
const { node, depth } = task;
|
|
146
|
+
if (++nodes > limits.maxNodes || depth > limits.maxDepth)
|
|
147
|
+
throw new Stop('resource-limit', 'XML node/depth limit');
|
|
148
|
+
const declarations = new Map();
|
|
149
|
+
const protectedScope = Object.hasOwn(node.namespaces, 'xml');
|
|
150
|
+
const scope = Object.assign(Object.create(null), task.scope ?? { xml: XML_NAMESPACE, '': '' });
|
|
151
|
+
if (protectedScope) {
|
|
152
|
+
for (const prefix of budget.sorted(Object.keys(node.namespaces), (a, b) => budget.compareText(a, b))) {
|
|
153
|
+
check();
|
|
154
|
+
const namespace = node.namespaces[prefix];
|
|
155
|
+
if (!isXmlNamespaceBinding(prefix, namespace))
|
|
156
|
+
throw new Stop('value-invalid', 'namespace-binding', node.source);
|
|
157
|
+
if (prefix !== 'xml' && scope[prefix] !== namespace)
|
|
158
|
+
declarations.set(prefix, namespace);
|
|
159
|
+
scope[prefix] = namespace;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
const qualified = (namespace, local, attribute = false) => {
|
|
163
|
+
if (protectedScope) {
|
|
164
|
+
if (!namespace) {
|
|
165
|
+
if (!attribute && scope[''])
|
|
166
|
+
throw new Stop('value-invalid', 'no-namespace-element-default-conflict', node.source);
|
|
167
|
+
return local;
|
|
168
|
+
}
|
|
169
|
+
const prefix = budget.sorted(Object.keys(scope), (a, b) => budget.compareText(a, b))
|
|
170
|
+
.find(prefix => (!attribute || prefix !== '') && scope[prefix] === namespace);
|
|
171
|
+
if (prefix === undefined)
|
|
172
|
+
throw new Stop('value-invalid', attribute ? 'attribute-namespace-prefix-required' : 'element-namespace-prefix-required', node.source);
|
|
173
|
+
return prefix ? `${prefix}:${local}` : local;
|
|
174
|
+
}
|
|
175
|
+
if (!namespace) {
|
|
176
|
+
if (!attribute && scope['']) {
|
|
177
|
+
declarations.set('', '');
|
|
178
|
+
scope[''] = '';
|
|
179
|
+
}
|
|
180
|
+
return local;
|
|
181
|
+
}
|
|
182
|
+
const prefix = prefixFor(namespace);
|
|
183
|
+
let selected = prefix;
|
|
184
|
+
while (scope[selected] !== undefined && scope[selected] !== namespace)
|
|
185
|
+
selected = `n${nextPrefix++}`;
|
|
186
|
+
if (selected && selected !== 'xml') {
|
|
187
|
+
declarations.set(selected, namespace);
|
|
188
|
+
scope[selected] = namespace;
|
|
189
|
+
}
|
|
190
|
+
return selected ? `${selected}:${local}` : local;
|
|
191
|
+
};
|
|
192
|
+
const name = qualified(node.name.namespace, node.name.local), attributes = [];
|
|
193
|
+
for (const attribute of node.attributes) {
|
|
194
|
+
check();
|
|
195
|
+
if (attribute.name.namespace === '' && attribute.name.local === 'xmlns')
|
|
196
|
+
throw new Stop('unsupported', 'namespace-declaration-as-data');
|
|
197
|
+
attributes.push(` ${qualified(attribute.name.namespace, attribute.name.local, true)}="${escape(attribute.value, true)}"`);
|
|
198
|
+
}
|
|
199
|
+
// @why Bind each used prefix at this element; sibling discovery never makes a prefix in scope elsewhere.
|
|
200
|
+
append(`<${name}`);
|
|
201
|
+
for (const [prefix, namespace] of declarations)
|
|
202
|
+
append(` xmlns${prefix ? ':' + prefix : ''}="${escape(namespace, true)}"`);
|
|
203
|
+
for (const attribute of attributes)
|
|
204
|
+
append(attribute);
|
|
205
|
+
append('>');
|
|
206
|
+
tasks.push({ kind: 'close', name });
|
|
207
|
+
for (let i = node.children.length - 1; i >= 0; i--) {
|
|
208
|
+
check();
|
|
209
|
+
const child = node.children[i];
|
|
210
|
+
tasks.push(child.kind === 'element' ? { kind: 'element', node: child, depth: depth + 1, scope } : { kind: 'text', value: child.value });
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Actual output bytes were bounded by append; bytes are caller-owned data, not authority.
|
|
214
|
+
check();
|
|
215
|
+
const bytes = Buffer.from(pieces.join(''), 'utf8');
|
|
216
|
+
check();
|
|
217
|
+
return bytes;
|
|
218
|
+
}
|
|
83
219
|
/** Validate fresh values using the delivered inverse, then emit deterministic UTF-8. */
|
|
84
220
|
export function encodeDirectXml(contract, mapping, application, options = {}) {
|
|
85
|
-
return run(contract, mapping, options, (owned,
|
|
221
|
+
return run(contract, mapping, options, (owned, session) => {
|
|
222
|
+
const { budget, limits } = session;
|
|
86
223
|
const expanded = expandDirectValue(contract, owned, application, { ...options, maxText: Math.min(limits.maxText, limits.maxBytes), maxItems: Math.min(limits.maxNodes, limits.maxBytes) });
|
|
87
224
|
if (expanded.kind !== 'direct-expanded')
|
|
88
225
|
return expanded;
|
|
89
|
-
const
|
|
90
|
-
let byteLength = 0, nodes = 0, textUnits = 0, nextPrefix = 0;
|
|
91
|
-
const prefixes = new Map();
|
|
92
|
-
const append = (text) => {
|
|
93
|
-
check();
|
|
94
|
-
const size = Buffer.byteLength(text, 'utf8');
|
|
95
|
-
if (size > limits.maxBytes - byteLength)
|
|
96
|
-
throw new Stop('resource-limit', 'XML byte limit');
|
|
97
|
-
byteLength += size;
|
|
98
|
-
pieces.push(text);
|
|
99
|
-
};
|
|
100
|
-
const escape = (text, attribute = false) => {
|
|
101
|
-
check();
|
|
102
|
-
return text.replace(/[&<>\r"\t\n]/g, c => c === '&' ? '&' : c === '<' ? '<' : c === '>' ? '>'
|
|
103
|
-
: c === '\r' ? ' ' : attribute && c === '"' ? '"' : attribute && c === '\t' ? '	'
|
|
104
|
-
: attribute && c === '\n' ? ' ' : c);
|
|
105
|
-
};
|
|
106
|
-
const emit = (node, depth) => {
|
|
107
|
-
check();
|
|
108
|
-
budget.reserveNodes(1);
|
|
109
|
-
if (++nodes > limits.maxNodes || depth > limits.maxDepth)
|
|
110
|
-
throw new Stop('resource-limit', 'XML node/depth limit');
|
|
111
|
-
const namespace = node.name.namespace;
|
|
112
|
-
let prefix = namespace === XML_NAMESPACE ? 'xml' : prefixes.get(namespace);
|
|
113
|
-
if (namespace && prefix === undefined) {
|
|
114
|
-
prefix = `n${nextPrefix++}`;
|
|
115
|
-
prefixes.set(namespace, prefix);
|
|
116
|
-
}
|
|
117
|
-
// Bind at each use: a prefix first encountered on one sibling is not in
|
|
118
|
-
// scope at its next sibling. Never use a default namespace, so local
|
|
119
|
-
// unqualified children need no inherited-default reset.
|
|
120
|
-
const declaration = namespace && prefix !== 'xml' ? ` xmlns:${prefix}="${escape(namespace, true)}"` : '';
|
|
121
|
-
const name = prefix ? `${prefix}:${node.name.local}` : node.name.local;
|
|
122
|
-
append(`<${name}${declaration}>`);
|
|
123
|
-
for (const child of node.children) {
|
|
124
|
-
check();
|
|
125
|
-
if (child.kind === 'element')
|
|
126
|
-
emit(child, depth + 1);
|
|
127
|
-
else {
|
|
128
|
-
budget.reserveNodes(1);
|
|
129
|
-
if (++nodes > limits.maxNodes || child.value.length > limits.maxText - textUnits)
|
|
130
|
-
throw new Stop('resource-limit', 'XML node/text limit');
|
|
131
|
-
textUnits += child.value.length;
|
|
132
|
-
append(escape(child.value));
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
append(`</${name}>`);
|
|
136
|
-
};
|
|
137
|
-
emit(expanded.payload, 1);
|
|
138
|
-
// Actual output bytes were bounded by append; bytes are caller-owned data, not authority.
|
|
139
|
-
check();
|
|
140
|
-
const bytes = Buffer.from(pieces.join(''), 'utf8');
|
|
141
|
-
check();
|
|
226
|
+
const bytes = emitObservedXml(expanded.payload, session);
|
|
142
227
|
return Object.freeze({ kind: 'direct-encoded', admitted: false, encoding: 'utf-8',
|
|
143
228
|
bytes, expanded, usage: Object.freeze({ ...budget.usage() }) });
|
|
144
229
|
});
|
|
145
230
|
}
|
|
231
|
+
/** Encode a component-qualified structured operation direction through the same native inverse and XML writer.
|
|
232
|
+
* @remarks Mapping/source authority is checked before values. This supplies XML bytes only, not policy enforcement or dispatch.
|
|
233
|
+
* @returns Native-validated UTF-8 output or explicit scalar/value/unsupported/cancellation/resource failure.
|
|
234
|
+
*/
|
|
235
|
+
export function encodeComponentXml(contract, mapping, application, options = {}) {
|
|
236
|
+
return runComponent(contract, mapping, options, (owned, session) => {
|
|
237
|
+
const { context } = inspectDirectOperation(contract), { budget, limits } = session;
|
|
238
|
+
// @why Application items include attributes; XML syntax-node/text caps count elements and character data.
|
|
239
|
+
// Encoded bytes bound inverse input capacity without treating those different counters as equal.
|
|
240
|
+
const expanded = expandProjectionValue(context, owned.root.element, application, { ...options,
|
|
241
|
+
maxText: limits.maxBytes, maxItems: limits.maxBytes }, owned);
|
|
242
|
+
if (expanded.kind !== 'projection-expanded')
|
|
243
|
+
return expanded;
|
|
244
|
+
const bytes = emitObservedXml(expanded.payload, session);
|
|
245
|
+
return Object.freeze({ kind: 'component-encoded', admitted: false, encoding: 'utf-8',
|
|
246
|
+
bytes, expanded, mapping: owned, usage: Object.freeze({ ...budget.usage() }) });
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
/** Retain the shared byte-copy, XML-version, entity and explicit capacity boundaries for both profiles. */
|
|
250
|
+
function parseObservedXml(bytes, { budget, limits, check }, sourceUri) {
|
|
251
|
+
if (!types.isUint8Array(bytes) || types.isProxy(bytes))
|
|
252
|
+
throw new TypeError('XML requires Uint8Array bytes');
|
|
253
|
+
// Use native internal-slot access, avoiding subclass/own length, buffer and
|
|
254
|
+
// iterator getters. Shared backing stores are outside the data-only contract.
|
|
255
|
+
const typed = Object.getPrototypeOf(Uint8Array.prototype);
|
|
256
|
+
const length = Object.getOwnPropertyDescriptor(typed, 'byteLength').get.call(bytes);
|
|
257
|
+
const backing = Object.getOwnPropertyDescriptor(typed, 'buffer').get.call(bytes);
|
|
258
|
+
if (types.isSharedArrayBuffer(backing))
|
|
259
|
+
throw new TypeError('Shared XML bytes are unsupported');
|
|
260
|
+
if (length > limits.maxBytes)
|
|
261
|
+
throw new Stop('resource-limit', 'XML byte limit');
|
|
262
|
+
check();
|
|
263
|
+
const input = new Uint8Array(length);
|
|
264
|
+
Uint8Array.prototype.set.call(input, bytes);
|
|
265
|
+
const uri = sourceUri ?? 'urn:typescript-wsdl-client:observed-direct-xml';
|
|
266
|
+
if (typeof uri !== 'string')
|
|
267
|
+
throw new TypeError('XML source URI must be a string');
|
|
268
|
+
check();
|
|
269
|
+
return parseOrderedSyntax(input, uri, { ...limits, xml10Only: true,
|
|
270
|
+
chargeWork: () => check(), reserveNode: () => { check(); budget.reserveNodes(1); } }).root;
|
|
271
|
+
}
|
|
272
|
+
function assertObservedPayload(root, payload, check) {
|
|
273
|
+
const pending = [root];
|
|
274
|
+
while (pending.length) {
|
|
275
|
+
check();
|
|
276
|
+
const node = pending.pop();
|
|
277
|
+
if (node === payload)
|
|
278
|
+
return;
|
|
279
|
+
for (let i = node.children.length - 1; i >= 0; i--) {
|
|
280
|
+
check();
|
|
281
|
+
const child = node.children[i];
|
|
282
|
+
if (child.kind === 'element')
|
|
283
|
+
pending.push(child);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
throw new TypeError('Protocol payload must belong to the observed document');
|
|
287
|
+
}
|
|
288
|
+
/** Observe once through the existing component parser and execution controls.
|
|
289
|
+
* @remarks Any exact operation-owned mapping can bind parsing to its execution context. Its value/root is not
|
|
290
|
+
* assessed here. Source qualification, wrapper scope and selected payload validation remain separate owners.
|
|
291
|
+
*/
|
|
292
|
+
export function observeComponentXml(contract, mapping, bytes, options = {}) {
|
|
293
|
+
const result = runComponent(contract, mapping, options, (_owned, session) => {
|
|
294
|
+
const root = parseObservedXml(bytes, session, options.uri ?? 'urn:typescript-wsdl-client:observed-component-xml');
|
|
295
|
+
directDataOwnership(session.budget).freeze(root);
|
|
296
|
+
return Object.freeze({ kind: 'observed-component-xml', root, usage: Object.freeze({ ...session.budget.usage() }) });
|
|
297
|
+
});
|
|
298
|
+
if (result.kind === 'observed-component-xml')
|
|
299
|
+
componentObservations.add(result);
|
|
300
|
+
return result;
|
|
301
|
+
}
|
|
302
|
+
/** Validate a genuine observed subtree through an independently qualified component mapping.
|
|
303
|
+
* @remarks XML capacities belong to the observation episode. This entry assesses the selected mapping's
|
|
304
|
+
* structure and scalar duties; it does not assert cross-contract wrapper, SOAP or runtime authority.
|
|
305
|
+
* @throws TypeError For copied observations, foreign mappings or a node outside the observed document.
|
|
306
|
+
*/
|
|
307
|
+
export function assessObservedComponentPayload(contract, mapping, observation, payload, options = {}) {
|
|
308
|
+
if (!componentObservations.has(observation))
|
|
309
|
+
throw new TypeError('Native component XML observation required');
|
|
310
|
+
return runComponent(contract, mapping, options, (owned, { budget, check }) => {
|
|
311
|
+
assertObservedPayload(observation.root, payload, check);
|
|
312
|
+
const { context } = inspectDirectOperation(contract);
|
|
313
|
+
const structural = matchDirectProjection(context, owned.root.element, payload, options);
|
|
314
|
+
if (structural.kind !== 'projection-match')
|
|
315
|
+
return structural;
|
|
316
|
+
const validated = assessProjectionScalars(context, structural, options, owned);
|
|
317
|
+
if (validated.kind !== 'projection-value')
|
|
318
|
+
return validated;
|
|
319
|
+
return Object.freeze({ kind: 'component-decoded', admitted: false, payload, validated, mapping: owned,
|
|
320
|
+
usage: Object.freeze({ ...budget.usage() }) });
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
/** Verify membership without conferring a selected mapping or wrapper validity. */
|
|
324
|
+
export function assertComponentObservedPayload(observation, payload, check) {
|
|
325
|
+
if (!componentObservations.has(observation))
|
|
326
|
+
throw new TypeError('Native component XML observation required');
|
|
327
|
+
assertObservedPayload(observation.root, payload, check);
|
|
328
|
+
}
|
|
146
329
|
/** Bounded observed bytes -> ordered syntax -> existing structural/scalar checks. */
|
|
147
330
|
export function decodeDirectXml(contract, mapping, bytes, options = {}) {
|
|
148
|
-
return run(contract, mapping, options, (owned,
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
// Use native internal-slot access, avoiding subclass/own length, buffer and
|
|
152
|
-
// iterator getters. Shared backing stores are outside the data-only contract.
|
|
153
|
-
const typed = Object.getPrototypeOf(Uint8Array.prototype);
|
|
154
|
-
const length = Object.getOwnPropertyDescriptor(typed, 'byteLength').get.call(bytes);
|
|
155
|
-
const backing = Object.getOwnPropertyDescriptor(typed, 'buffer').get.call(bytes);
|
|
156
|
-
if (types.isSharedArrayBuffer(backing))
|
|
157
|
-
throw new TypeError('Shared XML bytes are unsupported');
|
|
158
|
-
if (length > limits.maxBytes)
|
|
159
|
-
throw new Stop('resource-limit', 'XML byte limit');
|
|
160
|
-
check();
|
|
161
|
-
const input = new Uint8Array(length);
|
|
162
|
-
Uint8Array.prototype.set.call(input, bytes);
|
|
163
|
-
const uri = options.uri ?? 'urn:typescript-wsdl-client:observed-direct-xml';
|
|
164
|
-
if (typeof uri !== 'string')
|
|
165
|
-
throw new TypeError('XML source URI must be a string');
|
|
166
|
-
check();
|
|
167
|
-
const root = parseOrderedSyntax(input, uri, { ...limits, xml10Only: true,
|
|
168
|
-
chargeWork: () => check(), reserveNode: () => { check(); budget.reserveNodes(1); } }).root;
|
|
331
|
+
return run(contract, mapping, options, (owned, session) => {
|
|
332
|
+
const { budget, check } = session;
|
|
333
|
+
const root = parseObservedXml(bytes, session, options.uri);
|
|
169
334
|
const selection = options.selectPayload?.(root) ?? { payload: root, mapping: owned };
|
|
170
335
|
const payload = selection.payload;
|
|
171
336
|
const selectedMapping = inspectDirectValueMapping(selection.mapping, contract);
|
|
172
337
|
// Protocol selection may only return an actual node from this parse, never
|
|
173
338
|
// a synthetic tree relabeled with the observed document's provenance.
|
|
174
|
-
|
|
175
|
-
check();
|
|
176
|
-
return node === payload || node.children.some(child => child.kind === 'element' && contains(child));
|
|
177
|
-
};
|
|
178
|
-
if (!contains(root))
|
|
179
|
-
throw new TypeError('Protocol payload must belong to the observed document');
|
|
339
|
+
assertObservedPayload(root, payload, check);
|
|
180
340
|
const structural = matchDirectOperation(contract, selectedMapping.direction, payload, options);
|
|
181
341
|
if (structural.kind !== 'structural-match')
|
|
182
342
|
return structural;
|
|
@@ -190,3 +350,28 @@ export function decodeDirectXml(contract, mapping, bytes, options = {}) {
|
|
|
190
350
|
usage: Object.freeze({ ...budget.usage() }) });
|
|
191
351
|
});
|
|
192
352
|
}
|
|
353
|
+
/** Decode observed component-profile bytes through the same parser and native structured/scalar owners.
|
|
354
|
+
* @remarks Protocol selection may choose only an actual node from this parse and an exact operation-owned mapping.
|
|
355
|
+
* It cannot relabel a copied syntax tree, switch operations or acquire runtime/policy enforcement authority.
|
|
356
|
+
* @returns A native-validated structured value or explicit XML/structure/scalar/unsupported/resource failure.
|
|
357
|
+
*/
|
|
358
|
+
export function decodeComponentXml(contract, mapping, bytes, options = {}) {
|
|
359
|
+
return runComponent(contract, mapping, options, (owned, session) => {
|
|
360
|
+
const { budget, check } = session, { context } = inspectDirectOperation(contract);
|
|
361
|
+
const root = parseObservedXml(bytes, session, options.uri ?? 'urn:typescript-wsdl-client:observed-component-xml');
|
|
362
|
+
const selection = options.selectPayload?.(root) ?? { payload: root, mapping: owned };
|
|
363
|
+
const selected = inspectComponentValueMapping(selection.mapping, contract).mapping;
|
|
364
|
+
assertObservedPayload(root, selection.payload, check);
|
|
365
|
+
const structural = matchDirectProjection(context, selected.root.element, selection.payload, options);
|
|
366
|
+
if (structural.kind !== 'projection-match')
|
|
367
|
+
return structural;
|
|
368
|
+
const validated = assessProjectionScalars(context, structural, options, selected);
|
|
369
|
+
if (validated.kind !== 'projection-value')
|
|
370
|
+
return validated;
|
|
371
|
+
check();
|
|
372
|
+
directDataOwnership(budget).freeze(selection.payload);
|
|
373
|
+
check();
|
|
374
|
+
return Object.freeze({ kind: 'component-decoded', admitted: false, payload: selection.payload,
|
|
375
|
+
validated, mapping: selected, usage: Object.freeze({ ...budget.usage() }) });
|
|
376
|
+
});
|
|
377
|
+
}
|
|
@@ -7,4 +7,3 @@ export declare function directDataOwnership(budget: SemanticBudget): Readonly<{
|
|
|
7
7
|
}>;
|
|
8
8
|
export declare function directLimit(budget: SemanticBudget, boundedProfile: number): number;
|
|
9
9
|
export declare function directLoadingLimits(budget: SemanticBudget, overrides?: Partial<LoadingLimits>): Partial<LoadingLimits>;
|
|
10
|
-
//# sourceMappingURL=directExecutionPolicy.d.ts.map
|
|
@@ -4,6 +4,9 @@ import type { ElementNode, Reference } from './canonicalGraph.js';
|
|
|
4
4
|
import type { SemanticContext } from './semanticContext.js';
|
|
5
5
|
import type { SemanticBudget, SemanticBudgetLimits, ResolverUsage } from './semanticBudget.js';
|
|
6
6
|
import type { DirectSourceQualification } from './checkedSourcePreparation.js';
|
|
7
|
+
import type { ComponentSourceQualification } from './checkedComponentSource.js';
|
|
8
|
+
import type { WsdlPolicyRequirements, BindingPolicyRequirements } from './wsdlPolicyRequirements.js';
|
|
9
|
+
import type { StandardSchemaLibrary } from './standardSchemaComponents.js';
|
|
7
10
|
export interface DirectOperationSelector {
|
|
8
11
|
readonly portType: ExpandedName;
|
|
9
12
|
readonly binding: ExpandedName;
|
|
@@ -19,8 +22,8 @@ export interface DirectMessageRoot {
|
|
|
19
22
|
export interface DirectOperationContract {
|
|
20
23
|
readonly selector: DirectOperationSelector;
|
|
21
24
|
readonly contextId: string;
|
|
22
|
-
readonly basis: 'native-direct-premises-v1';
|
|
23
|
-
readonly correspondence: 'dated-XSD-2004-direct-v1';
|
|
25
|
+
readonly basis: 'native-direct-premises-v1' | 'native-component-premises-v1';
|
|
26
|
+
readonly correspondence: 'dated-XSD-2004-direct-v1' | 'dated-XSD-2004-components-v1';
|
|
24
27
|
readonly binding: Readonly<{
|
|
25
28
|
version: '1.1';
|
|
26
29
|
style: 'document';
|
|
@@ -35,6 +38,16 @@ export interface DirectOperationContract {
|
|
|
35
38
|
name: string;
|
|
36
39
|
root: DirectMessageRoot;
|
|
37
40
|
}>[];
|
|
41
|
+
readonly policy?: BindingPolicyRequirements;
|
|
42
|
+
readonly addressingActions?: Readonly<{
|
|
43
|
+
required: false;
|
|
44
|
+
input?: string;
|
|
45
|
+
output?: string;
|
|
46
|
+
faults: readonly Readonly<{
|
|
47
|
+
name: string;
|
|
48
|
+
action: string;
|
|
49
|
+
}>[];
|
|
50
|
+
}>;
|
|
38
51
|
readonly missingCapabilities: readonly string[];
|
|
39
52
|
readonly admitted: false;
|
|
40
53
|
}
|
|
@@ -53,7 +66,8 @@ export interface DirectOperationInspection {
|
|
|
53
66
|
readonly source: SchemaInput;
|
|
54
67
|
readonly evidence: Extract<DirectSourceQualification, {
|
|
55
68
|
kind: 'qualified-source';
|
|
56
|
-
}
|
|
69
|
+
}> | ComponentSourceQualification;
|
|
70
|
+
readonly policyOwner?: WsdlPolicyRequirements;
|
|
57
71
|
}
|
|
58
72
|
/** Object identity authenticates the exact issued roots; context IDs and digests do not. */
|
|
59
73
|
export declare function inspectDirectOperation(contract: DirectOperationContract, expectedContext?: SemanticContext): DirectOperationInspection;
|
|
@@ -69,4 +83,32 @@ export declare function selectDirectOperationInRequest(source: string, selector:
|
|
|
69
83
|
limits?: SemanticBudgetLimits;
|
|
70
84
|
signal?: AbortSignal;
|
|
71
85
|
}>, budget: SemanticBudget): Promise<DirectOperationResult>;
|
|
72
|
-
|
|
86
|
+
/** Select through additive native component qualification without granting codec, transport or runtime admission.
|
|
87
|
+
* @remarks The same WSDL binding/message owner is used by the existing preview. New contracts carry a distinct
|
|
88
|
+
* basis and correspondence; preview codecs and source capsules continue to refuse them until independently extended.
|
|
89
|
+
* @returns Fresh source-bound operation roots or an explicit qualification/selection failure.
|
|
90
|
+
*/
|
|
91
|
+
export declare function selectComponentOperation(source: string, selector: DirectOperationSelector, options: Readonly<{
|
|
92
|
+
loading: SchemaInputOptions;
|
|
93
|
+
limits?: SemanticBudgetLimits;
|
|
94
|
+
signal?: AbortSignal;
|
|
95
|
+
standardLibraries?: readonly StandardSchemaLibrary[];
|
|
96
|
+
}>): Promise<DirectOperationResult>;
|
|
97
|
+
/** Private composition seam: artifact reading and fresh component selection share the same sticky request. */
|
|
98
|
+
export declare function selectComponentOperationInRequest(source: string, selector: DirectOperationSelector, options: Readonly<{
|
|
99
|
+
loading: SchemaInputOptions;
|
|
100
|
+
limits?: SemanticBudgetLimits;
|
|
101
|
+
signal?: AbortSignal;
|
|
102
|
+
standardLibraries?: readonly StandardSchemaLibrary[];
|
|
103
|
+
}>, budget: SemanticBudget): Promise<DirectOperationResult>;
|
|
104
|
+
/** Select requested service operations against one fresh native source snapshot and sticky request.
|
|
105
|
+
* @remarks Native whole-source qualification is reused by identity within this batch only. Every binding/message
|
|
106
|
+
* selection still runs through the same owner; no source flags, saved reports or operation-name guesses are consumed.
|
|
107
|
+
* @returns One result in each requested position, including explicit refusals. No requested operation is omitted.
|
|
108
|
+
*/
|
|
109
|
+
export declare function selectComponentOperations(source: string, selectors: readonly DirectOperationSelector[], options: Readonly<{
|
|
110
|
+
loading: SchemaInputOptions;
|
|
111
|
+
limits?: SemanticBudgetLimits;
|
|
112
|
+
signal?: AbortSignal;
|
|
113
|
+
standardLibraries?: readonly StandardSchemaLibrary[];
|
|
114
|
+
}>): Promise<readonly DirectOperationResult[]>;
|