@gitpod/gitpod-protocol 0.1.5-se-init.1 → 0.1.5-se-workspaceid.1

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.
@@ -1,4 +1,4 @@
1
- export declare function generateWorkspaceID(): Promise<string>;
1
+ export declare function generateWorkspaceID(firstSegment?: string, secondSegment?: string): Promise<string>;
2
2
  export declare const colors: string[];
3
3
  export declare const animals: string[];
4
4
  //# sourceMappingURL=generate-workspace-id.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-workspace-id.d.ts","sourceRoot":"","sources":["../../src/util/generate-workspace-id.ts"],"names":[],"mappings":"AAOA,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAE3D;AAYD,eAAO,MAAM,MAAM,UAsDhB,CAAC;AAEF,eAAO,MAAM,OAAO,UA2XnB,CAAA"}
1
+ {"version":3,"file":"generate-workspace-id.d.ts","sourceRoot":"","sources":["../../src/util/generate-workspace-id.ts"],"names":[],"mappings":"AAOA,wBAAsB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIxG;AA2BD,eAAO,MAAM,MAAM,UAsDhB,CAAC;AAEF,eAAO,MAAM,OAAO,UA2XnB,CAAA"}
@@ -16,12 +16,28 @@ exports.animals = exports.colors = exports.generateWorkspaceID = void 0;
16
16
  * See License-AGPL.txt in the project root for license information.
17
17
  */
18
18
  const randomNumber = require("random-number-csprng");
19
- function generateWorkspaceID() {
19
+ function generateWorkspaceID(firstSegment, secondSegment) {
20
20
  return __awaiter(this, void 0, void 0, function* () {
21
- return (yield random(exports.colors)) + '-' + (yield random(exports.animals)) + '-' + (yield random(characters, 8));
21
+ const firstSeg = clean(firstSegment) || (yield random(exports.colors));
22
+ const secSeg = clean(secondSegment, Math.min(16, 24 - firstSeg.length)) || (yield random(exports.animals));
23
+ return firstSeg + '-' + secSeg + '-' + (yield random(characters, 8));
22
24
  });
23
25
  }
24
26
  exports.generateWorkspaceID = generateWorkspaceID;
27
+ function clean(segment, maxChars = 16) {
28
+ if (segment) {
29
+ let result = '';
30
+ for (let i = 0; i < segment.length; i++) {
31
+ if (characters.indexOf(segment[i]) !== -1) {
32
+ result += segment[i];
33
+ }
34
+ }
35
+ if (result.length >= 2) {
36
+ return result.substring(0, maxChars);
37
+ }
38
+ }
39
+ return undefined;
40
+ }
25
41
  function random(array, length = 1) {
26
42
  return __awaiter(this, void 0, void 0, function* () {
27
43
  var result = '';
@@ -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":"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"}
@@ -43,6 +43,23 @@ let TestGenerateWorkspaceId = class TestGenerateWorkspaceId {
43
43
  const longestName = `${longestColor}-${longestAnimal}-12345678`;
44
44
  expect(longestName.length <= 36, `"${longestName}" is longer than 36 chars (${longestName.length})`).to.be.true;
45
45
  }
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', 'thisisratherlong-alsohere-'],
53
+ ['breatheco-de', 'python-flask-api-tutorial', 'breathecode-pythonflaskap-'],
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
+ }
61
+ });
62
+ }
46
63
  };
47
64
  __decorate([
48
65
  mocha_typescript_1.test,
@@ -56,6 +73,12 @@ __decorate([
56
73
  __metadata("design:paramtypes", []),
57
74
  __metadata("design:returntype", void 0)
58
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);
59
82
  TestGenerateWorkspaceId = __decorate([
60
83
  mocha_typescript_1.suite
61
84
  ], TestGenerateWorkspaceId);
@@ -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,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;CAEJ,CAAA;AAdS;IAAL,uBAAI;;;;sEAKJ;AAEK;IAAL,uBAAI;;;;8DAKJ;AAdQ,uBAAuB;IAAnC,wBAAK;GAAO,uBAAuB,CAgBnC;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,4BAA4B,CAAC;gBACpI,CAAC,cAAc,EAAE,2BAA2B,EAAE,4BAA4B,CAAC;aAC9E,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"}
@@ -8,11 +8,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.GitpodHostUrl = void 0;
9
9
  const URL = require('url').URL || window.URL;
10
10
  const logging_1 = require("./logging");
11
- const basewoWkspaceIDRegex = "(([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
+ 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}))";
12
12
  // this pattern matches v4 UUIDs as well as the new generated workspace ids (e.g. pink-panda-ns35kd21)
13
- const workspaceIDRegex = RegExp(`^${basewoWkspaceIDRegex}$`);
13
+ const workspaceIDRegex = RegExp(`^${baseWorkspaceIDRegex}$`);
14
14
  // this pattern matches URL prefixes of workspaces
15
- const workspaceUrlPrefixRegex = RegExp(`^([0-9]{4,6}-)?${basewoWkspaceIDRegex}\\.`);
15
+ const workspaceUrlPrefixRegex = RegExp(`^([0-9]{4,6}-)?${baseWorkspaceIDRegex}\\.`);
16
16
  class GitpodHostUrl {
17
17
  constructor(urlParam) {
18
18
  if (urlParam === undefined || typeof urlParam === 'string') {
package/package.json CHANGED
@@ -60,5 +60,5 @@
60
60
  "watch": "leeway exec --package .:lib --transitive-dependencies --filter-type yarn --components --parallel -- tsc -w --preserveWatchOutput"
61
61
  },
62
62
  "types": "./lib/index.d.ts",
63
- "version": "0.1.5-se-init.1"
63
+ "version": "0.1.5-se-workspaceid.1"
64
64
  }
package/pkg-yarn.lock CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  "@gitpod/gitpod-protocol@0.1.5":
6
6
  version "0.1.5"
7
- resolved "file:///tmp/cache/0ef62aa0edd0ed76d05ebbad23f12233d1184a2c.tar.gz"
7
+ resolved "file:///tmp/cache/8c97806dc6e23eb022ee6fdacfc714f413a0422f.tar.gz"
8
8
  dependencies:
9
9
  "@types/react" "17.0.32"
10
10
  ajv "^6.5.4"
@@ -27,5 +27,21 @@ const expect = chai.expect
27
27
  expect(longestName.length <= 36, `"${longestName}" is longer than 36 chars (${longestName.length})`).to.be.true;
28
28
  }
29
29
 
30
+ @test public async testCustomName() {
31
+ const data = [
32
+ ['foo','bar','foo-bar-'],
33
+ ['f','bar','.{2,16}-bar-'],
34
+ ['gitpod-io','gitpod','gitpodio-gitpod-'],
35
+ ['this is rather long and has some "§$"% special chars','also here pretty long and needs abbreviation','thisisratherlong-alsohere-'],
36
+ ['breatheco-de', 'python-flask-api-tutorial', 'breathecode-pythonflaskap-'],
37
+ ]
38
+ for (const d of data) {
39
+ const id = await generateWorkspaceID(d[0], d[1]);
40
+ expect(id).match(new RegExp("^"+d[2]));
41
+ expect(new GitpodHostUrl().withWorkspacePrefix(id, "eu").workspaceId).to.equal(id);
42
+ expect(id.length <= 36, `"${id}" is longer than 36 chars (${id.length})`).to.be.true;
43
+ }
44
+ }
45
+
30
46
  }
31
47
  module.exports = new TestGenerateWorkspaceId()
@@ -5,8 +5,25 @@
5
5
  */
6
6
  import randomNumber = require("random-number-csprng");
7
7
 
8
- export async function generateWorkspaceID(): Promise<string> {
9
- return (await random(colors))+'-'+(await random(animals))+'-'+(await random(characters, 8));
8
+ export async function generateWorkspaceID(firstSegment?: string, secondSegment?: string): Promise<string> {
9
+ const firstSeg = clean(firstSegment) || await random(colors);
10
+ const secSeg = clean(secondSegment, Math.min(16, 24-firstSeg.length)) || await random(animals);
11
+ return firstSeg+'-'+secSeg+'-'+(await random(characters, 8));
12
+ }
13
+
14
+ function clean(segment: string | undefined, maxChars: number = 16) {
15
+ if (segment) {
16
+ let result = '';
17
+ for (let i =0; i < segment.length; i++) {
18
+ if (characters.indexOf(segment[i]) !== -1) {
19
+ result += segment[i];
20
+ }
21
+ }
22
+ if (result.length >= 2) {
23
+ return result.substring(0, maxChars);
24
+ }
25
+ }
26
+ return undefined;
10
27
  }
11
28
 
12
29
  async function random(array: string[], length: number = 1): Promise<string> {
@@ -12,13 +12,13 @@ export interface UrlChange {
12
12
  }
13
13
  export type UrlUpdate = UrlChange | Partial<URL>;
14
14
 
15
- const basewoWkspaceIDRegex = "(([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}))";
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}))";
16
16
 
17
17
  // this pattern matches v4 UUIDs as well as the new generated workspace ids (e.g. pink-panda-ns35kd21)
18
- const workspaceIDRegex = RegExp(`^${basewoWkspaceIDRegex}$`);
18
+ const workspaceIDRegex = RegExp(`^${baseWorkspaceIDRegex}$`);
19
19
 
20
20
  // this pattern matches URL prefixes of workspaces
21
- const workspaceUrlPrefixRegex = RegExp(`^([0-9]{4,6}-)?${basewoWkspaceIDRegex}\\.`);
21
+ const workspaceUrlPrefixRegex = RegExp(`^([0-9]{4,6}-)?${baseWorkspaceIDRegex}\\.`);
22
22
 
23
23
  export class GitpodHostUrl {
24
24
  readonly url: URL;