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

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 (157) hide show
  1. package/lib/accounting-protocol.js +6 -6
  2. package/lib/accounting-protocol.js.map +1 -1
  3. package/lib/admin-protocol.d.ts +8 -2
  4. package/lib/admin-protocol.d.ts.map +1 -1
  5. package/lib/admin-protocol.js +2 -13
  6. package/lib/admin-protocol.js.map +1 -1
  7. package/lib/analytics.d.ts +12 -1
  8. package/lib/analytics.d.ts.map +1 -1
  9. package/lib/context-url.js +4 -4
  10. package/lib/context-url.js.map +1 -1
  11. package/lib/context-url.spec.js +45 -48
  12. package/lib/context-url.spec.js.map +1 -1
  13. package/lib/email-protocol.js +3 -3
  14. package/lib/email-protocol.js.map +1 -1
  15. package/lib/encryption/container-module.js +4 -4
  16. package/lib/encryption/container-module.js.map +1 -1
  17. package/lib/encryption/encryption-engine.js +19 -20
  18. package/lib/encryption/encryption-engine.js.map +1 -1
  19. package/lib/encryption/encryption-engine.spec.js +29 -36
  20. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  21. package/lib/encryption/encryption-service.js +29 -43
  22. package/lib/encryption/encryption-service.js.map +1 -1
  23. package/lib/encryption/key-provider.js +25 -30
  24. package/lib/encryption/key-provider.js.map +1 -1
  25. package/lib/env.d.ts +0 -1
  26. package/lib/env.d.ts.map +1 -1
  27. package/lib/env.js +12 -14
  28. package/lib/env.js.map +1 -1
  29. package/lib/gitpod-file-parser.js +25 -41
  30. package/lib/gitpod-file-parser.js.map +1 -1
  31. package/lib/gitpod-file-parser.spec.js +116 -116
  32. package/lib/gitpod-file-parser.spec.js.map +1 -1
  33. package/lib/gitpod-service.d.ts +12 -2
  34. package/lib/gitpod-service.d.ts.map +1 -1
  35. package/lib/gitpod-service.js +148 -294
  36. package/lib/gitpod-service.js.map +1 -1
  37. package/lib/messaging/browser/connection.d.ts +3 -3
  38. package/lib/messaging/browser/connection.d.ts.map +1 -1
  39. package/lib/messaging/browser/connection.js +172 -35
  40. package/lib/messaging/browser/connection.js.map +1 -1
  41. package/lib/messaging/browser/window-connection.js +34 -54
  42. package/lib/messaging/browser/window-connection.js.map +1 -1
  43. package/lib/messaging/client-call-metrics.js +17 -18
  44. package/lib/messaging/client-call-metrics.js.map +1 -1
  45. package/lib/messaging/connection-error-handler.js +11 -23
  46. package/lib/messaging/connection-error-handler.js.map +1 -1
  47. package/lib/messaging/handler.d.ts +10 -0
  48. package/lib/messaging/handler.d.ts.map +1 -1
  49. package/lib/messaging/node/connection.js +20 -20
  50. package/lib/messaging/node/connection.js.map +1 -1
  51. package/lib/messaging/proxy-factory.d.ts +2 -0
  52. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  53. package/lib/messaging/proxy-factory.js +73 -160
  54. package/lib/messaging/proxy-factory.js.map +1 -1
  55. package/lib/permission.d.ts +1 -2
  56. package/lib/permission.d.ts.map +1 -1
  57. package/lib/permission.js +12 -13
  58. package/lib/permission.js.map +1 -1
  59. package/lib/plans.js +38 -57
  60. package/lib/plans.js.map +1 -1
  61. package/lib/protocol.js +44 -114
  62. package/lib/protocol.js.map +1 -1
  63. package/lib/team-subscription-protocol.js +11 -11
  64. package/lib/team-subscription-protocol.js.map +1 -1
  65. package/lib/teams-projects-protocol.d.ts +3 -1
  66. package/lib/teams-projects-protocol.d.ts.map +1 -1
  67. package/lib/teams-projects-protocol.js +4 -15
  68. package/lib/teams-projects-protocol.js.map +1 -1
  69. package/lib/util/analytics.d.ts.map +1 -1
  70. package/lib/util/analytics.js +35 -26
  71. package/lib/util/analytics.js.map +1 -1
  72. package/lib/util/async-iterator.js +55 -133
  73. package/lib/util/async-iterator.js.map +1 -1
  74. package/lib/util/cancelable.js +17 -59
  75. package/lib/util/cancelable.js.map +1 -1
  76. package/lib/util/date-time.js +8 -8
  77. package/lib/util/date-time.js.map +1 -1
  78. package/lib/util/deferred.js +10 -12
  79. package/lib/util/deferred.js.map +1 -1
  80. package/lib/util/disposable.js +26 -39
  81. package/lib/util/disposable.js.map +1 -1
  82. package/lib/util/event.js +58 -74
  83. package/lib/util/event.js.map +1 -1
  84. package/lib/util/garbage-collected-cache.js +22 -46
  85. package/lib/util/garbage-collected-cache.js.map +1 -1
  86. package/lib/util/generate-workspace-id.js +11 -67
  87. package/lib/util/generate-workspace-id.js.map +1 -1
  88. package/lib/util/generate-workspace-id.spec.js +34 -79
  89. package/lib/util/generate-workspace-id.spec.js.map +1 -1
  90. package/lib/util/gitpod-cookie.d.ts +20 -0
  91. package/lib/util/gitpod-cookie.d.ts.map +1 -0
  92. package/lib/util/gitpod-cookie.js +44 -0
  93. package/lib/util/gitpod-cookie.js.map +1 -0
  94. package/lib/util/gitpod-host-url.js +93 -103
  95. package/lib/util/gitpod-host-url.js.map +1 -1
  96. package/lib/util/gitpod-host-url.spec.js +87 -135
  97. package/lib/util/gitpod-host-url.spec.js.map +1 -1
  98. package/lib/util/grpc.js +3 -3
  99. package/lib/util/grpc.js.map +1 -1
  100. package/lib/util/logging.d.ts.map +1 -1
  101. package/lib/util/logging.js +68 -109
  102. package/lib/util/logging.js.map +1 -1
  103. package/lib/util/make-link.js +2 -2
  104. package/lib/util/make-link.js.map +1 -1
  105. package/lib/util/parse-workspace-id.d.ts +10 -0
  106. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  107. package/lib/util/parse-workspace-id.js +31 -7
  108. package/lib/util/parse-workspace-id.js.map +1 -1
  109. package/lib/util/parse-workspace-id.spec.d.ts +4 -0
  110. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  111. package/lib/util/parse-workspace-id.spec.js +123 -84
  112. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  113. package/lib/util/queue.js +16 -55
  114. package/lib/util/queue.js.map +1 -1
  115. package/lib/util/queue.spec.js +144 -288
  116. package/lib/util/queue.spec.js.map +1 -1
  117. package/lib/util/repeater.js +35 -88
  118. package/lib/util/repeater.js.map +1 -1
  119. package/lib/util/safe-promise.js +9 -12
  120. package/lib/util/safe-promise.js.map +1 -1
  121. package/lib/util/semaphore.js +15 -46
  122. package/lib/util/semaphore.js.map +1 -1
  123. package/lib/util/skip-if.js +6 -6
  124. package/lib/util/skip-if.js.map +1 -1
  125. package/lib/util/timeutil.js +16 -16
  126. package/lib/util/timeutil.js.map +1 -1
  127. package/lib/util/timeutil.spec.js +21 -24
  128. package/lib/util/timeutil.spec.js.map +1 -1
  129. package/lib/util/tracing.js +43 -47
  130. package/lib/util/tracing.js.map +1 -1
  131. package/lib/util/workspace-port-authentication.js +2 -2
  132. package/lib/util/workspace-port-authentication.js.map +1 -1
  133. package/lib/workspace-cluster.d.ts +11 -1
  134. package/lib/workspace-cluster.d.ts.map +1 -1
  135. package/lib/workspace-cluster.js +3 -3
  136. package/lib/workspace-cluster.js.map +1 -1
  137. package/lib/workspace-instance.d.ts +2 -0
  138. package/lib/workspace-instance.d.ts.map +1 -1
  139. package/package.json +3 -1
  140. package/pkg-yarn.lock +2 -1
  141. package/src/admin-protocol.ts +9 -3
  142. package/src/analytics.ts +14 -1
  143. package/src/env.ts +0 -1
  144. package/src/gitpod-service.ts +13 -2
  145. package/src/messaging/browser/connection.ts +176 -10
  146. package/src/messaging/handler.ts +12 -0
  147. package/src/messaging/proxy-factory.ts +10 -4
  148. package/src/permission.ts +0 -1
  149. package/src/teams-projects-protocol.ts +3 -1
  150. package/src/util/analytics.ts +17 -1
  151. package/src/util/gitpod-cookie.ts +39 -0
  152. package/src/util/grpc.ts +3 -3
  153. package/src/util/logging.ts +33 -20
  154. package/src/util/parse-workspace-id.spec.ts +21 -1
  155. package/src/util/parse-workspace-id.ts +32 -6
  156. package/src/workspace-cluster.ts +8 -1
  157. package/src/workspace-instance.ts +6 -0
@@ -4,6 +4,14 @@
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
+ const REGEX_WORKSPACE_ID = /[0-9a-z]{2,16}-[0-9a-z]{2,16}-[0-9a-z]{8}/;
8
+ const REGEX_WORKSPACE_ID_EXACT = new RegExp(`^${REGEX_WORKSPACE_ID.source}$`);
9
+ // We need to parse the workspace id precisely here to get the case '<some-str>-<port>-<wsid>.ws.' right
10
+ const REGEX_WORKSPACE_ID_FROM_HOSTNAME = new RegExp(`(${REGEX_WORKSPACE_ID.source})\.ws`);
11
+
12
+ const REGEX_WORKSPACE_ID_LEGACY = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/;
13
+ const REGEX_WORKSPACE_ID_LEGACY_EXACT = new RegExp(`^${REGEX_WORKSPACE_ID_LEGACY.source}$`);
14
+ const REGEX_WORKSPACE_ID_LEGACY_FROM_HOSTNAME = new RegExp(`(${REGEX_WORKSPACE_ID_LEGACY.source})\.ws`);
7
15
 
8
16
  /**
9
17
  * Hostname may be of the form:
@@ -13,17 +21,35 @@
13
21
  * @param hostname The hostname the request is headed to
14
22
  */
15
23
  export const parseWorkspaceIdFromHostname = function(hostname: string) {
16
- // We need to parse the workspace id precisely here to get the case '<some-str>-<port>-<wsid>.ws.' right
17
- const wsIdExpression = /([0-9a-z]{2,16}-[0-9a-z]{2,16}-[0-9a-z]{8})\.ws/g;
18
- const match = wsIdExpression.exec(hostname);
24
+ const match = REGEX_WORKSPACE_ID_FROM_HOSTNAME.exec(hostname);
19
25
  if (match && match.length >= 2) {
20
26
  return match[1];
21
27
  } else {
22
- const legacyUrlFormat = /([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.ws/g;
23
- const legacyMatch = legacyUrlFormat.exec(hostname);
28
+ const legacyMatch = REGEX_WORKSPACE_ID_LEGACY_FROM_HOSTNAME.exec(hostname);
24
29
  if (legacyMatch && legacyMatch.length >= 2) {
25
30
  return legacyMatch[1];
26
31
  }
27
32
  return undefined;
28
33
  }
29
- }
34
+ };
35
+
36
+ /** Equalls UUIDv4 (and REGEX_WORKSPACE_ID_LEGACY!) */
37
+ const REGEX_INSTANCE_ID = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/;
38
+ const REGEX_INSTANCE_ID_EXACT = new RegExp(`^${REGEX_INSTANCE_ID.source}$`);
39
+
40
+ /**
41
+ * @param maybeId
42
+ * @returns
43
+ */
44
+ export const matchesInstanceIdOrLegacyWorkspaceIdExactly = function(maybeId: string): boolean {
45
+ return REGEX_INSTANCE_ID_EXACT.test(maybeId)
46
+ || REGEX_WORKSPACE_ID_LEGACY_EXACT.test(maybeId);
47
+ };
48
+
49
+ /**
50
+ * @param maybeWorkspaceId
51
+ * @returns
52
+ */
53
+ export const matchesNewWorkspaceIdExactly = function(maybeWorkspaceId: string): boolean {
54
+ return REGEX_WORKSPACE_ID_EXACT.test(maybeWorkspaceId);
55
+ };
@@ -35,6 +35,9 @@ export interface WorkspaceCluster {
35
35
 
36
36
  // An optional set of constraints that limit who can start workspaces on the cluster
37
37
  admissionConstraints?: AdmissionConstraint[];
38
+
39
+ // An optional set of admission preferences that guide cluster selection
40
+ admissionPreferences?: AdmissionPreference[];
38
41
  }
39
42
 
40
43
  export type WorkspaceClusterState = "available" | "cordoned" | "draining";
@@ -52,9 +55,13 @@ export namespace TLSConfig {
52
55
  export type WorkspaceClusterWoTLS = Omit<WorkspaceCluster, "tls">;
53
56
  export type WorkspaceManagerConnectionInfo = Pick<WorkspaceCluster, "name" | "url" | "tls">;
54
57
 
55
- export type AdmissionConstraint = AdmissionConstraintFeaturePreview | AdmissionConstraintHasRole;
58
+ export type AdmissionConstraint = AdmissionConstraintFeaturePreview | AdmissionConstraintHasRole | AdmissionConstraintHasUserLevel;
56
59
  export type AdmissionConstraintFeaturePreview = { type: "has-feature-preview" };
57
60
  export type AdmissionConstraintHasRole = { type: "has-permission", permission: PermissionName };
61
+ export type AdmissionConstraintHasUserLevel = { type: "has-user-level", level: string };
62
+
63
+ export type AdmissionPreference = AdmissionPreferenceUserLevel;
64
+ export type AdmissionPreferenceUserLevel = { type: 'user-level', level: string };
58
65
 
59
66
 
60
67
  export const WorkspaceClusterDB = Symbol("WorkspaceClusterDB");
@@ -145,6 +145,12 @@ export interface WorkspaceInstanceConditions {
145
145
 
146
146
  // ISO8601 timestamp when the first user activity was registered in the frontend. Only set if the workspace is running.
147
147
  firstUserActivity?: string;
148
+
149
+ // headless_task_failed indicates that a headless workspace task failed
150
+ headlessTaskFailed?: string;
151
+
152
+ // stopped_by_request is true if the workspace was stopped using a StopWorkspace call
153
+ stoppedByRequest?: boolean;
148
154
  }
149
155
 
150
156
  // AdmissionLevel describes who can access a workspace instance and its ports.