@gitpod/gitpod-protocol 0.1.5-pluggable-workspace-cluster.21 → 0.1.5-port-description-3059-fork.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/gitpod-schema.json +12 -22
- package/lib/accounting-protocol.d.ts +3 -6
- package/lib/accounting-protocol.d.ts.map +1 -1
- package/lib/accounting-protocol.js +10 -16
- package/lib/accounting-protocol.js.map +1 -1
- package/lib/admin-protocol.d.ts +15 -4
- package/lib/admin-protocol.d.ts.map +1 -1
- package/lib/admin-protocol.js +15 -0
- package/lib/admin-protocol.js.map +1 -1
- package/lib/analytics.d.ts +45 -0
- package/lib/analytics.d.ts.map +1 -0
- package/lib/analytics.js +10 -0
- package/lib/analytics.js.map +1 -0
- package/lib/context-url.d.ts +18 -0
- package/lib/context-url.d.ts.map +1 -0
- package/lib/context-url.js +49 -0
- package/lib/context-url.js.map +1 -0
- package/lib/{util/context-url.spec.d.ts → context-url.spec.d.ts} +2 -0
- package/lib/context-url.spec.d.ts.map +1 -0
- package/lib/context-url.spec.js +73 -0
- package/lib/context-url.spec.js.map +1 -0
- package/lib/email-protocol.d.ts +1 -2
- package/lib/email-protocol.d.ts.map +1 -1
- package/lib/email-protocol.js +4 -4
- package/lib/email-protocol.js.map +1 -1
- package/lib/encryption/container-module.js +4 -4
- package/lib/encryption/container-module.js.map +1 -1
- package/lib/encryption/encryption-engine.js +19 -20
- package/lib/encryption/encryption-engine.js.map +1 -1
- package/lib/encryption/encryption-engine.spec.js +29 -36
- package/lib/encryption/encryption-engine.spec.js.map +1 -1
- package/lib/encryption/encryption-service.js +29 -43
- package/lib/encryption/encryption-service.js.map +1 -1
- package/lib/encryption/key-provider.js +25 -30
- package/lib/encryption/key-provider.js.map +1 -1
- package/lib/env.d.ts +1 -2
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +20 -21
- package/lib/env.js.map +1 -1
- package/lib/gitpod-file-parser.js +25 -41
- package/lib/gitpod-file-parser.js.map +1 -1
- package/lib/gitpod-file-parser.spec.js +116 -116
- package/lib/gitpod-file-parser.spec.js.map +1 -1
- package/lib/gitpod-service.d.ts +94 -19
- package/lib/gitpod-service.d.ts.map +1 -1
- package/lib/gitpod-service.js +155 -278
- package/lib/gitpod-service.js.map +1 -1
- package/lib/headless-workspace-log.d.ts +8 -11
- package/lib/headless-workspace-log.d.ts.map +1 -1
- package/lib/headless-workspace-log.js +4 -7
- package/lib/headless-workspace-log.js.map +1 -1
- package/lib/ide-protocol.d.ts +81 -0
- package/lib/ide-protocol.d.ts.map +1 -0
- package/lib/{util/without.js → ide-protocol.js} +2 -2
- package/lib/ide-protocol.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -0
- package/lib/index.js.map +1 -1
- package/lib/messaging/browser/connection.d.ts +4 -6
- package/lib/messaging/browser/connection.d.ts.map +1 -1
- package/lib/messaging/browser/connection.js +175 -44
- package/lib/messaging/browser/connection.js.map +1 -1
- package/lib/messaging/browser/window-connection.js +35 -55
- package/lib/messaging/browser/window-connection.js.map +1 -1
- package/lib/messaging/client-call-metrics.d.ts +35 -0
- package/lib/messaging/client-call-metrics.d.ts.map +1 -0
- package/lib/messaging/client-call-metrics.js +83 -0
- package/lib/messaging/client-call-metrics.js.map +1 -0
- package/lib/messaging/connection-error-handler.js +11 -23
- package/lib/messaging/connection-error-handler.js.map +1 -1
- package/lib/messaging/error.d.ts +2 -1
- package/lib/messaging/error.d.ts.map +1 -1
- package/lib/messaging/error.js +4 -2
- package/lib/messaging/error.js.map +1 -1
- package/lib/messaging/handler.d.ts +10 -0
- package/lib/messaging/handler.d.ts.map +1 -1
- package/lib/messaging/node/connection.js +22 -22
- package/lib/messaging/node/connection.js.map +1 -1
- package/lib/messaging/proxy-factory.d.ts +2 -0
- package/lib/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/messaging/proxy-factory.js +74 -159
- package/lib/messaging/proxy-factory.js.map +1 -1
- package/lib/permission.d.ts +2 -1
- package/lib/permission.d.ts.map +1 -1
- package/lib/permission.js +14 -13
- package/lib/permission.js.map +1 -1
- package/lib/plans.d.ts +210 -0
- package/lib/plans.d.ts.map +1 -0
- package/lib/plans.js +570 -0
- package/lib/plans.js.map +1 -0
- package/lib/protocol.d.ts +66 -13
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +68 -115
- package/lib/protocol.js.map +1 -1
- package/lib/snapshot-url.d.ts +14 -0
- package/lib/snapshot-url.d.ts.map +1 -0
- package/lib/snapshot-url.js +26 -0
- package/lib/snapshot-url.js.map +1 -0
- package/{src/util/without.ts → lib/snapshot-url.spec.d.ts} +2 -3
- package/lib/snapshot-url.spec.d.ts.map +1 -0
- package/lib/snapshot-url.spec.js +41 -0
- package/lib/snapshot-url.spec.js.map +1 -0
- package/lib/team-subscription-protocol.d.ts +4 -4
- package/lib/team-subscription-protocol.d.ts.map +1 -1
- package/lib/team-subscription-protocol.js +15 -12
- package/lib/team-subscription-protocol.js.map +1 -1
- package/lib/teams-projects-protocol.d.ts +103 -0
- package/lib/teams-projects-protocol.d.ts.map +1 -0
- package/lib/teams-projects-protocol.js +23 -0
- package/lib/teams-projects-protocol.js.map +1 -0
- package/lib/util/analytics.d.ts +8 -0
- package/lib/util/analytics.d.ts.map +1 -0
- package/lib/util/analytics.js +79 -0
- package/lib/util/analytics.js.map +1 -0
- package/lib/util/async-iterator.js +55 -133
- package/lib/util/async-iterator.js.map +1 -1
- package/lib/util/cancelable.js +17 -59
- package/lib/util/cancelable.js.map +1 -1
- package/lib/util/date-time.js +8 -8
- package/lib/util/date-time.js.map +1 -1
- package/lib/util/deferred.js +10 -12
- package/lib/util/deferred.js.map +1 -1
- package/lib/util/disposable.js +26 -39
- package/lib/util/disposable.js.map +1 -1
- package/lib/util/event.js +58 -74
- package/lib/util/event.js.map +1 -1
- package/lib/util/garbage-collected-cache.js +22 -46
- package/lib/util/garbage-collected-cache.js.map +1 -1
- package/lib/util/generate-workspace-id.d.ts.map +1 -1
- package/lib/util/generate-workspace-id.js +13 -67
- package/lib/util/generate-workspace-id.js.map +1 -1
- package/lib/util/generate-workspace-id.spec.js +34 -79
- package/lib/util/generate-workspace-id.spec.js.map +1 -1
- package/lib/util/gitpod-cookie.d.ts +20 -0
- package/lib/util/gitpod-cookie.d.ts.map +1 -0
- package/lib/util/gitpod-cookie.js +44 -0
- package/lib/util/gitpod-cookie.js.map +1 -0
- package/lib/util/gitpod-host-url.d.ts +1 -1
- package/lib/util/gitpod-host-url.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.js +98 -98
- package/lib/util/gitpod-host-url.js.map +1 -1
- package/lib/util/gitpod-host-url.spec.d.ts +6 -0
- package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.spec.js +102 -30
- package/lib/util/gitpod-host-url.spec.js.map +1 -1
- package/lib/util/grpc.d.ts +15 -0
- package/lib/util/grpc.d.ts.map +1 -0
- package/lib/util/grpc.js +18 -0
- package/lib/util/grpc.js.map +1 -0
- package/lib/util/logging.d.ts +49 -33
- package/lib/util/logging.d.ts.map +1 -1
- package/lib/util/logging.js +107 -110
- package/lib/util/logging.js.map +1 -1
- package/lib/util/make-link.js +2 -2
- package/lib/util/make-link.js.map +1 -1
- package/lib/util/parse-workspace-id.d.ts +10 -0
- package/lib/util/parse-workspace-id.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.js +31 -7
- package/lib/util/parse-workspace-id.js.map +1 -1
- package/lib/util/parse-workspace-id.spec.d.ts +4 -0
- package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.spec.js +123 -84
- package/lib/util/parse-workspace-id.spec.js.map +1 -1
- package/lib/util/queue.js +16 -55
- package/lib/util/queue.js.map +1 -1
- package/lib/util/queue.spec.js +144 -288
- package/lib/util/queue.spec.js.map +1 -1
- package/lib/util/repeater.js +35 -88
- package/lib/util/repeater.js.map +1 -1
- package/lib/util/safe-promise.js +9 -12
- package/lib/util/safe-promise.js.map +1 -1
- package/lib/util/semaphore.js +15 -46
- package/lib/util/semaphore.js.map +1 -1
- package/lib/util/skip-if.js +6 -6
- package/lib/util/skip-if.js.map +1 -1
- package/lib/util/timeutil.js +16 -16
- package/lib/util/timeutil.js.map +1 -1
- package/lib/util/timeutil.spec.js +21 -24
- package/lib/util/timeutil.spec.js.map +1 -1
- package/lib/util/tracing.d.ts +14 -1
- package/lib/util/tracing.d.ts.map +1 -1
- package/lib/util/tracing.js +84 -50
- package/lib/util/tracing.js.map +1 -1
- package/lib/util/workspace-port-authentication.js +2 -2
- package/lib/util/workspace-port-authentication.js.map +1 -1
- package/lib/workspace-cluster.d.ts +22 -3
- package/lib/workspace-cluster.d.ts.map +1 -1
- package/lib/workspace-cluster.js +3 -3
- package/lib/workspace-cluster.js.map +1 -1
- package/lib/workspace-instance.d.ts +5 -2
- package/lib/workspace-instance.d.ts.map +1 -1
- package/lib/wsready.d.ts +1 -1
- package/lib/wsready.js +2 -2
- package/package.json +28 -16
- package/pkg-yarn.lock +17 -9
- package/src/accounting-protocol.ts +4 -10
- package/src/admin-protocol.ts +33 -5
- package/src/analytics.ts +54 -0
- package/src/context-url.spec.ts +39 -0
- package/src/context-url.ts +51 -0
- package/src/email-protocol.ts +2 -3
- package/src/env.ts +10 -10
- package/src/gitpod-service.ts +129 -35
- package/src/headless-workspace-log.ts +7 -11
- package/src/ide-protocol.ts +92 -0
- package/src/index.ts +5 -1
- package/src/messaging/browser/connection.ts +184 -23
- package/src/messaging/client-call-metrics.ts +97 -0
- package/src/messaging/error.ts +5 -2
- package/src/messaging/handler.ts +12 -0
- package/src/messaging/node/connection.ts +2 -2
- package/src/messaging/proxy-factory.ts +13 -5
- package/src/permission.ts +2 -1
- package/src/plans.ts +632 -0
- package/src/protocol.ts +89 -18
- package/src/snapshot-url.spec.ts +25 -0
- package/src/snapshot-url.ts +27 -0
- package/src/team-subscription-protocol.ts +7 -5
- package/src/teams-projects-protocol.ts +132 -0
- package/src/util/analytics.ts +87 -0
- package/src/util/garbage-collected-cache.ts +2 -2
- package/src/util/generate-workspace-id.spec.ts +3 -3
- package/src/util/generate-workspace-id.ts +2 -0
- package/src/util/gitpod-cookie.ts +39 -0
- package/src/util/gitpod-host-url.spec.ts +24 -0
- package/src/util/gitpod-host-url.ts +23 -10
- package/src/util/grpc.ts +15 -0
- package/src/util/logging.ts +102 -38
- package/src/util/parse-workspace-id.spec.ts +21 -1
- package/src/util/parse-workspace-id.ts +32 -6
- package/src/util/semaphore.ts +2 -2
- package/src/util/skip-if.ts +1 -1
- package/src/util/timeutil.ts +4 -4
- package/src/util/tracing.ts +65 -3
- package/src/workspace-cluster.ts +24 -8
- package/src/workspace-instance.ts +25 -13
- package/src/wsready.ts +2 -2
- package/lib/util/context-url.d.ts +0 -13
- package/lib/util/context-url.d.ts.map +0 -1
- package/lib/util/context-url.js +0 -26
- package/lib/util/context-url.js.map +0 -1
- package/lib/util/context-url.spec.d.ts.map +0 -1
- package/lib/util/context-url.spec.js +0 -52
- package/lib/util/context-url.spec.js.map +0 -1
- package/lib/util/without.d.ts +0 -7
- package/lib/util/without.d.ts.map +0 -1
- package/lib/util/without.js.map +0 -1
- package/src/util/context-url.spec.ts +0 -25
- package/src/util/context-url.ts +0 -23
|
@@ -14,71 +14,23 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
14
14
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
15
|
});
|
|
16
16
|
};
|
|
17
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
18
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
19
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
20
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
21
|
-
function step(op) {
|
|
22
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
23
|
-
while (_) try {
|
|
24
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
25
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
26
|
-
switch (op[0]) {
|
|
27
|
-
case 0: case 1: t = op; break;
|
|
28
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
29
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
30
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
31
|
-
default:
|
|
32
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
33
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
34
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
35
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
36
|
-
if (t[2]) _.ops.pop();
|
|
37
|
-
_.trys.pop(); continue;
|
|
38
|
-
}
|
|
39
|
-
op = body.call(thisArg, _);
|
|
40
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
41
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
45
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
46
|
-
if (!m) return o;
|
|
47
|
-
var i = m.call(o), r, ar = [], e;
|
|
48
|
-
try {
|
|
49
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
50
|
-
}
|
|
51
|
-
catch (error) { e = { error: error }; }
|
|
52
|
-
finally {
|
|
53
|
-
try {
|
|
54
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
55
|
-
}
|
|
56
|
-
finally { if (e) throw e.error; }
|
|
57
|
-
}
|
|
58
|
-
return ar;
|
|
59
|
-
};
|
|
60
|
-
var __spread = (this && this.__spread) || function () {
|
|
61
|
-
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
|
|
62
|
-
return ar;
|
|
63
|
-
};
|
|
64
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
18
|
exports.JsonRpcProxyFactory = exports.JsonRpcConnectionHandler = void 0;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
19
|
+
const vscode_jsonrpc_1 = require("vscode-jsonrpc");
|
|
20
|
+
const event_1 = require("../util/event");
|
|
21
|
+
const logging_1 = require("../util/logging");
|
|
22
|
+
class JsonRpcConnectionHandler {
|
|
23
|
+
constructor(path, targetFactory) {
|
|
71
24
|
this.path = path;
|
|
72
25
|
this.targetFactory = targetFactory;
|
|
73
26
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
27
|
+
onConnection(connection, request) {
|
|
28
|
+
const factory = new JsonRpcProxyFactory();
|
|
29
|
+
const proxy = factory.createProxy();
|
|
77
30
|
factory.target = this.targetFactory(proxy, request);
|
|
78
31
|
factory.listen(connection);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
}());
|
|
32
|
+
}
|
|
33
|
+
}
|
|
82
34
|
exports.JsonRpcConnectionHandler = JsonRpcConnectionHandler;
|
|
83
35
|
/**
|
|
84
36
|
* Factory for JSON-RPC proxy objects.
|
|
@@ -122,57 +74,45 @@ exports.JsonRpcConnectionHandler = JsonRpcConnectionHandler;
|
|
|
122
74
|
*
|
|
123
75
|
* @param <T> - The type of the object to expose to JSON-RPC.
|
|
124
76
|
*/
|
|
125
|
-
|
|
77
|
+
class JsonRpcProxyFactory {
|
|
126
78
|
/**
|
|
127
79
|
* Build a new JsonRpcProxyFactory.
|
|
128
80
|
*
|
|
129
81
|
* @param target - The object to expose to JSON-RPC methods calls. If this
|
|
130
82
|
* is omitted, the proxy won't be able to handle requests, only send them.
|
|
131
83
|
*/
|
|
132
|
-
|
|
84
|
+
constructor(target) {
|
|
133
85
|
this.target = target;
|
|
134
86
|
this.onDidOpenConnectionEmitter = new event_1.Emitter();
|
|
135
87
|
this.onDidCloseConnectionEmitter = new event_1.Emitter();
|
|
136
88
|
this.waitForConnection();
|
|
137
89
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
this.connectionPromise
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
this.connectionPromise.then(function (connection) {
|
|
144
|
-
connection.onClose(function () {
|
|
145
|
-
return _this.onDidCloseConnectionEmitter.fire(undefined);
|
|
146
|
-
});
|
|
147
|
-
_this.onDidOpenConnectionEmitter.fire(undefined);
|
|
90
|
+
waitForConnection() {
|
|
91
|
+
this.connectionPromise = new Promise(resolve => this.connectionPromiseResolve = resolve);
|
|
92
|
+
this.connectionPromise.then(connection => {
|
|
93
|
+
connection.onClose(() => this.fireConnectionClosed());
|
|
94
|
+
this.fireConnectionOpened();
|
|
148
95
|
});
|
|
149
|
-
}
|
|
96
|
+
}
|
|
97
|
+
fireConnectionClosed() {
|
|
98
|
+
this.onDidCloseConnectionEmitter.fire(undefined);
|
|
99
|
+
}
|
|
100
|
+
fireConnectionOpened() {
|
|
101
|
+
this.onDidOpenConnectionEmitter.fire(undefined);
|
|
102
|
+
}
|
|
150
103
|
/**
|
|
151
104
|
* Connect a MessageConnection to the factory.
|
|
152
105
|
*
|
|
153
106
|
* This connection will be used to send/receive JSON-RPC requests and
|
|
154
107
|
* response.
|
|
155
108
|
*/
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
connection.
|
|
159
|
-
|
|
160
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
161
|
-
params[_i - 1] = arguments[_i];
|
|
162
|
-
}
|
|
163
|
-
return _this.onRequest.apply(_this, __spread([method], params));
|
|
164
|
-
});
|
|
165
|
-
connection.onNotification(function (method) {
|
|
166
|
-
var params = [];
|
|
167
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
168
|
-
params[_i - 1] = arguments[_i];
|
|
169
|
-
}
|
|
170
|
-
return _this.onNotification.apply(_this, __spread([method], params));
|
|
171
|
-
});
|
|
172
|
-
connection.onDispose(function () { return _this.waitForConnection(); });
|
|
109
|
+
listen(connection) {
|
|
110
|
+
connection.onRequest((method, ...params) => this.onRequest(method, ...params));
|
|
111
|
+
connection.onNotification((method, ...params) => this.onNotification(method, ...params));
|
|
112
|
+
connection.onDispose(() => this.waitForConnection());
|
|
173
113
|
connection.listen();
|
|
174
114
|
this.connectionPromiseResolve(connection);
|
|
175
|
-
}
|
|
115
|
+
}
|
|
176
116
|
/**
|
|
177
117
|
* Process an incoming JSON-RPC method call.
|
|
178
118
|
*
|
|
@@ -185,48 +125,33 @@ var JsonRpcProxyFactory = /** @class */ (function () {
|
|
|
185
125
|
*
|
|
186
126
|
* @returns A promise of the method call completion.
|
|
187
127
|
*/
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
_b.trys.push([0, 2, , 3]);
|
|
200
|
-
return [4 /*yield*/, (_a = this.target)[method].apply(_a, __spread(args))];
|
|
201
|
-
case 1: return [2 /*return*/, _b.sent()];
|
|
202
|
-
case 2:
|
|
203
|
-
e_1 = _b.sent();
|
|
204
|
-
if (e_1 instanceof vscode_jsonrpc_1.ResponseError) {
|
|
205
|
-
logging_1.log.info("Request " + method + " unsuccessful: " + e_1.code + "/\"" + e_1.message + "\"", { method: method, args: args });
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
logging_1.log.error("Request " + method + " failed with internal server error", e_1, { method: method, args: args });
|
|
209
|
-
}
|
|
210
|
-
throw e_1;
|
|
211
|
-
case 3: return [2 /*return*/];
|
|
128
|
+
onRequest(method, ...args) {
|
|
129
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
130
|
+
try {
|
|
131
|
+
return yield this.target[method](...args);
|
|
132
|
+
}
|
|
133
|
+
catch (e) {
|
|
134
|
+
if (e instanceof vscode_jsonrpc_1.ResponseError) {
|
|
135
|
+
logging_1.log.info(`Request ${method} unsuccessful: ${e.code}/"${e.message}"`, { method, args });
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
logging_1.log.error(`Request ${method} failed with internal server error`, e, { method, args });
|
|
212
139
|
}
|
|
213
|
-
|
|
140
|
+
throw e;
|
|
141
|
+
}
|
|
214
142
|
});
|
|
215
|
-
}
|
|
143
|
+
}
|
|
216
144
|
/**
|
|
217
145
|
* Process an incoming JSON-RPC notification.
|
|
218
146
|
*
|
|
219
147
|
* Same as [[onRequest]], but called on incoming notifications rather than
|
|
220
148
|
* methods calls.
|
|
221
149
|
*/
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
226
|
-
args[_i - 1] = arguments[_i];
|
|
150
|
+
onNotification(method, ...args) {
|
|
151
|
+
if (this.target[method]) {
|
|
152
|
+
this.target[method](...args);
|
|
227
153
|
}
|
|
228
|
-
|
|
229
|
-
};
|
|
154
|
+
}
|
|
230
155
|
/**
|
|
231
156
|
* Create a Proxy exposing the interface of an object of type T. This Proxy
|
|
232
157
|
* can be used to do JSON-RPC method calls on the remote target object as
|
|
@@ -234,10 +159,10 @@ var JsonRpcProxyFactory = /** @class */ (function () {
|
|
|
234
159
|
*
|
|
235
160
|
* If `T` implements `JsonRpcServer` then a client is used as a target object for a remote target object.
|
|
236
161
|
*/
|
|
237
|
-
|
|
238
|
-
|
|
162
|
+
createProxy() {
|
|
163
|
+
const result = new Proxy(this, this);
|
|
239
164
|
return result;
|
|
240
|
-
}
|
|
165
|
+
}
|
|
241
166
|
/**
|
|
242
167
|
* Get a callable object that executes a JSON-RPC method call.
|
|
243
168
|
*
|
|
@@ -260,11 +185,10 @@ var JsonRpcProxyFactory = /** @class */ (function () {
|
|
|
260
185
|
* @param receiver - unused.
|
|
261
186
|
* @returns A callable that executes the JSON-RPC call.
|
|
262
187
|
*/
|
|
263
|
-
|
|
264
|
-
var _this = this;
|
|
188
|
+
get(target, p, receiver) {
|
|
265
189
|
if (p === 'setClient') {
|
|
266
|
-
return
|
|
267
|
-
|
|
190
|
+
return (client) => {
|
|
191
|
+
this.target = client;
|
|
268
192
|
};
|
|
269
193
|
}
|
|
270
194
|
if (p === 'onDidOpenConnection') {
|
|
@@ -273,33 +197,25 @@ var JsonRpcProxyFactory = /** @class */ (function () {
|
|
|
273
197
|
if (p === 'onDidCloseConnection') {
|
|
274
198
|
return this.onDidCloseConnectionEmitter.event;
|
|
275
199
|
}
|
|
276
|
-
|
|
277
|
-
return
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
200
|
+
const isNotify = this.isNotification(p);
|
|
201
|
+
return (...args) => this.connectionPromise.then(connection => new Promise((resolve, reject) => {
|
|
202
|
+
try {
|
|
203
|
+
if (isNotify) {
|
|
204
|
+
connection.sendNotification(p.toString(), ...args);
|
|
205
|
+
resolve(undefined);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
const resultPromise = connection.sendRequest(p.toString(), ...args);
|
|
209
|
+
resultPromise
|
|
210
|
+
.catch((err) => reject(err))
|
|
211
|
+
.then((result) => resolve(result));
|
|
212
|
+
}
|
|
281
213
|
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
resolve(undefined);
|
|
288
|
-
}
|
|
289
|
-
else {
|
|
290
|
-
var resultPromise = connection.sendRequest.apply(connection, __spread([p.toString()], args));
|
|
291
|
-
resultPromise
|
|
292
|
-
.catch(function (err) { return reject(err); })
|
|
293
|
-
.then(function (result) { return resolve(result); });
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
catch (err) {
|
|
297
|
-
reject(err);
|
|
298
|
-
}
|
|
299
|
-
});
|
|
300
|
-
});
|
|
301
|
-
};
|
|
302
|
-
};
|
|
214
|
+
catch (err) {
|
|
215
|
+
reject(err);
|
|
216
|
+
}
|
|
217
|
+
}));
|
|
218
|
+
}
|
|
303
219
|
/**
|
|
304
220
|
* Return whether the given property represents a notification.
|
|
305
221
|
*
|
|
@@ -309,10 +225,9 @@ var JsonRpcProxyFactory = /** @class */ (function () {
|
|
|
309
225
|
* @param p - The property being called on the proxy.
|
|
310
226
|
* @return Whether `p` represents a notification.
|
|
311
227
|
*/
|
|
312
|
-
|
|
228
|
+
isNotification(p) {
|
|
313
229
|
return p.toString().startsWith("notify") || p.toString().startsWith("on");
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
}());
|
|
230
|
+
}
|
|
231
|
+
}
|
|
317
232
|
exports.JsonRpcProxyFactory = JsonRpcProxyFactory;
|
|
318
233
|
//# sourceMappingURL=proxy-factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-factory.js","sourceRoot":"","sources":["../../src/messaging/proxy-factory.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"proxy-factory.js","sourceRoot":"","sources":["../../src/messaging/proxy-factory.ts"],"names":[],"mappings":"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"}
|
package/lib/permission.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export declare const Permissions: {
|
|
|
12
12
|
"admin-workspaces": undefined;
|
|
13
13
|
"admin-api": undefined;
|
|
14
14
|
"ide-settings": undefined;
|
|
15
|
+
"new-workspace-cluster": undefined;
|
|
15
16
|
};
|
|
16
17
|
export declare type PermissionName = keyof (typeof Permissions);
|
|
17
18
|
export declare const Roles: {
|
|
@@ -43,7 +44,7 @@ export declare namespace Permission {
|
|
|
43
44
|
const ADMIN_API: PermissionName;
|
|
44
45
|
/** The permission to access the IDE settings */
|
|
45
46
|
const IDE_SETTINGS: PermissionName;
|
|
46
|
-
const is: (o: any) => o is "monitor" | "enforcement" | "privileged-ws" | "registry-access" | "admin-users" | "admin-workspaces" | "admin-api" | "ide-settings";
|
|
47
|
+
const is: (o: any) => o is "monitor" | "enforcement" | "privileged-ws" | "registry-access" | "admin-users" | "admin-workspaces" | "admin-api" | "ide-settings" | "new-workspace-cluster";
|
|
47
48
|
const all: () => PermissionName[];
|
|
48
49
|
}
|
|
49
50
|
export declare namespace Role {
|
package/lib/permission.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,eAAO,MAAM,WAAW;;;;;;;;;;CAUvB,CAAC;AACF,oBAAY,cAAc,GAAG,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC;AACxD,eAAO,MAAM,KAAK;;;;CAAkE,CAAC;AACrF,oBAAY,QAAQ,GAAG,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC;AAC5C,oBAAY,gBAAgB,GAAG,QAAQ,GAAG,cAAc,CAAC;AAEzD,yBAAiB,QAAQ,CAAC;IACf,MAAM,EAAE,MAAO,GAAG,uCAGxB,CAAA;CACJ;AAED,MAAM,WAAW,IAAI;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,cAAc,EAAE,CAAC;CACjC;AAED,yBAAiB,UAAU,CAAC;IACxB,0EAA0E;IACnE,MAAM,OAAO,EAAE,cAA0B,CAAC;IAEjD,uEAAuE;IAChE,MAAM,WAAW,EAAE,cAA8B,CAAC;IAEzD,sGAAsG;IAC/F,MAAM,eAAe,EAAE,cAAkC,CAAC;IAEjE,iDAAiD;IAC1C,MAAM,WAAW,EAAE,cAA8B,CAAC;IAEzD,sDAAsD;IAC/C,MAAM,gBAAgB,EAAE,cAAmC,CAAC;IAEnE,6CAA6C;IACtC,MAAM,SAAS,EAAE,cAA4B,CAAC;IAErD,gDAAgD;IACzC,MAAM,YAAY,EAAE,cAA+B,CAAC;IAEpD,MAAM,EAAE,MAAO,GAAG,uKAGxB,CAAA;IAEM,MAAM,GAAG,QAAO,cAAc,EAIpC,CAAC;CACL;AAED,yBAAiB,IAAI,CAAC;IAClB,iDAAiD;IAC1C,MAAM,MAAM,EAAE,IAQpB,CAAC;IAEF,kEAAkE;IAC3D,MAAM,MAAM,EAAE,IAMpB,CAAC;IAEK,MAAM,KAAK,EAAE,IAQnB,CAAA;IAEM,MAAM,SAAS,SAAU,QAAQ,KAAG,IAM1C,CAAC;IAEK,MAAM,GAAG,QAAO,IAAI,EAI1B,CAAC;CACL"}
|
package/lib/permission.js
CHANGED
|
@@ -15,14 +15,15 @@ exports.Permissions = {
|
|
|
15
15
|
"admin-users": undefined,
|
|
16
16
|
"admin-workspaces": undefined,
|
|
17
17
|
"admin-api": undefined,
|
|
18
|
-
"ide-settings": undefined
|
|
18
|
+
"ide-settings": undefined,
|
|
19
|
+
"new-workspace-cluster": undefined,
|
|
19
20
|
};
|
|
20
21
|
exports.Roles = { "devops": undefined, "viewer": undefined, "admin": undefined };
|
|
21
22
|
var RoleName;
|
|
22
23
|
(function (RoleName) {
|
|
23
|
-
RoleName.is =
|
|
24
|
+
RoleName.is = (o) => {
|
|
24
25
|
return typeof (o) === 'string'
|
|
25
|
-
&& Role.all().some(
|
|
26
|
+
&& Role.all().some(r => r.name === o);
|
|
26
27
|
};
|
|
27
28
|
})(RoleName = exports.RoleName || (exports.RoleName = {}));
|
|
28
29
|
var Permission;
|
|
@@ -41,14 +42,14 @@ var Permission;
|
|
|
41
42
|
Permission.ADMIN_API = "admin-api";
|
|
42
43
|
/** The permission to access the IDE settings */
|
|
43
44
|
Permission.IDE_SETTINGS = "ide-settings";
|
|
44
|
-
Permission.is =
|
|
45
|
+
Permission.is = (o) => {
|
|
45
46
|
return typeof (o) === 'string'
|
|
46
|
-
&& Permission.all().some(
|
|
47
|
+
&& Permission.all().some(p => p === o);
|
|
47
48
|
};
|
|
48
|
-
Permission.all =
|
|
49
|
+
Permission.all = () => {
|
|
49
50
|
return Object.keys(Permission)
|
|
50
|
-
.map(
|
|
51
|
-
.filter(
|
|
51
|
+
.map(k => Permission[k])
|
|
52
|
+
.filter(k => typeof (k) === 'string');
|
|
52
53
|
};
|
|
53
54
|
})(Permission = exports.Permission || (exports.Permission = {}));
|
|
54
55
|
var Role;
|
|
@@ -80,17 +81,17 @@ var Role;
|
|
|
80
81
|
Permission.ENFORCEMENT,
|
|
81
82
|
]
|
|
82
83
|
};
|
|
83
|
-
Role.getByName =
|
|
84
|
-
|
|
84
|
+
Role.getByName = (name) => {
|
|
85
|
+
const result = Role.all().find(r => r.name === name);
|
|
85
86
|
if (!result) {
|
|
86
87
|
throw Error("Unknown RoleName: " + name);
|
|
87
88
|
}
|
|
88
89
|
return result;
|
|
89
90
|
};
|
|
90
|
-
Role.all =
|
|
91
|
+
Role.all = () => {
|
|
91
92
|
return Object.keys(Role)
|
|
92
|
-
.map(
|
|
93
|
-
.filter(
|
|
93
|
+
.map(k => Role[k])
|
|
94
|
+
.filter(k => typeof (k) === 'object');
|
|
94
95
|
};
|
|
95
96
|
})(Role = exports.Role || (exports.Role = {}));
|
|
96
97
|
//# sourceMappingURL=permission.js.map
|
package/lib/permission.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission.js","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,4BAA4B;AACf,QAAA,WAAW,GAAG;IACvB,SAAS,EAAE,SAAS;IACpB,aAAa,EAAE,SAAS;IACxB,eAAe,EAAE,SAAS;IAC1B,iBAAiB,EAAE,SAAS;IAC5B,aAAa,EAAE,SAAS;IACxB,kBAAkB,EAAE,SAAS;IAC7B,WAAW,EAAE,SAAS;IACtB,cAAc,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"permission.js","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,4BAA4B;AACf,QAAA,WAAW,GAAG;IACvB,SAAS,EAAE,SAAS;IACpB,aAAa,EAAE,SAAS;IACxB,eAAe,EAAE,SAAS;IAC1B,iBAAiB,EAAE,SAAS;IAC5B,aAAa,EAAE,SAAS;IACxB,kBAAkB,EAAE,SAAS;IAC7B,WAAW,EAAE,SAAS;IACtB,cAAc,EAAE,SAAS;IACzB,uBAAuB,EAAE,SAAS;CACrC,CAAC;AAEW,QAAA,KAAK,GAAG,EAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAIrF,IAAiB,QAAQ,CAKxB;AALD,WAAiB,QAAQ;IACR,WAAE,GAAG,CAAC,CAAM,EAAiB,EAAE;QACxC,OAAO,OAAM,CAAC,CAAC,CAAC,KAAK,QAAQ;eACtB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAA;AACL,CAAC,EALgB,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAKxB;AAOD,IAAiB,UAAU,CAgC1B;AAhCD,WAAiB,UAAU;IACvB,0EAA0E;IAC7D,kBAAO,GAAmB,SAAS,CAAC;IAEjD,uEAAuE;IAC1D,sBAAW,GAAmB,aAAa,CAAC;IAEzD,sGAAsG;IACzF,0BAAe,GAAmB,iBAAiB,CAAC;IAEjE,iDAAiD;IACpC,sBAAW,GAAmB,aAAa,CAAC;IAEzD,sDAAsD;IACzC,2BAAgB,GAAmB,kBAAkB,CAAC;IAEnE,6CAA6C;IAChC,oBAAS,GAAmB,WAAW,CAAC;IAErD,gDAAgD;IACnC,uBAAY,GAAmB,cAAc,CAAC;IAE9C,aAAE,GAAG,CAAC,CAAM,EAAuB,EAAE;QAC9C,OAAO,OAAM,CAAC,CAAC,CAAC,KAAK,QAAQ;eACtB,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAA;IAEY,cAAG,GAAG,GAAqB,EAAE;QACtC,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;aACzB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,UAAkB,CAAC,CAAC,CAAC,CAAC;aAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC;AACN,CAAC,EAhCgB,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAgC1B;AAED,IAAiB,IAAI,CA4CpB;AA5CD,WAAiB,IAAI;IACjB,iDAAiD;IACpC,WAAM,GAAS;QACxB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE;YACT,UAAU,CAAC,OAAO;YAClB,UAAU,CAAC,WAAW;YACtB,UAAU,CAAC,eAAe;YAC1B,UAAU,CAAC,YAAY;SAC1B;KACJ,CAAC;IAEF,kEAAkE;IACrD,WAAM,GAAS;QACxB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE;YACT,UAAU,CAAC,OAAO;YAClB,UAAU,CAAC,eAAe;SAC7B;KACJ,CAAC;IAEW,UAAK,GAAS;QACvB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE;YACT,UAAU,CAAC,WAAW;YACtB,UAAU,CAAC,gBAAgB;YAC3B,UAAU,CAAC,SAAS;YACpB,UAAU,CAAC,WAAW;SACzB;KACJ,CAAA;IAEY,cAAS,GAAG,CAAC,IAAc,EAAQ,EAAE;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;QACpD,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;SAC5C;QACD,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;IAEW,QAAG,GAAG,GAAW,EAAE;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACnB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,IAAY,CAAC,CAAC,CAAC,CAAC;aAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC;AACN,CAAC,EA5CgB,IAAI,GAAJ,YAAI,KAAJ,YAAI,QA4CpB"}
|
package/lib/plans.d.ts
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2021 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
|
+
export declare type Currency = 'USD' | 'EUR';
|
|
7
|
+
export declare namespace Currency {
|
|
8
|
+
const getAll: () => Currency[];
|
|
9
|
+
const getSymbol: (c: Currency) => "$" | "€";
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Different plans of the same type MAY have different prices ($/€, for example) but MUST have the same feature set.
|
|
13
|
+
*/
|
|
14
|
+
export declare type PlanType = 'free' | 'free-50' | 'free-open-source' | 'student' | 'basic' | 'personal' | 'professional' | 'professional-new';
|
|
15
|
+
export declare type HoursPerMonthType = number | 'unlimited';
|
|
16
|
+
export interface Plan {
|
|
17
|
+
chargebeeId: string;
|
|
18
|
+
githubId?: number;
|
|
19
|
+
githubPlanNumber?: number;
|
|
20
|
+
name: string;
|
|
21
|
+
currency: Currency;
|
|
22
|
+
/** In full currencies (Euro, US Dollar, ...) */
|
|
23
|
+
pricePerMonth: number;
|
|
24
|
+
hoursPerMonth: HoursPerMonthType;
|
|
25
|
+
type: PlanType;
|
|
26
|
+
team?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export declare namespace Plan {
|
|
29
|
+
const is: (o: any) => o is Plan;
|
|
30
|
+
}
|
|
31
|
+
export declare const MAX_PARALLEL_WORKSPACES = 16;
|
|
32
|
+
export interface Coupon {
|
|
33
|
+
id: string;
|
|
34
|
+
isGithubStudentCoupon?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export declare namespace Coupon {
|
|
37
|
+
const is: (o: any) => o is Coupon;
|
|
38
|
+
}
|
|
39
|
+
export declare namespace Coupons {
|
|
40
|
+
const INTERNAL_GITPOD_GHSP: Coupon;
|
|
41
|
+
const INTERNAL_GITPOD_GHSP_2: Coupon;
|
|
42
|
+
const GITHUBSTUDENTPACKFORFACULTY: Coupon;
|
|
43
|
+
const isGithubStudentCoupon: (id: string) => boolean | undefined;
|
|
44
|
+
const getAllCoupons: () => Coupon[];
|
|
45
|
+
}
|
|
46
|
+
export declare const ABSOLUTE_MAX_USAGE: number;
|
|
47
|
+
/**
|
|
48
|
+
* Version history:
|
|
49
|
+
* - v1:
|
|
50
|
+
* - Free
|
|
51
|
+
* - Basic
|
|
52
|
+
* - Professional
|
|
53
|
+
* - Team Professional
|
|
54
|
+
* - v2:
|
|
55
|
+
* - Free
|
|
56
|
+
* - Personal
|
|
57
|
+
* - Unlimited: rebranded professional with unlimited hours
|
|
58
|
+
* - Team Unlimited: rebranded professional with unlimited hours
|
|
59
|
+
* - dropped: Basic
|
|
60
|
+
* - v2.5:
|
|
61
|
+
* + Student Unlimited
|
|
62
|
+
* + Team Unlimited Student
|
|
63
|
+
* - V3:
|
|
64
|
+
* - Free: reduced to 50h (stays default, but not advertised directly anymore)
|
|
65
|
+
* - Personal (8/9)
|
|
66
|
+
* - Professional (23/25)
|
|
67
|
+
* - Unlimited (35/39)
|
|
68
|
+
* - v4:
|
|
69
|
+
* - Professional Open Source (free)
|
|
70
|
+
* - v5:
|
|
71
|
+
* - Unleashed: rebranded Unlimited
|
|
72
|
+
*/
|
|
73
|
+
export declare namespace Plans {
|
|
74
|
+
/**
|
|
75
|
+
* The old default plan (v1): 100h hours for public repos
|
|
76
|
+
*/
|
|
77
|
+
const FREE: Plan;
|
|
78
|
+
/**
|
|
79
|
+
* The new default plan (v3): 50h hours for public repos
|
|
80
|
+
*/
|
|
81
|
+
const FREE_50: Plan;
|
|
82
|
+
/**
|
|
83
|
+
* Users created after this date get the FREE_50 plan (v3) instead of the (old) FREE plan (v1)
|
|
84
|
+
*/
|
|
85
|
+
const FREE_50_START_DATE = "2019-12-19T00:00:00.000Z";
|
|
86
|
+
/**
|
|
87
|
+
* The 'Professional Open Source' plan was introduced to offer professional open-souce developers unlimited hours.
|
|
88
|
+
*/
|
|
89
|
+
const FREE_OPEN_SOURCE: Plan;
|
|
90
|
+
/**
|
|
91
|
+
* The 'Student Unleashed' plans were introduced to give students access to the highly-priced unlimited plans.
|
|
92
|
+
*/
|
|
93
|
+
const PROFESSIONAL_STUDENT_EUR: Plan;
|
|
94
|
+
/**
|
|
95
|
+
* The 'Student Unleashed' plans were introduced to give students access to the highly-priced unlimited plans.
|
|
96
|
+
*/
|
|
97
|
+
const PROFESSIONAL_STUDENT_USD: Plan;
|
|
98
|
+
/**
|
|
99
|
+
* The 'Student Unleashed' plans were introduced to give students access to the highly-priced unlimited plans.
|
|
100
|
+
*/
|
|
101
|
+
const TEAM_PROFESSIONAL_STUDENT_EUR: Plan;
|
|
102
|
+
/**
|
|
103
|
+
* The 'Student Unleashed' plans were introduced to give students access to the highly-priced unlimited plans.
|
|
104
|
+
*/
|
|
105
|
+
const TEAM_PROFESSIONAL_STUDENT_USD: Plan;
|
|
106
|
+
/**
|
|
107
|
+
* The 'basic' plan was the original differentiator between FREE and Professional (v1) but got discarded soon.
|
|
108
|
+
*/
|
|
109
|
+
const BASIC_EUR: Plan;
|
|
110
|
+
/**
|
|
111
|
+
* The 'basic' plan was the original differentiator between FREE and Professional (v1) but got discarded soon.
|
|
112
|
+
*/
|
|
113
|
+
const BASIC_USD: Plan;
|
|
114
|
+
/**
|
|
115
|
+
* The 'personal' plan was introduced to superseed the 'basic' plan (introduced with v2) to be more attractive to hobbyists.
|
|
116
|
+
*/
|
|
117
|
+
const PERSONAL_EUR: Plan;
|
|
118
|
+
/**
|
|
119
|
+
* The 'personal' plan was introduced to superseed the 'basic' plan (introduced with v2) to be more attractive to hobbyists.
|
|
120
|
+
*/
|
|
121
|
+
const PERSONAL_USD: Plan;
|
|
122
|
+
/**
|
|
123
|
+
* This is the 'new' Professional plan (v3), which is meant to fit well between Personal (9$/8€) on the left and
|
|
124
|
+
* Unleashed (39$/35€) on the right.
|
|
125
|
+
*/
|
|
126
|
+
const PROFESSIONAL_NEW_EUR: Plan;
|
|
127
|
+
/**
|
|
128
|
+
* This is the 'new' Professional plan (v3), which is meant to fit well between Personal (9$/8€) on the left and
|
|
129
|
+
* Unleashed (39$/35€) on the right.
|
|
130
|
+
*/
|
|
131
|
+
const PROFESSIONAL_NEW_USD: Plan;
|
|
132
|
+
/**
|
|
133
|
+
* This is the 'new' Team Professional plan (v3), which is meant to fit well between Personal (9$/8€) on the left and
|
|
134
|
+
* Unleashed (39$/35€) on the right.
|
|
135
|
+
*/
|
|
136
|
+
const TEAM_PROFESSIONAL_NEW_EUR: Plan;
|
|
137
|
+
/**
|
|
138
|
+
* This is the 'new' Team Professional plan (v3), which is meant to fit well between Personal (9$/8€) on the left and
|
|
139
|
+
* Unleashed (39$/35€) on the right.
|
|
140
|
+
*/
|
|
141
|
+
const TEAM_PROFESSIONAL_NEW_USD: Plan;
|
|
142
|
+
/**
|
|
143
|
+
* This is the 'Unleashed' plan (v1, rebranded v2, v5)
|
|
144
|
+
* It was originally introduced as 'Professional', and we cannot update the ids, so it stays that way in the code.
|
|
145
|
+
*/
|
|
146
|
+
const PROFESSIONAL_EUR: Plan;
|
|
147
|
+
/**
|
|
148
|
+
* This is the 'Unleashed' plan (v1, rebranded v2, v5)
|
|
149
|
+
* It was originally introduced as 'Professional', and we cannot update the ids, so it stays that way in the code.
|
|
150
|
+
*/
|
|
151
|
+
const PROFESSIONAL_USD: Plan;
|
|
152
|
+
/**
|
|
153
|
+
* This is the Team-'Unleashed' plan (v1, rebranded v2, v5)
|
|
154
|
+
* It was originally introduced as 'Professional', and we cannot update the ids, so it stays that way in the code.
|
|
155
|
+
*/
|
|
156
|
+
const TEAM_PROFESSIONAL_USD: Plan;
|
|
157
|
+
/**
|
|
158
|
+
* This is the Team-'Unleashed' plan (v1, rebranded v2, v5)
|
|
159
|
+
* It was originally introduced as 'Professional', and we cannot update the ids, so it stays that way in the code.
|
|
160
|
+
*/
|
|
161
|
+
const TEAM_PROFESSIONAL_EUR: Plan;
|
|
162
|
+
/**
|
|
163
|
+
* This function returns all individual plans that might be active (= we have subscriptions for) at the moment
|
|
164
|
+
*/
|
|
165
|
+
function getAvailablePlans(currency: Currency): Plan[];
|
|
166
|
+
const getAvailableTeamPlans: (currency?: Currency | undefined) => Plan[];
|
|
167
|
+
function getById(id: string | undefined): Plan | undefined;
|
|
168
|
+
function getByTypeAndCurrency(type: PlanType, currency: Currency): Plan | undefined;
|
|
169
|
+
function getProPlan(currency: Currency): Plan;
|
|
170
|
+
function getNewProPlan(currency: Currency): Plan;
|
|
171
|
+
function getStudentProPlan(currency: Currency): Plan;
|
|
172
|
+
function getBasicPlan(currency: Currency): Plan;
|
|
173
|
+
function getPersonalPlan(currency: Currency): Plan;
|
|
174
|
+
function getFreePlan(userCreationDate: string): Plan;
|
|
175
|
+
function isFreePlan(chargebeeId: string | undefined): boolean;
|
|
176
|
+
function isFreeNonTransientPlan(chargebeeId: string | undefined): boolean;
|
|
177
|
+
function getHoursPerMonth(plan: Plan): number;
|
|
178
|
+
/**
|
|
179
|
+
* Returns the maximum number of parallel workspaces for the given plan
|
|
180
|
+
* @param plan
|
|
181
|
+
*/
|
|
182
|
+
function getParallelWorkspacesById(planId: string | undefined): number;
|
|
183
|
+
/**
|
|
184
|
+
* Returns the maximum number of parallel workspaces for the given plan
|
|
185
|
+
* @param plan
|
|
186
|
+
*/
|
|
187
|
+
function getParallelWorkspaces(plan: Plan | undefined): number;
|
|
188
|
+
/**
|
|
189
|
+
* Returns the preferred plan type with the next higher arity
|
|
190
|
+
* @param type
|
|
191
|
+
*/
|
|
192
|
+
function getNextHigherPlanType(type: PlanType): PlanType;
|
|
193
|
+
/**
|
|
194
|
+
* This imposes a partial order on the plan types
|
|
195
|
+
* @param planTypeA
|
|
196
|
+
* @param planTypeB
|
|
197
|
+
*/
|
|
198
|
+
function compareTypes(planTypeA: PlanType, planTypeB: PlanType): 0 | 1 | -1;
|
|
199
|
+
function subscriptionChange(fromType: PlanType, toType: PlanType): "upgrade" | "downgrade" | "none";
|
|
200
|
+
interface Feature {
|
|
201
|
+
title: string;
|
|
202
|
+
emph?: boolean;
|
|
203
|
+
link?: string;
|
|
204
|
+
tooltip?: string;
|
|
205
|
+
}
|
|
206
|
+
namespace Feature {
|
|
207
|
+
const getFeaturesFor: (p: Plan) => Feature[];
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=plans.d.ts.map
|