@gitpod/gitpod-protocol 0.1.5-vn-jetbrains-backend-plugin-223.6 → 0.1.5-wk-inte-test-20230117000019.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 +16 -0
- package/lib/accounting-protocol.d.ts +1 -1
- package/lib/accounting-protocol.js +1 -1
- package/lib/admin-protocol.d.ts +11 -2
- package/lib/admin-protocol.d.ts.map +1 -1
- package/lib/admin-protocol.js +1 -1
- package/lib/admin-protocol.js.map +1 -1
- package/lib/analytics.d.ts +1 -1
- package/lib/analytics.js +1 -1
- package/lib/attribution.d.ts +5 -1
- package/lib/attribution.d.ts.map +1 -1
- package/lib/attribution.js +15 -1
- package/lib/attribution.js.map +1 -1
- package/lib/auth.d.ts +1 -1
- package/lib/auth.js +1 -1
- package/lib/billing-mode.d.ts +5 -1
- package/lib/billing-mode.d.ts.map +1 -1
- package/lib/billing-mode.js +1 -1
- package/lib/blocked-repositories-protocol.d.ts +1 -1
- package/lib/blocked-repositories-protocol.js +1 -1
- package/lib/context-url.d.ts +1 -2
- package/lib/context-url.d.ts.map +1 -1
- package/lib/context-url.js +1 -3
- package/lib/context-url.js.map +1 -1
- package/lib/context-url.spec.d.ts +1 -3
- package/lib/context-url.spec.d.ts.map +1 -1
- package/lib/context-url.spec.js +1 -29
- package/lib/context-url.spec.js.map +1 -1
- package/lib/encryption/container-module.d.ts +1 -1
- package/lib/encryption/container-module.js +1 -1
- package/lib/encryption/encryption-engine.d.ts +1 -1
- package/lib/encryption/encryption-engine.js +1 -1
- package/lib/encryption/encryption-engine.spec.d.ts +1 -1
- package/lib/encryption/encryption-engine.spec.js +1 -1
- package/lib/encryption/encryption-service.d.ts +1 -1
- package/lib/encryption/encryption-service.js +1 -1
- package/lib/encryption/key-provider.d.ts +1 -1
- package/lib/encryption/key-provider.js +1 -1
- package/lib/env.d.ts +1 -1
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +1 -1
- package/lib/env.js.map +1 -1
- package/lib/experiments/always-default.d.ts +1 -1
- package/lib/experiments/configcat-server.d.ts +1 -1
- package/lib/experiments/configcat-server.d.ts.map +1 -1
- package/lib/experiments/configcat-server.js +2 -1
- package/lib/experiments/configcat-server.js.map +1 -1
- package/lib/experiments/configcat.d.ts +1 -3
- package/lib/experiments/configcat.d.ts.map +1 -1
- package/lib/experiments/configcat.js +2 -8
- package/lib/experiments/configcat.js.map +1 -1
- package/lib/experiments/types.d.ts +1 -3
- package/lib/experiments/types.d.ts.map +1 -1
- package/lib/experiments/types.js +1 -1
- package/lib/experiments/types.js.map +1 -1
- package/lib/frontend-dashboard-service.d.ts +85 -0
- package/lib/frontend-dashboard-service.d.ts.map +1 -0
- package/lib/frontend-dashboard-service.js +32 -0
- package/lib/frontend-dashboard-service.js.map +1 -0
- package/lib/gitpod-file-parser.d.ts +1 -1
- package/lib/gitpod-file-parser.js +1 -1
- package/lib/gitpod-file-parser.spec.d.ts +1 -1
- package/lib/gitpod-file-parser.spec.js +1 -1
- package/lib/gitpod-service.d.ts +17 -22
- package/lib/gitpod-service.d.ts.map +1 -1
- package/lib/gitpod-service.js +1 -1
- package/lib/gitpod-service.js.map +1 -1
- package/lib/headless-workspace-log.d.ts +1 -1
- package/lib/headless-workspace-log.js +1 -1
- package/lib/ide-frontend-service.d.ts +1 -1
- package/lib/ide-frontend-service.js +1 -1
- package/lib/ide-protocol.d.ts +15 -2
- package/lib/ide-protocol.d.ts.map +1 -1
- package/lib/ide-protocol.js +11 -1
- package/lib/ide-protocol.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/installation-admin-protocol.d.ts +1 -1
- package/lib/installation-admin-protocol.js +1 -1
- package/lib/license-protocol.d.ts +1 -1
- package/lib/license-protocol.js +1 -1
- package/lib/messaging/browser/window-connection.d.ts +1 -1
- package/lib/messaging/browser/window-connection.js +1 -1
- package/lib/messaging/client-call-metrics.d.ts +3 -1
- package/lib/messaging/client-call-metrics.d.ts.map +1 -1
- package/lib/messaging/client-call-metrics.js +14 -1
- package/lib/messaging/client-call-metrics.js.map +1 -1
- package/lib/messaging/error.d.ts +3 -1
- package/lib/messaging/error.d.ts.map +1 -1
- package/lib/messaging/error.js +5 -1
- package/lib/messaging/error.js.map +1 -1
- package/lib/oss-allowlist.d.ts +1 -1
- package/lib/oss-allowlist.js +1 -1
- package/lib/payment-protocol.d.ts +1 -1
- package/lib/payment-protocol.js +1 -1
- package/lib/permission.d.ts +1 -1
- package/lib/permission.js +1 -1
- package/lib/plans.d.ts +1 -1
- package/lib/plans.js +3 -3
- package/lib/plans.js.map +1 -1
- package/lib/protocol.d.ts +22 -37
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +11 -19
- package/lib/protocol.js.map +1 -1
- package/lib/protocol.spec.d.ts +1 -1
- package/lib/protocol.spec.js +1 -1
- package/lib/snapshot-url.d.ts +1 -1
- package/lib/snapshot-url.js +1 -1
- package/lib/snapshot-url.spec.d.ts +1 -1
- package/lib/snapshot-url.spec.js +1 -1
- package/lib/team-subscription-protocol.d.ts +1 -1
- package/lib/team-subscription-protocol.js +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 +9 -2
- package/lib/teams-projects-protocol.js.map +1 -1
- package/lib/typings/globals.d.ts +2 -1
- package/lib/typings/globals.d.ts.map +1 -1
- package/lib/typings/globals.js +1 -1
- package/lib/usage.d.ts +13 -1
- package/lib/usage.d.ts.map +1 -1
- package/lib/usage.js +8 -2
- package/lib/usage.js.map +1 -1
- package/lib/util/analytics.d.ts +1 -1
- package/lib/util/analytics.js +1 -1
- package/lib/util/async-iterator.d.ts +1 -1
- package/lib/util/async-iterator.js +1 -1
- package/lib/util/cancelable.d.ts +1 -1
- package/lib/util/cancelable.js +1 -1
- package/lib/util/date-time.d.ts +1 -1
- package/lib/util/date-time.js +1 -1
- package/lib/util/debug-app.d.ts +1 -1
- package/lib/util/debug-app.js +1 -1
- package/lib/util/deep-partial.d.ts +1 -1
- package/lib/util/deep-partial.js +1 -1
- package/lib/util/deferred.d.ts +1 -1
- package/lib/util/deferred.js +1 -1
- package/lib/util/garbage-collected-cache.d.ts +1 -1
- package/lib/util/garbage-collected-cache.js +1 -1
- package/lib/util/generate-workspace-id.d.ts +1 -1
- package/lib/util/generate-workspace-id.js +1 -1
- package/lib/util/generate-workspace-id.spec.d.ts +1 -1
- package/lib/util/generate-workspace-id.spec.js +1 -1
- package/lib/util/gitpod-cookie.d.ts +1 -1
- package/lib/util/gitpod-cookie.js +1 -1
- package/lib/util/gitpod-host-url.d.ts +9 -3
- package/lib/util/gitpod-host-url.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.js +22 -8
- package/lib/util/gitpod-host-url.js.map +1 -1
- package/lib/util/gitpod-host-url.spec.d.ts +1 -1
- package/lib/util/gitpod-host-url.spec.js +1 -1
- package/lib/util/grpc.d.ts +2 -1
- package/lib/util/grpc.d.ts.map +1 -1
- package/lib/util/grpc.js +1 -1
- package/lib/util/grpc.js.map +1 -1
- package/lib/util/jaeger-client-types.d.ts +1 -1
- package/lib/util/jaeger-client-types.js +1 -1
- package/lib/util/logging.d.ts +1 -1
- package/lib/util/logging.js +1 -1
- package/lib/util/logging.spec.d.ts +1 -1
- package/lib/util/logging.spec.js +1 -1
- package/lib/util/make-link.d.ts +1 -1
- package/lib/util/make-link.js +1 -1
- package/lib/util/nice-grpc.d.ts +9 -0
- package/lib/util/nice-grpc.d.ts.map +1 -0
- package/lib/util/nice-grpc.js +121 -0
- package/lib/util/nice-grpc.js.map +1 -0
- package/lib/util/parse-workspace-id.d.ts +1 -1
- package/lib/util/parse-workspace-id.js +1 -1
- package/lib/util/parse-workspace-id.spec.d.ts +1 -1
- package/lib/util/parse-workspace-id.spec.js +1 -1
- package/lib/util/queue.d.ts +1 -1
- package/lib/util/queue.js +1 -1
- package/lib/util/queue.spec.d.ts +1 -1
- package/lib/util/queue.spec.js +1 -1
- package/lib/util/repeat.d.ts +1 -1
- package/lib/util/repeat.js +1 -1
- package/lib/util/semaphore.d.ts +1 -1
- package/lib/util/semaphore.js +1 -1
- package/lib/util/skip-if.d.ts +1 -1
- package/lib/util/skip-if.js +1 -1
- package/lib/util/timeutil.d.ts +1 -1
- package/lib/util/timeutil.js +1 -1
- package/lib/util/timeutil.spec.d.ts +1 -1
- package/lib/util/timeutil.spec.js +1 -1
- package/lib/util/tracing.d.ts +1 -1
- package/lib/util/tracing.js +1 -1
- package/lib/util/tracing.spec.d.ts +1 -1
- package/lib/util/tracing.spec.js +1 -1
- package/lib/util/workspace-port-authentication.d.ts +1 -1
- package/lib/util/workspace-port-authentication.js +1 -1
- package/lib/webhook-event.d.ts +1 -1
- package/lib/webhook-event.js +1 -1
- package/lib/workspace-class.d.ts +2 -2
- package/lib/workspace-class.d.ts.map +1 -1
- package/lib/workspace-class.js +1 -1
- package/lib/workspace-cluster.d.ts +7 -6
- package/lib/workspace-cluster.d.ts.map +1 -1
- package/lib/workspace-cluster.js +1 -1
- package/lib/workspace-cluster.js.map +1 -1
- package/lib/workspace-instance.d.ts +2 -1
- package/lib/workspace-instance.d.ts.map +1 -1
- package/lib/workspace-instance.js +1 -1
- package/lib/wsready.d.ts +10 -4
- package/lib/wsready.d.ts.map +1 -1
- package/lib/wsready.js +3 -1
- package/lib/wsready.js.map +1 -1
- package/package.json +3 -1
- package/pkg-yarn.lock +3 -1
- package/provenance-bundle.jsonl +1 -1
- package/src/accounting-protocol.ts +1 -1
- package/src/admin-protocol.ts +15 -2
- package/src/analytics.ts +1 -1
- package/src/attribution.ts +16 -1
- package/src/auth.ts +1 -1
- package/src/billing-mode.ts +8 -1
- package/src/blocked-repositories-protocol.ts +1 -1
- package/src/context-url.spec.ts +1 -19
- package/src/context-url.ts +1 -3
- package/src/encryption/container-module.ts +1 -1
- package/src/encryption/encryption-engine.spec.ts +1 -1
- package/src/encryption/encryption-engine.ts +1 -1
- package/src/encryption/encryption-service.ts +1 -1
- package/src/encryption/key-provider.ts +1 -1
- package/src/env.ts +2 -3
- package/src/experiments/always-default.ts +1 -1
- package/src/experiments/configcat-server.ts +2 -1
- package/src/experiments/configcat.ts +1 -7
- package/src/experiments/types.ts +1 -5
- package/src/frontend-dashboard-service.ts +109 -0
- package/src/gitpod-file-parser.spec.ts +1 -1
- package/src/gitpod-file-parser.ts +1 -1
- package/src/gitpod-service.ts +20 -26
- package/src/headless-workspace-log.ts +1 -1
- package/src/ide-frontend-service.ts +1 -1
- package/src/ide-protocol.ts +20 -2
- package/src/index.ts +1 -1
- package/src/installation-admin-protocol.ts +1 -1
- package/src/license-protocol.ts +1 -1
- package/src/messaging/browser/window-connection.ts +1 -1
- package/src/messaging/client-call-metrics.ts +18 -1
- package/src/messaging/error.ts +7 -1
- package/src/oss-allowlist.ts +1 -1
- package/src/payment-protocol.ts +1 -1
- package/src/permission.ts +1 -1
- package/src/plans.ts +3 -3
- package/src/protocol.spec.ts +1 -1
- package/src/protocol.ts +30 -49
- package/src/snapshot-url.spec.ts +1 -1
- package/src/snapshot-url.ts +1 -1
- package/src/team-subscription-protocol.ts +1 -1
- package/src/teams-projects-protocol.ts +15 -4
- package/src/typings/globals.ts +3 -1
- package/src/usage.ts +15 -1
- package/src/util/analytics.ts +1 -1
- package/src/util/async-iterator.ts +1 -1
- package/src/util/cancelable.ts +1 -1
- package/src/util/date-time.ts +1 -1
- package/src/util/debug-app.ts +1 -1
- package/src/util/deep-partial.ts +1 -1
- package/src/util/deferred.ts +1 -1
- package/src/util/garbage-collected-cache.ts +1 -1
- package/src/util/generate-workspace-id.spec.ts +1 -1
- package/src/util/generate-workspace-id.ts +1 -1
- package/src/util/gitpod-cookie.ts +1 -1
- package/src/util/gitpod-host-url.spec.ts +1 -1
- package/src/util/gitpod-host-url.ts +27 -8
- package/src/util/grpc.ts +4 -1
- package/src/util/jaeger-client-types.ts +1 -1
- package/src/util/logging.spec.ts +1 -1
- package/src/util/logging.ts +1 -1
- package/src/util/make-link.ts +1 -1
- package/src/util/nice-grpc.ts +96 -0
- package/src/util/parse-workspace-id.spec.ts +1 -1
- package/src/util/parse-workspace-id.ts +1 -1
- package/src/util/queue.spec.ts +1 -1
- package/src/util/queue.ts +1 -1
- package/src/util/repeat.ts +1 -1
- package/src/util/semaphore.ts +1 -1
- package/src/util/skip-if.ts +1 -1
- package/src/util/timeutil.spec.ts +1 -1
- package/src/util/timeutil.ts +1 -1
- package/src/util/tracing.spec.ts +1 -1
- package/src/util/tracing.ts +1 -1
- package/src/util/workspace-port-authentication.ts +1 -1
- package/src/webhook-event.ts +1 -1
- package/src/workspace-class.ts +2 -2
- package/src/workspace-cluster.ts +12 -7
- package/src/workspace-instance.ts +7 -1
- package/src/wsready.ts +12 -6
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { injectable, inject } from "inversify";
|
package/src/env.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { injectable } from "inversify";
|
|
8
8
|
|
|
9
9
|
@injectable()
|
|
10
|
-
export abstract class AbstractComponentEnv {
|
|
11
|
-
}
|
|
10
|
+
export abstract class AbstractComponentEnv {}
|
|
12
11
|
|
|
13
12
|
export function getEnvVar(name: string, defaultValue?: string): string {
|
|
14
13
|
const value = process.env[name] || defaultValue;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
import { Attributes, Client } from "./types";
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { Client } from "./types";
|
|
@@ -32,6 +32,7 @@ export function getExperimentsClientForBackend(): Client {
|
|
|
32
32
|
|
|
33
33
|
const configCatClient = configcat.createClient(sdkKey, {
|
|
34
34
|
pollIntervalSeconds: 3 * 60, // 3 minutes
|
|
35
|
+
requestTimeoutMs: 2000,
|
|
35
36
|
logger: configcat.createConsoleLogger(LogLevel.Error),
|
|
36
37
|
maxInitWaitTimeSeconds: 0,
|
|
37
38
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { Attributes, Client } from "./types";
|
|
@@ -12,9 +12,7 @@ import { User } from "../protocol";
|
|
|
12
12
|
export const USER_ID_ATTRIBUTE = "user_id";
|
|
13
13
|
export const PROJECT_ID_ATTRIBUTE = "project_id";
|
|
14
14
|
export const TEAM_ID_ATTRIBUTE = "team_id";
|
|
15
|
-
export const TEAM_IDS_ATTRIBUTE = "team_ids";
|
|
16
15
|
export const TEAM_NAME_ATTRIBUTE = "team_name";
|
|
17
|
-
export const TEAM_NAMES_ATTRIBUTE = "team_names";
|
|
18
16
|
export const BILLING_TIER_ATTRIBUTE = "billing_tier";
|
|
19
17
|
|
|
20
18
|
export class ConfigCatClient implements Client {
|
|
@@ -50,10 +48,6 @@ export function attributesToUser(attributes: Attributes): ConfigCatUser {
|
|
|
50
48
|
if (attributes.teamName) {
|
|
51
49
|
custom[TEAM_NAME_ATTRIBUTE] = attributes.teamName;
|
|
52
50
|
}
|
|
53
|
-
if (attributes.teams) {
|
|
54
|
-
custom[TEAM_NAMES_ATTRIBUTE] = attributes.teams.map((t) => t.name).join(",");
|
|
55
|
-
custom[TEAM_IDS_ATTRIBUTE] = attributes.teams.map((t) => t.id).join(",");
|
|
56
|
-
}
|
|
57
51
|
if (attributes.billingTier) {
|
|
58
52
|
custom[BILLING_TIER_ATTRIBUTE] = attributes.billingTier;
|
|
59
53
|
}
|
package/src/experiments/types.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { BillingTier, User } from "../protocol";
|
|
8
|
-
import { Team } from "../teams-projects-protocol";
|
|
9
8
|
|
|
10
9
|
export const Client = Symbol("Client");
|
|
11
10
|
|
|
@@ -25,9 +24,6 @@ export interface Attributes {
|
|
|
25
24
|
teamId?: string;
|
|
26
25
|
// Currently selected Gitpod Team Name (mapped to "custom.team_name")
|
|
27
26
|
teamName?: string;
|
|
28
|
-
|
|
29
|
-
// All the Gitpod Teams that the user is a member (or owner) of (mapped to "custom.team_names" and "custom.team_ids")
|
|
30
|
-
teams?: Team[];
|
|
31
27
|
}
|
|
32
28
|
|
|
33
29
|
export interface Client {
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2023 Gitpod GmbH. All rights reserved.
|
|
3
|
+
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { WorkspaceInstancePhase } from "./workspace-instance";
|
|
8
|
+
import { RemoteTrackMessage } from "./analytics";
|
|
9
|
+
import { Event } from "./util/event";
|
|
10
|
+
|
|
11
|
+
export namespace IDEFrontendDashboardService {
|
|
12
|
+
/**
|
|
13
|
+
* IClient is the client side which is using in supervisor frontend
|
|
14
|
+
*/
|
|
15
|
+
export interface IClient extends IClientOn, IClientSend {}
|
|
16
|
+
interface IClientOn {
|
|
17
|
+
onStatusUpdate: Event<Status>;
|
|
18
|
+
relocate(url: string): void;
|
|
19
|
+
}
|
|
20
|
+
interface IClientSend {
|
|
21
|
+
trackEvent(msg: RemoteTrackMessage): void;
|
|
22
|
+
activeHeartbeat(): void;
|
|
23
|
+
setState(state: SetStateData): void;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* IServer is the server side which is using in dashboard loading screen
|
|
28
|
+
*/
|
|
29
|
+
export interface IServer extends IServerOn, IServerSend {
|
|
30
|
+
auth(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
interface IServerOn {
|
|
33
|
+
onSetState: Event<SetStateData>;
|
|
34
|
+
trackEvent(msg: RemoteTrackMessage): void;
|
|
35
|
+
activeHeartbeat(): void;
|
|
36
|
+
}
|
|
37
|
+
interface IServerSend {
|
|
38
|
+
sendStatusUpdate(status: Status): void;
|
|
39
|
+
relocate(url: string): void;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface Status {
|
|
43
|
+
workspaceID: string;
|
|
44
|
+
loggedUserId: string;
|
|
45
|
+
|
|
46
|
+
instanceId?: string;
|
|
47
|
+
ideUrl?: string;
|
|
48
|
+
statusPhase?: WorkspaceInstancePhase;
|
|
49
|
+
|
|
50
|
+
workspaceDescription: string;
|
|
51
|
+
workspaceType: string;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface SetStateData {
|
|
55
|
+
ideFrontendFailureCause?: string;
|
|
56
|
+
desktopIDE?: {
|
|
57
|
+
clientID: string;
|
|
58
|
+
link: string;
|
|
59
|
+
label?: string;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* interface for post message that send status update from dashboard to supervisor
|
|
65
|
+
*/
|
|
66
|
+
export interface StatusUpdateEventData {
|
|
67
|
+
type: "ide-status-update";
|
|
68
|
+
status: Status;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface HeartbeatEventData {
|
|
72
|
+
type: "ide-heartbeat";
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export interface TrackEventData {
|
|
76
|
+
type: "ide-track-event";
|
|
77
|
+
msg: RemoteTrackMessage;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export interface RelocateEventData {
|
|
81
|
+
type: "ide-relocate";
|
|
82
|
+
url: string;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export interface SetStateEventData {
|
|
86
|
+
type: "ide-set-state";
|
|
87
|
+
state: SetStateData;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export function isStatusUpdateEventData(obj: any): obj is StatusUpdateEventData {
|
|
91
|
+
return obj != null && typeof obj === "object" && obj.type === "ide-status-update";
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export function isHeartbeatEventData(obj: any): obj is HeartbeatEventData {
|
|
95
|
+
return obj != null && typeof obj === "object" && obj.type === "ide-heartbeat";
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function isTrackEventData(obj: any): obj is TrackEventData {
|
|
99
|
+
return obj != null && typeof obj === "object" && obj.type === "ide-track-event";
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export function isRelocateEventData(obj: any): obj is RelocateEventData {
|
|
103
|
+
return obj != null && typeof obj === "object" && obj.type === "ide-relocate";
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export function isSetStateEventData(obj: any): obj is SetStateEventData {
|
|
107
|
+
return obj != null && typeof obj === "object" && obj.type === "ide-set-state";
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { suite, test } from "mocha-typescript";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { injectable } from "inversify";
|
package/src/gitpod-service.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import {
|
|
@@ -12,7 +12,6 @@ import {
|
|
|
12
12
|
WhitelistedRepository,
|
|
13
13
|
WorkspaceImageBuild,
|
|
14
14
|
AuthProviderInfo,
|
|
15
|
-
CreateWorkspaceMode,
|
|
16
15
|
Token,
|
|
17
16
|
UserEnvVarValue,
|
|
18
17
|
Terms,
|
|
@@ -27,6 +26,7 @@ import {
|
|
|
27
26
|
PrebuiltWorkspace,
|
|
28
27
|
UserSSHPublicKeyValue,
|
|
29
28
|
SSHPublicKeyValue,
|
|
29
|
+
IDESettings,
|
|
30
30
|
} from "./protocol";
|
|
31
31
|
import {
|
|
32
32
|
Team,
|
|
@@ -59,8 +59,7 @@ import {
|
|
|
59
59
|
} from "./team-subscription-protocol";
|
|
60
60
|
import { RemotePageMessage, RemoteTrackMessage, RemoteIdentifyMessage } from "./analytics";
|
|
61
61
|
import { IDEServer } from "./ide-protocol";
|
|
62
|
-
import {
|
|
63
|
-
import { ListUsageRequest, ListUsageResponse } from "./usage";
|
|
62
|
+
import { ListUsageRequest, ListUsageResponse, CostCenterJSON } from "./usage";
|
|
64
63
|
import { SupportedWorkspaceClass } from "./workspace-class";
|
|
65
64
|
import { BillingMode } from "./billing-mode";
|
|
66
65
|
|
|
@@ -165,6 +164,8 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
165
164
|
deleteSSHPublicKey(id: string): Promise<void>;
|
|
166
165
|
|
|
167
166
|
// Teams
|
|
167
|
+
getTeam(teamId: string): Promise<Team>;
|
|
168
|
+
updateTeam(teamId: string, team: Pick<Team, "name">): Promise<Team>;
|
|
168
169
|
getTeams(): Promise<Team[]>;
|
|
169
170
|
getTeamMembers(teamId: string): Promise<TeamMemberInfo[]>;
|
|
170
171
|
createTeam(name: string): Promise<Team>;
|
|
@@ -173,12 +174,7 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
173
174
|
removeTeamMember(teamId: string, userId: string): Promise<void>;
|
|
174
175
|
getGenericInvite(teamId: string): Promise<TeamMembershipInvite>;
|
|
175
176
|
resetGenericInvite(inviteId: string): Promise<TeamMembershipInvite>;
|
|
176
|
-
deleteTeam(teamId: string
|
|
177
|
-
|
|
178
|
-
// Admin Settings
|
|
179
|
-
adminGetSettings(): Promise<InstallationAdminSettings>;
|
|
180
|
-
adminUpdateSettings(settings: InstallationAdminSettings): Promise<void>;
|
|
181
|
-
adminGetTelemetryData(): Promise<TelemetryData>;
|
|
177
|
+
deleteTeam(teamId: string): Promise<void>;
|
|
182
178
|
|
|
183
179
|
// Projects
|
|
184
180
|
getProviderRepositoriesForUser(params: GetProviderRepositoriesParams): Promise<ProviderRepository[]>;
|
|
@@ -227,16 +223,6 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
227
223
|
*/
|
|
228
224
|
getSnapshots(workspaceID: string): Promise<string[]>;
|
|
229
225
|
|
|
230
|
-
/**
|
|
231
|
-
* stores/updates layout information for the given workspace
|
|
232
|
-
*/
|
|
233
|
-
storeLayout(workspaceId: string, layoutData: string): Promise<void>;
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
* retrieves layout information for the given workspace
|
|
237
|
-
*/
|
|
238
|
-
getLayout(workspaceId: string): Promise<string | undefined>;
|
|
239
|
-
|
|
240
226
|
guessGitTokenScopes(params: GuessGitTokenScopesParams): Promise<GuessedGitTokenScopes>;
|
|
241
227
|
|
|
242
228
|
/**
|
|
@@ -288,14 +274,16 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
|
|
|
288
274
|
getStripeSetupIntentClientSecret(): Promise<string>;
|
|
289
275
|
findStripeSubscriptionId(attributionId: string): Promise<string | undefined>;
|
|
290
276
|
createStripeCustomerIfNeeded(attributionId: string, currency: string): Promise<void>;
|
|
291
|
-
subscribeToStripe(attributionId: string, setupIntentId: string): Promise<
|
|
277
|
+
subscribeToStripe(attributionId: string, setupIntentId: string, usageLimit: number): Promise<number | undefined>;
|
|
292
278
|
getStripePortalUrl(attributionId: string): Promise<string>;
|
|
293
|
-
|
|
279
|
+
getCostCenter(attributionId: string): Promise<CostCenterJSON | undefined>;
|
|
294
280
|
setUsageLimit(attributionId: string, usageLimit: number): Promise<void>;
|
|
281
|
+
getUsageBalance(attributionId: string): Promise<number>;
|
|
295
282
|
|
|
296
283
|
listUsage(req: ListUsageRequest): Promise<ListUsageResponse>;
|
|
297
284
|
|
|
298
285
|
setUsageAttribution(usageAttribution: string): Promise<void>;
|
|
286
|
+
listAvailableUsageAttributionIds(): Promise<string[]>;
|
|
299
287
|
|
|
300
288
|
getBillingModeForUser(): Promise<BillingMode>;
|
|
301
289
|
getBillingModeForTeam(teamId: string): Promise<BillingMode>;
|
|
@@ -428,17 +416,23 @@ export namespace GitpodServer {
|
|
|
428
416
|
export interface GetAccountStatementOptions {
|
|
429
417
|
date?: string;
|
|
430
418
|
}
|
|
431
|
-
export interface CreateWorkspaceOptions {
|
|
419
|
+
export interface CreateWorkspaceOptions extends StartWorkspaceOptions {
|
|
432
420
|
contextUrl: string;
|
|
433
|
-
|
|
421
|
+
|
|
422
|
+
// whether running workspaces on the same context should be ignored. If false (default) users will be asked.
|
|
423
|
+
ignoreRunningWorkspaceOnSameCommit?: boolean;
|
|
424
|
+
ignoreRunningPrebuild?: boolean;
|
|
425
|
+
allowUsingPreviousPrebuilds?: boolean;
|
|
434
426
|
forceDefaultConfig?: boolean;
|
|
435
427
|
}
|
|
428
|
+
|
|
436
429
|
export interface StartWorkspaceOptions {
|
|
437
|
-
forceDefaultImage
|
|
430
|
+
forceDefaultImage?: boolean;
|
|
431
|
+
workspaceClass?: string;
|
|
432
|
+
ideSettings?: IDESettings;
|
|
438
433
|
}
|
|
439
434
|
export interface TakeSnapshotOptions {
|
|
440
435
|
workspaceId: string;
|
|
441
|
-
layoutData?: string;
|
|
442
436
|
/* this is here to enable backwards-compatibility and untangling rollout between workspace, IDE and meta */
|
|
443
437
|
dontWait?: boolean;
|
|
444
438
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
export enum HeadlessWorkspaceEventType {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { Event } from "./util/event";
|
package/src/ide-protocol.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2021 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -36,6 +36,14 @@ export interface IDEOptions {
|
|
|
36
36
|
clients?: { [id: string]: IDEClient };
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
export namespace IDEOptions {
|
|
40
|
+
export function asArray(options: IDEOptions): (IDEOption & { id: string })[] {
|
|
41
|
+
return Object.keys(options.options)
|
|
42
|
+
.map((id) => ({ ...options.options[id], id }))
|
|
43
|
+
.sort((a, b) => (a.orderKey || "").localeCompare(b.orderKey || ""));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
39
47
|
export interface IDEClient {
|
|
40
48
|
/**
|
|
41
49
|
* The default desktop IDE when the user has not specified one.
|
|
@@ -87,7 +95,7 @@ export interface IDEOption {
|
|
|
87
95
|
label?: string;
|
|
88
96
|
|
|
89
97
|
/**
|
|
90
|
-
* Notes to the IDE option that are
|
|
98
|
+
* Notes to the IDE option that are rendered in the preferences when a user
|
|
91
99
|
* chooses this IDE.
|
|
92
100
|
*/
|
|
93
101
|
notes?: string[];
|
|
@@ -126,4 +134,14 @@ export interface IDEOption {
|
|
|
126
134
|
* The latest plugin image ref for the latest IDE image, this image ref always resolve to digest.
|
|
127
135
|
*/
|
|
128
136
|
pluginLatestImage?: string;
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* ImageVersion the semantic version of the IDE image.
|
|
140
|
+
*/
|
|
141
|
+
imageVersion?: string;
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* LatestImageVersion the semantic version of the latest IDE image.
|
|
145
|
+
*/
|
|
146
|
+
latestImageVersion?: string;
|
|
129
147
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
export * from "./protocol";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { v4 as uuidv4 } from "uuid";
|
package/src/license-protocol.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
export interface LicenseValidationResult {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { Message } from "vscode-jsonrpc/lib/messages";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2021 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { injectable } from "inversify";
|
|
@@ -14,6 +14,7 @@ export class PrometheusClientCallMetrics implements IClientCallMetrics {
|
|
|
14
14
|
readonly sentCounter: prometheusClient.Counter<string>;
|
|
15
15
|
readonly receivedCounter: prometheusClient.Counter<string>;
|
|
16
16
|
readonly handledCounter: prometheusClient.Counter<string>;
|
|
17
|
+
readonly handledSecondsHistogram: prometheusClient.Histogram<string>;
|
|
17
18
|
|
|
18
19
|
constructor() {
|
|
19
20
|
this.startedCounter = new prometheusClient.Counter({
|
|
@@ -40,6 +41,12 @@ export class PrometheusClientCallMetrics implements IClientCallMetrics {
|
|
|
40
41
|
labelNames: ["grpc_service", "grpc_method", "grpc_type", "grpc_code"],
|
|
41
42
|
registers: [prometheusClient.register],
|
|
42
43
|
});
|
|
44
|
+
this.handledSecondsHistogram = new prometheusClient.Histogram({
|
|
45
|
+
name: "grpc_client_handling_seconds",
|
|
46
|
+
help: "Histogram of response latency (seconds) of the gRPC until it is finished by the application.",
|
|
47
|
+
labelNames: ["grpc_service", "grpc_method", "grpc_type", "grpc_code"],
|
|
48
|
+
registers: [prometheusClient.register],
|
|
49
|
+
});
|
|
43
50
|
}
|
|
44
51
|
|
|
45
52
|
started(labels: IGrpcCallMetricsLabels): void {
|
|
@@ -74,4 +81,14 @@ export class PrometheusClientCallMetrics implements IClientCallMetrics {
|
|
|
74
81
|
grpc_code: labels.code,
|
|
75
82
|
});
|
|
76
83
|
}
|
|
84
|
+
|
|
85
|
+
startHandleTimer(
|
|
86
|
+
labels: IGrpcCallMetricsLabelsWithCode,
|
|
87
|
+
): (labels?: Partial<Record<string, string | number>> | undefined) => number {
|
|
88
|
+
return this.handledSecondsHistogram.startTimer({
|
|
89
|
+
grpc_service: labels.service,
|
|
90
|
+
grpc_method: labels.method,
|
|
91
|
+
grpc_type: labels.type,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
77
94
|
}
|
package/src/messaging/error.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
export namespace ErrorCodes {
|
|
@@ -35,12 +35,18 @@ export namespace ErrorCodes {
|
|
|
35
35
|
// 430 Repository not whitelisted (custom status code)
|
|
36
36
|
export const REPOSITORY_NOT_WHITELISTED = 430;
|
|
37
37
|
|
|
38
|
+
// 440 Prebuilds now always require a project (custom status code)
|
|
39
|
+
export const PROJECT_REQUIRED = 440;
|
|
40
|
+
|
|
38
41
|
// 450 Payment error
|
|
39
42
|
export const PAYMENT_ERROR = 450;
|
|
40
43
|
|
|
41
44
|
// 451 Out of credits
|
|
42
45
|
export const PAYMENT_SPENDING_LIMIT_REACHED = 451;
|
|
43
46
|
|
|
47
|
+
// 451 Error creating a subscription
|
|
48
|
+
export const SUBSCRIPTION_ERROR = 452;
|
|
49
|
+
|
|
44
50
|
// 455 Invalid cost center (custom status code)
|
|
45
51
|
export const INVALID_COST_CENTER = 455;
|
|
46
52
|
|
package/src/oss-allowlist.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2021 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
export interface OssAllowList {
|
package/src/payment-protocol.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2021 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
export namespace PaymentProtocol {
|
package/src/permission.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
// see below for explanation
|
package/src/plans.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2021 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
export type Currency = "USD" | "EUR";
|
|
@@ -131,7 +131,7 @@ export namespace Plans {
|
|
|
131
131
|
githubPlanNumber: 1,
|
|
132
132
|
|
|
133
133
|
type: "free",
|
|
134
|
-
name: "
|
|
134
|
+
name: "Free",
|
|
135
135
|
currency: "USD",
|
|
136
136
|
pricePerMonth: 0,
|
|
137
137
|
hoursPerMonth: 100,
|
|
@@ -146,7 +146,7 @@ export namespace Plans {
|
|
|
146
146
|
githubPlanNumber: 5,
|
|
147
147
|
|
|
148
148
|
type: "free-50",
|
|
149
|
-
name: "
|
|
149
|
+
name: "Free",
|
|
150
150
|
currency: "USD",
|
|
151
151
|
pricePerMonth: 0,
|
|
152
152
|
hoursPerMonth: 50,
|
package/src/protocol.spec.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
3
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
-
* See License
|
|
4
|
+
* See License.AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { suite, test } from "mocha-typescript";
|