@gitpod/gitpod-protocol 0.1.5-sje-installation-admin-dashboard.22 → 0.1.5-sje-installer-fun.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.
- package/data/gitpod-schema.json +181 -4
- package/lib/accounting-protocol.d.ts +17 -10
- package/lib/accounting-protocol.d.ts.map +1 -1
- package/lib/accounting-protocol.js +30 -32
- package/lib/accounting-protocol.js.map +1 -1
- package/lib/admin-protocol.d.ts +9 -0
- package/lib/admin-protocol.d.ts.map +1 -1
- package/lib/admin-protocol.js.map +1 -1
- package/lib/analytics.d.ts +4 -5
- package/lib/analytics.d.ts.map +1 -1
- package/lib/analytics.js.map +1 -1
- package/lib/auth.d.ts.map +1 -1
- package/lib/blocked-repositories-protocol.d.ts +13 -0
- package/lib/blocked-repositories-protocol.d.ts.map +1 -0
- package/lib/blocked-repositories-protocol.js +8 -0
- package/lib/blocked-repositories-protocol.js.map +1 -0
- package/lib/context-url.d.ts +17 -5
- package/lib/context-url.d.ts.map +1 -1
- package/lib/context-url.js +57 -6
- package/lib/context-url.js.map +1 -1
- package/lib/context-url.spec.d.ts +2 -0
- package/lib/context-url.spec.d.ts.map +1 -1
- package/lib/context-url.spec.js +40 -4
- package/lib/context-url.spec.js.map +1 -1
- package/lib/email-protocol.d.ts +1 -1
- package/lib/email-protocol.d.ts.map +1 -1
- package/lib/email-protocol.js.map +1 -1
- package/lib/encryption/container-module.d.ts.map +1 -1
- package/lib/encryption/container-module.js +1 -1
- package/lib/encryption/container-module.js.map +1 -1
- package/lib/encryption/encryption-engine.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.js +7 -7
- package/lib/encryption/encryption-engine.js.map +1 -1
- package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
- package/lib/encryption/encryption-engine.spec.js +2 -3
- package/lib/encryption/encryption-engine.spec.js.map +1 -1
- package/lib/encryption/encryption-service.d.ts.map +1 -1
- package/lib/encryption/encryption-service.js +1 -1
- package/lib/encryption/encryption-service.js.map +1 -1
- package/lib/encryption/key-provider.d.ts.map +1 -1
- package/lib/encryption/key-provider.js +7 -9
- package/lib/encryption/key-provider.js.map +1 -1
- package/lib/env.d.ts +0 -5
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +1 -20
- package/lib/env.js.map +1 -1
- package/lib/experiments/always-default.d.ts +8 -0
- package/lib/experiments/always-default.d.ts.map +1 -0
- package/lib/experiments/always-default.js +20 -0
- package/lib/experiments/always-default.js.map +1 -0
- package/lib/experiments/configcat-server.d.ts +8 -0
- package/lib/experiments/configcat-server.d.ts.map +1 -0
- package/lib/experiments/configcat-server.js +34 -0
- package/lib/experiments/configcat-server.js.map +1 -0
- package/lib/experiments/configcat.d.ts +21 -0
- package/lib/experiments/configcat.d.ts.map +1 -0
- package/lib/experiments/configcat.js +47 -0
- package/lib/experiments/configcat.js.map +1 -0
- package/lib/experiments/types.d.ts +19 -0
- package/lib/experiments/types.d.ts.map +1 -0
- package/lib/{theia-plugins.js → experiments/types.js} +2 -2
- package/lib/experiments/types.js.map +1 -0
- package/lib/gitpod-file-parser.d.ts.map +1 -1
- package/lib/gitpod-file-parser.js +6 -6
- package/lib/gitpod-file-parser.js.map +1 -1
- package/lib/gitpod-file-parser.spec.js +42 -39
- package/lib/gitpod-file-parser.spec.js.map +1 -1
- package/lib/gitpod-service.d.ts +45 -26
- package/lib/gitpod-service.d.ts.map +1 -1
- package/lib/gitpod-service.js +39 -32
- package/lib/gitpod-service.js.map +1 -1
- package/lib/headless-workspace-log.d.ts +1 -0
- package/lib/headless-workspace-log.d.ts.map +1 -1
- package/lib/headless-workspace-log.js +2 -1
- package/lib/headless-workspace-log.js.map +1 -1
- package/lib/ide-frontend-service.d.ts +1 -1
- package/lib/ide-protocol.d.ts +10 -6
- package/lib/ide-protocol.d.ts.map +1 -1
- package/lib/index.d.ts +16 -16
- package/lib/installation-admin-protocol.d.ts +9 -0
- package/lib/installation-admin-protocol.d.ts.map +1 -1
- package/lib/installation-admin-protocol.js +3 -2
- package/lib/installation-admin-protocol.js.map +1 -1
- package/lib/license-protocol.d.ts +7 -0
- package/lib/license-protocol.d.ts.map +1 -1
- package/lib/license-protocol.js.map +1 -1
- package/lib/messaging/browser/connection.d.ts +1 -1
- package/lib/messaging/browser/connection.d.ts.map +1 -1
- package/lib/messaging/browser/connection.js +19 -19
- package/lib/messaging/browser/connection.js.map +1 -1
- package/lib/messaging/browser/window-connection.d.ts +4 -4
- package/lib/messaging/browser/window-connection.d.ts.map +1 -1
- package/lib/messaging/browser/window-connection.js +9 -6
- package/lib/messaging/browser/window-connection.js.map +1 -1
- package/lib/messaging/client-call-metrics.d.ts +2 -2
- package/lib/messaging/client-call-metrics.d.ts.map +1 -1
- package/lib/messaging/client-call-metrics.js +20 -20
- package/lib/messaging/client-call-metrics.js.map +1 -1
- package/lib/messaging/error.d.ts +3 -0
- package/lib/messaging/error.d.ts.map +1 -1
- package/lib/messaging/error.js +6 -0
- package/lib/messaging/error.js.map +1 -1
- package/lib/messaging/handler.d.ts.map +1 -1
- package/lib/messaging/handler.js +1 -1
- package/lib/messaging/node/connection.js +8 -8
- package/lib/messaging/node/connection.js.map +1 -1
- package/lib/messaging/proxy-factory.d.ts +1 -1
- package/lib/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/messaging/proxy-factory.js +7 -9
- package/lib/messaging/proxy-factory.js.map +1 -1
- package/lib/payment-protocol.d.ts.map +1 -1
- package/lib/payment-protocol.js +1 -1
- package/lib/payment-protocol.js.map +1 -1
- package/lib/permission.d.ts +9 -3
- package/lib/permission.d.ts.map +1 -1
- package/lib/permission.js +34 -25
- package/lib/permission.js.map +1 -1
- package/lib/plans.d.ts +3 -3
- package/lib/plans.d.ts.map +1 -1
- package/lib/plans.js +206 -171
- package/lib/plans.js.map +1 -1
- package/lib/protocol.d.ts +88 -38
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +166 -88
- package/lib/protocol.js.map +1 -1
- package/lib/snapshot-url.spec.js.map +1 -1
- package/lib/team-subscription-protocol.d.ts +21 -3
- package/lib/team-subscription-protocol.d.ts.map +1 -1
- package/lib/team-subscription-protocol.js +16 -5
- package/lib/team-subscription-protocol.js.map +1 -1
- package/lib/teams-projects-protocol.d.ts +12 -3
- package/lib/teams-projects-protocol.d.ts.map +1 -1
- package/lib/teams-projects-protocol.js +8 -1
- package/lib/teams-projects-protocol.js.map +1 -1
- package/lib/typings/globals.d.ts +2 -2
- package/lib/typings/globals.d.ts.map +1 -1
- package/lib/util/analytics.d.ts.map +1 -1
- package/lib/util/analytics.js +12 -3
- package/lib/util/analytics.js.map +1 -1
- package/lib/util/async-iterator.d.ts.map +1 -1
- package/lib/util/async-iterator.js +3 -3
- package/lib/util/async-iterator.js.map +1 -1
- package/lib/util/cancelable.js.map +1 -1
- package/lib/util/date-time.js +6 -6
- package/lib/util/date-time.js.map +1 -1
- package/lib/util/debug-app.d.ts +25 -0
- package/lib/util/debug-app.d.ts.map +1 -0
- package/lib/util/debug-app.js +100 -0
- package/lib/util/debug-app.js.map +1 -0
- package/lib/util/deferred.js.map +1 -1
- package/lib/util/disposable.d.ts.map +1 -1
- package/lib/util/disposable.js +2 -2
- package/lib/util/disposable.js.map +1 -1
- package/lib/util/event.d.ts.map +1 -1
- package/lib/util/event.js +5 -3
- package/lib/util/event.js.map +1 -1
- package/lib/util/garbage-collected-cache.d.ts.map +1 -1
- package/lib/util/garbage-collected-cache.js +1 -1
- package/lib/util/garbage-collected-cache.js.map +1 -1
- package/lib/util/generate-workspace-id.d.ts +5 -0
- package/lib/util/generate-workspace-id.d.ts.map +1 -1
- package/lib/util/generate-workspace-id.js +446 -442
- package/lib/util/generate-workspace-id.js.map +1 -1
- package/lib/util/generate-workspace-id.spec.js +18 -7
- package/lib/util/generate-workspace-id.spec.js.map +1 -1
- package/lib/util/gitpod-cookie.d.ts +1 -1
- package/lib/util/gitpod-cookie.d.ts.map +1 -1
- package/lib/util/gitpod-cookie.js +0 -3
- package/lib/util/gitpod-cookie.js.map +1 -1
- package/lib/util/gitpod-host-url.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.js +31 -29
- package/lib/util/gitpod-host-url.js.map +1 -1
- package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.spec.js +15 -5
- package/lib/util/gitpod-host-url.spec.js.map +1 -1
- package/lib/util/grpc.d.ts.map +1 -1
- package/lib/util/grpc.js.map +1 -1
- package/lib/util/jaeger-client-types.d.ts.map +1 -1
- package/lib/util/logging.d.ts +1 -1
- package/lib/util/logging.d.ts.map +1 -1
- package/lib/util/logging.js +31 -25
- package/lib/util/logging.js.map +1 -1
- package/lib/util/make-link.js +5 -5
- package/lib/util/make-link.js.map +1 -1
- package/lib/util/parse-workspace-id.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.js +1 -2
- package/lib/util/parse-workspace-id.js.map +1 -1
- package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.spec.js.map +1 -1
- package/lib/util/queue.spec.js +9 -6
- package/lib/util/queue.spec.js.map +1 -1
- package/lib/util/semaphore.d.ts.map +1 -1
- package/lib/util/semaphore.js.map +1 -1
- package/lib/util/skip-if.d.ts.map +1 -1
- package/lib/util/skip-if.js.map +1 -1
- package/lib/util/timeutil.d.ts +1 -0
- package/lib/util/timeutil.d.ts.map +1 -1
- package/lib/util/timeutil.js +9 -3
- package/lib/util/timeutil.js.map +1 -1
- package/lib/util/timeutil.spec.d.ts.map +1 -1
- package/lib/util/timeutil.spec.js.map +1 -1
- package/lib/util/tracing.d.ts +8 -8
- package/lib/util/tracing.d.ts.map +1 -1
- package/lib/util/tracing.js +19 -20
- package/lib/util/tracing.js.map +1 -1
- package/lib/util/tracing.spec.js +3 -3
- package/lib/util/tracing.spec.js.map +1 -1
- package/lib/util/workspace-port-authentication.d.ts +7 -7
- package/lib/util/workspace-port-authentication.d.ts.map +1 -1
- package/lib/util/workspace-port-authentication.js +8 -11
- package/lib/util/workspace-port-authentication.js.map +1 -1
- package/lib/workspace-cluster.d.ts +10 -8
- package/lib/workspace-cluster.d.ts.map +1 -1
- package/lib/workspace-cluster.js +16 -1
- package/lib/workspace-cluster.js.map +1 -1
- package/lib/workspace-instance.d.ts +37 -3
- package/lib/workspace-instance.d.ts.map +1 -1
- package/lib/wsready.d.ts +1 -1
- package/lib/wsready.d.ts.map +1 -1
- package/lib/wsready.js +2 -2
- package/package.json +10 -7
- package/pkg-yarn.lock +8 -6
- package/provenance-bundle.jsonl +1 -1
- package/src/accounting-protocol.ts +63 -51
- package/src/admin-protocol.ts +33 -20
- package/src/analytics.ts +26 -28
- package/src/auth.ts +2 -2
- package/src/blocked-repositories-protocol.ts +13 -0
- package/src/context-url.spec.ts +37 -9
- package/src/context-url.ts +96 -40
- package/src/email-protocol.ts +5 -6
- package/src/encryption/container-module.ts +2 -3
- package/src/encryption/encryption-engine.spec.ts +9 -8
- package/src/encryption/encryption-engine.ts +14 -14
- package/src/encryption/encryption-service.ts +4 -5
- package/src/encryption/key-provider.ts +16 -19
- package/src/env.ts +0 -22
- package/src/experiments/always-default.ts +24 -0
- package/src/experiments/configcat-server.ts +37 -0
- package/src/experiments/configcat.ts +53 -0
- package/src/experiments/types.ts +32 -0
- package/src/gitpod-file-parser.spec.ts +55 -61
- package/src/gitpod-file-parser.ts +16 -17
- package/src/gitpod-service.ts +166 -108
- package/src/headless-workspace-log.ts +6 -4
- package/src/ide-frontend-service.ts +2 -2
- package/src/ide-protocol.ts +13 -8
- package/src/index.ts +16 -16
- package/src/installation-admin-protocol.ts +14 -4
- package/src/license-protocol.ts +12 -6
- package/src/messaging/browser/connection.ts +45 -47
- package/src/messaging/browser/window-connection.ts +39 -29
- package/src/messaging/client-call-metrics.ts +70 -71
- package/src/messaging/error.ts +10 -3
- package/src/messaging/handler.ts +6 -6
- package/src/messaging/node/connection.ts +8 -8
- package/src/messaging/proxy-factory.ts +23 -30
- package/src/oss-allowlist.ts +3 -3
- package/src/payment-protocol.ts +2 -2
- package/src/permission.ts +40 -32
- package/src/plans.ts +236 -189
- package/src/protocol.ts +352 -242
- package/src/snapshot-url.spec.ts +9 -7
- package/src/team-subscription-protocol.ts +57 -23
- package/src/teams-projects-protocol.ts +22 -9
- package/src/typings/globals.ts +4 -4
- package/src/util/analytics.ts +46 -24
- package/src/util/async-iterator.ts +4 -5
- package/src/util/cancelable.ts +3 -3
- package/src/util/date-time.ts +8 -8
- package/src/util/debug-app.ts +81 -0
- package/src/util/deferred.ts +6 -6
- package/src/util/disposable.ts +3 -6
- package/src/util/event.ts +9 -11
- package/src/util/garbage-collected-cache.ts +3 -6
- package/src/util/generate-workspace-id.spec.ts +26 -16
- package/src/util/generate-workspace-id.ts +460 -454
- package/src/util/gitpod-cookie.ts +8 -9
- package/src/util/gitpod-host-url.spec.ts +40 -13
- package/src/util/gitpod-host-url.ts +37 -34
- package/src/util/grpc.ts +1 -1
- package/src/util/jaeger-client-types.ts +2 -2
- package/src/util/logging.ts +60 -42
- package/src/util/make-link.ts +6 -7
- package/src/util/parse-workspace-id.spec.ts +17 -8
- package/src/util/parse-workspace-id.ts +5 -6
- package/src/util/queue.spec.ts +27 -25
- package/src/util/repeat.ts +1 -1
- package/src/util/semaphore.ts +4 -6
- package/src/util/skip-if.ts +9 -6
- package/src/util/timeutil.spec.ts +14 -15
- package/src/util/timeutil.ts +21 -11
- package/src/util/tracing.spec.ts +28 -23
- package/src/util/tracing.ts +58 -54
- package/src/util/workspace-port-authentication.ts +10 -13
- package/src/workspace-cluster.ts +26 -15
- package/src/workspace-instance.ts +68 -20
- package/src/wsready.ts +3 -3
- package/data/builtin-theia-plugins.json +0 -372
- package/lib/messaging/connection-error-handler.d.ts +0 -27
- package/lib/messaging/connection-error-handler.d.ts.map +0 -1
- package/lib/messaging/connection-error-handler.js +0 -34
- package/lib/messaging/connection-error-handler.js.map +0 -1
- package/lib/theia-plugins.d.ts +0 -11
- package/lib/theia-plugins.d.ts.map +0 -1
- package/lib/theia-plugins.js.map +0 -1
- package/lib/util/safe-promise.d.ts +0 -11
- package/lib/util/safe-promise.d.ts.map +0 -1
- package/lib/util/safe-promise.js +0 -31
- package/lib/util/safe-promise.js.map +0 -1
- package/src/messaging/connection-error-handler.ts +0 -62
- package/src/theia-plugins.ts +0 -11
- package/src/util/safe-promise.ts +0 -26
package/src/gitpod-service.ts
CHANGED
|
@@ -5,32 +5,59 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
|
-
User,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
+
PrebuiltWorkspace,
|
|
28
|
+
} from "./protocol";
|
|
14
29
|
import {
|
|
15
|
-
Team,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
30
|
+
Team,
|
|
31
|
+
TeamMemberInfo,
|
|
32
|
+
TeamMembershipInvite,
|
|
33
|
+
Project,
|
|
34
|
+
TeamMemberRole,
|
|
35
|
+
PrebuildWithStatus,
|
|
36
|
+
StartPrebuildResult,
|
|
37
|
+
PartialProject,
|
|
38
|
+
} from "./teams-projects-protocol";
|
|
39
|
+
import { JsonRpcProxy, JsonRpcServer } from "./messaging/proxy-factory";
|
|
40
|
+
import { Disposable, CancellationTokenSource } from "vscode-jsonrpc";
|
|
41
|
+
import { HeadlessLogUrls } from "./headless-workspace-log";
|
|
42
|
+
import { WorkspaceInstance, WorkspaceInstancePort, WorkspaceInstancePhase } from "./workspace-instance";
|
|
43
|
+
import { AdminServer } from "./admin-protocol";
|
|
44
|
+
import { GitpodHostUrl } from "./util/gitpod-host-url";
|
|
45
|
+
import { WebSocketConnectionProvider } from "./messaging/browser/connection";
|
|
46
|
+
import { PermissionName } from "./permission";
|
|
47
|
+
import { LicenseService } from "./license-protocol";
|
|
48
|
+
import { Emitter } from "./util/event";
|
|
49
|
+
import { AccountStatement, CreditAlert } from "./accounting-protocol";
|
|
50
|
+
import { GithubUpgradeURL, PlanCoupon } from "./payment-protocol";
|
|
51
|
+
import {
|
|
52
|
+
TeamSubscription,
|
|
53
|
+
TeamSubscription2,
|
|
54
|
+
TeamSubscriptionSlot,
|
|
55
|
+
TeamSubscriptionSlotResolved,
|
|
56
|
+
} from "./team-subscription-protocol";
|
|
57
|
+
import { RemotePageMessage, RemoteTrackMessage, RemoteIdentifyMessage } from "./analytics";
|
|
58
|
+
import { IDEServer } from "./ide-protocol";
|
|
59
|
+
import { InstallationAdminSettings, TelemetryData } from "./installation-admin-protocol";
|
|
60
|
+
import { Currency } from "./plans";
|
|
34
61
|
|
|
35
62
|
export interface GitpodClient {
|
|
36
63
|
onInstanceUpdate(instance: WorkspaceInstance): void;
|
|
@@ -46,7 +73,7 @@ export interface GitpodClient {
|
|
|
46
73
|
//#endregion
|
|
47
74
|
}
|
|
48
75
|
|
|
49
|
-
export const GitpodServer = Symbol(
|
|
76
|
+
export const GitpodServer = Symbol("GitpodServer");
|
|
50
77
|
export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer, LicenseService, IDEServer {
|
|
51
78
|
// User related API
|
|
52
79
|
getLoggedInUser(): Promise<User>;
|
|
@@ -72,6 +99,7 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
72
99
|
getWorkspaceOwner(workspaceId: string): Promise<UserInfo | undefined>;
|
|
73
100
|
getWorkspaceUsers(workspaceId: string): Promise<WorkspaceInstanceUser[]>;
|
|
74
101
|
getFeaturedRepositories(): Promise<WhitelistedRepository[]>;
|
|
102
|
+
getSuggestedContextURLs(): Promise<string[]>;
|
|
75
103
|
/**
|
|
76
104
|
* **Security:**
|
|
77
105
|
* Sensitive information like an owner token is erased, since it allows access for all team members.
|
|
@@ -135,6 +163,7 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
135
163
|
// Admin Settings
|
|
136
164
|
adminGetSettings(): Promise<InstallationAdminSettings>;
|
|
137
165
|
adminUpdateSettings(settings: InstallationAdminSettings): Promise<void>;
|
|
166
|
+
adminGetTelemetryData(): Promise<TelemetryData>;
|
|
138
167
|
|
|
139
168
|
// Projects
|
|
140
169
|
getProviderRepositoriesForUser(params: GetProviderRepositoriesParams): Promise<ProviderRepository[]>;
|
|
@@ -144,6 +173,8 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
144
173
|
getUserProjects(): Promise<Project[]>;
|
|
145
174
|
getProjectOverview(projectId: string): Promise<Project.Overview | undefined>;
|
|
146
175
|
findPrebuilds(params: FindPrebuildsParams): Promise<PrebuildWithStatus[]>;
|
|
176
|
+
findPrebuildByWorkspaceID(workspaceId: string): Promise<PrebuiltWorkspace | undefined>;
|
|
177
|
+
getPrebuild(prebuildId: string): Promise<PrebuildWithStatus | undefined>;
|
|
147
178
|
triggerPrebuild(projectId: string, branchName: string | null): Promise<StartPrebuildResult>;
|
|
148
179
|
cancelPrebuild(projectId: string, prebuildId: string): Promise<void>;
|
|
149
180
|
fetchProjectRepositoryConfiguration(projectId: string): Promise<string | undefined>;
|
|
@@ -157,8 +188,8 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
157
188
|
deleteProjectEnvironmentVariable(variableId: string): Promise<void>;
|
|
158
189
|
|
|
159
190
|
// content service
|
|
160
|
-
getContentBlobUploadUrl(name: string): Promise<string
|
|
161
|
-
getContentBlobDownloadUrl(name: string): Promise<string
|
|
191
|
+
getContentBlobUploadUrl(name: string): Promise<string>;
|
|
192
|
+
getContentBlobDownloadUrl(name: string): Promise<string>;
|
|
162
193
|
|
|
163
194
|
// Gitpod token
|
|
164
195
|
getGitpodTokens(): Promise<GitpodToken[]>;
|
|
@@ -167,6 +198,7 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
167
198
|
|
|
168
199
|
// misc
|
|
169
200
|
sendFeedback(feedback: string): Promise<string | undefined>;
|
|
201
|
+
isGitHubAppEnabled(): Promise<boolean>;
|
|
170
202
|
registerGithubApp(installationId: string): Promise<void>;
|
|
171
203
|
|
|
172
204
|
/**
|
|
@@ -195,15 +227,6 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
195
227
|
*/
|
|
196
228
|
getLayout(workspaceId: string): Promise<string | undefined>;
|
|
197
229
|
|
|
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
230
|
guessGitTokenScopes(params: GuessGitTokenScopesParams): Promise<GuessedGitTokenScopes>;
|
|
208
231
|
|
|
209
232
|
/**
|
|
@@ -221,7 +244,9 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
221
244
|
*/
|
|
222
245
|
getChargebeeSiteId(): Promise<string>;
|
|
223
246
|
createPortalSession(): Promise<{}>;
|
|
247
|
+
createTeamPortalSession(teamId: string): Promise<{}>;
|
|
224
248
|
checkout(planId: string, planQuantity?: number): Promise<{}>;
|
|
249
|
+
teamCheckout(teamId: string, planId: string): Promise<{}>;
|
|
225
250
|
getAvailableCoupons(): Promise<PlanCoupon[]>;
|
|
226
251
|
getAppliedCoupons(): Promise<PlanCoupon[]>;
|
|
227
252
|
|
|
@@ -233,17 +258,28 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
233
258
|
subscriptionCancel(subscriptionId: string): Promise<void>;
|
|
234
259
|
subscriptionCancelDowngrade(subscriptionId: string): Promise<void>;
|
|
235
260
|
|
|
261
|
+
getTeamSubscription(teamId: string): Promise<TeamSubscription2 | undefined>;
|
|
236
262
|
tsGet(): Promise<TeamSubscription[]>;
|
|
237
263
|
tsGetSlots(): Promise<TeamSubscriptionSlotResolved[]>;
|
|
238
|
-
tsGetUnassignedSlot(teamSubscriptionId: string): Promise<TeamSubscriptionSlot | undefined
|
|
264
|
+
tsGetUnassignedSlot(teamSubscriptionId: string): Promise<TeamSubscriptionSlot | undefined>;
|
|
239
265
|
tsAddSlots(teamSubscriptionId: string, quantity: number): Promise<void>;
|
|
240
|
-
tsAssignSlot(
|
|
266
|
+
tsAssignSlot(
|
|
267
|
+
teamSubscriptionId: string,
|
|
268
|
+
teamSubscriptionSlotId: string,
|
|
269
|
+
identityStr: string | undefined,
|
|
270
|
+
): Promise<void>;
|
|
241
271
|
tsReassignSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string, newIdentityStr: string): Promise<void>;
|
|
242
272
|
tsDeactivateSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string): Promise<void>;
|
|
243
273
|
tsReactivateSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string): Promise<void>;
|
|
244
274
|
|
|
245
275
|
getGithubUpgradeUrls(): Promise<GithubUpgradeURL[]>;
|
|
246
276
|
|
|
277
|
+
getStripePublishableKey(): Promise<string>;
|
|
278
|
+
getStripeSetupIntentClientSecret(): Promise<string>;
|
|
279
|
+
findStripeSubscriptionIdForTeam(teamId: string): Promise<string | undefined>;
|
|
280
|
+
subscribeTeamToStripe(teamId: string, setupIntentId: string, currency: Currency): Promise<void>;
|
|
281
|
+
getStripePortalUrlForTeam(teamId: string): Promise<string>;
|
|
282
|
+
|
|
247
283
|
/**
|
|
248
284
|
* Analytics
|
|
249
285
|
*/
|
|
@@ -252,6 +288,16 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
252
288
|
identifyUser(event: RemoteIdentifyMessage): Promise<void>;
|
|
253
289
|
}
|
|
254
290
|
|
|
291
|
+
export interface RateLimiterError {
|
|
292
|
+
method?: string;
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Retry after this many seconds, earliest.
|
|
296
|
+
* cmp.: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After
|
|
297
|
+
*/
|
|
298
|
+
retryAfter: number;
|
|
299
|
+
}
|
|
300
|
+
|
|
255
301
|
export interface CreateProjectParams {
|
|
256
302
|
name: string;
|
|
257
303
|
slug?: string;
|
|
@@ -280,7 +326,7 @@ export interface ProviderRepository {
|
|
|
280
326
|
account: string;
|
|
281
327
|
accountAvatarUrl: string;
|
|
282
328
|
cloneUrl: string;
|
|
283
|
-
updatedAt
|
|
329
|
+
updatedAt?: string;
|
|
284
330
|
installationId?: number;
|
|
285
331
|
installationUpdatedAt?: string;
|
|
286
332
|
|
|
@@ -294,15 +340,28 @@ export interface ClientHeaderFields {
|
|
|
294
340
|
clientRegion?: string;
|
|
295
341
|
}
|
|
296
342
|
|
|
297
|
-
export const
|
|
298
|
-
|
|
299
|
-
export const
|
|
343
|
+
export const WORKSPACE_TIMEOUT_DEFAULT_SHORT = "short";
|
|
344
|
+
export const WORKSPACE_TIMEOUT_DEFAULT_LONG = "long";
|
|
345
|
+
export const WORKSPACE_TIMEOUT_EXTENDED = "extended";
|
|
346
|
+
export const WORKSPACE_TIMEOUT_EXTENDED_ALT = "180m"; // for backwards compatibility since the IDE uses this
|
|
347
|
+
export const WorkspaceTimeoutValues = [
|
|
348
|
+
WORKSPACE_TIMEOUT_DEFAULT_SHORT,
|
|
349
|
+
WORKSPACE_TIMEOUT_DEFAULT_LONG,
|
|
350
|
+
WORKSPACE_TIMEOUT_EXTENDED,
|
|
351
|
+
WORKSPACE_TIMEOUT_EXTENDED_ALT,
|
|
352
|
+
] as const;
|
|
353
|
+
|
|
354
|
+
export const createServiceMock = function <C extends GitpodClient, S extends GitpodServer>(
|
|
355
|
+
methods: Partial<JsonRpcProxy<S>>,
|
|
356
|
+
): GitpodServiceImpl<C, S> {
|
|
300
357
|
return new GitpodServiceImpl<C, S>(createServerMock(methods));
|
|
301
|
-
}
|
|
358
|
+
};
|
|
302
359
|
|
|
303
|
-
export const createServerMock = function <C extends GitpodClient, S extends GitpodServer>(
|
|
304
|
-
methods
|
|
305
|
-
|
|
360
|
+
export const createServerMock = function <C extends GitpodClient, S extends GitpodServer>(
|
|
361
|
+
methods: Partial<JsonRpcProxy<S>>,
|
|
362
|
+
): JsonRpcProxy<S> {
|
|
363
|
+
methods.setClient = methods.setClient || (() => {});
|
|
364
|
+
methods.dispose = methods.dispose || (() => {});
|
|
306
365
|
return new Proxy<JsonRpcProxy<S>>(methods as any as JsonRpcProxy<S>, {
|
|
307
366
|
// @ts-ignore
|
|
308
367
|
get: (target: S, property: keyof S) => {
|
|
@@ -311,25 +370,26 @@ export const createServerMock = function <C extends GitpodClient, S extends Gitp
|
|
|
311
370
|
throw new Error(`Method ${property} not implemented`);
|
|
312
371
|
}
|
|
313
372
|
return result;
|
|
314
|
-
}
|
|
373
|
+
},
|
|
315
374
|
});
|
|
316
|
-
}
|
|
375
|
+
};
|
|
317
376
|
|
|
318
377
|
type WorkspaceTimeoutDurationTuple = typeof WorkspaceTimeoutValues;
|
|
319
378
|
export type WorkspaceTimeoutDuration = WorkspaceTimeoutDurationTuple[number];
|
|
320
379
|
|
|
321
380
|
export interface SetWorkspaceTimeoutResult {
|
|
322
|
-
resetTimeoutOnWorkspaces: string[]
|
|
381
|
+
resetTimeoutOnWorkspaces: string[];
|
|
323
382
|
}
|
|
324
383
|
|
|
325
384
|
export interface GetWorkspaceTimeoutResult {
|
|
326
|
-
duration: WorkspaceTimeoutDuration
|
|
327
|
-
|
|
385
|
+
duration: WorkspaceTimeoutDuration;
|
|
386
|
+
durationRaw: string;
|
|
387
|
+
canChange: boolean;
|
|
328
388
|
}
|
|
329
389
|
|
|
330
390
|
export interface StartWorkspaceResult {
|
|
331
|
-
instanceID: string
|
|
332
|
-
workspaceURL?: string
|
|
391
|
+
instanceID: string;
|
|
392
|
+
workspaceURL?: string;
|
|
333
393
|
}
|
|
334
394
|
|
|
335
395
|
export namespace GitpodServer {
|
|
@@ -373,23 +433,23 @@ export namespace GitpodServer {
|
|
|
373
433
|
readonly roundTripTime?: number;
|
|
374
434
|
}
|
|
375
435
|
export interface UpdateOwnAuthProviderParams {
|
|
376
|
-
readonly entry: AuthProviderEntry.UpdateEntry | AuthProviderEntry.NewEntry
|
|
436
|
+
readonly entry: AuthProviderEntry.UpdateEntry | AuthProviderEntry.NewEntry;
|
|
377
437
|
}
|
|
378
438
|
export interface DeleteOwnAuthProviderParams {
|
|
379
|
-
readonly id: string
|
|
439
|
+
readonly id: string;
|
|
380
440
|
}
|
|
381
441
|
export type AdmissionLevel = "owner" | "everyone";
|
|
382
442
|
export type PinAction = "pin" | "unpin" | "toggle";
|
|
383
443
|
export interface GenerateNewGitpodTokenOptions {
|
|
384
|
-
name?: string
|
|
385
|
-
type: GitpodTokenType
|
|
386
|
-
scopes?: string[]
|
|
444
|
+
name?: string;
|
|
445
|
+
type: GitpodTokenType;
|
|
446
|
+
scopes?: string[];
|
|
387
447
|
}
|
|
388
448
|
}
|
|
389
449
|
|
|
390
|
-
export const GitpodServerPath =
|
|
450
|
+
export const GitpodServerPath = "/gitpod";
|
|
391
451
|
|
|
392
|
-
export const GitpodServerProxy = Symbol(
|
|
452
|
+
export const GitpodServerProxy = Symbol("GitpodServerProxy");
|
|
393
453
|
export type GitpodServerProxy<S extends GitpodServer> = JsonRpcProxy<S>;
|
|
394
454
|
|
|
395
455
|
export class GitpodCompositeClient<Client extends GitpodClient> implements GitpodClient {
|
|
@@ -403,8 +463,8 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
403
463
|
if (index > -1) {
|
|
404
464
|
this.clients.splice(index, 1);
|
|
405
465
|
}
|
|
406
|
-
}
|
|
407
|
-
}
|
|
466
|
+
},
|
|
467
|
+
};
|
|
408
468
|
}
|
|
409
469
|
|
|
410
470
|
onInstanceUpdate(instance: WorkspaceInstance): void {
|
|
@@ -413,7 +473,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
413
473
|
try {
|
|
414
474
|
client.onInstanceUpdate(instance);
|
|
415
475
|
} catch (error) {
|
|
416
|
-
console.error(error)
|
|
476
|
+
console.error(error);
|
|
417
477
|
}
|
|
418
478
|
}
|
|
419
479
|
}
|
|
@@ -425,19 +485,22 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
425
485
|
try {
|
|
426
486
|
client.onPrebuildUpdate(update);
|
|
427
487
|
} catch (error) {
|
|
428
|
-
console.error(error)
|
|
488
|
+
console.error(error);
|
|
429
489
|
}
|
|
430
490
|
}
|
|
431
491
|
}
|
|
432
492
|
}
|
|
433
493
|
|
|
434
|
-
onWorkspaceImageBuildLogs(
|
|
494
|
+
onWorkspaceImageBuildLogs(
|
|
495
|
+
info: WorkspaceImageBuild.StateInfo,
|
|
496
|
+
content: WorkspaceImageBuild.LogContent | undefined,
|
|
497
|
+
): void {
|
|
435
498
|
for (const client of this.clients) {
|
|
436
499
|
if (client.onWorkspaceImageBuildLogs) {
|
|
437
500
|
try {
|
|
438
501
|
client.onWorkspaceImageBuildLogs(info, content);
|
|
439
502
|
} catch (error) {
|
|
440
|
-
console.error(error)
|
|
503
|
+
console.error(error);
|
|
441
504
|
}
|
|
442
505
|
}
|
|
443
506
|
}
|
|
@@ -449,7 +512,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
449
512
|
try {
|
|
450
513
|
client.notifyDidOpenConnection();
|
|
451
514
|
} catch (error) {
|
|
452
|
-
console.error(error)
|
|
515
|
+
console.error(error);
|
|
453
516
|
}
|
|
454
517
|
}
|
|
455
518
|
}
|
|
@@ -461,7 +524,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
461
524
|
try {
|
|
462
525
|
client.notifyDidCloseConnection();
|
|
463
526
|
} catch (error) {
|
|
464
|
-
console.error(error)
|
|
527
|
+
console.error(error);
|
|
465
528
|
}
|
|
466
529
|
}
|
|
467
530
|
}
|
|
@@ -473,64 +536,61 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
473
536
|
try {
|
|
474
537
|
client.onCreditAlert(creditAlert);
|
|
475
538
|
} catch (error) {
|
|
476
|
-
console.error(error)
|
|
539
|
+
console.error(error);
|
|
477
540
|
}
|
|
478
541
|
}
|
|
479
542
|
}
|
|
480
543
|
}
|
|
481
|
-
|
|
482
544
|
}
|
|
483
545
|
|
|
484
546
|
export type GitpodService = GitpodServiceImpl<GitpodClient, GitpodServer>;
|
|
485
547
|
|
|
486
|
-
const hasWindow =
|
|
548
|
+
const hasWindow = typeof window !== "undefined";
|
|
487
549
|
const phasesOrder: Record<WorkspaceInstancePhase, number> = {
|
|
488
550
|
unknown: 0,
|
|
489
551
|
preparing: 1,
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
552
|
+
building: 2,
|
|
553
|
+
pending: 3,
|
|
554
|
+
creating: 4,
|
|
555
|
+
initializing: 5,
|
|
556
|
+
running: 6,
|
|
557
|
+
interrupted: 7,
|
|
558
|
+
stopping: 8,
|
|
559
|
+
stopped: 9,
|
|
497
560
|
};
|
|
498
561
|
export class WorkspaceInstanceUpdateListener {
|
|
499
562
|
private readonly onDidChangeEmitter = new Emitter<void>();
|
|
500
563
|
readonly onDidChange = this.onDidChangeEmitter.event;
|
|
501
564
|
|
|
502
|
-
private source:
|
|
565
|
+
private source: "sync" | "update" = "sync";
|
|
503
566
|
|
|
504
567
|
get info(): WorkspaceInfo {
|
|
505
568
|
return this._info;
|
|
506
569
|
}
|
|
507
570
|
|
|
508
|
-
constructor(
|
|
509
|
-
private readonly service: GitpodService,
|
|
510
|
-
private _info: WorkspaceInfo
|
|
511
|
-
) {
|
|
571
|
+
constructor(private readonly service: GitpodService, private _info: WorkspaceInfo) {
|
|
512
572
|
service.registerClient({
|
|
513
|
-
onInstanceUpdate: instance => {
|
|
573
|
+
onInstanceUpdate: (instance) => {
|
|
514
574
|
if (this.isOutOfOrder(instance)) {
|
|
515
575
|
return;
|
|
516
576
|
}
|
|
517
577
|
this.cancelSync();
|
|
518
578
|
this._info.latestInstance = instance;
|
|
519
|
-
this.source =
|
|
579
|
+
this.source = "update";
|
|
520
580
|
this.onDidChangeEmitter.fire(undefined);
|
|
521
581
|
},
|
|
522
582
|
notifyDidOpenConnection: () => {
|
|
523
583
|
this.sync();
|
|
524
|
-
}
|
|
584
|
+
},
|
|
525
585
|
});
|
|
526
586
|
if (hasWindow) {
|
|
527
587
|
// learn about page lifecycle here: https://developers.google.com/web/updates/2018/07/page-lifecycle-api
|
|
528
|
-
window.document.addEventListener(
|
|
529
|
-
if (window.document.visibilityState ===
|
|
588
|
+
window.document.addEventListener("visibilitychange", async () => {
|
|
589
|
+
if (window.document.visibilityState === "visible") {
|
|
530
590
|
this.sync();
|
|
531
591
|
}
|
|
532
592
|
});
|
|
533
|
-
window.addEventListener(
|
|
593
|
+
window.addEventListener("pageshow", (e) => {
|
|
534
594
|
if (e.persisted) {
|
|
535
595
|
this.sync();
|
|
536
596
|
}
|
|
@@ -558,12 +618,12 @@ export class WorkspaceInstanceUpdateListener {
|
|
|
558
618
|
return;
|
|
559
619
|
}
|
|
560
620
|
this._info = info;
|
|
561
|
-
this.source =
|
|
621
|
+
this.source = "sync";
|
|
562
622
|
this.onDidChangeEmitter.fire(undefined);
|
|
563
623
|
} catch (e) {
|
|
564
|
-
console.error(
|
|
624
|
+
console.error("failed to sync workspace instance:", e);
|
|
565
625
|
}
|
|
566
|
-
})
|
|
626
|
+
});
|
|
567
627
|
}
|
|
568
628
|
private cancelSync(): void {
|
|
569
629
|
if (this.syncTokenSource) {
|
|
@@ -580,7 +640,7 @@ export class WorkspaceInstanceUpdateListener {
|
|
|
580
640
|
if (instance.workspaceId !== this._info.workspace.id) {
|
|
581
641
|
return true;
|
|
582
642
|
}
|
|
583
|
-
if (this.source ===
|
|
643
|
+
if (this.source === "update") {
|
|
584
644
|
return false;
|
|
585
645
|
}
|
|
586
646
|
if (instance.id !== this.info.latestInstance?.id) {
|
|
@@ -588,15 +648,13 @@ export class WorkspaceInstanceUpdateListener {
|
|
|
588
648
|
}
|
|
589
649
|
return phasesOrder[instance.status.phase] < phasesOrder[this.info.latestInstance.status.phase];
|
|
590
650
|
}
|
|
591
|
-
|
|
592
651
|
}
|
|
593
652
|
|
|
594
653
|
export interface GitpodServiceOptions {
|
|
595
|
-
onReconnect?: () =>
|
|
654
|
+
onReconnect?: () => void | Promise<void>;
|
|
596
655
|
}
|
|
597
656
|
|
|
598
657
|
export class GitpodServiceImpl<Client extends GitpodClient, Server extends GitpodServer> {
|
|
599
|
-
|
|
600
658
|
private readonly compositeClient = new GitpodCompositeClient<Client>();
|
|
601
659
|
|
|
602
660
|
constructor(public readonly server: JsonRpcProxy<Server>, private options?: GitpodServiceOptions) {
|
|
@@ -611,7 +669,8 @@ export class GitpodServiceImpl<Client extends GitpodClient, Server extends Gitpo
|
|
|
611
669
|
|
|
612
670
|
private readonly instanceListeners = new Map<string, Promise<WorkspaceInstanceUpdateListener>>();
|
|
613
671
|
listenToInstance(workspaceId: string): Promise<WorkspaceInstanceUpdateListener> {
|
|
614
|
-
const listener =
|
|
672
|
+
const listener =
|
|
673
|
+
this.instanceListeners.get(workspaceId) ||
|
|
615
674
|
(async () => {
|
|
616
675
|
const info = await this.server.getWorkspace(workspaceId);
|
|
617
676
|
return new WorkspaceInstanceUpdateListener(this, info);
|
|
@@ -627,26 +686,25 @@ export class GitpodServiceImpl<Client extends GitpodClient, Server extends Gitpo
|
|
|
627
686
|
}
|
|
628
687
|
}
|
|
629
688
|
|
|
630
|
-
export function createGitpodService<C extends GitpodClient, S extends GitpodServer>(
|
|
689
|
+
export function createGitpodService<C extends GitpodClient, S extends GitpodServer>(
|
|
690
|
+
serverUrl: string | Promise<string>,
|
|
691
|
+
) {
|
|
631
692
|
const toWsUrl = (serverUrl: string) => {
|
|
632
|
-
return new GitpodHostUrl(serverUrl)
|
|
633
|
-
.asWebsocket()
|
|
634
|
-
.withApi({ pathname: GitpodServerPath })
|
|
635
|
-
.toString();
|
|
693
|
+
return new GitpodHostUrl(serverUrl).asWebsocket().withApi({ pathname: GitpodServerPath }).toString();
|
|
636
694
|
};
|
|
637
695
|
let url: string | Promise<string>;
|
|
638
696
|
if (typeof serverUrl === "string") {
|
|
639
697
|
url = toWsUrl(serverUrl);
|
|
640
698
|
} else {
|
|
641
|
-
url = serverUrl.then(url => toWsUrl(url));
|
|
699
|
+
url = serverUrl.then((url) => toWsUrl(url));
|
|
642
700
|
}
|
|
643
701
|
|
|
644
702
|
const connectionProvider = new WebSocketConnectionProvider();
|
|
645
|
-
let onReconnect = () => {
|
|
703
|
+
let onReconnect = () => {};
|
|
646
704
|
const gitpodServer = connectionProvider.createProxy<S>(url, undefined, {
|
|
647
|
-
onListening: socket => {
|
|
705
|
+
onListening: (socket) => {
|
|
648
706
|
onReconnect = () => socket.reconnect();
|
|
649
|
-
}
|
|
707
|
+
},
|
|
650
708
|
});
|
|
651
709
|
return new GitpodServiceImpl<C, S>(gitpodServer, { onReconnect });
|
|
652
|
-
}
|
|
710
|
+
}
|
|
@@ -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
|
-
|
|
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
|
|
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 =
|
|
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
|
+
}
|
package/src/ide-protocol.ts
CHANGED
|
@@ -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:
|
|
70
|
+
type: "browser" | "desktop";
|
|
71
71
|
|
|
72
72
|
/**
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
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.
|