@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,19 @@
1
+ /**
2
+ * Public surface of the workspace module: a workspace's model, its on-disk
3
+ * schema and file-system layout, and the load/save/migrate functions that
4
+ * move between the two. Mirrors the shape of `project/` one level up (see
5
+ * `workspace/model.ts` for what a workspace is), collected here so
6
+ * `src/index.ts` can re-export the whole module with one pair of blocks.
7
+ */
8
+ export { WORKSPACE_FORMAT_VERSION, createWorkspace, createWorkspaceEnvironment } from './model.js';
9
+ export { parseWorkspaceFile, workspaceEnvironmentFileSchema, workspaceManifestSchema, workspaceProjectRefSchema, workspaceLocalStateSchema, workspaceShareSchema, } from './schema.js';
10
+ export { WORKSPACES_DIR, WORKSPACE_ENVIRONMENTS_DIR, WORKSPACE_MANIFEST, WORKSPACE_PROJECTS_DIR, WORKSPACE_STATE_FILE, WORKSPACE_TREE_DIR, WORKSPACE_JOINING_DIR, GIT_ATTRIBUTES_FILE, GIT_ATTRIBUTES, workspaceDir, workspaceEnvironmentFile, workspaceManifestFile, workspaceProjectDir, workspaceTreeDir, assertPathSegment, } from './paths.js';
11
+ export { workspaceFiles } from './serialize.js';
12
+ export { loadWorkspace } from './load.js';
13
+ export { saveWorkspace } from './save.js';
14
+ export { migrateWorkspace } from './migrate.js';
15
+ export { WORKSPACE_LOCAL_FILE, EMPTY_LOCAL_STATE, loadLocalState, saveLocalState } from './local-state.js';
16
+ export { WORKSPACE_SHARE_FILE, DEFAULT_GIT_SHARE_SETTINGS, loadShare, saveShare, deleteShare } from './share.js';
17
+ export { reidentifyProject } from './reidentify.js';
18
+ export { resolveWorkspaceApiBaseUrl, linkedEnvironment, resolveWorkspaceEndpoint, resolveWorkspaceScopes, } from './environments.js';
19
+ export { commitMessage, describeTreePath } from './commit-message.js';
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Reads a workspace folder back into a {@link Workspace}. Mirrors
3
+ * `project/load.ts`, with one deliberate difference: a workspace tolerates
4
+ * more damage than a project does. Neither a malformed environment file nor a
5
+ * project reference that fails its schema aborts the load — each becomes a
6
+ * {@link WorkspaceProblem} and is dropped, so a partially damaged workspace
7
+ * still opens (a broken *project* it references is the main process's problem
8
+ * when it tries to open that project, not this module's).
9
+ */
10
+ import type { FsLike } from '../project/fs.js';
11
+ import type { Workspace } from './model.js';
12
+ /** A recoverable inconsistency found while loading a workspace. */
13
+ export interface WorkspaceProblem {
14
+ readonly code: 'environment-file-invalid' | 'project-ref-invalid';
15
+ readonly message: string;
16
+ /** Path relative to the workspace root. */
17
+ readonly file: string;
18
+ }
19
+ /** Options for {@link loadWorkspace}. */
20
+ export interface LoadWorkspaceOptions {
21
+ readonly fs?: FsLike;
22
+ }
23
+ /** The result of {@link loadWorkspace}: the model plus anything odd about the folder. */
24
+ export interface LoadWorkspaceResult {
25
+ readonly workspace: Workspace;
26
+ readonly problems: readonly WorkspaceProblem[];
27
+ /**
28
+ * Whatever the migration pulled out of an older manifest because it no longer belongs there —
29
+ * today, a v1/v2 `activeEnvironmentId`. `workspace.activeEnvironmentId` is always left
30
+ * `undefined` by this function; the caller (main's `WorkspaceService`) is the one that decides
31
+ * whether to adopt this into `local.yaml`.
32
+ */
33
+ readonly legacy: {
34
+ readonly activeEnvironmentId?: string;
35
+ };
36
+ }
37
+ /**
38
+ * Loads the workspace stored in the directory `root`.
39
+ *
40
+ * @throws WorkspaceError `workspace-not-found` when there is no
41
+ * `workspace.yaml`, `workspace-format-too-new` for a newer format version,
42
+ * `workspace-file-invalid` for malformed or schema-violating YAML (with the
43
+ * offending file in `details`).
44
+ */
45
+ export declare function loadWorkspace(root: string, options?: LoadWorkspaceOptions): Promise<LoadWorkspaceResult>;
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Reads a workspace folder back into a {@link Workspace}. Mirrors
3
+ * `project/load.ts`, with one deliberate difference: a workspace tolerates
4
+ * more damage than a project does. Neither a malformed environment file nor a
5
+ * project reference that fails its schema aborts the load — each becomes a
6
+ * {@link WorkspaceProblem} and is dropped, so a partially damaged workspace
7
+ * still opens (a broken *project* it references is the main process's problem
8
+ * when it tries to open that project, not this module's).
9
+ */
10
+ import { join } from 'node:path';
11
+ import { parse as parseYamlDocument } from 'yaml';
12
+ import { WorkspaceError } from '../errors.js';
13
+ import { nodeFs, readFileIfExists, readdirIfExists } from '../project/fs.js';
14
+ import { WORKSPACE_FORMAT_VERSION } from './model.js';
15
+ import { migrateWorkspace } from './migrate.js';
16
+ import { WORKSPACE_ENVIRONMENTS_DIR, WORKSPACE_MANIFEST } from './paths.js';
17
+ import { parseWorkspaceFile, workspaceEnvironmentFileSchema, workspaceManifestSchema, workspaceProjectRefSchema, } from './schema.js';
18
+ function abs(root, relative) {
19
+ return join(root, ...relative.split('/'));
20
+ }
21
+ /**
22
+ * Parses YAML text, raising `WorkspaceError('workspace-file-invalid')` with
23
+ * the offending file path when the document is malformed. A workspace-scoped
24
+ * equivalent of `project/yaml.ts`'s `parseYaml`, kept local since it must
25
+ * throw a different error class.
26
+ */
27
+ function parseYaml(text, file) {
28
+ try {
29
+ return parseYamlDocument(text);
30
+ }
31
+ catch (error) {
32
+ throw new WorkspaceError('workspace-file-invalid', `Malformed YAML in ${file}`, {
33
+ details: { file, issues: [{ path: '', message: error instanceof Error ? error.message : String(error) }] },
34
+ cause: error,
35
+ });
36
+ }
37
+ }
38
+ async function readYaml(fs, root, relative) {
39
+ const buffer = await readFileIfExists(fs, abs(root, relative));
40
+ return buffer === undefined ? undefined : parseYaml(buffer.toString('utf8'), relative);
41
+ }
42
+ /** Orders entities by their persisted `order`, falling back to a stable name comparison. */
43
+ function byOrder(a, b) {
44
+ return a.order - b.order || a.name.localeCompare(b.name);
45
+ }
46
+ function optional(key, value) {
47
+ return value === undefined ? {} : { [key]: value };
48
+ }
49
+ /**
50
+ * Loads every `environments/<slug>.yaml`. A file that is not valid YAML or
51
+ * does not match {@link workspaceEnvironmentFileSchema} is reported as an
52
+ * `environment-file-invalid` problem and skipped, rather than aborting the
53
+ * whole load.
54
+ */
55
+ async function loadEnvironments(fs, root, problems) {
56
+ const environments = [];
57
+ for (const entry of await readdirIfExists(fs, abs(root, WORKSPACE_ENVIRONMENTS_DIR))) {
58
+ if (!entry.isFile || !entry.name.endsWith('.yaml')) {
59
+ continue;
60
+ }
61
+ const relative = `${WORKSPACE_ENVIRONMENTS_DIR}/${entry.name}`;
62
+ let document;
63
+ try {
64
+ document = await readYaml(fs, root, relative);
65
+ }
66
+ catch {
67
+ problems.push({
68
+ code: 'environment-file-invalid',
69
+ message: `"${relative}" is not valid YAML and was skipped`,
70
+ file: relative,
71
+ });
72
+ continue;
73
+ }
74
+ const result = workspaceEnvironmentFileSchema.safeParse(document);
75
+ if (!result.success) {
76
+ problems.push({
77
+ code: 'environment-file-invalid',
78
+ message: `"${relative}" does not match the environment schema and was skipped`,
79
+ file: relative,
80
+ });
81
+ continue;
82
+ }
83
+ const parsed = result.data;
84
+ environments.push({
85
+ id: parsed.id,
86
+ name: parsed.name,
87
+ slug: entry.name.slice(0, -'.yaml'.length),
88
+ order: parsed.order,
89
+ properties: parsed.properties,
90
+ endpoints: parsed.endpoints,
91
+ disabledProperties: parsed.disabled ?? [],
92
+ });
93
+ }
94
+ return environments.sort(byOrder);
95
+ }
96
+ /**
97
+ * Validates the raw `projects` array of a manifest one entry at a time, so a
98
+ * single malformed reference becomes a `project-ref-invalid` problem instead
99
+ * of failing the whole manifest.
100
+ */
101
+ function loadProjectRefs(rawProjects, problems) {
102
+ const refs = [];
103
+ if (!Array.isArray(rawProjects)) {
104
+ return refs;
105
+ }
106
+ for (const raw of rawProjects) {
107
+ const result = workspaceProjectRefSchema.safeParse(raw);
108
+ if (!result.success) {
109
+ problems.push({
110
+ code: 'project-ref-invalid',
111
+ message: `A project reference in ${WORKSPACE_MANIFEST} does not match the expected shape`,
112
+ file: WORKSPACE_MANIFEST,
113
+ });
114
+ continue;
115
+ }
116
+ const parsed = result.data;
117
+ refs.push(parsed.source === 'linked'
118
+ ? { id: parsed.id, slug: parsed.slug, source: parsed.source, path: parsed.path }
119
+ : { id: parsed.id, slug: parsed.slug, source: parsed.source });
120
+ }
121
+ return refs;
122
+ }
123
+ /**
124
+ * Loads the workspace stored in the directory `root`.
125
+ *
126
+ * @throws WorkspaceError `workspace-not-found` when there is no
127
+ * `workspace.yaml`, `workspace-format-too-new` for a newer format version,
128
+ * `workspace-file-invalid` for malformed or schema-violating YAML (with the
129
+ * offending file in `details`).
130
+ */
131
+ export async function loadWorkspace(root, options) {
132
+ const fs = options?.fs ?? nodeFs;
133
+ const manifestDocument = await readYaml(fs, root, WORKSPACE_MANIFEST);
134
+ if (manifestDocument === undefined) {
135
+ throw new WorkspaceError('workspace-not-found', `No ${WORKSPACE_MANIFEST} in ${root}`, {
136
+ details: { file: WORKSPACE_MANIFEST, root },
137
+ });
138
+ }
139
+ const { manifest: migrated, legacy } = migrateWorkspace(manifestDocument, WORKSPACE_MANIFEST);
140
+ const problems = [];
141
+ const projects = loadProjectRefs(migrated['projects'], problems);
142
+ const manifest = parseWorkspaceFile(workspaceManifestSchema, { ...migrated, projects: [] }, WORKSPACE_MANIFEST);
143
+ const workspace = {
144
+ formatVersion: WORKSPACE_FORMAT_VERSION,
145
+ id: manifest.id,
146
+ name: manifest.name,
147
+ ...optional('description', manifest.description),
148
+ createdAt: manifest.createdAt,
149
+ properties: manifest.properties,
150
+ disabledProperties: manifest.disabled ?? [],
151
+ projects,
152
+ environments: await loadEnvironments(fs, root, problems),
153
+ };
154
+ return { workspace, problems, legacy };
155
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * `local.yaml`: the machine-local half of a workspace's app-data folder. Never inside the tree,
3
+ * never committed, never shared — it is the one place `activeEnvironmentId` lives now that
4
+ * `workspace.yaml` no longer carries it (see `model.ts`).
5
+ *
6
+ * Mirrors `share.ts`'s discipline (`readYaml`/`parseWorkspaceFile` in, `stringifyYaml` +
7
+ * `writeFileAtomic` out) but never throws on a missing or corrupt file: a machine-local file
8
+ * that cannot be read is simply "no local state yet", not an error the user needs to see.
9
+ */
10
+ import type { FsLike } from '../project/fs.js';
11
+ /** File name of a workspace's machine-local state, directly under its app-data folder. */
12
+ export declare const WORKSPACE_LOCAL_FILE = "local.yaml";
13
+ /** The machine-local state of one workspace on this machine. */
14
+ export interface WorkspaceLocalState {
15
+ readonly version: 1;
16
+ /** Id of the environment currently active for this workspace, on this machine. */
17
+ readonly activeEnvironmentId?: string;
18
+ }
19
+ /** The state of a workspace that has never had anything local recorded for it. */
20
+ export declare const EMPTY_LOCAL_STATE: WorkspaceLocalState;
21
+ /** Options shared by {@link loadLocalState} and {@link saveLocalState}. */
22
+ export interface LocalStateOptions {
23
+ readonly fs?: FsLike;
24
+ }
25
+ /**
26
+ * Reads `<dir>/local.yaml`. A missing file, unparseable YAML, or a document that fails
27
+ * {@link workspaceLocalStateSchema} all resolve to {@link EMPTY_LOCAL_STATE} rather than
28
+ * throwing — this file is a cache of machine-local convenience state, not a source of truth
29
+ * worth failing an `open()` over.
30
+ */
31
+ export declare function loadLocalState(dir: string, options?: LocalStateOptions): Promise<WorkspaceLocalState>;
32
+ /**
33
+ * Writes `state` to `<dir>/local.yaml` atomically. When `state` equals {@link EMPTY_LOCAL_STATE}
34
+ * (nothing worth recording), the file is deleted instead of writing an empty document — so a
35
+ * workspace that never sets an active environment never grows a `local.yaml` at all.
36
+ */
37
+ export declare function saveLocalState(dir: string, state: WorkspaceLocalState, options?: LocalStateOptions): Promise<void>;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * `local.yaml`: the machine-local half of a workspace's app-data folder. Never inside the tree,
3
+ * never committed, never shared — it is the one place `activeEnvironmentId` lives now that
4
+ * `workspace.yaml` no longer carries it (see `model.ts`).
5
+ *
6
+ * Mirrors `share.ts`'s discipline (`readYaml`/`parseWorkspaceFile` in, `stringifyYaml` +
7
+ * `writeFileAtomic` out) but never throws on a missing or corrupt file: a machine-local file
8
+ * that cannot be read is simply "no local state yet", not an error the user needs to see.
9
+ */
10
+ import { join } from 'node:path';
11
+ import { parse as parseYamlDocument } from 'yaml';
12
+ import { nodeFs, readFileIfExists, writeFileAtomic } from '../project/fs.js';
13
+ import { stringifyYaml, compact } from '../project/yaml.js';
14
+ import { workspaceLocalStateSchema } from './schema.js';
15
+ /** File name of a workspace's machine-local state, directly under its app-data folder. */
16
+ export const WORKSPACE_LOCAL_FILE = 'local.yaml';
17
+ /** The state of a workspace that has never had anything local recorded for it. */
18
+ export const EMPTY_LOCAL_STATE = { version: 1 };
19
+ /**
20
+ * Reads `<dir>/local.yaml`. A missing file, unparseable YAML, or a document that fails
21
+ * {@link workspaceLocalStateSchema} all resolve to {@link EMPTY_LOCAL_STATE} rather than
22
+ * throwing — this file is a cache of machine-local convenience state, not a source of truth
23
+ * worth failing an `open()` over.
24
+ */
25
+ export async function loadLocalState(dir, options) {
26
+ const fs = options?.fs ?? nodeFs;
27
+ const buffer = await readFileIfExists(fs, join(dir, WORKSPACE_LOCAL_FILE));
28
+ if (buffer === undefined) {
29
+ return EMPTY_LOCAL_STATE;
30
+ }
31
+ let document;
32
+ try {
33
+ document = parseYamlDocument(buffer.toString('utf8'));
34
+ }
35
+ catch {
36
+ return EMPTY_LOCAL_STATE;
37
+ }
38
+ const result = workspaceLocalStateSchema.safeParse(document);
39
+ if (!result.success) {
40
+ return EMPTY_LOCAL_STATE;
41
+ }
42
+ return result.data.activeEnvironmentId === undefined
43
+ ? EMPTY_LOCAL_STATE
44
+ : { version: 1, activeEnvironmentId: result.data.activeEnvironmentId };
45
+ }
46
+ /**
47
+ * Writes `state` to `<dir>/local.yaml` atomically. When `state` equals {@link EMPTY_LOCAL_STATE}
48
+ * (nothing worth recording), the file is deleted instead of writing an empty document — so a
49
+ * workspace that never sets an active environment never grows a `local.yaml` at all.
50
+ */
51
+ export async function saveLocalState(dir, state, options) {
52
+ const fs = options?.fs ?? nodeFs;
53
+ const path = join(dir, WORKSPACE_LOCAL_FILE);
54
+ if (state.activeEnvironmentId === undefined) {
55
+ await fs.rm(path, { force: true });
56
+ return;
57
+ }
58
+ await writeFileAtomic(fs, path, stringifyYaml(compact({ ...state })));
59
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Format-version handling for workspace folders. Mirrors `project/migrate.ts`.
3
+ *
4
+ * `formatVersion` is bumped only on breaking changes. Opening a workspace
5
+ * written by a newer Wirebench must fail loudly rather than silently dropping
6
+ * the parts this build does not understand.
7
+ */
8
+ /** A raw manifest document, before schema validation. */
9
+ type RawWorkspaceManifest = Record<string, unknown>;
10
+ /**
11
+ * The result of bringing a raw manifest document up to {@link WORKSPACE_FORMAT_VERSION}: the
12
+ * migrated manifest itself, plus anything the migration pulled *out* of it because it no longer
13
+ * belongs there — today, a v1/v2 `activeEnvironmentId`, which `load.ts` hands to the caller so it
14
+ * can be adopted into `local.yaml` (see `local-state.ts`) rather than silently dropped.
15
+ */
16
+ export interface MigratedWorkspaceManifest {
17
+ readonly manifest: RawWorkspaceManifest;
18
+ readonly legacy: {
19
+ readonly activeEnvironmentId?: string;
20
+ };
21
+ }
22
+ /**
23
+ * Brings a raw manifest document up to {@link WORKSPACE_FORMAT_VERSION}.
24
+ *
25
+ * Version 1 needs no rewrite of its own beyond what version 2 does: it simply has no `disabled`
26
+ * key, and `load.ts` defaults a missing list to empty. Versions 1 and 2 both carried
27
+ * `activeEnvironmentId` (machine-local, moved to `local.yaml` in v3) and `writtenBy` (dropped
28
+ * outright — see `model.ts`); this function lifts the former into {@link MigratedWorkspaceManifest.legacy}
29
+ * and drops both from the manifest, then stamps the document with the current `formatVersion` so
30
+ * schema validation (which pins `formatVersion` to a literal) accepts a document written by an
31
+ * older build. The next save then writes the file back at the current version.
32
+ *
33
+ * @throws WorkspaceError `workspace-format-too-new` when the file was written
34
+ * by a newer Wirebench, `workspace-file-invalid` when the document is not a
35
+ * mapping or `formatVersion` is missing, not a number, or below 1.
36
+ */
37
+ export declare function migrateWorkspace(document: unknown, file: string): MigratedWorkspaceManifest;
38
+ export {};
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Format-version handling for workspace folders. Mirrors `project/migrate.ts`.
3
+ *
4
+ * `formatVersion` is bumped only on breaking changes. Opening a workspace
5
+ * written by a newer Wirebench must fail loudly rather than silently dropping
6
+ * the parts this build does not understand.
7
+ */
8
+ import { WorkspaceError } from '../errors.js';
9
+ import { WORKSPACE_FORMAT_VERSION } from './model.js';
10
+ /**
11
+ * Brings a raw manifest document up to {@link WORKSPACE_FORMAT_VERSION}.
12
+ *
13
+ * Version 1 needs no rewrite of its own beyond what version 2 does: it simply has no `disabled`
14
+ * key, and `load.ts` defaults a missing list to empty. Versions 1 and 2 both carried
15
+ * `activeEnvironmentId` (machine-local, moved to `local.yaml` in v3) and `writtenBy` (dropped
16
+ * outright — see `model.ts`); this function lifts the former into {@link MigratedWorkspaceManifest.legacy}
17
+ * and drops both from the manifest, then stamps the document with the current `formatVersion` so
18
+ * schema validation (which pins `formatVersion` to a literal) accepts a document written by an
19
+ * older build. The next save then writes the file back at the current version.
20
+ *
21
+ * @throws WorkspaceError `workspace-format-too-new` when the file was written
22
+ * by a newer Wirebench, `workspace-file-invalid` when the document is not a
23
+ * mapping or `formatVersion` is missing, not a number, or below 1.
24
+ */
25
+ export function migrateWorkspace(document, file) {
26
+ if (typeof document !== 'object' || document === null || Array.isArray(document)) {
27
+ throw new WorkspaceError('workspace-file-invalid', `Invalid workspace file ${file}: expected a YAML mapping`, {
28
+ details: { file, issues: [{ path: '', message: 'expected a YAML mapping' }] },
29
+ });
30
+ }
31
+ const raw = document;
32
+ const version = raw['formatVersion'];
33
+ if (typeof version !== 'number' || !Number.isInteger(version) || version < 1) {
34
+ throw new WorkspaceError('workspace-file-invalid', `Invalid workspace file ${file}: bad formatVersion`, {
35
+ details: {
36
+ file,
37
+ issues: [{ path: 'formatVersion', message: `expected an integer >= 1, got ${JSON.stringify(version)}` }],
38
+ },
39
+ });
40
+ }
41
+ if (version > WORKSPACE_FORMAT_VERSION) {
42
+ throw new WorkspaceError('workspace-format-too-new', `Workspace was created by a newer version of Wirebench (format ${version}, this build supports ${WORKSPACE_FORMAT_VERSION})`, { details: { file, formatVersion: version, supported: WORKSPACE_FORMAT_VERSION } });
43
+ }
44
+ const activeEnvironmentId = raw['activeEnvironmentId'];
45
+ const legacy = version < 3 && typeof activeEnvironmentId === 'string' ? { activeEnvironmentId } : {};
46
+ const rest = { ...raw };
47
+ delete rest['activeEnvironmentId'];
48
+ delete rest['writtenBy'];
49
+ return { manifest: { ...rest, formatVersion: WORKSPACE_FORMAT_VERSION }, legacy };
50
+ }
@@ -0,0 +1,86 @@
1
+ /**
2
+ * The Wirebench workspace model: a container of projects with its own
3
+ * environments (see the design spec, "Workspaces").
4
+ *
5
+ * A workspace does not own project data itself: each {@link WorkspaceProjectRef}
6
+ * merely points at a project folder, either one Wirebench manages inside the
7
+ * workspace (`source: 'internal'`) or an existing project folder elsewhere on
8
+ * disk that the workspace only links to (`source: 'linked'`, always an
9
+ * absolute {@link WorkspaceProjectRef.path}). Environments live on the
10
+ * workspace, not the project: a workspace environment carries an endpoint
11
+ * override per `<projectSlug>/<interfaceSlug>` and its own property overrides,
12
+ * so the same set of projects can be pointed at different deployments without
13
+ * editing any of them.
14
+ *
15
+ * Every field is `readonly`, mirroring `project/model.ts`.
16
+ */
17
+ import type { CreateOptions, PropertyMap } from '../project/model.js';
18
+ /** The on-disk format version written to (and required by) `workspace.yaml`. */
19
+ export declare const WORKSPACE_FORMAT_VERSION = 3;
20
+ /**
21
+ * A pointer to one project inside a workspace. `internal` projects live under
22
+ * the workspace's own `projects/` directory and are managed by it; `linked`
23
+ * projects live at an existing, absolute `path` elsewhere on disk and the
24
+ * workspace only references them — nothing here checks that the folder they
25
+ * point at actually exists, or is a valid project; that is the main process's
26
+ * job when it opens one.
27
+ */
28
+ export interface WorkspaceProjectRef {
29
+ readonly id: string;
30
+ readonly slug: string;
31
+ readonly source: 'internal' | 'linked';
32
+ /** Absolute path to the project folder. Present for `source: 'linked'` only. */
33
+ readonly path?: string;
34
+ }
35
+ /**
36
+ * A named set of per-interface endpoint overrides and property values,
37
+ * scoped to a workspace rather than to one project (compare
38
+ * `project/model.ts`'s `Environment`). `endpoints` is keyed by
39
+ * `<projectSlug>/<interfaceSlug>`.
40
+ */
41
+ export interface WorkspaceEnvironment {
42
+ readonly id: string;
43
+ readonly name: string;
44
+ readonly slug: string;
45
+ readonly order: number;
46
+ readonly properties: PropertyMap;
47
+ readonly endpoints: Readonly<Record<string, string>>;
48
+ /**
49
+ * Names of {@link properties} entries that are switched off, mirroring
50
+ * `project/model.ts`'s `Environment.disabledProperties`: resolution treats a disabled
51
+ * property as absent, while its value stays on disk. Written sorted, deduplicated, and only
52
+ * for names still present in `properties`.
53
+ */
54
+ readonly disabledProperties: readonly string[];
55
+ }
56
+ /** A whole Wirebench workspace, as loaded from (or saved to) a workspace folder. */
57
+ export interface Workspace {
58
+ readonly formatVersion: typeof WORKSPACE_FORMAT_VERSION;
59
+ readonly id: string;
60
+ readonly name: string;
61
+ readonly description?: string;
62
+ /** ISO 8601 timestamp of when the workspace was created. */
63
+ readonly createdAt: string;
64
+ readonly properties: PropertyMap;
65
+ /** Names of {@link properties} entries switched off; see {@link WorkspaceEnvironment.disabledProperties}. */
66
+ readonly disabledProperties: readonly string[];
67
+ /**
68
+ * Id of the environment currently active for this workspace, if any. Machine-local: kept only
69
+ * in memory while a workspace is open, and never serialised into `workspace.yaml` — see
70
+ * `local-state.ts`, which is where it actually lives on disk.
71
+ */
72
+ readonly activeEnvironmentId?: string;
73
+ readonly projects: readonly WorkspaceProjectRef[];
74
+ readonly environments: readonly WorkspaceEnvironment[];
75
+ }
76
+ /** Creates an empty workspace with no projects and no environments. */
77
+ export declare function createWorkspace(name: string, options?: CreateOptions & {
78
+ readonly now?: () => Date;
79
+ }): Workspace;
80
+ /**
81
+ * Creates a workspace environment: its `slug` is `uniqueSlug(name, taken)` (so
82
+ * it never collides with an already-taken slug, case-insensitively) and its
83
+ * `order` defaults to `taken.size` — i.e. it is appended after every
84
+ * environment `taken` was built from.
85
+ */
86
+ export declare function createWorkspaceEnvironment(name: string, taken: ReadonlySet<string>, options?: CreateOptions): WorkspaceEnvironment;
@@ -0,0 +1,54 @@
1
+ /**
2
+ * The Wirebench workspace model: a container of projects with its own
3
+ * environments (see the design spec, "Workspaces").
4
+ *
5
+ * A workspace does not own project data itself: each {@link WorkspaceProjectRef}
6
+ * merely points at a project folder, either one Wirebench manages inside the
7
+ * workspace (`source: 'internal'`) or an existing project folder elsewhere on
8
+ * disk that the workspace only links to (`source: 'linked'`, always an
9
+ * absolute {@link WorkspaceProjectRef.path}). Environments live on the
10
+ * workspace, not the project: a workspace environment carries an endpoint
11
+ * override per `<projectSlug>/<interfaceSlug>` and its own property overrides,
12
+ * so the same set of projects can be pointed at different deployments without
13
+ * editing any of them.
14
+ *
15
+ * Every field is `readonly`, mirroring `project/model.ts`.
16
+ */
17
+ import { generateId } from '../project/model.js';
18
+ import { uniqueSlug } from '../project/paths.js';
19
+ /** The on-disk format version written to (and required by) `workspace.yaml`. */
20
+ export const WORKSPACE_FORMAT_VERSION = 3;
21
+ function idOf(options) {
22
+ return options?.id ?? (options?.newId ?? generateId)();
23
+ }
24
+ /** Creates an empty workspace with no projects and no environments. */
25
+ export function createWorkspace(name, options) {
26
+ const now = options?.now ?? (() => new Date());
27
+ return {
28
+ formatVersion: WORKSPACE_FORMAT_VERSION,
29
+ id: idOf(options),
30
+ name,
31
+ createdAt: now().toISOString(),
32
+ properties: {},
33
+ disabledProperties: [],
34
+ projects: [],
35
+ environments: [],
36
+ };
37
+ }
38
+ /**
39
+ * Creates a workspace environment: its `slug` is `uniqueSlug(name, taken)` (so
40
+ * it never collides with an already-taken slug, case-insensitively) and its
41
+ * `order` defaults to `taken.size` — i.e. it is appended after every
42
+ * environment `taken` was built from.
43
+ */
44
+ export function createWorkspaceEnvironment(name, taken, options) {
45
+ return {
46
+ id: idOf(options),
47
+ name,
48
+ slug: uniqueSlug(name, taken),
49
+ order: options?.order ?? taken.size,
50
+ properties: {},
51
+ endpoints: {},
52
+ disabledProperties: [],
53
+ };
54
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * File-system naming and layout for a workspace folder.
3
+ *
4
+ * Mirrors `project/paths.ts`: display names live inside the YAML, the
5
+ * folder/file names are derived slugs. `assertPathSegment` is workspace's own
6
+ * (not `project`'s) so a corrupted slug always throws a `WorkspaceError`.
7
+ */
8
+ import type { WorkspaceShare } from './share.js';
9
+ /**
10
+ * Rejects a value that cannot safely be used as a single path segment on disk:
11
+ * empty, `.`/`..`, containing a path separator or NUL, leading/trailing
12
+ * whitespace or dots, or a Windows reserved device name. Used to validate any
13
+ * slug that flows into a workspace file path before it is ever written to (or
14
+ * deleted from) disk.
15
+ *
16
+ * @throws WorkspaceError `workspace-path-invalid` carrying the offending segment.
17
+ */
18
+ export declare function assertPathSegment(segment: string): void;
19
+ /** Directory (under a user-data root) holding every workspace. */
20
+ export declare const WORKSPACES_DIR = "workspaces";
21
+ /** File name of a workspace's manifest. */
22
+ export declare const WORKSPACE_MANIFEST = "workspace.yaml";
23
+ /** Directory holding every workspace environment file. */
24
+ export declare const WORKSPACE_ENVIRONMENTS_DIR = "environments";
25
+ /** Directory holding every internal project's folder. */
26
+ export declare const WORKSPACE_PROJECTS_DIR = "projects";
27
+ /** File name of the (non-managed-format) file recording desktop UI state, e.g. the last opened workspace. */
28
+ export declare const WORKSPACE_STATE_FILE = "workspace-state.json";
29
+ /** Directory (under a workspace's app-data folder) holding a managed git/folder share's clone. */
30
+ export declare const WORKSPACE_TREE_DIR = "tree";
31
+ /** Directory a clone is checked out into while `join` is still in progress, before it is renamed into place. */
32
+ export declare const WORKSPACE_JOINING_DIR = ".joining";
33
+ /** File name of the tree's own `.gitattributes`, written on share and on join if missing. */
34
+ export declare const GIT_ATTRIBUTES_FILE = ".gitattributes";
35
+ /**
36
+ * Contents of {@link GIT_ATTRIBUTES_FILE}: normalises line endings, and leaves bytes alone where
37
+ * they must stay exact — attachments, and the definition caches of interfaces and APIs, which keep
38
+ * each document as fetched (a WSDL's manifest records its SHA-256, so a CRLF definition normalised
39
+ * by git fails that check on the other side, which then re-fetches and rewrites the cache).
40
+ */
41
+ export declare const GIT_ATTRIBUTES = "* text=auto eol=lf\n*.yaml text\n*.xml text\n*.wsdl text\n*.xsd text\nprojects/*/attachments/** -text\nprojects/*/interfaces/*/definition/** -text\nprojects/*/apis/*/definition/** -text\n";
42
+ /** Absolute path of a workspace's own directory, given the app's user-data root and the workspace id. */
43
+ export declare function workspaceDir(userDataDir: string, workspaceId: string): string;
44
+ /** Absolute path of a workspace's manifest. */
45
+ export declare function workspaceManifestFile(dir: string): string;
46
+ /**
47
+ * Absolute path of a workspace environment file.
48
+ *
49
+ * @throws WorkspaceError `workspace-path-invalid` (via {@link assertPathSegment}) when `slug` is not a safe path segment.
50
+ */
51
+ export declare function workspaceEnvironmentFile(dir: string, slug: string): string;
52
+ /**
53
+ * Absolute path of an internal project's directory inside a workspace.
54
+ *
55
+ * @throws WorkspaceError `workspace-path-invalid` (via {@link assertPathSegment}) when `slug` is not a safe path segment.
56
+ */
57
+ export declare function workspaceProjectDir(dir: string, slug: string): string;
58
+ /**
59
+ * The root of a workspace's tree — where `workspace.yaml`, `environments/` and `projects/`
60
+ * actually live. For a `local` workspace (`share === undefined`) that is `dir` itself; for a
61
+ * shared workspace it is `share.path` when the tree lives outside `dir` (an external git clone
62
+ * or synced folder), or the managed `<dir>/tree` clone otherwise.
63
+ */
64
+ export declare function workspaceTreeDir(dir: string, share: WorkspaceShare | undefined): string;