@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.
Files changed (422) hide show
  1. package/README.md +81 -35
  2. package/dist/app/generateApp.d.ts +0 -1
  3. package/dist/app/generateApp.js +8 -6
  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 +123 -5
  12. package/dist/client/checkedDirectRuntime.d.ts +96 -0
  13. package/dist/client/checkedDirectRuntime.js +43 -0
  14. package/dist/client/directClientRuntime.d.ts +74 -0
  15. package/dist/client/directClientRuntime.js +165 -0
  16. package/dist/client/directClientVersion.d.ts +6 -0
  17. package/dist/client/directClientVersion.js +6 -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 +32 -0
  21. package/dist/client/generateDirectClient.js +268 -0
  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 +6 -0
  29. package/dist/compiler/buildCanonicalGraph.js +381 -0
  30. package/dist/compiler/canonicalGraph.d.ts +197 -0
  31. package/dist/compiler/canonicalGraph.js +37 -0
  32. package/dist/compiler/catalogErrors.d.ts +17 -0
  33. package/dist/compiler/catalogErrors.js +86 -0
  34. package/dist/compiler/catalogProvenance.d.ts +14 -0
  35. package/dist/compiler/catalogProvenance.js +229 -0
  36. package/dist/compiler/checkedAssessment.d.ts +90 -0
  37. package/dist/compiler/checkedAssessment.js +300 -0
  38. package/dist/compiler/checkedComponentSource.d.ts +16 -0
  39. package/dist/compiler/checkedComponentSource.js +31 -0
  40. package/dist/compiler/checkedSourcePreparation.d.ts +72 -0
  41. package/dist/compiler/checkedSourcePreparation.js +202 -0
  42. package/dist/compiler/complexTypeContent.d.ts +58 -0
  43. package/dist/compiler/complexTypeContent.js +558 -0
  44. package/dist/compiler/componentCorrespondence.d.ts +32 -0
  45. package/dist/compiler/componentCorrespondence.js +140 -0
  46. package/dist/compiler/componentRecordProjection.d.ts +109 -0
  47. package/dist/compiler/componentRecordProjection.js +319 -0
  48. package/dist/compiler/componentSoapPreparation.d.ts +20 -0
  49. package/dist/compiler/componentSoapPreparation.js +36 -0
  50. package/dist/compiler/composeCanonicalGraph.d.ts +68 -0
  51. package/dist/compiler/composeCanonicalGraph.js +252 -0
  52. package/dist/compiler/dataOwnership.d.ts +21 -0
  53. package/dist/compiler/dataOwnership.js +167 -0
  54. package/dist/compiler/datatypeValues.d.ts +46 -0
  55. package/dist/compiler/datatypeValues.js +275 -0
  56. package/dist/compiler/directCodec.d.ts +116 -0
  57. package/dist/compiler/directCodec.js +377 -0
  58. package/dist/compiler/directExecutionPolicy.d.ts +9 -0
  59. package/dist/compiler/directExecutionPolicy.js +17 -0
  60. package/dist/compiler/directOperation.d.ts +114 -0
  61. package/dist/compiler/directOperation.js +373 -0
  62. package/dist/compiler/directSoap.d.ts +66 -0
  63. package/dist/compiler/directSoap.js +391 -0
  64. package/dist/compiler/directSoapSource.d.ts +38 -0
  65. package/dist/compiler/directSoapSource.js +233 -0
  66. package/dist/compiler/directSourceCapsule.d.ts +169 -0
  67. package/dist/compiler/directSourceCapsule.js +727 -0
  68. package/dist/compiler/directStructure.d.ts +128 -0
  69. package/dist/compiler/directStructure.js +543 -0
  70. package/dist/compiler/directStructurePlan.d.ts +149 -0
  71. package/dist/compiler/directStructurePlan.js +623 -0
  72. package/dist/compiler/directValues.d.ts +128 -0
  73. package/dist/compiler/directValues.js +1116 -0
  74. package/dist/compiler/finiteRe01Construction.d.ts +69 -0
  75. package/dist/compiler/finiteRe01Construction.js +422 -0
  76. package/dist/compiler/finiteRe01Verification.d.ts +218 -0
  77. package/dist/compiler/finiteRe01Verification.js +1217 -0
  78. package/dist/compiler/generateCatalog.d.ts +0 -1
  79. package/dist/compiler/graphTraversal.d.ts +10 -0
  80. package/dist/compiler/graphTraversal.js +37 -0
  81. package/dist/compiler/hypotheticalScopedIdentity.d.ts +22 -0
  82. package/dist/compiler/hypotheticalScopedIdentity.js +81 -0
  83. package/dist/compiler/occurrenceAnalysis.d.ts +66 -0
  84. package/dist/compiler/occurrenceAnalysis.js +316 -0
  85. package/dist/compiler/originalSourceMembership.d.ts +5 -0
  86. package/dist/compiler/originalSourceMembership.js +31 -0
  87. package/dist/compiler/particleAttribution.d.ts +16 -0
  88. package/dist/compiler/particleAttribution.js +494 -0
  89. package/dist/compiler/particleDeclarationConsistency.d.ts +23 -0
  90. package/dist/compiler/particleDeclarationConsistency.js +206 -0
  91. package/dist/compiler/particleExtension.d.ts +21 -0
  92. package/dist/compiler/particleExtension.js +123 -0
  93. package/dist/compiler/particleLocalAssessment.d.ts +19 -0
  94. package/dist/compiler/particleLocalAssessment.js +92 -0
  95. package/dist/compiler/particleRestriction.d.ts +23 -0
  96. package/dist/compiler/particleRestriction.js +494 -0
  97. package/dist/compiler/particleSemanticView.d.ts +51 -0
  98. package/dist/compiler/particleSemanticView.js +310 -0
  99. package/dist/compiler/particleWildcardRelation.d.ts +87 -0
  100. package/dist/compiler/particleWildcardRelation.js +143 -0
  101. package/dist/compiler/projectionScalar.d.ts +32 -0
  102. package/dist/compiler/projectionScalar.js +184 -0
  103. package/dist/compiler/re01CandidateAssignments.d.ts +95 -0
  104. package/dist/compiler/re01CandidateAssignments.js +341 -0
  105. package/dist/compiler/re01CandidateCorrespondence.d.ts +85 -0
  106. package/dist/compiler/re01CandidateCorrespondence.js +701 -0
  107. package/dist/compiler/re01TypeProperties.d.ts +70 -0
  108. package/dist/compiler/re01TypeProperties.js +120 -0
  109. package/dist/compiler/re01TypePropertyValidation.d.ts +22 -0
  110. package/dist/compiler/re01TypePropertyValidation.js +161 -0
  111. package/dist/compiler/resolveCanonicalGraph.d.ts +41 -0
  112. package/dist/compiler/resolveCanonicalGraph.js +240 -0
  113. package/dist/compiler/scalarSchemaAssessment.d.ts +424 -0
  114. package/dist/compiler/scalarSchemaAssessment.js +5198 -0
  115. package/dist/compiler/schemaAttributeGroupProperties.d.ts +16 -0
  116. package/dist/compiler/schemaAttributeGroupProperties.js +53 -0
  117. package/dist/compiler/schemaAttributeProperties.d.ts +9 -0
  118. package/dist/compiler/schemaAttributeProperties.js +11 -0
  119. package/dist/compiler/schemaAttributeUses.d.ts +110 -0
  120. package/dist/compiler/schemaAttributeUses.js +798 -0
  121. package/dist/compiler/schemaBinaryWordReconstruction.d.ts +9 -0
  122. package/dist/compiler/schemaBinaryWordReconstruction.js +33 -0
  123. package/dist/compiler/schemaBuiltinFacets.d.ts +13 -0
  124. package/dist/compiler/schemaBuiltinFacets.js +51 -0
  125. package/dist/compiler/schemaCalendarImages.d.ts +7 -0
  126. package/dist/compiler/schemaCalendarImages.js +204 -0
  127. package/dist/compiler/schemaCalendarLanguage.d.ts +10 -0
  128. package/dist/compiler/schemaCalendarLanguage.js +227 -0
  129. package/dist/compiler/schemaCompiler.d.ts +0 -1
  130. package/dist/compiler/schemaComponentEquality.d.ts +27 -0
  131. package/dist/compiler/schemaComponentEquality.js +446 -0
  132. package/dist/compiler/schemaConstructionAssessment.d.ts +79 -0
  133. package/dist/compiler/schemaConstructionAssessment.js +745 -0
  134. package/dist/compiler/schemaDatatypeValues.d.ts +3 -0
  135. package/dist/compiler/schemaDatatypeValues.js +2 -0
  136. package/dist/compiler/schemaDecimalLanguage.d.ts +6 -0
  137. package/dist/compiler/schemaDecimalLanguage.js +102 -0
  138. package/dist/compiler/schemaDeclarationPrimitives.d.ts +39 -0
  139. package/dist/compiler/schemaDeclarationPrimitives.js +211 -0
  140. package/dist/compiler/schemaDocumentSyntax.d.ts +54 -0
  141. package/dist/compiler/schemaDocumentSyntax.js +294 -0
  142. package/dist/compiler/schemaDurationLanguage.d.ts +10 -0
  143. package/dist/compiler/schemaDurationLanguage.js +170 -0
  144. package/dist/compiler/schemaElementInstance.d.ts +30 -0
  145. package/dist/compiler/schemaElementInstance.js +45 -0
  146. package/dist/compiler/schemaElementProperties.d.ts +15 -0
  147. package/dist/compiler/schemaElementProperties.js +23 -0
  148. package/dist/compiler/schemaEndpointWordCapacity.d.ts +35 -0
  149. package/dist/compiler/schemaEndpointWordCapacity.js +39 -0
  150. package/dist/compiler/schemaExactCalendar.d.ts +72 -0
  151. package/dist/compiler/schemaExactCalendar.js +264 -0
  152. package/dist/compiler/schemaFacetAnnotation.d.ts +31 -0
  153. package/dist/compiler/schemaFacetAnnotation.js +199 -0
  154. package/dist/compiler/schemaGeneratedScalarShape.d.ts +34 -0
  155. package/dist/compiler/schemaGeneratedScalarShape.js +178 -0
  156. package/dist/compiler/schemaIdentityConstraints.d.ts +72 -0
  157. package/dist/compiler/schemaIdentityConstraints.js +362 -0
  158. package/dist/compiler/schemaIeeeLanguage.d.ts +42 -0
  159. package/dist/compiler/schemaIeeeLanguage.js +759 -0
  160. package/dist/compiler/schemaIntegerImages.d.ts +10 -0
  161. package/dist/compiler/schemaIntegerImages.js +113 -0
  162. package/dist/compiler/schemaLexicalPredicates.d.ts +28 -0
  163. package/dist/compiler/schemaLexicalPredicates.js +63 -0
  164. package/dist/compiler/schemaNotationProperties.d.ts +31 -0
  165. package/dist/compiler/schemaNotationProperties.js +84 -0
  166. package/dist/compiler/schemaNumericImageConditions.d.ts +23 -0
  167. package/dist/compiler/schemaNumericImageConditions.js +66 -0
  168. package/dist/compiler/schemaParticleWildcardProperties.d.ts +19 -0
  169. package/dist/compiler/schemaParticleWildcardProperties.js +43 -0
  170. package/dist/compiler/schemaPattern.d.ts +1061 -0
  171. package/dist/compiler/schemaPattern.js +581 -0
  172. package/dist/compiler/schemaRegularLanguage.d.ts +66 -0
  173. package/dist/compiler/schemaRegularLanguage.js +1166 -0
  174. package/dist/compiler/schemaScalarContext.d.ts +85 -0
  175. package/dist/compiler/schemaScalarContext.js +78 -0
  176. package/dist/compiler/schemaScalarKernel.d.ts +181 -0
  177. package/dist/compiler/schemaScalarKernel.js +391 -0
  178. package/dist/compiler/schemaScalarWitnesses.d.ts +5 -0
  179. package/dist/compiler/schemaScalarWitnesses.js +118 -0
  180. package/dist/compiler/schemaSimpleTypeProperties.d.ts +94 -0
  181. package/dist/compiler/schemaSimpleTypeProperties.js +103 -0
  182. package/dist/compiler/schemaSourceGrammar.d.ts +26 -0
  183. package/dist/compiler/schemaSourceGrammar.js +290 -0
  184. package/dist/compiler/schemaSourceLexical.d.ts +3 -0
  185. package/dist/compiler/schemaSourceLexical.js +12 -0
  186. package/dist/compiler/schemaSourceValues.d.ts +50 -0
  187. package/dist/compiler/schemaSourceValues.js +225 -0
  188. package/dist/compiler/schemaSourceWildcards.d.ts +27 -0
  189. package/dist/compiler/schemaSourceWildcards.js +249 -0
  190. package/dist/compiler/schemaSymbolicSequences.d.ts +15 -0
  191. package/dist/compiler/schemaSymbolicSequences.js +99 -0
  192. package/dist/compiler/schemaSymbolicValueSets.d.ts +31 -0
  193. package/dist/compiler/schemaSymbolicValueSets.js +149 -0
  194. package/dist/compiler/schemaSyntaxAssessment.d.ts +24 -0
  195. package/dist/compiler/schemaSyntaxAssessment.js +361 -0
  196. package/dist/compiler/schemaTemporalAliases.d.ts +5 -0
  197. package/dist/compiler/schemaTemporalAliases.js +195 -0
  198. package/dist/compiler/schemaTokenImages.d.ts +8 -0
  199. package/dist/compiler/schemaTokenImages.js +142 -0
  200. package/dist/compiler/schemaTypeIdentity.d.ts +38 -0
  201. package/dist/compiler/schemaTypeIdentity.js +80 -0
  202. package/dist/compiler/schemaTypeRelations.d.ts +37 -0
  203. package/dist/compiler/schemaTypeRelations.js +576 -0
  204. package/dist/compiler/schemaUri.d.ts +12 -0
  205. package/dist/compiler/schemaUri.js +103 -0
  206. package/dist/compiler/schemaValueContext.d.ts +25 -0
  207. package/dist/compiler/schemaValueContext.js +1 -0
  208. package/dist/compiler/schemaValueImages.d.ts +9 -0
  209. package/dist/compiler/schemaValueImages.js +142 -0
  210. package/dist/compiler/schemaValueSequences.d.ts +14 -0
  211. package/dist/compiler/schemaValueSequences.js +19 -0
  212. package/dist/compiler/semanticBudget.d.ts +67 -0
  213. package/dist/compiler/semanticBudget.js +193 -0
  214. package/dist/compiler/semanticCatalog.d.ts +121 -0
  215. package/dist/compiler/semanticCatalog.js +160 -0
  216. package/dist/compiler/semanticContext.d.ts +183 -0
  217. package/dist/compiler/semanticContext.js +1207 -0
  218. package/dist/compiler/semanticTypeDependencies.d.ts +7 -0
  219. package/dist/compiler/semanticTypeDependencies.js +64 -0
  220. package/dist/compiler/semanticTypeReference.d.ts +23 -0
  221. package/dist/compiler/semanticTypeReference.js +36 -0
  222. package/dist/compiler/shapeResolver.d.ts +1 -1
  223. package/dist/compiler/shapeResolver.js +7 -9
  224. package/dist/compiler/soapHeaders.d.ts +16 -0
  225. package/dist/compiler/soapHeaders.js +42 -0
  226. package/dist/compiler/sourceSchemaBinding.d.ts +25 -0
  227. package/dist/compiler/sourceSchemaBinding.js +39 -0
  228. package/dist/compiler/standardSchemaComponents.d.ts +71 -0
  229. package/dist/compiler/standardSchemaComponents.js +74 -0
  230. package/dist/compiler/standardSchemaConstruction.d.ts +20 -0
  231. package/dist/compiler/standardSchemaConstruction.js +34 -0
  232. package/dist/compiler/structuralCompanions.d.ts +15 -0
  233. package/dist/compiler/structuralCompanions.js +232 -0
  234. package/dist/compiler/validateSemanticGraph.d.ts +4 -0
  235. package/dist/compiler/validateSemanticGraph.js +376 -0
  236. package/dist/compiler/wildcardAlgebra.d.ts +25 -0
  237. package/dist/compiler/wildcardAlgebra.js +155 -0
  238. package/dist/compiler/wsdlPolicyRequirements.d.ts +43 -0
  239. package/dist/compiler/wsdlPolicyRequirements.js +239 -0
  240. package/dist/config.d.ts +0 -1
  241. package/dist/gateway/generateCheckedGateway.d.ts +32 -0
  242. package/dist/gateway/generateCheckedGateway.js +293 -0
  243. package/dist/gateway/generateGateway.d.ts +0 -1
  244. package/dist/gateway/generateGateway.js +2 -2
  245. package/dist/gateway/generators.d.ts +0 -1
  246. package/dist/gateway/helpers.d.ts +0 -1
  247. package/dist/generation/componentShape.d.ts +14 -0
  248. package/dist/generation/componentShape.js +269 -0
  249. package/dist/generation/preamble.d.ts +0 -1
  250. package/dist/generation/sourceLayout.d.ts +13 -0
  251. package/dist/generation/sourceLayout.js +40 -0
  252. package/dist/generation/writeGeneratedSource.d.ts +0 -1
  253. package/dist/index.d.ts +9 -1
  254. package/dist/index.js +3 -0
  255. package/dist/loader/fetch.d.ts +0 -1
  256. package/dist/loader/orderedSyntax.d.ts +84 -0
  257. package/dist/loader/orderedSyntax.js +222 -0
  258. package/dist/loader/resolutionDepth.d.ts +6 -0
  259. package/dist/loader/resolutionDepth.js +65 -0
  260. package/dist/loader/schemaInput.d.ts +80 -0
  261. package/dist/loader/schemaInput.js +249 -0
  262. package/dist/loader/schemaResources.d.ts +60 -0
  263. package/dist/loader/schemaResources.js +333 -0
  264. package/dist/loader/wsdlLoader.d.ts +0 -1
  265. package/dist/openapi/casing.d.ts +0 -1
  266. package/dist/openapi/generateOpenAPI.d.ts +0 -1
  267. package/dist/openapi/generateOpenAPI.js +2 -2
  268. package/dist/openapi/generatePaths.d.ts +0 -1
  269. package/dist/openapi/generateSchemas.d.ts +0 -1
  270. package/dist/openapi/security.d.ts +0 -1
  271. package/dist/pipeline.d.ts +6 -2
  272. package/dist/pipeline.js +13 -0
  273. package/dist/test/generateCheckedTests.d.ts +17 -0
  274. package/dist/test/generateCheckedTests.js +60 -0
  275. package/dist/test/generateTests.d.ts +0 -1
  276. package/dist/test/generateTests.js +2 -2
  277. package/dist/test/generators.d.ts +0 -1
  278. package/dist/test/mockData.d.ts +0 -1
  279. package/dist/test/mockData.js +20 -14
  280. package/dist/util/attributeWildcards.d.ts +0 -1
  281. package/dist/util/builder.d.ts +0 -1
  282. package/dist/util/catalogMeta.d.ts +0 -1
  283. package/dist/util/checkedCliDiagnostics.d.ts +11 -0
  284. package/dist/util/checkedCliDiagnostics.js +22 -0
  285. package/dist/util/cli.d.ts +0 -1
  286. package/dist/util/errors.d.ts +0 -1
  287. package/dist/util/imports.d.ts +0 -1
  288. package/dist/util/runtimeSource.d.ts +0 -1
  289. package/dist/util/runtimeSource.js +3 -5
  290. package/dist/util/securityConfig.d.ts +0 -1
  291. package/dist/util/streamConfig.d.ts +0 -1
  292. package/dist/util/tools.d.ts +0 -1
  293. package/dist/util/xmlWhitespace.d.ts +2 -0
  294. package/dist/util/xmlWhitespace.js +4 -0
  295. package/dist/xsd/primitives.d.ts +0 -1
  296. package/docs/agent-skill.md +2 -0
  297. package/docs/api-reference.md +1 -1
  298. package/docs/checked-gateway.md +210 -0
  299. package/docs/checked-generation.md +161 -0
  300. package/docs/cli-reference.md +43 -1
  301. package/docs/concepts.md +136 -1
  302. package/docs/configuration.md +5 -1
  303. package/docs/corpus.md +33 -0
  304. package/docs/direct-values.md +311 -0
  305. package/docs/examples/checked-forecast.wsdl +19 -0
  306. package/docs/gateway-guide.md +1 -1
  307. package/docs/generated-code.md +10 -5
  308. package/docs/mapping-contract.md +114 -0
  309. package/docs/migration-playbook.md +1 -1
  310. package/docs/output-anatomy.md +1 -1
  311. package/docs/start-here.md +8 -2
  312. package/docs/supported-patterns.md +17 -5
  313. package/docs/testing.md +117 -31
  314. package/llms.txt +7 -7
  315. package/package.json +79 -25
  316. package/src/generation/preambles/direct-client/typescript.preamble +3 -0
  317. package/src/runtime/checkedGatewayHost.tpl.txt +157 -0
  318. package/src/runtime/streamXml.ts +1 -1
  319. package/dist/app/generateApp.d.ts.map +0 -1
  320. package/dist/cli.d.ts.map +0 -1
  321. package/dist/client/generateClient.d.ts.map +0 -1
  322. package/dist/client/generateOperations.d.ts.map +0 -1
  323. package/dist/client/generateTypes.d.ts.map +0 -1
  324. package/dist/client/generateUtils.d.ts.map +0 -1
  325. package/dist/compiler/generateCatalog.d.ts.map +0 -1
  326. package/dist/compiler/schemaCompiler.d.ts.map +0 -1
  327. package/dist/compiler/shapeResolver.d.ts.map +0 -1
  328. package/dist/config.d.ts.map +0 -1
  329. package/dist/gateway/generateGateway.d.ts.map +0 -1
  330. package/dist/gateway/generators.d.ts.map +0 -1
  331. package/dist/gateway/helpers.d.ts.map +0 -1
  332. package/dist/generation/preamble.d.ts.map +0 -1
  333. package/dist/generation/writeGeneratedSource.d.ts.map +0 -1
  334. package/dist/index.d.ts.map +0 -1
  335. package/dist/loader/fetch.d.ts.map +0 -1
  336. package/dist/loader/wsdlLoader.d.ts.map +0 -1
  337. package/dist/openapi/casing.d.ts.map +0 -1
  338. package/dist/openapi/generateOpenAPI.d.ts.map +0 -1
  339. package/dist/openapi/generatePaths.d.ts.map +0 -1
  340. package/dist/openapi/generateSchemas.d.ts.map +0 -1
  341. package/dist/openapi/security.d.ts.map +0 -1
  342. package/dist/pipeline.d.ts.map +0 -1
  343. package/dist/runtime/jsonArray.d.ts +0 -24
  344. package/dist/runtime/jsonArray.d.ts.map +0 -1
  345. package/dist/runtime/jsonArray.js +0 -52
  346. package/dist/runtime/ndjson.d.ts +0 -24
  347. package/dist/runtime/ndjson.d.ts.map +0 -1
  348. package/dist/runtime/ndjson.js +0 -30
  349. package/dist/runtime/streamXml.d.ts +0 -45
  350. package/dist/runtime/streamXml.d.ts.map +0 -1
  351. package/dist/runtime/streamXml.js +0 -212
  352. package/dist/test/generateTests.d.ts.map +0 -1
  353. package/dist/test/generators.d.ts.map +0 -1
  354. package/dist/test/mockData.d.ts.map +0 -1
  355. package/dist/util/attributeWildcards.d.ts.map +0 -1
  356. package/dist/util/builder.d.ts.map +0 -1
  357. package/dist/util/catalogMeta.d.ts.map +0 -1
  358. package/dist/util/cli.d.ts.map +0 -1
  359. package/dist/util/errors.d.ts.map +0 -1
  360. package/dist/util/imports.d.ts.map +0 -1
  361. package/dist/util/runtimeSource.d.ts.map +0 -1
  362. package/dist/util/securityConfig.d.ts.map +0 -1
  363. package/dist/util/streamConfig.d.ts.map +0 -1
  364. package/dist/util/tools.d.ts.map +0 -1
  365. package/dist/xsd/primitives.d.ts.map +0 -1
  366. package/docs/AGENTS.md +0 -47
  367. package/docs/README.md +0 -56
  368. package/docs/architecture.md +0 -149
  369. package/docs/decisions/001-test-generation.md +0 -36
  370. package/docs/decisions/002-streamable-responses.md +0 -330
  371. package/docs/file-naming-and-path-organization.md +0 -213
  372. package/docs/releases/README.md +0 -94
  373. package/docs/releases/v0.20.0.md +0 -22
  374. package/docs/releases/v0.21.0.md +0 -30
  375. package/docs/releases/v0.22.0.md +0 -30
  376. package/docs/releases/v0.23.0.md +0 -31
  377. package/docs/releases/v0.24.0.md +0 -38
  378. package/docs/releases/v0.25.0.md +0 -31
  379. package/docs/releases/v0.25.2.md +0 -32
  380. package/docs/releases/v0.26.0.md +0 -32
  381. package/docs/releases/v0.27.0.md +0 -31
  382. package/docs/releases/v0.28.0.md +0 -32
  383. package/docs/releases/v0.29.0.md +0 -32
  384. package/docs/releases/v0.30.0.md +0 -30
  385. package/docs/releases/v0.30.1.md +0 -31
  386. package/docs/releases/v0.30.2.md +0 -30
  387. package/docs/releases/v0.30.3.md +0 -33
  388. package/docs/releases/v0.31.0.md +0 -33
  389. package/docs/releases/v0.32.0.md +0 -33
  390. package/docs/releases/v0.33.0.md +0 -34
  391. package/docs/releases/v0.34.0.md +0 -30
  392. package/docs/releases/v0.35.0.md +0 -33
  393. package/docs/releases/v0.36.0.md +0 -32
  394. package/docs/releases/v0.37.0.md +0 -33
  395. package/docs/releases/v0.38.0.md +0 -35
  396. package/docs/releases/v0.39.0.md +0 -35
  397. package/docs/releases/v0.40.0.md +0 -45
  398. package/docs/releases/v0.40.1.md +0 -34
  399. package/docs/releases/v1.0.0.md +0 -42
  400. package/docs/releases/v1.0.1.md +0 -38
  401. package/docs/releases/v1.0.2.md +0 -51
  402. package/docs/releases/v1.0.3.md +0 -37
  403. package/docs/releases/v1.0.4.md +0 -45
  404. package/docs/releases/v1.0.5.md +0 -41
  405. package/docs/releases/v1.0.6.md +0 -35
  406. package/docs/releases/v1.0.7.md +0 -36
  407. package/docs/releases/v1.1.0.md +0 -42
  408. package/docs/releases/v1.1.1.md +0 -44
  409. package/docs/releases/v1.1.2.md +0 -42
  410. package/docs/releases/v1.1.3.md +0 -36
  411. package/docs/releases/v1.1.4.md +0 -36
  412. package/docs/roadmap/README.md +0 -107
  413. package/docs/roadmap/v1.0-capability-conformance-framework.md +0 -582
  414. package/docs/roadmap/v1.0-choice-union-mode.md +0 -90
  415. package/docs/roadmap/v1.0-contract-audit.md +0 -75
  416. package/docs/roadmap/v1.0-json-array-streaming.md +0 -101
  417. package/docs/roadmap/v1.0-openapi-fastify-compatibility.md +0 -99
  418. package/docs/roadmap/v1.0-release-candidate-gates.md +0 -92
  419. package/docs/roadmap/v1.0-wsdl-coverage-matrix.md +0 -200
  420. package/docs/roadmap/v1.0-xs-anyattribute-wildcard-bag.md +0 -932
  421. package/src/runtime/jsonArray.ts +0 -55
  422. package/src/runtime/ndjson.ts +0 -32
@@ -1,932 +0,0 @@
1
- # xs:anyAttribute Wildcard Bag Implementation Plan
2
-
3
- Status: shipped in `0.36.0`.
4
-
5
- ## Agentic Worker Requirement
6
-
7
- REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [x]`) syntax for tracking.
8
-
9
- ## Goal
10
-
11
- Emit `xs:anyAttribute` wildcard attributes as a typed attribute-bag property so the capability can move from partial to supported before `1.0.0`.
12
-
13
- ## Architecture
14
-
15
- Keep known XML attributes flattened as peer DTO properties. Emit wildcard attributes as one optional bag property named by `compiled.options.attributesKey`, defaulting to `$attributes`, because unknown attribute names can collide with child elements or known attributes. Reuse the generated client's existing input attribute-bag serialization path, and add TypeScript, OpenAPI, mock-data, conformance, and documentation evidence around that shape.
16
-
17
- ## Tech Stack
18
-
19
- TypeScript strict mode, ESM, Node.js 24+, Vitest, OpenAPI 3.1 JSON Schema, Fastify generated gateway tests, existing conformance registry under `test/conformance/`.
20
-
21
- ## Current Evidence
22
-
23
- Known attributes are emitted as peer TypeScript properties in `src/client/generateTypes.ts` and peer OpenAPI object properties in `src/openapi/generateSchemas.ts`. The generated client already serializes an input attribute bag from `attributesKeyIn`, default `$attributes`, into node-soap attributes in `src/client/generateClient.ts`.
24
-
25
- The compiler already retains `attributeWildcards` on compiled types in `src/compiler/schemaCompiler.ts`. Before `0.36.0`, the conformance row `xs-anyattribute` proved only metadata retention and asserted that generated TypeScript, OpenAPI, and gateway schemas did not expose a wildcard bag.
26
-
27
- ## Target Contract
28
-
29
- For a compiled type with `attributeWildcards`, generated TypeScript must include this property, using the configured attribute key:
30
-
31
- ```text
32
- /** @xsd {"kind":"attributeWildcard","type":"xs:anyAttribute"} */
33
- "$attributes"?: Record<string, string>;
34
- ```
35
-
36
- OpenAPI must include the same property as an object of string values:
37
-
38
- ```json
39
- {
40
- "type": "object",
41
- "additionalProperties": {
42
- "type": "string"
43
- }
44
- }
45
- ```
46
-
47
- Generated mock data should include a minimal deterministic sample bag so generated tests exercise the path:
48
-
49
- ```text
50
- {
51
- "$attributes": {
52
- "extra:trace": "sample"
53
- }
54
- }
55
- ```
56
-
57
- Do not flatten wildcard attributes as peer properties. Do not loosen the entire schema with `additionalProperties: true`. Do not add a new CLI flag.
58
-
59
- ## Files
60
-
61
- Modify `src/compiler/schemaCompiler.ts` to add `localAttributeWildcards` for complex-content extensions.
62
-
63
- Modify `src/compiler/shapeResolver.ts` to preserve `localAttributeWildcards` during canonicalization.
64
-
65
- Create `src/util/attributeWildcards.ts` to centralize the default bag name and schema helper.
66
-
67
- Modify `src/client/generateTypes.ts` to emit the wildcard bag in generated interfaces.
68
-
69
- Modify `src/openapi/generateSchemas.ts` to emit the wildcard bag in component schemas.
70
-
71
- Modify `src/test/mockData.ts` to generate deterministic wildcard-bag sample data.
72
-
73
- Modify `test/unit/mock-data.test.ts` to cover generated mock data for `attributeWildcards`.
74
-
75
- Modify `test/unit/compiler-wildcards.test.ts` to cover `localAttributeWildcards` on extension types.
76
-
77
- Modify `test/conformance/registry.ts` to promote `xs-anyattribute` to supported and assert the new downstream contract.
78
-
79
- Modify generated support docs through `npm run docs:support-matrix`, then manually update `docs/supported-patterns.md`, `docs/roadmap/v1.0-wsdl-coverage-matrix.md`, `docs/roadmap/v1.0-capability-conformance-framework.md`, and `CHANGELOG.md`.
80
-
81
- ## Task 1: Add Failing Unit Tests For Compiler And Mock Data
82
-
83
- ### Files
84
-
85
- - Modify: `test/unit/compiler-wildcards.test.ts`
86
- - Modify: `test/unit/mock-data.test.ts`
87
-
88
- - [x] Step 1: Add a compiler test for local extension wildcard metadata
89
-
90
- Append this test inside the existing `describe("compiler: wildcard retention", () => { ... })` block in `test/unit/compiler-wildcards.test.ts`:
91
-
92
- ```text
93
- it("retains local xs:anyAttribute metadata separately on complexContent extensions", async () => {
94
- const schema = `
95
- <xs:complexType name="BaseWithWildcard">
96
- <xs:sequence>
97
- <xs:element name="baseValue" type="xs:string"/>
98
- </xs:sequence>
99
- <xs:anyAttribute namespace="##other" processContents="lax"/>
100
- </xs:complexType>
101
- <xs:complexType name="ExtendedWithWildcard">
102
- <xs:complexContent>
103
- <xs:extension base="tns:BaseWithWildcard">
104
- <xs:sequence>
105
- <xs:element name="childValue" type="xs:string"/>
106
- </xs:sequence>
107
- <xs:anyAttribute namespace="##any" processContents="skip"/>
108
- </xs:extension>
109
- </xs:complexContent>
110
- </xs:complexType>
111
- <xs:element name="StreamRequest" type="tns:ExtendedWithWildcard"/>
112
- <xs:element name="StreamResponse" type="xs:string"/>`;
113
- const compiled = await compileFromFixture(buildWsdl(schema), "extension-anyattribute");
114
- const base = compiled.types.find((t) => t.name === "BaseWithWildcard");
115
- const child = compiled.types.find((t) => t.name === "ExtendedWithWildcard");
116
-
117
- expect(base?.attributeWildcards).toEqual([
118
- {namespace: "##other", processContents: "lax"},
119
- ]);
120
- expect((base as any).localAttributeWildcards).toBeUndefined();
121
- expect(child?.attributeWildcards).toEqual([
122
- {namespace: "##other", processContents: "lax"},
123
- {namespace: "##any", processContents: "skip"},
124
- ]);
125
- expect((child as any).localAttributeWildcards).toEqual([
126
- {namespace: "##any", processContents: "skip"},
127
- ]);
128
- });
129
- ```
130
-
131
- - [x] Step 2: Add mock-data tests for wildcard bags
132
-
133
- Add these tests after `it("generates attribute-only types (no elements)", ... )` in `test/unit/mock-data.test.ts`:
134
-
135
- ```text
136
- it("includes the default wildcard attribute bag for types with xs:anyAttribute", () => {
137
- const catalog: CatalogForMocks = {
138
- options: {
139
- attributesKey: "$attributes",
140
- },
141
- meta: {
142
- childType: {
143
- AnyAttributeRequest: {value: "string"},
144
- },
145
- propMeta: {},
146
- },
147
- types: [
148
- {
149
- name: "AnyAttributeRequest",
150
- attrs: [],
151
- elems: [{name: "value", max: 1}],
152
- attributeWildcards: [{namespace: "##other", processContents: "lax"}],
153
- },
154
- ],
155
- };
156
- const result = generateMockData("AnyAttributeRequest", catalog);
157
- expect(result).toMatchObject({
158
- value: "sample",
159
- $attributes: {
160
- "extra:trace": "sample",
161
- },
162
- });
163
- });
164
-
165
- it("uses the configured attributesKey for wildcard attribute bags", () => {
166
- const catalog: CatalogForMocks = {
167
- options: {
168
- attributesKey: "@@attrs",
169
- },
170
- meta: {
171
- childType: {
172
- AnyAttributeRequest: {value: "string"},
173
- },
174
- propMeta: {},
175
- },
176
- types: [
177
- {
178
- name: "AnyAttributeRequest",
179
- attrs: [],
180
- elems: [{name: "value", max: 1}],
181
- attributeWildcards: [{namespace: "##any"}],
182
- },
183
- ],
184
- };
185
- const result = generateMockData("AnyAttributeRequest", catalog);
186
- expect(result).toMatchObject({
187
- value: "sample",
188
- "@@attrs": {
189
- "extra:trace": "sample",
190
- },
191
- });
192
- });
193
- ```
194
-
195
- - [x] Step 3: Run the focused tests and verify they fail
196
-
197
- Run:
198
-
199
- ```bash
200
- npx vitest run test/unit/compiler-wildcards.test.ts test/unit/mock-data.test.ts
201
- ```
202
-
203
- Expected result: the new compiler test fails because `localAttributeWildcards` is missing, and the new mock-data tests fail at TypeScript compile time or runtime because `CatalogForMocks` does not expose `options.attributesKey` or `types[].attributeWildcards`.
204
-
205
- ## Task 2: Add Shared Wildcard Attribute Helpers
206
-
207
- ### Files
208
-
209
- - Create: `src/util/attributeWildcards.ts`
210
-
211
- - [x] Step 1: Create the helper module
212
-
213
- Create `src/util/attributeWildcards.ts`:
214
-
215
- ```text
216
- export const DEFAULT_ATTRIBUTE_BAG_KEY = "$attributes";
217
-
218
- export interface AttributeWildcardCarrier {
219
- attributeWildcards?: readonly unknown[];
220
- }
221
-
222
- export interface AttributeWildcardOptions {
223
- attributesKey?: string;
224
- }
225
-
226
- export function hasAttributeWildcards(value: AttributeWildcardCarrier | undefined): boolean {
227
- return Array.isArray(value?.attributeWildcards) && value.attributeWildcards.length > 0;
228
- }
229
-
230
- export function wildcardAttributeBagName(options: AttributeWildcardOptions | undefined): string {
231
- const configured = options?.attributesKey?.trim();
232
- return configured && configured.length > 0 ? configured : DEFAULT_ATTRIBUTE_BAG_KEY;
233
- }
234
-
235
- export function wildcardAttributeBagSchema(): {type: "object"; additionalProperties: {type: "string"}} {
236
- return {
237
- type: "object",
238
- additionalProperties: {type: "string"},
239
- };
240
- }
241
- ```
242
-
243
- - [x] Step 2: Run typecheck and verify the helper compiles
244
-
245
- Run:
246
-
247
- ```bash
248
- npm run typecheck
249
- ```
250
-
251
- Expected result: the command still fails because Task 1 intentionally introduced failing tests, or passes if tests are not part of the production TypeScript project. There must be no syntax error reported for `src/util/attributeWildcards.ts`.
252
-
253
- ## Task 3: Preserve Local Attribute Wildcards In Compiler Metadata
254
-
255
- ### Files
256
-
257
- - Modify: `src/compiler/schemaCompiler.ts`
258
- - Modify: `src/compiler/shapeResolver.ts`
259
-
260
- - [x] Step 1: Extend `CompiledType` with local wildcard metadata
261
-
262
- In `src/compiler/schemaCompiler.ts`, add this documentation line after the `localElems` JSDoc line:
263
-
264
- ```text
265
- * @property {Array<Object>} [localAttributeWildcards] - Attribute wildcards added in extension
266
- ```
267
-
268
- Add this property to the `CompiledType` type after `attributeWildcards?: CompiledAttributeWildcard[];`:
269
-
270
- ```text
271
- localAttributeWildcards?: CompiledAttributeWildcard[];
272
- ```
273
-
274
- - [x] Step 2: Store local wildcard metadata on complex-content extensions
275
-
276
- In the complex-content extension result object in `getOrCompileComplex`, replace:
277
-
278
- ```text
279
- ...(attributeWildcards.length > 0 ? {attributeWildcards} : {}),
280
- ```
281
-
282
- with:
283
-
284
- ```text
285
- ...(attributeWildcards.length > 0 ? {attributeWildcards} : {}),
286
- ...(localAttributeWildcards.length > 0 ? {localAttributeWildcards} : {}),
287
- ```
288
-
289
- - [x] Step 3: Preserve local wildcard metadata in shape canonicalization
290
-
291
- In `src/compiler/shapeResolver.ts`, find the canonicalized type object that already maps `attributeWildcards`. Add this property immediately after it:
292
-
293
- ```text
294
- localAttributeWildcards: (t.localAttributeWildcards ?? []).map((w) => ({
295
- ...(w.namespace ? {namespace: w.namespace} : {}),
296
- ...(w.processContents ? {processContents: w.processContents} : {}),
297
- })),
298
- ```
299
-
300
- If the surrounding function omits empty optional arrays for `wildcards` and `attributeWildcards`, use the same conditional style already present in that function. The final emitted catalog must not add `localAttributeWildcards` to types that do not have local wildcard declarations.
301
-
302
- - [x] Step 4: Run the compiler wildcard test
303
-
304
- Run:
305
-
306
- ```bash
307
- npx vitest run test/unit/compiler-wildcards.test.ts
308
- ```
309
-
310
- Expected result: the new `localAttributeWildcards` test passes. Existing wildcard tests still pass.
311
-
312
- ## Task 4: Emit Wildcard Attribute Bags In Generated TypeScript
313
-
314
- ### Files
315
-
316
- - Modify: `src/client/generateTypes.ts`
317
-
318
- - [x] Step 1: Import the shared helpers
319
-
320
- Add this import near the existing imports in `src/client/generateTypes.ts`:
321
-
322
- ```text
323
- import {hasAttributeWildcards, wildcardAttributeBagName} from "../util/attributeWildcards.js";
324
- ```
325
-
326
- - [x] Step 2: Add a bag-name constant inside `generateTypes`
327
-
328
- After `const isChoiceUnionMode = compiled.options.choice === "union";`, add:
329
-
330
- ```text
331
- const wildcardBagName = wildcardAttributeBagName(compiled.options);
332
- ```
333
-
334
- - [x] Step 3: Add an emitter for wildcard bags
335
-
336
- After `emitAttributeProperty`, add:
337
-
338
- ```text
339
- const emitWildcardAttributeBagProperty = (indent: string) => {
340
- const annObj = {
341
- kind: "attributeWildcard" as const,
342
- type: "xs:anyAttribute",
343
- };
344
- lines.push("");
345
- lines.push(`${indent}/** @xsd ${JSON.stringify(annObj)} */`);
346
- lines.push(`${indent}${emitPropName(wildcardBagName)}?: Record<string, string>;`);
347
- };
348
- ```
349
-
350
- - [x] Step 4: Compute local wildcard bags for normal and choice-mode interfaces
351
-
352
- After the `attrsToEmit` line, add:
353
-
354
- ```text
355
- const wildcardCarrier = complexBase
356
- ? {attributeWildcards: t.localAttributeWildcards}
357
- : {attributeWildcards: t.attributeWildcards};
358
- ```
359
-
360
- - [x] Step 5: Emit the bag in choice union base interfaces
361
-
362
- In the choice-union branch, after the loop that emits attributes:
363
-
364
- ```text
365
- for (const a of attrsToEmit) {
366
- emitAttributeProperty(" ", a);
367
- }
368
- ```
369
-
370
- add:
371
-
372
- ```text
373
- if (hasAttributeWildcards(wildcardCarrier)) {
374
- emitWildcardAttributeBagProperty(" ");
375
- }
376
- ```
377
-
378
- - [x] Step 6: Emit the bag in normal interfaces
379
-
380
- In the normal interface branch, after the loop that emits attributes:
381
-
382
- ```text
383
- for (const a of attrsToEmit) {
384
- emitAttributeProperty(" ", a);
385
- }
386
- ```
387
-
388
- add:
389
-
390
- ```text
391
- if (hasAttributeWildcards(wildcardCarrier)) {
392
- emitWildcardAttributeBagProperty(" ");
393
- }
394
- ```
395
-
396
- - [x] Step 7: Run snapshot tests to see the intentional diff
397
-
398
- Run:
399
-
400
- ```bash
401
- npx vitest run test/snapshot
402
- ```
403
-
404
- Expected result: snapshots may fail only if the weather fixture contains `xs:anyAttribute`. If snapshots fail, inspect the diff and update only intentional generated type output later in Task 9.
405
-
406
- ## Task 5: Emit Wildcard Attribute Bags In OpenAPI Schemas
407
-
408
- ### Files
409
-
410
- - Modify: `src/openapi/generateSchemas.ts`
411
-
412
- - [x] Step 1: Import the shared helpers
413
-
414
- Add this import near the existing imports:
415
-
416
- ```text
417
- import {hasAttributeWildcards, wildcardAttributeBagName, wildcardAttributeBagSchema} from "../util/attributeWildcards.js";
418
- ```
419
-
420
- - [x] Step 2: Add an `attributesKey` parameter to `buildComplexSchema`
421
-
422
- Change the `buildComplexSchema` signature from:
423
-
424
- ```text
425
- function buildComplexSchema(
426
- t: CompiledType,
427
- closed: boolean,
428
- knownTypeNames: Set<string>,
429
- aliasNames: Set<string>,
430
- flattenWrappers: boolean,
431
- choiceUnionMode: boolean,
432
- ): any {
433
- ```
434
-
435
- to:
436
-
437
- ```text
438
- function buildComplexSchema(
439
- t: CompiledType,
440
- closed: boolean,
441
- knownTypeNames: Set<string>,
442
- aliasNames: Set<string>,
443
- flattenWrappers: boolean,
444
- choiceUnionMode: boolean,
445
- attributesKey: string,
446
- ): any {
447
- ```
448
-
449
- - [x] Step 3: Add the bag property after known attributes
450
-
451
- After the `for (const a of t.attrs) { ... }` loop, add:
452
-
453
- ```text
454
- if (hasAttributeWildcards(t)) {
455
- properties[attributesKey] = wildcardAttributeBagSchema();
456
- }
457
- ```
458
-
459
- - [x] Step 4: Pass the configured key from `generateSchemas`
460
-
461
- In `generateSchemas`, add this constant after `const choiceUnionMode = ...` or near the other derived options:
462
-
463
- ```text
464
- const attributesKey = wildcardAttributeBagName(compiled.options);
465
- ```
466
-
467
- Update the call to `buildComplexSchema` so the final argument list includes `attributesKey`:
468
-
469
- ```text
470
- compiled.options.choice === "union",
471
- attributesKey,
472
- ```
473
-
474
- - [x] Step 5: Run OpenAPI unit and conformance tests enough to observe failure movement
475
-
476
- Run:
477
-
478
- ```bash
479
- npx vitest run test/unit/openapi-choice-union.test.ts test/conformance/conformance.test.ts --runInBand
480
- ```
481
-
482
- Expected result: conformance still fails until Task 7 updates the registry assertions. OpenAPI generation must not throw for supported rows.
483
-
484
- ## Task 6: Generate Wildcard Attribute Bags In Mock Data
485
-
486
- ### Files
487
-
488
- - Modify: `src/test/mockData.ts`
489
- - Modify: `test/unit/mock-data.test.ts`
490
-
491
- - [x] Step 1: Import helpers
492
-
493
- Add this import to `src/test/mockData.ts`:
494
-
495
- ```text
496
- import {hasAttributeWildcards, wildcardAttributeBagName} from "../util/attributeWildcards.js";
497
- ```
498
-
499
- - [x] Step 2: Extend mock catalog types
500
-
501
- Change the `CatalogForMocks` `options` type from:
502
-
503
- ```text
504
- options?: {
505
- choice?: "all-optional" | "union";
506
- };
507
- ```
508
-
509
- to:
510
-
511
- ```text
512
- options?: {
513
- attributesKey?: string;
514
- choice?: "all-optional" | "union";
515
- };
516
- ```
517
-
518
- Change the `types` entry type from:
519
-
520
- ```text
521
- elems: Array<{ name: string; max: number | "unbounded" }>;
522
- ```
523
-
524
- to:
525
-
526
- ```text
527
- elems: Array<{ name: string; max: number | "unbounded" }>;
528
- attributeWildcards?: Array<{namespace?: string; processContents?: "lax" | "strict" | "skip"}>;
529
- ```
530
-
531
- - [x] Step 3: Keep wildcard-only types from returning early
532
-
533
- After `const typeMeta = catalog.types?.find((t) => t.name === typeName);`, add:
534
-
535
- ```text
536
- const hasWildcardAttributes = hasAttributeWildcards(typeMeta);
537
- ```
538
-
539
- Move the existing early return below that line and change it to:
540
-
541
- ```text
542
- if ((!childTypes || Object.keys(childTypes).length === 0) && !attrTypes && !hasWildcardAttributes) {
543
- return {};
544
- }
545
- ```
546
-
547
- - [x] Step 4: Add deterministic wildcard bag data
548
-
549
- Before `return result;`, add:
550
-
551
- ```text
552
- if (hasWildcardAttributes) {
553
- const attributesKey = wildcardAttributeBagName(catalog.options);
554
- if (!(attributesKey in result)) {
555
- result[attributesKey] = {
556
- "extra:trace": "sample",
557
- };
558
- }
559
- }
560
- ```
561
-
562
- - [x] Step 5: Run mock-data tests
563
-
564
- Run:
565
-
566
- ```bash
567
- npx vitest run test/unit/mock-data.test.ts
568
- ```
569
-
570
- Expected result: all mock-data tests pass, including the new wildcard attribute bag tests.
571
-
572
- ## Task 7: Promote The Conformance Row To Supported
573
-
574
- ### Files
575
-
576
- - Modify: `test/conformance/registry.ts`
577
-
578
- - [x] Step 1: Change row status and contract
579
-
580
- In the `xs-anyattribute` row, replace:
581
-
582
- ```text
583
- status: "partial",
584
- ```
585
-
586
- with:
587
-
588
- ```text
589
- status: "supported",
590
- ```
591
-
592
- Replace the current `publicContract` and `decisionReason` with:
593
-
594
- ```text
595
- publicContract: "`xs:anyAttribute` is retained as catalog metadata and emitted as an optional wildcard attribute bag named by the configured attributes key.",
596
- decision: "support",
597
- decisionReason: "The compiler retains attribute wildcard metadata, and generated TypeScript, OpenAPI, gateway, generated-test, and app artifacts can represent wildcard attributes through the existing attribute-bag runtime path.",
598
- ```
599
-
600
- - [x] Step 2: Strengthen client expectations
601
-
602
- Replace the `client` block for `xs-anyattribute` with:
603
-
604
- ```text
605
- client: {
606
- outcome: "success",
607
- sourceIncludes: [
608
- {file: "types", text: "\"$attributes\"?: Record<string, string>;"},
609
- ],
610
- },
611
- ```
612
-
613
- - [x] Step 3: Strengthen OpenAPI expectations
614
-
615
- Replace the existing `openapi.assert` body with:
616
-
617
- ```text
618
- assert: ({doc}) => {
619
- const schema = requireSchema(doc, "AnyAttributeRequest");
620
- assertJsonEqual(
621
- schema.properties?.$attributes,
622
- {type: "object", additionalProperties: {type: "string"}},
623
- "xs:anyAttribute should emit the configured wildcard attribute bag schema.",
624
- );
625
- if (schema.additionalProperties === true) {
626
- throw new Error("xs:anyAttribute should not loosen the whole object schema.");
627
- }
628
- },
629
- ```
630
-
631
- - [x] Step 4: Exercise the bag through the generated gateway
632
-
633
- Change the gateway request payload from:
634
-
635
- ```text
636
- payload: {value: "known-only"},
637
- ```
638
-
639
- to:
640
-
641
- ```text
642
- payload: {value: "known-only", $attributes: {"extra:trace": "sample"}},
643
- ```
644
-
645
- Change the `assertClientArgs` expectation to:
646
-
647
- ```text
648
- assertClientArgs: args => assertJsonEqual(
649
- args,
650
- {value: "known-only", $attributes: {"extra:trace": "sample"}},
651
- "Gateway should pass the modeled xs:anyAttribute bag to the client.",
652
- ),
653
- ```
654
-
655
- Change the gateway schema assertion from rejecting `$attributes` to requiring it:
656
-
657
- ```text
658
- assert: ({readGatewayFile}) => {
659
- const schemaSource = readGatewayFile("schemas/models/anyattributerequest.json");
660
- if (!schemaSource.includes("\"$attributes\"")) {
661
- throw new Error("xs:anyAttribute gateway schema should emit a wildcard attribute bag.");
662
- }
663
- },
664
- ```
665
-
666
- - [x] Step 5: Strengthen generated-test expectations
667
-
668
- Replace the `generatedTests` block with:
669
-
670
- ```text
671
- generatedTests: {
672
- outcome: "success",
673
- sourceIncludes: [
674
- {file: "helpers/mock-client.ts", text: "\"$attributes\""},
675
- {file: "helpers/mock-client.ts", text: "\"extra:trace\""},
676
- ],
677
- },
678
- ```
679
-
680
- - [x] Step 6: Run conformance and verify failure points
681
-
682
- Run:
683
-
684
- ```bash
685
- npm run test:conformance
686
- ```
687
-
688
- Expected result before Tasks 3 through 6 are complete: this fails on missing generated type, schema, gateway, or generated-test evidence. Expected result after Tasks 3 through 6 are complete: all conformance tests pass.
689
-
690
- ## Task 8: Update Human-Authored Documentation
691
-
692
- ### Files
693
-
694
- - Modify: `docs/supported-patterns.md`
695
- - Modify: `docs/roadmap/v1.0-wsdl-coverage-matrix.md`
696
- - Modify: `docs/roadmap/v1.0-capability-conformance-framework.md`
697
- - Modify: `CHANGELOG.md`
698
-
699
- - [x] Step 1: Regenerate the support matrix
700
-
701
- Run:
702
-
703
- ```bash
704
- npm run docs:support-matrix
705
- ```
706
-
707
- Expected result: the generated matrix in `docs/supported-patterns.md` changes the `xs-anyattribute` status from `partial` to `supported` and uses the updated public contract.
708
-
709
- - [x] Step 2: Update the explanatory `xs:anyAttribute` section
710
-
711
- In `docs/supported-patterns.md`, replace the `### xs:anyAttribute` paragraph with:
712
-
713
- ```markdown
714
- ### xs:anyAttribute
715
-
716
- Attribute wildcards are retained as catalog metadata and emitted as an optional wildcard attribute bag on the enclosing generated type. The bag property uses the configured client attributes key, defaulting to `$attributes`, and maps arbitrary wildcard attribute names to string values.
717
-
718
- Known XML attributes remain flattened as peer properties. Wildcard attributes stay inside the bag so unknown names do not collide with child elements or known attributes.
719
- ```
720
-
721
- - [x] Step 3: Move `xs:anyAttribute` from partial to supported in the full support list
722
-
723
- In `docs/supported-patterns.md`, add this bullet under `## Fully Supported`:
724
-
725
- ```markdown
726
- - `xs:anyAttribute` wildcard attributes emitted as an optional configured attribute bag, defaulting to `$attributes`
727
- ```
728
-
729
- Remove this bullet from `## Not Yet Supported` if present:
730
-
731
- ```markdown
732
- - Full `xs:any` serialization: arbitrary wildcard content is not emitted as a typed contract
733
- ```
734
-
735
- Do not remove `xs:any` particle limitations unless a separate `xs:any` content implementation is done. If the existing bullet is about element wildcards, rewrite it to:
736
-
737
- ```markdown
738
- - Full `xs:any` element serialization: arbitrary wildcard element content is not emitted as a typed contract
739
- ```
740
-
741
- - [x] Step 4: Update roadmap wording
742
-
743
- In `docs/roadmap/v1.0-wsdl-coverage-matrix.md`, change the priority row for `xs:anyAttribute` from:
744
-
745
- ```markdown
746
- | `xs:anyAttribute` | partial | Metadata retained; generated wildcard attributes deferred |
747
- ```
748
-
749
- to:
750
-
751
- ```markdown
752
- | `xs:anyAttribute` | supported | Metadata retained; wildcard attribute bag emitted |
753
- ```
754
-
755
- In the same file, remove `xs:anyAttribute` from any list of partial-row caveats.
756
-
757
- In `docs/roadmap/v1.0-capability-conformance-framework.md`, replace this sentence:
758
-
759
- ```markdown
760
- For partial rows, prove the documented subset and avoid implying full support. For `xs-anyattribute`, gateway evidence should prove generation and runtime do not emit or require wildcard attribute bags. For external `PolicyReference`, gateway evidence should prove no generated inbound security requirement appears unless configured elsewhere.
761
- ```
762
-
763
- with:
764
-
765
- ```markdown
766
- 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.
767
- ```
768
-
769
- - [x] Step 5: Update changelog
770
-
771
- If the existing Unreleased roadmap bullet is still present, add this bullet under `## [Unreleased]` in `CHANGELOG.md`:
772
-
773
- ```markdown
774
- - feat(xsd): emit `xs:anyAttribute` wildcard bags in generated contracts
775
- ```
776
-
777
- Do not remove the existing `docs(roadmap): align 1.0 readiness docs with the 0.35.0 baseline` bullet unless the user explicitly asks to split changes into separate commits.
778
-
779
- ## Task 9: Run Focused Verification And Update Snapshots If Needed
780
-
781
- ### Files
782
-
783
- - Test: `test/unit/compiler-wildcards.test.ts`
784
- - Test: `test/unit/mock-data.test.ts`
785
- - Test: `test/conformance/`
786
- - Test: `test/snapshot/`
787
-
788
- - [x] Step 1: Run unit tests for changed internals
789
-
790
- Run:
791
-
792
- ```bash
793
- npx vitest run test/unit/compiler-wildcards.test.ts test/unit/mock-data.test.ts
794
- ```
795
-
796
- Expected result: all tests pass.
797
-
798
- - [x] Step 2: Run conformance
799
-
800
- Run:
801
-
802
- ```bash
803
- npm run test:conformance
804
- ```
805
-
806
- Expected result: all conformance tests pass, and `xs-anyattribute` is now a supported row.
807
-
808
- - [x] Step 3: Run snapshot tests
809
-
810
- Run:
811
-
812
- ```bash
813
- npm run test:snap
814
- ```
815
-
816
- Expected result: snapshots pass if the weather fixture has no `xs:anyAttribute`. If snapshots fail because generated output intentionally changed, update snapshots with:
817
-
818
- ```bash
819
- npx vitest run test/snapshot -u
820
- ```
821
-
822
- After updating snapshots, run:
823
-
824
- ```bash
825
- npm run test:snap
826
- ```
827
-
828
- Expected result: snapshot tests pass after reviewing the diff.
829
-
830
- - [x] Step 4: Run docs validation
831
-
832
- Run:
833
-
834
- ```bash
835
- npm run docs:validate
836
- ```
837
-
838
- Expected result: Markdown links, TypeScript fenced snippets, and support matrix checks pass.
839
-
840
- ## Task 10: Run End-To-End Verification
841
-
842
- ### Files
843
-
844
- - No source edits expected.
845
-
846
- - [x] Step 1: Run typecheck
847
-
848
- Run:
849
-
850
- ```bash
851
- npm run typecheck
852
- ```
853
-
854
- Expected result: TypeScript reports no errors.
855
-
856
- - [x] Step 2: Run the required smoke pipeline
857
-
858
- Run:
859
-
860
- ```bash
861
- npm run smoke:pipeline
862
- ```
863
-
864
- Expected result: the command regenerates disposable output under `tmp/smoke/`, generates client, OpenAPI, gateway, and app artifacts, and `tsc -p tsconfig.smoke.json` passes.
865
-
866
- - [x] Step 3: Run the full test suite
867
-
868
- Run:
869
-
870
- ```bash
871
- npm test
872
- ```
873
-
874
- Expected result: all Vitest tests pass.
875
-
876
- - [x] Step 4: Run full CI before release-candidate work
877
-
878
- Run:
879
-
880
- ```bash
881
- npm run ci
882
- ```
883
-
884
- Expected result: build, typecheck, skill validation, package validation, docs validation, Vitest, and smoke pipeline pass.
885
-
886
- ## Task 11: Review Diff And Commit
887
-
888
- ### Files
889
-
890
- - Review: all modified files from Tasks 1 through 10.
891
-
892
- - [x] Step 1: Inspect changed files
893
-
894
- Run:
895
-
896
- ```bash
897
- git status --short
898
- git diff --stat
899
- ```
900
-
901
- Expected result: only implementation, test, docs, changelog, and possible snapshot files are modified.
902
-
903
- - [x] Step 2: Review semantic diff
904
-
905
- Run:
906
-
907
- ```bash
908
- git diff
909
- ```
910
-
911
- Expected result: the diff shows `xs:anyAttribute` moving from metadata-only partial support to supported wildcard-bag output. It must not include unrelated formatting churn or generated output under `tmp/`.
912
-
913
- - [x] Step 3: Commit the implementation if requested by the maintainer
914
-
915
- Run:
916
-
917
- ```bash
918
- git add src/compiler/schemaCompiler.ts src/compiler/shapeResolver.ts src/util/attributeWildcards.ts src/client/generateTypes.ts src/openapi/generateSchemas.ts src/test/mockData.ts test/unit/compiler-wildcards.test.ts test/unit/mock-data.test.ts test/conformance/registry.ts docs/supported-patterns.md docs/roadmap/v1.0-wsdl-coverage-matrix.md docs/roadmap/v1.0-capability-conformance-framework.md CHANGELOG.md
919
- git commit -m "Version: 0.35.1 feat(xsd): emit anyAttribute wildcard bags"
920
- ```
921
-
922
- Expected result: git creates a focused commit. If snapshot files changed intentionally, include those snapshot files in the `git add` command before committing.
923
-
924
- ## Self-Review
925
-
926
- Spec coverage: The plan covers naming, TypeScript shape, OpenAPI shape, runtime reuse, mock generation, conformance promotion, docs, and verification.
927
-
928
- Placeholder scan: The plan contains no deferred-work markers or unspecified implementation steps.
929
-
930
- Type consistency: The plan uses `attributeWildcards`, `localAttributeWildcards`, `attributesKey`, `$attributes`, `Record<string, string>`, and `extra:trace` consistently across compiler, emitters, mocks, and tests.
931
-
932
- Risk check: The plan intentionally does not implement explicit binding selection, external `PolicyReference` resolution, or full `xs:any` element wildcard serialization.