@gitpod/gitpod-protocol 0.1.5-pd-add-latest-jb.0 → 0.1.5-pd-metrics.33

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 (283) hide show
  1. package/data/gitpod-schema.json +163 -2
  2. package/lib/accounting-protocol.d.ts +10 -10
  3. package/lib/accounting-protocol.d.ts.map +1 -1
  4. package/lib/accounting-protocol.js +22 -31
  5. package/lib/accounting-protocol.js.map +1 -1
  6. package/lib/admin-protocol.d.ts +12 -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 +4 -5
  10. package/lib/analytics.d.ts.map +1 -1
  11. package/lib/analytics.js.map +1 -1
  12. package/lib/auth.d.ts.map +1 -1
  13. package/lib/context-url.d.ts +17 -5
  14. package/lib/context-url.d.ts.map +1 -1
  15. package/lib/context-url.js +57 -6
  16. package/lib/context-url.js.map +1 -1
  17. package/lib/context-url.spec.d.ts +2 -0
  18. package/lib/context-url.spec.d.ts.map +1 -1
  19. package/lib/context-url.spec.js +40 -4
  20. package/lib/context-url.spec.js.map +1 -1
  21. package/lib/email-protocol.d.ts +1 -1
  22. package/lib/email-protocol.d.ts.map +1 -1
  23. package/lib/email-protocol.js.map +1 -1
  24. package/lib/encryption/container-module.d.ts.map +1 -1
  25. package/lib/encryption/container-module.js +1 -1
  26. package/lib/encryption/container-module.js.map +1 -1
  27. package/lib/encryption/encryption-engine.d.ts.map +1 -1
  28. package/lib/encryption/encryption-engine.js +7 -7
  29. package/lib/encryption/encryption-engine.js.map +1 -1
  30. package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
  31. package/lib/encryption/encryption-engine.spec.js +2 -3
  32. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  33. package/lib/encryption/encryption-service.d.ts.map +1 -1
  34. package/lib/encryption/encryption-service.js +1 -1
  35. package/lib/encryption/encryption-service.js.map +1 -1
  36. package/lib/encryption/key-provider.d.ts.map +1 -1
  37. package/lib/encryption/key-provider.js +7 -9
  38. package/lib/encryption/key-provider.js.map +1 -1
  39. package/lib/env.d.ts +0 -5
  40. package/lib/env.d.ts.map +1 -1
  41. package/lib/env.js +1 -20
  42. package/lib/env.js.map +1 -1
  43. package/lib/gitpod-file-parser.d.ts.map +1 -1
  44. package/lib/gitpod-file-parser.js +6 -6
  45. package/lib/gitpod-file-parser.js.map +1 -1
  46. package/lib/gitpod-file-parser.spec.js +42 -39
  47. package/lib/gitpod-file-parser.spec.js.map +1 -1
  48. package/lib/gitpod-service.d.ts +35 -25
  49. package/lib/gitpod-service.d.ts.map +1 -1
  50. package/lib/gitpod-service.js +39 -32
  51. package/lib/gitpod-service.js.map +1 -1
  52. package/lib/headless-workspace-log.d.ts +1 -0
  53. package/lib/headless-workspace-log.d.ts.map +1 -1
  54. package/lib/headless-workspace-log.js +2 -1
  55. package/lib/headless-workspace-log.js.map +1 -1
  56. package/lib/ide-frontend-service.d.ts +1 -1
  57. package/lib/ide-protocol.d.ts +6 -6
  58. package/lib/ide-protocol.d.ts.map +1 -1
  59. package/lib/index.d.ts +16 -16
  60. package/lib/installation-admin-protocol.d.ts +15 -1
  61. package/lib/installation-admin-protocol.d.ts.map +1 -1
  62. package/lib/installation-admin-protocol.js +22 -0
  63. package/lib/installation-admin-protocol.js.map +1 -1
  64. package/lib/license-protocol.d.ts +7 -0
  65. package/lib/license-protocol.d.ts.map +1 -1
  66. package/lib/license-protocol.js.map +1 -1
  67. package/lib/messaging/browser/connection.d.ts +1 -1
  68. package/lib/messaging/browser/connection.d.ts.map +1 -1
  69. package/lib/messaging/browser/connection.js +19 -19
  70. package/lib/messaging/browser/connection.js.map +1 -1
  71. package/lib/messaging/browser/window-connection.d.ts +4 -4
  72. package/lib/messaging/browser/window-connection.d.ts.map +1 -1
  73. package/lib/messaging/browser/window-connection.js +9 -6
  74. package/lib/messaging/browser/window-connection.js.map +1 -1
  75. package/lib/messaging/client-call-metrics.d.ts +2 -2
  76. package/lib/messaging/client-call-metrics.d.ts.map +1 -1
  77. package/lib/messaging/client-call-metrics.js +20 -20
  78. package/lib/messaging/client-call-metrics.js.map +1 -1
  79. package/lib/messaging/error.d.ts +2 -0
  80. package/lib/messaging/error.d.ts.map +1 -1
  81. package/lib/messaging/error.js +4 -0
  82. package/lib/messaging/error.js.map +1 -1
  83. package/lib/messaging/handler.d.ts.map +1 -1
  84. package/lib/messaging/handler.js +1 -1
  85. package/lib/messaging/node/connection.js +8 -8
  86. package/lib/messaging/node/connection.js.map +1 -1
  87. package/lib/messaging/proxy-factory.d.ts +1 -1
  88. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  89. package/lib/messaging/proxy-factory.js +7 -9
  90. package/lib/messaging/proxy-factory.js.map +1 -1
  91. package/lib/payment-protocol.d.ts.map +1 -1
  92. package/lib/payment-protocol.js +1 -1
  93. package/lib/payment-protocol.js.map +1 -1
  94. package/lib/permission.d.ts +9 -3
  95. package/lib/permission.d.ts.map +1 -1
  96. package/lib/permission.js +34 -25
  97. package/lib/permission.js.map +1 -1
  98. package/lib/plans.d.ts +3 -3
  99. package/lib/plans.d.ts.map +1 -1
  100. package/lib/plans.js +206 -171
  101. package/lib/plans.js.map +1 -1
  102. package/lib/protocol.d.ts +78 -38
  103. package/lib/protocol.d.ts.map +1 -1
  104. package/lib/protocol.js +160 -88
  105. package/lib/protocol.js.map +1 -1
  106. package/lib/snapshot-url.spec.js.map +1 -1
  107. package/lib/team-subscription-protocol.d.ts +5 -3
  108. package/lib/team-subscription-protocol.d.ts.map +1 -1
  109. package/lib/team-subscription-protocol.js +4 -4
  110. package/lib/team-subscription-protocol.js.map +1 -1
  111. package/lib/teams-projects-protocol.d.ts +10 -3
  112. package/lib/teams-projects-protocol.d.ts.map +1 -1
  113. package/lib/teams-projects-protocol.js +8 -1
  114. package/lib/teams-projects-protocol.js.map +1 -1
  115. package/lib/typings/globals.d.ts +2 -2
  116. package/lib/typings/globals.d.ts.map +1 -1
  117. package/lib/util/analytics.d.ts.map +1 -1
  118. package/lib/util/analytics.js +12 -3
  119. package/lib/util/analytics.js.map +1 -1
  120. package/lib/util/async-iterator.d.ts.map +1 -1
  121. package/lib/util/async-iterator.js +3 -3
  122. package/lib/util/async-iterator.js.map +1 -1
  123. package/lib/util/cancelable.js.map +1 -1
  124. package/lib/util/date-time.js +6 -6
  125. package/lib/util/date-time.js.map +1 -1
  126. package/lib/util/deferred.js.map +1 -1
  127. package/lib/util/disposable.d.ts.map +1 -1
  128. package/lib/util/disposable.js +2 -2
  129. package/lib/util/disposable.js.map +1 -1
  130. package/lib/util/event.d.ts.map +1 -1
  131. package/lib/util/event.js +5 -3
  132. package/lib/util/event.js.map +1 -1
  133. package/lib/util/garbage-collected-cache.d.ts.map +1 -1
  134. package/lib/util/garbage-collected-cache.js +1 -1
  135. package/lib/util/garbage-collected-cache.js.map +1 -1
  136. package/lib/util/generate-workspace-id.d.ts +5 -0
  137. package/lib/util/generate-workspace-id.d.ts.map +1 -1
  138. package/lib/util/generate-workspace-id.js +446 -442
  139. package/lib/util/generate-workspace-id.js.map +1 -1
  140. package/lib/util/generate-workspace-id.spec.js +18 -7
  141. package/lib/util/generate-workspace-id.spec.js.map +1 -1
  142. package/lib/util/gitpod-cookie.d.ts +1 -1
  143. package/lib/util/gitpod-cookie.d.ts.map +1 -1
  144. package/lib/util/gitpod-cookie.js +0 -3
  145. package/lib/util/gitpod-cookie.js.map +1 -1
  146. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  147. package/lib/util/gitpod-host-url.js +31 -29
  148. package/lib/util/gitpod-host-url.js.map +1 -1
  149. package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
  150. package/lib/util/gitpod-host-url.spec.js +15 -5
  151. package/lib/util/gitpod-host-url.spec.js.map +1 -1
  152. package/lib/util/grpc.d.ts.map +1 -1
  153. package/lib/util/grpc.js.map +1 -1
  154. package/lib/util/jaeger-client-types.d.ts.map +1 -1
  155. package/lib/util/logging.d.ts +1 -1
  156. package/lib/util/logging.d.ts.map +1 -1
  157. package/lib/util/logging.js +23 -24
  158. package/lib/util/logging.js.map +1 -1
  159. package/lib/util/make-link.js +5 -5
  160. package/lib/util/make-link.js.map +1 -1
  161. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  162. package/lib/util/parse-workspace-id.js +1 -2
  163. package/lib/util/parse-workspace-id.js.map +1 -1
  164. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  165. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  166. package/lib/util/queue.spec.js +9 -6
  167. package/lib/util/queue.spec.js.map +1 -1
  168. package/lib/util/semaphore.d.ts.map +1 -1
  169. package/lib/util/semaphore.js.map +1 -1
  170. package/lib/util/skip-if.d.ts.map +1 -1
  171. package/lib/util/skip-if.js.map +1 -1
  172. package/lib/util/timeutil.d.ts.map +1 -1
  173. package/lib/util/timeutil.js +2 -2
  174. package/lib/util/timeutil.js.map +1 -1
  175. package/lib/util/timeutil.spec.d.ts.map +1 -1
  176. package/lib/util/timeutil.spec.js.map +1 -1
  177. package/lib/util/tracing.d.ts +8 -8
  178. package/lib/util/tracing.d.ts.map +1 -1
  179. package/lib/util/tracing.js +19 -20
  180. package/lib/util/tracing.js.map +1 -1
  181. package/lib/util/tracing.spec.js +3 -3
  182. package/lib/util/tracing.spec.js.map +1 -1
  183. package/lib/util/workspace-port-authentication.d.ts +7 -7
  184. package/lib/util/workspace-port-authentication.d.ts.map +1 -1
  185. package/lib/util/workspace-port-authentication.js +8 -11
  186. package/lib/util/workspace-port-authentication.js.map +1 -1
  187. package/lib/workspace-cluster.d.ts +10 -8
  188. package/lib/workspace-cluster.d.ts.map +1 -1
  189. package/lib/workspace-cluster.js +16 -1
  190. package/lib/workspace-cluster.js.map +1 -1
  191. package/lib/workspace-instance.d.ts +27 -3
  192. package/lib/workspace-instance.d.ts.map +1 -1
  193. package/lib/wsready.d.ts +1 -1
  194. package/lib/wsready.d.ts.map +1 -1
  195. package/lib/wsready.js +2 -2
  196. package/package.json +2 -2
  197. package/pkg-yarn.lock +2 -2
  198. package/provenance-bundle.jsonl +1 -1
  199. package/src/accounting-protocol.ts +53 -51
  200. package/src/admin-protocol.ts +35 -18
  201. package/src/analytics.ts +26 -28
  202. package/src/auth.ts +2 -2
  203. package/src/context-url.spec.ts +37 -9
  204. package/src/context-url.ts +96 -40
  205. package/src/email-protocol.ts +5 -6
  206. package/src/encryption/container-module.ts +2 -3
  207. package/src/encryption/encryption-engine.spec.ts +9 -8
  208. package/src/encryption/encryption-engine.ts +14 -14
  209. package/src/encryption/encryption-service.ts +4 -5
  210. package/src/encryption/key-provider.ts +16 -19
  211. package/src/env.ts +0 -22
  212. package/src/gitpod-file-parser.spec.ts +55 -61
  213. package/src/gitpod-file-parser.ts +16 -17
  214. package/src/gitpod-service.ts +151 -107
  215. package/src/headless-workspace-log.ts +6 -4
  216. package/src/ide-frontend-service.ts +2 -2
  217. package/src/ide-protocol.ts +8 -8
  218. package/src/index.ts +16 -16
  219. package/src/installation-admin-protocol.ts +31 -3
  220. package/src/license-protocol.ts +12 -6
  221. package/src/messaging/browser/connection.ts +45 -47
  222. package/src/messaging/browser/window-connection.ts +39 -29
  223. package/src/messaging/client-call-metrics.ts +70 -71
  224. package/src/messaging/error.ts +7 -3
  225. package/src/messaging/handler.ts +6 -6
  226. package/src/messaging/node/connection.ts +8 -8
  227. package/src/messaging/proxy-factory.ts +23 -30
  228. package/src/oss-allowlist.ts +3 -3
  229. package/src/payment-protocol.ts +2 -2
  230. package/src/permission.ts +40 -32
  231. package/src/plans.ts +236 -189
  232. package/src/protocol.ts +333 -242
  233. package/src/snapshot-url.spec.ts +9 -7
  234. package/src/team-subscription-protocol.ts +33 -23
  235. package/src/teams-projects-protocol.ts +20 -9
  236. package/src/typings/globals.ts +4 -4
  237. package/src/util/analytics.ts +46 -24
  238. package/src/util/async-iterator.ts +4 -5
  239. package/src/util/cancelable.ts +3 -3
  240. package/src/util/date-time.ts +8 -8
  241. package/src/util/deferred.ts +6 -6
  242. package/src/util/disposable.ts +3 -6
  243. package/src/util/event.ts +9 -11
  244. package/src/util/garbage-collected-cache.ts +3 -6
  245. package/src/util/generate-workspace-id.spec.ts +26 -16
  246. package/src/util/generate-workspace-id.ts +460 -454
  247. package/src/util/gitpod-cookie.ts +8 -9
  248. package/src/util/gitpod-host-url.spec.ts +40 -13
  249. package/src/util/gitpod-host-url.ts +37 -34
  250. package/src/util/grpc.ts +1 -1
  251. package/src/util/jaeger-client-types.ts +2 -2
  252. package/src/util/logging.ts +49 -40
  253. package/src/util/make-link.ts +6 -7
  254. package/src/util/parse-workspace-id.spec.ts +17 -8
  255. package/src/util/parse-workspace-id.ts +5 -6
  256. package/src/util/queue.spec.ts +27 -25
  257. package/src/util/repeat.ts +1 -1
  258. package/src/util/semaphore.ts +4 -6
  259. package/src/util/skip-if.ts +9 -6
  260. package/src/util/timeutil.spec.ts +14 -15
  261. package/src/util/timeutil.ts +15 -11
  262. package/src/util/tracing.spec.ts +28 -23
  263. package/src/util/tracing.ts +58 -54
  264. package/src/util/workspace-port-authentication.ts +10 -13
  265. package/src/workspace-cluster.ts +26 -15
  266. package/src/workspace-instance.ts +56 -20
  267. package/src/wsready.ts +3 -3
  268. package/data/builtin-theia-plugins.json +0 -372
  269. package/lib/messaging/connection-error-handler.d.ts +0 -27
  270. package/lib/messaging/connection-error-handler.d.ts.map +0 -1
  271. package/lib/messaging/connection-error-handler.js +0 -34
  272. package/lib/messaging/connection-error-handler.js.map +0 -1
  273. package/lib/theia-plugins.d.ts +0 -11
  274. package/lib/theia-plugins.d.ts.map +0 -1
  275. package/lib/theia-plugins.js +0 -8
  276. package/lib/theia-plugins.js.map +0 -1
  277. package/lib/util/safe-promise.d.ts +0 -11
  278. package/lib/util/safe-promise.d.ts.map +0 -1
  279. package/lib/util/safe-promise.js +0 -31
  280. package/lib/util/safe-promise.js.map +0 -1
  281. package/src/messaging/connection-error-handler.ts +0 -62
  282. package/src/theia-plugins.ts +0 -11
  283. package/src/util/safe-promise.ts +0 -26
@@ -5,31 +5,52 @@
5
5
  */
6
6
 
7
7
  import {
8
- User, WorkspaceInfo, WorkspaceCreationResult, WorkspaceInstanceUser,
9
- WhitelistedRepository, WorkspaceImageBuild, AuthProviderInfo, CreateWorkspaceMode,
10
- Token, UserEnvVarValue, ResolvePluginsParams, PreparePluginUploadParams, Terms,
11
- ResolvedPlugins, Configuration, InstallPluginsParams, UninstallPluginParams, UserInfo, GitpodTokenType,
12
- GitpodToken, AuthProviderEntry, GuessGitTokenScopesParams, GuessedGitTokenScopes, ProjectEnvVar
13
- } from './protocol';
8
+ User,
9
+ WorkspaceInfo,
10
+ WorkspaceCreationResult,
11
+ WorkspaceInstanceUser,
12
+ WhitelistedRepository,
13
+ WorkspaceImageBuild,
14
+ AuthProviderInfo,
15
+ CreateWorkspaceMode,
16
+ Token,
17
+ UserEnvVarValue,
18
+ Terms,
19
+ Configuration,
20
+ UserInfo,
21
+ GitpodTokenType,
22
+ GitpodToken,
23
+ AuthProviderEntry,
24
+ GuessGitTokenScopesParams,
25
+ GuessedGitTokenScopes,
26
+ ProjectEnvVar,
27
+ } from "./protocol";
14
28
  import {
15
- Team, TeamMemberInfo,
16
- TeamMembershipInvite, Project, TeamMemberRole, PrebuildWithStatus, StartPrebuildResult, PartialProject
17
- } from './teams-projects-protocol';
18
- import { JsonRpcProxy, JsonRpcServer } from './messaging/proxy-factory';
19
- import { Disposable, CancellationTokenSource } from 'vscode-jsonrpc';
20
- import { HeadlessLogUrls } from './headless-workspace-log';
21
- import { WorkspaceInstance, WorkspaceInstancePort, WorkspaceInstancePhase } from './workspace-instance';
22
- import { AdminServer } from './admin-protocol';
23
- import { GitpodHostUrl } from './util/gitpod-host-url';
24
- import { WebSocketConnectionProvider } from './messaging/browser/connection';
25
- import { PermissionName } from './permission';
26
- import { LicenseService } from './license-protocol';
27
- import { Emitter } from './util/event';
28
- import { AccountStatement, CreditAlert } from './accounting-protocol';
29
- import { GithubUpgradeURL, PlanCoupon } from './payment-protocol';
30
- import { TeamSubscription, TeamSubscriptionSlot, TeamSubscriptionSlotResolved } from './team-subscription-protocol';
31
- import { RemotePageMessage, RemoteTrackMessage, RemoteIdentifyMessage } from './analytics';
32
- import { IDEServer } from './ide-protocol';
29
+ Team,
30
+ TeamMemberInfo,
31
+ TeamMembershipInvite,
32
+ Project,
33
+ TeamMemberRole,
34
+ PrebuildWithStatus,
35
+ StartPrebuildResult,
36
+ PartialProject,
37
+ } from "./teams-projects-protocol";
38
+ import { JsonRpcProxy, JsonRpcServer } from "./messaging/proxy-factory";
39
+ import { Disposable, CancellationTokenSource } from "vscode-jsonrpc";
40
+ import { HeadlessLogUrls } from "./headless-workspace-log";
41
+ import { WorkspaceInstance, WorkspaceInstancePort, WorkspaceInstancePhase } from "./workspace-instance";
42
+ import { AdminServer } from "./admin-protocol";
43
+ import { GitpodHostUrl } from "./util/gitpod-host-url";
44
+ import { WebSocketConnectionProvider } from "./messaging/browser/connection";
45
+ import { PermissionName } from "./permission";
46
+ import { LicenseService } from "./license-protocol";
47
+ import { Emitter } from "./util/event";
48
+ import { AccountStatement, CreditAlert } from "./accounting-protocol";
49
+ import { GithubUpgradeURL, PlanCoupon } from "./payment-protocol";
50
+ import { TeamSubscription, TeamSubscriptionSlot, TeamSubscriptionSlotResolved } from "./team-subscription-protocol";
51
+ import { RemotePageMessage, RemoteTrackMessage, RemoteIdentifyMessage } from "./analytics";
52
+ import { IDEServer } from "./ide-protocol";
53
+ import { InstallationAdminSettings, TelemetryData } from "./installation-admin-protocol";
33
54
 
34
55
  export interface GitpodClient {
35
56
  onInstanceUpdate(instance: WorkspaceInstance): void;
@@ -45,7 +66,7 @@ export interface GitpodClient {
45
66
  //#endregion
46
67
  }
47
68
 
48
- export const GitpodServer = Symbol('GitpodServer');
69
+ export const GitpodServer = Symbol("GitpodServer");
49
70
  export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer, LicenseService, IDEServer {
50
71
  // User related API
51
72
  getLoggedInUser(): Promise<User>;
@@ -71,6 +92,7 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
71
92
  getWorkspaceOwner(workspaceId: string): Promise<UserInfo | undefined>;
72
93
  getWorkspaceUsers(workspaceId: string): Promise<WorkspaceInstanceUser[]>;
73
94
  getFeaturedRepositories(): Promise<WhitelistedRepository[]>;
95
+ getSuggestedContextURLs(): Promise<string[]>;
74
96
  /**
75
97
  * **Security:**
76
98
  * Sensitive information like an owner token is erased, since it allows access for all team members.
@@ -131,6 +153,11 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
131
153
  resetGenericInvite(inviteId: string): Promise<TeamMembershipInvite>;
132
154
  deleteTeam(teamId: string, userId: string): Promise<void>;
133
155
 
156
+ // Admin Settings
157
+ adminGetSettings(): Promise<InstallationAdminSettings>;
158
+ adminUpdateSettings(settings: InstallationAdminSettings): Promise<void>;
159
+ adminGetTelemetryData(): Promise<TelemetryData>;
160
+
134
161
  // Projects
135
162
  getProviderRepositoriesForUser(params: GetProviderRepositoriesParams): Promise<ProviderRepository[]>;
136
163
  createProject(params: CreateProjectParams): Promise<Project>;
@@ -152,8 +179,8 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
152
179
  deleteProjectEnvironmentVariable(variableId: string): Promise<void>;
153
180
 
154
181
  // content service
155
- getContentBlobUploadUrl(name: string): Promise<string>
156
- getContentBlobDownloadUrl(name: string): Promise<string>
182
+ getContentBlobUploadUrl(name: string): Promise<string>;
183
+ getContentBlobDownloadUrl(name: string): Promise<string>;
157
184
 
158
185
  // Gitpod token
159
186
  getGitpodTokens(): Promise<GitpodToken[]>;
@@ -162,6 +189,7 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
162
189
 
163
190
  // misc
164
191
  sendFeedback(feedback: string): Promise<string | undefined>;
192
+ isGitHubAppEnabled(): Promise<boolean>;
165
193
  registerGithubApp(installationId: string): Promise<void>;
166
194
 
167
195
  /**
@@ -190,15 +218,6 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
190
218
  */
191
219
  getLayout(workspaceId: string): Promise<string | undefined>;
192
220
 
193
- /**
194
- * @param params
195
- * @returns promise resolves to an URL to be used for the upload
196
- */
197
- preparePluginUpload(params: PreparePluginUploadParams): Promise<string>
198
- resolvePlugins(workspaceId: string, params: ResolvePluginsParams): Promise<ResolvedPlugins>;
199
- installUserPlugins(params: InstallPluginsParams): Promise<boolean>;
200
- uninstallUserPlugin(params: UninstallPluginParams): Promise<boolean>;
201
-
202
221
  guessGitTokenScopes(params: GuessGitTokenScopesParams): Promise<GuessedGitTokenScopes>;
203
222
 
204
223
  /**
@@ -230,9 +249,13 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
230
249
 
231
250
  tsGet(): Promise<TeamSubscription[]>;
232
251
  tsGetSlots(): Promise<TeamSubscriptionSlotResolved[]>;
233
- tsGetUnassignedSlot(teamSubscriptionId: string): Promise<TeamSubscriptionSlot | undefined>
252
+ tsGetUnassignedSlot(teamSubscriptionId: string): Promise<TeamSubscriptionSlot | undefined>;
234
253
  tsAddSlots(teamSubscriptionId: string, quantity: number): Promise<void>;
235
- tsAssignSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string, identityStr: string | undefined): Promise<void>
254
+ tsAssignSlot(
255
+ teamSubscriptionId: string,
256
+ teamSubscriptionSlotId: string,
257
+ identityStr: string | undefined,
258
+ ): Promise<void>;
236
259
  tsReassignSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string, newIdentityStr: string): Promise<void>;
237
260
  tsDeactivateSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string): Promise<void>;
238
261
  tsReactivateSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string): Promise<void>;
@@ -247,6 +270,16 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
247
270
  identifyUser(event: RemoteIdentifyMessage): Promise<void>;
248
271
  }
249
272
 
273
+ export interface RateLimiterError {
274
+ method?: string;
275
+
276
+ /**
277
+ * Retry after this many seconds, earliest.
278
+ * cmp.: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After
279
+ */
280
+ retryAfter: number;
281
+ }
282
+
250
283
  export interface CreateProjectParams {
251
284
  name: string;
252
285
  slug?: string;
@@ -275,7 +308,7 @@ export interface ProviderRepository {
275
308
  account: string;
276
309
  accountAvatarUrl: string;
277
310
  cloneUrl: string;
278
- updatedAt: string;
311
+ updatedAt?: string;
279
312
  installationId?: number;
280
313
  installationUpdatedAt?: string;
281
314
 
@@ -289,15 +322,28 @@ export interface ClientHeaderFields {
289
322
  clientRegion?: string;
290
323
  }
291
324
 
292
- export const WorkspaceTimeoutValues = ["30m", "60m", "180m"] as const;
293
-
294
- export const createServiceMock = function <C extends GitpodClient, S extends GitpodServer>(methods: Partial<JsonRpcProxy<S>>): GitpodServiceImpl<C, S> {
325
+ export const WORKSPACE_TIMEOUT_DEFAULT_SHORT = "short";
326
+ export const WORKSPACE_TIMEOUT_DEFAULT_LONG = "long";
327
+ export const WORKSPACE_TIMEOUT_EXTENDED = "extended";
328
+ export const WORKSPACE_TIMEOUT_EXTENDED_ALT = "180m"; // for backwards compatibility since the IDE uses this
329
+ export const WorkspaceTimeoutValues = [
330
+ WORKSPACE_TIMEOUT_DEFAULT_SHORT,
331
+ WORKSPACE_TIMEOUT_DEFAULT_LONG,
332
+ WORKSPACE_TIMEOUT_EXTENDED,
333
+ WORKSPACE_TIMEOUT_EXTENDED_ALT,
334
+ ] as const;
335
+
336
+ export const createServiceMock = function <C extends GitpodClient, S extends GitpodServer>(
337
+ methods: Partial<JsonRpcProxy<S>>,
338
+ ): GitpodServiceImpl<C, S> {
295
339
  return new GitpodServiceImpl<C, S>(createServerMock(methods));
296
- }
340
+ };
297
341
 
298
- export const createServerMock = function <C extends GitpodClient, S extends GitpodServer>(methods: Partial<JsonRpcProxy<S>>): JsonRpcProxy<S> {
299
- methods.setClient = methods.setClient || (() => { });
300
- methods.dispose = methods.dispose || (() => { });
342
+ export const createServerMock = function <C extends GitpodClient, S extends GitpodServer>(
343
+ methods: Partial<JsonRpcProxy<S>>,
344
+ ): JsonRpcProxy<S> {
345
+ methods.setClient = methods.setClient || (() => {});
346
+ methods.dispose = methods.dispose || (() => {});
301
347
  return new Proxy<JsonRpcProxy<S>>(methods as any as JsonRpcProxy<S>, {
302
348
  // @ts-ignore
303
349
  get: (target: S, property: keyof S) => {
@@ -306,25 +352,25 @@ export const createServerMock = function <C extends GitpodClient, S extends Gitp
306
352
  throw new Error(`Method ${property} not implemented`);
307
353
  }
308
354
  return result;
309
- }
355
+ },
310
356
  });
311
- }
357
+ };
312
358
 
313
359
  type WorkspaceTimeoutDurationTuple = typeof WorkspaceTimeoutValues;
314
360
  export type WorkspaceTimeoutDuration = WorkspaceTimeoutDurationTuple[number];
315
361
 
316
362
  export interface SetWorkspaceTimeoutResult {
317
- resetTimeoutOnWorkspaces: string[]
363
+ resetTimeoutOnWorkspaces: string[];
318
364
  }
319
365
 
320
366
  export interface GetWorkspaceTimeoutResult {
321
- duration: WorkspaceTimeoutDuration
322
- canChange: boolean
367
+ duration: WorkspaceTimeoutDuration;
368
+ canChange: boolean;
323
369
  }
324
370
 
325
371
  export interface StartWorkspaceResult {
326
- instanceID: string
327
- workspaceURL?: string
372
+ instanceID: string;
373
+ workspaceURL?: string;
328
374
  }
329
375
 
330
376
  export namespace GitpodServer {
@@ -368,23 +414,23 @@ export namespace GitpodServer {
368
414
  readonly roundTripTime?: number;
369
415
  }
370
416
  export interface UpdateOwnAuthProviderParams {
371
- readonly entry: AuthProviderEntry.UpdateEntry | AuthProviderEntry.NewEntry
417
+ readonly entry: AuthProviderEntry.UpdateEntry | AuthProviderEntry.NewEntry;
372
418
  }
373
419
  export interface DeleteOwnAuthProviderParams {
374
- readonly id: string
420
+ readonly id: string;
375
421
  }
376
422
  export type AdmissionLevel = "owner" | "everyone";
377
423
  export type PinAction = "pin" | "unpin" | "toggle";
378
424
  export interface GenerateNewGitpodTokenOptions {
379
- name?: string
380
- type: GitpodTokenType
381
- scopes?: string[]
425
+ name?: string;
426
+ type: GitpodTokenType;
427
+ scopes?: string[];
382
428
  }
383
429
  }
384
430
 
385
- export const GitpodServerPath = '/gitpod';
431
+ export const GitpodServerPath = "/gitpod";
386
432
 
387
- export const GitpodServerProxy = Symbol('GitpodServerProxy');
433
+ export const GitpodServerProxy = Symbol("GitpodServerProxy");
388
434
  export type GitpodServerProxy<S extends GitpodServer> = JsonRpcProxy<S>;
389
435
 
390
436
  export class GitpodCompositeClient<Client extends GitpodClient> implements GitpodClient {
@@ -398,8 +444,8 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
398
444
  if (index > -1) {
399
445
  this.clients.splice(index, 1);
400
446
  }
401
- }
402
- }
447
+ },
448
+ };
403
449
  }
404
450
 
405
451
  onInstanceUpdate(instance: WorkspaceInstance): void {
@@ -408,7 +454,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
408
454
  try {
409
455
  client.onInstanceUpdate(instance);
410
456
  } catch (error) {
411
- console.error(error)
457
+ console.error(error);
412
458
  }
413
459
  }
414
460
  }
@@ -420,19 +466,22 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
420
466
  try {
421
467
  client.onPrebuildUpdate(update);
422
468
  } catch (error) {
423
- console.error(error)
469
+ console.error(error);
424
470
  }
425
471
  }
426
472
  }
427
473
  }
428
474
 
429
- onWorkspaceImageBuildLogs(info: WorkspaceImageBuild.StateInfo, content: WorkspaceImageBuild.LogContent | undefined): void {
475
+ onWorkspaceImageBuildLogs(
476
+ info: WorkspaceImageBuild.StateInfo,
477
+ content: WorkspaceImageBuild.LogContent | undefined,
478
+ ): void {
430
479
  for (const client of this.clients) {
431
480
  if (client.onWorkspaceImageBuildLogs) {
432
481
  try {
433
482
  client.onWorkspaceImageBuildLogs(info, content);
434
483
  } catch (error) {
435
- console.error(error)
484
+ console.error(error);
436
485
  }
437
486
  }
438
487
  }
@@ -444,7 +493,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
444
493
  try {
445
494
  client.notifyDidOpenConnection();
446
495
  } catch (error) {
447
- console.error(error)
496
+ console.error(error);
448
497
  }
449
498
  }
450
499
  }
@@ -456,7 +505,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
456
505
  try {
457
506
  client.notifyDidCloseConnection();
458
507
  } catch (error) {
459
- console.error(error)
508
+ console.error(error);
460
509
  }
461
510
  }
462
511
  }
@@ -468,64 +517,61 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
468
517
  try {
469
518
  client.onCreditAlert(creditAlert);
470
519
  } catch (error) {
471
- console.error(error)
520
+ console.error(error);
472
521
  }
473
522
  }
474
523
  }
475
524
  }
476
-
477
525
  }
478
526
 
479
527
  export type GitpodService = GitpodServiceImpl<GitpodClient, GitpodServer>;
480
528
 
481
- const hasWindow = (typeof window !== 'undefined');
529
+ const hasWindow = typeof window !== "undefined";
482
530
  const phasesOrder: Record<WorkspaceInstancePhase, number> = {
483
531
  unknown: 0,
484
532
  preparing: 1,
485
- pending: 2,
486
- creating: 3,
487
- initializing: 4,
488
- running: 5,
489
- interrupted: 6,
490
- stopping: 7,
491
- stopped: 8
533
+ building: 2,
534
+ pending: 3,
535
+ creating: 4,
536
+ initializing: 5,
537
+ running: 6,
538
+ interrupted: 7,
539
+ stopping: 8,
540
+ stopped: 9,
492
541
  };
493
542
  export class WorkspaceInstanceUpdateListener {
494
543
  private readonly onDidChangeEmitter = new Emitter<void>();
495
544
  readonly onDidChange = this.onDidChangeEmitter.event;
496
545
 
497
- private source: 'sync' | 'update' = 'sync';
546
+ private source: "sync" | "update" = "sync";
498
547
 
499
548
  get info(): WorkspaceInfo {
500
549
  return this._info;
501
550
  }
502
551
 
503
- constructor(
504
- private readonly service: GitpodService,
505
- private _info: WorkspaceInfo
506
- ) {
552
+ constructor(private readonly service: GitpodService, private _info: WorkspaceInfo) {
507
553
  service.registerClient({
508
- onInstanceUpdate: instance => {
554
+ onInstanceUpdate: (instance) => {
509
555
  if (this.isOutOfOrder(instance)) {
510
556
  return;
511
557
  }
512
558
  this.cancelSync();
513
559
  this._info.latestInstance = instance;
514
- this.source = 'update';
560
+ this.source = "update";
515
561
  this.onDidChangeEmitter.fire(undefined);
516
562
  },
517
563
  notifyDidOpenConnection: () => {
518
564
  this.sync();
519
- }
565
+ },
520
566
  });
521
567
  if (hasWindow) {
522
568
  // learn about page lifecycle here: https://developers.google.com/web/updates/2018/07/page-lifecycle-api
523
- window.document.addEventListener('visibilitychange', async () => {
524
- if (window.document.visibilityState === 'visible') {
569
+ window.document.addEventListener("visibilitychange", async () => {
570
+ if (window.document.visibilityState === "visible") {
525
571
  this.sync();
526
572
  }
527
573
  });
528
- window.addEventListener('pageshow', e => {
574
+ window.addEventListener("pageshow", (e) => {
529
575
  if (e.persisted) {
530
576
  this.sync();
531
577
  }
@@ -553,12 +599,12 @@ export class WorkspaceInstanceUpdateListener {
553
599
  return;
554
600
  }
555
601
  this._info = info;
556
- this.source = 'sync';
602
+ this.source = "sync";
557
603
  this.onDidChangeEmitter.fire(undefined);
558
604
  } catch (e) {
559
- console.error('failed to sync workspace instance:', e)
605
+ console.error("failed to sync workspace instance:", e);
560
606
  }
561
- })
607
+ });
562
608
  }
563
609
  private cancelSync(): void {
564
610
  if (this.syncTokenSource) {
@@ -575,7 +621,7 @@ export class WorkspaceInstanceUpdateListener {
575
621
  if (instance.workspaceId !== this._info.workspace.id) {
576
622
  return true;
577
623
  }
578
- if (this.source === 'update') {
624
+ if (this.source === "update") {
579
625
  return false;
580
626
  }
581
627
  if (instance.id !== this.info.latestInstance?.id) {
@@ -583,15 +629,13 @@ export class WorkspaceInstanceUpdateListener {
583
629
  }
584
630
  return phasesOrder[instance.status.phase] < phasesOrder[this.info.latestInstance.status.phase];
585
631
  }
586
-
587
632
  }
588
633
 
589
634
  export interface GitpodServiceOptions {
590
- onReconnect?: () => (void | Promise<void>)
635
+ onReconnect?: () => void | Promise<void>;
591
636
  }
592
637
 
593
638
  export class GitpodServiceImpl<Client extends GitpodClient, Server extends GitpodServer> {
594
-
595
639
  private readonly compositeClient = new GitpodCompositeClient<Client>();
596
640
 
597
641
  constructor(public readonly server: JsonRpcProxy<Server>, private options?: GitpodServiceOptions) {
@@ -606,7 +650,8 @@ export class GitpodServiceImpl<Client extends GitpodClient, Server extends Gitpo
606
650
 
607
651
  private readonly instanceListeners = new Map<string, Promise<WorkspaceInstanceUpdateListener>>();
608
652
  listenToInstance(workspaceId: string): Promise<WorkspaceInstanceUpdateListener> {
609
- const listener = this.instanceListeners.get(workspaceId) ||
653
+ const listener =
654
+ this.instanceListeners.get(workspaceId) ||
610
655
  (async () => {
611
656
  const info = await this.server.getWorkspace(workspaceId);
612
657
  return new WorkspaceInstanceUpdateListener(this, info);
@@ -622,26 +667,25 @@ export class GitpodServiceImpl<Client extends GitpodClient, Server extends Gitpo
622
667
  }
623
668
  }
624
669
 
625
- export function createGitpodService<C extends GitpodClient, S extends GitpodServer>(serverUrl: string | Promise<string>) {
670
+ export function createGitpodService<C extends GitpodClient, S extends GitpodServer>(
671
+ serverUrl: string | Promise<string>,
672
+ ) {
626
673
  const toWsUrl = (serverUrl: string) => {
627
- return new GitpodHostUrl(serverUrl)
628
- .asWebsocket()
629
- .withApi({ pathname: GitpodServerPath })
630
- .toString();
674
+ return new GitpodHostUrl(serverUrl).asWebsocket().withApi({ pathname: GitpodServerPath }).toString();
631
675
  };
632
676
  let url: string | Promise<string>;
633
677
  if (typeof serverUrl === "string") {
634
678
  url = toWsUrl(serverUrl);
635
679
  } else {
636
- url = serverUrl.then(url => toWsUrl(url));
680
+ url = serverUrl.then((url) => toWsUrl(url));
637
681
  }
638
682
 
639
683
  const connectionProvider = new WebSocketConnectionProvider();
640
- let onReconnect = () => { };
684
+ let onReconnect = () => {};
641
685
  const gitpodServer = connectionProvider.createProxy<S>(url, undefined, {
642
- onListening: socket => {
686
+ onListening: (socket) => {
643
687
  onReconnect = () => socket.reconnect();
644
- }
688
+ },
645
689
  });
646
690
  return new GitpodServiceImpl<C, S>(gitpodServer, { onReconnect });
647
- }
691
+ }
@@ -4,21 +4,23 @@
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
-
8
7
  export enum HeadlessWorkspaceEventType {
9
8
  LogOutput = "log-output",
10
9
  FinishedSuccessfully = "finish-success",
11
10
  FinishedButFailed = "finish-fail",
12
11
  AbortedTimedOut = "aborted-timeout",
13
12
  Aborted = "aborted",
14
- Started = "started"
13
+ Failed = "failed",
14
+ Started = "started",
15
15
  }
16
16
  export namespace HeadlessWorkspaceEventType {
17
17
  export function isRunning(t: HeadlessWorkspaceEventType) {
18
18
  return t === HeadlessWorkspaceEventType.LogOutput;
19
19
  }
20
20
  export function didFinish(t: HeadlessWorkspaceEventType) {
21
- return t === HeadlessWorkspaceEventType.FinishedButFailed || t === HeadlessWorkspaceEventType.FinishedSuccessfully;
21
+ return (
22
+ t === HeadlessWorkspaceEventType.FinishedButFailed || t === HeadlessWorkspaceEventType.FinishedSuccessfully
23
+ );
22
24
  }
23
25
  }
24
26
 
@@ -35,4 +37,4 @@ export interface HeadlessLogUrls {
35
37
 
36
38
  /** cmp. @const HEADLESS_LOG_STREAM_STATUS_CODE_REGEX */
37
39
  export const HEADLESS_LOG_STREAM_STATUS_CODE = "X-LogStream-StatusCode";
38
- export const HEADLESS_LOG_STREAM_STATUS_CODE_REGEX = /X-LogStream-StatusCode: ([0-9]{3})/;
40
+ export const HEADLESS_LOG_STREAM_STATUS_CODE_REGEX = /X-LogStream-StatusCode: ([0-9]{3})/;
@@ -7,7 +7,7 @@
7
7
  import { Event } from "./util/event";
8
8
  import { Disposable } from "./util/disposable";
9
9
 
10
- export type IDEFrontendState = 'init' | 'ready' | 'terminated';
10
+ export type IDEFrontendState = "init" | "ready" | "terminated";
11
11
 
12
12
  export interface IDEFrontendService {
13
13
  readonly state: IDEFrontendState;
@@ -25,4 +25,4 @@ export interface IDEFrontendService {
25
25
  * confirmation dialogs for stopped workspaces.
26
26
  */
27
27
  start(): Disposable;
28
- }
28
+ }
@@ -45,12 +45,12 @@ export interface IDEClient {
45
45
  /**
46
46
  * Desktop IDEs supported by the client.
47
47
  */
48
- desktopIDEs?: string[]
48
+ desktopIDEs?: string[];
49
49
 
50
50
  /**
51
51
  * Steps to install the client on user machine.
52
52
  */
53
- installationSteps?: string[]
53
+ installationSteps?: string[];
54
54
  }
55
55
 
56
56
  export interface IDEOption {
@@ -67,12 +67,12 @@ export interface IDEOption {
67
67
  /**
68
68
  * The type of the IDE, currently 'browser' or 'desktop'.
69
69
  */
70
- type: 'browser' | 'desktop';
70
+ type: "browser" | "desktop";
71
71
 
72
72
  /**
73
- * The logo for the IDE. That could be a key in (see
74
- * components/dashboard/src/images/ideLogos.ts) or a URL.
75
- */
73
+ * The logo for the IDE. That could be a key in (see
74
+ * components/dashboard/src/images/ideLogos.ts) or a URL.
75
+ */
76
76
  logo: string;
77
77
 
78
78
  /**
@@ -93,8 +93,8 @@ export interface IDEOption {
93
93
  notes?: string[];
94
94
 
95
95
  /**
96
- * If `true` this IDE option is not visible in the IDE preferences.
97
- */
96
+ * If `true` this IDE option is not visible in the IDE preferences.
97
+ */
98
98
  hidden?: boolean;
99
99
 
100
100
  /**
package/src/index.ts CHANGED
@@ -4,19 +4,19 @@
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
- export * from './protocol';
8
- export * from './gitpod-service';
9
- export * from './util/disposable';
10
- export * from './util/event';
11
- export * from './util/queue';
12
- export * from './license-protocol';
13
- export * from './workspace-instance';
14
- export * from './permission';
15
- export * from './admin-protocol';
16
- export * from './email-protocol';
17
- export * from './headless-workspace-log';
18
- export * from './context-url';
19
- export * from './teams-projects-protocol';
20
- export * from './snapshot-url';
21
- export * from './oss-allowlist';
22
- export * from './installation-admin-protocol';
7
+ export * from "./protocol";
8
+ export * from "./gitpod-service";
9
+ export * from "./util/disposable";
10
+ export * from "./util/event";
11
+ export * from "./util/queue";
12
+ export * from "./license-protocol";
13
+ export * from "./workspace-instance";
14
+ export * from "./permission";
15
+ export * from "./admin-protocol";
16
+ export * from "./email-protocol";
17
+ export * from "./headless-workspace-log";
18
+ export * from "./context-url";
19
+ export * from "./teams-projects-protocol";
20
+ export * from "./snapshot-url";
21
+ export * from "./oss-allowlist";
22
+ export * from "./installation-admin-protocol";