@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,242 @@
1
+ import { qnameToString } from '../wsdl/qname.js';
2
+ import { lookupBuiltin } from './builtins.js';
3
+ /**
4
+ * Replaces every `groupRef` with the referenced group's compositor, carrying the
5
+ * ref's own occurrence constraints. `visited` breaks group-reference cycles.
6
+ */
7
+ function expandGroups(particle, ctx, visited) {
8
+ switch (particle.kind) {
9
+ case 'groupRef': {
10
+ const key = qnameToString(particle.ref);
11
+ if (visited.has(key)) {
12
+ return undefined;
13
+ }
14
+ const group = ctx.lookupGroup(particle.ref);
15
+ if (group === undefined) {
16
+ return undefined;
17
+ }
18
+ const inner = expandGroups(group.particle, ctx, new Set([...visited, key]));
19
+ return inner === undefined ? undefined : { ...inner, occurs: particle.occurs };
20
+ }
21
+ case 'sequence':
22
+ case 'choice':
23
+ case 'all': {
24
+ const particles = particle.particles
25
+ .map((p) => expandGroups(p, ctx, visited))
26
+ .filter((p) => p !== undefined);
27
+ return { ...particle, particles };
28
+ }
29
+ default:
30
+ return particle;
31
+ }
32
+ }
33
+ const ONCE = { min: 1, max: 1 };
34
+ /** True when a particle can be spliced into an enclosing synthetic sequence. */
35
+ function isInlinableSequence(particle) {
36
+ return particle.kind === 'sequence' && particle.occurs.min === 1 && particle.occurs.max === 1;
37
+ }
38
+ /** Concatenates base-first particles into a single sequence, splicing plain sub-sequences. */
39
+ function mergeParticles(parts) {
40
+ const flat = [];
41
+ for (const part of parts) {
42
+ if (isInlinableSequence(part)) {
43
+ flat.push(...part.particles);
44
+ }
45
+ else {
46
+ flat.push(part);
47
+ }
48
+ }
49
+ if (flat.length === 0) {
50
+ return undefined;
51
+ }
52
+ if (parts.length === 1 && !isInlinableSequence(parts[0])) {
53
+ return parts[0];
54
+ }
55
+ return { kind: 'sequence', particles: flat, occurs: ONCE };
56
+ }
57
+ function toResolvedAttribute(decl) {
58
+ return {
59
+ name: decl.name,
60
+ ...(decl.type !== undefined ? { type: decl.type } : {}),
61
+ ...(decl.anonymousType !== undefined ? { anonymousType: decl.anonymousType } : {}),
62
+ use: decl.use === 'required' ? 'required' : 'optional',
63
+ ...(decl.default !== undefined ? { default: decl.default } : {}),
64
+ ...(decl.fixed !== undefined ? { fixed: decl.fixed } : {}),
65
+ };
66
+ }
67
+ function collectAttributes(uses, ctx, acc, seenGroups) {
68
+ for (const use of uses) {
69
+ switch (use.kind) {
70
+ case 'attribute': {
71
+ const key = qnameToString(use.name);
72
+ if (use.use === 'prohibited') {
73
+ acc.prohibited.add(key);
74
+ acc.byName.delete(key);
75
+ }
76
+ else {
77
+ acc.byName.set(key, toResolvedAttribute(use));
78
+ }
79
+ break;
80
+ }
81
+ case 'attributeRef': {
82
+ const key = qnameToString(use.ref);
83
+ if (use.use === 'prohibited') {
84
+ acc.prohibited.add(key);
85
+ acc.byName.delete(key);
86
+ break;
87
+ }
88
+ const decl = ctx.lookupAttribute(use.ref);
89
+ const base = decl !== undefined ? toResolvedAttribute(decl) : { name: use.ref, use: 'optional' };
90
+ acc.byName.set(key, {
91
+ ...base,
92
+ use: use.use === 'required' ? 'required' : base.use,
93
+ ...(use.default !== undefined ? { default: use.default } : {}),
94
+ ...(use.fixed !== undefined ? { fixed: use.fixed } : {}),
95
+ ...(use.arrayType !== undefined ? { arrayType: use.arrayType } : {}),
96
+ });
97
+ break;
98
+ }
99
+ case 'attributeGroupRef': {
100
+ const key = qnameToString(use.ref);
101
+ if (seenGroups.has(key)) {
102
+ break;
103
+ }
104
+ seenGroups.add(key);
105
+ const group = ctx.lookupAttributeGroup(use.ref);
106
+ if (group !== undefined) {
107
+ collectAttributes(group.attributes, ctx, acc, seenGroups);
108
+ }
109
+ break;
110
+ }
111
+ case 'anyAttribute':
112
+ acc.anyAttribute = { namespace: use.namespace, processContents: use.processContents };
113
+ break;
114
+ }
115
+ }
116
+ }
117
+ /** Walks a `simpleContent` derivation chain down to its ultimate simple base. */
118
+ function ultimateSimpleBase(base, ctx, visited) {
119
+ const key = qnameToString(base);
120
+ if (visited.has(key) || lookupBuiltin(base) !== undefined) {
121
+ return base;
122
+ }
123
+ visited.add(key);
124
+ const type = ctx.lookupType(base);
125
+ if (type === undefined) {
126
+ return base;
127
+ }
128
+ if (type.kind === 'simpleType') {
129
+ return type.base !== undefined ? ultimateSimpleBase(type.base, ctx, visited) : base;
130
+ }
131
+ if (type.content.kind === 'simpleContent') {
132
+ return ultimateSimpleBase(type.content.base, ctx, visited);
133
+ }
134
+ return base;
135
+ }
136
+ /**
137
+ * Computes a complex type's effective content: extension chains flattened
138
+ * base-first, `groupRef`s expanded in place, attribute groups and inherited
139
+ * attributes merged (later declarations win, `prohibited` ones removed).
140
+ *
141
+ * Cycle-safe: a base chain that loops back on itself stops at the repeat, and
142
+ * recursive element declarations are left as references rather than expanded.
143
+ */
144
+ export function resolveContent(type, ctx) {
145
+ const particles = [];
146
+ const acc = { byName: new Map(), prohibited: new Set() };
147
+ const visited = new Set();
148
+ let mixed = false;
149
+ let simpleContentBase;
150
+ // Walk the derivation chain to its root, collecting each level, then apply
151
+ // base-first so extensions append after what they extend.
152
+ const chain = [];
153
+ let current = type;
154
+ while (current !== undefined) {
155
+ const key = current.name !== undefined ? qnameToString(current.name) : undefined;
156
+ if (key !== undefined) {
157
+ if (visited.has(key)) {
158
+ break;
159
+ }
160
+ visited.add(key);
161
+ }
162
+ chain.unshift(current);
163
+ const content = current.content;
164
+ if (content.kind === 'complexContent') {
165
+ const base = ctx.lookupType(content.base);
166
+ current = base !== undefined && base.kind === 'complexType' ? base : undefined;
167
+ // A `restriction` restates the whole content model, so the base's particle
168
+ // is not inherited; only its attributes (and mixed/anyAttribute) are.
169
+ if (content.derivation === 'restriction') {
170
+ break;
171
+ }
172
+ }
173
+ else if (content.kind === 'simpleContent') {
174
+ // A simpleContent extension/restriction may still chain to a complex base
175
+ // that itself declares simpleContent (e.g. TaxedAmount extends Amount);
176
+ // follow it so the base's attributes are inherited. The chain ends once
177
+ // the base is a simple type or builtin (handled by ultimateSimpleBase).
178
+ const base = ctx.lookupType(content.base);
179
+ current = base !== undefined && base.kind === 'complexType' ? base : undefined;
180
+ if (content.derivation === 'restriction') {
181
+ break;
182
+ }
183
+ }
184
+ else {
185
+ current = undefined;
186
+ }
187
+ }
188
+ for (const level of chain) {
189
+ mixed = mixed || level.mixed;
190
+ const content = level.content;
191
+ if (content.kind === 'simpleContent') {
192
+ simpleContentBase = ultimateSimpleBase(content.base, ctx, new Set());
193
+ }
194
+ else if (content.kind === 'particle') {
195
+ particles.push(content.particle);
196
+ }
197
+ else if (content.kind === 'complexContent' && content.particle !== undefined) {
198
+ particles.push(content.particle);
199
+ }
200
+ collectAttributes(content.attributes, ctx, acc, new Set());
201
+ }
202
+ // Attributes (and, for complexContent, mixed/anyAttribute) of levels *above*
203
+ // a restriction cut-off are still inherited: a restriction restates the
204
+ // content model but not necessarily every attribute/mixed/anyAttribute.
205
+ const restrictionRoot = chain[0];
206
+ if (restrictionRoot !== undefined &&
207
+ (restrictionRoot.content.kind === 'complexContent' || restrictionRoot.content.kind === 'simpleContent') &&
208
+ restrictionRoot.content.derivation === 'restriction') {
209
+ const rootContent = restrictionRoot.content;
210
+ const inheritedType = ctx.lookupType(rootContent.base);
211
+ if (inheritedType !== undefined && inheritedType.kind === 'complexType') {
212
+ const inherited = resolveContent(inheritedType, ctx);
213
+ for (const attribute of inherited.attributes) {
214
+ const key = qnameToString(attribute.name);
215
+ if (!acc.prohibited.has(key) && !acc.byName.has(key)) {
216
+ acc.byName.set(key, attribute);
217
+ }
218
+ }
219
+ if (rootContent.kind === 'complexContent') {
220
+ // The derived type inherits `mixed` from the base unless it declares
221
+ // its own (XSD 1.0: `mixed` is not required to be restated).
222
+ if (!restrictionRoot.mixed) {
223
+ mixed = mixed || inherited.mixed;
224
+ }
225
+ // A restriction may narrow or drop `anyAttribute`; only fall back to
226
+ // the base's when the restriction itself declares none.
227
+ if (acc.anyAttribute === undefined && inherited.anyAttribute !== undefined) {
228
+ acc.anyAttribute = inherited.anyAttribute;
229
+ }
230
+ }
231
+ }
232
+ }
233
+ const expanded = particles.map((p) => expandGroups(p, ctx, new Set())).filter((p) => p !== undefined);
234
+ const particle = mergeParticles(expanded);
235
+ return {
236
+ ...(particle !== undefined ? { particle } : {}),
237
+ attributes: [...acc.byName.values()],
238
+ mixed,
239
+ ...(simpleContentBase !== undefined ? { simpleContentBase } : {}),
240
+ ...(acc.anyAttribute !== undefined ? { anyAttribute: acc.anyAttribute } : {}),
241
+ };
242
+ }
@@ -0,0 +1,51 @@
1
+ import type { QName } from '../wsdl/qname.js';
2
+ import type { SchemaSet } from './schema-set.js';
3
+ /** How a sample fragment is generated. */
4
+ export interface GenerateOptions {
5
+ /** Emit `minOccurs="0"` elements (preceded by `<!--Optional:-->`) and optional attributes. */
6
+ readonly includeOptional: boolean;
7
+ /** Emit type-appropriate example values instead of the `?` placeholder. */
8
+ readonly sampleValues: boolean;
9
+ /** Emit `<!--type: xs:int-->` comments on simple-typed leaves. */
10
+ readonly typeComments: boolean;
11
+ /** Nesting depth of complex elements after which generation is cut with a comment. */
12
+ readonly maxDepth: number;
13
+ /** Choice strategy; only `'first'` exists today (all alternatives are shown, the first is canonical). */
14
+ readonly choice: 'first';
15
+ /** Indent per level; three spaces by default. */
16
+ readonly indent?: string;
17
+ /** Preferred prefix per namespace URI; unlisted namespaces get `ns1`, `ns2`, … in first-use order. */
18
+ readonly prefixes?: Readonly<Record<string, string>>;
19
+ }
20
+ /** The defaults every generator entry point starts from. */
21
+ export declare const DEFAULT_GENERATE_OPTIONS: GenerateOptions;
22
+ /** A generated XML fragment plus the namespaces its root declares. */
23
+ export interface GeneratedFragment {
24
+ /** The pretty-printed fragment; no XML declaration. */
25
+ readonly xml: string;
26
+ /** Prefix → namespace URI for every namespace the fragment actually uses. */
27
+ readonly namespaces: Readonly<Record<string, string>>;
28
+ }
29
+ /**
30
+ * Generates a sample XML fragment for a global element declaration, following
31
+ * the usual conventions: `?` placeholders (or typed sample values), comment
32
+ * markers for optional, repeating and choice particles, `xsi:type` for abstract
33
+ * types, and a recursion cut-off at {@link GenerateOptions.maxDepth}.
34
+ *
35
+ * Deterministic: identical inputs always produce byte-identical output.
36
+ *
37
+ * @throws {SchemaError} when `element` is not a global element in `schemaSet`
38
+ */
39
+ export declare function generateElement(schemaSet: SchemaSet, element: QName, options?: Partial<GenerateOptions>): GeneratedFragment;
40
+ /**
41
+ * Generates a sample fragment for an element named `elementName` whose content
42
+ * is described by `type` — the shape rpc-style message parts take, where the
43
+ * part declares a type rather than an element.
44
+ */
45
+ export declare function generateType(schemaSet: SchemaSet, elementName: QName, type: QName, options?: Partial<GenerateOptions>): GeneratedFragment;
46
+ /**
47
+ * Generates the wrapper for a SOAP-encoded array (rpc/encoded), carrying a
48
+ * `soapenc:arrayType` attribute and one `item` child:
49
+ * `<ns1:items soapenc:arrayType="xs:string[1]"><item>?</item></ns1:items>`.
50
+ */
51
+ export declare function generateSoapEncArray(schemaSet: SchemaSet, elementName: QName, itemType: QName, options?: Partial<GenerateOptions>): GeneratedFragment;
@@ -0,0 +1,291 @@
1
+ import { SchemaError } from '../errors.js';
2
+ import { NS } from '../xml/namespaces.js';
3
+ import { qnameToString } from '../wsdl/qname.js';
4
+ import { arrayTypeOf, firstConcreteDerived, resolveType } from './sample-types.js';
5
+ import { PLACEHOLDER, sampleValueFor, typeCommentFor } from './sample-values.js';
6
+ import { PrefixTable, comment, element as xmlElement, renderXml } from './xml-writer.js';
7
+ /** The defaults every generator entry point starts from. */
8
+ export const DEFAULT_GENERATE_OPTIONS = {
9
+ includeOptional: false,
10
+ sampleValues: false,
11
+ typeComments: false,
12
+ maxDepth: 5,
13
+ choice: 'first',
14
+ indent: ' ',
15
+ };
16
+ /**
17
+ * Fills `node` with the `soapenc:arrayType` attribute and a single `item`
18
+ * child. `itemType` is the array's item type; when it is unknown (a schema that
19
+ * declares no `wsdl:arrayType`) the array is reported as `xs:anyType[1]`.
20
+ */
21
+ function fillSoapEncArray(ctx, node, itemType) {
22
+ const item = itemType ?? { namespaceUri: NS.XSD, localName: 'anyType' };
23
+ const label = ctx.prefixes.qualify(item, item.namespaceUri === NS.XSD ? 'xs' : undefined);
24
+ node.attributes.push({
25
+ name: `${ctx.prefixes.prefixFor(NS.SOAP11_ENC, 'soapenc')}:arrayType`,
26
+ // The declared bound is replaced by the number of items actually emitted.
27
+ value: `${label}[1]`,
28
+ });
29
+ const child = xmlElement('item');
30
+ child.text = itemType === undefined ? PLACEHOLDER : sampleValueFor(ctx.set, itemType, ctx.options);
31
+ node.children.push(child);
32
+ }
33
+ /**
34
+ * Interprets a `wsdl:arrayType` value such as `xs:string[]`. Only the local
35
+ * name survives in the schema model, so a built-in name is taken to be the XSD
36
+ * type of that name and anything else is left unresolved.
37
+ */
38
+ function parseArrayItemType(ctx, rawArrayType) {
39
+ if (rawArrayType === undefined) {
40
+ return undefined;
41
+ }
42
+ const withoutBounds = rawArrayType.replace(/\[[^\]]*\]\s*$/, '').trim();
43
+ const local = withoutBounds.includes(':') ? withoutBounds.slice(withoutBounds.indexOf(':') + 1) : withoutBounds;
44
+ const candidate = { namespaceUri: NS.XSD, localName: local };
45
+ return ctx.set.builtin(candidate) !== undefined ? candidate : undefined;
46
+ }
47
+ /** Sets a leaf's text (and optional type comment), honouring a `fixed`/`default` value. */
48
+ function fillLeaf(ctx, node, ref, forced) {
49
+ node.text = forced ?? sampleValueFor(ctx.set, ref, ctx.options);
50
+ if (ctx.options.typeComments) {
51
+ const text = typeCommentFor(ctx.set, ref);
52
+ if (text !== undefined) {
53
+ node.leadingComment = text;
54
+ }
55
+ }
56
+ }
57
+ function attributeValue(ctx, attribute) {
58
+ return (attribute.fixed ??
59
+ attribute.default ??
60
+ sampleValueFor(ctx.set, attribute.type ?? attribute.anonymousType, ctx.options));
61
+ }
62
+ /** Fills a complex-typed element: attributes, then simple content or child particles. */
63
+ function fillComplex(ctx, node, complexType, depth) {
64
+ let effective = complexType;
65
+ if (complexType.abstract) {
66
+ const concrete = firstConcreteDerived(ctx.set, complexType);
67
+ if (concrete?.name !== undefined) {
68
+ effective = concrete;
69
+ node.attributes.push({
70
+ name: `${ctx.prefixes.prefixFor(NS.XSI, 'xsi')}:type`,
71
+ value: ctx.prefixes.qualify(concrete.name),
72
+ });
73
+ }
74
+ }
75
+ const resolved = ctx.set.resolveContent(effective);
76
+ if (effective.content.kind === 'complexContent' && ctx.set.builtin(effective.content.base)?.soapEncArray === true) {
77
+ fillSoapEncArray(ctx, node, parseArrayItemType(ctx, arrayTypeOf(resolved.attributes)));
78
+ return;
79
+ }
80
+ for (const attribute of resolved.attributes) {
81
+ if (attribute.use === 'optional' && !ctx.options.includeOptional) {
82
+ continue;
83
+ }
84
+ if (attribute.name.namespaceUri === NS.SOAP11_ENC) {
85
+ continue;
86
+ }
87
+ node.attributes.push({ name: ctx.prefixes.qualify(attribute.name), value: attributeValue(ctx, attribute) });
88
+ }
89
+ if (resolved.simpleContentBase !== undefined) {
90
+ fillLeaf(ctx, node, resolved.simpleContentBase, undefined);
91
+ return;
92
+ }
93
+ if (resolved.particle !== undefined) {
94
+ emitParticle(ctx, resolved.particle, node.children, depth + 1);
95
+ }
96
+ }
97
+ /** The comment introducing a particle's occurrence constraints, if any. */
98
+ function occurrenceComment(occurs) {
99
+ if (occurs.max === 'unbounded' || occurs.max > 1) {
100
+ if (occurs.min === 0) {
101
+ return 'Zero or more repetitions:';
102
+ }
103
+ return occurs.min === 1 ? '1 or more repetitions:' : `${occurs.min} or more repetitions:`;
104
+ }
105
+ return occurs.min === 0 ? 'Optional:' : undefined;
106
+ }
107
+ /** Builds one element instance, or the recursion-cut comment when it is too deep. */
108
+ function emitElement(ctx, decl, depth) {
109
+ // An abstract head element is never valid on the wire: emit the first
110
+ // concrete member of its substitution group instead.
111
+ let effective = decl;
112
+ if (decl.abstract) {
113
+ const member = ctx.set.substitutionsFor(decl.name).find((candidate) => !candidate.abstract);
114
+ if (member !== undefined) {
115
+ effective = member;
116
+ }
117
+ }
118
+ const resolved = resolveType(ctx.set, effective.type ?? effective.anonymousType);
119
+ if ((resolved.kind === 'complex' || resolved.kind === 'soapencArray') && depth > ctx.options.maxDepth) {
120
+ const label = resolved.kind === 'complex' && resolved.type.name !== undefined
121
+ ? ctx.prefixes.qualify(resolved.type.name)
122
+ : ctx.prefixes.qualify(effective.name);
123
+ return comment(`Recursion depth exceeded (${label})`);
124
+ }
125
+ const node = xmlElement(ctx.prefixes.qualify(effective.name));
126
+ const forced = effective.fixed ?? effective.default;
127
+ switch (resolved.kind) {
128
+ case 'complex':
129
+ fillComplex(ctx, node, resolved.type, depth);
130
+ break;
131
+ case 'soapencArray':
132
+ fillSoapEncArray(ctx, node, undefined);
133
+ break;
134
+ case 'anyType':
135
+ node.text = forced ?? PLACEHOLDER;
136
+ break;
137
+ default:
138
+ fillLeaf(ctx, node, resolved.ref, forced);
139
+ }
140
+ return node;
141
+ }
142
+ /**
143
+ * Emits one instance of an element particle, with its occurrence comment.
144
+ * `forceInclude` bypasses the `includeOptional` gate: it is set for a particle
145
+ * that is a direct alternative of a `choice` (every alternative is emitted
146
+ * regardless of options — the user picks one and deletes the rest).
147
+ */
148
+ function emitElementParticle(ctx, decl, occurs, out, depth, forceInclude = false) {
149
+ if (!forceInclude && occurs.min === 0 && !ctx.options.includeOptional) {
150
+ return;
151
+ }
152
+ const node = emitElement(ctx, decl, depth);
153
+ // A cut-off element is replaced by its comment, so the occurrence comment
154
+ // that would introduce it is dropped rather than left dangling.
155
+ if (node.kind === 'element') {
156
+ const text = occurrenceComment(occurs);
157
+ if (text !== undefined) {
158
+ out.push(comment(text));
159
+ }
160
+ }
161
+ out.push(node);
162
+ }
163
+ /**
164
+ * Emits one particle. `forceInclude` bypasses the `includeOptional` gate for
165
+ * this particle only (not its descendants): it is set when this particle is a
166
+ * direct alternative of an enclosing `choice`, since every alternative of a
167
+ * choice is emitted regardless of options — the optional/occurrence
168
+ * gating of a compositor otherwise applies only outside a choice.
169
+ */
170
+ function emitParticle(ctx, particle, out, depth, forceInclude = false) {
171
+ switch (particle.kind) {
172
+ case 'localElement':
173
+ emitElementParticle(ctx, particle.decl, particle.occurs, out, depth, forceInclude);
174
+ return;
175
+ case 'elementRef': {
176
+ const decl = ctx.set.lookupElement(particle.ref);
177
+ if (decl !== undefined) {
178
+ emitElementParticle(ctx, decl, particle.occurs, out, depth, forceInclude);
179
+ }
180
+ return;
181
+ }
182
+ case 'any':
183
+ out.push(comment('You may enter ANY elements at this point'));
184
+ return;
185
+ case 'groupRef': {
186
+ const group = ctx.set.lookupGroup(particle.ref);
187
+ if (group !== undefined) {
188
+ emitParticle(ctx, { ...group.particle, occurs: particle.occurs }, out, depth, forceInclude);
189
+ }
190
+ return;
191
+ }
192
+ default: {
193
+ if (!forceInclude && particle.occurs.min === 0 && !ctx.options.includeOptional) {
194
+ return;
195
+ }
196
+ const text = occurrenceComment(particle.occurs);
197
+ if (text !== undefined) {
198
+ out.push(comment(text));
199
+ }
200
+ if (particle.kind === 'choice') {
201
+ // The alternatives are announced and then every one of them is emitted,
202
+ // leaving the user to delete the ones they do not want. Every direct
203
+ // alternative is emitted regardless of `includeOptional` (the user
204
+ // picks one); optionality/occurrence gating still applies to content
205
+ // nested *inside* an alternative, and to the choice itself relative to
206
+ // its own parent (handled by the gate above).
207
+ out.push(comment(`You have a CHOICE of the next ${particle.particles.length} items at this level`));
208
+ for (const child of particle.particles) {
209
+ emitParticle(ctx, child, out, depth, true);
210
+ }
211
+ return;
212
+ }
213
+ for (const child of particle.particles) {
214
+ emitParticle(ctx, child, out, depth);
215
+ }
216
+ }
217
+ }
218
+ }
219
+ function createContext(set, options) {
220
+ const merged = { ...DEFAULT_GENERATE_OPTIONS, ...options };
221
+ return { set, options: merged, prefixes: new PrefixTable(merged.prefixes ?? {}) };
222
+ }
223
+ function finish(ctx, node) {
224
+ const namespaces = ctx.prefixes.namespaces();
225
+ // Namespace declarations live on the fragment's root; the request builder
226
+ // hoists them onto the envelope later.
227
+ node.attributes = [
228
+ ...Object.entries(namespaces).map(([prefix, uri]) => ({ name: `xmlns:${prefix}`, value: uri })),
229
+ ...node.attributes,
230
+ ];
231
+ return { xml: renderXml(node, ctx.options.indent ?? ' '), namespaces };
232
+ }
233
+ /**
234
+ * Generates a sample XML fragment for a global element declaration, following
235
+ * the usual conventions: `?` placeholders (or typed sample values), comment
236
+ * markers for optional, repeating and choice particles, `xsi:type` for abstract
237
+ * types, and a recursion cut-off at {@link GenerateOptions.maxDepth}.
238
+ *
239
+ * Deterministic: identical inputs always produce byte-identical output.
240
+ *
241
+ * @throws {SchemaError} when `element` is not a global element in `schemaSet`
242
+ */
243
+ export function generateElement(schemaSet, element, options) {
244
+ const decl = schemaSet.lookupElement(element);
245
+ if (decl === undefined) {
246
+ throw new SchemaError('schema/unknown-element', `No global element declaration for ${qnameToString(element)}`, {
247
+ details: { element: qnameToString(element) },
248
+ });
249
+ }
250
+ const ctx = createContext(schemaSet, options);
251
+ const node = emitElement(ctx, decl, 0);
252
+ if (node.kind !== 'element') {
253
+ throw new SchemaError('schema/unknown-element', `Could not generate a sample for ${qnameToString(element)}`);
254
+ }
255
+ return finish(ctx, node);
256
+ }
257
+ /**
258
+ * Generates a sample fragment for an element named `elementName` whose content
259
+ * is described by `type` — the shape rpc-style message parts take, where the
260
+ * part declares a type rather than an element.
261
+ */
262
+ export function generateType(schemaSet, elementName, type, options) {
263
+ const ctx = createContext(schemaSet, options);
264
+ const node = xmlElement(ctx.prefixes.qualify(elementName));
265
+ const resolved = resolveType(ctx.set, type);
266
+ switch (resolved.kind) {
267
+ case 'complex':
268
+ fillComplex(ctx, node, resolved.type, 0);
269
+ break;
270
+ case 'soapencArray':
271
+ fillSoapEncArray(ctx, node, undefined);
272
+ break;
273
+ case 'anyType':
274
+ node.text = PLACEHOLDER;
275
+ break;
276
+ default:
277
+ fillLeaf(ctx, node, resolved.ref, undefined);
278
+ }
279
+ return finish(ctx, node);
280
+ }
281
+ /**
282
+ * Generates the wrapper for a SOAP-encoded array (rpc/encoded), carrying a
283
+ * `soapenc:arrayType` attribute and one `item` child:
284
+ * `<ns1:items soapenc:arrayType="xs:string[1]"><item>?</item></ns1:items>`.
285
+ */
286
+ export function generateSoapEncArray(schemaSet, elementName, itemType, options) {
287
+ const ctx = createContext(schemaSet, options);
288
+ const node = xmlElement(ctx.prefixes.qualify(elementName));
289
+ fillSoapEncArray(ctx, node, itemType);
290
+ return finish(ctx, node);
291
+ }
@@ -0,0 +1,21 @@
1
+ import type { QName } from '../wsdl/qname.js';
2
+ import type { ComplexType, ResolvedAttribute, SimpleType } from './model.js';
3
+ import type { SchemaSet } from './schema-set.js';
4
+ import type { SimpleTypeRef } from './sample-values.js';
5
+ /** The type a leaf or element resolves to, once names and built-ins are followed. */
6
+ export type ResolvedType = {
7
+ readonly kind: 'complex';
8
+ readonly type: ComplexType;
9
+ } | {
10
+ readonly kind: 'simple';
11
+ readonly ref: SimpleTypeRef;
12
+ } | {
13
+ readonly kind: 'anyType';
14
+ } | {
15
+ readonly kind: 'soapencArray';
16
+ };
17
+ export declare function resolveType(set: SchemaSet, ref: QName | ComplexType | SimpleType | undefined): ResolvedType;
18
+ /** The first concrete type derived from an abstract one, in schema declaration order. */
19
+ export declare function firstConcreteDerived(set: SchemaSet, abstractType: ComplexType): ComplexType | undefined;
20
+ /** The `wsdl:arrayType` recorded on a SOAP-encoded array type, e.g. `xs:string[]`. */
21
+ export declare function arrayTypeOf(attributes: readonly ResolvedAttribute[]): string | undefined;
@@ -0,0 +1,69 @@
1
+ import { NS } from '../xml/namespaces.js';
2
+ import { qnameEquals, qnameToString } from '../wsdl/qname.js';
3
+ export function resolveType(set, ref) {
4
+ if (ref === undefined) {
5
+ return { kind: 'anyType' };
6
+ }
7
+ if ('kind' in ref) {
8
+ return ref.kind === 'complexType' ? { kind: 'complex', type: ref } : { kind: 'simple', ref };
9
+ }
10
+ const builtin = set.builtin(ref);
11
+ if (builtin !== undefined) {
12
+ if (builtin.soapEncArray === true) {
13
+ return { kind: 'soapencArray' };
14
+ }
15
+ return ref.namespaceUri === NS.XSD && (ref.localName === 'anyType' || ref.localName === 'anySimpleType')
16
+ ? { kind: 'anyType' }
17
+ : { kind: 'simple', ref };
18
+ }
19
+ const type = set.lookupType(ref);
20
+ if (type === undefined) {
21
+ // A dangling type reference is already reported by the schema set; fall
22
+ // back to a bare placeholder rather than failing the whole fragment.
23
+ return { kind: 'anyType' };
24
+ }
25
+ return type.kind === 'complexType' ? { kind: 'complex', type } : { kind: 'simple', ref };
26
+ }
27
+ /** True when `candidate` reaches `base` through its complexContent derivation chain. */
28
+ function derivesFrom(set, candidate, base) {
29
+ const seen = new Set();
30
+ let current = candidate;
31
+ while (current !== undefined) {
32
+ if (current.content.kind !== 'complexContent' && current.content.kind !== 'simpleContent') {
33
+ return false;
34
+ }
35
+ const parent = current.content.base;
36
+ if (qnameEquals(parent, base)) {
37
+ return true;
38
+ }
39
+ const key = qnameToString(parent);
40
+ if (seen.has(key)) {
41
+ return false;
42
+ }
43
+ seen.add(key);
44
+ const next = set.lookupType(parent);
45
+ current = next !== undefined && next.kind === 'complexType' ? next : undefined;
46
+ }
47
+ return false;
48
+ }
49
+ /** The first concrete type derived from an abstract one, in schema declaration order. */
50
+ export function firstConcreteDerived(set, abstractType) {
51
+ if (abstractType.name === undefined) {
52
+ return undefined;
53
+ }
54
+ for (const type of set.types.values()) {
55
+ if (type.kind === 'complexType' && !type.abstract && derivesFrom(set, type, abstractType.name)) {
56
+ return type;
57
+ }
58
+ }
59
+ return undefined;
60
+ }
61
+ /** The `wsdl:arrayType` recorded on a SOAP-encoded array type, e.g. `xs:string[]`. */
62
+ export function arrayTypeOf(attributes) {
63
+ for (const attribute of attributes) {
64
+ if (attribute.arrayType !== undefined) {
65
+ return attribute.arrayType;
66
+ }
67
+ }
68
+ return undefined;
69
+ }