@gitpod/gitpod-protocol 0.1.5-se-prebuilds-failed.3 → 0.1.5-se-playground.14
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.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 +4 -4
- 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 +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 +33 -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.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 +3 -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 +2 -0
- package/lib/messaging/error.d.ts.map +1 -1
- package/lib/messaging/error.js +4 -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 +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 +83 -35
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +165 -87
- 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 +9 -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/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 +6 -6
- package/lib/util/tracing.d.ts.map +1 -1
- package/lib/util/tracing.js +14 -16
- 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/workspace-instance.d.ts +18 -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 +9 -6
- package/pkg-yarn.lock +7 -5
- package/provenance-bundle.jsonl +1 -1
- package/src/accounting-protocol.ts +63 -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 +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 +153 -110
- 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 +11 -8
- 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 +7 -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 +343 -237
- package/src/snapshot-url.spec.ts +9 -7
- package/src/team-subscription-protocol.ts +57 -23
- package/src/teams-projects-protocol.ts +15 -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/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 +54 -51
- package/src/util/workspace-port-authentication.ts +10 -13
- package/src/workspace-cluster.ts +15 -12
- package/src/workspace-instance.ts +52 -24
- package/src/wsready.ts +3 -3
- package/data/builtin-theia-plugins.json +0 -372
- 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/src/theia-plugins.ts +0 -11
|
@@ -7,40 +7,39 @@
|
|
|
7
7
|
import { injectable } from "inversify";
|
|
8
8
|
import * as yaml from "js-yaml";
|
|
9
9
|
import * as Ajv from "ajv";
|
|
10
|
-
import { log } from
|
|
10
|
+
import { log } from "./util/logging";
|
|
11
11
|
import { WorkspaceConfig, PortRangeConfig } from "./protocol";
|
|
12
12
|
|
|
13
|
-
export type MaybeConfig = WorkspaceConfig | undefined
|
|
13
|
+
export type MaybeConfig = WorkspaceConfig | undefined;
|
|
14
14
|
|
|
15
|
-
const schema = require(
|
|
15
|
+
const schema = require("../data/gitpod-schema.json");
|
|
16
16
|
const validate = new Ajv().compile(schema);
|
|
17
17
|
const defaultParseOptions = {
|
|
18
18
|
acceptPortRanges: false,
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
export interface ParseResult {
|
|
22
|
-
config: WorkspaceConfig
|
|
23
|
-
parsedConfig?: WorkspaceConfig
|
|
24
|
-
validationErrors?: string[]
|
|
22
|
+
config: WorkspaceConfig;
|
|
23
|
+
parsedConfig?: WorkspaceConfig;
|
|
24
|
+
validationErrors?: string[];
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
@injectable()
|
|
28
28
|
export class GitpodFileParser {
|
|
29
|
-
|
|
30
29
|
public parse(content: string, parseOptions = {}, defaultConfig: WorkspaceConfig = {}): ParseResult {
|
|
31
30
|
const options = {
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
...defaultParseOptions,
|
|
32
|
+
...parseOptions,
|
|
34
33
|
};
|
|
35
34
|
try {
|
|
36
35
|
const parsedConfig = yaml.safeLoad(content) as any;
|
|
37
36
|
validate(parsedConfig);
|
|
38
|
-
const validationErrors = validate.errors ? validate.errors.map(
|
|
37
|
+
const validationErrors = validate.errors ? validate.errors.map((e) => e.message || e.keyword) : undefined;
|
|
39
38
|
if (validationErrors && validationErrors.length > 0) {
|
|
40
39
|
return {
|
|
41
40
|
config: defaultConfig,
|
|
42
41
|
parsedConfig,
|
|
43
|
-
validationErrors
|
|
42
|
+
validationErrors,
|
|
44
43
|
};
|
|
45
44
|
}
|
|
46
45
|
const overrides = {} as any;
|
|
@@ -49,17 +48,17 @@ export class GitpodFileParser {
|
|
|
49
48
|
}
|
|
50
49
|
return {
|
|
51
50
|
config: {
|
|
52
|
-
...
|
|
53
|
-
...
|
|
54
|
-
...
|
|
51
|
+
...defaultConfig,
|
|
52
|
+
...parsedConfig,
|
|
53
|
+
...overrides,
|
|
55
54
|
},
|
|
56
|
-
parsedConfig
|
|
55
|
+
parsedConfig,
|
|
57
56
|
};
|
|
58
57
|
} catch (err) {
|
|
59
|
-
log.error(
|
|
58
|
+
log.error("Unparsable Gitpod configuration", err, { content });
|
|
60
59
|
return {
|
|
61
60
|
config: defaultConfig,
|
|
62
|
-
validationErrors: [
|
|
61
|
+
validationErrors: ["Unparsable Gitpod configuration: " + err.toString()],
|
|
63
62
|
};
|
|
64
63
|
}
|
|
65
64
|
}
|
package/src/gitpod-service.ts
CHANGED
|
@@ -5,32 +5,58 @@
|
|
|
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 {
|
|
51
|
+
TeamSubscription,
|
|
52
|
+
TeamSubscription2,
|
|
53
|
+
TeamSubscriptionSlot,
|
|
54
|
+
TeamSubscriptionSlotResolved,
|
|
55
|
+
} from "./team-subscription-protocol";
|
|
56
|
+
import { RemotePageMessage, RemoteTrackMessage, RemoteIdentifyMessage } from "./analytics";
|
|
57
|
+
import { IDEServer } from "./ide-protocol";
|
|
58
|
+
import { InstallationAdminSettings, TelemetryData } from "./installation-admin-protocol";
|
|
59
|
+
import { Currency } from "./plans";
|
|
34
60
|
|
|
35
61
|
export interface GitpodClient {
|
|
36
62
|
onInstanceUpdate(instance: WorkspaceInstance): void;
|
|
@@ -46,7 +72,7 @@ export interface GitpodClient {
|
|
|
46
72
|
//#endregion
|
|
47
73
|
}
|
|
48
74
|
|
|
49
|
-
export const GitpodServer = Symbol(
|
|
75
|
+
export const GitpodServer = Symbol("GitpodServer");
|
|
50
76
|
export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer, LicenseService, IDEServer {
|
|
51
77
|
// User related API
|
|
52
78
|
getLoggedInUser(): Promise<User>;
|
|
@@ -159,8 +185,8 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
159
185
|
deleteProjectEnvironmentVariable(variableId: string): Promise<void>;
|
|
160
186
|
|
|
161
187
|
// content service
|
|
162
|
-
getContentBlobUploadUrl(name: string): Promise<string
|
|
163
|
-
getContentBlobDownloadUrl(name: string): Promise<string
|
|
188
|
+
getContentBlobUploadUrl(name: string): Promise<string>;
|
|
189
|
+
getContentBlobDownloadUrl(name: string): Promise<string>;
|
|
164
190
|
|
|
165
191
|
// Gitpod token
|
|
166
192
|
getGitpodTokens(): Promise<GitpodToken[]>;
|
|
@@ -169,6 +195,7 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
169
195
|
|
|
170
196
|
// misc
|
|
171
197
|
sendFeedback(feedback: string): Promise<string | undefined>;
|
|
198
|
+
isGitHubAppEnabled(): Promise<boolean>;
|
|
172
199
|
registerGithubApp(installationId: string): Promise<void>;
|
|
173
200
|
|
|
174
201
|
/**
|
|
@@ -197,15 +224,6 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
197
224
|
*/
|
|
198
225
|
getLayout(workspaceId: string): Promise<string | undefined>;
|
|
199
226
|
|
|
200
|
-
/**
|
|
201
|
-
* @param params
|
|
202
|
-
* @returns promise resolves to an URL to be used for the upload
|
|
203
|
-
*/
|
|
204
|
-
preparePluginUpload(params: PreparePluginUploadParams): Promise<string>
|
|
205
|
-
resolvePlugins(workspaceId: string, params: ResolvePluginsParams): Promise<ResolvedPlugins>;
|
|
206
|
-
installUserPlugins(params: InstallPluginsParams): Promise<boolean>;
|
|
207
|
-
uninstallUserPlugin(params: UninstallPluginParams): Promise<boolean>;
|
|
208
|
-
|
|
209
227
|
guessGitTokenScopes(params: GuessGitTokenScopesParams): Promise<GuessedGitTokenScopes>;
|
|
210
228
|
|
|
211
229
|
/**
|
|
@@ -223,7 +241,9 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
223
241
|
*/
|
|
224
242
|
getChargebeeSiteId(): Promise<string>;
|
|
225
243
|
createPortalSession(): Promise<{}>;
|
|
244
|
+
createTeamPortalSession(teamId: string): Promise<{}>;
|
|
226
245
|
checkout(planId: string, planQuantity?: number): Promise<{}>;
|
|
246
|
+
teamCheckout(teamId: string, planId: string): Promise<{}>;
|
|
227
247
|
getAvailableCoupons(): Promise<PlanCoupon[]>;
|
|
228
248
|
getAppliedCoupons(): Promise<PlanCoupon[]>;
|
|
229
249
|
|
|
@@ -235,17 +255,28 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
235
255
|
subscriptionCancel(subscriptionId: string): Promise<void>;
|
|
236
256
|
subscriptionCancelDowngrade(subscriptionId: string): Promise<void>;
|
|
237
257
|
|
|
258
|
+
getTeamSubscription(teamId: string): Promise<TeamSubscription2 | undefined>;
|
|
238
259
|
tsGet(): Promise<TeamSubscription[]>;
|
|
239
260
|
tsGetSlots(): Promise<TeamSubscriptionSlotResolved[]>;
|
|
240
|
-
tsGetUnassignedSlot(teamSubscriptionId: string): Promise<TeamSubscriptionSlot | undefined
|
|
261
|
+
tsGetUnassignedSlot(teamSubscriptionId: string): Promise<TeamSubscriptionSlot | undefined>;
|
|
241
262
|
tsAddSlots(teamSubscriptionId: string, quantity: number): Promise<void>;
|
|
242
|
-
tsAssignSlot(
|
|
263
|
+
tsAssignSlot(
|
|
264
|
+
teamSubscriptionId: string,
|
|
265
|
+
teamSubscriptionSlotId: string,
|
|
266
|
+
identityStr: string | undefined,
|
|
267
|
+
): Promise<void>;
|
|
243
268
|
tsReassignSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string, newIdentityStr: string): Promise<void>;
|
|
244
269
|
tsDeactivateSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string): Promise<void>;
|
|
245
270
|
tsReactivateSlot(teamSubscriptionId: string, teamSubscriptionSlotId: string): Promise<void>;
|
|
246
271
|
|
|
247
272
|
getGithubUpgradeUrls(): Promise<GithubUpgradeURL[]>;
|
|
248
273
|
|
|
274
|
+
getStripePublishableKey(): Promise<string>;
|
|
275
|
+
getStripeSetupIntentClientSecret(): Promise<string>;
|
|
276
|
+
findStripeSubscriptionIdForTeam(teamId: string): Promise<string | undefined>;
|
|
277
|
+
subscribeTeamToStripe(teamId: string, setupIntentId: string, currency: Currency): Promise<void>;
|
|
278
|
+
getStripePortalUrlForTeam(teamId: string): Promise<string>;
|
|
279
|
+
|
|
249
280
|
/**
|
|
250
281
|
* Analytics
|
|
251
282
|
*/
|
|
@@ -255,13 +286,13 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
255
286
|
}
|
|
256
287
|
|
|
257
288
|
export interface RateLimiterError {
|
|
258
|
-
method?: string
|
|
289
|
+
method?: string;
|
|
259
290
|
|
|
260
291
|
/**
|
|
261
292
|
* Retry after this many seconds, earliest.
|
|
262
293
|
* cmp.: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After
|
|
263
294
|
*/
|
|
264
|
-
retryAfter: number
|
|
295
|
+
retryAfter: number;
|
|
265
296
|
}
|
|
266
297
|
|
|
267
298
|
export interface CreateProjectParams {
|
|
@@ -292,7 +323,7 @@ export interface ProviderRepository {
|
|
|
292
323
|
account: string;
|
|
293
324
|
accountAvatarUrl: string;
|
|
294
325
|
cloneUrl: string;
|
|
295
|
-
updatedAt
|
|
326
|
+
updatedAt?: string;
|
|
296
327
|
installationId?: number;
|
|
297
328
|
installationUpdatedAt?: string;
|
|
298
329
|
|
|
@@ -306,15 +337,28 @@ export interface ClientHeaderFields {
|
|
|
306
337
|
clientRegion?: string;
|
|
307
338
|
}
|
|
308
339
|
|
|
309
|
-
export const
|
|
310
|
-
|
|
311
|
-
export const
|
|
340
|
+
export const WORKSPACE_TIMEOUT_DEFAULT_SHORT = "short";
|
|
341
|
+
export const WORKSPACE_TIMEOUT_DEFAULT_LONG = "long";
|
|
342
|
+
export const WORKSPACE_TIMEOUT_EXTENDED = "extended";
|
|
343
|
+
export const WORKSPACE_TIMEOUT_EXTENDED_ALT = "180m"; // for backwards compatibility since the IDE uses this
|
|
344
|
+
export const WorkspaceTimeoutValues = [
|
|
345
|
+
WORKSPACE_TIMEOUT_DEFAULT_SHORT,
|
|
346
|
+
WORKSPACE_TIMEOUT_DEFAULT_LONG,
|
|
347
|
+
WORKSPACE_TIMEOUT_EXTENDED,
|
|
348
|
+
WORKSPACE_TIMEOUT_EXTENDED_ALT,
|
|
349
|
+
] as const;
|
|
350
|
+
|
|
351
|
+
export const createServiceMock = function <C extends GitpodClient, S extends GitpodServer>(
|
|
352
|
+
methods: Partial<JsonRpcProxy<S>>,
|
|
353
|
+
): GitpodServiceImpl<C, S> {
|
|
312
354
|
return new GitpodServiceImpl<C, S>(createServerMock(methods));
|
|
313
|
-
}
|
|
355
|
+
};
|
|
314
356
|
|
|
315
|
-
export const createServerMock = function <C extends GitpodClient, S extends GitpodServer>(
|
|
316
|
-
methods
|
|
317
|
-
|
|
357
|
+
export const createServerMock = function <C extends GitpodClient, S extends GitpodServer>(
|
|
358
|
+
methods: Partial<JsonRpcProxy<S>>,
|
|
359
|
+
): JsonRpcProxy<S> {
|
|
360
|
+
methods.setClient = methods.setClient || (() => {});
|
|
361
|
+
methods.dispose = methods.dispose || (() => {});
|
|
318
362
|
return new Proxy<JsonRpcProxy<S>>(methods as any as JsonRpcProxy<S>, {
|
|
319
363
|
// @ts-ignore
|
|
320
364
|
get: (target: S, property: keyof S) => {
|
|
@@ -323,25 +367,26 @@ export const createServerMock = function <C extends GitpodClient, S extends Gitp
|
|
|
323
367
|
throw new Error(`Method ${property} not implemented`);
|
|
324
368
|
}
|
|
325
369
|
return result;
|
|
326
|
-
}
|
|
370
|
+
},
|
|
327
371
|
});
|
|
328
|
-
}
|
|
372
|
+
};
|
|
329
373
|
|
|
330
374
|
type WorkspaceTimeoutDurationTuple = typeof WorkspaceTimeoutValues;
|
|
331
375
|
export type WorkspaceTimeoutDuration = WorkspaceTimeoutDurationTuple[number];
|
|
332
376
|
|
|
333
377
|
export interface SetWorkspaceTimeoutResult {
|
|
334
|
-
resetTimeoutOnWorkspaces: string[]
|
|
378
|
+
resetTimeoutOnWorkspaces: string[];
|
|
335
379
|
}
|
|
336
380
|
|
|
337
381
|
export interface GetWorkspaceTimeoutResult {
|
|
338
|
-
duration: WorkspaceTimeoutDuration
|
|
339
|
-
|
|
382
|
+
duration: WorkspaceTimeoutDuration;
|
|
383
|
+
durationRaw: string;
|
|
384
|
+
canChange: boolean;
|
|
340
385
|
}
|
|
341
386
|
|
|
342
387
|
export interface StartWorkspaceResult {
|
|
343
|
-
instanceID: string
|
|
344
|
-
workspaceURL?: string
|
|
388
|
+
instanceID: string;
|
|
389
|
+
workspaceURL?: string;
|
|
345
390
|
}
|
|
346
391
|
|
|
347
392
|
export namespace GitpodServer {
|
|
@@ -385,23 +430,23 @@ export namespace GitpodServer {
|
|
|
385
430
|
readonly roundTripTime?: number;
|
|
386
431
|
}
|
|
387
432
|
export interface UpdateOwnAuthProviderParams {
|
|
388
|
-
readonly entry: AuthProviderEntry.UpdateEntry | AuthProviderEntry.NewEntry
|
|
433
|
+
readonly entry: AuthProviderEntry.UpdateEntry | AuthProviderEntry.NewEntry;
|
|
389
434
|
}
|
|
390
435
|
export interface DeleteOwnAuthProviderParams {
|
|
391
|
-
readonly id: string
|
|
436
|
+
readonly id: string;
|
|
392
437
|
}
|
|
393
438
|
export type AdmissionLevel = "owner" | "everyone";
|
|
394
439
|
export type PinAction = "pin" | "unpin" | "toggle";
|
|
395
440
|
export interface GenerateNewGitpodTokenOptions {
|
|
396
|
-
name?: string
|
|
397
|
-
type: GitpodTokenType
|
|
398
|
-
scopes?: string[]
|
|
441
|
+
name?: string;
|
|
442
|
+
type: GitpodTokenType;
|
|
443
|
+
scopes?: string[];
|
|
399
444
|
}
|
|
400
445
|
}
|
|
401
446
|
|
|
402
|
-
export const GitpodServerPath =
|
|
447
|
+
export const GitpodServerPath = "/gitpod";
|
|
403
448
|
|
|
404
|
-
export const GitpodServerProxy = Symbol(
|
|
449
|
+
export const GitpodServerProxy = Symbol("GitpodServerProxy");
|
|
405
450
|
export type GitpodServerProxy<S extends GitpodServer> = JsonRpcProxy<S>;
|
|
406
451
|
|
|
407
452
|
export class GitpodCompositeClient<Client extends GitpodClient> implements GitpodClient {
|
|
@@ -415,8 +460,8 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
415
460
|
if (index > -1) {
|
|
416
461
|
this.clients.splice(index, 1);
|
|
417
462
|
}
|
|
418
|
-
}
|
|
419
|
-
}
|
|
463
|
+
},
|
|
464
|
+
};
|
|
420
465
|
}
|
|
421
466
|
|
|
422
467
|
onInstanceUpdate(instance: WorkspaceInstance): void {
|
|
@@ -425,7 +470,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
425
470
|
try {
|
|
426
471
|
client.onInstanceUpdate(instance);
|
|
427
472
|
} catch (error) {
|
|
428
|
-
console.error(error)
|
|
473
|
+
console.error(error);
|
|
429
474
|
}
|
|
430
475
|
}
|
|
431
476
|
}
|
|
@@ -437,19 +482,22 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
437
482
|
try {
|
|
438
483
|
client.onPrebuildUpdate(update);
|
|
439
484
|
} catch (error) {
|
|
440
|
-
console.error(error)
|
|
485
|
+
console.error(error);
|
|
441
486
|
}
|
|
442
487
|
}
|
|
443
488
|
}
|
|
444
489
|
}
|
|
445
490
|
|
|
446
|
-
onWorkspaceImageBuildLogs(
|
|
491
|
+
onWorkspaceImageBuildLogs(
|
|
492
|
+
info: WorkspaceImageBuild.StateInfo,
|
|
493
|
+
content: WorkspaceImageBuild.LogContent | undefined,
|
|
494
|
+
): void {
|
|
447
495
|
for (const client of this.clients) {
|
|
448
496
|
if (client.onWorkspaceImageBuildLogs) {
|
|
449
497
|
try {
|
|
450
498
|
client.onWorkspaceImageBuildLogs(info, content);
|
|
451
499
|
} catch (error) {
|
|
452
|
-
console.error(error)
|
|
500
|
+
console.error(error);
|
|
453
501
|
}
|
|
454
502
|
}
|
|
455
503
|
}
|
|
@@ -461,7 +509,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
461
509
|
try {
|
|
462
510
|
client.notifyDidOpenConnection();
|
|
463
511
|
} catch (error) {
|
|
464
|
-
console.error(error)
|
|
512
|
+
console.error(error);
|
|
465
513
|
}
|
|
466
514
|
}
|
|
467
515
|
}
|
|
@@ -473,7 +521,7 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
473
521
|
try {
|
|
474
522
|
client.notifyDidCloseConnection();
|
|
475
523
|
} catch (error) {
|
|
476
|
-
console.error(error)
|
|
524
|
+
console.error(error);
|
|
477
525
|
}
|
|
478
526
|
}
|
|
479
527
|
}
|
|
@@ -485,64 +533,61 @@ export class GitpodCompositeClient<Client extends GitpodClient> implements Gitpo
|
|
|
485
533
|
try {
|
|
486
534
|
client.onCreditAlert(creditAlert);
|
|
487
535
|
} catch (error) {
|
|
488
|
-
console.error(error)
|
|
536
|
+
console.error(error);
|
|
489
537
|
}
|
|
490
538
|
}
|
|
491
539
|
}
|
|
492
540
|
}
|
|
493
|
-
|
|
494
541
|
}
|
|
495
542
|
|
|
496
543
|
export type GitpodService = GitpodServiceImpl<GitpodClient, GitpodServer>;
|
|
497
544
|
|
|
498
|
-
const hasWindow =
|
|
545
|
+
const hasWindow = typeof window !== "undefined";
|
|
499
546
|
const phasesOrder: Record<WorkspaceInstancePhase, number> = {
|
|
500
547
|
unknown: 0,
|
|
501
548
|
preparing: 1,
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
549
|
+
building: 2,
|
|
550
|
+
pending: 3,
|
|
551
|
+
creating: 4,
|
|
552
|
+
initializing: 5,
|
|
553
|
+
running: 6,
|
|
554
|
+
interrupted: 7,
|
|
555
|
+
stopping: 8,
|
|
556
|
+
stopped: 9,
|
|
509
557
|
};
|
|
510
558
|
export class WorkspaceInstanceUpdateListener {
|
|
511
559
|
private readonly onDidChangeEmitter = new Emitter<void>();
|
|
512
560
|
readonly onDidChange = this.onDidChangeEmitter.event;
|
|
513
561
|
|
|
514
|
-
private source:
|
|
562
|
+
private source: "sync" | "update" = "sync";
|
|
515
563
|
|
|
516
564
|
get info(): WorkspaceInfo {
|
|
517
565
|
return this._info;
|
|
518
566
|
}
|
|
519
567
|
|
|
520
|
-
constructor(
|
|
521
|
-
private readonly service: GitpodService,
|
|
522
|
-
private _info: WorkspaceInfo
|
|
523
|
-
) {
|
|
568
|
+
constructor(private readonly service: GitpodService, private _info: WorkspaceInfo) {
|
|
524
569
|
service.registerClient({
|
|
525
|
-
onInstanceUpdate: instance => {
|
|
570
|
+
onInstanceUpdate: (instance) => {
|
|
526
571
|
if (this.isOutOfOrder(instance)) {
|
|
527
572
|
return;
|
|
528
573
|
}
|
|
529
574
|
this.cancelSync();
|
|
530
575
|
this._info.latestInstance = instance;
|
|
531
|
-
this.source =
|
|
576
|
+
this.source = "update";
|
|
532
577
|
this.onDidChangeEmitter.fire(undefined);
|
|
533
578
|
},
|
|
534
579
|
notifyDidOpenConnection: () => {
|
|
535
580
|
this.sync();
|
|
536
|
-
}
|
|
581
|
+
},
|
|
537
582
|
});
|
|
538
583
|
if (hasWindow) {
|
|
539
584
|
// learn about page lifecycle here: https://developers.google.com/web/updates/2018/07/page-lifecycle-api
|
|
540
|
-
window.document.addEventListener(
|
|
541
|
-
if (window.document.visibilityState ===
|
|
585
|
+
window.document.addEventListener("visibilitychange", async () => {
|
|
586
|
+
if (window.document.visibilityState === "visible") {
|
|
542
587
|
this.sync();
|
|
543
588
|
}
|
|
544
589
|
});
|
|
545
|
-
window.addEventListener(
|
|
590
|
+
window.addEventListener("pageshow", (e) => {
|
|
546
591
|
if (e.persisted) {
|
|
547
592
|
this.sync();
|
|
548
593
|
}
|
|
@@ -570,12 +615,12 @@ export class WorkspaceInstanceUpdateListener {
|
|
|
570
615
|
return;
|
|
571
616
|
}
|
|
572
617
|
this._info = info;
|
|
573
|
-
this.source =
|
|
618
|
+
this.source = "sync";
|
|
574
619
|
this.onDidChangeEmitter.fire(undefined);
|
|
575
620
|
} catch (e) {
|
|
576
|
-
console.error(
|
|
621
|
+
console.error("failed to sync workspace instance:", e);
|
|
577
622
|
}
|
|
578
|
-
})
|
|
623
|
+
});
|
|
579
624
|
}
|
|
580
625
|
private cancelSync(): void {
|
|
581
626
|
if (this.syncTokenSource) {
|
|
@@ -592,7 +637,7 @@ export class WorkspaceInstanceUpdateListener {
|
|
|
592
637
|
if (instance.workspaceId !== this._info.workspace.id) {
|
|
593
638
|
return true;
|
|
594
639
|
}
|
|
595
|
-
if (this.source ===
|
|
640
|
+
if (this.source === "update") {
|
|
596
641
|
return false;
|
|
597
642
|
}
|
|
598
643
|
if (instance.id !== this.info.latestInstance?.id) {
|
|
@@ -600,15 +645,13 @@ export class WorkspaceInstanceUpdateListener {
|
|
|
600
645
|
}
|
|
601
646
|
return phasesOrder[instance.status.phase] < phasesOrder[this.info.latestInstance.status.phase];
|
|
602
647
|
}
|
|
603
|
-
|
|
604
648
|
}
|
|
605
649
|
|
|
606
650
|
export interface GitpodServiceOptions {
|
|
607
|
-
onReconnect?: () =>
|
|
651
|
+
onReconnect?: () => void | Promise<void>;
|
|
608
652
|
}
|
|
609
653
|
|
|
610
654
|
export class GitpodServiceImpl<Client extends GitpodClient, Server extends GitpodServer> {
|
|
611
|
-
|
|
612
655
|
private readonly compositeClient = new GitpodCompositeClient<Client>();
|
|
613
656
|
|
|
614
657
|
constructor(public readonly server: JsonRpcProxy<Server>, private options?: GitpodServiceOptions) {
|
|
@@ -623,7 +666,8 @@ export class GitpodServiceImpl<Client extends GitpodClient, Server extends Gitpo
|
|
|
623
666
|
|
|
624
667
|
private readonly instanceListeners = new Map<string, Promise<WorkspaceInstanceUpdateListener>>();
|
|
625
668
|
listenToInstance(workspaceId: string): Promise<WorkspaceInstanceUpdateListener> {
|
|
626
|
-
const listener =
|
|
669
|
+
const listener =
|
|
670
|
+
this.instanceListeners.get(workspaceId) ||
|
|
627
671
|
(async () => {
|
|
628
672
|
const info = await this.server.getWorkspace(workspaceId);
|
|
629
673
|
return new WorkspaceInstanceUpdateListener(this, info);
|
|
@@ -639,26 +683,25 @@ export class GitpodServiceImpl<Client extends GitpodClient, Server extends Gitpo
|
|
|
639
683
|
}
|
|
640
684
|
}
|
|
641
685
|
|
|
642
|
-
export function createGitpodService<C extends GitpodClient, S extends GitpodServer>(
|
|
686
|
+
export function createGitpodService<C extends GitpodClient, S extends GitpodServer>(
|
|
687
|
+
serverUrl: string | Promise<string>,
|
|
688
|
+
) {
|
|
643
689
|
const toWsUrl = (serverUrl: string) => {
|
|
644
|
-
return new GitpodHostUrl(serverUrl)
|
|
645
|
-
.asWebsocket()
|
|
646
|
-
.withApi({ pathname: GitpodServerPath })
|
|
647
|
-
.toString();
|
|
690
|
+
return new GitpodHostUrl(serverUrl).asWebsocket().withApi({ pathname: GitpodServerPath }).toString();
|
|
648
691
|
};
|
|
649
692
|
let url: string | Promise<string>;
|
|
650
693
|
if (typeof serverUrl === "string") {
|
|
651
694
|
url = toWsUrl(serverUrl);
|
|
652
695
|
} else {
|
|
653
|
-
url = serverUrl.then(url => toWsUrl(url));
|
|
696
|
+
url = serverUrl.then((url) => toWsUrl(url));
|
|
654
697
|
}
|
|
655
698
|
|
|
656
699
|
const connectionProvider = new WebSocketConnectionProvider();
|
|
657
|
-
let onReconnect = () => {
|
|
700
|
+
let onReconnect = () => {};
|
|
658
701
|
const gitpodServer = connectionProvider.createProxy<S>(url, undefined, {
|
|
659
|
-
onListening: socket => {
|
|
702
|
+
onListening: (socket) => {
|
|
660
703
|
onReconnect = () => socket.reconnect();
|
|
661
|
-
}
|
|
704
|
+
},
|
|
662
705
|
});
|
|
663
706
|
return new GitpodServiceImpl<C, S>(gitpodServer, { onReconnect });
|
|
664
|
-
}
|
|
707
|
+
}
|
|
@@ -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
|
+
}
|