@techspokes/typescript-wsdl-client 1.1.5 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (505) hide show
  1. package/README.md +80 -68
  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 +268 -0
  10. package/dist/cli.d.ts +0 -1
  11. package/dist/cli.js +92 -2
  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 +98 -28
  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/generateOperations.js +30 -11
  24. package/dist/client/generateTypes.d.ts +0 -1
  25. package/dist/client/generateUtils.d.ts +0 -1
  26. package/dist/client/generateUtils.js +7 -1
  27. package/dist/compiler/applicationGroups.d.ts +53 -0
  28. package/dist/compiler/applicationGroups.js +403 -0
  29. package/dist/compiler/buildCanonicalGraph.d.ts +0 -1
  30. package/dist/compiler/canonicalGraph.d.ts +4 -16
  31. package/dist/compiler/canonicalGraph.js +1 -8
  32. package/dist/compiler/catalogErrors.d.ts +0 -1
  33. package/dist/compiler/catalogProvenance.d.ts +0 -1
  34. package/dist/compiler/checkedAssessment.d.ts +0 -1
  35. package/dist/compiler/checkedAssessment.js +1 -1
  36. package/dist/compiler/checkedComponentSource.d.ts +16 -0
  37. package/dist/compiler/checkedComponentSource.js +31 -0
  38. package/dist/compiler/checkedSourcePreparation.d.ts +38 -1
  39. package/dist/compiler/checkedSourcePreparation.js +71 -0
  40. package/dist/compiler/complexTypeContent.d.ts +5 -6
  41. package/dist/compiler/complexTypeContent.js +2 -2
  42. package/dist/compiler/componentCorrespondence.d.ts +32 -0
  43. package/dist/compiler/componentCorrespondence.js +140 -0
  44. package/dist/compiler/componentRecordProjection.d.ts +112 -0
  45. package/dist/compiler/componentRecordProjection.js +329 -0
  46. package/dist/compiler/componentSoapPreparation.d.ts +20 -0
  47. package/dist/compiler/componentSoapPreparation.js +36 -0
  48. package/dist/compiler/composeCanonicalGraph.d.ts +0 -1
  49. package/dist/compiler/dataOwnership.d.ts +0 -1
  50. package/dist/compiler/dataOwnership.js +14 -4
  51. package/dist/compiler/datatypeValues.d.ts +0 -1
  52. package/dist/compiler/declarationIdentity.d.ts +22 -0
  53. package/dist/compiler/declarationIdentity.js +9 -0
  54. package/dist/compiler/directCodec.d.ts +79 -2
  55. package/dist/compiler/directCodec.js +310 -92
  56. package/dist/compiler/directExecutionPolicy.d.ts +0 -1
  57. package/dist/compiler/directOperation.d.ts +72 -8
  58. package/dist/compiler/directOperation.js +164 -19
  59. package/dist/compiler/directSoap.d.ts +29 -5
  60. package/dist/compiler/directSoap.js +154 -44
  61. package/dist/compiler/directSoapSource.d.ts +24 -1
  62. package/dist/compiler/directSoapSource.js +166 -19
  63. package/dist/compiler/directSourceCapsule.d.ts +74 -2
  64. package/dist/compiler/directSourceCapsule.js +484 -6
  65. package/dist/compiler/directStructure.d.ts +83 -6
  66. package/dist/compiler/directStructure.js +353 -58
  67. package/dist/compiler/directStructurePlan.d.ts +144 -2
  68. package/dist/compiler/directStructurePlan.js +615 -30
  69. package/dist/compiler/directValues.d.ts +76 -5
  70. package/dist/compiler/directValues.js +967 -117
  71. package/dist/compiler/finiteRe01Construction.d.ts +69 -0
  72. package/dist/compiler/finiteRe01Construction.js +422 -0
  73. package/dist/compiler/finiteRe01Verification.d.ts +81 -3
  74. package/dist/compiler/finiteRe01Verification.js +391 -4
  75. package/dist/compiler/generateCatalog.d.ts +0 -1
  76. package/dist/compiler/graphTraversal.d.ts +0 -1
  77. package/dist/compiler/hypotheticalScopedIdentity.d.ts +0 -1
  78. package/dist/compiler/legacyDeclarations.d.ts +26 -0
  79. package/dist/compiler/legacyDeclarations.js +144 -0
  80. package/dist/compiler/occurrenceAnalysis.d.ts +2 -1
  81. package/dist/compiler/occurrenceAnalysis.js +23 -7
  82. package/dist/compiler/originalSourceMembership.d.ts +0 -1
  83. package/dist/compiler/particleAttribution.d.ts +0 -1
  84. package/dist/compiler/particleAttribution.js +20 -0
  85. package/dist/compiler/particleDeclarationConsistency.d.ts +0 -1
  86. package/dist/compiler/particleDeclarationConsistency.js +9 -0
  87. package/dist/compiler/particleExtension.d.ts +0 -1
  88. package/dist/compiler/particleExtension.js +5 -1
  89. package/dist/compiler/particleLocalAssessment.d.ts +0 -1
  90. package/dist/compiler/particleRestriction.d.ts +0 -1
  91. package/dist/compiler/particleRestriction.js +6 -1
  92. package/dist/compiler/particleSemanticView.d.ts +2 -1
  93. package/dist/compiler/particleSemanticView.js +16 -3
  94. package/dist/compiler/particleWildcardRelation.d.ts +0 -1
  95. package/dist/compiler/projectionScalar.d.ts +49 -0
  96. package/dist/compiler/projectionScalar.js +218 -0
  97. package/dist/compiler/re01CandidateAssignments.d.ts +95 -0
  98. package/dist/compiler/re01CandidateAssignments.js +341 -0
  99. package/dist/compiler/re01CandidateCorrespondence.d.ts +22 -1
  100. package/dist/compiler/re01CandidateCorrespondence.js +167 -38
  101. package/dist/compiler/re01TypeProperties.d.ts +0 -1
  102. package/dist/compiler/re01TypePropertyValidation.d.ts +0 -1
  103. package/dist/compiler/resolveCanonicalGraph.d.ts +5 -2
  104. package/dist/compiler/resolveCanonicalGraph.js +77 -7
  105. package/dist/compiler/rpcStringValues.d.ts +30 -0
  106. package/dist/compiler/rpcStringValues.js +196 -0
  107. package/dist/compiler/rpcTypedValues.d.ts +48 -0
  108. package/dist/compiler/rpcTypedValues.js +190 -0
  109. package/dist/compiler/scalarSchemaAssessment.d.ts +0 -1
  110. package/dist/compiler/schemaAttributeGroupProperties.d.ts +0 -1
  111. package/dist/compiler/schemaAttributeProperties.d.ts +0 -1
  112. package/dist/compiler/schemaAttributeUses.d.ts +22 -2
  113. package/dist/compiler/schemaAttributeUses.js +86 -13
  114. package/dist/compiler/schemaBinaryWordReconstruction.d.ts +0 -1
  115. package/dist/compiler/schemaBuiltinFacets.d.ts +0 -1
  116. package/dist/compiler/schemaCalendarImages.d.ts +0 -1
  117. package/dist/compiler/schemaCalendarLanguage.d.ts +0 -1
  118. package/dist/compiler/schemaCompiler.d.ts +0 -1
  119. package/dist/compiler/schemaCompiler.js +44 -109
  120. package/dist/compiler/schemaComponentEquality.d.ts +0 -1
  121. package/dist/compiler/schemaConstructionAssessment.d.ts +34 -1
  122. package/dist/compiler/schemaConstructionAssessment.js +88 -6
  123. package/dist/compiler/schemaDatatypeValues.d.ts +0 -1
  124. package/dist/compiler/schemaDecimalLanguage.d.ts +0 -1
  125. package/dist/compiler/schemaDeclarationPrimitives.d.ts +7 -2
  126. package/dist/compiler/schemaDeclarationPrimitives.js +18 -1
  127. package/dist/compiler/schemaDocumentSyntax.d.ts +0 -1
  128. package/dist/compiler/schemaDurationLanguage.d.ts +0 -1
  129. package/dist/compiler/schemaElementInstance.d.ts +30 -0
  130. package/dist/compiler/schemaElementInstance.js +45 -0
  131. package/dist/compiler/schemaElementProperties.d.ts +0 -1
  132. package/dist/compiler/schemaEndpointWordCapacity.d.ts +0 -1
  133. package/dist/compiler/schemaExactCalendar.d.ts +0 -1
  134. package/dist/compiler/schemaFacetAnnotation.d.ts +0 -1
  135. package/dist/compiler/schemaGeneratedScalarShape.d.ts +0 -1
  136. package/dist/compiler/schemaGeneratedScalarShape.js +2 -0
  137. package/dist/compiler/schemaIdentityConstraints.d.ts +0 -1
  138. package/dist/compiler/schemaIeeeLanguage.d.ts +0 -1
  139. package/dist/compiler/schemaIntegerImages.d.ts +0 -1
  140. package/dist/compiler/schemaLexicalPredicates.d.ts +0 -1
  141. package/dist/compiler/schemaNotationProperties.d.ts +0 -1
  142. package/dist/compiler/schemaNumericImageConditions.d.ts +0 -1
  143. package/dist/compiler/schemaParticleWildcardProperties.d.ts +0 -1
  144. package/dist/compiler/schemaPattern.d.ts +0 -1
  145. package/dist/compiler/schemaRegularLanguage.d.ts +0 -1
  146. package/dist/compiler/schemaScalarContext.d.ts +5 -1
  147. package/dist/compiler/schemaScalarKernel.d.ts +0 -1
  148. package/dist/compiler/schemaScalarWitnesses.d.ts +0 -1
  149. package/dist/compiler/schemaSimpleTypeProperties.d.ts +0 -1
  150. package/dist/compiler/schemaSourceGrammar.d.ts +0 -1
  151. package/dist/compiler/schemaSourceLexical.d.ts +0 -1
  152. package/dist/compiler/schemaSourceValues.d.ts +0 -1
  153. package/dist/compiler/schemaSourceWildcards.d.ts +1 -2
  154. package/dist/compiler/schemaSourceWildcards.js +3 -1
  155. package/dist/compiler/schemaSymbolicSequences.d.ts +0 -1
  156. package/dist/compiler/schemaSymbolicValueSets.d.ts +0 -1
  157. package/dist/compiler/schemaSyntaxAssessment.d.ts +0 -1
  158. package/dist/compiler/schemaTemporalAliases.d.ts +0 -1
  159. package/dist/compiler/schemaTokenImages.d.ts +0 -1
  160. package/dist/compiler/schemaTypeIdentity.d.ts +0 -1
  161. package/dist/compiler/schemaTypeIdentity.js +2 -0
  162. package/dist/compiler/schemaTypeRelations.d.ts +0 -1
  163. package/dist/compiler/schemaUri.d.ts +0 -1
  164. package/dist/compiler/schemaValueContext.d.ts +0 -1
  165. package/dist/compiler/schemaValueImages.d.ts +0 -1
  166. package/dist/compiler/schemaValueSequences.d.ts +0 -1
  167. package/dist/compiler/semanticBudget.d.ts +18 -1
  168. package/dist/compiler/semanticBudget.js +17 -2
  169. package/dist/compiler/semanticCatalog.d.ts +2 -3
  170. package/dist/compiler/semanticContext.d.ts +12 -1
  171. package/dist/compiler/semanticContext.js +39 -0
  172. package/dist/compiler/semanticTypeDependencies.d.ts +0 -1
  173. package/dist/compiler/semanticTypeReference.d.ts +0 -1
  174. package/dist/compiler/shapeResolver.d.ts +0 -1
  175. package/dist/compiler/soapHeaders.d.ts +16 -0
  176. package/dist/compiler/soapHeaders.js +42 -0
  177. package/dist/compiler/sourceSchemaBinding.d.ts +0 -1
  178. package/dist/compiler/standardSchemaComponents.d.ts +71 -0
  179. package/dist/compiler/standardSchemaComponents.js +74 -0
  180. package/dist/compiler/standardSchemaConstruction.d.ts +20 -0
  181. package/dist/compiler/standardSchemaConstruction.js +34 -0
  182. package/dist/compiler/structuralCompanions.d.ts +0 -1
  183. package/dist/compiler/validateSemanticGraph.d.ts +0 -1
  184. package/dist/compiler/wildcardAlgebra.d.ts +0 -1
  185. package/dist/compiler/wsdlPolicyRequirements.d.ts +43 -0
  186. package/dist/compiler/wsdlPolicyRequirements.js +239 -0
  187. package/dist/config.d.ts +0 -1
  188. package/dist/gateway/generateCheckedGateway.d.ts +32 -0
  189. package/dist/gateway/generateCheckedGateway.js +293 -0
  190. package/dist/gateway/generateComposedGateway.d.ts +16 -0
  191. package/dist/gateway/generateComposedGateway.js +65 -0
  192. package/dist/gateway/generateGateway.d.ts +0 -1
  193. package/dist/gateway/generateGateway.js +1 -0
  194. package/dist/gateway/generators.d.ts +0 -1
  195. package/dist/gateway/generators.js +19 -4
  196. package/dist/gateway/helpers.d.ts +1 -1
  197. package/dist/gateway/helpers.js +15 -0
  198. package/dist/generation/componentShape.d.ts +14 -0
  199. package/dist/generation/componentShape.js +293 -0
  200. package/dist/generation/preamble.d.ts +0 -1
  201. package/dist/generation/sourceLayout.d.ts +13 -0
  202. package/dist/generation/sourceLayout.js +40 -0
  203. package/dist/generation/writeGeneratedSource.d.ts +0 -1
  204. package/dist/index.d.ts +11 -2
  205. package/dist/index.js +4 -1
  206. package/dist/loader/fetch.d.ts +0 -1
  207. package/dist/loader/orderedSyntax.d.ts +12 -1
  208. package/dist/loader/orderedSyntax.js +40 -6
  209. package/dist/loader/resolutionDepth.d.ts +0 -1
  210. package/dist/loader/schemaInput.d.ts +28 -1
  211. package/dist/loader/schemaInput.js +41 -4
  212. package/dist/loader/schemaResources.d.ts +2 -1
  213. package/dist/loader/schemaResources.js +45 -4
  214. package/dist/loader/wsdlLoader.d.ts +0 -1
  215. package/dist/multiServicePipeline.d.ts +41 -0
  216. package/dist/multiServicePipeline.js +287 -0
  217. package/dist/openapi/casing.d.ts +0 -1
  218. package/dist/openapi/composeOpenAPI.d.ts +29 -0
  219. package/dist/openapi/composeOpenAPI.js +322 -0
  220. package/dist/openapi/generateOpenAPI.d.ts +0 -1
  221. package/dist/openapi/generatePaths.d.ts +0 -1
  222. package/dist/openapi/generateSchemas.d.ts +0 -1
  223. package/dist/openapi/security.d.ts +0 -1
  224. package/dist/pipeline.d.ts +7 -3
  225. package/dist/pipeline.js +15 -0
  226. package/dist/test/generateCheckedTests.d.ts +17 -0
  227. package/dist/test/generateCheckedTests.js +60 -0
  228. package/dist/test/generateTests.d.ts +0 -1
  229. package/dist/test/generators.d.ts +0 -1
  230. package/dist/test/mockData.d.ts +0 -1
  231. package/dist/test/mockData.js +20 -14
  232. package/dist/util/attributeWildcards.d.ts +0 -1
  233. package/dist/util/builder.d.ts +0 -1
  234. package/dist/util/catalogMeta.d.ts +0 -1
  235. package/dist/util/checkedCliDiagnostics.d.ts +11 -0
  236. package/dist/util/checkedCliDiagnostics.js +22 -0
  237. package/dist/util/cli.d.ts +0 -1
  238. package/dist/util/errors.d.ts +0 -1
  239. package/dist/util/imports.d.ts +0 -1
  240. package/dist/util/runtimeSource.d.ts +0 -1
  241. package/dist/util/runtimeSource.js +3 -5
  242. package/dist/util/securityConfig.d.ts +0 -1
  243. package/dist/util/streamConfig.d.ts +0 -1
  244. package/dist/util/tools.d.ts +0 -1
  245. package/dist/util/xmlWhitespace.d.ts +0 -1
  246. package/dist/xsd/primitives.d.ts +0 -1
  247. package/docs/agent-skill.md +12 -1
  248. package/docs/api-reference.md +127 -9
  249. package/docs/checked-gateway.md +212 -0
  250. package/docs/checked-generation.md +167 -0
  251. package/docs/cli-reference.md +48 -6
  252. package/docs/concepts.md +139 -5
  253. package/docs/configuration.md +15 -4
  254. package/docs/corpus.md +33 -0
  255. package/docs/direct-values.md +13 -13
  256. package/docs/examples/checked-forecast.wsdl +19 -0
  257. package/docs/gateway-guide.md +104 -27
  258. package/docs/generated-code.md +22 -11
  259. package/docs/mapping-contract.md +114 -0
  260. package/docs/migration-playbook.md +5 -1
  261. package/docs/migration.md +124 -6
  262. package/docs/output-anatomy.md +21 -18
  263. package/docs/production.md +7 -5
  264. package/docs/start-here.md +19 -3
  265. package/docs/supported-patterns.md +24 -3
  266. package/docs/testing.md +119 -31
  267. package/docs/troubleshooting.md +3 -1
  268. package/llms.txt +16 -8
  269. package/package.json +64 -23
  270. package/src/runtime/checkedGatewayHost.tpl.txt +157 -0
  271. package/src/runtime/clientStreamMethods.tpl.txt +156 -148
  272. package/src/runtime/operationsStreamHelper.tpl.txt +6 -6
  273. package/src/runtime/streamXml.ts +49 -21
  274. package/dist/app/generateApp.d.ts.map +0 -1
  275. package/dist/cli.d.ts.map +0 -1
  276. package/dist/client/checkedDirectRuntime.d.ts.map +0 -1
  277. package/dist/client/directClientRuntime.d.ts.map +0 -1
  278. package/dist/client/directClientVersion.d.ts.map +0 -1
  279. package/dist/client/generateClient.d.ts.map +0 -1
  280. package/dist/client/generateDirectClient.d.ts.map +0 -1
  281. package/dist/client/generateOperations.d.ts.map +0 -1
  282. package/dist/client/generateTypes.d.ts.map +0 -1
  283. package/dist/client/generateUtils.d.ts.map +0 -1
  284. package/dist/compiler/buildCanonicalGraph.d.ts.map +0 -1
  285. package/dist/compiler/canonicalGraph.d.ts.map +0 -1
  286. package/dist/compiler/catalogErrors.d.ts.map +0 -1
  287. package/dist/compiler/catalogProvenance.d.ts.map +0 -1
  288. package/dist/compiler/checkedAssessment.d.ts.map +0 -1
  289. package/dist/compiler/checkedSourcePreparation.d.ts.map +0 -1
  290. package/dist/compiler/complexTypeContent.d.ts.map +0 -1
  291. package/dist/compiler/composeCanonicalGraph.d.ts.map +0 -1
  292. package/dist/compiler/dataOwnership.d.ts.map +0 -1
  293. package/dist/compiler/datatypeValues.d.ts.map +0 -1
  294. package/dist/compiler/directCodec.d.ts.map +0 -1
  295. package/dist/compiler/directExecutionPolicy.d.ts.map +0 -1
  296. package/dist/compiler/directOperation.d.ts.map +0 -1
  297. package/dist/compiler/directSoap.d.ts.map +0 -1
  298. package/dist/compiler/directSoapSource.d.ts.map +0 -1
  299. package/dist/compiler/directSourceCapsule.d.ts.map +0 -1
  300. package/dist/compiler/directStructure.d.ts.map +0 -1
  301. package/dist/compiler/directStructurePlan.d.ts.map +0 -1
  302. package/dist/compiler/directValues.d.ts.map +0 -1
  303. package/dist/compiler/finiteRe01Verification.d.ts.map +0 -1
  304. package/dist/compiler/generateCatalog.d.ts.map +0 -1
  305. package/dist/compiler/graphTraversal.d.ts.map +0 -1
  306. package/dist/compiler/hypotheticalScopedIdentity.d.ts.map +0 -1
  307. package/dist/compiler/occurrenceAnalysis.d.ts.map +0 -1
  308. package/dist/compiler/originalSourceMembership.d.ts.map +0 -1
  309. package/dist/compiler/particleAttribution.d.ts.map +0 -1
  310. package/dist/compiler/particleDeclarationConsistency.d.ts.map +0 -1
  311. package/dist/compiler/particleExtension.d.ts.map +0 -1
  312. package/dist/compiler/particleLocalAssessment.d.ts.map +0 -1
  313. package/dist/compiler/particleRestriction.d.ts.map +0 -1
  314. package/dist/compiler/particleSemanticView.d.ts.map +0 -1
  315. package/dist/compiler/particleWildcardRelation.d.ts.map +0 -1
  316. package/dist/compiler/re01CandidateCorrespondence.d.ts.map +0 -1
  317. package/dist/compiler/re01TypeProperties.d.ts.map +0 -1
  318. package/dist/compiler/re01TypePropertyValidation.d.ts.map +0 -1
  319. package/dist/compiler/resolveCanonicalGraph.d.ts.map +0 -1
  320. package/dist/compiler/scalarSchemaAssessment.d.ts.map +0 -1
  321. package/dist/compiler/schemaAttributeGroupProperties.d.ts.map +0 -1
  322. package/dist/compiler/schemaAttributeProperties.d.ts.map +0 -1
  323. package/dist/compiler/schemaAttributeUses.d.ts.map +0 -1
  324. package/dist/compiler/schemaBinaryWordReconstruction.d.ts.map +0 -1
  325. package/dist/compiler/schemaBuiltinFacets.d.ts.map +0 -1
  326. package/dist/compiler/schemaCalendarImages.d.ts.map +0 -1
  327. package/dist/compiler/schemaCalendarLanguage.d.ts.map +0 -1
  328. package/dist/compiler/schemaCompiler.d.ts.map +0 -1
  329. package/dist/compiler/schemaComponentEquality.d.ts.map +0 -1
  330. package/dist/compiler/schemaConstructionAssessment.d.ts.map +0 -1
  331. package/dist/compiler/schemaDatatypeValues.d.ts.map +0 -1
  332. package/dist/compiler/schemaDecimalLanguage.d.ts.map +0 -1
  333. package/dist/compiler/schemaDeclarationPrimitives.d.ts.map +0 -1
  334. package/dist/compiler/schemaDocumentSyntax.d.ts.map +0 -1
  335. package/dist/compiler/schemaDurationLanguage.d.ts.map +0 -1
  336. package/dist/compiler/schemaElementProperties.d.ts.map +0 -1
  337. package/dist/compiler/schemaEndpointWordCapacity.d.ts.map +0 -1
  338. package/dist/compiler/schemaExactCalendar.d.ts.map +0 -1
  339. package/dist/compiler/schemaFacetAnnotation.d.ts.map +0 -1
  340. package/dist/compiler/schemaGeneratedScalarShape.d.ts.map +0 -1
  341. package/dist/compiler/schemaIdentityConstraints.d.ts.map +0 -1
  342. package/dist/compiler/schemaIeeeLanguage.d.ts.map +0 -1
  343. package/dist/compiler/schemaIntegerImages.d.ts.map +0 -1
  344. package/dist/compiler/schemaLexicalPredicates.d.ts.map +0 -1
  345. package/dist/compiler/schemaNotationProperties.d.ts.map +0 -1
  346. package/dist/compiler/schemaNumericImageConditions.d.ts.map +0 -1
  347. package/dist/compiler/schemaParticleWildcardProperties.d.ts.map +0 -1
  348. package/dist/compiler/schemaPattern.d.ts.map +0 -1
  349. package/dist/compiler/schemaRegularLanguage.d.ts.map +0 -1
  350. package/dist/compiler/schemaScalarContext.d.ts.map +0 -1
  351. package/dist/compiler/schemaScalarKernel.d.ts.map +0 -1
  352. package/dist/compiler/schemaScalarWitnesses.d.ts.map +0 -1
  353. package/dist/compiler/schemaSimpleTypeProperties.d.ts.map +0 -1
  354. package/dist/compiler/schemaSourceGrammar.d.ts.map +0 -1
  355. package/dist/compiler/schemaSourceLexical.d.ts.map +0 -1
  356. package/dist/compiler/schemaSourceValues.d.ts.map +0 -1
  357. package/dist/compiler/schemaSourceWildcards.d.ts.map +0 -1
  358. package/dist/compiler/schemaSymbolicSequences.d.ts.map +0 -1
  359. package/dist/compiler/schemaSymbolicValueSets.d.ts.map +0 -1
  360. package/dist/compiler/schemaSyntaxAssessment.d.ts.map +0 -1
  361. package/dist/compiler/schemaTemporalAliases.d.ts.map +0 -1
  362. package/dist/compiler/schemaTokenImages.d.ts.map +0 -1
  363. package/dist/compiler/schemaTypeIdentity.d.ts.map +0 -1
  364. package/dist/compiler/schemaTypeRelations.d.ts.map +0 -1
  365. package/dist/compiler/schemaUri.d.ts.map +0 -1
  366. package/dist/compiler/schemaValueContext.d.ts.map +0 -1
  367. package/dist/compiler/schemaValueImages.d.ts.map +0 -1
  368. package/dist/compiler/schemaValueSequences.d.ts.map +0 -1
  369. package/dist/compiler/semanticBudget.d.ts.map +0 -1
  370. package/dist/compiler/semanticCatalog.d.ts.map +0 -1
  371. package/dist/compiler/semanticContext.d.ts.map +0 -1
  372. package/dist/compiler/semanticTypeDependencies.d.ts.map +0 -1
  373. package/dist/compiler/semanticTypeReference.d.ts.map +0 -1
  374. package/dist/compiler/shapeResolver.d.ts.map +0 -1
  375. package/dist/compiler/sourceSchemaBinding.d.ts.map +0 -1
  376. package/dist/compiler/structuralCompanions.d.ts.map +0 -1
  377. package/dist/compiler/validateSemanticGraph.d.ts.map +0 -1
  378. package/dist/compiler/wildcardAlgebra.d.ts.map +0 -1
  379. package/dist/config.d.ts.map +0 -1
  380. package/dist/gateway/generateGateway.d.ts.map +0 -1
  381. package/dist/gateway/generators.d.ts.map +0 -1
  382. package/dist/gateway/helpers.d.ts.map +0 -1
  383. package/dist/generation/preamble.d.ts.map +0 -1
  384. package/dist/generation/writeGeneratedSource.d.ts.map +0 -1
  385. package/dist/index.d.ts.map +0 -1
  386. package/dist/loader/fetch.d.ts.map +0 -1
  387. package/dist/loader/orderedSyntax.d.ts.map +0 -1
  388. package/dist/loader/resolutionDepth.d.ts.map +0 -1
  389. package/dist/loader/schemaInput.d.ts.map +0 -1
  390. package/dist/loader/schemaResources.d.ts.map +0 -1
  391. package/dist/loader/wsdlLoader.d.ts.map +0 -1
  392. package/dist/openapi/casing.d.ts.map +0 -1
  393. package/dist/openapi/generateOpenAPI.d.ts.map +0 -1
  394. package/dist/openapi/generatePaths.d.ts.map +0 -1
  395. package/dist/openapi/generateSchemas.d.ts.map +0 -1
  396. package/dist/openapi/security.d.ts.map +0 -1
  397. package/dist/pipeline.d.ts.map +0 -1
  398. package/dist/runtime/jsonArray.d.ts +0 -24
  399. package/dist/runtime/jsonArray.d.ts.map +0 -1
  400. package/dist/runtime/jsonArray.js +0 -52
  401. package/dist/runtime/ndjson.d.ts +0 -24
  402. package/dist/runtime/ndjson.d.ts.map +0 -1
  403. package/dist/runtime/ndjson.js +0 -30
  404. package/dist/runtime/streamXml.d.ts +0 -45
  405. package/dist/runtime/streamXml.d.ts.map +0 -1
  406. package/dist/runtime/streamXml.js +0 -212
  407. package/dist/test/generateTests.d.ts.map +0 -1
  408. package/dist/test/generators.d.ts.map +0 -1
  409. package/dist/test/mockData.d.ts.map +0 -1
  410. package/dist/util/attributeWildcards.d.ts.map +0 -1
  411. package/dist/util/builder.d.ts.map +0 -1
  412. package/dist/util/catalogMeta.d.ts.map +0 -1
  413. package/dist/util/cli.d.ts.map +0 -1
  414. package/dist/util/errors.d.ts.map +0 -1
  415. package/dist/util/imports.d.ts.map +0 -1
  416. package/dist/util/runtimeSource.d.ts.map +0 -1
  417. package/dist/util/securityConfig.d.ts.map +0 -1
  418. package/dist/util/streamConfig.d.ts.map +0 -1
  419. package/dist/util/tools.d.ts.map +0 -1
  420. package/dist/util/xmlWhitespace.d.ts.map +0 -1
  421. package/dist/xsd/primitives.d.ts.map +0 -1
  422. package/docs/AGENTS.md +0 -47
  423. package/docs/README.md +0 -69
  424. package/docs/architecture.md +0 -158
  425. package/docs/content-model-analysis.md +0 -92
  426. package/docs/content-model-baseline.md +0 -121
  427. package/docs/content-model-catalog.md +0 -116
  428. package/docs/content-model-companions.md +0 -90
  429. package/docs/content-model-composition.md +0 -103
  430. package/docs/content-model-decisions.md +0 -79
  431. package/docs/content-model-gateway-feasibility.md +0 -169
  432. package/docs/content-model-graph.md +0 -121
  433. package/docs/content-model-loading.md +0 -163
  434. package/docs/content-model-matching.md +0 -85
  435. package/docs/content-model-readiness.md +0 -144
  436. package/docs/content-model-resolution.md +0 -81
  437. package/docs/content-model-s02-handoff.md +0 -98
  438. package/docs/content-model-s06-au-01.md +0 -425
  439. package/docs/content-model-s06-dt-01.md +0 -386
  440. package/docs/content-model-s06-pw-01.md +0 -350
  441. package/docs/content-model-s06-re-01-resolver-implementation.md +0 -869
  442. package/docs/content-model-s06-re-01-resolver.md +0 -513
  443. package/docs/content-model-s06-re-01-scalar-witnesses.md +0 -1423
  444. package/docs/content-model-s06-re-01-support-reconstruction.md +0 -6337
  445. package/docs/content-model-s06-re-01.md +0 -7477
  446. package/docs/content-model-s06-research-handoff.md +0 -909
  447. package/docs/content-model-shipped-fix.md +0 -83
  448. package/docs/content-model-soap-feasibility.md +0 -165
  449. package/docs/decisions/001-test-generation.md +0 -36
  450. package/docs/decisions/002-streamable-responses.md +0 -332
  451. package/docs/decisions/003-content-model-contracts.md +0 -280
  452. package/docs/file-naming-and-path-organization.md +0 -213
  453. package/docs/reference-validation.md +0 -243
  454. package/docs/releases/README.md +0 -94
  455. package/docs/releases/v0.20.0.md +0 -22
  456. package/docs/releases/v0.21.0.md +0 -30
  457. package/docs/releases/v0.22.0.md +0 -30
  458. package/docs/releases/v0.23.0.md +0 -31
  459. package/docs/releases/v0.24.0.md +0 -38
  460. package/docs/releases/v0.25.0.md +0 -31
  461. package/docs/releases/v0.25.2.md +0 -32
  462. package/docs/releases/v0.26.0.md +0 -32
  463. package/docs/releases/v0.27.0.md +0 -31
  464. package/docs/releases/v0.28.0.md +0 -32
  465. package/docs/releases/v0.29.0.md +0 -32
  466. package/docs/releases/v0.30.0.md +0 -30
  467. package/docs/releases/v0.30.1.md +0 -31
  468. package/docs/releases/v0.30.2.md +0 -30
  469. package/docs/releases/v0.30.3.md +0 -33
  470. package/docs/releases/v0.31.0.md +0 -33
  471. package/docs/releases/v0.32.0.md +0 -33
  472. package/docs/releases/v0.33.0.md +0 -34
  473. package/docs/releases/v0.34.0.md +0 -30
  474. package/docs/releases/v0.35.0.md +0 -33
  475. package/docs/releases/v0.36.0.md +0 -32
  476. package/docs/releases/v0.37.0.md +0 -33
  477. package/docs/releases/v0.38.0.md +0 -35
  478. package/docs/releases/v0.39.0.md +0 -35
  479. package/docs/releases/v0.40.0.md +0 -45
  480. package/docs/releases/v0.40.1.md +0 -34
  481. package/docs/releases/v1.0.0.md +0 -42
  482. package/docs/releases/v1.0.1.md +0 -38
  483. package/docs/releases/v1.0.2.md +0 -51
  484. package/docs/releases/v1.0.3.md +0 -37
  485. package/docs/releases/v1.0.4.md +0 -45
  486. package/docs/releases/v1.0.5.md +0 -41
  487. package/docs/releases/v1.0.6.md +0 -35
  488. package/docs/releases/v1.0.7.md +0 -36
  489. package/docs/releases/v1.1.0.md +0 -42
  490. package/docs/releases/v1.1.1.md +0 -44
  491. package/docs/releases/v1.1.2.md +0 -42
  492. package/docs/releases/v1.1.3.md +0 -36
  493. package/docs/releases/v1.1.4.md +0 -36
  494. package/docs/releases/v1.1.5.md +0 -38
  495. package/docs/roadmap/README.md +0 -107
  496. package/docs/roadmap/v1.0-capability-conformance-framework.md +0 -582
  497. package/docs/roadmap/v1.0-choice-union-mode.md +0 -90
  498. package/docs/roadmap/v1.0-contract-audit.md +0 -75
  499. package/docs/roadmap/v1.0-json-array-streaming.md +0 -101
  500. package/docs/roadmap/v1.0-openapi-fastify-compatibility.md +0 -99
  501. package/docs/roadmap/v1.0-release-candidate-gates.md +0 -92
  502. package/docs/roadmap/v1.0-wsdl-coverage-matrix.md +0 -200
  503. package/docs/roadmap/v1.0-xs-anyattribute-wildcard-bag.md +0 -932
  504. package/src/runtime/jsonArray.ts +0 -55
  505. 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
@@ -66,6 +66,18 @@ export function generateClient(outFile, compiled) {
66
66
  const soapOptions = soapImport("IOptions");
67
67
  const soapSecurity = soapImport("ISecurity");
68
68
  const soapFactory = soapImport("createClientAsync");
69
+ const soapHttpClient = soapImport("HttpClient");
70
+ const soapExOptions = soapImport("IExOptions");
71
+ const aliases = new Map(compiled.aliases.map(alias => [alias.name, alias.tsType]));
72
+ const scalarTypes = Object.fromEntries(compiled.aliases.flatMap(alias => {
73
+ let type = alias.tsType;
74
+ const visited = new Set([alias.name]);
75
+ while (aliases.has(type) && !visited.has(type)) {
76
+ visited.add(type);
77
+ type = aliases.get(type);
78
+ }
79
+ return ["string", "number", "boolean", "bigint"].includes(type) || type.endsWith("[]") ? [[alias.name, type]] : [];
80
+ }));
69
81
  // Track whether any operation opts into streaming, so we can emit the
70
82
  // supporting runtime helpers only when they're actually used.
71
83
  let anyStream = false;
@@ -97,12 +109,14 @@ export function generateClient(outFile, compiled) {
97
109
  * Streams records from the ${m} operation of the ${clientName}.${opDocStr}${secHintsStr}
98
110
  *
99
111
  * @param args - The request arguments for the ${m} operation.
112
+ * @param options - Optional cancellation signal and total stream deadline in milliseconds.
100
113
  * @returns A promise resolving to a streaming response whose \`records\` is an
101
114
  * async iterable of ${recordTs} objects parsed from the SOAP body as
102
115
  * chunks arrive. Iteration pulls bytes on demand.
103
116
  */
104
117
  async ${m}<HeadersType = Record<string, string>>(
105
- args: ${inTs}
118
+ args: ${inTs},
119
+ options?: StreamCallOptions
106
120
  ): Promise<StreamOperationResponse<T.${recordTs}, HeadersType>> {
107
121
  return this.callStream<${inTs}, T.${recordTs}, HeadersType>(
108
122
  args,
@@ -112,7 +126,8 @@ export function generateClient(outFile, compiled) {
112
126
  ${JSON.stringify(inputElementLocal)},
113
127
  ${JSON.stringify(inputElementNs)},
114
128
  ${JSON.stringify(op.soapAction ?? "")},
115
- ${JSON.stringify(op.stream.recordPath)}
129
+ ${JSON.stringify(op.stream.recordPath)},
130
+ options
116
131
  );
117
132
  }`;
118
133
  methods.push(methodTemplate);
@@ -144,7 +159,11 @@ export function generateClient(outFile, compiled) {
144
159
  // inside this template literal (which would flag `this`, `await`, `yield`
145
160
  // outside-of-function false positives).
146
161
  const streamMethodsBlock = anyStream
147
- ? "\n" + loadRuntimeSource("clientStreamMethods.tpl.txt").replace("__SOAP_CLIENT_TYPE__", soapClient.local)
162
+ ? "\n" + loadRuntimeSource("clientStreamMethods.tpl.txt")
163
+ .replaceAll("__SOAP_CLIENT_TYPE__", soapClient.local)
164
+ .replaceAll("__SOAP_HTTP_CLIENT__", soapHttpClient.local)
165
+ .replaceAll("__SOAP_EX_OPTIONS__", soapExOptions.local)
166
+ .replaceAll("__SOAP_SECURITY__", soapSecurity.local)
148
167
  : "";
149
168
  // noinspection JSFileReferences,JSUnresolvedReference,CommaExpressionJS,JSDuplicatedDeclaration,ReservedWordAsName,JSCommentMatchesSignature,JSValidateTypes,JSIgnoredPromiseFromCall,BadExpressionStatementJS,ES6UnusedImports,JSUnnecessarySemicolon,UnreachableCodeJS,JSUnusedLocalSymbols
150
169
  const classTemplate = `// noinspection JSAnnotator
@@ -153,13 +172,14 @@ export function generateClient(outFile, compiled) {
153
172
  * Generated ${clientName} client class.
154
173
  * This class wraps the node-soap client and provides strongly-typed methods for each operation.
155
174
  */
156
- import {${soapFactory.specifier}} from "soap";
157
- import type {${soapClient.specifier}, ${soapOptions.specifier}, ${soapSecurity.specifier}} from "soap";
175
+ import {${soapFactory.specifier}${anyStream ? `, ${soapHttpClient.specifier}` : ""}} from "soap";
176
+ import type {${soapClient.specifier}, ${soapOptions.specifier}, ${soapSecurity.specifier}${anyStream ? `, ${soapExOptions.specifier}` : ""}} from "soap";
158
177
  import type * as T from "./types${suffix}";
159
178
  import type {${clientName}DataTypes} from "./utils${suffix}";
160
179
  import {${clientConstant}_DATA_TYPES} from "./utils${suffix}";${anyStream ? `
161
180
  import {parseRecords, type RecordParseSpec} from "./streamXml${suffix}";
162
- import type {StreamOperationResponse} from "./operations${suffix}";` : ""}
181
+ import type {StreamOperationResponse, StreamCallOptions} from "./operations${suffix}";
182
+ export type {StreamCallOptions} from "./operations${suffix}";` : ""}
163
183
 
164
184
  /**
165
185
  * Represents the response structure for ${clientName} operations.
@@ -214,6 +234,8 @@ export class ${clientName} {
214
234
  protected attributesKeyOut: string;
215
235
  protected client?: ${soapClient.local};
216
236
  protected dataTypes: ${clientName}DataTypes = ${clientConstant}_DATA_TYPES;
237
+ protected scalarTypes: Readonly<Record<string, string>> = ${JSON.stringify(scalarTypes)};
238
+ ${anyStream ? ` protected streamRequestOptions: ${soapExOptions.local};\n` : ""}
217
239
 
218
240
  /**
219
241
  * Creates a new ${clientName} instance.
@@ -224,17 +246,20 @@ export class ${clientName} {
224
246
  * @param [options.security] - Optional SOAP security settings to apply.
225
247
  * @param [options.attributesKeyIn] - Key name for input attribute bags (default: "$attributes").
226
248
  * @param [options.attributesKeyOut] - Key name for output attribute bags (default: "attributes").
227
- */
249
+ ${anyStream ? ` * @param [options.streamRequestOptions] - Stream HTTP options such as verified HTTPS agents, separate from WSDL options.\n` : ""} */
228
250
  constructor(options: {
229
251
  source: string,
230
252
  options?: ${soapOptions.local},
231
253
  security?: ${soapSecurity.local},
232
254
  attributesKeyIn?: string,
233
- attributesKeyOut?: string
255
+ attributesKeyOut?: string${anyStream ? `,
256
+ /** HTTP request options for stream calls, including HTTPS agents and timeouts; WSDL options stay separate. */
257
+ streamRequestOptions?: ${soapExOptions.local}` : ""}
234
258
  }) {
235
259
  this.source = options.source;
236
260
  this.attributesKeyIn = options.attributesKeyIn ?? "$attributes";
237
261
  this.attributesKeyOut = options.attributesKeyOut ?? "attributes";
262
+ ${anyStream ? ` this.streamRequestOptions = options.streamRequestOptions ?? {};\n` : ""}
238
263
  if (options.options) {
239
264
  this.options = options.options;
240
265
  }
@@ -298,14 +323,18 @@ ${methodsBody}
298
323
  if (err) {
299
324
  reject(err);
300
325
  } 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
- });
326
+ // @why Response conversion failures must reject the call rather than escape the asynchronous SOAP callback.
327
+ try {
328
+ const response = this.fromSoapResult(result, responseType);
329
+ resolve({
330
+ response,
331
+ headers: soapHeader || {},
332
+ responseRaw: rawResponse,
333
+ requestRaw: rawRequest
334
+ });
335
+ } catch (error) {
336
+ reject(error);
337
+ }
309
338
  }
310
339
  });
311
340
  });
@@ -398,16 +427,54 @@ ${methodsBody}
398
427
  *
399
428
  * @param node - The raw SOAP response node.
400
429
  * @param typeName - Optional metadata key to guide deserialization.
430
+ * @param nonNillable - Whether parent schema metadata rules out a nil child, permitting empty-object recovery.
401
431
  * @returns The deserialized object matching your DTO shape.
432
+ * @throws TypeError for invalid boolean, numeric, or bigint lexical values.
402
433
  */
403
- protected fromSoapResult(node: any, typeName?: string): any {
404
- // Pass through null/undefined unchanged
434
+ protected fromSoapResult(node: any, typeName?: string, nonNillable = false): any {
435
+ // @why node-soap collapses empty complex elements to null; only a declared non-nillable child permits recovering its object DTO.
436
+ // @constraints Nullable children and unknown/custom metadata retain null, including explicit xsi:nil responses.
437
+ if (node === null && nonNillable && typeName && Object.hasOwn(this.dataTypes.Attributes, typeName)
438
+ && Object.keys(this.dataTypes.ChildrenTypes[typeName] ?? {}).length === 0) return {};
405
439
  if (node == null) {
406
440
  return node;
407
441
  }
408
- // Pass through primitives unchanged
442
+ if (typeName && Object.hasOwn(this.scalarTypes, typeName)) typeName = this.scalarTypes[typeName];
443
+ if (typeName?.endsWith("[]")) {
444
+ let itemType = typeName.slice(0, -2);
445
+ if (itemType.startsWith("(") && itemType.endsWith(")")) itemType = itemType.slice(1, -1);
446
+ if (typeof node === "string") {
447
+ const lexical = node.replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g, "");
448
+ return lexical === "" ? [] : lexical.split(/[\\t\\r\\n ]+/).map(item => this.fromSoapResult(item, itemType));
449
+ }
450
+ if (Array.isArray(node)) return node.map(item => this.fromSoapResult(item, itemType));
451
+ }
452
+ const childrenTypes: Readonly<Record<string, string>> = (typeName && this.dataTypes?.ChildrenTypes?.[typeName]) || {};
453
+ const attributeTypes: Readonly<Record<string, string>> = (typeName && this.dataTypes?.AttributeTypes?.[typeName]) || {};
454
+ // XML boolean attributes arrive as lexical strings even when element booleans are parsed by node-soap.
455
+ if (typeof node === "string" && typeName === "boolean") {
456
+ const lexical = node.replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g, "");
457
+ if (lexical === "true" || lexical === "1") return true;
458
+ if (lexical === "false" || lexical === "0") return false;
459
+ throw new TypeError("Invalid XML boolean response value");
460
+ }
461
+ if (typeof node === "string" && (typeName === "number" || typeName === "bigint")) {
462
+ const lexical = node.replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g, "");
463
+ if (typeName === "bigint") {
464
+ if (!/^[+-]?\\d+$/.test(lexical)) throw new TypeError("Invalid XML bigint response value");
465
+ return BigInt(lexical);
466
+ }
467
+ if (!/^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/.test(lexical)) {
468
+ throw new TypeError("Invalid XML numeric response value");
469
+ }
470
+ const number = Number(lexical);
471
+ if (!Number.isFinite(number)) throw new TypeError("Non-finite XML numeric response value");
472
+ return number;
473
+ }
474
+ // A simple-content complex type retains its object shape when no attributes are present on the wire.
409
475
  if (typeof node !== "object") {
410
- return node;
476
+ if (node === "" && typeName && Object.hasOwn(this.dataTypes.Attributes, typeName) && Object.keys(childrenTypes).length === 0) return {};
477
+ return childrenTypes.$value ? {$value: this.fromSoapResult(node, childrenTypes.$value)} : node;
411
478
  }
412
479
  // Recursively process array elements
413
480
  if (Array.isArray(node)) {
@@ -415,13 +482,13 @@ ${methodsBody}
415
482
  }
416
483
 
417
484
  // Get child type mapping for recursive processing with correct types
418
- const childrenTypes: Readonly<Record<string, string>> = (typeName && this.dataTypes?.ChildrenTypes?.[typeName]) || {};
419
485
  const repeatedElements: readonly string[] = (typeName && this.dataTypes?.RepeatedElements?.[typeName]) || [];
486
+ const nonNillableElements: readonly string[] = (typeName && this.dataTypes?.NonNillableElements?.[typeName]) || [];
420
487
  const result: any = {};
421
488
 
422
489
  // Preserve text content for mixed XML elements
423
- if ("$value" in node) {
424
- result.$value = (node as any).$value;
490
+ if ("$value" in node && (childrenTypes.$value || node.$value !== "")) {
491
+ result.$value = this.fromSoapResult(node.$value, childrenTypes.$value);
425
492
  }
426
493
 
427
494
  // Extract attributes from various node-soap attribute containers
@@ -429,7 +496,9 @@ ${methodsBody}
429
496
  const inAttrNode = (node as any)[this.attributesKeyOut] || (node as any)["attributes"] || (node as any)["$"];
430
497
  if (inAttrNode && typeof inAttrNode === "object") {
431
498
  // Promote all attributes to top-level properties for easier TS access
432
- Object.assign(result, inAttrNode);
499
+ for (const [name, value] of Object.entries(inAttrNode)) {
500
+ result[name] = this.fromSoapResult(value, attributeTypes[name]);
501
+ }
433
502
  }
434
503
 
435
504
  // Process remaining properties as child elements
@@ -441,10 +510,11 @@ ${methodsBody}
441
510
  // Recursively convert child elements with their specific type info
442
511
  const childType: string | undefined = childrenTypes[k];
443
512
  // node-soap can return a scalar when repetition is declared on a wrapping sequence (#141).
444
- const value = v != null && !Array.isArray(v) && repeatedElements.includes(k) ? [v] : v;
445
- result[k] = Array.isArray(value)
446
- ? value.map(node => this.fromSoapResult(node, childType))
447
- : this.fromSoapResult(value, childType);
513
+ const repeated = repeatedElements.includes(k);
514
+ const value = v != null && !Array.isArray(v) && repeated ? [v] : v;
515
+ result[k] = repeated && Array.isArray(value)
516
+ ? value.map(node => this.fromSoapResult(node, childType, nonNillableElements.includes(k)))
517
+ : this.fromSoapResult(value, childType, nonNillableElements.includes(k));
448
518
  }
449
519
 
450
520
  return result;
@@ -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>>>;