@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,82 +1,133 @@
1
- import { directDataOwnership, directLimit } from '../compiler/directExecutionPolicy.js';
1
+ import { directDataOwnership, directLimit, directLoadingLimits } from '../compiler/directExecutionPolicy.js';
2
2
  /** Private P3.7 binding. No public package entry or alternate SOAP implementation. */
3
3
  import { checkSemanticBudget } from '../compiler/semanticBudget.js';
4
4
  import { DataOwnershipLimitError } from '../compiler/dataOwnership.js';
5
5
  import { types } from 'node:util';
6
6
  import { createApplicationBudget } from '../compiler/semanticBudget.js';
7
- import { reconstructDirectSourceCapsuleInRequest, checkDirectSourceCompatibility, DIRECT_CAPSULE_LIMITS } from '../compiler/directSourceCapsule.js';
8
- import { exchangeDirectSoap, directSoapOptionsShape } from '../compiler/directSoap.js';
9
- import { DIRECT_CLIENT_RUNTIME_VERSION } from './directClientVersion.js';
7
+ import { reconstructDirectSourceCapsuleInRequest, reconstructComponentSourceCapsuleInRequest, checkDirectSourceCompatibility, DIRECT_CAPSULE_LIMITS } from '../compiler/directSourceCapsule.js';
8
+ import { exchangeDirectSoap, exchangeComponentSoap, directSoapOptionsShape } from '../compiler/directSoap.js';
9
+ import { DIRECT_CLIENT_RUNTIME_VERSION, COMPONENT_CLIENT_RUNTIME_VERSION } from './directClientVersion.js';
10
+ import { prepareSchemaSnapshotFiles } from '../loader/schemaInput.js';
11
+ import { SchemaLoadingError } from '../loader/orderedSyntax.js';
10
12
  /** The generated literal is the expected artifact; caller bytes never choose its static contract. */
11
13
  export const directClientRuntime = Object.freeze({
12
14
  version: DIRECT_CLIENT_RUNTIME_VERSION,
13
- async execute(expectedBase64, input, options) {
14
- // Constant-sized entry introspection precedes budget configuration and all reads.
15
- const entryFailure = () => ({ kind: 'unsupported', rule: 'data-only client options required', usage: { nodes: 0, work: 0 } });
16
- if (!options || typeof options !== 'object' || types.isProxy(options)
17
- || ![null, Object.prototype].includes(Object.getPrototypeOf(options)))
15
+ execute: (expectedBase64, input, options) => executeClient(expectedBase64, input, options, false),
16
+ });
17
+ /** Same artifact/execution chain, with explicit physical dependency snapshots and component-profile reconstruction. */
18
+ export const componentClientRuntime = Object.freeze({
19
+ version: COMPONENT_CLIENT_RUNTIME_VERSION,
20
+ execute: (expectedBase64, input, options) => executeClient(expectedBase64, input, options, true),
21
+ });
22
+ async function executeClient(expectedBase64, input, options, component) {
23
+ // Constant-sized entry introspection precedes budget configuration and all reads.
24
+ const entryFailure = () => ({ kind: 'unsupported', rule: 'data-only client options required', usage: { nodes: 0, work: 0 } });
25
+ if (!options || typeof options !== 'object' || types.isProxy(options)
26
+ || ![null, Object.prototype].includes(Object.getPrototypeOf(options)))
27
+ return entryFailure();
28
+ const allowed = ['localSource', 'fileRoots', 'capsule', 'budget', 'soap', ...(component ? ['sourceResources', 'sourceOrigins', 'sourceUri', 'namespaceLocations', 'standardLibraries', 'recordSources'] : [])];
29
+ const owned = Object.create(null);
30
+ for (const key of Reflect.ownKeys(options)) {
31
+ const descriptor = Object.getOwnPropertyDescriptor(options, key);
32
+ if (typeof key !== 'string' || !allowed.includes(key) || !descriptor || !('value' in descriptor))
18
33
  return entryFailure();
19
- const allowed = ['localSource', 'fileRoots', 'capsule', 'budget', 'soap'];
20
- const owned = Object.create(null);
21
- for (const key of Reflect.ownKeys(options)) {
22
- const descriptor = Object.getOwnPropertyDescriptor(options, key);
23
- if (typeof key !== 'string' || !allowed.includes(key) || !descriptor || !('value' in descriptor))
24
- return entryFailure();
25
- owned[key] = descriptor.value;
26
- }
27
- if (!['localSource', 'fileRoots', 'capsule', 'soap'].every(key => Object.hasOwn(owned, key)))
34
+ owned[key] = descriptor.value;
35
+ }
36
+ if (!['localSource', 'fileRoots', 'capsule', 'soap', ...(component ? ['sourceResources', 'sourceOrigins'] : [])].every(key => Object.hasOwn(owned, key)))
37
+ return entryFailure();
38
+ if (owned.budget !== undefined) {
39
+ const limits = owned.budget;
40
+ if (!limits || typeof limits !== 'object' || types.isProxy(limits)
41
+ || ![null, Object.prototype].includes(Object.getPrototypeOf(limits)))
28
42
  return entryFailure();
29
- if (owned.budget !== undefined) {
30
- const limits = owned.budget;
31
- if (!limits || typeof limits !== 'object' || types.isProxy(limits)
32
- || ![null, Object.prototype].includes(Object.getPrototypeOf(limits)))
43
+ const copied = Object.create(null);
44
+ for (const key of Reflect.ownKeys(limits)) {
45
+ const descriptor = Object.getOwnPropertyDescriptor(limits, key);
46
+ if (typeof key !== 'string' || !['maxNodes', 'maxWork'].includes(key) || !descriptor || !('value' in descriptor))
33
47
  return entryFailure();
34
- const copied = Object.create(null);
35
- for (const key of Reflect.ownKeys(limits)) {
36
- const descriptor = Object.getOwnPropertyDescriptor(limits, key);
37
- if (typeof key !== 'string' || !['maxNodes', 'maxWork'].includes(key) || !descriptor || !('value' in descriptor))
38
- return entryFailure();
39
- copied[key] = descriptor.value;
40
- }
41
- owned.budget = Object.freeze(copied);
48
+ copied[key] = descriptor.value;
49
+ }
50
+ owned.budget = Object.freeze(copied);
51
+ }
52
+ options = owned;
53
+ const budget = createApplicationBudget(options.budget);
54
+ const fail = (kind, rule) => Object.freeze({ kind, rule, usage: Object.freeze({ ...budget.usage() }) });
55
+ try {
56
+ const optionRule = directSoapOptionsShape(options.soap, () => checkSemanticBudget(budget), component ? ['ca'] : []);
57
+ if (optionRule)
58
+ return fail('unsupported', optionRule);
59
+ if (options.soap.signal !== undefined && !(options.soap.signal instanceof AbortSignal))
60
+ return fail('unsupported', 'native AbortSignal required');
61
+ if (options.soap.signal?.aborted)
62
+ return fail('cancelled', 'cooperative-cancellation');
63
+ const signal = options.soap.signal;
64
+ const check = () => { checkSemanticBudget(budget); if (signal?.aborted)
65
+ throw new Error('cancelled'); };
66
+ const soap = Object.create(null);
67
+ for (const key of Reflect.ownKeys(options.soap))
68
+ soap[key] = Object.getOwnPropertyDescriptor(options.soap, key).value;
69
+ for (const key of ['service', 'port', 'endpoint', 'timeoutMs', 'limits', 'capabilities', ...(component ? ['ca'] : [])]) {
70
+ if (Object.hasOwn(soap, key))
71
+ soap[key] = directDataOwnership(budget).freeze(directDataOwnership(budget).snapshot(soap[key], check));
42
72
  }
43
- options = owned;
44
- const budget = createApplicationBudget(options.budget);
45
- const fail = (kind, rule) => Object.freeze({ kind, rule, usage: Object.freeze({ ...budget.usage() }) });
46
- try {
47
- const optionRule = directSoapOptionsShape(options.soap, () => checkSemanticBudget(budget));
48
- if (optionRule)
49
- return fail('unsupported', optionRule);
50
- if (options.soap.signal !== undefined && !(options.soap.signal instanceof AbortSignal))
51
- return fail('unsupported', 'native AbortSignal required');
52
- if (options.soap.signal?.aborted)
53
- return fail('cancelled', 'cooperative-cancellation');
54
- const signal = options.soap.signal;
55
- const check = () => { checkSemanticBudget(budget); if (signal?.aborted)
56
- throw new Error('cancelled'); };
57
- const soap = Object.create(null);
58
- for (const key of Reflect.ownKeys(options.soap))
59
- soap[key] = Object.getOwnPropertyDescriptor(options.soap, key).value;
60
- for (const key of ['service', 'port', 'endpoint', 'timeoutMs', 'limits', 'capabilities']) {
61
- if (Object.hasOwn(soap, key))
62
- soap[key] = directDataOwnership(budget).freeze(directDataOwnership(budget).snapshot(soap[key], check));
73
+ options = Object.freeze({ ...options, fileRoots: directDataOwnership(budget).freeze(directDataOwnership(budget).snapshot(options.fileRoots, check)), soap: Object.freeze(soap) });
74
+ if (typeof expectedBase64 !== 'string' || expectedBase64.length > Math.ceil(directLimit(budget, DIRECT_CAPSULE_LIMITS.maxBytes) / 3) * 4)
75
+ return fail('incompatible-artifact', 'generated-capsule-limit');
76
+ // The exact embedded artifact pins the emitted types. Check actual byte extent
77
+ // before copying; do not invoke caller byte getters.
78
+ if (!types.isUint8Array(options.capsule) || types.isProxy(options.capsule))
79
+ return fail('incompatible-artifact', 'capsule-bytes-required');
80
+ const typed = Object.getPrototypeOf(Uint8Array.prototype);
81
+ const backing = Object.getOwnPropertyDescriptor(typed, 'buffer').get.call(options.capsule);
82
+ const length = Object.getOwnPropertyDescriptor(typed, 'byteLength').get.call(options.capsule);
83
+ if (types.isSharedArrayBuffer(backing) || length > directLimit(budget, DIRECT_CAPSULE_LIMITS.maxBytes))
84
+ return fail('incompatible-artifact', 'capsule-bytes-required');
85
+ const bytes = new Uint8Array(length);
86
+ Uint8Array.prototype.set.call(bytes, options.capsule);
87
+ if (Buffer.from(bytes).toString('base64') !== expectedBase64)
88
+ return fail('incompatible-artifact', 'generated-capsule-mismatch');
89
+ let result;
90
+ if (component) {
91
+ if (typeof options.localSource !== 'string')
92
+ return fail('unsupported', 'explicit local source required');
93
+ const supplied = options;
94
+ const sources = directDataOwnership(budget).freeze(directDataOwnership(budget).snapshot({ resources: supplied.sourceResources,
95
+ origins: supplied.sourceOrigins, locations: supplied.namespaceLocations ?? [], standards: supplied.standardLibraries ?? [],
96
+ records: supplied.recordSources ?? [] }, check));
97
+ if (!Array.isArray(sources.resources) || !Array.isArray(sources.origins) || !sources.origins.every(origin => typeof origin === 'string')
98
+ || !Array.isArray(sources.locations) || !Array.isArray(sources.standards) || !sources.standards.every(id => typeof id === 'string')
99
+ || !Array.isArray(sources.records))
100
+ return fail('unsupported', 'explicit source snapshots required');
101
+ for (const resource of sources.resources) {
102
+ check();
103
+ if (!resource || typeof resource.uri !== 'string' || typeof resource.file !== 'string'
104
+ || Object.keys(resource).some(k => !['uri', 'file', 'canonicalUri'].includes(k))
105
+ || resource.canonicalUri !== undefined && typeof resource.canonicalUri !== 'string')
106
+ return fail('unsupported', 'explicit source resource required');
63
107
  }
64
- options = Object.freeze({ ...options, fileRoots: directDataOwnership(budget).freeze(directDataOwnership(budget).snapshot(options.fileRoots, check)), soap: Object.freeze(soap) });
65
- if (typeof expectedBase64 !== 'string' || expectedBase64.length > Math.ceil(directLimit(budget, DIRECT_CAPSULE_LIMITS.maxBytes) / 3) * 4)
66
- return fail('incompatible-artifact', 'generated-capsule-limit');
67
- // The exact embedded artifact pins the emitted types. Check actual byte extent
68
- // before copying; do not invoke caller byte getters.
69
- if (!types.isUint8Array(options.capsule) || types.isProxy(options.capsule))
70
- return fail('incompatible-artifact', 'capsule-bytes-required');
71
- const typed = Object.getPrototypeOf(Uint8Array.prototype);
72
- const backing = Object.getOwnPropertyDescriptor(typed, 'buffer').get.call(options.capsule);
73
- const length = Object.getOwnPropertyDescriptor(typed, 'byteLength').get.call(options.capsule);
74
- if (types.isSharedArrayBuffer(backing) || length > directLimit(budget, DIRECT_CAPSULE_LIMITS.maxBytes))
75
- return fail('incompatible-artifact', 'capsule-bytes-required');
76
- const bytes = new Uint8Array(length);
77
- Uint8Array.prototype.set.call(bytes, options.capsule);
78
- if (Buffer.from(bytes).toString('base64') !== expectedBase64)
79
- return fail('incompatible-artifact', 'generated-capsule-mismatch');
108
+ const namespaceLocations = new Map();
109
+ for (const location of sources.locations) {
110
+ check();
111
+ if (!location || typeof location.namespace !== 'string' || typeof location.location !== 'string'
112
+ || Object.keys(location).length !== 2 || namespaceLocations.has(location.namespace))
113
+ return fail('unsupported', 'explicit namespace location required');
114
+ namespaceLocations.set(location.namespace, location.location);
115
+ }
116
+ const prepared = await prepareSchemaSnapshotFiles(options.localSource, sources.resources, { policy: {
117
+ fileRoots: options.fileRoots, allowedOrigins: sources.origins
118
+ }, limits: directLoadingLimits(budget), namespaceLocations, signal, sourceUri: supplied.sourceUri,
119
+ chargeWork: amount => { check(); budget.chargeWork(amount); } });
120
+ const fresh = await reconstructComponentSourceCapsuleInRequest(bytes, prepared.source, { loading: prepared.loading, signal,
121
+ standardLibraries: sources.standards, recordSources: sources.records }, budget);
122
+ if (fresh.kind !== 'reconstructed-component')
123
+ return fresh;
124
+ if (fresh.selection.port !== options.soap.port || fresh.selection.service.namespace !== options.soap.service.namespace
125
+ || fresh.selection.service.local !== options.soap.service.local)
126
+ return fail('incompatible-artifact', 'explicit source selection mismatch');
127
+ result = fresh.responseProjection ? await exchangeComponentSoap(fresh.contract, fresh.mappings[0], input, supplied.soap, fresh.responseProjection)
128
+ : await exchangeComponentSoap(fresh.contract, fresh.mappings[0], input, supplied.soap);
129
+ }
130
+ else {
80
131
  const fresh = await reconstructDirectSourceCapsuleInRequest(bytes, options.localSource, { policy: { fileRoots: options.fileRoots }, limits: options.budget, signal: options.soap.signal }, budget);
81
132
  if (fresh.kind !== 'reconstructed-direct')
82
133
  return fresh;
@@ -85,28 +136,30 @@ export const directClientRuntime = Object.freeze({
85
136
  return compatible;
86
137
  // Value and byte provenance stay owned
87
138
  // by the original adapter; no catch-and-cast turns a failure into typed success.
88
- const result = await exchangeDirectSoap(fresh.contract, fresh.mappings[0], input, options.soap);
89
- if (!('decoded' in result))
90
- return result;
91
- if (options.soap.signal?.aborted)
92
- return fail('cancelled', 'cooperative-cancellation');
93
- const common = { value: result.decoded.validated.value, status: result.status, admitted: false,
94
- responseBytes: result.responseBytes, usage: Object.freeze({ ...budget.usage() }) };
95
- if (result.kind === 'soap-fault') {
96
- if (!result.fault)
97
- throw new TypeError('Missing native declared fault');
98
- return Object.freeze({ kind: 'soap-fault', ...common, fault: result.fault });
99
- }
100
- return Object.freeze({ kind: 'soap-response', ...common });
139
+ result = await exchangeDirectSoap(fresh.contract, fresh.mappings[0], input, options.soap);
101
140
  }
102
- catch (error) {
103
- if (budget.exhausted())
104
- return fail('resource-limit', 'request-budget');
105
- if (error instanceof DataOwnershipLimitError)
106
- return fail('resource-limit', error.message);
107
- if (options.soap.signal?.aborted)
108
- return fail('cancelled', 'cooperative-cancellation');
109
- throw error;
141
+ if (!('decoded' in result))
142
+ return result;
143
+ if (options.soap.signal?.aborted)
144
+ return fail('cancelled', 'cooperative-cancellation');
145
+ const common = { value: result.decoded.validated.value, status: result.status, admitted: false,
146
+ responseBytes: result.responseBytes, usage: Object.freeze({ ...budget.usage() }) };
147
+ if (result.kind === 'soap-fault') {
148
+ if (!result.fault)
149
+ throw new TypeError('Missing native declared fault');
150
+ return Object.freeze({ kind: 'soap-fault', ...common, fault: result.fault });
110
151
  }
111
- },
112
- });
152
+ return Object.freeze({ kind: 'soap-response', ...common });
153
+ }
154
+ catch (error) {
155
+ if (budget.exhausted())
156
+ return fail('resource-limit', 'request-budget');
157
+ if (error instanceof DataOwnershipLimitError)
158
+ return fail('resource-limit', error.message);
159
+ if (options.soap.signal?.aborted)
160
+ return fail('cancelled', 'cooperative-cancellation');
161
+ if (error instanceof SchemaLoadingError)
162
+ return fail(error.category === 'resource-limit' ? 'resource-limit' : 'missing-authority', 'authorized-local-source-required');
163
+ throw error;
164
+ }
165
+ }
@@ -1,4 +1,6 @@
1
1
  /** Generated injection protocol; independent of package, capsule and scalar-policy versions. */
2
2
  export declare const DIRECT_CLIENT_RUNTIME_VERSION: "checked-direct-runtime-v1";
3
3
  export declare const DIRECT_CLIENT_RUNTIME_REPAIR = "Regenerate matched direct client and capsule with the installed runtime.";
4
- //# sourceMappingURL=directClientVersion.d.ts.map
4
+ /** Component profile never impersonates the supported direct preview protocol. */
5
+ export declare const COMPONENT_CLIENT_RUNTIME_VERSION: "checked-component-runtime-v2";
6
+ export declare const COMPONENT_CLIENT_RUNTIME_REPAIR = "Regenerate matched component client and source artifacts with the installed runtime.";
@@ -1,3 +1,6 @@
1
1
  /** Generated injection protocol; independent of package, capsule and scalar-policy versions. */
2
2
  export const DIRECT_CLIENT_RUNTIME_VERSION = 'checked-direct-runtime-v1';
3
3
  export const DIRECT_CLIENT_RUNTIME_REPAIR = 'Regenerate matched direct client and capsule with the installed runtime.';
4
+ /** Component profile never impersonates the supported direct preview protocol. */
5
+ export const COMPONENT_CLIENT_RUNTIME_VERSION = 'checked-component-runtime-v2';
6
+ export const COMPONENT_CLIENT_RUNTIME_REPAIR = 'Regenerate matched component client and source artifacts with the installed runtime.';
@@ -18,4 +18,3 @@ import type { CompiledCatalog } from "../compiler/schemaCompiler.js";
18
18
  * @throws {Error} If a packaged preamble cannot be loaded or a TypeScript file cannot be written.
19
19
  */
20
20
  export declare function generateClient(outFile: string, compiled: CompiledCatalog): void;
21
- //# sourceMappingURL=generateClient.d.ts.map
@@ -298,14 +298,18 @@ ${methodsBody}
298
298
  if (err) {
299
299
  reject(err);
300
300
  } else {
301
- // Convert the SOAP response back to TypeScript object
302
- const response = this.fromSoapResult(result, responseType);
303
- resolve({
304
- response,
305
- headers: soapHeader || {},
306
- responseRaw: rawResponse,
307
- requestRaw: rawRequest
308
- });
301
+ // @why Response conversion failures must reject the call rather than escape the asynchronous SOAP callback.
302
+ try {
303
+ const response = this.fromSoapResult(result, responseType);
304
+ resolve({
305
+ response,
306
+ headers: soapHeader || {},
307
+ responseRaw: rawResponse,
308
+ requestRaw: rawRequest
309
+ });
310
+ } catch (error) {
311
+ reject(error);
312
+ }
309
313
  }
310
314
  });
311
315
  });
@@ -405,9 +409,18 @@ ${methodsBody}
405
409
  if (node == null) {
406
410
  return node;
407
411
  }
408
- // Pass through primitives unchanged
412
+ const childrenTypes: Readonly<Record<string, string>> = (typeName && this.dataTypes?.ChildrenTypes?.[typeName]) || {};
413
+ const attributeTypes: Readonly<Record<string, string>> = (typeName && this.dataTypes?.AttributeTypes?.[typeName]) || {};
414
+ // XML boolean attributes arrive as lexical strings even when element booleans are parsed by node-soap.
415
+ if (typeof node === "string" && typeName === "boolean") {
416
+ const lexical = node.replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g, "");
417
+ if (lexical === "true" || lexical === "1") return true;
418
+ if (lexical === "false" || lexical === "0") return false;
419
+ throw new TypeError("Invalid XML boolean response value");
420
+ }
421
+ // A simple-content complex type retains its object shape when no attributes are present on the wire.
409
422
  if (typeof node !== "object") {
410
- return node;
423
+ return childrenTypes.$value ? {$value: this.fromSoapResult(node, childrenTypes.$value)} : node;
411
424
  }
412
425
  // Recursively process array elements
413
426
  if (Array.isArray(node)) {
@@ -415,7 +428,6 @@ ${methodsBody}
415
428
  }
416
429
 
417
430
  // Get child type mapping for recursive processing with correct types
418
- const childrenTypes: Readonly<Record<string, string>> = (typeName && this.dataTypes?.ChildrenTypes?.[typeName]) || {};
419
431
  const repeatedElements: readonly string[] = (typeName && this.dataTypes?.RepeatedElements?.[typeName]) || [];
420
432
  const result: any = {};
421
433
 
@@ -429,7 +441,9 @@ ${methodsBody}
429
441
  const inAttrNode = (node as any)[this.attributesKeyOut] || (node as any)["attributes"] || (node as any)["$"];
430
442
  if (inAttrNode && typeof inAttrNode === "object") {
431
443
  // Promote all attributes to top-level properties for easier TS access
432
- Object.assign(result, inAttrNode);
444
+ for (const [name, value] of Object.entries(inAttrNode)) {
445
+ result[name] = this.fromSoapResult(value, attributeTypes[name]);
446
+ }
433
447
  }
434
448
 
435
449
  // Process remaining properties as child elements
@@ -1,4 +1,4 @@
1
- import type { ReconstructedDirectSource, DirectCapsuleFailure } from '../compiler/directSourceCapsule.js';
1
+ import type { ReconstructedDirectSource, ReconstructedComponentSource, DirectCapsuleFailure } from '../compiler/directSourceCapsule.js';
2
2
  import type { ResolverUsage } from '../compiler/semanticBudget.js';
3
3
  export interface GeneratedDirectClient {
4
4
  readonly kind: 'generated-direct-client';
@@ -10,5 +10,23 @@ export interface GeneratedDirectClient {
10
10
  /** Roles are separate declarations, so equal local names never merge namespace identities. */
11
11
  export declare function generateDirectClient(expected: ReconstructedDirectSource, signal?: AbortSignal): GeneratedDirectClient | DirectCapsuleFailure;
12
12
  /** Only authentic bounded artifacts may be written; prior semantic failure remains terminal. */
13
- export declare function writeDirectClient(file: string, generated: GeneratedDirectClient): void;
14
- //# sourceMappingURL=generateDirectClient.d.ts.map
13
+ export declare function writeDirectClient(file: string, generated: GeneratedDirectClient | GeneratedComponentClient): void;
14
+ export interface GeneratedComponentClient {
15
+ readonly kind: 'generated-component-client';
16
+ readonly source: string;
17
+ readonly capsule: Uint8Array;
18
+ readonly admitted: false;
19
+ readonly usage: ResolverUsage;
20
+ }
21
+ /** Emit recursive component types and the existing checked runtime injection protocol.
22
+ * @remarks Native reconstruction and mappings remain authoritative; generated TypeScript is a static description.
23
+ * @returns An authentic writable artifact, or explicit refusal. No legacy catalog or saved report is consumed.
24
+ * @throws TypeError For copied/foreign reconstruction handles. Caller cancellation returns a refusal.
25
+ */
26
+ export declare function generateComponentClient(expected: ReconstructedComponentSource, signal?: AbortSignal): Promise<GeneratedComponentClient | DirectCapsuleFailure>;
27
+ /** Emit a service client index and per-operation native artifacts using the existing component emitter.
28
+ * @remarks All operation artifacts are prepared before writing. The index contains no source authority.
29
+ * @returns Generator-owned relative capsule paths, keyed by exact operation name.
30
+ * @throws For foreign/mixed native operations, refused generation, cancellation or filesystem failure.
31
+ */
32
+ export declare function writeComponentServiceClient(expected: readonly ReconstructedComponentSource[], directory: string, signal?: AbortSignal, prepared?: readonly GeneratedComponentClient[]): Promise<Readonly<Record<string, string>>>;
@@ -1,14 +1,17 @@
1
1
  import { directLimit } from '../compiler/directExecutionPolicy.js';
2
- import { DIRECT_CLIENT_RUNTIME_VERSION, DIRECT_CLIENT_RUNTIME_REPAIR } from './directClientVersion.js';
3
- /** Internal native-plan generator. Deliberately absent from index.ts and the CLI. */
2
+ import { DIRECT_CLIENT_RUNTIME_VERSION, DIRECT_CLIENT_RUNTIME_REPAIR, COMPONENT_CLIENT_RUNTIME_VERSION, COMPONENT_CLIENT_RUNTIME_REPAIR } from './directClientVersion.js';
3
+ /** Native-plan generator consumed by the opt-in checked pipeline. */
4
4
  import { checkSemanticBudget } from '../compiler/semanticBudget.js';
5
- import { writeFileSync } from 'node:fs';
5
+ import { writeFileSync, mkdirSync } from 'node:fs';
6
+ import path from 'node:path';
6
7
  import { inspectDirectOperation } from '../compiler/directOperation.js';
7
- import { inspectDirectValueMapping } from '../compiler/directValues.js';
8
- import { checkDirectSourceCompatibility, createDirectSourceCapsule } from '../compiler/directSourceCapsule.js';
8
+ import { inspectDirectValueMapping, inspectComponentValueMapping } from '../compiler/directValues.js';
9
+ import { checkDirectSourceCompatibility, createDirectSourceCapsule, componentSourceCapsuleBytes, inspectReconstructedComponentSource, inspectComponentSourceService } from '../compiler/directSourceCapsule.js';
10
+ import { lowerComponentShape } from '../generation/componentShape.js';
9
11
  import { composeGeneratedSource, resolvePreamble } from '../generation/preamble.js';
10
12
  const MAX_SOURCE_BYTES = 512 * 1024;
11
13
  const generatedArtifacts = new WeakMap();
14
+ const componentArtifactOwners = new WeakMap();
12
15
  /** Roles are separate declarations, so equal local names never merge namespace identities. */
13
16
  export function generateDirectClient(expected, signal) {
14
17
  const { budget } = inspectDirectOperation(expected.contract).context;
@@ -67,7 +70,7 @@ export function generateDirectClient(expected, signal) {
67
70
  const faults = mappings.filter(m => m.direction.kind === 'fault');
68
71
  const lines = [
69
72
  '// Checked direct client; inject checkedDirectRuntimeV1 from the package root.',
70
- '// Generation remains internal; this unreleased binding supports only the documented direct grammar.',
73
+ '// Opt-in preview binding supports only the documented direct grammar.',
71
74
  '// Static number types require native int32 validation; native checks enforce exact shapes.',
72
75
  `export type Request = ${shape(input)};`,
73
76
  `export type Response = ${shape(output)};`,
@@ -97,6 +100,7 @@ export function generateDirectClient(expected, signal) {
97
100
  }).join(' | ') : 'never') + ';',
98
101
  'export type Result = Failure | (Common & { readonly kind: "soap-response"; readonly value: Response }) | DeclaredFault;',
99
102
  `const capsule = ${literal(Buffer.from(capsule.bytes).toString('base64'))};`,
103
+ 'export const expectedCapsuleBase64 = capsule;',
100
104
  `export const selection = ${literal(JSON.stringify({ selector: expected.contract.selector, ...expected.selection }))};`,
101
105
  'export function createClient(runtime: Runtime) {',
102
106
  ' return Object.freeze({',
@@ -134,3 +138,131 @@ export function writeDirectClient(file, generated) {
134
138
  checkSemanticBudget(budget);
135
139
  writeFileSync(file, generated.source, 'utf8');
136
140
  }
141
+ /** Emit recursive component types and the existing checked runtime injection protocol.
142
+ * @remarks Native reconstruction and mappings remain authoritative; generated TypeScript is a static description.
143
+ * @returns An authentic writable artifact, or explicit refusal. No legacy catalog or saved report is consumed.
144
+ * @throws TypeError For copied/foreign reconstruction handles. Caller cancellation returns a refusal.
145
+ */
146
+ export async function generateComponentClient(expected, signal) {
147
+ inspectReconstructedComponentSource(expected);
148
+ const { budget } = inspectDirectOperation(expected.contract).context;
149
+ const failure = (kind, rule) => ({ kind, rule,
150
+ repair: COMPONENT_CLIENT_RUNTIME_REPAIR, usage: Object.freeze({ ...budget.usage() }) });
151
+ const check = () => { checkSemanticBudget(budget); if (signal?.aborted)
152
+ throw new Error('cancelled'); };
153
+ try {
154
+ check();
155
+ const capsule = { bytes: componentSourceCapsuleBytes(expected, signal) };
156
+ const literal = (value) => JSON.stringify(value).replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029');
157
+ const mappings = expected.mappings;
158
+ const input = mappings.find(mapping => mapping.direction.kind === 'input');
159
+ const output = mappings.find(mapping => mapping.direction.kind === 'output');
160
+ const request = lowerComponentShape(expected.contract, input, 'Request', check);
161
+ const response = lowerComponentShape(expected.contract, output, 'Response', check);
162
+ const faults = mappings.filter(mapping => mapping.direction.kind === 'fault').map((mapping, index) => ({ mapping,
163
+ shape: lowerComponentShape(expected.contract, mapping, `Fault_${index}`, check) }));
164
+ const grouped = mappings.some(mapping => mapping.kind === 'component-mapping'
165
+ && inspectComponentValueMapping(mapping, expected.contract).applicationGroups);
166
+ const declarations = grouped ? [...new Set([...request.declarations, ...response.declarations, ...faults.flatMap(({ shape }) => shape.declarations)]),
167
+ `export type Request = ${request.type};`, `export type Response = ${response.type};`,
168
+ ...faults.map(({ shape }, index) => `export type Fault_${index} = ${shape.type};`)] : [
169
+ ...request.declarations, `export type Request = ${request.type};`,
170
+ ...response.declarations, `export type Response = ${response.type};`,
171
+ ...faults.flatMap(({ shape }, index) => [...shape.declarations, `export type Fault_${index} = ${shape.type};`])
172
+ ];
173
+ const lines = [
174
+ '// Checked component client; inject checkedComponentRuntimeV1 from the package root.',
175
+ '// Scalar facets, ordered occurrence correlation and wildcard membership remain native runtime duties.',
176
+ ...declarations,
177
+ 'export interface Usage {readonly nodes: number; readonly work: number}',
178
+ 'export interface Name {readonly namespace: string; readonly local: string}',
179
+ 'export interface Options {',
180
+ ' readonly localSource: string; readonly fileRoots: readonly string[]; readonly capsule: Uint8Array;',
181
+ ' readonly sourceResources: readonly {readonly uri: string; readonly file: string; readonly canonicalUri?: string}[]; readonly sourceOrigins: readonly string[];',
182
+ ' readonly sourceUri?: string;',
183
+ ' readonly namespaceLocations?: readonly {readonly namespace: string; readonly location: string}[];',
184
+ ' readonly standardLibraries?: readonly string[];',
185
+ ' readonly recordSources?: readonly {readonly selector: {readonly portType: Name; readonly binding: Name; readonly operation: string}; readonly source: string}[];',
186
+ ' readonly soap: {readonly service: Name; readonly port: string; readonly endpoint?: string;',
187
+ ' readonly allowEndpoint?: (endpoint: URL) => boolean; readonly signal?: AbortSignal; readonly timeoutMs?: number;',
188
+ ' readonly capabilities?: readonly string[]; readonly ca?: string;',
189
+ ' readonly limits?: {readonly maxBytes?: number; readonly maxDepth?: number; readonly maxNodes?: number; readonly maxText?: number}};',
190
+ '}',
191
+ 'export interface Failure {readonly kind: "incompatible-artifact" | "unsupported" | "missing-authority" | "resource-limit" | "cancelled" | "inconclusive" | "invalid-schema" | "scalar-invalid" | "value-invalid" | "xml-invalid" | "mismatch" | "transport" | "protocol";',
192
+ ' readonly rule: string; readonly repair?: string; readonly phase?: "input" | "response"; readonly usage: Usage}',
193
+ 'export interface NativeSuccess {readonly kind: "soap-response" | "soap-fault"; readonly value: unknown; readonly admitted: false;',
194
+ ' readonly status: number; readonly usage: Usage; readonly responseBytes: Uint8Array;',
195
+ ' readonly fault?: {readonly name: string; readonly code: Name; readonly string: string; readonly actor?: string}}',
196
+ `export interface Runtime {readonly version: ${literal(COMPONENT_CLIENT_RUNTIME_VERSION)}; execute(expectedBase64: string, input: unknown, options: Options, version: ${literal(COMPONENT_CLIENT_RUNTIME_VERSION)}): Promise<Failure | NativeSuccess>}`,
197
+ 'type Common = {readonly admitted: false; readonly status: number; readonly usage: Usage; readonly responseBytes: Uint8Array};',
198
+ 'export type Result = Failure | (Common & {readonly kind: "soap-response"; readonly value: Response})',
199
+ ...faults.map(({ mapping }, index) => {
200
+ if (mapping.direction.kind !== 'fault')
201
+ throw new TypeError('Native fault mapping required');
202
+ return ` | (Common & {readonly kind: "soap-fault"; readonly value: Fault_${index}; readonly fault: {readonly name: ${literal(mapping.direction.name)}; readonly code: Name; readonly string: string; readonly actor?: string}})`;
203
+ }),
204
+ ...(faults.length ? [] : [' | (Common & {readonly kind: "soap-fault"; readonly value: never; readonly fault: {readonly name: never; readonly code: Name; readonly string: string; readonly actor?: string}})']),
205
+ ';',
206
+ `export const expectedCapsuleBase64 = ${literal(Buffer.from(capsule.bytes).toString('base64'))};`,
207
+ `export const selection = ${literal(JSON.stringify({ selector: expected.contract.selector, ...expected.selection }))};`,
208
+ 'export function createClient(runtime: Runtime) {',
209
+ ' return Object.freeze({',
210
+ ` [${literal(expected.contract.selector.operation)}]: async (input: Request, options: Options): Promise<Result> => {`,
211
+ ` if (runtime.version !== ${literal(COMPONENT_CLIENT_RUNTIME_VERSION)}) return {kind: "incompatible-artifact", rule: "generated-runtime-version", repair: ${literal(COMPONENT_CLIENT_RUNTIME_REPAIR)}, usage: {nodes: 0, work: 0}};`,
212
+ ` return await runtime.execute(expectedCapsuleBase64, input, options, ${literal(COMPONENT_CLIENT_RUNTIME_VERSION)}) as Result;`,
213
+ ' },', ' });', '}', '',
214
+ ];
215
+ const source = composeGeneratedSource(lines.join('\n'), resolvePreamble('direct-client'));
216
+ if (Buffer.byteLength(source) > directLimit(budget, MAX_SOURCE_BYTES))
217
+ return failure('resource-limit', 'generated-source-byte-limit');
218
+ check();
219
+ const artifact = Object.freeze({ kind: 'generated-component-client', source, capsule: capsule.bytes,
220
+ admitted: false, usage: Object.freeze({ ...budget.usage() }) });
221
+ generatedArtifacts.set(artifact, budget);
222
+ componentArtifactOwners.set(artifact, expected);
223
+ return artifact;
224
+ }
225
+ catch (error) {
226
+ if (budget.exhausted())
227
+ return failure('resource-limit', 'request-budget');
228
+ if (signal?.aborted)
229
+ return failure('cancelled', 'cooperative-cancellation');
230
+ throw error;
231
+ }
232
+ }
233
+ /** Emit a service client index and per-operation native artifacts using the existing component emitter.
234
+ * @remarks All operation artifacts are prepared before writing. The index contains no source authority.
235
+ * @returns Generator-owned relative capsule paths, keyed by exact operation name.
236
+ * @throws For foreign/mixed native operations, refused generation, cancellation or filesystem failure.
237
+ */
238
+ export async function writeComponentServiceClient(expected, directory, signal, prepared) {
239
+ const operations = inspectComponentSourceService(expected);
240
+ const generated = [];
241
+ if (prepared && prepared.length !== operations.length)
242
+ throw new TypeError('Prepared operation artifacts must match the service');
243
+ for (const [index, operation] of operations.entries()) {
244
+ const artifact = prepared?.[index] ?? await generateComponentClient(operation, signal);
245
+ if (artifact.kind !== 'generated-component-client')
246
+ throw new Error(`Checked client refused: ${artifact.kind}: ${artifact.rule}`);
247
+ if (componentArtifactOwners.get(artifact) !== operation)
248
+ throw new TypeError('Prepared client belongs to another native operation');
249
+ generated.push(artifact);
250
+ }
251
+ const files = Object.create(null);
252
+ const lines = operations.flatMap((_, index) => [
253
+ `import {createClient as operation_${index}} from './operations/${index}/client.js';`,
254
+ `export * as Operation_${index} from './operations/${index}/client.js';`,
255
+ ]);
256
+ lines.push("import type {Runtime, Options as OperationOptions} from './operations/0/client.js';", "export type Options = Omit<OperationOptions, 'capsule'>;", `export const selection = ${JSON.stringify(JSON.stringify(operations[0].selection))};`, 'export function createClient(runtime: Runtime) {', ' return Object.freeze({', ...operations.map((_, index) => ` ...operation_${index}(runtime),`), ' });', '}', '');
257
+ for (const [index, operation] of operations.entries()) {
258
+ const dir = path.join(directory, 'operations', String(index));
259
+ mkdirSync(dir, { recursive: true });
260
+ writeDirectClient(path.join(dir, 'client.ts'), generated[index]);
261
+ writeFileSync(path.join(dir, 'contract.json'), generated[index].capsule);
262
+ files[operation.contract.selector.operation] = `operations/${index}/contract.json`;
263
+ }
264
+ const { budget } = inspectDirectOperation(operations[0].contract).context;
265
+ checkSemanticBudget(budget);
266
+ writeFileSync(path.join(directory, 'client.ts'), composeGeneratedSource(lines.join('\n'), resolvePreamble('direct-client')), 'utf8');
267
+ return Object.freeze(files);
268
+ }
@@ -11,4 +11,3 @@ import type { CompiledCatalog } from "../compiler/schemaCompiler.js";
11
11
  * @throws {Error} If a packaged preamble cannot be loaded or the TypeScript file cannot be written.
12
12
  */
13
13
  export declare function generateOperations(outFile: string, compiled: CompiledCatalog): void;
14
- //# sourceMappingURL=generateOperations.d.ts.map
@@ -20,4 +20,3 @@ import type { CompiledCatalog } from "../compiler/schemaCompiler.js";
20
20
  * @throws {Error} If a packaged preamble cannot be loaded or the TypeScript file cannot be written.
21
21
  */
22
22
  export declare function generateTypes(outFile: string, compiled: CompiledCatalog): void;
23
- //# sourceMappingURL=generateTypes.d.ts.map
@@ -19,4 +19,3 @@ import type { CompiledCatalog } from "../compiler/schemaCompiler.js";
19
19
  * @throws {Error} If a packaged preamble cannot be loaded or the TypeScript file cannot be written.
20
20
  */
21
21
  export declare function generateUtils(outFile: string, compiled: CompiledCatalog): void;
22
- //# sourceMappingURL=generateUtils.d.ts.map
@@ -48,7 +48,7 @@ export function generateUtils(outFile, compiled) {
48
48
  return max === "unbounded" || (typeof max === "number" && max > 1);
49
49
  }).sort(),
50
50
  ]));
51
- const metas = JSON.stringify({ Attributes: attrSpec, ChildrenTypes: childType, RepeatedElements: repeatedElements }, null, 2);
51
+ const metas = JSON.stringify({ Attributes: attrSpec, AttributeTypes: compiled.meta.attrType ?? {}, ChildrenTypes: childType, RepeatedElements: repeatedElements }, null, 2);
52
52
  const dataTypes = `/**
53
53
  * ${clientName} WSDL data types for proper serialization/deserialization.
54
54
  * Used to distinguish between XML attributes and elements during conversion.
@@ -56,6 +56,8 @@ export function generateUtils(outFile, compiled) {
56
56
  export interface ${clientName}DataTypes {
57
57
  /** Maps type names to lists of property names that should be treated as XML attributes */
58
58
  Attributes: Record<string, readonly string[]>;
59
+ /** Maps attributes to their projected scalar types for XML response conversion. */
60
+ AttributeTypes?: Record<string, Readonly<Record<string, string>>>;
59
61
  /** Maps type names to their child element types for recursive processing */
60
62
  ChildrenTypes: Record<string, Readonly<Record<string, string>>>;
61
63
  /** Maps type names to repeated child properties; optional for custom metadata compatibility. */