@gitpod/gitpod-protocol 0.1.5-wth-test.80 → 0.1.5-wv-remove-without-ws-flag.5

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 (413) hide show
  1. package/data/gitpod-schema.json +132 -5
  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 +19 -2
  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 +1 -1
  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 +1 -2
  30. package/lib/context-url.d.ts.map +1 -1
  31. package/lib/context-url.js +5 -7
  32. package/lib/context-url.js.map +1 -1
  33. package/lib/context-url.spec.d.ts +1 -3
  34. package/lib/context-url.spec.d.ts.map +1 -1
  35. package/lib/context-url.spec.js +13 -26
  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/frontend-dashboard-service.d.ts +90 -0
  78. package/lib/frontend-dashboard-service.d.ts.map +1 -0
  79. package/lib/frontend-dashboard-service.js +49 -0
  80. package/lib/frontend-dashboard-service.js.map +1 -0
  81. package/lib/gitpod-file-parser.d.ts +1 -1
  82. package/lib/gitpod-file-parser.d.ts.map +1 -1
  83. package/lib/gitpod-file-parser.js +7 -7
  84. package/lib/gitpod-file-parser.js.map +1 -1
  85. package/lib/gitpod-file-parser.spec.d.ts +1 -1
  86. package/lib/gitpod-file-parser.spec.js +43 -40
  87. package/lib/gitpod-file-parser.spec.js.map +1 -1
  88. package/lib/gitpod-service.d.ts +73 -55
  89. package/lib/gitpod-service.d.ts.map +1 -1
  90. package/lib/gitpod-service.js +61 -34
  91. package/lib/gitpod-service.js.map +1 -1
  92. package/lib/headless-workspace-log.d.ts +2 -1
  93. package/lib/headless-workspace-log.d.ts.map +1 -1
  94. package/lib/headless-workspace-log.js +3 -2
  95. package/lib/headless-workspace-log.js.map +1 -1
  96. package/lib/ide-frontend-service.d.ts +2 -2
  97. package/lib/ide-frontend-service.js +1 -1
  98. package/lib/ide-protocol.d.ts +29 -8
  99. package/lib/ide-protocol.d.ts.map +1 -1
  100. package/lib/ide-protocol.js +11 -1
  101. package/lib/ide-protocol.js.map +1 -1
  102. package/lib/index.d.ts +17 -17
  103. package/lib/index.d.ts.map +1 -1
  104. package/lib/index.js +2 -2
  105. package/lib/index.js.map +1 -1
  106. package/lib/installation-admin-protocol.d.ts +4 -1
  107. package/lib/installation-admin-protocol.d.ts.map +1 -1
  108. package/lib/installation-admin-protocol.js +4 -3
  109. package/lib/installation-admin-protocol.js.map +1 -1
  110. package/lib/license-protocol.d.ts +8 -1
  111. package/lib/license-protocol.d.ts.map +1 -1
  112. package/lib/license-protocol.js +1 -1
  113. package/lib/license-protocol.js.map +1 -1
  114. package/lib/messaging/browser/connection.d.ts +1 -1
  115. package/lib/messaging/browser/connection.d.ts.map +1 -1
  116. package/lib/messaging/browser/connection.js +19 -19
  117. package/lib/messaging/browser/connection.js.map +1 -1
  118. package/lib/messaging/browser/window-connection.d.ts +5 -5
  119. package/lib/messaging/browser/window-connection.d.ts.map +1 -1
  120. package/lib/messaging/browser/window-connection.js +10 -7
  121. package/lib/messaging/browser/window-connection.js.map +1 -1
  122. package/lib/messaging/client-call-metrics.d.ts +5 -19
  123. package/lib/messaging/client-call-metrics.d.ts.map +1 -1
  124. package/lib/messaging/client-call-metrics.js +35 -23
  125. package/lib/messaging/client-call-metrics.js.map +1 -1
  126. package/lib/messaging/error.d.ts +10 -2
  127. package/lib/messaging/error.d.ts.map +1 -1
  128. package/lib/messaging/error.js +20 -4
  129. package/lib/messaging/error.js.map +1 -1
  130. package/lib/messaging/handler.d.ts.map +1 -1
  131. package/lib/messaging/handler.js +1 -1
  132. package/lib/messaging/node/connection.js +8 -8
  133. package/lib/messaging/node/connection.js.map +1 -1
  134. package/lib/messaging/proxy-factory.d.ts +1 -1
  135. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  136. package/lib/messaging/proxy-factory.js +7 -9
  137. package/lib/messaging/proxy-factory.js.map +1 -1
  138. package/lib/oss-allowlist.d.ts +1 -1
  139. package/lib/oss-allowlist.js +1 -1
  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 +7 -4
  145. package/lib/permission.d.ts.map +1 -1
  146. package/lib/permission.js +16 -24
  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 +167 -61
  153. package/lib/protocol.d.ts.map +1 -1
  154. package/lib/protocol.js +282 -106
  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 +29 -6
  170. package/lib/teams-projects-protocol.d.ts.map +1 -1
  171. package/lib/teams-projects-protocol.js +10 -3
  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 +7 -7
  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 +1 -1
  210. package/lib/util/garbage-collected-cache.d.ts.map +1 -1
  211. package/lib/util/garbage-collected-cache.js +7 -2
  212. package/lib/util/garbage-collected-cache.js.map +1 -1
  213. package/lib/util/generate-workspace-id.d.ts +5 -0
  214. package/lib/util/generate-workspace-id.d.ts.map +1 -1
  215. package/lib/util/generate-workspace-id.js +446 -442
  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 +19 -8
  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 +12 -3
  225. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  226. package/lib/util/gitpod-host-url.js +69 -35
  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 +1 -1
  237. package/lib/util/jaeger-client-types.d.ts.map +1 -1
  238. package/lib/util/jaeger-client-types.js +1 -1
  239. package/lib/util/logging.d.ts +2 -2
  240. package/lib/util/logging.d.ts.map +1 -1
  241. package/lib/util/logging.js +32 -26
  242. package/lib/util/logging.js.map +1 -1
  243. package/lib/util/logging.spec.d.ts +7 -0
  244. package/lib/util/logging.spec.d.ts.map +1 -0
  245. package/lib/util/logging.spec.js +52 -0
  246. package/lib/util/logging.spec.js.map +1 -0
  247. package/lib/util/make-link.d.ts +1 -1
  248. package/lib/util/make-link.js +6 -6
  249. package/lib/util/make-link.js.map +1 -1
  250. package/lib/util/nice-grpc.d.ts +9 -0
  251. package/lib/util/nice-grpc.d.ts.map +1 -0
  252. package/lib/util/nice-grpc.js +121 -0
  253. package/lib/util/nice-grpc.js.map +1 -0
  254. package/lib/util/parse-workspace-id.d.ts +1 -1
  255. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  256. package/lib/util/parse-workspace-id.js +2 -3
  257. package/lib/util/parse-workspace-id.js.map +1 -1
  258. package/lib/util/parse-workspace-id.spec.d.ts +1 -1
  259. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  260. package/lib/util/parse-workspace-id.spec.js +1 -1
  261. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  262. package/lib/util/queue.d.ts +1 -1
  263. package/lib/util/queue.js +1 -1
  264. package/lib/util/queue.spec.d.ts +1 -1
  265. package/lib/util/queue.spec.js +10 -7
  266. package/lib/util/queue.spec.js.map +1 -1
  267. package/lib/util/repeat.d.ts +1 -1
  268. package/lib/util/repeat.js +1 -1
  269. package/lib/util/semaphore.d.ts +1 -1
  270. package/lib/util/semaphore.d.ts.map +1 -1
  271. package/lib/util/semaphore.js +1 -1
  272. package/lib/util/semaphore.js.map +1 -1
  273. package/lib/util/skip-if.d.ts +1 -1
  274. package/lib/util/skip-if.d.ts.map +1 -1
  275. package/lib/util/skip-if.js +1 -1
  276. package/lib/util/skip-if.js.map +1 -1
  277. package/lib/util/timeutil.d.ts +3 -1
  278. package/lib/util/timeutil.d.ts.map +1 -1
  279. package/lib/util/timeutil.js +16 -4
  280. package/lib/util/timeutil.js.map +1 -1
  281. package/lib/util/timeutil.spec.d.ts +3 -1
  282. package/lib/util/timeutil.spec.d.ts.map +1 -1
  283. package/lib/util/timeutil.spec.js +35 -1
  284. package/lib/util/timeutil.spec.js.map +1 -1
  285. package/lib/util/tracing.d.ts +7 -7
  286. package/lib/util/tracing.d.ts.map +1 -1
  287. package/lib/util/tracing.js +15 -17
  288. package/lib/util/tracing.js.map +1 -1
  289. package/lib/util/tracing.spec.d.ts +1 -1
  290. package/lib/util/tracing.spec.js +4 -4
  291. package/lib/util/tracing.spec.js.map +1 -1
  292. package/lib/util/workspace-port-authentication.d.ts +8 -8
  293. package/lib/util/workspace-port-authentication.d.ts.map +1 -1
  294. package/lib/util/workspace-port-authentication.js +9 -12
  295. package/lib/util/workspace-port-authentication.js.map +1 -1
  296. package/lib/webhook-event.d.ts +44 -0
  297. package/lib/webhook-event.d.ts.map +1 -0
  298. package/lib/webhook-event.js +8 -0
  299. package/lib/webhook-event.js.map +1 -0
  300. package/lib/workspace-class.d.ts +14 -0
  301. package/lib/workspace-class.d.ts.map +1 -0
  302. package/lib/workspace-class.js +8 -0
  303. package/lib/workspace-class.js.map +1 -0
  304. package/lib/workspace-cluster.d.ts +13 -14
  305. package/lib/workspace-cluster.d.ts.map +1 -1
  306. package/lib/workspace-cluster.js +3 -5
  307. package/lib/workspace-cluster.js.map +1 -1
  308. package/lib/workspace-instance.d.ts +22 -4
  309. package/lib/workspace-instance.d.ts.map +1 -1
  310. package/lib/workspace-instance.js +1 -1
  311. package/lib/wsready.d.ts +8 -2
  312. package/lib/wsready.d.ts.map +1 -1
  313. package/lib/wsready.js +3 -3
  314. package/package.json +14 -6
  315. package/pkg-yarn.lock +10 -5
  316. package/provenance-bundle.jsonl +1 -1
  317. package/src/accounting-protocol.ts +67 -52
  318. package/src/admin-protocol.ts +48 -22
  319. package/src/analytics.ts +22 -22
  320. package/src/attribution.ts +63 -0
  321. package/src/auth.ts +3 -3
  322. package/src/billing-mode.ts +84 -0
  323. package/src/blocked-repositories-protocol.ts +13 -0
  324. package/src/context-url.spec.ts +18 -22
  325. package/src/context-url.ts +79 -79
  326. package/src/encryption/container-module.ts +3 -4
  327. package/src/encryption/encryption-engine.spec.ts +10 -9
  328. package/src/encryption/encryption-engine.ts +21 -17
  329. package/src/encryption/encryption-service.ts +5 -6
  330. package/src/encryption/key-provider.ts +17 -20
  331. package/src/env.ts +2 -25
  332. package/src/experiments/always-default.ts +24 -0
  333. package/src/experiments/configcat-server.ts +42 -0
  334. package/src/experiments/configcat.ts +56 -0
  335. package/src/experiments/types.ts +34 -0
  336. package/src/frontend-dashboard-service.ts +125 -0
  337. package/src/gitpod-file-parser.spec.ts +56 -62
  338. package/src/gitpod-file-parser.ts +17 -18
  339. package/src/gitpod-service.ts +224 -142
  340. package/src/headless-workspace-log.ts +7 -5
  341. package/src/ide-frontend-service.ts +3 -3
  342. package/src/ide-protocol.ts +38 -10
  343. package/src/index.ts +17 -17
  344. package/src/installation-admin-protocol.ts +12 -9
  345. package/src/license-protocol.ts +13 -7
  346. package/src/messaging/browser/connection.ts +45 -47
  347. package/src/messaging/browser/window-connection.ts +40 -30
  348. package/src/messaging/client-call-metrics.ts +79 -82
  349. package/src/messaging/error.ts +30 -8
  350. package/src/messaging/handler.ts +6 -6
  351. package/src/messaging/node/connection.ts +8 -8
  352. package/src/messaging/proxy-factory.ts +23 -30
  353. package/src/oss-allowlist.ts +4 -4
  354. package/src/payment-protocol.ts +3 -3
  355. package/src/permission.ts +25 -32
  356. package/src/plans.ts +241 -190
  357. package/src/protocol.spec.ts +97 -0
  358. package/src/protocol.ts +527 -265
  359. package/src/snapshot-url.spec.ts +10 -8
  360. package/src/snapshot-url.ts +1 -1
  361. package/src/team-subscription-protocol.ts +60 -23
  362. package/src/teams-projects-protocol.ts +42 -12
  363. package/src/typings/globals.ts +6 -5
  364. package/src/usage.ts +85 -0
  365. package/src/util/analytics.ts +47 -43
  366. package/src/util/async-iterator.ts +5 -6
  367. package/src/util/cancelable.ts +4 -4
  368. package/src/util/date-time.ts +9 -9
  369. package/src/util/debug-app.ts +81 -0
  370. package/src/util/deep-partial.ts +1 -1
  371. package/src/util/deferred.ts +7 -7
  372. package/src/util/disposable.ts +3 -6
  373. package/src/util/event.ts +9 -11
  374. package/src/util/garbage-collected-cache.ts +9 -7
  375. package/src/util/generate-workspace-id.spec.ts +27 -17
  376. package/src/util/generate-workspace-id.ts +461 -455
  377. package/src/util/gitpod-cookie.ts +9 -10
  378. package/src/util/gitpod-host-url.spec.ts +41 -14
  379. package/src/util/gitpod-host-url.ts +82 -39
  380. package/src/util/grpc.ts +94 -2
  381. package/src/util/jaeger-client-types.ts +3 -3
  382. package/src/util/logging.spec.ts +23 -0
  383. package/src/util/logging.ts +61 -43
  384. package/src/util/make-link.ts +7 -8
  385. package/src/util/nice-grpc.ts +96 -0
  386. package/src/util/parse-workspace-id.spec.ts +18 -9
  387. package/src/util/parse-workspace-id.ts +6 -7
  388. package/src/util/queue.spec.ts +28 -26
  389. package/src/util/queue.ts +1 -1
  390. package/src/util/repeat.ts +2 -2
  391. package/src/util/semaphore.ts +5 -7
  392. package/src/util/skip-if.ts +10 -7
  393. package/src/util/timeutil.spec.ts +41 -15
  394. package/src/util/timeutil.ts +28 -12
  395. package/src/util/tracing.spec.ts +29 -24
  396. package/src/util/tracing.ts +55 -52
  397. package/src/util/workspace-port-authentication.ts +11 -14
  398. package/src/webhook-event.ts +55 -0
  399. package/src/workspace-class.ts +14 -0
  400. package/src/workspace-cluster.ts +25 -19
  401. package/src/workspace-instance.ts +67 -25
  402. package/src/wsready.ts +11 -4
  403. package/data/builtin-theia-plugins.json +0 -372
  404. package/lib/email-protocol.d.ts +0 -49
  405. package/lib/email-protocol.d.ts.map +0 -1
  406. package/lib/email-protocol.js +0 -28
  407. package/lib/email-protocol.js.map +0 -1
  408. package/lib/theia-plugins.d.ts +0 -11
  409. package/lib/theia-plugins.d.ts.map +0 -1
  410. package/lib/theia-plugins.js +0 -8
  411. package/lib/theia-plugins.js.map +0 -1
  412. package/src/email-protocol.ts +0 -66
  413. package/src/theia-plugins.ts +0 -11
@@ -1,7 +1,7 @@
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 { interfaces } from "inversify";
@@ -19,10 +19,9 @@ import { EncryptionService, EncryptionServiceImpl } from "./encryption-service";
19
19
  * };
20
20
  * }).inSingletonScope();
21
21
  */
22
- export const encryptionModule: interfaces.ContainerModuleCallBack = bind => {
23
-
22
+ export const encryptionModule: interfaces.ContainerModuleCallBack = (bind) => {
24
23
  bind(KeyProvider).to(KeyProviderImpl).inSingletonScope();
25
24
 
26
25
  bind(EncryptionEngine).to(EncryptionEngineImpl).inSingletonScope();
27
26
  bind(EncryptionService).to(EncryptionServiceImpl).inSingletonScope();
28
- };
27
+ };
@@ -1,29 +1,30 @@
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 { suite, test } from "mocha-typescript";
8
- import * as chai from 'chai';
9
- import * as path from 'path';
8
+ import * as chai from "chai";
9
+ import * as path from "path";
10
10
  import * as fs from "fs";
11
11
 
12
12
  import { EncryptionEngineImpl } from "./encryption-engine";
13
13
 
14
14
  const expect = chai.expect;
15
15
 
16
- @suite class TestEncryptionEngineImpl {
16
+ @suite
17
+ class TestEncryptionEngineImpl {
17
18
  // Created with openssl rand -rand /dev/urandom -out key -base64 32
18
- protected get testkey () {
19
- const keyFilePath = path.resolve(__dirname, '../../test/fixtures/encryption/testkey');
19
+ protected get testkey() {
20
+ const keyFilePath = path.resolve(__dirname, "../../test/fixtures/encryption/testkey");
20
21
  const keyBuffer = fs.readFileSync(keyFilePath);
21
22
  return keyBuffer.toString().trim();
22
- };
23
+ }
23
24
 
24
25
  @test basicSymmetry() {
25
26
  const plaintext = "12345678901234567890";
26
- const key = new Buffer(this.testkey, 'base64');
27
+ const key = Buffer.from(this.testkey, "base64");
27
28
 
28
29
  const cut = new EncryptionEngineImpl();
29
30
  const encryptedData = cut.encrypt(plaintext, key);
@@ -33,4 +34,4 @@ const expect = chai.expect;
33
34
  expect(decryptedPlaintext).equals(plaintext);
34
35
  }
35
36
  }
36
- export const t = new TestEncryptionEngineImpl();
37
+ export const t = new TestEncryptionEngineImpl();
@@ -1,23 +1,23 @@
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
- import * as crypto from 'crypto';
8
- import { injectable } from 'inversify';
7
+ import * as crypto from "crypto";
8
+ import { injectable } from "inversify";
9
9
 
10
10
  export interface KeyParams {
11
- iv: string
11
+ iv: string;
12
12
  }
13
13
 
14
14
  export interface EncryptedData {
15
15
  /** utf8 encoded string */
16
- data: string,
17
- keyParams: KeyParams
16
+ data: string;
17
+ keyParams: KeyParams;
18
18
  }
19
19
 
20
- export const EncryptionEngine = Symbol('EncryptionEngine');
20
+ export const EncryptionEngine = Symbol("EncryptionEngine");
21
21
  export interface EncryptionEngine {
22
22
  /**
23
23
  * @param data utf8 encoded string
@@ -32,28 +32,32 @@ export interface EncryptionEngine {
32
32
  * - no salt, as we pass in a real key (no salting needed to turn a password into a key)
33
33
  * The implementation closely follows the exampes in https://nodejs.org/api/crypto.html.
34
34
  */
35
- @injectable()
35
+ @injectable()
36
36
  export class EncryptionEngineImpl {
37
- readonly algorithm = 'aes-256-cbc';
38
- readonly enc = 'base64';
37
+ readonly algorithm = "aes-256-cbc";
38
+ readonly enc = "base64";
39
39
 
40
40
  encrypt(data: string, key: Buffer): EncryptedData {
41
41
  const iv = crypto.randomBytes(16);
42
42
  const cipher = crypto.createCipheriv(this.algorithm, key, iv);
43
- const encrypted = cipher.update(new Buffer(data, 'utf8'));
43
+ const encrypted = cipher.update(Buffer.from(data, "utf8"));
44
44
  const finalEncrypted = Buffer.concat([encrypted, cipher.final()]);
45
45
  return {
46
46
  data: finalEncrypted.toString(this.enc),
47
47
  keyParams: {
48
- iv: iv.toString(this.enc)
49
- }
48
+ iv: iv.toString(this.enc),
49
+ },
50
50
  };
51
51
  }
52
52
 
53
53
  decrypt(encryptedData: EncryptedData, key: Buffer): string {
54
- const decipher = crypto.createDecipheriv(this.algorithm, key, new Buffer(encryptedData.keyParams.iv, this.enc));
55
- let decrypted = decipher.update(new Buffer(encryptedData.data, this.enc));
54
+ const decipher = crypto.createDecipheriv(
55
+ this.algorithm,
56
+ key,
57
+ Buffer.from(encryptedData.keyParams.iv, this.enc),
58
+ );
59
+ let decrypted = decipher.update(Buffer.from(encryptedData.data, this.enc));
56
60
  const finalDecrypted = Buffer.concat([decrypted, decipher.final()]);
57
- return finalDecrypted.toString('utf8');
61
+ return finalDecrypted.toString("utf8");
58
62
  }
59
- }
63
+ }
@@ -1,7 +1,7 @@
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 { injectable, inject } from "inversify";
@@ -9,12 +9,11 @@ import { injectable, inject } from "inversify";
9
9
  import { EncryptedData, EncryptionEngine } from "./encryption-engine";
10
10
  import { KeyProvider, KeyMetadata } from "./key-provider";
11
11
 
12
-
13
12
  export interface Encrypted<_T> extends EncryptedData {
14
- keyMetadata: KeyMetadata
13
+ keyMetadata: KeyMetadata;
15
14
  }
16
15
 
17
- export const EncryptionService = Symbol('EncryptionService');
16
+ export const EncryptionService = Symbol("EncryptionService");
18
17
  export interface EncryptionService {
19
18
  encrypt<T>(data: T): Encrypted<T>;
20
19
  decrypt<T>(encrypted: Encrypted<T>): T;
@@ -32,7 +31,7 @@ export class EncryptionServiceImpl implements EncryptionService {
32
31
  const encryptedData = this.engine.encrypt(dataStr, key.material);
33
32
  return {
34
33
  ...encryptedData,
35
- keyMetadata: key.metadata
34
+ keyMetadata: key.metadata,
36
35
  };
37
36
  }
38
37
 
@@ -49,4 +48,4 @@ export class EncryptionServiceImpl implements EncryptionService {
49
48
  protected deserialize<T>(data: string): T {
50
49
  return JSON.parse(data) as T;
51
50
  }
52
- }
51
+ }
@@ -1,22 +1,22 @@
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 { injectable, inject } from "inversify";
8
8
 
9
9
  export interface KeyMetadata {
10
- name: string,
11
- version: number
10
+ name: string;
11
+ version: number;
12
12
  }
13
13
 
14
14
  export interface Key {
15
- metadata: KeyMetadata,
16
- material: Buffer
15
+ metadata: KeyMetadata;
16
+ material: Buffer;
17
17
  }
18
18
 
19
- export const KeyProvider = Symbol('KeyProvider');
19
+ export const KeyProvider = Symbol("KeyProvider");
20
20
  export interface KeyProvider {
21
21
  getPrimaryKey(): Key;
22
22
  getKeyFor(metadata: KeyMetadata): Key;
@@ -24,24 +24,21 @@ export interface KeyProvider {
24
24
 
25
25
  export type KeyConfig = KeyMetadata & {
26
26
  /** base64 encoded */
27
- material: string,
28
- primary?: boolean
29
- }
27
+ material: string;
28
+ primary?: boolean;
29
+ };
30
30
 
31
- export const KeyProviderConfig = Symbol('KeyProviderConfig');
31
+ export const KeyProviderConfig = Symbol("KeyProviderConfig");
32
32
  export interface KeyProviderConfig {
33
- keys: KeyConfig[]
33
+ keys: KeyConfig[];
34
34
  }
35
35
 
36
36
  @injectable()
37
37
  export class KeyProviderImpl implements KeyProvider {
38
-
39
38
  static loadKeyConfigFromJsonString(configStr: string): KeyConfig[] {
40
39
  const keys = (JSON.parse(configStr) || []) as KeyConfig[];
41
- if (!Array.isArray(keys)
42
- || keys.length < 0
43
- || 1 !== keys.reduce((p, k) => k.primary ? p + 1 : p, 0)) {
44
- throw new Error('Invalid key config!');
40
+ if (!Array.isArray(keys) || keys.length < 0 || 1 !== keys.reduce((p, k) => (k.primary ? p + 1 : p), 0)) {
41
+ throw new Error("Invalid key config!");
45
42
  }
46
43
  return keys;
47
44
  }
@@ -49,13 +46,13 @@ export class KeyProviderImpl implements KeyProvider {
49
46
  constructor(@inject(KeyProviderConfig) protected readonly config: KeyProviderConfig) {}
50
47
 
51
48
  protected get keys() {
52
- return this.config.keys
49
+ return this.config.keys;
53
50
  }
54
51
 
55
52
  getPrimaryKey(): Key {
56
53
  const primaryKey = this.keys.find((key) => !!key.primary);
57
54
  if (!primaryKey) {
58
- throw new Error('No primary encryption key found!');
55
+ throw new Error("No primary encryption key found!");
59
56
  }
60
57
  return this.configToKey(primaryKey);
61
58
  }
@@ -72,9 +69,9 @@ export class KeyProviderImpl implements KeyProvider {
72
69
  return {
73
70
  metadata: {
74
71
  name: config.name,
75
- version: config.version
72
+ version: config.version,
76
73
  },
77
- material: new Buffer(config.material, 'base64')
74
+ material: Buffer.from(config.material, "base64"),
78
75
  };
79
76
  }
80
77
  }
package/src/env.ts CHANGED
@@ -1,36 +1,13 @@
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 { injectable } from "inversify";
8
8
 
9
- const legacyStagenameTranslation: { [key: string]: KubeStage } = {
10
- "production": "production",
11
- "staging": "prodcopy",
12
- "devstaging": "dev",
13
- "dev": "dev"
14
- }
15
-
16
- export function translateLegacyStagename(kubeStage: string): KubeStage {
17
- const stage = legacyStagenameTranslation[kubeStage];
18
- if (!stage) {
19
- throw new Error(`Invalid KUBE_STAGE: ${kubeStage}`);
20
- }
21
-
22
- return stage;
23
- }
24
-
25
9
  @injectable()
26
- export abstract class AbstractComponentEnv {
27
- readonly kubeStage: KubeStage = getEnvVarParsed('KUBE_STAGE', translateLegacyStagename);
28
-
29
- readonly installationLongname: string = getEnvVar("GITPOD_INSTALLATION_LONGNAME")
30
- readonly installationShortname: string = getEnvVar("GITPOD_INSTALLATION_SHORTNAME")
31
- }
32
-
33
- export type KubeStage = 'production' | 'prodcopy' | 'staging' | 'dev';
10
+ export abstract class AbstractComponentEnv {}
34
11
 
35
12
  export function getEnvVar(name: string, defaultValue?: string): string {
36
13
  const value = process.env[name] || defaultValue;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
+ * Licensed under the GNU Affero General Public License (AGPL).
4
+ * See License.AGPL.txt in the project root for license information.
5
+ */
6
+ import { Attributes, Client } from "./types";
7
+
8
+ // AlwaysReturningDefaultValueClient is an implemention of an experiments.Client which performs no lookup/network operation
9
+ // and always returns the default value for a given experimentName.
10
+ // This client is used for non-SaaS version of Gitpod, in particular for self-hosted installations where external
11
+ // network connections are not desirable or even possible.
12
+ class AlwaysReturningDefaultValueClient implements Client {
13
+ getValueAsync<T>(experimentName: string, defaultValue: T, attributes: Attributes): Promise<T> {
14
+ return Promise.resolve(defaultValue);
15
+ }
16
+
17
+ dispose(): void {
18
+ // there is nothing to dispose, no-op.
19
+ }
20
+ }
21
+
22
+ export function newAlwaysReturningDefaultValueClient(): Client {
23
+ return new AlwaysReturningDefaultValueClient();
24
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
+ * Licensed under the GNU Affero General Public License (AGPL).
4
+ * See License.AGPL.txt in the project root for license information.
5
+ */
6
+
7
+ import { Client } from "./types";
8
+ import * as configcat from "configcat-node";
9
+ import { LogLevel } from "configcat-common";
10
+ import { ConfigCatClient } from "./configcat";
11
+ import { newAlwaysReturningDefaultValueClient } from "./always-default";
12
+
13
+ let client: Client | undefined;
14
+
15
+ export type ConfigCatClientFactory = () => Client;
16
+ export const ConfigCatClientFactory = Symbol("ConfigCatClientFactory");
17
+
18
+ export function getExperimentsClientForBackend(): Client {
19
+ // We have already instantiated a client, we can just re-use it.
20
+ if (client !== undefined) {
21
+ return client;
22
+ }
23
+
24
+ // Retrieve SDK key from ENV Variable
25
+ const sdkKey = process.env.CONFIGCAT_SDK_KEY;
26
+
27
+ // Self-hosted installations do not set the ConfigCat SDK key, so always use a client which returns the default value.
28
+ if (sdkKey === undefined || sdkKey === "") {
29
+ client = newAlwaysReturningDefaultValueClient();
30
+ return client;
31
+ }
32
+
33
+ const configCatClient = configcat.createClient(sdkKey, {
34
+ pollIntervalSeconds: 3 * 60, // 3 minutes
35
+ requestTimeoutMs: 2000,
36
+ logger: configcat.createConsoleLogger(LogLevel.Error),
37
+ maxInitWaitTimeSeconds: 0,
38
+ });
39
+
40
+ client = new ConfigCatClient(configCatClient);
41
+ return client;
42
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
+ * Licensed under the GNU Affero General Public License (AGPL).
4
+ * See License.AGPL.txt in the project root for license information.
5
+ */
6
+
7
+ import { Attributes, Client } from "./types";
8
+ import { User as ConfigCatUser } from "configcat-common/lib/RolloutEvaluator";
9
+ import { IConfigCatClient } from "configcat-common/lib/ConfigCatClient";
10
+ import { User } from "../protocol";
11
+
12
+ export const USER_ID_ATTRIBUTE = "user_id";
13
+ export const PROJECT_ID_ATTRIBUTE = "project_id";
14
+ export const TEAM_ID_ATTRIBUTE = "team_id";
15
+ export const TEAM_NAME_ATTRIBUTE = "team_name";
16
+ export const BILLING_TIER_ATTRIBUTE = "billing_tier";
17
+
18
+ export class ConfigCatClient implements Client {
19
+ private client: IConfigCatClient;
20
+
21
+ constructor(cc: IConfigCatClient) {
22
+ this.client = cc;
23
+ }
24
+
25
+ getValueAsync<T>(experimentName: string, defaultValue: T, attributes: Attributes): Promise<T> {
26
+ return this.client.getValueAsync(experimentName, defaultValue, attributesToUser(attributes));
27
+ }
28
+
29
+ dispose(): void {
30
+ return this.client.dispose();
31
+ }
32
+ }
33
+
34
+ export function attributesToUser(attributes: Attributes): ConfigCatUser {
35
+ const userId = attributes.user?.id || "";
36
+ const email = User.is(attributes.user) ? User.getPrimaryEmail(attributes.user) : attributes.user?.email || "";
37
+
38
+ const custom: { [key: string]: string } = {};
39
+ if (userId) {
40
+ custom[USER_ID_ATTRIBUTE] = userId;
41
+ }
42
+ if (attributes.projectId) {
43
+ custom[PROJECT_ID_ATTRIBUTE] = attributes.projectId;
44
+ }
45
+ if (attributes.teamId) {
46
+ custom[TEAM_ID_ATTRIBUTE] = attributes.teamId;
47
+ }
48
+ if (attributes.teamName) {
49
+ custom[TEAM_NAME_ATTRIBUTE] = attributes.teamName;
50
+ }
51
+ if (attributes.billingTier) {
52
+ custom[BILLING_TIER_ATTRIBUTE] = attributes.billingTier;
53
+ }
54
+
55
+ return new ConfigCatUser(userId, email, "", custom);
56
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
+ * Licensed under the GNU Affero General Public License (AGPL).
4
+ * See License.AGPL.txt in the project root for license information.
5
+ */
6
+
7
+ import { BillingTier, User } from "../protocol";
8
+
9
+ export const Client = Symbol("Client");
10
+
11
+ // Attributes define attributes which can be used to segment audiences.
12
+ // Set the attributes which you want to use to group audiences into.
13
+ export interface Attributes {
14
+ // user.id is mapped to ConfigCat's "identifier" + "custom.user_id"
15
+ user?: User | { id: string; email?: string };
16
+
17
+ // The BillingTier of this particular user
18
+ billingTier?: BillingTier;
19
+
20
+ // Currently selected Gitpod Project ID (mapped to "custom.project_id")
21
+ projectId?: string;
22
+
23
+ // Currently selected Gitpod Team ID (mapped to "custom.team_id")
24
+ teamId?: string;
25
+ // Currently selected Gitpod Team Name (mapped to "custom.team_name")
26
+ teamName?: string;
27
+ }
28
+
29
+ export interface Client {
30
+ getValueAsync<T>(experimentName: string, defaultValue: T, attributes: Attributes): Promise<T>;
31
+
32
+ // dispose will dispose of the client, no longer retrieving flags
33
+ dispose(): void;
34
+ }
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Copyright (c) 2023 Gitpod GmbH. All rights reserved.
3
+ * Licensed under the GNU Affero General Public License (AGPL).
4
+ * See License.AGPL.txt in the project root for license information.
5
+ */
6
+
7
+ import { WorkspaceInstancePhase } from "./workspace-instance";
8
+ import { RemoteTrackMessage } from "./analytics";
9
+
10
+ /**
11
+ * IDEFrontendDashboardService enables IDE related communications
12
+ * between the workspace to gitpod origins. Use it to communicate
13
+ * between IDE and dashboard iframes, never use
14
+ * `window.postMessage` directly.
15
+ *
16
+ * **Security Note**: never expose information about other workspaces
17
+ * or sensitive information for the current workspace, i.e. owner token.
18
+ */
19
+ export namespace IDEFrontendDashboardService {
20
+ /**
21
+ * IClient is the client side which is using in supervisor frontend
22
+ */
23
+ export interface IClient {
24
+ trackEvent(msg: RemoteTrackMessage): void;
25
+ activeHeartbeat(): void;
26
+ setState(state: SetStateData): void;
27
+ openDesktopIDE(url: string): void;
28
+ }
29
+
30
+ /**
31
+ * IServer is the server side which is using in dashboard loading screen
32
+ */
33
+ export interface IServer {
34
+ sendStatusUpdate(status: Status): void;
35
+ relocate(url: string): void;
36
+ openBrowserIDE(): void;
37
+ }
38
+
39
+ export interface Status {
40
+ workspaceID: string;
41
+ loggedUserId: string;
42
+
43
+ instanceId?: string;
44
+ ideUrl?: string;
45
+ statusPhase?: WorkspaceInstancePhase;
46
+
47
+ workspaceDescription: string;
48
+ workspaceType: string;
49
+ }
50
+
51
+ export interface SetStateData {
52
+ ideFrontendFailureCause?: string;
53
+ desktopIDE?: {
54
+ clientID: string;
55
+ link: string;
56
+ label?: string;
57
+ };
58
+ }
59
+
60
+ /**
61
+ * interface for post message that send status update from dashboard to supervisor
62
+ */
63
+ export interface StatusUpdateEventData {
64
+ // protocol version
65
+ version?: number;
66
+ type: "ide-status-update";
67
+ status: Status;
68
+ }
69
+
70
+ export interface HeartbeatEventData {
71
+ type: "ide-heartbeat";
72
+ }
73
+
74
+ export interface TrackEventData {
75
+ type: "ide-track-event";
76
+ msg: RemoteTrackMessage;
77
+ }
78
+
79
+ export interface RelocateEventData {
80
+ type: "ide-relocate";
81
+ url: string;
82
+ }
83
+
84
+ export interface SetStateEventData {
85
+ type: "ide-set-state";
86
+ state: SetStateData;
87
+ }
88
+
89
+ export interface OpenBrowserIDE {
90
+ type: "ide-open-browser";
91
+ }
92
+
93
+ export interface OpenDesktopIDE {
94
+ type: "ide-open-desktop";
95
+ url: string;
96
+ }
97
+
98
+ export function isStatusUpdateEventData(obj: any): obj is StatusUpdateEventData {
99
+ return obj != null && typeof obj === "object" && obj.type === "ide-status-update";
100
+ }
101
+
102
+ export function isHeartbeatEventData(obj: any): obj is HeartbeatEventData {
103
+ return obj != null && typeof obj === "object" && obj.type === "ide-heartbeat";
104
+ }
105
+
106
+ export function isTrackEventData(obj: any): obj is TrackEventData {
107
+ return obj != null && typeof obj === "object" && obj.type === "ide-track-event";
108
+ }
109
+
110
+ export function isRelocateEventData(obj: any): obj is RelocateEventData {
111
+ return obj != null && typeof obj === "object" && obj.type === "ide-relocate";
112
+ }
113
+
114
+ export function isSetStateEventData(obj: any): obj is SetStateEventData {
115
+ return obj != null && typeof obj === "object" && obj.type === "ide-set-state";
116
+ }
117
+
118
+ export function isOpenBrowserIDE(obj: any): obj is OpenBrowserIDE {
119
+ return obj != null && typeof obj === "object" && obj.type === "ide-open-browser";
120
+ }
121
+
122
+ export function isOpenDesktopIDE(obj: any): obj is OpenDesktopIDE {
123
+ return obj != null && typeof obj === "object" && obj.type === "ide-open-desktop";
124
+ }
125
+ }