@gitpod/gitpod-protocol 0.1.5-to-code-reading.1 → 0.1.5-to-monitor-delete.18
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 +124 -5
- package/lib/accounting-protocol.d.ts +18 -10
- package/lib/accounting-protocol.d.ts.map +1 -1
- package/lib/accounting-protocol.js +34 -32
- package/lib/accounting-protocol.js.map +1 -1
- package/lib/admin-protocol.d.ts +19 -0
- package/lib/admin-protocol.d.ts.map +1 -1
- package/lib/admin-protocol.js.map +1 -1
- package/lib/analytics.d.ts +4 -5
- package/lib/analytics.d.ts.map +1 -1
- package/lib/analytics.js.map +1 -1
- package/lib/attribution.d.ts +24 -0
- package/lib/attribution.d.ts.map +1 -0
- package/lib/attribution.js +54 -0
- package/lib/attribution.js.map +1 -0
- package/lib/auth.d.ts.map +1 -1
- package/lib/billing-mode.d.ts +45 -0
- package/lib/billing-mode.d.ts.map +1 -0
- package/lib/billing-mode.js +44 -0
- package/lib/billing-mode.js.map +1 -0
- package/lib/blocked-repositories-protocol.d.ts +13 -0
- package/lib/blocked-repositories-protocol.d.ts.map +1 -0
- package/lib/blocked-repositories-protocol.js +8 -0
- package/lib/blocked-repositories-protocol.js.map +1 -0
- package/lib/context-url.d.ts +18 -5
- package/lib/context-url.d.ts.map +1 -1
- package/lib/context-url.js +59 -6
- package/lib/context-url.js.map +1 -1
- package/lib/context-url.spec.d.ts +2 -0
- package/lib/context-url.spec.d.ts.map +1 -1
- package/lib/context-url.spec.js +40 -4
- package/lib/context-url.spec.js.map +1 -1
- package/lib/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 +9 -9
- 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 +10 -0
- package/lib/experiments/configcat-server.d.ts.map +1 -0
- package/lib/experiments/configcat-server.js +36 -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 +51 -0
- package/lib/experiments/configcat.js.map +1 -0
- package/lib/experiments/types.d.ts +22 -0
- package/lib/experiments/types.d.ts.map +1 -0
- package/lib/experiments/types.js +10 -0
- 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 +83 -45
- package/lib/gitpod-service.d.ts.map +1 -1
- package/lib/gitpod-service.js +52 -33
- package/lib/gitpod-service.js.map +1 -1
- package/lib/headless-workspace-log.d.ts +1 -0
- package/lib/headless-workspace-log.d.ts.map +1 -1
- package/lib/headless-workspace-log.js +2 -1
- package/lib/headless-workspace-log.js.map +1 -1
- package/lib/ide-frontend-service.d.ts +1 -1
- package/lib/ide-protocol.d.ts +38 -6
- package/lib/ide-protocol.d.ts.map +1 -1
- package/lib/index.d.ts +16 -15
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/installation-admin-protocol.d.ts +30 -0
- package/lib/installation-admin-protocol.d.ts.map +1 -0
- package/lib/installation-admin-protocol.js +31 -0
- package/lib/installation-admin-protocol.js.map +1 -0
- 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 -18
- package/lib/messaging/client-call-metrics.d.ts.map +1 -1
- package/lib/messaging/client-call-metrics.js +21 -22
- package/lib/messaging/client-call-metrics.js.map +1 -1
- package/lib/messaging/error.d.ts +8 -1
- package/lib/messaging/error.d.ts.map +1 -1
- package/lib/messaging/error.js +17 -3
- package/lib/messaging/error.js.map +1 -1
- package/lib/messaging/handler.d.ts.map +1 -1
- package/lib/messaging/handler.js +1 -1
- package/lib/messaging/node/connection.js +8 -8
- package/lib/messaging/node/connection.js.map +1 -1
- package/lib/messaging/proxy-factory.d.ts +1 -1
- package/lib/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/messaging/proxy-factory.js +7 -9
- package/lib/messaging/proxy-factory.js.map +1 -1
- package/lib/payment-protocol.d.ts.map +1 -1
- package/lib/payment-protocol.js +1 -1
- package/lib/payment-protocol.js.map +1 -1
- package/lib/permission.d.ts +9 -3
- package/lib/permission.d.ts.map +1 -1
- package/lib/permission.js +34 -25
- package/lib/permission.js.map +1 -1
- package/lib/plans.d.ts +4 -3
- package/lib/plans.d.ts.map +1 -1
- package/lib/plans.js +210 -171
- package/lib/plans.js.map +1 -1
- package/lib/protocol.d.ts +192 -59
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +292 -104
- package/lib/protocol.js.map +1 -1
- package/{src/theia-plugins.ts → lib/protocol.spec.d.ts} +2 -6
- package/lib/protocol.spec.d.ts.map +1 -0
- package/lib/protocol.spec.js +127 -0
- package/lib/protocol.spec.js.map +1 -0
- package/lib/snapshot-url.spec.js.map +1 -1
- package/lib/team-subscription-protocol.d.ts +22 -3
- package/lib/team-subscription-protocol.d.ts.map +1 -1
- package/lib/team-subscription-protocol.js +20 -5
- package/lib/team-subscription-protocol.js.map +1 -1
- package/lib/teams-projects-protocol.d.ts +29 -5
- package/lib/teams-projects-protocol.d.ts.map +1 -1
- package/lib/teams-projects-protocol.js +8 -1
- package/lib/teams-projects-protocol.js.map +1 -1
- package/lib/typings/globals.d.ts +2 -2
- package/lib/typings/globals.d.ts.map +1 -1
- package/lib/usage.d.ts +61 -0
- package/lib/usage.d.ts.map +1 -0
- package/lib/usage.js +14 -0
- package/lib/usage.js.map +1 -0
- package/lib/util/analytics.d.ts.map +1 -1
- package/lib/util/analytics.js +12 -3
- package/lib/util/analytics.js.map +1 -1
- package/lib/util/async-iterator.d.ts.map +1 -1
- package/lib/util/async-iterator.js +3 -3
- package/lib/util/async-iterator.js.map +1 -1
- package/lib/util/cancelable.js.map +1 -1
- package/lib/util/date-time.js +6 -6
- package/lib/util/date-time.js.map +1 -1
- package/lib/util/debug-app.d.ts +25 -0
- package/lib/util/debug-app.d.ts.map +1 -0
- package/lib/util/debug-app.js +100 -0
- package/lib/util/debug-app.js.map +1 -0
- package/lib/util/deferred.js.map +1 -1
- package/lib/util/disposable.d.ts.map +1 -1
- package/lib/util/disposable.js +2 -2
- package/lib/util/disposable.js.map +1 -1
- package/lib/util/event.d.ts.map +1 -1
- package/lib/util/event.js +5 -3
- package/lib/util/event.js.map +1 -1
- package/lib/util/garbage-collected-cache.d.ts.map +1 -1
- package/lib/util/garbage-collected-cache.js +6 -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 +3 -0
- package/lib/util/gitpod-host-url.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.js +49 -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 +19 -0
- package/lib/util/grpc.d.ts.map +1 -1
- package/lib/util/grpc.js +73 -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/logging.spec.d.ts +7 -0
- package/lib/util/logging.spec.d.ts.map +1 -0
- package/lib/util/logging.spec.js +52 -0
- package/lib/util/logging.spec.js.map +1 -0
- package/lib/util/make-link.js +5 -5
- package/lib/util/make-link.js.map +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 +119 -0
- package/lib/util/nice-grpc.js.map +1 -0
- 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 +2 -0
- package/lib/util/timeutil.d.ts.map +1 -1
- package/lib/util/timeutil.js +15 -3
- package/lib/util/timeutil.js.map +1 -1
- package/lib/util/timeutil.spec.d.ts +2 -0
- package/lib/util/timeutil.spec.d.ts.map +1 -1
- package/lib/util/timeutil.spec.js +34 -0
- package/lib/util/timeutil.spec.js.map +1 -1
- package/lib/util/tracing.d.ts +8 -8
- package/lib/util/tracing.d.ts.map +1 -1
- package/lib/util/tracing.js +19 -20
- package/lib/util/tracing.js.map +1 -1
- package/lib/util/tracing.spec.js +3 -3
- package/lib/util/tracing.spec.js.map +1 -1
- package/lib/util/workspace-port-authentication.d.ts +7 -7
- package/lib/util/workspace-port-authentication.d.ts.map +1 -1
- package/lib/util/workspace-port-authentication.js +8 -11
- package/lib/util/workspace-port-authentication.js.map +1 -1
- package/lib/webhook-event.d.ts +44 -0
- package/lib/webhook-event.d.ts.map +1 -0
- package/lib/{theia-plugins.js → webhook-event.js} +2 -2
- package/lib/webhook-event.js.map +1 -0
- package/lib/workspace-class.d.ts +14 -0
- package/lib/workspace-class.d.ts.map +1 -0
- package/lib/workspace-class.js +8 -0
- package/lib/workspace-class.js.map +1 -0
- package/lib/workspace-cluster.d.ts +18 -17
- package/lib/workspace-cluster.d.ts.map +1 -1
- package/lib/workspace-cluster.js +16 -1
- package/lib/workspace-cluster.js.map +1 -1
- package/lib/workspace-instance.d.ts +39 -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 +15 -7
- package/pkg-yarn.lock +11 -6
- package/provenance-bundle.jsonl +3 -1
- package/src/accounting-protocol.ts +66 -51
- package/src/admin-protocol.ts +45 -18
- package/src/analytics.ts +26 -28
- package/src/attribution.ts +63 -0
- package/src/auth.ts +2 -2
- package/src/billing-mode.ts +84 -0
- package/src/blocked-repositories-protocol.ts +13 -0
- package/src/context-url.spec.ts +37 -9
- package/src/context-url.ts +94 -36
- package/src/encryption/container-module.ts +2 -3
- package/src/encryption/encryption-engine.spec.ts +9 -8
- package/src/encryption/encryption-engine.ts +20 -16
- 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 +41 -0
- package/src/experiments/configcat.ts +56 -0
- package/src/experiments/types.ts +34 -0
- package/src/gitpod-file-parser.spec.ts +55 -61
- package/src/gitpod-file-parser.ts +16 -17
- package/src/gitpod-service.ts +228 -129
- package/src/headless-workspace-log.ts +6 -4
- package/src/ide-frontend-service.ts +2 -2
- package/src/ide-protocol.ts +43 -6
- package/src/index.ts +16 -15
- package/src/installation-admin-protocol.ts +45 -0
- 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 +62 -82
- package/src/messaging/error.ts +26 -7
- package/src/messaging/handler.ts +6 -6
- package/src/messaging/node/connection.ts +8 -8
- package/src/messaging/proxy-factory.ts +23 -30
- package/src/oss-allowlist.ts +3 -3
- package/src/payment-protocol.ts +2 -2
- package/src/permission.ts +40 -32
- package/src/plans.ts +240 -189
- package/src/protocol.spec.ts +97 -0
- package/src/protocol.ts +556 -258
- package/src/snapshot-url.spec.ts +9 -7
- package/src/team-subscription-protocol.ts +59 -22
- package/src/teams-projects-protocol.ts +43 -12
- package/src/typings/globals.ts +4 -4
- package/src/usage.ts +71 -0
- package/src/util/analytics.ts +46 -24
- package/src/util/async-iterator.ts +4 -5
- package/src/util/cancelable.ts +3 -3
- package/src/util/date-time.ts +8 -8
- package/src/util/debug-app.ts +81 -0
- package/src/util/deferred.ts +6 -6
- package/src/util/disposable.ts +3 -6
- package/src/util/event.ts +9 -11
- package/src/util/garbage-collected-cache.ts +8 -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 +57 -33
- package/src/util/grpc.ts +90 -1
- package/src/util/jaeger-client-types.ts +2 -2
- package/src/util/logging.spec.ts +23 -0
- package/src/util/logging.ts +60 -42
- package/src/util/make-link.ts +6 -7
- package/src/util/nice-grpc.ts +93 -0
- 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 +40 -14
- package/src/util/timeutil.ts +27 -11
- package/src/util/tracing.spec.ts +28 -23
- package/src/util/tracing.ts +58 -54
- package/src/util/workspace-port-authentication.ts +10 -13
- package/src/webhook-event.ts +55 -0
- package/src/workspace-class.ts +14 -0
- package/src/workspace-cluster.ts +34 -20
- package/src/workspace-instance.ts +76 -20
- package/src/wsready.ts +3 -3
- package/data/builtin-theia-plugins.json +0 -372
- package/lib/email-protocol.d.ts +0 -49
- package/lib/email-protocol.d.ts.map +0 -1
- package/lib/email-protocol.js +0 -28
- package/lib/email-protocol.js.map +0 -1
- package/lib/messaging/connection-error-handler.d.ts +0 -27
- package/lib/messaging/connection-error-handler.d.ts.map +0 -1
- package/lib/messaging/connection-error-handler.js +0 -34
- package/lib/messaging/connection-error-handler.js.map +0 -1
- package/lib/theia-plugins.d.ts +0 -11
- package/lib/theia-plugins.d.ts.map +0 -1
- package/lib/theia-plugins.js.map +0 -1
- package/lib/util/safe-promise.d.ts +0 -11
- package/lib/util/safe-promise.d.ts.map +0 -1
- package/lib/util/safe-promise.js +0 -31
- package/lib/util/safe-promise.js.map +0 -1
- package/src/email-protocol.ts +0 -66
- package/src/messaging/connection-error-handler.ts +0 -62
- package/src/util/safe-promise.ts +0 -26
package/lib/plans.js
CHANGED
|
@@ -9,46 +9,46 @@ exports.Plans = exports.ABSOLUTE_MAX_USAGE = exports.Coupons = exports.Coupon =
|
|
|
9
9
|
var Currency;
|
|
10
10
|
(function (Currency) {
|
|
11
11
|
Currency.getAll = () => {
|
|
12
|
-
return [
|
|
12
|
+
return ["USD", "EUR"];
|
|
13
13
|
};
|
|
14
14
|
Currency.getSymbol = (c) => {
|
|
15
|
-
return c ===
|
|
15
|
+
return c === "USD" ? "$" : "€";
|
|
16
16
|
};
|
|
17
17
|
})(Currency = exports.Currency || (exports.Currency = {}));
|
|
18
18
|
var Plan;
|
|
19
19
|
(function (Plan) {
|
|
20
20
|
Plan.is = (o) => {
|
|
21
|
-
return
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
return ("chargebeeId" in o &&
|
|
22
|
+
"name" in o &&
|
|
23
|
+
"currency" in o &&
|
|
24
|
+
"pricePerMonth" in o &&
|
|
25
|
+
"hoursPerMonth" in o &&
|
|
26
|
+
"type" in o);
|
|
27
27
|
};
|
|
28
28
|
})(Plan = exports.Plan || (exports.Plan = {}));
|
|
29
29
|
exports.MAX_PARALLEL_WORKSPACES = 16;
|
|
30
30
|
var Coupon;
|
|
31
31
|
(function (Coupon) {
|
|
32
32
|
Coupon.is = (o) => {
|
|
33
|
-
return
|
|
33
|
+
return "id" in o;
|
|
34
34
|
};
|
|
35
35
|
})(Coupon = exports.Coupon || (exports.Coupon = {}));
|
|
36
36
|
var Coupons;
|
|
37
37
|
(function (Coupons) {
|
|
38
38
|
Coupons.INTERNAL_GITPOD_GHSP = {
|
|
39
39
|
id: "INTERNAL_GITPOD_GHSP",
|
|
40
|
-
isGithubStudentCoupon: true
|
|
40
|
+
isGithubStudentCoupon: true,
|
|
41
41
|
};
|
|
42
42
|
Coupons.INTERNAL_GITPOD_GHSP_2 = {
|
|
43
43
|
id: "INTERNAL_GITPOD_GHSP_2",
|
|
44
|
-
isGithubStudentCoupon: true
|
|
44
|
+
isGithubStudentCoupon: true,
|
|
45
45
|
};
|
|
46
46
|
Coupons.GITHUBSTUDENTPACKFORFACULTY = {
|
|
47
47
|
id: "GITHUBSTUDENTPACKFORFACULTY",
|
|
48
|
-
isGithubStudentCoupon: true
|
|
48
|
+
isGithubStudentCoupon: true,
|
|
49
49
|
};
|
|
50
50
|
Coupons.isGithubStudentCoupon = (id) => {
|
|
51
|
-
const c = Coupons.getAllCoupons().find(ic => ic.id === id);
|
|
51
|
+
const c = Coupons.getAllCoupons().find((ic) => ic.id === id);
|
|
52
52
|
if (!c) {
|
|
53
53
|
return undefined;
|
|
54
54
|
}
|
|
@@ -56,8 +56,8 @@ var Coupons;
|
|
|
56
56
|
};
|
|
57
57
|
Coupons.getAllCoupons = () => {
|
|
58
58
|
return Object.keys(Coupons)
|
|
59
|
-
.map(k => Coupons[k])
|
|
60
|
-
.filter(a => typeof a ===
|
|
59
|
+
.map((k) => Coupons[k])
|
|
60
|
+
.filter((a) => typeof a === "object" && Coupon.is(a));
|
|
61
61
|
};
|
|
62
62
|
})(Coupons = exports.Coupons || (exports.Coupons = {}));
|
|
63
63
|
// Theoretical maximum of workspace hours: 16 workspaces for 24h a day for 31 days as permitted by the v3 unlimited plan
|
|
@@ -95,243 +95,243 @@ var Plans;
|
|
|
95
95
|
* The old default plan (v1): 100h hours for public repos
|
|
96
96
|
*/
|
|
97
97
|
Plans.FREE = {
|
|
98
|
-
chargebeeId:
|
|
98
|
+
chargebeeId: "free",
|
|
99
99
|
githubId: 2034,
|
|
100
100
|
githubPlanNumber: 1,
|
|
101
|
-
type:
|
|
102
|
-
name:
|
|
103
|
-
currency:
|
|
101
|
+
type: "free",
|
|
102
|
+
name: "Free",
|
|
103
|
+
currency: "USD",
|
|
104
104
|
pricePerMonth: 0,
|
|
105
|
-
hoursPerMonth: 100
|
|
105
|
+
hoursPerMonth: 100,
|
|
106
106
|
};
|
|
107
107
|
/**
|
|
108
108
|
* The new default plan (v3): 50h hours for public repos
|
|
109
109
|
*/
|
|
110
110
|
Plans.FREE_50 = {
|
|
111
|
-
chargebeeId:
|
|
111
|
+
chargebeeId: "free-50",
|
|
112
112
|
githubId: 4902,
|
|
113
113
|
githubPlanNumber: 5,
|
|
114
|
-
type:
|
|
115
|
-
name:
|
|
116
|
-
currency:
|
|
114
|
+
type: "free-50",
|
|
115
|
+
name: "Free",
|
|
116
|
+
currency: "USD",
|
|
117
117
|
pricePerMonth: 0,
|
|
118
|
-
hoursPerMonth: 50
|
|
118
|
+
hoursPerMonth: 50,
|
|
119
119
|
};
|
|
120
120
|
/**
|
|
121
121
|
* Users created after this date get the FREE_50 plan (v3) instead of the (old) FREE plan (v1)
|
|
122
122
|
*/
|
|
123
|
-
Plans.FREE_50_START_DATE =
|
|
123
|
+
Plans.FREE_50_START_DATE = "2019-12-19T00:00:00.000Z";
|
|
124
124
|
/**
|
|
125
125
|
* The 'Professional Open Source' plan was introduced to offer professional open-souce developers unlimited hours.
|
|
126
126
|
*/
|
|
127
127
|
Plans.FREE_OPEN_SOURCE = {
|
|
128
|
-
chargebeeId:
|
|
129
|
-
type:
|
|
130
|
-
name:
|
|
131
|
-
currency:
|
|
128
|
+
chargebeeId: "free-open-source",
|
|
129
|
+
type: "free-open-source",
|
|
130
|
+
name: "Professional Open Source",
|
|
131
|
+
currency: "USD",
|
|
132
132
|
pricePerMonth: 0,
|
|
133
|
-
hoursPerMonth:
|
|
133
|
+
hoursPerMonth: "unlimited",
|
|
134
134
|
};
|
|
135
135
|
/**
|
|
136
136
|
* The 'Student Unleashed' plans were introduced to give students access to the highly-priced unlimited plans.
|
|
137
137
|
*/
|
|
138
138
|
Plans.PROFESSIONAL_STUDENT_EUR = {
|
|
139
|
-
chargebeeId:
|
|
140
|
-
type:
|
|
141
|
-
name:
|
|
142
|
-
currency:
|
|
139
|
+
chargebeeId: "professional-student-eur",
|
|
140
|
+
type: "student",
|
|
141
|
+
name: "Student Unleashed",
|
|
142
|
+
currency: "EUR",
|
|
143
143
|
pricePerMonth: 8,
|
|
144
|
-
hoursPerMonth:
|
|
144
|
+
hoursPerMonth: "unlimited",
|
|
145
145
|
};
|
|
146
146
|
/**
|
|
147
147
|
* The 'Student Unleashed' plans were introduced to give students access to the highly-priced unlimited plans.
|
|
148
148
|
*/
|
|
149
149
|
Plans.PROFESSIONAL_STUDENT_USD = {
|
|
150
|
-
chargebeeId:
|
|
151
|
-
type:
|
|
152
|
-
name:
|
|
153
|
-
currency:
|
|
150
|
+
chargebeeId: "professional-student-usd",
|
|
151
|
+
type: "student",
|
|
152
|
+
name: "Student Unleashed",
|
|
153
|
+
currency: "USD",
|
|
154
154
|
pricePerMonth: 9,
|
|
155
|
-
hoursPerMonth:
|
|
155
|
+
hoursPerMonth: "unlimited",
|
|
156
156
|
};
|
|
157
157
|
/**
|
|
158
158
|
* The 'Student Unleashed' plans were introduced to give students access to the highly-priced unlimited plans.
|
|
159
159
|
*/
|
|
160
160
|
Plans.TEAM_PROFESSIONAL_STUDENT_EUR = {
|
|
161
|
-
chargebeeId:
|
|
162
|
-
type:
|
|
163
|
-
name:
|
|
161
|
+
chargebeeId: "team-professional-student-eur",
|
|
162
|
+
type: "student",
|
|
163
|
+
name: "Team Student Unleashed",
|
|
164
164
|
team: true,
|
|
165
|
-
currency:
|
|
165
|
+
currency: "EUR",
|
|
166
166
|
pricePerMonth: 8,
|
|
167
|
-
hoursPerMonth:
|
|
167
|
+
hoursPerMonth: "unlimited",
|
|
168
168
|
};
|
|
169
169
|
/**
|
|
170
170
|
* The 'Student Unleashed' plans were introduced to give students access to the highly-priced unlimited plans.
|
|
171
171
|
*/
|
|
172
172
|
Plans.TEAM_PROFESSIONAL_STUDENT_USD = {
|
|
173
|
-
chargebeeId:
|
|
174
|
-
type:
|
|
175
|
-
name:
|
|
173
|
+
chargebeeId: "team-professional-student-usd",
|
|
174
|
+
type: "student",
|
|
175
|
+
name: "Team Student Unleashed",
|
|
176
176
|
team: true,
|
|
177
|
-
currency:
|
|
177
|
+
currency: "USD",
|
|
178
178
|
pricePerMonth: 9,
|
|
179
|
-
hoursPerMonth:
|
|
179
|
+
hoursPerMonth: "unlimited",
|
|
180
180
|
};
|
|
181
181
|
/**
|
|
182
182
|
* The 'basic' plan was the original differentiator between FREE and Professional (v1) but got discarded soon.
|
|
183
183
|
*/
|
|
184
184
|
Plans.BASIC_EUR = {
|
|
185
|
-
chargebeeId:
|
|
186
|
-
type:
|
|
187
|
-
name:
|
|
188
|
-
currency:
|
|
185
|
+
chargebeeId: "basic-eur",
|
|
186
|
+
type: "basic",
|
|
187
|
+
name: "Standard",
|
|
188
|
+
currency: "EUR",
|
|
189
189
|
pricePerMonth: 17,
|
|
190
|
-
hoursPerMonth: 100
|
|
190
|
+
hoursPerMonth: 100,
|
|
191
191
|
};
|
|
192
192
|
/**
|
|
193
193
|
* The 'basic' plan was the original differentiator between FREE and Professional (v1) but got discarded soon.
|
|
194
194
|
*/
|
|
195
195
|
Plans.BASIC_USD = {
|
|
196
|
-
chargebeeId:
|
|
196
|
+
chargebeeId: "basic-usd",
|
|
197
197
|
githubId: 2035,
|
|
198
198
|
githubPlanNumber: 2,
|
|
199
|
-
type:
|
|
200
|
-
name:
|
|
201
|
-
currency:
|
|
199
|
+
type: "basic",
|
|
200
|
+
name: "Standard",
|
|
201
|
+
currency: "USD",
|
|
202
202
|
pricePerMonth: 19,
|
|
203
|
-
hoursPerMonth: 100
|
|
203
|
+
hoursPerMonth: 100,
|
|
204
204
|
};
|
|
205
205
|
/**
|
|
206
206
|
* The 'personal' plan was introduced to superseed the 'basic' plan (introduced with v2) to be more attractive to hobbyists.
|
|
207
207
|
*/
|
|
208
208
|
Plans.PERSONAL_EUR = {
|
|
209
|
-
chargebeeId:
|
|
210
|
-
type:
|
|
211
|
-
name:
|
|
212
|
-
currency:
|
|
209
|
+
chargebeeId: "personal-eur",
|
|
210
|
+
type: "personal",
|
|
211
|
+
name: "Personal",
|
|
212
|
+
currency: "EUR",
|
|
213
213
|
pricePerMonth: 8,
|
|
214
|
-
hoursPerMonth: 100
|
|
214
|
+
hoursPerMonth: 100,
|
|
215
215
|
};
|
|
216
216
|
/**
|
|
217
217
|
* The 'personal' plan was introduced to superseed the 'basic' plan (introduced with v2) to be more attractive to hobbyists.
|
|
218
218
|
*/
|
|
219
219
|
Plans.PERSONAL_USD = {
|
|
220
|
-
chargebeeId:
|
|
220
|
+
chargebeeId: "personal-usd",
|
|
221
221
|
githubId: 2274,
|
|
222
222
|
githubPlanNumber: 4,
|
|
223
|
-
type:
|
|
224
|
-
name:
|
|
225
|
-
currency:
|
|
223
|
+
type: "personal",
|
|
224
|
+
name: "Personal",
|
|
225
|
+
currency: "USD",
|
|
226
226
|
pricePerMonth: 9,
|
|
227
|
-
hoursPerMonth: 100
|
|
227
|
+
hoursPerMonth: 100,
|
|
228
228
|
};
|
|
229
229
|
/**
|
|
230
230
|
* This is the 'new' Professional plan (v3), which is meant to fit well between Personal (9$/8€) on the left and
|
|
231
231
|
* Unleashed (39$/35€) on the right.
|
|
232
232
|
*/
|
|
233
233
|
Plans.PROFESSIONAL_NEW_EUR = {
|
|
234
|
-
chargebeeId:
|
|
235
|
-
type:
|
|
236
|
-
name:
|
|
237
|
-
currency:
|
|
234
|
+
chargebeeId: "professional-new-eur",
|
|
235
|
+
type: "professional-new",
|
|
236
|
+
name: "Professional",
|
|
237
|
+
currency: "EUR",
|
|
238
238
|
pricePerMonth: 23,
|
|
239
|
-
hoursPerMonth:
|
|
239
|
+
hoursPerMonth: "unlimited",
|
|
240
240
|
};
|
|
241
241
|
/**
|
|
242
242
|
* This is the 'new' Professional plan (v3), which is meant to fit well between Personal (9$/8€) on the left and
|
|
243
243
|
* Unleashed (39$/35€) on the right.
|
|
244
244
|
*/
|
|
245
245
|
Plans.PROFESSIONAL_NEW_USD = {
|
|
246
|
-
chargebeeId:
|
|
247
|
-
type:
|
|
248
|
-
name:
|
|
249
|
-
currency:
|
|
246
|
+
chargebeeId: "professional-new-usd",
|
|
247
|
+
type: "professional-new",
|
|
248
|
+
name: "Professional",
|
|
249
|
+
currency: "USD",
|
|
250
250
|
pricePerMonth: 25,
|
|
251
|
-
hoursPerMonth:
|
|
251
|
+
hoursPerMonth: "unlimited",
|
|
252
252
|
};
|
|
253
253
|
/**
|
|
254
254
|
* This is the 'new' Team Professional plan (v3), which is meant to fit well between Personal (9$/8€) on the left and
|
|
255
255
|
* Unleashed (39$/35€) on the right.
|
|
256
256
|
*/
|
|
257
257
|
Plans.TEAM_PROFESSIONAL_NEW_EUR = {
|
|
258
|
-
chargebeeId:
|
|
259
|
-
type:
|
|
260
|
-
name:
|
|
261
|
-
currency:
|
|
258
|
+
chargebeeId: "team-professional-new-eur",
|
|
259
|
+
type: "professional-new",
|
|
260
|
+
name: "Team Professional",
|
|
261
|
+
currency: "EUR",
|
|
262
262
|
team: true,
|
|
263
263
|
pricePerMonth: 23,
|
|
264
|
-
hoursPerMonth:
|
|
264
|
+
hoursPerMonth: "unlimited",
|
|
265
265
|
};
|
|
266
266
|
/**
|
|
267
267
|
* This is the 'new' Team Professional plan (v3), which is meant to fit well between Personal (9$/8€) on the left and
|
|
268
268
|
* Unleashed (39$/35€) on the right.
|
|
269
269
|
*/
|
|
270
270
|
Plans.TEAM_PROFESSIONAL_NEW_USD = {
|
|
271
|
-
chargebeeId:
|
|
272
|
-
type:
|
|
273
|
-
name:
|
|
274
|
-
currency:
|
|
271
|
+
chargebeeId: "team-professional-new-usd",
|
|
272
|
+
type: "professional-new",
|
|
273
|
+
name: "Team Professional",
|
|
274
|
+
currency: "USD",
|
|
275
275
|
team: true,
|
|
276
276
|
pricePerMonth: 25,
|
|
277
|
-
hoursPerMonth:
|
|
277
|
+
hoursPerMonth: "unlimited",
|
|
278
278
|
};
|
|
279
279
|
/**
|
|
280
280
|
* This is the 'Unleashed' plan (v1, rebranded v2, v5)
|
|
281
281
|
* It was originally introduced as 'Professional', and we cannot update the ids, so it stays that way in the code.
|
|
282
282
|
*/
|
|
283
283
|
Plans.PROFESSIONAL_EUR = {
|
|
284
|
-
chargebeeId:
|
|
285
|
-
type:
|
|
286
|
-
name:
|
|
287
|
-
currency:
|
|
284
|
+
chargebeeId: "professional-eur",
|
|
285
|
+
type: "professional",
|
|
286
|
+
name: "Unleashed",
|
|
287
|
+
currency: "EUR",
|
|
288
288
|
pricePerMonth: 35,
|
|
289
|
-
hoursPerMonth:
|
|
289
|
+
hoursPerMonth: "unlimited",
|
|
290
290
|
};
|
|
291
291
|
/**
|
|
292
292
|
* This is the 'Unleashed' plan (v1, rebranded v2, v5)
|
|
293
293
|
* It was originally introduced as 'Professional', and we cannot update the ids, so it stays that way in the code.
|
|
294
294
|
*/
|
|
295
295
|
Plans.PROFESSIONAL_USD = {
|
|
296
|
-
chargebeeId:
|
|
296
|
+
chargebeeId: "professional-usd",
|
|
297
297
|
githubId: 2036,
|
|
298
298
|
githubPlanNumber: 3,
|
|
299
|
-
type:
|
|
300
|
-
name:
|
|
301
|
-
currency:
|
|
299
|
+
type: "professional",
|
|
300
|
+
name: "Unleashed",
|
|
301
|
+
currency: "USD",
|
|
302
302
|
pricePerMonth: 39,
|
|
303
|
-
hoursPerMonth:
|
|
303
|
+
hoursPerMonth: "unlimited",
|
|
304
304
|
};
|
|
305
305
|
/**
|
|
306
306
|
* This is the Team-'Unleashed' plan (v1, rebranded v2, v5)
|
|
307
307
|
* It was originally introduced as 'Professional', and we cannot update the ids, so it stays that way in the code.
|
|
308
308
|
*/
|
|
309
309
|
Plans.TEAM_PROFESSIONAL_USD = {
|
|
310
|
-
chargebeeId:
|
|
311
|
-
type:
|
|
312
|
-
name:
|
|
313
|
-
currency:
|
|
310
|
+
chargebeeId: "team-professional-usd",
|
|
311
|
+
type: "professional",
|
|
312
|
+
name: "Team Unleashed",
|
|
313
|
+
currency: "USD",
|
|
314
314
|
team: true,
|
|
315
315
|
pricePerMonth: 39,
|
|
316
|
-
hoursPerMonth:
|
|
316
|
+
hoursPerMonth: "unlimited",
|
|
317
317
|
};
|
|
318
318
|
/**
|
|
319
319
|
* This is the Team-'Unleashed' plan (v1, rebranded v2, v5)
|
|
320
320
|
* It was originally introduced as 'Professional', and we cannot update the ids, so it stays that way in the code.
|
|
321
321
|
*/
|
|
322
322
|
Plans.TEAM_PROFESSIONAL_EUR = {
|
|
323
|
-
chargebeeId:
|
|
324
|
-
type:
|
|
325
|
-
name:
|
|
326
|
-
currency:
|
|
323
|
+
chargebeeId: "team-professional-eur",
|
|
324
|
+
type: "professional",
|
|
325
|
+
name: "Team Unleashed",
|
|
326
|
+
currency: "EUR",
|
|
327
327
|
team: true,
|
|
328
328
|
pricePerMonth: 35,
|
|
329
|
-
hoursPerMonth:
|
|
329
|
+
hoursPerMonth: "unlimited",
|
|
330
330
|
};
|
|
331
331
|
const getAllPlans = () => {
|
|
332
332
|
return Object.keys(Plans)
|
|
333
|
-
.map(k => Plans[k])
|
|
334
|
-
.filter(a => typeof a ===
|
|
333
|
+
.map((k) => Plans[k])
|
|
334
|
+
.filter((a) => typeof a === "object" && Plan.is(a));
|
|
335
335
|
};
|
|
336
336
|
/**
|
|
337
337
|
* This function returns all individual plans that might be active (= we have subscriptions for) at the moment
|
|
@@ -345,68 +345,70 @@ var Plans;
|
|
|
345
345
|
Plans.PROFESSIONAL_NEW_EUR,
|
|
346
346
|
Plans.PROFESSIONAL_NEW_USD,
|
|
347
347
|
Plans.PROFESSIONAL_EUR,
|
|
348
|
-
Plans.PROFESSIONAL_USD
|
|
349
|
-
];
|
|
350
|
-
return [
|
|
351
|
-
Plans.FREE,
|
|
352
|
-
Plans.FREE_50,
|
|
353
|
-
Plans.FREE_OPEN_SOURCE,
|
|
354
|
-
...availablePaidPlans.filter(p => p.currency)
|
|
348
|
+
Plans.PROFESSIONAL_USD,
|
|
355
349
|
];
|
|
350
|
+
return [Plans.FREE, Plans.FREE_50, Plans.FREE_OPEN_SOURCE, ...availablePaidPlans.filter((p) => p.currency)];
|
|
356
351
|
}
|
|
357
352
|
Plans.getAvailablePlans = getAvailablePlans;
|
|
358
|
-
;
|
|
359
353
|
Plans.getAvailableTeamPlans = (currency) => {
|
|
360
|
-
const teamPlans = getAllPlans().filter(p => !!p.team);
|
|
361
|
-
return currency ? teamPlans.filter(p => p.currency === currency) : teamPlans;
|
|
354
|
+
const teamPlans = getAllPlans().filter((p) => !!p.team);
|
|
355
|
+
return currency ? teamPlans.filter((p) => p.currency === currency) : teamPlans;
|
|
362
356
|
};
|
|
363
357
|
function getById(id) {
|
|
364
358
|
if (id === undefined) {
|
|
365
359
|
return undefined;
|
|
366
360
|
}
|
|
367
|
-
return getAllPlans()
|
|
368
|
-
.find(p => p.chargebeeId === id) || undefined;
|
|
361
|
+
return getAllPlans().find((p) => p.chargebeeId === id) || undefined;
|
|
369
362
|
}
|
|
370
363
|
Plans.getById = getById;
|
|
371
|
-
;
|
|
372
364
|
function getByTypeAndCurrency(type, currency) {
|
|
373
365
|
return getAllPlans()
|
|
374
|
-
.filter(p => p.type)
|
|
375
|
-
.find(p => p.currency === currency);
|
|
366
|
+
.filter((p) => p.type)
|
|
367
|
+
.find((p) => p.currency === currency);
|
|
376
368
|
}
|
|
377
369
|
Plans.getByTypeAndCurrency = getByTypeAndCurrency;
|
|
378
370
|
function getProPlan(currency) {
|
|
379
371
|
switch (currency) {
|
|
380
|
-
case "EUR":
|
|
381
|
-
|
|
372
|
+
case "EUR":
|
|
373
|
+
return Plans.PROFESSIONAL_EUR;
|
|
374
|
+
case "USD":
|
|
375
|
+
return Plans.PROFESSIONAL_USD;
|
|
382
376
|
}
|
|
383
377
|
}
|
|
384
378
|
Plans.getProPlan = getProPlan;
|
|
385
379
|
function getNewProPlan(currency) {
|
|
386
380
|
switch (currency) {
|
|
387
|
-
case "EUR":
|
|
388
|
-
|
|
381
|
+
case "EUR":
|
|
382
|
+
return Plans.PROFESSIONAL_NEW_EUR;
|
|
383
|
+
case "USD":
|
|
384
|
+
return Plans.PROFESSIONAL_NEW_USD;
|
|
389
385
|
}
|
|
390
386
|
}
|
|
391
387
|
Plans.getNewProPlan = getNewProPlan;
|
|
392
388
|
function getStudentProPlan(currency) {
|
|
393
389
|
switch (currency) {
|
|
394
|
-
case "EUR":
|
|
395
|
-
|
|
390
|
+
case "EUR":
|
|
391
|
+
return Plans.PROFESSIONAL_STUDENT_EUR;
|
|
392
|
+
case "USD":
|
|
393
|
+
return Plans.PROFESSIONAL_STUDENT_USD;
|
|
396
394
|
}
|
|
397
395
|
}
|
|
398
396
|
Plans.getStudentProPlan = getStudentProPlan;
|
|
399
397
|
function getBasicPlan(currency) {
|
|
400
398
|
switch (currency) {
|
|
401
|
-
case "EUR":
|
|
402
|
-
|
|
399
|
+
case "EUR":
|
|
400
|
+
return Plans.BASIC_EUR;
|
|
401
|
+
case "USD":
|
|
402
|
+
return Plans.BASIC_USD;
|
|
403
403
|
}
|
|
404
404
|
}
|
|
405
405
|
Plans.getBasicPlan = getBasicPlan;
|
|
406
406
|
function getPersonalPlan(currency) {
|
|
407
407
|
switch (currency) {
|
|
408
|
-
case "EUR":
|
|
409
|
-
|
|
408
|
+
case "EUR":
|
|
409
|
+
return Plans.PERSONAL_EUR;
|
|
410
|
+
case "USD":
|
|
411
|
+
return Plans.PERSONAL_USD;
|
|
410
412
|
}
|
|
411
413
|
}
|
|
412
414
|
Plans.getPersonalPlan = getPersonalPlan;
|
|
@@ -415,17 +417,21 @@ var Plans;
|
|
|
415
417
|
}
|
|
416
418
|
Plans.getFreePlan = getFreePlan;
|
|
417
419
|
function isFreePlan(chargebeeId) {
|
|
418
|
-
return chargebeeId === Plans.FREE.chargebeeId
|
|
419
|
-
|
|
420
|
-
|
|
420
|
+
return (chargebeeId === Plans.FREE.chargebeeId ||
|
|
421
|
+
chargebeeId === Plans.FREE_50.chargebeeId ||
|
|
422
|
+
chargebeeId === Plans.FREE_OPEN_SOURCE.chargebeeId);
|
|
421
423
|
}
|
|
422
424
|
Plans.isFreePlan = isFreePlan;
|
|
425
|
+
function isFreeTier(chargebeeId) {
|
|
426
|
+
return chargebeeId === Plans.FREE.chargebeeId || chargebeeId === Plans.FREE_50.chargebeeId;
|
|
427
|
+
}
|
|
428
|
+
Plans.isFreeTier = isFreeTier;
|
|
423
429
|
function isFreeNonTransientPlan(chargebeeId) {
|
|
424
430
|
return chargebeeId === Plans.FREE_OPEN_SOURCE.chargebeeId;
|
|
425
431
|
}
|
|
426
432
|
Plans.isFreeNonTransientPlan = isFreeNonTransientPlan;
|
|
427
433
|
function getHoursPerMonth(plan) {
|
|
428
|
-
return plan.hoursPerMonth ==
|
|
434
|
+
return plan.hoursPerMonth == "unlimited" ? exports.ABSOLUTE_MAX_USAGE : plan.hoursPerMonth;
|
|
429
435
|
}
|
|
430
436
|
Plans.getHoursPerMonth = getHoursPerMonth;
|
|
431
437
|
/**
|
|
@@ -465,7 +471,7 @@ var Plans;
|
|
|
465
471
|
["free-50", "free", "free-open-source"],
|
|
466
472
|
["personal", "basic"],
|
|
467
473
|
["professional-new"],
|
|
468
|
-
["professional", "student"]
|
|
474
|
+
["professional", "student"],
|
|
469
475
|
];
|
|
470
476
|
function getPlanTypeArity(type) {
|
|
471
477
|
return planStructure.findIndex((types) => types.includes(type));
|
|
@@ -515,53 +521,86 @@ var Plans;
|
|
|
515
521
|
Feature.getFeaturesFor = (p) => {
|
|
516
522
|
switch (p.type) {
|
|
517
523
|
case "free":
|
|
518
|
-
return [
|
|
519
|
-
{ title: 'Public repositories' }
|
|
520
|
-
];
|
|
524
|
+
return [{ title: "Public repositories" }];
|
|
521
525
|
case "free-50":
|
|
522
|
-
return [
|
|
523
|
-
{ title: 'Public repositories' }
|
|
524
|
-
];
|
|
526
|
+
return [{ title: "Public repositories" }];
|
|
525
527
|
case "free-open-source":
|
|
526
|
-
return [
|
|
527
|
-
{ title: 'Public repositories' },
|
|
528
|
-
];
|
|
528
|
+
return [{ title: "Public repositories" }];
|
|
529
529
|
case "student":
|
|
530
530
|
return [
|
|
531
|
-
{ title:
|
|
532
|
-
{
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
531
|
+
{ title: "Private & Public repos" },
|
|
532
|
+
{
|
|
533
|
+
title: `${Plans.getParallelWorkspaces(p)} Parallel Workspaces`,
|
|
534
|
+
tooltip: "The number of workspaces running at the same time",
|
|
535
|
+
},
|
|
536
|
+
{
|
|
537
|
+
title: "Team Manageable",
|
|
538
|
+
link: "/teams/",
|
|
539
|
+
tooltip: "Setup Gitpod for an entire Team with a single invoice and credit card",
|
|
540
|
+
},
|
|
541
|
+
{ title: "1h Timeout", tooltip: "Workspaces without user activity are stopped after 1 hour" },
|
|
542
|
+
{
|
|
543
|
+
title: "3h Timeout Boost",
|
|
544
|
+
tooltip: "You can manually boost the timeout to 3 hours within a running workspace",
|
|
545
|
+
},
|
|
536
546
|
];
|
|
537
547
|
case "basic":
|
|
538
548
|
return [
|
|
539
|
-
{ title:
|
|
540
|
-
{
|
|
549
|
+
{ title: "Private & Public repos" },
|
|
550
|
+
{
|
|
551
|
+
title: `${Plans.getParallelWorkspaces(p)} Parallel Workspaces`,
|
|
552
|
+
tooltip: "The number of workspaces running at the same time.",
|
|
553
|
+
},
|
|
541
554
|
];
|
|
542
555
|
// Personal
|
|
543
556
|
case "personal":
|
|
544
557
|
return [
|
|
545
|
-
{ title:
|
|
546
|
-
{
|
|
547
|
-
|
|
558
|
+
{ title: "Private & Public repos" },
|
|
559
|
+
{
|
|
560
|
+
title: `${Plans.getParallelWorkspaces(p)} Parallel Workspaces`,
|
|
561
|
+
tooltip: "The number of workspaces running at the same time",
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
title: "30min Timeout",
|
|
565
|
+
tooltip: "Workspaces without user activity are stopped after 30 minutes",
|
|
566
|
+
},
|
|
548
567
|
];
|
|
549
568
|
// Professional
|
|
550
569
|
case "professional-new":
|
|
551
570
|
return [
|
|
552
|
-
{ title:
|
|
553
|
-
{
|
|
554
|
-
|
|
555
|
-
|
|
571
|
+
{ title: "Private & Public repos" },
|
|
572
|
+
{
|
|
573
|
+
title: `${Plans.getParallelWorkspaces(p)} Parallel Workspaces`,
|
|
574
|
+
tooltip: "The number of workspaces running at the same time",
|
|
575
|
+
},
|
|
576
|
+
{
|
|
577
|
+
title: "Team Manageable",
|
|
578
|
+
link: "/teams/",
|
|
579
|
+
tooltip: "Setup Gitpod for an entire Team with a single invoice and credit card",
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
title: "30min Timeout",
|
|
583
|
+
tooltip: "Workspaces without user activity are stopped after 30 minutes",
|
|
584
|
+
},
|
|
556
585
|
];
|
|
557
586
|
// Unleashed
|
|
558
587
|
case "professional":
|
|
559
588
|
return [
|
|
560
|
-
{ title:
|
|
561
|
-
{
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
589
|
+
{ title: "Private & Public repos" },
|
|
590
|
+
{
|
|
591
|
+
title: `${Plans.getParallelWorkspaces(p)} Parallel Workspaces`,
|
|
592
|
+
tooltip: "The number of workspaces running at the same time",
|
|
593
|
+
},
|
|
594
|
+
{
|
|
595
|
+
title: "Team Manageable",
|
|
596
|
+
link: "/teams/",
|
|
597
|
+
tooltip: "Setup Gitpod for an entire Team with a single invoice and credit card",
|
|
598
|
+
},
|
|
599
|
+
{ title: "1h Timeout", tooltip: "Workspaces without user activity are stopped after 1 hour" },
|
|
600
|
+
{
|
|
601
|
+
title: "3h Timeout Boost",
|
|
602
|
+
tooltip: "You can manually boost the timeout to 3 hours within a running workspace",
|
|
603
|
+
},
|
|
565
604
|
];
|
|
566
605
|
}
|
|
567
606
|
};
|