@techspokes/typescript-wsdl-client 1.1.4 → 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 +81 -35
- package/dist/app/generateApp.d.ts +0 -1
- package/dist/app/generateApp.js +8 -6
- 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 +123 -5
- package/dist/client/checkedDirectRuntime.d.ts +96 -0
- package/dist/client/checkedDirectRuntime.js +43 -0
- package/dist/client/directClientRuntime.d.ts +74 -0
- package/dist/client/directClientRuntime.js +165 -0
- package/dist/client/directClientVersion.d.ts +6 -0
- package/dist/client/directClientVersion.js +6 -0
- package/dist/client/generateClient.d.ts +0 -1
- package/dist/client/generateClient.js +26 -12
- package/dist/client/generateDirectClient.d.ts +32 -0
- package/dist/client/generateDirectClient.js +268 -0
- 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 +6 -0
- package/dist/compiler/buildCanonicalGraph.js +381 -0
- package/dist/compiler/canonicalGraph.d.ts +197 -0
- package/dist/compiler/canonicalGraph.js +37 -0
- package/dist/compiler/catalogErrors.d.ts +17 -0
- package/dist/compiler/catalogErrors.js +86 -0
- package/dist/compiler/catalogProvenance.d.ts +14 -0
- package/dist/compiler/catalogProvenance.js +229 -0
- package/dist/compiler/checkedAssessment.d.ts +90 -0
- package/dist/compiler/checkedAssessment.js +300 -0
- package/dist/compiler/checkedComponentSource.d.ts +16 -0
- package/dist/compiler/checkedComponentSource.js +31 -0
- package/dist/compiler/checkedSourcePreparation.d.ts +72 -0
- package/dist/compiler/checkedSourcePreparation.js +202 -0
- package/dist/compiler/complexTypeContent.d.ts +58 -0
- package/dist/compiler/complexTypeContent.js +558 -0
- 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 +68 -0
- package/dist/compiler/composeCanonicalGraph.js +252 -0
- package/dist/compiler/dataOwnership.d.ts +21 -0
- package/dist/compiler/dataOwnership.js +167 -0
- package/dist/compiler/datatypeValues.d.ts +46 -0
- package/dist/compiler/datatypeValues.js +275 -0
- package/dist/compiler/directCodec.d.ts +116 -0
- package/dist/compiler/directCodec.js +377 -0
- package/dist/compiler/directExecutionPolicy.d.ts +9 -0
- package/dist/compiler/directExecutionPolicy.js +17 -0
- package/dist/compiler/directOperation.d.ts +114 -0
- package/dist/compiler/directOperation.js +373 -0
- package/dist/compiler/directSoap.d.ts +66 -0
- package/dist/compiler/directSoap.js +391 -0
- package/dist/compiler/directSoapSource.d.ts +38 -0
- package/dist/compiler/directSoapSource.js +233 -0
- package/dist/compiler/directSourceCapsule.d.ts +169 -0
- package/dist/compiler/directSourceCapsule.js +727 -0
- package/dist/compiler/directStructure.d.ts +128 -0
- package/dist/compiler/directStructure.js +543 -0
- package/dist/compiler/directStructurePlan.d.ts +149 -0
- package/dist/compiler/directStructurePlan.js +623 -0
- package/dist/compiler/directValues.d.ts +128 -0
- package/dist/compiler/directValues.js +1116 -0
- package/dist/compiler/finiteRe01Construction.d.ts +69 -0
- package/dist/compiler/finiteRe01Construction.js +422 -0
- package/dist/compiler/finiteRe01Verification.d.ts +218 -0
- package/dist/compiler/finiteRe01Verification.js +1217 -0
- package/dist/compiler/generateCatalog.d.ts +0 -1
- package/dist/compiler/graphTraversal.d.ts +10 -0
- package/dist/compiler/graphTraversal.js +37 -0
- package/dist/compiler/hypotheticalScopedIdentity.d.ts +22 -0
- package/dist/compiler/hypotheticalScopedIdentity.js +81 -0
- package/dist/compiler/occurrenceAnalysis.d.ts +66 -0
- package/dist/compiler/occurrenceAnalysis.js +316 -0
- package/dist/compiler/originalSourceMembership.d.ts +5 -0
- package/dist/compiler/originalSourceMembership.js +31 -0
- package/dist/compiler/particleAttribution.d.ts +16 -0
- package/dist/compiler/particleAttribution.js +494 -0
- package/dist/compiler/particleDeclarationConsistency.d.ts +23 -0
- package/dist/compiler/particleDeclarationConsistency.js +206 -0
- package/dist/compiler/particleExtension.d.ts +21 -0
- package/dist/compiler/particleExtension.js +123 -0
- package/dist/compiler/particleLocalAssessment.d.ts +19 -0
- package/dist/compiler/particleLocalAssessment.js +92 -0
- package/dist/compiler/particleRestriction.d.ts +23 -0
- package/dist/compiler/particleRestriction.js +494 -0
- package/dist/compiler/particleSemanticView.d.ts +51 -0
- package/dist/compiler/particleSemanticView.js +310 -0
- package/dist/compiler/particleWildcardRelation.d.ts +87 -0
- package/dist/compiler/particleWildcardRelation.js +143 -0
- 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 +85 -0
- package/dist/compiler/re01CandidateCorrespondence.js +701 -0
- package/dist/compiler/re01TypeProperties.d.ts +70 -0
- package/dist/compiler/re01TypeProperties.js +120 -0
- package/dist/compiler/re01TypePropertyValidation.d.ts +22 -0
- package/dist/compiler/re01TypePropertyValidation.js +161 -0
- package/dist/compiler/resolveCanonicalGraph.d.ts +41 -0
- package/dist/compiler/resolveCanonicalGraph.js +240 -0
- package/dist/compiler/scalarSchemaAssessment.d.ts +424 -0
- package/dist/compiler/scalarSchemaAssessment.js +5198 -0
- package/dist/compiler/schemaAttributeGroupProperties.d.ts +16 -0
- package/dist/compiler/schemaAttributeGroupProperties.js +53 -0
- package/dist/compiler/schemaAttributeProperties.d.ts +9 -0
- package/dist/compiler/schemaAttributeProperties.js +11 -0
- package/dist/compiler/schemaAttributeUses.d.ts +110 -0
- package/dist/compiler/schemaAttributeUses.js +798 -0
- package/dist/compiler/schemaBinaryWordReconstruction.d.ts +9 -0
- package/dist/compiler/schemaBinaryWordReconstruction.js +33 -0
- package/dist/compiler/schemaBuiltinFacets.d.ts +13 -0
- package/dist/compiler/schemaBuiltinFacets.js +51 -0
- package/dist/compiler/schemaCalendarImages.d.ts +7 -0
- package/dist/compiler/schemaCalendarImages.js +204 -0
- package/dist/compiler/schemaCalendarLanguage.d.ts +10 -0
- package/dist/compiler/schemaCalendarLanguage.js +227 -0
- package/dist/compiler/schemaCompiler.d.ts +0 -1
- package/dist/compiler/schemaComponentEquality.d.ts +27 -0
- package/dist/compiler/schemaComponentEquality.js +446 -0
- package/dist/compiler/schemaConstructionAssessment.d.ts +79 -0
- package/dist/compiler/schemaConstructionAssessment.js +745 -0
- package/dist/compiler/schemaDatatypeValues.d.ts +3 -0
- package/dist/compiler/schemaDatatypeValues.js +2 -0
- package/dist/compiler/schemaDecimalLanguage.d.ts +6 -0
- package/dist/compiler/schemaDecimalLanguage.js +102 -0
- package/dist/compiler/schemaDeclarationPrimitives.d.ts +39 -0
- package/dist/compiler/schemaDeclarationPrimitives.js +211 -0
- package/dist/compiler/schemaDocumentSyntax.d.ts +54 -0
- package/dist/compiler/schemaDocumentSyntax.js +294 -0
- package/dist/compiler/schemaDurationLanguage.d.ts +10 -0
- package/dist/compiler/schemaDurationLanguage.js +170 -0
- package/dist/compiler/schemaElementInstance.d.ts +30 -0
- package/dist/compiler/schemaElementInstance.js +45 -0
- package/dist/compiler/schemaElementProperties.d.ts +15 -0
- package/dist/compiler/schemaElementProperties.js +23 -0
- package/dist/compiler/schemaEndpointWordCapacity.d.ts +35 -0
- package/dist/compiler/schemaEndpointWordCapacity.js +39 -0
- package/dist/compiler/schemaExactCalendar.d.ts +72 -0
- package/dist/compiler/schemaExactCalendar.js +264 -0
- package/dist/compiler/schemaFacetAnnotation.d.ts +31 -0
- package/dist/compiler/schemaFacetAnnotation.js +199 -0
- package/dist/compiler/schemaGeneratedScalarShape.d.ts +34 -0
- package/dist/compiler/schemaGeneratedScalarShape.js +178 -0
- package/dist/compiler/schemaIdentityConstraints.d.ts +72 -0
- package/dist/compiler/schemaIdentityConstraints.js +362 -0
- package/dist/compiler/schemaIeeeLanguage.d.ts +42 -0
- package/dist/compiler/schemaIeeeLanguage.js +759 -0
- package/dist/compiler/schemaIntegerImages.d.ts +10 -0
- package/dist/compiler/schemaIntegerImages.js +113 -0
- package/dist/compiler/schemaLexicalPredicates.d.ts +28 -0
- package/dist/compiler/schemaLexicalPredicates.js +63 -0
- package/dist/compiler/schemaNotationProperties.d.ts +31 -0
- package/dist/compiler/schemaNotationProperties.js +84 -0
- package/dist/compiler/schemaNumericImageConditions.d.ts +23 -0
- package/dist/compiler/schemaNumericImageConditions.js +66 -0
- package/dist/compiler/schemaParticleWildcardProperties.d.ts +19 -0
- package/dist/compiler/schemaParticleWildcardProperties.js +43 -0
- package/dist/compiler/schemaPattern.d.ts +1061 -0
- package/dist/compiler/schemaPattern.js +581 -0
- package/dist/compiler/schemaRegularLanguage.d.ts +66 -0
- package/dist/compiler/schemaRegularLanguage.js +1166 -0
- package/dist/compiler/schemaScalarContext.d.ts +85 -0
- package/dist/compiler/schemaScalarContext.js +78 -0
- package/dist/compiler/schemaScalarKernel.d.ts +181 -0
- package/dist/compiler/schemaScalarKernel.js +391 -0
- package/dist/compiler/schemaScalarWitnesses.d.ts +5 -0
- package/dist/compiler/schemaScalarWitnesses.js +118 -0
- package/dist/compiler/schemaSimpleTypeProperties.d.ts +94 -0
- package/dist/compiler/schemaSimpleTypeProperties.js +103 -0
- package/dist/compiler/schemaSourceGrammar.d.ts +26 -0
- package/dist/compiler/schemaSourceGrammar.js +290 -0
- package/dist/compiler/schemaSourceLexical.d.ts +3 -0
- package/dist/compiler/schemaSourceLexical.js +12 -0
- package/dist/compiler/schemaSourceValues.d.ts +50 -0
- package/dist/compiler/schemaSourceValues.js +225 -0
- package/dist/compiler/schemaSourceWildcards.d.ts +27 -0
- package/dist/compiler/schemaSourceWildcards.js +249 -0
- package/dist/compiler/schemaSymbolicSequences.d.ts +15 -0
- package/dist/compiler/schemaSymbolicSequences.js +99 -0
- package/dist/compiler/schemaSymbolicValueSets.d.ts +31 -0
- package/dist/compiler/schemaSymbolicValueSets.js +149 -0
- package/dist/compiler/schemaSyntaxAssessment.d.ts +24 -0
- package/dist/compiler/schemaSyntaxAssessment.js +361 -0
- package/dist/compiler/schemaTemporalAliases.d.ts +5 -0
- package/dist/compiler/schemaTemporalAliases.js +195 -0
- package/dist/compiler/schemaTokenImages.d.ts +8 -0
- package/dist/compiler/schemaTokenImages.js +142 -0
- package/dist/compiler/schemaTypeIdentity.d.ts +38 -0
- package/dist/compiler/schemaTypeIdentity.js +80 -0
- package/dist/compiler/schemaTypeRelations.d.ts +37 -0
- package/dist/compiler/schemaTypeRelations.js +576 -0
- package/dist/compiler/schemaUri.d.ts +12 -0
- package/dist/compiler/schemaUri.js +103 -0
- package/dist/compiler/schemaValueContext.d.ts +25 -0
- package/dist/compiler/schemaValueContext.js +1 -0
- package/dist/compiler/schemaValueImages.d.ts +9 -0
- package/dist/compiler/schemaValueImages.js +142 -0
- package/dist/compiler/schemaValueSequences.d.ts +14 -0
- package/dist/compiler/schemaValueSequences.js +19 -0
- package/dist/compiler/semanticBudget.d.ts +67 -0
- package/dist/compiler/semanticBudget.js +193 -0
- package/dist/compiler/semanticCatalog.d.ts +121 -0
- package/dist/compiler/semanticCatalog.js +160 -0
- package/dist/compiler/semanticContext.d.ts +183 -0
- package/dist/compiler/semanticContext.js +1207 -0
- package/dist/compiler/semanticTypeDependencies.d.ts +7 -0
- package/dist/compiler/semanticTypeDependencies.js +64 -0
- package/dist/compiler/semanticTypeReference.d.ts +23 -0
- package/dist/compiler/semanticTypeReference.js +36 -0
- package/dist/compiler/shapeResolver.d.ts +1 -1
- package/dist/compiler/shapeResolver.js +7 -9
- package/dist/compiler/soapHeaders.d.ts +16 -0
- package/dist/compiler/soapHeaders.js +42 -0
- package/dist/compiler/sourceSchemaBinding.d.ts +25 -0
- package/dist/compiler/sourceSchemaBinding.js +39 -0
- 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 +15 -0
- package/dist/compiler/structuralCompanions.js +232 -0
- package/dist/compiler/validateSemanticGraph.d.ts +4 -0
- package/dist/compiler/validateSemanticGraph.js +376 -0
- package/dist/compiler/wildcardAlgebra.d.ts +25 -0
- package/dist/compiler/wildcardAlgebra.js +155 -0
- 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/generateGateway.js +2 -2
- 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 +9 -1
- package/dist/index.js +3 -0
- package/dist/loader/fetch.d.ts +0 -1
- package/dist/loader/orderedSyntax.d.ts +84 -0
- package/dist/loader/orderedSyntax.js +222 -0
- package/dist/loader/resolutionDepth.d.ts +6 -0
- package/dist/loader/resolutionDepth.js +65 -0
- package/dist/loader/schemaInput.d.ts +80 -0
- package/dist/loader/schemaInput.js +249 -0
- package/dist/loader/schemaResources.d.ts +60 -0
- package/dist/loader/schemaResources.js +333 -0
- 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/generateOpenAPI.js +2 -2
- 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/generateTests.js +2 -2
- 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 +2 -0
- package/dist/util/xmlWhitespace.js +4 -0
- 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 +43 -1
- package/docs/concepts.md +136 -1
- package/docs/configuration.md +5 -1
- package/docs/corpus.md +33 -0
- package/docs/direct-values.md +311 -0
- 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 +17 -5
- package/docs/testing.md +117 -31
- package/llms.txt +7 -7
- package/package.json +79 -25
- package/src/generation/preambles/direct-client/typescript.preamble +3 -0
- 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/generateClient.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/generateCatalog.d.ts.map +0 -1
- package/dist/compiler/schemaCompiler.d.ts.map +0 -1
- package/dist/compiler/shapeResolver.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/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/xsd/primitives.d.ts.map +0 -1
- package/docs/AGENTS.md +0 -47
- package/docs/README.md +0 -56
- package/docs/architecture.md +0 -149
- package/docs/decisions/001-test-generation.md +0 -36
- package/docs/decisions/002-streamable-responses.md +0 -330
- package/docs/file-naming-and-path-organization.md +0 -213
- 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/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
|
@@ -0,0 +1,494 @@
|
|
|
1
|
+
import { assertSemanticParticleView } from './particleSemanticView.js';
|
|
2
|
+
import { effectiveSubstitutionMembers } from './schemaTypeRelations.js';
|
|
3
|
+
import { namespaceAllows } from './wildcardAlgebra.js';
|
|
4
|
+
import { SemanticError } from './resolveCanonicalGraph.js';
|
|
5
|
+
import { occurrenceAlgebra } from './occurrenceAnalysis.js';
|
|
6
|
+
import { collectSemanticTypeDependencies } from './semanticTypeDependencies.js';
|
|
7
|
+
class Incomplete extends Error {
|
|
8
|
+
result;
|
|
9
|
+
constructor(result) {
|
|
10
|
+
super(result.kind);
|
|
11
|
+
this.result = result;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/** Counted iteration preserves each leaf incidence tag; shared child edges remain distinct. */
|
|
15
|
+
export function checkParticleAttribution(context, view) {
|
|
16
|
+
assertSemanticParticleView(context, view);
|
|
17
|
+
const budget = context.budget, charge = (n = 1) => budget.chargeWork(n);
|
|
18
|
+
return budget.guard(() => {
|
|
19
|
+
const typeDependencies = collectSemanticTypeDependencies(context);
|
|
20
|
+
typeDependencies.add(view.typeDependencies);
|
|
21
|
+
const unresolved = (component, message) => {
|
|
22
|
+
charge(10 + component.length + message.length);
|
|
23
|
+
throw new Incomplete(Object.freeze({ kind: 'unresolved', rule: 'cos-nonambig', component, message }));
|
|
24
|
+
};
|
|
25
|
+
const done = (value, component) => {
|
|
26
|
+
charge(12);
|
|
27
|
+
return Object.freeze({ kind: 'checked', value, rule: 'cos-nonambig', contextId: context.contextId,
|
|
28
|
+
component, obligations: Object.freeze(['component-validity']), typeDependencies: typeDependencies.snapshot() });
|
|
29
|
+
};
|
|
30
|
+
try {
|
|
31
|
+
charge(24);
|
|
32
|
+
if (view.purpose !== 'declared')
|
|
33
|
+
return unresolved(view.root.source, 'Declared view required for attribution');
|
|
34
|
+
const algebra = occurrenceAlgebra(charge);
|
|
35
|
+
const leaves = [];
|
|
36
|
+
const position = (particle) => {
|
|
37
|
+
charge(6);
|
|
38
|
+
const value = { particle, children: [], tag: -1 };
|
|
39
|
+
if (particle.kind === 'element' || particle.kind === 'any') {
|
|
40
|
+
charge();
|
|
41
|
+
value.tag = leaves.length;
|
|
42
|
+
leaves.push(value);
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
45
|
+
};
|
|
46
|
+
const root = position(view.root);
|
|
47
|
+
charge(3);
|
|
48
|
+
const expansion = [{ position: root, index: 0 }];
|
|
49
|
+
while (expansion.length) {
|
|
50
|
+
charge(3);
|
|
51
|
+
const frame = expansion[expansion.length - 1];
|
|
52
|
+
if (frame.index === frame.position.particle.children.length) {
|
|
53
|
+
expansion.pop();
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
const child = position(frame.position.particle.children[frame.index++]);
|
|
57
|
+
charge(4);
|
|
58
|
+
frame.position.children.push(child);
|
|
59
|
+
expansion.push({ position: child, index: 0 });
|
|
60
|
+
}
|
|
61
|
+
charge(5);
|
|
62
|
+
const namespaces = new Set(), nameKeys = new Set(), tokens = [{ namespace: undefined }], labels = [];
|
|
63
|
+
const addName = (name) => {
|
|
64
|
+
charge(20 + 6 * (name.namespace.length + name.local.length));
|
|
65
|
+
const key = JSON.stringify([name.namespace, name.local]);
|
|
66
|
+
namespaces.add(name.namespace);
|
|
67
|
+
if (!nameKeys.has(key)) {
|
|
68
|
+
charge(4);
|
|
69
|
+
nameKeys.add(key);
|
|
70
|
+
tokens.push({ namespace: name.namespace, local: name.local });
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
for (const leaf of leaves) {
|
|
74
|
+
charge(6);
|
|
75
|
+
const p = leaf.particle, names = [];
|
|
76
|
+
let wildcard;
|
|
77
|
+
if (p.wildcard) {
|
|
78
|
+
wildcard = p.wildcard.namespace;
|
|
79
|
+
for (const ns of wildcard.namespaces) {
|
|
80
|
+
charge(2 + ns.length);
|
|
81
|
+
namespaces.add(ns);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else if (p.standardElement) {
|
|
85
|
+
// Fixed acquired declarations block substitution; their dependency is
|
|
86
|
+
// checked separately by native standard-component construction.
|
|
87
|
+
charge(3);
|
|
88
|
+
names.push(p.standardElement.name);
|
|
89
|
+
addName(p.standardElement.name);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
const element = p.element;
|
|
93
|
+
if (element.identity.kind === 'global') {
|
|
94
|
+
if (context.membership !== 'complete-actual-plus-additions')
|
|
95
|
+
return unresolved(p.source, 'Complete substitution universe required');
|
|
96
|
+
const members = effectiveSubstitutionMembers(context, element.id);
|
|
97
|
+
if (members.kind !== 'checked')
|
|
98
|
+
throw new Incomplete(members);
|
|
99
|
+
typeDependencies.add(members.typeDependencies);
|
|
100
|
+
for (const id of members.value) {
|
|
101
|
+
const found = context.lookup(id);
|
|
102
|
+
if (found.kind !== 'found' || found.node.kind !== 'element')
|
|
103
|
+
return unresolved(id, 'Substitution member unavailable');
|
|
104
|
+
charge();
|
|
105
|
+
names.push(found.node.name);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else if (!element.abstract) {
|
|
109
|
+
charge();
|
|
110
|
+
names.push(element.name);
|
|
111
|
+
}
|
|
112
|
+
for (const name of names)
|
|
113
|
+
addName(name);
|
|
114
|
+
}
|
|
115
|
+
charge(5);
|
|
116
|
+
labels.push({ position: leaf, names, wildcard, tokens: [] });
|
|
117
|
+
}
|
|
118
|
+
for (const namespace of namespaces) {
|
|
119
|
+
charge(3);
|
|
120
|
+
tokens.push({ namespace });
|
|
121
|
+
}
|
|
122
|
+
for (const label of labels)
|
|
123
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
124
|
+
charge(3);
|
|
125
|
+
const token = tokens[i];
|
|
126
|
+
let accepts = false;
|
|
127
|
+
if (label.wildcard)
|
|
128
|
+
accepts = token.namespace === undefined ? label.wildcard.kind === 'not' : namespaceAllows(label.wildcard, token.namespace, charge);
|
|
129
|
+
else if (token.namespace !== undefined && token.local !== undefined)
|
|
130
|
+
for (const name of label.names) {
|
|
131
|
+
charge(4 + name.namespace.length + name.local.length + token.namespace.length + token.local.length);
|
|
132
|
+
if (name.namespace === token.namespace && name.local === token.local) {
|
|
133
|
+
accepts = true;
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (accepts) {
|
|
138
|
+
charge();
|
|
139
|
+
label.tokens.push(i);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const counters = [], facts = new Map();
|
|
143
|
+
charge(3);
|
|
144
|
+
const postorder = [{ p: root, visited: false }];
|
|
145
|
+
while (postorder.length) {
|
|
146
|
+
charge(4);
|
|
147
|
+
const frame = postorder.pop();
|
|
148
|
+
if (!frame.visited) {
|
|
149
|
+
charge(3 + frame.p.children.length * 3);
|
|
150
|
+
postorder.push({ p: frame.p, visited: true });
|
|
151
|
+
for (const child of frame.p.children)
|
|
152
|
+
postorder.push({ p: child, visited: false });
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
const p = frame.p, min = algebra.count(p.particle.occurs.min);
|
|
156
|
+
const max = p.particle.occurs.max === 'unbounded' ? undefined : algebra.count(p.particle.occurs.max);
|
|
157
|
+
charge(8);
|
|
158
|
+
const counter = counters.length;
|
|
159
|
+
counters.push({ min, max, digits: Math.max(p.particle.occurs.min.length, max === undefined ? 1 : p.particle.occurs.max.length) });
|
|
160
|
+
facts.set(p, { counter });
|
|
161
|
+
}
|
|
162
|
+
// @why Disjoint full alphabet quotients admit at most one leaf incidence for any next QName, independently of counter reachability.
|
|
163
|
+
charge(2);
|
|
164
|
+
const attributedTokens = new Set();
|
|
165
|
+
let disjoint = true;
|
|
166
|
+
for (const label of labels)
|
|
167
|
+
for (const token of label.tokens) {
|
|
168
|
+
charge(3);
|
|
169
|
+
if (attributedTokens.has(token))
|
|
170
|
+
disjoint = false;
|
|
171
|
+
attributedTokens.add(token);
|
|
172
|
+
}
|
|
173
|
+
if (disjoint)
|
|
174
|
+
return done(true);
|
|
175
|
+
charge(2);
|
|
176
|
+
const states = [];
|
|
177
|
+
const state = () => { charge(7); const id = states.length; states.push({ epsilon: [], consuming: [] }); return id; };
|
|
178
|
+
const epsilon = (from, to, counter, op) => {
|
|
179
|
+
charge(5);
|
|
180
|
+
states[from].epsilon.push({ to, counter, op });
|
|
181
|
+
};
|
|
182
|
+
const edge = (from, to, label) => {
|
|
183
|
+
if (!label.tokens.length)
|
|
184
|
+
return;
|
|
185
|
+
charge(5);
|
|
186
|
+
states[from].consuming.push({ to, label });
|
|
187
|
+
};
|
|
188
|
+
function* compile(request) {
|
|
189
|
+
charge(8);
|
|
190
|
+
const { p, term } = request, particle = p.particle, properties = facts.get(p);
|
|
191
|
+
if (!term) {
|
|
192
|
+
const start = state(), gate = state(), end = state();
|
|
193
|
+
const part = yield { p, term: true };
|
|
194
|
+
epsilon(start, gate, properties.counter, 'reset');
|
|
195
|
+
epsilon(gate, end, properties.counter, 'exit');
|
|
196
|
+
epsilon(gate, part.start, properties.counter, 'enter');
|
|
197
|
+
epsilon(part.end, gate, properties.counter, 'advance');
|
|
198
|
+
if (p.tag >= 0) {
|
|
199
|
+
// This direct loop is the sole acceleration authority. Between
|
|
200
|
+
// consuming its nonnullable leaf and re-entering it, only this
|
|
201
|
+
// counter advances; below min no exit/enclosing action is enabled.
|
|
202
|
+
charge(2);
|
|
203
|
+
states[part.start].leafCounter = properties.counter;
|
|
204
|
+
counters[properties.counter].leaf = part.start;
|
|
205
|
+
}
|
|
206
|
+
charge(3);
|
|
207
|
+
return { start, end };
|
|
208
|
+
}
|
|
209
|
+
const start = state(), end = state();
|
|
210
|
+
if (particle.kind === 'element' || particle.kind === 'any')
|
|
211
|
+
edge(start, end, labels[p.tag]);
|
|
212
|
+
else if (particle.kind === 'sequence') {
|
|
213
|
+
let tail = start;
|
|
214
|
+
for (let i = 0; i < p.children.length; i++) {
|
|
215
|
+
charge(3);
|
|
216
|
+
const part = yield { p: p.children[i], term: false };
|
|
217
|
+
epsilon(tail, part.start);
|
|
218
|
+
tail = part.end;
|
|
219
|
+
}
|
|
220
|
+
epsilon(tail, end);
|
|
221
|
+
}
|
|
222
|
+
else if (particle.kind === 'choice') {
|
|
223
|
+
for (const child of p.children) {
|
|
224
|
+
charge(3);
|
|
225
|
+
const part = yield { p: child, term: false };
|
|
226
|
+
epsilon(start, part.start);
|
|
227
|
+
epsilon(part.end, end);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
charge(4);
|
|
232
|
+
let required = 0n;
|
|
233
|
+
const queue = [0n], masks = new Map([[0n, start]]);
|
|
234
|
+
for (let i = 0; i < p.children.length; i++) {
|
|
235
|
+
const child = p.children[i].particle;
|
|
236
|
+
charge(5 + p.children.length);
|
|
237
|
+
if (child.kind !== 'element' || !['0', '1'].includes(child.occurs.min) || child.occurs.max !== '1')
|
|
238
|
+
return unresolved(child.source, 'All placement must be checked before attribution');
|
|
239
|
+
if (child.occurs.min === '1')
|
|
240
|
+
required |= 1n << BigInt(i);
|
|
241
|
+
}
|
|
242
|
+
for (let q = 0; q < queue.length; q++) {
|
|
243
|
+
charge(3 + p.children.length);
|
|
244
|
+
const mask = queue[q], from = masks.get(mask);
|
|
245
|
+
if ((mask & required) === required)
|
|
246
|
+
epsilon(from, end);
|
|
247
|
+
for (let i = 0; i < p.children.length; i++) {
|
|
248
|
+
charge(6 + p.children.length);
|
|
249
|
+
const bit = 1n << BigInt(i);
|
|
250
|
+
if (mask & bit)
|
|
251
|
+
continue;
|
|
252
|
+
const next = mask | bit;
|
|
253
|
+
let to = masks.get(next);
|
|
254
|
+
if (to === undefined) {
|
|
255
|
+
charge(3);
|
|
256
|
+
to = state();
|
|
257
|
+
masks.set(next, to);
|
|
258
|
+
queue.push(next);
|
|
259
|
+
}
|
|
260
|
+
edge(from, to, labels[p.children[i].tag]);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
charge(3);
|
|
265
|
+
return { start, end };
|
|
266
|
+
}
|
|
267
|
+
charge(5);
|
|
268
|
+
const stack = [{ iterator: compile({ p: root, term: false }), reply: { start: 0, end: 0 } }];
|
|
269
|
+
let automaton;
|
|
270
|
+
while (stack.length) {
|
|
271
|
+
charge(4);
|
|
272
|
+
const top = stack[stack.length - 1], result = top.iterator.next(top.reply);
|
|
273
|
+
if (result.done) {
|
|
274
|
+
stack.pop();
|
|
275
|
+
if (!stack.length) {
|
|
276
|
+
automaton = result.value;
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
stack[stack.length - 1].reply = result.value;
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
charge(5);
|
|
283
|
+
stack.push({ iterator: compile(result.value), reply: { start: 0, end: 0 } });
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (!automaton)
|
|
287
|
+
throw Error('Attribution automaton has no root');
|
|
288
|
+
const configurationKey = (config) => {
|
|
289
|
+
charge(25 + config.values.length);
|
|
290
|
+
const parts = [String(config.state)];
|
|
291
|
+
let length = parts[0].length;
|
|
292
|
+
for (let i = 0; i < config.values.length; i++) {
|
|
293
|
+
const digits = counters[i].digits + 1;
|
|
294
|
+
charge(6 + digits * digits * 2);
|
|
295
|
+
const text = config.values[i].toString();
|
|
296
|
+
charge();
|
|
297
|
+
parts.push(text);
|
|
298
|
+
length += text.length + 1;
|
|
299
|
+
}
|
|
300
|
+
charge(1 + length);
|
|
301
|
+
return parts.join(',');
|
|
302
|
+
};
|
|
303
|
+
const setCounter = (config, state, counter, value) => {
|
|
304
|
+
charge(4 + config.values.length);
|
|
305
|
+
const values = [...config.values];
|
|
306
|
+
values[counter] = value;
|
|
307
|
+
return { state, values };
|
|
308
|
+
};
|
|
309
|
+
const closure = (initial, epochs) => {
|
|
310
|
+
charge(3);
|
|
311
|
+
const seen = new Map(), pending = [];
|
|
312
|
+
for (const config of initial) {
|
|
313
|
+
charge();
|
|
314
|
+
pending.push(config);
|
|
315
|
+
}
|
|
316
|
+
while (pending.length) {
|
|
317
|
+
charge(3);
|
|
318
|
+
const config = pending.pop(), key = configurationKey(config);
|
|
319
|
+
if (seen.has(key))
|
|
320
|
+
continue;
|
|
321
|
+
charge();
|
|
322
|
+
seen.set(key, config);
|
|
323
|
+
for (const transition of states[config.state].epsilon) {
|
|
324
|
+
charge(5);
|
|
325
|
+
let next;
|
|
326
|
+
if (transition.counter === undefined) {
|
|
327
|
+
charge(2);
|
|
328
|
+
next = { state: transition.to, values: config.values };
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
const index = transition.counter, range = counters[index], value = config.values[index];
|
|
332
|
+
charge(8 + range.digits * 4);
|
|
333
|
+
if (transition.op === 'enter') {
|
|
334
|
+
if (range.max !== undefined && value >= range.max)
|
|
335
|
+
continue;
|
|
336
|
+
charge(2);
|
|
337
|
+
next = { state: transition.to, values: config.values };
|
|
338
|
+
}
|
|
339
|
+
else if (transition.op === 'exit') {
|
|
340
|
+
if (value < range.min)
|
|
341
|
+
continue;
|
|
342
|
+
if (epochs) {
|
|
343
|
+
charge();
|
|
344
|
+
epochs[index]++;
|
|
345
|
+
}
|
|
346
|
+
next = setCounter(config, transition.to, index, -1n);
|
|
347
|
+
}
|
|
348
|
+
else if (transition.op === 'reset') {
|
|
349
|
+
if (epochs) {
|
|
350
|
+
charge();
|
|
351
|
+
epochs[index]++;
|
|
352
|
+
}
|
|
353
|
+
next = setCounter(config, transition.to, index, 0n);
|
|
354
|
+
}
|
|
355
|
+
else
|
|
356
|
+
next = setCounter(config, transition.to, index, range.max === undefined && value >= range.min ? range.min : value + 1n);
|
|
357
|
+
}
|
|
358
|
+
charge();
|
|
359
|
+
pending.push(next);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
charge(1 + seen.size);
|
|
363
|
+
const keys = budget.sorted([...seen.keys()], budget.compareText);
|
|
364
|
+
charge(keys.length);
|
|
365
|
+
return keys.map(key => seen.get(key));
|
|
366
|
+
};
|
|
367
|
+
const subsetKey = (configs) => {
|
|
368
|
+
charge(2 + configs.length);
|
|
369
|
+
const parts = [];
|
|
370
|
+
let length = 0;
|
|
371
|
+
for (const config of configs) {
|
|
372
|
+
const key = configurationKey(config);
|
|
373
|
+
charge(3);
|
|
374
|
+
parts.push(key);
|
|
375
|
+
length += key.length + 1;
|
|
376
|
+
}
|
|
377
|
+
charge(1 + length);
|
|
378
|
+
return parts.join(';');
|
|
379
|
+
};
|
|
380
|
+
charge(4 + counters.length);
|
|
381
|
+
const first = closure([{ state: automaton.start, values: new Array(counters.length).fill(-1n) }]);
|
|
382
|
+
charge(4 + counters.length);
|
|
383
|
+
const seen = new Set([subsetKey(first)]), pending = [{ subset: first, trajectory: { history: new Map(), epochs: new Array(counters.length).fill(0) } }];
|
|
384
|
+
for (let cursor = 0; cursor < pending.length; cursor++) {
|
|
385
|
+
charge(3);
|
|
386
|
+
let subset = pending[cursor].subset, trajectory = pending[cursor].trajectory;
|
|
387
|
+
let single, consuming = 0;
|
|
388
|
+
for (const config of subset)
|
|
389
|
+
if (states[config.state].consuming.length) {
|
|
390
|
+
charge(2);
|
|
391
|
+
consuming++;
|
|
392
|
+
single = config;
|
|
393
|
+
}
|
|
394
|
+
if (consuming === 1 && single && states[single.state].leafCounter !== undefined && states[single.state].consuming.length === 1) {
|
|
395
|
+
const direct = states[single.state].leafCounter;
|
|
396
|
+
const previous = trajectory.history.get(single.state);
|
|
397
|
+
let accelerated;
|
|
398
|
+
if (direct !== undefined && counters[direct].leaf === single.state) {
|
|
399
|
+
const range = counters[direct], value = single.values[direct];
|
|
400
|
+
charge(8 + range.digits * 4);
|
|
401
|
+
if (value < range.min - 1n)
|
|
402
|
+
accelerated = setCounter(single, single.state, direct, range.min - 1n);
|
|
403
|
+
}
|
|
404
|
+
if (!accelerated && previous) {
|
|
405
|
+
let changed = -1, eligible = true;
|
|
406
|
+
for (let i = 0; i < counters.length; i++) {
|
|
407
|
+
charge(5 + counters[i].digits * 3);
|
|
408
|
+
if (single.values[i] === previous.values[i])
|
|
409
|
+
continue;
|
|
410
|
+
if (changed !== -1 || previous.values[i] < 0n || single.values[i] <= previous.values[i]
|
|
411
|
+
|| trajectory.epochs[i] !== previous.epochs[i]) {
|
|
412
|
+
eligible = false;
|
|
413
|
+
break;
|
|
414
|
+
}
|
|
415
|
+
changed = i;
|
|
416
|
+
}
|
|
417
|
+
if (eligible && changed !== -1) {
|
|
418
|
+
const range = counters[changed];
|
|
419
|
+
charge(16 + range.digits * range.digits * 8);
|
|
420
|
+
const value = single.values[changed], delta = value - previous.values[changed], remaining = range.min - 1n - value;
|
|
421
|
+
if (remaining >= delta)
|
|
422
|
+
accelerated = setCounter(single, single.state, changed, value + remaining / delta * delta);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
// A recorded cycle has one consuming configuration in EVERY full
|
|
426
|
+
// closure, the same leaf control state and all other counters equal.
|
|
427
|
+
// Its sole increasing counter never reset/exited along that path.
|
|
428
|
+
// Replaying the marked cycle below min preserves every guard: exit
|
|
429
|
+
// stays disabled, enter stays enabled, other valuations repeat.
|
|
430
|
+
// Induction therefore skips no possible competing attribution.
|
|
431
|
+
if (accelerated) {
|
|
432
|
+
subset = closure([accelerated]);
|
|
433
|
+
single = accelerated;
|
|
434
|
+
charge(2);
|
|
435
|
+
trajectory = { history: new Map(), epochs: trajectory.epochs };
|
|
436
|
+
}
|
|
437
|
+
charge(4 + trajectory.history.size * 2);
|
|
438
|
+
const history = new Map(trajectory.history);
|
|
439
|
+
history.set(single.state, { values: single.values, epochs: trajectory.epochs });
|
|
440
|
+
trajectory = { history, epochs: trajectory.epochs };
|
|
441
|
+
}
|
|
442
|
+
else {
|
|
443
|
+
charge(2);
|
|
444
|
+
trajectory = { history: new Map(), epochs: trajectory.epochs };
|
|
445
|
+
}
|
|
446
|
+
charge(2);
|
|
447
|
+
const moves = new Map();
|
|
448
|
+
for (const config of subset)
|
|
449
|
+
for (const transition of states[config.state].consuming) {
|
|
450
|
+
charge(3);
|
|
451
|
+
for (const token of transition.label.tokens) {
|
|
452
|
+
charge(4);
|
|
453
|
+
let move = moves.get(token);
|
|
454
|
+
if (!move) {
|
|
455
|
+
charge(5);
|
|
456
|
+
move = { targets: [] };
|
|
457
|
+
moves.set(token, move);
|
|
458
|
+
}
|
|
459
|
+
const tag = transition.label.position.tag;
|
|
460
|
+
// cos-nonambig concerns the next attribution without looking at
|
|
461
|
+
// the remaining input. Appendix H's reachable epsilon construction
|
|
462
|
+
// does not trim noncompleting branches before checking labels.
|
|
463
|
+
if (move.tag !== undefined && move.tag !== tag)
|
|
464
|
+
return done(false, transition.label.position.particle.source);
|
|
465
|
+
move.tag = tag;
|
|
466
|
+
charge(3);
|
|
467
|
+
move.targets.push({ state: transition.to, values: config.values });
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
for (const move of moves.values()) {
|
|
471
|
+
charge(2 + trajectory.epochs.length);
|
|
472
|
+
const epochs = [...trajectory.epochs];
|
|
473
|
+
const next = closure(move.targets, epochs), name = subsetKey(next);
|
|
474
|
+
charge(2 + name.length);
|
|
475
|
+
if (!seen.has(name)) {
|
|
476
|
+
charge(4);
|
|
477
|
+
seen.add(name);
|
|
478
|
+
pending.push({ subset: next, trajectory: { history: trajectory.history, epochs } });
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
return done(true);
|
|
483
|
+
}
|
|
484
|
+
catch (error) {
|
|
485
|
+
if (error instanceof Incomplete)
|
|
486
|
+
return error.result;
|
|
487
|
+
if (error instanceof SemanticError) {
|
|
488
|
+
budget.chargeWork(10 + error.message.length);
|
|
489
|
+
return Object.freeze({ kind: 'invalid-input', rule: 'cos-nonambig', component: error.component, message: error.message });
|
|
490
|
+
}
|
|
491
|
+
throw error;
|
|
492
|
+
}
|
|
493
|
+
});
|
|
494
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** XSD 1.0 cos-element-consistent over explicit canonical particle roots. */
|
|
2
|
+
import type { NodeId } from './canonicalGraph.js';
|
|
3
|
+
import type { SemanticContext } from './semanticContext.js';
|
|
4
|
+
import type { RelationFailure } from './schemaTypeRelations.js';
|
|
5
|
+
import type { ResourceLimitFailure } from './semanticBudget.js';
|
|
6
|
+
import type { SemanticTypeDependency } from './semanticTypeReference.js';
|
|
7
|
+
export type ElementConsistencyResult = Readonly<{
|
|
8
|
+
kind: 'checked';
|
|
9
|
+
value: boolean;
|
|
10
|
+
rule: 'cos-element-consistent';
|
|
11
|
+
contextId: string;
|
|
12
|
+
scope: 'declared-particle-roots';
|
|
13
|
+
obligations: readonly ['component-validity'];
|
|
14
|
+
typeDependencies: readonly SemanticTypeDependency[];
|
|
15
|
+
conflict?: readonly [NodeId, NodeId];
|
|
16
|
+
}> | RelationFailure | ResourceLimitFailure;
|
|
17
|
+
/**
|
|
18
|
+
* Repeated group-use edges count distinct positions; numeric repetition does not.
|
|
19
|
+
* The source mapper's max=0 components are omitted, without restriction-specific
|
|
20
|
+
* pointless-compositor normalization. Summary sharing prevents DAG unfolding.
|
|
21
|
+
* Type/declaration validity remains an explicit separately owned prerequisite.
|
|
22
|
+
*/
|
|
23
|
+
export declare function checkElementDeclarationsConsistent(context: SemanticContext, roots: readonly NodeId[]): ElementConsistencyResult;
|