@gitpod/gitpod-protocol 0.1.5-mp-docs-wsp-phase.0 → 0.1.5-mp-fmt-protocol.0
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/lib/accounting-protocol.d.ts +10 -10
- package/lib/accounting-protocol.d.ts.map +1 -1
- package/lib/accounting-protocol.js +22 -31
- package/lib/accounting-protocol.js.map +1 -1
- package/lib/admin-protocol.d.ts.map +1 -1
- package/lib/admin-protocol.js.map +1 -1
- 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/context-url.d.ts.map +1 -1
- package/lib/context-url.js +3 -3
- package/lib/context-url.js.map +1 -1
- package/lib/context-url.spec.d.ts.map +1 -1
- package/lib/context-url.spec.js +20 -5
- 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 +1 -1
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +5 -5
- package/lib/env.js.map +1 -1
- 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 +16 -16
- package/lib/gitpod-service.d.ts.map +1 -1
- package/lib/gitpod-service.js +21 -24
- package/lib/gitpod-service.js.map +1 -1
- package/lib/headless-workspace-log.d.ts.map +1 -1
- package/lib/headless-workspace-log.js +1 -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 +6 -6
- package/lib/ide-protocol.d.ts.map +1 -1
- package/lib/index.d.ts +16 -16
- package/lib/installation-admin-protocol.d.ts.map +1 -1
- package/lib/installation-admin-protocol.js +2 -2
- package/lib/installation-admin-protocol.js.map +1 -1
- 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.map +1 -1
- 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 +2 -2
- package/lib/permission.d.ts.map +1 -1
- package/lib/permission.js +12 -23
- 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 +10 -10
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +54 -88
- package/lib/protocol.js.map +1 -1
- package/lib/snapshot-url.spec.js.map +1 -1
- package/lib/team-subscription-protocol.d.ts +3 -3
- package/lib/team-subscription-protocol.d.ts.map +1 -1
- package/lib/team-subscription-protocol.js +4 -4
- package/lib/team-subscription-protocol.js.map +1 -1
- package/lib/teams-projects-protocol.d.ts +3 -3
- package/lib/teams-projects-protocol.d.ts.map +1 -1
- package/lib/teams-projects-protocol.js +1 -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 +6 -6
- 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/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.map +1 -1
- package/lib/util/generate-workspace-id.js +435 -435
- package/lib/util/generate-workspace-id.js.map +1 -1
- package/lib/util/generate-workspace-id.spec.js +10 -6
- 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 +22 -23
- 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.map +1 -1
- package/lib/util/timeutil.js +2 -2
- 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 +6 -6
- package/lib/util/tracing.d.ts.map +1 -1
- package/lib/util/tracing.js +6 -6
- 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 +1 -1
- package/lib/workspace-cluster.d.ts.map +1 -1
- package/lib/workspace-cluster.js +2 -4
- package/lib/workspace-cluster.js.map +1 -1
- package/lib/wsready.d.ts.map +1 -1
- package/package.json +1 -1
- package/pkg-yarn.lock +1 -1
- package/provenance-bundle.jsonl +1 -1
- package/src/accounting-protocol.ts +53 -51
- package/src/admin-protocol.ts +22 -20
- package/src/analytics.ts +21 -21
- package/src/auth.ts +2 -2
- package/src/context-url.spec.ts +25 -11
- package/src/context-url.ts +80 -78
- 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 +9 -9
- package/src/gitpod-file-parser.spec.ts +55 -61
- package/src/gitpod-file-parser.ts +16 -17
- package/src/gitpod-service.ts +117 -92
- package/src/headless-workspace-log.ts +5 -4
- package/src/ide-frontend-service.ts +2 -2
- package/src/ide-protocol.ts +8 -8
- package/src/index.ts +16 -16
- package/src/installation-admin-protocol.ts +8 -8
- package/src/license-protocol.ts +5 -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 +1 -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 +20 -31
- package/src/plans.ts +236 -189
- package/src/protocol.ts +174 -210
- package/src/snapshot-url.spec.ts +9 -7
- package/src/team-subscription-protocol.ts +31 -23
- package/src/teams-projects-protocol.ts +8 -8
- package/src/typings/globals.ts +4 -4
- package/src/util/analytics.ts +46 -42
- 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/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 +18 -15
- package/src/util/generate-workspace-id.ts +453 -453
- 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 +49 -39
- 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 +15 -11
- package/src/util/tracing.spec.ts +28 -23
- package/src/util/tracing.ts +46 -41
- package/src/util/workspace-port-authentication.ts +10 -13
- package/src/workspace-cluster.ts +15 -12
- package/src/wsready.ts +1 -1
package/src/gitpod-service.ts
CHANGED
|
@@ -5,32 +5,52 @@
|
|
|
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
|
+
} from "./protocol";
|
|
14
28
|
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 {
|
|
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(
|
|
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>;
|
|
@@ -159,8 +179,8 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
159
179
|
deleteProjectEnvironmentVariable(variableId: string): Promise<void>;
|
|
160
180
|
|
|
161
181
|
// content service
|
|
162
|
-
getContentBlobUploadUrl(name: string): Promise<string
|
|
163
|
-
getContentBlobDownloadUrl(name: string): Promise<string
|
|
182
|
+
getContentBlobUploadUrl(name: string): Promise<string>;
|
|
183
|
+
getContentBlobDownloadUrl(name: string): Promise<string>;
|
|
164
184
|
|
|
165
185
|
// Gitpod token
|
|
166
186
|
getGitpodTokens(): Promise<GitpodToken[]>;
|
|
@@ -228,9 +248,13 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
228
248
|
|
|
229
249
|
tsGet(): Promise<TeamSubscription[]>;
|
|
230
250
|
tsGetSlots(): Promise<TeamSubscriptionSlotResolved[]>;
|
|
231
|
-
tsGetUnassignedSlot(teamSubscriptionId: string): Promise<TeamSubscriptionSlot | undefined
|
|
251
|
+
tsGetUnassignedSlot(teamSubscriptionId: string): Promise<TeamSubscriptionSlot | undefined>;
|
|
232
252
|
tsAddSlots(teamSubscriptionId: string, quantity: number): Promise<void>;
|
|
233
|
-
tsAssignSlot(
|
|
253
|
+
tsAssignSlot(
|
|
254
|
+
teamSubscriptionId: string,
|
|
255
|
+
teamSubscriptionSlotId: string,
|
|
256
|
+
identityStr: string | undefined,
|
|
257
|
+
): Promise<void>;
|
|
234
258
|
tsReassignSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string, newIdentityStr: string): Promise<void>;
|
|
235
259
|
tsDeactivateSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string): Promise<void>;
|
|
236
260
|
tsReactivateSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string): Promise<void>;
|
|
@@ -246,13 +270,13 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
246
270
|
}
|
|
247
271
|
|
|
248
272
|
export interface RateLimiterError {
|
|
249
|
-
method?: string
|
|
273
|
+
method?: string;
|
|
250
274
|
|
|
251
275
|
/**
|
|
252
276
|
* Retry after this many seconds, earliest.
|
|
253
277
|
* cmp.: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After
|
|
254
278
|
*/
|
|
255
|
-
retryAfter: number
|
|
279
|
+
retryAfter: number;
|
|
256
280
|
}
|
|
257
281
|
|
|
258
282
|
export interface CreateProjectParams {
|
|
@@ -299,13 +323,17 @@ export interface ClientHeaderFields {
|
|
|
299
323
|
|
|
300
324
|
export const WorkspaceTimeoutValues = ["30m", "60m", "180m"] as const;
|
|
301
325
|
|
|
302
|
-
export const createServiceMock = function <C extends GitpodClient, S extends GitpodServer>(
|
|
326
|
+
export const createServiceMock = function <C extends GitpodClient, S extends GitpodServer>(
|
|
327
|
+
methods: Partial<JsonRpcProxy<S>>,
|
|
328
|
+
): GitpodServiceImpl<C, S> {
|
|
303
329
|
return new GitpodServiceImpl<C, S>(createServerMock(methods));
|
|
304
|
-
}
|
|
330
|
+
};
|
|
305
331
|
|
|
306
|
-
export const createServerMock = function <C extends GitpodClient, S extends GitpodServer>(
|
|
307
|
-
methods
|
|
308
|
-
|
|
332
|
+
export const createServerMock = function <C extends GitpodClient, S extends GitpodServer>(
|
|
333
|
+
methods: Partial<JsonRpcProxy<S>>,
|
|
334
|
+
): JsonRpcProxy<S> {
|
|
335
|
+
methods.setClient = methods.setClient || (() => {});
|
|
336
|
+
methods.dispose = methods.dispose || (() => {});
|
|
309
337
|
return new Proxy<JsonRpcProxy<S>>(methods as any as JsonRpcProxy<S>, {
|
|
310
338
|
// @ts-ignore
|
|
311
339
|
get: (target: S, property: keyof S) => {
|
|
@@ -314,25 +342,25 @@ export const createServerMock = function <C extends GitpodClient, S extends Gitp
|
|
|
314
342
|
throw new Error(`Method ${property} not implemented`);
|
|
315
343
|
}
|
|
316
344
|
return result;
|
|
317
|
-
}
|
|
345
|
+
},
|
|
318
346
|
});
|
|
319
|
-
}
|
|
347
|
+
};
|
|
320
348
|
|
|
321
349
|
type WorkspaceTimeoutDurationTuple = typeof WorkspaceTimeoutValues;
|
|
322
350
|
export type WorkspaceTimeoutDuration = WorkspaceTimeoutDurationTuple[number];
|
|
323
351
|
|
|
324
352
|
export interface SetWorkspaceTimeoutResult {
|
|
325
|
-
resetTimeoutOnWorkspaces: string[]
|
|
353
|
+
resetTimeoutOnWorkspaces: string[];
|
|
326
354
|
}
|
|
327
355
|
|
|
328
356
|
export interface GetWorkspaceTimeoutResult {
|
|
329
|
-
duration: WorkspaceTimeoutDuration
|
|
330
|
-
canChange: boolean
|
|
357
|
+
duration: WorkspaceTimeoutDuration;
|
|
358
|
+
canChange: boolean;
|
|
331
359
|
}
|
|
332
360
|
|
|
333
361
|
export interface StartWorkspaceResult {
|
|
334
|
-
instanceID: string
|
|
335
|
-
workspaceURL?: string
|
|
362
|
+
instanceID: string;
|
|
363
|
+
workspaceURL?: string;
|
|
336
364
|
}
|
|
337
365
|
|
|
338
366
|
export namespace GitpodServer {
|
|
@@ -376,23 +404,23 @@ export namespace GitpodServer {
|
|
|
376
404
|
readonly roundTripTime?: number;
|
|
377
405
|
}
|
|
378
406
|
export interface UpdateOwnAuthProviderParams {
|
|
379
|
-
readonly entry: AuthProviderEntry.UpdateEntry | AuthProviderEntry.NewEntry
|
|
407
|
+
readonly entry: AuthProviderEntry.UpdateEntry | AuthProviderEntry.NewEntry;
|
|
380
408
|
}
|
|
381
409
|
export interface DeleteOwnAuthProviderParams {
|
|
382
|
-
readonly id: string
|
|
410
|
+
readonly id: string;
|
|
383
411
|
}
|
|
384
412
|
export type AdmissionLevel = "owner" | "everyone";
|
|
385
413
|
export type PinAction = "pin" | "unpin" | "toggle";
|
|
386
414
|
export interface GenerateNewGitpodTokenOptions {
|
|
387
|
-
name?: string
|
|
388
|
-
type: GitpodTokenType
|
|
389
|
-
scopes?: string[]
|
|
415
|
+
name?: string;
|
|
416
|
+
type: GitpodTokenType;
|
|
417
|
+
scopes?: string[];
|
|
390
418
|
}
|
|
391
419
|
}
|
|
392
420
|
|
|
393
|
-
export const GitpodServerPath =
|
|
421
|
+
export const GitpodServerPath = "/gitpod";
|
|
394
422
|
|
|
395
|
-
export const GitpodServerProxy = Symbol(
|
|
423
|
+
export const GitpodServerProxy = Symbol("GitpodServerProxy");
|
|
396
424
|
export type GitpodServerProxy<S extends GitpodServer> = JsonRpcProxy<S>;
|
|
397
425
|
|
|
398
426
|
export class GitpodCompositeClient<Client extends GitpodClient> implements GitpodClient {
|
|
@@ -406,8 +434,8 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
406
434
|
if (index > -1) {
|
|
407
435
|
this.clients.splice(index, 1);
|
|
408
436
|
}
|
|
409
|
-
}
|
|
410
|
-
}
|
|
437
|
+
},
|
|
438
|
+
};
|
|
411
439
|
}
|
|
412
440
|
|
|
413
441
|
onInstanceUpdate(instance: WorkspaceInstance): void {
|
|
@@ -416,7 +444,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
416
444
|
try {
|
|
417
445
|
client.onInstanceUpdate(instance);
|
|
418
446
|
} catch (error) {
|
|
419
|
-
console.error(error)
|
|
447
|
+
console.error(error);
|
|
420
448
|
}
|
|
421
449
|
}
|
|
422
450
|
}
|
|
@@ -428,19 +456,22 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
428
456
|
try {
|
|
429
457
|
client.onPrebuildUpdate(update);
|
|
430
458
|
} catch (error) {
|
|
431
|
-
console.error(error)
|
|
459
|
+
console.error(error);
|
|
432
460
|
}
|
|
433
461
|
}
|
|
434
462
|
}
|
|
435
463
|
}
|
|
436
464
|
|
|
437
|
-
onWorkspaceImageBuildLogs(
|
|
465
|
+
onWorkspaceImageBuildLogs(
|
|
466
|
+
info: WorkspaceImageBuild.StateInfo,
|
|
467
|
+
content: WorkspaceImageBuild.LogContent | undefined,
|
|
468
|
+
): void {
|
|
438
469
|
for (const client of this.clients) {
|
|
439
470
|
if (client.onWorkspaceImageBuildLogs) {
|
|
440
471
|
try {
|
|
441
472
|
client.onWorkspaceImageBuildLogs(info, content);
|
|
442
473
|
} catch (error) {
|
|
443
|
-
console.error(error)
|
|
474
|
+
console.error(error);
|
|
444
475
|
}
|
|
445
476
|
}
|
|
446
477
|
}
|
|
@@ -452,7 +483,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
452
483
|
try {
|
|
453
484
|
client.notifyDidOpenConnection();
|
|
454
485
|
} catch (error) {
|
|
455
|
-
console.error(error)
|
|
486
|
+
console.error(error);
|
|
456
487
|
}
|
|
457
488
|
}
|
|
458
489
|
}
|
|
@@ -464,7 +495,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
464
495
|
try {
|
|
465
496
|
client.notifyDidCloseConnection();
|
|
466
497
|
} catch (error) {
|
|
467
|
-
console.error(error)
|
|
498
|
+
console.error(error);
|
|
468
499
|
}
|
|
469
500
|
}
|
|
470
501
|
}
|
|
@@ -476,17 +507,16 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
476
507
|
try {
|
|
477
508
|
client.onCreditAlert(creditAlert);
|
|
478
509
|
} catch (error) {
|
|
479
|
-
console.error(error)
|
|
510
|
+
console.error(error);
|
|
480
511
|
}
|
|
481
512
|
}
|
|
482
513
|
}
|
|
483
514
|
}
|
|
484
|
-
|
|
485
515
|
}
|
|
486
516
|
|
|
487
517
|
export type GitpodService = GitpodServiceImpl<GitpodClient, GitpodServer>;
|
|
488
518
|
|
|
489
|
-
const hasWindow =
|
|
519
|
+
const hasWindow = typeof window !== "undefined";
|
|
490
520
|
const phasesOrder: Record<WorkspaceInstancePhase, number> = {
|
|
491
521
|
unknown: 0,
|
|
492
522
|
preparing: 1,
|
|
@@ -496,44 +526,41 @@ const phasesOrder: Record<WorkspaceInstancePhase, number> = {
|
|
|
496
526
|
running: 5,
|
|
497
527
|
interrupted: 6,
|
|
498
528
|
stopping: 7,
|
|
499
|
-
stopped: 8
|
|
529
|
+
stopped: 8,
|
|
500
530
|
};
|
|
501
531
|
export class WorkspaceInstanceUpdateListener {
|
|
502
532
|
private readonly onDidChangeEmitter = new Emitter<void>();
|
|
503
533
|
readonly onDidChange = this.onDidChangeEmitter.event;
|
|
504
534
|
|
|
505
|
-
private source:
|
|
535
|
+
private source: "sync" | "update" = "sync";
|
|
506
536
|
|
|
507
537
|
get info(): WorkspaceInfo {
|
|
508
538
|
return this._info;
|
|
509
539
|
}
|
|
510
540
|
|
|
511
|
-
constructor(
|
|
512
|
-
private readonly service: GitpodService,
|
|
513
|
-
private _info: WorkspaceInfo
|
|
514
|
-
) {
|
|
541
|
+
constructor(private readonly service: GitpodService, private _info: WorkspaceInfo) {
|
|
515
542
|
service.registerClient({
|
|
516
|
-
onInstanceUpdate: instance => {
|
|
543
|
+
onInstanceUpdate: (instance) => {
|
|
517
544
|
if (this.isOutOfOrder(instance)) {
|
|
518
545
|
return;
|
|
519
546
|
}
|
|
520
547
|
this.cancelSync();
|
|
521
548
|
this._info.latestInstance = instance;
|
|
522
|
-
this.source =
|
|
549
|
+
this.source = "update";
|
|
523
550
|
this.onDidChangeEmitter.fire(undefined);
|
|
524
551
|
},
|
|
525
552
|
notifyDidOpenConnection: () => {
|
|
526
553
|
this.sync();
|
|
527
|
-
}
|
|
554
|
+
},
|
|
528
555
|
});
|
|
529
556
|
if (hasWindow) {
|
|
530
557
|
// learn about page lifecycle here: https://developers.google.com/web/updates/2018/07/page-lifecycle-api
|
|
531
|
-
window.document.addEventListener(
|
|
532
|
-
if (window.document.visibilityState ===
|
|
558
|
+
window.document.addEventListener("visibilitychange", async () => {
|
|
559
|
+
if (window.document.visibilityState === "visible") {
|
|
533
560
|
this.sync();
|
|
534
561
|
}
|
|
535
562
|
});
|
|
536
|
-
window.addEventListener(
|
|
563
|
+
window.addEventListener("pageshow", (e) => {
|
|
537
564
|
if (e.persisted) {
|
|
538
565
|
this.sync();
|
|
539
566
|
}
|
|
@@ -561,12 +588,12 @@ export class WorkspaceInstanceUpdateListener {
|
|
|
561
588
|
return;
|
|
562
589
|
}
|
|
563
590
|
this._info = info;
|
|
564
|
-
this.source =
|
|
591
|
+
this.source = "sync";
|
|
565
592
|
this.onDidChangeEmitter.fire(undefined);
|
|
566
593
|
} catch (e) {
|
|
567
|
-
console.error(
|
|
594
|
+
console.error("failed to sync workspace instance:", e);
|
|
568
595
|
}
|
|
569
|
-
})
|
|
596
|
+
});
|
|
570
597
|
}
|
|
571
598
|
private cancelSync(): void {
|
|
572
599
|
if (this.syncTokenSource) {
|
|
@@ -583,7 +610,7 @@ export class WorkspaceInstanceUpdateListener {
|
|
|
583
610
|
if (instance.workspaceId !== this._info.workspace.id) {
|
|
584
611
|
return true;
|
|
585
612
|
}
|
|
586
|
-
if (this.source ===
|
|
613
|
+
if (this.source === "update") {
|
|
587
614
|
return false;
|
|
588
615
|
}
|
|
589
616
|
if (instance.id !== this.info.latestInstance?.id) {
|
|
@@ -591,15 +618,13 @@ export class WorkspaceInstanceUpdateListener {
|
|
|
591
618
|
}
|
|
592
619
|
return phasesOrder[instance.status.phase] < phasesOrder[this.info.latestInstance.status.phase];
|
|
593
620
|
}
|
|
594
|
-
|
|
595
621
|
}
|
|
596
622
|
|
|
597
623
|
export interface GitpodServiceOptions {
|
|
598
|
-
onReconnect?: () =>
|
|
624
|
+
onReconnect?: () => void | Promise<void>;
|
|
599
625
|
}
|
|
600
626
|
|
|
601
627
|
export class GitpodServiceImpl<Client extends GitpodClient, Server extends GitpodServer> {
|
|
602
|
-
|
|
603
628
|
private readonly compositeClient = new GitpodCompositeClient<Client>();
|
|
604
629
|
|
|
605
630
|
constructor(public readonly server: JsonRpcProxy<Server>, private options?: GitpodServiceOptions) {
|
|
@@ -614,7 +639,8 @@ export class GitpodServiceImpl<Client extends GitpodClient, Server extends Gitpo
|
|
|
614
639
|
|
|
615
640
|
private readonly instanceListeners = new Map<string, Promise<WorkspaceInstanceUpdateListener>>();
|
|
616
641
|
listenToInstance(workspaceId: string): Promise<WorkspaceInstanceUpdateListener> {
|
|
617
|
-
const listener =
|
|
642
|
+
const listener =
|
|
643
|
+
this.instanceListeners.get(workspaceId) ||
|
|
618
644
|
(async () => {
|
|
619
645
|
const info = await this.server.getWorkspace(workspaceId);
|
|
620
646
|
return new WorkspaceInstanceUpdateListener(this, info);
|
|
@@ -630,26 +656,25 @@ export class GitpodServiceImpl<Client extends GitpodClient, Server extends Gitpo
|
|
|
630
656
|
}
|
|
631
657
|
}
|
|
632
658
|
|
|
633
|
-
export function createGitpodService<C extends GitpodClient, S extends GitpodServer>(
|
|
659
|
+
export function createGitpodService<C extends GitpodClient, S extends GitpodServer>(
|
|
660
|
+
serverUrl: string | Promise<string>,
|
|
661
|
+
) {
|
|
634
662
|
const toWsUrl = (serverUrl: string) => {
|
|
635
|
-
return new GitpodHostUrl(serverUrl)
|
|
636
|
-
.asWebsocket()
|
|
637
|
-
.withApi({ pathname: GitpodServerPath })
|
|
638
|
-
.toString();
|
|
663
|
+
return new GitpodHostUrl(serverUrl).asWebsocket().withApi({ pathname: GitpodServerPath }).toString();
|
|
639
664
|
};
|
|
640
665
|
let url: string | Promise<string>;
|
|
641
666
|
if (typeof serverUrl === "string") {
|
|
642
667
|
url = toWsUrl(serverUrl);
|
|
643
668
|
} else {
|
|
644
|
-
url = serverUrl.then(url => toWsUrl(url));
|
|
669
|
+
url = serverUrl.then((url) => toWsUrl(url));
|
|
645
670
|
}
|
|
646
671
|
|
|
647
672
|
const connectionProvider = new WebSocketConnectionProvider();
|
|
648
|
-
let onReconnect = () => {
|
|
673
|
+
let onReconnect = () => {};
|
|
649
674
|
const gitpodServer = connectionProvider.createProxy<S>(url, undefined, {
|
|
650
|
-
onListening: socket => {
|
|
675
|
+
onListening: (socket) => {
|
|
651
676
|
onReconnect = () => socket.reconnect();
|
|
652
|
-
}
|
|
677
|
+
},
|
|
653
678
|
});
|
|
654
679
|
return new GitpodServiceImpl<C, S>(gitpodServer, { onReconnect });
|
|
655
|
-
}
|
|
680
|
+
}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* See License-AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
export enum HeadlessWorkspaceEventType {
|
|
9
8
|
LogOutput = "log-output",
|
|
10
9
|
FinishedSuccessfully = "finish-success",
|
|
@@ -12,14 +11,16 @@ export enum HeadlessWorkspaceEventType {
|
|
|
12
11
|
AbortedTimedOut = "aborted-timeout",
|
|
13
12
|
Aborted = "aborted",
|
|
14
13
|
Failed = "failed",
|
|
15
|
-
Started = "started"
|
|
14
|
+
Started = "started",
|
|
16
15
|
}
|
|
17
16
|
export namespace HeadlessWorkspaceEventType {
|
|
18
17
|
export function isRunning(t: HeadlessWorkspaceEventType) {
|
|
19
18
|
return t === HeadlessWorkspaceEventType.LogOutput;
|
|
20
19
|
}
|
|
21
20
|
export function didFinish(t: HeadlessWorkspaceEventType) {
|
|
22
|
-
return
|
|
21
|
+
return (
|
|
22
|
+
t === HeadlessWorkspaceEventType.FinishedButFailed || t === HeadlessWorkspaceEventType.FinishedSuccessfully
|
|
23
|
+
);
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
26
|
|
|
@@ -36,4 +37,4 @@ export interface HeadlessLogUrls {
|
|
|
36
37
|
|
|
37
38
|
/** cmp. @const HEADLESS_LOG_STREAM_STATUS_CODE_REGEX */
|
|
38
39
|
export const HEADLESS_LOG_STREAM_STATUS_CODE = "X-LogStream-StatusCode";
|
|
39
|
-
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
|
/**
|
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
|
|
8
|
-
export * from
|
|
9
|
-
export * from
|
|
10
|
-
export * from
|
|
11
|
-
export * from
|
|
12
|
-
export * from
|
|
13
|
-
export * from
|
|
14
|
-
export * from
|
|
15
|
-
export * from
|
|
16
|
-
export * from
|
|
17
|
-
export * from
|
|
18
|
-
export * from
|
|
19
|
-
export * from
|
|
20
|
-
export * from
|
|
21
|
-
export * from
|
|
22
|
-
export * from
|
|
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";
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* See License-AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { v4 as uuidv4 } from
|
|
7
|
+
import { v4 as uuidv4 } from "uuid";
|
|
8
8
|
|
|
9
9
|
const InstallationAdminSettingsPrototype = {
|
|
10
|
-
sendTelemetry: true
|
|
11
|
-
}
|
|
10
|
+
sendTelemetry: true,
|
|
11
|
+
};
|
|
12
12
|
|
|
13
13
|
export type InstallationAdminSettings = typeof InstallationAdminSettingsPrototype;
|
|
14
14
|
|
|
@@ -24,10 +24,10 @@ export interface InstallationAdmin {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
export interface TelemetryData {
|
|
27
|
-
installationAdmin: InstallationAdmin
|
|
28
|
-
totalUsers: number
|
|
29
|
-
totalWorkspaces: number
|
|
30
|
-
totalInstances: number
|
|
27
|
+
installationAdmin: InstallationAdmin;
|
|
28
|
+
totalUsers: number;
|
|
29
|
+
totalWorkspaces: number;
|
|
30
|
+
totalInstances: number;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
export namespace InstallationAdmin {
|
|
@@ -36,7 +36,7 @@ export namespace InstallationAdmin {
|
|
|
36
36
|
id: uuidv4(),
|
|
37
37
|
settings: {
|
|
38
38
|
...InstallationAdminSettingsPrototype,
|
|
39
|
-
}
|
|
39
|
+
},
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
}
|
package/src/license-protocol.ts
CHANGED
|
@@ -4,11 +4,10 @@
|
|
|
4
4
|
* See License-AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
export interface LicenseValidationResult {
|
|
9
|
-
valid: boolean
|
|
10
|
-
msg?: string
|
|
11
|
-
issue?: LicenseIssue
|
|
8
|
+
valid: boolean;
|
|
9
|
+
msg?: string;
|
|
10
|
+
issue?: LicenseIssue;
|
|
12
11
|
}
|
|
13
12
|
|
|
14
13
|
export type LicenseIssue = "seats-exhausted";
|
|
@@ -34,5 +33,5 @@ export enum LicenseFeature {
|
|
|
34
33
|
export interface LicenseService {
|
|
35
34
|
validateLicense(): Promise<LicenseValidationResult>;
|
|
36
35
|
getLicenseInfo(): Promise<GetLicenseInfoResult>;
|
|
37
|
-
licenseIncludesFeature(feature: LicenseFeature): Promise<boolean
|
|
38
|
-
}
|
|
36
|
+
licenseIncludesFeature(feature: LicenseFeature): Promise<boolean>;
|
|
37
|
+
}
|