@gitpod/gitpod-protocol 0.1.5-wth-test.80 → 0.1.5-yh-vmoptions-fork.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.
Files changed (270) hide show
  1. package/data/gitpod-schema.json +181 -4
  2. package/lib/accounting-protocol.d.ts +17 -10
  3. package/lib/accounting-protocol.d.ts.map +1 -1
  4. package/lib/accounting-protocol.js +30 -32
  5. package/lib/accounting-protocol.js.map +1 -1
  6. package/lib/admin-protocol.d.ts +1 -0
  7. package/lib/admin-protocol.d.ts.map +1 -1
  8. package/lib/admin-protocol.js.map +1 -1
  9. package/lib/analytics.d.ts.map +1 -1
  10. package/lib/analytics.js.map +1 -1
  11. package/lib/auth.d.ts.map +1 -1
  12. package/lib/context-url.d.ts.map +1 -1
  13. package/lib/context-url.js +3 -3
  14. package/lib/context-url.js.map +1 -1
  15. package/lib/context-url.spec.d.ts.map +1 -1
  16. package/lib/context-url.spec.js +20 -5
  17. package/lib/context-url.spec.js.map +1 -1
  18. package/lib/email-protocol.d.ts +1 -1
  19. package/lib/email-protocol.d.ts.map +1 -1
  20. package/lib/email-protocol.js.map +1 -1
  21. package/lib/encryption/container-module.d.ts.map +1 -1
  22. package/lib/encryption/container-module.js +1 -1
  23. package/lib/encryption/container-module.js.map +1 -1
  24. package/lib/encryption/encryption-engine.d.ts.map +1 -1
  25. package/lib/encryption/encryption-engine.js +7 -7
  26. package/lib/encryption/encryption-engine.js.map +1 -1
  27. package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
  28. package/lib/encryption/encryption-engine.spec.js +2 -3
  29. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  30. package/lib/encryption/encryption-service.d.ts.map +1 -1
  31. package/lib/encryption/encryption-service.js +1 -1
  32. package/lib/encryption/encryption-service.js.map +1 -1
  33. package/lib/encryption/key-provider.d.ts.map +1 -1
  34. package/lib/encryption/key-provider.js +7 -9
  35. package/lib/encryption/key-provider.js.map +1 -1
  36. package/lib/env.d.ts +0 -5
  37. package/lib/env.d.ts.map +1 -1
  38. package/lib/env.js +1 -20
  39. package/lib/env.js.map +1 -1
  40. package/lib/gitpod-file-parser.d.ts.map +1 -1
  41. package/lib/gitpod-file-parser.js +6 -6
  42. package/lib/gitpod-file-parser.js.map +1 -1
  43. package/lib/gitpod-file-parser.spec.js +42 -39
  44. package/lib/gitpod-file-parser.spec.js.map +1 -1
  45. package/lib/gitpod-service.d.ts +32 -26
  46. package/lib/gitpod-service.d.ts.map +1 -1
  47. package/lib/gitpod-service.js +39 -32
  48. package/lib/gitpod-service.js.map +1 -1
  49. package/lib/headless-workspace-log.d.ts +1 -0
  50. package/lib/headless-workspace-log.d.ts.map +1 -1
  51. package/lib/headless-workspace-log.js +2 -1
  52. package/lib/headless-workspace-log.js.map +1 -1
  53. package/lib/ide-frontend-service.d.ts +1 -1
  54. package/lib/ide-protocol.d.ts +6 -6
  55. package/lib/ide-protocol.d.ts.map +1 -1
  56. package/lib/index.d.ts +16 -16
  57. package/lib/installation-admin-protocol.d.ts.map +1 -1
  58. package/lib/installation-admin-protocol.js +2 -2
  59. package/lib/installation-admin-protocol.js.map +1 -1
  60. package/lib/license-protocol.d.ts +7 -0
  61. package/lib/license-protocol.d.ts.map +1 -1
  62. package/lib/license-protocol.js.map +1 -1
  63. package/lib/messaging/browser/connection.d.ts +1 -1
  64. package/lib/messaging/browser/connection.d.ts.map +1 -1
  65. package/lib/messaging/browser/connection.js +19 -19
  66. package/lib/messaging/browser/connection.js.map +1 -1
  67. package/lib/messaging/browser/window-connection.d.ts +4 -4
  68. package/lib/messaging/browser/window-connection.d.ts.map +1 -1
  69. package/lib/messaging/browser/window-connection.js +9 -6
  70. package/lib/messaging/browser/window-connection.js.map +1 -1
  71. package/lib/messaging/client-call-metrics.d.ts +2 -2
  72. package/lib/messaging/client-call-metrics.d.ts.map +1 -1
  73. package/lib/messaging/client-call-metrics.js +20 -20
  74. package/lib/messaging/client-call-metrics.js.map +1 -1
  75. package/lib/messaging/error.d.ts +2 -0
  76. package/lib/messaging/error.d.ts.map +1 -1
  77. package/lib/messaging/error.js +4 -0
  78. package/lib/messaging/error.js.map +1 -1
  79. package/lib/messaging/handler.d.ts.map +1 -1
  80. package/lib/messaging/handler.js +1 -1
  81. package/lib/messaging/node/connection.js +8 -8
  82. package/lib/messaging/node/connection.js.map +1 -1
  83. package/lib/messaging/proxy-factory.d.ts +1 -1
  84. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  85. package/lib/messaging/proxy-factory.js +7 -9
  86. package/lib/messaging/proxy-factory.js.map +1 -1
  87. package/lib/payment-protocol.d.ts.map +1 -1
  88. package/lib/payment-protocol.js +1 -1
  89. package/lib/payment-protocol.js.map +1 -1
  90. package/lib/permission.d.ts +2 -2
  91. package/lib/permission.d.ts.map +1 -1
  92. package/lib/permission.js +12 -23
  93. package/lib/permission.js.map +1 -1
  94. package/lib/plans.d.ts +3 -3
  95. package/lib/plans.d.ts.map +1 -1
  96. package/lib/plans.js +206 -171
  97. package/lib/plans.js.map +1 -1
  98. package/lib/protocol.d.ts +83 -36
  99. package/lib/protocol.d.ts.map +1 -1
  100. package/lib/protocol.js +165 -87
  101. package/lib/protocol.js.map +1 -1
  102. package/lib/snapshot-url.spec.js.map +1 -1
  103. package/lib/team-subscription-protocol.d.ts +21 -3
  104. package/lib/team-subscription-protocol.d.ts.map +1 -1
  105. package/lib/team-subscription-protocol.js +16 -5
  106. package/lib/team-subscription-protocol.js.map +1 -1
  107. package/lib/teams-projects-protocol.d.ts +8 -3
  108. package/lib/teams-projects-protocol.d.ts.map +1 -1
  109. package/lib/teams-projects-protocol.js +1 -1
  110. package/lib/teams-projects-protocol.js.map +1 -1
  111. package/lib/typings/globals.d.ts +2 -2
  112. package/lib/typings/globals.d.ts.map +1 -1
  113. package/lib/util/analytics.d.ts.map +1 -1
  114. package/lib/util/analytics.js +6 -6
  115. package/lib/util/analytics.js.map +1 -1
  116. package/lib/util/async-iterator.d.ts.map +1 -1
  117. package/lib/util/async-iterator.js +3 -3
  118. package/lib/util/async-iterator.js.map +1 -1
  119. package/lib/util/cancelable.js.map +1 -1
  120. package/lib/util/date-time.js +6 -6
  121. package/lib/util/date-time.js.map +1 -1
  122. package/lib/util/deferred.js.map +1 -1
  123. package/lib/util/disposable.d.ts.map +1 -1
  124. package/lib/util/disposable.js +2 -2
  125. package/lib/util/disposable.js.map +1 -1
  126. package/lib/util/event.d.ts.map +1 -1
  127. package/lib/util/event.js +5 -3
  128. package/lib/util/event.js.map +1 -1
  129. package/lib/util/garbage-collected-cache.d.ts.map +1 -1
  130. package/lib/util/garbage-collected-cache.js +1 -1
  131. package/lib/util/garbage-collected-cache.js.map +1 -1
  132. package/lib/util/generate-workspace-id.d.ts +5 -0
  133. package/lib/util/generate-workspace-id.d.ts.map +1 -1
  134. package/lib/util/generate-workspace-id.js +446 -442
  135. package/lib/util/generate-workspace-id.js.map +1 -1
  136. package/lib/util/generate-workspace-id.spec.js +18 -7
  137. package/lib/util/generate-workspace-id.spec.js.map +1 -1
  138. package/lib/util/gitpod-cookie.d.ts +1 -1
  139. package/lib/util/gitpod-cookie.d.ts.map +1 -1
  140. package/lib/util/gitpod-cookie.js +0 -3
  141. package/lib/util/gitpod-cookie.js.map +1 -1
  142. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  143. package/lib/util/gitpod-host-url.js +31 -29
  144. package/lib/util/gitpod-host-url.js.map +1 -1
  145. package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
  146. package/lib/util/gitpod-host-url.spec.js +15 -5
  147. package/lib/util/gitpod-host-url.spec.js.map +1 -1
  148. package/lib/util/grpc.d.ts.map +1 -1
  149. package/lib/util/grpc.js.map +1 -1
  150. package/lib/util/jaeger-client-types.d.ts.map +1 -1
  151. package/lib/util/logging.d.ts +1 -1
  152. package/lib/util/logging.d.ts.map +1 -1
  153. package/lib/util/logging.js +23 -24
  154. package/lib/util/logging.js.map +1 -1
  155. package/lib/util/make-link.js +5 -5
  156. package/lib/util/make-link.js.map +1 -1
  157. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  158. package/lib/util/parse-workspace-id.js +1 -2
  159. package/lib/util/parse-workspace-id.js.map +1 -1
  160. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  161. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  162. package/lib/util/queue.spec.js +9 -6
  163. package/lib/util/queue.spec.js.map +1 -1
  164. package/lib/util/semaphore.d.ts.map +1 -1
  165. package/lib/util/semaphore.js.map +1 -1
  166. package/lib/util/skip-if.d.ts.map +1 -1
  167. package/lib/util/skip-if.js.map +1 -1
  168. package/lib/util/timeutil.d.ts +1 -0
  169. package/lib/util/timeutil.d.ts.map +1 -1
  170. package/lib/util/timeutil.js +9 -3
  171. package/lib/util/timeutil.js.map +1 -1
  172. package/lib/util/timeutil.spec.d.ts.map +1 -1
  173. package/lib/util/timeutil.spec.js.map +1 -1
  174. package/lib/util/tracing.d.ts +6 -6
  175. package/lib/util/tracing.d.ts.map +1 -1
  176. package/lib/util/tracing.js +14 -16
  177. package/lib/util/tracing.js.map +1 -1
  178. package/lib/util/tracing.spec.js +3 -3
  179. package/lib/util/tracing.spec.js.map +1 -1
  180. package/lib/util/workspace-port-authentication.d.ts +7 -7
  181. package/lib/util/workspace-port-authentication.d.ts.map +1 -1
  182. package/lib/util/workspace-port-authentication.js +8 -11
  183. package/lib/util/workspace-port-authentication.js.map +1 -1
  184. package/lib/workspace-cluster.d.ts +1 -1
  185. package/lib/workspace-cluster.d.ts.map +1 -1
  186. package/lib/workspace-cluster.js +2 -4
  187. package/lib/workspace-cluster.js.map +1 -1
  188. package/lib/workspace-instance.d.ts +19 -3
  189. package/lib/workspace-instance.d.ts.map +1 -1
  190. package/lib/wsready.d.ts +1 -1
  191. package/lib/wsready.d.ts.map +1 -1
  192. package/lib/wsready.js +2 -2
  193. package/package.json +6 -6
  194. package/pkg-yarn.lock +5 -5
  195. package/provenance-bundle.jsonl +1 -1
  196. package/src/accounting-protocol.ts +63 -51
  197. package/src/admin-protocol.ts +23 -20
  198. package/src/analytics.ts +21 -21
  199. package/src/auth.ts +2 -2
  200. package/src/context-url.spec.ts +25 -11
  201. package/src/context-url.ts +80 -78
  202. package/src/email-protocol.ts +5 -6
  203. package/src/encryption/container-module.ts +2 -3
  204. package/src/encryption/encryption-engine.spec.ts +9 -8
  205. package/src/encryption/encryption-engine.ts +14 -14
  206. package/src/encryption/encryption-service.ts +4 -5
  207. package/src/encryption/key-provider.ts +16 -19
  208. package/src/env.ts +0 -22
  209. package/src/gitpod-file-parser.spec.ts +55 -61
  210. package/src/gitpod-file-parser.ts +16 -17
  211. package/src/gitpod-service.ts +152 -110
  212. package/src/headless-workspace-log.ts +6 -4
  213. package/src/ide-frontend-service.ts +2 -2
  214. package/src/ide-protocol.ts +8 -8
  215. package/src/index.ts +16 -16
  216. package/src/installation-admin-protocol.ts +8 -8
  217. package/src/license-protocol.ts +12 -6
  218. package/src/messaging/browser/connection.ts +45 -47
  219. package/src/messaging/browser/window-connection.ts +39 -29
  220. package/src/messaging/client-call-metrics.ts +70 -71
  221. package/src/messaging/error.ts +7 -3
  222. package/src/messaging/handler.ts +6 -6
  223. package/src/messaging/node/connection.ts +8 -8
  224. package/src/messaging/proxy-factory.ts +23 -30
  225. package/src/oss-allowlist.ts +3 -3
  226. package/src/payment-protocol.ts +2 -2
  227. package/src/permission.ts +20 -31
  228. package/src/plans.ts +236 -189
  229. package/src/protocol.ts +346 -239
  230. package/src/snapshot-url.spec.ts +9 -7
  231. package/src/team-subscription-protocol.ts +57 -23
  232. package/src/teams-projects-protocol.ts +14 -8
  233. package/src/typings/globals.ts +4 -4
  234. package/src/util/analytics.ts +46 -42
  235. package/src/util/async-iterator.ts +4 -5
  236. package/src/util/cancelable.ts +3 -3
  237. package/src/util/date-time.ts +8 -8
  238. package/src/util/deferred.ts +6 -6
  239. package/src/util/disposable.ts +3 -6
  240. package/src/util/event.ts +9 -11
  241. package/src/util/garbage-collected-cache.ts +3 -6
  242. package/src/util/generate-workspace-id.spec.ts +26 -16
  243. package/src/util/generate-workspace-id.ts +460 -454
  244. package/src/util/gitpod-cookie.ts +8 -9
  245. package/src/util/gitpod-host-url.spec.ts +40 -13
  246. package/src/util/gitpod-host-url.ts +37 -34
  247. package/src/util/grpc.ts +1 -1
  248. package/src/util/jaeger-client-types.ts +2 -2
  249. package/src/util/logging.ts +49 -40
  250. package/src/util/make-link.ts +6 -7
  251. package/src/util/parse-workspace-id.spec.ts +17 -8
  252. package/src/util/parse-workspace-id.ts +5 -6
  253. package/src/util/queue.spec.ts +27 -25
  254. package/src/util/repeat.ts +1 -1
  255. package/src/util/semaphore.ts +4 -6
  256. package/src/util/skip-if.ts +9 -6
  257. package/src/util/timeutil.spec.ts +14 -15
  258. package/src/util/timeutil.ts +21 -11
  259. package/src/util/tracing.spec.ts +28 -23
  260. package/src/util/tracing.ts +54 -51
  261. package/src/util/workspace-port-authentication.ts +10 -13
  262. package/src/workspace-cluster.ts +15 -12
  263. package/src/workspace-instance.ts +53 -24
  264. package/src/wsready.ts +3 -3
  265. package/data/builtin-theia-plugins.json +0 -372
  266. package/lib/theia-plugins.d.ts +0 -11
  267. package/lib/theia-plugins.d.ts.map +0 -1
  268. package/lib/theia-plugins.js +0 -8
  269. package/lib/theia-plugins.js.map +0 -1
  270. package/src/theia-plugins.ts +0 -11
@@ -4,9 +4,9 @@
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
- import { v4 as uuidv4 } from 'uuid';
8
- import { User } from './protocol';
9
- import { oneMonthLater } from './util/timeutil';
7
+ import { v4 as uuidv4 } from "uuid";
8
+ import { User } from "./protocol";
9
+ import { oneMonthLater } from "./util/timeutil";
10
10
 
11
11
  /*
12
12
  * Subscription and acocunting data
@@ -33,7 +33,7 @@ export interface AccountEntry {
33
33
  /**
34
34
  * credit: end of validity
35
35
  */
36
- expiryDate?: string; // exclusive
36
+ expiryDate?: string; // exclusive
37
37
 
38
38
  kind: AccountEntryKind;
39
39
 
@@ -46,26 +46,26 @@ export interface AccountEntry {
46
46
  description?: object;
47
47
  }
48
48
  export namespace AccountEntry {
49
- export function create<T extends AccountEntry>(entry: Omit<T, 'uid'>): T {
49
+ export function create<T extends AccountEntry>(entry: Omit<T, "uid">): T {
50
50
  const result = entry as T;
51
51
  result.uid = uuidv4();
52
52
  return result;
53
- };
53
+ }
54
54
  }
55
55
 
56
- export type DebitAccountEntryKind = 'session' | 'expiry' | 'loss';
57
- export type AccountEntryKind = 'credit' | DebitAccountEntryKind | 'carry' | 'open';
56
+ export type DebitAccountEntryKind = "session" | "expiry" | "loss";
57
+ export type AccountEntryKind = "credit" | DebitAccountEntryKind | "carry" | "open";
58
58
 
59
59
  export interface Credit extends AccountEntry {
60
- kind: 'credit';
60
+ kind: "credit";
61
61
  expiryDate: string;
62
62
  }
63
63
  export type Debit = LossDebit | ExpiryDebit | SessionDebit;
64
64
  export interface LossDebit extends AccountEntry {
65
- kind: 'loss';
65
+ kind: "loss";
66
66
  }
67
67
  export interface ExpiryDebit extends AccountEntry {
68
- kind: 'expiry';
68
+ kind: "expiry";
69
69
  creditId: undefined;
70
70
  }
71
71
  export interface SessionDebit extends AccountEntry {
@@ -80,9 +80,7 @@ export interface CreditDescription {
80
80
  }
81
81
  export namespace CreditDescription {
82
82
  export function is(obj: any): obj is CreditDescription {
83
- return !!obj
84
- && obj.hasOwnProperty('subscriptionId')
85
- && obj.hasOwnProperty('planId');
83
+ return !!obj && obj.hasOwnProperty("subscriptionId") && obj.hasOwnProperty("planId");
86
84
  }
87
85
  }
88
86
  export interface SessionDescription {
@@ -93,11 +91,13 @@ export interface SessionDescription {
93
91
  }
94
92
  export namespace SessionDescription {
95
93
  export function is(obj: any): obj is SessionDescription {
96
- return !!obj
97
- && obj.hasOwnProperty('contextTitle')
98
- && obj.hasOwnProperty('contextUrl')
99
- && obj.hasOwnProperty('workspaceId')
100
- && obj.hasOwnProperty('workspaceInstanceId')
94
+ return (
95
+ !!obj &&
96
+ obj.hasOwnProperty("contextTitle") &&
97
+ obj.hasOwnProperty("contextUrl") &&
98
+ obj.hasOwnProperty("workspaceId") &&
99
+ obj.hasOwnProperty("workspaceInstanceId")
100
+ );
101
101
  }
102
102
  }
103
103
 
@@ -111,11 +111,11 @@ export namespace SessionDescription {
111
111
  export interface Subscription {
112
112
  uid: string;
113
113
  userId: string;
114
- startDate: string; // inclusive
114
+ startDate: string; // inclusive
115
115
  /** When the subscription will end (must be >= cancellationDate!) */
116
- endDate?: string; // exclusive
116
+ endDate?: string; // exclusive
117
117
  /** When the subscription was cancelled */
118
- cancellationDate?: string; // exclusive
118
+ cancellationDate?: string; // exclusive
119
119
  /** Number of granted hours */
120
120
  amount: number;
121
121
  /** Number of granted hours for the first month: If this is set, use this value for the first month */
@@ -124,6 +124,7 @@ export interface Subscription {
124
124
  paymentReference?: string;
125
125
  paymentData?: PaymentData;
126
126
  teamSubscriptionSlotId?: string;
127
+ teamMembershipId?: string;
127
128
  /** marks the subscription as deleted */
128
129
  deleted?: boolean;
129
130
  }
@@ -145,8 +146,7 @@ export interface UserPaidSubscription extends Subscription {
145
146
  }
146
147
  export namespace UserPaidSubscription {
147
148
  export function is(data: any): data is UserPaidSubscription {
148
- return !!data
149
- && data.hasOwnProperty('paymentReference');
149
+ return !!data && data.hasOwnProperty("paymentReference");
150
150
  }
151
151
  }
152
152
 
@@ -155,41 +155,53 @@ export interface AssignedTeamSubscription extends Subscription {
155
155
  }
156
156
  export namespace AssignedTeamSubscription {
157
157
  export function is(data: any): data is AssignedTeamSubscription {
158
- return !!data
159
- && data.hasOwnProperty('teamSubscriptionSlotId');
158
+ return !!data && data.hasOwnProperty("teamSubscriptionSlotId");
159
+ }
160
+ }
161
+
162
+ export interface AssignedTeamSubscription2 extends Subscription {
163
+ teamMembershipId: string;
164
+ }
165
+ export namespace AssignedTeamSubscription2 {
166
+ export function is(data: any): data is AssignedTeamSubscription2 {
167
+ return typeof data === "object" && data.hasOwnProperty("teamMembershipId");
160
168
  }
161
169
  }
162
170
 
163
171
  export namespace Subscription {
164
- export function create(newSubscription: Omit<Subscription, 'uid'>) {
172
+ export function create(newSubscription: Omit<Subscription, "uid">) {
165
173
  const subscription = newSubscription as Subscription;
166
174
  subscription.uid = uuidv4();
167
175
  return subscription;
168
- };
176
+ }
169
177
  export function cancelSubscription(s: Subscription, cancellationDate: string, endDate?: string) {
170
178
  s.endDate = endDate || cancellationDate;
171
179
  s.cancellationDate = cancellationDate;
172
- };
180
+ }
173
181
  export function isSame(s1: Subscription | undefined, s2: Subscription | undefined): boolean {
174
- return !!s1 && !!s2
175
- && s1.userId === s2.userId
176
- && s1.planId === s2.planId
177
- && s1.startDate === s2.startDate
178
- && s1.endDate === s2.endDate
179
- && s1.amount === s2.amount
180
- && s1.cancellationDate === s2.cancellationDate
181
- && s1.deleted === s2.deleted
182
- && ((s1.paymentData === undefined && s2.paymentData === undefined)
183
- || (!!s1.paymentData && !!s2.paymentData
184
- && s1.paymentData.downgradeDate === s2.paymentData.downgradeDate
185
- && s1.paymentData.newPlan === s2.paymentData.newPlan));
186
- };
182
+ return (
183
+ !!s1 &&
184
+ !!s2 &&
185
+ s1.userId === s2.userId &&
186
+ s1.planId === s2.planId &&
187
+ s1.startDate === s2.startDate &&
188
+ s1.endDate === s2.endDate &&
189
+ s1.amount === s2.amount &&
190
+ s1.cancellationDate === s2.cancellationDate &&
191
+ s1.deleted === s2.deleted &&
192
+ ((s1.paymentData === undefined && s2.paymentData === undefined) ||
193
+ (!!s1.paymentData &&
194
+ !!s2.paymentData &&
195
+ s1.paymentData.downgradeDate === s2.paymentData.downgradeDate &&
196
+ s1.paymentData.newPlan === s2.paymentData.newPlan))
197
+ );
198
+ }
187
199
  export function isActive(s: Subscription, date: string): boolean {
188
200
  return s.startDate <= date && (s.endDate === undefined || date < s.endDate);
189
- };
201
+ }
190
202
  export function isDowngraded(s: Subscription) {
191
203
  return s.paymentData && s.paymentData.downgradeDate;
192
- };
204
+ }
193
205
  export function calculateCurrentPeriod(startDate: string, now: Date) {
194
206
  let nextStartDate = startDate;
195
207
  do {
@@ -197,19 +209,19 @@ export namespace Subscription {
197
209
  nextStartDate = oneMonthLater(startDate, new Date(startDate).getDate());
198
210
  } while (nextStartDate < now.toISOString());
199
211
  return { startDate, endDate: nextStartDate };
200
- };
212
+ }
201
213
  }
202
214
 
203
215
  export type MaybeSubscription = Subscription | undefined;
204
216
 
205
217
  export interface Period {
206
- startDate: string; // inclusive
207
- endDate: string; // exclusive
218
+ startDate: string; // inclusive
219
+ endDate: string; // exclusive
208
220
  }
209
221
 
210
222
  export type MaybePeriod = Period | undefined;
211
223
 
212
- export type AccountEntryFixedPeriod = Omit<AccountEntry, 'uid'> & { expiryDate: string };
224
+ export type AccountEntryFixedPeriod = Omit<AccountEntry, "uid"> & { expiryDate: string };
213
225
  export interface AccountStatement extends Period {
214
226
  userId: string;
215
227
  /**
@@ -221,9 +233,9 @@ export interface AccountStatement extends Period {
221
233
  /** Remaining valid hours (accumulated from credits) */
222
234
  remainingHours: RemainingHours;
223
235
  }
224
- export type RemainingHours = number | 'unlimited';
236
+ export type RemainingHours = number | "unlimited";
225
237
 
226
238
  export interface CreditAlert {
227
- userId: string,
228
- remainingUsageHours: number
239
+ userId: string;
240
+ remainingUsageHours: number;
229
241
  }
@@ -6,7 +6,7 @@
6
6
 
7
7
  import { User, Workspace, NamedWorkspaceFeatureFlag } from "./protocol";
8
8
  import { FindPrebuildsParams } from "./gitpod-service";
9
- import { Project, Team, PrebuildWithStatus, TeamMemberInfo, TeamMemberRole } from "./teams-projects-protocol"
9
+ import { Project, Team, PrebuildWithStatus, TeamMemberInfo, TeamMemberRole } from "./teams-projects-protocol";
10
10
  import { WorkspaceInstance, WorkspaceInstancePhase } from "./workspace-instance";
11
11
  import { RoleOrPermission } from "./permission";
12
12
  import { AccountStatement } from "./accounting-protocol";
@@ -42,45 +42,47 @@ export interface AdminServer {
42
42
  adminAddStudentEmailDomain(userId: string, domain: string): Promise<void>;
43
43
  adminGrantExtraHours(userId: string, extraHours: number): Promise<void>;
44
44
 
45
- adminGetSettings(): Promise<InstallationAdminSettings>
46
- adminUpdateSettings(settings: InstallationAdminSettings): Promise<void>
45
+ adminGetSettings(): Promise<InstallationAdminSettings>;
46
+ adminUpdateSettings(settings: InstallationAdminSettings): Promise<void>;
47
47
  }
48
48
 
49
49
  export interface AdminGetListRequest<T> {
50
- offset: number
51
- limit: number
52
- orderBy: keyof T
53
- orderDir: "asc" | "desc"
50
+ offset: number;
51
+ limit: number;
52
+ orderBy: keyof T;
53
+ orderDir: "asc" | "desc";
54
54
  searchTerm?: string;
55
55
  }
56
56
 
57
57
  export interface AdminGetListResult<T> {
58
- total: number
59
- rows: T[]
58
+ total: number;
59
+ rows: T[];
60
60
  }
61
61
 
62
62
  export interface AdminBlockUserRequest {
63
- id: string
64
- blocked: boolean
63
+ id: string;
64
+ blocked: boolean;
65
65
  }
66
66
 
67
67
  export interface AdminModifyRoleOrPermissionRequest {
68
68
  id: string;
69
69
  rpp: {
70
- r: RoleOrPermission
71
- add: boolean
72
- }[]
70
+ r: RoleOrPermission;
71
+ add: boolean;
72
+ }[];
73
73
  }
74
74
 
75
75
  export interface AdminModifyPermanentWorkspaceFeatureFlagRequest {
76
76
  id: string;
77
77
  changes: {
78
- featureFlag: NamedWorkspaceFeatureFlag
79
- add: boolean
80
- }[]
78
+ featureFlag: NamedWorkspaceFeatureFlag;
79
+ add: boolean;
80
+ }[];
81
81
  }
82
82
 
83
- export interface WorkspaceAndInstance extends Omit<Workspace, "id" | "creationTime">, Omit<WorkspaceInstance, "id" | "creationTime"> {
83
+ export interface WorkspaceAndInstance
84
+ extends Omit<Workspace, "id" | "creationTime">,
85
+ Omit<WorkspaceInstance, "id" | "creationTime"> {
84
86
  workspaceId: string;
85
87
  workspaceCreationTime: string;
86
88
  instanceId: string;
@@ -93,7 +95,7 @@ export namespace WorkspaceAndInstance {
93
95
  return {
94
96
  id: wai.workspaceId,
95
97
  creationTime: wai.workspaceCreationTime,
96
- ...wai
98
+ ...wai,
97
99
  };
98
100
  }
99
101
 
@@ -104,7 +106,7 @@ export namespace WorkspaceAndInstance {
104
106
  return {
105
107
  id: wai.instanceId,
106
108
  creationTime: wai.instanceCreationTime,
107
- ...wai
109
+ ...wai,
108
110
  };
109
111
  }
110
112
  }
@@ -116,4 +118,5 @@ export type AdminGetWorkspacesQuery = {
116
118
  instanceIdOrWorkspaceId?: string;
117
119
  instanceId?: string;
118
120
  workspaceId?: string;
121
+ ownerId?: string;
119
122
  };
package/src/analytics.ts CHANGED
@@ -4,7 +4,6 @@
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
-
8
7
  export const IAnalyticsWriter = Symbol("IAnalyticsWriter");
9
8
 
10
9
  type Identity =
@@ -15,24 +14,27 @@ interface Message {
15
14
  messageId?: string;
16
15
  }
17
16
 
18
- export type IdentifyMessage = Message & Identity & {
19
- traits?: any;
20
- timestamp?: Date;
21
- context?: any;
22
- };
23
-
24
- export type TrackMessage = Message & Identity & {
25
- event: string;
26
- properties?: any;
27
- timestamp?: Date;
28
- context?: any;
29
- };
30
-
31
- export type PageMessage = Message & Identity & {
32
- properties?: any;
33
- timestamp?: Date;
34
- context?: any;
35
- };
17
+ export type IdentifyMessage = Message &
18
+ Identity & {
19
+ traits?: any;
20
+ timestamp?: Date;
21
+ context?: any;
22
+ };
23
+
24
+ export type TrackMessage = Message &
25
+ Identity & {
26
+ event: string;
27
+ properties?: any;
28
+ timestamp?: Date;
29
+ context?: any;
30
+ };
31
+
32
+ export type PageMessage = Message &
33
+ Identity & {
34
+ properties?: any;
35
+ timestamp?: Date;
36
+ context?: any;
37
+ };
36
38
 
37
39
  export type RemoteTrackMessage = Omit<TrackMessage, "timestamp" | "userId">;
38
40
  export type RemotePageMessage = Omit<PageMessage, "timestamp" | "userId"> & {
@@ -42,11 +44,9 @@ export type RemotePageMessage = Omit<PageMessage, "timestamp" | "userId"> & {
42
44
  export type RemoteIdentifyMessage = Omit<IdentifyMessage, "timestamp" | "userId">;
43
45
 
44
46
  export interface IAnalyticsWriter {
45
-
46
47
  identify(msg: IdentifyMessage): void;
47
48
 
48
49
  track(msg: TrackMessage): void;
49
50
 
50
51
  page(msg: PageMessage): void;
51
-
52
52
  }
package/src/auth.ts CHANGED
@@ -11,14 +11,14 @@ export interface SelectAccountPayload {
11
11
  authHost: string;
12
12
  authName: string;
13
13
  authProviderType: string;
14
- },
14
+ };
15
15
  otherUser: {
16
16
  name: string;
17
17
  avatarUrl: string;
18
18
  authHost: string;
19
19
  authName: string;
20
20
  authProviderType: string;
21
- }
21
+ };
22
22
  }
23
23
  export namespace SelectAccountPayload {
24
24
  export function is(data: any): data is SelectAccountPayload {
@@ -4,43 +4,57 @@
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
- import * as chai from 'chai';
8
- import { suite, test } from 'mocha-typescript';
9
- import { Workspace } from '.';
10
- import { ContextURL } from './context-url';
7
+ import * as chai from "chai";
8
+ import { suite, test } from "mocha-typescript";
9
+ import { Workspace } from ".";
10
+ import { ContextURL } from "./context-url";
11
11
  const expect = chai.expect;
12
12
 
13
13
  type WsContextUrl = Pick<Workspace, "context" | "contextURL">;
14
14
 
15
15
  @suite
16
16
  export class ContextUrlTest {
17
-
18
17
  @test public parseContextUrl_withEnvVar() {
19
- const actual = ContextURL.getNormalizedURL({ contextURL: "passedin=test%20value/https://github.com/gitpod-io/gitpod-test-repo", context: {} } as WsContextUrl);
18
+ const actual = ContextURL.getNormalizedURL({
19
+ contextURL: "passedin=test%20value/https://github.com/gitpod-io/gitpod-test-repo",
20
+ context: {},
21
+ } as WsContextUrl);
20
22
  expect(actual?.host).to.equal("github.com");
21
23
  expect(actual?.pathname).to.equal("/gitpod-io/gitpod-test-repo");
22
24
  }
23
25
 
24
26
  @test public parseContextUrl_withEnvVar_withoutSchema() {
25
- const actual = ContextURL.getNormalizedURL({ contextURL: "passedin=test%20value/github.com/gitpod-io/gitpod-test-repo", context: {} } as WsContextUrl);
27
+ const actual = ContextURL.getNormalizedURL({
28
+ contextURL: "passedin=test%20value/github.com/gitpod-io/gitpod-test-repo",
29
+ context: {},
30
+ } as WsContextUrl);
26
31
  expect(actual?.host).to.equal("github.com");
27
32
  expect(actual?.pathname).to.equal("/gitpod-io/gitpod-test-repo");
28
33
  }
29
34
 
30
35
  @test public parseContextUrl_withEnvVar_sshUrl() {
31
- const actual = ContextURL.getNormalizedURL({ contextURL: "passedin=test%20value/git@github.com:gitpod-io/gitpod-test-repo.git", context: {} } as WsContextUrl);
36
+ const actual = ContextURL.getNormalizedURL({
37
+ contextURL: "passedin=test%20value/git@github.com:gitpod-io/gitpod-test-repo.git",
38
+ context: {},
39
+ } as WsContextUrl);
32
40
  expect(actual?.host).to.equal("github.com");
33
41
  expect(actual?.pathname).to.equal("/gitpod-io/gitpod-test-repo.git");
34
42
  }
35
43
 
36
44
  @test public parseContextUrl_withPrebuild() {
37
- const actual = ContextURL.getNormalizedURL({ contextURL: "prebuild/https://github.com/gitpod-io/gitpod-test-repo", context: {} } as WsContextUrl);
45
+ const actual = ContextURL.getNormalizedURL({
46
+ contextURL: "prebuild/https://github.com/gitpod-io/gitpod-test-repo",
47
+ context: {},
48
+ } as WsContextUrl);
38
49
  expect(actual?.host).to.equal("github.com");
39
50
  expect(actual?.pathname).to.equal("/gitpod-io/gitpod-test-repo");
40
51
  }
41
52
 
42
53
  @test public parseContextUrl_withPrebuild_withoutSchema() {
43
- const actual = ContextURL.getNormalizedURL({ contextURL: "prebuild/github.com/gitpod-io/gitpod-test-repo", context: {} } as WsContextUrl);
54
+ const actual = ContextURL.getNormalizedURL({
55
+ contextURL: "prebuild/github.com/gitpod-io/gitpod-test-repo",
56
+ context: {},
57
+ } as WsContextUrl);
44
58
  expect(actual?.host).to.equal("github.com");
45
59
  expect(actual?.pathname).to.equal("/gitpod-io/gitpod-test-repo");
46
60
  }
@@ -50,4 +64,4 @@ export class ContextUrlTest {
50
64
  expect(actual).to.be.undefined;
51
65
  }
52
66
  }
53
- module.exports = new ContextUrlTest()
67
+ module.exports = new ContextUrlTest();
@@ -15,93 +15,95 @@ import { Workspace } from ".";
15
15
  * TODO(gpl) See if we can get this into `server` code to remove the burden from clients
16
16
  */
17
17
  export namespace ContextURL {
18
- export const INCREMENTAL_PREBUILD_PREFIX = "incremental-prebuild";
19
- export const PREBUILD_PREFIX = "prebuild";
20
- export const IMAGEBUILD_PREFIX = "imagebuild";
21
- export const SNAPSHOT_PREFIX = "snapshot";
22
- export const REFERRER_PREFIX = 'referrer:';
18
+ export const INCREMENTAL_PREBUILD_PREFIX = "incremental-prebuild";
19
+ export const PREBUILD_PREFIX = "prebuild";
20
+ export const IMAGEBUILD_PREFIX = "imagebuild";
21
+ export const SNAPSHOT_PREFIX = "snapshot";
22
+ export const REFERRER_PREFIX = "referrer:";
23
23
 
24
- /**
25
- * This function will (try to) return the HTTP(S) URL of the context the user originally created this workspace on.
26
- * Especially it will not contain any modifiers or be of different scheme than HTTP(S).
27
- *
28
- * Use this function if you need to provided a _working_ URL to the original context.
29
- * @param ws
30
- * @returns
31
- */
32
- export function getNormalizedURL(ws: Pick<Workspace, "context" | "contextURL"> | undefined): URL | undefined {
33
- const normalized = normalize(ws);
34
- if (!normalized) {
35
- return undefined;
36
- }
24
+ /**
25
+ * This function will (try to) return the HTTP(S) URL of the context the user originally created this workspace on.
26
+ * Especially it will not contain any modifiers or be of different scheme than HTTP(S).
27
+ *
28
+ * Use this function if you need to provided a _working_ URL to the original context.
29
+ * @param ws
30
+ * @returns
31
+ */
32
+ export function getNormalizedURL(ws: Pick<Workspace, "context" | "contextURL"> | undefined): URL | undefined {
33
+ const normalized = normalize(ws);
34
+ if (!normalized) {
35
+ return undefined;
36
+ }
37
37
 
38
- try {
39
- return new URL(normalized);
40
- } catch (err) {
41
- console.error(`unable to parse URL from normalized contextURL: '${normalized}'`, err);
38
+ try {
39
+ return new URL(normalized);
40
+ } catch (err) {
41
+ console.error(`unable to parse URL from normalized contextURL: '${normalized}'`, err);
42
+ }
43
+ return undefined;
42
44
  }
43
- return undefined;
44
- }
45
45
 
46
- function normalize(ws: Pick<Workspace, "context" | "contextURL"> | undefined): string | undefined {
47
- if (!ws) {
48
- return undefined;
49
- }
50
- if (ws.context.normalizedContextURL) {
51
- return ws.context.normalizedContextURL;
52
- }
46
+ function normalize(ws: Pick<Workspace, "context" | "contextURL"> | undefined): string | undefined {
47
+ if (!ws) {
48
+ return undefined;
49
+ }
50
+ if (ws.context.normalizedContextURL) {
51
+ return ws.context.normalizedContextURL;
52
+ }
53
53
 
54
- // fallback: we do not yet set normalizedContextURL on all workspaces, yet, let alone older existing workspaces
55
- let fallback: string | undefined = undefined;
56
- try {
57
- fallback = removePrefixes(ws.contextURL);
58
- } catch (err) {
59
- console.error(`unable to remove prefixes from contextURL: '${ws.contextURL}'`, err);
54
+ // fallback: we do not yet set normalizedContextURL on all workspaces, yet, let alone older existing workspaces
55
+ let fallback: string | undefined = undefined;
56
+ try {
57
+ fallback = removePrefixes(ws.contextURL);
58
+ } catch (err) {
59
+ console.error(`unable to remove prefixes from contextURL: '${ws.contextURL}'`, err);
60
+ }
61
+ return fallback;
60
62
  }
61
- return fallback;
62
- }
63
63
 
64
- /**
65
- * The field "contextUrl" might contain prefixes like:
66
- * - envvar1=value1/...
67
- * - prebuild/...
68
- * This is the analogon to the (Prefix)ContextParser structure in "server".
69
- */
70
- function removePrefixes(contextUrl: string | undefined): string | undefined {
71
- if (contextUrl === undefined) {
72
- return undefined;
73
- }
64
+ /**
65
+ * The field "contextUrl" might contain prefixes like:
66
+ * - envvar1=value1/...
67
+ * - prebuild/...
68
+ * This is the analogon to the (Prefix)ContextParser structure in "server".
69
+ */
70
+ function removePrefixes(contextUrl: string | undefined): string | undefined {
71
+ if (contextUrl === undefined) {
72
+ return undefined;
73
+ }
74
74
 
75
- const segments = contextUrl.split("/");
76
- if (segments.length === 1) {
77
- return segments[0]; // this might be something, we just try
78
- }
75
+ const segments = contextUrl.split("/");
76
+ if (segments.length === 1) {
77
+ return segments[0]; // this might be something, we just try
78
+ }
79
79
 
80
- const segmentsToURL = (offset: number): string => {
81
- let rest = segments.slice(offset).join("/");
82
- if (/^git@[^:\/]+:/.test(rest)) {
83
- rest = rest.replace(/^git@([^:\/]+):/, 'https://$1/');
84
- }
85
- if (!rest.startsWith("http")) {
86
- rest = 'https://' + rest;
87
- }
88
- return rest;
89
- };
80
+ const segmentsToURL = (offset: number): string => {
81
+ let rest = segments.slice(offset).join("/");
82
+ if (/^git@[^:\/]+:/.test(rest)) {
83
+ rest = rest.replace(/^git@([^:\/]+):/, "https://$1/");
84
+ }
85
+ if (!rest.startsWith("http")) {
86
+ rest = "https://" + rest;
87
+ }
88
+ return rest;
89
+ };
90
90
 
91
- const firstSegment = segments[0];
92
- if (firstSegment === PREBUILD_PREFIX ||
93
- firstSegment === INCREMENTAL_PREBUILD_PREFIX ||
94
- firstSegment === IMAGEBUILD_PREFIX ||
95
- firstSegment === SNAPSHOT_PREFIX ||
96
- firstSegment.startsWith(REFERRER_PREFIX)) {
97
- return segmentsToURL(1);
98
- }
91
+ const firstSegment = segments[0];
92
+ if (
93
+ firstSegment === PREBUILD_PREFIX ||
94
+ firstSegment === INCREMENTAL_PREBUILD_PREFIX ||
95
+ firstSegment === IMAGEBUILD_PREFIX ||
96
+ firstSegment === SNAPSHOT_PREFIX ||
97
+ firstSegment.startsWith(REFERRER_PREFIX)
98
+ ) {
99
+ return segmentsToURL(1);
100
+ }
99
101
 
100
- // check for env vars
101
- if (firstSegment.indexOf("=") !== -1) {
102
- return segmentsToURL(1);
103
- }
102
+ // check for env vars
103
+ if (firstSegment.indexOf("=") !== -1) {
104
+ return segmentsToURL(1);
105
+ }
104
106
 
105
- return segmentsToURL(0);
106
- }
107
- }
107
+ return segmentsToURL(0);
108
+ }
109
+ }