@gitpod/gitpod-protocol 0.1.5-svenefftinge-dashboard-invalid-2274.4 → 0.1.5-tarun-telemetry-users.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/data/builtin-theia-plugins.json +28 -18
  2. package/data/gitpod-schema.json +25 -24
  3. package/lib/accounting-protocol.d.ts +155 -0
  4. package/lib/accounting-protocol.d.ts.map +1 -0
  5. package/lib/accounting-protocol.js +109 -0
  6. package/lib/accounting-protocol.js.map +1 -0
  7. package/lib/admin-protocol.d.ts +32 -5
  8. package/lib/admin-protocol.d.ts.map +1 -1
  9. package/lib/admin-protocol.js +16 -1
  10. package/lib/admin-protocol.js.map +1 -1
  11. package/lib/analytics.d.ts +45 -0
  12. package/lib/analytics.d.ts.map +1 -0
  13. package/lib/analytics.js +10 -0
  14. package/lib/analytics.js.map +1 -0
  15. package/lib/auth.d.ts +25 -0
  16. package/lib/auth.d.ts.map +1 -0
  17. package/lib/auth.js +16 -0
  18. package/lib/auth.js.map +1 -0
  19. package/lib/context-url.d.ts +19 -0
  20. package/lib/context-url.d.ts.map +1 -0
  21. package/lib/context-url.js +51 -0
  22. package/lib/context-url.js.map +1 -0
  23. package/lib/context-url.spec.d.ts +12 -0
  24. package/lib/context-url.spec.d.ts.map +1 -0
  25. package/lib/context-url.spec.js +73 -0
  26. package/lib/context-url.spec.js.map +1 -0
  27. package/lib/email-protocol.d.ts +2 -3
  28. package/lib/email-protocol.d.ts.map +1 -1
  29. package/lib/email-protocol.js +5 -5
  30. package/lib/email-protocol.js.map +1 -1
  31. package/lib/encryption/container-module.d.ts +1 -1
  32. package/lib/encryption/container-module.js +6 -5
  33. package/lib/encryption/container-module.js.map +1 -1
  34. package/lib/encryption/encryption-engine.d.ts +1 -1
  35. package/lib/encryption/encryption-engine.js +20 -21
  36. package/lib/encryption/encryption-engine.js.map +1 -1
  37. package/lib/encryption/encryption-engine.spec.d.ts +1 -1
  38. package/lib/encryption/encryption-engine.spec.js +30 -37
  39. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  40. package/lib/encryption/encryption-service.d.ts +1 -1
  41. package/lib/encryption/encryption-service.js +30 -44
  42. package/lib/encryption/encryption-service.js.map +1 -1
  43. package/lib/encryption/key-provider.d.ts +1 -1
  44. package/lib/encryption/key-provider.js +26 -31
  45. package/lib/encryption/key-provider.js.map +1 -1
  46. package/lib/env.d.ts +2 -3
  47. package/lib/env.d.ts.map +1 -1
  48. package/lib/env.js +21 -22
  49. package/lib/env.js.map +1 -1
  50. package/lib/gitpod-file-parser.d.ts +1 -1
  51. package/lib/gitpod-file-parser.js +26 -42
  52. package/lib/gitpod-file-parser.js.map +1 -1
  53. package/lib/gitpod-file-parser.spec.d.ts +1 -1
  54. package/lib/gitpod-file-parser.spec.js +117 -117
  55. package/lib/gitpod-file-parser.spec.js.map +1 -1
  56. package/lib/gitpod-service.d.ts +155 -21
  57. package/lib/gitpod-service.d.ts.map +1 -1
  58. package/lib/gitpod-service.js +171 -257
  59. package/lib/gitpod-service.js.map +1 -1
  60. package/lib/headless-workspace-log.d.ts +9 -12
  61. package/lib/headless-workspace-log.d.ts.map +1 -1
  62. package/lib/headless-workspace-log.js +5 -8
  63. package/lib/headless-workspace-log.js.map +1 -1
  64. package/lib/ide-frontend-service.d.ts +5 -1
  65. package/lib/ide-frontend-service.d.ts.map +1 -1
  66. package/lib/ide-frontend-service.js +1 -1
  67. package/lib/ide-protocol.d.ts +101 -0
  68. package/lib/ide-protocol.d.ts.map +1 -0
  69. package/lib/{util/without.js → ide-protocol.js} +2 -2
  70. package/lib/ide-protocol.js.map +1 -0
  71. package/lib/index.d.ts +7 -1
  72. package/lib/index.d.ts.map +1 -1
  73. package/lib/index.js +8 -2
  74. package/lib/index.js.map +1 -1
  75. package/lib/installation-admin-protocol.d.ts +25 -0
  76. package/lib/installation-admin-protocol.d.ts.map +1 -0
  77. package/lib/installation-admin-protocol.js +30 -0
  78. package/lib/installation-admin-protocol.js.map +1 -0
  79. package/lib/license-protocol.d.ts +1 -1
  80. package/lib/license-protocol.js +1 -1
  81. package/lib/messaging/browser/connection.d.ts +5 -3
  82. package/lib/messaging/browser/connection.d.ts.map +1 -1
  83. package/lib/messaging/browser/connection.js +183 -33
  84. package/lib/messaging/browser/connection.js.map +1 -1
  85. package/lib/messaging/browser/window-connection.d.ts +1 -1
  86. package/lib/messaging/browser/window-connection.js +36 -56
  87. package/lib/messaging/browser/window-connection.js.map +1 -1
  88. package/lib/messaging/client-call-metrics.d.ts +35 -0
  89. package/lib/messaging/client-call-metrics.d.ts.map +1 -0
  90. package/lib/messaging/client-call-metrics.js +83 -0
  91. package/lib/messaging/client-call-metrics.js.map +1 -0
  92. package/lib/messaging/connection-error-handler.js +11 -23
  93. package/lib/messaging/connection-error-handler.js.map +1 -1
  94. package/lib/messaging/error.d.ts +7 -2
  95. package/lib/messaging/error.d.ts.map +1 -1
  96. package/lib/messaging/error.js +14 -4
  97. package/lib/messaging/error.js.map +1 -1
  98. package/lib/messaging/handler.d.ts +10 -0
  99. package/lib/messaging/handler.d.ts.map +1 -1
  100. package/lib/messaging/node/connection.d.ts +1 -17
  101. package/lib/messaging/node/connection.d.ts.map +1 -1
  102. package/lib/messaging/node/connection.js +23 -59
  103. package/lib/messaging/node/connection.js.map +1 -1
  104. package/lib/messaging/proxy-factory.d.ts +2 -0
  105. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  106. package/lib/messaging/proxy-factory.js +74 -159
  107. package/lib/messaging/proxy-factory.js.map +1 -1
  108. package/lib/oss-allowlist.d.ts +14 -0
  109. package/lib/oss-allowlist.d.ts.map +1 -0
  110. package/lib/oss-allowlist.js +8 -0
  111. package/lib/oss-allowlist.js.map +1 -0
  112. package/lib/payment-protocol.d.ts +18 -0
  113. package/lib/payment-protocol.d.ts.map +1 -0
  114. package/lib/payment-protocol.js +13 -0
  115. package/lib/payment-protocol.js.map +1 -0
  116. package/lib/permission.d.ts +7 -5
  117. package/lib/permission.d.ts.map +1 -1
  118. package/lib/permission.js +20 -19
  119. package/lib/permission.js.map +1 -1
  120. package/lib/plans.d.ts +210 -0
  121. package/lib/plans.d.ts.map +1 -0
  122. package/lib/plans.js +570 -0
  123. package/lib/plans.js.map +1 -0
  124. package/lib/protocol.d.ts +133 -59
  125. package/lib/protocol.d.ts.map +1 -1
  126. package/lib/protocol.js +129 -118
  127. package/lib/protocol.js.map +1 -1
  128. package/lib/snapshot-url.d.ts +14 -0
  129. package/lib/snapshot-url.d.ts.map +1 -0
  130. package/lib/snapshot-url.js +26 -0
  131. package/lib/snapshot-url.js.map +1 -0
  132. package/{src/util/without.ts → lib/snapshot-url.spec.d.ts} +3 -4
  133. package/lib/snapshot-url.spec.d.ts.map +1 -0
  134. package/lib/snapshot-url.spec.js +41 -0
  135. package/lib/snapshot-url.spec.js.map +1 -0
  136. package/lib/team-subscription-protocol.d.ts +73 -0
  137. package/lib/team-subscription-protocol.d.ts.map +1 -0
  138. package/lib/team-subscription-protocol.js +63 -0
  139. package/lib/team-subscription-protocol.js.map +1 -0
  140. package/lib/teams-projects-protocol.d.ts +113 -0
  141. package/lib/teams-projects-protocol.d.ts.map +1 -0
  142. package/lib/teams-projects-protocol.js +30 -0
  143. package/lib/teams-projects-protocol.js.map +1 -0
  144. package/lib/theia-plugins.d.ts +1 -1
  145. package/lib/theia-plugins.js +1 -1
  146. package/lib/typings/globals.d.ts +1 -1
  147. package/lib/typings/globals.js +1 -1
  148. package/lib/util/analytics.d.ts +8 -0
  149. package/lib/util/analytics.d.ts.map +1 -0
  150. package/lib/util/analytics.js +79 -0
  151. package/lib/util/analytics.js.map +1 -0
  152. package/lib/util/async-iterator.d.ts +1 -1
  153. package/lib/util/async-iterator.js +56 -134
  154. package/lib/util/async-iterator.js.map +1 -1
  155. package/lib/util/cancelable.d.ts +1 -1
  156. package/lib/util/cancelable.js +18 -60
  157. package/lib/util/cancelable.js.map +1 -1
  158. package/lib/util/date-time.d.ts +1 -1
  159. package/lib/util/date-time.js +9 -9
  160. package/lib/util/date-time.js.map +1 -1
  161. package/lib/util/deep-partial.d.ts +1 -1
  162. package/lib/util/deep-partial.js +1 -1
  163. package/lib/util/deferred.d.ts +1 -1
  164. package/lib/util/deferred.js +11 -13
  165. package/lib/util/deferred.js.map +1 -1
  166. package/lib/util/disposable.js +26 -39
  167. package/lib/util/disposable.js.map +1 -1
  168. package/lib/util/event.js +58 -74
  169. package/lib/util/event.js.map +1 -1
  170. package/lib/util/garbage-collected-cache.d.ts +2 -1
  171. package/lib/util/garbage-collected-cache.d.ts.map +1 -1
  172. package/lib/util/garbage-collected-cache.js +27 -47
  173. package/lib/util/garbage-collected-cache.js.map +1 -1
  174. package/lib/util/generate-workspace-id.d.ts +4 -0
  175. package/lib/util/generate-workspace-id.d.ts.map +1 -0
  176. package/lib/util/generate-workspace-id.js +487 -0
  177. package/lib/util/generate-workspace-id.js.map +1 -0
  178. package/lib/util/generate-workspace-id.spec.d.ts +7 -0
  179. package/lib/util/generate-workspace-id.spec.d.ts.map +1 -0
  180. package/lib/util/generate-workspace-id.spec.js +87 -0
  181. package/lib/util/generate-workspace-id.spec.js.map +1 -0
  182. package/lib/util/gitpod-cookie.d.ts +20 -0
  183. package/lib/util/gitpod-cookie.d.ts.map +1 -0
  184. package/lib/util/gitpod-cookie.js +44 -0
  185. package/lib/util/gitpod-cookie.js.map +1 -0
  186. package/lib/util/gitpod-host-url.d.ts +5 -3
  187. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  188. package/lib/util/gitpod-host-url.js +99 -92
  189. package/lib/util/gitpod-host-url.js.map +1 -1
  190. package/lib/util/gitpod-host-url.spec.d.ts +16 -0
  191. package/lib/util/gitpod-host-url.spec.d.ts.map +1 -0
  192. package/lib/util/gitpod-host-url.spec.js +124 -0
  193. package/lib/util/gitpod-host-url.spec.js.map +1 -0
  194. package/lib/util/grpc.d.ts +15 -0
  195. package/lib/util/grpc.d.ts.map +1 -0
  196. package/lib/util/grpc.js +18 -0
  197. package/lib/util/grpc.js.map +1 -0
  198. package/lib/util/jaeger-client-types.d.ts +68 -0
  199. package/lib/util/jaeger-client-types.d.ts.map +1 -0
  200. package/lib/util/jaeger-client-types.js +8 -0
  201. package/lib/util/jaeger-client-types.js.map +1 -0
  202. package/lib/util/logging.d.ts +57 -34
  203. package/lib/util/logging.d.ts.map +1 -1
  204. package/lib/util/logging.js +119 -111
  205. package/lib/util/logging.js.map +1 -1
  206. package/lib/util/make-link.d.ts +1 -1
  207. package/lib/util/make-link.js +3 -3
  208. package/lib/util/make-link.js.map +1 -1
  209. package/lib/util/parse-workspace-id.d.ts +14 -4
  210. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  211. package/lib/util/parse-workspace-id.js +39 -9
  212. package/lib/util/parse-workspace-id.js.map +1 -1
  213. package/lib/util/parse-workspace-id.spec.d.ts +9 -1
  214. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  215. package/lib/util/parse-workspace-id.spec.js +128 -48
  216. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  217. package/lib/util/queue.d.ts +1 -1
  218. package/lib/util/queue.js +17 -56
  219. package/lib/util/queue.js.map +1 -1
  220. package/lib/util/queue.spec.d.ts +1 -1
  221. package/lib/util/queue.spec.js +145 -289
  222. package/lib/util/queue.spec.js.map +1 -1
  223. package/lib/util/repeat.d.ts +15 -0
  224. package/lib/util/repeat.d.ts.map +1 -0
  225. package/lib/util/repeat.js +55 -0
  226. package/lib/util/repeat.js.map +1 -0
  227. package/lib/util/semaphore.d.ts +1 -1
  228. package/lib/util/semaphore.js +16 -47
  229. package/lib/util/semaphore.js.map +1 -1
  230. package/lib/util/skip-if.d.ts +1 -1
  231. package/lib/util/skip-if.js +7 -7
  232. package/lib/util/skip-if.js.map +1 -1
  233. package/lib/util/timeutil.d.ts +1 -1
  234. package/lib/util/timeutil.js +29 -17
  235. package/lib/util/timeutil.js.map +1 -1
  236. package/lib/util/timeutil.spec.d.ts +1 -1
  237. package/lib/util/timeutil.spec.js +22 -25
  238. package/lib/util/timeutil.spec.js.map +1 -1
  239. package/lib/util/tracing.d.ts +52 -6
  240. package/lib/util/tracing.d.ts.map +1 -1
  241. package/lib/util/tracing.js +197 -63
  242. package/lib/util/tracing.js.map +1 -1
  243. package/lib/util/tracing.spec.d.ts +7 -0
  244. package/lib/util/tracing.spec.d.ts.map +1 -0
  245. package/lib/util/tracing.spec.js +121 -0
  246. package/lib/util/tracing.spec.js.map +1 -0
  247. package/lib/util/workspace-port-authentication.d.ts +1 -1
  248. package/lib/util/workspace-port-authentication.js +4 -3
  249. package/lib/util/workspace-port-authentication.js.map +1 -1
  250. package/lib/workspace-cluster.d.ts +71 -0
  251. package/lib/workspace-cluster.d.ts.map +1 -0
  252. package/lib/workspace-cluster.js +16 -0
  253. package/lib/workspace-cluster.js.map +1 -0
  254. package/lib/workspace-instance.d.ts +27 -3
  255. package/lib/workspace-instance.d.ts.map +1 -1
  256. package/lib/workspace-instance.js +1 -1
  257. package/lib/wsready.d.ts +1 -1
  258. package/lib/wsready.js +2 -2
  259. package/package.json +33 -17
  260. package/pkg-yarn.lock +18 -9
  261. package/provenance-bundle.jsonl +2 -0
  262. package/src/accounting-protocol.ts +229 -0
  263. package/src/admin-protocol.ts +54 -6
  264. package/src/analytics.ts +54 -0
  265. package/src/auth.ts +27 -0
  266. package/src/context-url.spec.ts +39 -0
  267. package/src/context-url.ts +53 -0
  268. package/src/email-protocol.ts +3 -4
  269. package/src/encryption/container-module.ts +1 -1
  270. package/src/encryption/encryption-engine.spec.ts +1 -1
  271. package/src/encryption/encryption-engine.ts +1 -1
  272. package/src/encryption/encryption-service.ts +1 -1
  273. package/src/encryption/key-provider.ts +1 -1
  274. package/src/env.ts +11 -11
  275. package/src/gitpod-file-parser.spec.ts +1 -1
  276. package/src/gitpod-file-parser.ts +1 -1
  277. package/src/gitpod-service.ts +229 -40
  278. package/src/headless-workspace-log.ts +8 -12
  279. package/src/ide-frontend-service.ts +6 -2
  280. package/src/ide-protocol.ts +114 -0
  281. package/src/index.ts +8 -2
  282. package/src/installation-admin-protocol.ts +40 -0
  283. package/src/license-protocol.ts +1 -1
  284. package/src/messaging/browser/connection.ts +195 -14
  285. package/src/messaging/browser/window-connection.ts +1 -1
  286. package/src/messaging/client-call-metrics.ts +97 -0
  287. package/src/messaging/error.ts +19 -4
  288. package/src/messaging/handler.ts +12 -0
  289. package/src/messaging/node/connection.ts +21 -68
  290. package/src/messaging/proxy-factory.ts +14 -6
  291. package/src/oss-allowlist.ts +15 -0
  292. package/src/payment-protocol.ts +20 -0
  293. package/src/permission.ts +9 -8
  294. package/src/plans.ts +632 -0
  295. package/src/protocol.ts +222 -88
  296. package/src/snapshot-url.spec.ts +25 -0
  297. package/src/snapshot-url.ts +27 -0
  298. package/src/team-subscription-protocol.ts +113 -0
  299. package/src/teams-projects-protocol.ts +147 -0
  300. package/src/theia-plugins.ts +1 -1
  301. package/src/typings/globals.ts +1 -1
  302. package/src/util/analytics.ts +87 -0
  303. package/src/util/async-iterator.ts +1 -1
  304. package/src/util/cancelable.ts +1 -1
  305. package/src/util/date-time.ts +1 -1
  306. package/src/util/deep-partial.ts +1 -1
  307. package/src/util/deferred.ts +2 -2
  308. package/src/util/garbage-collected-cache.ts +10 -4
  309. package/src/util/generate-workspace-id.spec.ts +48 -0
  310. package/src/util/generate-workspace-id.ts +475 -0
  311. package/src/util/gitpod-cookie.ts +39 -0
  312. package/src/util/gitpod-host-url.spec.ts +49 -0
  313. package/src/util/gitpod-host-url.ts +36 -14
  314. package/src/util/grpc.ts +15 -0
  315. package/src/util/jaeger-client-types.ts +102 -0
  316. package/src/util/logging.ts +111 -39
  317. package/src/util/make-link.ts +1 -1
  318. package/src/util/parse-workspace-id.spec.ts +46 -5
  319. package/src/util/parse-workspace-id.ts +39 -8
  320. package/src/util/queue.spec.ts +2 -2
  321. package/src/util/queue.ts +1 -1
  322. package/src/util/repeat.ts +45 -0
  323. package/src/util/semaphore.ts +3 -3
  324. package/src/util/skip-if.ts +2 -2
  325. package/src/util/timeutil.spec.ts +1 -1
  326. package/src/util/timeutil.ts +5 -5
  327. package/src/util/tracing.spec.ts +83 -0
  328. package/src/util/tracing.ts +184 -19
  329. package/src/util/workspace-port-authentication.ts +1 -1
  330. package/src/workspace-cluster.ts +91 -0
  331. package/src/workspace-instance.ts +52 -14
  332. package/src/wsready.ts +2 -2
  333. package/lib/util/repeater.d.ts +0 -22
  334. package/lib/util/repeater.d.ts.map +0 -1
  335. package/lib/util/repeater.js +0 -118
  336. package/lib/util/repeater.js.map +0 -1
  337. package/lib/util/safe-promise.d.ts +0 -11
  338. package/lib/util/safe-promise.d.ts.map +0 -1
  339. package/lib/util/safe-promise.js +0 -34
  340. package/lib/util/safe-promise.js.map +0 -1
  341. package/lib/util/without.d.ts +0 -7
  342. package/lib/util/without.d.ts.map +0 -1
  343. package/lib/util/without.js.map +0 -1
  344. package/src/util/jaeger-client.d.ts +0 -105
  345. package/src/util/repeater.ts +0 -49
  346. package/src/util/safe-promise.ts +0 -26
@@ -0,0 +1,475 @@
1
+ /**
2
+ * Copyright (c) 2020 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 randomNumber = require("random-number-csprng");
7
+
8
+ export async function generateWorkspaceID(firstSegment?: string, secondSegment?: string): Promise<string> {
9
+ const firstSeg = clean(firstSegment) || await random(colors);
10
+ const secSeg = clean(secondSegment, Math.min(15, 23 - firstSeg.length)) || await random(animals);
11
+ return firstSeg+'-'+secSeg+'-'+(await random(characters, 11));
12
+ }
13
+
14
+ function clean(segment: string | undefined, maxChars: number = 15) {
15
+ if (!segment) {
16
+ return undefined;
17
+ }
18
+ segment = segment.toLowerCase();
19
+ let result = '';
20
+ for (let i =0; i < segment.length; i++) {
21
+ if (characters.indexOf(segment[i]) !== -1) {
22
+ result += segment[i];
23
+ }
24
+ }
25
+ if (result.length >= 2) {
26
+ return result.substring(0, maxChars);
27
+ }
28
+ }
29
+
30
+ async function random(array: string[], length: number = 1): Promise<string> {
31
+ var result = '';
32
+ for ( var i = 0; i < length; i++ ) {
33
+ result += array[await randomNumber(0, array.length-1)];
34
+ }
35
+ return result;
36
+ }
37
+
38
+ const characters = 'abcdefghijklmnopqrstuvwxyz0123456789'.split('');
39
+
40
+ export const colors = [
41
+ 'amaranth',
42
+ 'amber',
43
+ 'amethyst',
44
+ 'apricot',
45
+ 'aqua',
46
+ 'aquamarine',
47
+ 'azure',
48
+ 'beige',
49
+ 'black',
50
+ 'blue',
51
+ 'blush',
52
+ 'bronze',
53
+ 'brown',
54
+ 'chocolate',
55
+ 'coffee',
56
+ 'copper',
57
+ 'coral',
58
+ 'crimson',
59
+ 'cyan',
60
+ 'emerald',
61
+ 'fuchsia',
62
+ 'gold',
63
+ 'gray',
64
+ 'green',
65
+ 'harlequin',
66
+ 'indigo',
67
+ 'ivory',
68
+ 'jade',
69
+ 'kumquat',
70
+ 'lavender',
71
+ 'lime',
72
+ 'magenta',
73
+ 'maroon',
74
+ 'moccasin',
75
+ 'olive',
76
+ 'orange',
77
+ 'peach',
78
+ 'pink',
79
+ 'plum',
80
+ 'purple',
81
+ 'red',
82
+ 'rose',
83
+ 'salmon',
84
+ 'sapphire',
85
+ 'scarlet',
86
+ 'silver',
87
+ 'tan',
88
+ 'teal',
89
+ 'tomato',
90
+ 'turquoise',
91
+ 'violet',
92
+ 'white',
93
+ 'yellow',
94
+ ];
95
+
96
+ export const animals = [
97
+ 'canidae',
98
+ 'felidae',
99
+ 'cat',
100
+ 'cattle',
101
+ 'dog',
102
+ 'donkey',
103
+ 'goat',
104
+ 'horse',
105
+ 'pig',
106
+ 'rabbit',
107
+ 'aardvark',
108
+ 'aardwolf',
109
+ 'albatross',
110
+ 'alligator',
111
+ 'alpaca',
112
+ 'amphibian',
113
+ 'anaconda',
114
+ 'angelfish',
115
+ 'anglerfish',
116
+ 'ant',
117
+ 'anteater',
118
+ 'antelope',
119
+ 'antlion',
120
+ 'ape',
121
+ 'aphid',
122
+ 'armadillo',
123
+ 'asp',
124
+ 'baboon',
125
+ 'badger',
126
+ 'bandicoot',
127
+ 'barnacle',
128
+ 'barracuda',
129
+ 'basilisk',
130
+ 'bass',
131
+ 'bat',
132
+ 'bear',
133
+ 'beaver',
134
+ 'bedbug',
135
+ 'bee',
136
+ 'beetle',
137
+ 'bird',
138
+ 'bison',
139
+ 'blackbird',
140
+ 'boa',
141
+ 'boar',
142
+ 'bobcat',
143
+ 'bobolink',
144
+ 'bonobo',
145
+ 'booby',
146
+ 'bovid',
147
+ 'bug',
148
+ 'butterfly',
149
+ 'buzzard',
150
+ 'camel',
151
+ 'canid',
152
+ 'capybara',
153
+ 'cardinal',
154
+ 'caribou',
155
+ 'carp',
156
+ 'cat',
157
+ 'catshark',
158
+ 'caterpillar',
159
+ 'catfish',
160
+ 'cattle',
161
+ 'centipede',
162
+ 'cephalopod',
163
+ 'chameleon',
164
+ 'cheetah',
165
+ 'chickadee',
166
+ 'chicken',
167
+ 'chimpanzee',
168
+ 'chinchilla',
169
+ 'chipmunk',
170
+ 'clam',
171
+ 'clownfish',
172
+ 'cobra',
173
+ 'cockroach',
174
+ 'cod',
175
+ 'condor',
176
+ 'constrictor',
177
+ 'coral',
178
+ 'cougar',
179
+ 'cow',
180
+ 'coyote',
181
+ 'crab',
182
+ 'crane',
183
+ 'crawdad',
184
+ 'crayfish',
185
+ 'cricket',
186
+ 'crocodile',
187
+ 'crow',
188
+ 'cuckoo',
189
+ 'cicada',
190
+ 'damselfly',
191
+ 'deer',
192
+ 'dingo',
193
+ 'dinosaur',
194
+ 'dodo',
195
+ 'dog',
196
+ 'dolphin',
197
+ 'donkey',
198
+ 'dormouse',
199
+ 'dove',
200
+ 'dragonfly',
201
+ 'dragon',
202
+ 'duck',
203
+ 'eagle',
204
+ 'earthworm',
205
+ 'earwig',
206
+ 'echidna',
207
+ 'eel',
208
+ 'egret',
209
+ 'elephant',
210
+ 'elk',
211
+ 'emu',
212
+ 'ermine',
213
+ 'falcon',
214
+ 'ferret',
215
+ 'finch',
216
+ 'firefly',
217
+ 'fish',
218
+ 'flamingo',
219
+ 'flea',
220
+ 'fly',
221
+ 'flyingfish',
222
+ 'fowl',
223
+ 'fox',
224
+ 'frog',
225
+ 'gamefowl',
226
+ 'galliform',
227
+ 'gazelle',
228
+ 'gecko',
229
+ 'gerbil',
230
+ 'gibbon',
231
+ 'giraffe',
232
+ 'goat',
233
+ 'goldfish',
234
+ 'goose',
235
+ 'gopher',
236
+ 'gorilla',
237
+ 'grasshopper',
238
+ 'grouse',
239
+ 'guan',
240
+ 'guanaco',
241
+ 'guineafowl',
242
+ 'gull',
243
+ 'guppy',
244
+ 'haddock',
245
+ 'halibut',
246
+ 'hamster',
247
+ 'hare',
248
+ 'harrier',
249
+ 'hawk',
250
+ 'hedgehog',
251
+ 'heron',
252
+ 'herring',
253
+ 'hippopotamus',
254
+ 'hookworm',
255
+ 'hornet',
256
+ 'horse',
257
+ 'hoverfly',
258
+ 'hummingbird',
259
+ 'hyena',
260
+ 'iguana',
261
+ 'impala',
262
+ 'jackal',
263
+ 'jaguar',
264
+ 'jay',
265
+ 'jellyfish',
266
+ 'junglefowl',
267
+ 'kangaroo',
268
+ 'kingfisher',
269
+ 'kite',
270
+ 'kiwi',
271
+ 'koala',
272
+ 'koi',
273
+ 'krill',
274
+ 'ladybug',
275
+ 'lamprey',
276
+ 'landfowl',
277
+ 'lark',
278
+ 'leech',
279
+ 'lemming',
280
+ 'lemur',
281
+ 'leopard',
282
+ 'leopon',
283
+ 'limpet',
284
+ 'lion',
285
+ 'lizard',
286
+ 'llama',
287
+ 'lobster',
288
+ 'locust',
289
+ 'loon',
290
+ 'louse',
291
+ 'lungfish',
292
+ 'lynx',
293
+ 'macaw',
294
+ 'mackerel',
295
+ 'magpie',
296
+ 'mammal',
297
+ 'manatee',
298
+ 'mandrill',
299
+ 'marlin',
300
+ 'marmoset',
301
+ 'marmot',
302
+ 'marsupial',
303
+ 'marten',
304
+ 'mastodon',
305
+ 'meadowlark',
306
+ 'meerkat',
307
+ 'mink',
308
+ 'minnow',
309
+ 'mite',
310
+ 'mockingbird',
311
+ 'mole',
312
+ 'mollusk',
313
+ 'mongoose',
314
+ 'monkey',
315
+ 'moose',
316
+ 'mosquito',
317
+ 'moth',
318
+ 'mouse',
319
+ 'mule',
320
+ 'muskox',
321
+ 'narwhal',
322
+ 'newt',
323
+ 'nightingale',
324
+ 'ocelot',
325
+ 'octopus',
326
+ 'opossum',
327
+ 'orangutan',
328
+ 'orca',
329
+ 'ostrich',
330
+ 'otter',
331
+ 'owl',
332
+ 'ox',
333
+ 'panda',
334
+ 'panther',
335
+ 'parakeet',
336
+ 'parrot',
337
+ 'parrotfish',
338
+ 'partridge',
339
+ 'peacock',
340
+ 'peafowl',
341
+ 'pelican',
342
+ 'penguin',
343
+ 'perch',
344
+ 'pheasant',
345
+ 'pig',
346
+ 'pigeon',
347
+ 'pike',
348
+ 'pinniped',
349
+ 'piranha',
350
+ 'planarian',
351
+ 'platypus',
352
+ 'pony',
353
+ 'porcupine',
354
+ 'porpoise',
355
+ 'possum',
356
+ 'prawn',
357
+ 'primate',
358
+ 'ptarmigan',
359
+ 'puffin',
360
+ 'puma',
361
+ 'python',
362
+ 'quail',
363
+ 'quelea',
364
+ 'quokka',
365
+ 'rabbit',
366
+ 'raccoon',
367
+ 'rat',
368
+ 'rattlesnake',
369
+ 'raven',
370
+ 'reindeer',
371
+ 'reptile',
372
+ 'rhinoceros',
373
+ 'roadrunner',
374
+ 'rodent',
375
+ 'rook',
376
+ 'rooster',
377
+ 'roundworm',
378
+ 'sailfish',
379
+ 'salamander',
380
+ 'salmon',
381
+ 'sawfish',
382
+ 'scallop',
383
+ 'scorpion',
384
+ 'seahorse',
385
+ 'shark',
386
+ 'sheep',
387
+ 'shrew',
388
+ 'shrimp',
389
+ 'silkworm',
390
+ 'silverfish',
391
+ 'skink',
392
+ 'skunk',
393
+ 'sloth',
394
+ 'slug',
395
+ 'smelt',
396
+ 'snail',
397
+ 'snake',
398
+ 'snipe',
399
+ 'sole',
400
+ 'sparrow',
401
+ 'spider',
402
+ 'spoonbill',
403
+ 'squid',
404
+ 'squirrel',
405
+ 'starfish',
406
+ 'stingray',
407
+ 'stoat',
408
+ 'stork',
409
+ 'sturgeon',
410
+ 'swallow',
411
+ 'swan',
412
+ 'swift',
413
+ 'swordfish',
414
+ 'swordtail',
415
+ 'tahr',
416
+ 'takin',
417
+ 'tapir',
418
+ 'tarantula',
419
+ 'tarsier',
420
+ 'termite',
421
+ 'tern',
422
+ 'thrush',
423
+ 'tick',
424
+ 'tiger',
425
+ 'tiglon',
426
+ 'toad',
427
+ 'tortoise',
428
+ 'toucan',
429
+ 'trout',
430
+ 'tuna',
431
+ 'turkey',
432
+ 'turtle',
433
+ 'tyrannosaurus',
434
+ 'urial',
435
+ 'vicuna',
436
+ 'viper',
437
+ 'vole',
438
+ 'vulture',
439
+ 'wallaby',
440
+ 'walrus',
441
+ 'wasp',
442
+ 'warbler',
443
+ 'weasel',
444
+ 'whale',
445
+ 'whippet',
446
+ 'whitefish',
447
+ 'wildcat',
448
+ 'wildebeest',
449
+ 'wildfowl',
450
+ 'wolf',
451
+ 'wolverine',
452
+ 'wombat',
453
+ 'woodpecker',
454
+ 'worm',
455
+ 'wren',
456
+ 'xerinae',
457
+ 'yak',
458
+ 'zebra',
459
+ 'alpaca',
460
+ 'cat',
461
+ 'cattle',
462
+ 'chicken',
463
+ 'dog',
464
+ 'donkey',
465
+ 'ferret',
466
+ 'gayal',
467
+ 'goldfish',
468
+ 'guppy',
469
+ 'horse',
470
+ 'koi',
471
+ 'llama',
472
+ 'sheep',
473
+ 'yak',
474
+ 'unicorn',
475
+ ]
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Copyright (c) 2021 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 * as cookie from 'cookie';
7
+
8
+
9
+ /**
10
+ * This cookie indicates whether the connected client is a Gitpod user (= "has logged in within the last year") or not.
11
+ * This is used by "gitpod.io" and "www.gitpod.io" to display different content/buttons.
12
+ */
13
+ export const NAME = "gitpod-user";
14
+ export const VALUE = "true";
15
+
16
+ /**
17
+ * @param domain The domain the Gitpod installation is installed onto
18
+ * @returns
19
+ */
20
+ export function options(domain: string): cookie.CookieSerializeOptions {
21
+ // Reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
22
+ return {
23
+ path: "/", // make sure we send the cookie to all sub-pages
24
+ httpOnly: false,
25
+ secure: false,
26
+ maxAge: 60 * 60 * 24 * 365, // 1 year
27
+ sameSite: "lax", // default: true. "Lax" needed to ensure we see cookies from users that neavigate to gitpod.io from external sites
28
+ domain: `.${domain}`, // explicilty include subdomains to not only cover "gitpod.io", but also "www.gitpod.io" or workspaces
29
+ };
30
+ };
31
+
32
+ export function generateCookie(domain: string): string {
33
+ return cookie.serialize(NAME, VALUE, options(domain));
34
+ };
35
+
36
+ export function isPresent(cookies: string): boolean {
37
+ // needs to match the old (gitpod-user=loggedIn) and new (gitpod-user=true) values to ensure a smooth transition during rollout.
38
+ return !!cookies.match(`${NAME}=`);
39
+ };
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Copyright (c) 2020 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 * as chai from 'chai';
8
+ import { suite, test } from 'mocha-typescript';
9
+ import { GitpodHostUrl } from './gitpod-host-url';
10
+ const expect = chai.expect;
11
+
12
+ @suite
13
+ export class GitpodHostUrlTest {
14
+
15
+ @test public parseWorkspaceId_pathBased() {
16
+ const actual = GitpodHostUrl.fromWorkspaceUrl("http://35.223.201.195/workspace/bc77e03d-c781-4235-bca0-e24087f5e472/").workspaceId;
17
+ expect(actual).to.equal("bc77e03d-c781-4235-bca0-e24087f5e472");
18
+ }
19
+
20
+ @test public parseWorkspaceId_hosts_withEnvVarsInjected() {
21
+ const actual = GitpodHostUrl.fromWorkspaceUrl("https://gray-grasshopper-nfbitfia.ws-eu02.gitpod-staging.com/#passedin=test%20value/https://github.com/gitpod-io/gitpod-test-repo").workspaceId;
22
+ expect(actual).to.equal("gray-grasshopper-nfbitfia");
23
+ }
24
+
25
+ @test public async testWithoutWorkspacePrefix() {
26
+ expect(GitpodHostUrl.fromWorkspaceUrl("https://3000-moccasin-ferret-155799b3.ws-eu02.gitpod-staging.com/").withoutWorkspacePrefix().toString()).to.equal("https://gitpod-staging.com/");
27
+ }
28
+
29
+ @test public async testWithoutWorkspacePrefix2() {
30
+ expect(GitpodHostUrl.fromWorkspaceUrl("https://gitpod-staging.com/").withoutWorkspacePrefix().toString()).to.equal("https://gitpod-staging.com/");
31
+ }
32
+
33
+ @test public async testWithoutWorkspacePrefix3() {
34
+ expect(GitpodHostUrl.fromWorkspaceUrl("https://gray-rook-5523v5d8.ws-dev.my-branch-1234.staging.gitpod-dev.com/").withoutWorkspacePrefix().toString()).to.equal("https://my-branch-1234.staging.gitpod-dev.com/");
35
+ }
36
+
37
+ @test public async testWithoutWorkspacePrefix4() {
38
+ expect(GitpodHostUrl.fromWorkspaceUrl("https://my-branch-1234.staging.gitpod-dev.com/").withoutWorkspacePrefix().toString()).to.equal("https://my-branch-1234.staging.gitpod-dev.com/");
39
+ }
40
+
41
+ @test public async testWithoutWorkspacePrefix5() {
42
+ expect(GitpodHostUrl.fromWorkspaceUrl("https://abc-nice-brunch-4224.staging.gitpod-dev.com/").withoutWorkspacePrefix().toString()).to.equal("https://abc-nice-brunch-4224.staging.gitpod-dev.com/");
43
+ }
44
+
45
+ @test public async testWithoutWorkspacePrefix6() {
46
+ expect(GitpodHostUrl.fromWorkspaceUrl("https://gray-rook-5523v5d8.ws-dev.abc-nice-brunch-4224.staging.gitpod-dev.com/").withoutWorkspacePrefix().toString()).to.equal("https://abc-nice-brunch-4224.staging.gitpod-dev.com/");
47
+ }
48
+ }
49
+ module.exports = new GitpodHostUrlTest()
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2020 TypeFox GmbH. All rights reserved.
2
+ * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
@@ -12,7 +12,13 @@ export interface UrlChange {
12
12
  }
13
13
  export type UrlUpdate = UrlChange | Partial<URL>;
14
14
 
15
- export const workspaceIDRegex = /([a-z0-9]{4,8}-)+([a-z0-9]{12})/;
15
+ const baseWorkspaceIDRegex = "(([a-f][0-9a-f]{7}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})|([0-9a-z]{2,16}-[0-9a-z]{2,16}-[0-9a-z]{8,11}))";
16
+
17
+ // this pattern matches v4 UUIDs as well as the new generated workspace ids (e.g. pink-panda-ns35kd21)
18
+ const workspaceIDRegex = RegExp(`^${baseWorkspaceIDRegex}$`);
19
+
20
+ // this pattern matches URL prefixes of workspaces
21
+ const workspaceUrlPrefixRegex = RegExp(`^([0-9]{4,6}-)?${baseWorkspaceIDRegex}\\.`);
16
22
 
17
23
  export class GitpodHostUrl {
18
24
  readonly url: URL;
@@ -30,6 +36,10 @@ export class GitpodHostUrl {
30
36
  }
31
37
  }
32
38
 
39
+ static fromWorkspaceUrl(url: string) {
40
+ return new GitpodHostUrl(new URL(url));
41
+ }
42
+
33
43
  withWorkspacePrefix(workspaceId: string, region: string) {
34
44
  return this.withDomainPrefix(`${workspaceId}.ws-${region}.`);
35
45
  }
@@ -39,7 +49,7 @@ export class GitpodHostUrl {
39
49
  }
40
50
 
41
51
  withoutWorkspacePrefix(): GitpodHostUrl {
42
- if (!this.url.host.match(workspaceIDRegex)) {
52
+ if (!this.url.host.match(workspaceUrlPrefixRegex)) {
43
53
  // URL has no workspace prefix
44
54
  return this;
45
55
  }
@@ -75,27 +85,27 @@ export class GitpodHostUrl {
75
85
  }
76
86
 
77
87
  asDashboard(): GitpodHostUrl {
78
- return this.with(url => ({ pathname: '/workspaces/' }));
88
+ return this.with(url => ({ pathname: '/' }));
79
89
  }
80
90
 
81
91
  asLogin(): GitpodHostUrl {
82
- return this.with(url => ({ pathname: '/login/' }));
92
+ return this.with(url => ({ pathname: '/login' }));
83
93
  }
84
94
 
85
95
  asUpgradeSubscription(): GitpodHostUrl {
86
- return this.with(url => ({ pathname: '/upgrade-subscription/' }));
96
+ return this.with(url => ({ pathname: '/plans' }));
87
97
  }
88
98
 
89
99
  asAccessControl(): GitpodHostUrl {
90
- return this.with(url => ({ pathname: '/access-control/' }));
100
+ return this.with(url => ({ pathname: '/integrations' }));
91
101
  }
92
102
 
93
103
  asSettings(): GitpodHostUrl {
94
- return this.with(url => ({ pathname: '/settings/' }));
104
+ return this.with(url => ({ pathname: '/settings' }));
95
105
  }
96
106
 
97
- asGraphQLApi(): GitpodHostUrl {
98
- return this.with(url => ({ pathname: '/graphql/' }));
107
+ asPreferences(): GitpodHostUrl {
108
+ return this.with(url => ({ pathname: '/preferences' }));
99
109
  }
100
110
 
101
111
  asStart(workspaceId = this.workspaceId): GitpodHostUrl {
@@ -123,9 +133,13 @@ export class GitpodHostUrl {
123
133
 
124
134
  get workspaceId(): string | undefined {
125
135
  const hostSegs = this.url.host.split(".");
126
- if (hostSegs.length > 1 && hostSegs[0].match(workspaceIDRegex)) {
127
- // URL has a workspace prefix
128
- return hostSegs[0];
136
+ if (hostSegs.length > 1) {
137
+ const matchResults = hostSegs[0].match(workspaceIDRegex);
138
+ if (matchResults) {
139
+ // URL has a workspace prefix
140
+ // port prefixes are excluded
141
+ return matchResults[0];
142
+ }
129
143
  }
130
144
 
131
145
  const pathSegs = this.url.pathname.split("/")
@@ -136,7 +150,7 @@ export class GitpodHostUrl {
136
150
  return undefined;
137
151
  }
138
152
 
139
- get blobServe(): boolean {
153
+ get blobServe(): boolean {
140
154
  const hostSegments = this.url.host.split(".");
141
155
  if (hostSegments[0] === 'blobserve') {
142
156
  return true;
@@ -146,4 +160,12 @@ export class GitpodHostUrl {
146
160
  return pathSegments[0] === "blobserve";
147
161
  }
148
162
 
163
+ asSorry(message: string) {
164
+ return this.with({ pathname: '/sorry', hash: message });
165
+ }
166
+
167
+ asApiLogout(): GitpodHostUrl {
168
+ return this.withApi(url => ({ pathname: '/logout/' }));
169
+ }
170
+
149
171
  }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright (c) 2021 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
+ export const defaultGRPCOptions = {
8
+ "grpc.keepalive_timeout_ms": 10000,
9
+ "grpc.keepalive_time_ms": 60000,
10
+ "grpc.http2.min_time_between_pings_ms": 10000,
11
+ "grpc.keepalive_permit_without_calls": 1,
12
+ "grpc-node.max_session_memory": 50,
13
+ "grpc.max_reconnect_backoff_ms": 5000,
14
+ "grpc.max_receive_message_length": 1024 * 1024 * 16,
15
+ };