@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,13 +4,20 @@ import { checkSemanticBudget } from './semanticBudget.js';
|
|
|
4
4
|
import { DataOwnershipLimitError } from './dataOwnership.js';
|
|
5
5
|
import { createHash } from 'node:crypto';
|
|
6
6
|
import { types } from 'node:util';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import { fileURLToPath } from 'node:url';
|
|
7
9
|
import { canonicalJson, parseCatalogJson, CatalogError } from './catalogErrors.js';
|
|
8
10
|
import { createApplicationBudget } from './semanticBudget.js';
|
|
9
|
-
import { inspectDirectOperation, selectDirectOperationInRequest } from './directOperation.js';
|
|
10
|
-
import { createDirectValueMapping, DIRECT_VALUE_VERSION, DIRECT_SCALAR_POLICY } from './directValues.js';
|
|
11
|
-
import { prepareDirectSoapSource, DirectSoapSourceError, DIRECT_SOAP_SOURCE_MAX_BYTES } from './directSoapSource.js';
|
|
11
|
+
import { inspectDirectOperation, selectDirectOperationInRequest, selectComponentOperationInRequest } from './directOperation.js';
|
|
12
|
+
import { createDirectValueMapping, createComponentValueMapping, inspectComponentValueMapping, DIRECT_VALUE_VERSION, DIRECT_SCALAR_POLICY } from './directValues.js';
|
|
13
|
+
import { prepareDirectSoapSource, prepareComponentSoapWsdl, DirectSoapSourceError, DIRECT_SOAP_SOURCE_MAX_BYTES } from './directSoapSource.js';
|
|
14
|
+
import { ComponentSoapPreparation } from './componentSoapPreparation.js';
|
|
15
|
+
import { copyOriginalSchemaResource } from '../loader/schemaInput.js';
|
|
12
16
|
import { SchemaResourceLoader, resolveResourceUri } from '../loader/schemaResources.js';
|
|
13
17
|
import { parseOrderedSyntax, syntaxElements, isXmlNCName, SchemaLoadingError } from '../loader/orderedSyntax.js';
|
|
18
|
+
import { createComponentRecordProjection, inspectComponentRecordProjection } from './componentRecordProjection.js';
|
|
19
|
+
import { acquireStandardSchemaLibrary, SCHEMA_ELEMENT_LIBRARY } from './standardSchemaComponents.js';
|
|
20
|
+
import { parseApplicationGroups } from './applicationGroups.js';
|
|
14
21
|
export const DIRECT_CAPSULE_LIMITS = Object.freeze({ maxBytes: 256 * 1024, sourceBytes: DIRECT_SOAP_SOURCE_MAX_BYTES });
|
|
15
22
|
const versions = Object.freeze({ capsuleFormat: 1, model: 'xsd10-faithful-v1', scope: 'direct-soap11-single-utf8-v1',
|
|
16
23
|
mapping: DIRECT_VALUE_VERSION, scalarPolicy: DIRECT_SCALAR_POLICY, runtimePolicy: 'owned-loopback-http-no-extensions-v1' });
|
|
@@ -52,7 +59,7 @@ function failure(error, budget) {
|
|
|
52
59
|
}
|
|
53
60
|
else
|
|
54
61
|
throw error;
|
|
55
|
-
return Object.freeze({ kind, rule, repair: 'Regenerate matched
|
|
62
|
+
return Object.freeze({ kind, rule, repair: 'Regenerate matched checked direct artifacts from explicitly authorized original WSDL using the checked-direct-v1 pipeline.', usage: Object.freeze({ ...budget.usage() }) });
|
|
56
63
|
}
|
|
57
64
|
function check(budget, signal) {
|
|
58
65
|
checkSemanticBudget(budget);
|
|
@@ -111,7 +118,7 @@ export function readDirectSourceCapsule(bytes, budget, signal) {
|
|
|
111
118
|
return failure(error, budget);
|
|
112
119
|
}
|
|
113
120
|
}
|
|
114
|
-
function
|
|
121
|
+
function capsuleJson(bytes, budget, signal) {
|
|
115
122
|
check(budget, signal);
|
|
116
123
|
if (!types.isUint8Array(bytes) || types.isProxy(bytes))
|
|
117
124
|
return reject('byte-input-required');
|
|
@@ -132,7 +139,10 @@ function read(bytes, budget, signal) {
|
|
|
132
139
|
catch {
|
|
133
140
|
return reject('capsule-utf8');
|
|
134
141
|
}
|
|
135
|
-
|
|
142
|
+
return parseCatalogJson(decoded, { maxBytes: directLimit(budget, DIRECT_CAPSULE_LIMITS.maxBytes), maxDepth: 16 });
|
|
143
|
+
}
|
|
144
|
+
function read(bytes, budget, signal) {
|
|
145
|
+
const parsed = record(capsuleJson(bytes, budget, signal), ['versions', 'source', 'compatibility', 'fingerprint']);
|
|
136
146
|
const actual = record(parsed.versions, Object.keys(versions));
|
|
137
147
|
for (const key of Object.keys(versions))
|
|
138
148
|
if (actual[key] !== versions[key])
|
|
@@ -303,3 +313,415 @@ export function checkDirectSourceCompatibility(expected, contract, selection, si
|
|
|
303
313
|
return failure(error, budget);
|
|
304
314
|
}
|
|
305
315
|
}
|
|
316
|
+
const componentVersions = Object.freeze({ ...versions, scope: 'component-soap11-utf8-graph-v1', mapping: 'component-values-v1',
|
|
317
|
+
runtimePolicy: 'explicit-http-verified-https-transport-v1' });
|
|
318
|
+
const scopedComponentVersions = Object.freeze({ ...componentVersions, scope: 'component-soap11-utf8-graph-v2', mapping: 'component-values-and-record-scope-v1' });
|
|
319
|
+
const componentReconstructions = new WeakMap();
|
|
320
|
+
function componentFailure(error, budget) {
|
|
321
|
+
return Object.freeze({ ...failure(error, budget), repair: 'Regenerate matched component artifacts from explicitly authorized original WSDL and dependencies.' });
|
|
322
|
+
}
|
|
323
|
+
// @constraints Retrieval keys are compared only; artifact paths never initiate I/O. Local relative imports can relocate together.
|
|
324
|
+
function componentResourceKey(source, uri) {
|
|
325
|
+
if (uri === source.root.uri)
|
|
326
|
+
return 'root';
|
|
327
|
+
if (new URL(uri).protocol !== 'file:')
|
|
328
|
+
return 'uri:' + uri;
|
|
329
|
+
return 'file:' + path.relative(path.dirname(fileURLToPath(source.root.uri)), fileURLToPath(uri)).replaceAll('\\', '/');
|
|
330
|
+
}
|
|
331
|
+
function componentResources(contract, signal) {
|
|
332
|
+
const { source, context: { budget } } = inspectDirectOperation(contract);
|
|
333
|
+
const resources = source.resources.map(resource => {
|
|
334
|
+
check(budget, signal);
|
|
335
|
+
const bytes = copyOriginalSchemaResource(source, resource.uri, amount => { check(budget, signal); budget.chargeWork(amount); });
|
|
336
|
+
return { key: componentResourceKey(source, resource.uri), base64: Buffer.from(bytes).toString('base64'), digest: resource.digest };
|
|
337
|
+
}).sort((a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0);
|
|
338
|
+
if (new Set(resources.map(resource => resource.key)).size !== resources.length)
|
|
339
|
+
throw new Stop('unsupported', 'ambiguous-resource-key');
|
|
340
|
+
return resources;
|
|
341
|
+
}
|
|
342
|
+
async function componentDescriptor(contract, selection, signal, responseProjection, preparation, applicationGroups) {
|
|
343
|
+
const { context: { budget }, source } = inspectDirectOperation(contract);
|
|
344
|
+
const tick = () => check(budget, signal);
|
|
345
|
+
tick();
|
|
346
|
+
if (contract.basis !== 'native-component-premises-v1' || contract.correspondence !== 'dated-XSD-2004-components-v1')
|
|
347
|
+
throw new Stop('unsupported', 'component-capsule-version');
|
|
348
|
+
const owned = directDataOwnership(budget).snapshot(selection, tick);
|
|
349
|
+
record(owned, ['service', 'port']);
|
|
350
|
+
name(owned.service);
|
|
351
|
+
ncname(owned.port);
|
|
352
|
+
if (preparation)
|
|
353
|
+
await ComponentSoapPreparation.prototype.prepare.call(preparation, contract, owned, tick);
|
|
354
|
+
else
|
|
355
|
+
await prepareComponentSoapWsdl(contract, owned, tick);
|
|
356
|
+
if (responseProjection)
|
|
357
|
+
inspectComponentRecordProjection(responseProjection, contract);
|
|
358
|
+
const mappings = [];
|
|
359
|
+
const make = (direction) => {
|
|
360
|
+
tick();
|
|
361
|
+
const mapping = direction.kind === 'output' && responseProjection ? responseProjection : createComponentValueMapping(contract, direction, { signal }, applicationGroups);
|
|
362
|
+
if (mapping.kind !== 'component-mapping' && mapping.kind !== 'component-record-projection')
|
|
363
|
+
throw new Stop(mapping.kind === 'resource-limit' || mapping.kind === 'cancelled' ? mapping.kind : 'unsupported', mapping.rule);
|
|
364
|
+
mappings.push(mapping);
|
|
365
|
+
return { element: mapping.root.element.name, message: mapping.root.message, part: mapping.root.part };
|
|
366
|
+
};
|
|
367
|
+
const input = make({ kind: 'input' }), output = make({ kind: 'output' });
|
|
368
|
+
const faults = contract.faults.map(fault => ({ name: fault.name, root: make({ kind: 'fault', name: fault.name }) }));
|
|
369
|
+
const compatibility = { selector: contract.selector, service: owned.service, port: owned.port,
|
|
370
|
+
action: contract.binding.action, input, output, faults };
|
|
371
|
+
let projection = null;
|
|
372
|
+
if (responseProjection) {
|
|
373
|
+
const { companion } = inspectComponentRecordProjection(responseProjection, contract);
|
|
374
|
+
const { context } = inspectDirectOperation(companion);
|
|
375
|
+
projection = { spec: responseProjection.spec, source: { selector: companion.selector, action: companion.binding.action,
|
|
376
|
+
output: { element: companion.output.element.name, message: companion.output.message, part: companion.output.part },
|
|
377
|
+
libraries: context.standardLibraryIds(), resources: componentResources(companion, signal) } };
|
|
378
|
+
}
|
|
379
|
+
const targets = new Set(mappings.flatMap(mapping => mapping.kind === 'component-mapping'
|
|
380
|
+
? (inspectComponentValueMapping(mapping, contract).applicationGroups?.targets ?? []).map(target => target.target) : []));
|
|
381
|
+
const groups = applicationGroups ? parseApplicationGroups(applicationGroups) : undefined;
|
|
382
|
+
const groupPlans = mappings.flatMap(mapping => mapping.kind === 'component-mapping'
|
|
383
|
+
? [inspectComponentValueMapping(mapping, contract).applicationGroups] : []);
|
|
384
|
+
const applicationGroupIdentity = groups ? hash(json({ version: 'application-groups-v1',
|
|
385
|
+
targets: [...new Map(groupPlans.flatMap(plan => plan.targets.map(target => [target.target, target]))).values()].sort((a, b) => a.target.localeCompare(b.target, 'en')),
|
|
386
|
+
records: [...new Map(groupPlans.flatMap(plan => plan.dispositions.map(record => [record.source, record]))).values()].sort((a, b) => a.source.localeCompare(b.source, 'en')) }, budget)) : undefined;
|
|
387
|
+
tick();
|
|
388
|
+
return { compatibility, resources: componentResources(contract, signal), mappings, libraries: inspectDirectOperation(contract).context.standardLibraryIds(), projection,
|
|
389
|
+
...(groups ? { applicationGroups: groups.names === undefined ? {} : { names: groups.names.filter(item => targets.has(item.target)) }, applicationGroupIdentity } : {}) };
|
|
390
|
+
}
|
|
391
|
+
/** Serialize native component provenance as data; no source, mapping or execution authority is serialized.
|
|
392
|
+
* @returns Deterministic original resource bytes and compatibility description, or explicit refusal.
|
|
393
|
+
* @throws TypeError For foreign operation handles. Caller cancellation is returned as a refusal.
|
|
394
|
+
*/
|
|
395
|
+
export async function createComponentSourceCapsule(contract, selection, signal, responseProjection) {
|
|
396
|
+
const { budget } = inspectDirectOperation(contract).context;
|
|
397
|
+
try {
|
|
398
|
+
const { compatibility, resources, libraries, projection } = await componentDescriptor(contract, selection, signal, responseProjection);
|
|
399
|
+
const capsule = componentCapsule({ compatibility, resources, libraries, projection }, budget);
|
|
400
|
+
const serialized = json(capsule, budget) + '\n';
|
|
401
|
+
if (Buffer.byteLength(serialized) > directLimit(budget, DIRECT_CAPSULE_LIMITS.maxBytes))
|
|
402
|
+
throw new Stop('resource-limit', 'capsule-byte-limit');
|
|
403
|
+
check(budget, signal);
|
|
404
|
+
return Object.freeze({ kind: 'component-capsule', bytes: Buffer.from(serialized), admitted: false, usage: Object.freeze({ ...budget.usage() }) });
|
|
405
|
+
}
|
|
406
|
+
catch (error) {
|
|
407
|
+
if (!budget.exhausted() && signal?.aborted)
|
|
408
|
+
return componentFailure(new Stop('cancelled', 'cooperative-cancellation'), budget);
|
|
409
|
+
return componentFailure(error, budget);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
function componentCapsule(derived, budget) {
|
|
413
|
+
const { compatibility, resources, libraries, projection } = derived;
|
|
414
|
+
const extended = libraries.length > 0 || projection !== null;
|
|
415
|
+
const value = { versions: extended ? scopedComponentVersions : componentVersions, resources, compatibility,
|
|
416
|
+
...(extended ? { libraries, projection } : {}), ...(derived.applicationGroups ? { applicationGroups: derived.applicationGroups, applicationGroupIdentity: derived.applicationGroupIdentity } : {}) };
|
|
417
|
+
return { ...value, fingerprint: hash(json(value, budget)) };
|
|
418
|
+
}
|
|
419
|
+
/** Prepare a generator-owned operation once through the same native descriptor used by runtime reconstruction.
|
|
420
|
+
* @param contract Fresh source-owned operation, never a report or copied handle.
|
|
421
|
+
* @param selection Explicit resolved service and port.
|
|
422
|
+
* @param preparation Invocation-owned SOAP metadata reuse.
|
|
423
|
+
* @param signal Caller cancellation.
|
|
424
|
+
* @param responseProjection Optional native companion projection.
|
|
425
|
+
* @returns An authentic reconstruction retaining its exact issued capsule and mappings, or native refusal.
|
|
426
|
+
* @throws TypeError For foreign native operation identities.
|
|
427
|
+
* @constraints Runtime physical-source reconstruction is independent and unchanged.
|
|
428
|
+
*/
|
|
429
|
+
export async function prepareComponentSourceForOperation(contract, selection, preparation, signal, responseProjection, applicationGroups) {
|
|
430
|
+
const { budget } = inspectDirectOperation(contract).context;
|
|
431
|
+
try {
|
|
432
|
+
const derived = await componentDescriptor(contract, selection, signal, responseProjection, preparation, applicationGroups);
|
|
433
|
+
const capsule = componentCapsule(derived, budget);
|
|
434
|
+
if (Buffer.byteLength(json(capsule, budget) + '\n') > directLimit(budget, DIRECT_CAPSULE_LIMITS.maxBytes))
|
|
435
|
+
throw new Stop('resource-limit', 'capsule-byte-limit');
|
|
436
|
+
return issueComponentReconstruction(capsule, contract, derived, signal, responseProjection);
|
|
437
|
+
}
|
|
438
|
+
catch (error) {
|
|
439
|
+
if (!budget.exhausted() && signal?.aborted)
|
|
440
|
+
return componentFailure(new Stop('cancelled', 'cooperative-cancellation'), budget);
|
|
441
|
+
return componentFailure(error, budget);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
/** Copy capsule data retained by an authentic reconstruction without repeating preparation.
|
|
445
|
+
* @param expected Fresh owned reconstruction.
|
|
446
|
+
* @param signal Caller cancellation.
|
|
447
|
+
* @returns Deterministic capsule bytes; the data grants no runtime authority.
|
|
448
|
+
* @throws TypeError For copied or foreign reconstruction identities; cancellation/resource failures propagate.
|
|
449
|
+
*/
|
|
450
|
+
export function componentSourceCapsuleBytes(expected, signal) {
|
|
451
|
+
inspectReconstructedComponentSource(expected);
|
|
452
|
+
const { budget } = inspectDirectOperation(expected.contract).context;
|
|
453
|
+
check(budget, signal);
|
|
454
|
+
return Buffer.from(json(componentReconstructions.get(expected), budget) + '\n');
|
|
455
|
+
}
|
|
456
|
+
function readComponent(bytes, budget, signal) {
|
|
457
|
+
const value = capsuleJson(bytes, budget, signal);
|
|
458
|
+
const extended = !!value && typeof value === 'object' && (Object.hasOwn(value, 'libraries') || Object.hasOwn(value, 'projection'));
|
|
459
|
+
const grouped = !!value && typeof value === 'object' && Object.hasOwn(value, 'applicationGroups');
|
|
460
|
+
const parsed = record(value, [...(extended ? ['versions', 'resources', 'compatibility', 'libraries', 'projection', 'fingerprint']
|
|
461
|
+
: ['versions', 'resources', 'compatibility', 'fingerprint']), ...(grouped ? ['applicationGroups', 'applicationGroupIdentity'] : [])]);
|
|
462
|
+
if (grouped) {
|
|
463
|
+
try {
|
|
464
|
+
parseApplicationGroups(parsed.applicationGroups);
|
|
465
|
+
}
|
|
466
|
+
catch {
|
|
467
|
+
reject('application-group-configuration');
|
|
468
|
+
}
|
|
469
|
+
text(parsed.applicationGroupIdentity);
|
|
470
|
+
if (!/^[a-f0-9]{64}$/.test(parsed.applicationGroupIdentity))
|
|
471
|
+
reject('application-group-identity');
|
|
472
|
+
}
|
|
473
|
+
const expectedVersions = extended ? scopedComponentVersions : componentVersions;
|
|
474
|
+
const actual = record(parsed.versions, Object.keys(expectedVersions));
|
|
475
|
+
for (const key of Object.keys(expectedVersions))
|
|
476
|
+
if (actual[key] !== expectedVersions[key])
|
|
477
|
+
reject('unsupported-version-mode-or-policy');
|
|
478
|
+
validateComponentResources(parsed.resources, budget, signal);
|
|
479
|
+
const root = (value) => { const r = record(value, ['element', 'message', 'part']); name(r.element); name(r.message); ncname(r.part); };
|
|
480
|
+
const selector = (value) => { const s = record(value, ['portType', 'binding', 'operation']); name(s.portType); name(s.binding); ncname(s.operation); };
|
|
481
|
+
if (extended) {
|
|
482
|
+
validateComponentLibraries(parsed.libraries);
|
|
483
|
+
if (parsed.projection !== null) {
|
|
484
|
+
const projection = record(parsed.projection, ['spec', 'source']);
|
|
485
|
+
const spec = record(projection.spec, ['version', 'scope', 'payloadPath', 'recordPath', 'opaqueExclusions']);
|
|
486
|
+
if (spec.version !== 'component-record-scope-v1' || spec.scope !== 'records-with-declared-wrapper-scope')
|
|
487
|
+
reject('unsupported-record-projection');
|
|
488
|
+
const path = (value) => { if (!Array.isArray(value) || !value.length)
|
|
489
|
+
reject('record-projection-path');
|
|
490
|
+
else
|
|
491
|
+
for (const entry of value) {
|
|
492
|
+
check(budget, signal);
|
|
493
|
+
name(entry);
|
|
494
|
+
} };
|
|
495
|
+
path(spec.payloadPath);
|
|
496
|
+
path(spec.recordPath);
|
|
497
|
+
if (!Array.isArray(spec.opaqueExclusions))
|
|
498
|
+
return reject('record-projection-exclusions');
|
|
499
|
+
for (const item of spec.opaqueExclusions) {
|
|
500
|
+
check(budget, signal);
|
|
501
|
+
const exclusion = record(item, ['path', 'reason']);
|
|
502
|
+
path(exclusion.path);
|
|
503
|
+
if (!['standard-schema-metadata', 'wrapper-declaration-universe'].includes(exclusion.reason))
|
|
504
|
+
reject('record-projection-exclusion');
|
|
505
|
+
}
|
|
506
|
+
const source = record(projection.source, ['selector', 'action', 'output', 'libraries', 'resources']);
|
|
507
|
+
selector(source.selector);
|
|
508
|
+
text(source.action);
|
|
509
|
+
root(source.output);
|
|
510
|
+
validateComponentLibraries(source.libraries);
|
|
511
|
+
validateComponentResources(source.resources, budget, signal);
|
|
512
|
+
}
|
|
513
|
+
if (!parsed.libraries.length && parsed.projection === null)
|
|
514
|
+
reject('empty-component-extension');
|
|
515
|
+
}
|
|
516
|
+
const c = record(parsed.compatibility, ['selector', 'service', 'port', 'action', 'input', 'output', 'faults']);
|
|
517
|
+
selector(c.selector);
|
|
518
|
+
name(c.service);
|
|
519
|
+
ncname(c.port);
|
|
520
|
+
text(c.action);
|
|
521
|
+
root(c.input);
|
|
522
|
+
root(c.output);
|
|
523
|
+
if (!Array.isArray(c.faults))
|
|
524
|
+
return reject('faults-required');
|
|
525
|
+
const names = new Set();
|
|
526
|
+
for (const entry of c.faults) {
|
|
527
|
+
check(budget, signal);
|
|
528
|
+
const fault = record(entry, ['name', 'root']);
|
|
529
|
+
ncname(fault.name);
|
|
530
|
+
root(fault.root);
|
|
531
|
+
if (names.has(fault.name))
|
|
532
|
+
reject('duplicate-fault');
|
|
533
|
+
names.add(fault.name);
|
|
534
|
+
}
|
|
535
|
+
text(parsed.fingerprint);
|
|
536
|
+
if (hash(json({ versions: actual, resources: parsed.resources, compatibility: c,
|
|
537
|
+
...(extended ? { libraries: parsed.libraries, projection: parsed.projection } : {}),
|
|
538
|
+
...(grouped ? { applicationGroups: parsed.applicationGroups, applicationGroupIdentity: parsed.applicationGroupIdentity } : {}) }, budget)) !== parsed.fingerprint)
|
|
539
|
+
reject('compatibility-fingerprint');
|
|
540
|
+
check(budget, signal);
|
|
541
|
+
return directDataOwnership(budget).freeze(parsed);
|
|
542
|
+
}
|
|
543
|
+
function validateComponentLibraries(value) {
|
|
544
|
+
if (!Array.isArray(value))
|
|
545
|
+
return reject('component-libraries-required');
|
|
546
|
+
let previous = '';
|
|
547
|
+
for (const id of value) {
|
|
548
|
+
if (typeof id !== 'string' || id !== SCHEMA_ELEMENT_LIBRARY || id <= previous)
|
|
549
|
+
reject('supported-sorted-unique-libraries-required');
|
|
550
|
+
previous = id;
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
function validateComponentResources(value, budget, signal) {
|
|
554
|
+
if (!Array.isArray(value) || !value.length)
|
|
555
|
+
return reject('resources-required');
|
|
556
|
+
let previous = '';
|
|
557
|
+
for (const entry of value) {
|
|
558
|
+
check(budget, signal);
|
|
559
|
+
const resource = record(entry, ['key', 'base64', 'digest']);
|
|
560
|
+
text(resource.key);
|
|
561
|
+
text(resource.base64);
|
|
562
|
+
text(resource.digest);
|
|
563
|
+
if (resource.key <= previous)
|
|
564
|
+
reject('sorted-unique-resources-required');
|
|
565
|
+
previous = resource.key;
|
|
566
|
+
const original = Buffer.from(resource.base64, 'base64');
|
|
567
|
+
if (original.toString('base64') !== resource.base64 || hash(original) !== resource.digest)
|
|
568
|
+
reject('corrupt-source');
|
|
569
|
+
}
|
|
570
|
+
if (!value.some(resource => resource.key === 'root'))
|
|
571
|
+
reject('root-resource-required');
|
|
572
|
+
}
|
|
573
|
+
export async function reconstructComponentSourceCapsule(bytes, localSource, options) {
|
|
574
|
+
return reconstructComponentSourceCapsuleInRequest(bytes, localSource, options, createApplicationBudget(options.limits));
|
|
575
|
+
}
|
|
576
|
+
/** Private runtime seam retaining one sticky request for artifact reading, source qualification and exchange. */
|
|
577
|
+
export async function reconstructComponentSourceCapsuleInRequest(bytes, localSource, options, budget) {
|
|
578
|
+
try {
|
|
579
|
+
const capsule = readComponent(bytes, budget, options.signal);
|
|
580
|
+
const allowed = directDataOwnership(budget).snapshot(options.standardLibraries ?? [], () => check(budget, options.signal));
|
|
581
|
+
if (!Array.isArray(allowed) || allowed.some(id => id !== SCHEMA_ELEMENT_LIBRARY) || new Set(allowed).size !== allowed.length)
|
|
582
|
+
throw new Stop('unsupported', 'explicit-standard-library-permissions');
|
|
583
|
+
const sources = directDataOwnership(budget).snapshot(options.recordSources ?? [], () => check(budget, options.signal));
|
|
584
|
+
if (!Array.isArray(sources))
|
|
585
|
+
throw new Stop('unsupported', 'explicit-record-source-permissions');
|
|
586
|
+
let recordSource;
|
|
587
|
+
const sourceKeys = new Set();
|
|
588
|
+
for (const entry of sources) {
|
|
589
|
+
check(budget, options.signal);
|
|
590
|
+
const supplied = record(entry, ['selector', 'source']);
|
|
591
|
+
text(supplied.source);
|
|
592
|
+
const selector = record(supplied.selector, ['portType', 'binding', 'operation']);
|
|
593
|
+
name(selector.portType);
|
|
594
|
+
name(selector.binding);
|
|
595
|
+
ncname(selector.operation);
|
|
596
|
+
const key = json(selector, budget);
|
|
597
|
+
if (sourceKeys.has(key))
|
|
598
|
+
throw new Stop('unsupported', 'duplicate-record-source-permission');
|
|
599
|
+
sourceKeys.add(key);
|
|
600
|
+
if (key === json(capsule.compatibility.selector, budget))
|
|
601
|
+
recordSource = supplied.source;
|
|
602
|
+
}
|
|
603
|
+
if (capsule.projection && !recordSource)
|
|
604
|
+
throw new Stop('missing-authority', 'explicit-companion-source-required');
|
|
605
|
+
const contract = await selectPinnedComponentSource(capsule.resources, capsule.compatibility.selector, capsule.libraries ?? [], localSource, options, budget, allowed);
|
|
606
|
+
let responseProjection;
|
|
607
|
+
if (capsule.projection) {
|
|
608
|
+
const source = capsule.projection.source;
|
|
609
|
+
const companion = await selectPinnedComponentSource(source.resources, source.selector, source.libraries, recordSource, { ...options, loading: { ...options.loading, sourceUri: undefined } }, budget, allowed);
|
|
610
|
+
const projection = createComponentRecordProjection(contract, companion, capsule.projection.spec, { signal: options.signal });
|
|
611
|
+
if (projection.kind !== 'component-record-projection')
|
|
612
|
+
throw new Stop(projection.kind === 'resource-limit' || projection.kind === 'cancelled'
|
|
613
|
+
? projection.kind : 'incompatible-artifact', projection.rule);
|
|
614
|
+
responseProjection = projection;
|
|
615
|
+
}
|
|
616
|
+
return await reconstructComponentAgainst(capsule, contract, { service: capsule.compatibility.service, port: capsule.compatibility.port }, options.signal, responseProjection);
|
|
617
|
+
}
|
|
618
|
+
catch (error) {
|
|
619
|
+
if (!budget.exhausted() && options.signal?.aborted)
|
|
620
|
+
return componentFailure(new Stop('cancelled', 'cooperative-cancellation'), budget);
|
|
621
|
+
return componentFailure(error, budget);
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
async function selectPinnedComponentSource(resources, selector, libraries, localSource, options, budget, allowed) {
|
|
625
|
+
if (typeof localSource !== 'string' || new URL(resolveResourceUri(localSource)).protocol !== 'file:')
|
|
626
|
+
throw new Stop('missing-authority', 'new-local-file-required');
|
|
627
|
+
if (libraries.some(id => !allowed.includes(id)))
|
|
628
|
+
throw new Stop('missing-authority', 'explicit-standard-component-permission');
|
|
629
|
+
const loader = await SchemaResourceLoader.create({ fileRoots: options.loading.policy.fileRoots }, directLoadingLimits(budget, options.loading.limits), undefined, amount => { check(budget, options.signal); budget.chargeWork(amount); }, options.signal);
|
|
630
|
+
const physical = await loader.fetchResource(localSource), expectedRoot = resources.find(resource => resource.key === 'root');
|
|
631
|
+
if (physical.digest !== expectedRoot.digest || Buffer.from(physical.bytes).toString('base64') !== expectedRoot.base64)
|
|
632
|
+
reject('local-source-changed');
|
|
633
|
+
const offline = options.loading.offlineResources ? new Map(options.loading.offlineResources) : undefined;
|
|
634
|
+
offline?.set(physical.uri, physical);
|
|
635
|
+
const loading = { ...options.loading, ...(offline ? { offlineResources: offline } : {}) };
|
|
636
|
+
const selected = await selectComponentOperationInRequest(loading.sourceUri ?? physical.uri, selector, { loading, signal: options.signal,
|
|
637
|
+
standardLibraries: libraries.map(acquireStandardSchemaLibrary) }, budget);
|
|
638
|
+
if (selected.kind !== 'selected')
|
|
639
|
+
throw new Stop(selected.kind === 'loading-refused' ? 'missing-authority'
|
|
640
|
+
: selected.kind === 'selection-refused' ? 'incompatible-artifact' : selected.kind, selected.rule);
|
|
641
|
+
return selected.contract;
|
|
642
|
+
}
|
|
643
|
+
/** Generator seam: expected bytes are checked against an already fresh, source-owned native operation.
|
|
644
|
+
* @remarks This accepts transient native authority only. Runtime consumers still reconstruct from independently
|
|
645
|
+
* authorized physical files. It permits service-wide generation to reuse one native whole-source qualification.
|
|
646
|
+
*/
|
|
647
|
+
export async function reconstructComponentSourceCapsuleForOperation(bytes, contract, selection, signal, responseProjection) {
|
|
648
|
+
const { budget } = inspectDirectOperation(contract).context;
|
|
649
|
+
try {
|
|
650
|
+
return await reconstructComponentAgainst(readComponent(bytes, budget, signal), contract, selection, signal, responseProjection);
|
|
651
|
+
}
|
|
652
|
+
catch (error) {
|
|
653
|
+
if (!budget.exhausted() && signal?.aborted)
|
|
654
|
+
return componentFailure(new Stop('cancelled', 'cooperative-cancellation'), budget);
|
|
655
|
+
return componentFailure(error, budget);
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
async function reconstructComponentAgainst(capsule, contract, selection, signal, responseProjection) {
|
|
659
|
+
const { budget } = inspectDirectOperation(contract).context;
|
|
660
|
+
let derived;
|
|
661
|
+
try {
|
|
662
|
+
derived = await componentDescriptor(contract, selection, signal, responseProjection, undefined, capsule.applicationGroups);
|
|
663
|
+
}
|
|
664
|
+
catch (error) {
|
|
665
|
+
if (error instanceof TypeError && error.message.startsWith('applicationGroups'))
|
|
666
|
+
return reject('source-application-groups-changed');
|
|
667
|
+
throw error;
|
|
668
|
+
}
|
|
669
|
+
if (json(derived.applicationGroups ?? null, budget) !== json(capsule.applicationGroups ?? null, budget))
|
|
670
|
+
reject('source-application-groups-changed');
|
|
671
|
+
if (derived.applicationGroupIdentity !== capsule.applicationGroupIdentity)
|
|
672
|
+
reject('source-application-groups-changed');
|
|
673
|
+
if (json(derived.resources, budget) !== json(capsule.resources, budget))
|
|
674
|
+
reject('local-source-changed');
|
|
675
|
+
if (json(derived.compatibility, budget) !== json(capsule.compatibility, budget))
|
|
676
|
+
reject('source-contract-changed');
|
|
677
|
+
if (json(derived.libraries, budget) !== json(capsule.libraries ?? [], budget) || json(derived.projection, budget) !== json(capsule.projection ?? null, budget))
|
|
678
|
+
reject('source-projection-changed');
|
|
679
|
+
return issueComponentReconstruction(capsule, contract, derived, signal, responseProjection);
|
|
680
|
+
}
|
|
681
|
+
function issueComponentReconstruction(capsule, contract, derived, signal, responseProjection) {
|
|
682
|
+
const { budget } = inspectDirectOperation(contract).context;
|
|
683
|
+
check(budget, signal);
|
|
684
|
+
const result = Object.freeze({ kind: 'reconstructed-component', contract,
|
|
685
|
+
mappings: Object.freeze(derived.mappings), selection: Object.freeze({ service: derived.compatibility.service, port: derived.compatibility.port }),
|
|
686
|
+
...(responseProjection ? { responseProjection } : {}),
|
|
687
|
+
admitted: false, usage: Object.freeze({ ...budget.usage() }) });
|
|
688
|
+
componentReconstructions.set(result, capsule);
|
|
689
|
+
return result;
|
|
690
|
+
}
|
|
691
|
+
/** Authenticate transient reconstruction identity; saved/copy-shaped reports cannot be consumed by generators. */
|
|
692
|
+
export function inspectReconstructedComponentSource(value) {
|
|
693
|
+
if (!componentReconstructions.has(value))
|
|
694
|
+
throw new TypeError('Freshly reconstructed component source required');
|
|
695
|
+
inspectDirectOperation(value.contract);
|
|
696
|
+
return value;
|
|
697
|
+
}
|
|
698
|
+
/** Group fresh operations for one service without merging source contexts or binding identities.
|
|
699
|
+
* @returns A deterministic operation order over the original native handles.
|
|
700
|
+
* @throws TypeError For foreign handles, duplicate operations, accessors or mixed sources/services/bindings.
|
|
701
|
+
*/
|
|
702
|
+
export function inspectComponentSourceService(values) {
|
|
703
|
+
if (!Array.isArray(values) || types.isProxy(values) || !values.length)
|
|
704
|
+
throw new TypeError('Nonempty native component operations required');
|
|
705
|
+
const keys = Reflect.ownKeys(values);
|
|
706
|
+
if (keys.length !== values.length + 1)
|
|
707
|
+
throw new TypeError('Dense native operation array required');
|
|
708
|
+
const operations = [];
|
|
709
|
+
for (let index = 0; index < values.length; index++) {
|
|
710
|
+
const descriptor = Object.getOwnPropertyDescriptor(values, String(index));
|
|
711
|
+
if (!descriptor || !('value' in descriptor))
|
|
712
|
+
throw new TypeError('Data-only native operation array required');
|
|
713
|
+
operations.push(inspectReconstructedComponentSource(descriptor.value));
|
|
714
|
+
}
|
|
715
|
+
const first = operations[0], { source, context: { budget } } = inspectDirectOperation(first.contract), names = new Set();
|
|
716
|
+
for (const operation of operations) {
|
|
717
|
+
check(budget);
|
|
718
|
+
const inspection = inspectDirectOperation(operation.contract);
|
|
719
|
+
if (inspection.source !== source || inspection.context.budget !== budget
|
|
720
|
+
|| json(operation.selection, budget) !== json(first.selection, budget)
|
|
721
|
+
|| json(operation.contract.selector.binding, budget) !== json(first.contract.selector.binding, budget)
|
|
722
|
+
|| names.has(operation.contract.selector.operation))
|
|
723
|
+
throw new TypeError('One source/service/binding and unique operations required');
|
|
724
|
+
names.add(operation.contract.selector.operation);
|
|
725
|
+
}
|
|
726
|
+
return Object.freeze(operations.sort((a, b) => budget.compareText(a.contract.selector.operation, b.contract.selector.operation)));
|
|
727
|
+
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { DirectMessageRoot, DirectOperationContract } from './directOperation.js';
|
|
2
|
-
import type { ElementNode, Reference } from './canonicalGraph.js';
|
|
2
|
+
import type { AttributeNode, ElementNode, Reference } from './canonicalGraph.js';
|
|
3
3
|
import type { ExpandedName, SyntaxElement, SyntaxSource } from '../loader/orderedSyntax.js';
|
|
4
|
+
import type { DirectProjectionSlot } from './directStructurePlan.js';
|
|
5
|
+
import type { SemanticContext } from './semanticContext.js';
|
|
4
6
|
import type { ResolverUsage } from './semanticBudget.js';
|
|
7
|
+
import type { ProjectionScalarList } from './projectionScalar.js';
|
|
5
8
|
export type DirectDirection = Readonly<{
|
|
6
9
|
kind: 'input' | 'output';
|
|
7
10
|
} | {
|
|
@@ -9,7 +12,7 @@ export type DirectDirection = Readonly<{
|
|
|
9
12
|
name: string;
|
|
10
13
|
}>;
|
|
11
14
|
export interface DirectScalarDuty {
|
|
12
|
-
readonly declaration: ElementNode;
|
|
15
|
+
readonly declaration: ElementNode | AttributeNode;
|
|
13
16
|
readonly type: Reference;
|
|
14
17
|
readonly builtin: ExpandedName;
|
|
15
18
|
readonly lexical: string;
|
|
@@ -17,7 +20,74 @@ export interface DirectScalarDuty {
|
|
|
17
20
|
readonly payloadSource: SyntaxSource;
|
|
18
21
|
readonly payloadPath: string;
|
|
19
22
|
readonly schemaPath: string;
|
|
23
|
+
readonly fixedCanonical?: string;
|
|
24
|
+
readonly retainLexical?: true;
|
|
25
|
+
readonly list?: ProjectionScalarList;
|
|
20
26
|
}
|
|
27
|
+
export type DirectMatchedNode = Readonly<{
|
|
28
|
+
kind: 'unassessed';
|
|
29
|
+
declaration: ElementNode;
|
|
30
|
+
payloadPath: string;
|
|
31
|
+
payload: SyntaxElement;
|
|
32
|
+
} | {
|
|
33
|
+
kind: 'mixed-text';
|
|
34
|
+
declaration: ElementNode;
|
|
35
|
+
payloadPath: string;
|
|
36
|
+
value: string;
|
|
37
|
+
} | {
|
|
38
|
+
kind: 'scalar';
|
|
39
|
+
declaration: ElementNode;
|
|
40
|
+
payloadPath: string;
|
|
41
|
+
operand: number;
|
|
42
|
+
} | {
|
|
43
|
+
kind: 'record';
|
|
44
|
+
declaration: ElementNode;
|
|
45
|
+
payloadPath: string;
|
|
46
|
+
nil?: true;
|
|
47
|
+
keyed?: true;
|
|
48
|
+
namespaceChoices?: readonly string[];
|
|
49
|
+
dynamicDeclarations?: readonly ElementNode[];
|
|
50
|
+
namespaces?: Readonly<Record<string, string>>;
|
|
51
|
+
openAttributes?: readonly import('../loader/orderedSyntax.js').SyntaxAttribute[];
|
|
52
|
+
attributes: readonly Readonly<{
|
|
53
|
+
declaration: AttributeNode;
|
|
54
|
+
operand: number;
|
|
55
|
+
payloadPath: string;
|
|
56
|
+
bag?: true;
|
|
57
|
+
namespaceChoice?: true;
|
|
58
|
+
origin: 'present' | 'schema-default' | 'schema-fixed';
|
|
59
|
+
}>[];
|
|
60
|
+
text?: Extract<DirectMatchedNode, {
|
|
61
|
+
kind: 'scalar';
|
|
62
|
+
}>;
|
|
63
|
+
content?: readonly DirectMatchedNode[];
|
|
64
|
+
slots: readonly Readonly<{
|
|
65
|
+
slot: DirectProjectionSlot;
|
|
66
|
+
items: readonly DirectMatchedNode[];
|
|
67
|
+
}>[];
|
|
68
|
+
}>;
|
|
69
|
+
export type ProjectionStructuralResult = Readonly<{
|
|
70
|
+
kind: 'projection-match';
|
|
71
|
+
scope: 'structure-only';
|
|
72
|
+
scalarValidity: 'unassessed';
|
|
73
|
+
admitted: false;
|
|
74
|
+
root: ElementNode;
|
|
75
|
+
contextId: string;
|
|
76
|
+
tree: DirectMatchedNode;
|
|
77
|
+
occurrences: readonly DirectScalarDuty[];
|
|
78
|
+
usage: ResolverUsage;
|
|
79
|
+
}> | Readonly<{
|
|
80
|
+
kind: 'mismatch' | 'unsupported' | 'cancelled' | 'resource-limit';
|
|
81
|
+
rule: string;
|
|
82
|
+
schemaPath?: string;
|
|
83
|
+
payloadPath?: string;
|
|
84
|
+
usage: ResolverUsage;
|
|
85
|
+
}>;
|
|
86
|
+
export type ProjectionStructuralMatch = Extract<ProjectionStructuralResult, {
|
|
87
|
+
kind: 'projection-match';
|
|
88
|
+
}>;
|
|
89
|
+
/** Native context identity authenticates structure only, never source validity or operation admission. */
|
|
90
|
+
export declare function inspectProjectionStructuralMatch(match: unknown, context: SemanticContext): ProjectionStructuralMatch;
|
|
21
91
|
export type DirectStructuralResult = Readonly<{
|
|
22
92
|
kind: 'structural-match';
|
|
23
93
|
scope: 'structure-only';
|
|
@@ -27,6 +97,7 @@ export type DirectStructuralResult = Readonly<{
|
|
|
27
97
|
contextId: string;
|
|
28
98
|
direction: DirectDirection;
|
|
29
99
|
occurrences: readonly DirectScalarDuty[];
|
|
100
|
+
tree: DirectMatchedNode;
|
|
30
101
|
usage: ResolverUsage;
|
|
31
102
|
}> | Readonly<{
|
|
32
103
|
kind: 'mismatch' | 'unsupported' | 'cancelled' | 'resource-limit';
|
|
@@ -41,11 +112,17 @@ export type DirectStructuralMatch = Extract<DirectStructuralResult, {
|
|
|
41
112
|
/** Identity is checked before any receipt fields; no retrospective authentication. */
|
|
42
113
|
export declare function inspectDirectStructuralMatch(match: unknown, expectedContract: DirectOperationContract): DirectStructuralMatch;
|
|
43
114
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
115
|
+
* Match a data-only ordered XML tree against an actual native projection.
|
|
116
|
+
* @remarks The issued receipt establishes structure only, not source validity, scalar validity or operation admission.
|
|
117
|
+
* @constraints Plain records/arrays only; proxies and accessors are unsupported. No caller payload is frozen.
|
|
118
|
+
* @throws TypeError For malformed data-only trees or unauthenticated contexts.
|
|
119
|
+
* @returns A context-owned structural match or a mismatch, unsupported, cancellation or resource failure.
|
|
47
120
|
*/
|
|
121
|
+
export declare function matchDirectProjection(context: SemanticContext, root: ElementNode, payload: SyntaxElement, options?: Readonly<{
|
|
122
|
+
signal?: AbortSignal;
|
|
123
|
+
flatOnly?: boolean;
|
|
124
|
+
}>): ProjectionStructuralResult;
|
|
125
|
+
/** Operation-owned flat preview wrapper; structured projection matches cannot bypass this gate. */
|
|
48
126
|
export declare function matchDirectOperation(contract: DirectOperationContract, direction: DirectDirection, payload: SyntaxElement, options?: Readonly<{
|
|
49
127
|
signal?: AbortSignal;
|
|
50
128
|
}>): DirectStructuralResult;
|
|
51
|
-
//# sourceMappingURL=directStructure.d.ts.map
|