@gitpod/gitpod-protocol 0.1.5-vn-integrate-gitpod-yml-tasks-into-jetbrainsa.5 → 0.1.5-vn-6525.77

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 (267) hide show
  1. package/data/gitpod-schema.json +28 -2
  2. package/lib/accounting-protocol.d.ts +10 -10
  3. package/lib/accounting-protocol.d.ts.map +1 -1
  4. package/lib/accounting-protocol.js +22 -31
  5. package/lib/accounting-protocol.js.map +1 -1
  6. package/lib/admin-protocol.d.ts +4 -2
  7. package/lib/admin-protocol.d.ts.map +1 -1
  8. package/lib/admin-protocol.js.map +1 -1
  9. package/lib/analytics.d.ts +4 -5
  10. package/lib/analytics.d.ts.map +1 -1
  11. package/lib/analytics.js.map +1 -1
  12. package/lib/auth.d.ts.map +1 -1
  13. package/lib/context-url.d.ts.map +1 -1
  14. package/lib/context-url.js +3 -3
  15. package/lib/context-url.js.map +1 -1
  16. package/lib/context-url.spec.d.ts.map +1 -1
  17. package/lib/context-url.spec.js +20 -5
  18. package/lib/context-url.spec.js.map +1 -1
  19. package/lib/email-protocol.d.ts +1 -1
  20. package/lib/email-protocol.d.ts.map +1 -1
  21. package/lib/email-protocol.js.map +1 -1
  22. package/lib/encryption/container-module.d.ts.map +1 -1
  23. package/lib/encryption/container-module.js +1 -1
  24. package/lib/encryption/container-module.js.map +1 -1
  25. package/lib/encryption/encryption-engine.d.ts.map +1 -1
  26. package/lib/encryption/encryption-engine.js +7 -7
  27. package/lib/encryption/encryption-engine.js.map +1 -1
  28. package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
  29. package/lib/encryption/encryption-engine.spec.js +2 -3
  30. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  31. package/lib/encryption/encryption-service.d.ts.map +1 -1
  32. package/lib/encryption/encryption-service.js +1 -1
  33. package/lib/encryption/encryption-service.js.map +1 -1
  34. package/lib/encryption/key-provider.d.ts.map +1 -1
  35. package/lib/encryption/key-provider.js +7 -9
  36. package/lib/encryption/key-provider.js.map +1 -1
  37. package/lib/env.d.ts +1 -1
  38. package/lib/env.d.ts.map +1 -1
  39. package/lib/env.js +5 -5
  40. package/lib/env.js.map +1 -1
  41. package/lib/gitpod-file-parser.d.ts.map +1 -1
  42. package/lib/gitpod-file-parser.js +6 -6
  43. package/lib/gitpod-file-parser.js.map +1 -1
  44. package/lib/gitpod-file-parser.spec.js +42 -39
  45. package/lib/gitpod-file-parser.spec.js.map +1 -1
  46. package/lib/gitpod-service.d.ts +23 -26
  47. package/lib/gitpod-service.d.ts.map +1 -1
  48. package/lib/gitpod-service.js +32 -26
  49. package/lib/gitpod-service.js.map +1 -1
  50. package/lib/headless-workspace-log.d.ts +1 -0
  51. package/lib/headless-workspace-log.d.ts.map +1 -1
  52. package/lib/headless-workspace-log.js +2 -1
  53. package/lib/headless-workspace-log.js.map +1 -1
  54. package/lib/ide-frontend-service.d.ts +1 -1
  55. package/lib/ide-protocol.d.ts +6 -6
  56. package/lib/ide-protocol.d.ts.map +1 -1
  57. package/lib/index.d.ts +16 -16
  58. package/lib/installation-admin-protocol.d.ts +1 -1
  59. package/lib/installation-admin-protocol.d.ts.map +1 -1
  60. package/lib/installation-admin-protocol.js +2 -2
  61. package/lib/installation-admin-protocol.js.map +1 -1
  62. package/lib/license-protocol.d.ts.map +1 -1
  63. package/lib/license-protocol.js.map +1 -1
  64. package/lib/messaging/browser/connection.d.ts +1 -1
  65. package/lib/messaging/browser/connection.d.ts.map +1 -1
  66. package/lib/messaging/browser/connection.js +19 -19
  67. package/lib/messaging/browser/connection.js.map +1 -1
  68. package/lib/messaging/browser/window-connection.d.ts +4 -4
  69. package/lib/messaging/browser/window-connection.d.ts.map +1 -1
  70. package/lib/messaging/browser/window-connection.js +9 -6
  71. package/lib/messaging/browser/window-connection.js.map +1 -1
  72. package/lib/messaging/client-call-metrics.d.ts +2 -2
  73. package/lib/messaging/client-call-metrics.d.ts.map +1 -1
  74. package/lib/messaging/client-call-metrics.js +20 -20
  75. package/lib/messaging/client-call-metrics.js.map +1 -1
  76. package/lib/messaging/error.d.ts.map +1 -1
  77. package/lib/messaging/error.js.map +1 -1
  78. package/lib/messaging/handler.d.ts.map +1 -1
  79. package/lib/messaging/handler.js +1 -1
  80. package/lib/messaging/node/connection.js +8 -8
  81. package/lib/messaging/node/connection.js.map +1 -1
  82. package/lib/messaging/proxy-factory.d.ts +1 -1
  83. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  84. package/lib/messaging/proxy-factory.js +7 -9
  85. package/lib/messaging/proxy-factory.js.map +1 -1
  86. package/lib/payment-protocol.d.ts.map +1 -1
  87. package/lib/payment-protocol.js +1 -1
  88. package/lib/payment-protocol.js.map +1 -1
  89. package/lib/permission.d.ts +2 -2
  90. package/lib/permission.d.ts.map +1 -1
  91. package/lib/permission.js +12 -23
  92. package/lib/permission.js.map +1 -1
  93. package/lib/plans.d.ts +3 -3
  94. package/lib/plans.d.ts.map +1 -1
  95. package/lib/plans.js +206 -171
  96. package/lib/plans.js.map +1 -1
  97. package/lib/protocol.d.ts +53 -37
  98. package/lib/protocol.d.ts.map +1 -1
  99. package/lib/protocol.js +85 -86
  100. package/lib/protocol.js.map +1 -1
  101. package/lib/snapshot-url.spec.js.map +1 -1
  102. package/lib/team-subscription-protocol.d.ts +5 -3
  103. package/lib/team-subscription-protocol.d.ts.map +1 -1
  104. package/lib/team-subscription-protocol.js +4 -4
  105. package/lib/team-subscription-protocol.js.map +1 -1
  106. package/lib/teams-projects-protocol.d.ts +3 -3
  107. package/lib/teams-projects-protocol.d.ts.map +1 -1
  108. package/lib/teams-projects-protocol.js +1 -1
  109. package/lib/teams-projects-protocol.js.map +1 -1
  110. package/lib/typings/globals.d.ts +2 -2
  111. package/lib/typings/globals.d.ts.map +1 -1
  112. package/lib/util/analytics.d.ts.map +1 -1
  113. package/lib/util/analytics.js +12 -3
  114. package/lib/util/analytics.js.map +1 -1
  115. package/lib/util/async-iterator.d.ts.map +1 -1
  116. package/lib/util/async-iterator.js +3 -3
  117. package/lib/util/async-iterator.js.map +1 -1
  118. package/lib/util/cancelable.js.map +1 -1
  119. package/lib/util/date-time.js +6 -6
  120. package/lib/util/date-time.js.map +1 -1
  121. package/lib/util/deferred.js.map +1 -1
  122. package/lib/util/disposable.d.ts.map +1 -1
  123. package/lib/util/disposable.js +2 -2
  124. package/lib/util/disposable.js.map +1 -1
  125. package/lib/util/event.d.ts.map +1 -1
  126. package/lib/util/event.js +5 -3
  127. package/lib/util/event.js.map +1 -1
  128. package/lib/util/garbage-collected-cache.d.ts.map +1 -1
  129. package/lib/util/garbage-collected-cache.js +1 -1
  130. package/lib/util/garbage-collected-cache.js.map +1 -1
  131. package/lib/util/generate-workspace-id.d.ts.map +1 -1
  132. package/lib/util/generate-workspace-id.js +435 -435
  133. package/lib/util/generate-workspace-id.js.map +1 -1
  134. package/lib/util/generate-workspace-id.spec.js +10 -6
  135. package/lib/util/generate-workspace-id.spec.js.map +1 -1
  136. package/lib/util/gitpod-cookie.d.ts +1 -1
  137. package/lib/util/gitpod-cookie.d.ts.map +1 -1
  138. package/lib/util/gitpod-cookie.js +0 -3
  139. package/lib/util/gitpod-cookie.js.map +1 -1
  140. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  141. package/lib/util/gitpod-host-url.js +31 -29
  142. package/lib/util/gitpod-host-url.js.map +1 -1
  143. package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
  144. package/lib/util/gitpod-host-url.spec.js +15 -5
  145. package/lib/util/gitpod-host-url.spec.js.map +1 -1
  146. package/lib/util/grpc.d.ts.map +1 -1
  147. package/lib/util/grpc.js.map +1 -1
  148. package/lib/util/jaeger-client-types.d.ts.map +1 -1
  149. package/lib/util/logging.d.ts +1 -1
  150. package/lib/util/logging.d.ts.map +1 -1
  151. package/lib/util/logging.js +22 -23
  152. package/lib/util/logging.js.map +1 -1
  153. package/lib/util/make-link.js +5 -5
  154. package/lib/util/make-link.js.map +1 -1
  155. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  156. package/lib/util/parse-workspace-id.js +1 -2
  157. package/lib/util/parse-workspace-id.js.map +1 -1
  158. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  159. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  160. package/lib/util/queue.spec.js +9 -6
  161. package/lib/util/queue.spec.js.map +1 -1
  162. package/lib/util/semaphore.d.ts.map +1 -1
  163. package/lib/util/semaphore.js.map +1 -1
  164. package/lib/util/skip-if.d.ts.map +1 -1
  165. package/lib/util/skip-if.js.map +1 -1
  166. package/lib/util/timeutil.d.ts.map +1 -1
  167. package/lib/util/timeutil.js +2 -2
  168. package/lib/util/timeutil.js.map +1 -1
  169. package/lib/util/timeutil.spec.d.ts.map +1 -1
  170. package/lib/util/timeutil.spec.js.map +1 -1
  171. package/lib/util/tracing.d.ts +6 -6
  172. package/lib/util/tracing.d.ts.map +1 -1
  173. package/lib/util/tracing.js +6 -6
  174. package/lib/util/tracing.js.map +1 -1
  175. package/lib/util/tracing.spec.js +3 -3
  176. package/lib/util/tracing.spec.js.map +1 -1
  177. package/lib/util/workspace-port-authentication.d.ts +7 -7
  178. package/lib/util/workspace-port-authentication.d.ts.map +1 -1
  179. package/lib/util/workspace-port-authentication.js +8 -11
  180. package/lib/util/workspace-port-authentication.js.map +1 -1
  181. package/lib/workspace-cluster.d.ts +1 -1
  182. package/lib/workspace-cluster.d.ts.map +1 -1
  183. package/lib/workspace-cluster.js +2 -4
  184. package/lib/workspace-cluster.js.map +1 -1
  185. package/lib/workspace-instance.d.ts +2 -2
  186. package/lib/workspace-instance.d.ts.map +1 -1
  187. package/lib/wsready.d.ts +1 -1
  188. package/lib/wsready.d.ts.map +1 -1
  189. package/lib/wsready.js +2 -2
  190. package/package.json +2 -2
  191. package/pkg-yarn.lock +2 -2
  192. package/provenance-bundle.jsonl +1 -1
  193. package/src/accounting-protocol.ts +53 -51
  194. package/src/admin-protocol.ts +25 -21
  195. package/src/analytics.ts +26 -28
  196. package/src/auth.ts +2 -2
  197. package/src/context-url.spec.ts +25 -11
  198. package/src/context-url.ts +80 -78
  199. package/src/email-protocol.ts +5 -6
  200. package/src/encryption/container-module.ts +2 -3
  201. package/src/encryption/encryption-engine.spec.ts +9 -8
  202. package/src/encryption/encryption-engine.ts +14 -14
  203. package/src/encryption/encryption-service.ts +4 -5
  204. package/src/encryption/key-provider.ts +16 -19
  205. package/src/env.ts +9 -9
  206. package/src/gitpod-file-parser.spec.ts +55 -61
  207. package/src/gitpod-file-parser.ts +16 -17
  208. package/src/gitpod-service.ts +130 -104
  209. package/src/headless-workspace-log.ts +6 -4
  210. package/src/ide-frontend-service.ts +2 -2
  211. package/src/ide-protocol.ts +8 -8
  212. package/src/index.ts +16 -16
  213. package/src/installation-admin-protocol.ts +9 -9
  214. package/src/license-protocol.ts +5 -6
  215. package/src/messaging/browser/connection.ts +45 -47
  216. package/src/messaging/browser/window-connection.ts +39 -29
  217. package/src/messaging/client-call-metrics.ts +70 -71
  218. package/src/messaging/error.ts +1 -3
  219. package/src/messaging/handler.ts +6 -6
  220. package/src/messaging/node/connection.ts +8 -8
  221. package/src/messaging/proxy-factory.ts +23 -30
  222. package/src/oss-allowlist.ts +3 -3
  223. package/src/payment-protocol.ts +2 -2
  224. package/src/permission.ts +20 -31
  225. package/src/plans.ts +236 -189
  226. package/src/protocol.ts +239 -239
  227. package/src/snapshot-url.spec.ts +9 -7
  228. package/src/team-subscription-protocol.ts +33 -23
  229. package/src/teams-projects-protocol.ts +8 -8
  230. package/src/typings/globals.ts +4 -4
  231. package/src/util/analytics.ts +46 -24
  232. package/src/util/async-iterator.ts +4 -5
  233. package/src/util/cancelable.ts +3 -3
  234. package/src/util/date-time.ts +8 -8
  235. package/src/util/deferred.ts +6 -6
  236. package/src/util/disposable.ts +3 -6
  237. package/src/util/event.ts +9 -11
  238. package/src/util/garbage-collected-cache.ts +3 -6
  239. package/src/util/generate-workspace-id.spec.ts +18 -15
  240. package/src/util/generate-workspace-id.ts +453 -453
  241. package/src/util/gitpod-cookie.ts +8 -9
  242. package/src/util/gitpod-host-url.spec.ts +40 -13
  243. package/src/util/gitpod-host-url.ts +37 -34
  244. package/src/util/grpc.ts +1 -1
  245. package/src/util/jaeger-client-types.ts +2 -2
  246. package/src/util/logging.ts +49 -39
  247. package/src/util/make-link.ts +6 -7
  248. package/src/util/parse-workspace-id.spec.ts +17 -8
  249. package/src/util/parse-workspace-id.ts +5 -6
  250. package/src/util/queue.spec.ts +27 -25
  251. package/src/util/repeat.ts +1 -1
  252. package/src/util/semaphore.ts +4 -6
  253. package/src/util/skip-if.ts +9 -6
  254. package/src/util/timeutil.spec.ts +14 -15
  255. package/src/util/timeutil.ts +15 -11
  256. package/src/util/tracing.spec.ts +28 -23
  257. package/src/util/tracing.ts +46 -41
  258. package/src/util/workspace-port-authentication.ts +10 -13
  259. package/src/workspace-cluster.ts +15 -12
  260. package/src/workspace-instance.ts +27 -23
  261. package/src/wsready.ts +3 -3
  262. package/data/builtin-theia-plugins.json +0 -372
  263. package/lib/theia-plugins.d.ts +0 -11
  264. package/lib/theia-plugins.d.ts.map +0 -1
  265. package/lib/theia-plugins.js +0 -8
  266. package/lib/theia-plugins.js.map +0 -1
  267. package/src/theia-plugins.ts +0 -11
@@ -3,8 +3,7 @@
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
- import * as cookie from 'cookie';
7
-
6
+ import * as cookie from "cookie";
8
7
 
9
8
  /**
10
9
  * This cookie indicates whether the connected client is a Gitpod user (= "has logged in within the last year") or not.
@@ -20,20 +19,20 @@ export const VALUE = "true";
20
19
  export function options(domain: string): cookie.CookieSerializeOptions {
21
20
  // Reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
22
21
  return {
23
- path: "/", // make sure we send the cookie to all sub-pages
22
+ path: "/", // make sure we send the cookie to all sub-pages
24
23
  httpOnly: false,
25
24
  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
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
29
28
  };
30
- };
29
+ }
31
30
 
32
31
  export function generateCookie(domain: string): string {
33
32
  return cookie.serialize(NAME, VALUE, options(domain));
34
- };
33
+ }
35
34
 
36
35
  export function isPresent(cookies: string): boolean {
37
36
  // needs to match the old (gitpod-user=loggedIn) and new (gitpod-user=true) values to ensure a smooth transition during rollout.
38
37
  return !!cookies.match(`${NAME}=`);
39
- };
38
+ }
@@ -4,46 +4,73 @@
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
  }
19
20
 
20
21
  @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
+ 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;
22
25
  expect(actual).to.equal("gray-grasshopper-nfbitfia");
23
26
  }
24
27
 
25
28
  @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/");
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/");
27
34
  }
28
35
 
29
36
  @test public async testWithoutWorkspacePrefix2() {
30
- expect(GitpodHostUrl.fromWorkspaceUrl("https://gitpod-staging.com/").withoutWorkspacePrefix().toString()).to.equal("https://gitpod-staging.com/");
37
+ expect(
38
+ GitpodHostUrl.fromWorkspaceUrl("https://gitpod-staging.com/").withoutWorkspacePrefix().toString(),
39
+ ).to.equal("https://gitpod-staging.com/");
31
40
  }
32
41
 
33
42
  @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/");
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/");
35
48
  }
36
49
 
37
50
  @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/");
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/");
39
56
  }
40
57
 
41
58
  @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/");
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/");
43
64
  }
44
65
 
45
66
  @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/");
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/");
47
74
  }
48
75
  }
49
- module.exports = new GitpodHostUrlTest()
76
+ module.exports = new GitpodHostUrlTest();
@@ -4,15 +4,16 @@
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
- const URL = require('url').URL || window.URL;
8
- import { log } from './logging';
7
+ const URL = require("url").URL || window.URL;
8
+ import { log } from "./logging";
9
9
 
10
10
  export interface UrlChange {
11
- (old: URL): Partial<URL>
11
+ (old: URL): Partial<URL>;
12
12
  }
13
13
  export type UrlUpdate = UrlChange | Partial<URL>;
14
14
 
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}))";
15
+ const baseWorkspaceIDRegex =
16
+ "(([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
 
17
18
  // this pattern matches v4 UUIDs as well as the new generated workspace ids (e.g. pink-panda-ns35kd21)
18
19
  const workspaceIDRegex = RegExp(`^${baseWorkspaceIDRegex}$`);
@@ -24,15 +25,15 @@ export class GitpodHostUrl {
24
25
  readonly url: URL;
25
26
 
26
27
  constructor(urlParam?: string | URL) {
27
- if (urlParam === undefined || typeof urlParam === 'string') {
28
- this.url = new URL(urlParam || 'https://gitpod.io');
29
- this.url.search = '';
30
- this.url.hash = '';
31
- this.url.pathname = '';
28
+ if (urlParam === undefined || typeof urlParam === "string") {
29
+ this.url = new URL(urlParam || "https://gitpod.io");
30
+ this.url.search = "";
31
+ this.url.hash = "";
32
+ this.url.pathname = "";
32
33
  } else if (urlParam instanceof URL) {
33
34
  this.url = urlParam;
34
35
  } else {
35
- log.error('Unexpected urlParam', { urlParam });
36
+ log.error("Unexpected urlParam", { urlParam });
36
37
  }
37
38
  }
38
39
 
@@ -45,7 +46,7 @@ export class GitpodHostUrl {
45
46
  }
46
47
 
47
48
  withDomainPrefix(prefix: string): GitpodHostUrl {
48
- return this.with(url => ({ host: prefix + url.host }));;
49
+ return this.with((url) => ({ host: prefix + url.host }));
49
50
  }
50
51
 
51
52
  withoutWorkspacePrefix(): GitpodHostUrl {
@@ -58,14 +59,14 @@ export class GitpodHostUrl {
58
59
  }
59
60
 
60
61
  withoutDomainPrefix(removeSegmentsCount: number): GitpodHostUrl {
61
- return this.with(url => ({ host: url.host.split('.').splice(removeSegmentsCount).join('.') }));
62
+ return this.with((url) => ({ host: url.host.split(".").splice(removeSegmentsCount).join(".") }));
62
63
  }
63
64
 
64
65
  with(urlUpdate: UrlUpdate) {
65
- const update = typeof urlUpdate === 'function' ? urlUpdate(this.url) : urlUpdate;
66
- const addSlashToPath = update.pathname && update.pathname.length > 0 && !update.pathname.startsWith('/');
66
+ const update = typeof urlUpdate === "function" ? urlUpdate(this.url) : urlUpdate;
67
+ const addSlashToPath = update.pathname && update.pathname.length > 0 && !update.pathname.startsWith("/");
67
68
  if (addSlashToPath) {
68
- update.pathname = '/' + update.pathname;
69
+ update.pathname = "/" + update.pathname;
69
70
  }
70
71
  const result = Object.assign(new URL(this.toString()), update);
71
72
  return new GitpodHostUrl(result);
@@ -73,50 +74,53 @@ export class GitpodHostUrl {
73
74
 
74
75
  withApi(urlUpdate?: UrlUpdate) {
75
76
  const updated = urlUpdate ? this.with(urlUpdate) : this;
76
- return updated.with(url => ({ pathname: `/api${url.pathname}` }));
77
+ return updated.with((url) => ({ pathname: `/api${url.pathname}` }));
77
78
  }
78
79
 
79
80
  withContext(contextUrl: string) {
80
- return this.with(url => ({ hash: contextUrl }));
81
+ return this.with((url) => ({ hash: contextUrl }));
81
82
  }
82
83
 
83
84
  asWebsocket(): GitpodHostUrl {
84
- return this.with(url => ({ protocol: url.protocol === 'https:' ? 'wss:' : 'ws:' }));
85
+ return this.with((url) => ({ protocol: url.protocol === "https:" ? "wss:" : "ws:" }));
85
86
  }
86
87
 
87
88
  asDashboard(): GitpodHostUrl {
88
- return this.with(url => ({ pathname: '/' }));
89
+ return this.with((url) => ({ pathname: "/" }));
89
90
  }
90
91
 
91
92
  asLogin(): GitpodHostUrl {
92
- return this.with(url => ({ pathname: '/login' }));
93
+ return this.with((url) => ({ pathname: "/login" }));
93
94
  }
94
95
 
95
96
  asUpgradeSubscription(): GitpodHostUrl {
96
- return this.with(url => ({ pathname: '/plans' }));
97
+ return this.with((url) => ({ pathname: "/plans" }));
97
98
  }
98
99
 
99
100
  asAccessControl(): GitpodHostUrl {
100
- return this.with(url => ({ pathname: '/integrations' }));
101
+ return this.with((url) => ({ pathname: "/integrations" }));
101
102
  }
102
103
 
103
104
  asSettings(): GitpodHostUrl {
104
- return this.with(url => ({ pathname: '/settings' }));
105
+ return this.with((url) => ({ pathname: "/settings" }));
105
106
  }
106
107
 
107
108
  asPreferences(): GitpodHostUrl {
108
- return this.with(url => ({ pathname: '/preferences' }));
109
+ return this.with((url) => ({ pathname: "/preferences" }));
109
110
  }
110
111
 
111
112
  asStart(workspaceId = this.workspaceId): GitpodHostUrl {
112
113
  return this.withoutWorkspacePrefix().with({
113
- pathname: '/start/',
114
- hash: '#' + workspaceId
114
+ pathname: "/start/",
115
+ hash: "#" + workspaceId,
115
116
  });
116
117
  }
117
118
 
118
119
  asWorkspaceAuth(instanceID: string, redirect?: boolean): GitpodHostUrl {
119
- return this.with(url => ({ pathname: `/api/auth/workspace-cookie/${instanceID}`, search: redirect ? "redirect" : "" }));
120
+ return this.with((url) => ({
121
+ pathname: `/api/auth/workspace-cookie/${instanceID}`,
122
+ search: redirect ? "redirect" : "",
123
+ }));
120
124
  }
121
125
 
122
126
  toString() {
@@ -125,7 +129,7 @@ export class GitpodHostUrl {
125
129
 
126
130
  toStringWoRootSlash() {
127
131
  let result = this.toString();
128
- if (result.endsWith('/')) {
132
+ if (result.endsWith("/")) {
129
133
  result = result.slice(0, result.length - 1);
130
134
  }
131
135
  return result;
@@ -142,7 +146,7 @@ export class GitpodHostUrl {
142
146
  }
143
147
  }
144
148
 
145
- const pathSegs = this.url.pathname.split("/")
149
+ const pathSegs = this.url.pathname.split("/");
146
150
  if (pathSegs.length > 3 && pathSegs[1] === "workspace") {
147
151
  return pathSegs[2];
148
152
  }
@@ -152,20 +156,19 @@ export class GitpodHostUrl {
152
156
 
153
157
  get blobServe(): boolean {
154
158
  const hostSegments = this.url.host.split(".");
155
- if (hostSegments[0] === 'blobserve') {
159
+ if (hostSegments[0] === "blobserve") {
156
160
  return true;
157
161
  }
158
162
 
159
- const pathSegments = this.url.pathname.split("/")
163
+ const pathSegments = this.url.pathname.split("/");
160
164
  return pathSegments[0] === "blobserve";
161
165
  }
162
166
 
163
167
  asSorry(message: string) {
164
- return this.with({ pathname: '/sorry', hash: message });
168
+ return this.with({ pathname: "/sorry", hash: message });
165
169
  }
166
170
 
167
171
  asApiLogout(): GitpodHostUrl {
168
- return this.withApi(url => ({ pathname: '/logout/' }));
172
+ return this.withApi((url) => ({ pathname: "/logout/" }));
169
173
  }
170
-
171
174
  }
package/src/util/grpc.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
- export const defaultGRPCOptions = {
7
+ export const defaultGRPCOptions = {
8
8
  "grpc.keepalive_timeout_ms": 10000,
9
9
  "grpc.keepalive_time_ms": 60000,
10
10
  "grpc.http2.min_time_between_pings_ms": 10000,
@@ -93,10 +93,10 @@ export interface SamplingDecision {
93
93
 
94
94
  // added by TypeFox
95
95
  export interface Sampler {
96
- name(): string
96
+ name(): string;
97
97
  isSampled(operation: string, tags: any): boolean;
98
98
  onCreateSpan(span: opentracing.Span): SamplingDecision;
99
99
  onSetOperationName(span: opentracing.Span, operationName: string): SamplingDecision;
100
100
  onSetTag(span: opentracing.Span, key: string, value: any): SamplingDecision;
101
- close(callback: () => void): void
101
+ close(callback: () => void): void;
102
102
  }
@@ -4,7 +4,7 @@
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
- const inspect: (object: any) => string = require('util').inspect; // undefined in frontend
7
+ const inspect: (object: any) => string = require("util").inspect; // undefined in frontend
8
8
 
9
9
  let jsonLogging: boolean = false;
10
10
  let component: string | undefined;
@@ -15,19 +15,19 @@ export interface LogContext {
15
15
  sessionId?: string;
16
16
  userId?: string;
17
17
  workspaceId?: string;
18
- };
18
+ }
19
19
  export namespace LogContext {
20
- export function from(params : { userId?: string, user?: any, request?: any } ) {
20
+ export function from(params: { userId?: string; user?: any; request?: any }) {
21
21
  return <LogContext>{
22
22
  sessionId: params.request?.requestID,
23
- userId: params.userId || params.user?.id
24
- }
23
+ userId: params.userId || params.user?.id,
24
+ };
25
25
  }
26
26
  }
27
27
 
28
28
  export interface LogPayload {
29
29
  // placeholder to indicate that only dictionary-style objects should be passed as payload
30
- };
30
+ }
31
31
 
32
32
  export namespace log {
33
33
  export function error(context: LogContext, message: string, error: any, payload: LogPayload): void;
@@ -97,7 +97,11 @@ export namespace log {
97
97
  /**
98
98
  * Do not use in frontend.
99
99
  */
100
- export function enableJSONLogging(componentArg: string, versionArg: string | undefined, logLevel?: LogrusLogLevel): void {
100
+ export function enableJSONLogging(
101
+ componentArg: string,
102
+ versionArg: string | undefined,
103
+ logLevel?: LogrusLogLevel,
104
+ ): void {
101
105
  component = componentArg;
102
106
  version = versionArg;
103
107
 
@@ -109,16 +113,16 @@ export namespace log {
109
113
 
110
114
  console.error = function (...args: any[]): void {
111
115
  errorLog(true, args);
112
- }
116
+ };
113
117
  console.warn = function (...args: any[]): void {
114
118
  warnLog(true, args);
115
- }
119
+ };
116
120
  console.info = function (...args: any[]): void {
117
121
  infoLog(true, args);
118
- }
122
+ };
119
123
  console.debug = function (...args: any[]): void {
120
124
  debugLog(true, args);
121
- }
125
+ };
122
126
 
123
127
  console.log = console.info;
124
128
  // FIXME wrap also other console methods (e.g. trace())
@@ -154,26 +158,26 @@ type DoLogFunction = (calledViaConsole: boolean, args: any[]) => void;
154
158
 
155
159
  let errorLog = doErrorLog;
156
160
  function doErrorLog(calledViaConsole: boolean, args: any[]): void {
157
- doLog(calledViaConsole, errorConsoleLog, 'ERROR', args);
161
+ doLog(calledViaConsole, errorConsoleLog, "ERROR", args);
158
162
  }
159
163
 
160
164
  let warnLog = doWarnLog;
161
165
  function doWarnLog(calledViaConsole: boolean, args: any[]): void {
162
- doLog(calledViaConsole, warnConsoleLog, 'WARNING', args);
166
+ doLog(calledViaConsole, warnConsoleLog, "WARNING", args);
163
167
  }
164
168
 
165
169
  let infoLog = doInfoLog;
166
170
  function doInfoLog(calledViaConsole: boolean, args: any[]): void {
167
- doLog(calledViaConsole, infoConsoleLog, 'INFO', args);
171
+ doLog(calledViaConsole, infoConsoleLog, "INFO", args);
168
172
  }
169
173
 
170
174
  let debugLog = doDebugLog;
171
175
  function doDebugLog(calledViaConsole: boolean, args: any[]): void {
172
- doLog(calledViaConsole, debugConsoleLog, 'DEBUG', args);
176
+ doLog(calledViaConsole, debugConsoleLog, "DEBUG", args);
173
177
  }
174
178
 
175
179
  // Ref: https://github.com/sirupsen/logrus#level-logging
176
- export type LogrusLogLevel = keyof (typeof LogrusLogLevels);
180
+ export type LogrusLogLevel = keyof typeof LogrusLogLevels;
177
181
  export const LogrusLogLevels = {
178
182
  trace: true,
179
183
  debug: true,
@@ -182,7 +186,7 @@ export const LogrusLogLevels = {
182
186
  error: true,
183
187
  fatal: true,
184
188
  panic: true,
185
- }
189
+ };
186
190
  export namespace LogrusLogLevel {
187
191
  export function isGreatherOrEqual(lvl: LogrusLogLevel | undefined, ref: LogrusLogLevel | undefined): boolean {
188
192
  if (lvl === undefined) {
@@ -194,8 +198,7 @@ export namespace LogrusLogLevel {
194
198
  return getLevelArity(lvl) >= getLevelArity(ref);
195
199
  }
196
200
  function getLevelArity(lvl: LogrusLogLevel): number {
197
- return Object.keys(LogrusLogLevels)
198
- .findIndex((l) => l === lvl);
201
+ return Object.keys(LogrusLogLevels).findIndex((l) => l === lvl);
199
202
  }
200
203
  export function getFromEnv(): LogrusLogLevel | undefined {
201
204
  const lvlStr = process.env.LOG_LEVEL;
@@ -203,7 +206,7 @@ export namespace LogrusLogLevel {
203
206
  return undefined;
204
207
  }
205
208
  const lvl = lvlStr as LogrusLogLevel;
206
- const exists = LogrusLogLevels[lvl]
209
+ const exists = LogrusLogLevels[lvl];
207
210
  if (!exists) {
208
211
  return undefined;
209
212
  }
@@ -212,12 +215,12 @@ export namespace LogrusLogLevel {
212
215
  }
213
216
 
214
217
  // Source: https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry#LogSeverity
215
- type GoogleLogSeverity = 'EMERGENCY' | 'ALERT' | 'CRITICAL' | 'ERROR' | 'WARNING' | 'INFO' | 'DEBUG';
218
+ type GoogleLogSeverity = "EMERGENCY" | "ALERT" | "CRITICAL" | "ERROR" | "WARNING" | "INFO" | "DEBUG";
216
219
  namespace GoogleLogSeverity {
217
220
  export const isGreaterOrEqualThanWarning = (severity: GoogleLogSeverity) => {
218
221
  switch (severity) {
219
- case 'INFO':
220
- case 'DEBUG':
222
+ case "INFO":
223
+ case "DEBUG":
221
224
  return false;
222
225
  default:
223
226
  return true;
@@ -245,7 +248,7 @@ function doLog(calledViaConsole: boolean, consoleLog: ConsoleLog, severity: Goog
245
248
  // console.xyz(Error, ...any) / log.xyz(Error) / log.xyz(Error, LogPayload)
246
249
  error = args[0];
247
250
  payloadArgs = args.slice(1);
248
- } else if (typeof args[0] === 'string') {
251
+ } else if (typeof args[0] === "string") {
249
252
  message = args[0];
250
253
  if (args.length < 2 || !(args[1] instanceof Error)) {
251
254
  // console.xyz(string) / console.xyz(string, !Error, ...any) / log.xyz(string) / log.xyz(string, LogPayload)
@@ -265,7 +268,7 @@ function doLog(calledViaConsole: boolean, consoleLog: ConsoleLog, severity: Goog
265
268
  // log.xyz(LogContext, Error) / log.xyz(LogContext, Error, LogPayload)
266
269
  error = args[1];
267
270
  payloadArgs = args.slice(2);
268
- } else if (typeof args[1] === 'string') {
271
+ } else if (typeof args[1] === "string") {
269
272
  message = args[1];
270
273
  if (args.length < 3 || !(args[2] instanceof Error)) {
271
274
  // log.xyz(LogContext, string) / log.xyz(LogContext, string, LogPayload)
@@ -288,9 +291,14 @@ function doLog(calledViaConsole: boolean, consoleLog: ConsoleLog, severity: Goog
288
291
  }
289
292
  }
290
293
 
291
- function makeLogItem(severity: GoogleLogSeverity, context: LogContext | undefined, message: string | undefined,
292
- error: Error | undefined, payloadArgs: any[], calledViaConsole: boolean): string | undefined {
293
-
294
+ function makeLogItem(
295
+ severity: GoogleLogSeverity,
296
+ context: LogContext | undefined,
297
+ message: string | undefined,
298
+ error: Error | undefined,
299
+ payloadArgs: any[],
300
+ calledViaConsole: boolean,
301
+ ): string | undefined {
294
302
  if (context !== undefined && Object.keys(context).length == 0) {
295
303
  context = undefined;
296
304
  }
@@ -312,7 +320,7 @@ function makeLogItem(severity: GoogleLogSeverity, context: LogContext | undefine
312
320
  message,
313
321
  error,
314
322
  payload,
315
- loggedViaConsole: calledViaConsole ? true : undefined
323
+ loggedViaConsole: calledViaConsole ? true : undefined,
316
324
  };
317
325
  let result: string = stringifyLogItem(logItem);
318
326
 
@@ -323,11 +331,11 @@ function makeLogItem(severity: GoogleLogSeverity, context: LogContext | undefine
323
331
  result = stringifyLogItem(logItem);
324
332
 
325
333
  if (result.length <= maxAllowedLogItemLength) {
326
- log.warn('Log item too large, stripping payload', { logItemStub: makeLogItemStub(logItem) });
334
+ log.warn("Log item too large, stripping payload", { logItemStub: makeLogItemStub(logItem) });
327
335
  }
328
336
  }
329
337
  if (result.length > maxAllowedLogItemLength) {
330
- log.error('Log item too large w/o payload, discarding', { logItemStub: makeLogItemStub(logItem) });
338
+ log.error("Log item too large w/o payload, discarding", { logItemStub: makeLogItemStub(logItem) });
331
339
  return undefined;
332
340
  }
333
341
 
@@ -341,10 +349,10 @@ function makeReportedErrorEvent(error: Error | undefined) {
341
349
  // Serves as marker only
342
350
  "@type": "type.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent",
343
351
  // This is useful for filtering in the UI
344
- "serviceContext": {
345
- "service": component || "<ts-not-set>",
346
- "version": version || "<ts-not-set>",
347
- }
352
+ serviceContext: {
353
+ service: component || "<ts-not-set>",
354
+ version: version || "<ts-not-set>",
355
+ },
348
356
  };
349
357
 
350
358
  if (error) {
@@ -364,9 +372,9 @@ function makeLogItemStub(logItem: any): any {
364
372
  severity: logItem.severity,
365
373
  time: logItem.time,
366
374
  environment: logItem.environment,
367
- region: logItem.region
375
+ region: logItem.region,
368
376
  };
369
- if (typeof (logItem.message) === 'string') {
377
+ if (typeof logItem.message === "string") {
370
378
  if (logItem.message.length <= maxMessageStubLength) {
371
379
  result.message = logItem.message;
372
380
  } else {
@@ -400,10 +408,12 @@ function stringifyLogItem(logItem: any): string {
400
408
  * Jsonifies Errors properly, not as {} only.
401
409
  */
402
410
  function jsonStringifyWithErrors(value: any): string {
403
- return JSON.stringify(value, (key: string, value: any): any => { return value instanceof Error ? value.stack : value });
411
+ return JSON.stringify(value, (key: string, value: any): any => {
412
+ return value instanceof Error ? value.stack : value;
413
+ });
404
414
  }
405
415
 
406
- type ConsoleLog = (message?: any, ...optionalArgs: any[]) => void; // signature of console.xyz
416
+ type ConsoleLog = (message?: any, ...optionalArgs: any[]) => void; // signature of console.xyz
407
417
  const logConsoleLog: ConsoleLog = console.log;
408
418
  const errorConsoleLog: ConsoleLog = console.error;
409
419
  const warnConsoleLog: ConsoleLog = console.warn;
@@ -5,18 +5,17 @@
5
5
  */
6
6
 
7
7
  function isOpenNewTab(event: MouseEvent): boolean {
8
- return event.metaKey || (event.ctrlKey);
8
+ return event.metaKey || event.ctrlKey;
9
9
  }
10
10
 
11
11
  export function makeLink(node: HTMLElement, url: string, hover: string): void {
12
- node.onclick = event => {
13
- let target = '_self';
12
+ node.onclick = (event) => {
13
+ let target = "_self";
14
14
  if (isOpenNewTab(event)) {
15
- target = '_blank';
15
+ target = "_blank";
16
16
  }
17
17
  window.open(url, target);
18
- }
19
- node.style.cursor = 'pointer';
18
+ };
19
+ node.style.cursor = "pointer";
20
20
  node.title = hover;
21
21
  }
22
-
@@ -4,14 +4,17 @@
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 { matchesInstanceIdOrLegacyWorkspaceIdExactly, matchesNewWorkspaceIdExactly, parseWorkspaceIdFromHostname } from './parse-workspace-id';
7
+ import * as chai from "chai";
8
+ import { suite, test } from "mocha-typescript";
9
+ import {
10
+ matchesInstanceIdOrLegacyWorkspaceIdExactly,
11
+ matchesNewWorkspaceIdExactly,
12
+ parseWorkspaceIdFromHostname,
13
+ } from "./parse-workspace-id";
10
14
  const expect = chai.expect;
11
15
 
12
16
  @suite
13
17
  export class ParseWorkspaceIdTest {
14
-
15
18
  @test public parseWorkspaceIdFromHostname_fromWorkspaceLocation() {
16
19
  const actual = parseWorkspaceIdFromHostname("moccasin-ferret-155799b3.ws-eu01.gitpod.io");
17
20
  expect(actual).to.equal("moccasin-ferret-155799b3");
@@ -28,7 +31,9 @@ export class ParseWorkspaceIdTest {
28
31
  }
29
32
 
30
33
  @test public parseWorkspaceIdFromHostname_fromWorkspacePortLocationWithWebviewPrefixCustomHost() {
31
- const actual = parseWorkspaceIdFromHostname("webview-3000-moccasin-ferret-155799b3.ws-eu01.some.subdomain.somehost.com");
34
+ const actual = parseWorkspaceIdFromHostname(
35
+ "webview-3000-moccasin-ferret-155799b3.ws-eu01.some.subdomain.somehost.com",
36
+ );
32
37
  expect(actual).to.equal("moccasin-ferret-155799b3");
33
38
  }
34
39
 
@@ -44,12 +49,16 @@ export class ParseWorkspaceIdTest {
44
49
  }
45
50
 
46
51
  @test public parseLegacyWorkspaceIdFromHostname_fromWorkspacePortLocationWithWebviewPrefix() {
47
- const actual = parseWorkspaceIdFromHostname("webview-3000-b7e0eaf8-ec73-44ec-81ea-04859263b656.ws-eu01.gitpod.io");
52
+ const actual = parseWorkspaceIdFromHostname(
53
+ "webview-3000-b7e0eaf8-ec73-44ec-81ea-04859263b656.ws-eu01.gitpod.io",
54
+ );
48
55
  expect(actual).to.equal("b7e0eaf8-ec73-44ec-81ea-04859263b656");
49
56
  }
50
57
 
51
58
  @test public parseLegacyWorkspaceIdFromHostname_fromWorkspacePortLocationWithWebviewPrefixCustomHost() {
52
- const actual = parseWorkspaceIdFromHostname("webview-3000-ca81a50f-09d7-465c-acd9-264a747d5351.ws-eu01.some.subdomain.somehost.com");
59
+ const actual = parseWorkspaceIdFromHostname(
60
+ "webview-3000-ca81a50f-09d7-465c-acd9-264a747d5351.ws-eu01.some.subdomain.somehost.com",
61
+ );
53
62
  expect(actual).to.equal("ca81a50f-09d7-465c-acd9-264a747d5351");
54
63
  }
55
64
 
@@ -73,4 +82,4 @@ export class ParseWorkspaceIdTest {
73
82
  expect(actual).to.be.false;
74
83
  }
75
84
  }
76
- module.exports = new ParseWorkspaceIdTest()
85
+ module.exports = new ParseWorkspaceIdTest();