@techspokes/typescript-wsdl-client 1.1.5 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. package/README.md +64 -66
  2. package/dist/app/generateApp.d.ts +0 -1
  3. package/dist/app/generateApp.js +1 -1
  4. package/dist/app/generateCheckedApp.d.ts +38 -0
  5. package/dist/app/generateCheckedApp.js +108 -0
  6. package/dist/checkedPipeline.d.ts +155 -0
  7. package/dist/checkedPipeline.js +448 -0
  8. package/dist/checkedPlanning.d.ts +123 -0
  9. package/dist/checkedPlanning.js +245 -0
  10. package/dist/cli.d.ts +0 -1
  11. package/dist/cli.js +75 -1
  12. package/dist/client/checkedDirectRuntime.d.ts +40 -3
  13. package/dist/client/checkedDirectRuntime.js +28 -8
  14. package/dist/client/directClientRuntime.d.ts +27 -2
  15. package/dist/client/directClientRuntime.js +142 -89
  16. package/dist/client/directClientVersion.d.ts +3 -1
  17. package/dist/client/directClientVersion.js +3 -0
  18. package/dist/client/generateClient.d.ts +0 -1
  19. package/dist/client/generateClient.js +26 -12
  20. package/dist/client/generateDirectClient.d.ts +21 -3
  21. package/dist/client/generateDirectClient.js +138 -6
  22. package/dist/client/generateOperations.d.ts +0 -1
  23. package/dist/client/generateTypes.d.ts +0 -1
  24. package/dist/client/generateUtils.d.ts +0 -1
  25. package/dist/client/generateUtils.js +3 -1
  26. package/dist/compiler/applicationGroups.d.ts +53 -0
  27. package/dist/compiler/applicationGroups.js +403 -0
  28. package/dist/compiler/buildCanonicalGraph.d.ts +0 -1
  29. package/dist/compiler/canonicalGraph.d.ts +0 -1
  30. package/dist/compiler/catalogErrors.d.ts +0 -1
  31. package/dist/compiler/catalogProvenance.d.ts +0 -1
  32. package/dist/compiler/checkedAssessment.d.ts +0 -1
  33. package/dist/compiler/checkedAssessment.js +1 -1
  34. package/dist/compiler/checkedComponentSource.d.ts +16 -0
  35. package/dist/compiler/checkedComponentSource.js +31 -0
  36. package/dist/compiler/checkedSourcePreparation.d.ts +38 -1
  37. package/dist/compiler/checkedSourcePreparation.js +71 -0
  38. package/dist/compiler/complexTypeContent.d.ts +5 -6
  39. package/dist/compiler/complexTypeContent.js +2 -2
  40. package/dist/compiler/componentCorrespondence.d.ts +32 -0
  41. package/dist/compiler/componentCorrespondence.js +140 -0
  42. package/dist/compiler/componentRecordProjection.d.ts +109 -0
  43. package/dist/compiler/componentRecordProjection.js +319 -0
  44. package/dist/compiler/componentSoapPreparation.d.ts +20 -0
  45. package/dist/compiler/componentSoapPreparation.js +36 -0
  46. package/dist/compiler/composeCanonicalGraph.d.ts +0 -1
  47. package/dist/compiler/dataOwnership.d.ts +0 -1
  48. package/dist/compiler/dataOwnership.js +14 -4
  49. package/dist/compiler/datatypeValues.d.ts +0 -1
  50. package/dist/compiler/directCodec.d.ts +59 -2
  51. package/dist/compiler/directCodec.js +275 -90
  52. package/dist/compiler/directExecutionPolicy.d.ts +0 -1
  53. package/dist/compiler/directOperation.d.ts +46 -4
  54. package/dist/compiler/directOperation.js +105 -14
  55. package/dist/compiler/directSoap.d.ts +29 -5
  56. package/dist/compiler/directSoap.js +130 -37
  57. package/dist/compiler/directSoapSource.d.ts +24 -1
  58. package/dist/compiler/directSoapSource.js +166 -19
  59. package/dist/compiler/directSourceCapsule.d.ts +74 -2
  60. package/dist/compiler/directSourceCapsule.js +428 -6
  61. package/dist/compiler/directStructure.d.ts +83 -6
  62. package/dist/compiler/directStructure.js +349 -58
  63. package/dist/compiler/directStructurePlan.d.ts +135 -2
  64. package/dist/compiler/directStructurePlan.js +594 -29
  65. package/dist/compiler/directValues.d.ts +63 -4
  66. package/dist/compiler/directValues.js +950 -116
  67. package/dist/compiler/finiteRe01Construction.d.ts +69 -0
  68. package/dist/compiler/finiteRe01Construction.js +422 -0
  69. package/dist/compiler/finiteRe01Verification.d.ts +81 -3
  70. package/dist/compiler/finiteRe01Verification.js +391 -4
  71. package/dist/compiler/generateCatalog.d.ts +0 -1
  72. package/dist/compiler/graphTraversal.d.ts +0 -1
  73. package/dist/compiler/hypotheticalScopedIdentity.d.ts +0 -1
  74. package/dist/compiler/occurrenceAnalysis.d.ts +2 -1
  75. package/dist/compiler/occurrenceAnalysis.js +23 -7
  76. package/dist/compiler/originalSourceMembership.d.ts +0 -1
  77. package/dist/compiler/particleAttribution.d.ts +0 -1
  78. package/dist/compiler/particleAttribution.js +20 -0
  79. package/dist/compiler/particleDeclarationConsistency.d.ts +0 -1
  80. package/dist/compiler/particleDeclarationConsistency.js +9 -0
  81. package/dist/compiler/particleExtension.d.ts +0 -1
  82. package/dist/compiler/particleExtension.js +5 -1
  83. package/dist/compiler/particleLocalAssessment.d.ts +0 -1
  84. package/dist/compiler/particleRestriction.d.ts +0 -1
  85. package/dist/compiler/particleRestriction.js +6 -1
  86. package/dist/compiler/particleSemanticView.d.ts +2 -1
  87. package/dist/compiler/particleSemanticView.js +16 -3
  88. package/dist/compiler/particleWildcardRelation.d.ts +0 -1
  89. package/dist/compiler/projectionScalar.d.ts +32 -0
  90. package/dist/compiler/projectionScalar.js +184 -0
  91. package/dist/compiler/re01CandidateAssignments.d.ts +95 -0
  92. package/dist/compiler/re01CandidateAssignments.js +341 -0
  93. package/dist/compiler/re01CandidateCorrespondence.d.ts +22 -1
  94. package/dist/compiler/re01CandidateCorrespondence.js +167 -38
  95. package/dist/compiler/re01TypeProperties.d.ts +0 -1
  96. package/dist/compiler/re01TypePropertyValidation.d.ts +0 -1
  97. package/dist/compiler/resolveCanonicalGraph.d.ts +5 -2
  98. package/dist/compiler/resolveCanonicalGraph.js +77 -7
  99. package/dist/compiler/scalarSchemaAssessment.d.ts +0 -1
  100. package/dist/compiler/schemaAttributeGroupProperties.d.ts +0 -1
  101. package/dist/compiler/schemaAttributeProperties.d.ts +0 -1
  102. package/dist/compiler/schemaAttributeUses.d.ts +22 -2
  103. package/dist/compiler/schemaAttributeUses.js +86 -13
  104. package/dist/compiler/schemaBinaryWordReconstruction.d.ts +0 -1
  105. package/dist/compiler/schemaBuiltinFacets.d.ts +0 -1
  106. package/dist/compiler/schemaCalendarImages.d.ts +0 -1
  107. package/dist/compiler/schemaCalendarLanguage.d.ts +0 -1
  108. package/dist/compiler/schemaCompiler.d.ts +0 -1
  109. package/dist/compiler/schemaComponentEquality.d.ts +0 -1
  110. package/dist/compiler/schemaConstructionAssessment.d.ts +34 -1
  111. package/dist/compiler/schemaConstructionAssessment.js +88 -6
  112. package/dist/compiler/schemaDatatypeValues.d.ts +0 -1
  113. package/dist/compiler/schemaDecimalLanguage.d.ts +0 -1
  114. package/dist/compiler/schemaDeclarationPrimitives.d.ts +7 -2
  115. package/dist/compiler/schemaDeclarationPrimitives.js +18 -1
  116. package/dist/compiler/schemaDocumentSyntax.d.ts +0 -1
  117. package/dist/compiler/schemaDurationLanguage.d.ts +0 -1
  118. package/dist/compiler/schemaElementInstance.d.ts +30 -0
  119. package/dist/compiler/schemaElementInstance.js +45 -0
  120. package/dist/compiler/schemaElementProperties.d.ts +0 -1
  121. package/dist/compiler/schemaEndpointWordCapacity.d.ts +0 -1
  122. package/dist/compiler/schemaExactCalendar.d.ts +0 -1
  123. package/dist/compiler/schemaFacetAnnotation.d.ts +0 -1
  124. package/dist/compiler/schemaGeneratedScalarShape.d.ts +0 -1
  125. package/dist/compiler/schemaGeneratedScalarShape.js +2 -0
  126. package/dist/compiler/schemaIdentityConstraints.d.ts +0 -1
  127. package/dist/compiler/schemaIeeeLanguage.d.ts +0 -1
  128. package/dist/compiler/schemaIntegerImages.d.ts +0 -1
  129. package/dist/compiler/schemaLexicalPredicates.d.ts +0 -1
  130. package/dist/compiler/schemaNotationProperties.d.ts +0 -1
  131. package/dist/compiler/schemaNumericImageConditions.d.ts +0 -1
  132. package/dist/compiler/schemaParticleWildcardProperties.d.ts +0 -1
  133. package/dist/compiler/schemaPattern.d.ts +0 -1
  134. package/dist/compiler/schemaRegularLanguage.d.ts +0 -1
  135. package/dist/compiler/schemaScalarContext.d.ts +5 -1
  136. package/dist/compiler/schemaScalarKernel.d.ts +0 -1
  137. package/dist/compiler/schemaScalarWitnesses.d.ts +0 -1
  138. package/dist/compiler/schemaSimpleTypeProperties.d.ts +0 -1
  139. package/dist/compiler/schemaSourceGrammar.d.ts +0 -1
  140. package/dist/compiler/schemaSourceLexical.d.ts +0 -1
  141. package/dist/compiler/schemaSourceValues.d.ts +0 -1
  142. package/dist/compiler/schemaSourceWildcards.d.ts +1 -2
  143. package/dist/compiler/schemaSourceWildcards.js +3 -1
  144. package/dist/compiler/schemaSymbolicSequences.d.ts +0 -1
  145. package/dist/compiler/schemaSymbolicValueSets.d.ts +0 -1
  146. package/dist/compiler/schemaSyntaxAssessment.d.ts +0 -1
  147. package/dist/compiler/schemaTemporalAliases.d.ts +0 -1
  148. package/dist/compiler/schemaTokenImages.d.ts +0 -1
  149. package/dist/compiler/schemaTypeIdentity.d.ts +0 -1
  150. package/dist/compiler/schemaTypeIdentity.js +2 -0
  151. package/dist/compiler/schemaTypeRelations.d.ts +0 -1
  152. package/dist/compiler/schemaUri.d.ts +0 -1
  153. package/dist/compiler/schemaValueContext.d.ts +0 -1
  154. package/dist/compiler/schemaValueImages.d.ts +0 -1
  155. package/dist/compiler/schemaValueSequences.d.ts +0 -1
  156. package/dist/compiler/semanticBudget.d.ts +18 -1
  157. package/dist/compiler/semanticBudget.js +17 -2
  158. package/dist/compiler/semanticCatalog.d.ts +1 -2
  159. package/dist/compiler/semanticContext.d.ts +12 -1
  160. package/dist/compiler/semanticContext.js +39 -0
  161. package/dist/compiler/semanticTypeDependencies.d.ts +0 -1
  162. package/dist/compiler/semanticTypeReference.d.ts +0 -1
  163. package/dist/compiler/shapeResolver.d.ts +0 -1
  164. package/dist/compiler/soapHeaders.d.ts +16 -0
  165. package/dist/compiler/soapHeaders.js +42 -0
  166. package/dist/compiler/sourceSchemaBinding.d.ts +0 -1
  167. package/dist/compiler/standardSchemaComponents.d.ts +71 -0
  168. package/dist/compiler/standardSchemaComponents.js +74 -0
  169. package/dist/compiler/standardSchemaConstruction.d.ts +20 -0
  170. package/dist/compiler/standardSchemaConstruction.js +34 -0
  171. package/dist/compiler/structuralCompanions.d.ts +0 -1
  172. package/dist/compiler/validateSemanticGraph.d.ts +0 -1
  173. package/dist/compiler/wildcardAlgebra.d.ts +0 -1
  174. package/dist/compiler/wsdlPolicyRequirements.d.ts +43 -0
  175. package/dist/compiler/wsdlPolicyRequirements.js +239 -0
  176. package/dist/config.d.ts +0 -1
  177. package/dist/gateway/generateCheckedGateway.d.ts +32 -0
  178. package/dist/gateway/generateCheckedGateway.js +293 -0
  179. package/dist/gateway/generateGateway.d.ts +0 -1
  180. package/dist/gateway/generators.d.ts +0 -1
  181. package/dist/gateway/helpers.d.ts +0 -1
  182. package/dist/generation/componentShape.d.ts +14 -0
  183. package/dist/generation/componentShape.js +269 -0
  184. package/dist/generation/preamble.d.ts +0 -1
  185. package/dist/generation/sourceLayout.d.ts +13 -0
  186. package/dist/generation/sourceLayout.js +40 -0
  187. package/dist/generation/writeGeneratedSource.d.ts +0 -1
  188. package/dist/index.d.ts +7 -2
  189. package/dist/index.js +2 -1
  190. package/dist/loader/fetch.d.ts +0 -1
  191. package/dist/loader/orderedSyntax.d.ts +8 -1
  192. package/dist/loader/orderedSyntax.js +26 -6
  193. package/dist/loader/resolutionDepth.d.ts +0 -1
  194. package/dist/loader/schemaInput.d.ts +28 -1
  195. package/dist/loader/schemaInput.js +41 -4
  196. package/dist/loader/schemaResources.d.ts +2 -1
  197. package/dist/loader/schemaResources.js +45 -4
  198. package/dist/loader/wsdlLoader.d.ts +0 -1
  199. package/dist/openapi/casing.d.ts +0 -1
  200. package/dist/openapi/generateOpenAPI.d.ts +0 -1
  201. package/dist/openapi/generatePaths.d.ts +0 -1
  202. package/dist/openapi/generateSchemas.d.ts +0 -1
  203. package/dist/openapi/security.d.ts +0 -1
  204. package/dist/pipeline.d.ts +6 -2
  205. package/dist/pipeline.js +13 -0
  206. package/dist/test/generateCheckedTests.d.ts +17 -0
  207. package/dist/test/generateCheckedTests.js +60 -0
  208. package/dist/test/generateTests.d.ts +0 -1
  209. package/dist/test/generators.d.ts +0 -1
  210. package/dist/test/mockData.d.ts +0 -1
  211. package/dist/test/mockData.js +20 -14
  212. package/dist/util/attributeWildcards.d.ts +0 -1
  213. package/dist/util/builder.d.ts +0 -1
  214. package/dist/util/catalogMeta.d.ts +0 -1
  215. package/dist/util/checkedCliDiagnostics.d.ts +11 -0
  216. package/dist/util/checkedCliDiagnostics.js +22 -0
  217. package/dist/util/cli.d.ts +0 -1
  218. package/dist/util/errors.d.ts +0 -1
  219. package/dist/util/imports.d.ts +0 -1
  220. package/dist/util/runtimeSource.d.ts +0 -1
  221. package/dist/util/runtimeSource.js +3 -5
  222. package/dist/util/securityConfig.d.ts +0 -1
  223. package/dist/util/streamConfig.d.ts +0 -1
  224. package/dist/util/tools.d.ts +0 -1
  225. package/dist/util/xmlWhitespace.d.ts +0 -1
  226. package/dist/xsd/primitives.d.ts +0 -1
  227. package/docs/agent-skill.md +2 -0
  228. package/docs/api-reference.md +1 -1
  229. package/docs/checked-gateway.md +210 -0
  230. package/docs/checked-generation.md +161 -0
  231. package/docs/cli-reference.md +23 -1
  232. package/docs/concepts.md +136 -1
  233. package/docs/configuration.md +5 -1
  234. package/docs/corpus.md +33 -0
  235. package/docs/direct-values.md +13 -13
  236. package/docs/examples/checked-forecast.wsdl +19 -0
  237. package/docs/gateway-guide.md +1 -1
  238. package/docs/generated-code.md +10 -5
  239. package/docs/mapping-contract.md +114 -0
  240. package/docs/migration-playbook.md +1 -1
  241. package/docs/output-anatomy.md +1 -1
  242. package/docs/start-here.md +8 -2
  243. package/docs/supported-patterns.md +7 -3
  244. package/docs/testing.md +117 -31
  245. package/llms.txt +7 -7
  246. package/package.json +63 -22
  247. package/src/runtime/checkedGatewayHost.tpl.txt +157 -0
  248. package/src/runtime/streamXml.ts +1 -1
  249. package/dist/app/generateApp.d.ts.map +0 -1
  250. package/dist/cli.d.ts.map +0 -1
  251. package/dist/client/checkedDirectRuntime.d.ts.map +0 -1
  252. package/dist/client/directClientRuntime.d.ts.map +0 -1
  253. package/dist/client/directClientVersion.d.ts.map +0 -1
  254. package/dist/client/generateClient.d.ts.map +0 -1
  255. package/dist/client/generateDirectClient.d.ts.map +0 -1
  256. package/dist/client/generateOperations.d.ts.map +0 -1
  257. package/dist/client/generateTypes.d.ts.map +0 -1
  258. package/dist/client/generateUtils.d.ts.map +0 -1
  259. package/dist/compiler/buildCanonicalGraph.d.ts.map +0 -1
  260. package/dist/compiler/canonicalGraph.d.ts.map +0 -1
  261. package/dist/compiler/catalogErrors.d.ts.map +0 -1
  262. package/dist/compiler/catalogProvenance.d.ts.map +0 -1
  263. package/dist/compiler/checkedAssessment.d.ts.map +0 -1
  264. package/dist/compiler/checkedSourcePreparation.d.ts.map +0 -1
  265. package/dist/compiler/complexTypeContent.d.ts.map +0 -1
  266. package/dist/compiler/composeCanonicalGraph.d.ts.map +0 -1
  267. package/dist/compiler/dataOwnership.d.ts.map +0 -1
  268. package/dist/compiler/datatypeValues.d.ts.map +0 -1
  269. package/dist/compiler/directCodec.d.ts.map +0 -1
  270. package/dist/compiler/directExecutionPolicy.d.ts.map +0 -1
  271. package/dist/compiler/directOperation.d.ts.map +0 -1
  272. package/dist/compiler/directSoap.d.ts.map +0 -1
  273. package/dist/compiler/directSoapSource.d.ts.map +0 -1
  274. package/dist/compiler/directSourceCapsule.d.ts.map +0 -1
  275. package/dist/compiler/directStructure.d.ts.map +0 -1
  276. package/dist/compiler/directStructurePlan.d.ts.map +0 -1
  277. package/dist/compiler/directValues.d.ts.map +0 -1
  278. package/dist/compiler/finiteRe01Verification.d.ts.map +0 -1
  279. package/dist/compiler/generateCatalog.d.ts.map +0 -1
  280. package/dist/compiler/graphTraversal.d.ts.map +0 -1
  281. package/dist/compiler/hypotheticalScopedIdentity.d.ts.map +0 -1
  282. package/dist/compiler/occurrenceAnalysis.d.ts.map +0 -1
  283. package/dist/compiler/originalSourceMembership.d.ts.map +0 -1
  284. package/dist/compiler/particleAttribution.d.ts.map +0 -1
  285. package/dist/compiler/particleDeclarationConsistency.d.ts.map +0 -1
  286. package/dist/compiler/particleExtension.d.ts.map +0 -1
  287. package/dist/compiler/particleLocalAssessment.d.ts.map +0 -1
  288. package/dist/compiler/particleRestriction.d.ts.map +0 -1
  289. package/dist/compiler/particleSemanticView.d.ts.map +0 -1
  290. package/dist/compiler/particleWildcardRelation.d.ts.map +0 -1
  291. package/dist/compiler/re01CandidateCorrespondence.d.ts.map +0 -1
  292. package/dist/compiler/re01TypeProperties.d.ts.map +0 -1
  293. package/dist/compiler/re01TypePropertyValidation.d.ts.map +0 -1
  294. package/dist/compiler/resolveCanonicalGraph.d.ts.map +0 -1
  295. package/dist/compiler/scalarSchemaAssessment.d.ts.map +0 -1
  296. package/dist/compiler/schemaAttributeGroupProperties.d.ts.map +0 -1
  297. package/dist/compiler/schemaAttributeProperties.d.ts.map +0 -1
  298. package/dist/compiler/schemaAttributeUses.d.ts.map +0 -1
  299. package/dist/compiler/schemaBinaryWordReconstruction.d.ts.map +0 -1
  300. package/dist/compiler/schemaBuiltinFacets.d.ts.map +0 -1
  301. package/dist/compiler/schemaCalendarImages.d.ts.map +0 -1
  302. package/dist/compiler/schemaCalendarLanguage.d.ts.map +0 -1
  303. package/dist/compiler/schemaCompiler.d.ts.map +0 -1
  304. package/dist/compiler/schemaComponentEquality.d.ts.map +0 -1
  305. package/dist/compiler/schemaConstructionAssessment.d.ts.map +0 -1
  306. package/dist/compiler/schemaDatatypeValues.d.ts.map +0 -1
  307. package/dist/compiler/schemaDecimalLanguage.d.ts.map +0 -1
  308. package/dist/compiler/schemaDeclarationPrimitives.d.ts.map +0 -1
  309. package/dist/compiler/schemaDocumentSyntax.d.ts.map +0 -1
  310. package/dist/compiler/schemaDurationLanguage.d.ts.map +0 -1
  311. package/dist/compiler/schemaElementProperties.d.ts.map +0 -1
  312. package/dist/compiler/schemaEndpointWordCapacity.d.ts.map +0 -1
  313. package/dist/compiler/schemaExactCalendar.d.ts.map +0 -1
  314. package/dist/compiler/schemaFacetAnnotation.d.ts.map +0 -1
  315. package/dist/compiler/schemaGeneratedScalarShape.d.ts.map +0 -1
  316. package/dist/compiler/schemaIdentityConstraints.d.ts.map +0 -1
  317. package/dist/compiler/schemaIeeeLanguage.d.ts.map +0 -1
  318. package/dist/compiler/schemaIntegerImages.d.ts.map +0 -1
  319. package/dist/compiler/schemaLexicalPredicates.d.ts.map +0 -1
  320. package/dist/compiler/schemaNotationProperties.d.ts.map +0 -1
  321. package/dist/compiler/schemaNumericImageConditions.d.ts.map +0 -1
  322. package/dist/compiler/schemaParticleWildcardProperties.d.ts.map +0 -1
  323. package/dist/compiler/schemaPattern.d.ts.map +0 -1
  324. package/dist/compiler/schemaRegularLanguage.d.ts.map +0 -1
  325. package/dist/compiler/schemaScalarContext.d.ts.map +0 -1
  326. package/dist/compiler/schemaScalarKernel.d.ts.map +0 -1
  327. package/dist/compiler/schemaScalarWitnesses.d.ts.map +0 -1
  328. package/dist/compiler/schemaSimpleTypeProperties.d.ts.map +0 -1
  329. package/dist/compiler/schemaSourceGrammar.d.ts.map +0 -1
  330. package/dist/compiler/schemaSourceLexical.d.ts.map +0 -1
  331. package/dist/compiler/schemaSourceValues.d.ts.map +0 -1
  332. package/dist/compiler/schemaSourceWildcards.d.ts.map +0 -1
  333. package/dist/compiler/schemaSymbolicSequences.d.ts.map +0 -1
  334. package/dist/compiler/schemaSymbolicValueSets.d.ts.map +0 -1
  335. package/dist/compiler/schemaSyntaxAssessment.d.ts.map +0 -1
  336. package/dist/compiler/schemaTemporalAliases.d.ts.map +0 -1
  337. package/dist/compiler/schemaTokenImages.d.ts.map +0 -1
  338. package/dist/compiler/schemaTypeIdentity.d.ts.map +0 -1
  339. package/dist/compiler/schemaTypeRelations.d.ts.map +0 -1
  340. package/dist/compiler/schemaUri.d.ts.map +0 -1
  341. package/dist/compiler/schemaValueContext.d.ts.map +0 -1
  342. package/dist/compiler/schemaValueImages.d.ts.map +0 -1
  343. package/dist/compiler/schemaValueSequences.d.ts.map +0 -1
  344. package/dist/compiler/semanticBudget.d.ts.map +0 -1
  345. package/dist/compiler/semanticCatalog.d.ts.map +0 -1
  346. package/dist/compiler/semanticContext.d.ts.map +0 -1
  347. package/dist/compiler/semanticTypeDependencies.d.ts.map +0 -1
  348. package/dist/compiler/semanticTypeReference.d.ts.map +0 -1
  349. package/dist/compiler/shapeResolver.d.ts.map +0 -1
  350. package/dist/compiler/sourceSchemaBinding.d.ts.map +0 -1
  351. package/dist/compiler/structuralCompanions.d.ts.map +0 -1
  352. package/dist/compiler/validateSemanticGraph.d.ts.map +0 -1
  353. package/dist/compiler/wildcardAlgebra.d.ts.map +0 -1
  354. package/dist/config.d.ts.map +0 -1
  355. package/dist/gateway/generateGateway.d.ts.map +0 -1
  356. package/dist/gateway/generators.d.ts.map +0 -1
  357. package/dist/gateway/helpers.d.ts.map +0 -1
  358. package/dist/generation/preamble.d.ts.map +0 -1
  359. package/dist/generation/writeGeneratedSource.d.ts.map +0 -1
  360. package/dist/index.d.ts.map +0 -1
  361. package/dist/loader/fetch.d.ts.map +0 -1
  362. package/dist/loader/orderedSyntax.d.ts.map +0 -1
  363. package/dist/loader/resolutionDepth.d.ts.map +0 -1
  364. package/dist/loader/schemaInput.d.ts.map +0 -1
  365. package/dist/loader/schemaResources.d.ts.map +0 -1
  366. package/dist/loader/wsdlLoader.d.ts.map +0 -1
  367. package/dist/openapi/casing.d.ts.map +0 -1
  368. package/dist/openapi/generateOpenAPI.d.ts.map +0 -1
  369. package/dist/openapi/generatePaths.d.ts.map +0 -1
  370. package/dist/openapi/generateSchemas.d.ts.map +0 -1
  371. package/dist/openapi/security.d.ts.map +0 -1
  372. package/dist/pipeline.d.ts.map +0 -1
  373. package/dist/runtime/jsonArray.d.ts +0 -24
  374. package/dist/runtime/jsonArray.d.ts.map +0 -1
  375. package/dist/runtime/jsonArray.js +0 -52
  376. package/dist/runtime/ndjson.d.ts +0 -24
  377. package/dist/runtime/ndjson.d.ts.map +0 -1
  378. package/dist/runtime/ndjson.js +0 -30
  379. package/dist/runtime/streamXml.d.ts +0 -45
  380. package/dist/runtime/streamXml.d.ts.map +0 -1
  381. package/dist/runtime/streamXml.js +0 -212
  382. package/dist/test/generateTests.d.ts.map +0 -1
  383. package/dist/test/generators.d.ts.map +0 -1
  384. package/dist/test/mockData.d.ts.map +0 -1
  385. package/dist/util/attributeWildcards.d.ts.map +0 -1
  386. package/dist/util/builder.d.ts.map +0 -1
  387. package/dist/util/catalogMeta.d.ts.map +0 -1
  388. package/dist/util/cli.d.ts.map +0 -1
  389. package/dist/util/errors.d.ts.map +0 -1
  390. package/dist/util/imports.d.ts.map +0 -1
  391. package/dist/util/runtimeSource.d.ts.map +0 -1
  392. package/dist/util/securityConfig.d.ts.map +0 -1
  393. package/dist/util/streamConfig.d.ts.map +0 -1
  394. package/dist/util/tools.d.ts.map +0 -1
  395. package/dist/util/xmlWhitespace.d.ts.map +0 -1
  396. package/dist/xsd/primitives.d.ts.map +0 -1
  397. package/docs/AGENTS.md +0 -47
  398. package/docs/README.md +0 -69
  399. package/docs/architecture.md +0 -158
  400. package/docs/content-model-analysis.md +0 -92
  401. package/docs/content-model-baseline.md +0 -121
  402. package/docs/content-model-catalog.md +0 -116
  403. package/docs/content-model-companions.md +0 -90
  404. package/docs/content-model-composition.md +0 -103
  405. package/docs/content-model-decisions.md +0 -79
  406. package/docs/content-model-gateway-feasibility.md +0 -169
  407. package/docs/content-model-graph.md +0 -121
  408. package/docs/content-model-loading.md +0 -163
  409. package/docs/content-model-matching.md +0 -85
  410. package/docs/content-model-readiness.md +0 -144
  411. package/docs/content-model-resolution.md +0 -81
  412. package/docs/content-model-s02-handoff.md +0 -98
  413. package/docs/content-model-s06-au-01.md +0 -425
  414. package/docs/content-model-s06-dt-01.md +0 -386
  415. package/docs/content-model-s06-pw-01.md +0 -350
  416. package/docs/content-model-s06-re-01-resolver-implementation.md +0 -869
  417. package/docs/content-model-s06-re-01-resolver.md +0 -513
  418. package/docs/content-model-s06-re-01-scalar-witnesses.md +0 -1423
  419. package/docs/content-model-s06-re-01-support-reconstruction.md +0 -6337
  420. package/docs/content-model-s06-re-01.md +0 -7477
  421. package/docs/content-model-s06-research-handoff.md +0 -909
  422. package/docs/content-model-shipped-fix.md +0 -83
  423. package/docs/content-model-soap-feasibility.md +0 -165
  424. package/docs/decisions/001-test-generation.md +0 -36
  425. package/docs/decisions/002-streamable-responses.md +0 -332
  426. package/docs/decisions/003-content-model-contracts.md +0 -280
  427. package/docs/file-naming-and-path-organization.md +0 -213
  428. package/docs/reference-validation.md +0 -243
  429. package/docs/releases/README.md +0 -94
  430. package/docs/releases/v0.20.0.md +0 -22
  431. package/docs/releases/v0.21.0.md +0 -30
  432. package/docs/releases/v0.22.0.md +0 -30
  433. package/docs/releases/v0.23.0.md +0 -31
  434. package/docs/releases/v0.24.0.md +0 -38
  435. package/docs/releases/v0.25.0.md +0 -31
  436. package/docs/releases/v0.25.2.md +0 -32
  437. package/docs/releases/v0.26.0.md +0 -32
  438. package/docs/releases/v0.27.0.md +0 -31
  439. package/docs/releases/v0.28.0.md +0 -32
  440. package/docs/releases/v0.29.0.md +0 -32
  441. package/docs/releases/v0.30.0.md +0 -30
  442. package/docs/releases/v0.30.1.md +0 -31
  443. package/docs/releases/v0.30.2.md +0 -30
  444. package/docs/releases/v0.30.3.md +0 -33
  445. package/docs/releases/v0.31.0.md +0 -33
  446. package/docs/releases/v0.32.0.md +0 -33
  447. package/docs/releases/v0.33.0.md +0 -34
  448. package/docs/releases/v0.34.0.md +0 -30
  449. package/docs/releases/v0.35.0.md +0 -33
  450. package/docs/releases/v0.36.0.md +0 -32
  451. package/docs/releases/v0.37.0.md +0 -33
  452. package/docs/releases/v0.38.0.md +0 -35
  453. package/docs/releases/v0.39.0.md +0 -35
  454. package/docs/releases/v0.40.0.md +0 -45
  455. package/docs/releases/v0.40.1.md +0 -34
  456. package/docs/releases/v1.0.0.md +0 -42
  457. package/docs/releases/v1.0.1.md +0 -38
  458. package/docs/releases/v1.0.2.md +0 -51
  459. package/docs/releases/v1.0.3.md +0 -37
  460. package/docs/releases/v1.0.4.md +0 -45
  461. package/docs/releases/v1.0.5.md +0 -41
  462. package/docs/releases/v1.0.6.md +0 -35
  463. package/docs/releases/v1.0.7.md +0 -36
  464. package/docs/releases/v1.1.0.md +0 -42
  465. package/docs/releases/v1.1.1.md +0 -44
  466. package/docs/releases/v1.1.2.md +0 -42
  467. package/docs/releases/v1.1.3.md +0 -36
  468. package/docs/releases/v1.1.4.md +0 -36
  469. package/docs/releases/v1.1.5.md +0 -38
  470. package/docs/roadmap/README.md +0 -107
  471. package/docs/roadmap/v1.0-capability-conformance-framework.md +0 -582
  472. package/docs/roadmap/v1.0-choice-union-mode.md +0 -90
  473. package/docs/roadmap/v1.0-contract-audit.md +0 -75
  474. package/docs/roadmap/v1.0-json-array-streaming.md +0 -101
  475. package/docs/roadmap/v1.0-openapi-fastify-compatibility.md +0 -99
  476. package/docs/roadmap/v1.0-release-candidate-gates.md +0 -92
  477. package/docs/roadmap/v1.0-wsdl-coverage-matrix.md +0 -200
  478. package/docs/roadmap/v1.0-xs-anyattribute-wildcard-bag.md +0 -932
  479. package/src/runtime/jsonArray.ts +0 -55
  480. package/src/runtime/ndjson.ts +0 -32
@@ -1,582 +0,0 @@
1
- # Version 1.0 Capability Conformance Framework
2
-
3
- Status: Phase 5 shipped; release-candidate gate pass remaining before `1.0.0`.
4
-
5
- Plan for turning SOAP, WSDL, OpenAPI, gateway, app, generated-test, and documentation support claims into fixture-backed conformance evidence.
6
-
7
- Phase 1 shipped a TypeScript registry, reusable WSDL fixtures, compile-stage runner, documentation drift tests, and generated public support matrix. Phase 2 added generated client type-checking, OpenAPI validation, and executable diagnostics for terminal rows. Phase 3 added generated gateway type-checking and Fastify runtime evidence for current supported and partial rows. Phase 4 added generated-test and app scaffold evidence for those rows. Phase 5 wired conformance into validation gates through broad Vitest discovery and release preflight script verification.
8
-
9
- See the root [README.md](../../README.md) for project overview and [Version 1.0 Roadmap Plan](README.md) for the complete 1.0 route.
10
-
11
- ## Goal
12
-
13
- The project should have an internal conformance framework that proves what each important SOAP and WSDL capability does across the full generation pipeline. A capability claim is not complete until the relevant compile, client, OpenAPI, gateway, app, generated-test, runtime, and documentation surfaces either pass or fail with an explicit diagnostic.
14
-
15
- The framework should also give maintainers a repeatable issue triage path. When a user reports that a WSDL pattern does not work, maintainers should be able to reduce the report to a fixture, add a matrix row, run the conformance suite, and state exactly which stage supports, rejects, or partially supports that pattern.
16
-
17
- ## Values To Preserve
18
-
19
- - Preserve deterministic generated output.
20
- - Preserve strict TypeScript and NodeNext behavior.
21
- - Preserve the current smoke fixture as the canonical happy path.
22
- - Prefer small minimized fixtures over large real-world WSDL files.
23
- - Prefer diagnostics and documented deferrals over silent miscompilation.
24
- - Keep generated gateway behavior proven through Fastify, not only snapshots.
25
- - Keep OpenAPI behavior proven through schema assertions and validation.
26
- - Keep docs aligned with machine-readable capability IDs.
27
- - Avoid new dependencies unless the existing toolchain cannot provide the evidence.
28
- - Keep public CLI changes separate from internal conformance infrastructure.
29
-
30
- ## Capability Model
31
-
32
- A capability is a named repository behavior that can be detected, documented, and tested. Examples include `xs:choice` union mode, JSON array streaming, external `PolicyReference`, abstract complex types, substitution groups, multi-binding WSDLs, and MTOM/XOP attachments.
33
-
34
- Each capability should have a stable ID, a status, one or more fixtures, and per-stage expectations. The status describes the product contract. The stage expectations describe how the repository proves the contract.
35
-
36
- ## Capability Statuses
37
-
38
- - `supported`: the capability works through every relevant stage.
39
- - `partial`: the capability has deliberate limits that docs must describe.
40
- - `diagnostic`: the capability is rejected or warned about clearly.
41
- - `unsupported`: the capability is intentionally out of scope.
42
- - `research`: the capability needs fixture evidence before a final status.
43
-
44
- ## Stage Expectations
45
-
46
- Each matrix row should declare only the stages that apply to that capability. A diagnostic row might stop at compile. A supported gateway feature should prove compile, client, OpenAPI, gateway, and runtime behavior.
47
-
48
- ### Compile Stage
49
-
50
- The compile stage proves WSDL loading, schema compilation, catalog shape, and diagnostics. Assertions should prefer catalog metadata and structured errors over brittle full generated-file comparisons.
51
-
52
- ### Client Stage
53
-
54
- The client stage proves generated `types.ts`, `operations.ts`, `client.ts`, and helpers type-check under the repository TypeScript settings. Capability-specific assertions should inspect generated types only where the type shape is part of the public contract.
55
-
56
- ### OpenAPI Stage
57
-
58
- The OpenAPI stage proves the generated spec validates and uses the expected schema strategy. Assertions should cover schema shape, media types, operation metadata, extensions such as `x-wsdl-tsc-stream`, and security output where relevant.
59
-
60
- ### Gateway Generation Stage
61
-
62
- The gateway generation stage proves route, schema, runtime, plugin, and type-check fixture output can be generated from the OpenAPI result. Assertions should cover route registration shape and generated helper selection when those are part of the capability contract.
63
-
64
- ### Gateway Runtime Stage
65
-
66
- The gateway runtime stage proves generated Fastify routes with a mock operations client behave correctly under `fastify.inject`. Assertions should cover valid requests, invalid requests, response envelopes, response content types, stream formats, and terminal-error behavior where relevant.
67
-
68
- ### App Stage
69
-
70
- The app stage proves the standalone app scaffold can consume the generated gateway when the capability affects app wiring, package dependencies, environment variables, or gateway plugin registration. Most rows can skip this stage unless the capability changes app behavior.
71
-
72
- ### Generated Test Stage
73
-
74
- The generated test stage proves `--test-dir` emits tests that compile and pass for supported capabilities. It should also prove generated tests include capability-specific invalid cases when request validation is part of the contract.
75
-
76
- ### Documentation Stage
77
-
78
- The documentation stage proves `docs/supported-patterns.md` agrees with the capability registry. It should prevent docs from claiming support, partial support, or non-support without a matching conformance row.
79
-
80
- The public evidence matrix in `docs/supported-patterns.md` should be generated from registry rows. The rest of the page should remain human-authored so supported-pattern explanations stay useful to readers.
81
-
82
- ## Registry Shape
83
-
84
- The first implementation should use a TypeScript manifest because tests can import it with full type safety. JSON can be added later if external tooling needs a stable data format.
85
-
86
- ```ts
87
- declare const capabilities: CapabilityCase[];
88
-
89
- interface CapabilityCase {
90
- id: string;
91
- title: string;
92
- status: "supported" | "partial" | "diagnostic" | "unsupported" | "research";
93
- featureTags: string[];
94
- fixture: string;
95
- docsAnchor?: string;
96
- publicContract: string;
97
- stages: CapabilityStages;
98
- }
99
- ```
100
-
101
- Stage payloads should stay small and explicit. Avoid a generic assertion language in the first version; use typed expectation objects and small runner helpers instead.
102
-
103
- ## Standards And External Corpus
104
-
105
- Use WSDL 1.1, SOAP 1.1, XML Schema 1.0, and WS-I Basic Profile as the authority stack for Phase 1 capability expectations.
106
-
107
- WSDL 1.1 defines the service description model used by this project: `types`, `message`, `portType`, `binding`, `port`, and `service`, plus SOAP 1.1, HTTP, and MIME binding extensions.
108
-
109
- SOAP 1.1 defines the envelope and processing model that generated clients ultimately target through `node-soap`.
110
-
111
- XML Schema 1.0 defines the schema constructs compiled into TypeScript and OpenAPI shapes. XML Schema 1.1 test suites are useful as edge-case inspiration, but the project should not imply full XML Schema 1.1 support.
112
-
113
- WS-I Basic Profile 1.1 and 1.2 define interoperability constraints across SOAP, WSDL, XML Schema, and HTTP. Treat WS-I rules as the best available profile for portable SOAP behavior, not as a complete fixture source.
114
-
115
- Do not vendor third-party WSDL or XSD corpora wholesale in Phase 1. Prefer minimized synthetic fixtures derived from standard rules and clearly cite the relevant standard or profile section in the registry row.
116
-
117
- Third-party suites can inform future rows:
118
-
119
- - W3C WSDL 2.0 Test Suite: useful for conformance-suite structure, but not directly applicable to this WSDL 1.1 generator.
120
- - W3C XML Schema test suite: useful for XSD edge-case discovery, but it validates schema processors rather than WSDL-to-client generation.
121
- - WS-I test assertions and analyzer tools: useful for interoperability rule vocabulary, but heavy and not a direct TypeScript generation oracle.
122
- - Apache Axis or Apache CXF sample WSDL files: useful as real-world smoke candidates when license and fixture scope are clear.
123
-
124
- ## Public Fixture Corpus Direction
125
-
126
- The conformance framework should be designed so its fixtures can later seed a standalone public project, tentatively named `wsdl-conformance-fixtures`.
127
-
128
- The public fixture project would be an experimental, curated corpus of small WSDL and XSD fixtures for SOAP client and code-generation tools. It should not claim to be an official standards' suite. It should provide practical, source-backed examples for valid, partial, diagnostic, unsupported, recovery, and real-world-compatible behaviors.
129
-
130
- The public corpus should preserve clean licensing and clear provenance. Do not copy external corpora wholesale. Prefer original minimized fixtures derived from standards, profiles, and observed real-world patterns.
131
-
132
- Phase 1 should add metadata that will make extraction possible later without changing every row:
133
-
134
- - `authority`: the standard, profile, or real-world source category behind the case.
135
- - `provenance`: a short explanation of whether the fixture is original, minimized from a report, or inspired by a third-party example.
136
- - `license`: the fixture license or repository default license.
137
- - `fixtureKind`: one of `standards-valid`, `interop-profile`, `real-world-compatible`, `diagnostic-required`, or `recovery`.
138
-
139
- Do not publish the standalone fixture project before the internal registry has proven the metadata shape with multiple useful rows. The first public release should happen only after maintainers can explain how another tool would consume the fixtures without depending on this repository's internals.
140
-
141
- ## Fixture Corpus Goals
142
-
143
- The internal corpus should serve this repository first. It should make generator behavior explicit, prevent silent miscompilation, and give maintainers a repeatable way to classify WSDL reports.
144
-
145
- The future public corpus should serve the SOAP tooling community. It should offer small, understandable fixtures that other generators, validators, and migration tools can run against or inspect.
146
-
147
- The corpus should distinguish standards conformance from product policy. A fixture can be standards-valid while unsupported by this generator, or non-ideal but common enough to justify recovery behavior.
148
-
149
- The corpus should be useful without a live network. Every fixture should be committed with local relative imports and no dependency on public SOAP endpoints.
150
-
151
- The corpus should be explainable. Each fixture should say what behavior it exercises, what source justifies the expectation, and which outcomes are acceptable.
152
-
153
- ## Decision Framework
154
-
155
- Use this framework before changing a capability from `research` to a final status. The decision should optimize for truthful generation, deterministic output, and maintainable SOAP modernization rather than broad standards' completeness.
156
-
157
- First decide whether the construct is important enough for this project. Favor support when the feature is common in WSDLs, important for enterprise modernization, or already required by existing generated outputs. Favor deferral when the feature is rare, can be worked around, or requires a runtime contract outside the current product surface.
158
-
159
- Then decide whether the construct can be modeled honestly in `catalog.json`. If the catalog can represent the shape without losing semantics, support or partial support may be appropriate. If the catalog hid polymorphism, transport behavior, binary parts, external network policy, or runtime ambiguity, prefer a diagnostic or unsupported decision.
160
-
161
- Then check downstream stages. A `supported` row must work through every relevant stage. A feature that compiles but cannot be represented in generated TypeScript, OpenAPI, gateway runtime, or generated tests should be `partial` unless those stages do not apply.
162
-
163
- Then check implementation locality. Local schema transforms such as simple aliases, deterministic metadata retention, and documented first-choice behavior are good support candidates. Features that require broad runtime semantics, wire-protocol changes, or public API design should usually become diagnostics or explicit deferrals before 1.0.
164
-
165
- Use these decisions:
166
-
167
- - `support`: implement and prove the feature through relevant stages.
168
- - `partial-support`: implement the honest subset and document the limit.
169
- - `diagnostic`: reject or warn clearly to avoid silent miscompilation.
170
- - `defer`: keep a fixture and rationale, but do not claim support yet.
171
- - `out-of-scope`: document that the feature is intentionally outside the 1.0 product contract.
172
-
173
- When full support is clearly local, deterministic, and representable, implement it rather than leaving unnecessary diagnostics. When full support would imply semantics the generator cannot preserve, prefer diagnostics to partial, misleading output.
174
-
175
- ## Phase 1 Decisions
176
-
177
- Phase 1 shipped in the `0.30.x` line. Keep this section as the historical baseline and as guardrails for future registry changes.
178
-
179
- Phase 1 is internal test infrastructure. It must not add exports from `src/index.ts`, new public CLI commands, or new consumer-facing APIs.
180
-
181
- The first registry should live under `test/conformance/registry.ts`. It should export types and data for repository tests only. Public package exports can be reconsidered after the inspector has a stable use case.
182
-
183
- The first runner should live under `test/conformance/runner.ts`. It should execute compile-stage checks by calling `loadWsdl`, `compileCatalog`, and `resolveCompilerOptions` directly.
184
-
185
- The first Vitest entry point should be `test/conformance/conformance.test.ts`. Add `npm run test:conformance` and keep it included in `npm test` through Vitest's normal test discovery.
186
-
187
- Fixtures should live under `test/conformance/fixtures/`. Each fixture should be a committed `.wsdl` or `.xsd` file, use relative files only, and require no network access.
188
-
189
- Documentation drift checks should start as a lightweight test in `test/conformance/docs.test.ts`. The test should verify that each registry row with a `docsAnchor` points to an existing heading anchor in `docs/supported-patterns.md`.
190
-
191
- The public evidence matrix should be generated from the registry with `npm run docs:support-matrix`. The check command should fail when the generated table and committed table drift.
192
-
193
- ## Phase 1 File Map
194
-
195
- The Phase 1 file map is implemented. Keep these ownership boundaries in place while extending the framework.
196
-
197
- `test/conformance/types.ts` owns shared registry types. Keep these types out of `src/` until a public API is justified.
198
-
199
- `test/conformance/registry.ts` owns the initial capability rows. Include new priority features from the WSDL coverage matrix here before changing generator behavior.
200
-
201
- `test/conformance/runner.ts` owns compile-stage execution helpers. Resolve fixture paths relative to `test/conformance/fixtures/` and create one temporary output directory per case under the OS temp directory.
202
-
203
- `test/conformance/conformance.test.ts` owns manifest-driven compile tests. Supported and partial rows should compile successfully; diagnostic rows should assert the error shape or explicit warning behavior.
204
-
205
- `test/conformance/docs.test.ts` owns registry-to-docs alignment. It should validate existing heading anchors and prove that the public evidence matrix matches generated registry output.
206
-
207
- `test/conformance/fixtures/` contains minimal WSDL fixtures. Keep each fixture synthetic, deterministic, and scoped to one capability.
208
-
209
- `package.json` exposes `test:conformance` with `vitest run test/conformance`.
210
-
211
- Modify `docs/supported-patterns.md` only when the registry reveals a real mismatch. Generate only the evidence matrix from the registry in Phase 1; do not rewrite the explanatory sections from registry data.
212
-
213
- ## Phase 1 Type Contract
214
-
215
- Use these internal test types as the starting point:
216
-
217
- ```ts
218
- export type CapabilityStatus = "supported" | "partial" | "diagnostic" | "unsupported" | "research";
219
-
220
- export type CompileExpectation =
221
- | { outcome: "success"; typeNames?: string[]; aliasNames?: string[]; operationNames?: string[]; diagnosticNotes?: string[] }
222
- | { outcome: "error"; errorClass?: "WsdlCompilationError"; messageIncludes?: string[]; userMessageIncludes?: string[]; context?: Partial<WsdlErrorContext> }
223
- | { outcome: "research"; reason: string };
224
-
225
- export interface CapabilityCase {
226
- id: string;
227
- title: string;
228
- status: CapabilityStatus;
229
- featureTags: string[];
230
- fixture: string;
231
- docsAnchor?: string;
232
- publicContract: string;
233
- decision: CapabilityDecision;
234
- decisionReason: string;
235
- compile: CompileExpectation;
236
- }
237
- ```
238
-
239
- `docsAnchor` values should use the same heading slug rules as the repository docs validator. Phase 1 may point rows to broad section anchors such as `fully-supported`, `partially-supported`, `not-yet-supported`, or `known-edge-cases`. Add feature-level headings to `docs/supported-patterns.md` only when a broad section anchor is too ambiguous for a row.
240
-
241
- `error` expectations should assert `instanceof WsdlCompilationError` when `errorClass` is `WsdlCompilationError`. `messageIncludes` checks should inspect `error.message`, `userMessageIncludes` checks should inspect `error.toUserMessage()`, and `context` checks should inspect `error.context`.
242
-
243
- `unsupported` rows should not silently pass. They should either use an `error` compile expectation or remain `research` until a diagnostic exists.
244
-
245
- `partial` rows should compile successfully only when the limitation is explicitly documented. The row should include a `docsAnchor` and an assertion that proves the supported subset.
246
-
247
- `research` rows should not pretend to validate support. They should load the fixture only if useful, then state the unresolved decision in the registry.
248
-
249
- ## Phase 1 Conventions
250
-
251
- Prefer committed fixture files over inline WSDL strings. Inline WSDL builders are useful for focused unit tests, but conformance cases should be inspectable as standalone artifacts.
252
-
253
- Use the taxonomy path convention in [File Naming And Path Organization](../file-naming-and-path-organization.md) for reusable fixtures. Put imported schemas beside the root WSDL when a capability needs multiple files.
254
-
255
- Use a runner-owned temporary directory per capability case. Do not share a module-level temp root across the suite, because conformance failures should leave case-local paths easy to inspect.
256
-
257
- Assert catalog shape through stable names and metadata. Avoid full catalog snapshots in Phase 1 because the registry should describe capability contracts, not freeze incidental serialization details.
258
-
259
- Assert diagnostics through `WsdlCompilationError` and catalog `diagnostics.notes`. Do not assert full formatted messages unless the exact text is part of the public contract.
260
-
261
- Prefer adding feature-level headings in `docs/supported-patterns.md` when a broad section anchor would make the docs check too weak. Keep those headings short and user-facing.
262
-
263
- ## Fixture Strategy
264
-
265
- Fixtures should live under a dedicated conformance fixture directory, separate from the weather smoke fixture. Each fixture should be minimal, synthetic, deterministic, and focused on one capability unless the purpose is to prove a composition case.
266
-
267
- Reported user WSDLs should not be committed wholesale by default. Maintainers should reduce them to the smallest reproducible fixture and remove private endpoints, credentials, business names, and proprietary type names.
268
-
269
- ## Fastify Gateway Testing Pattern
270
-
271
- Gateway conformance rows should generate the gateway into a temporary directory, import the generated plugin, provide a mock operations client, and call routes with `fastify.inject`. This proves the generated gateway works as a Fastify integration, not just as emitted text.
272
-
273
- Supported request-validation capabilities should include at least one accepted request and one rejected request when the schema can represent invalid input. Response capabilities should assert envelope shape, status code, content type, and serialized payload.
274
-
275
- Streaming capabilities should assert the configured content type, NDJSON or JSON array parsing behavior, and terminal-error behavior. JSON array rows should keep the pre-first-record and post-first-byte error cases distinct.
276
-
277
- ## Issue Triage Workflow
278
-
279
- When a user reports a WSDL incompatibility, maintainers should first run or approximate the future inspector output. The report should be classified by capability IDs before generator code changes are considered.
280
-
281
- The triage flow should be:
282
-
283
- 1. Reduce the reported WSDL to a minimal fixture.
284
- 2. Add or update a capability row.
285
- 3. Mark the row as `research`, `diagnostic`, `partial`, or `supported`.
286
- 4. Run the relevant conformance stages.
287
- 5. Decide whether to implement support, add diagnostics, or document a deferral.
288
- 6. Link the issue to the capability ID in the changelog or release notes when behavior changes.
289
-
290
- ## WSDL Inspector Direction
291
-
292
- The WSDL inspector should be built after the first conformance registry exists. It should reuse the same capability IDs and statuses rather than maintaining a separate feature list.
293
-
294
- The inspector should analyze a WSDL and report detected patterns, support status, known limitations, and suggested workarounds. It should have a JSON output for CI and issue templates, and a Markdown or text output for humans.
295
-
296
- The inspector should not be treated as proof that generation will succeed. It is an orientation and triage tool. The conformance runner remains the proof mechanism.
297
-
298
- ## Inspector Research Questions
299
-
300
- - Which feature signals are visible in the raw WSDL and XSD AST before compilation?
301
- - Which feature signals require the compiled catalog?
302
- - Which current limitations silently compile and need diagnostics first?
303
- - Which recommendations can be stable enough for user-facing output?
304
- - Which output shape should be public if the inspector becomes a CLI command?
305
-
306
- ## Phase 1: Registry And Compile Matrix
307
-
308
- The capability registry, fixture directory, and Vitest runner for compile-stage expectations are implemented. Keep unsupported rows diagnostic or research-only until behavior is proven.
309
-
310
- Start with these capability IDs:
311
-
312
- | ID | Status | Compile expectation |
313
- |---|---|---|
314
- | `choice-union-simple` | supported | success |
315
- | `xs-union-simple-type` | supported | success |
316
- | `abstract-complex-type` | diagnostic | error or research |
317
- | `substitution-group-element` | diagnostic | error or research |
318
- | `multi-binding-first-soap` | partial | success with documented behavior |
319
- | `external-policy-reference` | partial | success with documented limitation |
320
- | `deep-composition-sequence` | supported | success |
321
- | `xs-anyattribute` | supported | success with wildcard attribute bag evidence |
322
- | `mtom-xop-attachment` | unsupported | error or research |
323
-
324
- Acceptance criteria:
325
-
326
- - The registry includes every priority row from the WSDL coverage slice.
327
- - Each row has a stable ID, status, fixture, and compile expectation.
328
- - `docs/supported-patterns.md` has matching capability IDs or anchors.
329
- - The runner works without network access.
330
- - `npm run test:conformance` passes.
331
- - `npm test` includes the conformance suite.
332
- - No Phase 1 change expands the public API.
333
-
334
- ## Phase 2: Client And OpenAPI Evidence
335
-
336
- Phase 2 is implemented for the current supported and partial WSDL rows. Keep this section as the baseline for future client and OpenAPI evidence.
337
-
338
- Extend supported rows to generate clients and OpenAPI specs. Add type-check verification for generated clients and schema assertions for OpenAPI output.
339
-
340
- Acceptance criteria:
341
-
342
- - Supported rows type-check generated client output.
343
- - OpenAPI specs validate for supported rows.
344
- - Capability-specific schema strategies are asserted where they matter.
345
- - Diagnostic rows stop before downstream stages.
346
-
347
- Recommended scope:
348
-
349
- - Add optional `client` and `openapi` expectation blocks to `CapabilityCase`.
350
- - Generate artifacts into a temporary directory owned by each capability row.
351
- - Emit a temporary `tsconfig.json` that includes generated client artifacts and uses repository NodeNext settings.
352
- - Validate OpenAPI documents through the same validator used by existing OpenAPI tests.
353
- - Assert public schema contracts for rows that already claim support or partial support.
354
-
355
- Skeptical review notes:
356
-
357
- - A `supported` status should not rely on compile-only evidence after this phase.
358
- - `diagnostic` rows currently using `research` compile expectations need either real diagnostics or clearer deferral language.
359
- - Whole-file snapshots would make conformance brittle; prefer targeted assertions on generated types, schemas, paths, and operation metadata.
360
- - The support matrix generator should remain limited to the public evidence table, not the human-authored explanatory sections.
361
- - Keep the inspector out of this slice unless the stage evidence reveals a stable detection model.
362
-
363
- ## Phase 3: Gateway Runtime Evidence
364
-
365
- Phase 3 is implemented for the current supported and partial WSDL rows. Keep this section as the baseline for future gateway conformance rows.
366
-
367
- Extend current supported and partial rows to generate gateways, type-check generated gateway artifacts, and test Fastify runtime behavior through `fastify.inject`. Add mock operations clients and request/response fixtures as part of each row's registry evidence.
368
-
369
- ### Phase 3 Goal
370
-
371
- A supported or partial row should no longer stop at compile, client, and OpenAPI evidence when gateway behavior is relevant. The row should prove that the generated Fastify plugin can be imported, registered with a mock operations client, and exercised through HTTP injection.
372
-
373
- Diagnostic and unsupported rows must continue to stop at compile. They must not generate client, OpenAPI, or gateway artifacts after the expected diagnostic.
374
-
375
- ### Phase 3 Source Files
376
-
377
- - `test/conformance/types.ts`
378
- - `test/conformance/registry.ts`
379
- - `test/conformance/runner.ts`
380
- - `test/conformance/conformance.test.ts`
381
- - `src/gateway/generateGateway.ts`
382
- - `test/integration/gateway-routes.test.ts`
383
-
384
- Use `test/integration/gateway-routes.test.ts` as the runtime pattern for generated plugin imports, mock clients, Fastify registration, and `fastify.inject` assertions. Keep conformance-specific helpers in `test/conformance/runner.ts`.
385
-
386
- ### Phase 3 Type Model
387
-
388
- Add a small optional `gateway` expectation block to `CapabilityCase`. Keep it internal to `test/conformance/types.ts`; do not export it from `src/index.ts` and do not add a public CLI command.
389
-
390
- The initial model should stay close to the current `client` and `openapi` expectations:
391
-
392
- ```ts
393
- export interface GatewayArtifacts {
394
- clientDir: string;
395
- gatewayDir: string;
396
- openapiFile: string;
397
- catalogFile: string;
398
- compiled: CompiledCatalog;
399
- doc: any;
400
- routeFor: (operationId: string) => {method: string; path: string};
401
- readGatewayFile: (relativePath: string) => string;
402
- }
403
-
404
- export interface GatewayRequestExpectation {
405
- operationId: string;
406
- payload: unknown;
407
- mockClient: Record<string, (args: unknown) => Promise<{response: unknown; headers: unknown}>>;
408
- expectedStatus: number;
409
- assertBody?: (body: any) => void;
410
- assertClientArgs?: (args: unknown) => void;
411
- }
412
-
413
- export interface GatewayExpectation {
414
- outcome: "success";
415
- requests?: GatewayRequestExpectation[];
416
- sourceIncludes?: Array<{file: string; text: string}>;
417
- assert?: (artifacts: GatewayArtifacts) => void | Promise<void>;
418
- }
419
- ```
420
-
421
- This shape is a starting contract, not a generic assertion language. If implementation reveals a simpler local helper, prefer the simpler helper as long as a fresh agent can still understand how to add a new row.
422
-
423
- ### Phase 3 Runner Flow
424
-
425
- `runGatewayCase` should use one temporary output root per capability row and remove it after success. If a row fails, the thrown error should include the capability ID and the generated path involved.
426
-
427
- Generated conformance projects should live under `tmp/conformance/`, not the OS temp directory. Gateway conformance generates a small TypeScript project that imports `soap`, `fastify`, `fastify-plugin`, generated JSON schemas, and generated sibling modules. Keeping that project under the repository lets normal Node and TypeScript ancestor lookup find `node_modules`, package metadata, and tool caches without brittle `paths` shims. OS temp directories remain acceptable for unit probes that do not type-check or import generated project graphs.
428
-
429
- The runner should perform these steps:
430
-
431
- 1. Compile the row fixture with `loadWsdl`, `resolveCompilerOptions`, and `compileCatalog`.
432
- 2. Generate client artifacts into `<temp>/client`.
433
- 3. Write `<temp>/client/catalog.json` with `generateCatalog`.
434
- 4. Type-check generated client artifacts using the existing temporary `tsconfig.json` pattern.
435
- 5. Generate OpenAPI into `<temp>/openapi.json` with validation enabled.
436
- 6. Generate gateway artifacts into `<temp>/gateway` with `generateGateway`.
437
- 7. Pass `clientDir`, `catalogFile`, `versionSlug`, and `serviceSlug` to `generateGateway`.
438
- 8. Type-check generated client and gateway artifacts together.
439
- 9. Dynamically import `<temp>/gateway/plugin.ts`.
440
- 10. Register the plugin with `Fastify({logger: false})` and the row's mock operations' client.
441
- 11. Resolve each request path from the generated OpenAPI operation when possible.
442
- 12. Execute `fastify.inject` and run row-specific status and body assertions.
443
-
444
- Use stable gateway options unless a row declares a reason to override them:
445
-
446
- ```ts
447
- await generateGateway({
448
- openapiFile,
449
- outDir: gatewayDir,
450
- clientDir,
451
- catalogFile,
452
- versionSlug: "v1",
453
- serviceSlug: "conformance",
454
- });
455
- ```
456
-
457
- Keep service and version slugs deterministic. Do not derive slugs from temporary paths.
458
-
459
- ### Phase 3 Registry Scope
460
-
461
- Add `gateway` expectations only to rows that already have successful compile, client, and OpenAPI expectations.
462
-
463
- Rows expected to receive gateway evidence in this slice:
464
-
465
- - `choice-union-simple`
466
- - `xs-union-simple-type`
467
- - `multi-binding-first-soap`
468
- - `external-policy-reference`
469
- - `deep-composition-sequence`
470
- - `xs-anyattribute`
471
-
472
- Rows that must not receive gateway evidence in this slice:
473
-
474
- - `abstract-complex-type`
475
- - `substitution-group-element`
476
- - `mtom-xop-attachment`
477
-
478
- ### Phase 3 Assertion Guidance
479
-
480
- Every row with a `gateway` expectation should at least prove plugin import and registration. Add request assertions when HTTP behavior is part of the row's public contract.
481
-
482
- For supported rows, prefer one accepted request with a SOAP-wrapper-shaped mock response and an assertion on the generated success envelope. Add one rejected request only when the generated OpenAPI schema can express a meaningful invalid payload for that capability.
483
-
484
- For partial rows, prove the documented subset and avoid implying full support. External `PolicyReference` should not imply fetched or enforced external policy. The `xs-anyattribute` row is supported once generated TypeScript, OpenAPI, gateway, generated-test, and app evidence prove the configured wildcard attribute bag.
485
-
486
- For multi-binding rows, assert that the gateway route calls the operation selected by the deterministic first SOAP binding behavior. Do not implement explicit binding selection in this slice.
487
-
488
- ### Phase 3 Non-Goals
489
-
490
- - Do not add new WSDL feature rows.
491
- - Do not add a public inspector command.
492
- - Do not change generated gateway public APIs unless gateway evidence exposes a real bug.
493
- - Do not snapshot whole generated files.
494
- - Do not treat plugin generation alone as runtime support.
495
- - Do not proceed past compile for diagnostic or unsupported rows.
496
-
497
- ### Phase 3 Acceptance Criteria
498
-
499
- - `CapabilityCase` supports optional gateway expectations.
500
- - `test/conformance/conformance.test.ts` requires gateway expectations for supported and partial rows.
501
- - `runGatewayCase` generates client, catalog, OpenAPI, and gateway artifacts in a row-local temp directory.
502
- - Generated client and gateway artifacts type-check together.
503
- - Generated plugins import and register successfully in Fastify.
504
- - Gateway request expectations run through `fastify.inject`.
505
- - Diagnostic and unsupported rows remain compile-terminal.
506
- - `npm run test:conformance` passes.
507
- - `npm run typecheck` passes.
508
- - `npm run docs:validate` passes after any support matrix or roadmap updates.
509
-
510
- ### Phase 3 Test-First Sequence
511
-
512
- Start by adding the type fields, the downstream declaration guard, and the `runGatewayCase` test call. The first focused run of `npm run test:conformance` should fail because registry rows do not yet declare gateway expectations or because the runner is not implemented.
513
-
514
- Then implement the runner helper and add the smallest gateway expectations per row. Keep failures local: if one row exposes a real gateway bug, either fix the bug with focused tests or downgrade the row's public contract only when the decision framework supports that change.
515
-
516
- ### Phase 3 Verification Commands
517
-
518
- Run these commands before concluding the slice:
519
-
520
- ```bash
521
- npm run test:conformance
522
- npm run typecheck
523
- npm run docs:validate
524
- npm test
525
- ```
526
-
527
- Run `npm run smoke:pipeline` as a final end-to-end guard if gateway generator behavior changes outside the conformance runner.
528
-
529
- ## Phase 4: Generated Test And App Evidence
530
-
531
- Phase 4 is implemented for the current supported and partial WSDL rows. Keep this section as the baseline for future generated-test and app conformance rows.
532
-
533
- Extend relevant rows to generate `--test-dir` output and app scaffolds. Run generated tests only for rows where generated-test behavior is part of the capability contract.
534
-
535
- Generated-test and app evidence must consume generated artifacts as a consumer would. Route paths, operation IDs, schemas, and app wiring must come from generated OpenAPI, gateway, test, and app files. Do not add conformance-only route overrides or fixture-specific route maps to make generated tests pass.
536
-
537
- Acceptance criteria:
538
-
539
- - Generated tests pass for supported rows that request them.
540
- - Generated validation tests include capability-specific invalid cases.
541
- - App scaffolds type-check when the capability affects app wiring.
542
- - Runtime dependency assumptions stay aligned with `package.json`.
543
- - Generated app `tsconfig.json` covers sibling client and gateway artifacts when those folders are outside the app directory.
544
- - Diagnostic and unsupported rows remain compile-terminal.
545
-
546
- ## Phase 5: Documentation And Release Gates
547
-
548
- Phase 5 is implemented. Keep this section as the baseline for conformance gate ownership.
549
-
550
- `npm run test:conformance` remains the complete maintainer command for WSDL capability rows. Stage commands under `test:conformance:<stage>` provide contracts, compile, client, OpenAPI, gateway, generated-test, and app feedback without running unrelated evidence layers. `npm test` and `npm run ci` cover the canonical full suite through broad Vitest discovery, so release preflight does not run a duplicate full conformance pass. Release preflight instead runs a cheap `conformance-gate` script check that fails if the full command disappears, if `npm test` becomes scoped away from `test/conformance`, or if `npm run ci` stops running the broad test command.
551
-
552
- The complete suite generates consumer-style projects and launches nested TypeScript and Vitest processes. A maintained Windows run takes about three to four minutes. Maintainers and agents should allow at least six minutes and inspect the active process before diagnosing a quiet interval as a stall.
553
-
554
- Acceptance criteria:
555
-
556
- - `docs/supported-patterns.md` cannot drift from the registry.
557
- - CI runs conformance through broad Vitest discovery.
558
- - Release preflight verifies conformance command and CI wiring.
559
- - Full conformance can run locally before `1.0.0`.
560
- - Release notes can cite capability IDs for behavior changes.
561
-
562
- ## Post-1.0 WSDL Inspector
563
-
564
- The WSDL inspector is explicitly deferred until after `1.0.0`. Build it after the registry has enough stable coverage to be useful, starting with a programmatic API and internal CLI output before committing to public command semantics.
565
-
566
- Acceptance criteria:
567
-
568
- - The inspector maps detected WSDL patterns to capability IDs.
569
- - JSON output is stable enough for issue templates.
570
- - Human output includes status, limitation, and workaround text.
571
- - Inspector findings link back to matrix evidence.
572
-
573
- ## Post-1.0 Decisions
574
-
575
- - Decide whether an inspector output format should become public.
576
- - Decide whether docs should remain manually maintained or eventually generated from the registry.
577
-
578
- ## Release Implications
579
-
580
- This framework is 1.0 readiness infrastructure. Stage-specific maintainer commands ship in `0.40.1`, while the canonical full suite stays release-blocking.
581
-
582
- Do not block `1.0.0` on the WSDL inspector. The registry and runner create the durable foundation; the post-1.0 inspector should reuse that foundation after it proves useful.