@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,91 @@
1
+ /**
2
+ * The command-line equivalent of a call, for the Code panel: what a person would type at a shell
3
+ * to make the same call with a command-line gRPC client that takes JSON and `.proto` files. The
4
+ * same value the send path uses is what is rendered, so what the panel shows is what would be sent;
5
+ * credentials are replaced with a stand-in unless the caller says otherwise.
6
+ */
7
+ import { quoteForShell } from '../http/curl.js';
8
+ /** The stand-in a redacted secret is rendered as. */
9
+ export const GRPC_COMMAND_REDACTED = '<redacted>';
10
+ /** Header names whose values are secrets whatever the request calls them. */
11
+ const SECRET_HEADERS = new Set(['authorization', 'proxy-authorization', 'cookie']);
12
+ function headerRows(input, redact) {
13
+ const rows = [];
14
+ for (const [name, value] of Object.entries(input.defaultMetadata ?? {})) {
15
+ rows.push({ name, value, enabled: true });
16
+ }
17
+ if (input.auth !== undefined) {
18
+ switch (input.auth.type) {
19
+ case 'bearer':
20
+ rows.push({
21
+ name: 'authorization',
22
+ value: `${input.auth.scheme ?? 'Bearer'} ${redact ? GRPC_COMMAND_REDACTED : input.auth.token}`,
23
+ enabled: true,
24
+ });
25
+ break;
26
+ case 'oauth2':
27
+ rows.push({
28
+ name: 'authorization',
29
+ value: `Bearer ${redact ? GRPC_COMMAND_REDACTED : input.auth.accessToken}`,
30
+ enabled: true,
31
+ });
32
+ break;
33
+ case 'api-key':
34
+ rows.push({
35
+ name: input.auth.name.toLowerCase(),
36
+ value: redact ? GRPC_COMMAND_REDACTED : input.auth.value,
37
+ enabled: true,
38
+ });
39
+ break;
40
+ case 'basic':
41
+ rows.push({
42
+ name: 'authorization',
43
+ value: `Basic ${redact ? GRPC_COMMAND_REDACTED : Buffer.from(`${input.auth.username}:${input.auth.password}`).toString('base64')}`,
44
+ enabled: true,
45
+ });
46
+ break;
47
+ default:
48
+ break;
49
+ }
50
+ }
51
+ for (const row of input.metadata) {
52
+ if (row.enabled && row.name.trim() !== '') {
53
+ const name = row.name.trim().toLowerCase();
54
+ rows.push({ name, value: redact && SECRET_HEADERS.has(name) ? GRPC_COMMAND_REDACTED : row.value, enabled: true });
55
+ }
56
+ }
57
+ return rows;
58
+ }
59
+ /**
60
+ * Renders one call as a shell command. `messageText` is the request JSON, one object or an array,
61
+ * passed as the data argument; a client stream is what an array means to such a tool as well.
62
+ */
63
+ export function grpcToCommand(input, messageText, options = {}) {
64
+ const shell = options.shell ?? 'posix';
65
+ const q = (value) => quoteForShell(value, shell);
66
+ const parts = ['grpcurl'];
67
+ if (!input.tls) {
68
+ parts.push('-plaintext');
69
+ }
70
+ if (options.importPath !== undefined) {
71
+ parts.push('-import-path', q(options.importPath));
72
+ }
73
+ for (const file of options.protoFiles ?? []) {
74
+ parts.push('-proto', q(file));
75
+ }
76
+ parts.push('-max-time', String(Math.max(1, Math.ceil(input.timeoutMs / 1000))));
77
+ for (const row of headerRows(input, options.redactSecrets !== false)) {
78
+ parts.push('-H', q(`${row.name}: ${row.value}`));
79
+ }
80
+ const compact = messageText.trim() === '' ? '{}' : messageText.trim();
81
+ parts.push('-d', q(compact));
82
+ parts.push(q(input.target), q(`${input.service}/${input.method}`));
83
+ // One option per line, its value on the same line, so the command reads top to bottom.
84
+ const continuation = shell === 'powershell' ? ' `\n ' : ' \\\n ';
85
+ let out = parts[0] ?? '';
86
+ for (let index = 1; index < parts.length; index += 1) {
87
+ const part = parts[index];
88
+ out += part.startsWith('-') || index === parts.length - 2 ? `${continuation}${part}` : ` ${part}`;
89
+ }
90
+ return out;
91
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Property expansion for a gRPC call: every `${…}` reference in the target, the metadata rows and
3
+ * the message text, resolved against the same scopes a SOAP or REST send uses. The rules are the
4
+ * REST ones: names as well as values are expanded, an unresolved reference is reported rather than
5
+ * guessed at, and escaping — JSON string escaping, when the request asks for it — applies to the
6
+ * message alone, never to a header or the target.
7
+ */
8
+ import type { PropertyScopes, UnresolvedRef } from '../project/properties.js';
9
+ import type { KeyValueEntry } from '../rest/model.js';
10
+ /** The parts of a call that carry text a property can appear in. */
11
+ export interface GrpcExpandable {
12
+ readonly target: string;
13
+ readonly metadata: readonly KeyValueEntry[];
14
+ readonly messageText: string;
15
+ }
16
+ /** Options for {@link expandGrpcInput}. */
17
+ export interface ExpandGrpcOptions {
18
+ /** JSON-escape every value substituted into the message text: the request's *escape properties* setting. */
19
+ readonly escape?: boolean;
20
+ }
21
+ /** Expands every property reference in a call's target, metadata and message text. */
22
+ export declare function expandGrpcInput<T extends GrpcExpandable>(input: T, scopes: PropertyScopes, options?: ExpandGrpcOptions): {
23
+ readonly input: T;
24
+ readonly unresolved: UnresolvedRef[];
25
+ };
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Property expansion for a gRPC call: every `${…}` reference in the target, the metadata rows and
3
+ * the message text, resolved against the same scopes a SOAP or REST send uses. The rules are the
4
+ * REST ones: names as well as values are expanded, an unresolved reference is reported rather than
5
+ * guessed at, and escaping — JSON string escaping, when the request asks for it — applies to the
6
+ * message alone, never to a header or the target.
7
+ */
8
+ import { expand } from '../project/properties.js';
9
+ import { escapeForLanguage } from '../rest/body.js';
10
+ /** Expands every property reference in a call's target, metadata and message text. */
11
+ export function expandGrpcInput(input, scopes, options = {}) {
12
+ const unresolved = [];
13
+ const run = (text) => {
14
+ const result = expand(text, scopes);
15
+ unresolved.push(...result.unresolved);
16
+ return result.text;
17
+ };
18
+ const runMessage = (text) => {
19
+ const result = expand(text, scopes);
20
+ unresolved.push(...result.unresolved);
21
+ return options.escape === true ? expand(text, escapedScopes(scopes)).text : result.text;
22
+ };
23
+ return {
24
+ input: {
25
+ ...input,
26
+ target: run(input.target),
27
+ metadata: input.metadata.map((row) => ({ ...row, name: run(row.name), value: run(row.value) })),
28
+ messageText: runMessage(input.messageText),
29
+ },
30
+ unresolved,
31
+ };
32
+ }
33
+ /** The same scopes with every value JSON-escaped, so substitution escapes as it goes. */
34
+ function escapedScopes(scopes) {
35
+ const escapeMap = (map) => {
36
+ const out = {};
37
+ for (const [name, value] of Object.entries(map ?? {})) {
38
+ if (value !== undefined) {
39
+ out[name] = escapeForLanguage(value, 'json');
40
+ }
41
+ }
42
+ return out;
43
+ };
44
+ return {
45
+ ...scopes,
46
+ project: escapeMap(scopes.project),
47
+ global: escapeMap(scopes.global),
48
+ system: escapeMap(scopes.system),
49
+ ...(scopes.env !== undefined ? { env: escapeMap(scopes.env) } : {}),
50
+ ...(scopes.workspace !== undefined ? { workspace: escapeMap(scopes.workspace) } : {}),
51
+ };
52
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The length-prefixed message framing gRPC lays over an HTTP/2 stream: every message is one byte
3
+ * of flags (bit 0: compressed) and a four-byte big-endian length, then the payload. Pure byte
4
+ * work with no I/O, so it is unit-tested against arrays.
5
+ */
6
+ /** One frame as parsed off the stream. */
7
+ export interface GrpcFrame {
8
+ readonly compressed: boolean;
9
+ readonly payload: Uint8Array;
10
+ }
11
+ /** Encodes one message as a gRPC frame. */
12
+ export declare function encodeGrpcFrame(payload: Uint8Array, compressed?: boolean): Uint8Array;
13
+ /**
14
+ * Reassembles frames from the DATA chunks of an HTTP/2 stream, which split and join messages
15
+ * however the transport pleases. Feed each chunk to {@link push}; each call returns the frames
16
+ * completed by it. Call {@link finish} at end of stream to learn whether bytes were left over.
17
+ */
18
+ export declare class GrpcFrameParser {
19
+ private buffered;
20
+ private readonly maxMessageBytes;
21
+ constructor(options?: {
22
+ readonly maxMessageBytes?: number;
23
+ });
24
+ /** Appends a chunk and returns the frames it completed, in order. */
25
+ push(chunk: Uint8Array): GrpcFrame[];
26
+ /** Bytes received but not forming a whole frame — non-zero at end of stream means a truncated message. */
27
+ get pending(): number;
28
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * The length-prefixed message framing gRPC lays over an HTTP/2 stream: every message is one byte
3
+ * of flags (bit 0: compressed) and a four-byte big-endian length, then the payload. Pure byte
4
+ * work with no I/O, so it is unit-tested against arrays.
5
+ */
6
+ import { GrpcError } from '../errors.js';
7
+ const HEADER_BYTES = 5;
8
+ /** Encodes one message as a gRPC frame. */
9
+ export function encodeGrpcFrame(payload, compressed = false) {
10
+ const frame = new Uint8Array(HEADER_BYTES + payload.byteLength);
11
+ frame[0] = compressed ? 1 : 0;
12
+ new DataView(frame.buffer).setUint32(1, payload.byteLength, false);
13
+ frame.set(payload, HEADER_BYTES);
14
+ return frame;
15
+ }
16
+ /**
17
+ * Reassembles frames from the DATA chunks of an HTTP/2 stream, which split and join messages
18
+ * however the transport pleases. Feed each chunk to {@link push}; each call returns the frames
19
+ * completed by it. Call {@link finish} at end of stream to learn whether bytes were left over.
20
+ */
21
+ export class GrpcFrameParser {
22
+ buffered = new Uint8Array(0);
23
+ maxMessageBytes;
24
+ constructor(options) {
25
+ this.maxMessageBytes = options?.maxMessageBytes ?? 64 * 1024 * 1024;
26
+ }
27
+ /** Appends a chunk and returns the frames it completed, in order. */
28
+ push(chunk) {
29
+ if (this.buffered.byteLength === 0) {
30
+ this.buffered = chunk;
31
+ }
32
+ else {
33
+ const joined = new Uint8Array(this.buffered.byteLength + chunk.byteLength);
34
+ joined.set(this.buffered, 0);
35
+ joined.set(chunk, this.buffered.byteLength);
36
+ this.buffered = joined;
37
+ }
38
+ const frames = [];
39
+ let offset = 0;
40
+ while (this.buffered.byteLength - offset >= HEADER_BYTES) {
41
+ const view = new DataView(this.buffered.buffer, this.buffered.byteOffset + offset, HEADER_BYTES);
42
+ const flags = view.getUint8(0);
43
+ const length = view.getUint32(1, false);
44
+ if (length > this.maxMessageBytes) {
45
+ throw new GrpcError('grpc-message-too-large', `A message of ${String(length)} bytes exceeds the ${String(this.maxMessageBytes)}-byte limit`, { details: { length, max: this.maxMessageBytes } });
46
+ }
47
+ if (this.buffered.byteLength - offset - HEADER_BYTES < length) {
48
+ break;
49
+ }
50
+ const start = offset + HEADER_BYTES;
51
+ frames.push({ compressed: (flags & 1) === 1, payload: this.buffered.slice(start, start + length) });
52
+ offset = start + length;
53
+ }
54
+ this.buffered = offset === 0 ? this.buffered : this.buffered.slice(offset);
55
+ return frames;
56
+ }
57
+ /** Bytes received but not forming a whole frame — non-zero at end of stream means a truncated message. */
58
+ get pending() {
59
+ return this.buffered.byteLength;
60
+ }
61
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Turning a `.proto` set into a gRPC API: a folder per service and a request per method, each
3
+ * request seeded with a sample message — the shape an OpenAPI import produces, and the shape the
4
+ * REST spec's §8 asked a gRPC import to reproduce. Pure: the caller reads the files and, when it
5
+ * wants a cache, writes one with `cache.ts`.
6
+ */
7
+ import type { IdGenerator } from '../project/model.js';
8
+ import type { GrpcApi, GrpcDefinitionRef } from './model.js';
9
+ import type { GrpcServiceDescriptor } from './proto/describe.js';
10
+ import type { ProtoSet, ProtoSources } from './proto/load.js';
11
+ /** Options for {@link importProto}. */
12
+ export interface ImportProtoOptions {
13
+ /** The files to start from; defaults to every source. */
14
+ readonly roots?: readonly string[];
15
+ /** The API's name. Defaults to the first service's package, or its name when it has none. */
16
+ readonly name?: string;
17
+ readonly target?: string;
18
+ readonly tls?: boolean;
19
+ readonly definition?: GrpcDefinitionRef;
20
+ readonly newId?: IdGenerator;
21
+ readonly order?: number;
22
+ }
23
+ /** What an import produced, in numbers, for the summary step. */
24
+ export interface ProtoImportSummary {
25
+ readonly files: number;
26
+ readonly services: number;
27
+ readonly methods: number;
28
+ readonly deprecated: number;
29
+ }
30
+ /** The result of {@link importProto}. */
31
+ export interface ImportedProto {
32
+ readonly api: GrpcApi;
33
+ readonly set: ProtoSet;
34
+ readonly services: readonly GrpcServiceDescriptor[];
35
+ readonly summary: ProtoImportSummary;
36
+ }
37
+ /**
38
+ * Builds a gRPC API from an already-loaded set: a folder per service (named by its short name, the
39
+ * package in the description when there is one), a request per method.
40
+ */
41
+ export declare function apiFromProtoSet(set: ProtoSet, options?: ImportProtoOptions): ImportedProto;
42
+ /**
43
+ * Loads `sources` and builds an API from them.
44
+ *
45
+ * @throws ProtoError as {@link loadProtoSet} does
46
+ */
47
+ export declare function importProto(sources: ProtoSources, options?: ImportProtoOptions): ImportedProto;
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Turning a `.proto` set into a gRPC API: a folder per service and a request per method, each
3
+ * request seeded with a sample message — the shape an OpenAPI import produces, and the shape the
4
+ * REST spec's §8 asked a gRPC import to reproduce. Pure: the caller reads the files and, when it
5
+ * wants a cache, writes one with `cache.ts`.
6
+ */
7
+ import { uniqueSlug } from '../project/paths.js';
8
+ import { createGrpcApi, createGrpcFolder, createGrpcRequest } from './model.js';
9
+ import { describeServices } from './proto/describe.js';
10
+ import { loadProtoSet } from './proto/load.js';
11
+ import { sampleMessageText } from './proto/sample.js';
12
+ /** A method's description: its leading comment, with a deprecation notice ahead of it. */
13
+ function requestDescription(method) {
14
+ const parts = [method.deprecated === true ? '**Deprecated.**' : undefined, method.comment].filter((part) => part !== undefined && part !== '');
15
+ return parts.length > 0 ? parts.join(' ') : undefined;
16
+ }
17
+ /** One request per method, slugs unique within the folder. */
18
+ function requestsFor(set, service, options) {
19
+ const taken = new Set();
20
+ return service.methods.map((method, index) => {
21
+ const slug = uniqueSlug(method.name, taken);
22
+ taken.add(slug.toLowerCase());
23
+ const description = requestDescription(method);
24
+ return createGrpcRequest(method.name, {
25
+ slug,
26
+ order: index,
27
+ ...(options.newId !== undefined ? { newId: options.newId } : {}),
28
+ ...(description !== undefined ? { description } : {}),
29
+ service: service.fullName,
30
+ method: method.name,
31
+ methodKind: method.kind,
32
+ message: sampleMessageText(set, method.requestType),
33
+ });
34
+ });
35
+ }
36
+ /**
37
+ * Builds a gRPC API from an already-loaded set: a folder per service (named by its short name, the
38
+ * package in the description when there is one), a request per method.
39
+ */
40
+ export function apiFromProtoSet(set, options = {}) {
41
+ const services = describeServices(set);
42
+ const folderSlugs = new Set();
43
+ const folders = services.map((service, index) => {
44
+ const slug = uniqueSlug(service.name, folderSlugs);
45
+ folderSlugs.add(slug.toLowerCase());
46
+ const description = [service.package !== '' ? `Package \`${service.package}\`.` : undefined, service.comment]
47
+ .filter((part) => part !== undefined && part !== '')
48
+ .join(' ');
49
+ return createGrpcFolder(service.name, {
50
+ slug,
51
+ order: index,
52
+ ...(options.newId !== undefined ? { newId: options.newId } : {}),
53
+ ...(description !== '' ? { description } : {}),
54
+ requests: requestsFor(set, service, options),
55
+ });
56
+ });
57
+ const first = services[0];
58
+ const name = options.name ?? (first === undefined ? 'gRPC API' : first.package !== '' ? first.package : first.name);
59
+ const api = createGrpcApi(name, {
60
+ ...(options.newId !== undefined ? { newId: options.newId } : {}),
61
+ ...(options.order !== undefined ? { order: options.order } : {}),
62
+ ...(options.target !== undefined ? { target: options.target } : {}),
63
+ ...(options.tls !== undefined ? { tls: options.tls } : {}),
64
+ ...(options.definition !== undefined ? { definition: options.definition } : {}),
65
+ folders,
66
+ });
67
+ const methods = services.flatMap((service) => service.methods);
68
+ return {
69
+ api,
70
+ set,
71
+ services,
72
+ summary: {
73
+ files: set.files.length,
74
+ services: services.length,
75
+ methods: methods.length,
76
+ deprecated: methods.filter((method) => method.deprecated === true).length,
77
+ },
78
+ };
79
+ }
80
+ /**
81
+ * Loads `sources` and builds an API from them.
82
+ *
83
+ * @throws ProtoError as {@link loadProtoSet} does
84
+ */
85
+ export function importProto(sources, options = {}) {
86
+ const set = loadProtoSet(sources, options.roots !== undefined ? { roots: options.roots } : {});
87
+ return apiFromProtoSet(set, options);
88
+ }
@@ -0,0 +1,179 @@
1
+ /**
2
+ * The gRPC third of the project model: a *gRPC API* — a target, a set of `.proto` files, and a
3
+ * tree of folders and requests, one request per method call the user wants to keep.
4
+ *
5
+ * A gRPC API is the third sibling container beside a SOAP interface and a REST API (ADR-0007). It
6
+ * lives in the same `apis/<slug>/` directory a REST API does and identifies itself with
7
+ * `kind: grpc` at the top of every file it writes, so a file says what it is without anyone having
8
+ * to know which directory implies which protocol. In memory it is kept in its own list on the
9
+ * project so the compiler points at every surface that needs a third branch rather than letting a
10
+ * gRPC API fall through a REST-shaped `if`.
11
+ *
12
+ * The same rules as the other two models apply: every field is `readonly`, ids are ULIDs so an
13
+ * entity survives a rename, `slug` is the file-system name derived from `name`, and nothing here
14
+ * ever holds a secret — credentials are `secretRef`s resolved from the OS keychain at send time.
15
+ */
16
+ import type { AuthConfig, CreateOptions, IdGenerator } from '../project/model.js';
17
+ import type { KeyValueEntry } from '../rest/model.js';
18
+ import type { GrpcMethodKind, GrpcReflectionVersion } from './shape.js';
19
+ export { clientStreams, defaultTlsFor, GRPC_REFLECTION_VERSIONS, grpcMethodPath, serverStreams } from './shape.js';
20
+ export type { GrpcMethodKind, GrpcReflectionVersion } from './shape.js';
21
+ /**
22
+ * Per-request transport settings. Every field is optional and an absent one means *inherit*, not
23
+ * *off*: the send resolves request → API → project → preference, exactly as a REST request does.
24
+ */
25
+ export interface GrpcRequestSettings {
26
+ /** The call deadline, sent as `grpc-timeout` and enforced locally. */
27
+ readonly timeoutMs?: number;
28
+ /** Send even when the server's certificate does not verify; badged in red wherever it appears. */
29
+ readonly trustInvalid?: boolean;
30
+ /** Id of a `wss/keystores.yaml` entry: the client identity this request's TLS handshake presents. */
31
+ readonly sslKeystoreRef?: string;
32
+ readonly bindAddress?: string;
33
+ /** Stop reading the response once this many message bytes have arrived. */
34
+ readonly maxSizeBytes?: number;
35
+ /** JSON-escape every property value substituted into the message text. Off by default. */
36
+ readonly escapeProperties?: boolean;
37
+ }
38
+ /** A saved gRPC request: everything but the message text lives in `<slug>.request.yaml`. */
39
+ export interface GrpcRequestDef {
40
+ readonly kind: 'grpc';
41
+ readonly id: string;
42
+ readonly name: string;
43
+ /** File-system name (without the `.request.yaml` suffix). */
44
+ readonly slug: string;
45
+ readonly order: number;
46
+ /** Markdown, shown in the Details inspector; imported from the method's leading comment. */
47
+ readonly description?: string;
48
+ /** The fully qualified service name, e.g. `helloworld.Greeter`. */
49
+ readonly service: string;
50
+ /** The method's own name, e.g. `SayHello`. */
51
+ readonly method: string;
52
+ readonly methodKind: GrpcMethodKind;
53
+ /** Metadata sent with the call, one row per key. Names are lower-cased on the wire. */
54
+ readonly metadata: readonly KeyValueEntry[];
55
+ /**
56
+ * The request message as JSON text, exactly as edited, stored in the sibling `<slug>.body.json`.
57
+ * One object for a unary or server-streaming call; a JSON array of objects for a client- or
58
+ * bidirectional-streaming call, sent in order before the stream is closed.
59
+ */
60
+ readonly message: string;
61
+ /** `inherit` by default: the folder chain, then the API, decides. */
62
+ readonly auth: AuthConfig;
63
+ readonly settings: GrpcRequestSettings;
64
+ /**
65
+ * True when the method this request was made from is no longer in the API's definition. Nothing
66
+ * is deleted on a re-import; the request survives badged, as a SOAP request does.
67
+ */
68
+ readonly orphaned?: boolean;
69
+ }
70
+ /** A named node in a gRPC API's tree. An import makes one per service. */
71
+ export interface GrpcFolder {
72
+ readonly id: string;
73
+ readonly name: string;
74
+ readonly slug: string;
75
+ readonly order: number;
76
+ readonly description?: string;
77
+ /** Default credentials for everything inside, unless a child says otherwise. */
78
+ readonly auth?: AuthConfig;
79
+ readonly folders: readonly GrpcFolder[];
80
+ readonly requests: readonly GrpcRequestDef[];
81
+ }
82
+ /**
83
+ * Where an API's schema came from, cached under `apis/<slug>/definition/`.
84
+ *
85
+ * `proto` is an import of `.proto` files, cached byte-exact at their import paths. `reflection` is a
86
+ * server that described itself, cached as the descriptor set it sent. A project written before
87
+ * reflection existed has no `kind`, and reads as `proto`.
88
+ */
89
+ export interface GrpcDefinitionRef {
90
+ /** How the definition was obtained. */
91
+ readonly kind: 'proto' | 'reflection';
92
+ /** Where it came from: a target for reflection, a URL or a path as the user gave it for an import. */
93
+ readonly source: string;
94
+ readonly cache: boolean;
95
+ /**
96
+ * For an import, the import paths of the files it started from. For reflection, the names of the
97
+ * descriptor files declaring the services.
98
+ */
99
+ readonly roots: readonly string[];
100
+ /** For a reflection definition, the version to ask with when it is refreshed. Absent means `auto`. */
101
+ readonly reflectionVersion?: GrpcReflectionVersion;
102
+ /**
103
+ * For a reflection definition, ask again even when the server's certificate does not verify —
104
+ * remembered from the discovery so a refresh reaches the same development server it did.
105
+ */
106
+ readonly trustInvalid?: boolean;
107
+ }
108
+ /** A gRPC API: a `host:port` target, whether to speak TLS to it, and a tree of folders and requests. */
109
+ export interface GrpcApi {
110
+ readonly kind: 'grpc';
111
+ readonly id: string;
112
+ readonly name: string;
113
+ readonly slug: string;
114
+ /** Position among the project's interfaces, REST APIs and gRPC APIs, which share one ordering space. */
115
+ readonly order: number;
116
+ readonly description?: string;
117
+ /**
118
+ * The server to call, as `host:port` (or a `grpc://` / `grpcs://` / `http(s)://` URL, whose scheme
119
+ * decides TLS). May contain `${…}` properties; an environment can override it per environment
120
+ * under the same key a REST base URL uses.
121
+ */
122
+ readonly target: string;
123
+ /** Speak TLS to the target. Off means plaintext HTTP/2 (`h2c`), what a local development server speaks. */
124
+ readonly tls: boolean;
125
+ /** Metadata every request under this API sends unless it sets the same key itself. */
126
+ readonly metadata: readonly KeyValueEntry[];
127
+ readonly auth?: AuthConfig;
128
+ readonly definition?: GrpcDefinitionRef;
129
+ readonly folders: readonly GrpcFolder[];
130
+ readonly requests: readonly GrpcRequestDef[];
131
+ }
132
+ /** Input to {@link createGrpcApi} beyond the name. */
133
+ export interface CreateGrpcApiInput extends CreateOptions {
134
+ readonly target?: string;
135
+ readonly tls?: boolean;
136
+ readonly slug?: string;
137
+ readonly description?: string;
138
+ readonly metadata?: readonly KeyValueEntry[];
139
+ readonly auth?: AuthConfig;
140
+ readonly definition?: GrpcDefinitionRef;
141
+ readonly folders?: readonly GrpcFolder[];
142
+ readonly requests?: readonly GrpcRequestDef[];
143
+ }
144
+ /**
145
+ * Creates an empty gRPC API. TLS defaults from the target: on for a `grpcs://`/`https://` URL or a
146
+ * `:443` port, otherwise off, since a bare `localhost:50051` is what a development server offers.
147
+ */
148
+ export declare function createGrpcApi(name: string, input?: CreateGrpcApiInput): GrpcApi;
149
+ /** Input to {@link createGrpcFolder} beyond the name. */
150
+ export interface CreateGrpcFolderInput extends CreateOptions {
151
+ readonly slug?: string;
152
+ readonly description?: string;
153
+ readonly auth?: AuthConfig;
154
+ readonly folders?: readonly GrpcFolder[];
155
+ readonly requests?: readonly GrpcRequestDef[];
156
+ }
157
+ /** Creates an empty folder. */
158
+ export declare function createGrpcFolder(name: string, input?: CreateGrpcFolderInput): GrpcFolder;
159
+ /** Input to {@link createGrpcRequest} beyond the name. */
160
+ export interface CreateGrpcRequestInput extends CreateOptions {
161
+ readonly service?: string;
162
+ readonly method?: string;
163
+ readonly methodKind?: GrpcMethodKind;
164
+ readonly slug?: string;
165
+ readonly description?: string;
166
+ readonly metadata?: readonly KeyValueEntry[];
167
+ readonly message?: string;
168
+ readonly auth?: AuthConfig;
169
+ readonly settings?: GrpcRequestSettings;
170
+ }
171
+ /** Creates a unary request with an empty message and inherited credentials. */
172
+ export declare function createGrpcRequest(name: string, input?: CreateGrpcRequestInput): GrpcRequestDef;
173
+ export type { IdGenerator };
174
+ /** Every request in `folder` and, depth-first, in the folders below it. */
175
+ export declare function grpcFolderRequests(folder: Pick<GrpcFolder, 'folders' | 'requests'>): GrpcRequestDef[];
176
+ /** Every request in `api`, its root requests first and then each folder depth-first. */
177
+ export declare function grpcApiRequests(api: GrpcApi): GrpcRequestDef[];
178
+ /** Every folder in `api`, depth-first. */
179
+ export declare function grpcApiFolders(api: GrpcApi): GrpcFolder[];
@@ -0,0 +1,91 @@
1
+ /**
2
+ * The gRPC third of the project model: a *gRPC API* — a target, a set of `.proto` files, and a
3
+ * tree of folders and requests, one request per method call the user wants to keep.
4
+ *
5
+ * A gRPC API is the third sibling container beside a SOAP interface and a REST API (ADR-0007). It
6
+ * lives in the same `apis/<slug>/` directory a REST API does and identifies itself with
7
+ * `kind: grpc` at the top of every file it writes, so a file says what it is without anyone having
8
+ * to know which directory implies which protocol. In memory it is kept in its own list on the
9
+ * project so the compiler points at every surface that needs a third branch rather than letting a
10
+ * gRPC API fall through a REST-shaped `if`.
11
+ *
12
+ * The same rules as the other two models apply: every field is `readonly`, ids are ULIDs so an
13
+ * entity survives a rename, `slug` is the file-system name derived from `name`, and nothing here
14
+ * ever holds a secret — credentials are `secretRef`s resolved from the OS keychain at send time.
15
+ */
16
+ import { generateId } from '../project/model.js';
17
+ import { slugify } from '../project/paths.js';
18
+ import { defaultTlsFor } from './shape.js';
19
+ // The pure shape rules live in `shape.ts`, which imports nothing, so the renderer can have them
20
+ // without `node:path` coming along; they are re-exported here because this is where callers expect
21
+ // a gRPC model rule to be.
22
+ export { clientStreams, defaultTlsFor, GRPC_REFLECTION_VERSIONS, grpcMethodPath, serverStreams } from './shape.js';
23
+ function idOf(options) {
24
+ return options?.id ?? (options?.newId ?? generateId)();
25
+ }
26
+ /**
27
+ * Creates an empty gRPC API. TLS defaults from the target: on for a `grpcs://`/`https://` URL or a
28
+ * `:443` port, otherwise off, since a bare `localhost:50051` is what a development server offers.
29
+ */
30
+ export function createGrpcApi(name, input = {}) {
31
+ const target = input.target ?? '';
32
+ return {
33
+ kind: 'grpc',
34
+ id: idOf(input),
35
+ name,
36
+ slug: input.slug ?? slugify(name),
37
+ order: input.order ?? 0,
38
+ ...(input.description !== undefined ? { description: input.description } : {}),
39
+ target,
40
+ tls: input.tls ?? defaultTlsFor(target),
41
+ metadata: input.metadata ?? [],
42
+ ...(input.auth !== undefined ? { auth: input.auth } : {}),
43
+ ...(input.definition !== undefined ? { definition: input.definition } : {}),
44
+ folders: input.folders ?? [],
45
+ requests: input.requests ?? [],
46
+ };
47
+ }
48
+ /** Creates an empty folder. */
49
+ export function createGrpcFolder(name, input = {}) {
50
+ return {
51
+ id: idOf(input),
52
+ name,
53
+ slug: input.slug ?? slugify(name),
54
+ order: input.order ?? 0,
55
+ ...(input.description !== undefined ? { description: input.description } : {}),
56
+ ...(input.auth !== undefined ? { auth: input.auth } : {}),
57
+ folders: input.folders ?? [],
58
+ requests: input.requests ?? [],
59
+ };
60
+ }
61
+ /** Creates a unary request with an empty message and inherited credentials. */
62
+ export function createGrpcRequest(name, input = {}) {
63
+ return {
64
+ kind: 'grpc',
65
+ id: idOf(input),
66
+ name,
67
+ slug: input.slug ?? slugify(name),
68
+ order: input.order ?? 0,
69
+ ...(input.description !== undefined ? { description: input.description } : {}),
70
+ service: input.service ?? '',
71
+ method: input.method ?? '',
72
+ methodKind: input.methodKind ?? 'unary',
73
+ metadata: input.metadata ?? [],
74
+ message: input.message ?? '{}',
75
+ auth: input.auth ?? { type: 'inherit' },
76
+ settings: input.settings ?? {},
77
+ };
78
+ }
79
+ /** Every request in `folder` and, depth-first, in the folders below it. */
80
+ export function grpcFolderRequests(folder) {
81
+ return [...folder.requests, ...folder.folders.flatMap((child) => grpcFolderRequests(child))];
82
+ }
83
+ /** Every request in `api`, its root requests first and then each folder depth-first. */
84
+ export function grpcApiRequests(api) {
85
+ return grpcFolderRequests(api);
86
+ }
87
+ /** Every folder in `api`, depth-first. */
88
+ export function grpcApiFolders(api) {
89
+ const walk = (folders) => folders.flatMap((folder) => [folder, ...walk(folder.folders)]);
90
+ return walk(api.folders);
91
+ }