@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,36 @@
1
+ import type { QName } from '../wsdl/qname.js';
2
+ /** A built-in XSD (or SOAP-encoding) type known to the engine without a schema declaration. */
3
+ export interface BuiltinType {
4
+ readonly name: QName;
5
+ /** The type this one derives from, for the derived built-ins. */
6
+ readonly base?: QName;
7
+ /** True for the 19 XSD primitive datatypes (plus the two ur-types, which have no base). */
8
+ readonly primitive: boolean;
9
+ /** True for `soapenc:Array`, the only complex built-in. */
10
+ readonly complex?: boolean;
11
+ /** Set on `soapenc:Array` so encoded-array handling can special-case it. */
12
+ readonly soapEncArray?: boolean;
13
+ /** For a `soapenc:*` alias: the XSD type it aliases. */
14
+ readonly aliasOf?: QName;
15
+ /**
16
+ * A type-appropriate example value, used only when a caller explicitly asks
17
+ * for realistic sample data. The default everywhere is {@link BuiltinType.placeholder}.
18
+ */
19
+ readonly sampleValue: string;
20
+ /** The placeholder emitted by default for every built-in. */
21
+ readonly placeholder: '?';
22
+ }
23
+ /** Every built-in type, keyed by Clark notation (`{ns}local`). */
24
+ export declare const BUILTIN_TYPES: ReadonlyMap<string, BuiltinType>;
25
+ /** The local names of every XSD 1.0 built-in type. */
26
+ export declare const XSD_BUILTIN_NAMES: readonly string[];
27
+ /**
28
+ * Attributes the SOAP 1.1 encoding namespace defines (`soapenc:arrayType` and
29
+ * friends). References to these never resolve against a user schema, so the
30
+ * schema set treats them as known rather than reporting `unresolved-ref`.
31
+ */
32
+ export declare const SOAP_ENC_ATTRIBUTES: readonly string[];
33
+ /** Looks up a built-in type by expanded name, or `undefined` when it is not one. */
34
+ export declare function lookupBuiltin(name: QName): BuiltinType | undefined;
35
+ /** True when `name` denotes a built-in XSD (or SOAP-encoding) type. */
36
+ export declare function isBuiltinType(name: QName): boolean;
@@ -0,0 +1,108 @@
1
+ import { NS } from '../xml/namespaces.js';
2
+ import { qnameToString } from '../wsdl/qname.js';
3
+ /** `[localName, baseLocalName | undefined, sampleValue]` for each XSD 1.0 built-in. */
4
+ const XSD_TABLE = [
5
+ // ur-types
6
+ ['anyType', undefined, 'string'],
7
+ ['anySimpleType', undefined, 'string'],
8
+ // primitives
9
+ ['string', undefined, 'string'],
10
+ ['boolean', undefined, 'true'],
11
+ ['decimal', undefined, '1.0'],
12
+ ['float', undefined, '1.0'],
13
+ ['double', undefined, '1.0'],
14
+ ['duration', undefined, 'P1D'],
15
+ ['dateTime', undefined, '2000-01-01T00:00:00'],
16
+ ['time', undefined, '00:00:00'],
17
+ ['date', undefined, '2000-01-01'],
18
+ ['gYearMonth', undefined, '2000-01'],
19
+ ['gYear', undefined, '2000'],
20
+ ['gMonthDay', undefined, '--01-01'],
21
+ ['gDay', undefined, '---01'],
22
+ ['gMonth', undefined, '--01'],
23
+ ['hexBinary', undefined, '61'],
24
+ ['base64Binary', undefined, 'YQ=='],
25
+ ['anyURI', undefined, 'http://example.com'],
26
+ ['QName', undefined, 'QName'],
27
+ ['NOTATION', undefined, 'NOTATION'],
28
+ // derived from string
29
+ ['normalizedString', 'string', 'string'],
30
+ ['token', 'normalizedString', 'string'],
31
+ ['language', 'token', 'en'],
32
+ ['NMTOKEN', 'token', 'token'],
33
+ ['NMTOKENS', 'NMTOKEN', 'token'],
34
+ ['Name', 'token', 'name'],
35
+ ['NCName', 'Name', 'name'],
36
+ ['ID', 'NCName', 'id'],
37
+ ['IDREF', 'NCName', 'id'],
38
+ ['IDREFS', 'IDREF', 'id'],
39
+ ['ENTITY', 'NCName', 'entity'],
40
+ ['ENTITIES', 'ENTITY', 'entity'],
41
+ // derived from decimal
42
+ ['integer', 'decimal', '1'],
43
+ ['nonPositiveInteger', 'integer', '-1'],
44
+ ['negativeInteger', 'nonPositiveInteger', '-1'],
45
+ ['long', 'integer', '1'],
46
+ ['int', 'long', '1'],
47
+ ['short', 'int', '1'],
48
+ ['byte', 'short', '1'],
49
+ ['nonNegativeInteger', 'integer', '1'],
50
+ ['unsignedLong', 'nonNegativeInteger', '1'],
51
+ ['unsignedInt', 'unsignedLong', '1'],
52
+ ['unsignedShort', 'unsignedInt', '1'],
53
+ ['unsignedByte', 'unsignedShort', '1'],
54
+ ['positiveInteger', 'nonNegativeInteger', '1'],
55
+ ];
56
+ function buildTable() {
57
+ const map = new Map();
58
+ for (const [localName, base, sampleValue] of XSD_TABLE) {
59
+ const name = { namespaceUri: NS.XSD, localName };
60
+ map.set(qnameToString(name), {
61
+ name,
62
+ ...(base !== undefined ? { base: { namespaceUri: NS.XSD, localName: base } } : {}),
63
+ primitive: base === undefined,
64
+ sampleValue,
65
+ placeholder: '?',
66
+ });
67
+ }
68
+ // SOAP 1.1 encoding mirrors the XSD simple types one-for-one; treat each as an
69
+ // alias so `soapenc:int` behaves exactly like `xs:int` for generation purposes.
70
+ for (const [localName, , sampleValue] of XSD_TABLE) {
71
+ const name = { namespaceUri: NS.SOAP11_ENC, localName };
72
+ map.set(qnameToString(name), {
73
+ name,
74
+ aliasOf: { namespaceUri: NS.XSD, localName },
75
+ primitive: false,
76
+ sampleValue,
77
+ placeholder: '?',
78
+ });
79
+ }
80
+ const arrayName = { namespaceUri: NS.SOAP11_ENC, localName: 'Array' };
81
+ map.set(qnameToString(arrayName), {
82
+ name: arrayName,
83
+ primitive: false,
84
+ complex: true,
85
+ soapEncArray: true,
86
+ sampleValue: '',
87
+ placeholder: '?',
88
+ });
89
+ return map;
90
+ }
91
+ /** Every built-in type, keyed by Clark notation (`{ns}local`). */
92
+ export const BUILTIN_TYPES = buildTable();
93
+ /** The local names of every XSD 1.0 built-in type. */
94
+ export const XSD_BUILTIN_NAMES = XSD_TABLE.map(([localName]) => localName);
95
+ /**
96
+ * Attributes the SOAP 1.1 encoding namespace defines (`soapenc:arrayType` and
97
+ * friends). References to these never resolve against a user schema, so the
98
+ * schema set treats them as known rather than reporting `unresolved-ref`.
99
+ */
100
+ export const SOAP_ENC_ATTRIBUTES = ['arrayType', 'offset', 'position', 'id', 'href', 'root'];
101
+ /** Looks up a built-in type by expanded name, or `undefined` when it is not one. */
102
+ export function lookupBuiltin(name) {
103
+ return BUILTIN_TYPES.get(qnameToString(name));
104
+ }
105
+ /** True when `name` denotes a built-in XSD (or SOAP-encoding) type. */
106
+ export function isBuiltinType(name) {
107
+ return BUILTIN_TYPES.has(qnameToString(name));
108
+ }
@@ -0,0 +1,25 @@
1
+ import type { QName } from '../wsdl/qname.js';
2
+ import type { AttributeDecl, AttributeGroup, ElementDecl, Group, SchemaProblem, TypeDefinition } from './model.js';
3
+ /** The parts of a built `SchemaSet` the reference check reads. */
4
+ export interface ReferenceCheckTarget {
5
+ readonly elements: ReadonlyMap<string, ElementDecl>;
6
+ readonly types: ReadonlyMap<string, TypeDefinition>;
7
+ readonly groups: ReadonlyMap<string, Group>;
8
+ readonly attributeGroups: ReadonlyMap<string, AttributeGroup>;
9
+ readonly attributes: ReadonlyMap<string, AttributeDecl>;
10
+ lookupElement(name: QName): ElementDecl | undefined;
11
+ lookupType(name: QName): TypeDefinition | undefined;
12
+ lookupGroup(name: QName): Group | undefined;
13
+ lookupAttributeGroup(name: QName): AttributeGroup | undefined;
14
+ lookupAttribute(name: QName): AttributeDecl | undefined;
15
+ }
16
+ /**
17
+ * Records an `unresolved-ref` problem for every dangling reference in `set`:
18
+ * type, element, group, attribute, attribute-group and substitution-group
19
+ * heads. References into the XSD and SOAP-encoding namespaces are satisfied by
20
+ * the built-in table, so they are never reported.
21
+ *
22
+ * Unresolved references are never fatal: the corresponding lookup simply
23
+ * returns `undefined`, and consumers decide how to degrade.
24
+ */
25
+ export declare function checkReferences(set: ReferenceCheckTarget, problems: SchemaProblem[]): void;
@@ -0,0 +1,145 @@
1
+ import { NS } from '../xml/namespaces.js';
2
+ import { qnameToString } from '../wsdl/qname.js';
3
+ /** Namespaces whose references are satisfied by the built-in table rather than a schema. */
4
+ function isExternallyKnown(name) {
5
+ return name.namespaceUri === NS.XSD || name.namespaceUri === NS.SOAP11_ENC;
6
+ }
7
+ /**
8
+ * Records an `unresolved-ref` problem for every dangling reference in `set`:
9
+ * type, element, group, attribute, attribute-group and substitution-group
10
+ * heads. References into the XSD and SOAP-encoding namespaces are satisfied by
11
+ * the built-in table, so they are never reported.
12
+ *
13
+ * Unresolved references are never fatal: the corresponding lookup simply
14
+ * returns `undefined`, and consumers decide how to degrade.
15
+ */
16
+ export function checkReferences(set, problems) {
17
+ const report = (what, name, source) => {
18
+ problems.push({
19
+ code: 'unresolved-ref',
20
+ message: `Unresolved ${what} reference ${qnameToString(name)}`,
21
+ location: source.location,
22
+ ...(source.line !== undefined ? { line: source.line, column: source.column ?? 1 } : {}),
23
+ });
24
+ };
25
+ const checkType = (name, source) => {
26
+ if (name !== undefined && !isExternallyKnown(name) && set.lookupType(name) === undefined) {
27
+ report('type', name, source);
28
+ }
29
+ };
30
+ const checkSimple = (type, source) => {
31
+ checkType(type.base, source);
32
+ if (type.baseType !== undefined) {
33
+ checkSimple(type.baseType, source);
34
+ }
35
+ if (type.itemType !== undefined) {
36
+ if ('kind' in type.itemType) {
37
+ checkSimple(type.itemType, source);
38
+ }
39
+ else {
40
+ checkType(type.itemType, source);
41
+ }
42
+ }
43
+ for (const member of type.memberTypes ?? []) {
44
+ if ('kind' in member) {
45
+ checkSimple(member, source);
46
+ }
47
+ else {
48
+ checkType(member, source);
49
+ }
50
+ }
51
+ };
52
+ const checkAttributes = (uses, source) => {
53
+ for (const use of uses) {
54
+ if (use.kind === 'attribute') {
55
+ checkType(use.type, source);
56
+ if (use.anonymousType !== undefined) {
57
+ checkSimple(use.anonymousType, source);
58
+ }
59
+ }
60
+ else if (use.kind === 'attributeRef') {
61
+ if (!isExternallyKnown(use.ref) && set.lookupAttribute(use.ref) === undefined) {
62
+ report('attribute', use.ref, source);
63
+ }
64
+ }
65
+ else if (use.kind === 'attributeGroupRef') {
66
+ if (!isExternallyKnown(use.ref) && set.lookupAttributeGroup(use.ref) === undefined) {
67
+ report('attribute group', use.ref, source);
68
+ }
69
+ }
70
+ }
71
+ };
72
+ const checkParticle = (particle, source) => {
73
+ switch (particle.kind) {
74
+ case 'localElement':
75
+ checkElement(particle.decl);
76
+ break;
77
+ case 'elementRef':
78
+ if (!isExternallyKnown(particle.ref) && set.lookupElement(particle.ref) === undefined) {
79
+ report('element', particle.ref, source);
80
+ }
81
+ break;
82
+ case 'groupRef':
83
+ if (!isExternallyKnown(particle.ref) && set.lookupGroup(particle.ref) === undefined) {
84
+ report('group', particle.ref, source);
85
+ }
86
+ break;
87
+ case 'sequence':
88
+ case 'choice':
89
+ case 'all':
90
+ for (const child of particle.particles) {
91
+ checkParticle(child, source);
92
+ }
93
+ break;
94
+ default:
95
+ break;
96
+ }
97
+ };
98
+ const checkComplex = (type) => {
99
+ const content = type.content;
100
+ if (content.kind === 'complexContent' || content.kind === 'simpleContent') {
101
+ checkType(content.base, type.source);
102
+ }
103
+ if (content.kind === 'particle') {
104
+ checkParticle(content.particle, type.source);
105
+ }
106
+ else if (content.kind === 'complexContent' && content.particle !== undefined) {
107
+ checkParticle(content.particle, type.source);
108
+ }
109
+ checkAttributes(content.attributes, type.source);
110
+ };
111
+ const checkElement = (decl) => {
112
+ checkType(decl.type, decl.source);
113
+ if (decl.substitutionGroup !== undefined && set.lookupElement(decl.substitutionGroup) === undefined) {
114
+ report('substitution group head', decl.substitutionGroup, decl.source);
115
+ }
116
+ if (decl.anonymousType !== undefined) {
117
+ if (decl.anonymousType.kind === 'complexType') {
118
+ checkComplex(decl.anonymousType);
119
+ }
120
+ else {
121
+ checkSimple(decl.anonymousType, decl.source);
122
+ }
123
+ }
124
+ };
125
+ for (const decl of set.elements.values()) {
126
+ checkElement(decl);
127
+ }
128
+ for (const type of set.types.values()) {
129
+ if (type.kind === 'complexType') {
130
+ checkComplex(type);
131
+ }
132
+ else {
133
+ checkSimple(type, type.source);
134
+ }
135
+ }
136
+ for (const group of set.groups.values()) {
137
+ checkParticle(group.particle, group.source);
138
+ }
139
+ for (const group of set.attributeGroups.values()) {
140
+ checkAttributes(group.attributes, group.source);
141
+ }
142
+ for (const attribute of set.attributes.values()) {
143
+ checkAttributes([attribute], attribute.source);
144
+ }
145
+ }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Structural edits on a {@link FormNode} tree — everything the Form view cannot
3
+ * express as a plain text splice into an existing value.
4
+ *
5
+ * Each edit returns a *new* tree (nothing is mutated), which the caller then
6
+ * serialises with `applyForm` and splices back over the body element's range.
7
+ * Because the tree is rebuilt from the document before every edit, an edit can
8
+ * never operate on a stale shape.
9
+ */
10
+ import type { FormNode } from './form-model.js';
11
+ /** One structural change the Form view can ask for, addressed by node id. */
12
+ export type FormEdit =
13
+ /** Make an omitted optional element (or attribute) exist, filled with placeholders. */
14
+ {
15
+ readonly kind: 'insert-optional';
16
+ readonly nodeId: string;
17
+ }
18
+ /** Remove a present optional element (or attribute) again. */
19
+ | {
20
+ readonly kind: 'remove-optional';
21
+ readonly nodeId: string;
22
+ }
23
+ /** Append one occurrence to a `repeat` node. */
24
+ | {
25
+ readonly kind: 'add-repeat';
26
+ readonly nodeId: string;
27
+ }
28
+ /** Drop occurrence `index` of a `repeat` node. */
29
+ | {
30
+ readonly kind: 'remove-repeat';
31
+ readonly nodeId: string;
32
+ readonly index: number;
33
+ }
34
+ /** Switch a `choice` node to alternative `index`, replacing whatever stood there. */
35
+ | {
36
+ readonly kind: 'select-choice';
37
+ readonly nodeId: string;
38
+ readonly index: number;
39
+ }
40
+ /** Set a field/attribute value structurally (used when it is not present in the text yet). */
41
+ | {
42
+ readonly kind: 'set-value';
43
+ readonly nodeId: string;
44
+ readonly value: string;
45
+ };
46
+ /**
47
+ * Applies one structural {@link FormEdit} to `form`, returning a new tree.
48
+ *
49
+ * Unknown node ids and impossible edits (adding past `maxOccurs`, removing
50
+ * below `minOccurs`) are no-ops rather than errors: the renderer only ever
51
+ * offers the affordances the tree says are available, and a stale click must
52
+ * not fail a request.
53
+ *
54
+ * @param form the tree to change
55
+ * @param edit what to change
56
+ */
57
+ export declare function applyFormEdit(form: FormNode, edit: FormEdit): FormNode;
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Structural edits on a {@link FormNode} tree — everything the Form view cannot
3
+ * express as a plain text splice into an existing value.
4
+ *
5
+ * Each edit returns a *new* tree (nothing is mutated), which the caller then
6
+ * serialises with `applyForm` and splices back over the body element's range.
7
+ * Because the tree is rebuilt from the document before every edit, an edit can
8
+ * never operate on a stale shape.
9
+ */
10
+ /** Applies `change` to the node with `id`, rebuilding only the spine above it. */
11
+ function mapNode(node, id, change) {
12
+ if (node.id === id) {
13
+ return change(node);
14
+ }
15
+ const children = node.children.map((child) => mapNode(child, id, change));
16
+ const instances = node.repeat?.instances.map((instance) => mapNode(instance, id, change));
17
+ const childrenChanged = children.some((child, i) => child !== node.children[i]);
18
+ const instancesChanged = instances?.some((instance, i) => instance !== node.repeat?.instances[i]) === true;
19
+ if (!childrenChanged && !instancesChanged) {
20
+ return node;
21
+ }
22
+ return {
23
+ ...node,
24
+ children,
25
+ ...(node.repeat !== undefined && instances !== undefined ? { repeat: { ...node.repeat, instances } } : {}),
26
+ };
27
+ }
28
+ /**
29
+ * Marks a not-present subtree as present, so it serialises: the node itself,
30
+ * every required descendant, and every attribute that must be written. Optional
31
+ * descendants stay absent — the user adds them one at a time.
32
+ */
33
+ function materialise(node) {
34
+ if (node.kind === 'repeat') {
35
+ const repeat = node.repeat;
36
+ if (repeat === undefined) {
37
+ return node;
38
+ }
39
+ const instances = repeat.instances.length > 0 ? repeat.instances : [materialise(repeat.template)];
40
+ return { ...node, present: true, repeat: { ...repeat, instances, canRemove: instances.length > node.occurs.min } };
41
+ }
42
+ if (node.kind === 'choice') {
43
+ const selected = node.choice?.selected ?? 0;
44
+ return {
45
+ ...node,
46
+ present: true,
47
+ choice: { selected },
48
+ children: node.children.map((child, i) => (i === selected ? materialise(child) : child)),
49
+ };
50
+ }
51
+ return {
52
+ ...node,
53
+ present: true,
54
+ children: node.children.map((child) => (child.required || child.kind === 'attribute' ? materialise(child) : child)),
55
+ };
56
+ }
57
+ /** Clears a subtree's presence, so it disappears from the serialised fragment. */
58
+ function dematerialise(node) {
59
+ return { ...node, present: false };
60
+ }
61
+ /** Re-ids a template subtree so a newly added occurrence gets stable, unique ids. */
62
+ function reid(node, id) {
63
+ return {
64
+ ...node,
65
+ id,
66
+ children: node.children.map((child, i) => reid(child, `${id}/${i}`)),
67
+ ...(node.repeat !== undefined
68
+ ? {
69
+ repeat: {
70
+ ...node.repeat,
71
+ instances: node.repeat.instances.map((instance, i) => reid(instance, `${id}#${i}`)),
72
+ template: reid(node.repeat.template, `${id}#t`),
73
+ },
74
+ }
75
+ : {}),
76
+ };
77
+ }
78
+ function addRepeat(node) {
79
+ const repeat = node.repeat;
80
+ if (repeat === undefined || !repeat.canAdd) {
81
+ return node;
82
+ }
83
+ const instances = [...repeat.instances, reid(materialise(repeat.template), `${node.id}#${repeat.instances.length}`)];
84
+ const limit = node.occurs.max === 'unbounded' ? Number.POSITIVE_INFINITY : node.occurs.max;
85
+ return {
86
+ ...node,
87
+ present: true,
88
+ repeat: {
89
+ ...repeat,
90
+ instances,
91
+ canAdd: instances.length < limit,
92
+ canRemove: instances.length > node.occurs.min,
93
+ },
94
+ };
95
+ }
96
+ function removeRepeat(node, index) {
97
+ const repeat = node.repeat;
98
+ if (repeat === undefined || index < 0 || index >= repeat.instances.length) {
99
+ return node;
100
+ }
101
+ const instances = repeat.instances
102
+ .filter((_, i) => i !== index)
103
+ .map((instance, i) => reid(instance, `${node.id}#${i}`));
104
+ const limit = node.occurs.max === 'unbounded' ? Number.POSITIVE_INFINITY : node.occurs.max;
105
+ return {
106
+ ...node,
107
+ present: instances.length > 0,
108
+ repeat: {
109
+ ...repeat,
110
+ instances,
111
+ canAdd: instances.length < limit,
112
+ canRemove: instances.length > node.occurs.min,
113
+ },
114
+ };
115
+ }
116
+ function selectChoice(node, index) {
117
+ if (index < 0 || index >= node.children.length) {
118
+ return node;
119
+ }
120
+ return {
121
+ ...node,
122
+ present: true,
123
+ choice: { selected: index },
124
+ children: node.children.map((child, i) => (i === index ? materialise(child) : dematerialise(child))),
125
+ };
126
+ }
127
+ /**
128
+ * Applies one structural {@link FormEdit} to `form`, returning a new tree.
129
+ *
130
+ * Unknown node ids and impossible edits (adding past `maxOccurs`, removing
131
+ * below `minOccurs`) are no-ops rather than errors: the renderer only ever
132
+ * offers the affordances the tree says are available, and a stale click must
133
+ * not fail a request.
134
+ *
135
+ * @param form the tree to change
136
+ * @param edit what to change
137
+ */
138
+ export function applyFormEdit(form, edit) {
139
+ switch (edit.kind) {
140
+ case 'insert-optional':
141
+ return mapNode(form, edit.nodeId, materialise);
142
+ case 'remove-optional':
143
+ return mapNode(form, edit.nodeId, dematerialise);
144
+ case 'add-repeat':
145
+ return mapNode(form, edit.nodeId, addRepeat);
146
+ case 'remove-repeat':
147
+ return mapNode(form, edit.nodeId, (node) => removeRepeat(node, edit.index));
148
+ case 'select-choice':
149
+ return mapNode(form, edit.nodeId, (node) => selectChoice(node, edit.index));
150
+ case 'set-value':
151
+ return mapNode(form, edit.nodeId, (node) => ({ ...node, present: true, value: edit.value }));
152
+ }
153
+ }
@@ -0,0 +1,153 @@
1
+ /**
2
+ * The schema-driven form model behind the request editor's Form view.
3
+ *
4
+ * {@link buildForm} projects one element declaration — optionally overlaid with
5
+ * the XML that currently stands for it — onto a tree of {@link FormNode}s the
6
+ * renderer can lay out as labelled fields, repeat groups and choice branches.
7
+ * {@link applyForm} serialises such a tree back to an XML fragment, so a
8
+ * structural change (add a repetition, select a choice branch, materialise an
9
+ * omitted optional element) is "rebuild the tree, mutate it, re-render it".
10
+ *
11
+ * Two invariants make that safe to run against a user's hand-edited envelope:
12
+ *
13
+ * 1. **Nothing in the source is dropped.** Source children a particle never
14
+ * claims become `any` nodes carrying the verbatim text; source attributes
15
+ * with no schema counterpart (including `xmlns:*` and `xsi:type`) are kept
16
+ * as `extraAttributes` and re-emitted first.
17
+ * 2. **Recursion is only cut where the source is silent.** A recursive type is
18
+ * expanded past `maxDepth` whenever the XML actually goes that deep.
19
+ *
20
+ * Everything here is pure, synchronous and JSON-serialisable: the tree crosses
21
+ * the IPC boundary to the renderer as-is.
22
+ */
23
+ import type { QName } from '../wsdl/qname.js';
24
+ import type { Occurs } from './model.js';
25
+ import type { SchemaSet } from './schema-set.js';
26
+ import type { TextRange } from './xml-scan.js';
27
+ export type { TextRange } from './xml-scan.js';
28
+ /** How a leaf's value should be edited. `other` means "no useful editor; plain text". */
29
+ export type FormValueBase = 'string' | 'number' | 'integer' | 'boolean' | 'date' | 'time' | 'dateTime' | 'binary' | 'other';
30
+ /** What the renderer needs to choose an editor and show validation hints for a leaf. */
31
+ export interface FormType {
32
+ /** Clark notation for a named type, `xs:int` for a built-in, `''` for an anonymous one. */
33
+ readonly name: string;
34
+ readonly base: FormValueBase;
35
+ readonly enum?: readonly string[];
36
+ readonly pattern?: string;
37
+ /** Lexical bound from the type's facets, shown as a hint — never enforced here (Task 42 validates). */
38
+ readonly min?: string;
39
+ readonly max?: string;
40
+ }
41
+ /** A literal attribute kept verbatim from the source because no schema attribute claims it. */
42
+ export interface FormExtraAttribute {
43
+ readonly name: string;
44
+ readonly value: string;
45
+ }
46
+ /** The repeat bookkeeping on a `repeat` node. */
47
+ export interface FormRepeat {
48
+ /** One node per occurrence present in (or generated for) the document, in order. */
49
+ readonly instances: readonly FormNode[];
50
+ /** A not-present node used as the shape of the next occurrence "+ Add" creates. */
51
+ readonly template: FormNode;
52
+ readonly canAdd: boolean;
53
+ readonly canRemove: boolean;
54
+ }
55
+ /**
56
+ * One node of the form tree.
57
+ *
58
+ * `kind` decides which fields matter:
59
+ * - `field` — an editable leaf (`type`, `value`, `valueRange`); its `children` are its attributes.
60
+ * - `group` — a complex element; `children` are attributes then child particles.
61
+ * - `choice` — `children` are the alternatives; `choice.selected` names the live one.
62
+ * - `repeat` — occurrences live in `repeat.instances`, **not** in `children` (always empty).
63
+ * - `attribute` — an attribute of the enclosing element.
64
+ * - `any` — a wildcard, or source content the schema does not describe; `raw` holds it verbatim.
65
+ */
66
+ export interface FormNode {
67
+ /** Stable path id, e.g. `r/2#1/0`. Survives a rebuild of the same document. */
68
+ readonly id: string;
69
+ readonly kind: 'field' | 'group' | 'choice' | 'repeat' | 'attribute' | 'any';
70
+ readonly name: QName;
71
+ /** The lexical name to write: taken from the source when it exists, else prefixed from scope. */
72
+ readonly label: string;
73
+ readonly required: boolean;
74
+ readonly occurs: Occurs;
75
+ readonly type?: FormType;
76
+ /** Current text for a `field`/`attribute`. The `?` placeholder counts as empty to the UI. */
77
+ readonly value?: string;
78
+ /** Range of `value` in the source document; absent when the node is not present as editable text. */
79
+ readonly valueRange?: TextRange;
80
+ /** Whether this node exists in the document right now. */
81
+ readonly present: boolean;
82
+ readonly nillable?: boolean;
83
+ readonly documentation?: string;
84
+ /** A schema-fixed value: the field is not editable. */
85
+ readonly fixed?: string;
86
+ /** The `xsi:type` standing on this element, shown as a read-only badge. */
87
+ readonly xsiType?: string;
88
+ /** Prefix → URI to declare on this element. Set on the root, and on nodes that need a new prefix. */
89
+ readonly namespaces?: Readonly<Record<string, string>>;
90
+ /** Source attributes no schema attribute claimed (`xmlns:*`, `xsi:type`, wildcards). */
91
+ readonly extraAttributes?: readonly FormExtraAttribute[];
92
+ /** Comments standing immediately before this node in the source. */
93
+ readonly comments?: readonly string[];
94
+ /** Comments standing after this node's last child in the source. */
95
+ readonly trailingComments?: readonly string[];
96
+ /** Set when the schema recursed past `maxDepth` and expansion stopped; edit such content in XML. */
97
+ readonly truncated?: boolean;
98
+ /** Verbatim source text for an `any` node, re-emitted unchanged. */
99
+ readonly raw?: string;
100
+ readonly children: readonly FormNode[];
101
+ readonly choice?: {
102
+ readonly selected?: number;
103
+ };
104
+ readonly repeat?: FormRepeat;
105
+ }
106
+ /** Knobs {@link buildForm} accepts. */
107
+ export interface BuildFormOptions {
108
+ /** Nesting depth after which a *not-present* complex element stops expanding. Default 5. */
109
+ readonly maxDepth?: number;
110
+ /** Fill new leaves with type-appropriate examples instead of `?`. Default false. */
111
+ readonly sampleValues?: boolean;
112
+ /** Prefix already in scope per namespace URI, e.g. from the enclosing envelope. */
113
+ readonly prefixes?: Readonly<Record<string, string>>;
114
+ /**
115
+ * Added to every reported `valueRange`, so a fragment sliced out of a larger
116
+ * document still reports ranges in that document's coordinates.
117
+ */
118
+ readonly offset?: number;
119
+ /**
120
+ * Namespace URI per prefix inherited from an enclosing document. A body
121
+ * fragment sliced out of an envelope declares none of its own, so without
122
+ * this its elements would all resolve into the empty namespace.
123
+ */
124
+ readonly inScope?: Readonly<Record<string, string>>;
125
+ }
126
+ /**
127
+ * Builds the form tree for one global element declaration.
128
+ *
129
+ * @param schemaSet the compiled schemas the element is declared in
130
+ * @param element the global element to model
131
+ * @param xml the fragment that currently stands for it, or `undefined` for a fresh form
132
+ * @param options depth cut-off, sample values, and prefixes already in scope
133
+ * @returns the root node; never throws — an unknown element yields an `any` node instead
134
+ */
135
+ export declare function buildForm(schemaSet: SchemaSet, element: QName, xml?: string, options?: BuildFormOptions): FormNode;
136
+ /**
137
+ * Builds the form tree for an element whose content is described by a *type*
138
+ * rather than a global element declaration — the shape an rpc-style message
139
+ * part takes.
140
+ */
141
+ export declare function buildFormForType(schemaSet: SchemaSet, elementName: QName, type: QName, xml?: string, options?: BuildFormOptions): FormNode;
142
+ /** Knobs {@link applyForm} accepts. */
143
+ export interface ApplyFormOptions {
144
+ /** Indent per level; three spaces by default, matching the sample generator. */
145
+ readonly indent?: string;
146
+ }
147
+ /**
148
+ * Serialises a form tree back to an XML fragment: the exact text that should
149
+ * replace the element the tree was built from. Comments captured from the
150
+ * source are re-emitted in place, and `any` nodes pass their source text
151
+ * through verbatim, so nothing the user wrote is lost.
152
+ */
153
+ export declare function applyForm(form: FormNode, options?: ApplyFormOptions): string;