@gitpod/gitpod-protocol 0.1.5-prs-dazzlev2-test.3 → 0.1.5-prs-prebuilds.16

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