@techspokes/typescript-wsdl-client 1.1.5 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +80 -68
- package/dist/app/generateApp.d.ts +0 -1
- package/dist/app/generateApp.js +1 -1
- package/dist/app/generateCheckedApp.d.ts +38 -0
- package/dist/app/generateCheckedApp.js +108 -0
- package/dist/checkedPipeline.d.ts +155 -0
- package/dist/checkedPipeline.js +448 -0
- package/dist/checkedPlanning.d.ts +123 -0
- package/dist/checkedPlanning.js +268 -0
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +92 -2
- package/dist/client/checkedDirectRuntime.d.ts +40 -3
- package/dist/client/checkedDirectRuntime.js +28 -8
- package/dist/client/directClientRuntime.d.ts +27 -2
- package/dist/client/directClientRuntime.js +142 -89
- package/dist/client/directClientVersion.d.ts +3 -1
- package/dist/client/directClientVersion.js +3 -0
- package/dist/client/generateClient.d.ts +0 -1
- package/dist/client/generateClient.js +98 -28
- package/dist/client/generateDirectClient.d.ts +21 -3
- package/dist/client/generateDirectClient.js +138 -6
- package/dist/client/generateOperations.d.ts +0 -1
- package/dist/client/generateOperations.js +30 -11
- package/dist/client/generateTypes.d.ts +0 -1
- package/dist/client/generateUtils.d.ts +0 -1
- package/dist/client/generateUtils.js +7 -1
- package/dist/compiler/applicationGroups.d.ts +53 -0
- package/dist/compiler/applicationGroups.js +403 -0
- package/dist/compiler/buildCanonicalGraph.d.ts +0 -1
- package/dist/compiler/canonicalGraph.d.ts +4 -16
- package/dist/compiler/canonicalGraph.js +1 -8
- package/dist/compiler/catalogErrors.d.ts +0 -1
- package/dist/compiler/catalogProvenance.d.ts +0 -1
- package/dist/compiler/checkedAssessment.d.ts +0 -1
- package/dist/compiler/checkedAssessment.js +1 -1
- package/dist/compiler/checkedComponentSource.d.ts +16 -0
- package/dist/compiler/checkedComponentSource.js +31 -0
- package/dist/compiler/checkedSourcePreparation.d.ts +38 -1
- package/dist/compiler/checkedSourcePreparation.js +71 -0
- package/dist/compiler/complexTypeContent.d.ts +5 -6
- package/dist/compiler/complexTypeContent.js +2 -2
- package/dist/compiler/componentCorrespondence.d.ts +32 -0
- package/dist/compiler/componentCorrespondence.js +140 -0
- package/dist/compiler/componentRecordProjection.d.ts +112 -0
- package/dist/compiler/componentRecordProjection.js +329 -0
- package/dist/compiler/componentSoapPreparation.d.ts +20 -0
- package/dist/compiler/componentSoapPreparation.js +36 -0
- package/dist/compiler/composeCanonicalGraph.d.ts +0 -1
- package/dist/compiler/dataOwnership.d.ts +0 -1
- package/dist/compiler/dataOwnership.js +14 -4
- package/dist/compiler/datatypeValues.d.ts +0 -1
- package/dist/compiler/declarationIdentity.d.ts +22 -0
- package/dist/compiler/declarationIdentity.js +9 -0
- package/dist/compiler/directCodec.d.ts +79 -2
- package/dist/compiler/directCodec.js +310 -92
- package/dist/compiler/directExecutionPolicy.d.ts +0 -1
- package/dist/compiler/directOperation.d.ts +72 -8
- package/dist/compiler/directOperation.js +164 -19
- package/dist/compiler/directSoap.d.ts +29 -5
- package/dist/compiler/directSoap.js +154 -44
- package/dist/compiler/directSoapSource.d.ts +24 -1
- package/dist/compiler/directSoapSource.js +166 -19
- package/dist/compiler/directSourceCapsule.d.ts +74 -2
- package/dist/compiler/directSourceCapsule.js +484 -6
- package/dist/compiler/directStructure.d.ts +83 -6
- package/dist/compiler/directStructure.js +353 -58
- package/dist/compiler/directStructurePlan.d.ts +144 -2
- package/dist/compiler/directStructurePlan.js +615 -30
- package/dist/compiler/directValues.d.ts +76 -5
- package/dist/compiler/directValues.js +967 -117
- package/dist/compiler/finiteRe01Construction.d.ts +69 -0
- package/dist/compiler/finiteRe01Construction.js +422 -0
- package/dist/compiler/finiteRe01Verification.d.ts +81 -3
- package/dist/compiler/finiteRe01Verification.js +391 -4
- package/dist/compiler/generateCatalog.d.ts +0 -1
- package/dist/compiler/graphTraversal.d.ts +0 -1
- package/dist/compiler/hypotheticalScopedIdentity.d.ts +0 -1
- package/dist/compiler/legacyDeclarations.d.ts +26 -0
- package/dist/compiler/legacyDeclarations.js +144 -0
- package/dist/compiler/occurrenceAnalysis.d.ts +2 -1
- package/dist/compiler/occurrenceAnalysis.js +23 -7
- package/dist/compiler/originalSourceMembership.d.ts +0 -1
- package/dist/compiler/particleAttribution.d.ts +0 -1
- package/dist/compiler/particleAttribution.js +20 -0
- package/dist/compiler/particleDeclarationConsistency.d.ts +0 -1
- package/dist/compiler/particleDeclarationConsistency.js +9 -0
- package/dist/compiler/particleExtension.d.ts +0 -1
- package/dist/compiler/particleExtension.js +5 -1
- package/dist/compiler/particleLocalAssessment.d.ts +0 -1
- package/dist/compiler/particleRestriction.d.ts +0 -1
- package/dist/compiler/particleRestriction.js +6 -1
- package/dist/compiler/particleSemanticView.d.ts +2 -1
- package/dist/compiler/particleSemanticView.js +16 -3
- package/dist/compiler/particleWildcardRelation.d.ts +0 -1
- package/dist/compiler/projectionScalar.d.ts +49 -0
- package/dist/compiler/projectionScalar.js +218 -0
- package/dist/compiler/re01CandidateAssignments.d.ts +95 -0
- package/dist/compiler/re01CandidateAssignments.js +341 -0
- package/dist/compiler/re01CandidateCorrespondence.d.ts +22 -1
- package/dist/compiler/re01CandidateCorrespondence.js +167 -38
- package/dist/compiler/re01TypeProperties.d.ts +0 -1
- package/dist/compiler/re01TypePropertyValidation.d.ts +0 -1
- package/dist/compiler/resolveCanonicalGraph.d.ts +5 -2
- package/dist/compiler/resolveCanonicalGraph.js +77 -7
- package/dist/compiler/rpcStringValues.d.ts +30 -0
- package/dist/compiler/rpcStringValues.js +196 -0
- package/dist/compiler/rpcTypedValues.d.ts +48 -0
- package/dist/compiler/rpcTypedValues.js +190 -0
- package/dist/compiler/scalarSchemaAssessment.d.ts +0 -1
- package/dist/compiler/schemaAttributeGroupProperties.d.ts +0 -1
- package/dist/compiler/schemaAttributeProperties.d.ts +0 -1
- package/dist/compiler/schemaAttributeUses.d.ts +22 -2
- package/dist/compiler/schemaAttributeUses.js +86 -13
- package/dist/compiler/schemaBinaryWordReconstruction.d.ts +0 -1
- package/dist/compiler/schemaBuiltinFacets.d.ts +0 -1
- package/dist/compiler/schemaCalendarImages.d.ts +0 -1
- package/dist/compiler/schemaCalendarLanguage.d.ts +0 -1
- package/dist/compiler/schemaCompiler.d.ts +0 -1
- package/dist/compiler/schemaCompiler.js +44 -109
- package/dist/compiler/schemaComponentEquality.d.ts +0 -1
- package/dist/compiler/schemaConstructionAssessment.d.ts +34 -1
- package/dist/compiler/schemaConstructionAssessment.js +88 -6
- package/dist/compiler/schemaDatatypeValues.d.ts +0 -1
- package/dist/compiler/schemaDecimalLanguage.d.ts +0 -1
- package/dist/compiler/schemaDeclarationPrimitives.d.ts +7 -2
- package/dist/compiler/schemaDeclarationPrimitives.js +18 -1
- package/dist/compiler/schemaDocumentSyntax.d.ts +0 -1
- package/dist/compiler/schemaDurationLanguage.d.ts +0 -1
- package/dist/compiler/schemaElementInstance.d.ts +30 -0
- package/dist/compiler/schemaElementInstance.js +45 -0
- package/dist/compiler/schemaElementProperties.d.ts +0 -1
- package/dist/compiler/schemaEndpointWordCapacity.d.ts +0 -1
- package/dist/compiler/schemaExactCalendar.d.ts +0 -1
- package/dist/compiler/schemaFacetAnnotation.d.ts +0 -1
- package/dist/compiler/schemaGeneratedScalarShape.d.ts +0 -1
- package/dist/compiler/schemaGeneratedScalarShape.js +2 -0
- package/dist/compiler/schemaIdentityConstraints.d.ts +0 -1
- package/dist/compiler/schemaIeeeLanguage.d.ts +0 -1
- package/dist/compiler/schemaIntegerImages.d.ts +0 -1
- package/dist/compiler/schemaLexicalPredicates.d.ts +0 -1
- package/dist/compiler/schemaNotationProperties.d.ts +0 -1
- package/dist/compiler/schemaNumericImageConditions.d.ts +0 -1
- package/dist/compiler/schemaParticleWildcardProperties.d.ts +0 -1
- package/dist/compiler/schemaPattern.d.ts +0 -1
- package/dist/compiler/schemaRegularLanguage.d.ts +0 -1
- package/dist/compiler/schemaScalarContext.d.ts +5 -1
- package/dist/compiler/schemaScalarKernel.d.ts +0 -1
- package/dist/compiler/schemaScalarWitnesses.d.ts +0 -1
- package/dist/compiler/schemaSimpleTypeProperties.d.ts +0 -1
- package/dist/compiler/schemaSourceGrammar.d.ts +0 -1
- package/dist/compiler/schemaSourceLexical.d.ts +0 -1
- package/dist/compiler/schemaSourceValues.d.ts +0 -1
- package/dist/compiler/schemaSourceWildcards.d.ts +1 -2
- package/dist/compiler/schemaSourceWildcards.js +3 -1
- package/dist/compiler/schemaSymbolicSequences.d.ts +0 -1
- package/dist/compiler/schemaSymbolicValueSets.d.ts +0 -1
- package/dist/compiler/schemaSyntaxAssessment.d.ts +0 -1
- package/dist/compiler/schemaTemporalAliases.d.ts +0 -1
- package/dist/compiler/schemaTokenImages.d.ts +0 -1
- package/dist/compiler/schemaTypeIdentity.d.ts +0 -1
- package/dist/compiler/schemaTypeIdentity.js +2 -0
- package/dist/compiler/schemaTypeRelations.d.ts +0 -1
- package/dist/compiler/schemaUri.d.ts +0 -1
- package/dist/compiler/schemaValueContext.d.ts +0 -1
- package/dist/compiler/schemaValueImages.d.ts +0 -1
- package/dist/compiler/schemaValueSequences.d.ts +0 -1
- package/dist/compiler/semanticBudget.d.ts +18 -1
- package/dist/compiler/semanticBudget.js +17 -2
- package/dist/compiler/semanticCatalog.d.ts +2 -3
- package/dist/compiler/semanticContext.d.ts +12 -1
- package/dist/compiler/semanticContext.js +39 -0
- package/dist/compiler/semanticTypeDependencies.d.ts +0 -1
- package/dist/compiler/semanticTypeReference.d.ts +0 -1
- package/dist/compiler/shapeResolver.d.ts +0 -1
- package/dist/compiler/soapHeaders.d.ts +16 -0
- package/dist/compiler/soapHeaders.js +42 -0
- package/dist/compiler/sourceSchemaBinding.d.ts +0 -1
- package/dist/compiler/standardSchemaComponents.d.ts +71 -0
- package/dist/compiler/standardSchemaComponents.js +74 -0
- package/dist/compiler/standardSchemaConstruction.d.ts +20 -0
- package/dist/compiler/standardSchemaConstruction.js +34 -0
- package/dist/compiler/structuralCompanions.d.ts +0 -1
- package/dist/compiler/validateSemanticGraph.d.ts +0 -1
- package/dist/compiler/wildcardAlgebra.d.ts +0 -1
- package/dist/compiler/wsdlPolicyRequirements.d.ts +43 -0
- package/dist/compiler/wsdlPolicyRequirements.js +239 -0
- package/dist/config.d.ts +0 -1
- package/dist/gateway/generateCheckedGateway.d.ts +32 -0
- package/dist/gateway/generateCheckedGateway.js +293 -0
- package/dist/gateway/generateComposedGateway.d.ts +16 -0
- package/dist/gateway/generateComposedGateway.js +65 -0
- package/dist/gateway/generateGateway.d.ts +0 -1
- package/dist/gateway/generateGateway.js +1 -0
- package/dist/gateway/generators.d.ts +0 -1
- package/dist/gateway/generators.js +19 -4
- package/dist/gateway/helpers.d.ts +1 -1
- package/dist/gateway/helpers.js +15 -0
- package/dist/generation/componentShape.d.ts +14 -0
- package/dist/generation/componentShape.js +293 -0
- package/dist/generation/preamble.d.ts +0 -1
- package/dist/generation/sourceLayout.d.ts +13 -0
- package/dist/generation/sourceLayout.js +40 -0
- package/dist/generation/writeGeneratedSource.d.ts +0 -1
- package/dist/index.d.ts +11 -2
- package/dist/index.js +4 -1
- package/dist/loader/fetch.d.ts +0 -1
- package/dist/loader/orderedSyntax.d.ts +12 -1
- package/dist/loader/orderedSyntax.js +40 -6
- package/dist/loader/resolutionDepth.d.ts +0 -1
- package/dist/loader/schemaInput.d.ts +28 -1
- package/dist/loader/schemaInput.js +41 -4
- package/dist/loader/schemaResources.d.ts +2 -1
- package/dist/loader/schemaResources.js +45 -4
- package/dist/loader/wsdlLoader.d.ts +0 -1
- package/dist/multiServicePipeline.d.ts +41 -0
- package/dist/multiServicePipeline.js +287 -0
- package/dist/openapi/casing.d.ts +0 -1
- package/dist/openapi/composeOpenAPI.d.ts +29 -0
- package/dist/openapi/composeOpenAPI.js +322 -0
- package/dist/openapi/generateOpenAPI.d.ts +0 -1
- package/dist/openapi/generatePaths.d.ts +0 -1
- package/dist/openapi/generateSchemas.d.ts +0 -1
- package/dist/openapi/security.d.ts +0 -1
- package/dist/pipeline.d.ts +7 -3
- package/dist/pipeline.js +15 -0
- package/dist/test/generateCheckedTests.d.ts +17 -0
- package/dist/test/generateCheckedTests.js +60 -0
- package/dist/test/generateTests.d.ts +0 -1
- package/dist/test/generators.d.ts +0 -1
- package/dist/test/mockData.d.ts +0 -1
- package/dist/test/mockData.js +20 -14
- package/dist/util/attributeWildcards.d.ts +0 -1
- package/dist/util/builder.d.ts +0 -1
- package/dist/util/catalogMeta.d.ts +0 -1
- package/dist/util/checkedCliDiagnostics.d.ts +11 -0
- package/dist/util/checkedCliDiagnostics.js +22 -0
- package/dist/util/cli.d.ts +0 -1
- package/dist/util/errors.d.ts +0 -1
- package/dist/util/imports.d.ts +0 -1
- package/dist/util/runtimeSource.d.ts +0 -1
- package/dist/util/runtimeSource.js +3 -5
- package/dist/util/securityConfig.d.ts +0 -1
- package/dist/util/streamConfig.d.ts +0 -1
- package/dist/util/tools.d.ts +0 -1
- package/dist/util/xmlWhitespace.d.ts +0 -1
- package/dist/xsd/primitives.d.ts +0 -1
- package/docs/agent-skill.md +12 -1
- package/docs/api-reference.md +127 -9
- package/docs/checked-gateway.md +212 -0
- package/docs/checked-generation.md +167 -0
- package/docs/cli-reference.md +48 -6
- package/docs/concepts.md +139 -5
- package/docs/configuration.md +15 -4
- package/docs/corpus.md +33 -0
- package/docs/direct-values.md +13 -13
- package/docs/examples/checked-forecast.wsdl +19 -0
- package/docs/gateway-guide.md +104 -27
- package/docs/generated-code.md +22 -11
- package/docs/mapping-contract.md +114 -0
- package/docs/migration-playbook.md +5 -1
- package/docs/migration.md +124 -6
- package/docs/output-anatomy.md +21 -18
- package/docs/production.md +7 -5
- package/docs/start-here.md +19 -3
- package/docs/supported-patterns.md +24 -3
- package/docs/testing.md +119 -31
- package/docs/troubleshooting.md +3 -1
- package/llms.txt +16 -8
- package/package.json +64 -23
- package/src/runtime/checkedGatewayHost.tpl.txt +157 -0
- package/src/runtime/clientStreamMethods.tpl.txt +156 -148
- package/src/runtime/operationsStreamHelper.tpl.txt +6 -6
- package/src/runtime/streamXml.ts +49 -21
- package/dist/app/generateApp.d.ts.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/client/checkedDirectRuntime.d.ts.map +0 -1
- package/dist/client/directClientRuntime.d.ts.map +0 -1
- package/dist/client/directClientVersion.d.ts.map +0 -1
- package/dist/client/generateClient.d.ts.map +0 -1
- package/dist/client/generateDirectClient.d.ts.map +0 -1
- package/dist/client/generateOperations.d.ts.map +0 -1
- package/dist/client/generateTypes.d.ts.map +0 -1
- package/dist/client/generateUtils.d.ts.map +0 -1
- package/dist/compiler/buildCanonicalGraph.d.ts.map +0 -1
- package/dist/compiler/canonicalGraph.d.ts.map +0 -1
- package/dist/compiler/catalogErrors.d.ts.map +0 -1
- package/dist/compiler/catalogProvenance.d.ts.map +0 -1
- package/dist/compiler/checkedAssessment.d.ts.map +0 -1
- package/dist/compiler/checkedSourcePreparation.d.ts.map +0 -1
- package/dist/compiler/complexTypeContent.d.ts.map +0 -1
- package/dist/compiler/composeCanonicalGraph.d.ts.map +0 -1
- package/dist/compiler/dataOwnership.d.ts.map +0 -1
- package/dist/compiler/datatypeValues.d.ts.map +0 -1
- package/dist/compiler/directCodec.d.ts.map +0 -1
- package/dist/compiler/directExecutionPolicy.d.ts.map +0 -1
- package/dist/compiler/directOperation.d.ts.map +0 -1
- package/dist/compiler/directSoap.d.ts.map +0 -1
- package/dist/compiler/directSoapSource.d.ts.map +0 -1
- package/dist/compiler/directSourceCapsule.d.ts.map +0 -1
- package/dist/compiler/directStructure.d.ts.map +0 -1
- package/dist/compiler/directStructurePlan.d.ts.map +0 -1
- package/dist/compiler/directValues.d.ts.map +0 -1
- package/dist/compiler/finiteRe01Verification.d.ts.map +0 -1
- package/dist/compiler/generateCatalog.d.ts.map +0 -1
- package/dist/compiler/graphTraversal.d.ts.map +0 -1
- package/dist/compiler/hypotheticalScopedIdentity.d.ts.map +0 -1
- package/dist/compiler/occurrenceAnalysis.d.ts.map +0 -1
- package/dist/compiler/originalSourceMembership.d.ts.map +0 -1
- package/dist/compiler/particleAttribution.d.ts.map +0 -1
- package/dist/compiler/particleDeclarationConsistency.d.ts.map +0 -1
- package/dist/compiler/particleExtension.d.ts.map +0 -1
- package/dist/compiler/particleLocalAssessment.d.ts.map +0 -1
- package/dist/compiler/particleRestriction.d.ts.map +0 -1
- package/dist/compiler/particleSemanticView.d.ts.map +0 -1
- package/dist/compiler/particleWildcardRelation.d.ts.map +0 -1
- package/dist/compiler/re01CandidateCorrespondence.d.ts.map +0 -1
- package/dist/compiler/re01TypeProperties.d.ts.map +0 -1
- package/dist/compiler/re01TypePropertyValidation.d.ts.map +0 -1
- package/dist/compiler/resolveCanonicalGraph.d.ts.map +0 -1
- package/dist/compiler/scalarSchemaAssessment.d.ts.map +0 -1
- package/dist/compiler/schemaAttributeGroupProperties.d.ts.map +0 -1
- package/dist/compiler/schemaAttributeProperties.d.ts.map +0 -1
- package/dist/compiler/schemaAttributeUses.d.ts.map +0 -1
- package/dist/compiler/schemaBinaryWordReconstruction.d.ts.map +0 -1
- package/dist/compiler/schemaBuiltinFacets.d.ts.map +0 -1
- package/dist/compiler/schemaCalendarImages.d.ts.map +0 -1
- package/dist/compiler/schemaCalendarLanguage.d.ts.map +0 -1
- package/dist/compiler/schemaCompiler.d.ts.map +0 -1
- package/dist/compiler/schemaComponentEquality.d.ts.map +0 -1
- package/dist/compiler/schemaConstructionAssessment.d.ts.map +0 -1
- package/dist/compiler/schemaDatatypeValues.d.ts.map +0 -1
- package/dist/compiler/schemaDecimalLanguage.d.ts.map +0 -1
- package/dist/compiler/schemaDeclarationPrimitives.d.ts.map +0 -1
- package/dist/compiler/schemaDocumentSyntax.d.ts.map +0 -1
- package/dist/compiler/schemaDurationLanguage.d.ts.map +0 -1
- package/dist/compiler/schemaElementProperties.d.ts.map +0 -1
- package/dist/compiler/schemaEndpointWordCapacity.d.ts.map +0 -1
- package/dist/compiler/schemaExactCalendar.d.ts.map +0 -1
- package/dist/compiler/schemaFacetAnnotation.d.ts.map +0 -1
- package/dist/compiler/schemaGeneratedScalarShape.d.ts.map +0 -1
- package/dist/compiler/schemaIdentityConstraints.d.ts.map +0 -1
- package/dist/compiler/schemaIeeeLanguage.d.ts.map +0 -1
- package/dist/compiler/schemaIntegerImages.d.ts.map +0 -1
- package/dist/compiler/schemaLexicalPredicates.d.ts.map +0 -1
- package/dist/compiler/schemaNotationProperties.d.ts.map +0 -1
- package/dist/compiler/schemaNumericImageConditions.d.ts.map +0 -1
- package/dist/compiler/schemaParticleWildcardProperties.d.ts.map +0 -1
- package/dist/compiler/schemaPattern.d.ts.map +0 -1
- package/dist/compiler/schemaRegularLanguage.d.ts.map +0 -1
- package/dist/compiler/schemaScalarContext.d.ts.map +0 -1
- package/dist/compiler/schemaScalarKernel.d.ts.map +0 -1
- package/dist/compiler/schemaScalarWitnesses.d.ts.map +0 -1
- package/dist/compiler/schemaSimpleTypeProperties.d.ts.map +0 -1
- package/dist/compiler/schemaSourceGrammar.d.ts.map +0 -1
- package/dist/compiler/schemaSourceLexical.d.ts.map +0 -1
- package/dist/compiler/schemaSourceValues.d.ts.map +0 -1
- package/dist/compiler/schemaSourceWildcards.d.ts.map +0 -1
- package/dist/compiler/schemaSymbolicSequences.d.ts.map +0 -1
- package/dist/compiler/schemaSymbolicValueSets.d.ts.map +0 -1
- package/dist/compiler/schemaSyntaxAssessment.d.ts.map +0 -1
- package/dist/compiler/schemaTemporalAliases.d.ts.map +0 -1
- package/dist/compiler/schemaTokenImages.d.ts.map +0 -1
- package/dist/compiler/schemaTypeIdentity.d.ts.map +0 -1
- package/dist/compiler/schemaTypeRelations.d.ts.map +0 -1
- package/dist/compiler/schemaUri.d.ts.map +0 -1
- package/dist/compiler/schemaValueContext.d.ts.map +0 -1
- package/dist/compiler/schemaValueImages.d.ts.map +0 -1
- package/dist/compiler/schemaValueSequences.d.ts.map +0 -1
- package/dist/compiler/semanticBudget.d.ts.map +0 -1
- package/dist/compiler/semanticCatalog.d.ts.map +0 -1
- package/dist/compiler/semanticContext.d.ts.map +0 -1
- package/dist/compiler/semanticTypeDependencies.d.ts.map +0 -1
- package/dist/compiler/semanticTypeReference.d.ts.map +0 -1
- package/dist/compiler/shapeResolver.d.ts.map +0 -1
- package/dist/compiler/sourceSchemaBinding.d.ts.map +0 -1
- package/dist/compiler/structuralCompanions.d.ts.map +0 -1
- package/dist/compiler/validateSemanticGraph.d.ts.map +0 -1
- package/dist/compiler/wildcardAlgebra.d.ts.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/gateway/generateGateway.d.ts.map +0 -1
- package/dist/gateway/generators.d.ts.map +0 -1
- package/dist/gateway/helpers.d.ts.map +0 -1
- package/dist/generation/preamble.d.ts.map +0 -1
- package/dist/generation/writeGeneratedSource.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/loader/fetch.d.ts.map +0 -1
- package/dist/loader/orderedSyntax.d.ts.map +0 -1
- package/dist/loader/resolutionDepth.d.ts.map +0 -1
- package/dist/loader/schemaInput.d.ts.map +0 -1
- package/dist/loader/schemaResources.d.ts.map +0 -1
- package/dist/loader/wsdlLoader.d.ts.map +0 -1
- package/dist/openapi/casing.d.ts.map +0 -1
- package/dist/openapi/generateOpenAPI.d.ts.map +0 -1
- package/dist/openapi/generatePaths.d.ts.map +0 -1
- package/dist/openapi/generateSchemas.d.ts.map +0 -1
- package/dist/openapi/security.d.ts.map +0 -1
- package/dist/pipeline.d.ts.map +0 -1
- package/dist/runtime/jsonArray.d.ts +0 -24
- package/dist/runtime/jsonArray.d.ts.map +0 -1
- package/dist/runtime/jsonArray.js +0 -52
- package/dist/runtime/ndjson.d.ts +0 -24
- package/dist/runtime/ndjson.d.ts.map +0 -1
- package/dist/runtime/ndjson.js +0 -30
- package/dist/runtime/streamXml.d.ts +0 -45
- package/dist/runtime/streamXml.d.ts.map +0 -1
- package/dist/runtime/streamXml.js +0 -212
- package/dist/test/generateTests.d.ts.map +0 -1
- package/dist/test/generators.d.ts.map +0 -1
- package/dist/test/mockData.d.ts.map +0 -1
- package/dist/util/attributeWildcards.d.ts.map +0 -1
- package/dist/util/builder.d.ts.map +0 -1
- package/dist/util/catalogMeta.d.ts.map +0 -1
- package/dist/util/cli.d.ts.map +0 -1
- package/dist/util/errors.d.ts.map +0 -1
- package/dist/util/imports.d.ts.map +0 -1
- package/dist/util/runtimeSource.d.ts.map +0 -1
- package/dist/util/securityConfig.d.ts.map +0 -1
- package/dist/util/streamConfig.d.ts.map +0 -1
- package/dist/util/tools.d.ts.map +0 -1
- package/dist/util/xmlWhitespace.d.ts.map +0 -1
- package/dist/xsd/primitives.d.ts.map +0 -1
- package/docs/AGENTS.md +0 -47
- package/docs/README.md +0 -69
- package/docs/architecture.md +0 -158
- package/docs/content-model-analysis.md +0 -92
- package/docs/content-model-baseline.md +0 -121
- package/docs/content-model-catalog.md +0 -116
- package/docs/content-model-companions.md +0 -90
- package/docs/content-model-composition.md +0 -103
- package/docs/content-model-decisions.md +0 -79
- package/docs/content-model-gateway-feasibility.md +0 -169
- package/docs/content-model-graph.md +0 -121
- package/docs/content-model-loading.md +0 -163
- package/docs/content-model-matching.md +0 -85
- package/docs/content-model-readiness.md +0 -144
- package/docs/content-model-resolution.md +0 -81
- package/docs/content-model-s02-handoff.md +0 -98
- package/docs/content-model-s06-au-01.md +0 -425
- package/docs/content-model-s06-dt-01.md +0 -386
- package/docs/content-model-s06-pw-01.md +0 -350
- package/docs/content-model-s06-re-01-resolver-implementation.md +0 -869
- package/docs/content-model-s06-re-01-resolver.md +0 -513
- package/docs/content-model-s06-re-01-scalar-witnesses.md +0 -1423
- package/docs/content-model-s06-re-01-support-reconstruction.md +0 -6337
- package/docs/content-model-s06-re-01.md +0 -7477
- package/docs/content-model-s06-research-handoff.md +0 -909
- package/docs/content-model-shipped-fix.md +0 -83
- package/docs/content-model-soap-feasibility.md +0 -165
- package/docs/decisions/001-test-generation.md +0 -36
- package/docs/decisions/002-streamable-responses.md +0 -332
- package/docs/decisions/003-content-model-contracts.md +0 -280
- package/docs/file-naming-and-path-organization.md +0 -213
- package/docs/reference-validation.md +0 -243
- package/docs/releases/README.md +0 -94
- package/docs/releases/v0.20.0.md +0 -22
- package/docs/releases/v0.21.0.md +0 -30
- package/docs/releases/v0.22.0.md +0 -30
- package/docs/releases/v0.23.0.md +0 -31
- package/docs/releases/v0.24.0.md +0 -38
- package/docs/releases/v0.25.0.md +0 -31
- package/docs/releases/v0.25.2.md +0 -32
- package/docs/releases/v0.26.0.md +0 -32
- package/docs/releases/v0.27.0.md +0 -31
- package/docs/releases/v0.28.0.md +0 -32
- package/docs/releases/v0.29.0.md +0 -32
- package/docs/releases/v0.30.0.md +0 -30
- package/docs/releases/v0.30.1.md +0 -31
- package/docs/releases/v0.30.2.md +0 -30
- package/docs/releases/v0.30.3.md +0 -33
- package/docs/releases/v0.31.0.md +0 -33
- package/docs/releases/v0.32.0.md +0 -33
- package/docs/releases/v0.33.0.md +0 -34
- package/docs/releases/v0.34.0.md +0 -30
- package/docs/releases/v0.35.0.md +0 -33
- package/docs/releases/v0.36.0.md +0 -32
- package/docs/releases/v0.37.0.md +0 -33
- package/docs/releases/v0.38.0.md +0 -35
- package/docs/releases/v0.39.0.md +0 -35
- package/docs/releases/v0.40.0.md +0 -45
- package/docs/releases/v0.40.1.md +0 -34
- package/docs/releases/v1.0.0.md +0 -42
- package/docs/releases/v1.0.1.md +0 -38
- package/docs/releases/v1.0.2.md +0 -51
- package/docs/releases/v1.0.3.md +0 -37
- package/docs/releases/v1.0.4.md +0 -45
- package/docs/releases/v1.0.5.md +0 -41
- package/docs/releases/v1.0.6.md +0 -35
- package/docs/releases/v1.0.7.md +0 -36
- package/docs/releases/v1.1.0.md +0 -42
- package/docs/releases/v1.1.1.md +0 -44
- package/docs/releases/v1.1.2.md +0 -42
- package/docs/releases/v1.1.3.md +0 -36
- package/docs/releases/v1.1.4.md +0 -36
- package/docs/releases/v1.1.5.md +0 -38
- package/docs/roadmap/README.md +0 -107
- package/docs/roadmap/v1.0-capability-conformance-framework.md +0 -582
- package/docs/roadmap/v1.0-choice-union-mode.md +0 -90
- package/docs/roadmap/v1.0-contract-audit.md +0 -75
- package/docs/roadmap/v1.0-json-array-streaming.md +0 -101
- package/docs/roadmap/v1.0-openapi-fastify-compatibility.md +0 -99
- package/docs/roadmap/v1.0-release-candidate-gates.md +0 -92
- package/docs/roadmap/v1.0-wsdl-coverage-matrix.md +0 -200
- package/docs/roadmap/v1.0-xs-anyattribute-wildcard-bag.md +0 -932
- package/src/runtime/jsonArray.ts +0 -55
- package/src/runtime/ndjson.ts +0 -32
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opt-in direct gateway orchestration over the existing native owners.
|
|
3
|
+
* @since Unreleased
|
|
4
|
+
* @see ../docs/decisions/003-content-model-contracts.md
|
|
5
|
+
*/
|
|
6
|
+
import fs from 'node:fs';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import { fileURLToPath } from 'node:url';
|
|
9
|
+
import { pathToFileURL } from 'node:url';
|
|
10
|
+
import { types } from 'node:util';
|
|
11
|
+
import { createHash } from 'node:crypto';
|
|
12
|
+
import { resolveResourceUri } from './loader/schemaResources.js';
|
|
13
|
+
import { selectComponentOperations, inspectDirectOperation } from './compiler/directOperation.js';
|
|
14
|
+
import { prepareComponentSourceForOperation } from './compiler/directSourceCapsule.js';
|
|
15
|
+
import { inspectComponentSourceService } from './compiler/directSourceCapsule.js';
|
|
16
|
+
import { generateComponentClient, writeComponentServiceClient } from './client/generateDirectClient.js';
|
|
17
|
+
import { copyOriginalSchemaResource, prepareSchemaSnapshotFiles } from './loader/schemaInput.js';
|
|
18
|
+
import { createApplicationBudget } from './compiler/semanticBudget.js';
|
|
19
|
+
import { directLoadingLimits } from './compiler/directExecutionPolicy.js';
|
|
20
|
+
import { generateComponentServiceGateway } from './gateway/generateCheckedGateway.js';
|
|
21
|
+
import { generateCheckedApp } from './app/generateCheckedApp.js';
|
|
22
|
+
import { generateCheckedTests } from './test/generateCheckedTests.js';
|
|
23
|
+
import { commonSourceDirectory, assertCanonicalSourceLayout } from './generation/sourceLayout.js';
|
|
24
|
+
import { createComponentRecordProjection, inspectComponentRecordProjection } from './compiler/componentRecordProjection.js';
|
|
25
|
+
import { acquireStandardSchemaLibrary, SCHEMA_ELEMENT_LIBRARY } from './compiler/standardSchemaComponents.js';
|
|
26
|
+
import { ComponentSoapPreparation } from './compiler/componentSoapPreparation.js';
|
|
27
|
+
import { parseApplicationGroups } from './compiler/applicationGroups.js';
|
|
28
|
+
import { inspectComponentValueMapping } from './compiler/directValues.js';
|
|
29
|
+
/** Read explicit component configuration without invoking getters or accepting unknown controls.
|
|
30
|
+
* @returns A copied configuration; all schema, mapping and operation decisions remain native duties.
|
|
31
|
+
* @throws TypeError For missing, malformed, duplicate or unsupported configuration.
|
|
32
|
+
*/
|
|
33
|
+
export function parseCheckedComponentOptions(value) {
|
|
34
|
+
return parseComponentOptions(value, true);
|
|
35
|
+
}
|
|
36
|
+
/** Validate caller choices before discovery without fabricating resolved identities.
|
|
37
|
+
* @param value Data-only optional choices.
|
|
38
|
+
* @returns Copied choices; absent selections remain absent.
|
|
39
|
+
* @throws TypeError For malformed or unsupported controls.
|
|
40
|
+
*/
|
|
41
|
+
export function parseCheckedComponentChoices(value) {
|
|
42
|
+
return parseComponentOptions(value, false);
|
|
43
|
+
}
|
|
44
|
+
function parseComponentOptions(value, resolved) {
|
|
45
|
+
const record = (input, allowed, required = allowed) => {
|
|
46
|
+
if (!input || typeof input !== 'object' || types.isProxy(input) || ![null, Object.prototype].includes(Object.getPrototypeOf(input)))
|
|
47
|
+
throw new TypeError('Data-only component configuration required');
|
|
48
|
+
const result = Object.create(null);
|
|
49
|
+
for (const key of Reflect.ownKeys(input)) {
|
|
50
|
+
const descriptor = Object.getOwnPropertyDescriptor(input, key);
|
|
51
|
+
if (typeof key !== 'string' || !allowed.includes(key) || !('value' in descriptor))
|
|
52
|
+
throw new TypeError('Unknown component configuration or accessor');
|
|
53
|
+
result[key] = descriptor.value;
|
|
54
|
+
}
|
|
55
|
+
if (required.some(key => !Object.hasOwn(result, key)))
|
|
56
|
+
throw new TypeError('Missing component configuration');
|
|
57
|
+
return result;
|
|
58
|
+
};
|
|
59
|
+
const array = (input) => {
|
|
60
|
+
if (!Array.isArray(input) || types.isProxy(input) || Reflect.ownKeys(input).length !== input.length + 1)
|
|
61
|
+
throw new TypeError('Dense component configuration array required');
|
|
62
|
+
const result = [];
|
|
63
|
+
for (let index = 0; index < input.length; index++) {
|
|
64
|
+
const descriptor = Object.getOwnPropertyDescriptor(input, String(index));
|
|
65
|
+
if (!descriptor || !('value' in descriptor))
|
|
66
|
+
throw new TypeError('Data-only component configuration array required');
|
|
67
|
+
result.push(descriptor.value);
|
|
68
|
+
}
|
|
69
|
+
return result;
|
|
70
|
+
};
|
|
71
|
+
const text = (input) => { if (typeof input !== 'string' || !input.length)
|
|
72
|
+
throw new TypeError('Nonempty configuration string required'); return input; };
|
|
73
|
+
const name = (input) => {
|
|
74
|
+
const n = record(input, ['namespace', 'local']);
|
|
75
|
+
if (typeof n.namespace !== 'string')
|
|
76
|
+
throw new TypeError('Namespace string required');
|
|
77
|
+
return { namespace: n.namespace, local: text(n.local) };
|
|
78
|
+
};
|
|
79
|
+
const selector = (input) => {
|
|
80
|
+
const s = record(input, ['portType', 'binding', 'operation']);
|
|
81
|
+
return { portType: name(s.portType), binding: name(s.binding), operation: text(s.operation) };
|
|
82
|
+
};
|
|
83
|
+
const libraries = (input) => {
|
|
84
|
+
const ids = array(input).map(text);
|
|
85
|
+
if (ids.some(id => id !== SCHEMA_ELEMENT_LIBRARY) || new Set(ids).size !== ids.length)
|
|
86
|
+
throw new TypeError('Known unique standard libraries required');
|
|
87
|
+
return ids.sort();
|
|
88
|
+
};
|
|
89
|
+
const data = record(value, ['selectors', 'service', 'port', 'fileRoots', 'sourceResources', 'sourceOrigins', 'sourceUri', 'namespaceLocations', 'basePath', 'signal', 'standardLibraries', 'recordProjections', 'applicationGroups'], resolved ? ['selectors', 'service', 'port', 'fileRoots', 'sourceResources', 'sourceOrigins'] : []);
|
|
90
|
+
if (['selectors', 'service', 'port', 'fileRoots', 'sourceResources', 'sourceOrigins'].some(key => Object.hasOwn(data, key) && data[key] === undefined))
|
|
91
|
+
throw new TypeError('Explicit component choices must not be undefined');
|
|
92
|
+
const selectors = data.selectors === undefined ? undefined : array(data.selectors).map(selector);
|
|
93
|
+
if (selectors && (!selectors.length || new Set(selectors.map(selector => JSON.stringify(selector))).size !== selectors.length))
|
|
94
|
+
throw new TypeError('Nonempty unique component selectors required');
|
|
95
|
+
const fileRoots = data.fileRoots === undefined ? undefined : array(data.fileRoots).map(text);
|
|
96
|
+
const sourceResources = data.sourceResources === undefined ? undefined : array(data.sourceResources).map(input => {
|
|
97
|
+
const r = record(input, ['uri', 'file', 'canonicalUri'], ['uri', 'file']);
|
|
98
|
+
return { uri: text(r.uri), file: text(r.file), ...(r.canonicalUri === undefined ? {} : { canonicalUri: resolveResourceUri(text(r.canonicalUri)) }) };
|
|
99
|
+
});
|
|
100
|
+
const sourceOrigins = data.sourceOrigins === undefined ? undefined : array(data.sourceOrigins).map(text);
|
|
101
|
+
const standardLibraries = data.standardLibraries === undefined ? undefined : libraries(data.standardLibraries);
|
|
102
|
+
const recordProjections = data.recordProjections === undefined ? undefined : array(data.recordProjections).map(input => {
|
|
103
|
+
const r = record(input, ['selector', 'source', 'recordSelector', 'spec', 'scope', 'recordPath', 'standardLibraries'], ['selector', 'source', 'recordSelector']);
|
|
104
|
+
const common = { selector: selector(r.selector), source: text(r.source), recordSelector: selector(r.recordSelector),
|
|
105
|
+
...(r.standardLibraries === undefined ? {} : { standardLibraries: libraries(r.standardLibraries) }) };
|
|
106
|
+
const path = (input) => { const names = array(input).map(name); if (!names.length)
|
|
107
|
+
throw new TypeError('Nonempty record path required'); return names; };
|
|
108
|
+
if (!Object.hasOwn(r, 'spec')) {
|
|
109
|
+
if (r.scope !== 'records-with-declared-wrapper-scope')
|
|
110
|
+
throw new TypeError('Explicit records-with-declared-wrapper-scope acknowledgement required');
|
|
111
|
+
return { ...common, scope: r.scope, ...(r.recordPath === undefined ? {} : { recordPath: path(r.recordPath) }) };
|
|
112
|
+
}
|
|
113
|
+
if (Object.hasOwn(r, 'scope') || Object.hasOwn(r, 'recordPath'))
|
|
114
|
+
throw new TypeError('Conflicting concise and complete record projection choices');
|
|
115
|
+
const s = record(r.spec, ['version', 'scope', 'payloadPath', 'recordPath', 'opaqueExclusions']);
|
|
116
|
+
if (s.version !== 'component-record-scope-v1' || s.scope !== 'records-with-declared-wrapper-scope')
|
|
117
|
+
throw new TypeError('Supported explicit record projection required');
|
|
118
|
+
const opaqueExclusions = array(s.opaqueExclusions).map(input => {
|
|
119
|
+
const e = record(input, ['path', 'reason']);
|
|
120
|
+
if (e.reason !== 'standard-schema-metadata' && e.reason !== 'wrapper-declaration-universe')
|
|
121
|
+
throw new TypeError('Explicit supported exclusion reason required');
|
|
122
|
+
return { path: path(e.path), reason: e.reason };
|
|
123
|
+
});
|
|
124
|
+
const spec = { version: 'component-record-scope-v1', scope: 'records-with-declared-wrapper-scope',
|
|
125
|
+
payloadPath: path(s.payloadPath), recordPath: path(s.recordPath), opaqueExclusions };
|
|
126
|
+
return { ...common, spec };
|
|
127
|
+
});
|
|
128
|
+
if (recordProjections) {
|
|
129
|
+
const keys = recordProjections.map(item => JSON.stringify(item.selector));
|
|
130
|
+
if (new Set(keys).size !== keys.length || selectors && keys.some(key => !selectors.some(selector => JSON.stringify(selector) === key)))
|
|
131
|
+
throw new TypeError('Record projections require unique requested outer selectors');
|
|
132
|
+
}
|
|
133
|
+
const namespaceLocations = data.namespaceLocations === undefined ? undefined : array(data.namespaceLocations).map(input => {
|
|
134
|
+
const r = record(input, ['namespace', 'location']);
|
|
135
|
+
if (typeof r.namespace !== 'string')
|
|
136
|
+
throw new TypeError('Namespace string required');
|
|
137
|
+
return { namespace: r.namespace, location: text(r.location) };
|
|
138
|
+
});
|
|
139
|
+
const basePath = data.basePath === undefined ? undefined : text(data.basePath);
|
|
140
|
+
if (basePath && (!basePath.startsWith('/') || basePath.endsWith('/') || basePath.split('/').slice(1).some(segment => !/^(?:[A-Za-z0-9._~-]|%[0-9A-Fa-f]{2})+$/.test(segment))))
|
|
141
|
+
throw new TypeError('Literal nonempty route prefix required');
|
|
142
|
+
if (data.signal !== undefined && !(data.signal instanceof AbortSignal))
|
|
143
|
+
throw new TypeError('Native AbortSignal required');
|
|
144
|
+
return { ...(selectors ? { selectors } : {}), ...(data.service === undefined ? {} : { service: name(data.service) }),
|
|
145
|
+
...(Object.hasOwn(data, 'applicationGroups') ? { applicationGroups: parseApplicationGroups(data.applicationGroups) } : {}),
|
|
146
|
+
...(data.port === undefined ? {} : { port: text(data.port) }), ...(fileRoots ? { fileRoots } : {}),
|
|
147
|
+
...(sourceResources ? { sourceResources } : {}), ...(sourceOrigins ? { sourceOrigins } : {}),
|
|
148
|
+
...(data.sourceUri === undefined ? {} : { sourceUri: resolveResourceUri(text(data.sourceUri)) }),
|
|
149
|
+
...(standardLibraries ? { standardLibraries } : {}), ...(recordProjections ? { recordProjections } : {}),
|
|
150
|
+
...(namespaceLocations ? { namespaceLocations } : {}), ...(basePath ? { basePath } : {}), ...(data.signal ? { signal: data.signal } : {}) };
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Generate the bounded preview without creating a flattened catalog authority.
|
|
154
|
+
* @param opts Public pipeline options with the checked model explicitly selected.
|
|
155
|
+
* @returns Documentation and an operation inventory; no native authority is serialized as a report.
|
|
156
|
+
* @throws Error Before emission for unsupported controls or failed native qualification.
|
|
157
|
+
* @sideEffects Writes generator-owned artifacts and preserves existing scaffolds unless forced.
|
|
158
|
+
*/
|
|
159
|
+
export async function runCheckedPipeline(opts) {
|
|
160
|
+
const model = 'checked-components-v1';
|
|
161
|
+
if (opts.catalogOut !== undefined && opts.catalogOut !== '')
|
|
162
|
+
throw new Error(`${model} does not accept legacy catalog output`);
|
|
163
|
+
if (opts.test && !opts.app)
|
|
164
|
+
throw new Error('Checked scaffold tests require app generation');
|
|
165
|
+
if (!opts.clientOutDir || !opts.gateway?.outDir || !opts.openapi?.outFile) {
|
|
166
|
+
throw new Error(`${model} requires explicit client, OpenAPI and gateway outputs`);
|
|
167
|
+
}
|
|
168
|
+
if (opts.streamConfig || opts.streamConfigFile || opts.compiler && Object.keys(opts.compiler).length) {
|
|
169
|
+
throw new Error(`${model} does not accept legacy compiler or streaming controls`);
|
|
170
|
+
}
|
|
171
|
+
const rejectExtra = (v, allowed) => {
|
|
172
|
+
if (v && Object.entries(v).some(([k, val]) => val !== undefined && !allowed.includes(k))) {
|
|
173
|
+
throw new Error('Unsupported checked pipeline stage control; use the documented checked options');
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
rejectExtra(opts.openapi, ['outFile']);
|
|
177
|
+
rejectExtra(opts.gateway, ['outDir', 'versionSlug', 'serviceSlug']);
|
|
178
|
+
rejectExtra(opts.app, ['appDir', 'force', 'host', 'port']);
|
|
179
|
+
rejectExtra(opts.test, ['testDir', 'force']);
|
|
180
|
+
const { versionSlug, serviceSlug } = opts.gateway;
|
|
181
|
+
if (![versionSlug, serviceSlug].every(s => /^[A-Za-z0-9_-]+$/.test(s)))
|
|
182
|
+
throw new Error('Checked route slugs must use letters, digits, underscores or hyphens');
|
|
183
|
+
const clientDir = path.resolve(opts.clientOutDir), gatewayDir = path.resolve(opts.gateway.outDir);
|
|
184
|
+
const openapiFile = path.resolve(opts.openapi.outFile);
|
|
185
|
+
const outputs = [clientDir, gatewayDir, openapiFile, ...(opts.test ? [path.resolve(opts.test.testDir)] : [])];
|
|
186
|
+
if (opts.app) {
|
|
187
|
+
const appDir = path.resolve(opts.app.appDir);
|
|
188
|
+
if (outputs.some(p => { const relative = path.relative(appDir, p); return !relative || relative.startsWith('..') || path.isAbsolute(relative); })) {
|
|
189
|
+
throw new Error('Checked project client, gateway, OpenAPI and tests must be within appDir');
|
|
190
|
+
}
|
|
191
|
+
const reserved = new Set(['server.ts', 'package.json', 'tsconfig.json', 'readme.md', '.gitignore',
|
|
192
|
+
'checked-gateway.example.json', 'checked-gateway.local.json', 'dist', 'node_modules', '.git']);
|
|
193
|
+
if (outputs.some(p => reserved.has(path.relative(appDir, p).split(path.sep)[0].toLowerCase()))) {
|
|
194
|
+
throw new Error('Checked artifact outputs must not occupy scaffold files or build/dependency directories');
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
for (const [i, output] of outputs.entries()) {
|
|
198
|
+
for (const other of outputs.slice(i + 1)) {
|
|
199
|
+
const a = path.relative(output, other), b = path.relative(other, output);
|
|
200
|
+
if (!a || !a.startsWith('..') && !path.isAbsolute(a) || !b.startsWith('..') && !path.isAbsolute(b)) {
|
|
201
|
+
throw new Error('Checked artifact output locations must not overlap');
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
const layout = { clientDir, gatewayDir, openapiFile, basePath: `/${versionSlug}/${serviceSlug}` };
|
|
206
|
+
const planning = await (await import('./checkedPlanning.js')).prepareCheckedComponentPlan(opts.wsdl, opts.checkedComponents, layout);
|
|
207
|
+
if (!planning.native || !planning.config)
|
|
208
|
+
throw new (await import('./checkedPlanning.js')).CheckedPlanningError(planning.report);
|
|
209
|
+
return runComponentStages(opts, planning.config, { clientDir, gatewayDir, openapiFile,
|
|
210
|
+
basePath: planning.config.basePath ?? `/${versionSlug}/${serviceSlug}` }, planning.native, planning.report);
|
|
211
|
+
}
|
|
212
|
+
/** Prepare through native owners only; internal handles remain within this invocation. */
|
|
213
|
+
export async function prepareComponentStages(wsdl, config, acquired, outputs = { clientDir: 'client', gatewayDir: 'gateway', openapiFile: 'openapi.json', basePath: '/v1/service' }) {
|
|
214
|
+
const tick = () => { if (config.signal?.aborted)
|
|
215
|
+
throw new Error('Checked component generation cancelled'); };
|
|
216
|
+
const namespaces = new Map(config.namespaceLocations?.map(location => [location.namespace, location.location]));
|
|
217
|
+
if (namespaces.size !== (config.namespaceLocations?.length ?? 0))
|
|
218
|
+
throw new TypeError('Duplicate namespace location');
|
|
219
|
+
const budget = createApplicationBudget();
|
|
220
|
+
const loading = { policy: {
|
|
221
|
+
fileRoots: config.fileRoots, allowedOrigins: config.sourceOrigins
|
|
222
|
+
}, namespaceLocations: namespaces,
|
|
223
|
+
limits: directLoadingLimits(budget), signal: config.signal, chargeWork: (amount) => { tick(); budget.chargeWork(amount); } };
|
|
224
|
+
const offlineResources = acquired ? new Map([...acquired.resourceAliases].map(([alias, uri]) => {
|
|
225
|
+
const resource = acquired.resources.find(r => r.uri === uri);
|
|
226
|
+
return [alias, { bytes: copyOriginalSchemaResource(acquired, uri, loading.chargeWork), digest: resource.digest, canonicalUri: uri }];
|
|
227
|
+
})) : undefined;
|
|
228
|
+
const prepared = acquired ? { source: resolveResourceUri(wsdl), loading: { ...loading, offlineResources } }
|
|
229
|
+
: await prepareSchemaSnapshotFiles(wsdl, config.sourceResources, { ...loading, sourceUri: config.sourceUri });
|
|
230
|
+
const selected = await selectComponentOperations(config.sourceUri ?? prepared.source, config.selectors, { loading: prepared.loading, signal: config.signal,
|
|
231
|
+
standardLibraries: config.standardLibraries?.map(acquireStandardSchemaLibrary) });
|
|
232
|
+
const refusals = selected.flatMap((result, index) => result.kind === 'selected' ? [] : [{ selector: config.selectors[index], kind: result.kind, rule: result.rule, dimension: 'qualification-and-correspondence' }]);
|
|
233
|
+
const expected = [];
|
|
234
|
+
const projections = new Map();
|
|
235
|
+
const groups = new Map();
|
|
236
|
+
for (const projection of config.recordProjections ?? []) {
|
|
237
|
+
const key = JSON.stringify([resolveResourceUri(projection.source), projection.standardLibraries ?? []]);
|
|
238
|
+
const group = groups.get(key) ?? [];
|
|
239
|
+
group.push(projection);
|
|
240
|
+
groups.set(key, group);
|
|
241
|
+
}
|
|
242
|
+
for (const group of groups.values()) {
|
|
243
|
+
tick();
|
|
244
|
+
const first = group[0];
|
|
245
|
+
const source = await prepareSchemaSnapshotFiles(first.source, config.sourceResources, { policy: {
|
|
246
|
+
fileRoots: config.fileRoots, allowedOrigins: config.sourceOrigins
|
|
247
|
+
}, namespaceLocations: namespaces,
|
|
248
|
+
limits: directLoadingLimits(budget), signal: config.signal, chargeWork: amount => { tick(); budget.chargeWork(amount); } });
|
|
249
|
+
const companions = await selectComponentOperations(source.source, group.map(item => item.recordSelector), { loading: source.loading,
|
|
250
|
+
signal: config.signal, standardLibraries: first.standardLibraries?.map(acquireStandardSchemaLibrary) });
|
|
251
|
+
for (const [index, entry] of group.entries()) {
|
|
252
|
+
tick();
|
|
253
|
+
const companion = companions[index], outer = selected[config.selectors.findIndex(selector => JSON.stringify(selector) === JSON.stringify(entry.selector))];
|
|
254
|
+
if (outer.kind !== 'selected')
|
|
255
|
+
continue;
|
|
256
|
+
if (companion.kind !== 'selected') {
|
|
257
|
+
refusals.push({ selector: entry.selector, kind: companion.kind, rule: `record-source:${companion.rule}`, dimension: 'mapping-and-artifact' });
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
const native = createComponentRecordProjection(outer.contract, companion.contract, entry.spec ?? {
|
|
261
|
+
scope: entry.scope, ...(entry.recordPath ? { recordPath: entry.recordPath } : {})
|
|
262
|
+
}, { signal: config.signal });
|
|
263
|
+
if (native.kind !== 'component-record-projection') {
|
|
264
|
+
refusals.push({ selector: entry.selector, kind: native.kind, rule: native.rule, dimension: 'mapping-and-artifact' });
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
projections.set(JSON.stringify(entry.selector), native);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
const preparation = new ComponentSoapPreparation();
|
|
271
|
+
for (const result of selected) {
|
|
272
|
+
tick();
|
|
273
|
+
if (result.kind !== 'selected')
|
|
274
|
+
continue;
|
|
275
|
+
const projection = projections.get(JSON.stringify(result.contract.selector));
|
|
276
|
+
if (!projection && config.recordProjections?.some(entry => JSON.stringify(entry.selector) === JSON.stringify(result.contract.selector)))
|
|
277
|
+
continue;
|
|
278
|
+
const native = await prepareComponentSourceForOperation(result.contract, { service: config.service, port: config.port }, preparation, config.signal, projection, config.applicationGroups);
|
|
279
|
+
if (native.kind !== 'reconstructed-component') {
|
|
280
|
+
refusals.push({ selector: result.contract.selector, kind: native.kind, rule: native.rule, dimension: 'mapping-and-artifact' });
|
|
281
|
+
continue;
|
|
282
|
+
}
|
|
283
|
+
expected.push(native);
|
|
284
|
+
}
|
|
285
|
+
const groupTargets = new Map(), groupRecords = new Map();
|
|
286
|
+
for (const operation of expected)
|
|
287
|
+
for (const mapping of operation.mappings) {
|
|
288
|
+
if (mapping.kind !== 'component-mapping')
|
|
289
|
+
continue;
|
|
290
|
+
const groups = inspectComponentValueMapping(mapping, operation.contract).applicationGroups;
|
|
291
|
+
for (const target of groups?.targets ?? [])
|
|
292
|
+
groupTargets.set(target.target, target);
|
|
293
|
+
for (const record of groups?.dispositions ?? [])
|
|
294
|
+
groupRecords.set(record.source, record);
|
|
295
|
+
}
|
|
296
|
+
if (config.applicationGroups) {
|
|
297
|
+
for (const [index, item] of (config.applicationGroups.names ?? []).entries())
|
|
298
|
+
if (!groupTargets.has(item.target))
|
|
299
|
+
throw new TypeError(`applicationGroups.names[${index}]: unknown, stale or retained-ordered target ${item.target}`);
|
|
300
|
+
const types = new Map();
|
|
301
|
+
for (const target of groupTargets.values()) {
|
|
302
|
+
const previous = types.get(target.resolved.typeName);
|
|
303
|
+
if (previous && previous !== target.target)
|
|
304
|
+
throw new TypeError(`applicationGroups ${target.source}: typeName collision ${target.resolved.typeName}`);
|
|
305
|
+
types.set(target.resolved.typeName, target.target);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
const applicationGroups = config.applicationGroups ? { targets: [...groupTargets.values()].sort((a, b) => a.target.localeCompare(b.target, 'en')),
|
|
309
|
+
records: [...groupRecords.values()].sort((a, b) => a.source.localeCompare(b.source, 'en')) } : undefined;
|
|
310
|
+
let layout;
|
|
311
|
+
const generatedClients = [];
|
|
312
|
+
let gateway;
|
|
313
|
+
if (!refusals.length) {
|
|
314
|
+
try {
|
|
315
|
+
layout = prepareComponentLayout(expected, projections, tick);
|
|
316
|
+
}
|
|
317
|
+
catch (error) {
|
|
318
|
+
refusals.push({ selector: config.selectors[0], kind: config.signal?.aborted ? 'cancelled' : 'unsupported',
|
|
319
|
+
rule: error instanceof Error ? error.message : 'source-relocation', dimension: 'mapping-and-artifact' });
|
|
320
|
+
}
|
|
321
|
+
for (const operation of inspectComponentSourceService(expected)) {
|
|
322
|
+
tick();
|
|
323
|
+
const generated = await generateComponentClient(operation, config.signal);
|
|
324
|
+
if (generated.kind !== 'generated-component-client')
|
|
325
|
+
refusals.push({ selector: operation.contract.selector, kind: generated.kind, rule: generated.rule, dimension: 'mapping-and-artifact' });
|
|
326
|
+
else
|
|
327
|
+
generatedClients.push(generated);
|
|
328
|
+
}
|
|
329
|
+
if (!refusals.length) {
|
|
330
|
+
try {
|
|
331
|
+
gateway = await generateComponentServiceGateway(expected, { ...outputs, basePath: config.basePath ?? outputs.basePath, signal: config.signal, emit: false });
|
|
332
|
+
}
|
|
333
|
+
catch (error) {
|
|
334
|
+
const exhausted = expected.some(operation => inspectDirectOperation(operation.contract).context.budget.exhausted());
|
|
335
|
+
if (!config.signal?.aborted && !exhausted)
|
|
336
|
+
throw error;
|
|
337
|
+
for (const operation of expected)
|
|
338
|
+
refusals.push({ selector: operation.contract.selector,
|
|
339
|
+
kind: exhausted ? 'resource-limit' : 'cancelled', rule: exhausted ? 'request-budget' : 'cooperative-cancellation', dimension: 'mapping-and-artifact' });
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return { expected, projections, namespaces, refusals, layout, generatedClients, gateway, applicationGroups };
|
|
344
|
+
}
|
|
345
|
+
function prepareComponentLayout(expected, projections, tick) {
|
|
346
|
+
const inspection = inspectDirectOperation(expected[0].contract), input = inspection.source;
|
|
347
|
+
const inputs = new Set([input]);
|
|
348
|
+
for (const projection of projections.values())
|
|
349
|
+
inputs.add(inspectDirectOperation(inspectComponentRecordProjection(projection).companion).source);
|
|
350
|
+
const resources = new Map();
|
|
351
|
+
for (const source of inputs) {
|
|
352
|
+
// @constraints Local symlink aliases still require explicit consumer configuration; HTTP aliases are recorded offline.
|
|
353
|
+
assertCanonicalSourceLayout(source, tick);
|
|
354
|
+
for (const resource of source.resources) {
|
|
355
|
+
tick();
|
|
356
|
+
const previous = resources.get(resource.uri);
|
|
357
|
+
if (previous && (previous.resource.digest !== resource.digest || !Buffer.from(copyOriginalSchemaResource(previous.input, resource.uri, tick))
|
|
358
|
+
.equals(Buffer.from(copyOriginalSchemaResource(source, resource.uri, tick)))))
|
|
359
|
+
throw new Error('Conflicting original source snapshots');
|
|
360
|
+
resources.set(resource.uri, { input: source, resource });
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
const allResources = [...resources.values()].map(entry => entry.resource).sort((a, b) => a.uri < b.uri ? -1 : a.uri > b.uri ? 1 : 0);
|
|
364
|
+
const files = allResources.filter(resource => new URL(resource.uri).protocol === 'file:');
|
|
365
|
+
const common = files.length ? commonSourceDirectory(fileURLToPath(files[0].uri), files.map(resource => fileURLToPath(resource.uri)), tick) : '';
|
|
366
|
+
return { inspection, input, resources, allResources, common };
|
|
367
|
+
}
|
|
368
|
+
async function runComponentStages(opts, config, outputs, native, report) {
|
|
369
|
+
const { expected, projections, namespaces } = native;
|
|
370
|
+
const tick = () => { if (config.signal?.aborted)
|
|
371
|
+
throw new Error('Checked component generation cancelled'); };
|
|
372
|
+
const { clientDir, gatewayDir, openapiFile, basePath } = outputs;
|
|
373
|
+
if (!native.layout)
|
|
374
|
+
throw new TypeError('Prepared source layout required');
|
|
375
|
+
const { inspection, input, resources, allResources, common } = native.layout;
|
|
376
|
+
const copied = new Map();
|
|
377
|
+
const destinations = new Set();
|
|
378
|
+
for (const resource of allResources) {
|
|
379
|
+
const destination = new URL(resource.uri).protocol === 'file:'
|
|
380
|
+
? path.join(clientDir, 'source', 'files', path.relative(common, fileURLToPath(resource.uri)))
|
|
381
|
+
: path.join(clientDir, 'source', 'metadata', createHash('sha256').update(resource.uri).digest('hex') + '.xml');
|
|
382
|
+
const key = process.platform === 'win32' ? destination.toLowerCase() : destination;
|
|
383
|
+
if (destinations.has(key))
|
|
384
|
+
throw new Error('Conflicting copied source destinations');
|
|
385
|
+
destinations.add(key);
|
|
386
|
+
copied.set(resource.uri, destination);
|
|
387
|
+
}
|
|
388
|
+
const root = copied.get(input.root.uri);
|
|
389
|
+
const relocated = (uri) => new URL(uri).protocol === 'file:' && copied.has(uri) ? pathToFileURL(copied.get(uri)).href : uri;
|
|
390
|
+
const sourceResources = allResources
|
|
391
|
+
.filter(resource => resource.uri !== input.root.uri || new URL(resource.uri).protocol !== 'file:')
|
|
392
|
+
.map(resource => ({ uri: relocated(resource.uri), file: copied.get(resource.uri) }));
|
|
393
|
+
for (const { input: source } of resources.values())
|
|
394
|
+
for (const [alias, uri] of source.resourceAliases) {
|
|
395
|
+
if (alias !== uri && !sourceResources.some(r => r.uri === alias))
|
|
396
|
+
sourceResources.push({ uri: alias, file: copied.get(uri), canonicalUri: relocated(uri) });
|
|
397
|
+
}
|
|
398
|
+
sourceResources.sort((a, b) => a.uri < b.uri ? -1 : a.uri > b.uri ? 1 : 0);
|
|
399
|
+
const namespaceLocations = [...namespaces].map(([namespace, location]) => ({ namespace,
|
|
400
|
+
location: relocated(resolveResourceUri(location)) }));
|
|
401
|
+
tick();
|
|
402
|
+
const contracts = await writeComponentServiceClient(expected, clientDir, config.signal, native.generatedClients);
|
|
403
|
+
for (const resource of allResources) {
|
|
404
|
+
tick();
|
|
405
|
+
const file = copied.get(resource.uri);
|
|
406
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
407
|
+
fs.writeFileSync(file, copyOriginalSchemaResource(resources.get(resource.uri).input, resource.uri, amount => inspection.context.budget.chargeWork(amount)));
|
|
408
|
+
}
|
|
409
|
+
const sourceRecords = allResources.map(resource => ({ originalUri: resource.uri,
|
|
410
|
+
logicalUri: relocated(resource.uri), file: path.relative(clientDir, copied.get(resource.uri)).replaceAll('\\', '/'), digest: resource.digest,
|
|
411
|
+
aliases: [...new Set([...resources.values()].flatMap(({ input: source }) => [...source.resourceAliases]
|
|
412
|
+
.filter(([alias, uri]) => uri === resource.uri && alias !== uri).map(([alias]) => alias)))].sort() }));
|
|
413
|
+
if (!native.gateway)
|
|
414
|
+
throw new TypeError('Prepared gateway required');
|
|
415
|
+
const { doc, routes } = native.gateway;
|
|
416
|
+
await native.gateway.emit();
|
|
417
|
+
const operations = [...config.selectors.flatMap(selector => report.operations.filter(o => o.binding && JSON.stringify(o.portType) === JSON.stringify(selector.portType)
|
|
418
|
+
&& JSON.stringify(o.binding) === JSON.stringify(selector.binding) && o.operation === selector.operation)), ...report.operations.filter(o => !o.selected)]
|
|
419
|
+
.map(operation => ({ ...operation, generated: operation.selected, executed: false, status: operation.selected ? 'generated' : 'unselected-not-assessed' }));
|
|
420
|
+
const inventory = { model: 'checked-components-v1', assurance: 'native-component-source-and-mapping', admitted: false,
|
|
421
|
+
...(native.applicationGroups ? { applicationGroups: native.applicationGroups } : {}),
|
|
422
|
+
selection: { selector: config.selectors[0], selectors: config.selectors, service: config.service, port: config.port }, operations };
|
|
423
|
+
fs.writeFileSync(path.join(clientDir, 'inventory.json'), JSON.stringify(inventory, null, 2) + '\n');
|
|
424
|
+
const component = { source: root, capsules: Object.fromEntries(Object.entries(contracts).map(([name, file]) => [name, path.resolve(clientDir, file)])),
|
|
425
|
+
sourceResources, sourceOrigins: config.sourceOrigins, ...(new URL(input.root.uri).protocol === 'file:' ? {} : { sourceUri: input.root.uri }),
|
|
426
|
+
...(namespaceLocations.length ? { namespaceLocations } : {}),
|
|
427
|
+
...(projections.size ? { recordSources: expected.filter(item => item.responseProjection).map(item => ({ selector: item.contract.selector,
|
|
428
|
+
source: copied.get(inspectDirectOperation(inspectComponentRecordProjection(item.responseProjection).companion).source.root.uri) })) } : {}),
|
|
429
|
+
...((config.standardLibraries?.length || config.recordProjections?.some(item => item.standardLibraries?.length))
|
|
430
|
+
? { standardLibraries: [...new Set([...(config.standardLibraries ?? []), ...(config.recordProjections ?? []).flatMap(item => item.standardLibraries ?? [])])].sort() } : {}) };
|
|
431
|
+
const relativeFile = (file) => path.relative(clientDir, file).replaceAll('\\', '/') || '.';
|
|
432
|
+
const logical = (uri) => new URL(uri).protocol === 'file:' ? relativeFile(fileURLToPath(uri)) : uri;
|
|
433
|
+
fs.writeFileSync(path.join(clientDir, 'source-resources.json'), JSON.stringify({ version: 'checked-source-resources-v2', resources: sourceRecords,
|
|
434
|
+
runtime: { localSource: relativeFile(component.source), fileRoots: ['.'],
|
|
435
|
+
capsuleFiles: Object.fromEntries(Object.entries(component.capsules).map(([name, file]) => [name, relativeFile(file)])),
|
|
436
|
+
sourceResources: component.sourceResources.map(resource => ({ uri: logical(resource.uri), file: relativeFile(resource.file),
|
|
437
|
+
...(resource.canonicalUri === undefined ? {} : { canonicalUri: logical(resource.canonicalUri) }) })), sourceOrigins: component.sourceOrigins,
|
|
438
|
+
...(component.sourceUri === undefined ? {} : { sourceUri: component.sourceUri }),
|
|
439
|
+
...(component.namespaceLocations ? { namespaceLocations: component.namespaceLocations.map(location => ({ ...location, location: logical(location.location) })) } : {}),
|
|
440
|
+
...(component.recordSources ? { recordSources: component.recordSources.map(record => ({ ...record, source: relativeFile(record.source) })) } : {}),
|
|
441
|
+
...(component.standardLibraries ? { standardLibraries: component.standardLibraries } : {}) } }, null, 2) + '\n');
|
|
442
|
+
if (opts.app)
|
|
443
|
+
await generateCheckedApp({ clientDir, gatewayDir, openapiFile, ...opts.app, component });
|
|
444
|
+
if (opts.test && opts.app)
|
|
445
|
+
await generateCheckedTests({ clientDir, appDir: opts.app.appDir, routePath: Object.values(routes)[0],
|
|
446
|
+
...opts.test, routePaths: Object.values(routes), sourceFile: root });
|
|
447
|
+
return { compiled: undefined, openapiDoc: doc, checked: inventory, planning: report };
|
|
448
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { prepareComponentStages } from './checkedPipeline.js';
|
|
2
|
+
import type { CheckedComponentOptions } from './checkedPipeline.js';
|
|
3
|
+
import type { DirectOperationSelector } from './compiler/directOperation.js';
|
|
4
|
+
import type { ExpandedName } from './loader/orderedSyntax.js';
|
|
5
|
+
type Category = 'missing-dependency' | 'permission' | 'ambiguous-selection' | 'invalid-source' | 'unsupported-capability' | 'inconclusive' | 'cancelled' | 'resource-limit' | 'operational-failure' | 'configuration';
|
|
6
|
+
export interface ComponentPlanBlocker {
|
|
7
|
+
readonly category: Category;
|
|
8
|
+
readonly stage: 'configuration' | 'loading' | 'selection' | 'native-preparation';
|
|
9
|
+
readonly dimension: 'source' | 'selection' | 'qualification-and-correspondence' | 'mapping-and-artifact';
|
|
10
|
+
readonly reason: string;
|
|
11
|
+
readonly source?: {
|
|
12
|
+
readonly resource: string;
|
|
13
|
+
readonly path: string;
|
|
14
|
+
readonly line: number;
|
|
15
|
+
readonly column: number;
|
|
16
|
+
};
|
|
17
|
+
readonly affected: readonly DirectOperationSelector[];
|
|
18
|
+
readonly action: string;
|
|
19
|
+
readonly pointer: string;
|
|
20
|
+
}
|
|
21
|
+
interface Candidate {
|
|
22
|
+
readonly service: ExpandedName;
|
|
23
|
+
readonly port: string;
|
|
24
|
+
readonly binding: ExpandedName;
|
|
25
|
+
readonly portType?: ExpandedName;
|
|
26
|
+
readonly source: NonNullable<ComponentPlanBlocker['source']>;
|
|
27
|
+
}
|
|
28
|
+
/** Versioned diagnostic data, with no portable native authority.
|
|
29
|
+
* @since Unreleased
|
|
30
|
+
*/
|
|
31
|
+
export interface CheckedComponentPlan {
|
|
32
|
+
readonly version: 'checked-component-plan-v1';
|
|
33
|
+
readonly model: 'checked-components-v1';
|
|
34
|
+
readonly scope: 'native-component-source-and-mapping';
|
|
35
|
+
readonly ready: boolean;
|
|
36
|
+
readonly executed: false;
|
|
37
|
+
readonly runtime: 'not-assessed-operation-invocation-required';
|
|
38
|
+
readonly dimensions: {
|
|
39
|
+
readonly sourceLegality: 'established' | 'disproved' | 'unassessed';
|
|
40
|
+
readonly correspondence: 'established' | 'unassessed';
|
|
41
|
+
readonly mapping: 'established' | 'unassessed';
|
|
42
|
+
readonly runtime: 'unassessed';
|
|
43
|
+
};
|
|
44
|
+
readonly inventory: {
|
|
45
|
+
readonly complete: boolean;
|
|
46
|
+
readonly unassessed: readonly string[];
|
|
47
|
+
readonly services: number;
|
|
48
|
+
readonly ports: number;
|
|
49
|
+
readonly bindings: number;
|
|
50
|
+
readonly portTypes: number;
|
|
51
|
+
readonly operations: number;
|
|
52
|
+
};
|
|
53
|
+
readonly candidates: readonly Candidate[];
|
|
54
|
+
readonly resources: readonly {
|
|
55
|
+
readonly resource: string;
|
|
56
|
+
readonly digest: string;
|
|
57
|
+
}[];
|
|
58
|
+
readonly selection?: {
|
|
59
|
+
readonly service: ExpandedName;
|
|
60
|
+
readonly port: string;
|
|
61
|
+
readonly selectors: readonly DirectOperationSelector[];
|
|
62
|
+
};
|
|
63
|
+
readonly responseProjections?: readonly {
|
|
64
|
+
readonly selector: DirectOperationSelector;
|
|
65
|
+
readonly spec: import('./compiler/componentRecordProjection.js').ComponentRecordProjectionSpec;
|
|
66
|
+
readonly delivery: 'buffered';
|
|
67
|
+
readonly retainedValue: 'complete-companion-payload';
|
|
68
|
+
}[];
|
|
69
|
+
readonly operations: readonly {
|
|
70
|
+
readonly portType: ExpandedName;
|
|
71
|
+
readonly binding?: ExpandedName;
|
|
72
|
+
readonly operation: string;
|
|
73
|
+
readonly requested: boolean;
|
|
74
|
+
readonly selected: boolean;
|
|
75
|
+
readonly generated: false;
|
|
76
|
+
readonly executed: false;
|
|
77
|
+
}[];
|
|
78
|
+
readonly blockers: readonly ComponentPlanBlocker[];
|
|
79
|
+
readonly resolution?: {
|
|
80
|
+
readonly instructions: string;
|
|
81
|
+
readonly configuration: Partial<CheckedComponentOptions>;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/** Refused generation retains actionable, serializable diagnostics.
|
|
85
|
+
* @since Unreleased
|
|
86
|
+
*/
|
|
87
|
+
export declare class CheckedPlanningError extends Error {
|
|
88
|
+
readonly report: CheckedComponentPlan;
|
|
89
|
+
constructor(report: CheckedComponentPlan);
|
|
90
|
+
}
|
|
91
|
+
/** Format deterministic human diagnostics without source bytes or transport details.
|
|
92
|
+
* @param report Diagnostic data only.
|
|
93
|
+
* @returns Summary and every independently collected blocker.
|
|
94
|
+
*/
|
|
95
|
+
export declare function formatCheckedComponentPlan(report: CheckedComponentPlan): string;
|
|
96
|
+
/** Inspect a WSDL using the same native preparation as generation, without writing or dispatching.
|
|
97
|
+
* @param source WSDL file or HTTP(S) root; declared dependencies remain subject to native policy.
|
|
98
|
+
* @param choices Partial explicit configuration; only missing unambiguous selections are inferred.
|
|
99
|
+
* @returns Diagnostic data; ready is generation readiness, never provider or runtime acceptance.
|
|
100
|
+
* @throws Error Only for unexpected report construction failures.
|
|
101
|
+
* @sideEffects Reads authorized metadata only; never contacts a SOAP endpoint.
|
|
102
|
+
*/
|
|
103
|
+
export declare function planCheckedComponents(source: string, choices?: Partial<CheckedComponentOptions>): Promise<CheckedComponentPlan>;
|
|
104
|
+
/** Write explicitly requested diagnostic data without replacing consumer files by default.
|
|
105
|
+
* @param file Explicit output path.
|
|
106
|
+
* @param value Data to serialize; report content grants no native authority.
|
|
107
|
+
* @param force Explicit replacement permission.
|
|
108
|
+
* @returns Nothing.
|
|
109
|
+
* @throws Error On existing files without force or filesystem failures.
|
|
110
|
+
* @sideEffects Creates only the requested report or draft file and its parent directory.
|
|
111
|
+
*/
|
|
112
|
+
export declare function writeCheckedPlanningFile(file: string, value: unknown, force?: boolean): void;
|
|
113
|
+
export declare function prepareCheckedComponentPlan(source: string, choices?: unknown, outputs?: {
|
|
114
|
+
clientDir: string;
|
|
115
|
+
gatewayDir: string;
|
|
116
|
+
openapiFile: string;
|
|
117
|
+
basePath: string;
|
|
118
|
+
}): Promise<{
|
|
119
|
+
report: CheckedComponentPlan;
|
|
120
|
+
config?: CheckedComponentOptions;
|
|
121
|
+
native?: Awaited<ReturnType<typeof prepareComponentStages>>;
|
|
122
|
+
}>;
|
|
123
|
+
export {};
|