@gitpod/gitpod-protocol 0.1.5-me-version.1 → 0.1.5-me-ingress.14

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 (272) hide show
  1. package/data/gitpod-schema.json +11 -4
  2. package/lib/accounting-protocol.d.ts +3 -6
  3. package/lib/accounting-protocol.d.ts.map +1 -1
  4. package/lib/accounting-protocol.js +10 -16
  5. package/lib/accounting-protocol.js.map +1 -1
  6. package/lib/admin-protocol.d.ts +9 -4
  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 +45 -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/context-url.d.ts +18 -0
  15. package/lib/context-url.d.ts.map +1 -0
  16. package/lib/context-url.js +49 -0
  17. package/lib/context-url.js.map +1 -0
  18. package/lib/{util/context-url.spec.d.ts → context-url.spec.d.ts} +2 -0
  19. package/lib/context-url.spec.d.ts.map +1 -0
  20. package/lib/context-url.spec.js +73 -0
  21. package/lib/context-url.spec.js.map +1 -0
  22. package/lib/email-protocol.d.ts +1 -2
  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.js +4 -4
  27. package/lib/encryption/container-module.js.map +1 -1
  28. package/lib/encryption/encryption-engine.js +19 -20
  29. package/lib/encryption/encryption-engine.js.map +1 -1
  30. package/lib/encryption/encryption-engine.spec.js +29 -36
  31. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  32. package/lib/encryption/encryption-service.js +29 -43
  33. package/lib/encryption/encryption-service.js.map +1 -1
  34. package/lib/encryption/key-provider.js +25 -30
  35. package/lib/encryption/key-provider.js.map +1 -1
  36. package/lib/env.d.ts +1 -2
  37. package/lib/env.d.ts.map +1 -1
  38. package/lib/env.js +20 -21
  39. package/lib/env.js.map +1 -1
  40. package/lib/gitpod-file-parser.js +25 -41
  41. package/lib/gitpod-file-parser.js.map +1 -1
  42. package/lib/gitpod-file-parser.spec.js +116 -116
  43. package/lib/gitpod-file-parser.spec.js.map +1 -1
  44. package/lib/gitpod-service.d.ts +86 -9
  45. package/lib/gitpod-service.d.ts.map +1 -1
  46. package/lib/gitpod-service.js +150 -295
  47. package/lib/gitpod-service.js.map +1 -1
  48. package/lib/headless-workspace-log.d.ts +8 -11
  49. package/lib/headless-workspace-log.d.ts.map +1 -1
  50. package/lib/headless-workspace-log.js +4 -7
  51. package/lib/headless-workspace-log.js.map +1 -1
  52. package/lib/ide-protocol.d.ts +81 -0
  53. package/lib/ide-protocol.d.ts.map +1 -0
  54. package/lib/ide-protocol.js +8 -0
  55. package/lib/ide-protocol.js.map +1 -0
  56. package/lib/index.d.ts +4 -0
  57. package/lib/index.d.ts.map +1 -1
  58. package/lib/index.js +4 -0
  59. package/lib/index.js.map +1 -1
  60. package/lib/messaging/browser/connection.d.ts +3 -3
  61. package/lib/messaging/browser/connection.d.ts.map +1 -1
  62. package/lib/messaging/browser/connection.js +172 -35
  63. package/lib/messaging/browser/connection.js.map +1 -1
  64. package/lib/messaging/browser/window-connection.js +35 -55
  65. package/lib/messaging/browser/window-connection.js.map +1 -1
  66. package/lib/messaging/client-call-metrics.d.ts +35 -0
  67. package/lib/messaging/client-call-metrics.d.ts.map +1 -0
  68. package/lib/messaging/client-call-metrics.js +83 -0
  69. package/lib/messaging/client-call-metrics.js.map +1 -0
  70. package/lib/messaging/connection-error-handler.js +11 -23
  71. package/lib/messaging/connection-error-handler.js.map +1 -1
  72. package/lib/messaging/error.d.ts +2 -1
  73. package/lib/messaging/error.d.ts.map +1 -1
  74. package/lib/messaging/error.js +4 -2
  75. package/lib/messaging/error.js.map +1 -1
  76. package/lib/messaging/handler.d.ts +10 -0
  77. package/lib/messaging/handler.d.ts.map +1 -1
  78. package/lib/messaging/node/connection.d.ts +0 -10
  79. package/lib/messaging/node/connection.d.ts.map +1 -1
  80. package/lib/messaging/node/connection.js +12 -50
  81. package/lib/messaging/node/connection.js.map +1 -1
  82. package/lib/messaging/proxy-factory.d.ts +2 -0
  83. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  84. package/lib/messaging/proxy-factory.js +74 -159
  85. package/lib/messaging/proxy-factory.js.map +1 -1
  86. package/lib/oss-allowlist.d.ts +14 -0
  87. package/lib/oss-allowlist.d.ts.map +1 -0
  88. package/lib/oss-allowlist.js +8 -0
  89. package/lib/oss-allowlist.js.map +1 -0
  90. package/lib/permission.d.ts +1 -2
  91. package/lib/permission.d.ts.map +1 -1
  92. package/lib/permission.js +12 -13
  93. package/lib/permission.js.map +1 -1
  94. package/lib/plans.d.ts +1 -1
  95. package/lib/plans.d.ts.map +1 -1
  96. package/lib/plans.js +38 -57
  97. package/lib/plans.js.map +1 -1
  98. package/lib/protocol.d.ts +50 -48
  99. package/lib/protocol.d.ts.map +1 -1
  100. package/lib/protocol.js +57 -114
  101. package/lib/protocol.js.map +1 -1
  102. package/lib/snapshot-url.d.ts +14 -0
  103. package/lib/snapshot-url.d.ts.map +1 -0
  104. package/lib/snapshot-url.js +26 -0
  105. package/lib/snapshot-url.js.map +1 -0
  106. package/{src/util/without.ts → lib/snapshot-url.spec.d.ts} +2 -3
  107. package/lib/snapshot-url.spec.d.ts.map +1 -0
  108. package/lib/snapshot-url.spec.js +41 -0
  109. package/lib/snapshot-url.spec.js.map +1 -0
  110. package/lib/team-subscription-protocol.d.ts +3 -3
  111. package/lib/team-subscription-protocol.d.ts.map +1 -1
  112. package/lib/team-subscription-protocol.js +15 -12
  113. package/lib/team-subscription-protocol.js.map +1 -1
  114. package/lib/teams-projects-protocol.d.ts +110 -0
  115. package/lib/teams-projects-protocol.d.ts.map +1 -0
  116. package/lib/teams-projects-protocol.js +23 -0
  117. package/lib/teams-projects-protocol.js.map +1 -0
  118. package/lib/util/analytics.d.ts +1 -26
  119. package/lib/util/analytics.d.ts.map +1 -1
  120. package/lib/util/analytics.js +36 -28
  121. package/lib/util/analytics.js.map +1 -1
  122. package/lib/util/async-iterator.js +55 -133
  123. package/lib/util/async-iterator.js.map +1 -1
  124. package/lib/util/cancelable.js +17 -59
  125. package/lib/util/cancelable.js.map +1 -1
  126. package/lib/util/date-time.js +8 -8
  127. package/lib/util/date-time.js.map +1 -1
  128. package/lib/util/deferred.js +10 -12
  129. package/lib/util/deferred.js.map +1 -1
  130. package/lib/util/disposable.js +26 -39
  131. package/lib/util/disposable.js.map +1 -1
  132. package/lib/util/event.js +58 -74
  133. package/lib/util/event.js.map +1 -1
  134. package/lib/util/garbage-collected-cache.d.ts +1 -0
  135. package/lib/util/garbage-collected-cache.d.ts.map +1 -1
  136. package/lib/util/garbage-collected-cache.js +26 -46
  137. package/lib/util/garbage-collected-cache.js.map +1 -1
  138. package/lib/util/generate-workspace-id.d.ts +1 -1
  139. package/lib/util/generate-workspace-id.d.ts.map +1 -1
  140. package/lib/util/generate-workspace-id.js +29 -68
  141. package/lib/util/generate-workspace-id.js.map +1 -1
  142. package/lib/util/generate-workspace-id.spec.js +56 -78
  143. package/lib/util/generate-workspace-id.spec.js.map +1 -1
  144. package/lib/util/gitpod-cookie.d.ts +20 -0
  145. package/lib/util/gitpod-cookie.d.ts.map +1 -0
  146. package/lib/util/gitpod-cookie.js +44 -0
  147. package/lib/util/gitpod-cookie.js.map +1 -0
  148. package/lib/util/gitpod-host-url.d.ts +1 -0
  149. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  150. package/lib/util/gitpod-host-url.js +96 -103
  151. package/lib/util/gitpod-host-url.js.map +1 -1
  152. package/lib/util/gitpod-host-url.spec.js +87 -135
  153. package/lib/util/gitpod-host-url.spec.js.map +1 -1
  154. package/lib/util/grpc.d.ts +15 -0
  155. package/lib/util/grpc.d.ts.map +1 -0
  156. package/lib/util/grpc.js +18 -0
  157. package/lib/util/grpc.js.map +1 -0
  158. package/lib/util/jaeger-client-types.d.ts +68 -0
  159. package/lib/util/jaeger-client-types.d.ts.map +1 -0
  160. package/lib/util/{without.js → jaeger-client-types.js} +1 -1
  161. package/lib/util/jaeger-client-types.js.map +1 -0
  162. package/lib/util/logging.d.ts +49 -33
  163. package/lib/util/logging.d.ts.map +1 -1
  164. package/lib/util/logging.js +107 -110
  165. package/lib/util/logging.js.map +1 -1
  166. package/lib/util/make-link.js +2 -2
  167. package/lib/util/make-link.js.map +1 -1
  168. package/lib/util/parse-workspace-id.d.ts +10 -0
  169. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  170. package/lib/util/parse-workspace-id.js +31 -7
  171. package/lib/util/parse-workspace-id.js.map +1 -1
  172. package/lib/util/parse-workspace-id.spec.d.ts +4 -0
  173. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  174. package/lib/util/parse-workspace-id.spec.js +123 -84
  175. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  176. package/lib/util/queue.js +16 -55
  177. package/lib/util/queue.js.map +1 -1
  178. package/lib/util/queue.spec.js +144 -288
  179. package/lib/util/queue.spec.js.map +1 -1
  180. package/lib/util/repeat.d.ts +15 -0
  181. package/lib/util/repeat.d.ts.map +1 -0
  182. package/lib/util/repeat.js +55 -0
  183. package/lib/util/repeat.js.map +1 -0
  184. package/lib/util/safe-promise.js +9 -12
  185. package/lib/util/safe-promise.js.map +1 -1
  186. package/lib/util/semaphore.js +15 -46
  187. package/lib/util/semaphore.js.map +1 -1
  188. package/lib/util/skip-if.js +6 -6
  189. package/lib/util/skip-if.js.map +1 -1
  190. package/lib/util/timeutil.js +16 -16
  191. package/lib/util/timeutil.js.map +1 -1
  192. package/lib/util/timeutil.spec.js +21 -24
  193. package/lib/util/timeutil.spec.js.map +1 -1
  194. package/lib/util/tracing.d.ts +50 -5
  195. package/lib/util/tracing.d.ts.map +1 -1
  196. package/lib/util/tracing.js +175 -63
  197. package/lib/util/tracing.js.map +1 -1
  198. package/lib/util/tracing.spec.d.ts +7 -0
  199. package/lib/util/tracing.spec.d.ts.map +1 -0
  200. package/lib/util/tracing.spec.js +121 -0
  201. package/lib/util/tracing.spec.js.map +1 -0
  202. package/lib/util/workspace-port-authentication.js +2 -2
  203. package/lib/util/workspace-port-authentication.js.map +1 -1
  204. package/lib/workspace-cluster.d.ts +12 -3
  205. package/lib/workspace-cluster.d.ts.map +1 -1
  206. package/lib/workspace-cluster.js +3 -3
  207. package/lib/workspace-cluster.js.map +1 -1
  208. package/lib/workspace-instance.d.ts +5 -2
  209. package/lib/workspace-instance.d.ts.map +1 -1
  210. package/lib/wsready.js +1 -1
  211. package/package.json +24 -13
  212. package/pkg-yarn.lock +14 -7
  213. package/provenance-bundle.jsonl +2 -0
  214. package/src/accounting-protocol.ts +4 -10
  215. package/src/admin-protocol.ts +10 -5
  216. package/src/analytics.ts +54 -0
  217. package/src/context-url.spec.ts +39 -0
  218. package/src/context-url.ts +51 -0
  219. package/src/email-protocol.ts +2 -3
  220. package/src/env.ts +10 -10
  221. package/src/gitpod-service.ts +101 -17
  222. package/src/headless-workspace-log.ts +7 -11
  223. package/src/ide-protocol.ts +92 -0
  224. package/src/index.ts +4 -0
  225. package/src/messaging/browser/connection.ts +176 -10
  226. package/src/messaging/client-call-metrics.ts +97 -0
  227. package/src/messaging/error.ts +5 -2
  228. package/src/messaging/handler.ts +12 -0
  229. package/src/messaging/node/connection.ts +3 -47
  230. package/src/messaging/proxy-factory.ts +13 -5
  231. package/src/oss-allowlist.ts +15 -0
  232. package/src/permission.ts +0 -1
  233. package/src/protocol.ts +68 -56
  234. package/src/snapshot-url.spec.ts +25 -0
  235. package/src/snapshot-url.ts +27 -0
  236. package/src/team-subscription-protocol.ts +6 -4
  237. package/src/teams-projects-protocol.ts +141 -0
  238. package/src/util/analytics.ts +17 -30
  239. package/src/util/garbage-collected-cache.ts +7 -1
  240. package/src/util/generate-workspace-id.spec.ts +16 -0
  241. package/src/util/generate-workspace-id.ts +20 -2
  242. package/src/util/gitpod-cookie.ts +39 -0
  243. package/src/util/gitpod-host-url.ts +12 -8
  244. package/src/util/grpc.ts +15 -0
  245. package/src/util/jaeger-client-types.ts +102 -0
  246. package/src/util/logging.ts +102 -38
  247. package/src/util/parse-workspace-id.spec.ts +21 -1
  248. package/src/util/parse-workspace-id.ts +32 -6
  249. package/src/util/repeat.ts +45 -0
  250. package/src/util/tracing.spec.ts +83 -0
  251. package/src/util/tracing.ts +162 -18
  252. package/src/workspace-cluster.ts +9 -3
  253. package/src/workspace-instance.ts +18 -6
  254. package/src/wsready.ts +1 -1
  255. package/lib/util/context-url.d.ts +0 -13
  256. package/lib/util/context-url.d.ts.map +0 -1
  257. package/lib/util/context-url.js +0 -26
  258. package/lib/util/context-url.js.map +0 -1
  259. package/lib/util/context-url.spec.d.ts.map +0 -1
  260. package/lib/util/context-url.spec.js +0 -52
  261. package/lib/util/context-url.spec.js.map +0 -1
  262. package/lib/util/repeater.d.ts +0 -22
  263. package/lib/util/repeater.d.ts.map +0 -1
  264. package/lib/util/repeater.js +0 -118
  265. package/lib/util/repeater.js.map +0 -1
  266. package/lib/util/without.d.ts +0 -7
  267. package/lib/util/without.d.ts.map +0 -1
  268. package/lib/util/without.js.map +0 -1
  269. package/src/util/context-url.spec.ts +0 -25
  270. package/src/util/context-url.ts +0 -23
  271. package/src/util/jaeger-client.d.ts +0 -105
  272. package/src/util/repeater.ts +0 -49
@@ -8,33 +8,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
11
  Object.defineProperty(exports, "__esModule", { value: true });
39
12
  exports.animals = exports.colors = exports.generateWorkspaceID = void 0;
40
13
  /**
@@ -42,52 +15,39 @@ exports.animals = exports.colors = exports.generateWorkspaceID = void 0;
42
15
  * Licensed under the GNU Affero General Public License (AGPL).
43
16
  * See License-AGPL.txt in the project root for license information.
44
17
  */
45
- var randomNumber = require("random-number-csprng");
46
- function generateWorkspaceID() {
47
- return __awaiter(this, void 0, void 0, function () {
48
- var _a, _b;
49
- return __generator(this, function (_c) {
50
- switch (_c.label) {
51
- case 0: return [4 /*yield*/, random(exports.colors)];
52
- case 1:
53
- _a = (_c.sent()) + '-';
54
- return [4 /*yield*/, random(exports.animals)];
55
- case 2:
56
- _b = _a + (_c.sent()) + '-';
57
- return [4 /*yield*/, random(characters, 8)];
58
- case 3: return [2 /*return*/, _b + (_c.sent())];
59
- }
60
- });
18
+ const randomNumber = require("random-number-csprng");
19
+ function generateWorkspaceID(firstSegment, secondSegment) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ const firstSeg = clean(firstSegment) || (yield random(exports.colors));
22
+ const secSeg = clean(secondSegment, Math.min(15, 23 - firstSeg.length)) || (yield random(exports.animals));
23
+ return firstSeg + '-' + secSeg + '-' + (yield random(characters, 11));
61
24
  });
62
25
  }
63
26
  exports.generateWorkspaceID = generateWorkspaceID;
64
- function random(array, length) {
65
- if (length === void 0) { length = 1; }
66
- return __awaiter(this, void 0, void 0, function () {
67
- var result, i, _a, _b;
68
- return __generator(this, function (_c) {
69
- switch (_c.label) {
70
- case 0:
71
- result = '';
72
- i = 0;
73
- _c.label = 1;
74
- case 1:
75
- if (!(i < length)) return [3 /*break*/, 4];
76
- _a = result;
77
- _b = array;
78
- return [4 /*yield*/, randomNumber(0, array.length - 1)];
79
- case 2:
80
- result = _a + _b[_c.sent()];
81
- _c.label = 3;
82
- case 3:
83
- i++;
84
- return [3 /*break*/, 1];
85
- case 4: return [2 /*return*/, result];
86
- }
87
- });
27
+ function clean(segment, maxChars = 15) {
28
+ if (!segment) {
29
+ return undefined;
30
+ }
31
+ let result = '';
32
+ for (let i = 0; i < segment.length; i++) {
33
+ if (characters.indexOf(segment[i]) !== -1) {
34
+ result += segment[i];
35
+ }
36
+ }
37
+ if (result.length >= 2) {
38
+ return result.substring(0, maxChars);
39
+ }
40
+ }
41
+ function random(array, length = 1) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ var result = '';
44
+ for (var i = 0; i < length; i++) {
45
+ result += array[yield randomNumber(0, array.length - 1)];
46
+ }
47
+ return result;
88
48
  });
89
49
  }
90
- var characters = 'abcdefghijklmnopqrstuvwxyz0123456789'.split('');
50
+ const characters = 'abcdefghijklmnopqrstuvwxyz0123456789'.split('');
91
51
  exports.colors = [
92
52
  'amaranth',
93
53
  'amber',
@@ -241,6 +201,7 @@ exports.animals = [
241
201
  'deer',
242
202
  'dingo',
243
203
  'dinosaur',
204
+ 'dodo',
244
205
  'dog',
245
206
  'dolphin',
246
207
  'donkey',
@@ -1 +1 @@
1
- {"version":3,"file":"generate-workspace-id.js","sourceRoot":"","sources":["../../src/util/generate-workspace-id.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-workspace-id.js","sourceRoot":"","sources":["../../src/util/generate-workspace-id.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;GAIG;AACH,qDAAsD;AAEtD,SAAsB,mBAAmB,CAAC,YAAqB,EAAE,aAAsB;;QACnF,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,KAAI,MAAM,MAAM,CAAC,cAAM,CAAC,CAAA,CAAC;QAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAI,MAAM,MAAM,CAAC,eAAO,CAAC,CAAA,CAAC;QACjG,OAAO,QAAQ,GAAC,GAAG,GAAC,MAAM,GAAC,GAAG,GAAC,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;CAAA;AAJD,kDAIC;AAED,SAAS,KAAK,CAAC,OAA2B,EAAE,WAAmB,EAAE;IAC/D,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,SAAS,CAAC;KAClB;IACD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;YACzC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;SACtB;KACF;IACD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;QACtB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;KACtC;AACH,CAAC;AAED,SAAe,MAAM,CAAC,KAAe,EAAE,SAAiB,CAAC;;QACrD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAG;YAChC,MAAM,IAAI,KAAK,CAAC,MAAM,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,CAAC;SACzD;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;CAAA;AAED,MAAM,UAAU,GAAG,sCAAsC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAEvD,QAAA,MAAM,GAAG;IAClB,UAAU;IACV,OAAO;IACP,UAAU;IACV,SAAS;IACT,MAAM;IACN,YAAY;IACZ,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,SAAS;IACT,MAAM;IACN,SAAS;IACT,SAAS;IACT,MAAM;IACN,MAAM;IACN,OAAO;IACP,WAAW;IACX,QAAQ;IACR,OAAO;IACP,MAAM;IACN,SAAS;IACT,UAAU;IACV,MAAM;IACN,SAAS;IACT,QAAQ;IACR,UAAU;IACV,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,MAAM;IACN,QAAQ;IACR,KAAK;IACL,MAAM;IACN,QAAQ;IACR,UAAU;IACV,SAAS;IACT,QAAQ;IACR,KAAK;IACL,MAAM;IACN,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,OAAO;IACP,QAAQ;CACT,CAAC;AAEW,QAAA,OAAO,GAAG;IACrB,SAAS;IACT,SAAS;IACT,KAAK;IACL,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,MAAM;IACN,OAAO;IACP,KAAK;IACL,QAAQ;IACR,UAAU;IACV,UAAU;IACV,WAAW;IACX,WAAW;IACX,QAAQ;IACR,WAAW;IACX,UAAU;IACV,WAAW;IACX,YAAY;IACZ,KAAK;IACL,UAAU;IACV,UAAU;IACV,SAAS;IACT,KAAK;IACL,OAAO;IACP,WAAW;IACX,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,UAAU;IACV,WAAW;IACX,UAAU;IACV,MAAM;IACN,KAAK;IACL,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,MAAM;IACN,OAAO;IACP,WAAW;IACX,KAAK;IACL,MAAM;IACN,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;IACP,KAAK;IACL,WAAW;IACX,SAAS;IACT,OAAO;IACP,OAAO;IACP,UAAU;IACV,UAAU;IACV,SAAS;IACT,MAAM;IACN,KAAK;IACL,UAAU;IACV,aAAa;IACb,SAAS;IACT,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,WAAW;IACX,SAAS;IACT,WAAW;IACX,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,MAAM;IACN,WAAW;IACX,OAAO;IACP,WAAW;IACX,KAAK;IACL,QAAQ;IACR,aAAa;IACb,OAAO;IACP,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,UAAU;IACV,SAAS;IACT,WAAW;IACX,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,MAAM;IACN,OAAO;IACP,UAAU;IACV,MAAM;IACN,KAAK;IACL,SAAS;IACT,QAAQ;IACR,UAAU;IACV,MAAM;IACN,WAAW;IACX,QAAQ;IACR,MAAM;IACN,OAAO;IACP,WAAW;IACX,QAAQ;IACR,SAAS;IACT,KAAK;IACL,OAAO;IACP,UAAU;IACV,KAAK;IACL,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,SAAS;IACT,MAAM;IACN,UAAU;IACV,MAAM;IACN,KAAK;IACL,YAAY;IACZ,MAAM;IACN,KAAK;IACL,MAAM;IACN,UAAU;IACV,WAAW;IACX,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,OAAO;IACP,QAAQ;IACR,SAAS;IACT,aAAa;IACb,QAAQ;IACR,MAAM;IACN,SAAS;IACT,YAAY;IACZ,MAAM;IACN,OAAO;IACP,SAAS;IACT,SAAS;IACT,SAAS;IACT,MAAM;IACN,SAAS;IACT,MAAM;IACN,UAAU;IACV,OAAO;IACP,SAAS;IACT,cAAc;IACd,UAAU;IACV,QAAQ;IACR,OAAO;IACP,UAAU;IACV,aAAa;IACb,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,WAAW;IACX,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,MAAM;IACN,MAAM;IACN,OAAO;IACP,KAAK;IACL,OAAO;IACP,SAAS;IACT,SAAS;IACT,UAAU;IACV,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO;IACP,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,OAAO;IACP,SAAS;IACT,QAAQ;IACR,MAAM;IACN,OAAO;IACP,UAAU;IACV,MAAM;IACN,OAAO;IACP,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,UAAU;IACV,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,SAAS;IACT,MAAM;IACN,QAAQ;IACR,MAAM;IACN,aAAa;IACb,MAAM;IACN,SAAS;IACT,UAAU;IACV,QAAQ;IACR,OAAO;IACP,UAAU;IACV,MAAM;IACN,OAAO;IACP,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,aAAa;IACb,QAAQ;IACR,SAAS;IACT,SAAS;IACT,WAAW;IACX,MAAM;IACN,SAAS;IACT,OAAO;IACP,KAAK;IACL,IAAI;IACJ,OAAO;IACP,SAAS;IACT,UAAU;IACV,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,OAAO;IACP,UAAU;IACV,KAAK;IACL,QAAQ;IACR,MAAM;IACN,UAAU;IACV,SAAS;IACT,WAAW;IACX,UAAU;IACV,MAAM;IACN,WAAW;IACX,UAAU;IACV,QAAQ;IACR,OAAO;IACP,SAAS;IACT,WAAW;IACX,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,KAAK;IACL,aAAa;IACb,OAAO;IACP,UAAU;IACV,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,MAAM;IACN,SAAS;IACT,WAAW;IACX,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;IACV,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,SAAS;IACT,QAAQ;IACR,WAAW;IACX,OAAO;IACP,UAAU;IACV,UAAU;IACV,UAAU;IACV,OAAO;IACP,OAAO;IACP,UAAU;IACV,SAAS;IACT,MAAM;IACN,OAAO;IACP,WAAW;IACX,WAAW;IACX,MAAM;IACN,OAAO;IACP,OAAO;IACP,WAAW;IACX,SAAS;IACT,SAAS;IACT,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;IACP,QAAQ;IACR,MAAM;IACN,UAAU;IACV,QAAQ;IACR,OAAO;IACP,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,eAAe;IACf,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,SAAS;IACT,SAAS;IACT,QAAQ;IACR,MAAM;IACN,SAAS;IACT,QAAQ;IACR,OAAO;IACP,SAAS;IACT,WAAW;IACX,SAAS;IACT,YAAY;IACZ,UAAU;IACV,MAAM;IACN,WAAW;IACX,QAAQ;IACR,YAAY;IACZ,MAAM;IACN,MAAM;IACN,SAAS;IACT,KAAK;IACL,OAAO;IACP,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,SAAS;IACT,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,UAAU;IACV,OAAO;IACP,OAAO;IACP,KAAK;IACL,OAAO;IACP,OAAO;IACP,KAAK;IACL,SAAS;CACV,CAAA"}
@@ -22,87 +22,65 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
22
22
  step((generator = generator.apply(thisArg, _arguments || [])).next());
23
23
  });
24
24
  };
25
- var __generator = (this && this.__generator) || function (thisArg, body) {
26
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
27
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
28
- function verb(n) { return function (v) { return step([n, v]); }; }
29
- function step(op) {
30
- if (f) throw new TypeError("Generator is already executing.");
31
- while (_) try {
32
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
33
- if (y = 0, t) op = [op[0] & 2, t.value];
34
- switch (op[0]) {
35
- case 0: case 1: t = op; break;
36
- case 4: _.label++; return { value: op[1], done: false };
37
- case 5: _.label++; y = op[1]; op = [0]; continue;
38
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
39
- default:
40
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
41
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
42
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
43
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
44
- if (t[2]) _.ops.pop();
45
- _.trys.pop(); continue;
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const mocha_typescript_1 = require("mocha-typescript");
27
+ const chai = require("chai");
28
+ const generate_workspace_id_1 = require("./generate-workspace-id");
29
+ const gitpod_host_url_1 = require("./gitpod-host-url");
30
+ const expect = chai.expect;
31
+ let TestGenerateWorkspaceId = class TestGenerateWorkspaceId {
32
+ testGenerateWorkspaceId() {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ for (let i = 0; i < 100; i++) {
35
+ const id = yield (0, generate_workspace_id_1.generateWorkspaceID)();
36
+ expect(new gitpod_host_url_1.GitpodHostUrl().withWorkspacePrefix(id, "eu").workspaceId).to.equal(id);
46
37
  }
47
- op = body.call(thisArg, _);
48
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
49
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
38
+ });
50
39
  }
51
- };
52
- Object.defineProperty(exports, "__esModule", { value: true });
53
- var mocha_typescript_1 = require("mocha-typescript");
54
- var chai = require("chai");
55
- var generate_workspace_id_1 = require("./generate-workspace-id");
56
- var gitpod_host_url_1 = require("./gitpod-host-url");
57
- var expect = chai.expect;
58
- var TestGenerateWorkspaceId = /** @class */ (function () {
59
- function TestGenerateWorkspaceId() {
40
+ testLongestName() {
41
+ const longestColor = generate_workspace_id_1.colors.sort((a, b) => b.length - a.length)[0];
42
+ const longestAnimal = generate_workspace_id_1.animals.sort((a, b) => b.length - a.length)[0];
43
+ const longestName = `${longestColor}-${longestAnimal}-12345678`;
44
+ expect(longestName.length <= 36, `"${longestName}" is longer than 36 chars (${longestName.length})`).to.be.true;
60
45
  }
61
- TestGenerateWorkspaceId.prototype.testGenerateWorkspaceId = function () {
62
- return __awaiter(this, void 0, void 0, function () {
63
- var i, id;
64
- return __generator(this, function (_a) {
65
- switch (_a.label) {
66
- case 0:
67
- i = 0;
68
- _a.label = 1;
69
- case 1:
70
- if (!(i < 100)) return [3 /*break*/, 4];
71
- return [4 /*yield*/, generate_workspace_id_1.generateWorkspaceID()];
72
- case 2:
73
- id = _a.sent();
74
- expect(new gitpod_host_url_1.GitpodHostUrl().withWorkspacePrefix(id, "eu").workspaceId).to.equal(id);
75
- _a.label = 3;
76
- case 3:
77
- i++;
78
- return [3 /*break*/, 1];
79
- case 4: return [2 /*return*/];
80
- }
81
- });
46
+ testCustomName() {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const data = [
49
+ ['foo', 'bar', 'foo-bar-'],
50
+ ['f', 'bar', '.{2,16}-bar-'],
51
+ ['gitpod-io', 'gitpod', 'gitpodio-gitpod-'],
52
+ ['this is rather long and has some "§$"% special chars', 'also here pretty long and needs abbreviation', 'thisisratherlon-alsohere-'],
53
+ ['breatheco-de', 'python-flask-api-tutorial', 'breathecode-pythonflaska-'],
54
+ ];
55
+ for (const d of data) {
56
+ const id = yield (0, generate_workspace_id_1.generateWorkspaceID)(d[0], d[1]);
57
+ expect(id).match(new RegExp("^" + d[2]));
58
+ expect(new gitpod_host_url_1.GitpodHostUrl().withWorkspacePrefix(id, "eu").workspaceId).to.equal(id);
59
+ expect(id.length <= 36, `"${id}" is longer than 36 chars (${id.length})`).to.be.true;
60
+ }
82
61
  });
83
- };
84
- TestGenerateWorkspaceId.prototype.testLongestName = function () {
85
- var longestColor = generate_workspace_id_1.colors.sort(function (a, b) { return b.length - a.length; })[0];
86
- var longestAnimal = generate_workspace_id_1.animals.sort(function (a, b) { return b.length - a.length; })[0];
87
- var longestName = longestColor + "-" + longestAnimal + "-12345678";
88
- expect(longestName.length <= 36, "\"" + longestName + "\" is longer than 36 chars (" + longestName.length + ")").to.be.true;
89
- };
90
- __decorate([
91
- mocha_typescript_1.test,
92
- __metadata("design:type", Function),
93
- __metadata("design:paramtypes", []),
94
- __metadata("design:returntype", Promise)
95
- ], TestGenerateWorkspaceId.prototype, "testGenerateWorkspaceId", null);
96
- __decorate([
97
- mocha_typescript_1.test,
98
- __metadata("design:type", Function),
99
- __metadata("design:paramtypes", []),
100
- __metadata("design:returntype", void 0)
101
- ], TestGenerateWorkspaceId.prototype, "testLongestName", null);
102
- TestGenerateWorkspaceId = __decorate([
103
- mocha_typescript_1.suite
104
- ], TestGenerateWorkspaceId);
105
- return TestGenerateWorkspaceId;
106
- }());
62
+ }
63
+ };
64
+ __decorate([
65
+ mocha_typescript_1.test,
66
+ __metadata("design:type", Function),
67
+ __metadata("design:paramtypes", []),
68
+ __metadata("design:returntype", Promise)
69
+ ], TestGenerateWorkspaceId.prototype, "testGenerateWorkspaceId", null);
70
+ __decorate([
71
+ mocha_typescript_1.test,
72
+ __metadata("design:type", Function),
73
+ __metadata("design:paramtypes", []),
74
+ __metadata("design:returntype", void 0)
75
+ ], TestGenerateWorkspaceId.prototype, "testLongestName", null);
76
+ __decorate([
77
+ mocha_typescript_1.test,
78
+ __metadata("design:type", Function),
79
+ __metadata("design:paramtypes", []),
80
+ __metadata("design:returntype", Promise)
81
+ ], TestGenerateWorkspaceId.prototype, "testCustomName", null);
82
+ TestGenerateWorkspaceId = __decorate([
83
+ mocha_typescript_1.suite
84
+ ], TestGenerateWorkspaceId);
107
85
  module.exports = new TestGenerateWorkspaceId();
108
86
  //# sourceMappingURL=generate-workspace-id.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-workspace-id.spec.js","sourceRoot":"","sources":["../../src/util/generate-workspace-id.spec.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,qDAA8C;AAC9C,2BAA4B;AAC5B,iEAA+E;AAC/E,qDAAkD;AAElD,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;AAEnB;IAAA;IAgBP,CAAC;IAdsB,yDAAuB,GAApC;;;;;;wBACO,CAAC,GAAG,CAAC;;;6BAAE,CAAA,CAAC,GAAG,GAAG,CAAA;wBACR,qBAAM,2CAAmB,EAAE,EAAA;;wBAAhC,EAAE,GAAG,SAA2B;wBACtC,MAAM,CAAC,IAAI,+BAAa,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;;;wBAF9D,CAAC,EAAE,CAAA;;;;;;KAI/B;IAEY,iDAAe,GAAtB;QACF,IAAM,YAAY,GAAG,8BAAM,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAnB,CAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,IAAM,aAAa,GAAG,+BAAO,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAnB,CAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAM,WAAW,GAAM,YAAY,SAAI,aAAa,cAAW,CAAC;QAChE,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE,OAAI,WAAW,oCAA8B,WAAW,CAAC,MAAM,MAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACpH,CAAC;IAZK;QAAL,uBAAI;;;;0EAKJ;IAEK;QAAL,uBAAI;;;;kEAKJ;IAdQ,uBAAuB;QAAnC,wBAAK;OAAO,uBAAuB,CAgBnC;IAAD,8BAAC;CAAA,AAhBM,IAgBN;AACD,MAAM,CAAC,OAAO,GAAG,IAAI,uBAAuB,EAAE,CAAA"}
1
+ {"version":3,"file":"generate-workspace-id.spec.js","sourceRoot":"","sources":["../../src/util/generate-workspace-id.spec.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;AAEH,uDAA8C;AAC9C,6BAA4B;AAC5B,mEAA+E;AAC/E,uDAAkD;AAElD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;AAEnB,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAEb,uBAAuB;;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,EAAE,GAAG,MAAM,IAAA,2CAAmB,GAAE,CAAC;gBACvC,MAAM,CAAC,IAAI,+BAAa,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aACtF;QACL,CAAC;KAAA;IAEY,eAAe;QACxB,MAAM,YAAY,GAAG,8BAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,aAAa,GAAG,+BAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,GAAG,YAAY,IAAI,aAAa,WAAW,CAAC;QAChE,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI,WAAW,8BAA8B,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACpH,CAAC;IAEkB,cAAc;;YAC7B,MAAM,IAAI,GAAG;gBACT,CAAC,KAAK,EAAC,KAAK,EAAC,UAAU,CAAC;gBACxB,CAAC,GAAG,EAAC,KAAK,EAAC,cAAc,CAAC;gBAC1B,CAAC,WAAW,EAAC,QAAQ,EAAC,kBAAkB,CAAC;gBACzC,CAAC,sDAAsD,EAAC,8CAA8C,EAAC,2BAA2B,CAAC;gBACnI,CAAC,cAAc,EAAE,2BAA2B,EAAE,2BAA2B,CAAC;aAC7E,CAAA;YACD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;gBAClB,MAAM,EAAE,GAAG,MAAM,IAAA,2CAAmB,EAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM,CAAC,IAAI,+BAAa,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACnF,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;aACxF;QACL,CAAC;KAAA;CAEJ,CAAA;AA9BS;IAAL,uBAAI;;;;sEAKJ;AAEK;IAAL,uBAAI;;;;8DAKJ;AAEK;IAAL,uBAAI;;;;6DAcJ;AA9BQ,uBAAuB;IAAnC,wBAAK;GAAO,uBAAuB,CAgCnC;AACD,MAAM,CAAC,OAAO,GAAG,IAAI,uBAAuB,EAAE,CAAA"}
@@ -0,0 +1,20 @@
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
+ * This cookie indicates whether the connected client is a Gitpod user (= "has logged in within the last year") or not.
9
+ * This is used by "gitpod.io" and "www.gitpod.io" to display different content/buttons.
10
+ */
11
+ export declare const NAME = "gitpod-user";
12
+ export declare const VALUE = "true";
13
+ /**
14
+ * @param domain The domain the Gitpod installation is installed onto
15
+ * @returns
16
+ */
17
+ export declare function options(domain: string): cookie.CookieSerializeOptions;
18
+ export declare function generateCookie(domain: string): string;
19
+ export declare function isPresent(cookies: string): boolean;
20
+ //# sourceMappingURL=gitpod-cookie.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitpod-cookie.d.ts","sourceRoot":"","sources":["../../src/util/gitpod-cookie.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAGjC;;;GAGG;AACH,eAAO,MAAM,IAAI,gBAAgB,CAAC;AAClC,eAAO,MAAM,KAAK,SAAS,CAAC;AAE5B;;;GAGG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAUrE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGlD"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPresent = exports.generateCookie = exports.options = exports.VALUE = exports.NAME = void 0;
4
+ /**
5
+ * Copyright (c) 2021 Gitpod GmbH. All rights reserved.
6
+ * Licensed under the GNU Affero General Public License (AGPL).
7
+ * See License-AGPL.txt in the project root for license information.
8
+ */
9
+ const cookie = require("cookie");
10
+ /**
11
+ * This cookie indicates whether the connected client is a Gitpod user (= "has logged in within the last year") or not.
12
+ * This is used by "gitpod.io" and "www.gitpod.io" to display different content/buttons.
13
+ */
14
+ exports.NAME = "gitpod-user";
15
+ exports.VALUE = "true";
16
+ /**
17
+ * @param domain The domain the Gitpod installation is installed onto
18
+ * @returns
19
+ */
20
+ function options(domain) {
21
+ // Reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
22
+ return {
23
+ path: "/",
24
+ httpOnly: false,
25
+ secure: false,
26
+ maxAge: 60 * 60 * 24 * 365,
27
+ sameSite: "lax",
28
+ domain: `.${domain}`, // explicilty include subdomains to not only cover "gitpod.io", but also "www.gitpod.io" or workspaces
29
+ };
30
+ }
31
+ exports.options = options;
32
+ ;
33
+ function generateCookie(domain) {
34
+ return cookie.serialize(exports.NAME, exports.VALUE, options(domain));
35
+ }
36
+ exports.generateCookie = generateCookie;
37
+ ;
38
+ function isPresent(cookies) {
39
+ // needs to match the old (gitpod-user=loggedIn) and new (gitpod-user=true) values to ensure a smooth transition during rollout.
40
+ return !!cookies.match(`${exports.NAME}=`);
41
+ }
42
+ exports.isPresent = isPresent;
43
+ ;
44
+ //# sourceMappingURL=gitpod-cookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitpod-cookie.js","sourceRoot":"","sources":["../../src/util/gitpod-cookie.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,iCAAiC;AAGjC;;;GAGG;AACU,QAAA,IAAI,GAAG,aAAa,CAAC;AACrB,QAAA,KAAK,GAAG,MAAM,CAAC;AAE5B;;;GAGG;AACH,SAAgB,OAAO,CAAC,MAAc;IAClC,uEAAuE;IACvE,OAAO;QACH,IAAI,EAAE,GAAG;QACT,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG;QAC1B,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,IAAI,MAAM,EAAE,EAAgB,sGAAsG;KAC7I,CAAC;AACN,CAAC;AAVD,0BAUC;AAAA,CAAC;AAEF,SAAgB,cAAc,CAAC,MAAc;IACzC,OAAO,MAAM,CAAC,SAAS,CAAC,YAAI,EAAE,aAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1D,CAAC;AAFD,wCAEC;AAAA,CAAC;AAEF,SAAgB,SAAS,CAAC,OAAe;IACrC,gIAAgI;IAChI,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,YAAI,GAAG,CAAC,CAAC;AACvC,CAAC;AAHD,8BAGC;AAAA,CAAC"}
@@ -24,6 +24,7 @@ export declare class GitpodHostUrl {
24
24
  asUpgradeSubscription(): GitpodHostUrl;
25
25
  asAccessControl(): GitpodHostUrl;
26
26
  asSettings(): GitpodHostUrl;
27
+ asPreferences(): GitpodHostUrl;
27
28
  asGraphQLApi(): GitpodHostUrl;
28
29
  asStart(workspaceId?: string | undefined): GitpodHostUrl;
29
30
  asWorkspaceAuth(instanceID: string, redirect?: boolean): GitpodHostUrl;
@@ -1 +1 @@
1
- {"version":3,"file":"gitpod-host-url.d.ts","sourceRoot":"","sources":["../../src/util/gitpod-host-url.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,SAAS;IACtB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;CAC3B;AACD,oBAAY,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAUjD,qBAAa,aAAa;IACtB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;gBAEN,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG;IAanC,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM;IAInC,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAIvD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAI/C,sBAAsB,IAAI,aAAa;IASvC,mBAAmB,CAAC,mBAAmB,EAAE,MAAM,GAAG,aAAa;IAI/D,IAAI,CAAC,SAAS,EAAE,SAAS;IAUzB,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS;IAK7B,WAAW,CAAC,UAAU,EAAE,MAAM;IAI9B,WAAW,IAAI,aAAa;IAI5B,WAAW,IAAI,aAAa;IAI5B,OAAO,IAAI,aAAa;IAIxB,qBAAqB,IAAI,aAAa;IAItC,eAAe,IAAI,aAAa;IAIhC,UAAU,IAAI,aAAa;IAI3B,YAAY,IAAI,aAAa;IAI7B,OAAO,CAAC,WAAW,qBAAmB,GAAG,aAAa;IAOtD,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,aAAa;IAItE,QAAQ;IAIR,mBAAmB;IAQnB,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAiBpC;IAED,IAAI,SAAS,IAAI,OAAO,CAQvB;IAED,OAAO,CAAC,OAAO,EAAE,MAAM;IAIvB,WAAW,IAAI,aAAa;CAI/B"}
1
+ {"version":3,"file":"gitpod-host-url.d.ts","sourceRoot":"","sources":["../../src/util/gitpod-host-url.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,SAAS;IACtB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;CAC3B;AACD,oBAAY,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAUjD,qBAAa,aAAa;IACtB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;gBAEN,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG;IAanC,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM;IAInC,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAIvD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAI/C,sBAAsB,IAAI,aAAa;IASvC,mBAAmB,CAAC,mBAAmB,EAAE,MAAM,GAAG,aAAa;IAI/D,IAAI,CAAC,SAAS,EAAE,SAAS;IAUzB,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS;IAK7B,WAAW,CAAC,UAAU,EAAE,MAAM;IAI9B,WAAW,IAAI,aAAa;IAI5B,WAAW,IAAI,aAAa;IAI5B,OAAO,IAAI,aAAa;IAIxB,qBAAqB,IAAI,aAAa;IAItC,eAAe,IAAI,aAAa;IAIhC,UAAU,IAAI,aAAa;IAI3B,aAAa,IAAI,aAAa;IAI9B,YAAY,IAAI,aAAa;IAI7B,OAAO,CAAC,WAAW,qBAAmB,GAAG,aAAa;IAOtD,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,aAAa;IAItE,QAAQ;IAIR,mBAAmB;IAQnB,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAiBpC;IAED,IAAI,SAAS,IAAI,OAAO,CAQvB;IAED,OAAO,CAAC,OAAO,EAAE,MAAM;IAIvB,WAAW,IAAI,aAAa;CAI/B"}