@wirebench/engine 2.1.1

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 (583) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +3 -0
  3. package/dist/assert/contract.d.ts +3 -0
  4. package/dist/assert/contract.js +17 -0
  5. package/dist/assert/index.d.ts +4 -0
  6. package/dist/assert/index.js +27 -0
  7. package/dist/assert/match.d.ts +3 -0
  8. package/dist/assert/match.js +58 -0
  9. package/dist/assert/model.d.ts +73 -0
  10. package/dist/assert/model.js +8 -0
  11. package/dist/assert/schema.d.ts +34 -0
  12. package/dist/assert/schema.js +46 -0
  13. package/dist/assert/sla.d.ts +3 -0
  14. package/dist/assert/sla.js +8 -0
  15. package/dist/assert/soap-fault.d.ts +3 -0
  16. package/dist/assert/soap-fault.js +20 -0
  17. package/dist/assert/status.d.ts +3 -0
  18. package/dist/assert/status.js +14 -0
  19. package/dist/errors.d.ts +77 -0
  20. package/dist/errors.js +121 -0
  21. package/dist/fs.d.ts +35 -0
  22. package/dist/fs.js +64 -0
  23. package/dist/generate.d.ts +12 -0
  24. package/dist/generate.js +14 -0
  25. package/dist/grpc/browser.d.ts +11 -0
  26. package/dist/grpc/browser.js +9 -0
  27. package/dist/grpc/cache.d.ts +113 -0
  28. package/dist/grpc/cache.js +244 -0
  29. package/dist/grpc/call.d.ts +64 -0
  30. package/dist/grpc/call.js +72 -0
  31. package/dist/grpc/codec.d.ts +29 -0
  32. package/dist/grpc/codec.js +416 -0
  33. package/dist/grpc/command.d.ts +23 -0
  34. package/dist/grpc/command.js +91 -0
  35. package/dist/grpc/expand.d.ts +25 -0
  36. package/dist/grpc/expand.js +52 -0
  37. package/dist/grpc/framing.d.ts +28 -0
  38. package/dist/grpc/framing.js +61 -0
  39. package/dist/grpc/import.d.ts +47 -0
  40. package/dist/grpc/import.js +88 -0
  41. package/dist/grpc/model.d.ts +179 -0
  42. package/dist/grpc/model.js +91 -0
  43. package/dist/grpc/proto/describe.d.ts +92 -0
  44. package/dist/grpc/proto/describe.js +205 -0
  45. package/dist/grpc/proto/load.d.ts +35 -0
  46. package/dist/grpc/proto/load.js +112 -0
  47. package/dist/grpc/proto/sample.d.ts +21 -0
  48. package/dist/grpc/proto/sample.js +79 -0
  49. package/dist/grpc/proto/well-known.d.ts +42 -0
  50. package/dist/grpc/proto/well-known.js +143 -0
  51. package/dist/grpc/reconcile.d.ts +42 -0
  52. package/dist/grpc/reconcile.js +153 -0
  53. package/dist/grpc/reflection/client.d.ts +70 -0
  54. package/dist/grpc/reflection/client.js +197 -0
  55. package/dist/grpc/reflection/descriptors.d.ts +69 -0
  56. package/dist/grpc/reflection/descriptors.js +140 -0
  57. package/dist/grpc/reflection/proto.d.ts +33 -0
  58. package/dist/grpc/reflection/proto.js +144 -0
  59. package/dist/grpc/send.d.ts +132 -0
  60. package/dist/grpc/send.js +435 -0
  61. package/dist/grpc/shape.d.ts +29 -0
  62. package/dist/grpc/shape.js +36 -0
  63. package/dist/grpc/status.d.ts +21 -0
  64. package/dist/grpc/status.js +62 -0
  65. package/dist/grpc/target.d.ts +21 -0
  66. package/dist/grpc/target.js +66 -0
  67. package/dist/http/auth/apply.d.ts +37 -0
  68. package/dist/http/auth/apply.js +74 -0
  69. package/dist/http/auth/basic.d.ts +36 -0
  70. package/dist/http/auth/basic.js +69 -0
  71. package/dist/http/auth/md4.d.ts +13 -0
  72. package/dist/http/auth/md4.js +81 -0
  73. package/dist/http/auth/ntlm-transport.d.ts +61 -0
  74. package/dist/http/auth/ntlm-transport.js +97 -0
  75. package/dist/http/auth/ntlm.d.ts +190 -0
  76. package/dist/http/auth/ntlm.js +377 -0
  77. package/dist/http/client.d.ts +73 -0
  78. package/dist/http/client.js +403 -0
  79. package/dist/http/curl-flags.d.ts +15 -0
  80. package/dist/http/curl-flags.js +95 -0
  81. package/dist/http/curl.d.ts +94 -0
  82. package/dist/http/curl.js +245 -0
  83. package/dist/http/decompress.d.ts +7 -0
  84. package/dist/http/decompress.js +22 -0
  85. package/dist/http/errors.d.ts +22 -0
  86. package/dist/http/errors.js +144 -0
  87. package/dist/http/failed-request.d.ts +27 -0
  88. package/dist/http/failed-request.js +48 -0
  89. package/dist/http/headers.d.ts +15 -0
  90. package/dist/http/headers.js +50 -0
  91. package/dist/http/heredoc.d.ts +25 -0
  92. package/dist/http/heredoc.js +74 -0
  93. package/dist/http/proxy.d.ts +103 -0
  94. package/dist/http/proxy.js +168 -0
  95. package/dist/http/raw-capture.d.ts +23 -0
  96. package/dist/http/raw-capture.js +57 -0
  97. package/dist/http/timings.d.ts +79 -0
  98. package/dist/http/timings.js +212 -0
  99. package/dist/http/tls.d.ts +111 -0
  100. package/dist/http/tls.js +167 -0
  101. package/dist/http/types.d.ts +125 -0
  102. package/dist/http/types.js +6 -0
  103. package/dist/import-detect.d.ts +26 -0
  104. package/dist/import-detect.js +169 -0
  105. package/dist/import.d.ts +20 -0
  106. package/dist/import.js +163 -0
  107. package/dist/index.d.ts +272 -0
  108. package/dist/index.js +157 -0
  109. package/dist/json/cursor.d.ts +43 -0
  110. package/dist/json/cursor.js +168 -0
  111. package/dist/operations.d.ts +12 -0
  112. package/dist/operations.js +52 -0
  113. package/dist/project/attachments-cache.d.ts +80 -0
  114. package/dist/project/attachments-cache.js +186 -0
  115. package/dist/project/endpoints.d.ts +23 -0
  116. package/dist/project/endpoints.js +47 -0
  117. package/dist/project/environments.d.ts +68 -0
  118. package/dist/project/environments.js +124 -0
  119. package/dist/project/fs.d.ts +45 -0
  120. package/dist/project/fs.js +78 -0
  121. package/dist/project/history.d.ts +171 -0
  122. package/dist/project/history.js +179 -0
  123. package/dist/project/keystores.d.ts +24 -0
  124. package/dist/project/keystores.js +66 -0
  125. package/dist/project/load.d.ts +44 -0
  126. package/dist/project/load.js +634 -0
  127. package/dist/project/migrate.d.ts +27 -0
  128. package/dist/project/migrate.js +46 -0
  129. package/dist/project/model.d.ts +401 -0
  130. package/dist/project/model.js +126 -0
  131. package/dist/project/paths.d.ts +134 -0
  132. package/dist/project/paths.js +259 -0
  133. package/dist/project/preferences.d.ts +318 -0
  134. package/dist/project/preferences.js +239 -0
  135. package/dist/project/properties.d.ts +97 -0
  136. package/dist/project/properties.js +356 -0
  137. package/dist/project/save.d.ts +65 -0
  138. package/dist/project/save.js +295 -0
  139. package/dist/project/schema.d.ts +1329 -0
  140. package/dist/project/schema.js +737 -0
  141. package/dist/project/serialize.d.ts +42 -0
  142. package/dist/project/serialize.js +385 -0
  143. package/dist/project/wss-configs.d.ts +40 -0
  144. package/dist/project/wss-configs.js +142 -0
  145. package/dist/project/yaml.d.ts +17 -0
  146. package/dist/project/yaml.js +39 -0
  147. package/dist/redact/index.d.ts +77 -0
  148. package/dist/redact/index.js +328 -0
  149. package/dist/redact/literal.d.ts +12 -0
  150. package/dist/redact/literal.js +68 -0
  151. package/dist/rest/auth.d.ts +53 -0
  152. package/dist/rest/auth.js +80 -0
  153. package/dist/rest/body.d.ts +61 -0
  154. package/dist/rest/body.js +184 -0
  155. package/dist/rest/browser.d.ts +12 -0
  156. package/dist/rest/browser.js +11 -0
  157. package/dist/rest/cookies.d.ts +41 -0
  158. package/dist/rest/cookies.js +102 -0
  159. package/dist/rest/curl.d.ts +75 -0
  160. package/dist/rest/curl.js +417 -0
  161. package/dist/rest/expand.d.ts +35 -0
  162. package/dist/rest/expand.js +104 -0
  163. package/dist/rest/model.d.ts +247 -0
  164. package/dist/rest/model.js +118 -0
  165. package/dist/rest/oauth2.d.ts +118 -0
  166. package/dist/rest/oauth2.js +212 -0
  167. package/dist/rest/openapi/cache.d.ts +54 -0
  168. package/dist/rest/openapi/cache.js +128 -0
  169. package/dist/rest/openapi/import.d.ts +67 -0
  170. package/dist/rest/openapi/import.js +91 -0
  171. package/dist/rest/openapi/map.d.ts +102 -0
  172. package/dist/rest/openapi/map.js +477 -0
  173. package/dist/rest/openapi/model.d.ts +203 -0
  174. package/dist/rest/openapi/model.js +37 -0
  175. package/dist/rest/openapi/parse.d.ts +44 -0
  176. package/dist/rest/openapi/parse.js +1530 -0
  177. package/dist/rest/openapi/refs.d.ts +63 -0
  178. package/dist/rest/openapi/refs.js +258 -0
  179. package/dist/rest/openapi/sample.d.ts +68 -0
  180. package/dist/rest/openapi/sample.js +336 -0
  181. package/dist/rest/postman/import.d.ts +21 -0
  182. package/dist/rest/postman/import.js +47 -0
  183. package/dist/rest/postman/index.d.ts +7 -0
  184. package/dist/rest/postman/index.js +7 -0
  185. package/dist/rest/postman/map.d.ts +28 -0
  186. package/dist/rest/postman/map.js +427 -0
  187. package/dist/rest/postman/model.d.ts +118 -0
  188. package/dist/rest/postman/model.js +7 -0
  189. package/dist/rest/postman/parse.d.ts +29 -0
  190. package/dist/rest/postman/parse.js +518 -0
  191. package/dist/rest/response.d.ts +72 -0
  192. package/dist/rest/response.js +221 -0
  193. package/dist/rest/send.d.ts +102 -0
  194. package/dist/rest/send.js +148 -0
  195. package/dist/rest/url.d.ts +92 -0
  196. package/dist/rest/url.js +213 -0
  197. package/dist/run/effective-auth.d.ts +10 -0
  198. package/dist/run/effective-auth.js +19 -0
  199. package/dist/run/index.d.ts +8 -0
  200. package/dist/run/index.js +4 -0
  201. package/dist/run/prepare.d.ts +43 -0
  202. package/dist/run/prepare.js +280 -0
  203. package/dist/run/run.d.ts +53 -0
  204. package/dist/run/run.js +223 -0
  205. package/dist/run/secret-needs.d.ts +13 -0
  206. package/dist/run/secret-needs.js +125 -0
  207. package/dist/run/select.d.ts +34 -0
  208. package/dist/run/select.js +76 -0
  209. package/dist/secrets/env-names.d.ts +27 -0
  210. package/dist/secrets/env-names.js +40 -0
  211. package/dist/secrets/resolve.d.ts +58 -0
  212. package/dist/secrets/resolve.js +136 -0
  213. package/dist/send-options.d.ts +141 -0
  214. package/dist/send-options.js +228 -0
  215. package/dist/send.d.ts +53 -0
  216. package/dist/send.js +210 -0
  217. package/dist/soap/body-builder.d.ts +38 -0
  218. package/dist/soap/body-builder.js +250 -0
  219. package/dist/soap/build-problems.d.ts +12 -0
  220. package/dist/soap/build-problems.js +2 -0
  221. package/dist/soap/charset.d.ts +23 -0
  222. package/dist/soap/charset.js +47 -0
  223. package/dist/soap/envelope.d.ts +44 -0
  224. package/dist/soap/envelope.js +76 -0
  225. package/dist/soap/fault.d.ts +46 -0
  226. package/dist/soap/fault.js +129 -0
  227. package/dist/soap/form-request.d.ts +34 -0
  228. package/dist/soap/form-request.js +251 -0
  229. package/dist/soap/legacy-project/definition-fetcher.d.ts +21 -0
  230. package/dist/soap/legacy-project/definition-fetcher.js +43 -0
  231. package/dist/soap/legacy-project/format.d.ts +18 -0
  232. package/dist/soap/legacy-project/format.js +24 -0
  233. package/dist/soap/legacy-project/import.d.ts +21 -0
  234. package/dist/soap/legacy-project/import.js +46 -0
  235. package/dist/soap/legacy-project/index.d.ts +9 -0
  236. package/dist/soap/legacy-project/index.js +5 -0
  237. package/dist/soap/legacy-project/map.d.ts +91 -0
  238. package/dist/soap/legacy-project/map.js +290 -0
  239. package/dist/soap/legacy-project/model.d.ts +98 -0
  240. package/dist/soap/legacy-project/model.js +5 -0
  241. package/dist/soap/legacy-project/parse.d.ts +16 -0
  242. package/dist/soap/legacy-project/parse.js +325 -0
  243. package/dist/soap/mime/cid-scan.d.ts +36 -0
  244. package/dist/soap/mime/cid-scan.js +52 -0
  245. package/dist/soap/mime/inline-files.d.ts +39 -0
  246. package/dist/soap/mime/inline-files.js +71 -0
  247. package/dist/soap/mime/mtom.d.ts +74 -0
  248. package/dist/soap/mime/mtom.js +134 -0
  249. package/dist/soap/mime/multipart.d.ts +66 -0
  250. package/dist/soap/mime/multipart.js +329 -0
  251. package/dist/soap/mime/send-pipeline.d.ts +61 -0
  252. package/dist/soap/mime/send-pipeline.js +145 -0
  253. package/dist/soap/mime/swa.d.ts +45 -0
  254. package/dist/soap/mime/swa.js +62 -0
  255. package/dist/soap/mime/types.d.ts +69 -0
  256. package/dist/soap/mime/types.js +10 -0
  257. package/dist/soap/namespace-scope.d.ts +32 -0
  258. package/dist/soap/namespace-scope.js +85 -0
  259. package/dist/soap/prefixes.d.ts +24 -0
  260. package/dist/soap/prefixes.js +70 -0
  261. package/dist/soap/recreate.d.ts +28 -0
  262. package/dist/soap/recreate.js +168 -0
  263. package/dist/soap/request-builder.d.ts +63 -0
  264. package/dist/soap/request-builder.js +161 -0
  265. package/dist/soap/response-parser.d.ts +29 -0
  266. package/dist/soap/response-parser.js +71 -0
  267. package/dist/soap/soap-action.d.ts +31 -0
  268. package/dist/soap/soap-action.js +28 -0
  269. package/dist/soap/transforms.d.ts +52 -0
  270. package/dist/soap/transforms.js +164 -0
  271. package/dist/types.d.ts +307 -0
  272. package/dist/types.js +6 -0
  273. package/dist/validate/index.d.ts +61 -0
  274. package/dist/validate/index.js +72 -0
  275. package/dist/validate/schema-file-set.d.ts +51 -0
  276. package/dist/validate/schema-file-set.js +288 -0
  277. package/dist/validate/schema-validator.d.ts +53 -0
  278. package/dist/validate/schema-validator.js +251 -0
  279. package/dist/validate/soap-structure.d.ts +34 -0
  280. package/dist/validate/soap-structure.js +255 -0
  281. package/dist/validate/types.d.ts +47 -0
  282. package/dist/validate/types.js +8 -0
  283. package/dist/validate/wsi/assertions/helpers.d.ts +145 -0
  284. package/dist/validate/wsi/assertions/helpers.js +387 -0
  285. package/dist/validate/wsi/assertions/index.d.ts +44 -0
  286. package/dist/validate/wsi/assertions/index.js +77 -0
  287. package/dist/validate/wsi/assertions/message/helpers.d.ts +63 -0
  288. package/dist/validate/wsi/assertions/message/helpers.js +168 -0
  289. package/dist/validate/wsi/assertions/message/index.d.ts +39 -0
  290. package/dist/validate/wsi/assertions/message/index.js +62 -0
  291. package/dist/validate/wsi/assertions/message/r1001.d.ts +10 -0
  292. package/dist/validate/wsi/assertions/message/r1001.js +38 -0
  293. package/dist/validate/wsi/assertions/message/r1003.d.ts +14 -0
  294. package/dist/validate/wsi/assertions/message/r1003.js +45 -0
  295. package/dist/validate/wsi/assertions/message/r1005.d.ts +12 -0
  296. package/dist/validate/wsi/assertions/message/r1005.js +37 -0
  297. package/dist/validate/wsi/assertions/message/r1006.d.ts +10 -0
  298. package/dist/validate/wsi/assertions/message/r1006.js +49 -0
  299. package/dist/validate/wsi/assertions/message/r1007.d.ts +10 -0
  300. package/dist/validate/wsi/assertions/message/r1007.js +30 -0
  301. package/dist/validate/wsi/assertions/message/r1011.d.ts +10 -0
  302. package/dist/validate/wsi/assertions/message/r1011.js +33 -0
  303. package/dist/validate/wsi/assertions/message/r1012.d.ts +13 -0
  304. package/dist/validate/wsi/assertions/message/r1012.js +37 -0
  305. package/dist/validate/wsi/assertions/message/r1013.d.ts +9 -0
  306. package/dist/validate/wsi/assertions/message/r1013.js +42 -0
  307. package/dist/validate/wsi/assertions/message/r1014.d.ts +10 -0
  308. package/dist/validate/wsi/assertions/message/r1014.js +30 -0
  309. package/dist/validate/wsi/assertions/message/r1015.d.ts +12 -0
  310. package/dist/validate/wsi/assertions/message/r1015.js +36 -0
  311. package/dist/validate/wsi/assertions/message/r1017.d.ts +10 -0
  312. package/dist/validate/wsi/assertions/message/r1017.js +30 -0
  313. package/dist/validate/wsi/assertions/message/r1100.d.ts +10 -0
  314. package/dist/validate/wsi/assertions/message/r1100.js +39 -0
  315. package/dist/validate/wsi/assertions/message/r1101.d.ts +10 -0
  316. package/dist/validate/wsi/assertions/message/r1101.js +37 -0
  317. package/dist/validate/wsi/assertions/message/r1102.d.ts +10 -0
  318. package/dist/validate/wsi/assertions/message/r1102.js +41 -0
  319. package/dist/validate/wsi/assertions/message/r1103.d.ts +10 -0
  320. package/dist/validate/wsi/assertions/message/r1103.js +28 -0
  321. package/dist/validate/wsi/assertions/message/r1107.d.ts +10 -0
  322. package/dist/validate/wsi/assertions/message/r1107.js +38 -0
  323. package/dist/validate/wsi/assertions/message/r1109.d.ts +10 -0
  324. package/dist/validate/wsi/assertions/message/r1109.js +32 -0
  325. package/dist/validate/wsi/assertions/message/r1124.d.ts +10 -0
  326. package/dist/validate/wsi/assertions/message/r1124.js +31 -0
  327. package/dist/validate/wsi/assertions/message/r1132.d.ts +9 -0
  328. package/dist/validate/wsi/assertions/message/r1132.js +23 -0
  329. package/dist/validate/wsi/assertions/message/r1140.d.ts +10 -0
  330. package/dist/validate/wsi/assertions/message/r1140.js +42 -0
  331. package/dist/validate/wsi/assertions/message/r1141.d.ts +10 -0
  332. package/dist/validate/wsi/assertions/message/r1141.js +32 -0
  333. package/dist/validate/wsi/assertions/message/r2113.d.ts +11 -0
  334. package/dist/validate/wsi/assertions/message/r2113.js +33 -0
  335. package/dist/validate/wsi/assertions/message/r2211.d.ts +7 -0
  336. package/dist/validate/wsi/assertions/message/r2211.js +42 -0
  337. package/dist/validate/wsi/assertions/r2001.d.ts +15 -0
  338. package/dist/validate/wsi/assertions/r2001.js +47 -0
  339. package/dist/validate/wsi/assertions/r2002.d.ts +11 -0
  340. package/dist/validate/wsi/assertions/r2002.js +38 -0
  341. package/dist/validate/wsi/assertions/r2003.d.ts +7 -0
  342. package/dist/validate/wsi/assertions/r2003.js +32 -0
  343. package/dist/validate/wsi/assertions/r2005.d.ts +7 -0
  344. package/dist/validate/wsi/assertions/r2005.js +40 -0
  345. package/dist/validate/wsi/assertions/r2101.d.ts +14 -0
  346. package/dist/validate/wsi/assertions/r2101.js +65 -0
  347. package/dist/validate/wsi/assertions/r2102.d.ts +10 -0
  348. package/dist/validate/wsi/assertions/r2102.js +41 -0
  349. package/dist/validate/wsi/assertions/r2105.d.ts +8 -0
  350. package/dist/validate/wsi/assertions/r2105.js +39 -0
  351. package/dist/validate/wsi/assertions/r2110.d.ts +8 -0
  352. package/dist/validate/wsi/assertions/r2110.js +38 -0
  353. package/dist/validate/wsi/assertions/r2111.d.ts +6 -0
  354. package/dist/validate/wsi/assertions/r2111.js +30 -0
  355. package/dist/validate/wsi/assertions/r2112.d.ts +7 -0
  356. package/dist/validate/wsi/assertions/r2112.js +35 -0
  357. package/dist/validate/wsi/assertions/r2201.d.ts +7 -0
  358. package/dist/validate/wsi/assertions/r2201.js +28 -0
  359. package/dist/validate/wsi/assertions/r2203.d.ts +7 -0
  360. package/dist/validate/wsi/assertions/r2203.js +30 -0
  361. package/dist/validate/wsi/assertions/r2204.d.ts +6 -0
  362. package/dist/validate/wsi/assertions/r2204.js +29 -0
  363. package/dist/validate/wsi/assertions/r2205.d.ts +8 -0
  364. package/dist/validate/wsi/assertions/r2205.js +46 -0
  365. package/dist/validate/wsi/assertions/r2206.d.ts +7 -0
  366. package/dist/validate/wsi/assertions/r2206.js +36 -0
  367. package/dist/validate/wsi/assertions/r2209.d.ts +12 -0
  368. package/dist/validate/wsi/assertions/r2209.js +37 -0
  369. package/dist/validate/wsi/assertions/r2210.d.ts +7 -0
  370. package/dist/validate/wsi/assertions/r2210.js +30 -0
  371. package/dist/validate/wsi/assertions/r2303.d.ts +7 -0
  372. package/dist/validate/wsi/assertions/r2303.js +44 -0
  373. package/dist/validate/wsi/assertions/r2304.d.ts +6 -0
  374. package/dist/validate/wsi/assertions/r2304.js +32 -0
  375. package/dist/validate/wsi/assertions/r2401.d.ts +12 -0
  376. package/dist/validate/wsi/assertions/r2401.js +31 -0
  377. package/dist/validate/wsi/assertions/r2701.d.ts +7 -0
  378. package/dist/validate/wsi/assertions/r2701.js +28 -0
  379. package/dist/validate/wsi/assertions/r2702.d.ts +6 -0
  380. package/dist/validate/wsi/assertions/r2702.js +26 -0
  381. package/dist/validate/wsi/assertions/r2705.d.ts +11 -0
  382. package/dist/validate/wsi/assertions/r2705.js +31 -0
  383. package/dist/validate/wsi/assertions/r2706.d.ts +7 -0
  384. package/dist/validate/wsi/assertions/r2706.js +29 -0
  385. package/dist/validate/wsi/assertions/r2710.d.ts +13 -0
  386. package/dist/validate/wsi/assertions/r2710.js +37 -0
  387. package/dist/validate/wsi/assertions/r2716.d.ts +7 -0
  388. package/dist/validate/wsi/assertions/r2716.js +29 -0
  389. package/dist/validate/wsi/assertions/r2717.d.ts +9 -0
  390. package/dist/validate/wsi/assertions/r2717.js +31 -0
  391. package/dist/validate/wsi/assertions/r2718.d.ts +7 -0
  392. package/dist/validate/wsi/assertions/r2718.js +41 -0
  393. package/dist/validate/wsi/assertions/r2720.d.ts +7 -0
  394. package/dist/validate/wsi/assertions/r2720.js +29 -0
  395. package/dist/validate/wsi/assertions/r2721.d.ts +6 -0
  396. package/dist/validate/wsi/assertions/r2721.js +27 -0
  397. package/dist/validate/wsi/assertions/r2722.d.ts +6 -0
  398. package/dist/validate/wsi/assertions/r2722.js +29 -0
  399. package/dist/validate/wsi/assertions/r2801.d.ts +7 -0
  400. package/dist/validate/wsi/assertions/r2801.js +39 -0
  401. package/dist/validate/wsi/assertions/r2803.d.ts +7 -0
  402. package/dist/validate/wsi/assertions/r2803.js +29 -0
  403. package/dist/validate/wsi/docs.d.ts +29 -0
  404. package/dist/validate/wsi/docs.js +167 -0
  405. package/dist/validate/wsi/index.d.ts +16 -0
  406. package/dist/validate/wsi/index.js +11 -0
  407. package/dist/validate/wsi/report-html.d.ts +36 -0
  408. package/dist/validate/wsi/report-html.js +135 -0
  409. package/dist/validate/wsi/run-message.d.ts +50 -0
  410. package/dist/validate/wsi/run-message.js +190 -0
  411. package/dist/validate/wsi/run-wsdl.d.ts +48 -0
  412. package/dist/validate/wsi/run-wsdl.js +99 -0
  413. package/dist/validate/wsi/types.d.ts +173 -0
  414. package/dist/validate/wsi/types.js +17 -0
  415. package/dist/workspace/commit-message.d.ts +47 -0
  416. package/dist/workspace/commit-message.js +195 -0
  417. package/dist/workspace/environments.d.ts +79 -0
  418. package/dist/workspace/environments.js +115 -0
  419. package/dist/workspace/index.d.ts +28 -0
  420. package/dist/workspace/index.js +19 -0
  421. package/dist/workspace/load.d.ts +45 -0
  422. package/dist/workspace/load.js +155 -0
  423. package/dist/workspace/local-state.d.ts +37 -0
  424. package/dist/workspace/local-state.js +59 -0
  425. package/dist/workspace/migrate.d.ts +38 -0
  426. package/dist/workspace/migrate.js +50 -0
  427. package/dist/workspace/model.d.ts +86 -0
  428. package/dist/workspace/model.js +54 -0
  429. package/dist/workspace/paths.d.ts +64 -0
  430. package/dist/workspace/paths.js +97 -0
  431. package/dist/workspace/reidentify.d.ts +22 -0
  432. package/dist/workspace/reidentify.js +122 -0
  433. package/dist/workspace/save.d.ts +31 -0
  434. package/dist/workspace/save.js +84 -0
  435. package/dist/workspace/schema.d.ts +93 -0
  436. package/dist/workspace/schema.js +115 -0
  437. package/dist/workspace/serialize.d.ts +24 -0
  438. package/dist/workspace/serialize.js +60 -0
  439. package/dist/workspace/share.d.ts +52 -0
  440. package/dist/workspace/share.js +89 -0
  441. package/dist/ws/browser.d.ts +13 -0
  442. package/dist/ws/browser.js +11 -0
  443. package/dist/ws/call.d.ts +53 -0
  444. package/dist/ws/call.js +106 -0
  445. package/dist/ws/command.d.ts +19 -0
  446. package/dist/ws/command.js +28 -0
  447. package/dist/ws/expand.d.ts +38 -0
  448. package/dist/ws/expand.js +76 -0
  449. package/dist/ws/model.d.ts +191 -0
  450. package/dist/ws/model.js +83 -0
  451. package/dist/ws/pretty.d.ts +12 -0
  452. package/dist/ws/pretty.js +25 -0
  453. package/dist/ws/session.d.ts +50 -0
  454. package/dist/ws/session.js +333 -0
  455. package/dist/ws/shape.d.ts +18 -0
  456. package/dist/ws/shape.js +28 -0
  457. package/dist/ws/transcript.d.ts +14 -0
  458. package/dist/ws/transcript.js +29 -0
  459. package/dist/ws/url.d.ts +3 -0
  460. package/dist/ws/url.js +44 -0
  461. package/dist/wsa/headers.d.ts +78 -0
  462. package/dist/wsa/headers.js +244 -0
  463. package/dist/wsa/model.d.ts +66 -0
  464. package/dist/wsa/model.js +52 -0
  465. package/dist/wsa/policy-detect.d.ts +81 -0
  466. package/dist/wsa/policy-detect.js +245 -0
  467. package/dist/wsdl/cache-naming.d.ts +39 -0
  468. package/dist/wsdl/cache-naming.js +90 -0
  469. package/dist/wsdl/cache.d.ts +48 -0
  470. package/dist/wsdl/cache.js +141 -0
  471. package/dist/wsdl/docs-generator.d.ts +47 -0
  472. package/dist/wsdl/docs-generator.js +439 -0
  473. package/dist/wsdl/dom-utils.d.ts +15 -0
  474. package/dist/wsdl/dom-utils.js +50 -0
  475. package/dist/wsdl/export-definition.d.ts +38 -0
  476. package/dist/wsdl/export-definition.js +100 -0
  477. package/dist/wsdl/fetch.d.ts +13 -0
  478. package/dist/wsdl/fetch.js +60 -0
  479. package/dist/wsdl/merge.d.ts +17 -0
  480. package/dist/wsdl/merge.js +57 -0
  481. package/dist/wsdl/model.d.ts +176 -0
  482. package/dist/wsdl/model.js +17 -0
  483. package/dist/wsdl/parse-binding.d.ts +6 -0
  484. package/dist/wsdl/parse-binding.js +150 -0
  485. package/dist/wsdl/parse-wsdl.d.ts +47 -0
  486. package/dist/wsdl/parse-wsdl.js +161 -0
  487. package/dist/wsdl/qname.d.ts +28 -0
  488. package/dist/wsdl/qname.js +41 -0
  489. package/dist/wsdl/ref-policy.d.ts +54 -0
  490. package/dist/wsdl/ref-policy.js +87 -0
  491. package/dist/wsdl/resolver.d.ts +81 -0
  492. package/dist/wsdl/resolver.js +276 -0
  493. package/dist/wsdl/update-definition.d.ts +106 -0
  494. package/dist/wsdl/update-definition.js +314 -0
  495. package/dist/wss/apply.d.ts +40 -0
  496. package/dist/wss/apply.js +212 -0
  497. package/dist/wss/c14n-prefixes.d.ts +27 -0
  498. package/dist/wss/c14n-prefixes.js +95 -0
  499. package/dist/wss/incoming/decrypt.d.ts +35 -0
  500. package/dist/wss/incoming/decrypt.js +57 -0
  501. package/dist/wss/incoming/index.d.ts +56 -0
  502. package/dist/wss/incoming/index.js +189 -0
  503. package/dist/wss/incoming/verify.d.ts +74 -0
  504. package/dist/wss/incoming/verify.js +440 -0
  505. package/dist/wss/key-identifiers.d.ts +76 -0
  506. package/dist/wss/key-identifiers.js +139 -0
  507. package/dist/wss/keystore/certificate.d.ts +45 -0
  508. package/dist/wss/keystore/certificate.js +134 -0
  509. package/dist/wss/keystore/index.d.ts +50 -0
  510. package/dist/wss/keystore/index.js +80 -0
  511. package/dist/wss/keystore/model.d.ts +83 -0
  512. package/dist/wss/keystore/model.js +27 -0
  513. package/dist/wss/keystore/pem.d.ts +21 -0
  514. package/dist/wss/keystore/pem.js +140 -0
  515. package/dist/wss/keystore/pkcs12.d.ts +21 -0
  516. package/dist/wss/keystore/pkcs12.js +125 -0
  517. package/dist/wss/model.d.ts +160 -0
  518. package/dist/wss/model.js +37 -0
  519. package/dist/wss/outgoing/encryption.d.ts +76 -0
  520. package/dist/wss/outgoing/encryption.js +618 -0
  521. package/dist/wss/outgoing/signature.d.ts +73 -0
  522. package/dist/wss/outgoing/signature.js +239 -0
  523. package/dist/wss/outgoing/timestamp.d.ts +29 -0
  524. package/dist/wss/outgoing/timestamp.js +39 -0
  525. package/dist/wss/outgoing/username-token.d.ts +36 -0
  526. package/dist/wss/outgoing/username-token.js +68 -0
  527. package/dist/wss/security-header.d.ts +31 -0
  528. package/dist/wss/security-header.js +83 -0
  529. package/dist/xml/index.d.ts +7 -0
  530. package/dist/xml/index.js +7 -0
  531. package/dist/xml/namespaces.d.ts +36 -0
  532. package/dist/xml/namespaces.js +60 -0
  533. package/dist/xml/parse.d.ts +79 -0
  534. package/dist/xml/parse.js +109 -0
  535. package/dist/xml/positions.d.ts +26 -0
  536. package/dist/xml/positions.js +71 -0
  537. package/dist/xml/pretty.d.ts +37 -0
  538. package/dist/xml/pretty.js +137 -0
  539. package/dist/xml/serialize.d.ts +6 -0
  540. package/dist/xml/serialize.js +8 -0
  541. package/dist/xml/tolerant-tree.d.ts +56 -0
  542. package/dist/xml/tolerant-tree.js +134 -0
  543. package/dist/xpath/evaluate-async.d.ts +31 -0
  544. package/dist/xpath/evaluate-async.js +81 -0
  545. package/dist/xpath/evaluate.d.ts +98 -0
  546. package/dist/xpath/evaluate.js +340 -0
  547. package/dist/xpath/jsonpath.d.ts +40 -0
  548. package/dist/xpath/jsonpath.js +109 -0
  549. package/dist/xpath/namespaces.d.ts +29 -0
  550. package/dist/xpath/namespaces.js +101 -0
  551. package/dist/xpath/worker.d.ts +7 -0
  552. package/dist/xpath/worker.js +26 -0
  553. package/dist/xsd/builtins.d.ts +36 -0
  554. package/dist/xsd/builtins.js +108 -0
  555. package/dist/xsd/check-references.d.ts +25 -0
  556. package/dist/xsd/check-references.js +145 -0
  557. package/dist/xsd/form-edits.d.ts +57 -0
  558. package/dist/xsd/form-edits.js +153 -0
  559. package/dist/xsd/form-model.d.ts +153 -0
  560. package/dist/xsd/form-model.js +691 -0
  561. package/dist/xsd/locate.d.ts +42 -0
  562. package/dist/xsd/locate.js +249 -0
  563. package/dist/xsd/model.d.ts +249 -0
  564. package/dist/xsd/model.js +1 -0
  565. package/dist/xsd/parse-particles.d.ts +48 -0
  566. package/dist/xsd/parse-particles.js +320 -0
  567. package/dist/xsd/parse-schema.d.ts +21 -0
  568. package/dist/xsd/parse-schema.js +143 -0
  569. package/dist/xsd/resolve-content.d.ts +18 -0
  570. package/dist/xsd/resolve-content.js +242 -0
  571. package/dist/xsd/sample-generator.d.ts +51 -0
  572. package/dist/xsd/sample-generator.js +291 -0
  573. package/dist/xsd/sample-types.d.ts +21 -0
  574. package/dist/xsd/sample-types.js +69 -0
  575. package/dist/xsd/sample-values.d.ts +54 -0
  576. package/dist/xsd/sample-values.js +267 -0
  577. package/dist/xsd/schema-set.d.ts +51 -0
  578. package/dist/xsd/schema-set.js +203 -0
  579. package/dist/xsd/xml-scan.d.ts +64 -0
  580. package/dist/xsd/xml-scan.js +286 -0
  581. package/dist/xsd/xml-writer.d.ts +56 -0
  582. package/dist/xsd/xml-writer.js +103 -0
  583. package/package.json +69 -0
@@ -0,0 +1,60 @@
1
+ /**
2
+ * XML namespace URIs used across WSDL, SOAP, XSD, WS-Security, WS-Addressing
3
+ * and WS-Policy. Centralizing these avoids typos scattered through the
4
+ * codebase and gives every consumer the same canonical values.
5
+ */
6
+ export const NS = {
7
+ WSDL: 'http://schemas.xmlsoap.org/wsdl/',
8
+ WSDL_SOAP11: 'http://schemas.xmlsoap.org/wsdl/soap/',
9
+ WSDL_SOAP12: 'http://schemas.xmlsoap.org/wsdl/soap12/',
10
+ WSDL_HTTP: 'http://schemas.xmlsoap.org/wsdl/http/',
11
+ WSDL_MIME: 'http://schemas.xmlsoap.org/wsdl/mime/',
12
+ SOAP11_ENV: 'http://schemas.xmlsoap.org/soap/envelope/',
13
+ SOAP11_ENC: 'http://schemas.xmlsoap.org/soap/encoding/',
14
+ SOAP12_ENV: 'http://www.w3.org/2003/05/soap-envelope',
15
+ SOAP12_ENC: 'http://www.w3.org/2003/05/soap-encoding',
16
+ XSD: 'http://www.w3.org/2001/XMLSchema',
17
+ XSI: 'http://www.w3.org/2001/XMLSchema-instance',
18
+ XML: 'http://www.w3.org/XML/1998/namespace',
19
+ XOP: 'http://www.w3.org/2004/08/xop/include',
20
+ XMLMIME: 'http://www.w3.org/2005/05/xmlmime',
21
+ WSSE: 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd',
22
+ WSU: 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd',
23
+ DS: 'http://www.w3.org/2000/09/xmldsig#',
24
+ XENC: 'http://www.w3.org/2001/04/xmlenc#',
25
+ WSA_200508: 'http://www.w3.org/2005/08/addressing',
26
+ WSA_200408: 'http://schemas.xmlsoap.org/ws/2004/08/addressing',
27
+ WSAW: 'http://www.w3.org/2006/05/addressing/wsdl',
28
+ WSAM: 'http://www.w3.org/2007/05/addressing/metadata',
29
+ WSAP_2004: 'http://schemas.xmlsoap.org/ws/2004/08/addressing/policy',
30
+ WSP: 'http://www.w3.org/ns/ws-policy',
31
+ WSP_2004: 'http://schemas.xmlsoap.org/ws/2004/09/policy',
32
+ };
33
+ /** Conventional XML prefix for each namespace in {@link NS}. */
34
+ export const PREFIX = {
35
+ WSDL: 'wsdl',
36
+ WSDL_SOAP11: 'soap',
37
+ WSDL_SOAP12: 'soap12',
38
+ WSDL_HTTP: 'http',
39
+ WSDL_MIME: 'mime',
40
+ SOAP11_ENV: 'soapenv',
41
+ SOAP11_ENC: 'soapenc',
42
+ SOAP12_ENV: 'soapenv',
43
+ SOAP12_ENC: 'soapenc',
44
+ XSD: 'xs',
45
+ XSI: 'xsi',
46
+ XML: 'xml',
47
+ XOP: 'xop',
48
+ XMLMIME: 'xmlmime',
49
+ WSSE: 'wsse',
50
+ WSU: 'wsu',
51
+ DS: 'ds',
52
+ XENC: 'xenc',
53
+ WSA_200508: 'wsa',
54
+ WSA_200408: 'wsa',
55
+ WSAW: 'wsaw',
56
+ WSAM: 'wsam',
57
+ WSAP_2004: 'wsap',
58
+ WSP: 'wsp',
59
+ WSP_2004: 'wsp',
60
+ };
@@ -0,0 +1,79 @@
1
+ import type { Document, Node } from '@xmldom/xmldom';
2
+ /** Options accepted by {@link parseXml} and {@link parseXmlDetailed}. */
3
+ export interface ParseXmlOptions {
4
+ /** A human-readable origin for the document (file path or URL), included in error details. */
5
+ readonly location?: string;
6
+ }
7
+ /**
8
+ * A non-fatal problem xmldom reported while parsing (a `warning` or `error`
9
+ * level `onError` call). The document was still produced despite this
10
+ * problem; only `fatalError` aborts parsing entirely (see {@link parseXmlDetailed}).
11
+ */
12
+ export interface XmlProblem {
13
+ readonly level: 'warning' | 'error';
14
+ readonly message: string;
15
+ readonly line?: number;
16
+ readonly column?: number;
17
+ readonly location?: string;
18
+ }
19
+ /** The result of classifying a single xmldom `onError` callback invocation. */
20
+ export type ParseEventClassification = {
21
+ readonly fatal: true;
22
+ } | {
23
+ readonly fatal: false;
24
+ readonly level: 'warning' | 'error';
25
+ };
26
+ /**
27
+ * Determines whether a raw xmldom `onError` level is fatal. Only xmldom's
28
+ * `fatalError` level aborts parsing; `warning` and `error` are reported
29
+ * problems that xmldom still recovers from, producing a `Document`.
30
+ *
31
+ * Exported as a pure function so the level-dispatch logic can be unit-tested
32
+ * directly even if no non-fatal xmldom input is available in a given
33
+ * environment.
34
+ *
35
+ * @param level the raw level string xmldom passed to `onError`
36
+ * @param message the message xmldom passed to `onError` (unused by the classification itself;
37
+ * accepted so the exported signature matches the full `onError` payload callers reason about)
38
+ */
39
+ export declare function classifyParseEvent(level: string, message: string): ParseEventClassification;
40
+ /**
41
+ * Parses an XML string into a DOM `Document` using `@xmldom/xmldom`, and
42
+ * collects every warning/error xmldom reports along the way (without
43
+ * printing anything to the console).
44
+ *
45
+ * Only a `fatalError` from xmldom aborts parsing and results in a thrown
46
+ * {@link WirebenchError}; lesser `warning`/`error` levels are collected into
47
+ * `problems` and the resulting `Document` (which xmldom still produces
48
+ * despite them) is returned.
49
+ *
50
+ * @param text the XML source to parse
51
+ * @param options.location a human-readable origin (file path/URL) included in the thrown error's details and in each collected problem
52
+ * @returns the parsed `Document` plus any non-fatal problems xmldom reported
53
+ * @throws {WirebenchError} with code `xml-parse-error` if xmldom reports a `fatalError`
54
+ */
55
+ export declare function parseXmlDetailed(text: string, options?: ParseXmlOptions): {
56
+ document: Document;
57
+ problems: readonly XmlProblem[];
58
+ };
59
+ /**
60
+ * Parses an XML string into a DOM `Document` using `@xmldom/xmldom`.
61
+ *
62
+ * Thin wrapper over {@link parseXmlDetailed} that discards non-fatal
63
+ * `problems` and returns only the `Document`. Never writes to the console.
64
+ *
65
+ * @param text the XML source to parse
66
+ * @param options.location a human-readable origin (file path/URL) included in the thrown error's details
67
+ * @returns the parsed `Document`
68
+ * @throws {WirebenchError} with code `xml-parse-error` if xmldom reports a `fatalError`
69
+ */
70
+ export declare function parseXml(text: string, options?: ParseXmlOptions): Document;
71
+ /**
72
+ * Reads the source position xmldom recorded for `node` when it was parsed
73
+ * with `locator: true`. Returns `undefined` for nodes without position data
74
+ * (e.g. nodes created programmatically rather than parsed).
75
+ */
76
+ export declare function getPosition(node: Node): {
77
+ line: number;
78
+ column: number;
79
+ } | undefined;
@@ -0,0 +1,109 @@
1
+ import { DOMParser } from '@xmldom/xmldom';
2
+ import { WirebenchError } from '../errors.js';
3
+ /**
4
+ * Determines whether a raw xmldom `onError` level is fatal. Only xmldom's
5
+ * `fatalError` level aborts parsing; `warning` and `error` are reported
6
+ * problems that xmldom still recovers from, producing a `Document`.
7
+ *
8
+ * Exported as a pure function so the level-dispatch logic can be unit-tested
9
+ * directly even if no non-fatal xmldom input is available in a given
10
+ * environment.
11
+ *
12
+ * @param level the raw level string xmldom passed to `onError`
13
+ * @param message the message xmldom passed to `onError` (unused by the classification itself;
14
+ * accepted so the exported signature matches the full `onError` payload callers reason about)
15
+ */
16
+ export function classifyParseEvent(level, message) {
17
+ void message;
18
+ if (level === 'fatalError') {
19
+ return { fatal: true };
20
+ }
21
+ // xmldom only ever reports 'warning', 'error', or 'fatalError'; treat anything
22
+ // else defensively as a non-fatal 'error' rather than silently dropping it.
23
+ return { fatal: false, level: level === 'warning' ? 'warning' : 'error' };
24
+ }
25
+ /**
26
+ * Parses an XML string into a DOM `Document` using `@xmldom/xmldom`, and
27
+ * collects every warning/error xmldom reports along the way (without
28
+ * printing anything to the console).
29
+ *
30
+ * Only a `fatalError` from xmldom aborts parsing and results in a thrown
31
+ * {@link WirebenchError}; lesser `warning`/`error` levels are collected into
32
+ * `problems` and the resulting `Document` (which xmldom still produces
33
+ * despite them) is returned.
34
+ *
35
+ * @param text the XML source to parse
36
+ * @param options.location a human-readable origin (file path/URL) included in the thrown error's details and in each collected problem
37
+ * @returns the parsed `Document` plus any non-fatal problems xmldom reported
38
+ * @throws {WirebenchError} with code `xml-parse-error` if xmldom reports a `fatalError`
39
+ */
40
+ export function parseXmlDetailed(text, options) {
41
+ const problems = [];
42
+ let fatal;
43
+ const parser = new DOMParser({
44
+ locator: true,
45
+ onError: (level, message, context) => {
46
+ const locator = context?.locator;
47
+ const classification = classifyParseEvent(level, message);
48
+ if (classification.fatal) {
49
+ fatal = { message, line: locator?.lineNumber, column: locator?.columnNumber };
50
+ // Throwing here both stops the parser immediately and prevents xmldom's
51
+ // default console output for this (fatal) event.
52
+ throw new Error(message);
53
+ }
54
+ problems.push({
55
+ level: classification.level,
56
+ message,
57
+ ...(locator?.lineNumber !== undefined ? { line: locator.lineNumber } : {}),
58
+ ...(locator?.columnNumber !== undefined ? { column: locator.columnNumber } : {}),
59
+ ...(options?.location !== undefined ? { location: options.location } : {}),
60
+ });
61
+ },
62
+ });
63
+ try {
64
+ const document = parser.parseFromString(text, 'application/xml');
65
+ return { document, problems };
66
+ }
67
+ catch (cause) {
68
+ // `onError` above only throws for a fatal event, which always populates
69
+ // `fatal` first. The fallback only guards against a hypothetical error
70
+ // thrown by `parseFromString` itself outside of `onError`.
71
+ /* v8 ignore next */
72
+ const fallbackMessage = fatal?.message ?? 'Failed to parse XML';
73
+ throw new WirebenchError('xml-parse-error', fallbackMessage, {
74
+ cause,
75
+ details: {
76
+ location: options?.location,
77
+ line: fatal?.line,
78
+ column: fatal?.column,
79
+ message: fallbackMessage,
80
+ },
81
+ });
82
+ }
83
+ }
84
+ /**
85
+ * Parses an XML string into a DOM `Document` using `@xmldom/xmldom`.
86
+ *
87
+ * Thin wrapper over {@link parseXmlDetailed} that discards non-fatal
88
+ * `problems` and returns only the `Document`. Never writes to the console.
89
+ *
90
+ * @param text the XML source to parse
91
+ * @param options.location a human-readable origin (file path/URL) included in the thrown error's details
92
+ * @returns the parsed `Document`
93
+ * @throws {WirebenchError} with code `xml-parse-error` if xmldom reports a `fatalError`
94
+ */
95
+ export function parseXml(text, options) {
96
+ return parseXmlDetailed(text, options).document;
97
+ }
98
+ /**
99
+ * Reads the source position xmldom recorded for `node` when it was parsed
100
+ * with `locator: true`. Returns `undefined` for nodes without position data
101
+ * (e.g. nodes created programmatically rather than parsed).
102
+ */
103
+ export function getPosition(node) {
104
+ const located = node;
105
+ if (located.lineNumber === undefined || located.columnNumber === undefined) {
106
+ return undefined;
107
+ }
108
+ return { line: located.lineNumber, column: located.columnNumber };
109
+ }
@@ -0,0 +1,26 @@
1
+ /** A 1-based line/column position within a text document. */
2
+ export interface LinePosition {
3
+ readonly line: number;
4
+ readonly column: number;
5
+ }
6
+ /**
7
+ * Converts between character offsets and 1-based line/column positions for a
8
+ * fixed text document. Line starts are indexed once at construction time so
9
+ * repeated lookups (e.g. reporting many diagnostics) are cheap.
10
+ *
11
+ * Handles both `\n` and `\r\n` line endings: a `\r\n` pair is treated as the
12
+ * line terminator, so the character immediately after it starts the next
13
+ * line at column 1.
14
+ */
15
+ export declare class LineIndex {
16
+ /** Offset of the first character of each line, in ascending order. */
17
+ private readonly lineStarts;
18
+ private readonly length;
19
+ constructor(text: string);
20
+ /** Converts a character offset (0-based) into a 1-based line/column position. */
21
+ offsetToPosition(offset: number): LinePosition;
22
+ /** Converts a 1-based line/column position back into a character offset. */
23
+ positionToOffset(line: number, column: number): number;
24
+ /** Binary search for the last line whose start is <= offset. */
25
+ private findLineIndex;
26
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Converts between character offsets and 1-based line/column positions for a
3
+ * fixed text document. Line starts are indexed once at construction time so
4
+ * repeated lookups (e.g. reporting many diagnostics) are cheap.
5
+ *
6
+ * Handles both `\n` and `\r\n` line endings: a `\r\n` pair is treated as the
7
+ * line terminator, so the character immediately after it starts the next
8
+ * line at column 1.
9
+ */
10
+ export class LineIndex {
11
+ /** Offset of the first character of each line, in ascending order. */
12
+ lineStarts;
13
+ length;
14
+ constructor(text) {
15
+ this.length = text.length;
16
+ const starts = [0];
17
+ for (let i = 0; i < text.length; i += 1) {
18
+ const ch = text[i];
19
+ if (ch === '\n') {
20
+ starts.push(i + 1);
21
+ }
22
+ else if (ch === '\r') {
23
+ const next = text[i + 1];
24
+ const lineStart = next === '\n' ? i + 2 : i + 1;
25
+ starts.push(lineStart);
26
+ if (next === '\n') {
27
+ i += 1;
28
+ }
29
+ }
30
+ }
31
+ this.lineStarts = starts;
32
+ }
33
+ /** Converts a character offset (0-based) into a 1-based line/column position. */
34
+ offsetToPosition(offset) {
35
+ const clamped = Math.max(0, Math.min(offset, this.length));
36
+ const lineIndex = this.findLineIndex(clamped);
37
+ // `lineIndex` always comes from `findLineIndex`, which returns an index within
38
+ // `lineStarts` bounds; the `?? 0` only satisfies `noUncheckedIndexedAccess`.
39
+ /* v8 ignore next */
40
+ const lineStart = this.lineStarts[lineIndex] ?? 0;
41
+ return { line: lineIndex + 1, column: clamped - lineStart + 1 };
42
+ }
43
+ /** Converts a 1-based line/column position back into a character offset. */
44
+ positionToOffset(line, column) {
45
+ const lineIndex = Math.max(0, Math.min(line - 1, this.lineStarts.length - 1));
46
+ // `lineIndex` is clamped to `[0, lineStarts.length - 1]` above, so it is
47
+ // always in bounds; the `?? 0` only satisfies `noUncheckedIndexedAccess`.
48
+ /* v8 ignore next */
49
+ const lineStart = this.lineStarts[lineIndex] ?? 0;
50
+ return lineStart + (column - 1);
51
+ }
52
+ /** Binary search for the last line whose start is <= offset. */
53
+ findLineIndex(offset) {
54
+ let low = 0;
55
+ let high = this.lineStarts.length - 1;
56
+ while (low < high) {
57
+ const mid = Math.ceil((low + high) / 2);
58
+ // `mid` is always within `[low, high]` here, so it is in bounds; the `?? 0`
59
+ // only satisfies `noUncheckedIndexedAccess`.
60
+ /* v8 ignore next */
61
+ const start = this.lineStarts[mid] ?? 0;
62
+ if (start <= offset) {
63
+ low = mid;
64
+ }
65
+ else {
66
+ high = mid - 1;
67
+ }
68
+ }
69
+ return low;
70
+ }
71
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * A token-based XML pretty printer. Unlike a DOM round trip, this tolerates
3
+ * slightly malformed input (it never throws) and preserves everything a DOM
4
+ * serializer would normally lose: comments, CDATA sections, processing
5
+ * instructions, the XML declaration, DOCTYPE, attribute order/quoting and
6
+ * entity references.
7
+ */
8
+ /** Options for {@link formatXml}. */
9
+ export interface FormatXmlOptions {
10
+ /** Indentation unit per nesting level. Defaults to three spaces. */
11
+ readonly indent?: string;
12
+ /**
13
+ * Element names (local name or `prefix:local`) whose inner content is
14
+ * reproduced verbatim instead of being reformatted — for elements that
15
+ * carry significant whitespace (e.g. `xs:documentation`-like free text).
16
+ */
17
+ readonly preserveWhitespaceIn?: readonly string[];
18
+ }
19
+ /** Result of {@link formatXml}. */
20
+ export interface FormatXmlResult {
21
+ /** The formatted text, or the (line-ending normalised) input unchanged when `problem` is set. */
22
+ readonly text: string;
23
+ /** Whether `text` differs from the (line-ending normalised) input. */
24
+ readonly changed: boolean;
25
+ /** Set, and `text` left unchanged, when the input could not be safely reformatted (e.g. unbalanced tags). */
26
+ readonly problem?: string;
27
+ }
28
+ /**
29
+ * Pretty-prints XML text without a DOM round trip. Preserves comments, CDATA,
30
+ * processing instructions, the XML declaration, DOCTYPE, attribute
31
+ * order/quoting and entity references. Collapses whitespace-only text
32
+ * between elements; leaves mixed content (non-whitespace text next to a
33
+ * child element) untouched inside that element; keeps a text-only element on
34
+ * one line. Never throws — on unbalanced tags, returns the input unchanged
35
+ * with `problem` set. Line endings are normalised to `\n`.
36
+ */
37
+ export declare function formatXml(text: string, options?: FormatXmlOptions): FormatXmlResult;
@@ -0,0 +1,137 @@
1
+ /**
2
+ * A token-based XML pretty printer. Unlike a DOM round trip, this tolerates
3
+ * slightly malformed input (it never throws) and preserves everything a DOM
4
+ * serializer would normally lose: comments, CDATA sections, processing
5
+ * instructions, the XML declaration, DOCTYPE, attribute order/quoting and
6
+ * entity references.
7
+ */
8
+ import { localNameOf, normalizeLineEndings, tokenizeXml } from './tolerant-tree.js';
9
+ /** Builds a tree from tokens; returns a `problem` message instead of throwing on unbalanced tags. */
10
+ function buildTree(tokens, text) {
11
+ const roots = [];
12
+ const stack = [];
13
+ const currentChildren = () => stack[stack.length - 1]?.children ?? roots;
14
+ for (const tok of tokens) {
15
+ switch (tok.kind) {
16
+ case 'text':
17
+ currentChildren().push({ type: 'text', value: tok.raw });
18
+ break;
19
+ case 'comment':
20
+ case 'cdata':
21
+ case 'pi':
22
+ case 'doctype':
23
+ currentChildren().push({ type: tok.kind, raw: tok.raw });
24
+ break;
25
+ case 'open':
26
+ if (tok.selfClosing) {
27
+ currentChildren().push({
28
+ type: 'element',
29
+ name: tok.name,
30
+ rawAttrs: tok.rawAttrs ?? '',
31
+ selfClosing: true,
32
+ children: [],
33
+ rawInner: '',
34
+ });
35
+ }
36
+ else {
37
+ stack.push({ name: tok.name, rawAttrs: tok.rawAttrs ?? '', children: [], openEnd: tok.end });
38
+ }
39
+ break;
40
+ case 'close': {
41
+ const top = stack.pop();
42
+ if (top === undefined || top.name !== tok.name) {
43
+ return { problem: `Mismatched closing tag </${tok.name}>` };
44
+ }
45
+ const rawInner = text.slice(top.openEnd, tok.start);
46
+ const node = {
47
+ type: 'element',
48
+ name: top.name,
49
+ rawAttrs: top.rawAttrs,
50
+ selfClosing: false,
51
+ children: top.children,
52
+ rawInner,
53
+ };
54
+ (stack.length > 0 ? stack[stack.length - 1].children : roots).push(node);
55
+ break;
56
+ }
57
+ default:
58
+ break;
59
+ }
60
+ }
61
+ if (stack.length > 0) {
62
+ return { problem: `Unclosed tag <${stack[stack.length - 1].name}>` };
63
+ }
64
+ return { roots };
65
+ }
66
+ function renderNodes(nodes, depth, indent, preserve, out) {
67
+ for (const n of nodes) {
68
+ if (n.type === 'text') {
69
+ if (n.value.trim() === '') {
70
+ continue;
71
+ }
72
+ out.push(indent.repeat(depth) + n.value.trim());
73
+ continue;
74
+ }
75
+ if (n.type === 'element') {
76
+ renderElement(n, depth, indent, preserve, out);
77
+ continue;
78
+ }
79
+ out.push(indent.repeat(depth) + n.raw);
80
+ }
81
+ }
82
+ function renderElement(n, depth, indent, preserve, out) {
83
+ const pad = indent.repeat(depth);
84
+ const openTag = `<${n.name}${n.rawAttrs !== '' ? ` ${n.rawAttrs}` : ''}`;
85
+ if (n.selfClosing) {
86
+ out.push(`${pad}${openTag}/>`);
87
+ return;
88
+ }
89
+ if (preserve.has(n.name) || preserve.has(localNameOf(n.name))) {
90
+ out.push(`${pad}${openTag}>${n.rawInner}</${n.name}>`);
91
+ return;
92
+ }
93
+ const hasNonWsText = n.children.some((c) => c.type === 'text' && c.value.trim() !== '');
94
+ const hasElementLike = n.children.some((c) => c.type !== 'text');
95
+ if (hasNonWsText && hasElementLike) {
96
+ // Mixed content: leave untouched.
97
+ out.push(`${pad}${openTag}>${n.rawInner}</${n.name}>`);
98
+ return;
99
+ }
100
+ if (!hasElementLike) {
101
+ const text = n.children
102
+ .map((c) => (c.type === 'text' ? c.value : ''))
103
+ .join('')
104
+ .trim();
105
+ out.push(`${pad}${openTag}>${text}</${n.name}>`);
106
+ return;
107
+ }
108
+ out.push(`${pad}${openTag}>`);
109
+ renderNodes(n.children, depth + 1, indent, preserve, out);
110
+ out.push(`${pad}</${n.name}>`);
111
+ }
112
+ /**
113
+ * Pretty-prints XML text without a DOM round trip. Preserves comments, CDATA,
114
+ * processing instructions, the XML declaration, DOCTYPE, attribute
115
+ * order/quoting and entity references. Collapses whitespace-only text
116
+ * between elements; leaves mixed content (non-whitespace text next to a
117
+ * child element) untouched inside that element; keeps a text-only element on
118
+ * one line. Never throws — on unbalanced tags, returns the input unchanged
119
+ * with `problem` set. Line endings are normalised to `\n`.
120
+ */
121
+ export function formatXml(text, options) {
122
+ const indent = options?.indent ?? ' ';
123
+ const preserve = new Set(options?.preserveWhitespaceIn ?? []);
124
+ const normalized = normalizeLineEndings(text);
125
+ const tokens = tokenizeXml(normalized);
126
+ if (tokens === undefined) {
127
+ return { text: normalized, changed: false, problem: 'Malformed markup: could not tokenize' };
128
+ }
129
+ const built = buildTree(tokens, normalized);
130
+ if ('problem' in built) {
131
+ return { text: normalized, changed: false, problem: built.problem };
132
+ }
133
+ const out = [];
134
+ renderNodes(built.roots, 0, indent, preserve, out);
135
+ const resultText = out.join('\n');
136
+ return { text: resultText, changed: resultText !== normalized };
137
+ }
@@ -0,0 +1,6 @@
1
+ import type { Node } from '@xmldom/xmldom';
2
+ /**
3
+ * Serializes a DOM node (typically a `Document` or `Element`) back to an XML
4
+ * string using `@xmldom/xmldom`'s `XMLSerializer`.
5
+ */
6
+ export declare function serializeXml(node: Node): string;
@@ -0,0 +1,8 @@
1
+ import { XMLSerializer } from '@xmldom/xmldom';
2
+ /**
3
+ * Serializes a DOM node (typically a `Document` or `Element`) back to an XML
4
+ * string using `@xmldom/xmldom`'s `XMLSerializer`.
5
+ */
6
+ export function serializeXml(node) {
7
+ return new XMLSerializer().serializeToString(node);
8
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * A tolerant XML tokenizer shared by the pretty printer and the envelope transforms.
3
+ *
4
+ * "Tolerant" means: it never throws, it recognises every construct a serializer would
5
+ * normally lose (comments, CDATA, processing instructions, the XML declaration, DOCTYPE),
6
+ * and it reports failure by returning `undefined` rather than by raising — the callers are
7
+ * text transforms that must return their input unchanged when they cannot understand it.
8
+ *
9
+ * Every token carries its `[start, end)` offsets into the original text, so a transform can
10
+ * splice ranges out of the source instead of re-serializing a tree (which would silently
11
+ * rewrite attribute spacing and quoting).
12
+ */
13
+ /** What a {@link XmlToken} is. */
14
+ export type XmlTokenKind = 'comment' | 'cdata' | 'pi' | 'doctype' | 'open' | 'close' | 'text';
15
+ /** One lexical unit of an XML document, with its offsets into the source text. */
16
+ export interface XmlToken {
17
+ readonly kind: XmlTokenKind;
18
+ readonly raw: string;
19
+ readonly start: number;
20
+ readonly end: number;
21
+ /** Element name (`prefix:local`) for `open`/`close` tokens. */
22
+ readonly name?: string;
23
+ /** Everything between the element name and the closing `>`/`/>`, trimmed. */
24
+ readonly rawAttrs?: string;
25
+ readonly selfClosing?: boolean;
26
+ }
27
+ /** Normalises CRLF/CR line endings to `\n`. */
28
+ export declare function normalizeLineEndings(text: string): string;
29
+ /** The local part of a possibly prefixed name. */
30
+ export declare function localNameOf(name: string): string;
31
+ /**
32
+ * Tokenizes `text`. Returns `undefined` when the tokens do not contiguously cover the whole
33
+ * string (i.e. the markup is malformed enough that a transform must leave it alone).
34
+ */
35
+ export declare function tokenizeXml(text: string): XmlToken[] | undefined;
36
+ /** One element in a {@link buildRangeTree} result, with the source range it occupies. */
37
+ export interface XmlRangeNode {
38
+ readonly name: string;
39
+ readonly rawAttrs: string;
40
+ readonly selfClosing: boolean;
41
+ /** Offset of the `<` opening this element. */
42
+ readonly start: number;
43
+ /** Offset just past this element's closing `>`. */
44
+ readonly end: number;
45
+ /** Offsets of the element's inner content (equal to each other for a self-closing element). */
46
+ readonly innerStart: number;
47
+ readonly innerEnd: number;
48
+ readonly children: readonly XmlRangeNode[];
49
+ /** Tokens that are direct children of this element (text, comments, CDATA, PIs). */
50
+ readonly leafTokens: readonly XmlToken[];
51
+ }
52
+ /**
53
+ * Builds an element tree over `tokens`, keeping source ranges. Returns `undefined` when tags
54
+ * are unbalanced or mismatched — again, a signal to leave the document alone.
55
+ */
56
+ export declare function buildRangeTree(tokens: readonly XmlToken[]): XmlRangeNode[] | undefined;