@gitpod/gitpod-protocol 0.1.5-v0.6.0-beta4 → 0.1.5-vn-6525.75

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 (344) hide show
  1. package/data/gitpod-schema.json +68 -26
  2. package/lib/accounting-protocol.d.ts +155 -0
  3. package/lib/accounting-protocol.d.ts.map +1 -0
  4. package/lib/accounting-protocol.js +100 -0
  5. package/lib/accounting-protocol.js.map +1 -0
  6. package/lib/admin-protocol.d.ts +33 -4
  7. package/lib/admin-protocol.d.ts.map +1 -1
  8. package/lib/admin-protocol.js +15 -0
  9. package/lib/admin-protocol.js.map +1 -1
  10. package/lib/analytics.d.ts +44 -0
  11. package/lib/analytics.d.ts.map +1 -0
  12. package/lib/analytics.js +10 -0
  13. package/lib/analytics.js.map +1 -0
  14. package/lib/auth.d.ts +25 -0
  15. package/lib/auth.d.ts.map +1 -0
  16. package/lib/auth.js +16 -0
  17. package/lib/auth.js.map +1 -0
  18. package/lib/context-url.d.ts +31 -0
  19. package/lib/context-url.d.ts.map +1 -0
  20. package/lib/context-url.js +102 -0
  21. package/lib/context-url.js.map +1 -0
  22. package/lib/context-url.spec.d.ts +14 -0
  23. package/lib/context-url.spec.d.ts.map +1 -0
  24. package/lib/context-url.spec.js +109 -0
  25. package/lib/context-url.spec.js.map +1 -0
  26. package/lib/email-protocol.d.ts +1 -2
  27. package/lib/email-protocol.d.ts.map +1 -1
  28. package/lib/email-protocol.js +4 -4
  29. package/lib/email-protocol.js.map +1 -1
  30. package/lib/encryption/container-module.d.ts.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.d.ts.map +1 -1
  34. package/lib/encryption/encryption-engine.js +25 -26
  35. package/lib/encryption/encryption-engine.js.map +1 -1
  36. package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
  37. package/lib/encryption/encryption-engine.spec.js +29 -37
  38. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  39. package/lib/encryption/encryption-service.d.ts.map +1 -1
  40. package/lib/encryption/encryption-service.js +30 -44
  41. package/lib/encryption/encryption-service.js.map +1 -1
  42. package/lib/encryption/key-provider.d.ts.map +1 -1
  43. package/lib/encryption/key-provider.js +31 -38
  44. package/lib/encryption/key-provider.js.map +1 -1
  45. package/lib/env.d.ts +2 -3
  46. package/lib/env.d.ts.map +1 -1
  47. package/lib/env.js +24 -25
  48. package/lib/env.js.map +1 -1
  49. package/lib/gitpod-file-parser.d.ts.map +1 -1
  50. package/lib/gitpod-file-parser.js +26 -42
  51. package/lib/gitpod-file-parser.js.map +1 -1
  52. package/lib/gitpod-file-parser.spec.js +145 -142
  53. package/lib/gitpod-file-parser.spec.js.map +1 -1
  54. package/lib/gitpod-service.d.ts +172 -33
  55. package/lib/gitpod-service.d.ts.map +1 -1
  56. package/lib/gitpod-service.js +187 -267
  57. package/lib/gitpod-service.js.map +1 -1
  58. package/lib/headless-workspace-log.d.ts +9 -11
  59. package/lib/headless-workspace-log.d.ts.map +1 -1
  60. package/lib/headless-workspace-log.js +6 -8
  61. package/lib/headless-workspace-log.js.map +1 -1
  62. package/lib/ide-frontend-service.d.ts +5 -1
  63. package/lib/ide-frontend-service.d.ts.map +1 -1
  64. package/lib/ide-protocol.d.ts +105 -0
  65. package/lib/ide-protocol.d.ts.map +1 -0
  66. package/lib/{util/without.js → ide-protocol.js} +2 -2
  67. package/lib/ide-protocol.js.map +1 -0
  68. package/lib/index.d.ts +16 -10
  69. package/lib/index.d.ts.map +1 -1
  70. package/lib/index.js +7 -1
  71. package/lib/index.js.map +1 -1
  72. package/lib/installation-admin-protocol.d.ts +27 -0
  73. package/lib/installation-admin-protocol.d.ts.map +1 -0
  74. package/lib/installation-admin-protocol.js +30 -0
  75. package/lib/installation-admin-protocol.js.map +1 -0
  76. package/lib/license-protocol.d.ts.map +1 -1
  77. package/lib/license-protocol.js.map +1 -1
  78. package/lib/messaging/browser/connection.d.ts +5 -3
  79. package/lib/messaging/browser/connection.d.ts.map +1 -1
  80. package/lib/messaging/browser/connection.js +184 -34
  81. package/lib/messaging/browser/connection.js.map +1 -1
  82. package/lib/messaging/browser/window-connection.d.ts +4 -4
  83. package/lib/messaging/browser/window-connection.d.ts.map +1 -1
  84. package/lib/messaging/browser/window-connection.js +42 -59
  85. package/lib/messaging/browser/window-connection.js.map +1 -1
  86. package/lib/messaging/client-call-metrics.d.ts +35 -0
  87. package/lib/messaging/client-call-metrics.d.ts.map +1 -0
  88. package/lib/messaging/client-call-metrics.js +83 -0
  89. package/lib/messaging/client-call-metrics.js.map +1 -0
  90. package/lib/messaging/error.d.ts +5 -1
  91. package/lib/messaging/error.d.ts.map +1 -1
  92. package/lib/messaging/error.js +10 -2
  93. package/lib/messaging/error.js.map +1 -1
  94. package/lib/messaging/handler.d.ts +10 -0
  95. package/lib/messaging/handler.d.ts.map +1 -1
  96. package/lib/messaging/handler.js +1 -1
  97. package/lib/messaging/node/connection.d.ts +1 -17
  98. package/lib/messaging/node/connection.d.ts.map +1 -1
  99. package/lib/messaging/node/connection.js +24 -60
  100. package/lib/messaging/node/connection.js.map +1 -1
  101. package/lib/messaging/proxy-factory.d.ts +3 -1
  102. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  103. package/lib/messaging/proxy-factory.js +75 -162
  104. package/lib/messaging/proxy-factory.js.map +1 -1
  105. package/lib/oss-allowlist.d.ts +14 -0
  106. package/lib/oss-allowlist.d.ts.map +1 -0
  107. package/lib/oss-allowlist.js +8 -0
  108. package/lib/oss-allowlist.js.map +1 -0
  109. package/lib/payment-protocol.d.ts +18 -0
  110. package/lib/payment-protocol.d.ts.map +1 -0
  111. package/lib/payment-protocol.js +13 -0
  112. package/lib/payment-protocol.js.map +1 -0
  113. package/lib/permission.d.ts +10 -5
  114. package/lib/permission.d.ts.map +1 -1
  115. package/lib/permission.js +41 -35
  116. package/lib/permission.js.map +1 -1
  117. package/lib/plans.d.ts +210 -0
  118. package/lib/plans.d.ts.map +1 -0
  119. package/lib/plans.js +605 -0
  120. package/lib/plans.js.map +1 -0
  121. package/lib/protocol.d.ts +164 -88
  122. package/lib/protocol.d.ts.map +1 -1
  123. package/lib/protocol.js +184 -199
  124. package/lib/protocol.js.map +1 -1
  125. package/lib/snapshot-url.d.ts +14 -0
  126. package/lib/snapshot-url.d.ts.map +1 -0
  127. package/lib/snapshot-url.js +26 -0
  128. package/lib/snapshot-url.js.map +1 -0
  129. package/{src/util/without.ts → lib/snapshot-url.spec.d.ts} +2 -3
  130. package/lib/snapshot-url.spec.d.ts.map +1 -0
  131. package/lib/snapshot-url.spec.js +41 -0
  132. package/lib/snapshot-url.spec.js.map +1 -0
  133. package/lib/team-subscription-protocol.d.ts +75 -0
  134. package/lib/team-subscription-protocol.d.ts.map +1 -0
  135. package/lib/team-subscription-protocol.js +63 -0
  136. package/lib/team-subscription-protocol.js.map +1 -0
  137. package/lib/teams-projects-protocol.d.ts +113 -0
  138. package/lib/teams-projects-protocol.d.ts.map +1 -0
  139. package/lib/teams-projects-protocol.js +30 -0
  140. package/lib/teams-projects-protocol.js.map +1 -0
  141. package/lib/typings/globals.d.ts +2 -2
  142. package/lib/typings/globals.d.ts.map +1 -1
  143. package/lib/util/analytics.d.ts +8 -0
  144. package/lib/util/analytics.d.ts.map +1 -0
  145. package/lib/util/analytics.js +88 -0
  146. package/lib/util/analytics.js.map +1 -0
  147. package/lib/util/async-iterator.d.ts.map +1 -1
  148. package/lib/util/async-iterator.js +57 -135
  149. package/lib/util/async-iterator.js.map +1 -1
  150. package/lib/util/cancelable.js +17 -59
  151. package/lib/util/cancelable.js.map +1 -1
  152. package/lib/util/date-time.js +11 -11
  153. package/lib/util/date-time.js.map +1 -1
  154. package/lib/util/deferred.js +10 -12
  155. package/lib/util/deferred.js.map +1 -1
  156. package/lib/util/disposable.d.ts.map +1 -1
  157. package/lib/util/disposable.js +27 -40
  158. package/lib/util/disposable.js.map +1 -1
  159. package/lib/util/event.d.ts.map +1 -1
  160. package/lib/util/event.js +63 -77
  161. package/lib/util/event.js.map +1 -1
  162. package/lib/util/garbage-collected-cache.d.ts +1 -0
  163. package/lib/util/garbage-collected-cache.d.ts.map +1 -1
  164. package/lib/util/garbage-collected-cache.js +27 -47
  165. package/lib/util/garbage-collected-cache.js.map +1 -1
  166. package/lib/util/generate-workspace-id.d.ts +4 -0
  167. package/lib/util/generate-workspace-id.d.ts.map +1 -0
  168. package/lib/util/generate-workspace-id.js +487 -0
  169. package/lib/util/generate-workspace-id.js.map +1 -0
  170. package/{src/theia-plugins.ts → lib/util/generate-workspace-id.spec.d.ts} +2 -6
  171. package/lib/util/generate-workspace-id.spec.d.ts.map +1 -0
  172. package/lib/util/generate-workspace-id.spec.js +91 -0
  173. package/lib/util/generate-workspace-id.spec.js.map +1 -0
  174. package/lib/util/gitpod-cookie.d.ts +20 -0
  175. package/lib/util/gitpod-cookie.d.ts.map +1 -0
  176. package/lib/util/gitpod-cookie.js +41 -0
  177. package/lib/util/gitpod-cookie.js.map +1 -0
  178. package/lib/util/gitpod-host-url.d.ts +2 -2
  179. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  180. package/lib/util/gitpod-host-url.js +109 -106
  181. package/lib/util/gitpod-host-url.js.map +1 -1
  182. package/lib/util/gitpod-host-url.spec.d.ts +8 -1
  183. package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
  184. package/lib/util/gitpod-host-url.spec.js +114 -22
  185. package/lib/util/gitpod-host-url.spec.js.map +1 -1
  186. package/lib/util/grpc.d.ts +15 -0
  187. package/lib/util/grpc.d.ts.map +1 -0
  188. package/lib/util/grpc.js +18 -0
  189. package/lib/util/grpc.js.map +1 -0
  190. package/lib/util/jaeger-client-types.d.ts +68 -0
  191. package/lib/util/jaeger-client-types.d.ts.map +1 -0
  192. package/lib/{theia-plugins.js → util/jaeger-client-types.js} +1 -1
  193. package/lib/util/jaeger-client-types.js.map +1 -0
  194. package/lib/util/logging.d.ts +49 -33
  195. package/lib/util/logging.d.ts.map +1 -1
  196. package/lib/util/logging.js +125 -129
  197. package/lib/util/logging.js.map +1 -1
  198. package/lib/util/make-link.js +5 -5
  199. package/lib/util/make-link.js.map +1 -1
  200. package/lib/util/parse-workspace-id.d.ts +13 -3
  201. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  202. package/lib/util/parse-workspace-id.js +37 -8
  203. package/lib/util/parse-workspace-id.js.map +1 -1
  204. package/lib/util/parse-workspace-id.spec.d.ts +8 -0
  205. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  206. package/lib/util/parse-workspace-id.spec.js +127 -47
  207. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  208. package/lib/util/queue.js +16 -55
  209. package/lib/util/queue.js.map +1 -1
  210. package/lib/util/queue.spec.js +147 -288
  211. package/lib/util/queue.spec.js.map +1 -1
  212. package/lib/util/repeat.d.ts +15 -0
  213. package/lib/util/repeat.d.ts.map +1 -0
  214. package/lib/util/repeat.js +55 -0
  215. package/lib/util/repeat.js.map +1 -0
  216. package/lib/util/semaphore.d.ts.map +1 -1
  217. package/lib/util/semaphore.js +15 -46
  218. package/lib/util/semaphore.js.map +1 -1
  219. package/lib/util/skip-if.d.ts.map +1 -1
  220. package/lib/util/skip-if.js +6 -6
  221. package/lib/util/skip-if.js.map +1 -1
  222. package/lib/util/timeutil.d.ts.map +1 -1
  223. package/lib/util/timeutil.js +28 -16
  224. package/lib/util/timeutil.js.map +1 -1
  225. package/lib/util/timeutil.spec.d.ts.map +1 -1
  226. package/lib/util/timeutil.spec.js +21 -24
  227. package/lib/util/timeutil.spec.js.map +1 -1
  228. package/lib/util/tracing.d.ts +52 -6
  229. package/lib/util/tracing.d.ts.map +1 -1
  230. package/lib/util/tracing.js +199 -64
  231. package/lib/util/tracing.js.map +1 -1
  232. package/lib/util/tracing.spec.d.ts +7 -0
  233. package/lib/util/tracing.spec.d.ts.map +1 -0
  234. package/lib/util/tracing.spec.js +121 -0
  235. package/lib/util/tracing.spec.js.map +1 -0
  236. package/lib/util/workspace-port-authentication.d.ts +7 -7
  237. package/lib/util/workspace-port-authentication.d.ts.map +1 -1
  238. package/lib/util/workspace-port-authentication.js +10 -12
  239. package/lib/util/workspace-port-authentication.js.map +1 -1
  240. package/lib/workspace-cluster.d.ts +76 -0
  241. package/lib/workspace-cluster.d.ts.map +1 -0
  242. package/lib/workspace-cluster.js +31 -0
  243. package/lib/workspace-cluster.js.map +1 -0
  244. package/lib/workspace-instance.d.ts +28 -4
  245. package/lib/workspace-instance.d.ts.map +1 -1
  246. package/lib/wsready.d.ts +1 -1
  247. package/lib/wsready.d.ts.map +1 -1
  248. package/lib/wsready.js +2 -2
  249. package/package.json +33 -17
  250. package/pkg-yarn.lock +18 -9
  251. package/provenance-bundle.jsonl +2 -0
  252. package/src/accounting-protocol.ts +231 -0
  253. package/src/admin-protocol.ts +71 -19
  254. package/src/analytics.ts +52 -0
  255. package/src/auth.ts +27 -0
  256. package/src/context-url.spec.ts +67 -0
  257. package/src/context-url.ts +109 -0
  258. package/src/email-protocol.ts +5 -7
  259. package/src/encryption/container-module.ts +2 -3
  260. package/src/encryption/encryption-engine.spec.ts +9 -8
  261. package/src/encryption/encryption-engine.ts +14 -14
  262. package/src/encryption/encryption-service.ts +4 -5
  263. package/src/encryption/key-provider.ts +16 -19
  264. package/src/env.ts +18 -18
  265. package/src/gitpod-file-parser.spec.ts +55 -61
  266. package/src/gitpod-file-parser.ts +16 -17
  267. package/src/gitpod-service.ts +327 -102
  268. package/src/headless-workspace-log.ts +12 -14
  269. package/src/ide-frontend-service.ts +6 -2
  270. package/src/ide-protocol.ts +119 -0
  271. package/src/index.ts +16 -10
  272. package/src/installation-admin-protocol.ts +42 -0
  273. package/src/license-protocol.ts +5 -6
  274. package/src/messaging/browser/connection.ts +197 -18
  275. package/src/messaging/browser/window-connection.ts +39 -29
  276. package/src/messaging/client-call-metrics.ts +96 -0
  277. package/src/messaging/error.ts +15 -5
  278. package/src/messaging/handler.ts +13 -1
  279. package/src/messaging/node/connection.ts +23 -70
  280. package/src/messaging/proxy-factory.ts +35 -34
  281. package/src/oss-allowlist.ts +15 -0
  282. package/src/payment-protocol.ts +20 -0
  283. package/src/permission.ts +42 -38
  284. package/src/plans.ts +679 -0
  285. package/src/protocol.ts +384 -279
  286. package/src/snapshot-url.spec.ts +27 -0
  287. package/src/snapshot-url.ts +27 -0
  288. package/src/team-subscription-protocol.ts +123 -0
  289. package/src/teams-projects-protocol.ts +147 -0
  290. package/src/typings/globals.ts +4 -4
  291. package/src/util/analytics.ts +109 -0
  292. package/src/util/async-iterator.ts +4 -5
  293. package/src/util/cancelable.ts +3 -3
  294. package/src/util/date-time.ts +8 -8
  295. package/src/util/deferred.ts +6 -6
  296. package/src/util/disposable.ts +3 -6
  297. package/src/util/event.ts +9 -11
  298. package/src/util/garbage-collected-cache.ts +11 -8
  299. package/src/util/generate-workspace-id.spec.ts +51 -0
  300. package/src/util/generate-workspace-id.ts +475 -0
  301. package/src/util/gitpod-cookie.ts +38 -0
  302. package/src/util/gitpod-host-url.spec.ts +63 -7
  303. package/src/util/gitpod-host-url.ts +55 -38
  304. package/src/util/grpc.ts +15 -0
  305. package/src/util/jaeger-client-types.ts +102 -0
  306. package/src/util/logging.ts +145 -71
  307. package/src/util/make-link.ts +6 -7
  308. package/src/util/parse-workspace-id.spec.ts +60 -10
  309. package/src/util/parse-workspace-id.ts +38 -8
  310. package/src/util/queue.spec.ts +28 -26
  311. package/src/util/repeat.ts +45 -0
  312. package/src/util/semaphore.ts +6 -8
  313. package/src/util/skip-if.ts +10 -7
  314. package/src/util/timeutil.spec.ts +14 -15
  315. package/src/util/timeutil.ts +19 -15
  316. package/src/util/tracing.spec.ts +88 -0
  317. package/src/util/tracing.ts +202 -31
  318. package/src/util/workspace-port-authentication.ts +10 -13
  319. package/src/workspace-cluster.ts +107 -0
  320. package/src/workspace-instance.ts +72 -30
  321. package/src/wsready.ts +3 -3
  322. package/data/builtin-theia-plugins.json +0 -372
  323. package/lib/messaging/connection-error-handler.d.ts +0 -27
  324. package/lib/messaging/connection-error-handler.d.ts.map +0 -1
  325. package/lib/messaging/connection-error-handler.js +0 -46
  326. package/lib/messaging/connection-error-handler.js.map +0 -1
  327. package/lib/theia-plugins.d.ts +0 -11
  328. package/lib/theia-plugins.d.ts.map +0 -1
  329. package/lib/theia-plugins.js.map +0 -1
  330. package/lib/util/repeater.d.ts +0 -22
  331. package/lib/util/repeater.d.ts.map +0 -1
  332. package/lib/util/repeater.js +0 -118
  333. package/lib/util/repeater.js.map +0 -1
  334. package/lib/util/safe-promise.d.ts +0 -11
  335. package/lib/util/safe-promise.d.ts.map +0 -1
  336. package/lib/util/safe-promise.js +0 -34
  337. package/lib/util/safe-promise.js.map +0 -1
  338. package/lib/util/without.d.ts +0 -7
  339. package/lib/util/without.d.ts.map +0 -1
  340. package/lib/util/without.js.map +0 -1
  341. package/src/messaging/connection-error-handler.ts +0 -62
  342. package/src/util/jaeger-client.d.ts +0 -105
  343. package/src/util/repeater.ts +0 -49
  344. package/src/util/safe-promise.ts +0 -26
@@ -0,0 +1,51 @@
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 { suite, test } from "mocha-typescript";
8
+ import * as chai from "chai";
9
+ import { generateWorkspaceID, colors, animals } from "./generate-workspace-id";
10
+ import { GitpodHostUrl } from "./gitpod-host-url";
11
+
12
+ const expect = chai.expect;
13
+
14
+ @suite
15
+ class TestGenerateWorkspaceId {
16
+ @test public async testGenerateWorkspaceId() {
17
+ for (let i = 0; i < 100; i++) {
18
+ const id = await generateWorkspaceID();
19
+ expect(new GitpodHostUrl().withWorkspacePrefix(id, "eu").workspaceId).to.equal(id);
20
+ }
21
+ }
22
+
23
+ @test public testLongestName() {
24
+ const longestColor = colors.sort((a, b) => b.length - a.length)[0];
25
+ const longestAnimal = animals.sort((a, b) => b.length - a.length)[0];
26
+ const longestName = `${longestColor}-${longestAnimal}-12345678`;
27
+ expect(longestName.length <= 36, `"${longestName}" is longer than 36 chars (${longestName.length})`).to.be.true;
28
+ }
29
+
30
+ @test public async testCustomName() {
31
+ const data = [
32
+ ["foo", "bar", "foo-bar-"],
33
+ ["f", "bar", ".{2,16}-bar-"],
34
+ ["gitpod-io", "gitpod", "gitpodio-gitpod-"],
35
+ [
36
+ 'this is rather long and has some "§$"% special chars',
37
+ "also here pretty long and needs abbreviation",
38
+ "thisisratherlon-alsohere-",
39
+ ],
40
+ ["breatheco-de", "python-flask-api-tutorial", "breathecode-pythonflaska-"],
41
+ ["UPPER", "CaSe", "upper-case-"],
42
+ ];
43
+ for (const d of data) {
44
+ const id = await generateWorkspaceID(d[0], d[1]);
45
+ expect(id).match(new RegExp("^" + d[2]));
46
+ expect(new GitpodHostUrl().withWorkspacePrefix(id, "eu").workspaceId).to.equal(id);
47
+ expect(id.length <= 36, `"${id}" is longer than 36 chars (${id.length})`).to.be.true;
48
+ }
49
+ }
50
+ }
51
+ module.exports = new TestGenerateWorkspaceId();
@@ -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,38 @@
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
+ * This cookie indicates whether the connected client is a Gitpod user (= "has logged in within the last year") or not.
10
+ * This is used by "gitpod.io" and "www.gitpod.io" to display different content/buttons.
11
+ */
12
+ export const NAME = "gitpod-user";
13
+ export const VALUE = "true";
14
+
15
+ /**
16
+ * @param domain The domain the Gitpod installation is installed onto
17
+ * @returns
18
+ */
19
+ export function options(domain: string): cookie.CookieSerializeOptions {
20
+ // Reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
21
+ return {
22
+ path: "/", // make sure we send the cookie to all sub-pages
23
+ httpOnly: false,
24
+ secure: false,
25
+ maxAge: 60 * 60 * 24 * 365, // 1 year
26
+ sameSite: "lax", // default: true. "Lax" needed to ensure we see cookies from users that neavigate to gitpod.io from external sites
27
+ domain: `.${domain}`, // explicilty include subdomains to not only cover "gitpod.io", but also "www.gitpod.io" or workspaces
28
+ };
29
+ }
30
+
31
+ export function generateCookie(domain: string): string {
32
+ return cookie.serialize(NAME, VALUE, options(domain));
33
+ }
34
+
35
+ export function isPresent(cookies: string): boolean {
36
+ // needs to match the old (gitpod-user=loggedIn) and new (gitpod-user=true) values to ensure a smooth transition during rollout.
37
+ return !!cookies.match(`${NAME}=`);
38
+ }
@@ -1,20 +1,76 @@
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
  */
6
6
 
7
- import * as chai from 'chai';
8
- import { suite, test } from 'mocha-typescript';
9
- import { GitpodHostUrl } from './gitpod-host-url';
7
+ import * as chai from "chai";
8
+ import { suite, test } from "mocha-typescript";
9
+ import { GitpodHostUrl } from "./gitpod-host-url";
10
10
  const expect = chai.expect;
11
11
 
12
12
  @suite
13
13
  export class GitpodHostUrlTest {
14
-
15
14
  @test public parseWorkspaceId_pathBased() {
16
- const actual = GitpodHostUrl.fromWorkspaceUrl("http://35.223.201.195/workspace/bc77e03d-c781-4235-bca0-e24087f5e472/").workspaceId;
15
+ const actual = GitpodHostUrl.fromWorkspaceUrl(
16
+ "http://35.223.201.195/workspace/bc77e03d-c781-4235-bca0-e24087f5e472/",
17
+ ).workspaceId;
17
18
  expect(actual).to.equal("bc77e03d-c781-4235-bca0-e24087f5e472");
18
19
  }
20
+
21
+ @test public parseWorkspaceId_hosts_withEnvVarsInjected() {
22
+ const actual = GitpodHostUrl.fromWorkspaceUrl(
23
+ "https://gray-grasshopper-nfbitfia.ws-eu02.gitpod-staging.com/#passedin=test%20value/https://github.com/gitpod-io/gitpod-test-repo",
24
+ ).workspaceId;
25
+ expect(actual).to.equal("gray-grasshopper-nfbitfia");
26
+ }
27
+
28
+ @test public async testWithoutWorkspacePrefix() {
29
+ expect(
30
+ GitpodHostUrl.fromWorkspaceUrl("https://3000-moccasin-ferret-155799b3.ws-eu02.gitpod-staging.com/")
31
+ .withoutWorkspacePrefix()
32
+ .toString(),
33
+ ).to.equal("https://gitpod-staging.com/");
34
+ }
35
+
36
+ @test public async testWithoutWorkspacePrefix2() {
37
+ expect(
38
+ GitpodHostUrl.fromWorkspaceUrl("https://gitpod-staging.com/").withoutWorkspacePrefix().toString(),
39
+ ).to.equal("https://gitpod-staging.com/");
40
+ }
41
+
42
+ @test public async testWithoutWorkspacePrefix3() {
43
+ expect(
44
+ GitpodHostUrl.fromWorkspaceUrl("https://gray-rook-5523v5d8.ws-dev.my-branch-1234.staging.gitpod-dev.com/")
45
+ .withoutWorkspacePrefix()
46
+ .toString(),
47
+ ).to.equal("https://my-branch-1234.staging.gitpod-dev.com/");
48
+ }
49
+
50
+ @test public async testWithoutWorkspacePrefix4() {
51
+ expect(
52
+ GitpodHostUrl.fromWorkspaceUrl("https://my-branch-1234.staging.gitpod-dev.com/")
53
+ .withoutWorkspacePrefix()
54
+ .toString(),
55
+ ).to.equal("https://my-branch-1234.staging.gitpod-dev.com/");
56
+ }
57
+
58
+ @test public async testWithoutWorkspacePrefix5() {
59
+ expect(
60
+ GitpodHostUrl.fromWorkspaceUrl("https://abc-nice-brunch-4224.staging.gitpod-dev.com/")
61
+ .withoutWorkspacePrefix()
62
+ .toString(),
63
+ ).to.equal("https://abc-nice-brunch-4224.staging.gitpod-dev.com/");
64
+ }
65
+
66
+ @test public async testWithoutWorkspacePrefix6() {
67
+ expect(
68
+ GitpodHostUrl.fromWorkspaceUrl(
69
+ "https://gray-rook-5523v5d8.ws-dev.abc-nice-brunch-4224.staging.gitpod-dev.com/",
70
+ )
71
+ .withoutWorkspacePrefix()
72
+ .toString(),
73
+ ).to.equal("https://abc-nice-brunch-4224.staging.gitpod-dev.com/");
74
+ }
19
75
  }
20
- module.exports = new GitpodHostUrlTest()
76
+ module.exports = new GitpodHostUrlTest();