@gitpod/gitpod-protocol 0.1.5-server-vscode-ouath2.18 → 0.1.5-server-vscode-oauth2.24

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 (330) hide show
  1. package/data/gitpod-schema.json +49 -4
  2. package/lib/accounting-protocol.d.ts +10 -11
  3. package/lib/accounting-protocol.d.ts.map +1 -1
  4. package/lib/accounting-protocol.js +31 -41
  5. package/lib/accounting-protocol.js.map +1 -1
  6. package/lib/admin-protocol.d.ts +20 -2
  7. package/lib/admin-protocol.d.ts.map +1 -1
  8. package/lib/admin-protocol.js +2 -13
  9. package/lib/admin-protocol.js.map +1 -1
  10. package/lib/analytics.d.ts +12 -1
  11. package/lib/analytics.d.ts.map +1 -1
  12. package/lib/analytics.js.map +1 -1
  13. package/lib/auth.d.ts.map +1 -1
  14. package/lib/context-url.d.ts +18 -5
  15. package/lib/context-url.d.ts.map +1 -1
  16. package/lib/context-url.js +63 -10
  17. package/lib/context-url.js.map +1 -1
  18. package/lib/context-url.spec.d.ts +2 -0
  19. package/lib/context-url.spec.d.ts.map +1 -1
  20. package/lib/context-url.spec.js +81 -48
  21. package/lib/context-url.spec.js.map +1 -1
  22. package/lib/email-protocol.d.ts +1 -1
  23. package/lib/email-protocol.d.ts.map +1 -1
  24. package/lib/email-protocol.js +4 -4
  25. package/lib/email-protocol.js.map +1 -1
  26. package/lib/encryption/container-module.d.ts.map +1 -1
  27. package/lib/encryption/container-module.js +4 -4
  28. package/lib/encryption/container-module.js.map +1 -1
  29. package/lib/encryption/encryption-engine.d.ts.map +1 -1
  30. package/lib/encryption/encryption-engine.js +25 -26
  31. package/lib/encryption/encryption-engine.js.map +1 -1
  32. package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
  33. package/lib/encryption/encryption-engine.spec.js +29 -37
  34. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  35. package/lib/encryption/encryption-service.d.ts.map +1 -1
  36. package/lib/encryption/encryption-service.js +30 -44
  37. package/lib/encryption/encryption-service.js.map +1 -1
  38. package/lib/encryption/key-provider.d.ts.map +1 -1
  39. package/lib/encryption/key-provider.js +31 -38
  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 +17 -19
  44. package/lib/env.js.map +1 -1
  45. package/lib/gitpod-file-parser.d.ts.map +1 -1
  46. package/lib/gitpod-file-parser.js +26 -42
  47. package/lib/gitpod-file-parser.js.map +1 -1
  48. package/lib/gitpod-file-parser.spec.js +145 -142
  49. package/lib/gitpod-file-parser.spec.js.map +1 -1
  50. package/lib/gitpod-service.d.ts +67 -31
  51. package/lib/gitpod-service.d.ts.map +1 -1
  52. package/lib/gitpod-service.js +162 -309
  53. package/lib/gitpod-service.js.map +1 -1
  54. package/lib/headless-workspace-log.d.ts +1 -0
  55. package/lib/headless-workspace-log.d.ts.map +1 -1
  56. package/lib/headless-workspace-log.js +2 -1
  57. package/lib/headless-workspace-log.js.map +1 -1
  58. package/lib/ide-frontend-service.d.ts +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 +16 -13
  64. package/lib/index.d.ts.map +1 -1
  65. package/lib/index.js +3 -0
  66. package/lib/index.js.map +1 -1
  67. package/lib/installation-admin-protocol.d.ts +27 -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/license-protocol.d.ts.map +1 -1
  72. package/lib/license-protocol.js.map +1 -1
  73. package/lib/messaging/browser/connection.d.ts +3 -3
  74. package/lib/messaging/browser/connection.d.ts.map +1 -1
  75. package/lib/messaging/browser/connection.js +173 -36
  76. package/lib/messaging/browser/connection.js.map +1 -1
  77. package/lib/messaging/browser/window-connection.d.ts +4 -4
  78. package/lib/messaging/browser/window-connection.d.ts.map +1 -1
  79. package/lib/messaging/browser/window-connection.js +42 -59
  80. package/lib/messaging/browser/window-connection.js.map +1 -1
  81. package/lib/messaging/client-call-metrics.d.ts +2 -2
  82. package/lib/messaging/client-call-metrics.d.ts.map +1 -1
  83. package/lib/messaging/client-call-metrics.js +37 -38
  84. package/lib/messaging/client-call-metrics.js.map +1 -1
  85. package/lib/messaging/error.d.ts +2 -1
  86. package/lib/messaging/error.d.ts.map +1 -1
  87. package/lib/messaging/error.js +4 -2
  88. package/lib/messaging/error.js.map +1 -1
  89. package/lib/messaging/handler.d.ts +10 -0
  90. package/lib/messaging/handler.d.ts.map +1 -1
  91. package/lib/messaging/handler.js +1 -1
  92. package/lib/messaging/node/connection.d.ts +1 -17
  93. package/lib/messaging/node/connection.d.ts.map +1 -1
  94. package/lib/messaging/node/connection.js +24 -60
  95. package/lib/messaging/node/connection.js.map +1 -1
  96. package/lib/messaging/proxy-factory.d.ts +3 -1
  97. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  98. package/lib/messaging/proxy-factory.js +74 -163
  99. package/lib/messaging/proxy-factory.js.map +1 -1
  100. package/lib/oss-allowlist.d.ts +14 -0
  101. package/lib/oss-allowlist.d.ts.map +1 -0
  102. package/lib/oss-allowlist.js +8 -0
  103. package/lib/oss-allowlist.js.map +1 -0
  104. package/lib/payment-protocol.d.ts.map +1 -1
  105. package/lib/payment-protocol.js +1 -1
  106. package/lib/payment-protocol.js.map +1 -1
  107. package/lib/permission.d.ts +9 -4
  108. package/lib/permission.d.ts.map +1 -1
  109. package/lib/permission.js +39 -31
  110. package/lib/permission.js.map +1 -1
  111. package/lib/plans.d.ts +4 -4
  112. package/lib/plans.d.ts.map +1 -1
  113. package/lib/plans.js +225 -209
  114. package/lib/plans.js.map +1 -1
  115. package/lib/protocol.d.ts +83 -78
  116. package/lib/protocol.d.ts.map +1 -1
  117. package/lib/protocol.js +131 -190
  118. package/lib/protocol.js.map +1 -1
  119. package/lib/snapshot-url.d.ts +14 -0
  120. package/lib/snapshot-url.d.ts.map +1 -0
  121. package/lib/snapshot-url.js +26 -0
  122. package/lib/snapshot-url.js.map +1 -0
  123. package/{src/theia-plugins.ts → lib/snapshot-url.spec.d.ts} +2 -6
  124. package/lib/snapshot-url.spec.d.ts.map +1 -0
  125. package/lib/snapshot-url.spec.js +41 -0
  126. package/lib/snapshot-url.spec.js.map +1 -0
  127. package/lib/team-subscription-protocol.d.ts +5 -3
  128. package/lib/team-subscription-protocol.d.ts.map +1 -1
  129. package/lib/team-subscription-protocol.js +17 -17
  130. package/lib/team-subscription-protocol.js.map +1 -1
  131. package/lib/teams-projects-protocol.d.ts +16 -3
  132. package/lib/teams-projects-protocol.d.ts.map +1 -1
  133. package/lib/teams-projects-protocol.js +11 -15
  134. package/lib/teams-projects-protocol.js.map +1 -1
  135. package/lib/typings/globals.d.ts +2 -2
  136. package/lib/typings/globals.d.ts.map +1 -1
  137. package/lib/util/analytics.d.ts.map +1 -1
  138. package/lib/util/analytics.js +44 -26
  139. package/lib/util/analytics.js.map +1 -1
  140. package/lib/util/async-iterator.d.ts.map +1 -1
  141. package/lib/util/async-iterator.js +57 -135
  142. package/lib/util/async-iterator.js.map +1 -1
  143. package/lib/util/cancelable.js +17 -59
  144. package/lib/util/cancelable.js.map +1 -1
  145. package/lib/util/date-time.js +11 -11
  146. package/lib/util/date-time.js.map +1 -1
  147. package/lib/util/deferred.js +10 -12
  148. package/lib/util/deferred.js.map +1 -1
  149. package/lib/util/disposable.d.ts.map +1 -1
  150. package/lib/util/disposable.js +27 -40
  151. package/lib/util/disposable.js.map +1 -1
  152. package/lib/util/event.d.ts.map +1 -1
  153. package/lib/util/event.js +63 -77
  154. package/lib/util/event.js.map +1 -1
  155. package/lib/util/garbage-collected-cache.d.ts +1 -0
  156. package/lib/util/garbage-collected-cache.d.ts.map +1 -1
  157. package/lib/util/garbage-collected-cache.js +27 -47
  158. package/lib/util/garbage-collected-cache.js.map +1 -1
  159. package/lib/util/generate-workspace-id.d.ts +1 -1
  160. package/lib/util/generate-workspace-id.d.ts.map +1 -1
  161. package/lib/util/generate-workspace-id.js +460 -499
  162. package/lib/util/generate-workspace-id.js.map +1 -1
  163. package/lib/util/generate-workspace-id.spec.js +61 -78
  164. package/lib/util/generate-workspace-id.spec.js.map +1 -1
  165. package/lib/util/gitpod-cookie.d.ts +20 -0
  166. package/lib/util/gitpod-cookie.d.ts.map +1 -0
  167. package/lib/util/gitpod-cookie.js +41 -0
  168. package/lib/util/gitpod-cookie.js.map +1 -0
  169. package/lib/util/gitpod-host-url.d.ts +1 -1
  170. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  171. package/lib/util/gitpod-host-url.js +106 -114
  172. package/lib/util/gitpod-host-url.js.map +1 -1
  173. package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
  174. package/lib/util/gitpod-host-url.spec.js +97 -135
  175. package/lib/util/gitpod-host-url.spec.js.map +1 -1
  176. package/lib/util/grpc.d.ts.map +1 -1
  177. package/lib/util/grpc.js +3 -3
  178. package/lib/util/grpc.js.map +1 -1
  179. package/lib/util/jaeger-client-types.d.ts +68 -0
  180. package/lib/util/jaeger-client-types.d.ts.map +1 -0
  181. package/lib/{theia-plugins.js → util/jaeger-client-types.js} +1 -1
  182. package/lib/util/jaeger-client-types.js.map +1 -0
  183. package/lib/util/logging.d.ts +33 -33
  184. package/lib/util/logging.d.ts.map +1 -1
  185. package/lib/util/logging.js +87 -129
  186. package/lib/util/logging.js.map +1 -1
  187. package/lib/util/make-link.js +5 -5
  188. package/lib/util/make-link.js.map +1 -1
  189. package/lib/util/parse-workspace-id.d.ts +10 -0
  190. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  191. package/lib/util/parse-workspace-id.js +30 -7
  192. package/lib/util/parse-workspace-id.js.map +1 -1
  193. package/lib/util/parse-workspace-id.spec.d.ts +4 -0
  194. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  195. package/lib/util/parse-workspace-id.spec.js +123 -84
  196. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  197. package/lib/util/queue.js +16 -55
  198. package/lib/util/queue.js.map +1 -1
  199. package/lib/util/queue.spec.js +147 -288
  200. package/lib/util/queue.spec.js.map +1 -1
  201. package/lib/util/repeat.d.ts +15 -0
  202. package/lib/util/repeat.d.ts.map +1 -0
  203. package/lib/util/repeat.js +55 -0
  204. package/lib/util/repeat.js.map +1 -0
  205. package/lib/util/semaphore.d.ts.map +1 -1
  206. package/lib/util/semaphore.js +15 -46
  207. package/lib/util/semaphore.js.map +1 -1
  208. package/lib/util/skip-if.d.ts.map +1 -1
  209. package/lib/util/skip-if.js +6 -6
  210. package/lib/util/skip-if.js.map +1 -1
  211. package/lib/util/timeutil.d.ts.map +1 -1
  212. package/lib/util/timeutil.js +16 -16
  213. package/lib/util/timeutil.js.map +1 -1
  214. package/lib/util/timeutil.spec.d.ts.map +1 -1
  215. package/lib/util/timeutil.spec.js +21 -24
  216. package/lib/util/timeutil.spec.js.map +1 -1
  217. package/lib/util/tracing.d.ts +52 -6
  218. package/lib/util/tracing.d.ts.map +1 -1
  219. package/lib/util/tracing.js +199 -64
  220. package/lib/util/tracing.js.map +1 -1
  221. package/lib/util/tracing.spec.d.ts +7 -0
  222. package/lib/util/tracing.spec.d.ts.map +1 -0
  223. package/lib/util/tracing.spec.js +121 -0
  224. package/lib/util/tracing.spec.js.map +1 -0
  225. package/lib/util/workspace-port-authentication.d.ts +7 -7
  226. package/lib/util/workspace-port-authentication.d.ts.map +1 -1
  227. package/lib/util/workspace-port-authentication.js +9 -12
  228. package/lib/util/workspace-port-authentication.js.map +1 -1
  229. package/lib/workspace-cluster.d.ts +15 -3
  230. package/lib/workspace-cluster.d.ts.map +1 -1
  231. package/lib/workspace-cluster.js +19 -4
  232. package/lib/workspace-cluster.js.map +1 -1
  233. package/lib/workspace-instance.d.ts +25 -4
  234. package/lib/workspace-instance.d.ts.map +1 -1
  235. package/lib/wsready.d.ts +1 -1
  236. package/lib/wsready.d.ts.map +1 -1
  237. package/lib/wsready.js +2 -2
  238. package/package.json +22 -13
  239. package/pkg-yarn.lock +12 -7
  240. package/provenance-bundle.jsonl +2 -0
  241. package/src/accounting-protocol.ts +53 -53
  242. package/src/admin-protocol.ts +43 -20
  243. package/src/analytics.ts +28 -15
  244. package/src/auth.ts +2 -2
  245. package/src/context-url.spec.ts +37 -9
  246. package/src/context-url.ts +94 -36
  247. package/src/email-protocol.ts +5 -6
  248. package/src/encryption/container-module.ts +2 -3
  249. package/src/encryption/encryption-engine.spec.ts +9 -8
  250. package/src/encryption/encryption-engine.ts +14 -14
  251. package/src/encryption/encryption-service.ts +4 -5
  252. package/src/encryption/key-provider.ts +16 -19
  253. package/src/env.ts +9 -10
  254. package/src/gitpod-file-parser.spec.ts +55 -61
  255. package/src/gitpod-file-parser.ts +16 -17
  256. package/src/gitpod-service.ts +174 -109
  257. package/src/headless-workspace-log.ts +6 -4
  258. package/src/ide-frontend-service.ts +2 -2
  259. package/src/ide-protocol.ts +119 -0
  260. package/src/index.ts +16 -13
  261. package/src/installation-admin-protocol.ts +42 -0
  262. package/src/license-protocol.ts +5 -6
  263. package/src/messaging/browser/connection.ts +185 -21
  264. package/src/messaging/browser/window-connection.ts +39 -29
  265. package/src/messaging/client-call-metrics.ts +70 -71
  266. package/src/messaging/error.ts +6 -5
  267. package/src/messaging/handler.ts +13 -1
  268. package/src/messaging/node/connection.ts +23 -70
  269. package/src/messaging/proxy-factory.ts +32 -33
  270. package/src/oss-allowlist.ts +15 -0
  271. package/src/payment-protocol.ts +2 -2
  272. package/src/permission.ts +40 -33
  273. package/src/plans.ts +236 -189
  274. package/src/protocol.ts +280 -277
  275. package/src/snapshot-url.spec.ts +27 -0
  276. package/src/snapshot-url.ts +27 -0
  277. package/src/team-subscription-protocol.ts +33 -23
  278. package/src/teams-projects-protocol.ts +27 -9
  279. package/src/typings/globals.ts +4 -4
  280. package/src/util/analytics.ts +56 -18
  281. package/src/util/async-iterator.ts +4 -5
  282. package/src/util/cancelable.ts +3 -3
  283. package/src/util/date-time.ts +8 -8
  284. package/src/util/deferred.ts +6 -6
  285. package/src/util/disposable.ts +3 -6
  286. package/src/util/event.ts +9 -11
  287. package/src/util/garbage-collected-cache.ts +9 -6
  288. package/src/util/generate-workspace-id.spec.ts +26 -6
  289. package/src/util/generate-workspace-id.ts +458 -440
  290. package/src/util/gitpod-cookie.ts +38 -0
  291. package/src/util/gitpod-host-url.spec.ts +40 -13
  292. package/src/util/gitpod-host-url.ts +41 -38
  293. package/src/util/grpc.ts +4 -4
  294. package/src/util/jaeger-client-types.ts +102 -0
  295. package/src/util/logging.ts +109 -86
  296. package/src/util/make-link.ts +6 -7
  297. package/src/util/parse-workspace-id.spec.ts +37 -8
  298. package/src/util/parse-workspace-id.ts +32 -7
  299. package/src/util/queue.spec.ts +27 -25
  300. package/src/util/repeat.ts +45 -0
  301. package/src/util/semaphore.ts +4 -6
  302. package/src/util/skip-if.ts +9 -6
  303. package/src/util/timeutil.spec.ts +14 -15
  304. package/src/util/timeutil.ts +15 -11
  305. package/src/util/tracing.spec.ts +88 -0
  306. package/src/util/tracing.ts +202 -31
  307. package/src/util/workspace-port-authentication.ts +10 -13
  308. package/src/workspace-cluster.ts +26 -8
  309. package/src/workspace-instance.ts +53 -23
  310. package/src/wsready.ts +3 -3
  311. package/data/builtin-theia-plugins.json +0 -372
  312. package/lib/messaging/connection-error-handler.d.ts +0 -27
  313. package/lib/messaging/connection-error-handler.d.ts.map +0 -1
  314. package/lib/messaging/connection-error-handler.js +0 -46
  315. package/lib/messaging/connection-error-handler.js.map +0 -1
  316. package/lib/theia-plugins.d.ts +0 -11
  317. package/lib/theia-plugins.d.ts.map +0 -1
  318. package/lib/theia-plugins.js.map +0 -1
  319. package/lib/util/repeater.d.ts +0 -22
  320. package/lib/util/repeater.d.ts.map +0 -1
  321. package/lib/util/repeater.js +0 -118
  322. package/lib/util/repeater.js.map +0 -1
  323. package/lib/util/safe-promise.d.ts +0 -11
  324. package/lib/util/safe-promise.d.ts.map +0 -1
  325. package/lib/util/safe-promise.js +0 -34
  326. package/lib/util/safe-promise.js.map +0 -1
  327. package/src/messaging/connection-error-handler.ts +0 -62
  328. package/src/util/jaeger-client.d.ts +0 -105
  329. package/src/util/repeater.ts +0 -49
  330. package/src/util/safe-promise.ts +0 -26
package/lib/plans.js CHANGED
@@ -4,80 +4,60 @@
4
4
  * Licensed under the GNU Affero General Public License (AGPL).
5
5
  * See License-AGPL.txt in the project root for license information.
6
6
  */
7
- var __read = (this && this.__read) || function (o, n) {
8
- var m = typeof Symbol === "function" && o[Symbol.iterator];
9
- if (!m) return o;
10
- var i = m.call(o), r, ar = [], e;
11
- try {
12
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
13
- }
14
- catch (error) { e = { error: error }; }
15
- finally {
16
- try {
17
- if (r && !r.done && (m = i["return"])) m.call(i);
18
- }
19
- finally { if (e) throw e.error; }
20
- }
21
- return ar;
22
- };
23
- var __spread = (this && this.__spread) || function () {
24
- for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
25
- return ar;
26
- };
27
7
  Object.defineProperty(exports, "__esModule", { value: true });
28
8
  exports.Plans = exports.ABSOLUTE_MAX_USAGE = exports.Coupons = exports.Coupon = exports.MAX_PARALLEL_WORKSPACES = exports.Plan = exports.Currency = void 0;
29
9
  var Currency;
30
10
  (function (Currency) {
31
- Currency.getAll = function () {
32
- return ['USD', 'EUR'];
11
+ Currency.getAll = () => {
12
+ return ["USD", "EUR"];
33
13
  };
34
- Currency.getSymbol = function (c) {
35
- return c === 'USD' ? '$' : '€';
14
+ Currency.getSymbol = (c) => {
15
+ return c === "USD" ? "$" : "€";
36
16
  };
37
17
  })(Currency = exports.Currency || (exports.Currency = {}));
38
18
  var Plan;
39
19
  (function (Plan) {
40
- Plan.is = function (o) {
41
- return 'chargebeeId' in o
42
- && 'name' in o
43
- && 'currency' in o
44
- && 'pricePerMonth' in o
45
- && 'hoursPerMonth' in o
46
- && 'type' in o;
20
+ Plan.is = (o) => {
21
+ return ("chargebeeId" in o &&
22
+ "name" in o &&
23
+ "currency" in o &&
24
+ "pricePerMonth" in o &&
25
+ "hoursPerMonth" in o &&
26
+ "type" in o);
47
27
  };
48
28
  })(Plan = exports.Plan || (exports.Plan = {}));
49
29
  exports.MAX_PARALLEL_WORKSPACES = 16;
50
30
  var Coupon;
51
31
  (function (Coupon) {
52
- Coupon.is = function (o) {
53
- return 'id' in o;
32
+ Coupon.is = (o) => {
33
+ return "id" in o;
54
34
  };
55
35
  })(Coupon = exports.Coupon || (exports.Coupon = {}));
56
36
  var Coupons;
57
37
  (function (Coupons) {
58
38
  Coupons.INTERNAL_GITPOD_GHSP = {
59
39
  id: "INTERNAL_GITPOD_GHSP",
60
- isGithubStudentCoupon: true
40
+ isGithubStudentCoupon: true,
61
41
  };
62
42
  Coupons.INTERNAL_GITPOD_GHSP_2 = {
63
43
  id: "INTERNAL_GITPOD_GHSP_2",
64
- isGithubStudentCoupon: true
44
+ isGithubStudentCoupon: true,
65
45
  };
66
46
  Coupons.GITHUBSTUDENTPACKFORFACULTY = {
67
47
  id: "GITHUBSTUDENTPACKFORFACULTY",
68
- isGithubStudentCoupon: true
48
+ isGithubStudentCoupon: true,
69
49
  };
70
- Coupons.isGithubStudentCoupon = function (id) {
71
- var c = Coupons.getAllCoupons().find(function (ic) { return ic.id === id; });
50
+ Coupons.isGithubStudentCoupon = (id) => {
51
+ const c = Coupons.getAllCoupons().find((ic) => ic.id === id);
72
52
  if (!c) {
73
53
  return undefined;
74
54
  }
75
55
  return !!c.isGithubStudentCoupon;
76
56
  };
77
- Coupons.getAllCoupons = function () {
57
+ Coupons.getAllCoupons = () => {
78
58
  return Object.keys(Coupons)
79
- .map(function (k) { return Coupons[k]; })
80
- .filter(function (a) { return typeof a === 'object' && Coupon.is(a); });
59
+ .map((k) => Coupons[k])
60
+ .filter((a) => typeof a === "object" && Coupon.is(a));
81
61
  };
82
62
  })(Coupons = exports.Coupons || (exports.Coupons = {}));
83
63
  // Theoretical maximum of workspace hours: 16 workspaces for 24h a day for 31 days as permitted by the v3 unlimited plan
@@ -115,249 +95,249 @@ var Plans;
115
95
  * The old default plan (v1): 100h hours for public repos
116
96
  */
117
97
  Plans.FREE = {
118
- chargebeeId: 'free',
98
+ chargebeeId: "free",
119
99
  githubId: 2034,
120
100
  githubPlanNumber: 1,
121
- type: 'free',
122
- name: 'Open Source',
123
- currency: 'USD',
101
+ type: "free",
102
+ name: "Open Source",
103
+ currency: "USD",
124
104
  pricePerMonth: 0,
125
- hoursPerMonth: 100
105
+ hoursPerMonth: 100,
126
106
  };
127
107
  /**
128
108
  * The new default plan (v3): 50h hours for public repos
129
109
  */
130
110
  Plans.FREE_50 = {
131
- chargebeeId: 'free-50',
111
+ chargebeeId: "free-50",
132
112
  githubId: 4902,
133
113
  githubPlanNumber: 5,
134
- type: 'free-50',
135
- name: 'Open Source',
136
- currency: 'USD',
114
+ type: "free-50",
115
+ name: "Open Source",
116
+ currency: "USD",
137
117
  pricePerMonth: 0,
138
- hoursPerMonth: 50
118
+ hoursPerMonth: 50,
139
119
  };
140
120
  /**
141
121
  * Users created after this date get the FREE_50 plan (v3) instead of the (old) FREE plan (v1)
142
122
  */
143
- Plans.FREE_50_START_DATE = '2019-12-19T00:00:00.000Z';
123
+ Plans.FREE_50_START_DATE = "2019-12-19T00:00:00.000Z";
144
124
  /**
145
125
  * The 'Professional Open Source' plan was introduced to offer professional open-souce developers unlimited hours.
146
126
  */
147
127
  Plans.FREE_OPEN_SOURCE = {
148
- chargebeeId: 'free-open-source',
149
- type: 'free-open-source',
150
- name: 'Professional Open Source',
151
- currency: 'USD',
128
+ chargebeeId: "free-open-source",
129
+ type: "free-open-source",
130
+ name: "Professional Open Source",
131
+ currency: "USD",
152
132
  pricePerMonth: 0,
153
- hoursPerMonth: 'unlimited'
133
+ hoursPerMonth: "unlimited",
154
134
  };
155
135
  /**
156
136
  * The 'Student Unleashed' plans were introduced to give students access to the highly-priced unlimited plans.
157
137
  */
158
138
  Plans.PROFESSIONAL_STUDENT_EUR = {
159
- chargebeeId: 'professional-student-eur',
160
- type: 'student',
161
- name: 'Student Unleashed',
162
- currency: 'EUR',
139
+ chargebeeId: "professional-student-eur",
140
+ type: "student",
141
+ name: "Student Unleashed",
142
+ currency: "EUR",
163
143
  pricePerMonth: 8,
164
- hoursPerMonth: 'unlimited'
144
+ hoursPerMonth: "unlimited",
165
145
  };
166
146
  /**
167
147
  * The 'Student Unleashed' plans were introduced to give students access to the highly-priced unlimited plans.
168
148
  */
169
149
  Plans.PROFESSIONAL_STUDENT_USD = {
170
- chargebeeId: 'professional-student-usd',
171
- type: 'student',
172
- name: 'Student Unleashed',
173
- currency: 'USD',
150
+ chargebeeId: "professional-student-usd",
151
+ type: "student",
152
+ name: "Student Unleashed",
153
+ currency: "USD",
174
154
  pricePerMonth: 9,
175
- hoursPerMonth: 'unlimited'
155
+ hoursPerMonth: "unlimited",
176
156
  };
177
157
  /**
178
158
  * The 'Student Unleashed' plans were introduced to give students access to the highly-priced unlimited plans.
179
159
  */
180
160
  Plans.TEAM_PROFESSIONAL_STUDENT_EUR = {
181
- chargebeeId: 'team-professional-student-eur',
182
- type: 'student',
183
- name: 'Team Student Unleashed',
161
+ chargebeeId: "team-professional-student-eur",
162
+ type: "student",
163
+ name: "Team Student Unleashed",
184
164
  team: true,
185
- currency: 'EUR',
165
+ currency: "EUR",
186
166
  pricePerMonth: 8,
187
- hoursPerMonth: 'unlimited'
167
+ hoursPerMonth: "unlimited",
188
168
  };
189
169
  /**
190
170
  * The 'Student Unleashed' plans were introduced to give students access to the highly-priced unlimited plans.
191
171
  */
192
172
  Plans.TEAM_PROFESSIONAL_STUDENT_USD = {
193
- chargebeeId: 'team-professional-student-usd',
194
- type: 'student',
195
- name: 'Team Student Unleashed',
173
+ chargebeeId: "team-professional-student-usd",
174
+ type: "student",
175
+ name: "Team Student Unleashed",
196
176
  team: true,
197
- currency: 'USD',
177
+ currency: "USD",
198
178
  pricePerMonth: 9,
199
- hoursPerMonth: 'unlimited'
179
+ hoursPerMonth: "unlimited",
200
180
  };
201
181
  /**
202
182
  * The 'basic' plan was the original differentiator between FREE and Professional (v1) but got discarded soon.
203
183
  */
204
184
  Plans.BASIC_EUR = {
205
- chargebeeId: 'basic-eur',
206
- type: 'basic',
207
- name: 'Standard',
208
- currency: 'EUR',
185
+ chargebeeId: "basic-eur",
186
+ type: "basic",
187
+ name: "Standard",
188
+ currency: "EUR",
209
189
  pricePerMonth: 17,
210
- hoursPerMonth: 100
190
+ hoursPerMonth: 100,
211
191
  };
212
192
  /**
213
193
  * The 'basic' plan was the original differentiator between FREE and Professional (v1) but got discarded soon.
214
194
  */
215
195
  Plans.BASIC_USD = {
216
- chargebeeId: 'basic-usd',
196
+ chargebeeId: "basic-usd",
217
197
  githubId: 2035,
218
198
  githubPlanNumber: 2,
219
- type: 'basic',
220
- name: 'Standard',
221
- currency: 'USD',
199
+ type: "basic",
200
+ name: "Standard",
201
+ currency: "USD",
222
202
  pricePerMonth: 19,
223
- hoursPerMonth: 100
203
+ hoursPerMonth: 100,
224
204
  };
225
205
  /**
226
206
  * The 'personal' plan was introduced to superseed the 'basic' plan (introduced with v2) to be more attractive to hobbyists.
227
207
  */
228
208
  Plans.PERSONAL_EUR = {
229
- chargebeeId: 'personal-eur',
230
- type: 'personal',
231
- name: 'Personal',
232
- currency: 'EUR',
209
+ chargebeeId: "personal-eur",
210
+ type: "personal",
211
+ name: "Personal",
212
+ currency: "EUR",
233
213
  pricePerMonth: 8,
234
- hoursPerMonth: 100
214
+ hoursPerMonth: 100,
235
215
  };
236
216
  /**
237
217
  * The 'personal' plan was introduced to superseed the 'basic' plan (introduced with v2) to be more attractive to hobbyists.
238
218
  */
239
219
  Plans.PERSONAL_USD = {
240
- chargebeeId: 'personal-usd',
220
+ chargebeeId: "personal-usd",
241
221
  githubId: 2274,
242
222
  githubPlanNumber: 4,
243
- type: 'personal',
244
- name: 'Personal',
245
- currency: 'USD',
223
+ type: "personal",
224
+ name: "Personal",
225
+ currency: "USD",
246
226
  pricePerMonth: 9,
247
- hoursPerMonth: 100
227
+ hoursPerMonth: 100,
248
228
  };
249
229
  /**
250
230
  * This is the 'new' Professional plan (v3), which is meant to fit well between Personal (9$/8€) on the left and
251
231
  * Unleashed (39$/35€) on the right.
252
232
  */
253
233
  Plans.PROFESSIONAL_NEW_EUR = {
254
- chargebeeId: 'professional-new-eur',
255
- type: 'professional-new',
256
- name: 'Professional',
257
- currency: 'EUR',
234
+ chargebeeId: "professional-new-eur",
235
+ type: "professional-new",
236
+ name: "Professional",
237
+ currency: "EUR",
258
238
  pricePerMonth: 23,
259
- hoursPerMonth: 'unlimited'
239
+ hoursPerMonth: "unlimited",
260
240
  };
261
241
  /**
262
242
  * This is the 'new' Professional plan (v3), which is meant to fit well between Personal (9$/8€) on the left and
263
243
  * Unleashed (39$/35€) on the right.
264
244
  */
265
245
  Plans.PROFESSIONAL_NEW_USD = {
266
- chargebeeId: 'professional-new-usd',
267
- type: 'professional-new',
268
- name: 'Professional',
269
- currency: 'USD',
246
+ chargebeeId: "professional-new-usd",
247
+ type: "professional-new",
248
+ name: "Professional",
249
+ currency: "USD",
270
250
  pricePerMonth: 25,
271
- hoursPerMonth: 'unlimited'
251
+ hoursPerMonth: "unlimited",
272
252
  };
273
253
  /**
274
254
  * This is the 'new' Team Professional plan (v3), which is meant to fit well between Personal (9$/8€) on the left and
275
255
  * Unleashed (39$/35€) on the right.
276
256
  */
277
257
  Plans.TEAM_PROFESSIONAL_NEW_EUR = {
278
- chargebeeId: 'team-professional-new-eur',
279
- type: 'professional-new',
280
- name: 'Team Professional',
281
- currency: 'EUR',
258
+ chargebeeId: "team-professional-new-eur",
259
+ type: "professional-new",
260
+ name: "Team Professional",
261
+ currency: "EUR",
282
262
  team: true,
283
263
  pricePerMonth: 23,
284
- hoursPerMonth: 'unlimited'
264
+ hoursPerMonth: "unlimited",
285
265
  };
286
266
  /**
287
267
  * This is the 'new' Team Professional plan (v3), which is meant to fit well between Personal (9$/8€) on the left and
288
268
  * Unleashed (39$/35€) on the right.
289
269
  */
290
270
  Plans.TEAM_PROFESSIONAL_NEW_USD = {
291
- chargebeeId: 'team-professional-new-usd',
292
- type: 'professional-new',
293
- name: 'Team Professional',
294
- currency: 'USD',
271
+ chargebeeId: "team-professional-new-usd",
272
+ type: "professional-new",
273
+ name: "Team Professional",
274
+ currency: "USD",
295
275
  team: true,
296
276
  pricePerMonth: 25,
297
- hoursPerMonth: 'unlimited'
277
+ hoursPerMonth: "unlimited",
298
278
  };
299
279
  /**
300
280
  * This is the 'Unleashed' plan (v1, rebranded v2, v5)
301
281
  * It was originally introduced as 'Professional', and we cannot update the ids, so it stays that way in the code.
302
282
  */
303
283
  Plans.PROFESSIONAL_EUR = {
304
- chargebeeId: 'professional-eur',
305
- type: 'professional',
306
- name: 'Unleashed',
307
- currency: 'EUR',
284
+ chargebeeId: "professional-eur",
285
+ type: "professional",
286
+ name: "Unleashed",
287
+ currency: "EUR",
308
288
  pricePerMonth: 35,
309
- hoursPerMonth: 'unlimited'
289
+ hoursPerMonth: "unlimited",
310
290
  };
311
291
  /**
312
292
  * This is the 'Unleashed' plan (v1, rebranded v2, v5)
313
293
  * It was originally introduced as 'Professional', and we cannot update the ids, so it stays that way in the code.
314
294
  */
315
295
  Plans.PROFESSIONAL_USD = {
316
- chargebeeId: 'professional-usd',
296
+ chargebeeId: "professional-usd",
317
297
  githubId: 2036,
318
298
  githubPlanNumber: 3,
319
- type: 'professional',
320
- name: 'Unleashed',
321
- currency: 'USD',
299
+ type: "professional",
300
+ name: "Unleashed",
301
+ currency: "USD",
322
302
  pricePerMonth: 39,
323
- hoursPerMonth: 'unlimited'
303
+ hoursPerMonth: "unlimited",
324
304
  };
325
305
  /**
326
306
  * This is the Team-'Unleashed' plan (v1, rebranded v2, v5)
327
307
  * It was originally introduced as 'Professional', and we cannot update the ids, so it stays that way in the code.
328
308
  */
329
309
  Plans.TEAM_PROFESSIONAL_USD = {
330
- chargebeeId: 'team-professional-usd',
331
- type: 'professional',
332
- name: 'Team Unleashed',
333
- currency: 'USD',
310
+ chargebeeId: "team-professional-usd",
311
+ type: "professional",
312
+ name: "Team Unleashed",
313
+ currency: "USD",
334
314
  team: true,
335
315
  pricePerMonth: 39,
336
- hoursPerMonth: 'unlimited'
316
+ hoursPerMonth: "unlimited",
337
317
  };
338
318
  /**
339
319
  * This is the Team-'Unleashed' plan (v1, rebranded v2, v5)
340
320
  * It was originally introduced as 'Professional', and we cannot update the ids, so it stays that way in the code.
341
321
  */
342
322
  Plans.TEAM_PROFESSIONAL_EUR = {
343
- chargebeeId: 'team-professional-eur',
344
- type: 'professional',
345
- name: 'Team Unleashed',
346
- currency: 'EUR',
323
+ chargebeeId: "team-professional-eur",
324
+ type: "professional",
325
+ name: "Team Unleashed",
326
+ currency: "EUR",
347
327
  team: true,
348
328
  pricePerMonth: 35,
349
- hoursPerMonth: 'unlimited'
329
+ hoursPerMonth: "unlimited",
350
330
  };
351
- var getAllPlans = function () {
331
+ const getAllPlans = () => {
352
332
  return Object.keys(Plans)
353
- .map(function (k) { return Plans[k]; })
354
- .filter(function (a) { return typeof a === 'object' && Plan.is(a); });
333
+ .map((k) => Plans[k])
334
+ .filter((a) => typeof a === "object" && Plan.is(a));
355
335
  };
356
336
  /**
357
337
  * This function returns all individual plans that might be active (= we have subscriptions for) at the moment
358
338
  */
359
339
  function getAvailablePlans(currency) {
360
- var availablePaidPlans = [
340
+ const availablePaidPlans = [
361
341
  Plans.BASIC_EUR,
362
342
  Plans.BASIC_USD,
363
343
  Plans.PERSONAL_EUR,
@@ -365,67 +345,70 @@ var Plans;
365
345
  Plans.PROFESSIONAL_NEW_EUR,
366
346
  Plans.PROFESSIONAL_NEW_USD,
367
347
  Plans.PROFESSIONAL_EUR,
368
- Plans.PROFESSIONAL_USD
348
+ Plans.PROFESSIONAL_USD,
369
349
  ];
370
- return __spread([
371
- Plans.FREE,
372
- Plans.FREE_50,
373
- Plans.FREE_OPEN_SOURCE
374
- ], availablePaidPlans.filter(function (p) { return p.currency; }));
350
+ return [Plans.FREE, Plans.FREE_50, Plans.FREE_OPEN_SOURCE, ...availablePaidPlans.filter((p) => p.currency)];
375
351
  }
376
352
  Plans.getAvailablePlans = getAvailablePlans;
377
- ;
378
- Plans.getAvailableTeamPlans = function (currency) {
379
- var teamPlans = getAllPlans().filter(function (p) { return !!p.team; });
380
- return currency ? teamPlans.filter(function (p) { return p.currency === currency; }) : teamPlans;
353
+ Plans.getAvailableTeamPlans = (currency) => {
354
+ const teamPlans = getAllPlans().filter((p) => !!p.team);
355
+ return currency ? teamPlans.filter((p) => p.currency === currency) : teamPlans;
381
356
  };
382
357
  function getById(id) {
383
358
  if (id === undefined) {
384
359
  return undefined;
385
360
  }
386
- return getAllPlans()
387
- .find(function (p) { return p.chargebeeId === id; }) || undefined;
361
+ return getAllPlans().find((p) => p.chargebeeId === id) || undefined;
388
362
  }
389
363
  Plans.getById = getById;
390
- ;
391
364
  function getByTypeAndCurrency(type, currency) {
392
365
  return getAllPlans()
393
- .filter(function (p) { return p.type; })
394
- .find(function (p) { return p.currency === currency; });
366
+ .filter((p) => p.type)
367
+ .find((p) => p.currency === currency);
395
368
  }
396
369
  Plans.getByTypeAndCurrency = getByTypeAndCurrency;
397
370
  function getProPlan(currency) {
398
371
  switch (currency) {
399
- case "EUR": return Plans.PROFESSIONAL_EUR;
400
- case "USD": return Plans.PROFESSIONAL_USD;
372
+ case "EUR":
373
+ return Plans.PROFESSIONAL_EUR;
374
+ case "USD":
375
+ return Plans.PROFESSIONAL_USD;
401
376
  }
402
377
  }
403
378
  Plans.getProPlan = getProPlan;
404
379
  function getNewProPlan(currency) {
405
380
  switch (currency) {
406
- case "EUR": return Plans.PROFESSIONAL_NEW_EUR;
407
- case "USD": return Plans.PROFESSIONAL_NEW_USD;
381
+ case "EUR":
382
+ return Plans.PROFESSIONAL_NEW_EUR;
383
+ case "USD":
384
+ return Plans.PROFESSIONAL_NEW_USD;
408
385
  }
409
386
  }
410
387
  Plans.getNewProPlan = getNewProPlan;
411
388
  function getStudentProPlan(currency) {
412
389
  switch (currency) {
413
- case "EUR": return Plans.PROFESSIONAL_STUDENT_EUR;
414
- case "USD": return Plans.PROFESSIONAL_STUDENT_USD;
390
+ case "EUR":
391
+ return Plans.PROFESSIONAL_STUDENT_EUR;
392
+ case "USD":
393
+ return Plans.PROFESSIONAL_STUDENT_USD;
415
394
  }
416
395
  }
417
396
  Plans.getStudentProPlan = getStudentProPlan;
418
397
  function getBasicPlan(currency) {
419
398
  switch (currency) {
420
- case "EUR": return Plans.BASIC_EUR;
421
- case "USD": return Plans.BASIC_USD;
399
+ case "EUR":
400
+ return Plans.BASIC_EUR;
401
+ case "USD":
402
+ return Plans.BASIC_USD;
422
403
  }
423
404
  }
424
405
  Plans.getBasicPlan = getBasicPlan;
425
406
  function getPersonalPlan(currency) {
426
407
  switch (currency) {
427
- case "EUR": return Plans.PERSONAL_EUR;
428
- case "USD": return Plans.PERSONAL_USD;
408
+ case "EUR":
409
+ return Plans.PERSONAL_EUR;
410
+ case "USD":
411
+ return Plans.PERSONAL_USD;
429
412
  }
430
413
  }
431
414
  Plans.getPersonalPlan = getPersonalPlan;
@@ -434,9 +417,9 @@ var Plans;
434
417
  }
435
418
  Plans.getFreePlan = getFreePlan;
436
419
  function isFreePlan(chargebeeId) {
437
- return chargebeeId === Plans.FREE.chargebeeId
438
- || chargebeeId === Plans.FREE_50.chargebeeId
439
- || chargebeeId === Plans.FREE_OPEN_SOURCE.chargebeeId;
420
+ return (chargebeeId === Plans.FREE.chargebeeId ||
421
+ chargebeeId === Plans.FREE_50.chargebeeId ||
422
+ chargebeeId === Plans.FREE_OPEN_SOURCE.chargebeeId);
440
423
  }
441
424
  Plans.isFreePlan = isFreePlan;
442
425
  function isFreeNonTransientPlan(chargebeeId) {
@@ -444,7 +427,7 @@ var Plans;
444
427
  }
445
428
  Plans.isFreeNonTransientPlan = isFreeNonTransientPlan;
446
429
  function getHoursPerMonth(plan) {
447
- return plan.hoursPerMonth == 'unlimited' ? exports.ABSOLUTE_MAX_USAGE : plan.hoursPerMonth;
430
+ return plan.hoursPerMonth == "unlimited" ? exports.ABSOLUTE_MAX_USAGE : plan.hoursPerMonth;
448
431
  }
449
432
  Plans.getHoursPerMonth = getHoursPerMonth;
450
433
  /**
@@ -460,7 +443,7 @@ var Plans;
460
443
  * @param plan
461
444
  */
462
445
  function getParallelWorkspaces(plan) {
463
- var DEFAULT = 4;
446
+ const DEFAULT = 4;
464
447
  if (!plan) {
465
448
  return DEFAULT;
466
449
  }
@@ -480,14 +463,14 @@ var Plans;
480
463
  * The order inside the sub-array carries meaning, too: The first one is the current, preferred plan (we advertise) for the given arity.
481
464
  * This is used to be able to get the next "higher" plan (cmp. getNextHigherPlanType).
482
465
  */
483
- var planStructure = [
466
+ const planStructure = [
484
467
  ["free-50", "free", "free-open-source"],
485
468
  ["personal", "basic"],
486
469
  ["professional-new"],
487
- ["professional", "student"]
470
+ ["professional", "student"],
488
471
  ];
489
472
  function getPlanTypeArity(type) {
490
- return planStructure.findIndex(function (types) { return types.includes(type); });
473
+ return planStructure.findIndex((types) => types.includes(type));
491
474
  }
492
475
  function getPlanTypeForArity(arity) {
493
476
  if (arity >= planStructure.length) {
@@ -500,8 +483,8 @@ var Plans;
500
483
  * @param type
501
484
  */
502
485
  function getNextHigherPlanType(type) {
503
- var arity = getPlanTypeArity(type);
504
- var nextHigherType = getPlanTypeForArity(arity + 1);
486
+ const arity = getPlanTypeArity(type);
487
+ const nextHigherType = getPlanTypeForArity(arity + 1);
505
488
  return nextHigherType || "professional";
506
489
  }
507
490
  Plans.getNextHigherPlanType = getNextHigherPlanType;
@@ -511,13 +494,13 @@ var Plans;
511
494
  * @param planTypeB
512
495
  */
513
496
  function compareTypes(planTypeA, planTypeB) {
514
- var va = getPlanTypeArity(planTypeA);
515
- var vb = getPlanTypeArity(planTypeB);
497
+ const va = getPlanTypeArity(planTypeA);
498
+ const vb = getPlanTypeArity(planTypeB);
516
499
  return va < vb ? -1 : va > vb ? 1 : 0;
517
500
  }
518
501
  Plans.compareTypes = compareTypes;
519
502
  function subscriptionChange(fromType, toType) {
520
- var cmp = Plans.compareTypes(fromType, toType);
503
+ const cmp = Plans.compareTypes(fromType, toType);
521
504
  if (cmp < 0) {
522
505
  return "upgrade";
523
506
  }
@@ -529,58 +512,91 @@ var Plans;
529
512
  }
530
513
  }
531
514
  Plans.subscriptionChange = subscriptionChange;
532
- var Feature;
515
+ let Feature;
533
516
  (function (Feature) {
534
- Feature.getFeaturesFor = function (p) {
517
+ Feature.getFeaturesFor = (p) => {
535
518
  switch (p.type) {
536
519
  case "free":
537
- return [
538
- { title: 'Public repositories' }
539
- ];
520
+ return [{ title: "Public repositories" }];
540
521
  case "free-50":
541
- return [
542
- { title: 'Public repositories' }
543
- ];
522
+ return [{ title: "Public repositories" }];
544
523
  case "free-open-source":
545
- return [
546
- { title: 'Public repositories' },
547
- ];
524
+ return [{ title: "Public repositories" }];
548
525
  case "student":
549
526
  return [
550
- { title: 'Private & Public repos' },
551
- { title: Plans.getParallelWorkspaces(p) + " Parallel Workspaces", tooltip: 'The number of workspaces running at the same time' },
552
- { title: 'Team Manageable', link: "/teams/", tooltip: 'Setup Gitpod for an entire Team with a single invoice and credit card' },
553
- { title: '1h Timeout', tooltip: 'Workspaces without user activity are stopped after 1 hour' },
554
- { title: '3h Timeout Boost', tooltip: 'You can manually boost the timeout to 3 hours within a running workspace' }
527
+ { title: "Private & Public repos" },
528
+ {
529
+ title: `${Plans.getParallelWorkspaces(p)} Parallel Workspaces`,
530
+ tooltip: "The number of workspaces running at the same time",
531
+ },
532
+ {
533
+ title: "Team Manageable",
534
+ link: "/teams/",
535
+ tooltip: "Setup Gitpod for an entire Team with a single invoice and credit card",
536
+ },
537
+ { title: "1h Timeout", tooltip: "Workspaces without user activity are stopped after 1 hour" },
538
+ {
539
+ title: "3h Timeout Boost",
540
+ tooltip: "You can manually boost the timeout to 3 hours within a running workspace",
541
+ },
555
542
  ];
556
543
  case "basic":
557
544
  return [
558
- { title: 'Private & Public repos' },
559
- { title: Plans.getParallelWorkspaces(p) + " Parallel Workspaces", tooltip: 'The number of workspaces running at the same time.' },
545
+ { title: "Private & Public repos" },
546
+ {
547
+ title: `${Plans.getParallelWorkspaces(p)} Parallel Workspaces`,
548
+ tooltip: "The number of workspaces running at the same time.",
549
+ },
560
550
  ];
561
551
  // Personal
562
552
  case "personal":
563
553
  return [
564
- { title: 'Private & Public repos' },
565
- { title: Plans.getParallelWorkspaces(p) + " Parallel Workspaces", tooltip: 'The number of workspaces running at the same time' },
566
- { title: '30min Timeout', tooltip: 'Workspaces without user activity are stopped after 30 minutes' }
554
+ { title: "Private & Public repos" },
555
+ {
556
+ title: `${Plans.getParallelWorkspaces(p)} Parallel Workspaces`,
557
+ tooltip: "The number of workspaces running at the same time",
558
+ },
559
+ {
560
+ title: "30min Timeout",
561
+ tooltip: "Workspaces without user activity are stopped after 30 minutes",
562
+ },
567
563
  ];
568
564
  // Professional
569
565
  case "professional-new":
570
566
  return [
571
- { title: 'Private & Public repos' },
572
- { title: Plans.getParallelWorkspaces(p) + " Parallel Workspaces", tooltip: 'The number of workspaces running at the same time' },
573
- { title: 'Team Manageable', link: "/teams/", tooltip: 'Setup Gitpod for an entire Team with a single invoice and credit card' },
574
- { title: '30min Timeout', tooltip: 'Workspaces without user activity are stopped after 30 minutes' }
567
+ { title: "Private & Public repos" },
568
+ {
569
+ title: `${Plans.getParallelWorkspaces(p)} Parallel Workspaces`,
570
+ tooltip: "The number of workspaces running at the same time",
571
+ },
572
+ {
573
+ title: "Team Manageable",
574
+ link: "/teams/",
575
+ tooltip: "Setup Gitpod for an entire Team with a single invoice and credit card",
576
+ },
577
+ {
578
+ title: "30min Timeout",
579
+ tooltip: "Workspaces without user activity are stopped after 30 minutes",
580
+ },
575
581
  ];
576
582
  // Unleashed
577
583
  case "professional":
578
584
  return [
579
- { title: 'Private & Public repos' },
580
- { title: Plans.getParallelWorkspaces(p) + " Parallel Workspaces", tooltip: 'The number of workspaces running at the same time' },
581
- { title: 'Team Manageable', link: "/teams/", tooltip: 'Setup Gitpod for an entire Team with a single invoice and credit card' },
582
- { title: '1h Timeout', tooltip: 'Workspaces without user activity are stopped after 1 hour' },
583
- { title: '3h Timeout Boost', tooltip: 'You can manually boost the timeout to 3 hours within a running workspace' }
585
+ { title: "Private & Public repos" },
586
+ {
587
+ title: `${Plans.getParallelWorkspaces(p)} Parallel Workspaces`,
588
+ tooltip: "The number of workspaces running at the same time",
589
+ },
590
+ {
591
+ title: "Team Manageable",
592
+ link: "/teams/",
593
+ tooltip: "Setup Gitpod for an entire Team with a single invoice and credit card",
594
+ },
595
+ { title: "1h Timeout", tooltip: "Workspaces without user activity are stopped after 1 hour" },
596
+ {
597
+ title: "3h Timeout Boost",
598
+ tooltip: "You can manually boost the timeout to 3 hours within a running workspace",
599
+ },
584
600
  ];
585
601
  }
586
602
  };