@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,798 @@
1
+ import { XSD_NAMESPACE } from '../loader/orderedSyntax.js';
2
+ import { assertSemanticContext } from './semanticContext.js';
3
+ import { createSchemaScalarKernel } from './schemaScalarKernel.js';
4
+ import { checkTypeDerivation, checkImmediateTypeFinal, declarationMethods } from './schemaTypeRelations.js';
5
+ import { checkDeclaration, declarationValueConstraint } from './schemaDeclarationPrimitives.js';
6
+ import { namespaceAllows, namespaceExpressible, namespaceIntersection, namespaceSubset, namespaceUnion, processContentsRestricts, wildcardNamespaces } from './wildcardAlgebra.js';
7
+ import { declaredType, resolveSemanticType, semanticTypeKey } from './schemaTypeIdentity.js';
8
+ import { collectSemanticTypeDependencies } from './semanticTypeDependencies.js';
9
+ import { deriveOriginalComplexPropertyContent, deriveActualComplexContent } from './complexTypeContent.js';
10
+ // Only immutable, completely evaluated local facts are retained. Context identity
11
+ // captures active membership, raw properties and original/active operand roles;
12
+ // shared source nodes never authorize transfer to another authentic context.
13
+ const attributeFacts = new WeakMap();
14
+ class AttributeAbort extends Error {
15
+ result;
16
+ constructor(result) {
17
+ super(result.kind);
18
+ this.result = result;
19
+ }
20
+ }
21
+ export function assessSourceAttributeUses(context, ownerId) {
22
+ return assessAttributeUses(context, ownerId, 'source');
23
+ }
24
+ /** Check one available original/fresh AU even if no effective type retains it. */
25
+ export function assessAttributeUse(context, useId) {
26
+ assertSemanticContext(context);
27
+ const result = assessAttributeUses(context, useId, context.kind === 'actual' ? 'source' : 'raw', 'standalone');
28
+ return context.kind === 'candidate' && result.kind === 'invalid-schema' ? context.budget.guard(() => {
29
+ if (result.contextId !== undefined && result.contextId === context.originalContext().contextId)
30
+ return result;
31
+ context.budget.chargeWork(8);
32
+ return Object.freeze({ ...result, kind: 'candidate-rejected' });
33
+ }) : result;
34
+ }
35
+ /** Literal abstract AU properties: no source union or inherited omission. */
36
+ export function assessRawAttributeUses(context, ownerId) {
37
+ return rawResult(context, assessAttributeUses(context, ownerId, 'raw'));
38
+ }
39
+ /** Full current-context AU derivation, using guarded original data only when no raw row exists.
40
+ * Original inputs remain conditional on Γ mapping/source qualification from the
41
+ * whole actual assessment; this entry reruns all containing derivation checks in H.
42
+ */
43
+ export function assessCandidateAttributeUses(context, ownerId) {
44
+ return rawResult(context, assessAttributeUses(context, ownerId, 'raw', 'original-container'));
45
+ }
46
+ /** Read complete effective AU properties without certifying the containing
47
+ * type's derivation. Individual AU/declaration/scalar premises remain checked.
48
+ */
49
+ export function readRawAttributeProperties(context, ownerId) {
50
+ return rawResult(context, assessAttributeUses(context, ownerId, 'raw', 'properties'));
51
+ }
52
+ /** Fixed original AU data, with individual facts checked in the current context.
53
+ * The original-properties authority is conditional on authentic Γ mapping/source
54
+ * qualification, supplied by the whole actual assessment, never an H aggregate receipt.
55
+ */
56
+ export function readOriginalAttributeProperties(context, ownerId) {
57
+ return rawResult(context, assessAttributeUses(context, ownerId, 'raw', 'original-properties'));
58
+ }
59
+ const restrictionPairs = new WeakMap();
60
+ /** Authenticate a paired AU predicate, not the containing type's actual derivation. */
61
+ export function assertAttributeRestrictionPair(context, receipt) {
62
+ assertSemanticContext(context);
63
+ if (restrictionPairs.get(receipt) !== context)
64
+ throw new TypeError('Fresh matching attribute restriction pair required');
65
+ }
66
+ /** Check the existing AU restriction rules against an explicit alternative complex base without changing bindings.
67
+ * @remarks Only the root predicate's base/method arguments differ; TYPE/SCOPE lookups and every original node remain intact.
68
+ * Failed alternative relations never classify the original schema invalid. Construction and content remain separate duties.
69
+ * @returns An authenticated paired AU predicate, a non-restriction diagnostic or sticky resource failure.
70
+ */
71
+ export function assessAttributeRestrictionPair(context, derived, base) {
72
+ assertSemanticContext(context);
73
+ return context.budget.guard(() => {
74
+ context.budget.chargeWork(64 + derived.length + base.length);
75
+ const baseNode = context.lookup(base), derivedNode = context.lookup(derived);
76
+ if (baseNode.kind !== 'found' || baseNode.node.kind !== 'complexType' || derivedNode.kind !== 'found' || derivedNode.node.kind !== 'complexType')
77
+ return Object.freeze({ kind: 'not-attribute-restriction', failure: Object.freeze({ kind: 'unresolved', rule: 'attribute-restriction-types',
78
+ component: derived, message: 'Available complex types are required for both relation arguments' }) });
79
+ // @why The base is evaluated under its actual derivation before applying root-only relation arguments.
80
+ // Reusing the proposed root's arguments while reading the base chain would shadow that component indirectly.
81
+ const baseAssessment = context.kind === 'actual' ? assessSourceAttributeUses(context, base) : assessCandidateAttributeUses(context, base);
82
+ if (baseAssessment.kind === 'resource-limit')
83
+ return baseAssessment;
84
+ if (baseAssessment.kind !== 'checked')
85
+ return Object.freeze({ kind: 'not-attribute-restriction', failure: baseAssessment });
86
+ const result = assessAttributeUses(context, derived, 'raw', 'restriction-pair', base, baseAssessment);
87
+ if (result.kind === 'resource-limit')
88
+ return result;
89
+ if (result.kind !== 'checked')
90
+ return Object.freeze({ kind: 'not-attribute-restriction', failure: result });
91
+ context.budget.chargeWork(64);
92
+ const receipt = Object.freeze({ kind: 'checked-attribute-restriction', derived, base, assessment: result,
93
+ remaining: Object.freeze(['source-and-base-construction', 'alternative-content-derivation']) });
94
+ restrictionPairs.set(receipt, context);
95
+ return receipt;
96
+ });
97
+ }
98
+ function rawResult(context, result) {
99
+ return result.kind === 'invalid-schema' ? context.budget.guard(() => {
100
+ if (result.contextId !== undefined && result.contextId === context.originalContext().contextId)
101
+ return result;
102
+ context.budget.chargeWork(8);
103
+ return Object.freeze({ ...result, kind: 'candidate-rejected' });
104
+ }) : result;
105
+ }
106
+ function assessAttributeUses(context, ownerId, role, mode = 'container', restrictionBase, restrictionBasePlan) {
107
+ assertSemanticContext(context);
108
+ const budget = context.budget, charge = budget.chargeWork;
109
+ return budget.guard(() => {
110
+ const problem = (node, rule, message, kind = 'invalid-schema') => {
111
+ charge(12 + rule.length + message.length);
112
+ throw new AttributeAbort(Object.freeze({ kind, rule, component: node.id, source: node.context.source, message }));
113
+ };
114
+ const get = (id) => {
115
+ const found = context.lookup(id);
116
+ if (found.kind !== 'found') {
117
+ charge(10 + id.length);
118
+ throw new AttributeAbort(Object.freeze({ kind: 'unresolved', rule: 'src-resolve', component: id, message: 'Attribute owner is unavailable in this context' }));
119
+ }
120
+ return found.node;
121
+ };
122
+ const target = (ref, owner) => {
123
+ const found = context.resolve(ref);
124
+ if (found.kind !== 'found')
125
+ return problem(owner, 'src-resolve', 'Attribute reference needs an active component', 'unresolved');
126
+ return found.node;
127
+ };
128
+ const scalar = createSchemaScalarKernel(context);
129
+ const typeDependencies = collectSemanticTypeDependencies(context);
130
+ charge();
131
+ const scalarObligations = [];
132
+ const unwrap = (result, node, obligations = scalarObligations, dependencies = typeDependencies) => {
133
+ if (result.kind === 'checked') {
134
+ dependencies.add(result.typeDependencies);
135
+ if (result.authority === 'XSD10-schema-scalars-DT01-A-v1') {
136
+ for (const obligation of result.obligations) {
137
+ charge();
138
+ obligations.push(obligation);
139
+ }
140
+ }
141
+ return result.value;
142
+ }
143
+ if (result.kind === 'resource-limit')
144
+ throw new AttributeAbort(result);
145
+ // Preserve the shared owner's diagnostic origin. An original datatype's
146
+ // formation failure is distinct from a candidate operand failing that
147
+ // valid datatype; only the scalar owner can identify that distinction.
148
+ charge(9);
149
+ throw new AttributeAbort(Object.freeze({ kind: result.kind === 'invalid-input' ? 'invalid-schema' : result.kind,
150
+ rule: result.rule, message: result.message, component: result.component ?? node.id,
151
+ source: 'source' in result ? result.source : node.context.source,
152
+ ...('contextId' in result && result.contextId !== undefined ? { contextId: result.contextId } : {}) }));
153
+ };
154
+ const nameKey = (name) => {
155
+ charge(8 + 2 * (name.namespace.length + name.local.length));
156
+ return JSON.stringify([name.namespace, name.local]);
157
+ };
158
+ const typed = (declaration, constraint, owner, origin, obligations = scalarObligations, dependencies = typeDependencies) => {
159
+ if (!constraint)
160
+ return undefined;
161
+ const type = declaredType(context, declaration);
162
+ const value = unwrap(scalar.assessValue(type, constraint, owner.id), owner, obligations, dependencies);
163
+ charge(5);
164
+ return Object.freeze({ kind: constraint.kind, origin, value });
165
+ };
166
+ const equal = (a, b, owner, obligations = scalarObligations, dependencies = typeDependencies) => unwrap(scalar.equivalent(a.value.type, a.value.lexical, b.value.type, b.value.lexical, owner.id), owner, obligations, dependencies);
167
+ const asContainer = (node) => {
168
+ if (node.kind !== 'complexType' && node.kind !== 'attributeGroup')
169
+ return problem(node, 'src-attribute-group', 'Expected a type or attribute group');
170
+ return node;
171
+ };
172
+ const attributeGroup = (node) => {
173
+ if (node.kind !== 'attributeGroup')
174
+ return problem(node, 'src-attribute-group', 'Attribute group reference requires an attribute group');
175
+ return node;
176
+ };
177
+ try {
178
+ const requested = get(ownerId);
179
+ if (role === 'source' && context.kind !== 'actual')
180
+ return problem(requested, 'source-construction-role', 'Actual source mapping cannot certify abstract hypothetical AU construction', 'unresolved');
181
+ charge();
182
+ let roles = attributeFacts.get(context);
183
+ if (!roles) {
184
+ charge(3);
185
+ roles = new Map();
186
+ attributeFacts.set(context, roles);
187
+ }
188
+ charge();
189
+ let cached = roles.get(role);
190
+ if (!cached) {
191
+ charge(9);
192
+ cached = Object.freeze({ declarations: new Map(), uses: new Map() });
193
+ roles.set(role, cached);
194
+ }
195
+ charge(4);
196
+ const plans = new Map(), useCache = new Map();
197
+ charge();
198
+ const declarationEvidence = new Map();
199
+ const declaration = (node) => {
200
+ charge(1 + node.id.length);
201
+ const previous = cached.declarations.get(node.id);
202
+ if (previous)
203
+ return previous;
204
+ const checked = checkDeclaration(context, node.id);
205
+ if (checked.kind !== 'checked')
206
+ throw new AttributeAbort(checked);
207
+ charge();
208
+ const obligations = [];
209
+ const dependencies = collectSemanticTypeDependencies(context);
210
+ dependencies.add(checked.typeDependencies);
211
+ unwrap(scalar.describe(declaredType(context, node), node.id), node, obligations, dependencies);
212
+ const value = typed(node, declarationValueConstraint(context, node), node, 'declaration', obligations, dependencies);
213
+ charge(10 + obligations.length + node.id.length);
214
+ const fact = Object.freeze({ receipt: checked, value, scalarObligations: Object.freeze(obligations), typeDependencies: dependencies.snapshot() });
215
+ cached.declarations.set(node.id, fact);
216
+ return fact;
217
+ };
218
+ const replay = (fact) => {
219
+ const dependency = fact.declaration;
220
+ if (dependency) {
221
+ const id = dependency.receipt.component;
222
+ charge(1 + id.length);
223
+ if (!declarationEvidence.has(id)) {
224
+ charge(2 + id.length);
225
+ declarationEvidence.set(id, dependency.receipt);
226
+ for (const obligation of dependency.scalarObligations) {
227
+ charge(2);
228
+ scalarObligations.push(obligation);
229
+ }
230
+ typeDependencies.add(dependency.typeDependencies);
231
+ }
232
+ }
233
+ for (const obligation of fact.scalarObligations) {
234
+ charge(2);
235
+ scalarObligations.push(obligation);
236
+ }
237
+ typeDependencies.add(fact.typeDependencies);
238
+ return fact.kind === 'present' ? fact.value : undefined;
239
+ };
240
+ const use = (node) => {
241
+ charge(1 + node.id.length);
242
+ const previous = useCache.get(node.id);
243
+ if (previous)
244
+ return previous.kind === 'present' ? previous.value : undefined;
245
+ charge(1 + node.id.length);
246
+ const stored = cached.uses.get(node.id);
247
+ if (stored) {
248
+ const result = replay(stored);
249
+ charge(1 + node.id.length);
250
+ useCache.set(node.id, stored);
251
+ return result;
252
+ }
253
+ const attribute = target(node.declaration, node);
254
+ if (attribute.kind !== 'attribute')
255
+ return problem(node, 'src-attribute', 'AU requires an attribute declaration');
256
+ // A prohibited local declaration maps to no semantic AU/declaration.
257
+ // A referenced global still owes its own scalar/declaration obligations.
258
+ let fact;
259
+ if (node.use === 'prohibited') {
260
+ const dependency = attribute.identity.kind === 'global' ? declaration(attribute) : undefined;
261
+ charge(10);
262
+ fact = Object.freeze({ kind: 'absent', declaration: dependency, scalarObligations: Object.freeze([]), typeDependencies: Object.freeze([]) });
263
+ }
264
+ else {
265
+ // Retain the complete dependency even when another AU has already
266
+ // replayed it in this invocation. Ambient inventory deltas are not a
267
+ // dependency closure (notably for two uses of one global declaration).
268
+ const dependency = declaration(attribute), declared = dependency.value;
269
+ if (role === 'source' && node.value?.kind === 'default' && node.use !== 'optional')
270
+ return problem(node, 'src-attribute.2', 'An explicit source default requires an optional use');
271
+ charge();
272
+ const obligations = [];
273
+ const dependencies = collectSemanticTypeDependencies(context);
274
+ const own = typed(attribute, node.value, node, 'use', obligations, dependencies);
275
+ if (own && declared?.kind === 'fixed' && (own.kind !== 'fixed' || !equal(own, declared, node, obligations, dependencies)))
276
+ return problem(node, 'au-props-correct.2', 'Use constraint disagrees with declaration fixed value');
277
+ charge(9);
278
+ const value = Object.freeze({ id: node.id, declaration: attribute, source: node, required: node.use === 'required', own, declared, effective: own ?? declared });
279
+ charge(11 + obligations.length);
280
+ fact = Object.freeze({ kind: 'present', value, declaration: dependency, scalarObligations: Object.freeze(obligations), typeDependencies: dependencies.snapshot() });
281
+ }
282
+ const result = replay(fact);
283
+ // Publish only after the entire local evaluation and evidence replay
284
+ // succeeded. Later container-specific failures do not invalidate this
285
+ // fact, and none of those container judgments is cached here.
286
+ charge(2 + 2 * node.id.length);
287
+ cached.uses.set(node.id, fact);
288
+ useCache.set(node.id, fact);
289
+ return result;
290
+ };
291
+ const combine = (a, b, owner, union) => {
292
+ if (!a)
293
+ return b;
294
+ if (!b)
295
+ return a;
296
+ const namespace = union ? namespaceUnion(a.namespace, b.namespace, charge) : namespaceIntersection(a.namespace, b.namespace, charge);
297
+ if (!namespaceExpressible(namespace, charge))
298
+ return problem(owner, 'cos-aw-intersect/union', 'Wildcard combination is not expressible');
299
+ charge(7 + a.sources.length + b.sources.length);
300
+ return Object.freeze({ namespace, processContents: union ? b.processContents : a.processContents, sources: Object.freeze([...a.sources, ...b.sources]) });
301
+ };
302
+ const idType = { kind: 'builtin', name: { namespace: XSD_NAMESPACE, local: 'ID' } };
303
+ const checkUses = (uses, owner) => {
304
+ charge(3);
305
+ const identities = new Map(), names = new Map(), ids = new Set();
306
+ for (const item of uses) {
307
+ charge(3 + item.id.length);
308
+ if (identities.has(item.id))
309
+ continue;
310
+ const k = nameKey(item.declaration.name), previous = names.get(k);
311
+ if (previous && (owner.kind === 'attributeGroup' || previous.declaration.id !== item.declaration.id))
312
+ return problem(owner, owner.kind === 'attributeGroup' ? 'ag-props-correct.2' : 'ct-props-correct.4', 'Distinct members violate declaration uniqueness');
313
+ if (unwrap(checkTypeDerivation(context, declaredType(context, item.declaration), idType, []), owner)) {
314
+ charge();
315
+ ids.add(owner.kind === 'attributeGroup' ? item.id : item.declaration.id);
316
+ if (ids.size > 1)
317
+ return problem(owner, owner.kind === 'attributeGroup' ? 'ag-props-correct.3' : 'ct-props-correct.5', 'Multiple ID-derived members');
318
+ }
319
+ charge(2);
320
+ identities.set(item.id, item);
321
+ names.set(k, item);
322
+ }
323
+ charge(identities.size + 2);
324
+ return Object.freeze([...identities.values()]);
325
+ };
326
+ const presence = (uses, owner) => {
327
+ charge(2);
328
+ const names = new Map(), result = [];
329
+ for (const item of uses) {
330
+ const k = nameKey(item.declaration.name);
331
+ charge(4);
332
+ const values = names.get(k) ?? [];
333
+ values.push(item);
334
+ names.set(k, values);
335
+ }
336
+ for (const group of names.values()) {
337
+ charge(3);
338
+ let required = false, witness, conflict = false;
339
+ const fixed = [];
340
+ for (const item of group) {
341
+ charge(2);
342
+ required ||= item.required;
343
+ if (item.effective?.kind === 'fixed') {
344
+ charge();
345
+ fixed.push(item.effective);
346
+ }
347
+ if (!item.required && item.effective) {
348
+ if (witness && !equal(witness, item.effective, owner))
349
+ conflict = true;
350
+ witness ??= item.effective;
351
+ }
352
+ }
353
+ charge(12 + group.length + fixed.length);
354
+ result.push(Object.freeze({ name: group[0].declaration.name, uses: Object.freeze(group), required, fixed: Object.freeze(fixed),
355
+ absent: Object.freeze(required ? { kind: 'required' } : conflict ? { kind: 'conflict' } : witness ? { kind: 'augment', witness } : { kind: 'unchanged' }) }));
356
+ }
357
+ charge(result.length + 1);
358
+ return Object.freeze(result);
359
+ };
360
+ if (mode === 'standalone') {
361
+ if (requested.kind !== 'attributeUse')
362
+ return problem(requested, 'au-props-correct', 'Expected an attribute use');
363
+ const mapped = use(requested);
364
+ if (role === 'raw' && !mapped)
365
+ return problem(requested, 'au-props-correct', 'A literal AU is a present use');
366
+ charge(15 + declarationEvidence.size + scalarObligations.length);
367
+ const uses = Object.freeze(mapped ? [mapped] : []);
368
+ const value = Object.freeze({ owner: requested.id, uses, attributes: presence(uses, requested),
369
+ schemaOperands: uses, declarations: Object.freeze([...declarationEvidence.values()]) });
370
+ return Object.freeze({ kind: 'checked', contextId: context.contextId,
371
+ authority: role === 'source' ? 'AU01-C1-source-v1' : 'AU01-C1-raw-v2',
372
+ value, obligations: Object.freeze(['owning-type-or-group-validity', ...(role === 'source' ? ['source-representation-syntax'] : [])]),
373
+ scalarObligations: Object.freeze(scalarObligations), typeDependencies: typeDependencies.snapshot() });
374
+ }
375
+ const root = asContainer(requested);
376
+ const replacementFailure = (item, original, obligations = scalarObligations, dependencies = typeDependencies) => {
377
+ charge();
378
+ if (original.required && !item.required) {
379
+ charge(4);
380
+ return { rule: 'derivation-ok-restriction.2.1.1', message: 'Replacement weakens required base use' };
381
+ }
382
+ if (!unwrap(checkTypeDerivation(context, declaredType(context, item.declaration), declaredType(context, original.declaration), []), item.source, obligations, dependencies)) {
383
+ charge(4);
384
+ return { rule: 'derivation-ok-restriction.2.1.2', message: 'Replacement type does not derive from original type' };
385
+ }
386
+ if (original.effective?.kind === 'fixed' && (item.effective?.kind !== 'fixed' || !equal(original.effective, item.effective, item.source, obligations, dependencies))) {
387
+ charge(4);
388
+ return { rule: 'derivation-ok-restriction.2.1.3', message: 'Replacement fails an original fixed constraint' };
389
+ }
390
+ return undefined;
391
+ };
392
+ const checkReplacement = (item, original) => {
393
+ const failure = replacementFailure(item, original);
394
+ if (failure)
395
+ problem(item.source, failure.rule, failure.message);
396
+ };
397
+ if (role === 'raw') {
398
+ if (root.kind === 'attributeGroup' || mode === 'properties' || mode === 'original-properties') {
399
+ const group = root.kind === 'attributeGroup';
400
+ let raw = group ? context.rawAttributeGroupProperties(root.id) : context.rawTypeProperties(root.id);
401
+ let projected = false;
402
+ if (!raw && mode === 'original-properties' && context.originalComplexPropertySource(root.id)) {
403
+ const actual = context.originalContext(), source = assessSourceAttributeUses(actual, root.id);
404
+ if (source.kind !== 'checked')
405
+ throw new AttributeAbort(source.kind === 'resource-limit' ? source
406
+ : Object.freeze({ ...source, contextId: source.contextId ?? actual.contextId }));
407
+ typeDependencies.add(source.typeDependencies);
408
+ for (const item of source.scalarObligations) {
409
+ charge(6 + item.rule.length + item.component.length + actual.contextId.length);
410
+ scalarObligations.push(Object.freeze({ ...item, contextId: item.contextId ?? actual.contextId }));
411
+ }
412
+ charge(3 + source.value.uses.length);
413
+ raw = { attributeUses: source.value.uses.map(item => item.id), wildcard: source.value.wildcard };
414
+ projected = true;
415
+ }
416
+ if (!raw)
417
+ return problem(root, group ? 'raw-attribute-group-properties' : 'raw-type-properties', 'Complete literal attribute properties are required', 'unresolved');
418
+ charge(2);
419
+ const local = [];
420
+ for (const id of raw.attributeUses) {
421
+ const item = get(id);
422
+ if (item.kind !== 'attributeUse' || item.use === 'prohibited')
423
+ return problem(item, 'au-props-correct', 'Literal effective properties contain only present attribute uses');
424
+ const mapped = use(item);
425
+ charge();
426
+ local.push(mapped);
427
+ }
428
+ const uses = checkUses(local, root), wildcard = raw.wildcard;
429
+ if (projected && wildcard)
430
+ for (const id of wildcard.sources) {
431
+ charge();
432
+ get(id);
433
+ }
434
+ if (wildcard && (!['strict', 'lax', 'skip'].includes(wildcard.processContents) || !namespaceExpressible(wildcard.namespace, charge)))
435
+ return problem(root, 'cos-aw-union/intersect', 'Literal group wildcard has invalid component properties');
436
+ charge(15 + uses.length + declarationEvidence.size + scalarObligations.length);
437
+ const value = Object.freeze({ owner: root.id, uses, attributes: presence(uses, root), wildcard,
438
+ schemaOperands: uses, declarations: Object.freeze([...declarationEvidence.values()]) });
439
+ return Object.freeze({ kind: 'checked', contextId: context.contextId,
440
+ authority: projected ? 'AU01-C1-original-properties-v1' : mode === 'properties' || mode === 'original-properties'
441
+ ? 'AU01-C1-raw-properties-v1' : 'AU01-C1-raw-v2',
442
+ value, obligations: Object.freeze(group ? ['aggregate-group-validity', 'raw-group-property-correspondence']
443
+ : projected ? ['aggregate-type-validity'] : ['aggregate-type-validity', 'raw-type-property-correspondence']),
444
+ scalarObligations: Object.freeze(scalarObligations), typeDependencies: typeDependencies.snapshot() });
445
+ }
446
+ const sameType = (a, b, owner) => {
447
+ const x = resolveSemanticType(context, a), y = resolveSemanticType(context, b);
448
+ if (!('identity' in x) || !('identity' in y))
449
+ return problem(owner, 'src-resolve', 'Attribute type identity is unavailable', 'unresolved');
450
+ charge(7);
451
+ typeDependencies.add([{ contextId: context.contextId, type: x.identity }, { contextId: context.contextId, type: y.identity }]);
452
+ return budget.compareText(semanticTypeKey(context, x.identity), semanticTypeKey(context, y.identity)) === 0;
453
+ };
454
+ let originalInput = false;
455
+ const input = (node) => {
456
+ const raw = context.rawTypeProperties(node.id);
457
+ if (raw) {
458
+ if (mode !== 'restriction-pair' || node.id !== ownerId)
459
+ return raw;
460
+ charge(16);
461
+ return { attributeUses: raw.attributeUses, wildcard: raw.wildcard,
462
+ derivation: { method: 'restriction', base: { kind: 'local', target: restrictionBase } } };
463
+ }
464
+ if (mode !== 'original-container' && mode !== 'restriction-pair')
465
+ return undefined;
466
+ const actualInput = mode === 'restriction-pair' && context.kind === 'actual' && context.originalComplexContentSource(node.id) !== undefined;
467
+ if (!actualInput && !context.originalComplexPropertySource(node.id))
468
+ return undefined;
469
+ const content = actualInput ? deriveActualComplexContent(context, node.id) : deriveOriginalComplexPropertyContent(context, node.id);
470
+ if (content.kind === 'resource-limit')
471
+ throw new AttributeAbort(content);
472
+ if (content.kind !== 'checked')
473
+ return problem(node, content.rule, content.message, 'unresolved');
474
+ const actual = context.originalContext(), source = assessSourceAttributeUses(actual, node.id);
475
+ if (source.kind !== 'checked')
476
+ throw new AttributeAbort(source.kind === 'resource-limit' ? source
477
+ : Object.freeze({ ...source, contextId: source.contextId ?? actual.contextId }));
478
+ originalInput = true;
479
+ typeDependencies.add(source.typeDependencies);
480
+ for (const item of source.scalarObligations) {
481
+ charge(6 + item.rule.length + item.component.length + actual.contextId.length);
482
+ scalarObligations.push(Object.freeze({ ...item, contextId: item.contextId ?? actual.contextId }));
483
+ }
484
+ charge(5 + source.value.uses.length);
485
+ return { derivation: mode === 'restriction-pair' && node.id === ownerId
486
+ ? { method: 'restriction', base: { kind: 'local', target: restrictionBase } }
487
+ : { method: node.derivation?.kind ?? 'restriction', base: node.derivation?.base
488
+ ?? { kind: 'builtin', name: { namespace: XSD_NAMESPACE, local: 'anyType' } } },
489
+ attributeUses: source.value.uses.map(use => use.id), wildcard: source.value.wildcard };
490
+ };
491
+ if (mode === 'restriction-pair') {
492
+ if (!restrictionBasePlan || restrictionBasePlan.contextId !== context.contextId || restrictionBasePlan.value.owner !== restrictionBase)
493
+ return problem(root, 'attribute-restriction-base-plan', 'The alternative base needs its own checked attribute plan', 'unresolved');
494
+ charge(8 + restrictionBasePlan.scalarObligations.length + restrictionBasePlan.value.declarations.length);
495
+ typeDependencies.add(restrictionBasePlan.typeDependencies);
496
+ for (const obligation of restrictionBasePlan.scalarObligations) {
497
+ charge();
498
+ scalarObligations.push(obligation);
499
+ }
500
+ for (const receipt of restrictionBasePlan.value.declarations) {
501
+ charge(2 + receipt.component.length);
502
+ declarationEvidence.set(receipt.component, receipt);
503
+ }
504
+ plans.set(restrictionBase, restrictionBasePlan.value);
505
+ }
506
+ charge(3);
507
+ const stack = [root], active = new Set();
508
+ while (stack.length) {
509
+ charge();
510
+ const node = stack[stack.length - 1];
511
+ const raw = input(node);
512
+ if (!raw)
513
+ return problem(node, 'raw-type-properties', 'Complete literal attribute properties are required', 'unresolved');
514
+ const baseResolution = resolveSemanticType(context, raw.derivation.base);
515
+ if (!('identity' in baseResolution))
516
+ return problem(node, 'src-resolve', 'Literal base is unavailable', 'unresolved');
517
+ charge(4);
518
+ typeDependencies.add([{ contextId: context.contextId, type: baseResolution.identity }]);
519
+ const baseNode = baseResolution.kind === 'component' ? baseResolution.node : undefined;
520
+ if (baseNode && baseNode.kind !== 'complexType' && baseNode.kind !== 'simpleType')
521
+ return problem(node, 'raw-type-properties', 'Base must be a type');
522
+ if (baseNode?.kind === 'complexType' && !plans.has(baseNode.id)) {
523
+ charge(2);
524
+ if (baseNode.id === node.id || active.has(baseNode.id))
525
+ return problem(node, 'type-derivation-cycle', 'Literal base chain contains a cycle');
526
+ active.add(node.id);
527
+ stack.push(baseNode);
528
+ continue;
529
+ }
530
+ const base = baseNode ? plans.get(baseNode.id) : undefined;
531
+ const ur = baseResolution.kind === 'builtin' && baseResolution.name.namespace === XSD_NAMESPACE && baseResolution.name.local === 'anyType';
532
+ const baseWildcard = base?.wildcard ?? (ur ? { namespace: { kind: 'not', namespaces: [] }, processContents: 'lax', sources: [] } : undefined);
533
+ charge(2);
534
+ const local = [];
535
+ for (const id of raw.attributeUses) {
536
+ const item = get(id);
537
+ if (item.kind !== 'attributeUse' || item.use === 'prohibited')
538
+ return problem(item, 'au-props-correct', 'A literal AU set contains only present attribute uses');
539
+ const mapped = use(item);
540
+ charge();
541
+ local.push(mapped);
542
+ }
543
+ const uses = checkUses(local, node), wildcard = raw.wildcard;
544
+ if ((mode === 'original-container' || mode === 'restriction-pair') && wildcard)
545
+ for (const id of wildcard.sources) {
546
+ charge();
547
+ get(id);
548
+ }
549
+ if (wildcard && (!['strict', 'lax', 'skip'].includes(wildcard.processContents) || !namespaceExpressible(wildcard.namespace, charge)))
550
+ return problem(node, 'cos-aw-union/intersect', 'Literal wildcard has invalid component properties');
551
+ if (mode === 'restriction-pair' && node.id === ownerId) {
552
+ if (!baseNode || baseNode.kind !== 'complexType')
553
+ return problem(node, 'attribute-restriction-base', 'Alternative base must be complex', 'unresolved');
554
+ if (declarationMethods(context, baseNode, 'final').includes('restriction'))
555
+ return problem(node, 'derivation-ok-restriction.1', 'Alternative base prohibits restriction');
556
+ }
557
+ else if (!unwrap(checkImmediateTypeFinal(context, { kind: 'local', target: node.id }), node))
558
+ return problem(node, 'cos-ct-extends/derivation-ok-restriction', 'Base final excludes derivation');
559
+ if (raw.derivation.method === 'extension') {
560
+ for (const original of base?.uses ?? []) {
561
+ let matched = false;
562
+ for (const item of uses) {
563
+ if (nameKey(item.declaration.name) === nameKey(original.declaration.name) && sameType(declaredType(context, item.declaration), declaredType(context, original.declaration), node))
564
+ matched = true;
565
+ }
566
+ if (!matched)
567
+ return problem(node, 'cos-ct-extends.1.2', 'Literal extension omits a base attribute name/type match');
568
+ }
569
+ if (baseWildcard && (!wildcard || !namespaceSubset(baseWildcard.namespace, wildcard.namespace, charge)))
570
+ return problem(node, 'cos-ct-extends.1.3', 'Literal extension wildcard must contain the base wildcard');
571
+ }
572
+ else {
573
+ charge(3);
574
+ const requiredNames = new Set();
575
+ let pendingMatch;
576
+ for (const item of uses) {
577
+ let matched = false, compatible = false;
578
+ let failure;
579
+ let pending, qualified;
580
+ const k = nameKey(item.declaration.name);
581
+ for (const original of base?.uses ?? [])
582
+ if (k === nameKey(original.declaration.name)) {
583
+ matched = true;
584
+ charge();
585
+ const pairObligations = [];
586
+ const pairDependencies = collectSemanticTypeDependencies(context);
587
+ try {
588
+ const next = replacementFailure(item, original, pairObligations, pairDependencies);
589
+ if (next)
590
+ failure ??= next;
591
+ else if (pairObligations.length === 0) {
592
+ typeDependencies.add(pairDependencies.snapshot());
593
+ compatible = true;
594
+ break;
595
+ }
596
+ else if (!qualified) {
597
+ charge(3);
598
+ qualified = { obligations: pairObligations, dependencies: pairDependencies.snapshot() };
599
+ }
600
+ }
601
+ catch (error) {
602
+ if (!(error instanceof AttributeAbort) || error.result.kind !== 'unresolved' && error.result.kind !== 'unsupported-capability')
603
+ throw error;
604
+ pending ??= error.result;
605
+ }
606
+ }
607
+ if (!matched && (!baseWildcard || !namespaceAllows(baseWildcard.namespace, item.declaration.name.namespace, charge)))
608
+ return problem(node, 'derivation-ok-restriction.2.2', 'Literal restriction adds an attribute outside the base wildcard');
609
+ // Selected literal interpretation: one compatible pair suffices.
610
+ // Prefer a debt-free pair; otherwise retain one qualified pair's
611
+ // complete obligations for the aggregate checker to discharge.
612
+ // Mapped declaration/AU debts remain independently in the receipt.
613
+ if (!compatible && qualified) {
614
+ for (const obligation of qualified.obligations) {
615
+ charge(2);
616
+ scalarObligations.push(obligation);
617
+ }
618
+ typeDependencies.add(qualified.dependencies);
619
+ compatible = true;
620
+ }
621
+ if (!compatible) {
622
+ if (pending)
623
+ pendingMatch ??= pending;
624
+ else if (failure)
625
+ return problem(item.source, failure.rule, failure.message);
626
+ }
627
+ if (item.required) {
628
+ charge();
629
+ requiredNames.add(k);
630
+ }
631
+ }
632
+ for (const original of base?.uses ?? [])
633
+ if (original.required && !requiredNames.has(nameKey(original.declaration.name)))
634
+ return problem(node, 'derivation-ok-restriction.3', 'Literal restriction omits a required base attribute');
635
+ if (wildcard && (!baseWildcard || !namespaceSubset(wildcard.namespace, baseWildcard.namespace, charge) || !ur && !processContentsRestricts(wildcard.processContents, baseWildcard.processContents, charge)))
636
+ return problem(node, 'derivation-ok-restriction.4', 'Literal wildcard is not an admitted restriction');
637
+ if (pendingMatch)
638
+ throw new AttributeAbort(pendingMatch);
639
+ }
640
+ charge(12 + uses.length + (base?.schemaOperands.length ?? 0) + declarationEvidence.size);
641
+ const plan = Object.freeze({ owner: node.id, uses, attributes: presence(uses, node), wildcard,
642
+ schemaOperands: Object.freeze([...(base?.schemaOperands ?? []), ...uses]), declarations: Object.freeze([...declarationEvidence.values()]) });
643
+ plans.set(node.id, plan);
644
+ active.delete(node.id);
645
+ stack.pop();
646
+ }
647
+ charge(10 + scalarObligations.length);
648
+ return Object.freeze({ kind: 'checked', contextId: context.contextId,
649
+ authority: mode === 'restriction-pair' ? 'AU01-C1-restriction-pair-v1'
650
+ : originalInput ? 'AU01-C1-original-construction-v1' : 'AU01-C1-raw-v2',
651
+ value: plans.get(root.id), obligations: Object.freeze(['aggregate-type-validity', 'raw-type-property-correspondence']), scalarObligations: Object.freeze(scalarObligations), typeDependencies: typeDependencies.snapshot() });
652
+ }
653
+ const dependencies = (node) => {
654
+ charge();
655
+ const result = [];
656
+ if (node.kind === 'complexType' && node.derivation && node.derivation.base.kind !== 'builtin') {
657
+ const base = target(node.derivation.base, node);
658
+ if (base.kind === 'complexType') {
659
+ charge();
660
+ result.push(base);
661
+ }
662
+ }
663
+ for (const id of node.attributes) {
664
+ const item = get(id);
665
+ if (item.kind === 'attributeGroupUse') {
666
+ charge();
667
+ result.push(attributeGroup(target(item.reference, item)));
668
+ }
669
+ }
670
+ return result;
671
+ };
672
+ charge(2);
673
+ const stack = [{ node: root, entered: false }];
674
+ while (stack.length) {
675
+ charge(2);
676
+ const frame = stack[stack.length - 1], node = frame.node;
677
+ if (plans.has(node.id)) {
678
+ stack.pop();
679
+ continue;
680
+ }
681
+ if (!frame.entered) {
682
+ frame.entered = true;
683
+ for (const dependency of dependencies(node))
684
+ if (!plans.has(dependency.id)) {
685
+ charge(3);
686
+ stack.push({ node: dependency, entered: false });
687
+ }
688
+ continue;
689
+ }
690
+ charge(4);
691
+ const local = [], schemaOperands = [], prohibitions = new Set();
692
+ let explicit, groups;
693
+ for (const id of node.attributes) {
694
+ const item = get(id);
695
+ if (item.kind === 'attributeUse') {
696
+ const mapped = use(item);
697
+ if (mapped) {
698
+ charge(2);
699
+ local.push(mapped);
700
+ schemaOperands.push(mapped);
701
+ }
702
+ else if (node.kind === 'complexType' && node.derivation?.kind === 'restriction') {
703
+ const attribute = target(item.declaration, item);
704
+ if (attribute.kind !== 'attribute')
705
+ return problem(item, 'src-attribute', 'Prohibited reference requires declaration');
706
+ charge();
707
+ prohibitions.add(nameKey(attribute.name));
708
+ }
709
+ }
710
+ else if (item.kind === 'attributeGroupUse') {
711
+ const group = plans.get(target(item.reference, item).id);
712
+ charge(group.uses.length + group.schemaOperands.length);
713
+ local.push(...group.uses);
714
+ schemaOperands.push(...group.schemaOperands);
715
+ groups = combine(groups, group.wildcard, node, false);
716
+ }
717
+ else if (item.kind === 'attributeWildcard') {
718
+ if (explicit)
719
+ return problem(item, 'src-attribute-group', 'Multiple explicit wildcards');
720
+ const namespace = wildcardNamespaces(item.wildcard, charge);
721
+ charge(6);
722
+ explicit = Object.freeze({ namespace, processContents: item.wildcard.processContents, sources: Object.freeze([item.id]) });
723
+ }
724
+ else
725
+ return problem(item, 'src-attribute-group', 'Invalid attribute contribution');
726
+ }
727
+ let wildcard = explicit ? combine(explicit, groups, node, false) : groups;
728
+ let uses = checkUses(local, node);
729
+ if (node.kind === 'complexType' && node.derivation) {
730
+ if (!unwrap(checkImmediateTypeFinal(context, { kind: 'local', target: node.id }), node))
731
+ return problem(node, 'cos-ct-extends/derivation-ok-restriction', 'Base final excludes derivation');
732
+ const base = node.derivation.base.kind === 'builtin' ? undefined : plans.get(target(node.derivation.base, node).id);
733
+ const ur = node.derivation.base.kind === 'builtin' && node.derivation.base.name.namespace === XSD_NAMESPACE && node.derivation.base.name.local === 'anyType';
734
+ const baseWildcard = base?.wildcard ?? (ur ? { namespace: { kind: 'not', namespaces: [] }, processContents: 'lax', sources: [] } : undefined);
735
+ if (base) {
736
+ charge(base.schemaOperands.length);
737
+ schemaOperands.push(...base.schemaOperands);
738
+ }
739
+ if (node.derivation.kind === 'extension') {
740
+ charge((base?.uses.length ?? 0) + uses.length + 1);
741
+ uses = checkUses([...(base?.uses ?? []), ...uses], node);
742
+ wildcard = combine(baseWildcard, wildcard, node, true);
743
+ }
744
+ else {
745
+ charge(3);
746
+ const byName = new Map(), replacements = new Set(), inherited = [];
747
+ for (const item of base?.uses ?? []) {
748
+ const k = nameKey(item.declaration.name);
749
+ charge(4);
750
+ const values = byName.get(k) ?? [];
751
+ values.push(item);
752
+ byName.set(k, values);
753
+ }
754
+ for (const item of uses) {
755
+ const k = nameKey(item.declaration.name), matches = byName.get(k);
756
+ charge();
757
+ replacements.add(k);
758
+ if (!matches && (!baseWildcard || !namespaceAllows(baseWildcard.namespace, item.declaration.name.namespace, charge)))
759
+ return problem(node, 'derivation-ok-restriction.2.2', 'New attribute outside base wildcard');
760
+ for (const original of matches ?? [])
761
+ checkReplacement(item, original);
762
+ }
763
+ for (const item of base?.uses ?? []) {
764
+ const k = nameKey(item.declaration.name);
765
+ if (replacements.has(k))
766
+ continue;
767
+ if (prohibitions.has(k)) {
768
+ if (item.required)
769
+ return problem(node, 'derivation-ok-restriction.3', 'Prohibition removes required attribute');
770
+ }
771
+ else {
772
+ charge();
773
+ inherited.push(item);
774
+ }
775
+ }
776
+ charge(inherited.length + uses.length + 1);
777
+ uses = checkUses([...inherited, ...uses], node);
778
+ if (wildcard && (!baseWildcard || !namespaceSubset(wildcard.namespace, baseWildcard.namespace, charge) || !ur && !processContentsRestricts(wildcard.processContents, baseWildcard.processContents, charge)))
779
+ return problem(node, 'derivation-ok-restriction.4', 'Wildcard is not an admitted restriction');
780
+ }
781
+ }
782
+ const attributes = presence(uses, node);
783
+ charge(11 + schemaOperands.length + declarationEvidence.size);
784
+ const plan = Object.freeze({ owner: node.id, uses, attributes, wildcard, schemaOperands: Object.freeze(schemaOperands), declarations: Object.freeze([...declarationEvidence.values()]) });
785
+ plans.set(node.id, plan);
786
+ stack.pop();
787
+ }
788
+ charge(10 + scalarObligations.length);
789
+ return Object.freeze({ kind: 'checked', contextId: context.contextId, authority: 'AU01-C1-source-v1',
790
+ value: plans.get(root.id), obligations: Object.freeze(['aggregate-type-validity', 'source-representation-syntax']), scalarObligations: Object.freeze(scalarObligations), typeDependencies: typeDependencies.snapshot() });
791
+ }
792
+ catch (error) {
793
+ if (error instanceof AttributeAbort)
794
+ return error.result;
795
+ throw error;
796
+ }
797
+ });
798
+ }