@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
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# ADR 001: Generated Test Suite for Gateway Artifacts
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
|
|
5
|
-
Accepted
|
|
6
|
-
|
|
7
|
-
## Context
|
|
8
|
-
|
|
9
|
-
Users of generated Fastify gateways have no automated way to verify the generated code works. The only testing path is to manually write Vitest tests following the pattern in this project's own `test/integration/gateway-routes.test.ts`. The FST_ERR_FAILED_ERROR_SERIALIZATION bug (fixed in 0.11.1) proved that generated code can have subtle runtime issues that only surface under specific conditions. Generated tests would catch these immediately.
|
|
10
|
-
|
|
11
|
-
## Decision
|
|
12
|
-
|
|
13
|
-
Add an opt-in `--test-dir` flag to the pipeline command that generates a complete, runnable Vitest test suite validating all generated gateway artifacts.
|
|
14
|
-
|
|
15
|
-
### Why generated tests (not a test library)
|
|
16
|
-
|
|
17
|
-
A reusable test library would require users to configure imports, mock data, and test structure themselves. Generated tests are zero-config: they import the exact generated modules with correct relative paths, use mock data derived from the actual catalog types, and run immediately with `npx vitest run`.
|
|
18
|
-
|
|
19
|
-
### Why full mocks (not placeholders)
|
|
20
|
-
|
|
21
|
-
Placeholder mocks (empty objects, `TODO` comments) require manual effort before tests pass. Full mocks generated from catalog type metadata produce passing tests out of the box. Property names and types come from the compiled catalog's `meta.childType` map, so mock data matches the actual SOAP response shape.
|
|
22
|
-
|
|
23
|
-
### Why skip-if-exists
|
|
24
|
-
|
|
25
|
-
Test files are meant to be customized after generation. Re-running the pipeline should not overwrite user modifications. The `--force-test` flag provides an explicit override when regeneration is desired.
|
|
26
|
-
|
|
27
|
-
### Relationship to operations.ts interface
|
|
28
|
-
|
|
29
|
-
The generated `{ClassName}Operations` interface (from `operations.ts`) is the natural seam for mock injection. The mock client helper implements this interface with full default responses per operation. This matches the pattern established in `test/integration/gateway-routes.test.ts`.
|
|
30
|
-
|
|
31
|
-
## Consequences
|
|
32
|
-
|
|
33
|
-
- Users get immediate test coverage for generated gateway code
|
|
34
|
-
- Mock data stays in sync with WSDL schema changes (regenerate to update)
|
|
35
|
-
- Test files can be customized without risk of overwrite
|
|
36
|
-
- Additional CLI flag and pipeline step increase the surface area to maintain
|
|
@@ -1,330 +0,0 @@
|
|
|
1
|
-
# ADR 002: Streamable SOAP Responses and JSON Gateway Output
|
|
2
|
-
|
|
3
|
-
Proposal for opt-in streamable SOAP response support, with Escapia EVRN Content Service as the concrete driver.
|
|
4
|
-
|
|
5
|
-
See the root [README](../../README.md) for the authoritative documentation index and [Architecture](../architecture.md) for the current generator pipeline.
|
|
6
|
-
|
|
7
|
-
## Status
|
|
8
|
-
|
|
9
|
-
Accepted (2026-04-20). Implementation shipped in 0.17.0 across five phases
|
|
10
|
-
(Phase 0 research → Phase 5 integration). See
|
|
11
|
-
`scratches/plans/v017/streamable-responses.plan.yaml` for phase-by-phase
|
|
12
|
-
notes and verification gates.
|
|
13
|
-
|
|
14
|
-
## Context
|
|
15
|
-
|
|
16
|
-
The current generator handles WSDL operations as buffered request and response calls. A generated client method awaits the SOAP runtime callback, receives a fully materialized result object, and returns `{ response, headers, responseRaw, requestRaw }`. The generated OpenAPI document describes each operation as `application/json`. The generated Fastify route calls the client method, optionally unwraps array wrapper types, and returns the standard response envelope.
|
|
17
|
-
|
|
18
|
-
Escapia exposes two related SOAP services:
|
|
19
|
-
|
|
20
|
-
- `EVRNService` contains the normal operation and type model.
|
|
21
|
-
- `EVRNContentService` contains content-oriented operations that are intended for large responses.
|
|
22
|
-
|
|
23
|
-
The Escapia content WSDL includes stream-like operations such as `UnitDescriptiveInfoStream` and `UnitCalendarAvailBatch`. Their output wrapper types contain schema and wildcard payload sections instead of clean concrete response members. The practical record shapes come from the main EVRN service WSDL, for example `UnitDescriptiveContentType` and `UnitCalendarAvailType`.
|
|
24
|
-
|
|
25
|
-
This means the current package has two gaps:
|
|
26
|
-
|
|
27
|
-
- It does not stream SOAP responses through generated clients or gateways.
|
|
28
|
-
- It does not let users map opaque WSDL response wrappers to concrete JSON record shapes from the same or a companion WSDL.
|
|
29
|
-
|
|
30
|
-
## Current Architecture Review
|
|
31
|
-
|
|
32
|
-
The compile stage produces `catalog.json`, which is the only artifact that understands WSDL types, operation input and output elements, attribute metadata, child type metadata, and primitive mapping options.
|
|
33
|
-
|
|
34
|
-
The client stage generates a `node-soap` wrapper. Every operation is generated as a promise-returning method. The public operations interface mirrors that buffered shape, which is useful for mocks but cannot currently express an `AsyncIterable` or stream response.
|
|
35
|
-
|
|
36
|
-
The OpenAPI stage generates paths from catalog operations. It assumes every operation has a JSON request body and a JSON response body. Since version 0.7.1, successful responses are always wrapped in the standard envelope schema.
|
|
37
|
-
|
|
38
|
-
The gateway stage reads the OpenAPI document first and enriches operation metadata from `catalog.json` when the catalog is available. This lets route generation stay OpenAPI-driven, but stream support needs metadata that OpenAPI alone cannot represent.
|
|
39
|
-
|
|
40
|
-
The app and test generators assume ordinary JSON route responses. Generated tests use mock clients that implement the buffered operations interface.
|
|
41
|
-
|
|
42
|
-
## Requirements
|
|
43
|
-
|
|
44
|
-
- Existing buffered generation must remain unchanged unless a user opts in.
|
|
45
|
-
- Stream support must be configurable per operation.
|
|
46
|
-
- Users must be able to map an opaque output wrapper to a concrete record type.
|
|
47
|
-
- Record types must be resolvable from the current catalog or from a companion catalog.
|
|
48
|
-
- Gateway output must be able to emit records before the full SOAP response has arrived.
|
|
49
|
-
- Generated routes must respect Node and Fastify backpressure.
|
|
50
|
-
- OpenAPI output must describe the wire media type without pretending that NDJSON is a single JSON object.
|
|
51
|
-
- Error handling must distinguish errors before the first byte from errors after streaming has started.
|
|
52
|
-
- The feature must be testable with a local chunked SOAP server, not only static XML fixtures.
|
|
53
|
-
|
|
54
|
-
## Proposed Configuration Model
|
|
55
|
-
|
|
56
|
-
Add a stream configuration file passed with `--stream-config`. The same option should be available on `compile`, `client`, `openapi`, `gateway`, and `pipeline` so each stage can be run independently.
|
|
57
|
-
|
|
58
|
-
```json
|
|
59
|
-
{
|
|
60
|
-
"shapeCatalogs": {
|
|
61
|
-
"evrn": {
|
|
62
|
-
"wsdlSource": "https://api.escapia.com/EVRNService.svc?singleWsdl"
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
"operations": {
|
|
66
|
-
"UnitDescriptiveInfoStream": {
|
|
67
|
-
"mode": "stream",
|
|
68
|
-
"format": "ndjson",
|
|
69
|
-
"mediaType": "application/x-ndjson",
|
|
70
|
-
"recordType": "UnitDescriptiveContentType",
|
|
71
|
-
"recordPath": [
|
|
72
|
-
"UnitDescriptiveInfoStream",
|
|
73
|
-
"EVRN_UnitDescriptiveInfoRS",
|
|
74
|
-
"UnitDescriptiveContents",
|
|
75
|
-
"UnitDescriptiveContent"
|
|
76
|
-
],
|
|
77
|
-
"shapeCatalog": "evrn"
|
|
78
|
-
},
|
|
79
|
-
"UnitCalendarAvailBatch": {
|
|
80
|
-
"mode": "stream",
|
|
81
|
-
"format": "ndjson",
|
|
82
|
-
"mediaType": "application/x-ndjson",
|
|
83
|
-
"recordType": "UnitCalendarAvailType",
|
|
84
|
-
"recordPath": [
|
|
85
|
-
"EVRN_UnitCalendarAvailBatchRS",
|
|
86
|
-
"EVRN_UnitCalendarAvailBatchRS",
|
|
87
|
-
"UnitCalendarAvails",
|
|
88
|
-
"UnitCalendarAvail"
|
|
89
|
-
],
|
|
90
|
-
"shapeCatalog": "evrn"
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
`shapeCatalogs` names additional WSDL or catalog inputs used only to resolve stream record shapes.
|
|
97
|
-
|
|
98
|
-
`operations` marks specific WSDL operations as streamed. Operations not listed keep the existing buffered behavior.
|
|
99
|
-
|
|
100
|
-
`recordPath` is an ordered XML element path from the SOAP body payload to the repeated record element. Duplicate local names must be allowed because Escapia uses nested elements with the same name in at least one response.
|
|
101
|
-
|
|
102
|
-
`recordType` is the TypeScript and schema model to emit for each streamed record.
|
|
103
|
-
|
|
104
|
-
`format` supports `ndjson` and `json-array`. `ndjson` remains the default; `json-array` is available for clients that require a single JSON array response.
|
|
105
|
-
|
|
106
|
-
## CLI and Programmatic API
|
|
107
|
-
|
|
108
|
-
The CLI should add `--stream-config <file>` to all generation commands. The pipeline command should pass the parsed and normalized configuration to every stage.
|
|
109
|
-
|
|
110
|
-
The programmatic API should add optional stream configuration fields to:
|
|
111
|
-
|
|
112
|
-
```typescript
|
|
113
|
-
export interface PipelineOptions {
|
|
114
|
-
streamConfigFile?: string;
|
|
115
|
-
streamConfig?: StreamConfig;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
export interface GenerateOpenAPIOptions {
|
|
119
|
-
streamConfigFile?: string;
|
|
120
|
-
streamConfig?: StreamConfig;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
export interface GenerateGatewayOptions {
|
|
124
|
-
streamConfigFile?: string;
|
|
125
|
-
streamConfig?: StreamConfig;
|
|
126
|
-
}
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
The compiler options should accept normalized stream metadata only when compilation needs to persist it into the catalog.
|
|
130
|
-
|
|
131
|
-
## Catalog Model
|
|
132
|
-
|
|
133
|
-
The compiled catalog should carry normalized stream metadata beside operation metadata:
|
|
134
|
-
|
|
135
|
-
```typescript
|
|
136
|
-
export interface Operation {
|
|
137
|
-
name: string;
|
|
138
|
-
inputTypeName?: string;
|
|
139
|
-
outputTypeName?: string;
|
|
140
|
-
stream?: OperationStreamMetadata;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
export interface OperationStreamMetadata {
|
|
144
|
-
mode: "stream";
|
|
145
|
-
format: "ndjson" | "json-array";
|
|
146
|
-
mediaType: string;
|
|
147
|
-
recordPath: string[];
|
|
148
|
-
recordTypeName: string;
|
|
149
|
-
shapeCatalogName?: string;
|
|
150
|
-
sourceOutputTypeName?: string;
|
|
151
|
-
}
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
The compiler should also represent wildcard schema particles explicitly. Today Escapia stream wrappers compile into misleading `xs:schema` properties and drop the wildcard payload. A better model is to retain both the schema marker and a wildcard marker so diagnostics and stream candidate detection are honest.
|
|
155
|
-
|
|
156
|
-
## Shape Resolution
|
|
157
|
-
|
|
158
|
-
The first implementation should support companion catalogs in one of two forms:
|
|
159
|
-
|
|
160
|
-
- A `catalogFile` path for a catalog already produced by `wsdl-tsc compile`.
|
|
161
|
-
- A `wsdlSource` path or URL that the pipeline compiles before normalizing stream metadata.
|
|
162
|
-
|
|
163
|
-
For generated types, the MVP should copy the reachable record type graph from the companion catalog into the current generated output when there is no name collision. If a collision occurs, generation should fail with a clear diagnostic instead of silently renaming public API types.
|
|
164
|
-
|
|
165
|
-
A future version can support external type imports from another generated client directory.
|
|
166
|
-
|
|
167
|
-
## Client Runtime
|
|
168
|
-
|
|
169
|
-
Generated clients should keep the existing buffered method signatures for ordinary operations.
|
|
170
|
-
|
|
171
|
-
Stream operations should return a separate response type:
|
|
172
|
-
|
|
173
|
-
```typescript
|
|
174
|
-
export type StreamOperationResponse<RecordType, HeadersType = Record<string, unknown>> = {
|
|
175
|
-
records: AsyncIterable<RecordType>;
|
|
176
|
-
headers: HeadersType;
|
|
177
|
-
requestRaw?: string;
|
|
178
|
-
};
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
The operations interface should use the same stream response type so generated gateway tests and user mocks can implement streaming behavior without importing the concrete SOAP client.
|
|
182
|
-
|
|
183
|
-
The transport layer should be proven by a chunked integration test. If `node-soap` with stream or SAX options can deliver records incrementally, it can be used for the MVP. If it buffers before yielding, the feature must use a dedicated SOAP HTTP transport for stream operations before release.
|
|
184
|
-
|
|
185
|
-
> **Phase 0 research outcome (2026-04-20):** `node-soap` **buffers** the full response before invoking the operation callback. Measured with `test/research/node-soap-streaming.test.ts` against a chunked HTTP fixture: first chunk flushed at ~48 ms, server closed at ~701 ms, node-soap callback fired at ~659 ms (~40 ms before close — that is parse time, not streaming). Generated stream operations therefore use a dedicated streaming HTTP transport emitted into the client runtime; `node-soap` remains the transport for buffered operations only. SAX streaming was validated with `saxes` 6.0.0; `test/research/sax-record-path.test.ts` chunk-fuzzes the Escapia-shaped XML (duplicate `EVRN_UnitDescriptiveInfoRS` wrappers) across every single-byte split and every byte-pair split and produces identical records each time. See `scratches/plans/v017/streamable-responses.plan.yaml` for the full findings.
|
|
186
|
-
|
|
187
|
-
## XML to JSON Streaming Conversion
|
|
188
|
-
|
|
189
|
-
The runtime needs a streaming XML parser. `fast-xml-parser` is suitable for buffered documents but not for this use case. A SAX-style parser should track the configured `recordPath`, build a record object as the target element closes, and yield each record immediately.
|
|
190
|
-
|
|
191
|
-
The converter must reuse catalog metadata for:
|
|
192
|
-
|
|
193
|
-
- XML attributes and the configured attributes key
|
|
194
|
-
- Child element type lookup
|
|
195
|
-
- Repeated elements
|
|
196
|
-
- Nillable elements
|
|
197
|
-
- Text content and `$value`
|
|
198
|
-
- Primitive mapping
|
|
199
|
-
|
|
200
|
-
The converter should collect SOAP faults, response errors, and warnings when they appear before the first record. After streaming starts, terminal errors cannot be represented as a normal JSON error envelope. The shipped behavior aborts the stream; NDJSON clients see an incomplete HTTP response, and JSON array clients see an incomplete or invalid JSON document.
|
|
201
|
-
|
|
202
|
-
## OpenAPI Output
|
|
203
|
-
|
|
204
|
-
Stream operations should not use the standard success envelope for `200` responses. The response content should use the configured stream media type.
|
|
205
|
-
|
|
206
|
-
```json
|
|
207
|
-
{
|
|
208
|
-
"description": "Successful streamed SOAP operation response",
|
|
209
|
-
"content": {
|
|
210
|
-
"application/x-ndjson": {
|
|
211
|
-
"schema": { "type": "string" },
|
|
212
|
-
"x-wsdl-tsc-stream": {
|
|
213
|
-
"format": "ndjson",
|
|
214
|
-
"itemSchema": {
|
|
215
|
-
"$ref": "#/components/schemas/UnitDescriptiveContentType"
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
OpenAPI 3.1 cannot fully describe an NDJSON sequence as a standard JSON Schema document. The `x-wsdl-tsc-stream` extension makes the item schema explicit for generated gateways, documentation tools, and future SDK generators.
|
|
224
|
-
|
|
225
|
-
For `format: "json-array"`, OpenAPI uses an array schema under the configured media type while keeping the same extension:
|
|
226
|
-
|
|
227
|
-
```json
|
|
228
|
-
{
|
|
229
|
-
"description": "Successful streamed SOAP operation response",
|
|
230
|
-
"content": {
|
|
231
|
-
"application/json": {
|
|
232
|
-
"schema": {
|
|
233
|
-
"type": "array",
|
|
234
|
-
"items": {
|
|
235
|
-
"$ref": "#/components/schemas/UnitDescriptiveContentType"
|
|
236
|
-
}
|
|
237
|
-
},
|
|
238
|
-
"x-wsdl-tsc-stream": {
|
|
239
|
-
"format": "json-array",
|
|
240
|
-
"itemSchema": {
|
|
241
|
-
"$ref": "#/components/schemas/UnitDescriptiveContentType"
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
## Gateway Output
|
|
250
|
-
|
|
251
|
-
Generated stream routes should call the stream operation and send a Node stream through Fastify.
|
|
252
|
-
|
|
253
|
-
```typescript
|
|
254
|
-
handler: async (request, reply) => {
|
|
255
|
-
const client = fastify.escapiaContentClient;
|
|
256
|
-
const result = await client.UnitDescriptiveInfoStream(request.body);
|
|
257
|
-
|
|
258
|
-
reply.type("application/x-ndjson");
|
|
259
|
-
return reply.send(toNdjson(result.records));
|
|
260
|
-
}
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
The generated operation schema should keep request validation but omit the Fastify response serialization schema for streamed `200` responses. Fastify cannot serialize an unbounded stream with a normal JSON response schema.
|
|
264
|
-
|
|
265
|
-
The gateway runtime adds `toNdjson()` and `toJsonArray()` helpers. These helpers are deterministic, backpressure-aware, and safe for large payloads.
|
|
266
|
-
|
|
267
|
-
## Test Strategy
|
|
268
|
-
|
|
269
|
-
Add unit tests for stream config parsing, operation matching, catalog normalization, wildcard compiler metadata, and record path matching.
|
|
270
|
-
|
|
271
|
-
Add converter tests that split XML chunks across element boundaries to prove the parser does not rely on convenient chunking.
|
|
272
|
-
|
|
273
|
-
Add a local Escapia-like WSDL fixture with `xs:any` output wrappers and a companion WSDL fixture with the concrete record types.
|
|
274
|
-
|
|
275
|
-
Add an integration test with a fake SOAP HTTP server that writes one record, waits, writes another record, and then closes the envelope. The test should assert that the gateway emits the first NDJSON line or JSON array record before the upstream response completes.
|
|
276
|
-
|
|
277
|
-
Add snapshot tests for generated `client.ts`, `operations.ts`, OpenAPI output, gateway route files, and gateway runtime helpers.
|
|
278
|
-
|
|
279
|
-
Run `npm run smoke:pipeline` after implementation to verify ordinary buffered generation is unchanged.
|
|
280
|
-
|
|
281
|
-
## Implementation Plan
|
|
282
|
-
|
|
283
|
-
1. Define `StreamConfig`, parser, validation errors, and normalized operation metadata.
|
|
284
|
-
2. Add `--stream-config` to the CLI and thread it through the programmatic API.
|
|
285
|
-
3. Update the compiler to preserve wildcard particles and emit stream candidate diagnostics.
|
|
286
|
-
4. Implement companion catalog loading and record type graph copying.
|
|
287
|
-
5. Generate stream method signatures in `client.ts` and `operations.ts`.
|
|
288
|
-
6. Add a streaming XML converter with catalog-aware JSON shape conversion.
|
|
289
|
-
7. Generate OpenAPI stream responses with `x-wsdl-tsc-stream` metadata.
|
|
290
|
-
8. Generate Fastify streaming handlers and runtime helpers.
|
|
291
|
-
9. Add unit, snapshot, and chunked integration tests.
|
|
292
|
-
10. Update README, CLI reference, configuration docs, gateway guide, testing guide, and supported patterns.
|
|
293
|
-
|
|
294
|
-
## Acceptance Criteria
|
|
295
|
-
|
|
296
|
-
- Existing generated output is unchanged when no stream config is provided.
|
|
297
|
-
- A stream-configured Escapia content WSDL generates typed stream client methods.
|
|
298
|
-
- The generated gateway emits configured stream records incrementally.
|
|
299
|
-
- The generated OpenAPI document identifies stream operations and record schemas.
|
|
300
|
-
- The converter maps XML attributes, arrays, text values, and nillable values consistently with buffered responses.
|
|
301
|
-
- The chunked integration test proves the first record is sent before the full SOAP response is available.
|
|
302
|
-
- Stream route errors before the first byte use the normal gateway error envelope.
|
|
303
|
-
- Stream route errors after the first byte follow a documented terminal error policy.
|
|
304
|
-
|
|
305
|
-
## Consequences
|
|
306
|
-
|
|
307
|
-
The generator gains a second response execution model. This increases complexity in the client, OpenAPI, gateway, and test generators, but keeps the complexity opt-in and operation-scoped.
|
|
308
|
-
|
|
309
|
-
The catalog becomes more important as the shared source of truth because OpenAPI alone cannot carry enough stream conversion metadata.
|
|
310
|
-
|
|
311
|
-
NDJSON remains the default stream format because it is simple and broadly consumable. JSON array streaming is available for clients that require one JSON document and still streams without buffering the full response.
|
|
312
|
-
|
|
313
|
-
Companion catalogs are required for vendors that split stream wrappers and concrete record shapes across separate WSDLs.
|
|
314
|
-
|
|
315
|
-
## Implementation Notes
|
|
316
|
-
|
|
317
|
-
Captured after the 0.17.0 ship for future maintainers:
|
|
318
|
-
|
|
319
|
-
- `--stream-config` is wired onto the `compile`, `client`, and `pipeline` CLI commands. It is intentionally not accepted on `openapi`, `gateway`, or `app` because those commands consume a pre-compiled `catalog.json` that already carries the normalized `OperationStreamMetadata`. The original proposal text that listed the flag on every command reflected the design intent; the shipped surface is narrower for that reason.
|
|
320
|
-
- `GenerateOpenAPIOptions` and `GenerateGatewayOptions` in the programmatic API do not carry stream-config fields for the same reason. `compileWsdlToProject` and `runGenerationPipeline` (PipelineOptions) do.
|
|
321
|
-
- The client stream transport is emitted from two templates (`clientStreamMethods.tpl.txt`, `operationsStreamHelper.tpl.txt`). They embed the `StreamOperationResponse<T>` type and a `callStream()` method that POSTs a hand-built SOAP envelope via global `fetch`, bypassing `node-soap` as required by the phase-0 finding.
|
|
322
|
-
- `saxes ^6.0.0` was promoted from devDependency to runtime dependency on the package, and added as a pinned dependency in the generated app scaffold so stream-enabled consumers install it automatically.
|
|
323
|
-
- The `json-array` format is implemented in `0.28.0`. The helper prefetches the first record before emitting `[`, which preserves normal error envelopes for failures before the first record and documents truncation or invalid JSON for failures after streaming starts.
|
|
324
|
-
|
|
325
|
-
## References
|
|
326
|
-
|
|
327
|
-
- Escapia EVRN API documentation: <https://eweb.escapia.com/distribution/api/evrn-api-documentation>
|
|
328
|
-
- Escapia EVRN service WSDL: <https://api.escapia.com/EVRNService.svc?WSDL>
|
|
329
|
-
- Escapia EVRN content service WSDL: <https://api.escapia.com/EVRNContentService.svc?WSDL>
|
|
330
|
-
- Escapia batch API support article: <https://support.escapia.com/articles/en_US/Article/HASW-Batch-API-Methods-EVRN?category=Website_Services>
|
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
# File Naming And Path Organization
|
|
2
|
-
|
|
3
|
-
Contributor guide for naming files and organizing fixture paths. See the root [README.md](../README.md) for the authoritative documentation index.
|
|
4
|
-
|
|
5
|
-
## Preamble Resources
|
|
6
|
-
|
|
7
|
-
Raw comment-only headers live under `src/generation/preambles/` with the filename `typescript.preamble`. Subdirectories express logical artifact scopes rather than consumer output paths. See [generated source policy](architecture.md#generated-source-policy) for fallback and packaging rules.
|
|
8
|
-
|
|
9
|
-
Package-smoke tarballs and logs belong in `tmp/preflight/package/`; the isolated consumer installation uses a verified temporary directory outside the checkout to prove that package resources resolve independently.
|
|
10
|
-
|
|
11
|
-
## Purpose
|
|
12
|
-
|
|
13
|
-
Paths should classify files before a reader opens them. The left side of a path carries the broadest concept; each segment to the right narrows the classification until the filename states the exact artifact purpose.
|
|
14
|
-
|
|
15
|
-
This convention is especially important for conformance fixtures. A maintainer should be able to search or list paths and see which WSDL, XSD, SOAP, policy, and recovery concepts already have evidence.
|
|
16
|
-
|
|
17
|
-
## Authority Model
|
|
18
|
-
|
|
19
|
-
This convention borrows from resource-oriented API design. REST APIs commonly use noun-based paths, hierarchy through `/`, and readable lowercase path segments.
|
|
20
|
-
|
|
21
|
-
Google AIP-122 describes resource names as slash-separated paths and says collection identifiers are usually plural nouns. Zalando REST guidelines require plural resource names, kebab-case path segments, verb-free URLs, and domain-specific resource names. Microsoft Azure API guidelines prefer kebab-casing for URL path segments. REST URI naming guidance uses nouns for resources, `/` for hierarchy, and hyphens for readability.
|
|
22
|
-
|
|
23
|
-
Filesystem paths are not REST APIs, but the same retrieval model applies: a path is a resource name for a contributor, a terminal command, an IDE index, and an agent.
|
|
24
|
-
|
|
25
|
-
## Shell Examples
|
|
26
|
-
|
|
27
|
-
Use `bash` fences for portable command examples in repository documentation and GitHub workflow notes. Use `powershell` fences only when the command is intentionally Windows-specific.
|
|
28
|
-
|
|
29
|
-
Prefer `rg` for retrieval examples because agents already use it for fast file and content search. Write path filters so they tolerate `/` and `\` separators when possible.
|
|
30
|
-
|
|
31
|
-
On Windows PowerShell, keep `rg` regex arguments in single quotes when the pattern contains backslashes, brackets, or alternation. The examples in this document were checked in PowerShell with single-quoted regexes. A no-match `rg` filter exits with code `1`; that is expected for negative checks such as confirming `service.wsdl` is absent.
|
|
32
|
-
|
|
33
|
-
## Progressive Discovery
|
|
34
|
-
|
|
35
|
-
Start broad, then narrow. A path should answer these questions from left to right:
|
|
36
|
-
|
|
37
|
-
1. What repository area owns this artifact?
|
|
38
|
-
2. What artifact family is this?
|
|
39
|
-
3. What standards domain or product domain does it belong to?
|
|
40
|
-
4. What feature family does it exercise?
|
|
41
|
-
5. What exact purpose does the file serve?
|
|
42
|
-
|
|
43
|
-
For conformance fixtures, this means the preferred shape is:
|
|
44
|
-
|
|
45
|
-
```text
|
|
46
|
-
test/conformance/fixtures/<domain>/<feature-family>/<feature-name>.<ext>
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Use deeper nesting only when it improves retrieval. Do not create a folder level that only repeats the filename.
|
|
50
|
-
|
|
51
|
-
## Folder Names
|
|
52
|
-
|
|
53
|
-
Folder names are taxonomy terms. They classify a set of files.
|
|
54
|
-
|
|
55
|
-
- Use lowercase kebab-case.
|
|
56
|
-
- Prefer one noun per segment.
|
|
57
|
-
- Prefer plural nouns when the term is naturally countable.
|
|
58
|
-
- Preserve standards terms when pluralizing them would reduce clarity.
|
|
59
|
-
- Avoid verbs, implementation steps, and filler words.
|
|
60
|
-
- Place the broadest useful classifier on the left.
|
|
61
|
-
- Add a narrower folder only when it groups multiple related files or distinguishes a standards boundary.
|
|
62
|
-
|
|
63
|
-
Acceptable standards-domain folders include `wsdl`, `xsd`, `soap`, `ws-policy`, `ws-security`, `interop`, and `recovery`.
|
|
64
|
-
|
|
65
|
-
Acceptable feature-family folders include `types`, `elements`, `bindings`, `policies`, `attachments`, `wildcards`, `compositors`, `sequences`, and `choices`.
|
|
66
|
-
|
|
67
|
-
## File Names
|
|
68
|
-
|
|
69
|
-
File names state the exact purpose and content of the artifact. They should remain useful when shown without the full path.
|
|
70
|
-
|
|
71
|
-
- Use lowercase kebab-case.
|
|
72
|
-
- Use general-to-specific segment order.
|
|
73
|
-
- Put the broad feature classifier first.
|
|
74
|
-
- Put variable-like qualifiers on the right side.
|
|
75
|
-
- Keep recognized standards terms when they identify the feature.
|
|
76
|
-
- Avoid filler words such as `service`, `sample`, `fixture`, and `test`.
|
|
77
|
-
- Use the file extension to identify format, not the basename.
|
|
78
|
-
|
|
79
|
-
Good file names classify sorted terminal output:
|
|
80
|
-
|
|
81
|
-
```text
|
|
82
|
-
attachment-mtom-xop.wsdl
|
|
83
|
-
binding-soap-first-multi.wsdl
|
|
84
|
-
choice-union-simple.wsdl
|
|
85
|
-
element-substitution-group.wsdl
|
|
86
|
-
policy-reference-external.wsdl
|
|
87
|
-
sequence-composition-deep.wsdl
|
|
88
|
-
type-complex-abstract-extension.wsdl
|
|
89
|
-
type-union-simple.wsdl
|
|
90
|
-
wildcard-attribute-any.wsdl
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Avoid names that only read naturally in English but group poorly in file listings:
|
|
94
|
-
|
|
95
|
-
```text
|
|
96
|
-
abstract-complex-type-extension.wsdl
|
|
97
|
-
any-attribute.wsdl
|
|
98
|
-
deep-sequence-composition.wsdl
|
|
99
|
-
mtom-xop-attachment.wsdl
|
|
100
|
-
multi-binding-first-soap.wsdl
|
|
101
|
-
xs-union-simple-type.wsdl
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
## Conformance Fixtures
|
|
105
|
-
|
|
106
|
-
Conformance fixtures should be committed XML files, not inline strings in tests. Inline XML is acceptable only for throwaway probes or very small unit tests that do not represent a reusable fixture.
|
|
107
|
-
|
|
108
|
-
The fixture path should support discovery by partial path search. A contributor should be able to search `xsd/wildcards`, `soap/attachments`, or `wsdl/bindings` and see what exists.
|
|
109
|
-
|
|
110
|
-
The registry ID should remain stable for test reporting. The fixture path may use taxonomy folders and a more precise filename when that improves retrieval.
|
|
111
|
-
|
|
112
|
-
## Multi-file Fixtures
|
|
113
|
-
|
|
114
|
-
Use a folder when a fixture needs a root WSDL plus imported schemas or companion files. Keep the root filename aligned with the feature name.
|
|
115
|
-
|
|
116
|
-
```text
|
|
117
|
-
test/conformance/fixtures/xsd/wildcards/wildcard-attribute-any.wsdl
|
|
118
|
-
test/conformance/fixtures/xsd/wildcards/wildcard-attribute-any-types.xsd
|
|
119
|
-
test/conformance/fixtures/xsd/wildcards/wildcard-attribute-any-shared.xsd
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Use purpose suffixes such as `types`, `messages`, `shared`, `policy`, and `binding` for companion files.
|
|
123
|
-
|
|
124
|
-
## Retrieval Examples
|
|
125
|
-
|
|
126
|
-
List every conformance fixture path:
|
|
127
|
-
|
|
128
|
-
```bash
|
|
129
|
-
rg --files test/conformance/fixtures | sort
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
Find every XSD wildcard fixture:
|
|
133
|
-
|
|
134
|
-
```bash
|
|
135
|
-
rg --files test/conformance/fixtures | rg '(^|[\\/])xsd[\\/]wildcards[\\/]'
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
Find whether a SOAP attachment fixture exists:
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
rg --files test/conformance/fixtures | rg '(^|[\\/])attachment-'
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
Use `rg` when searching by concept inside paths or XML content:
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
rg -n "xs:anyAttribute|wildcard-attribute" test\conformance\fixtures
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
## Agent Retrieval Playbook
|
|
151
|
-
|
|
152
|
-
Agents should prefer a small number of focused file-system checks before adding or renaming fixtures. These commands are intentionally simple and use portable `rg` patterns.
|
|
153
|
-
|
|
154
|
-
Check the current taxonomy shape:
|
|
155
|
-
|
|
156
|
-
```bash
|
|
157
|
-
rg --files test/conformance/fixtures | sort
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
Check whether a domain branch already exists:
|
|
161
|
-
|
|
162
|
-
```bash
|
|
163
|
-
rg --files test/conformance/fixtures | rg '(^|[\\/])xsd[\\/]types[\\/]'
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
Find fixtures by filename classifier:
|
|
167
|
-
|
|
168
|
-
```bash
|
|
169
|
-
rg --files test/conformance/fixtures | rg '(^|[\\/])type-'
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
Find fixtures by XML feature content:
|
|
173
|
-
|
|
174
|
-
```bash
|
|
175
|
-
rg -n "xs:union|xs:anyAttribute|substitutionGroup|PolicyReference" test\conformance\fixtures
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
Check whether old filler names are still present:
|
|
179
|
-
|
|
180
|
-
```bash
|
|
181
|
-
rg --files test/conformance/fixtures | rg '(^|[\\/])service\.wsdl'
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
Find the registry row that owns a fixture path:
|
|
185
|
-
|
|
186
|
-
```bash
|
|
187
|
-
rg -n "wildcard-attribute-any|type-union-simple|attachment-mtom-xop" test\conformance\registry.ts
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
Use these commands as discovery checks, not as validation gates. Repository validation still runs through `npm run docs:validate`, `npm run test:conformance`, and `npm test`.
|
|
191
|
-
|
|
192
|
-
## Candidate Fixture Paths
|
|
193
|
-
|
|
194
|
-
Use these paths as the target direction for the current conformance corpus:
|
|
195
|
-
|
|
196
|
-
```text
|
|
197
|
-
test/conformance/fixtures/xsd/compositors/choice-union-simple.wsdl
|
|
198
|
-
test/conformance/fixtures/xsd/types/type-union-simple.wsdl
|
|
199
|
-
test/conformance/fixtures/xsd/types/type-complex-abstract-extension.wsdl
|
|
200
|
-
test/conformance/fixtures/xsd/elements/element-substitution-group.wsdl
|
|
201
|
-
test/conformance/fixtures/wsdl/bindings/binding-soap-first-multi.wsdl
|
|
202
|
-
test/conformance/fixtures/ws-policy/references/policy-reference-external.wsdl
|
|
203
|
-
test/conformance/fixtures/xsd/sequences/sequence-composition-deep.wsdl
|
|
204
|
-
test/conformance/fixtures/xsd/wildcards/wildcard-attribute-any.wsdl
|
|
205
|
-
test/conformance/fixtures/soap/attachments/attachment-mtom-xop.wsdl
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
## References
|
|
209
|
-
|
|
210
|
-
- [Google AIP-122 Resource Names](https://google.aip.dev/122)
|
|
211
|
-
- [Zalando RESTful API Guidelines](https://opensource.zalando.com/restful-api-guidelines/)
|
|
212
|
-
- [Microsoft Azure API Guidelines](https://github.com/microsoft/api-guidelines/blob/vNext/azure/Guidelines.md)
|
|
213
|
-
- [REST API URI Naming Conventions](https://restfulapi.net/resource-naming/)
|
package/docs/releases/README.md
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
# Release Notes
|
|
2
|
-
|
|
3
|
-
Add one Markdown file per release tag. The draft release workflow requires this file before it creates or updates a GitHub draft release.
|
|
4
|
-
|
|
5
|
-
## File Naming
|
|
6
|
-
|
|
7
|
-
Use the Git tag as the filename:
|
|
8
|
-
|
|
9
|
-
```text
|
|
10
|
-
vX.Y.Z.md
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
For example, release `0.20.1` uses tag `v0.20.1` and release notes file `docs/releases/v0.20.1.md`.
|
|
14
|
-
|
|
15
|
-
## File Structure
|
|
16
|
-
|
|
17
|
-
Each release notes file must use this structure:
|
|
18
|
-
|
|
19
|
-
```markdown
|
|
20
|
-
# TypeScript WSDL Client vX.Y.Z
|
|
21
|
-
|
|
22
|
-
## Short agent-generated subtitle
|
|
23
|
-
|
|
24
|
-
A concise summary paragraph.
|
|
25
|
-
|
|
26
|
-
## What This Improves
|
|
27
|
-
|
|
28
|
-
Explain the practical developer impact of the release. Focus on what becomes easier, safer, clearer, more reliable, or more complete for developers using or maintaining this package.
|
|
29
|
-
|
|
30
|
-
## Highlights
|
|
31
|
-
|
|
32
|
-
- User-facing release highlight.
|
|
33
|
-
|
|
34
|
-
## Upgrade Notes
|
|
35
|
-
|
|
36
|
-
No special upgrade steps.
|
|
37
|
-
|
|
38
|
-
## Validation
|
|
39
|
-
|
|
40
|
-
- CI passed.
|
|
41
|
-
- NPM package contents were validated.
|
|
42
|
-
- Agent skill artifact was validated and packaged.
|
|
43
|
-
- Release preflight passed against the target tag.
|
|
44
|
-
|
|
45
|
-
## Notes
|
|
46
|
-
|
|
47
|
-
Release tag: `vX.Y.Z`.
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Keep the H1 in the repository file so each release note remains a complete source document. The draft release workflow strips only that H1 when generating the GitHub release body, so the GitHub page uses `TypeScript WSDL Client vX.Y.Z` as the release title and starts the body with the H2 subtitle.
|
|
51
|
-
|
|
52
|
-
Write validation as consumer-facing outcomes, not as maintainer command transcripts. Keep exact release operator commands in `.github/copilot-instructions.md` and workflow logs.
|
|
53
|
-
|
|
54
|
-
Write release notes for users and maintainers, not as a file-by-file change log. Use `CHANGELOG.md` for the canonical version history.
|
|
55
|
-
|
|
56
|
-
When an abandoned major or minor candidate contains the complete launch narrative, carry that narrative into the next published corrective release. The corrective release notes must stand alone for users who never saw the abandoned draft.
|
|
57
|
-
|
|
58
|
-
## Candidate Publication
|
|
59
|
-
|
|
60
|
-
The supported release path keeps final-form tags immutable:
|
|
61
|
-
|
|
62
|
-
1. Prepare versions, changelog, release notes, and the documentation index before pushing the release PR.
|
|
63
|
-
2. Run release preflight on the final uncommitted tree and commit that exact validated tree.
|
|
64
|
-
3. Push the PR and require Node 24 and Node 26 checks on its final head before merging.
|
|
65
|
-
4. Verify the merged main tree matches the validated tree and require CI on the merged commit.
|
|
66
|
-
5. Tag the validated merged main commit and push the tag to start the draft workflow.
|
|
67
|
-
6. Verify the draft, release notes, uploaded skill ZIP, checksum manifest, and artifact verification results.
|
|
68
|
-
7. Clean up task-owned merged branches and temporary outputs, then hand the draft to the maintainer.
|
|
69
|
-
8. The maintainer reviews the draft in their own browser and clicks Publish.
|
|
70
|
-
9. The guarded package workflow publishes to npmjs with provenance.
|
|
71
|
-
|
|
72
|
-
The agent stops after draft verification and cleanup. Agents must never access GitHub through a browser, publish a release, or dispatch package publication. Use authenticated git and GitHub CLI commands for preparation and verification. Preserve unrelated work, contributor-owned branches, immutable release tags, and abandonment markers during cleanup.
|
|
73
|
-
|
|
74
|
-
If the merged tree differs from the preflight-validated tree, stop before tagging and prepare a newly validated candidate. Do not rerun preflight for an unchanged validated tree.
|
|
75
|
-
|
|
76
|
-
Manual package dispatch is a recovery path after the GitHub Release is published. It enforces the same tag, marker, reachability, draft, and prerelease checks.
|
|
77
|
-
|
|
78
|
-
The normal path uses GitHub UI publication because a workflow publishing with its standard `GITHUB_TOKEN` does not trigger another workflow from the resulting event. Do not rely on recursive workflow delivery for package publication.
|
|
79
|
-
|
|
80
|
-
## Abandoned Candidates
|
|
81
|
-
|
|
82
|
-
Run the `Abandon Release Candidate` workflow before publishing a rejected draft. Supply the final-form tag, a permanent reason, and optional failed-validation evidence.
|
|
83
|
-
|
|
84
|
-
The workflow creates annotated marker `abandoned/vX.Y.Z` on the same commit as `vX.Y.Z`, verifies the remote marker, and then deletes only the draft release and its candidate assets. The marker preserves the durable reason and release identity. The operation is idempotent when the marker already matches and the draft is absent. A marker on another commit fails for maintainer review.
|
|
85
|
-
|
|
86
|
-
Drafting, abandonment, and package publication are serialized per release tag so abandonment cannot race package delivery.
|
|
87
|
-
|
|
88
|
-
Never move, delete for reuse, or force-update either tag. The rejected version is consumed, and the correction uses the next version.
|
|
89
|
-
|
|
90
|
-
The marker cannot disable GitHub's Publish button before draft retirement. Draft and package automation enforce the marker, and abandonment removes the rejected draft after verifying the marker. Never use release deletion with tag cleanup.
|
|
91
|
-
|
|
92
|
-
## Tag Ruleset Proposal
|
|
93
|
-
|
|
94
|
-
Protect `v*` and `abandoned/v*` against updates and deletions. Consider restricted creation after testing the intended maintainer or GitHub App bypass identity. Repository settings remain a maintainer decision and are not changed by release automation.
|