@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,82 +1,133 @@
|
|
|
1
|
-
import { directDataOwnership, directLimit } from '../compiler/directExecutionPolicy.js';
|
|
1
|
+
import { directDataOwnership, directLimit, directLoadingLimits } from '../compiler/directExecutionPolicy.js';
|
|
2
2
|
/** Private P3.7 binding. No public package entry or alternate SOAP implementation. */
|
|
3
3
|
import { checkSemanticBudget } from '../compiler/semanticBudget.js';
|
|
4
4
|
import { DataOwnershipLimitError } from '../compiler/dataOwnership.js';
|
|
5
5
|
import { types } from 'node:util';
|
|
6
6
|
import { createApplicationBudget } from '../compiler/semanticBudget.js';
|
|
7
|
-
import { reconstructDirectSourceCapsuleInRequest, checkDirectSourceCompatibility, DIRECT_CAPSULE_LIMITS } from '../compiler/directSourceCapsule.js';
|
|
8
|
-
import { exchangeDirectSoap, directSoapOptionsShape } from '../compiler/directSoap.js';
|
|
9
|
-
import { DIRECT_CLIENT_RUNTIME_VERSION } from './directClientVersion.js';
|
|
7
|
+
import { reconstructDirectSourceCapsuleInRequest, reconstructComponentSourceCapsuleInRequest, checkDirectSourceCompatibility, DIRECT_CAPSULE_LIMITS } from '../compiler/directSourceCapsule.js';
|
|
8
|
+
import { exchangeDirectSoap, exchangeComponentSoap, directSoapOptionsShape } from '../compiler/directSoap.js';
|
|
9
|
+
import { DIRECT_CLIENT_RUNTIME_VERSION, COMPONENT_CLIENT_RUNTIME_VERSION } from './directClientVersion.js';
|
|
10
|
+
import { prepareSchemaSnapshotFiles } from '../loader/schemaInput.js';
|
|
11
|
+
import { SchemaLoadingError } from '../loader/orderedSyntax.js';
|
|
10
12
|
/** The generated literal is the expected artifact; caller bytes never choose its static contract. */
|
|
11
13
|
export const directClientRuntime = Object.freeze({
|
|
12
14
|
version: DIRECT_CLIENT_RUNTIME_VERSION,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
execute: (expectedBase64, input, options) => executeClient(expectedBase64, input, options, false),
|
|
16
|
+
});
|
|
17
|
+
/** Same artifact/execution chain, with explicit physical dependency snapshots and component-profile reconstruction. */
|
|
18
|
+
export const componentClientRuntime = Object.freeze({
|
|
19
|
+
version: COMPONENT_CLIENT_RUNTIME_VERSION,
|
|
20
|
+
execute: (expectedBase64, input, options) => executeClient(expectedBase64, input, options, true),
|
|
21
|
+
});
|
|
22
|
+
async function executeClient(expectedBase64, input, options, component) {
|
|
23
|
+
// Constant-sized entry introspection precedes budget configuration and all reads.
|
|
24
|
+
const entryFailure = () => ({ kind: 'unsupported', rule: 'data-only client options required', usage: { nodes: 0, work: 0 } });
|
|
25
|
+
if (!options || typeof options !== 'object' || types.isProxy(options)
|
|
26
|
+
|| ![null, Object.prototype].includes(Object.getPrototypeOf(options)))
|
|
27
|
+
return entryFailure();
|
|
28
|
+
const allowed = ['localSource', 'fileRoots', 'capsule', 'budget', 'soap', ...(component ? ['sourceResources', 'sourceOrigins', 'sourceUri', 'namespaceLocations', 'standardLibraries', 'recordSources'] : [])];
|
|
29
|
+
const owned = Object.create(null);
|
|
30
|
+
for (const key of Reflect.ownKeys(options)) {
|
|
31
|
+
const descriptor = Object.getOwnPropertyDescriptor(options, key);
|
|
32
|
+
if (typeof key !== 'string' || !allowed.includes(key) || !descriptor || !('value' in descriptor))
|
|
18
33
|
return entryFailure();
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (!['localSource', 'fileRoots', 'capsule', 'soap'].every(key => Object.hasOwn(owned, key)))
|
|
34
|
+
owned[key] = descriptor.value;
|
|
35
|
+
}
|
|
36
|
+
if (!['localSource', 'fileRoots', 'capsule', 'soap', ...(component ? ['sourceResources', 'sourceOrigins'] : [])].every(key => Object.hasOwn(owned, key)))
|
|
37
|
+
return entryFailure();
|
|
38
|
+
if (owned.budget !== undefined) {
|
|
39
|
+
const limits = owned.budget;
|
|
40
|
+
if (!limits || typeof limits !== 'object' || types.isProxy(limits)
|
|
41
|
+
|| ![null, Object.prototype].includes(Object.getPrototypeOf(limits)))
|
|
28
42
|
return entryFailure();
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
43
|
+
const copied = Object.create(null);
|
|
44
|
+
for (const key of Reflect.ownKeys(limits)) {
|
|
45
|
+
const descriptor = Object.getOwnPropertyDescriptor(limits, key);
|
|
46
|
+
if (typeof key !== 'string' || !['maxNodes', 'maxWork'].includes(key) || !descriptor || !('value' in descriptor))
|
|
33
47
|
return entryFailure();
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
48
|
+
copied[key] = descriptor.value;
|
|
49
|
+
}
|
|
50
|
+
owned.budget = Object.freeze(copied);
|
|
51
|
+
}
|
|
52
|
+
options = owned;
|
|
53
|
+
const budget = createApplicationBudget(options.budget);
|
|
54
|
+
const fail = (kind, rule) => Object.freeze({ kind, rule, usage: Object.freeze({ ...budget.usage() }) });
|
|
55
|
+
try {
|
|
56
|
+
const optionRule = directSoapOptionsShape(options.soap, () => checkSemanticBudget(budget), component ? ['ca'] : []);
|
|
57
|
+
if (optionRule)
|
|
58
|
+
return fail('unsupported', optionRule);
|
|
59
|
+
if (options.soap.signal !== undefined && !(options.soap.signal instanceof AbortSignal))
|
|
60
|
+
return fail('unsupported', 'native AbortSignal required');
|
|
61
|
+
if (options.soap.signal?.aborted)
|
|
62
|
+
return fail('cancelled', 'cooperative-cancellation');
|
|
63
|
+
const signal = options.soap.signal;
|
|
64
|
+
const check = () => { checkSemanticBudget(budget); if (signal?.aborted)
|
|
65
|
+
throw new Error('cancelled'); };
|
|
66
|
+
const soap = Object.create(null);
|
|
67
|
+
for (const key of Reflect.ownKeys(options.soap))
|
|
68
|
+
soap[key] = Object.getOwnPropertyDescriptor(options.soap, key).value;
|
|
69
|
+
for (const key of ['service', 'port', 'endpoint', 'timeoutMs', 'limits', 'capabilities', ...(component ? ['ca'] : [])]) {
|
|
70
|
+
if (Object.hasOwn(soap, key))
|
|
71
|
+
soap[key] = directDataOwnership(budget).freeze(directDataOwnership(budget).snapshot(soap[key], check));
|
|
42
72
|
}
|
|
43
|
-
options =
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
73
|
+
options = Object.freeze({ ...options, fileRoots: directDataOwnership(budget).freeze(directDataOwnership(budget).snapshot(options.fileRoots, check)), soap: Object.freeze(soap) });
|
|
74
|
+
if (typeof expectedBase64 !== 'string' || expectedBase64.length > Math.ceil(directLimit(budget, DIRECT_CAPSULE_LIMITS.maxBytes) / 3) * 4)
|
|
75
|
+
return fail('incompatible-artifact', 'generated-capsule-limit');
|
|
76
|
+
// The exact embedded artifact pins the emitted types. Check actual byte extent
|
|
77
|
+
// before copying; do not invoke caller byte getters.
|
|
78
|
+
if (!types.isUint8Array(options.capsule) || types.isProxy(options.capsule))
|
|
79
|
+
return fail('incompatible-artifact', 'capsule-bytes-required');
|
|
80
|
+
const typed = Object.getPrototypeOf(Uint8Array.prototype);
|
|
81
|
+
const backing = Object.getOwnPropertyDescriptor(typed, 'buffer').get.call(options.capsule);
|
|
82
|
+
const length = Object.getOwnPropertyDescriptor(typed, 'byteLength').get.call(options.capsule);
|
|
83
|
+
if (types.isSharedArrayBuffer(backing) || length > directLimit(budget, DIRECT_CAPSULE_LIMITS.maxBytes))
|
|
84
|
+
return fail('incompatible-artifact', 'capsule-bytes-required');
|
|
85
|
+
const bytes = new Uint8Array(length);
|
|
86
|
+
Uint8Array.prototype.set.call(bytes, options.capsule);
|
|
87
|
+
if (Buffer.from(bytes).toString('base64') !== expectedBase64)
|
|
88
|
+
return fail('incompatible-artifact', 'generated-capsule-mismatch');
|
|
89
|
+
let result;
|
|
90
|
+
if (component) {
|
|
91
|
+
if (typeof options.localSource !== 'string')
|
|
92
|
+
return fail('unsupported', 'explicit local source required');
|
|
93
|
+
const supplied = options;
|
|
94
|
+
const sources = directDataOwnership(budget).freeze(directDataOwnership(budget).snapshot({ resources: supplied.sourceResources,
|
|
95
|
+
origins: supplied.sourceOrigins, locations: supplied.namespaceLocations ?? [], standards: supplied.standardLibraries ?? [],
|
|
96
|
+
records: supplied.recordSources ?? [] }, check));
|
|
97
|
+
if (!Array.isArray(sources.resources) || !Array.isArray(sources.origins) || !sources.origins.every(origin => typeof origin === 'string')
|
|
98
|
+
|| !Array.isArray(sources.locations) || !Array.isArray(sources.standards) || !sources.standards.every(id => typeof id === 'string')
|
|
99
|
+
|| !Array.isArray(sources.records))
|
|
100
|
+
return fail('unsupported', 'explicit source snapshots required');
|
|
101
|
+
for (const resource of sources.resources) {
|
|
102
|
+
check();
|
|
103
|
+
if (!resource || typeof resource.uri !== 'string' || typeof resource.file !== 'string'
|
|
104
|
+
|| Object.keys(resource).some(k => !['uri', 'file', 'canonicalUri'].includes(k))
|
|
105
|
+
|| resource.canonicalUri !== undefined && typeof resource.canonicalUri !== 'string')
|
|
106
|
+
return fail('unsupported', 'explicit source resource required');
|
|
63
107
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
if (
|
|
79
|
-
return
|
|
108
|
+
const namespaceLocations = new Map();
|
|
109
|
+
for (const location of sources.locations) {
|
|
110
|
+
check();
|
|
111
|
+
if (!location || typeof location.namespace !== 'string' || typeof location.location !== 'string'
|
|
112
|
+
|| Object.keys(location).length !== 2 || namespaceLocations.has(location.namespace))
|
|
113
|
+
return fail('unsupported', 'explicit namespace location required');
|
|
114
|
+
namespaceLocations.set(location.namespace, location.location);
|
|
115
|
+
}
|
|
116
|
+
const prepared = await prepareSchemaSnapshotFiles(options.localSource, sources.resources, { policy: {
|
|
117
|
+
fileRoots: options.fileRoots, allowedOrigins: sources.origins
|
|
118
|
+
}, limits: directLoadingLimits(budget), namespaceLocations, signal, sourceUri: supplied.sourceUri,
|
|
119
|
+
chargeWork: amount => { check(); budget.chargeWork(amount); } });
|
|
120
|
+
const fresh = await reconstructComponentSourceCapsuleInRequest(bytes, prepared.source, { loading: prepared.loading, signal,
|
|
121
|
+
standardLibraries: sources.standards, recordSources: sources.records }, budget);
|
|
122
|
+
if (fresh.kind !== 'reconstructed-component')
|
|
123
|
+
return fresh;
|
|
124
|
+
if (fresh.selection.port !== options.soap.port || fresh.selection.service.namespace !== options.soap.service.namespace
|
|
125
|
+
|| fresh.selection.service.local !== options.soap.service.local)
|
|
126
|
+
return fail('incompatible-artifact', 'explicit source selection mismatch');
|
|
127
|
+
result = fresh.responseProjection ? await exchangeComponentSoap(fresh.contract, fresh.mappings[0], input, supplied.soap, fresh.responseProjection)
|
|
128
|
+
: await exchangeComponentSoap(fresh.contract, fresh.mappings[0], input, supplied.soap);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
80
131
|
const fresh = await reconstructDirectSourceCapsuleInRequest(bytes, options.localSource, { policy: { fileRoots: options.fileRoots }, limits: options.budget, signal: options.soap.signal }, budget);
|
|
81
132
|
if (fresh.kind !== 'reconstructed-direct')
|
|
82
133
|
return fresh;
|
|
@@ -85,28 +136,30 @@ export const directClientRuntime = Object.freeze({
|
|
|
85
136
|
return compatible;
|
|
86
137
|
// Value and byte provenance stay owned
|
|
87
138
|
// by the original adapter; no catch-and-cast turns a failure into typed success.
|
|
88
|
-
|
|
89
|
-
if (!('decoded' in result))
|
|
90
|
-
return result;
|
|
91
|
-
if (options.soap.signal?.aborted)
|
|
92
|
-
return fail('cancelled', 'cooperative-cancellation');
|
|
93
|
-
const common = { value: result.decoded.validated.value, status: result.status, admitted: false,
|
|
94
|
-
responseBytes: result.responseBytes, usage: Object.freeze({ ...budget.usage() }) };
|
|
95
|
-
if (result.kind === 'soap-fault') {
|
|
96
|
-
if (!result.fault)
|
|
97
|
-
throw new TypeError('Missing native declared fault');
|
|
98
|
-
return Object.freeze({ kind: 'soap-fault', ...common, fault: result.fault });
|
|
99
|
-
}
|
|
100
|
-
return Object.freeze({ kind: 'soap-response', ...common });
|
|
139
|
+
result = await exchangeDirectSoap(fresh.contract, fresh.mappings[0], input, options.soap);
|
|
101
140
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
141
|
+
if (!('decoded' in result))
|
|
142
|
+
return result;
|
|
143
|
+
if (options.soap.signal?.aborted)
|
|
144
|
+
return fail('cancelled', 'cooperative-cancellation');
|
|
145
|
+
const common = { value: result.decoded.validated.value, status: result.status, admitted: false,
|
|
146
|
+
responseBytes: result.responseBytes, usage: Object.freeze({ ...budget.usage() }) };
|
|
147
|
+
if (result.kind === 'soap-fault') {
|
|
148
|
+
if (!result.fault)
|
|
149
|
+
throw new TypeError('Missing native declared fault');
|
|
150
|
+
return Object.freeze({ kind: 'soap-fault', ...common, fault: result.fault });
|
|
110
151
|
}
|
|
111
|
-
|
|
112
|
-
}
|
|
152
|
+
return Object.freeze({ kind: 'soap-response', ...common });
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
if (budget.exhausted())
|
|
156
|
+
return fail('resource-limit', 'request-budget');
|
|
157
|
+
if (error instanceof DataOwnershipLimitError)
|
|
158
|
+
return fail('resource-limit', error.message);
|
|
159
|
+
if (options.soap.signal?.aborted)
|
|
160
|
+
return fail('cancelled', 'cooperative-cancellation');
|
|
161
|
+
if (error instanceof SchemaLoadingError)
|
|
162
|
+
return fail(error.category === 'resource-limit' ? 'resource-limit' : 'missing-authority', 'authorized-local-source-required');
|
|
163
|
+
throw error;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
/** Generated injection protocol; independent of package, capsule and scalar-policy versions. */
|
|
2
2
|
export declare const DIRECT_CLIENT_RUNTIME_VERSION: "checked-direct-runtime-v1";
|
|
3
3
|
export declare const DIRECT_CLIENT_RUNTIME_REPAIR = "Regenerate matched direct client and capsule with the installed runtime.";
|
|
4
|
-
|
|
4
|
+
/** Component profile never impersonates the supported direct preview protocol. */
|
|
5
|
+
export declare const COMPONENT_CLIENT_RUNTIME_VERSION: "checked-component-runtime-v2";
|
|
6
|
+
export declare const COMPONENT_CLIENT_RUNTIME_REPAIR = "Regenerate matched component client and source artifacts with the installed runtime.";
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
/** Generated injection protocol; independent of package, capsule and scalar-policy versions. */
|
|
2
2
|
export const DIRECT_CLIENT_RUNTIME_VERSION = 'checked-direct-runtime-v1';
|
|
3
3
|
export const DIRECT_CLIENT_RUNTIME_REPAIR = 'Regenerate matched direct client and capsule with the installed runtime.';
|
|
4
|
+
/** Component profile never impersonates the supported direct preview protocol. */
|
|
5
|
+
export const COMPONENT_CLIENT_RUNTIME_VERSION = 'checked-component-runtime-v2';
|
|
6
|
+
export const COMPONENT_CLIENT_RUNTIME_REPAIR = 'Regenerate matched component client and source artifacts with the installed runtime.';
|
|
@@ -18,4 +18,3 @@ import type { CompiledCatalog } from "../compiler/schemaCompiler.js";
|
|
|
18
18
|
* @throws {Error} If a packaged preamble cannot be loaded or a TypeScript file cannot be written.
|
|
19
19
|
*/
|
|
20
20
|
export declare function generateClient(outFile: string, compiled: CompiledCatalog): void;
|
|
21
|
-
//# sourceMappingURL=generateClient.d.ts.map
|
|
@@ -66,6 +66,18 @@ export function generateClient(outFile, compiled) {
|
|
|
66
66
|
const soapOptions = soapImport("IOptions");
|
|
67
67
|
const soapSecurity = soapImport("ISecurity");
|
|
68
68
|
const soapFactory = soapImport("createClientAsync");
|
|
69
|
+
const soapHttpClient = soapImport("HttpClient");
|
|
70
|
+
const soapExOptions = soapImport("IExOptions");
|
|
71
|
+
const aliases = new Map(compiled.aliases.map(alias => [alias.name, alias.tsType]));
|
|
72
|
+
const scalarTypes = Object.fromEntries(compiled.aliases.flatMap(alias => {
|
|
73
|
+
let type = alias.tsType;
|
|
74
|
+
const visited = new Set([alias.name]);
|
|
75
|
+
while (aliases.has(type) && !visited.has(type)) {
|
|
76
|
+
visited.add(type);
|
|
77
|
+
type = aliases.get(type);
|
|
78
|
+
}
|
|
79
|
+
return ["string", "number", "boolean", "bigint"].includes(type) || type.endsWith("[]") ? [[alias.name, type]] : [];
|
|
80
|
+
}));
|
|
69
81
|
// Track whether any operation opts into streaming, so we can emit the
|
|
70
82
|
// supporting runtime helpers only when they're actually used.
|
|
71
83
|
let anyStream = false;
|
|
@@ -97,12 +109,14 @@ export function generateClient(outFile, compiled) {
|
|
|
97
109
|
* Streams records from the ${m} operation of the ${clientName}.${opDocStr}${secHintsStr}
|
|
98
110
|
*
|
|
99
111
|
* @param args - The request arguments for the ${m} operation.
|
|
112
|
+
* @param options - Optional cancellation signal and total stream deadline in milliseconds.
|
|
100
113
|
* @returns A promise resolving to a streaming response whose \`records\` is an
|
|
101
114
|
* async iterable of ${recordTs} objects parsed from the SOAP body as
|
|
102
115
|
* chunks arrive. Iteration pulls bytes on demand.
|
|
103
116
|
*/
|
|
104
117
|
async ${m}<HeadersType = Record<string, string>>(
|
|
105
|
-
args: ${inTs}
|
|
118
|
+
args: ${inTs},
|
|
119
|
+
options?: StreamCallOptions
|
|
106
120
|
): Promise<StreamOperationResponse<T.${recordTs}, HeadersType>> {
|
|
107
121
|
return this.callStream<${inTs}, T.${recordTs}, HeadersType>(
|
|
108
122
|
args,
|
|
@@ -112,7 +126,8 @@ export function generateClient(outFile, compiled) {
|
|
|
112
126
|
${JSON.stringify(inputElementLocal)},
|
|
113
127
|
${JSON.stringify(inputElementNs)},
|
|
114
128
|
${JSON.stringify(op.soapAction ?? "")},
|
|
115
|
-
${JSON.stringify(op.stream.recordPath)}
|
|
129
|
+
${JSON.stringify(op.stream.recordPath)},
|
|
130
|
+
options
|
|
116
131
|
);
|
|
117
132
|
}`;
|
|
118
133
|
methods.push(methodTemplate);
|
|
@@ -144,7 +159,11 @@ export function generateClient(outFile, compiled) {
|
|
|
144
159
|
// inside this template literal (which would flag `this`, `await`, `yield`
|
|
145
160
|
// outside-of-function false positives).
|
|
146
161
|
const streamMethodsBlock = anyStream
|
|
147
|
-
? "\n" + loadRuntimeSource("clientStreamMethods.tpl.txt")
|
|
162
|
+
? "\n" + loadRuntimeSource("clientStreamMethods.tpl.txt")
|
|
163
|
+
.replaceAll("__SOAP_CLIENT_TYPE__", soapClient.local)
|
|
164
|
+
.replaceAll("__SOAP_HTTP_CLIENT__", soapHttpClient.local)
|
|
165
|
+
.replaceAll("__SOAP_EX_OPTIONS__", soapExOptions.local)
|
|
166
|
+
.replaceAll("__SOAP_SECURITY__", soapSecurity.local)
|
|
148
167
|
: "";
|
|
149
168
|
// noinspection JSFileReferences,JSUnresolvedReference,CommaExpressionJS,JSDuplicatedDeclaration,ReservedWordAsName,JSCommentMatchesSignature,JSValidateTypes,JSIgnoredPromiseFromCall,BadExpressionStatementJS,ES6UnusedImports,JSUnnecessarySemicolon,UnreachableCodeJS,JSUnusedLocalSymbols
|
|
150
169
|
const classTemplate = `// noinspection JSAnnotator
|
|
@@ -153,13 +172,14 @@ export function generateClient(outFile, compiled) {
|
|
|
153
172
|
* Generated ${clientName} client class.
|
|
154
173
|
* This class wraps the node-soap client and provides strongly-typed methods for each operation.
|
|
155
174
|
*/
|
|
156
|
-
import {${soapFactory.specifier}} from "soap";
|
|
157
|
-
import type {${soapClient.specifier}, ${soapOptions.specifier}, ${soapSecurity.specifier}} from "soap";
|
|
175
|
+
import {${soapFactory.specifier}${anyStream ? `, ${soapHttpClient.specifier}` : ""}} from "soap";
|
|
176
|
+
import type {${soapClient.specifier}, ${soapOptions.specifier}, ${soapSecurity.specifier}${anyStream ? `, ${soapExOptions.specifier}` : ""}} from "soap";
|
|
158
177
|
import type * as T from "./types${suffix}";
|
|
159
178
|
import type {${clientName}DataTypes} from "./utils${suffix}";
|
|
160
179
|
import {${clientConstant}_DATA_TYPES} from "./utils${suffix}";${anyStream ? `
|
|
161
180
|
import {parseRecords, type RecordParseSpec} from "./streamXml${suffix}";
|
|
162
|
-
import type {StreamOperationResponse} from "./operations${suffix}"
|
|
181
|
+
import type {StreamOperationResponse, StreamCallOptions} from "./operations${suffix}";
|
|
182
|
+
export type {StreamCallOptions} from "./operations${suffix}";` : ""}
|
|
163
183
|
|
|
164
184
|
/**
|
|
165
185
|
* Represents the response structure for ${clientName} operations.
|
|
@@ -214,6 +234,8 @@ export class ${clientName} {
|
|
|
214
234
|
protected attributesKeyOut: string;
|
|
215
235
|
protected client?: ${soapClient.local};
|
|
216
236
|
protected dataTypes: ${clientName}DataTypes = ${clientConstant}_DATA_TYPES;
|
|
237
|
+
protected scalarTypes: Readonly<Record<string, string>> = ${JSON.stringify(scalarTypes)};
|
|
238
|
+
${anyStream ? ` protected streamRequestOptions: ${soapExOptions.local};\n` : ""}
|
|
217
239
|
|
|
218
240
|
/**
|
|
219
241
|
* Creates a new ${clientName} instance.
|
|
@@ -224,17 +246,20 @@ export class ${clientName} {
|
|
|
224
246
|
* @param [options.security] - Optional SOAP security settings to apply.
|
|
225
247
|
* @param [options.attributesKeyIn] - Key name for input attribute bags (default: "$attributes").
|
|
226
248
|
* @param [options.attributesKeyOut] - Key name for output attribute bags (default: "attributes").
|
|
227
|
-
*/
|
|
249
|
+
${anyStream ? ` * @param [options.streamRequestOptions] - Stream HTTP options such as verified HTTPS agents, separate from WSDL options.\n` : ""} */
|
|
228
250
|
constructor(options: {
|
|
229
251
|
source: string,
|
|
230
252
|
options?: ${soapOptions.local},
|
|
231
253
|
security?: ${soapSecurity.local},
|
|
232
254
|
attributesKeyIn?: string,
|
|
233
|
-
attributesKeyOut?: string
|
|
255
|
+
attributesKeyOut?: string${anyStream ? `,
|
|
256
|
+
/** HTTP request options for stream calls, including HTTPS agents and timeouts; WSDL options stay separate. */
|
|
257
|
+
streamRequestOptions?: ${soapExOptions.local}` : ""}
|
|
234
258
|
}) {
|
|
235
259
|
this.source = options.source;
|
|
236
260
|
this.attributesKeyIn = options.attributesKeyIn ?? "$attributes";
|
|
237
261
|
this.attributesKeyOut = options.attributesKeyOut ?? "attributes";
|
|
262
|
+
${anyStream ? ` this.streamRequestOptions = options.streamRequestOptions ?? {};\n` : ""}
|
|
238
263
|
if (options.options) {
|
|
239
264
|
this.options = options.options;
|
|
240
265
|
}
|
|
@@ -298,14 +323,18 @@ ${methodsBody}
|
|
|
298
323
|
if (err) {
|
|
299
324
|
reject(err);
|
|
300
325
|
} else {
|
|
301
|
-
//
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
326
|
+
// @why Response conversion failures must reject the call rather than escape the asynchronous SOAP callback.
|
|
327
|
+
try {
|
|
328
|
+
const response = this.fromSoapResult(result, responseType);
|
|
329
|
+
resolve({
|
|
330
|
+
response,
|
|
331
|
+
headers: soapHeader || {},
|
|
332
|
+
responseRaw: rawResponse,
|
|
333
|
+
requestRaw: rawRequest
|
|
334
|
+
});
|
|
335
|
+
} catch (error) {
|
|
336
|
+
reject(error);
|
|
337
|
+
}
|
|
309
338
|
}
|
|
310
339
|
});
|
|
311
340
|
});
|
|
@@ -398,16 +427,54 @@ ${methodsBody}
|
|
|
398
427
|
*
|
|
399
428
|
* @param node - The raw SOAP response node.
|
|
400
429
|
* @param typeName - Optional metadata key to guide deserialization.
|
|
430
|
+
* @param nonNillable - Whether parent schema metadata rules out a nil child, permitting empty-object recovery.
|
|
401
431
|
* @returns The deserialized object matching your DTO shape.
|
|
432
|
+
* @throws TypeError for invalid boolean, numeric, or bigint lexical values.
|
|
402
433
|
*/
|
|
403
|
-
protected fromSoapResult(node: any, typeName?: string): any {
|
|
404
|
-
//
|
|
434
|
+
protected fromSoapResult(node: any, typeName?: string, nonNillable = false): any {
|
|
435
|
+
// @why node-soap collapses empty complex elements to null; only a declared non-nillable child permits recovering its object DTO.
|
|
436
|
+
// @constraints Nullable children and unknown/custom metadata retain null, including explicit xsi:nil responses.
|
|
437
|
+
if (node === null && nonNillable && typeName && Object.hasOwn(this.dataTypes.Attributes, typeName)
|
|
438
|
+
&& Object.keys(this.dataTypes.ChildrenTypes[typeName] ?? {}).length === 0) return {};
|
|
405
439
|
if (node == null) {
|
|
406
440
|
return node;
|
|
407
441
|
}
|
|
408
|
-
|
|
442
|
+
if (typeName && Object.hasOwn(this.scalarTypes, typeName)) typeName = this.scalarTypes[typeName];
|
|
443
|
+
if (typeName?.endsWith("[]")) {
|
|
444
|
+
let itemType = typeName.slice(0, -2);
|
|
445
|
+
if (itemType.startsWith("(") && itemType.endsWith(")")) itemType = itemType.slice(1, -1);
|
|
446
|
+
if (typeof node === "string") {
|
|
447
|
+
const lexical = node.replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g, "");
|
|
448
|
+
return lexical === "" ? [] : lexical.split(/[\\t\\r\\n ]+/).map(item => this.fromSoapResult(item, itemType));
|
|
449
|
+
}
|
|
450
|
+
if (Array.isArray(node)) return node.map(item => this.fromSoapResult(item, itemType));
|
|
451
|
+
}
|
|
452
|
+
const childrenTypes: Readonly<Record<string, string>> = (typeName && this.dataTypes?.ChildrenTypes?.[typeName]) || {};
|
|
453
|
+
const attributeTypes: Readonly<Record<string, string>> = (typeName && this.dataTypes?.AttributeTypes?.[typeName]) || {};
|
|
454
|
+
// XML boolean attributes arrive as lexical strings even when element booleans are parsed by node-soap.
|
|
455
|
+
if (typeof node === "string" && typeName === "boolean") {
|
|
456
|
+
const lexical = node.replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g, "");
|
|
457
|
+
if (lexical === "true" || lexical === "1") return true;
|
|
458
|
+
if (lexical === "false" || lexical === "0") return false;
|
|
459
|
+
throw new TypeError("Invalid XML boolean response value");
|
|
460
|
+
}
|
|
461
|
+
if (typeof node === "string" && (typeName === "number" || typeName === "bigint")) {
|
|
462
|
+
const lexical = node.replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g, "");
|
|
463
|
+
if (typeName === "bigint") {
|
|
464
|
+
if (!/^[+-]?\\d+$/.test(lexical)) throw new TypeError("Invalid XML bigint response value");
|
|
465
|
+
return BigInt(lexical);
|
|
466
|
+
}
|
|
467
|
+
if (!/^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/.test(lexical)) {
|
|
468
|
+
throw new TypeError("Invalid XML numeric response value");
|
|
469
|
+
}
|
|
470
|
+
const number = Number(lexical);
|
|
471
|
+
if (!Number.isFinite(number)) throw new TypeError("Non-finite XML numeric response value");
|
|
472
|
+
return number;
|
|
473
|
+
}
|
|
474
|
+
// A simple-content complex type retains its object shape when no attributes are present on the wire.
|
|
409
475
|
if (typeof node !== "object") {
|
|
410
|
-
return
|
|
476
|
+
if (node === "" && typeName && Object.hasOwn(this.dataTypes.Attributes, typeName) && Object.keys(childrenTypes).length === 0) return {};
|
|
477
|
+
return childrenTypes.$value ? {$value: this.fromSoapResult(node, childrenTypes.$value)} : node;
|
|
411
478
|
}
|
|
412
479
|
// Recursively process array elements
|
|
413
480
|
if (Array.isArray(node)) {
|
|
@@ -415,13 +482,13 @@ ${methodsBody}
|
|
|
415
482
|
}
|
|
416
483
|
|
|
417
484
|
// Get child type mapping for recursive processing with correct types
|
|
418
|
-
const childrenTypes: Readonly<Record<string, string>> = (typeName && this.dataTypes?.ChildrenTypes?.[typeName]) || {};
|
|
419
485
|
const repeatedElements: readonly string[] = (typeName && this.dataTypes?.RepeatedElements?.[typeName]) || [];
|
|
486
|
+
const nonNillableElements: readonly string[] = (typeName && this.dataTypes?.NonNillableElements?.[typeName]) || [];
|
|
420
487
|
const result: any = {};
|
|
421
488
|
|
|
422
489
|
// Preserve text content for mixed XML elements
|
|
423
|
-
if ("$value" in node) {
|
|
424
|
-
result.$value = (node
|
|
490
|
+
if ("$value" in node && (childrenTypes.$value || node.$value !== "")) {
|
|
491
|
+
result.$value = this.fromSoapResult(node.$value, childrenTypes.$value);
|
|
425
492
|
}
|
|
426
493
|
|
|
427
494
|
// Extract attributes from various node-soap attribute containers
|
|
@@ -429,7 +496,9 @@ ${methodsBody}
|
|
|
429
496
|
const inAttrNode = (node as any)[this.attributesKeyOut] || (node as any)["attributes"] || (node as any)["$"];
|
|
430
497
|
if (inAttrNode && typeof inAttrNode === "object") {
|
|
431
498
|
// Promote all attributes to top-level properties for easier TS access
|
|
432
|
-
Object.
|
|
499
|
+
for (const [name, value] of Object.entries(inAttrNode)) {
|
|
500
|
+
result[name] = this.fromSoapResult(value, attributeTypes[name]);
|
|
501
|
+
}
|
|
433
502
|
}
|
|
434
503
|
|
|
435
504
|
// Process remaining properties as child elements
|
|
@@ -441,10 +510,11 @@ ${methodsBody}
|
|
|
441
510
|
// Recursively convert child elements with their specific type info
|
|
442
511
|
const childType: string | undefined = childrenTypes[k];
|
|
443
512
|
// node-soap can return a scalar when repetition is declared on a wrapping sequence (#141).
|
|
444
|
-
const
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
513
|
+
const repeated = repeatedElements.includes(k);
|
|
514
|
+
const value = v != null && !Array.isArray(v) && repeated ? [v] : v;
|
|
515
|
+
result[k] = repeated && Array.isArray(value)
|
|
516
|
+
? value.map(node => this.fromSoapResult(node, childType, nonNillableElements.includes(k)))
|
|
517
|
+
: this.fromSoapResult(value, childType, nonNillableElements.includes(k));
|
|
448
518
|
}
|
|
449
519
|
|
|
450
520
|
return result;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ReconstructedDirectSource, DirectCapsuleFailure } from '../compiler/directSourceCapsule.js';
|
|
1
|
+
import type { ReconstructedDirectSource, ReconstructedComponentSource, DirectCapsuleFailure } from '../compiler/directSourceCapsule.js';
|
|
2
2
|
import type { ResolverUsage } from '../compiler/semanticBudget.js';
|
|
3
3
|
export interface GeneratedDirectClient {
|
|
4
4
|
readonly kind: 'generated-direct-client';
|
|
@@ -10,5 +10,23 @@ export interface GeneratedDirectClient {
|
|
|
10
10
|
/** Roles are separate declarations, so equal local names never merge namespace identities. */
|
|
11
11
|
export declare function generateDirectClient(expected: ReconstructedDirectSource, signal?: AbortSignal): GeneratedDirectClient | DirectCapsuleFailure;
|
|
12
12
|
/** Only authentic bounded artifacts may be written; prior semantic failure remains terminal. */
|
|
13
|
-
export declare function writeDirectClient(file: string, generated: GeneratedDirectClient): void;
|
|
14
|
-
|
|
13
|
+
export declare function writeDirectClient(file: string, generated: GeneratedDirectClient | GeneratedComponentClient): void;
|
|
14
|
+
export interface GeneratedComponentClient {
|
|
15
|
+
readonly kind: 'generated-component-client';
|
|
16
|
+
readonly source: string;
|
|
17
|
+
readonly capsule: Uint8Array;
|
|
18
|
+
readonly admitted: false;
|
|
19
|
+
readonly usage: ResolverUsage;
|
|
20
|
+
}
|
|
21
|
+
/** Emit recursive component types and the existing checked runtime injection protocol.
|
|
22
|
+
* @remarks Native reconstruction and mappings remain authoritative; generated TypeScript is a static description.
|
|
23
|
+
* @returns An authentic writable artifact, or explicit refusal. No legacy catalog or saved report is consumed.
|
|
24
|
+
* @throws TypeError For copied/foreign reconstruction handles. Caller cancellation returns a refusal.
|
|
25
|
+
*/
|
|
26
|
+
export declare function generateComponentClient(expected: ReconstructedComponentSource, signal?: AbortSignal): Promise<GeneratedComponentClient | DirectCapsuleFailure>;
|
|
27
|
+
/** Emit a service client index and per-operation native artifacts using the existing component emitter.
|
|
28
|
+
* @remarks All operation artifacts are prepared before writing. The index contains no source authority.
|
|
29
|
+
* @returns Generator-owned relative capsule paths, keyed by exact operation name.
|
|
30
|
+
* @throws For foreign/mixed native operations, refused generation, cancellation or filesystem failure.
|
|
31
|
+
*/
|
|
32
|
+
export declare function writeComponentServiceClient(expected: readonly ReconstructedComponentSource[], directory: string, signal?: AbortSignal, prepared?: readonly GeneratedComponentClient[]): Promise<Readonly<Record<string, string>>>;
|