@techspokes/typescript-wsdl-client 1.1.4 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. package/README.md +81 -35
  2. package/dist/app/generateApp.d.ts +0 -1
  3. package/dist/app/generateApp.js +8 -6
  4. package/dist/app/generateCheckedApp.d.ts +38 -0
  5. package/dist/app/generateCheckedApp.js +108 -0
  6. package/dist/checkedPipeline.d.ts +155 -0
  7. package/dist/checkedPipeline.js +448 -0
  8. package/dist/checkedPlanning.d.ts +123 -0
  9. package/dist/checkedPlanning.js +245 -0
  10. package/dist/cli.d.ts +0 -1
  11. package/dist/cli.js +123 -5
  12. package/dist/client/checkedDirectRuntime.d.ts +96 -0
  13. package/dist/client/checkedDirectRuntime.js +43 -0
  14. package/dist/client/directClientRuntime.d.ts +74 -0
  15. package/dist/client/directClientRuntime.js +165 -0
  16. package/dist/client/directClientVersion.d.ts +6 -0
  17. package/dist/client/directClientVersion.js +6 -0
  18. package/dist/client/generateClient.d.ts +0 -1
  19. package/dist/client/generateClient.js +26 -12
  20. package/dist/client/generateDirectClient.d.ts +32 -0
  21. package/dist/client/generateDirectClient.js +268 -0
  22. package/dist/client/generateOperations.d.ts +0 -1
  23. package/dist/client/generateTypes.d.ts +0 -1
  24. package/dist/client/generateUtils.d.ts +0 -1
  25. package/dist/client/generateUtils.js +3 -1
  26. package/dist/compiler/applicationGroups.d.ts +53 -0
  27. package/dist/compiler/applicationGroups.js +403 -0
  28. package/dist/compiler/buildCanonicalGraph.d.ts +6 -0
  29. package/dist/compiler/buildCanonicalGraph.js +381 -0
  30. package/dist/compiler/canonicalGraph.d.ts +197 -0
  31. package/dist/compiler/canonicalGraph.js +37 -0
  32. package/dist/compiler/catalogErrors.d.ts +17 -0
  33. package/dist/compiler/catalogErrors.js +86 -0
  34. package/dist/compiler/catalogProvenance.d.ts +14 -0
  35. package/dist/compiler/catalogProvenance.js +229 -0
  36. package/dist/compiler/checkedAssessment.d.ts +90 -0
  37. package/dist/compiler/checkedAssessment.js +300 -0
  38. package/dist/compiler/checkedComponentSource.d.ts +16 -0
  39. package/dist/compiler/checkedComponentSource.js +31 -0
  40. package/dist/compiler/checkedSourcePreparation.d.ts +72 -0
  41. package/dist/compiler/checkedSourcePreparation.js +202 -0
  42. package/dist/compiler/complexTypeContent.d.ts +58 -0
  43. package/dist/compiler/complexTypeContent.js +558 -0
  44. package/dist/compiler/componentCorrespondence.d.ts +32 -0
  45. package/dist/compiler/componentCorrespondence.js +140 -0
  46. package/dist/compiler/componentRecordProjection.d.ts +109 -0
  47. package/dist/compiler/componentRecordProjection.js +319 -0
  48. package/dist/compiler/componentSoapPreparation.d.ts +20 -0
  49. package/dist/compiler/componentSoapPreparation.js +36 -0
  50. package/dist/compiler/composeCanonicalGraph.d.ts +68 -0
  51. package/dist/compiler/composeCanonicalGraph.js +252 -0
  52. package/dist/compiler/dataOwnership.d.ts +21 -0
  53. package/dist/compiler/dataOwnership.js +167 -0
  54. package/dist/compiler/datatypeValues.d.ts +46 -0
  55. package/dist/compiler/datatypeValues.js +275 -0
  56. package/dist/compiler/directCodec.d.ts +116 -0
  57. package/dist/compiler/directCodec.js +377 -0
  58. package/dist/compiler/directExecutionPolicy.d.ts +9 -0
  59. package/dist/compiler/directExecutionPolicy.js +17 -0
  60. package/dist/compiler/directOperation.d.ts +114 -0
  61. package/dist/compiler/directOperation.js +373 -0
  62. package/dist/compiler/directSoap.d.ts +66 -0
  63. package/dist/compiler/directSoap.js +391 -0
  64. package/dist/compiler/directSoapSource.d.ts +38 -0
  65. package/dist/compiler/directSoapSource.js +233 -0
  66. package/dist/compiler/directSourceCapsule.d.ts +169 -0
  67. package/dist/compiler/directSourceCapsule.js +727 -0
  68. package/dist/compiler/directStructure.d.ts +128 -0
  69. package/dist/compiler/directStructure.js +543 -0
  70. package/dist/compiler/directStructurePlan.d.ts +149 -0
  71. package/dist/compiler/directStructurePlan.js +623 -0
  72. package/dist/compiler/directValues.d.ts +128 -0
  73. package/dist/compiler/directValues.js +1116 -0
  74. package/dist/compiler/finiteRe01Construction.d.ts +69 -0
  75. package/dist/compiler/finiteRe01Construction.js +422 -0
  76. package/dist/compiler/finiteRe01Verification.d.ts +218 -0
  77. package/dist/compiler/finiteRe01Verification.js +1217 -0
  78. package/dist/compiler/generateCatalog.d.ts +0 -1
  79. package/dist/compiler/graphTraversal.d.ts +10 -0
  80. package/dist/compiler/graphTraversal.js +37 -0
  81. package/dist/compiler/hypotheticalScopedIdentity.d.ts +22 -0
  82. package/dist/compiler/hypotheticalScopedIdentity.js +81 -0
  83. package/dist/compiler/occurrenceAnalysis.d.ts +66 -0
  84. package/dist/compiler/occurrenceAnalysis.js +316 -0
  85. package/dist/compiler/originalSourceMembership.d.ts +5 -0
  86. package/dist/compiler/originalSourceMembership.js +31 -0
  87. package/dist/compiler/particleAttribution.d.ts +16 -0
  88. package/dist/compiler/particleAttribution.js +494 -0
  89. package/dist/compiler/particleDeclarationConsistency.d.ts +23 -0
  90. package/dist/compiler/particleDeclarationConsistency.js +206 -0
  91. package/dist/compiler/particleExtension.d.ts +21 -0
  92. package/dist/compiler/particleExtension.js +123 -0
  93. package/dist/compiler/particleLocalAssessment.d.ts +19 -0
  94. package/dist/compiler/particleLocalAssessment.js +92 -0
  95. package/dist/compiler/particleRestriction.d.ts +23 -0
  96. package/dist/compiler/particleRestriction.js +494 -0
  97. package/dist/compiler/particleSemanticView.d.ts +51 -0
  98. package/dist/compiler/particleSemanticView.js +310 -0
  99. package/dist/compiler/particleWildcardRelation.d.ts +87 -0
  100. package/dist/compiler/particleWildcardRelation.js +143 -0
  101. package/dist/compiler/projectionScalar.d.ts +32 -0
  102. package/dist/compiler/projectionScalar.js +184 -0
  103. package/dist/compiler/re01CandidateAssignments.d.ts +95 -0
  104. package/dist/compiler/re01CandidateAssignments.js +341 -0
  105. package/dist/compiler/re01CandidateCorrespondence.d.ts +85 -0
  106. package/dist/compiler/re01CandidateCorrespondence.js +701 -0
  107. package/dist/compiler/re01TypeProperties.d.ts +70 -0
  108. package/dist/compiler/re01TypeProperties.js +120 -0
  109. package/dist/compiler/re01TypePropertyValidation.d.ts +22 -0
  110. package/dist/compiler/re01TypePropertyValidation.js +161 -0
  111. package/dist/compiler/resolveCanonicalGraph.d.ts +41 -0
  112. package/dist/compiler/resolveCanonicalGraph.js +240 -0
  113. package/dist/compiler/scalarSchemaAssessment.d.ts +424 -0
  114. package/dist/compiler/scalarSchemaAssessment.js +5198 -0
  115. package/dist/compiler/schemaAttributeGroupProperties.d.ts +16 -0
  116. package/dist/compiler/schemaAttributeGroupProperties.js +53 -0
  117. package/dist/compiler/schemaAttributeProperties.d.ts +9 -0
  118. package/dist/compiler/schemaAttributeProperties.js +11 -0
  119. package/dist/compiler/schemaAttributeUses.d.ts +110 -0
  120. package/dist/compiler/schemaAttributeUses.js +798 -0
  121. package/dist/compiler/schemaBinaryWordReconstruction.d.ts +9 -0
  122. package/dist/compiler/schemaBinaryWordReconstruction.js +33 -0
  123. package/dist/compiler/schemaBuiltinFacets.d.ts +13 -0
  124. package/dist/compiler/schemaBuiltinFacets.js +51 -0
  125. package/dist/compiler/schemaCalendarImages.d.ts +7 -0
  126. package/dist/compiler/schemaCalendarImages.js +204 -0
  127. package/dist/compiler/schemaCalendarLanguage.d.ts +10 -0
  128. package/dist/compiler/schemaCalendarLanguage.js +227 -0
  129. package/dist/compiler/schemaCompiler.d.ts +0 -1
  130. package/dist/compiler/schemaComponentEquality.d.ts +27 -0
  131. package/dist/compiler/schemaComponentEquality.js +446 -0
  132. package/dist/compiler/schemaConstructionAssessment.d.ts +79 -0
  133. package/dist/compiler/schemaConstructionAssessment.js +745 -0
  134. package/dist/compiler/schemaDatatypeValues.d.ts +3 -0
  135. package/dist/compiler/schemaDatatypeValues.js +2 -0
  136. package/dist/compiler/schemaDecimalLanguage.d.ts +6 -0
  137. package/dist/compiler/schemaDecimalLanguage.js +102 -0
  138. package/dist/compiler/schemaDeclarationPrimitives.d.ts +39 -0
  139. package/dist/compiler/schemaDeclarationPrimitives.js +211 -0
  140. package/dist/compiler/schemaDocumentSyntax.d.ts +54 -0
  141. package/dist/compiler/schemaDocumentSyntax.js +294 -0
  142. package/dist/compiler/schemaDurationLanguage.d.ts +10 -0
  143. package/dist/compiler/schemaDurationLanguage.js +170 -0
  144. package/dist/compiler/schemaElementInstance.d.ts +30 -0
  145. package/dist/compiler/schemaElementInstance.js +45 -0
  146. package/dist/compiler/schemaElementProperties.d.ts +15 -0
  147. package/dist/compiler/schemaElementProperties.js +23 -0
  148. package/dist/compiler/schemaEndpointWordCapacity.d.ts +35 -0
  149. package/dist/compiler/schemaEndpointWordCapacity.js +39 -0
  150. package/dist/compiler/schemaExactCalendar.d.ts +72 -0
  151. package/dist/compiler/schemaExactCalendar.js +264 -0
  152. package/dist/compiler/schemaFacetAnnotation.d.ts +31 -0
  153. package/dist/compiler/schemaFacetAnnotation.js +199 -0
  154. package/dist/compiler/schemaGeneratedScalarShape.d.ts +34 -0
  155. package/dist/compiler/schemaGeneratedScalarShape.js +178 -0
  156. package/dist/compiler/schemaIdentityConstraints.d.ts +72 -0
  157. package/dist/compiler/schemaIdentityConstraints.js +362 -0
  158. package/dist/compiler/schemaIeeeLanguage.d.ts +42 -0
  159. package/dist/compiler/schemaIeeeLanguage.js +759 -0
  160. package/dist/compiler/schemaIntegerImages.d.ts +10 -0
  161. package/dist/compiler/schemaIntegerImages.js +113 -0
  162. package/dist/compiler/schemaLexicalPredicates.d.ts +28 -0
  163. package/dist/compiler/schemaLexicalPredicates.js +63 -0
  164. package/dist/compiler/schemaNotationProperties.d.ts +31 -0
  165. package/dist/compiler/schemaNotationProperties.js +84 -0
  166. package/dist/compiler/schemaNumericImageConditions.d.ts +23 -0
  167. package/dist/compiler/schemaNumericImageConditions.js +66 -0
  168. package/dist/compiler/schemaParticleWildcardProperties.d.ts +19 -0
  169. package/dist/compiler/schemaParticleWildcardProperties.js +43 -0
  170. package/dist/compiler/schemaPattern.d.ts +1061 -0
  171. package/dist/compiler/schemaPattern.js +581 -0
  172. package/dist/compiler/schemaRegularLanguage.d.ts +66 -0
  173. package/dist/compiler/schemaRegularLanguage.js +1166 -0
  174. package/dist/compiler/schemaScalarContext.d.ts +85 -0
  175. package/dist/compiler/schemaScalarContext.js +78 -0
  176. package/dist/compiler/schemaScalarKernel.d.ts +181 -0
  177. package/dist/compiler/schemaScalarKernel.js +391 -0
  178. package/dist/compiler/schemaScalarWitnesses.d.ts +5 -0
  179. package/dist/compiler/schemaScalarWitnesses.js +118 -0
  180. package/dist/compiler/schemaSimpleTypeProperties.d.ts +94 -0
  181. package/dist/compiler/schemaSimpleTypeProperties.js +103 -0
  182. package/dist/compiler/schemaSourceGrammar.d.ts +26 -0
  183. package/dist/compiler/schemaSourceGrammar.js +290 -0
  184. package/dist/compiler/schemaSourceLexical.d.ts +3 -0
  185. package/dist/compiler/schemaSourceLexical.js +12 -0
  186. package/dist/compiler/schemaSourceValues.d.ts +50 -0
  187. package/dist/compiler/schemaSourceValues.js +225 -0
  188. package/dist/compiler/schemaSourceWildcards.d.ts +27 -0
  189. package/dist/compiler/schemaSourceWildcards.js +249 -0
  190. package/dist/compiler/schemaSymbolicSequences.d.ts +15 -0
  191. package/dist/compiler/schemaSymbolicSequences.js +99 -0
  192. package/dist/compiler/schemaSymbolicValueSets.d.ts +31 -0
  193. package/dist/compiler/schemaSymbolicValueSets.js +149 -0
  194. package/dist/compiler/schemaSyntaxAssessment.d.ts +24 -0
  195. package/dist/compiler/schemaSyntaxAssessment.js +361 -0
  196. package/dist/compiler/schemaTemporalAliases.d.ts +5 -0
  197. package/dist/compiler/schemaTemporalAliases.js +195 -0
  198. package/dist/compiler/schemaTokenImages.d.ts +8 -0
  199. package/dist/compiler/schemaTokenImages.js +142 -0
  200. package/dist/compiler/schemaTypeIdentity.d.ts +38 -0
  201. package/dist/compiler/schemaTypeIdentity.js +80 -0
  202. package/dist/compiler/schemaTypeRelations.d.ts +37 -0
  203. package/dist/compiler/schemaTypeRelations.js +576 -0
  204. package/dist/compiler/schemaUri.d.ts +12 -0
  205. package/dist/compiler/schemaUri.js +103 -0
  206. package/dist/compiler/schemaValueContext.d.ts +25 -0
  207. package/dist/compiler/schemaValueContext.js +1 -0
  208. package/dist/compiler/schemaValueImages.d.ts +9 -0
  209. package/dist/compiler/schemaValueImages.js +142 -0
  210. package/dist/compiler/schemaValueSequences.d.ts +14 -0
  211. package/dist/compiler/schemaValueSequences.js +19 -0
  212. package/dist/compiler/semanticBudget.d.ts +67 -0
  213. package/dist/compiler/semanticBudget.js +193 -0
  214. package/dist/compiler/semanticCatalog.d.ts +121 -0
  215. package/dist/compiler/semanticCatalog.js +160 -0
  216. package/dist/compiler/semanticContext.d.ts +183 -0
  217. package/dist/compiler/semanticContext.js +1207 -0
  218. package/dist/compiler/semanticTypeDependencies.d.ts +7 -0
  219. package/dist/compiler/semanticTypeDependencies.js +64 -0
  220. package/dist/compiler/semanticTypeReference.d.ts +23 -0
  221. package/dist/compiler/semanticTypeReference.js +36 -0
  222. package/dist/compiler/shapeResolver.d.ts +1 -1
  223. package/dist/compiler/shapeResolver.js +7 -9
  224. package/dist/compiler/soapHeaders.d.ts +16 -0
  225. package/dist/compiler/soapHeaders.js +42 -0
  226. package/dist/compiler/sourceSchemaBinding.d.ts +25 -0
  227. package/dist/compiler/sourceSchemaBinding.js +39 -0
  228. package/dist/compiler/standardSchemaComponents.d.ts +71 -0
  229. package/dist/compiler/standardSchemaComponents.js +74 -0
  230. package/dist/compiler/standardSchemaConstruction.d.ts +20 -0
  231. package/dist/compiler/standardSchemaConstruction.js +34 -0
  232. package/dist/compiler/structuralCompanions.d.ts +15 -0
  233. package/dist/compiler/structuralCompanions.js +232 -0
  234. package/dist/compiler/validateSemanticGraph.d.ts +4 -0
  235. package/dist/compiler/validateSemanticGraph.js +376 -0
  236. package/dist/compiler/wildcardAlgebra.d.ts +25 -0
  237. package/dist/compiler/wildcardAlgebra.js +155 -0
  238. package/dist/compiler/wsdlPolicyRequirements.d.ts +43 -0
  239. package/dist/compiler/wsdlPolicyRequirements.js +239 -0
  240. package/dist/config.d.ts +0 -1
  241. package/dist/gateway/generateCheckedGateway.d.ts +32 -0
  242. package/dist/gateway/generateCheckedGateway.js +293 -0
  243. package/dist/gateway/generateGateway.d.ts +0 -1
  244. package/dist/gateway/generateGateway.js +2 -2
  245. package/dist/gateway/generators.d.ts +0 -1
  246. package/dist/gateway/helpers.d.ts +0 -1
  247. package/dist/generation/componentShape.d.ts +14 -0
  248. package/dist/generation/componentShape.js +269 -0
  249. package/dist/generation/preamble.d.ts +0 -1
  250. package/dist/generation/sourceLayout.d.ts +13 -0
  251. package/dist/generation/sourceLayout.js +40 -0
  252. package/dist/generation/writeGeneratedSource.d.ts +0 -1
  253. package/dist/index.d.ts +9 -1
  254. package/dist/index.js +3 -0
  255. package/dist/loader/fetch.d.ts +0 -1
  256. package/dist/loader/orderedSyntax.d.ts +84 -0
  257. package/dist/loader/orderedSyntax.js +222 -0
  258. package/dist/loader/resolutionDepth.d.ts +6 -0
  259. package/dist/loader/resolutionDepth.js +65 -0
  260. package/dist/loader/schemaInput.d.ts +80 -0
  261. package/dist/loader/schemaInput.js +249 -0
  262. package/dist/loader/schemaResources.d.ts +60 -0
  263. package/dist/loader/schemaResources.js +333 -0
  264. package/dist/loader/wsdlLoader.d.ts +0 -1
  265. package/dist/openapi/casing.d.ts +0 -1
  266. package/dist/openapi/generateOpenAPI.d.ts +0 -1
  267. package/dist/openapi/generateOpenAPI.js +2 -2
  268. package/dist/openapi/generatePaths.d.ts +0 -1
  269. package/dist/openapi/generateSchemas.d.ts +0 -1
  270. package/dist/openapi/security.d.ts +0 -1
  271. package/dist/pipeline.d.ts +6 -2
  272. package/dist/pipeline.js +13 -0
  273. package/dist/test/generateCheckedTests.d.ts +17 -0
  274. package/dist/test/generateCheckedTests.js +60 -0
  275. package/dist/test/generateTests.d.ts +0 -1
  276. package/dist/test/generateTests.js +2 -2
  277. package/dist/test/generators.d.ts +0 -1
  278. package/dist/test/mockData.d.ts +0 -1
  279. package/dist/test/mockData.js +20 -14
  280. package/dist/util/attributeWildcards.d.ts +0 -1
  281. package/dist/util/builder.d.ts +0 -1
  282. package/dist/util/catalogMeta.d.ts +0 -1
  283. package/dist/util/checkedCliDiagnostics.d.ts +11 -0
  284. package/dist/util/checkedCliDiagnostics.js +22 -0
  285. package/dist/util/cli.d.ts +0 -1
  286. package/dist/util/errors.d.ts +0 -1
  287. package/dist/util/imports.d.ts +0 -1
  288. package/dist/util/runtimeSource.d.ts +0 -1
  289. package/dist/util/runtimeSource.js +3 -5
  290. package/dist/util/securityConfig.d.ts +0 -1
  291. package/dist/util/streamConfig.d.ts +0 -1
  292. package/dist/util/tools.d.ts +0 -1
  293. package/dist/util/xmlWhitespace.d.ts +2 -0
  294. package/dist/util/xmlWhitespace.js +4 -0
  295. package/dist/xsd/primitives.d.ts +0 -1
  296. package/docs/agent-skill.md +2 -0
  297. package/docs/api-reference.md +1 -1
  298. package/docs/checked-gateway.md +210 -0
  299. package/docs/checked-generation.md +161 -0
  300. package/docs/cli-reference.md +43 -1
  301. package/docs/concepts.md +136 -1
  302. package/docs/configuration.md +5 -1
  303. package/docs/corpus.md +33 -0
  304. package/docs/direct-values.md +311 -0
  305. package/docs/examples/checked-forecast.wsdl +19 -0
  306. package/docs/gateway-guide.md +1 -1
  307. package/docs/generated-code.md +10 -5
  308. package/docs/mapping-contract.md +114 -0
  309. package/docs/migration-playbook.md +1 -1
  310. package/docs/output-anatomy.md +1 -1
  311. package/docs/start-here.md +8 -2
  312. package/docs/supported-patterns.md +17 -5
  313. package/docs/testing.md +117 -31
  314. package/llms.txt +7 -7
  315. package/package.json +79 -25
  316. package/src/generation/preambles/direct-client/typescript.preamble +3 -0
  317. package/src/runtime/checkedGatewayHost.tpl.txt +157 -0
  318. package/src/runtime/streamXml.ts +1 -1
  319. package/dist/app/generateApp.d.ts.map +0 -1
  320. package/dist/cli.d.ts.map +0 -1
  321. package/dist/client/generateClient.d.ts.map +0 -1
  322. package/dist/client/generateOperations.d.ts.map +0 -1
  323. package/dist/client/generateTypes.d.ts.map +0 -1
  324. package/dist/client/generateUtils.d.ts.map +0 -1
  325. package/dist/compiler/generateCatalog.d.ts.map +0 -1
  326. package/dist/compiler/schemaCompiler.d.ts.map +0 -1
  327. package/dist/compiler/shapeResolver.d.ts.map +0 -1
  328. package/dist/config.d.ts.map +0 -1
  329. package/dist/gateway/generateGateway.d.ts.map +0 -1
  330. package/dist/gateway/generators.d.ts.map +0 -1
  331. package/dist/gateway/helpers.d.ts.map +0 -1
  332. package/dist/generation/preamble.d.ts.map +0 -1
  333. package/dist/generation/writeGeneratedSource.d.ts.map +0 -1
  334. package/dist/index.d.ts.map +0 -1
  335. package/dist/loader/fetch.d.ts.map +0 -1
  336. package/dist/loader/wsdlLoader.d.ts.map +0 -1
  337. package/dist/openapi/casing.d.ts.map +0 -1
  338. package/dist/openapi/generateOpenAPI.d.ts.map +0 -1
  339. package/dist/openapi/generatePaths.d.ts.map +0 -1
  340. package/dist/openapi/generateSchemas.d.ts.map +0 -1
  341. package/dist/openapi/security.d.ts.map +0 -1
  342. package/dist/pipeline.d.ts.map +0 -1
  343. package/dist/runtime/jsonArray.d.ts +0 -24
  344. package/dist/runtime/jsonArray.d.ts.map +0 -1
  345. package/dist/runtime/jsonArray.js +0 -52
  346. package/dist/runtime/ndjson.d.ts +0 -24
  347. package/dist/runtime/ndjson.d.ts.map +0 -1
  348. package/dist/runtime/ndjson.js +0 -30
  349. package/dist/runtime/streamXml.d.ts +0 -45
  350. package/dist/runtime/streamXml.d.ts.map +0 -1
  351. package/dist/runtime/streamXml.js +0 -212
  352. package/dist/test/generateTests.d.ts.map +0 -1
  353. package/dist/test/generators.d.ts.map +0 -1
  354. package/dist/test/mockData.d.ts.map +0 -1
  355. package/dist/util/attributeWildcards.d.ts.map +0 -1
  356. package/dist/util/builder.d.ts.map +0 -1
  357. package/dist/util/catalogMeta.d.ts.map +0 -1
  358. package/dist/util/cli.d.ts.map +0 -1
  359. package/dist/util/errors.d.ts.map +0 -1
  360. package/dist/util/imports.d.ts.map +0 -1
  361. package/dist/util/runtimeSource.d.ts.map +0 -1
  362. package/dist/util/securityConfig.d.ts.map +0 -1
  363. package/dist/util/streamConfig.d.ts.map +0 -1
  364. package/dist/util/tools.d.ts.map +0 -1
  365. package/dist/xsd/primitives.d.ts.map +0 -1
  366. package/docs/AGENTS.md +0 -47
  367. package/docs/README.md +0 -56
  368. package/docs/architecture.md +0 -149
  369. package/docs/decisions/001-test-generation.md +0 -36
  370. package/docs/decisions/002-streamable-responses.md +0 -330
  371. package/docs/file-naming-and-path-organization.md +0 -213
  372. package/docs/releases/README.md +0 -94
  373. package/docs/releases/v0.20.0.md +0 -22
  374. package/docs/releases/v0.21.0.md +0 -30
  375. package/docs/releases/v0.22.0.md +0 -30
  376. package/docs/releases/v0.23.0.md +0 -31
  377. package/docs/releases/v0.24.0.md +0 -38
  378. package/docs/releases/v0.25.0.md +0 -31
  379. package/docs/releases/v0.25.2.md +0 -32
  380. package/docs/releases/v0.26.0.md +0 -32
  381. package/docs/releases/v0.27.0.md +0 -31
  382. package/docs/releases/v0.28.0.md +0 -32
  383. package/docs/releases/v0.29.0.md +0 -32
  384. package/docs/releases/v0.30.0.md +0 -30
  385. package/docs/releases/v0.30.1.md +0 -31
  386. package/docs/releases/v0.30.2.md +0 -30
  387. package/docs/releases/v0.30.3.md +0 -33
  388. package/docs/releases/v0.31.0.md +0 -33
  389. package/docs/releases/v0.32.0.md +0 -33
  390. package/docs/releases/v0.33.0.md +0 -34
  391. package/docs/releases/v0.34.0.md +0 -30
  392. package/docs/releases/v0.35.0.md +0 -33
  393. package/docs/releases/v0.36.0.md +0 -32
  394. package/docs/releases/v0.37.0.md +0 -33
  395. package/docs/releases/v0.38.0.md +0 -35
  396. package/docs/releases/v0.39.0.md +0 -35
  397. package/docs/releases/v0.40.0.md +0 -45
  398. package/docs/releases/v0.40.1.md +0 -34
  399. package/docs/releases/v1.0.0.md +0 -42
  400. package/docs/releases/v1.0.1.md +0 -38
  401. package/docs/releases/v1.0.2.md +0 -51
  402. package/docs/releases/v1.0.3.md +0 -37
  403. package/docs/releases/v1.0.4.md +0 -45
  404. package/docs/releases/v1.0.5.md +0 -41
  405. package/docs/releases/v1.0.6.md +0 -35
  406. package/docs/releases/v1.0.7.md +0 -36
  407. package/docs/releases/v1.1.0.md +0 -42
  408. package/docs/releases/v1.1.1.md +0 -44
  409. package/docs/releases/v1.1.2.md +0 -42
  410. package/docs/releases/v1.1.3.md +0 -36
  411. package/docs/releases/v1.1.4.md +0 -36
  412. package/docs/roadmap/README.md +0 -107
  413. package/docs/roadmap/v1.0-capability-conformance-framework.md +0 -582
  414. package/docs/roadmap/v1.0-choice-union-mode.md +0 -90
  415. package/docs/roadmap/v1.0-contract-audit.md +0 -75
  416. package/docs/roadmap/v1.0-json-array-streaming.md +0 -101
  417. package/docs/roadmap/v1.0-openapi-fastify-compatibility.md +0 -99
  418. package/docs/roadmap/v1.0-release-candidate-gates.md +0 -92
  419. package/docs/roadmap/v1.0-wsdl-coverage-matrix.md +0 -200
  420. package/docs/roadmap/v1.0-xs-anyattribute-wildcard-bag.md +0 -932
  421. package/src/runtime/jsonArray.ts +0 -55
  422. package/src/runtime/ndjson.ts +0 -32
@@ -0,0 +1,245 @@
1
+ /** WSDL-first diagnostics over the existing component generation owners.
2
+ * @since Unreleased
3
+ * @constraints Reports are data; separate invocations always reload and requalify source.
4
+ */
5
+ import path from 'node:path';
6
+ import fs from 'node:fs';
7
+ import { fileURLToPath } from 'node:url';
8
+ import { types } from 'node:util';
9
+ import { parseCheckedComponentOptions, parseCheckedComponentChoices, prepareComponentStages } from './checkedPipeline.js';
10
+ import { inspectDirectOperation } from './compiler/directOperation.js';
11
+ import { loadSemanticSchemaInput, prepareSchemaSnapshotFiles } from './loader/schemaInput.js';
12
+ import { resolveResourceUri } from './loader/schemaResources.js';
13
+ import { syntaxElements, syntaxAttribute, resolveLexicalQName, WSDL_NAMESPACE, XSD_NAMESPACE, SchemaLoadingError } from './loader/orderedSyntax.js';
14
+ const same = (a, b) => a.namespace === b.namespace && a.local === b.local;
15
+ const order = (items) => items.sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b), 'en'));
16
+ /** Refused generation retains actionable, serializable diagnostics.
17
+ * @since Unreleased
18
+ */
19
+ export class CheckedPlanningError extends Error {
20
+ report;
21
+ constructor(report) {
22
+ super(formatCheckedComponentPlan(report));
23
+ this.report = report;
24
+ this.name = 'CheckedPlanningError';
25
+ }
26
+ }
27
+ /** Format deterministic human diagnostics without source bytes or transport details.
28
+ * @param report Diagnostic data only.
29
+ * @returns Summary and every independently collected blocker.
30
+ */
31
+ export function formatCheckedComponentPlan(report) {
32
+ return [`${report.model}: ${report.ready ? 'generation-ready' : 'blocked'}; discovered=${report.inventory.operations}; selected=${report.selection?.selectors.length ?? 0}; generated=0; executed=0; inventory=${report.inventory.complete ? 'complete' : 'incomplete'}`,
33
+ ...report.blockers.map(b => `${b.category} [${b.stage}/${b.dimension}] ${b.reason}${b.source ? ` at ${b.source.resource}:${b.source.line}:${b.source.column} ${b.source.path}` : ''}; affected=${b.affected.map(s => `{${s.portType.namespace}}${s.portType.local}/{${s.binding.namespace}}${s.binding.local}/${s.operation}`).join(',') || 'inventory unassessed'}; ${b.action} (${b.pointer})`)].join('\n');
34
+ }
35
+ /** Inspect a WSDL using the same native preparation as generation, without writing or dispatching.
36
+ * @param source WSDL file or HTTP(S) root; declared dependencies remain subject to native policy.
37
+ * @param choices Partial explicit configuration; only missing unambiguous selections are inferred.
38
+ * @returns Diagnostic data; ready is generation readiness, never provider or runtime acceptance.
39
+ * @throws Error Only for unexpected report construction failures.
40
+ * @sideEffects Reads authorized metadata only; never contacts a SOAP endpoint.
41
+ */
42
+ export async function planCheckedComponents(source, choices) {
43
+ return (await prepareCheckedComponentPlan(source, choices)).report;
44
+ }
45
+ /** Write explicitly requested diagnostic data without replacing consumer files by default.
46
+ * @param file Explicit output path.
47
+ * @param value Data to serialize; report content grants no native authority.
48
+ * @param force Explicit replacement permission.
49
+ * @returns Nothing.
50
+ * @throws Error On existing files without force or filesystem failures.
51
+ * @sideEffects Creates only the requested report or draft file and its parent directory.
52
+ */
53
+ export function writeCheckedPlanningFile(file, value, force = false) {
54
+ fs.mkdirSync(path.dirname(path.resolve(file)), { recursive: true });
55
+ fs.writeFileSync(file, JSON.stringify(value, null, 2) + '\n', { flag: force ? 'w' : 'wx' });
56
+ }
57
+ // @constraints Internal composition only. Native handles are never attached to the public report.
58
+ export async function prepareCheckedComponentPlan(source, choices = {}, outputs) {
59
+ const documents = [], blockers = [];
60
+ let complete = false, config;
61
+ let intake;
62
+ let unresolved = [];
63
+ const explicit = Object.create(null);
64
+ let selectors = [];
65
+ let candidates = [], operations = [];
66
+ const counts = { services: 0, ports: 0, bindings: 0, portTypes: 0, operations: 0 };
67
+ const locator = (s) => ({ resource: `resource-${documents.findIndex(d => d.uri === s.uri) + 1}`, path: s.path, line: s.start.line, column: s.start.column });
68
+ const add = (category, stage, reason, action, pointer, affected = selectors, source, dimension = 'source') => {
69
+ blockers.push({ category, stage, dimension, reason, affected, action, pointer, ...(source ? { source: locator(source) } : {}) });
70
+ };
71
+ const inventory = () => {
72
+ candidates = [];
73
+ operations = [];
74
+ counts.services = counts.ports = counts.bindings = counts.portTypes = counts.operations = 0;
75
+ const bindings = documents.flatMap(d => syntaxElements(d.root, WSDL_NAMESPACE, 'binding').map(n => ({ node: n, name: { namespace: syntaxAttribute(d.root, 'targetNamespace') ?? '', local: syntaxAttribute(n, 'name') ?? '' } })));
76
+ counts.bindings = bindings.length;
77
+ for (const document of documents) {
78
+ const namespace = syntaxAttribute(document.root, 'targetNamespace') ?? '';
79
+ for (const service of syntaxElements(document.root, WSDL_NAMESPACE, 'service')) {
80
+ counts.services++;
81
+ for (const port of syntaxElements(service, WSDL_NAMESPACE, 'port')) {
82
+ counts.ports++;
83
+ const binding = resolveLexicalQName(syntaxAttribute(port, 'binding') ?? '', port);
84
+ const matches = bindings.filter(b => same(b.name, binding));
85
+ const type = matches.length === 1 ? syntaxAttribute(matches[0].node, 'type') : undefined;
86
+ candidates.push({ service: { namespace, local: syntaxAttribute(service, 'name') ?? '' }, port: syntaxAttribute(port, 'name') ?? '', binding,
87
+ ...(type ? { portType: resolveLexicalQName(type, matches[0].node) } : {}), source: locator(port.source) });
88
+ }
89
+ }
90
+ for (const type of syntaxElements(document.root, WSDL_NAMESPACE, 'portType')) {
91
+ counts.portTypes++;
92
+ const portType = { namespace, local: syntaxAttribute(type, 'name') ?? '' };
93
+ for (const operation of syntaxElements(type, WSDL_NAMESPACE, 'operation')) {
94
+ counts.operations++;
95
+ const name = syntaxAttribute(operation, 'name') ?? '';
96
+ const bound = bindings.filter(b => { const t = syntaxAttribute(b.node, 'type'); return t && same(resolveLexicalQName(t, b.node), portType); });
97
+ for (const binding of bound.length ? bound.map(b => b.name) : [undefined])
98
+ operations.push({ portType, ...(binding ? { binding } : {}), operation: name,
99
+ requested: false, selected: false, generated: false, executed: false });
100
+ }
101
+ }
102
+ }
103
+ order(candidates);
104
+ order(operations);
105
+ };
106
+ let native;
107
+ let preparingNative = false;
108
+ try {
109
+ if (!choices || typeof choices !== 'object' || types.isProxy(choices) || ![null, Object.prototype].includes(Object.getPrototypeOf(choices)))
110
+ throw new TypeError('Data-only choices required');
111
+ for (const key of Reflect.ownKeys(choices)) {
112
+ const d = Object.getOwnPropertyDescriptor(choices, key);
113
+ if (typeof key !== 'string' || !('value' in d))
114
+ throw new TypeError('Unknown component configuration or accessor');
115
+ explicit[key] = d.value;
116
+ }
117
+ const root = resolveResourceUri(source);
118
+ intake = { fileRoots: new URL(root).protocol === 'file:' ? [path.dirname(fileURLToPath(root))] : [],
119
+ sourceResources: [], sourceOrigins: new URL(root).protocol === 'file:' ? [] : [new URL(root).origin],
120
+ ...parseCheckedComponentChoices(explicit) };
121
+ if (!Object.hasOwn(explicit, 'sourceResources') && new URL(root).protocol !== 'file:' && intake.sourceOrigins.length) {
122
+ intake = { ...intake, sourceOrigins: [...new Set([new URL(root).origin, ...intake.sourceOrigins])].sort() };
123
+ }
124
+ if (intake.namespaceLocations?.some(n => n.location === 'REQUIRED_SCHEMA_LOCATION'))
125
+ throw new TypeError('Resolve REQUIRED_SCHEMA_LOCATION before loading');
126
+ if (new Set(intake.namespaceLocations?.map(n => n.namespace)).size !== (intake.namespaceLocations?.length ?? 0))
127
+ throw new TypeError('Unique namespace locations required');
128
+ const snapshotUris = [root, ...intake.sourceResources.map(r => resolveResourceUri(r.uri))];
129
+ if (new Set(snapshotUris).size !== snapshotUris.length)
130
+ throw new TypeError('Duplicate logical schema snapshot');
131
+ if (intake.signal?.aborted) {
132
+ add('cancelled', 'loading', 'caller-cancelled', 'Rerun with an active signal.', 'signal');
133
+ }
134
+ else {
135
+ const loading = { policy: { fileRoots: intake.fileRoots, allowedOrigins: intake.sourceOrigins }, signal: intake.signal,
136
+ namespaceLocations: new Map(intake.namespaceLocations?.map(n => [n.namespace, n.location])),
137
+ onDocument: (document) => { documents.push(document); } };
138
+ const prepared = Object.hasOwn(explicit, 'sourceResources') ? await prepareSchemaSnapshotFiles(source, intake.sourceResources, loading) : undefined;
139
+ const input = await loadSemanticSchemaInput(intake.sourceUri ?? prepared?.source ?? source, prepared?.loading ?? loading);
140
+ complete = true;
141
+ inventory();
142
+ const possible = candidates.filter(c => (!Object.hasOwn(explicit, 'service') || intake.service !== undefined && same(c.service, intake.service))
143
+ && (!Object.hasOwn(explicit, 'port') || c.port === intake.port)
144
+ && (!Object.hasOwn(explicit, 'selectors') || intake.selectors !== undefined && intake.selectors.every(s => same(s.binding, c.binding) && c.portType && same(s.portType, c.portType))));
145
+ if (possible.length !== 1)
146
+ add('ambiguous-selection', 'selection', possible.length ? 'multiple-service-port-binding-candidates' : 'no-matching-service-port-binding', 'Choose service, port and selectors from candidates; conflicting choices must be corrected.', 'checkedComponents.service/port/selectors', [], undefined, 'selection');
147
+ else {
148
+ const chosen = possible[0];
149
+ selectors = Object.hasOwn(explicit, 'selectors') ? [...intake.selectors] : operations.filter(o => o.binding && same(o.binding, chosen.binding))
150
+ .map(o => ({ portType: o.portType, binding: o.binding, operation: o.operation }));
151
+ if (!selectors.length)
152
+ add('configuration', 'selection', 'no-operations-for-candidate', 'Correct the binding/portType declarations.', 'checkedComponents.selectors', [], undefined, 'selection');
153
+ else
154
+ config = parseCheckedComponentOptions({ ...intake, selectors, service: chosen.service, port: chosen.port });
155
+ }
156
+ operations = operations.map(o => {
157
+ const selected = selectors.some(s => same(s.portType, o.portType) && o.binding && same(s.binding, o.binding) && s.operation === o.operation);
158
+ return { ...o, requested: selected, selected };
159
+ });
160
+ const missing = new Map();
161
+ for (const schema of input.schemas)
162
+ for (const child of syntaxElements(schema.syntax, XSD_NAMESPACE, 'import')) {
163
+ const namespace = syntaxAttribute(child, 'namespace') ?? '';
164
+ if (syntaxAttribute(child, 'schemaLocation') === undefined && !loading.namespaceLocations.has(namespace)
165
+ && !input.schemas.some(s => s.targetNamespace === namespace)
166
+ && namespace !== XSD_NAMESPACE)
167
+ missing.set(namespace, child.source);
168
+ }
169
+ for (const [namespace, at] of missing)
170
+ add('missing-dependency', 'loading', `locationless-import:${namespace}`, 'Supply an authorized schema path for this namespace.', `checkedComponents.namespaceLocations[${JSON.stringify(namespace)}].location`, selectors.length ? selectors : operations.flatMap(o => o.binding ? [{ portType: o.portType, binding: o.binding, operation: o.operation }] : []), at);
171
+ if (missing.size)
172
+ unresolved = [...(intake.namespaceLocations ?? []), ...[...missing.keys()].sort().map(namespace => ({ namespace, location: 'REQUIRED_SCHEMA_LOCATION' }))];
173
+ if (!blockers.length && config) {
174
+ if (!Object.hasOwn(explicit, 'standardLibraries') && input.schemas.some(s => syntaxElements(s.syntax, XSD_NAMESPACE, 'import')
175
+ .some(n => syntaxAttribute(n, 'namespace') === XSD_NAMESPACE && syntaxAttribute(n, 'schemaLocation') === undefined))) {
176
+ config = { ...config, standardLibraries: ['w3c-xsd10-schema-element-2004-v1'] };
177
+ }
178
+ // @why Machine-derived snapshot bookkeeping is separate from authored schema semantics.
179
+ const known = new Set(config.sourceResources.map(r => resolveResourceUri(r.uri)));
180
+ config = { ...config, sourceResources: [...config.sourceResources, ...input.resources.filter(r => r.uri !== input.root.uri && !known.has(r.uri) && new URL(r.uri).protocol === 'file:')
181
+ .map(r => ({ uri: r.uri, file: fileURLToPath(r.uri) }))] };
182
+ preparingNative = true;
183
+ native = await prepareComponentStages(source, config, !prepared && new URL(input.root.uri).protocol !== 'file:' ? input : undefined, outputs);
184
+ if (native.expected.length) {
185
+ const fresh = inspectDirectOperation(native.expected[0].contract).source;
186
+ if (input.resources.length !== fresh.resources.length || input.resources.some(r => !fresh.resources.some(n => n.uri === r.uri && n.digest === r.digest))) {
187
+ add('operational-failure', 'native-preparation', 'source-changed-during-planning', 'Keep source files stable and rerun discovery and native checks.', 'wsdl/sourceResources');
188
+ }
189
+ }
190
+ for (const refusal of native.refusals) {
191
+ if (refusal.rule.startsWith('ambiguous-record-path:')) {
192
+ add('ambiguous-selection', 'native-preparation', refusal.rule, 'Supply recordPath using expanded names to select one declared repeated complex record in this companion source.', 'checkedComponents.recordProjections[].recordPath', [refusal.selector], undefined, 'mapping-and-artifact');
193
+ continue;
194
+ }
195
+ const category = refusal.kind === 'invalid-schema' && refusal.dimension === 'qualification-and-correspondence' ? 'invalid-source' : refusal.kind === 'unsupported' ? 'unsupported-capability'
196
+ : refusal.kind === 'cancelled' || refusal.kind === 'resource-limit' ? refusal.kind : refusal.kind === 'selection-refused' ? 'configuration' : 'inconclusive';
197
+ add(category, 'native-preparation', refusal.rule, 'Resolve the native rule or extend the qualified capability; no validity override is available.', 'checkedComponents.selectors', [refusal.selector], undefined, refusal.dimension);
198
+ }
199
+ if (blockers.length)
200
+ native = undefined;
201
+ }
202
+ }
203
+ }
204
+ catch (error) {
205
+ if (!complete) {
206
+ try {
207
+ inventory();
208
+ }
209
+ catch { /* Partial malformed identities remain unassessed. */ }
210
+ }
211
+ if (intake?.signal?.aborted)
212
+ add('cancelled', complete ? 'native-preparation' : 'loading', 'caller-cancelled', 'Rerun with an active signal.', 'signal');
213
+ else if (error instanceof SchemaLoadingError && error.message === 'Duplicate logical schema snapshot') {
214
+ add('configuration', 'configuration', 'duplicate-logical-snapshot', 'Supply unique logical snapshot identities.', 'checkedComponents.sourceResources');
215
+ }
216
+ else if (error instanceof SchemaLoadingError) {
217
+ const http = /^Schema retrieval returned HTTP (\d{3})$/.exec(error.message)?.[1];
218
+ const permission = /authoriz|outside/.test(error.message);
219
+ const category = permission ? 'permission' : error.category === 'invalid-schema' ? 'invalid-source'
220
+ : error.category === 'resource-limit' ? 'resource-limit' : error.category === 'unsupported-capability' ? 'unsupported-capability' : 'missing-dependency';
221
+ add(category, 'loading', permission ? 'source-permission-required' : http ? `metadata-http-${http}` : error.category, http === '401' || http === '403' ? 'Metadata access was denied. Supply accessible independently authorized physical snapshots; SOAP credentials do not authorize metadata.'
222
+ : 'Check resource availability and explicit roots/origins; permit a declared second origin once in sourceOrigins or supply authorized snapshots, then rerun fresh checks.', 'checkedComponents.fileRoots/sourceOrigins/sourceResources', selectors, error.source);
223
+ }
224
+ else {
225
+ const configurationError = (!preparingNative || error instanceof TypeError && error.message.startsWith('applicationGroups')) && (error instanceof TypeError || error instanceof RangeError);
226
+ add(configurationError ? 'configuration' : 'operational-failure', complete ? 'native-preparation' : 'configuration', configurationError ? `invalid-or-unresolved-configuration:${error.message}` : 'native-preparation-failed', 'Correct the configuration or inspect the local I/O failure and rerun.', 'checkedComponents');
227
+ }
228
+ native = undefined;
229
+ }
230
+ const report = { version: 'checked-component-plan-v1', model: 'checked-components-v1', scope: 'native-component-source-and-mapping',
231
+ ready: !!native && !blockers.length, executed: false, runtime: 'not-assessed-operation-invocation-required',
232
+ dimensions: { sourceLegality: native ? 'established' : blockers.some(b => b.category === 'invalid-source') ? 'disproved' : 'unassessed',
233
+ correspondence: native ? 'established' : 'unassessed', mapping: native ? 'established' : 'unassessed', runtime: 'unassessed' },
234
+ inventory: { complete, unassessed: complete ? [] : ['unloaded documents and their service/binding/operation identities; native whole-source prerequisites'], ...counts },
235
+ candidates, resources: documents.map((d, i) => ({ resource: `resource-${i + 1}`, digest: d.digest })), operations,
236
+ ...(native && native.projections.size ? { responseProjections: native.expected.flatMap(operation => operation.responseProjection
237
+ ? [{ selector: operation.contract.selector, spec: operation.responseProjection.spec,
238
+ delivery: 'buffered', retainedValue: 'complete-companion-payload' }] : []) } : {}),
239
+ ...(config && selectors.length ? { selection: { service: config.service, port: config.port, selectors } } : {}), blockers: order(blockers),
240
+ ...(intake && blockers.some(b => b.category === 'missing-dependency' && b.reason.startsWith('locationless-import:')) ? { resolution: {
241
+ instructions: 'Save configuration as checked JSON. Replace REQUIRED_SCHEMA_LOCATION with an authorized schema path; paths resolve from the invocation working directory. Rerun the same pipeline with --checked-config. Reports never authorize generation.',
242
+ configuration: { ...Object.fromEntries(Object.entries(explicit).filter(([key]) => key !== 'signal')), namespaceLocations: unresolved }
243
+ } } : {}) };
244
+ return { report, ...(config ? { config } : {}), ...(native ? { native } : {}) };
245
+ }
package/dist/cli.d.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  #!/usr/bin/env node
2
2
  export {};
3
- //# sourceMappingURL=cli.d.ts.map
package/dist/cli.js CHANGED
@@ -9,15 +9,19 @@
9
9
  * invocation (no subcommand) is kept for backward compatibility and behaves like the client
10
10
  * command with legacy flags.
11
11
  */
12
+ import { assessSchemaSource, serializeAssessmentReport, assessmentExitCode } from "./compiler/checkedAssessment.js";
12
13
  import yargs from "yargs/yargs";
13
14
  import { hideBin } from "yargs/helpers";
14
15
  import fs from "node:fs";
15
16
  import path from "node:path";
17
+ import { fileURLToPath } from "node:url";
18
+ import { resolveResourceUri } from "./loader/schemaResources.js";
16
19
  import { loadWsdl } from "./loader/wsdlLoader.js";
17
20
  import { compileCatalog } from "./compiler/schemaCompiler.js";
18
21
  import { generateTypes } from "./client/generateTypes.js";
19
22
  import { generateUtils } from "./client/generateUtils.js";
20
23
  import { generateCatalog } from "./compiler/generateCatalog.js";
24
+ import { readLegacyCatalogFile, CatalogError } from "./compiler/semanticCatalog.js";
21
25
  import { generateClient } from "./client/generateClient.js";
22
26
  import { generateOperations } from "./client/generateOperations.js";
23
27
  import { generateOpenAPI } from "./openapi/generateOpenAPI.js";
@@ -47,7 +51,7 @@ function loadStreamConfigOrExit(filePath) {
47
51
  // Process command line arguments, removing the first two elements (node executable and script path)
48
52
  const rawArgs = hideBin(process.argv);
49
53
  // Available commands
50
- const COMMANDS = ["compile", "client", "openapi", "gateway", "app", "pipeline"];
54
+ const COMMANDS = ["compile", "client", "openapi", "gateway", "app", "pipeline", "assess"];
51
55
  // ---------------------------------------------------------------------------
52
56
  // Show help if no subcommand provided
53
57
  // ---------------------------------------------------------------------------
@@ -56,6 +60,7 @@ if (!rawArgs[0] || !COMMANDS.includes(rawArgs[0])) {
56
60
  .version(false)
57
61
  .scriptName("wsdl-tsc")
58
62
  .usage("$0 <command> [options]")
63
+ .command("assess", "Assess narrow direct-schema obligations; component readiness uses pipeline --checked-report")
59
64
  .command("compile", "Compile WSDL to catalog.json")
60
65
  .command("client", "Generate TypeScript SOAP client from WSDL or catalog")
61
66
  .command("openapi", "Generate OpenAPI specification from WSDL or catalog")
@@ -68,6 +73,45 @@ if (!rawArgs[0] || !COMMANDS.includes(rawArgs[0])) {
68
73
  .parse();
69
74
  process.exit(1);
70
75
  }
76
+ // Assessment is deliberately independent of every generation command.
77
+ if (rawArgs[0] === "assess") {
78
+ const argv = await yargs(rawArgs.slice(1)).version(false).scriptName("wsdl-tsc assess")
79
+ .option("wsdl-source", { type: "string", demandOption: true, desc: "Authorized local WSDL/XSD source" })
80
+ .option("report", { type: "string", demandOption: true, desc: "Diagnostic JSON report path" })
81
+ .option("schema-root", { type: "array", string: true, desc: "Authorized schema root; defaults to source directory" })
82
+ .option("schema-origin", { type: "array", string: true, desc: "Explicitly authorized HTTP(S) origin" })
83
+ .option("assessment-max-work", { type: "number", desc: "Inclusive shared request work limit" })
84
+ .option("assessment-max-nodes", { type: "number", desc: "Inclusive shared request node limit" })
85
+ .strict().help().parse();
86
+ const controller = new AbortController();
87
+ const cancel = () => controller.abort();
88
+ process.on("SIGINT", cancel);
89
+ try {
90
+ const source = argv["wsdl-source"];
91
+ let localFile;
92
+ try {
93
+ const uri = resolveResourceUri(source);
94
+ localFile = uri.startsWith("file:") ? fileURLToPath(uri) : undefined;
95
+ }
96
+ catch {
97
+ // Root inference grants nothing on failure; the API still publishes its loading diagnostic.
98
+ }
99
+ const report = await assessSchemaSource(source, { signal: controller.signal, loading: { policy: {
100
+ fileRoots: argv["schema-root"] ?? (localFile ? [path.dirname(localFile)] : []),
101
+ allowedOrigins: argv["schema-origin"] ?? [],
102
+ } }, limits: { maxWork: argv["assessment-max-work"], maxNodes: argv["assessment-max-nodes"] } });
103
+ fs.writeFileSync(argv.report, serializeAssessmentReport(report), { encoding: "utf8" });
104
+ console.error(`Schema: ${report.schema}; correspondence: ${report.correspondence}; execution: ${report.execution}; generation: not admitted`);
105
+ process.exitCode = assessmentExitCode(report);
106
+ }
107
+ catch {
108
+ console.error("Assessment or report publication failed; source details redacted");
109
+ process.exitCode = 1;
110
+ }
111
+ finally {
112
+ process.off("SIGINT", cancel);
113
+ }
114
+ }
71
115
  // ---------------------------------------------------------------------------
72
116
  // Compile subcommand - Parse WSDL and generate catalog
73
117
  // ---------------------------------------------------------------------------
@@ -191,8 +235,7 @@ if (rawArgs[0] === "client") {
191
235
  else {
192
236
  // Only catalog-file provided: it's an input, load it
193
237
  const catalogPath = path.resolve(String(clientArgv["catalog-file"]));
194
- const catalogContent = fs.readFileSync(catalogPath, "utf-8");
195
- compiled = JSON.parse(catalogContent);
238
+ compiled = readLegacyCatalogFile(catalogPath);
196
239
  success(`Loaded catalog from ${catalogPath}`);
197
240
  }
198
241
  // If we need to compile from WSDL
@@ -540,11 +583,12 @@ if (rawArgs[0] === "app") {
540
583
  let imports = appArgv["import-extensions"];
541
584
  if (!imports && fs.existsSync(catalogFile)) {
542
585
  try {
543
- const catalogContent = fs.readFileSync(catalogFile, "utf-8");
544
- const catalog = JSON.parse(catalogContent);
586
+ const catalog = readLegacyCatalogFile(catalogFile);
545
587
  imports = catalog?.options?.imports || "js";
546
588
  }
547
589
  catch (err) {
590
+ if (err instanceof CatalogError && err.category === "incompatible-artifact")
591
+ throw err;
548
592
  // If catalog read fails, fall back to "js"
549
593
  imports = "js";
550
594
  }
@@ -575,6 +619,11 @@ if (rawArgs[0] === "pipeline") {
575
619
  .scriptName("wsdl-tsc pipeline")
576
620
  .usage("$0 --wsdl-source <file|url> [--client-dir <dir>] [--openapi-file <path>] [--gateway-dir <dir> --gateway-service-name <slug> --gateway-version-prefix <slug>] [--catalog-file <path>] [options]")
577
621
  .option("wsdl-source", { type: "string", demandOption: true, desc: "Path or URL to the WSDL" })
622
+ .option("model", { type: "string", choices: ["legacy", "checked-components-v1"], default: "legacy", desc: "Generation model; components derive unambiguous WSDL selections" })
623
+ .option("checked-config", { type: "string", desc: "Optional component choices, extra metadata origins or closed offline snapshots" })
624
+ .option("checked-report", { type: "string", desc: "Write versioned component planning JSON on success or refusal" })
625
+ .option("checked-draft", { type: "string", desc: "Write minimal component missing-schema configuration when needed" })
626
+ .option("force-checked-files", { type: "boolean", default: false, desc: "Explicitly replace requested planning report/draft files" })
578
627
  // Per-artifact outputs
579
628
  .option("client-dir", {
580
629
  type: "string",
@@ -731,6 +780,75 @@ if (rawArgs[0] === "pipeline") {
731
780
  .strict()
732
781
  .help()
733
782
  .parse();
783
+ if (pipelineArgv.model === 'checked-components-v1') {
784
+ const allowed = new Set(['model', 'checked-config', 'checked-report', 'checked-draft', 'force-checked-files', 'wsdl-source', 'client-dir', 'gateway-dir', 'openapi-file',
785
+ 'gateway-service-name', 'gateway-version-prefix', 'init-app', 'app-dir', 'app-host', 'app-port', 'force-init',
786
+ 'test-dir', 'force-test', 'help', 'openapi-format']);
787
+ for (const arg of rawArgs.slice(1).filter(a => a.startsWith('--'))) {
788
+ if (!allowed.has(arg.slice(2).split('=')[0]))
789
+ handleCLIError(`Unsupported checked model option: ${arg.split('=')[0]}`);
790
+ }
791
+ if (pipelineArgv.model !== 'checked-components-v1' && (pipelineArgv['checked-report'] || pipelineArgv['checked-draft'] || pipelineArgv['force-checked-files']))
792
+ handleCLIError('Planning files require checked-components-v1');
793
+ if (pipelineArgv['init-app'] && !pipelineArgv['app-dir'])
794
+ handleCLIError(`${pipelineArgv.model} requires explicit --app-dir with --init-app`);
795
+ if (pipelineArgv['openapi-format'] && pipelineArgv['openapi-format'] !== 'json')
796
+ handleCLIError(`${pipelineArgv.model} emits JSON OpenAPI only`);
797
+ const { CheckedPlanningError, writeCheckedPlanningFile, prepareCheckedComponentPlan } = await import('./checkedPlanning.js');
798
+ const supplied = pipelineArgv['checked-config'] ? JSON.parse(fs.readFileSync(pipelineArgv['checked-config'], 'utf8')) : {};
799
+ const writePlan = (report) => {
800
+ if (pipelineArgv['checked-report'])
801
+ writeCheckedPlanningFile(pipelineArgv['checked-report'], report, pipelineArgv['force-checked-files']);
802
+ if (pipelineArgv['checked-draft'] && report.resolution)
803
+ writeCheckedPlanningFile(pipelineArgv['checked-draft'], report.resolution.configuration, pipelineArgv['force-checked-files']);
804
+ };
805
+ const controller = new AbortController();
806
+ const cancel = () => controller.abort();
807
+ process.on('SIGINT', cancel);
808
+ let checkedExitCode = 0;
809
+ try {
810
+ if (pipelineArgv.model === 'checked-components-v1' && (!supplied || typeof supplied !== 'object' || Array.isArray(supplied))) {
811
+ throw new CheckedPlanningError((await prepareCheckedComponentPlan(pipelineArgv['wsdl-source'], supplied)).report);
812
+ }
813
+ const result = await runGenerationPipeline({
814
+ model: pipelineArgv.model,
815
+ checkedComponents: { ...supplied, signal: controller.signal },
816
+ wsdl: pipelineArgv['wsdl-source'], catalogOut: '',
817
+ clientOutDir: pipelineArgv['client-dir'],
818
+ openapi: { outFile: pipelineArgv['openapi-file'] },
819
+ gateway: { outDir: pipelineArgv['gateway-dir'] ?? '', serviceSlug: pipelineArgv['gateway-service-name'] ?? '',
820
+ versionSlug: pipelineArgv['gateway-version-prefix'] ?? '' },
821
+ app: pipelineArgv['init-app'] ? { appDir: pipelineArgv['app-dir'] ?? '', force: pipelineArgv['force-init'],
822
+ host: pipelineArgv['app-host'], port: pipelineArgv['app-port'] } : undefined,
823
+ test: pipelineArgv['test-dir'] ? { testDir: pipelineArgv['test-dir'], force: pipelineArgv['force-test'] } : undefined,
824
+ });
825
+ if (result.planning)
826
+ writePlan(result.planning);
827
+ console.log(JSON.stringify(result.checked, null, 2));
828
+ }
829
+ catch (error) {
830
+ if (!(error instanceof CheckedPlanningError))
831
+ throw error;
832
+ writePlan(error.report);
833
+ if (process.env.DEBUG?.split(/[\s,]+/).includes('wsdl-tsc'))
834
+ console.error(error);
835
+ else {
836
+ const { formatCheckedCliRefusal } = await import('./util/checkedCliDiagnostics.js');
837
+ console.error(formatCheckedCliRefusal(error.report));
838
+ }
839
+ // @why Drain diagnostic writes before the CLI's explicit exit, including piped DEBUG reports.
840
+ await new Promise(resolve => { process.stderr.write('', () => resolve()); });
841
+ checkedExitCode = 1;
842
+ }
843
+ finally {
844
+ process.off('SIGINT', cancel);
845
+ }
846
+ process.exit(checkedExitCode);
847
+ }
848
+ if (pipelineArgv['checked-config'])
849
+ handleCLIError('--checked-config requires --model checked-components-v1');
850
+ if (pipelineArgv['checked-report'] || pipelineArgv['checked-draft'] || pipelineArgv['force-checked-files'])
851
+ handleCLIError('Planning files require checked-components-v1');
734
852
  const format = pipelineArgv["openapi-format"] ?? "json";
735
853
  const clientOut = pipelineArgv["client-dir"];
736
854
  const openapiOut = pipelineArgv["openapi-file"];
@@ -0,0 +1,96 @@
1
+ import { DIRECT_CLIENT_RUNTIME_VERSION, COMPONENT_CLIENT_RUNTIME_VERSION } from './directClientVersion.js';
2
+ interface Name {
3
+ readonly namespace: string;
4
+ readonly local: string;
5
+ }
6
+ interface Usage {
7
+ readonly nodes: number;
8
+ readonly work: number;
9
+ }
10
+ interface Options {
11
+ readonly localSource: string;
12
+ readonly fileRoots: readonly string[];
13
+ readonly capsule: Uint8Array;
14
+ readonly soap: {
15
+ readonly service: Name;
16
+ readonly port: string;
17
+ readonly endpoint: string;
18
+ readonly allowEndpoint: (endpoint: URL) => boolean;
19
+ readonly signal?: AbortSignal;
20
+ readonly timeoutMs?: number;
21
+ readonly capabilities?: readonly string[];
22
+ readonly limits?: {
23
+ readonly maxBytes?: number;
24
+ readonly maxDepth?: number;
25
+ readonly maxNodes?: number;
26
+ readonly maxText?: number;
27
+ };
28
+ };
29
+ }
30
+ interface Failure {
31
+ readonly kind: 'incompatible-artifact' | 'unsupported' | 'missing-authority' | 'resource-limit' | 'cancelled' | 'inconclusive' | 'invalid-schema' | 'scalar-invalid' | 'value-invalid' | 'xml-invalid' | 'mismatch' | 'transport' | 'protocol';
32
+ readonly rule: string;
33
+ readonly usage: Usage;
34
+ readonly repair?: string;
35
+ readonly phase?: 'input' | 'response';
36
+ }
37
+ type Success = {
38
+ readonly value: unknown;
39
+ readonly admitted: false;
40
+ readonly status: number;
41
+ readonly usage: Usage;
42
+ readonly responseBytes: Uint8Array;
43
+ } & ({
44
+ readonly kind: 'soap-response';
45
+ } | {
46
+ readonly kind: 'soap-fault';
47
+ readonly fault: {
48
+ readonly name: string;
49
+ readonly code: Name;
50
+ readonly string: string;
51
+ readonly actor?: string;
52
+ };
53
+ });
54
+ type ComponentOptions = Omit<Options, 'soap'> & {
55
+ readonly sourceResources: readonly {
56
+ readonly uri: string;
57
+ readonly file: string;
58
+ readonly canonicalUri?: string;
59
+ }[];
60
+ readonly sourceUri?: string;
61
+ readonly sourceOrigins: readonly string[];
62
+ readonly namespaceLocations?: readonly {
63
+ readonly namespace: string;
64
+ readonly location: string;
65
+ }[];
66
+ readonly standardLibraries?: readonly string[];
67
+ readonly recordSources?: readonly {
68
+ readonly selector: {
69
+ readonly portType: Name;
70
+ readonly binding: Name;
71
+ readonly operation: string;
72
+ };
73
+ readonly source: string;
74
+ }[];
75
+ readonly soap: Omit<Options['soap'], 'endpoint' | 'allowEndpoint'> & {
76
+ readonly ca?: string;
77
+ readonly endpoint?: string;
78
+ readonly allowEndpoint?: (endpoint: URL) => boolean;
79
+ };
80
+ };
81
+ /** Scoped direct-grammar binding used by the opt-in checked gateway preview. */
82
+ export declare const checkedDirectRuntimeV1: Readonly<{
83
+ version: typeof DIRECT_CLIENT_RUNTIME_VERSION;
84
+ execute(expectedBase64: string, input: unknown, options: Options, version: typeof DIRECT_CLIENT_RUNTIME_VERSION): Promise<Failure | Success>;
85
+ }>;
86
+ /** Component injection protocol over the shared checked source, artifact and SOAP runtime.
87
+ * @remarks Caller-authorized physical source resources are read independently of embedded artifact bytes.
88
+ * Component runtime v2 derives endpoint intent; explicit restrictions and TLS trust still apply.
89
+ * This entry accepts no diagnostic budget or deadline defaults.
90
+ * @returns Native-validated normal/fault values or explicit refusal. No gateway admission is issued here.
91
+ */
92
+ export declare const checkedComponentRuntimeV1: Readonly<{
93
+ version: typeof COMPONENT_CLIENT_RUNTIME_VERSION;
94
+ execute(expectedBase64: string, input: unknown, options: ComponentOptions, version: typeof COMPONENT_CLIENT_RUNTIME_VERSION): Promise<Failure | Success>;
95
+ }>;
96
+ export {};
@@ -0,0 +1,43 @@
1
+ import { types } from 'node:util';
2
+ import { directClientRuntime, componentClientRuntime } from './directClientRuntime.js';
3
+ import { DIRECT_CLIENT_RUNTIME_VERSION, DIRECT_CLIENT_RUNTIME_REPAIR, COMPONENT_CLIENT_RUNTIME_VERSION, COMPONENT_CLIENT_RUNTIME_REPAIR } from './directClientVersion.js';
4
+ function dataOptions(options, allowed) {
5
+ return !!options && typeof options === 'object' && !types.isProxy(options)
6
+ && [null, Object.prototype].includes(Object.getPrototypeOf(options))
7
+ && !Reflect.ownKeys(options).some(key => typeof key !== 'string' || !allowed.includes(key)
8
+ || !Object.hasOwn(Object.getOwnPropertyDescriptor(options, key), 'value'));
9
+ }
10
+ /** Scoped direct-grammar binding used by the opt-in checked gateway preview. */
11
+ export const checkedDirectRuntimeV1 = Object.freeze({
12
+ version: DIRECT_CLIENT_RUNTIME_VERSION,
13
+ async execute(expectedBase64, input, options, version) {
14
+ if (version !== DIRECT_CLIENT_RUNTIME_VERSION)
15
+ return Object.freeze({ kind: 'incompatible-artifact',
16
+ rule: 'generated-runtime-version', repair: DIRECT_CLIENT_RUNTIME_REPAIR,
17
+ usage: Object.freeze({ nodes: 0, work: 0 }) });
18
+ // The public entry never accepts the private profiling hook, even from JavaScript.
19
+ // Inspect descriptors before forwarding so getters/proxies cannot supply it.
20
+ if (!dataOptions(options, ['localSource', 'fileRoots', 'capsule', 'soap'])) {
21
+ return Object.freeze({ kind: 'unsupported', rule: 'data-only checked direct options required', usage: Object.freeze({ nodes: 0, work: 0 }) });
22
+ }
23
+ return directClientRuntime.execute(expectedBase64, input, options);
24
+ },
25
+ });
26
+ /** Component injection protocol over the shared checked source, artifact and SOAP runtime.
27
+ * @remarks Caller-authorized physical source resources are read independently of embedded artifact bytes.
28
+ * Component runtime v2 derives endpoint intent; explicit restrictions and TLS trust still apply.
29
+ * This entry accepts no diagnostic budget or deadline defaults.
30
+ * @returns Native-validated normal/fault values or explicit refusal. No gateway admission is issued here.
31
+ */
32
+ export const checkedComponentRuntimeV1 = Object.freeze({
33
+ version: COMPONENT_CLIENT_RUNTIME_VERSION,
34
+ async execute(expectedBase64, input, options, version) {
35
+ if (version !== COMPONENT_CLIENT_RUNTIME_VERSION)
36
+ return Object.freeze({ kind: 'incompatible-artifact',
37
+ rule: 'generated-runtime-version', repair: COMPONENT_CLIENT_RUNTIME_REPAIR, usage: Object.freeze({ nodes: 0, work: 0 }) });
38
+ if (!dataOptions(options, ['localSource', 'fileRoots', 'capsule', 'soap', 'sourceResources', 'sourceOrigins', 'sourceUri', 'namespaceLocations', 'standardLibraries', 'recordSources'])) {
39
+ return Object.freeze({ kind: 'unsupported', rule: 'data-only checked component options required', usage: Object.freeze({ nodes: 0, work: 0 }) });
40
+ }
41
+ return componentClientRuntime.execute(expectedBase64, input, options);
42
+ },
43
+ });