@gitpod/gitpod-protocol 0.1.5-v0.6.0-beta4 → 0.1.5-vn-implement-jetbrains-terminals.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 (299) hide show
  1. package/data/builtin-theia-plugins.json +9 -9
  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 +31 -4
  8. package/lib/admin-protocol.d.ts.map +1 -1
  9. package/lib/admin-protocol.js +15 -0
  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 +31 -0
  20. package/lib/context-url.d.ts.map +1 -0
  21. package/lib/context-url.js +102 -0
  22. package/lib/context-url.js.map +1 -0
  23. package/lib/context-url.spec.d.ts +14 -0
  24. package/lib/context-url.spec.d.ts.map +1 -0
  25. package/lib/context-url.spec.js +94 -0
  26. package/lib/context-url.spec.js.map +1 -0
  27. package/lib/email-protocol.d.ts +1 -2
  28. package/lib/email-protocol.d.ts.map +1 -1
  29. package/lib/email-protocol.js +4 -4
  30. package/lib/email-protocol.js.map +1 -1
  31. package/lib/encryption/container-module.js +5 -4
  32. package/lib/encryption/container-module.js.map +1 -1
  33. package/lib/encryption/encryption-engine.js +19 -20
  34. package/lib/encryption/encryption-engine.js.map +1 -1
  35. package/lib/encryption/encryption-engine.spec.js +29 -36
  36. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  37. package/lib/encryption/encryption-service.js +29 -43
  38. package/lib/encryption/encryption-service.js.map +1 -1
  39. package/lib/encryption/key-provider.js +25 -30
  40. package/lib/encryption/key-provider.js.map +1 -1
  41. package/lib/env.d.ts +1 -2
  42. package/lib/env.d.ts.map +1 -1
  43. package/lib/env.js +20 -21
  44. package/lib/env.js.map +1 -1
  45. package/lib/gitpod-file-parser.js +25 -41
  46. package/lib/gitpod-file-parser.js.map +1 -1
  47. package/lib/gitpod-file-parser.spec.js +116 -116
  48. package/lib/gitpod-file-parser.spec.js.map +1 -1
  49. package/lib/gitpod-service.d.ts +162 -20
  50. package/lib/gitpod-service.d.ts.map +1 -1
  51. package/lib/gitpod-service.js +170 -256
  52. package/lib/gitpod-service.js.map +1 -1
  53. package/lib/headless-workspace-log.d.ts +8 -11
  54. package/lib/headless-workspace-log.d.ts.map +1 -1
  55. package/lib/headless-workspace-log.js +4 -7
  56. package/lib/headless-workspace-log.js.map +1 -1
  57. package/lib/ide-frontend-service.d.ts +4 -0
  58. package/lib/ide-frontend-service.d.ts.map +1 -1
  59. package/lib/ide-protocol.d.ts +105 -0
  60. package/lib/ide-protocol.d.ts.map +1 -0
  61. package/lib/ide-protocol.js +8 -0
  62. package/lib/ide-protocol.js.map +1 -0
  63. package/lib/index.d.ts +6 -0
  64. package/lib/index.d.ts.map +1 -1
  65. package/lib/index.js +7 -1
  66. package/lib/index.js.map +1 -1
  67. package/lib/installation-admin-protocol.d.ts +21 -0
  68. package/lib/installation-admin-protocol.d.ts.map +1 -0
  69. package/lib/installation-admin-protocol.js +30 -0
  70. package/lib/installation-admin-protocol.js.map +1 -0
  71. package/lib/messaging/browser/connection.d.ts +5 -3
  72. package/lib/messaging/browser/connection.d.ts.map +1 -1
  73. package/lib/messaging/browser/connection.js +183 -33
  74. package/lib/messaging/browser/connection.js.map +1 -1
  75. package/lib/messaging/browser/window-connection.js +35 -55
  76. package/lib/messaging/browser/window-connection.js.map +1 -1
  77. package/lib/messaging/client-call-metrics.d.ts +35 -0
  78. package/lib/messaging/client-call-metrics.d.ts.map +1 -0
  79. package/lib/messaging/client-call-metrics.js +83 -0
  80. package/lib/messaging/client-call-metrics.js.map +1 -0
  81. package/lib/messaging/error.d.ts +5 -1
  82. package/lib/messaging/error.d.ts.map +1 -1
  83. package/lib/messaging/error.js +10 -2
  84. package/lib/messaging/error.js.map +1 -1
  85. package/lib/messaging/handler.d.ts +10 -0
  86. package/lib/messaging/handler.d.ts.map +1 -1
  87. package/lib/messaging/node/connection.d.ts +1 -17
  88. package/lib/messaging/node/connection.d.ts.map +1 -1
  89. package/lib/messaging/node/connection.js +23 -59
  90. package/lib/messaging/node/connection.js.map +1 -1
  91. package/lib/messaging/proxy-factory.d.ts +2 -0
  92. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  93. package/lib/messaging/proxy-factory.js +74 -159
  94. package/lib/messaging/proxy-factory.js.map +1 -1
  95. package/lib/oss-allowlist.d.ts +14 -0
  96. package/lib/oss-allowlist.d.ts.map +1 -0
  97. package/lib/oss-allowlist.js +8 -0
  98. package/lib/oss-allowlist.js.map +1 -0
  99. package/lib/payment-protocol.d.ts +18 -0
  100. package/lib/payment-protocol.d.ts.map +1 -0
  101. package/lib/payment-protocol.js +13 -0
  102. package/lib/payment-protocol.js.map +1 -0
  103. package/lib/permission.d.ts +5 -3
  104. package/lib/permission.d.ts.map +1 -1
  105. package/lib/permission.js +18 -17
  106. package/lib/permission.js.map +1 -1
  107. package/lib/plans.d.ts +210 -0
  108. package/lib/plans.d.ts.map +1 -0
  109. package/lib/plans.js +570 -0
  110. package/lib/plans.js.map +1 -0
  111. package/lib/protocol.d.ts +120 -58
  112. package/lib/protocol.d.ts.map +1 -1
  113. package/lib/protocol.js +116 -130
  114. package/lib/protocol.js.map +1 -1
  115. package/lib/snapshot-url.d.ts +14 -0
  116. package/lib/snapshot-url.d.ts.map +1 -0
  117. package/lib/snapshot-url.js +26 -0
  118. package/lib/snapshot-url.js.map +1 -0
  119. package/{src/util/without.ts → lib/snapshot-url.spec.d.ts} +2 -3
  120. package/lib/snapshot-url.spec.d.ts.map +1 -0
  121. package/lib/snapshot-url.spec.js +41 -0
  122. package/lib/snapshot-url.spec.js.map +1 -0
  123. package/lib/team-subscription-protocol.d.ts +73 -0
  124. package/lib/team-subscription-protocol.d.ts.map +1 -0
  125. package/lib/team-subscription-protocol.js +63 -0
  126. package/lib/team-subscription-protocol.js.map +1 -0
  127. package/lib/teams-projects-protocol.d.ts +113 -0
  128. package/lib/teams-projects-protocol.d.ts.map +1 -0
  129. package/lib/teams-projects-protocol.js +30 -0
  130. package/lib/teams-projects-protocol.js.map +1 -0
  131. package/lib/util/analytics.d.ts +8 -0
  132. package/lib/util/analytics.d.ts.map +1 -0
  133. package/lib/util/analytics.js +79 -0
  134. package/lib/util/analytics.js.map +1 -0
  135. package/lib/util/async-iterator.js +55 -133
  136. package/lib/util/async-iterator.js.map +1 -1
  137. package/lib/util/cancelable.js +17 -59
  138. package/lib/util/cancelable.js.map +1 -1
  139. package/lib/util/date-time.js +8 -8
  140. package/lib/util/date-time.js.map +1 -1
  141. package/lib/util/deferred.js +10 -12
  142. package/lib/util/deferred.js.map +1 -1
  143. package/lib/util/disposable.js +26 -39
  144. package/lib/util/disposable.js.map +1 -1
  145. package/lib/util/event.js +58 -74
  146. package/lib/util/event.js.map +1 -1
  147. package/lib/util/garbage-collected-cache.d.ts +1 -0
  148. package/lib/util/garbage-collected-cache.d.ts.map +1 -1
  149. package/lib/util/garbage-collected-cache.js +26 -46
  150. package/lib/util/garbage-collected-cache.js.map +1 -1
  151. package/lib/util/generate-workspace-id.d.ts +4 -0
  152. package/lib/util/generate-workspace-id.d.ts.map +1 -0
  153. package/lib/util/generate-workspace-id.js +487 -0
  154. package/lib/util/generate-workspace-id.js.map +1 -0
  155. package/lib/util/{without.d.ts → generate-workspace-id.spec.d.ts} +2 -2
  156. package/lib/util/generate-workspace-id.spec.d.ts.map +1 -0
  157. package/lib/util/generate-workspace-id.spec.js +87 -0
  158. package/lib/util/generate-workspace-id.spec.js.map +1 -0
  159. package/lib/util/gitpod-cookie.d.ts +20 -0
  160. package/lib/util/gitpod-cookie.d.ts.map +1 -0
  161. package/lib/util/gitpod-cookie.js +44 -0
  162. package/lib/util/gitpod-cookie.js.map +1 -0
  163. package/lib/util/gitpod-host-url.d.ts +2 -2
  164. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  165. package/lib/util/gitpod-host-url.js +96 -95
  166. package/lib/util/gitpod-host-url.js.map +1 -1
  167. package/lib/util/gitpod-host-url.spec.d.ts +8 -1
  168. package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
  169. package/lib/util/gitpod-host-url.spec.js +104 -22
  170. package/lib/util/gitpod-host-url.spec.js.map +1 -1
  171. package/lib/util/grpc.d.ts +15 -0
  172. package/lib/util/grpc.d.ts.map +1 -0
  173. package/lib/util/grpc.js +18 -0
  174. package/lib/util/grpc.js.map +1 -0
  175. package/lib/util/jaeger-client-types.d.ts +68 -0
  176. package/lib/util/jaeger-client-types.d.ts.map +1 -0
  177. package/lib/util/{without.js → jaeger-client-types.js} +1 -1
  178. package/lib/util/jaeger-client-types.js.map +1 -0
  179. package/lib/util/logging.d.ts +49 -33
  180. package/lib/util/logging.d.ts.map +1 -1
  181. package/lib/util/logging.js +107 -110
  182. package/lib/util/logging.js.map +1 -1
  183. package/lib/util/make-link.js +2 -2
  184. package/lib/util/make-link.js.map +1 -1
  185. package/lib/util/parse-workspace-id.d.ts +13 -3
  186. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  187. package/lib/util/parse-workspace-id.js +38 -8
  188. package/lib/util/parse-workspace-id.js.map +1 -1
  189. package/lib/util/parse-workspace-id.spec.d.ts +8 -0
  190. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  191. package/lib/util/parse-workspace-id.spec.js +127 -47
  192. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  193. package/lib/util/queue.js +16 -55
  194. package/lib/util/queue.js.map +1 -1
  195. package/lib/util/queue.spec.js +144 -288
  196. package/lib/util/queue.spec.js.map +1 -1
  197. package/lib/util/repeat.d.ts +15 -0
  198. package/lib/util/repeat.d.ts.map +1 -0
  199. package/lib/util/repeat.js +55 -0
  200. package/lib/util/repeat.js.map +1 -0
  201. package/lib/util/semaphore.js +15 -46
  202. package/lib/util/semaphore.js.map +1 -1
  203. package/lib/util/skip-if.js +6 -6
  204. package/lib/util/skip-if.js.map +1 -1
  205. package/lib/util/timeutil.js +28 -16
  206. package/lib/util/timeutil.js.map +1 -1
  207. package/lib/util/timeutil.spec.js +21 -24
  208. package/lib/util/timeutil.spec.js.map +1 -1
  209. package/lib/util/tracing.d.ts +51 -5
  210. package/lib/util/tracing.d.ts.map +1 -1
  211. package/lib/util/tracing.js +197 -62
  212. package/lib/util/tracing.js.map +1 -1
  213. package/lib/util/tracing.spec.d.ts +7 -0
  214. package/lib/util/tracing.spec.d.ts.map +1 -0
  215. package/lib/util/tracing.spec.js +121 -0
  216. package/lib/util/tracing.spec.js.map +1 -0
  217. package/lib/util/workspace-port-authentication.js +3 -2
  218. package/lib/util/workspace-port-authentication.js.map +1 -1
  219. package/lib/workspace-cluster.d.ts +71 -0
  220. package/lib/workspace-cluster.d.ts.map +1 -0
  221. package/lib/workspace-cluster.js +16 -0
  222. package/lib/workspace-cluster.js.map +1 -0
  223. package/lib/workspace-instance.d.ts +26 -2
  224. package/lib/workspace-instance.d.ts.map +1 -1
  225. package/lib/wsready.d.ts +1 -1
  226. package/lib/wsready.js +2 -2
  227. package/package.json +33 -17
  228. package/pkg-yarn.lock +18 -9
  229. package/provenance-bundle.jsonl +2 -0
  230. package/src/accounting-protocol.ts +229 -0
  231. package/src/admin-protocol.ts +53 -5
  232. package/src/analytics.ts +54 -0
  233. package/src/auth.ts +27 -0
  234. package/src/context-url.spec.ts +53 -0
  235. package/src/context-url.ts +107 -0
  236. package/src/email-protocol.ts +2 -3
  237. package/src/env.ts +10 -10
  238. package/src/gitpod-service.ts +237 -38
  239. package/src/headless-workspace-log.ts +7 -11
  240. package/src/ide-frontend-service.ts +5 -1
  241. package/src/ide-protocol.ts +119 -0
  242. package/src/index.ts +7 -1
  243. package/src/installation-admin-protocol.ts +35 -0
  244. package/src/messaging/browser/connection.ts +195 -14
  245. package/src/messaging/client-call-metrics.ts +97 -0
  246. package/src/messaging/error.ts +14 -2
  247. package/src/messaging/handler.ts +12 -0
  248. package/src/messaging/node/connection.ts +21 -68
  249. package/src/messaging/proxy-factory.ts +14 -6
  250. package/src/oss-allowlist.ts +15 -0
  251. package/src/payment-protocol.ts +20 -0
  252. package/src/permission.ts +7 -6
  253. package/src/plans.ts +632 -0
  254. package/src/protocol.ts +194 -87
  255. package/src/snapshot-url.spec.ts +25 -0
  256. package/src/snapshot-url.ts +27 -0
  257. package/src/team-subscription-protocol.ts +113 -0
  258. package/src/teams-projects-protocol.ts +147 -0
  259. package/src/util/analytics.ts +87 -0
  260. package/src/util/deferred.ts +1 -1
  261. package/src/util/garbage-collected-cache.ts +9 -3
  262. package/src/util/generate-workspace-id.spec.ts +48 -0
  263. package/src/util/generate-workspace-id.ts +475 -0
  264. package/src/util/gitpod-cookie.ts +39 -0
  265. package/src/util/gitpod-host-url.spec.ts +30 -1
  266. package/src/util/gitpod-host-url.ts +27 -13
  267. package/src/util/grpc.ts +15 -0
  268. package/src/util/jaeger-client-types.ts +102 -0
  269. package/src/util/logging.ts +102 -38
  270. package/src/util/parse-workspace-id.spec.ts +45 -4
  271. package/src/util/parse-workspace-id.ts +38 -7
  272. package/src/util/queue.spec.ts +1 -1
  273. package/src/util/repeat.ts +45 -0
  274. package/src/util/semaphore.ts +2 -2
  275. package/src/util/skip-if.ts +1 -1
  276. package/src/util/timeutil.ts +4 -4
  277. package/src/util/tracing.spec.ts +83 -0
  278. package/src/util/tracing.ts +183 -17
  279. package/src/workspace-cluster.ts +91 -0
  280. package/src/workspace-instance.ts +51 -13
  281. package/src/wsready.ts +2 -2
  282. package/lib/messaging/connection-error-handler.d.ts +0 -27
  283. package/lib/messaging/connection-error-handler.d.ts.map +0 -1
  284. package/lib/messaging/connection-error-handler.js +0 -46
  285. package/lib/messaging/connection-error-handler.js.map +0 -1
  286. package/lib/util/repeater.d.ts +0 -22
  287. package/lib/util/repeater.d.ts.map +0 -1
  288. package/lib/util/repeater.js +0 -118
  289. package/lib/util/repeater.js.map +0 -1
  290. package/lib/util/safe-promise.d.ts +0 -11
  291. package/lib/util/safe-promise.d.ts.map +0 -1
  292. package/lib/util/safe-promise.js +0 -34
  293. package/lib/util/safe-promise.js.map +0 -1
  294. package/lib/util/without.d.ts.map +0 -1
  295. package/lib/util/without.js.map +0 -1
  296. package/src/messaging/connection-error-handler.ts +0 -62
  297. package/src/util/jaeger-client.d.ts +0 -105
  298. package/src/util/repeater.ts +0 -49
  299. 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
+ };
@@ -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
  */
@@ -16,5 +16,34 @@ export class GitpodHostUrlTest {
16
16
  const actual = GitpodHostUrl.fromWorkspaceUrl("http://35.223.201.195/workspace/bc77e03d-c781-4235-bca0-e24087f5e472/").workspaceId;
17
17
  expect(actual).to.equal("bc77e03d-c781-4235-bca0-e24087f5e472");
18
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
+ }
19
48
  }
20
49
  module.exports = new GitpodHostUrlTest()
@@ -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;
@@ -43,7 +49,7 @@ export class GitpodHostUrl {
43
49
  }
44
50
 
45
51
  withoutWorkspacePrefix(): GitpodHostUrl {
46
- if (!this.url.host.match(workspaceIDRegex)) {
52
+ if (!this.url.host.match(workspaceUrlPrefixRegex)) {
47
53
  // URL has no workspace prefix
48
54
  return this;
49
55
  }
@@ -79,27 +85,27 @@ export class GitpodHostUrl {
79
85
  }
80
86
 
81
87
  asDashboard(): GitpodHostUrl {
82
- return this.with(url => ({ pathname: '/workspaces/' }));
88
+ return this.with(url => ({ pathname: '/' }));
83
89
  }
84
90
 
85
91
  asLogin(): GitpodHostUrl {
86
- return this.with(url => ({ pathname: '/login/' }));
92
+ return this.with(url => ({ pathname: '/login' }));
87
93
  }
88
94
 
89
95
  asUpgradeSubscription(): GitpodHostUrl {
90
- return this.with(url => ({ pathname: '/upgrade-subscription/' }));
96
+ return this.with(url => ({ pathname: '/plans' }));
91
97
  }
92
98
 
93
99
  asAccessControl(): GitpodHostUrl {
94
- return this.with(url => ({ pathname: '/access-control/' }));
100
+ return this.with(url => ({ pathname: '/integrations' }));
95
101
  }
96
102
 
97
103
  asSettings(): GitpodHostUrl {
98
- return this.with(url => ({ pathname: '/settings/' }));
104
+ return this.with(url => ({ pathname: '/settings' }));
99
105
  }
100
106
 
101
- asGraphQLApi(): GitpodHostUrl {
102
- return this.with(url => ({ pathname: '/graphql/' }));
107
+ asPreferences(): GitpodHostUrl {
108
+ return this.with(url => ({ pathname: '/preferences' }));
103
109
  }
104
110
 
105
111
  asStart(workspaceId = this.workspaceId): GitpodHostUrl {
@@ -127,9 +133,13 @@ export class GitpodHostUrl {
127
133
 
128
134
  get workspaceId(): string | undefined {
129
135
  const hostSegs = this.url.host.split(".");
130
- if (hostSegs.length > 1 && hostSegs[0].match(workspaceIDRegex)) {
131
- // URL has a workspace prefix
132
- 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
+ }
133
143
  }
134
144
 
135
145
  const pathSegs = this.url.pathname.split("/")
@@ -140,7 +150,7 @@ export class GitpodHostUrl {
140
150
  return undefined;
141
151
  }
142
152
 
143
- get blobServe(): boolean {
153
+ get blobServe(): boolean {
144
154
  const hostSegments = this.url.host.split(".");
145
155
  if (hostSegments[0] === 'blobserve') {
146
156
  return true;
@@ -154,4 +164,8 @@ export class GitpodHostUrl {
154
164
  return this.with({ pathname: '/sorry', hash: message });
155
165
  }
156
166
 
167
+ asApiLogout(): GitpodHostUrl {
168
+ return this.withApi(url => ({ pathname: '/logout/' }));
169
+ }
170
+
157
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
+ };