@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,206 @@
|
|
|
1
|
+
import { assertSemanticContext } from './semanticContext.js';
|
|
2
|
+
import { effectiveSubstitutionMembers } from './schemaTypeRelations.js';
|
|
3
|
+
import { declaredType, resolveSemanticType } from './schemaTypeIdentity.js';
|
|
4
|
+
import { collectSemanticTypeDependencies } from './semanticTypeDependencies.js';
|
|
5
|
+
import { originalUrWildcardSource } from './complexTypeContent.js';
|
|
6
|
+
class Incomplete extends Error {
|
|
7
|
+
result;
|
|
8
|
+
constructor(result) {
|
|
9
|
+
super('Incomplete EDC premise');
|
|
10
|
+
this.result = result;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
class Conflict extends Error {
|
|
14
|
+
pair;
|
|
15
|
+
constructor(pair) {
|
|
16
|
+
super('Inconsistent element declaration particles');
|
|
17
|
+
this.pair = pair;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Repeated group-use edges count distinct positions; numeric repetition does not.
|
|
22
|
+
* The source mapper's max=0 components are omitted, without restriction-specific
|
|
23
|
+
* pointless-compositor normalization. Summary sharing prevents DAG unfolding.
|
|
24
|
+
* Type/declaration validity remains an explicit separately owned prerequisite.
|
|
25
|
+
*/
|
|
26
|
+
export function checkElementDeclarationsConsistent(context, roots) {
|
|
27
|
+
assertSemanticContext(context);
|
|
28
|
+
const budget = context.budget;
|
|
29
|
+
return budget.guard(() => {
|
|
30
|
+
const typeDependencies = collectSemanticTypeDependencies(context);
|
|
31
|
+
try {
|
|
32
|
+
const requested = budget.freeze(budget.snapshot(roots));
|
|
33
|
+
budget.chargeWork(5);
|
|
34
|
+
const memo = new Map(), active = new Set();
|
|
35
|
+
const unresolved = (component, message) => {
|
|
36
|
+
budget.chargeWork(8 + component.length + message.length);
|
|
37
|
+
throw new Incomplete(Object.freeze({ kind: 'unresolved', rule: 'cos-element-consistent', component, message }));
|
|
38
|
+
};
|
|
39
|
+
const get = (id) => {
|
|
40
|
+
const result = context.lookup(id);
|
|
41
|
+
if (result.kind === 'missing') {
|
|
42
|
+
const borrowed = context.originalUrWildcard(id);
|
|
43
|
+
if (borrowed)
|
|
44
|
+
return originalUrWildcardSource(context.originalContext(), borrowed);
|
|
45
|
+
}
|
|
46
|
+
return result.kind === 'found' ? result.node : unresolved(id, `Required component is ${result.kind}`);
|
|
47
|
+
};
|
|
48
|
+
const target = (ref, owner) => {
|
|
49
|
+
const result = context.resolve(ref);
|
|
50
|
+
return result.kind === 'found' ? result.node : unresolved(owner, 'Declaration or group target is not an active component');
|
|
51
|
+
};
|
|
52
|
+
const namedType = (declaration) => {
|
|
53
|
+
const result = resolveSemanticType(context, declaredType(context, declaration));
|
|
54
|
+
if (result.kind !== 'component' && result.kind !== 'builtin' && result.kind !== 'original-generated')
|
|
55
|
+
return unresolved(declaration.id, 'Declared type is unavailable or not a type in the selected context');
|
|
56
|
+
budget.chargeWork(3);
|
|
57
|
+
typeDependencies.add([{ contextId: context.contextId, type: result.identity }]);
|
|
58
|
+
// A generated scalar has no name; its source container is provenance.
|
|
59
|
+
if (result.kind === 'original-generated')
|
|
60
|
+
return undefined;
|
|
61
|
+
if (result.kind === 'builtin') {
|
|
62
|
+
budget.chargeWork(32 + 6 * (result.name.namespace.length + result.name.local.length));
|
|
63
|
+
return JSON.stringify(['type', result.name.namespace, result.name.local]);
|
|
64
|
+
}
|
|
65
|
+
if (result.node.identity.kind !== 'global')
|
|
66
|
+
return undefined;
|
|
67
|
+
const name = result.node.identity.name;
|
|
68
|
+
budget.chargeWork(32 + 6 * (name.namespace.length + name.local.length));
|
|
69
|
+
return JSON.stringify(['type', name.namespace, name.local]);
|
|
70
|
+
};
|
|
71
|
+
const merge = (into, summary) => {
|
|
72
|
+
for (const [name, entry] of summary) {
|
|
73
|
+
budget.chargeWork(8 + name.length);
|
|
74
|
+
const prior = into.get(name);
|
|
75
|
+
budget.chargeWork((prior?.namedType?.length ?? 0) + (entry.namedType?.length ?? 0));
|
|
76
|
+
if (prior && (!prior.namedType || !entry.namedType || prior.namedType !== entry.namedType)) {
|
|
77
|
+
budget.chargeWork(4);
|
|
78
|
+
throw new Conflict(Object.freeze([prior.declaration, entry.declaration]));
|
|
79
|
+
}
|
|
80
|
+
budget.chargeWork(5);
|
|
81
|
+
into.set(name, { declaration: prior?.declaration ?? entry.declaration, count: prior ? 2 : entry.count, namedType: entry.namedType });
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
const declared = (particle) => {
|
|
85
|
+
if (particle.term.kind !== 'element')
|
|
86
|
+
return new Map();
|
|
87
|
+
const selected = context.resolve(particle.term.declaration);
|
|
88
|
+
if (selected.kind === 'standard-element') {
|
|
89
|
+
const declaration = selected.declaration;
|
|
90
|
+
budget.chargeWork(48 + 6 * (declaration.name.namespace.length + declaration.name.local.length));
|
|
91
|
+
const name = JSON.stringify([declaration.name.namespace, declaration.name.local]);
|
|
92
|
+
// The fixed schema element's type is anonymous. Repeated positions
|
|
93
|
+
// still require the dated EDC top-level named-type premise.
|
|
94
|
+
return new Map([[name, { declaration: declaration.id, count: 1 }]]);
|
|
95
|
+
}
|
|
96
|
+
const declaration = target(particle.term.declaration, particle.id);
|
|
97
|
+
if (declaration.kind !== 'element')
|
|
98
|
+
return unresolved(particle.id, 'Element particle does not reference an element declaration');
|
|
99
|
+
budget.chargeWork(4);
|
|
100
|
+
const declarations = new Set([declaration.id]);
|
|
101
|
+
if (declaration.identity.kind === 'global') {
|
|
102
|
+
if (context.membership === 'structural-subset')
|
|
103
|
+
return unresolved(declaration.id, 'Complete original-plus-fresh substitution universe is required');
|
|
104
|
+
const implicit = effectiveSubstitutionMembers(context, declaration.id);
|
|
105
|
+
if (implicit.kind !== 'checked')
|
|
106
|
+
throw new Incomplete(implicit);
|
|
107
|
+
typeDependencies.add(implicit.typeDependencies);
|
|
108
|
+
for (const id of implicit.value) {
|
|
109
|
+
budget.chargeWork(1 + id.length);
|
|
110
|
+
declarations.add(id);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
budget.chargeWork();
|
|
114
|
+
const result = new Map();
|
|
115
|
+
for (const id of declarations) {
|
|
116
|
+
const member = get(id);
|
|
117
|
+
if (member.kind !== 'element')
|
|
118
|
+
return unresolved(id, 'Implicit member is not an element declaration');
|
|
119
|
+
budget.chargeWork(48 + 6 * (member.name.namespace.length + member.name.local.length));
|
|
120
|
+
const name = JSON.stringify([member.name.namespace, member.name.local]);
|
|
121
|
+
const type = namedType(member), prior = result.get(name);
|
|
122
|
+
budget.chargeWork((prior?.namedType?.length ?? 0) + (type?.length ?? 0));
|
|
123
|
+
if (prior && (!prior.namedType || !type || prior.namedType !== type)) {
|
|
124
|
+
budget.chargeWork(4);
|
|
125
|
+
throw new Conflict(Object.freeze([prior.declaration, member.id]));
|
|
126
|
+
}
|
|
127
|
+
budget.chargeWork(5);
|
|
128
|
+
result.set(name, { declaration: prior?.declaration ?? member.id, count: prior ? 2 : 1, namedType: type });
|
|
129
|
+
}
|
|
130
|
+
return result;
|
|
131
|
+
};
|
|
132
|
+
const frame = (id) => {
|
|
133
|
+
const node = get(id);
|
|
134
|
+
if (node.kind !== 'particle')
|
|
135
|
+
return unresolved(id, 'EDC roots and containment edges must reference particles');
|
|
136
|
+
budget.chargeWork(7);
|
|
137
|
+
let children = [];
|
|
138
|
+
if (node.occurs.max !== '0') {
|
|
139
|
+
if ('children' in node.term)
|
|
140
|
+
children = node.term.children;
|
|
141
|
+
else if (node.term.kind === 'group') {
|
|
142
|
+
const group = target(node.term.reference, id);
|
|
143
|
+
if (group.kind !== 'group')
|
|
144
|
+
return unresolved(id, 'Model-group use does not reference a group');
|
|
145
|
+
budget.chargeWork(2);
|
|
146
|
+
children = [group.content];
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return { node, children, index: 0 };
|
|
150
|
+
};
|
|
151
|
+
budget.chargeWork();
|
|
152
|
+
const combined = new Map();
|
|
153
|
+
for (const root of requested) {
|
|
154
|
+
budget.chargeWork(3 + root.length);
|
|
155
|
+
if (!memo.has(root)) {
|
|
156
|
+
budget.chargeWork(2);
|
|
157
|
+
const stack = [frame(root)];
|
|
158
|
+
active.add(root);
|
|
159
|
+
while (stack.length) {
|
|
160
|
+
budget.chargeWork(3);
|
|
161
|
+
const current = stack[stack.length - 1];
|
|
162
|
+
if (current.index < current.children.length) {
|
|
163
|
+
const id = current.children[current.index++];
|
|
164
|
+
budget.chargeWork(3 + id.length);
|
|
165
|
+
if (active.has(id))
|
|
166
|
+
return unresolved(id, 'Forbidden particle/group containment cycle');
|
|
167
|
+
if (!memo.has(id)) {
|
|
168
|
+
budget.chargeWork(2);
|
|
169
|
+
active.add(id);
|
|
170
|
+
stack.push(frame(id));
|
|
171
|
+
}
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
budget.chargeWork();
|
|
175
|
+
const summary = new Map();
|
|
176
|
+
if (current.node.occurs.max !== '0') {
|
|
177
|
+
if (current.node.term.kind === 'element')
|
|
178
|
+
merge(summary, declared(current.node));
|
|
179
|
+
for (const id of current.children) {
|
|
180
|
+
budget.chargeWork(1 + id.length);
|
|
181
|
+
merge(summary, memo.get(id));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
budget.chargeWork(4);
|
|
185
|
+
memo.set(current.node.id, summary);
|
|
186
|
+
active.delete(current.node.id);
|
|
187
|
+
stack.pop();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
merge(combined, memo.get(root));
|
|
191
|
+
}
|
|
192
|
+
budget.chargeWork(20 + context.contextId.length);
|
|
193
|
+
return Object.freeze({ kind: 'checked', value: true, rule: 'cos-element-consistent', contextId: context.contextId,
|
|
194
|
+
scope: 'declared-particle-roots', obligations: Object.freeze(['component-validity']), typeDependencies: typeDependencies.snapshot() });
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
if (error instanceof Incomplete)
|
|
198
|
+
return error.result;
|
|
199
|
+
if (!(error instanceof Conflict))
|
|
200
|
+
throw error;
|
|
201
|
+
budget.chargeWork(24 + context.contextId.length);
|
|
202
|
+
return Object.freeze({ kind: 'checked', value: false, rule: 'cos-element-consistent', contextId: context.contextId,
|
|
203
|
+
scope: 'declared-particle-roots', obligations: Object.freeze(['component-validity']), conflict: error.pair, typeDependencies: typeDependencies.snapshot() });
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Raw cos-particle-extend: original component identity or exact base-first construction. */
|
|
2
|
+
import type { SemanticContext } from './semanticContext.js';
|
|
3
|
+
import type { AttributeFailure } from './schemaAttributeUses.js';
|
|
4
|
+
import type { ScalarFailure } from './schemaScalarKernel.js';
|
|
5
|
+
import type { ScalarObligation } from './scalarSchemaAssessment.js';
|
|
6
|
+
import type { ParticleContentView } from './complexTypeContent.js';
|
|
7
|
+
import type { RelationFailure } from './schemaTypeRelations.js';
|
|
8
|
+
import type { ResourceLimitFailure } from './semanticBudget.js';
|
|
9
|
+
import type { SemanticTypeDependency } from './semanticTypeReference.js';
|
|
10
|
+
import type { IdentityConstraintDependency } from './schemaIdentityConstraints.js';
|
|
11
|
+
export type ParticleExtensionResult = Readonly<{
|
|
12
|
+
kind: 'checked';
|
|
13
|
+
value: boolean;
|
|
14
|
+
rule: 'cos-particle-extend';
|
|
15
|
+
contextId: string;
|
|
16
|
+
obligations: readonly string[];
|
|
17
|
+
scalarObligations: readonly ScalarObligation[];
|
|
18
|
+
typeDependencies: readonly SemanticTypeDependency[];
|
|
19
|
+
identityConstraintDependencies: readonly IdentityConstraintDependency[];
|
|
20
|
+
}> | RelationFailure | ScalarFailure | AttributeFailure | ResourceLimitFailure;
|
|
21
|
+
export declare function checkRawParticleExtension(context: SemanticContext, derived: ParticleContentView, base: ParticleContentView): ParticleExtensionResult;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { compareComponentProperties } from './schemaComponentEquality.js';
|
|
2
|
+
import { assertParticleContentView } from './complexTypeContent.js';
|
|
3
|
+
import { prepareSemanticParticleView } from './particleSemanticView.js';
|
|
4
|
+
import { checkDeclaredParticleLegality } from './particleLocalAssessment.js';
|
|
5
|
+
import { SemanticError } from './resolveCanonicalGraph.js';
|
|
6
|
+
import { collectSemanticTypeDependencies } from './semanticTypeDependencies.js';
|
|
7
|
+
import { collectIdentityConstraintDependencies } from './schemaIdentityConstraints.js';
|
|
8
|
+
export function checkRawParticleExtension(context, derived, base) {
|
|
9
|
+
assertParticleContentView(context, derived);
|
|
10
|
+
assertParticleContentView(context, base);
|
|
11
|
+
const budget = context.budget, charge = (n = 1) => budget.chargeWork(n);
|
|
12
|
+
return budget.guard(() => {
|
|
13
|
+
const typeDependencies = collectSemanticTypeDependencies(context);
|
|
14
|
+
const identityConstraintDependencies = collectIdentityConstraintDependencies(context);
|
|
15
|
+
const obligations = ['component-validity'];
|
|
16
|
+
const scalarObligations = [];
|
|
17
|
+
const done = (value) => {
|
|
18
|
+
charge(10);
|
|
19
|
+
return Object.freeze({ kind: 'checked', value, rule: 'cos-particle-extend', contextId: context.contextId,
|
|
20
|
+
obligations: budget.freeze(budget.snapshot(obligations)),
|
|
21
|
+
scalarObligations: budget.freeze(budget.snapshot(scalarObligations)), typeDependencies: typeDependencies.snapshot(),
|
|
22
|
+
identityConstraintDependencies: identityConstraintDependencies.snapshot() });
|
|
23
|
+
};
|
|
24
|
+
const unresolved = (rule, component, message) => {
|
|
25
|
+
charge(10 + rule.length + component.length + message.length);
|
|
26
|
+
return Object.freeze({ kind: 'unresolved', rule, component, message });
|
|
27
|
+
};
|
|
28
|
+
try {
|
|
29
|
+
const extension = prepareSemanticParticleView(context, derived, 'declared');
|
|
30
|
+
if (extension.kind !== 'checked')
|
|
31
|
+
return extension;
|
|
32
|
+
typeDependencies.add(extension.view.typeDependencies);
|
|
33
|
+
const original = prepareSemanticParticleView(context, base, 'declared');
|
|
34
|
+
if (original.kind !== 'checked')
|
|
35
|
+
return original;
|
|
36
|
+
typeDependencies.add(original.view.typeDependencies);
|
|
37
|
+
const legal = checkDeclaredParticleLegality(context, extension.view);
|
|
38
|
+
if (legal.kind !== 'checked')
|
|
39
|
+
return legal;
|
|
40
|
+
typeDependencies.add(legal.typeDependencies);
|
|
41
|
+
if (!legal.value)
|
|
42
|
+
return done(false);
|
|
43
|
+
const e = extension.view.root, b = original.view.root;
|
|
44
|
+
charge(6);
|
|
45
|
+
if (e === b || e.originalParticle !== undefined && e.originalParticle === b.originalParticle)
|
|
46
|
+
return done(true);
|
|
47
|
+
if (e.kind !== 'sequence' || e.occurs.min !== '1' || e.occurs.max !== '1' || !e.children.length)
|
|
48
|
+
return done(false);
|
|
49
|
+
charge(3);
|
|
50
|
+
const stack = [[e.children[0], b]];
|
|
51
|
+
const seen = new Map();
|
|
52
|
+
let distinctDeclaration;
|
|
53
|
+
while (stack.length) {
|
|
54
|
+
charge(5);
|
|
55
|
+
const [x, y] = stack.pop();
|
|
56
|
+
if (x === y || x.originalParticle !== undefined && x.originalParticle === y.originalParticle)
|
|
57
|
+
continue;
|
|
58
|
+
let row = seen.get(x);
|
|
59
|
+
if (!row) {
|
|
60
|
+
charge(2);
|
|
61
|
+
row = new Set();
|
|
62
|
+
seen.set(x, row);
|
|
63
|
+
}
|
|
64
|
+
if (row.has(y))
|
|
65
|
+
continue;
|
|
66
|
+
charge();
|
|
67
|
+
row.add(y);
|
|
68
|
+
charge(x.occurs.min.length + y.occurs.min.length + x.occurs.max.length + y.occurs.max.length);
|
|
69
|
+
if (x.kind !== y.kind || x.occurs.min !== y.occurs.min || x.occurs.max !== y.occurs.max || x.children.length !== y.children.length)
|
|
70
|
+
return done(false);
|
|
71
|
+
if (x.standardElement || y.standardElement) {
|
|
72
|
+
if (x.standardElement !== y.standardElement)
|
|
73
|
+
return unresolved('fixed-standard-declaration-correspondence', x.source, 'Extension requires the same acquired standard declaration');
|
|
74
|
+
}
|
|
75
|
+
else if (x.element && y.element) {
|
|
76
|
+
charge(2 + x.element.id.length + y.element.id.length);
|
|
77
|
+
if (x.element.id !== y.element.id) {
|
|
78
|
+
const same = compareComponentProperties(context, x.element, y.element);
|
|
79
|
+
if (same.kind !== 'checked')
|
|
80
|
+
return same;
|
|
81
|
+
typeDependencies.add(same.typeDependencies);
|
|
82
|
+
identityConstraintDependencies.add(same.identityConstraintDependencies);
|
|
83
|
+
if (!same.value)
|
|
84
|
+
return done(false);
|
|
85
|
+
charge(2 + same.obligations.length + same.scalarObligations.length);
|
|
86
|
+
for (const item of same.scalarObligations) {
|
|
87
|
+
charge();
|
|
88
|
+
scalarObligations.push(item);
|
|
89
|
+
}
|
|
90
|
+
for (const required of same.obligations) {
|
|
91
|
+
charge(1 + required.length);
|
|
92
|
+
if (required === 'component-validity')
|
|
93
|
+
continue;
|
|
94
|
+
if (required.startsWith('element-default-mixed-emptiable:'))
|
|
95
|
+
obligations.push(required);
|
|
96
|
+
else
|
|
97
|
+
distinctDeclaration ??= x.element.id;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else if (x.wildcard && y.wildcard) {
|
|
102
|
+
if (x.wildcard.processContents !== y.wildcard.processContents)
|
|
103
|
+
return done(false);
|
|
104
|
+
const a = x.wildcard.namespace, z = y.wildcard.namespace;
|
|
105
|
+
if (a.kind !== z.kind || a.namespaces.length !== z.namespaces.length)
|
|
106
|
+
return done(false);
|
|
107
|
+
for (let i = 0; i < a.namespaces.length; i++)
|
|
108
|
+
if (budget.compareText(a.namespaces[i], z.namespaces[i]) !== 0)
|
|
109
|
+
return done(false);
|
|
110
|
+
}
|
|
111
|
+
charge(x.children.length * 3);
|
|
112
|
+
for (let i = 0; i < x.children.length; i++)
|
|
113
|
+
stack.push([x.children[i], y.children[i]]);
|
|
114
|
+
}
|
|
115
|
+
return distinctDeclaration ? unresolved('raw-declaration-property-correspondence', distinctDeclaration, 'Recursive component equality retains unresolved local-property prerequisites') : done(true);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
if (error instanceof SemanticError)
|
|
119
|
+
return unresolved('cos-particle-extend', error.component ?? derived.type, error.message);
|
|
120
|
+
throw error;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** All placement, shared EDC and exact marked-automaton UPA on the declared view. */
|
|
2
|
+
import type { SemanticContext } from './semanticContext.js';
|
|
3
|
+
import type { ParticleContentView } from './complexTypeContent.js';
|
|
4
|
+
import type { SemanticParticleView } from './particleSemanticView.js';
|
|
5
|
+
import type { RelationFailure } from './schemaTypeRelations.js';
|
|
6
|
+
import type { ResourceLimitFailure } from './semanticBudget.js';
|
|
7
|
+
import type { SemanticTypeDependency } from './semanticTypeReference.js';
|
|
8
|
+
export type ParticleLocalResult = Readonly<{
|
|
9
|
+
kind: 'checked';
|
|
10
|
+
value: boolean;
|
|
11
|
+
rule: 'particle-local-legality';
|
|
12
|
+
contextId: string;
|
|
13
|
+
failedRule?: 'cos-all-limited' | 'cos-element-consistent' | 'cos-nonambig';
|
|
14
|
+
component?: string;
|
|
15
|
+
obligations: readonly ['component-validity'];
|
|
16
|
+
typeDependencies: readonly SemanticTypeDependency[];
|
|
17
|
+
}> | RelationFailure | ResourceLimitFailure;
|
|
18
|
+
export declare function checkDeclaredParticleLegality(context: SemanticContext, view: SemanticParticleView): ParticleLocalResult;
|
|
19
|
+
export declare function checkComplexParticleContent(context: SemanticContext, content: ParticleContentView): ParticleLocalResult;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { prepareSemanticParticleView, assertSemanticParticleView } from './particleSemanticView.js';
|
|
2
|
+
import { checkElementDeclarationsConsistent } from './particleDeclarationConsistency.js';
|
|
3
|
+
import { checkParticleAttribution } from './particleAttribution.js';
|
|
4
|
+
import { collectSemanticTypeDependencies } from './semanticTypeDependencies.js';
|
|
5
|
+
class Incomplete extends Error {
|
|
6
|
+
result;
|
|
7
|
+
constructor(result) {
|
|
8
|
+
super(result.kind);
|
|
9
|
+
this.result = result;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export function checkDeclaredParticleLegality(context, view) {
|
|
13
|
+
assertSemanticParticleView(context, view);
|
|
14
|
+
const budget = context.budget, charge = (n = 1) => budget.chargeWork(n);
|
|
15
|
+
return budget.guard(() => {
|
|
16
|
+
const typeDependencies = collectSemanticTypeDependencies(context);
|
|
17
|
+
typeDependencies.add(view.typeDependencies);
|
|
18
|
+
const result = (value, failedRule, component) => {
|
|
19
|
+
charge(14);
|
|
20
|
+
return Object.freeze({ kind: 'checked', value, rule: 'particle-local-legality', contextId: context.contextId,
|
|
21
|
+
failedRule, component, obligations: Object.freeze(['component-validity']), typeDependencies: typeDependencies.snapshot() });
|
|
22
|
+
};
|
|
23
|
+
const unresolved = (component, message) => {
|
|
24
|
+
charge(10 + component.length + message.length);
|
|
25
|
+
throw new Incomplete(Object.freeze({ kind: 'unresolved', rule: 'particle-local-legality', component, message }));
|
|
26
|
+
};
|
|
27
|
+
try {
|
|
28
|
+
charge(18);
|
|
29
|
+
if (view.purpose !== 'declared')
|
|
30
|
+
return unresolved(view.root.source, 'Declared particle view required for all placement, EDC and UPA');
|
|
31
|
+
const root = view.root;
|
|
32
|
+
charge(2);
|
|
33
|
+
const pending = [root], seen = new Set();
|
|
34
|
+
while (pending.length) {
|
|
35
|
+
charge(3);
|
|
36
|
+
const p = pending.pop();
|
|
37
|
+
if (seen.has(p))
|
|
38
|
+
continue;
|
|
39
|
+
seen.add(p);
|
|
40
|
+
if (p.kind === 'all') {
|
|
41
|
+
if (p !== root || p.occurs.max !== '1' || p.occurs.min !== '0' && p.occurs.min !== '1')
|
|
42
|
+
return result(false, 'cos-all-limited', p.source);
|
|
43
|
+
for (const child of p.children) {
|
|
44
|
+
charge(3);
|
|
45
|
+
if (child.kind !== 'element' || !['0', '1'].includes(child.occurs.min) || !['0', '1'].includes(child.occurs.max))
|
|
46
|
+
return result(false, 'cos-all-limited', child.source);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
charge(p.children.length);
|
|
50
|
+
pending.push(...p.children);
|
|
51
|
+
}
|
|
52
|
+
// Cut synthetic effective extension wrappers at actual contextual roots.
|
|
53
|
+
// The EDC owner preserves incidence when the same root occurs twice.
|
|
54
|
+
charge(3);
|
|
55
|
+
const edcRoots = [], roots = [root];
|
|
56
|
+
while (roots.length) {
|
|
57
|
+
charge(3);
|
|
58
|
+
const p = roots.pop(), found = context.lookup(p.source);
|
|
59
|
+
if (found.kind === 'found' && found.node.kind === 'particle') {
|
|
60
|
+
charge();
|
|
61
|
+
edcRoots.push(p.source);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
charge(p.children.length);
|
|
65
|
+
roots.push(...p.children);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const edc = checkElementDeclarationsConsistent(context, edcRoots);
|
|
69
|
+
if (edc.kind !== 'checked')
|
|
70
|
+
return edc;
|
|
71
|
+
typeDependencies.add(edc.typeDependencies);
|
|
72
|
+
if (!edc.value)
|
|
73
|
+
return result(false, 'cos-element-consistent', edc.conflict?.[1]);
|
|
74
|
+
const attribution = checkParticleAttribution(context, view);
|
|
75
|
+
if (attribution.kind !== 'checked')
|
|
76
|
+
return attribution;
|
|
77
|
+
typeDependencies.add(attribution.typeDependencies);
|
|
78
|
+
if (!attribution.value)
|
|
79
|
+
return result(false, 'cos-nonambig', attribution.component);
|
|
80
|
+
return result(true);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (error instanceof Incomplete)
|
|
84
|
+
return error.result;
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
export function checkComplexParticleContent(context, content) {
|
|
90
|
+
const view = prepareSemanticParticleView(context, content, 'declared');
|
|
91
|
+
return view.kind === 'checked' ? checkDeclaredParticleLegality(context, view.view) : view;
|
|
92
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { SemanticContext } from './semanticContext.js';
|
|
2
|
+
import type { SemanticParticleView } from './particleSemanticView.js';
|
|
3
|
+
import type { RelationFailure } from './schemaTypeRelations.js';
|
|
4
|
+
import type { ScalarFailure } from './schemaScalarKernel.js';
|
|
5
|
+
import type { ScalarObligation } from './scalarSchemaAssessment.js';
|
|
6
|
+
import type { ResourceLimitFailure } from './semanticBudget.js';
|
|
7
|
+
import type { SemanticTypeDependency } from './semanticTypeReference.js';
|
|
8
|
+
import type { IdentityConstraintDependency } from './schemaIdentityConstraints.js';
|
|
9
|
+
export type ParticleRestrictionResult = Readonly<{
|
|
10
|
+
kind: 'checked';
|
|
11
|
+
value: boolean;
|
|
12
|
+
rule: 'cos-particle-restrict';
|
|
13
|
+
contextId: string;
|
|
14
|
+
obligations: readonly ['component-validity', 'particle-local-legality'];
|
|
15
|
+
scalarObligations: readonly Readonly<ScalarObligation & {
|
|
16
|
+
contextId: string;
|
|
17
|
+
}>[];
|
|
18
|
+
typeDependencies: readonly SemanticTypeDependency[];
|
|
19
|
+
identityConstraintDependencies: readonly IdentityConstraintDependency[];
|
|
20
|
+
}> | RelationFailure | ScalarFailure | ResourceLimitFailure;
|
|
21
|
+
export declare function checkParticleRestriction(context: SemanticContext, derived: SemanticParticleView, base: SemanticParticleView, options?: Readonly<{
|
|
22
|
+
deferScalarObligations?: boolean;
|
|
23
|
+
}>): ParticleRestrictionResult;
|