@gitpod/gitpod-protocol 0.1.5-wth-test.41 → 0.1.5-wv-add-image-builds-to-dashboard.0

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 (431) hide show
  1. package/data/gitpod-schema.json +150 -8
  2. package/lib/accounting-protocol.d.ts +19 -11
  3. package/lib/accounting-protocol.d.ts.map +1 -1
  4. package/lib/accounting-protocol.js +35 -33
  5. package/lib/accounting-protocol.js.map +1 -1
  6. package/lib/admin-protocol.d.ts +29 -1
  7. package/lib/admin-protocol.d.ts.map +1 -1
  8. package/lib/admin-protocol.js +1 -1
  9. package/lib/admin-protocol.js.map +1 -1
  10. package/lib/analytics.d.ts +5 -6
  11. package/lib/analytics.d.ts.map +1 -1
  12. package/lib/analytics.js +1 -1
  13. package/lib/analytics.js.map +1 -1
  14. package/lib/attribution.d.ts +24 -0
  15. package/lib/attribution.d.ts.map +1 -0
  16. package/lib/attribution.js +54 -0
  17. package/lib/attribution.js.map +1 -0
  18. package/lib/auth.d.ts +1 -1
  19. package/lib/auth.d.ts.map +1 -1
  20. package/lib/auth.js +1 -1
  21. package/lib/billing-mode.d.ts +45 -0
  22. package/lib/billing-mode.d.ts.map +1 -0
  23. package/lib/billing-mode.js +44 -0
  24. package/lib/billing-mode.js.map +1 -0
  25. package/lib/blocked-repositories-protocol.d.ts +13 -0
  26. package/lib/blocked-repositories-protocol.d.ts.map +1 -0
  27. package/lib/blocked-repositories-protocol.js +8 -0
  28. package/lib/blocked-repositories-protocol.js.map +1 -0
  29. package/lib/context-url.d.ts +19 -7
  30. package/lib/context-url.d.ts.map +1 -1
  31. package/lib/context-url.js +60 -9
  32. package/lib/context-url.js.map +1 -1
  33. package/lib/context-url.spec.d.ts +3 -3
  34. package/lib/context-url.spec.d.ts.map +1 -1
  35. package/lib/context-url.spec.js +20 -12
  36. package/lib/context-url.spec.js.map +1 -1
  37. package/lib/encryption/container-module.d.ts +1 -1
  38. package/lib/encryption/container-module.d.ts.map +1 -1
  39. package/lib/encryption/container-module.js +2 -2
  40. package/lib/encryption/container-module.js.map +1 -1
  41. package/lib/encryption/encryption-engine.d.ts +1 -1
  42. package/lib/encryption/encryption-engine.d.ts.map +1 -1
  43. package/lib/encryption/encryption-engine.js +10 -10
  44. package/lib/encryption/encryption-engine.js.map +1 -1
  45. package/lib/encryption/encryption-engine.spec.d.ts +1 -1
  46. package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
  47. package/lib/encryption/encryption-engine.spec.js +3 -4
  48. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  49. package/lib/encryption/encryption-service.d.ts +1 -1
  50. package/lib/encryption/encryption-service.d.ts.map +1 -1
  51. package/lib/encryption/encryption-service.js +2 -2
  52. package/lib/encryption/encryption-service.js.map +1 -1
  53. package/lib/encryption/key-provider.d.ts +1 -1
  54. package/lib/encryption/key-provider.d.ts.map +1 -1
  55. package/lib/encryption/key-provider.js +8 -10
  56. package/lib/encryption/key-provider.js.map +1 -1
  57. package/lib/env.d.ts +1 -6
  58. package/lib/env.d.ts.map +1 -1
  59. package/lib/env.js +2 -21
  60. package/lib/env.js.map +1 -1
  61. package/lib/experiments/always-default.d.ts +8 -0
  62. package/lib/experiments/always-default.d.ts.map +1 -0
  63. package/lib/experiments/always-default.js +20 -0
  64. package/lib/experiments/always-default.js.map +1 -0
  65. package/lib/experiments/configcat-server.d.ts +10 -0
  66. package/lib/experiments/configcat-server.d.ts.map +1 -0
  67. package/lib/experiments/configcat-server.js +37 -0
  68. package/lib/experiments/configcat-server.js.map +1 -0
  69. package/lib/experiments/configcat.d.ts +21 -0
  70. package/lib/experiments/configcat.d.ts.map +1 -0
  71. package/lib/experiments/configcat.js +51 -0
  72. package/lib/experiments/configcat.js.map +1 -0
  73. package/lib/experiments/types.d.ts +22 -0
  74. package/lib/experiments/types.d.ts.map +1 -0
  75. package/lib/experiments/types.js +10 -0
  76. package/lib/experiments/types.js.map +1 -0
  77. package/lib/gitpod-file-parser.d.ts +1 -1
  78. package/lib/gitpod-file-parser.d.ts.map +1 -1
  79. package/lib/gitpod-file-parser.js +7 -7
  80. package/lib/gitpod-file-parser.js.map +1 -1
  81. package/lib/gitpod-file-parser.spec.d.ts +1 -1
  82. package/lib/gitpod-file-parser.spec.js +43 -40
  83. package/lib/gitpod-file-parser.spec.js.map +1 -1
  84. package/lib/gitpod-service.d.ts +93 -48
  85. package/lib/gitpod-service.d.ts.map +1 -1
  86. package/lib/gitpod-service.js +57 -36
  87. package/lib/gitpod-service.js.map +1 -1
  88. package/lib/headless-workspace-log.d.ts +2 -1
  89. package/lib/headless-workspace-log.d.ts.map +1 -1
  90. package/lib/headless-workspace-log.js +3 -2
  91. package/lib/headless-workspace-log.js.map +1 -1
  92. package/lib/ide-frontend-service.d.ts +2 -2
  93. package/lib/ide-frontend-service.js +1 -1
  94. package/lib/ide-protocol.d.ts +126 -0
  95. package/lib/ide-protocol.d.ts.map +1 -0
  96. package/lib/ide-protocol.js +18 -0
  97. package/lib/ide-protocol.js.map +1 -0
  98. package/lib/index.d.ts +17 -15
  99. package/lib/index.d.ts.map +1 -1
  100. package/lib/index.js +4 -2
  101. package/lib/index.js.map +1 -1
  102. package/lib/installation-admin-protocol.d.ts +30 -0
  103. package/lib/installation-admin-protocol.d.ts.map +1 -0
  104. package/lib/installation-admin-protocol.js +31 -0
  105. package/lib/installation-admin-protocol.js.map +1 -0
  106. package/lib/license-protocol.d.ts +8 -1
  107. package/lib/license-protocol.d.ts.map +1 -1
  108. package/lib/license-protocol.js +1 -1
  109. package/lib/license-protocol.js.map +1 -1
  110. package/lib/messaging/browser/connection.d.ts +1 -1
  111. package/lib/messaging/browser/connection.d.ts.map +1 -1
  112. package/lib/messaging/browser/connection.js +19 -19
  113. package/lib/messaging/browser/connection.js.map +1 -1
  114. package/lib/messaging/browser/window-connection.d.ts +5 -5
  115. package/lib/messaging/browser/window-connection.d.ts.map +1 -1
  116. package/lib/messaging/browser/window-connection.js +10 -7
  117. package/lib/messaging/browser/window-connection.js.map +1 -1
  118. package/lib/messaging/client-call-metrics.d.ts +5 -19
  119. package/lib/messaging/client-call-metrics.d.ts.map +1 -1
  120. package/lib/messaging/client-call-metrics.js +35 -23
  121. package/lib/messaging/client-call-metrics.js.map +1 -1
  122. package/lib/messaging/error.d.ts +11 -2
  123. package/lib/messaging/error.d.ts.map +1 -1
  124. package/lib/messaging/error.js +22 -4
  125. package/lib/messaging/error.js.map +1 -1
  126. package/lib/messaging/handler.d.ts.map +1 -1
  127. package/lib/messaging/handler.js +1 -1
  128. package/lib/messaging/node/connection.d.ts +1 -17
  129. package/lib/messaging/node/connection.d.ts.map +1 -1
  130. package/lib/messaging/node/connection.js +23 -59
  131. package/lib/messaging/node/connection.js.map +1 -1
  132. package/lib/messaging/proxy-factory.d.ts +1 -1
  133. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  134. package/lib/messaging/proxy-factory.js +7 -9
  135. package/lib/messaging/proxy-factory.js.map +1 -1
  136. package/lib/oss-allowlist.d.ts +14 -0
  137. package/lib/oss-allowlist.d.ts.map +1 -0
  138. package/lib/oss-allowlist.js +8 -0
  139. package/lib/oss-allowlist.js.map +1 -0
  140. package/lib/payment-protocol.d.ts +1 -1
  141. package/lib/payment-protocol.d.ts.map +1 -1
  142. package/lib/payment-protocol.js +2 -2
  143. package/lib/payment-protocol.js.map +1 -1
  144. package/lib/permission.d.ts +10 -4
  145. package/lib/permission.d.ts.map +1 -1
  146. package/lib/permission.js +35 -26
  147. package/lib/permission.js.map +1 -1
  148. package/lib/plans.d.ts +5 -4
  149. package/lib/plans.d.ts.map +1 -1
  150. package/lib/plans.js +211 -172
  151. package/lib/plans.js.map +1 -1
  152. package/lib/protocol.d.ts +192 -99
  153. package/lib/protocol.d.ts.map +1 -1
  154. package/lib/protocol.js +293 -105
  155. package/lib/protocol.js.map +1 -1
  156. package/lib/protocol.spec.d.ts +7 -0
  157. package/lib/protocol.spec.d.ts.map +1 -0
  158. package/lib/protocol.spec.js +127 -0
  159. package/lib/protocol.spec.js.map +1 -0
  160. package/lib/snapshot-url.d.ts +1 -1
  161. package/lib/snapshot-url.js +1 -1
  162. package/lib/snapshot-url.spec.d.ts +1 -1
  163. package/lib/snapshot-url.spec.js +1 -1
  164. package/lib/snapshot-url.spec.js.map +1 -1
  165. package/lib/team-subscription-protocol.d.ts +23 -4
  166. package/lib/team-subscription-protocol.d.ts.map +1 -1
  167. package/lib/team-subscription-protocol.js +21 -6
  168. package/lib/team-subscription-protocol.js.map +1 -1
  169. package/lib/teams-projects-protocol.d.ts +35 -5
  170. package/lib/teams-projects-protocol.d.ts.map +1 -1
  171. package/lib/teams-projects-protocol.js +9 -2
  172. package/lib/teams-projects-protocol.js.map +1 -1
  173. package/lib/typings/globals.d.ts +3 -3
  174. package/lib/typings/globals.d.ts.map +1 -1
  175. package/lib/typings/globals.js +1 -1
  176. package/lib/usage.d.ts +73 -0
  177. package/lib/usage.d.ts.map +1 -0
  178. package/lib/usage.js +20 -0
  179. package/lib/usage.js.map +1 -0
  180. package/lib/util/analytics.d.ts +1 -1
  181. package/lib/util/analytics.d.ts.map +1 -1
  182. package/lib/util/analytics.js +13 -4
  183. package/lib/util/analytics.js.map +1 -1
  184. package/lib/util/async-iterator.d.ts +1 -1
  185. package/lib/util/async-iterator.d.ts.map +1 -1
  186. package/lib/util/async-iterator.js +4 -4
  187. package/lib/util/async-iterator.js.map +1 -1
  188. package/lib/util/cancelable.d.ts +1 -1
  189. package/lib/util/cancelable.js +1 -1
  190. package/lib/util/cancelable.js.map +1 -1
  191. package/lib/util/date-time.d.ts +1 -1
  192. package/lib/util/date-time.js +7 -7
  193. package/lib/util/date-time.js.map +1 -1
  194. package/lib/util/debug-app.d.ts +25 -0
  195. package/lib/util/debug-app.d.ts.map +1 -0
  196. package/lib/util/debug-app.js +100 -0
  197. package/lib/util/debug-app.js.map +1 -0
  198. package/lib/util/deep-partial.d.ts +1 -1
  199. package/lib/util/deep-partial.js +1 -1
  200. package/lib/util/deferred.d.ts +1 -1
  201. package/lib/util/deferred.js +1 -1
  202. package/lib/util/deferred.js.map +1 -1
  203. package/lib/util/disposable.d.ts.map +1 -1
  204. package/lib/util/disposable.js +2 -2
  205. package/lib/util/disposable.js.map +1 -1
  206. package/lib/util/event.d.ts.map +1 -1
  207. package/lib/util/event.js +5 -3
  208. package/lib/util/event.js.map +1 -1
  209. package/lib/util/garbage-collected-cache.d.ts +2 -1
  210. package/lib/util/garbage-collected-cache.d.ts.map +1 -1
  211. package/lib/util/garbage-collected-cache.js +12 -3
  212. package/lib/util/garbage-collected-cache.js.map +1 -1
  213. package/lib/util/generate-workspace-id.d.ts +6 -1
  214. package/lib/util/generate-workspace-id.d.ts.map +1 -1
  215. package/lib/util/generate-workspace-id.js +461 -440
  216. package/lib/util/generate-workspace-id.js.map +1 -1
  217. package/lib/util/generate-workspace-id.spec.d.ts +1 -1
  218. package/lib/util/generate-workspace-id.spec.js +37 -2
  219. package/lib/util/generate-workspace-id.spec.js.map +1 -1
  220. package/lib/util/gitpod-cookie.d.ts +2 -2
  221. package/lib/util/gitpod-cookie.d.ts.map +1 -1
  222. package/lib/util/gitpod-cookie.js +1 -4
  223. package/lib/util/gitpod-cookie.js.map +1 -1
  224. package/lib/util/gitpod-host-url.d.ts +6 -2
  225. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  226. package/lib/util/gitpod-host-url.js +61 -37
  227. package/lib/util/gitpod-host-url.js.map +1 -1
  228. package/lib/util/gitpod-host-url.spec.d.ts +1 -1
  229. package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
  230. package/lib/util/gitpod-host-url.spec.js +16 -6
  231. package/lib/util/gitpod-host-url.spec.js.map +1 -1
  232. package/lib/util/grpc.d.ts +21 -1
  233. package/lib/util/grpc.d.ts.map +1 -1
  234. package/lib/util/grpc.js +74 -2
  235. package/lib/util/grpc.js.map +1 -1
  236. package/lib/util/jaeger-client-types.d.ts +68 -0
  237. package/lib/util/jaeger-client-types.d.ts.map +1 -0
  238. package/lib/{theia-plugins.js → util/jaeger-client-types.js} +2 -2
  239. package/lib/util/jaeger-client-types.js.map +1 -0
  240. package/lib/util/logging.d.ts +2 -2
  241. package/lib/util/logging.d.ts.map +1 -1
  242. package/lib/util/logging.js +32 -26
  243. package/lib/util/logging.js.map +1 -1
  244. package/lib/util/logging.spec.d.ts +7 -0
  245. package/lib/util/logging.spec.d.ts.map +1 -0
  246. package/lib/util/logging.spec.js +52 -0
  247. package/lib/util/logging.spec.js.map +1 -0
  248. package/lib/util/make-link.d.ts +1 -1
  249. package/lib/util/make-link.js +6 -6
  250. package/lib/util/make-link.js.map +1 -1
  251. package/lib/util/nice-grpc.d.ts +9 -0
  252. package/lib/util/nice-grpc.d.ts.map +1 -0
  253. package/lib/util/nice-grpc.js +121 -0
  254. package/lib/util/nice-grpc.js.map +1 -0
  255. package/lib/util/parse-workspace-id.d.ts +1 -1
  256. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  257. package/lib/util/parse-workspace-id.js +3 -4
  258. package/lib/util/parse-workspace-id.js.map +1 -1
  259. package/lib/util/parse-workspace-id.spec.d.ts +1 -1
  260. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  261. package/lib/util/parse-workspace-id.spec.js +1 -1
  262. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  263. package/lib/util/queue.d.ts +1 -1
  264. package/lib/util/queue.js +1 -1
  265. package/lib/util/queue.spec.d.ts +1 -1
  266. package/lib/util/queue.spec.js +10 -7
  267. package/lib/util/queue.spec.js.map +1 -1
  268. package/lib/util/repeat.d.ts +15 -0
  269. package/lib/util/repeat.d.ts.map +1 -0
  270. package/lib/util/repeat.js +55 -0
  271. package/lib/util/repeat.js.map +1 -0
  272. package/lib/util/semaphore.d.ts +1 -1
  273. package/lib/util/semaphore.d.ts.map +1 -1
  274. package/lib/util/semaphore.js +1 -1
  275. package/lib/util/semaphore.js.map +1 -1
  276. package/lib/util/skip-if.d.ts +1 -1
  277. package/lib/util/skip-if.d.ts.map +1 -1
  278. package/lib/util/skip-if.js +1 -1
  279. package/lib/util/skip-if.js.map +1 -1
  280. package/lib/util/timeutil.d.ts +3 -1
  281. package/lib/util/timeutil.d.ts.map +1 -1
  282. package/lib/util/timeutil.js +16 -4
  283. package/lib/util/timeutil.js.map +1 -1
  284. package/lib/util/timeutil.spec.d.ts +3 -1
  285. package/lib/util/timeutil.spec.d.ts.map +1 -1
  286. package/lib/util/timeutil.spec.js +35 -1
  287. package/lib/util/timeutil.spec.js.map +1 -1
  288. package/lib/util/tracing.d.ts +53 -7
  289. package/lib/util/tracing.d.ts.map +1 -1
  290. package/lib/util/tracing.js +157 -20
  291. package/lib/util/tracing.js.map +1 -1
  292. package/lib/util/tracing.spec.d.ts +7 -0
  293. package/lib/util/tracing.spec.d.ts.map +1 -0
  294. package/lib/util/tracing.spec.js +121 -0
  295. package/lib/util/tracing.spec.js.map +1 -0
  296. package/lib/util/workspace-port-authentication.d.ts +8 -8
  297. package/lib/util/workspace-port-authentication.d.ts.map +1 -1
  298. package/lib/util/workspace-port-authentication.js +9 -12
  299. package/lib/util/workspace-port-authentication.js.map +1 -1
  300. package/lib/webhook-event.d.ts +44 -0
  301. package/lib/webhook-event.d.ts.map +1 -0
  302. package/lib/webhook-event.js +8 -0
  303. package/lib/webhook-event.js.map +1 -0
  304. package/lib/workspace-class.d.ts +14 -0
  305. package/lib/workspace-class.d.ts.map +1 -0
  306. package/lib/workspace-class.js +8 -0
  307. package/lib/workspace-class.js.map +1 -0
  308. package/lib/workspace-cluster.d.ts +19 -18
  309. package/lib/workspace-cluster.d.ts.map +1 -1
  310. package/lib/workspace-cluster.js +17 -2
  311. package/lib/workspace-cluster.js.map +1 -1
  312. package/lib/workspace-instance.d.ts +41 -4
  313. package/lib/workspace-instance.d.ts.map +1 -1
  314. package/lib/workspace-instance.js +1 -1
  315. package/lib/wsready.d.ts +8 -2
  316. package/lib/wsready.d.ts.map +1 -1
  317. package/lib/wsready.js +3 -3
  318. package/package.json +18 -8
  319. package/pkg-yarn.lock +11 -6
  320. package/provenance-bundle.jsonl +2 -0
  321. package/src/accounting-protocol.ts +67 -52
  322. package/src/admin-protocol.ts +59 -19
  323. package/src/analytics.ts +27 -29
  324. package/src/attribution.ts +63 -0
  325. package/src/auth.ts +3 -3
  326. package/src/billing-mode.ts +84 -0
  327. package/src/blocked-repositories-protocol.ts +13 -0
  328. package/src/context-url.spec.ts +25 -15
  329. package/src/context-url.ts +93 -37
  330. package/src/encryption/container-module.ts +3 -4
  331. package/src/encryption/encryption-engine.spec.ts +10 -9
  332. package/src/encryption/encryption-engine.ts +21 -17
  333. package/src/encryption/encryption-service.ts +5 -6
  334. package/src/encryption/key-provider.ts +17 -20
  335. package/src/env.ts +2 -25
  336. package/src/experiments/always-default.ts +24 -0
  337. package/src/experiments/configcat-server.ts +42 -0
  338. package/src/experiments/configcat.ts +56 -0
  339. package/src/experiments/types.ts +34 -0
  340. package/src/gitpod-file-parser.spec.ts +56 -62
  341. package/src/gitpod-file-parser.ts +17 -18
  342. package/src/gitpod-service.ts +241 -134
  343. package/src/headless-workspace-log.ts +7 -5
  344. package/src/ide-frontend-service.ts +3 -3
  345. package/src/ide-protocol.ts +147 -0
  346. package/src/index.ts +17 -15
  347. package/src/installation-admin-protocol.ts +45 -0
  348. package/src/license-protocol.ts +13 -7
  349. package/src/messaging/browser/connection.ts +45 -47
  350. package/src/messaging/browser/window-connection.ts +40 -30
  351. package/src/messaging/client-call-metrics.ts +79 -82
  352. package/src/messaging/error.ts +33 -8
  353. package/src/messaging/handler.ts +6 -6
  354. package/src/messaging/node/connection.ts +23 -70
  355. package/src/messaging/proxy-factory.ts +23 -30
  356. package/src/oss-allowlist.ts +15 -0
  357. package/src/payment-protocol.ts +3 -3
  358. package/src/permission.ts +41 -33
  359. package/src/plans.ts +241 -190
  360. package/src/protocol.spec.ts +97 -0
  361. package/src/protocol.ts +557 -297
  362. package/src/snapshot-url.spec.ts +10 -8
  363. package/src/snapshot-url.ts +1 -1
  364. package/src/team-subscription-protocol.ts +60 -23
  365. package/src/teams-projects-protocol.ts +51 -12
  366. package/src/typings/globals.ts +5 -5
  367. package/src/usage.ts +85 -0
  368. package/src/util/analytics.ts +47 -25
  369. package/src/util/async-iterator.ts +5 -6
  370. package/src/util/cancelable.ts +4 -4
  371. package/src/util/date-time.ts +9 -9
  372. package/src/util/debug-app.ts +81 -0
  373. package/src/util/deep-partial.ts +1 -1
  374. package/src/util/deferred.ts +7 -7
  375. package/src/util/disposable.ts +3 -6
  376. package/src/util/event.ts +9 -11
  377. package/src/util/garbage-collected-cache.ts +15 -7
  378. package/src/util/generate-workspace-id.spec.ts +35 -8
  379. package/src/util/generate-workspace-id.ts +465 -441
  380. package/src/util/gitpod-cookie.ts +9 -10
  381. package/src/util/gitpod-host-url.spec.ts +41 -14
  382. package/src/util/gitpod-host-url.ts +70 -42
  383. package/src/util/grpc.ts +94 -2
  384. package/src/util/jaeger-client-types.ts +102 -0
  385. package/src/util/logging.spec.ts +23 -0
  386. package/src/util/logging.ts +61 -43
  387. package/src/util/make-link.ts +7 -8
  388. package/src/util/nice-grpc.ts +96 -0
  389. package/src/util/parse-workspace-id.spec.ts +18 -9
  390. package/src/util/parse-workspace-id.ts +7 -8
  391. package/src/util/queue.spec.ts +28 -26
  392. package/src/util/queue.ts +1 -1
  393. package/src/util/repeat.ts +45 -0
  394. package/src/util/semaphore.ts +5 -7
  395. package/src/util/skip-if.ts +10 -7
  396. package/src/util/timeutil.spec.ts +41 -15
  397. package/src/util/timeutil.ts +28 -12
  398. package/src/util/tracing.spec.ts +88 -0
  399. package/src/util/tracing.ts +201 -32
  400. package/src/util/workspace-port-authentication.ts +11 -14
  401. package/src/webhook-event.ts +55 -0
  402. package/src/workspace-class.ts +14 -0
  403. package/src/workspace-cluster.ts +35 -21
  404. package/src/workspace-instance.ts +83 -21
  405. package/src/wsready.ts +11 -4
  406. package/data/builtin-theia-plugins.json +0 -372
  407. package/lib/email-protocol.d.ts +0 -49
  408. package/lib/email-protocol.d.ts.map +0 -1
  409. package/lib/email-protocol.js +0 -28
  410. package/lib/email-protocol.js.map +0 -1
  411. package/lib/messaging/connection-error-handler.d.ts +0 -27
  412. package/lib/messaging/connection-error-handler.d.ts.map +0 -1
  413. package/lib/messaging/connection-error-handler.js +0 -34
  414. package/lib/messaging/connection-error-handler.js.map +0 -1
  415. package/lib/theia-plugins.d.ts +0 -11
  416. package/lib/theia-plugins.d.ts.map +0 -1
  417. package/lib/theia-plugins.js.map +0 -1
  418. package/lib/util/repeater.d.ts +0 -22
  419. package/lib/util/repeater.d.ts.map +0 -1
  420. package/lib/util/repeater.js +0 -65
  421. package/lib/util/repeater.js.map +0 -1
  422. package/lib/util/safe-promise.d.ts +0 -11
  423. package/lib/util/safe-promise.d.ts.map +0 -1
  424. package/lib/util/safe-promise.js +0 -31
  425. package/lib/util/safe-promise.js.map +0 -1
  426. package/src/email-protocol.ts +0 -66
  427. package/src/messaging/connection-error-handler.ts +0 -62
  428. package/src/theia-plugins.ts +0 -11
  429. package/src/util/jaeger-client.d.ts +0 -105
  430. package/src/util/repeater.ts +0 -49
  431. package/src/util/safe-promise.ts +0 -26
@@ -1,34 +1,67 @@
1
1
  /**
2
2
  * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  import {
8
- User, WorkspaceInfo, WorkspaceCreationResult, WorkspaceInstanceUser,
9
- WhitelistedRepository, WorkspaceImageBuild, AuthProviderInfo, Branding, CreateWorkspaceMode,
10
- Token, UserEnvVarValue, ResolvePluginsParams, PreparePluginUploadParams, Terms,
11
- ResolvedPlugins, Configuration, InstallPluginsParams, UninstallPluginParams, UserInfo, GitpodTokenType,
12
- GitpodToken, AuthProviderEntry, GuessGitTokenScopesParams, GuessedGitTokenScopes
13
- } from './protocol';
8
+ User,
9
+ WorkspaceInfo,
10
+ WorkspaceCreationResult,
11
+ WorkspaceInstanceUser,
12
+ WhitelistedRepository,
13
+ WorkspaceImageBuild,
14
+ AuthProviderInfo,
15
+ Token,
16
+ UserEnvVarValue,
17
+ Terms,
18
+ Configuration,
19
+ UserInfo,
20
+ GitpodTokenType,
21
+ GitpodToken,
22
+ AuthProviderEntry,
23
+ GuessGitTokenScopesParams,
24
+ GuessedGitTokenScopes,
25
+ ProjectEnvVar,
26
+ PrebuiltWorkspace,
27
+ UserSSHPublicKeyValue,
28
+ SSHPublicKeyValue,
29
+ IDESettings,
30
+ } from "./protocol";
14
31
  import {
15
- Team, TeamMemberInfo,
16
- TeamMembershipInvite, Project, TeamMemberRole, PrebuildWithStatus, StartPrebuildResult
17
- } from './teams-projects-protocol';
18
- import { JsonRpcProxy, JsonRpcServer } from './messaging/proxy-factory';
19
- import { Disposable, CancellationTokenSource } from 'vscode-jsonrpc';
20
- import { HeadlessLogUrls } from './headless-workspace-log';
21
- import { WorkspaceInstance, WorkspaceInstancePort, WorkspaceInstancePhase } from './workspace-instance';
22
- import { AdminServer } from './admin-protocol';
23
- import { GitpodHostUrl } from './util/gitpod-host-url';
24
- import { WebSocketConnectionProvider } from './messaging/browser/connection';
25
- import { PermissionName } from './permission';
26
- import { LicenseService } from './license-protocol';
27
- import { Emitter } from './util/event';
28
- import { AccountStatement, CreditAlert } from './accounting-protocol';
29
- import { GithubUpgradeURL, PlanCoupon } from './payment-protocol';
30
- import { TeamSubscription, TeamSubscriptionSlot, TeamSubscriptionSlotResolved } from './team-subscription-protocol';
31
- import { RemotePageMessage, RemoteTrackMessage, RemoteIdentifyMessage } from './analytics';
32
+ Team,
33
+ TeamMemberInfo,
34
+ TeamMembershipInvite,
35
+ Project,
36
+ TeamMemberRole,
37
+ PrebuildWithStatus,
38
+ StartPrebuildResult,
39
+ PartialProject,
40
+ PrebuildEvent,
41
+ } from "./teams-projects-protocol";
42
+ import { JsonRpcProxy, JsonRpcServer } from "./messaging/proxy-factory";
43
+ import { Disposable, CancellationTokenSource } from "vscode-jsonrpc";
44
+ import { HeadlessLogUrls } from "./headless-workspace-log";
45
+ import { WorkspaceInstance, WorkspaceInstancePort, WorkspaceInstancePhase } from "./workspace-instance";
46
+ import { AdminServer } from "./admin-protocol";
47
+ import { GitpodHostUrl } from "./util/gitpod-host-url";
48
+ import { WebSocketConnectionProvider } from "./messaging/browser/connection";
49
+ import { PermissionName } from "./permission";
50
+ import { LicenseService } from "./license-protocol";
51
+ import { Emitter } from "./util/event";
52
+ import { AccountStatement, CreditAlert } from "./accounting-protocol";
53
+ import { GithubUpgradeURL, PlanCoupon } from "./payment-protocol";
54
+ import {
55
+ TeamSubscription,
56
+ TeamSubscription2,
57
+ TeamSubscriptionSlot,
58
+ TeamSubscriptionSlotResolved,
59
+ } from "./team-subscription-protocol";
60
+ import { RemotePageMessage, RemoteTrackMessage, RemoteIdentifyMessage } from "./analytics";
61
+ import { IDEServer } from "./ide-protocol";
62
+ import { ListUsageRequest, ListUsageResponse, CostCenterJSON } from "./usage";
63
+ import { SupportedWorkspaceClass } from "./workspace-class";
64
+ import { BillingMode } from "./billing-mode";
32
65
 
33
66
  export interface GitpodClient {
34
67
  onInstanceUpdate(instance: WorkspaceInstance): void;
@@ -36,6 +69,8 @@ export interface GitpodClient {
36
69
 
37
70
  onPrebuildUpdate(update: PrebuildWithStatus): void;
38
71
 
72
+ onNotificationUpdated(): void;
73
+
39
74
  onCreditAlert(creditAlert: CreditAlert): void;
40
75
 
41
76
  //#region propagating reconnection to iframe
@@ -44,17 +79,18 @@ export interface GitpodClient {
44
79
  //#endregion
45
80
  }
46
81
 
47
- export const GitpodServer = Symbol('GitpodServer');
48
- export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer, LicenseService {
82
+ export const GitpodServer = Symbol("GitpodServer");
83
+ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer, LicenseService, IDEServer {
49
84
  // User related API
50
85
  getLoggedInUser(): Promise<User>;
51
86
  getTerms(): Promise<Terms>;
52
87
  updateLoggedInUser(user: Partial<User>): Promise<User>;
88
+ sendPhoneNumberVerificationToken(phoneNumber: string): Promise<void>;
89
+ verifyPhoneNumberVerificationToken(phoneNumber: string, token: string): Promise<boolean>;
53
90
  getAuthProviders(): Promise<AuthProviderInfo[]>;
54
91
  getOwnAuthProviders(): Promise<AuthProviderEntry[]>;
55
92
  updateOwnAuthProvider(params: GitpodServer.UpdateOwnAuthProviderParams): Promise<AuthProviderEntry>;
56
93
  deleteOwnAuthProvider(params: GitpodServer.DeleteOwnAuthProviderParams): Promise<void>;
57
- getBranding(): Promise<Branding>;
58
94
  getConfiguration(): Promise<Configuration>;
59
95
  getToken(query: GitpodServer.GetTokenSearchOptions): Promise<Token | undefined>;
60
96
  getGitpodTokenScopes(tokenHash: string): Promise<string[]>;
@@ -71,8 +107,15 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
71
107
  getWorkspaceOwner(workspaceId: string): Promise<UserInfo | undefined>;
72
108
  getWorkspaceUsers(workspaceId: string): Promise<WorkspaceInstanceUser[]>;
73
109
  getFeaturedRepositories(): Promise<WhitelistedRepository[]>;
110
+ getSuggestedContextURLs(): Promise<string[]>;
111
+ /**
112
+ * **Security:**
113
+ * Sensitive information like an owner token is erased, since it allows access for all team members.
114
+ * If you need to access an owner token use `getOwnerToken` instead.
115
+ */
74
116
  getWorkspace(id: string): Promise<WorkspaceInfo>;
75
117
  isWorkspaceOwner(workspaceId: string): Promise<boolean>;
118
+ getOwnerToken(workspaceId: string): Promise<string>;
76
119
 
77
120
  /**
78
121
  * Creates and starts a workspace for the given context URL.
@@ -114,7 +157,14 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
114
157
  setEnvVar(variable: UserEnvVarValue): Promise<void>;
115
158
  deleteEnvVar(variable: UserEnvVarValue): Promise<void>;
116
159
 
160
+ // User SSH Keys
161
+ hasSSHPublicKey(): Promise<boolean>;
162
+ getSSHPublicKeys(): Promise<UserSSHPublicKeyValue[]>;
163
+ addSSHPublicKey(value: SSHPublicKeyValue): Promise<UserSSHPublicKeyValue>;
164
+ deleteSSHPublicKey(id: string): Promise<void>;
165
+
117
166
  // Teams
167
+ getTeam(teamId: string): Promise<Team>;
118
168
  getTeams(): Promise<Team[]>;
119
169
  getTeamMembers(teamId: string): Promise<TeamMemberInfo[]>;
120
170
  createTeam(name: string): Promise<Team>;
@@ -123,7 +173,7 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
123
173
  removeTeamMember(teamId: string, userId: string): Promise<void>;
124
174
  getGenericInvite(teamId: string): Promise<TeamMembershipInvite>;
125
175
  resetGenericInvite(inviteId: string): Promise<TeamMembershipInvite>;
126
- deleteTeam(teamId: string, userId: string): Promise<void>;
176
+ deleteTeam(teamId: string): Promise<void>;
127
177
 
128
178
  // Projects
129
179
  getProviderRepositoriesForUser(params: GetProviderRepositoriesParams): Promise<ProviderRepository[]>;
@@ -132,16 +182,20 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
132
182
  getTeamProjects(teamId: string): Promise<Project[]>;
133
183
  getUserProjects(): Promise<Project[]>;
134
184
  getProjectOverview(projectId: string): Promise<Project.Overview | undefined>;
185
+ getPrebuildEvents(projectId: string): Promise<PrebuildEvent[]>;
135
186
  findPrebuilds(params: FindPrebuildsParams): Promise<PrebuildWithStatus[]>;
187
+ findPrebuildByWorkspaceID(workspaceId: string): Promise<PrebuiltWorkspace | undefined>;
188
+ getPrebuild(prebuildId: string): Promise<PrebuildWithStatus | undefined>;
136
189
  triggerPrebuild(projectId: string, branchName: string | null): Promise<StartPrebuildResult>;
137
190
  cancelPrebuild(projectId: string, prebuildId: string): Promise<void>;
138
- setProjectConfiguration(projectId: string, configString: string): Promise<void>;
139
- fetchProjectRepositoryConfiguration(projectId: string): Promise<string | undefined>;
140
- guessProjectConfiguration(projectId: string): Promise<string | undefined>;
191
+ updateProjectPartial(partialProject: PartialProject): Promise<void>;
192
+ setProjectEnvironmentVariable(projectId: string, name: string, value: string, censored: boolean): Promise<void>;
193
+ getProjectEnvironmentVariables(projectId: string): Promise<ProjectEnvVar[]>;
194
+ deleteProjectEnvironmentVariable(variableId: string): Promise<void>;
141
195
 
142
196
  // content service
143
- getContentBlobUploadUrl(name: string): Promise<string>
144
- getContentBlobDownloadUrl(name: string): Promise<string>
197
+ getContentBlobUploadUrl(name: string): Promise<string>;
198
+ getContentBlobDownloadUrl(name: string): Promise<string>;
145
199
 
146
200
  // Gitpod token
147
201
  getGitpodTokens(): Promise<GitpodToken[]>;
@@ -149,7 +203,7 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
149
203
  deleteGitpodToken(tokenHash: string): Promise<void>;
150
204
 
151
205
  // misc
152
- sendFeedback(feedback: string): Promise<string | undefined>;
206
+ isGitHubAppEnabled(): Promise<boolean>;
153
207
  registerGithubApp(installationId: string): Promise<void>;
154
208
 
155
209
  /**
@@ -168,25 +222,6 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
168
222
  */
169
223
  getSnapshots(workspaceID: string): Promise<string[]>;
170
224
 
171
- /**
172
- * stores/updates layout information for the given workspace
173
- */
174
- storeLayout(workspaceId: string, layoutData: string): Promise<void>;
175
-
176
- /**
177
- * retrieves layout information for the given workspace
178
- */
179
- getLayout(workspaceId: string): Promise<string | undefined>;
180
-
181
- /**
182
- * @param params
183
- * @returns promise resolves to an URL to be used for the upload
184
- */
185
- preparePluginUpload(params: PreparePluginUploadParams): Promise<string>
186
- resolvePlugins(workspaceId: string, params: ResolvePluginsParams): Promise<ResolvedPlugins>;
187
- installUserPlugins(params: InstallPluginsParams): Promise<boolean>;
188
- uninstallUserPlugin(params: UninstallPluginParams): Promise<boolean>;
189
-
190
225
  guessGitTokenScopes(params: GuessGitTokenScopesParams): Promise<GuessedGitTokenScopes>;
191
226
 
192
227
  /**
@@ -204,7 +239,9 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
204
239
  */
205
240
  getChargebeeSiteId(): Promise<string>;
206
241
  createPortalSession(): Promise<{}>;
242
+ createTeamPortalSession(teamId: string): Promise<{}>;
207
243
  checkout(planId: string, planQuantity?: number): Promise<{}>;
244
+ teamCheckout(teamId: string, planId: string): Promise<{}>;
208
245
  getAvailableCoupons(): Promise<PlanCoupon[]>;
209
246
  getAppliedCoupons(): Promise<PlanCoupon[]>;
210
247
 
@@ -216,30 +253,68 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
216
253
  subscriptionCancel(subscriptionId: string): Promise<void>;
217
254
  subscriptionCancelDowngrade(subscriptionId: string): Promise<void>;
218
255
 
256
+ getTeamSubscription(teamId: string): Promise<TeamSubscription2 | undefined>;
219
257
  tsGet(): Promise<TeamSubscription[]>;
220
258
  tsGetSlots(): Promise<TeamSubscriptionSlotResolved[]>;
221
- tsGetUnassignedSlot(teamSubscriptionId: string): Promise<TeamSubscriptionSlot | undefined>
259
+ tsGetUnassignedSlot(teamSubscriptionId: string): Promise<TeamSubscriptionSlot | undefined>;
222
260
  tsAddSlots(teamSubscriptionId: string, quantity: number): Promise<void>;
223
- tsAssignSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string, identityStr: string | undefined): Promise<void>
261
+ tsAssignSlot(
262
+ teamSubscriptionId: string,
263
+ teamSubscriptionSlotId: string,
264
+ identityStr: string | undefined,
265
+ ): Promise<void>;
224
266
  tsReassignSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string, newIdentityStr: string): Promise<void>;
225
267
  tsDeactivateSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string): Promise<void>;
226
268
  tsReactivateSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string): Promise<void>;
227
269
 
228
270
  getGithubUpgradeUrls(): Promise<GithubUpgradeURL[]>;
229
271
 
272
+ getStripePublishableKey(): Promise<string>;
273
+ getStripeSetupIntentClientSecret(): Promise<string>;
274
+ findStripeSubscriptionId(attributionId: string): Promise<string | undefined>;
275
+ createStripeCustomerIfNeeded(attributionId: string, currency: string): Promise<void>;
276
+ subscribeToStripe(attributionId: string, setupIntentId: string, usageLimit: number): Promise<number | undefined>;
277
+ getStripePortalUrl(attributionId: string): Promise<string>;
278
+ getCostCenter(attributionId: string): Promise<CostCenterJSON | undefined>;
279
+ setUsageLimit(attributionId: string, usageLimit: number): Promise<void>;
280
+ getUsageBalance(attributionId: string): Promise<number>;
281
+
282
+ listUsage(req: ListUsageRequest): Promise<ListUsageResponse>;
283
+
284
+ setUsageAttribution(usageAttribution: string): Promise<void>;
285
+ listAvailableUsageAttributionIds(): Promise<string[]>;
286
+
287
+ getBillingModeForUser(): Promise<BillingMode>;
288
+ getBillingModeForTeam(teamId: string): Promise<BillingMode>;
289
+
230
290
  /**
231
291
  * Analytics
232
292
  */
233
293
  trackEvent(event: RemoteTrackMessage): Promise<void>;
234
294
  trackLocation(event: RemotePageMessage): Promise<void>;
235
295
  identifyUser(event: RemoteIdentifyMessage): Promise<void>;
296
+
297
+ /**
298
+ * Frontend notifications
299
+ */
300
+ getNotifications(): Promise<string[]>;
301
+
302
+ getSupportedWorkspaceClasses(): Promise<SupportedWorkspaceClass[]>;
303
+ }
304
+
305
+ export interface RateLimiterError {
306
+ method?: string;
307
+
308
+ /**
309
+ * Retry after this many seconds, earliest.
310
+ * cmp.: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After
311
+ */
312
+ retryAfter: number;
236
313
  }
237
314
 
238
315
  export interface CreateProjectParams {
239
316
  name: string;
240
- slug?: string;
241
- account: string;
242
- provider: string;
317
+ slug: string;
243
318
  cloneUrl: string;
244
319
  teamId?: string;
245
320
  userId?: string;
@@ -263,11 +338,11 @@ export interface ProviderRepository {
263
338
  account: string;
264
339
  accountAvatarUrl: string;
265
340
  cloneUrl: string;
266
- updatedAt: string;
341
+ updatedAt?: string;
267
342
  installationId?: number;
268
343
  installationUpdatedAt?: string;
269
344
 
270
- inUse?: boolean;
345
+ inUse?: { userName: string };
271
346
  }
272
347
 
273
348
  export interface ClientHeaderFields {
@@ -277,42 +352,56 @@ export interface ClientHeaderFields {
277
352
  clientRegion?: string;
278
353
  }
279
354
 
280
- export const WorkspaceTimeoutValues = ["30m", "60m", "180m"] as const;
281
-
282
- export const createServiceMock = function <C extends GitpodClient, S extends GitpodServer>(methods: Partial<JsonRpcProxy<S>>): GitpodServiceImpl<C, S> {
355
+ export const WORKSPACE_TIMEOUT_DEFAULT_SHORT = "short";
356
+ export const WORKSPACE_TIMEOUT_DEFAULT_LONG = "long";
357
+ export const WORKSPACE_TIMEOUT_EXTENDED = "extended";
358
+ export const WORKSPACE_TIMEOUT_EXTENDED_ALT = "180m"; // for backwards compatibility since the IDE uses this
359
+ export const WorkspaceTimeoutValues = [
360
+ WORKSPACE_TIMEOUT_DEFAULT_SHORT,
361
+ WORKSPACE_TIMEOUT_DEFAULT_LONG,
362
+ WORKSPACE_TIMEOUT_EXTENDED,
363
+ WORKSPACE_TIMEOUT_EXTENDED_ALT,
364
+ ] as const;
365
+
366
+ export const createServiceMock = function <C extends GitpodClient, S extends GitpodServer>(
367
+ methods: Partial<JsonRpcProxy<S>>,
368
+ ): GitpodServiceImpl<C, S> {
283
369
  return new GitpodServiceImpl<C, S>(createServerMock(methods));
284
- }
370
+ };
285
371
 
286
- export const createServerMock = function <C extends GitpodClient, S extends GitpodServer>(methods: Partial<JsonRpcProxy<S>>): JsonRpcProxy<S> {
287
- methods.setClient = methods.setClient || (() => { });
288
- methods.dispose = methods.dispose || (() => { });
372
+ export const createServerMock = function <C extends GitpodClient, S extends GitpodServer>(
373
+ methods: Partial<JsonRpcProxy<S>>,
374
+ ): JsonRpcProxy<S> {
375
+ methods.setClient = methods.setClient || (() => {});
376
+ methods.dispose = methods.dispose || (() => {});
289
377
  return new Proxy<JsonRpcProxy<S>>(methods as any as JsonRpcProxy<S>, {
290
378
  // @ts-ignore
291
379
  get: (target: S, property: keyof S) => {
292
380
  const result = target[property];
293
381
  if (!result) {
294
- throw new Error(`Method ${property} not implemented`);
382
+ throw new Error(`Method ${String(property)} not implemented`);
295
383
  }
296
384
  return result;
297
- }
385
+ },
298
386
  });
299
- }
387
+ };
300
388
 
301
389
  type WorkspaceTimeoutDurationTuple = typeof WorkspaceTimeoutValues;
302
390
  export type WorkspaceTimeoutDuration = WorkspaceTimeoutDurationTuple[number];
303
391
 
304
392
  export interface SetWorkspaceTimeoutResult {
305
- resetTimeoutOnWorkspaces: string[]
393
+ resetTimeoutOnWorkspaces: string[];
306
394
  }
307
395
 
308
396
  export interface GetWorkspaceTimeoutResult {
309
- duration: WorkspaceTimeoutDuration
310
- canChange: boolean
397
+ duration: WorkspaceTimeoutDuration;
398
+ durationRaw: string;
399
+ canChange: boolean;
311
400
  }
312
401
 
313
402
  export interface StartWorkspaceResult {
314
- instanceID: string
315
- workspaceURL?: string
403
+ instanceID: string;
404
+ workspaceURL?: string;
316
405
  }
317
406
 
318
407
  export namespace GitpodServer {
@@ -326,17 +415,23 @@ export namespace GitpodServer {
326
415
  export interface GetAccountStatementOptions {
327
416
  date?: string;
328
417
  }
329
- export interface CreateWorkspaceOptions {
418
+ export interface CreateWorkspaceOptions extends StartWorkspaceOptions {
330
419
  contextUrl: string;
331
- mode?: CreateWorkspaceMode;
420
+
421
+ // whether running workspaces on the same context should be ignored. If false (default) users will be asked.
422
+ ignoreRunningWorkspaceOnSameCommit?: boolean;
423
+ ignoreRunningPrebuild?: boolean;
424
+ allowUsingPreviousPrebuilds?: boolean;
332
425
  forceDefaultConfig?: boolean;
333
426
  }
427
+
334
428
  export interface StartWorkspaceOptions {
335
- forceDefaultImage: boolean;
429
+ forceDefaultImage?: boolean;
430
+ workspaceClass?: string;
431
+ ideSettings?: IDESettings;
336
432
  }
337
433
  export interface TakeSnapshotOptions {
338
434
  workspaceId: string;
339
- layoutData?: string;
340
435
  /* this is here to enable backwards-compatibility and untangling rollout between workspace, IDE and meta */
341
436
  dontWait?: boolean;
342
437
  }
@@ -356,23 +451,23 @@ export namespace GitpodServer {
356
451
  readonly roundTripTime?: number;
357
452
  }
358
453
  export interface UpdateOwnAuthProviderParams {
359
- readonly entry: AuthProviderEntry.UpdateEntry | AuthProviderEntry.NewEntry
454
+ readonly entry: AuthProviderEntry.UpdateEntry | AuthProviderEntry.NewEntry;
360
455
  }
361
456
  export interface DeleteOwnAuthProviderParams {
362
- readonly id: string
457
+ readonly id: string;
363
458
  }
364
459
  export type AdmissionLevel = "owner" | "everyone";
365
460
  export type PinAction = "pin" | "unpin" | "toggle";
366
461
  export interface GenerateNewGitpodTokenOptions {
367
- name?: string
368
- type: GitpodTokenType
369
- scopes?: string[]
462
+ name?: string;
463
+ type: GitpodTokenType;
464
+ scopes?: string[];
370
465
  }
371
466
  }
372
467
 
373
- export const GitpodServerPath = '/gitpod';
468
+ export const GitpodServerPath = "/gitpod";
374
469
 
375
- export const GitpodServerProxy = Symbol('GitpodServerProxy');
470
+ export const GitpodServerProxy = Symbol("GitpodServerProxy");
376
471
  export type GitpodServerProxy<S extends GitpodServer> = JsonRpcProxy<S>;
377
472
 
378
473
  export class GitpodCompositeClient<Client extends GitpodClient> implements GitpodClient {
@@ -380,12 +475,14 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
380
475
 
381
476
  public registerClient(client: Partial<Client>): Disposable {
382
477
  this.clients.push(client);
383
- const index = this.clients.length;
384
478
  return {
385
479
  dispose: () => {
386
- this.clients.slice(index, 1);
387
- }
388
- }
480
+ const index = this.clients.indexOf(client);
481
+ if (index > -1) {
482
+ this.clients.splice(index, 1);
483
+ }
484
+ },
485
+ };
389
486
  }
390
487
 
391
488
  onInstanceUpdate(instance: WorkspaceInstance): void {
@@ -394,7 +491,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
394
491
  try {
395
492
  client.onInstanceUpdate(instance);
396
493
  } catch (error) {
397
- console.error(error)
494
+ console.error(error);
398
495
  }
399
496
  }
400
497
  }
@@ -406,19 +503,22 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
406
503
  try {
407
504
  client.onPrebuildUpdate(update);
408
505
  } catch (error) {
409
- console.error(error)
506
+ console.error(error);
410
507
  }
411
508
  }
412
509
  }
413
510
  }
414
511
 
415
- onWorkspaceImageBuildLogs(info: WorkspaceImageBuild.StateInfo, content: WorkspaceImageBuild.LogContent | undefined): void {
512
+ onWorkspaceImageBuildLogs(
513
+ info: WorkspaceImageBuild.StateInfo,
514
+ content: WorkspaceImageBuild.LogContent | undefined,
515
+ ): void {
416
516
  for (const client of this.clients) {
417
517
  if (client.onWorkspaceImageBuildLogs) {
418
518
  try {
419
519
  client.onWorkspaceImageBuildLogs(info, content);
420
520
  } catch (error) {
421
- console.error(error)
521
+ console.error(error);
422
522
  }
423
523
  }
424
524
  }
@@ -430,7 +530,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
430
530
  try {
431
531
  client.notifyDidOpenConnection();
432
532
  } catch (error) {
433
- console.error(error)
533
+ console.error(error);
434
534
  }
435
535
  }
436
536
  }
@@ -442,7 +542,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
442
542
  try {
443
543
  client.notifyDidCloseConnection();
444
544
  } catch (error) {
445
- console.error(error)
545
+ console.error(error);
446
546
  }
447
547
  }
448
548
  }
@@ -454,64 +554,73 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
454
554
  try {
455
555
  client.onCreditAlert(creditAlert);
456
556
  } catch (error) {
457
- console.error(error)
557
+ console.error(error);
458
558
  }
459
559
  }
460
560
  }
461
561
  }
462
562
 
563
+ onNotificationUpdated(): void {
564
+ for (const client of this.clients) {
565
+ if (client.onNotificationUpdated) {
566
+ try {
567
+ client.onNotificationUpdated();
568
+ } catch (error) {
569
+ console.error(error);
570
+ }
571
+ }
572
+ }
573
+ }
463
574
  }
464
575
 
465
576
  export type GitpodService = GitpodServiceImpl<GitpodClient, GitpodServer>;
466
577
 
467
- const hasWindow = (typeof window !== 'undefined');
578
+ const hasWindow = typeof window !== "undefined";
468
579
  const phasesOrder: Record<WorkspaceInstancePhase, number> = {
469
580
  unknown: 0,
470
581
  preparing: 1,
471
- pending: 2,
472
- creating: 3,
473
- initializing: 4,
474
- running: 5,
475
- interrupted: 6,
476
- stopping: 7,
477
- stopped: 8
582
+ building: 2,
583
+ pending: 3,
584
+ creating: 4,
585
+ initializing: 5,
586
+ running: 6,
587
+ interrupted: 7,
588
+ stopping: 8,
589
+ stopped: 9,
478
590
  };
479
591
  export class WorkspaceInstanceUpdateListener {
480
592
  private readonly onDidChangeEmitter = new Emitter<void>();
481
593
  readonly onDidChange = this.onDidChangeEmitter.event;
482
594
 
483
- private source: 'sync' | 'update' = 'sync';
595
+ private source: "sync" | "update" = "sync";
484
596
 
485
597
  get info(): WorkspaceInfo {
486
598
  return this._info;
487
599
  }
488
600
 
489
- constructor(
490
- private readonly service: GitpodService,
491
- private _info: WorkspaceInfo
492
- ) {
601
+ constructor(private readonly service: GitpodService, private _info: WorkspaceInfo) {
493
602
  service.registerClient({
494
- onInstanceUpdate: instance => {
603
+ onInstanceUpdate: (instance) => {
495
604
  if (this.isOutOfOrder(instance)) {
496
605
  return;
497
606
  }
498
607
  this.cancelSync();
499
608
  this._info.latestInstance = instance;
500
- this.source = 'update';
609
+ this.source = "update";
501
610
  this.onDidChangeEmitter.fire(undefined);
502
611
  },
503
612
  notifyDidOpenConnection: () => {
504
613
  this.sync();
505
- }
614
+ },
506
615
  });
507
616
  if (hasWindow) {
508
617
  // learn about page lifecycle here: https://developers.google.com/web/updates/2018/07/page-lifecycle-api
509
- window.document.addEventListener('visibilitychange', async () => {
510
- if (window.document.visibilityState === 'visible') {
618
+ window.document.addEventListener("visibilitychange", async () => {
619
+ if (window.document.visibilityState === "visible") {
511
620
  this.sync();
512
621
  }
513
622
  });
514
- window.addEventListener('pageshow', e => {
623
+ window.addEventListener("pageshow", (e) => {
515
624
  if (e.persisted) {
516
625
  this.sync();
517
626
  }
@@ -539,12 +648,12 @@ export class WorkspaceInstanceUpdateListener {
539
648
  return;
540
649
  }
541
650
  this._info = info;
542
- this.source = 'sync';
651
+ this.source = "sync";
543
652
  this.onDidChangeEmitter.fire(undefined);
544
653
  } catch (e) {
545
- console.error('failed to sync workspace instance:', e)
654
+ console.error("failed to sync workspace instance:", e);
546
655
  }
547
- })
656
+ });
548
657
  }
549
658
  private cancelSync(): void {
550
659
  if (this.syncTokenSource) {
@@ -561,7 +670,7 @@ export class WorkspaceInstanceUpdateListener {
561
670
  if (instance.workspaceId !== this._info.workspace.id) {
562
671
  return true;
563
672
  }
564
- if (this.source === 'update') {
673
+ if (this.source === "update") {
565
674
  return false;
566
675
  }
567
676
  if (instance.id !== this.info.latestInstance?.id) {
@@ -569,15 +678,13 @@ export class WorkspaceInstanceUpdateListener {
569
678
  }
570
679
  return phasesOrder[instance.status.phase] < phasesOrder[this.info.latestInstance.status.phase];
571
680
  }
572
-
573
681
  }
574
682
 
575
683
  export interface GitpodServiceOptions {
576
- onReconnect?: () => (void | Promise<void>)
684
+ onReconnect?: () => void | Promise<void>;
577
685
  }
578
686
 
579
687
  export class GitpodServiceImpl<Client extends GitpodClient, Server extends GitpodServer> {
580
-
581
688
  private readonly compositeClient = new GitpodCompositeClient<Client>();
582
689
 
583
690
  constructor(public readonly server: JsonRpcProxy<Server>, private options?: GitpodServiceOptions) {
@@ -592,7 +699,8 @@ export class GitpodServiceImpl<Client extends GitpodClient, Server extends Gitpo
592
699
 
593
700
  private readonly instanceListeners = new Map<string, Promise<WorkspaceInstanceUpdateListener>>();
594
701
  listenToInstance(workspaceId: string): Promise<WorkspaceInstanceUpdateListener> {
595
- const listener = this.instanceListeners.get(workspaceId) ||
702
+ const listener =
703
+ this.instanceListeners.get(workspaceId) ||
596
704
  (async () => {
597
705
  const info = await this.server.getWorkspace(workspaceId);
598
706
  return new WorkspaceInstanceUpdateListener(this, info);
@@ -608,26 +716,25 @@ export class GitpodServiceImpl<Client extends GitpodClient, Server extends Gitpo
608
716
  }
609
717
  }
610
718
 
611
- export function createGitpodService<C extends GitpodClient, S extends GitpodServer>(serverUrl: string | Promise<string>) {
719
+ export function createGitpodService<C extends GitpodClient, S extends GitpodServer>(
720
+ serverUrl: string | Promise<string>,
721
+ ) {
612
722
  const toWsUrl = (serverUrl: string) => {
613
- return new GitpodHostUrl(serverUrl)
614
- .asWebsocket()
615
- .withApi({ pathname: GitpodServerPath })
616
- .toString();
723
+ return new GitpodHostUrl(serverUrl).asWebsocket().withApi({ pathname: GitpodServerPath }).toString();
617
724
  };
618
725
  let url: string | Promise<string>;
619
726
  if (typeof serverUrl === "string") {
620
727
  url = toWsUrl(serverUrl);
621
728
  } else {
622
- url = serverUrl.then(url => toWsUrl(url));
729
+ url = serverUrl.then((url) => toWsUrl(url));
623
730
  }
624
731
 
625
732
  const connectionProvider = new WebSocketConnectionProvider();
626
- let onReconnect = () => { };
733
+ let onReconnect = () => {};
627
734
  const gitpodServer = connectionProvider.createProxy<S>(url, undefined, {
628
- onListening: socket => {
735
+ onListening: (socket) => {
629
736
  onReconnect = () => socket.reconnect();
630
- }
737
+ },
631
738
  });
632
739
  return new GitpodServiceImpl<C, S>(gitpodServer, { onReconnect });
633
- }
740
+ }