@techspokes/typescript-wsdl-client 1.1.3 → 1.1.5

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 (360) hide show
  1. package/README.md +50 -1
  2. package/dist/app/generateApp.d.ts.map +1 -1
  3. package/dist/app/generateApp.js +8 -6
  4. package/dist/cli.js +49 -5
  5. package/dist/client/checkedDirectRuntime.d.ts +59 -0
  6. package/dist/client/checkedDirectRuntime.d.ts.map +1 -0
  7. package/dist/client/checkedDirectRuntime.js +23 -0
  8. package/dist/client/directClientRuntime.d.ts +49 -0
  9. package/dist/client/directClientRuntime.d.ts.map +1 -0
  10. package/dist/client/directClientRuntime.js +112 -0
  11. package/dist/client/directClientVersion.d.ts +4 -0
  12. package/dist/client/directClientVersion.d.ts.map +1 -0
  13. package/dist/client/directClientVersion.js +3 -0
  14. package/dist/client/generateClient.d.ts.map +1 -1
  15. package/dist/client/generateClient.js +22 -9
  16. package/dist/client/generateDirectClient.d.ts +14 -0
  17. package/dist/client/generateDirectClient.d.ts.map +1 -0
  18. package/dist/client/generateDirectClient.js +136 -0
  19. package/dist/compiler/buildCanonicalGraph.d.ts +7 -0
  20. package/dist/compiler/buildCanonicalGraph.d.ts.map +1 -0
  21. package/dist/compiler/buildCanonicalGraph.js +381 -0
  22. package/dist/compiler/canonicalGraph.d.ts +198 -0
  23. package/dist/compiler/canonicalGraph.d.ts.map +1 -0
  24. package/dist/compiler/canonicalGraph.js +37 -0
  25. package/dist/compiler/catalogErrors.d.ts +18 -0
  26. package/dist/compiler/catalogErrors.d.ts.map +1 -0
  27. package/dist/compiler/catalogErrors.js +86 -0
  28. package/dist/compiler/catalogProvenance.d.ts +15 -0
  29. package/dist/compiler/catalogProvenance.d.ts.map +1 -0
  30. package/dist/compiler/catalogProvenance.js +229 -0
  31. package/dist/compiler/checkedAssessment.d.ts +91 -0
  32. package/dist/compiler/checkedAssessment.d.ts.map +1 -0
  33. package/dist/compiler/checkedAssessment.js +300 -0
  34. package/dist/compiler/checkedSourcePreparation.d.ts +35 -0
  35. package/dist/compiler/checkedSourcePreparation.d.ts.map +1 -0
  36. package/dist/compiler/checkedSourcePreparation.js +131 -0
  37. package/dist/compiler/complexTypeContent.d.ts +59 -0
  38. package/dist/compiler/complexTypeContent.d.ts.map +1 -0
  39. package/dist/compiler/complexTypeContent.js +558 -0
  40. package/dist/compiler/composeCanonicalGraph.d.ts +69 -0
  41. package/dist/compiler/composeCanonicalGraph.d.ts.map +1 -0
  42. package/dist/compiler/composeCanonicalGraph.js +252 -0
  43. package/dist/compiler/dataOwnership.d.ts +22 -0
  44. package/dist/compiler/dataOwnership.d.ts.map +1 -0
  45. package/dist/compiler/dataOwnership.js +157 -0
  46. package/dist/compiler/datatypeValues.d.ts +47 -0
  47. package/dist/compiler/datatypeValues.d.ts.map +1 -0
  48. package/dist/compiler/datatypeValues.js +275 -0
  49. package/dist/compiler/directCodec.d.ts +59 -0
  50. package/dist/compiler/directCodec.d.ts.map +1 -0
  51. package/dist/compiler/directCodec.js +192 -0
  52. package/dist/compiler/directExecutionPolicy.d.ts +10 -0
  53. package/dist/compiler/directExecutionPolicy.d.ts.map +1 -0
  54. package/dist/compiler/directExecutionPolicy.js +17 -0
  55. package/dist/compiler/directOperation.d.ts +72 -0
  56. package/dist/compiler/directOperation.d.ts.map +1 -0
  57. package/dist/compiler/directOperation.js +282 -0
  58. package/dist/compiler/directSoap.d.ts +42 -0
  59. package/dist/compiler/directSoap.d.ts.map +1 -0
  60. package/dist/compiler/directSoap.js +298 -0
  61. package/dist/compiler/directSoapSource.d.ts +15 -0
  62. package/dist/compiler/directSoapSource.d.ts.map +1 -0
  63. package/dist/compiler/directSoapSource.js +86 -0
  64. package/dist/compiler/directSourceCapsule.d.ts +97 -0
  65. package/dist/compiler/directSourceCapsule.d.ts.map +1 -0
  66. package/dist/compiler/directSourceCapsule.js +305 -0
  67. package/dist/compiler/directStructure.d.ts +51 -0
  68. package/dist/compiler/directStructure.d.ts.map +1 -0
  69. package/dist/compiler/directStructure.js +252 -0
  70. package/dist/compiler/directStructurePlan.d.ts +16 -0
  71. package/dist/compiler/directStructurePlan.d.ts.map +1 -0
  72. package/dist/compiler/directStructurePlan.js +58 -0
  73. package/dist/compiler/directValues.d.ts +69 -0
  74. package/dist/compiler/directValues.d.ts.map +1 -0
  75. package/dist/compiler/directValues.js +282 -0
  76. package/dist/compiler/finiteRe01Verification.d.ts +140 -0
  77. package/dist/compiler/finiteRe01Verification.d.ts.map +1 -0
  78. package/dist/compiler/finiteRe01Verification.js +830 -0
  79. package/dist/compiler/graphTraversal.d.ts +11 -0
  80. package/dist/compiler/graphTraversal.d.ts.map +1 -0
  81. package/dist/compiler/graphTraversal.js +37 -0
  82. package/dist/compiler/hypotheticalScopedIdentity.d.ts +23 -0
  83. package/dist/compiler/hypotheticalScopedIdentity.d.ts.map +1 -0
  84. package/dist/compiler/hypotheticalScopedIdentity.js +81 -0
  85. package/dist/compiler/occurrenceAnalysis.d.ts +65 -0
  86. package/dist/compiler/occurrenceAnalysis.d.ts.map +1 -0
  87. package/dist/compiler/occurrenceAnalysis.js +300 -0
  88. package/dist/compiler/originalSourceMembership.d.ts +6 -0
  89. package/dist/compiler/originalSourceMembership.d.ts.map +1 -0
  90. package/dist/compiler/originalSourceMembership.js +31 -0
  91. package/dist/compiler/particleAttribution.d.ts +17 -0
  92. package/dist/compiler/particleAttribution.d.ts.map +1 -0
  93. package/dist/compiler/particleAttribution.js +474 -0
  94. package/dist/compiler/particleDeclarationConsistency.d.ts +24 -0
  95. package/dist/compiler/particleDeclarationConsistency.d.ts.map +1 -0
  96. package/dist/compiler/particleDeclarationConsistency.js +197 -0
  97. package/dist/compiler/particleExtension.d.ts +22 -0
  98. package/dist/compiler/particleExtension.d.ts.map +1 -0
  99. package/dist/compiler/particleExtension.js +119 -0
  100. package/dist/compiler/particleLocalAssessment.d.ts +20 -0
  101. package/dist/compiler/particleLocalAssessment.d.ts.map +1 -0
  102. package/dist/compiler/particleLocalAssessment.js +92 -0
  103. package/dist/compiler/particleRestriction.d.ts +24 -0
  104. package/dist/compiler/particleRestriction.d.ts.map +1 -0
  105. package/dist/compiler/particleRestriction.js +489 -0
  106. package/dist/compiler/particleSemanticView.d.ts +50 -0
  107. package/dist/compiler/particleSemanticView.d.ts.map +1 -0
  108. package/dist/compiler/particleSemanticView.js +297 -0
  109. package/dist/compiler/particleWildcardRelation.d.ts +88 -0
  110. package/dist/compiler/particleWildcardRelation.d.ts.map +1 -0
  111. package/dist/compiler/particleWildcardRelation.js +143 -0
  112. package/dist/compiler/re01CandidateCorrespondence.d.ts +64 -0
  113. package/dist/compiler/re01CandidateCorrespondence.d.ts.map +1 -0
  114. package/dist/compiler/re01CandidateCorrespondence.js +572 -0
  115. package/dist/compiler/re01TypeProperties.d.ts +71 -0
  116. package/dist/compiler/re01TypeProperties.d.ts.map +1 -0
  117. package/dist/compiler/re01TypeProperties.js +120 -0
  118. package/dist/compiler/re01TypePropertyValidation.d.ts +23 -0
  119. package/dist/compiler/re01TypePropertyValidation.d.ts.map +1 -0
  120. package/dist/compiler/re01TypePropertyValidation.js +161 -0
  121. package/dist/compiler/resolveCanonicalGraph.d.ts +38 -0
  122. package/dist/compiler/resolveCanonicalGraph.d.ts.map +1 -0
  123. package/dist/compiler/resolveCanonicalGraph.js +170 -0
  124. package/dist/compiler/scalarSchemaAssessment.d.ts +425 -0
  125. package/dist/compiler/scalarSchemaAssessment.d.ts.map +1 -0
  126. package/dist/compiler/scalarSchemaAssessment.js +5198 -0
  127. package/dist/compiler/schemaAttributeGroupProperties.d.ts +17 -0
  128. package/dist/compiler/schemaAttributeGroupProperties.d.ts.map +1 -0
  129. package/dist/compiler/schemaAttributeGroupProperties.js +53 -0
  130. package/dist/compiler/schemaAttributeProperties.d.ts +10 -0
  131. package/dist/compiler/schemaAttributeProperties.d.ts.map +1 -0
  132. package/dist/compiler/schemaAttributeProperties.js +11 -0
  133. package/dist/compiler/schemaAttributeUses.d.ts +90 -0
  134. package/dist/compiler/schemaAttributeUses.d.ts.map +1 -0
  135. package/dist/compiler/schemaAttributeUses.js +725 -0
  136. package/dist/compiler/schemaBinaryWordReconstruction.d.ts +10 -0
  137. package/dist/compiler/schemaBinaryWordReconstruction.d.ts.map +1 -0
  138. package/dist/compiler/schemaBinaryWordReconstruction.js +33 -0
  139. package/dist/compiler/schemaBuiltinFacets.d.ts +14 -0
  140. package/dist/compiler/schemaBuiltinFacets.d.ts.map +1 -0
  141. package/dist/compiler/schemaBuiltinFacets.js +51 -0
  142. package/dist/compiler/schemaCalendarImages.d.ts +8 -0
  143. package/dist/compiler/schemaCalendarImages.d.ts.map +1 -0
  144. package/dist/compiler/schemaCalendarImages.js +204 -0
  145. package/dist/compiler/schemaCalendarLanguage.d.ts +11 -0
  146. package/dist/compiler/schemaCalendarLanguage.d.ts.map +1 -0
  147. package/dist/compiler/schemaCalendarLanguage.js +227 -0
  148. package/dist/compiler/schemaComponentEquality.d.ts +28 -0
  149. package/dist/compiler/schemaComponentEquality.d.ts.map +1 -0
  150. package/dist/compiler/schemaComponentEquality.js +446 -0
  151. package/dist/compiler/schemaConstructionAssessment.d.ts +46 -0
  152. package/dist/compiler/schemaConstructionAssessment.d.ts.map +1 -0
  153. package/dist/compiler/schemaConstructionAssessment.js +663 -0
  154. package/dist/compiler/schemaDatatypeValues.d.ts +4 -0
  155. package/dist/compiler/schemaDatatypeValues.d.ts.map +1 -0
  156. package/dist/compiler/schemaDatatypeValues.js +2 -0
  157. package/dist/compiler/schemaDecimalLanguage.d.ts +7 -0
  158. package/dist/compiler/schemaDecimalLanguage.d.ts.map +1 -0
  159. package/dist/compiler/schemaDecimalLanguage.js +102 -0
  160. package/dist/compiler/schemaDeclarationPrimitives.d.ts +34 -0
  161. package/dist/compiler/schemaDeclarationPrimitives.d.ts.map +1 -0
  162. package/dist/compiler/schemaDeclarationPrimitives.js +194 -0
  163. package/dist/compiler/schemaDocumentSyntax.d.ts +55 -0
  164. package/dist/compiler/schemaDocumentSyntax.d.ts.map +1 -0
  165. package/dist/compiler/schemaDocumentSyntax.js +294 -0
  166. package/dist/compiler/schemaDurationLanguage.d.ts +11 -0
  167. package/dist/compiler/schemaDurationLanguage.d.ts.map +1 -0
  168. package/dist/compiler/schemaDurationLanguage.js +170 -0
  169. package/dist/compiler/schemaElementProperties.d.ts +16 -0
  170. package/dist/compiler/schemaElementProperties.d.ts.map +1 -0
  171. package/dist/compiler/schemaElementProperties.js +23 -0
  172. package/dist/compiler/schemaEndpointWordCapacity.d.ts +36 -0
  173. package/dist/compiler/schemaEndpointWordCapacity.d.ts.map +1 -0
  174. package/dist/compiler/schemaEndpointWordCapacity.js +39 -0
  175. package/dist/compiler/schemaExactCalendar.d.ts +73 -0
  176. package/dist/compiler/schemaExactCalendar.d.ts.map +1 -0
  177. package/dist/compiler/schemaExactCalendar.js +264 -0
  178. package/dist/compiler/schemaFacetAnnotation.d.ts +32 -0
  179. package/dist/compiler/schemaFacetAnnotation.d.ts.map +1 -0
  180. package/dist/compiler/schemaFacetAnnotation.js +199 -0
  181. package/dist/compiler/schemaGeneratedScalarShape.d.ts +35 -0
  182. package/dist/compiler/schemaGeneratedScalarShape.d.ts.map +1 -0
  183. package/dist/compiler/schemaGeneratedScalarShape.js +176 -0
  184. package/dist/compiler/schemaIdentityConstraints.d.ts +73 -0
  185. package/dist/compiler/schemaIdentityConstraints.d.ts.map +1 -0
  186. package/dist/compiler/schemaIdentityConstraints.js +362 -0
  187. package/dist/compiler/schemaIeeeLanguage.d.ts +43 -0
  188. package/dist/compiler/schemaIeeeLanguage.d.ts.map +1 -0
  189. package/dist/compiler/schemaIeeeLanguage.js +759 -0
  190. package/dist/compiler/schemaIntegerImages.d.ts +11 -0
  191. package/dist/compiler/schemaIntegerImages.d.ts.map +1 -0
  192. package/dist/compiler/schemaIntegerImages.js +113 -0
  193. package/dist/compiler/schemaLexicalPredicates.d.ts +29 -0
  194. package/dist/compiler/schemaLexicalPredicates.d.ts.map +1 -0
  195. package/dist/compiler/schemaLexicalPredicates.js +63 -0
  196. package/dist/compiler/schemaNotationProperties.d.ts +32 -0
  197. package/dist/compiler/schemaNotationProperties.d.ts.map +1 -0
  198. package/dist/compiler/schemaNotationProperties.js +84 -0
  199. package/dist/compiler/schemaNumericImageConditions.d.ts +24 -0
  200. package/dist/compiler/schemaNumericImageConditions.d.ts.map +1 -0
  201. package/dist/compiler/schemaNumericImageConditions.js +66 -0
  202. package/dist/compiler/schemaParticleWildcardProperties.d.ts +20 -0
  203. package/dist/compiler/schemaParticleWildcardProperties.d.ts.map +1 -0
  204. package/dist/compiler/schemaParticleWildcardProperties.js +43 -0
  205. package/dist/compiler/schemaPattern.d.ts +1062 -0
  206. package/dist/compiler/schemaPattern.d.ts.map +1 -0
  207. package/dist/compiler/schemaPattern.js +581 -0
  208. package/dist/compiler/schemaRegularLanguage.d.ts +67 -0
  209. package/dist/compiler/schemaRegularLanguage.d.ts.map +1 -0
  210. package/dist/compiler/schemaRegularLanguage.js +1166 -0
  211. package/dist/compiler/schemaScalarContext.d.ts +81 -0
  212. package/dist/compiler/schemaScalarContext.d.ts.map +1 -0
  213. package/dist/compiler/schemaScalarContext.js +78 -0
  214. package/dist/compiler/schemaScalarKernel.d.ts +182 -0
  215. package/dist/compiler/schemaScalarKernel.d.ts.map +1 -0
  216. package/dist/compiler/schemaScalarKernel.js +391 -0
  217. package/dist/compiler/schemaScalarWitnesses.d.ts +6 -0
  218. package/dist/compiler/schemaScalarWitnesses.d.ts.map +1 -0
  219. package/dist/compiler/schemaScalarWitnesses.js +118 -0
  220. package/dist/compiler/schemaSimpleTypeProperties.d.ts +95 -0
  221. package/dist/compiler/schemaSimpleTypeProperties.d.ts.map +1 -0
  222. package/dist/compiler/schemaSimpleTypeProperties.js +103 -0
  223. package/dist/compiler/schemaSourceGrammar.d.ts +27 -0
  224. package/dist/compiler/schemaSourceGrammar.d.ts.map +1 -0
  225. package/dist/compiler/schemaSourceGrammar.js +290 -0
  226. package/dist/compiler/schemaSourceLexical.d.ts +4 -0
  227. package/dist/compiler/schemaSourceLexical.d.ts.map +1 -0
  228. package/dist/compiler/schemaSourceLexical.js +12 -0
  229. package/dist/compiler/schemaSourceValues.d.ts +51 -0
  230. package/dist/compiler/schemaSourceValues.d.ts.map +1 -0
  231. package/dist/compiler/schemaSourceValues.js +225 -0
  232. package/dist/compiler/schemaSourceWildcards.d.ts +28 -0
  233. package/dist/compiler/schemaSourceWildcards.d.ts.map +1 -0
  234. package/dist/compiler/schemaSourceWildcards.js +247 -0
  235. package/dist/compiler/schemaSymbolicSequences.d.ts +16 -0
  236. package/dist/compiler/schemaSymbolicSequences.d.ts.map +1 -0
  237. package/dist/compiler/schemaSymbolicSequences.js +99 -0
  238. package/dist/compiler/schemaSymbolicValueSets.d.ts +32 -0
  239. package/dist/compiler/schemaSymbolicValueSets.d.ts.map +1 -0
  240. package/dist/compiler/schemaSymbolicValueSets.js +149 -0
  241. package/dist/compiler/schemaSyntaxAssessment.d.ts +25 -0
  242. package/dist/compiler/schemaSyntaxAssessment.d.ts.map +1 -0
  243. package/dist/compiler/schemaSyntaxAssessment.js +361 -0
  244. package/dist/compiler/schemaTemporalAliases.d.ts +6 -0
  245. package/dist/compiler/schemaTemporalAliases.d.ts.map +1 -0
  246. package/dist/compiler/schemaTemporalAliases.js +195 -0
  247. package/dist/compiler/schemaTokenImages.d.ts +9 -0
  248. package/dist/compiler/schemaTokenImages.d.ts.map +1 -0
  249. package/dist/compiler/schemaTokenImages.js +142 -0
  250. package/dist/compiler/schemaTypeIdentity.d.ts +39 -0
  251. package/dist/compiler/schemaTypeIdentity.d.ts.map +1 -0
  252. package/dist/compiler/schemaTypeIdentity.js +78 -0
  253. package/dist/compiler/schemaTypeRelations.d.ts +38 -0
  254. package/dist/compiler/schemaTypeRelations.d.ts.map +1 -0
  255. package/dist/compiler/schemaTypeRelations.js +576 -0
  256. package/dist/compiler/schemaUri.d.ts +13 -0
  257. package/dist/compiler/schemaUri.d.ts.map +1 -0
  258. package/dist/compiler/schemaUri.js +103 -0
  259. package/dist/compiler/schemaValueContext.d.ts +26 -0
  260. package/dist/compiler/schemaValueContext.d.ts.map +1 -0
  261. package/dist/compiler/schemaValueContext.js +1 -0
  262. package/dist/compiler/schemaValueImages.d.ts +10 -0
  263. package/dist/compiler/schemaValueImages.d.ts.map +1 -0
  264. package/dist/compiler/schemaValueImages.js +142 -0
  265. package/dist/compiler/schemaValueSequences.d.ts +15 -0
  266. package/dist/compiler/schemaValueSequences.d.ts.map +1 -0
  267. package/dist/compiler/schemaValueSequences.js +19 -0
  268. package/dist/compiler/semanticBudget.d.ts +50 -0
  269. package/dist/compiler/semanticBudget.d.ts.map +1 -0
  270. package/dist/compiler/semanticBudget.js +178 -0
  271. package/dist/compiler/semanticCatalog.d.ts +122 -0
  272. package/dist/compiler/semanticCatalog.d.ts.map +1 -0
  273. package/dist/compiler/semanticCatalog.js +160 -0
  274. package/dist/compiler/semanticContext.d.ts +172 -0
  275. package/dist/compiler/semanticContext.d.ts.map +1 -0
  276. package/dist/compiler/semanticContext.js +1168 -0
  277. package/dist/compiler/semanticTypeDependencies.d.ts +8 -0
  278. package/dist/compiler/semanticTypeDependencies.d.ts.map +1 -0
  279. package/dist/compiler/semanticTypeDependencies.js +64 -0
  280. package/dist/compiler/semanticTypeReference.d.ts +24 -0
  281. package/dist/compiler/semanticTypeReference.d.ts.map +1 -0
  282. package/dist/compiler/semanticTypeReference.js +36 -0
  283. package/dist/compiler/shapeResolver.d.ts +1 -0
  284. package/dist/compiler/shapeResolver.d.ts.map +1 -1
  285. package/dist/compiler/shapeResolver.js +7 -9
  286. package/dist/compiler/sourceSchemaBinding.d.ts +26 -0
  287. package/dist/compiler/sourceSchemaBinding.d.ts.map +1 -0
  288. package/dist/compiler/sourceSchemaBinding.js +39 -0
  289. package/dist/compiler/structuralCompanions.d.ts +16 -0
  290. package/dist/compiler/structuralCompanions.d.ts.map +1 -0
  291. package/dist/compiler/structuralCompanions.js +232 -0
  292. package/dist/compiler/validateSemanticGraph.d.ts +5 -0
  293. package/dist/compiler/validateSemanticGraph.d.ts.map +1 -0
  294. package/dist/compiler/validateSemanticGraph.js +376 -0
  295. package/dist/compiler/wildcardAlgebra.d.ts +26 -0
  296. package/dist/compiler/wildcardAlgebra.d.ts.map +1 -0
  297. package/dist/compiler/wildcardAlgebra.js +155 -0
  298. package/dist/gateway/generateGateway.d.ts.map +1 -1
  299. package/dist/gateway/generateGateway.js +2 -2
  300. package/dist/index.d.ts +3 -0
  301. package/dist/index.d.ts.map +1 -1
  302. package/dist/index.js +2 -0
  303. package/dist/loader/orderedSyntax.d.ts +77 -0
  304. package/dist/loader/orderedSyntax.d.ts.map +1 -0
  305. package/dist/loader/orderedSyntax.js +202 -0
  306. package/dist/loader/resolutionDepth.d.ts +7 -0
  307. package/dist/loader/resolutionDepth.d.ts.map +1 -0
  308. package/dist/loader/resolutionDepth.js +65 -0
  309. package/dist/loader/schemaInput.d.ts +53 -0
  310. package/dist/loader/schemaInput.d.ts.map +1 -0
  311. package/dist/loader/schemaInput.js +212 -0
  312. package/dist/loader/schemaResources.d.ts +59 -0
  313. package/dist/loader/schemaResources.d.ts.map +1 -0
  314. package/dist/loader/schemaResources.js +292 -0
  315. package/dist/openapi/generateOpenAPI.d.ts.map +1 -1
  316. package/dist/openapi/generateOpenAPI.js +2 -2
  317. package/dist/test/generateTests.d.ts.map +1 -1
  318. package/dist/test/generateTests.js +2 -2
  319. package/dist/util/xmlWhitespace.d.ts +3 -0
  320. package/dist/util/xmlWhitespace.d.ts.map +1 -0
  321. package/dist/util/xmlWhitespace.js +4 -0
  322. package/docs/README.md +14 -1
  323. package/docs/architecture.md +9 -0
  324. package/docs/cli-reference.md +21 -1
  325. package/docs/content-model-analysis.md +92 -0
  326. package/docs/content-model-baseline.md +121 -0
  327. package/docs/content-model-catalog.md +116 -0
  328. package/docs/content-model-companions.md +90 -0
  329. package/docs/content-model-composition.md +103 -0
  330. package/docs/content-model-decisions.md +79 -0
  331. package/docs/content-model-gateway-feasibility.md +169 -0
  332. package/docs/content-model-graph.md +121 -0
  333. package/docs/content-model-loading.md +163 -0
  334. package/docs/content-model-matching.md +85 -0
  335. package/docs/content-model-readiness.md +144 -0
  336. package/docs/content-model-resolution.md +81 -0
  337. package/docs/content-model-s02-handoff.md +98 -0
  338. package/docs/content-model-s06-au-01.md +425 -0
  339. package/docs/content-model-s06-dt-01.md +386 -0
  340. package/docs/content-model-s06-pw-01.md +350 -0
  341. package/docs/content-model-s06-re-01-resolver-implementation.md +869 -0
  342. package/docs/content-model-s06-re-01-resolver.md +513 -0
  343. package/docs/content-model-s06-re-01-scalar-witnesses.md +1423 -0
  344. package/docs/content-model-s06-re-01-support-reconstruction.md +6337 -0
  345. package/docs/content-model-s06-re-01.md +7477 -0
  346. package/docs/content-model-s06-research-handoff.md +909 -0
  347. package/docs/content-model-shipped-fix.md +83 -0
  348. package/docs/content-model-soap-feasibility.md +165 -0
  349. package/docs/decisions/002-streamable-responses.md +2 -0
  350. package/docs/decisions/003-content-model-contracts.md +280 -0
  351. package/docs/direct-values.md +311 -0
  352. package/docs/generated-code.md +4 -0
  353. package/docs/reference-validation.md +243 -0
  354. package/docs/releases/v1.1.4.md +36 -0
  355. package/docs/releases/v1.1.5.md +38 -0
  356. package/docs/roadmap/README.md +2 -2
  357. package/docs/supported-patterns.md +13 -5
  358. package/package.json +27 -13
  359. package/src/generation/preambles/direct-client/typescript.preamble +3 -0
  360. package/src/runtime/clientStreamMethods.tpl.txt +1 -1
@@ -0,0 +1,198 @@
1
+ import type { ExpandedName, SyntaxAttribute, SyntaxElement, SyntaxSource } from "../loader/orderedSyntax.js";
2
+ export declare const GRAPH_MODEL: "xsd10-faithful-v1";
3
+ export declare const DEFAULT_GRAPH_NODES = 100000;
4
+ export declare const isBuiltinType: (local: string) => boolean;
5
+ export type NodeId = string;
6
+ export type SymbolRole = "element" | "attribute" | "type" | "group" | "attributeGroup" | "message" | "portType" | "binding" | "service";
7
+ export type Identity = Readonly<{
8
+ kind: "global";
9
+ role: SymbolRole;
10
+ name: ExpandedName;
11
+ } | {
12
+ kind: "scoped";
13
+ owner: NodeId;
14
+ path: string;
15
+ role: string;
16
+ }>;
17
+ export type GraphContext = Readonly<{
18
+ namespaces: Readonly<Record<string, string>>;
19
+ baseUri: string;
20
+ source: SyntaxSource;
21
+ effectiveNamespace: string;
22
+ chameleon: boolean;
23
+ schemaAttributes: readonly SyntaxAttribute[];
24
+ }>;
25
+ export type LexicalValue = Readonly<{
26
+ value: string;
27
+ context: GraphContext;
28
+ }>;
29
+ export type Reference = Readonly<{
30
+ kind: "symbol";
31
+ role: SymbolRole;
32
+ name: ExpandedName;
33
+ lexical: LexicalValue;
34
+ target?: NodeId;
35
+ } | {
36
+ kind: "builtin";
37
+ name: ExpandedName;
38
+ lexical?: LexicalValue;
39
+ } | {
40
+ kind: "local";
41
+ target: NodeId;
42
+ }>;
43
+ /** Canonical unsigned decimal strings; no Number conversion or derived occurrence summaries. */
44
+ export type Occurs = Readonly<{
45
+ min: string;
46
+ max: string | "unbounded";
47
+ }>;
48
+ export type ValueConstraint = Readonly<{
49
+ kind: "default" | "fixed";
50
+ lexical: LexicalValue;
51
+ }>;
52
+ export type Facet = Readonly<{
53
+ name: string;
54
+ lexical: LexicalValue;
55
+ fixed: boolean;
56
+ syntax: SyntaxElement;
57
+ }>;
58
+ export type Wildcard = Readonly<{
59
+ namespace: LexicalValue;
60
+ processContents: "strict" | "lax" | "skip";
61
+ }>;
62
+ type NodeBase = Readonly<{
63
+ id: NodeId;
64
+ identity: Identity;
65
+ context: GraphContext;
66
+ declaredAttributes: readonly SyntaxAttribute[];
67
+ annotations: readonly SyntaxElement[];
68
+ /** Unsupported/uninterpreted declarations remain visible for S06 capability assessment. */
69
+ retained: readonly SyntaxElement[];
70
+ /** Ordered restriction/list/union or content-wrapper syntax, including unassessed attributes. */
71
+ syntaxDetails: readonly SyntaxElement[];
72
+ }>;
73
+ export type ElementNode = NodeBase & Readonly<{
74
+ kind: "element";
75
+ name: ExpandedName;
76
+ type: Reference;
77
+ nillable: boolean;
78
+ abstract: boolean;
79
+ value?: ValueConstraint;
80
+ substitutionGroup?: Reference;
81
+ }>;
82
+ export type AttributeNode = NodeBase & Readonly<{
83
+ kind: "attribute";
84
+ name: ExpandedName;
85
+ type: Reference;
86
+ value?: ValueConstraint;
87
+ }>;
88
+ export type ParticleNode = NodeBase & Readonly<{
89
+ kind: "particle";
90
+ occurs: Occurs;
91
+ term: Readonly<{
92
+ kind: "sequence" | "choice" | "all";
93
+ children: readonly NodeId[];
94
+ } | {
95
+ kind: "element";
96
+ declaration: Reference;
97
+ } | {
98
+ kind: "group";
99
+ reference: Reference;
100
+ } | {
101
+ kind: "any";
102
+ wildcard: Wildcard;
103
+ }>;
104
+ }>;
105
+ export type AttributeUseNode = NodeBase & Readonly<{
106
+ kind: "attributeUse";
107
+ declaration: Reference;
108
+ use: "optional" | "required" | "prohibited";
109
+ value?: ValueConstraint;
110
+ }>;
111
+ export type AttributeGroupUseNode = NodeBase & Readonly<{
112
+ kind: "attributeGroupUse";
113
+ reference: Reference;
114
+ }>;
115
+ export type AttributeWildcardNode = NodeBase & Readonly<{
116
+ kind: "attributeWildcard";
117
+ wildcard: Wildcard;
118
+ }>;
119
+ export type SimpleTypeNode = NodeBase & Readonly<{
120
+ kind: "simpleType";
121
+ variety: Readonly<{
122
+ kind: "restriction";
123
+ base: Reference;
124
+ facets: readonly Facet[];
125
+ } | {
126
+ kind: "list";
127
+ item: Reference;
128
+ } | {
129
+ kind: "union";
130
+ members: readonly Reference[];
131
+ }>;
132
+ }>;
133
+ export type ComplexTypeNode = NodeBase & Readonly<{
134
+ kind: "complexType";
135
+ mixed: boolean;
136
+ abstract: boolean;
137
+ content?: NodeId;
138
+ attributes: readonly NodeId[];
139
+ derivation?: Readonly<{
140
+ kind: "extension" | "restriction";
141
+ contentKind: "simple" | "complex";
142
+ base: Reference;
143
+ inlineType?: Reference;
144
+ facets: readonly Facet[];
145
+ }>;
146
+ }>;
147
+ export type GroupNode = NodeBase & Readonly<{
148
+ kind: "group";
149
+ content: NodeId;
150
+ }>;
151
+ export type AttributeGroupNode = NodeBase & Readonly<{
152
+ kind: "attributeGroup";
153
+ attributes: readonly NodeId[];
154
+ }>;
155
+ /** WSDL names/references and ordered binding syntax; transport interpretation remains downstream. */
156
+ export type WsdlNode = NodeBase & Readonly<{
157
+ kind: "wsdl";
158
+ role: "message" | "portType" | "binding" | "service";
159
+ name: ExpandedName;
160
+ references: readonly Readonly<{
161
+ path: string;
162
+ attribute: string;
163
+ reference: Reference;
164
+ }>[];
165
+ syntax: SyntaxElement;
166
+ }>;
167
+ export type GraphNode = ElementNode | AttributeNode | ParticleNode | AttributeUseNode | AttributeGroupUseNode | AttributeWildcardNode | SimpleTypeNode | ComplexTypeNode | GroupNode | AttributeGroupNode | WsdlNode;
168
+ export type GraphOrigin = Readonly<{
169
+ interpretation: string;
170
+ context: GraphContext;
171
+ }>;
172
+ export type CanonicalGraph = Readonly<{
173
+ model: typeof GRAPH_MODEL;
174
+ nodes: readonly GraphNode[];
175
+ globals: readonly NodeId[];
176
+ origins: Readonly<Record<NodeId, readonly GraphOrigin[]>>;
177
+ schemaAnnotations: readonly SyntaxElement[];
178
+ schemaRetained: readonly Readonly<{
179
+ context: GraphContext;
180
+ syntax: SyntaxElement;
181
+ }>[];
182
+ /** Includes/imports are provenance, never symbol identity or eager composition. */
183
+ loading: Readonly<{
184
+ limits: import("../loader/schemaResources.js").LoadingLimits;
185
+ edges: readonly import("../loader/schemaInput.js").ResolutionEdge[];
186
+ }>;
187
+ }>;
188
+ export declare class GraphError extends Error {
189
+ readonly category: "invalid-schema" | "resource-limit";
190
+ readonly source?: SyntaxSource | undefined;
191
+ constructor(category: "invalid-schema" | "resource-limit", message: string, source?: SyntaxSource | undefined);
192
+ }
193
+ export declare function globalId(role: SymbolRole, name: ExpandedName): NodeId;
194
+ export declare function scopedId(owner: NodeId, path: string, role: string): NodeId;
195
+ export declare function wsdlReferenceRoles(node: SyntaxElement): Record<string, SymbolRole>;
196
+ export declare function deepFreeze<T>(value: T): T;
197
+ export {};
198
+ //# sourceMappingURL=canonicalGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonicalGraph.d.ts","sourceRoot":"","sources":["../../src/compiler/canonicalGraph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /** Internal, language-neutral S04 contract. S05 resolves and composes these references. */
2
+ import { createHash } from "node:crypto";
3
+ import { WSDL_NAMESPACE } from "../loader/orderedSyntax.js";
4
+ export const GRAPH_MODEL = "xsd10-faithful-v1";
5
+ export const DEFAULT_GRAPH_NODES = 100_000;
6
+ const builtinTypes = new Set("anyType anySimpleType string boolean decimal float double duration dateTime time date gYearMonth gYear gMonthDay gDay gMonth hexBinary base64Binary anyURI QName NOTATION normalizedString token language NMTOKEN NMTOKENS Name NCName ID IDREF IDREFS ENTITY ENTITIES integer nonPositiveInteger negativeInteger long int short byte nonNegativeInteger unsignedLong unsignedInt unsignedShort unsignedByte positiveInteger".split(" "));
7
+ export const isBuiltinType = (local) => builtinTypes.has(local);
8
+ export class GraphError extends Error {
9
+ category;
10
+ source;
11
+ constructor(category, message, source) {
12
+ super(message);
13
+ this.category = category;
14
+ this.source = source;
15
+ this.name = "GraphError";
16
+ }
17
+ }
18
+ export function globalId(role, name) {
19
+ return JSON.stringify(["global", role, name.namespace, name.local]);
20
+ }
21
+ export function scopedId(owner, path, role) {
22
+ return "scoped:" + createHash("sha256").update(JSON.stringify([owner, path, role])).digest("hex");
23
+ }
24
+ export function wsdlReferenceRoles(node) {
25
+ if (node.name.namespace !== WSDL_NAMESPACE)
26
+ return {};
27
+ return node.name.local === "part" ? { element: "element", type: "type" } : node.name.local === "binding" ? { type: "portType" }
28
+ : node.name.local === "port" ? { binding: "binding" } : ["input", "output", "fault"].includes(node.name.local) ? { message: "message" } : {};
29
+ }
30
+ export function deepFreeze(value) {
31
+ if (value && typeof value === "object" && !Object.isFrozen(value)) {
32
+ for (const child of Object.values(value))
33
+ deepFreeze(child);
34
+ Object.freeze(value);
35
+ }
36
+ return value;
37
+ }
@@ -0,0 +1,18 @@
1
+ export declare class CatalogError extends Error {
2
+ readonly category: "incompatible-artifact" | "invalid-schema" | "resource-limit";
3
+ readonly field?: string | undefined;
4
+ constructor(category: "incompatible-artifact" | "invalid-schema" | "resource-limit", message: string, field?: string | undefined);
5
+ }
6
+ export declare const DEFAULT_CATALOG_BYTES: number;
7
+ export declare const DEFAULT_CATALOG_DEPTH = 1024;
8
+ export type CatalogLimits = {
9
+ maxBytes?: number;
10
+ maxDepth?: number;
11
+ maxNodes?: number;
12
+ };
13
+ /** Property ordering is display ordering; array ordering always remains semantic. */
14
+ export declare function canonicalJson(value: unknown): string;
15
+ export declare function positiveLimit(value: number | undefined, fallback: number, name: string): number;
16
+ /** Scan nesting before JSON.parse can allocate an arbitrarily deep input. */
17
+ export declare function parseCatalogJson(text: string, limits?: CatalogLimits): unknown;
18
+ //# sourceMappingURL=catalogErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalogErrors.d.ts","sourceRoot":"","sources":["../../src/compiler/catalogErrors.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACzB,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,GAAG,gBAAgB,GAAG,gBAAgB;IAAmB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM;gBAAjH,QAAQ,EAAE,uBAAuB,GAAG,gBAAgB,GAAG,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAW,KAAK,CAAC,EAAE,MAAM,YAAA;CAGvI;AACD,eAAO,MAAM,qBAAqB,QAAmB,CAAC;AACtD,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,MAAM,MAAM,aAAa,GAAG;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC;AAEtF,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOpD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI/F;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,aAAkB,GAAG,OAAO,CA8BlF"}
@@ -0,0 +1,86 @@
1
+ export class CatalogError extends Error {
2
+ category;
3
+ field;
4
+ constructor(category, message, field) {
5
+ super(message);
6
+ this.category = category;
7
+ this.field = field;
8
+ this.name = "CatalogError";
9
+ }
10
+ }
11
+ export const DEFAULT_CATALOG_BYTES = 64 * 1024 * 1024;
12
+ export const DEFAULT_CATALOG_DEPTH = 1024;
13
+ /** Property ordering is display ordering; array ordering always remains semantic. */
14
+ export function canonicalJson(value) {
15
+ const order = (v) => {
16
+ if (Array.isArray(v))
17
+ return v.map(order);
18
+ if (v && typeof v === "object")
19
+ return Object.fromEntries(Object.keys(v).sort().filter(k => v[k] !== undefined).map(k => [k, order(v[k])]));
20
+ return v;
21
+ };
22
+ return JSON.stringify(order(value));
23
+ }
24
+ export function positiveLimit(value, fallback, name) {
25
+ const result = value ?? fallback;
26
+ if (!Number.isSafeInteger(result) || result < 1)
27
+ throw new RangeError(`${name} must be a positive safe integer`);
28
+ return result;
29
+ }
30
+ /** Scan nesting before JSON.parse can allocate an arbitrarily deep input. */
31
+ export function parseCatalogJson(text, limits = {}) {
32
+ const maxBytes = positiveLimit(limits.maxBytes, DEFAULT_CATALOG_BYTES, "maxBytes");
33
+ const maxDepth = positiveLimit(limits.maxDepth, DEFAULT_CATALOG_DEPTH, "maxDepth");
34
+ if (maxDepth > DEFAULT_CATALOG_DEPTH)
35
+ throw new RangeError(`maxDepth cannot exceed the reader safety ceiling ${DEFAULT_CATALOG_DEPTH}`);
36
+ if (Buffer.byteLength(text, "utf8") > maxBytes)
37
+ throw new CatalogError("resource-limit", `Catalog exceeds ${maxBytes} UTF-8 bytes`);
38
+ let depth = 0, quoted = false, escaped = false, quoteStart = 0;
39
+ const stack = [];
40
+ for (let i = 0; i < text.length; i++) {
41
+ const char = text[i];
42
+ if (quoted) {
43
+ if (escaped)
44
+ escaped = false;
45
+ else if (char === "\\")
46
+ escaped = true;
47
+ else if (char === '"') {
48
+ quoted = false;
49
+ let next = i + 1;
50
+ while (/[\t\r\n ]/.test(text[next] ?? "x"))
51
+ next++;
52
+ if (text[next] === ":" && stack.at(-1)?.object) {
53
+ let key;
54
+ try {
55
+ key = JSON.parse(text.slice(quoteStart, i + 1));
56
+ }
57
+ catch {
58
+ throw new CatalogError("invalid-schema", "Catalog is not valid JSON");
59
+ }
60
+ if (stack.at(-1).keys.has(key))
61
+ throw new CatalogError("invalid-schema", "Catalog contains duplicate object fields");
62
+ stack.at(-1).keys.add(key);
63
+ }
64
+ }
65
+ }
66
+ else if (char === '"') {
67
+ quoted = true;
68
+ quoteStart = i;
69
+ }
70
+ else if (char === "{" || char === "[") {
71
+ if (++depth > maxDepth)
72
+ throw new CatalogError("resource-limit", `Catalog exceeds nesting depth ${maxDepth}`);
73
+ stack.push({ object: char === "{", keys: new Set() });
74
+ }
75
+ else if (char === "}" || char === "]") {
76
+ depth--;
77
+ stack.pop();
78
+ }
79
+ }
80
+ try {
81
+ return JSON.parse(text);
82
+ }
83
+ catch {
84
+ throw new CatalogError("invalid-schema", "Catalog is not valid JSON");
85
+ }
86
+ }
@@ -0,0 +1,15 @@
1
+ import type { CanonicalGraph } from "./canonicalGraph.js";
2
+ export declare const sha256: (text: string) => string;
3
+ export declare function artifactGraph(graph: CanonicalGraph): CanonicalGraph;
4
+ /** These display/provenance tables have no semantic child order. */
5
+ export declare function normalizeGraphTables(result: CanonicalGraph): CanonicalGraph;
6
+ /** Excludes source digests/locations, machine paths, documentation and loading policy. */
7
+ export declare function semanticGraphRepresentation(graph: CanonicalGraph, options?: {
8
+ referenceIdentityOnly?: boolean;
9
+ }): {
10
+ structure: string;
11
+ identities: ReadonlyMap<string, string>;
12
+ };
13
+ /** Fingerprinting and companion comparison share the same actual normalized structure. */
14
+ export declare function semanticGraphFingerprint(graph: CanonicalGraph): string;
15
+ //# sourceMappingURL=catalogProvenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalogProvenance.d.ts","sourceRoot":"","sources":["../../src/compiler/catalogProvenance.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,cAAc,EAAuB,MAAM,qBAAqB,CAAC;AAG9E,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,KAAG,MAAiE,CAAC;AAexG,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAqEnE;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAG3E;AAED,0FAA0F;AAC1F,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,GAAE;IAAC,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAM,GAAG;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAC,CAmEhL;AAED,0FAA0F;AAC1F,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAEtE"}
@@ -0,0 +1,229 @@
1
+ /** Portable provenance is content-addressed; full retrieval context stays in the loading snapshot. */
2
+ import { createHash } from "node:crypto";
3
+ import path from "node:path";
4
+ import { XML_NAMESPACE, XSD_NAMESPACE, WSDL_NAMESPACE } from "../loader/orderedSyntax.js";
5
+ import { canonicalJson, CatalogError } from "./catalogErrors.js";
6
+ export const sha256 = (text) => createHash("sha256").update(text, "utf8").digest("hex");
7
+ const sourceUri = (digest) => `urn:source:sha256:${digest}`;
8
+ const artifactUri = /^(?:urn:source:sha256:|urn:base:sha256:)[a-f0-9]{64}$/;
9
+ function baseUri(uri, source) {
10
+ if (artifactUri.test(uri))
11
+ return uri;
12
+ try {
13
+ const base = new URL(uri), document = new URL(source.uri);
14
+ // Relative file placement is retained as a digest; temporary root paths never leave the snapshot.
15
+ const relation = base.protocol === document.protocol && base.host === document.host
16
+ ? path.posix.relative(path.posix.dirname(document.pathname), base.pathname) : `${base.protocol}//${base.host}${base.pathname}`;
17
+ return `urn:base:sha256:${sha256(canonicalJson([source.digest, relation, base.search ? sha256(base.search) : ""]))}`;
18
+ }
19
+ catch {
20
+ throw new CatalogError("invalid-schema", "Invalid provenance URI");
21
+ }
22
+ }
23
+ export function artifactGraph(graph) {
24
+ const resources = new Map();
25
+ const collected = new WeakSet();
26
+ const collect = (v) => {
27
+ if (typeof v === "string" && /[a-z][a-z0-9+.-]*:\/\/[^\s/]*@/i.test(v))
28
+ throw new CatalogError("incompatible-artifact", "Credential-bearing URI cannot be serialized");
29
+ if (!v || typeof v !== "object")
30
+ return;
31
+ if (collected.has(v))
32
+ return;
33
+ collected.add(v);
34
+ if (Array.isArray(v)) {
35
+ for (const c of v)
36
+ collect(c);
37
+ return;
38
+ }
39
+ const o = v;
40
+ if (typeof o.uri === "string" && typeof o.digest === "string" && typeof o.path === "string")
41
+ resources.set(o.uri, o.digest);
42
+ for (const c of Object.values(o))
43
+ collect(c);
44
+ };
45
+ collect(graph);
46
+ const interpretation = (key) => {
47
+ if (artifactUri.test(key))
48
+ return key;
49
+ if (resources.has(key))
50
+ return sourceUri(resources.get(key));
51
+ try {
52
+ const tuple = JSON.parse(key);
53
+ if (!Array.isArray(tuple) || tuple.length !== 7)
54
+ throw Error();
55
+ return canonicalJson([tuple[0], sourceUri(tuple[0]), baseUri(tuple[2], { uri: tuple[1], digest: tuple[0] }), ...tuple.slice(3)]);
56
+ }
57
+ catch {
58
+ throw new CatalogError("invalid-schema", "Invalid loading interpretation key");
59
+ }
60
+ };
61
+ // Preserve immutable source/syntax sharing internally. Parent namespace and
62
+ // local name remain part of the key: retrieval attributes and SOAP binding
63
+ // addresses have different transformations/checks in different XML contexts.
64
+ // The data-only format-2 materialization remains byte-for-byte unchanged.
65
+ const transformed = new WeakMap();
66
+ const transform = (v, parentName) => {
67
+ if (!v || typeof v !== "object")
68
+ return v;
69
+ const context = parentName ? JSON.stringify([parentName.namespace, parentName.local]) : "";
70
+ let variants = transformed.get(v);
71
+ if (variants?.has(context))
72
+ return variants.get(context);
73
+ if (!variants) {
74
+ variants = new Map();
75
+ transformed.set(v, variants);
76
+ }
77
+ if (Array.isArray(v)) {
78
+ const result = v.map(c => transform(c, parentName));
79
+ variants.set(context, result);
80
+ return result;
81
+ }
82
+ const o = v, result = Object.create(null);
83
+ for (const [k, c] of Object.entries(o)) {
84
+ if (c === undefined)
85
+ continue;
86
+ if (k === "uri" && typeof o.digest === "string")
87
+ result[k] = sourceUri(o.digest);
88
+ else if (k === "baseUri" && o.source)
89
+ result[k] = baseUri(c, o.source);
90
+ else if (k === "interpretation" || (k === "from" && o.cycle !== undefined) || (k === "to" && o.cycle !== undefined))
91
+ result[k] = interpretation(c);
92
+ else if (k === "referenceUri" && o.source)
93
+ result[k] = baseUri(c, o.source);
94
+ else
95
+ result[k] = transform(c, k === "attributes" && o.kind === "element" ? o.name : undefined);
96
+ }
97
+ if (o.name && typeof o.value === "string") {
98
+ const a = o;
99
+ const bindingAddress = ["http://schemas.xmlsoap.org/wsdl/soap/", "http://schemas.xmlsoap.org/wsdl/soap12/"].includes(parentName?.namespace ?? "") && parentName?.local === "address" && a.name.local === "location";
100
+ if (bindingAddress) {
101
+ try {
102
+ const endpoint = new URL(a.value);
103
+ if ([...endpoint.searchParams.keys()].some(k => /token|secret|password|api[-_]?key|authorization|signature|credential/i.test(k)))
104
+ throw new CatalogError("incompatible-artifact", "Credential-bearing binding URI cannot be serialized");
105
+ }
106
+ catch (e) {
107
+ if (e instanceof CatalogError)
108
+ throw e;
109
+ throw new CatalogError("invalid-schema", "Invalid binding address URI");
110
+ }
111
+ }
112
+ if ((a.name.namespace === XML_NAMESPACE && a.name.local === "base") ||
113
+ (parentName?.namespace === XSD_NAMESPACE && ["include", "import", "redefine"].includes(parentName.local) && a.name.local === "schemaLocation") ||
114
+ (parentName?.namespace === XSD_NAMESPACE && parentName.local === "documentation" && a.name.local === "source") ||
115
+ (parentName?.namespace === WSDL_NAMESPACE && parentName.local === "import" && a.name.local === "location")) {
116
+ // Retrieval URI attributes are provenance; binding endpoints remain semantic syntax.
117
+ result.value = artifactUri.test(a.value) ? a.value : `urn:base:sha256:${sha256(a.value.replace(/\?.*$/, ""))}`;
118
+ }
119
+ }
120
+ variants.set(context, result);
121
+ return result;
122
+ };
123
+ return normalizeGraphTables(transform(graph));
124
+ }
125
+ /** These display/provenance tables have no semantic child order. */
126
+ export function normalizeGraphTables(result) {
127
+ const origins = Object.fromEntries(Object.entries(result.origins).map(([id, values]) => [id, [...values].sort((a, b) => { const x = canonicalJson(a), y = canonicalJson(b); return x < y ? -1 : x > y ? 1 : 0; })]));
128
+ return { ...result, origins, nodes: [...result.nodes].sort((a, b) => a.id < b.id ? -1 : a.id > b.id ? 1 : 0), globals: [...result.globals].sort() };
129
+ }
130
+ /** Excludes source digests/locations, machine paths, documentation and loading policy. */
131
+ export function semanticGraphRepresentation(graph, options = {}) {
132
+ const portable = artifactGraph(graph);
133
+ // Source-relative scoped IDs remain artifact identity. Fingerprint-only IDs follow semantic
134
+ // containment instead, so inserting documentation cannot change their identity or table order.
135
+ const ids = new Map(), paths = new Map();
136
+ const nodes = new Map(portable.nodes.map(n => [n.id, n]));
137
+ const children = (n) => {
138
+ const result = [];
139
+ const ref = (r, edge) => { if (r?.kind === "local")
140
+ result.push([r.target, edge]); };
141
+ if (n.kind === "element" || n.kind === "attribute")
142
+ ref(n.type, "type");
143
+ if (n.kind === "element")
144
+ ref(n.substitutionGroup, "substitutionGroup");
145
+ if (n.kind === "attributeUse")
146
+ ref(n.declaration, "declaration");
147
+ if (n.kind === "attributeGroupUse")
148
+ ref(n.reference, "attributeGroup");
149
+ if (n.kind === "particle") {
150
+ if (n.term.kind === "element")
151
+ ref(n.term.declaration, "declaration");
152
+ else if (n.term.kind === "group")
153
+ ref(n.term.reference, "group");
154
+ else if (n.term.kind === "sequence" || n.term.kind === "choice" || n.term.kind === "all")
155
+ n.term.children.forEach((id, i) => result.push([id, `children/${i}`]));
156
+ }
157
+ if (n.kind === "group" || n.kind === "complexType") {
158
+ if (n.content)
159
+ result.push([n.content, "content"]);
160
+ }
161
+ if (n.kind === "attributeGroup" || n.kind === "complexType")
162
+ n.attributes.forEach((id, i) => result.push([id, `attributes/${i}`]));
163
+ if (n.kind === "complexType") {
164
+ ref(n.derivation?.base, "base");
165
+ ref(n.derivation?.inlineType, "inlineType");
166
+ }
167
+ if (n.kind === "simpleType") {
168
+ if (n.variety.kind === "restriction")
169
+ ref(n.variety.base, "base");
170
+ else if (n.variety.kind === "list")
171
+ ref(n.variety.item, "item");
172
+ else
173
+ n.variety.members.forEach((r, i) => ref(r, `members/${i}`));
174
+ }
175
+ return result;
176
+ };
177
+ const stack = portable.globals.map(id => ({ id, path: id }));
178
+ while (stack.length) {
179
+ const item = stack.pop(), n = nodes.get(item.id);
180
+ if (ids.has(n.id))
181
+ continue;
182
+ const id = n.identity.kind === "global" ? n.id : `semantic:${sha256(item.path)}`;
183
+ ids.set(n.id, id);
184
+ paths.set(n.id, item.path);
185
+ for (const [child, edge] of children(n))
186
+ stack.push({ id: child, path: `${item.path}/${edge}` });
187
+ }
188
+ const mappedId = (id) => ids.get(id);
189
+ const reference = (r) => r.kind === "local" ? { ...r, target: mappedId(r.target) } : r;
190
+ const mapNode = (n) => {
191
+ const common = { ...n, id: mappedId(n.id), identity: n.identity.kind === "scoped" ? { ...n.identity, owner: mappedId(n.identity.owner), path: paths.get(n.id) } : n.identity };
192
+ switch (n.kind) {
193
+ case "element": return { ...common, kind: n.kind, name: n.name, type: reference(n.type), nillable: n.nillable, abstract: n.abstract, value: n.value, substitutionGroup: n.substitutionGroup ? reference(n.substitutionGroup) : undefined };
194
+ case "attribute": return { ...common, kind: n.kind, name: n.name, type: reference(n.type), value: n.value };
195
+ case "attributeUse": return { ...common, kind: n.kind, declaration: reference(n.declaration), use: n.use, value: n.value };
196
+ case "particle": return { ...common, kind: n.kind, occurs: n.occurs, term: n.term.kind === "element" ? { ...n.term, declaration: reference(n.term.declaration) } : n.term.kind === "group" ? { ...n.term, reference: reference(n.term.reference) } : n.term.kind === "sequence" || n.term.kind === "choice" || n.term.kind === "all" ? { ...n.term, children: n.term.children.map(mappedId) } : n.term };
197
+ case "group": return { ...common, kind: n.kind, content: mappedId(n.content) };
198
+ case "attributeGroup": return { ...common, kind: n.kind, attributes: n.attributes.map(mappedId) };
199
+ case "complexType": return { ...common, kind: n.kind, mixed: n.mixed, abstract: n.abstract, content: n.content ? mappedId(n.content) : undefined, attributes: n.attributes.map(mappedId), derivation: n.derivation ? { ...n.derivation, base: reference(n.derivation.base), inlineType: n.derivation.inlineType ? reference(n.derivation.inlineType) : undefined } : undefined };
200
+ case "simpleType": return { ...common, kind: n.kind, variety: n.variety.kind === "restriction" ? { ...n.variety, base: reference(n.variety.base) } : n.variety.kind === "list" ? { ...n.variety, item: reference(n.variety.item) } : { ...n.variety, members: n.variety.members.map(reference) } };
201
+ case "attributeGroupUse": return { ...common, kind: n.kind, reference: reference(n.reference) };
202
+ case "attributeWildcard": return { ...common, kind: n.kind, wildcard: n.wildcard };
203
+ case "wsdl": return { ...common, kind: n.kind, name: n.name, role: n.role, syntax: n.syntax, references: n.references };
204
+ }
205
+ };
206
+ const stable = { ...portable, nodes: portable.nodes.map(mapNode).sort((a, b) => a.id < b.id ? -1 : a.id > b.id ? 1 : 0) };
207
+ const omit = new Set(["source", "uri", "digest", "baseUri", "origins", "loading", "schemaAnnotations", "annotations", "lexicalName"]);
208
+ const semantic = (v, parentName) => {
209
+ if (Array.isArray(v))
210
+ return v.filter(c => !(c && typeof c === "object" && ((c.name?.local === "annotation" && c.name?.namespace === XSD_NAMESPACE) || (c.name?.local === "documentation" && [XSD_NAMESPACE, WSDL_NAMESPACE].includes(c.name?.namespace))))).map(c => semantic(c, parentName)).filter(c => c !== undefined);
211
+ if (!v || typeof v !== "object")
212
+ return v;
213
+ const o = v;
214
+ if (o.kind === "text" && typeof o.value === "string" && !/[^\t\r\n ]/.test(o.value) && [XSD_NAMESPACE, WSDL_NAMESPACE].includes(parentName?.namespace ?? ""))
215
+ return undefined;
216
+ if (o.kind === "symbol" || o.kind === "builtin")
217
+ return Object.fromEntries(Object.entries(o).filter(([k]) => k !== "lexical" && !(options.referenceIdentityOnly && k === "target")).map(([k, c]) => [k, semantic(c)]));
218
+ if (o.name && typeof o.value === "string" && o.name.namespace === XML_NAMESPACE && o.name.local === "base")
219
+ return undefined;
220
+ if (o.name && typeof o.value === "string" && o.name.namespace === "" && o.name.local === "schemaLocation" && parentName?.namespace === XSD_NAMESPACE && ["include", "import"].includes(parentName.local))
221
+ return undefined;
222
+ return Object.fromEntries(Object.entries(o).filter(([k]) => !omit.has(k) && !(k === "path" && Object.hasOwn(o, "reference") && Object.hasOwn(o, "attribute"))).map(([k, c]) => [k, semantic(c, ["children", "attributes"].includes(k) && o.kind === "element" ? o.name : undefined)]));
223
+ };
224
+ return { structure: canonicalJson(semantic(stable)), identities: ids };
225
+ }
226
+ /** Fingerprinting and companion comparison share the same actual normalized structure. */
227
+ export function semanticGraphFingerprint(graph) {
228
+ return sha256(semanticGraphRepresentation(graph).structure);
229
+ }