@gitpod/gitpod-protocol 0.1.5-pluggable-workspace-cluster.21 → 0.1.5-port-description-3059-fork.6
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 +13 -24
- 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 +97 -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/ide-protocol.js +8 -0
- package/lib/ide-protocol.js.map +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +5 -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.d.ts +0 -10
- package/lib/messaging/node/connection.d.ts.map +1 -1
- package/lib/messaging/node/connection.js +12 -50
- 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/oss-allowlist.d.ts +14 -0
- package/lib/oss-allowlist.d.ts.map +1 -0
- package/lib/oss-allowlist.js +8 -0
- package/lib/oss-allowlist.js.map +1 -0
- 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 +68 -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 +110 -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.d.ts +1 -0
- package/lib/util/garbage-collected-cache.d.ts.map +1 -1
- package/lib/util/garbage-collected-cache.js +26 -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/jaeger-client-types.d.ts +68 -0
- package/lib/util/jaeger-client-types.d.ts.map +1 -0
- package/lib/util/{without.js → jaeger-client-types.js} +1 -1
- package/lib/util/jaeger-client-types.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/repeat.d.ts +15 -0
- package/lib/util/repeat.d.ts.map +1 -0
- package/lib/util/repeat.js +55 -0
- package/lib/util/repeat.js.map +1 -0
- 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 +50 -5
- package/lib/util/tracing.d.ts.map +1 -1
- package/lib/util/tracing.js +171 -63
- package/lib/util/tracing.js.map +1 -1
- package/lib/util/tracing.spec.d.ts +7 -0
- package/lib/util/tracing.spec.d.ts.map +1 -0
- package/lib/util/tracing.spec.js +121 -0
- package/lib/util/tracing.spec.js.map +1 -0
- 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 +29 -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 +132 -35
- package/src/headless-workspace-log.ts +7 -11
- package/src/ide-protocol.ts +92 -0
- package/src/index.ts +6 -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 +3 -47
- package/src/messaging/proxy-factory.ts +13 -5
- package/src/oss-allowlist.ts +15 -0
- package/src/permission.ts +2 -1
- package/src/plans.ts +632 -0
- package/src/protocol.ts +91 -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 +141 -0
- package/src/util/analytics.ts +87 -0
- package/src/util/garbage-collected-cache.ts +9 -3
- 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/jaeger-client-types.ts +102 -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/repeat.ts +45 -0
- 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.spec.ts +83 -0
- package/src/util/tracing.ts +157 -18
- 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/repeater.d.ts +0 -22
- package/lib/util/repeater.d.ts.map +0 -1
- package/lib/util/repeater.js +0 -118
- package/lib/util/repeater.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
- package/src/util/jaeger-client.d.ts +0 -105
- package/src/util/repeater.ts +0 -49
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* See License-AGPL.txt in the project root for license information.
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.
|
|
8
|
+
exports.HEADLESS_LOG_STREAM_STATUS_CODE_REGEX = exports.HEADLESS_LOG_STREAM_STATUS_CODE = exports.HeadlessWorkspaceEventType = void 0;
|
|
9
9
|
var HeadlessWorkspaceEventType;
|
|
10
10
|
(function (HeadlessWorkspaceEventType) {
|
|
11
11
|
HeadlessWorkspaceEventType["LogOutput"] = "log-output";
|
|
@@ -25,10 +25,7 @@ var HeadlessWorkspaceEventType;
|
|
|
25
25
|
}
|
|
26
26
|
HeadlessWorkspaceEventType.didFinish = didFinish;
|
|
27
27
|
})(HeadlessWorkspaceEventType = exports.HeadlessWorkspaceEventType || (exports.HeadlessWorkspaceEventType = {}));
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
TheiaHeadlessLogType["TaskFailedLabel"] = "workspaceTaskFailed";
|
|
32
|
-
TheiaHeadlessLogType["TaskSuccessfulLabel"] = "workspaceTaskDone";
|
|
33
|
-
})(TheiaHeadlessLogType = exports.TheiaHeadlessLogType || (exports.TheiaHeadlessLogType = {}));
|
|
28
|
+
/** cmp. @const HEADLESS_LOG_STREAM_STATUS_CODE_REGEX */
|
|
29
|
+
exports.HEADLESS_LOG_STREAM_STATUS_CODE = "X-LogStream-StatusCode";
|
|
30
|
+
exports.HEADLESS_LOG_STREAM_STATUS_CODE_REGEX = /X-LogStream-StatusCode: ([0-9]{3})/;
|
|
34
31
|
//# sourceMappingURL=headless-workspace-log.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headless-workspace-log.js","sourceRoot":"","sources":["../src/headless-workspace-log.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,IAAY,0BAOX;AAPD,WAAY,0BAA0B;IAClC,sDAAwB,CAAA;IACxB,qEAAuC,CAAA;IACvC,+DAAiC,CAAA;IACjC,iEAAmC,CAAA;IACnC,iDAAmB,CAAA;IACnB,iDAAmB,CAAA;AACvB,CAAC,EAPW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAOrC;AACD,WAAiB,0BAA0B;IACvC,SAAgB,SAAS,CAAC,CAA6B;QACnD,OAAO,CAAC,KAAK,0BAA0B,CAAC,SAAS,CAAC;IACtD,CAAC;IAFe,oCAAS,YAExB,CAAA;IACD,SAAgB,SAAS,CAAC,CAA6B;QACnD,OAAO,CAAC,KAAK,0BAA0B,CAAC,iBAAiB,IAAI,CAAC,KAAK,0BAA0B,CAAC,oBAAoB,CAAC;IACvH,CAAC;IAFe,oCAAS,YAExB,CAAA;AACL,CAAC,EAPgB,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAO1C;
|
|
1
|
+
{"version":3,"file":"headless-workspace-log.js","sourceRoot":"","sources":["../src/headless-workspace-log.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,IAAY,0BAOX;AAPD,WAAY,0BAA0B;IAClC,sDAAwB,CAAA;IACxB,qEAAuC,CAAA;IACvC,+DAAiC,CAAA;IACjC,iEAAmC,CAAA;IACnC,iDAAmB,CAAA;IACnB,iDAAmB,CAAA;AACvB,CAAC,EAPW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAOrC;AACD,WAAiB,0BAA0B;IACvC,SAAgB,SAAS,CAAC,CAA6B;QACnD,OAAO,CAAC,KAAK,0BAA0B,CAAC,SAAS,CAAC;IACtD,CAAC;IAFe,oCAAS,YAExB,CAAA;IACD,SAAgB,SAAS,CAAC,CAA6B;QACnD,OAAO,CAAC,KAAK,0BAA0B,CAAC,iBAAiB,IAAI,CAAC,KAAK,0BAA0B,CAAC,oBAAoB,CAAC;IACvH,CAAC;IAFe,oCAAS,YAExB,CAAA;AACL,CAAC,EAPgB,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAO1C;AAaD,wDAAwD;AAC3C,QAAA,+BAA+B,GAAG,wBAAwB,CAAC;AAC3D,QAAA,qCAAqC,GAAG,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
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
|
+
/**
|
|
7
|
+
* `IDEServer` provides a list of available IDEs.
|
|
8
|
+
*/
|
|
9
|
+
export interface IDEServer {
|
|
10
|
+
/**
|
|
11
|
+
* Returns the IDE preferences.
|
|
12
|
+
*/
|
|
13
|
+
getIDEOptions(): Promise<IDEOptions>;
|
|
14
|
+
}
|
|
15
|
+
export interface IDEOptions {
|
|
16
|
+
/**
|
|
17
|
+
* A list of available IDEs.
|
|
18
|
+
*/
|
|
19
|
+
options: {
|
|
20
|
+
[key: string]: IDEOption;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* The default (browser) IDE when the user has not specified one.
|
|
24
|
+
*/
|
|
25
|
+
defaultIde: string;
|
|
26
|
+
/**
|
|
27
|
+
* The default desktop IDE when the user has not specified one.
|
|
28
|
+
*/
|
|
29
|
+
defaultDesktopIde: string;
|
|
30
|
+
}
|
|
31
|
+
export interface IDEOption {
|
|
32
|
+
/**
|
|
33
|
+
* To ensure a stable order one can set an `orderKey`.
|
|
34
|
+
*/
|
|
35
|
+
orderKey?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Human readable title text of the IDE (plain text only).
|
|
38
|
+
*/
|
|
39
|
+
title: string;
|
|
40
|
+
/**
|
|
41
|
+
* The type of the IDE, currently 'browser' or 'desktop'.
|
|
42
|
+
*/
|
|
43
|
+
type: 'browser' | 'desktop';
|
|
44
|
+
/**
|
|
45
|
+
* The logo for the IDE. That could be a key in (see
|
|
46
|
+
* components/dashboard/src/images/ideLogos.ts) or a URL.
|
|
47
|
+
*/
|
|
48
|
+
logo: string;
|
|
49
|
+
/**
|
|
50
|
+
* Text of an optional tooltip (plain text only).
|
|
51
|
+
*/
|
|
52
|
+
tooltip?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Text of an optional label next to the IDE option like “Insiders” (plain
|
|
55
|
+
* text only).
|
|
56
|
+
*/
|
|
57
|
+
label?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Notes to the IDE option that are renderd in the preferences when a user
|
|
60
|
+
* chooses this IDE.
|
|
61
|
+
*/
|
|
62
|
+
notes?: string[];
|
|
63
|
+
/**
|
|
64
|
+
* If `true` this IDE option is not visible in the IDE preferences.
|
|
65
|
+
*/
|
|
66
|
+
hidden?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* The image ref to the IDE image.
|
|
69
|
+
*/
|
|
70
|
+
image: string;
|
|
71
|
+
/**
|
|
72
|
+
* When this is `true`, the tag of this image is resolved to the latest
|
|
73
|
+
* image digest regularly.
|
|
74
|
+
*
|
|
75
|
+
* This is useful if this image points to a tag like `nightly` that will be
|
|
76
|
+
* updated regularly. When `resolveImageDigest` is `true`, we make sure that
|
|
77
|
+
* we resolve the tag regularly to the most recent image version.
|
|
78
|
+
*/
|
|
79
|
+
resolveImageDigest?: boolean;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=ide-protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ide-protocol.d.ts","sourceRoot":"","sources":["../src/ide-protocol.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,UAAU;IACvB;;OAEG;IACH,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAEtC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAE5B;;;MAGE;IACF,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB;;MAEE;IACF,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2021 Gitpod GmbH. All rights reserved.
|
|
4
|
+
* Licensed under the GNU Affero General Public License (AGPL).
|
|
5
|
+
* See License-AGPL.txt in the project root for license information.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
//# sourceMappingURL=ide-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ide-protocol.js","sourceRoot":"","sources":["../src/ide-protocol.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|
package/lib/index.d.ts
CHANGED
|
@@ -13,4 +13,9 @@ export * from './workspace-instance';
|
|
|
13
13
|
export * from './permission';
|
|
14
14
|
export * from './admin-protocol';
|
|
15
15
|
export * from './email-protocol';
|
|
16
|
+
export * from './headless-workspace-log';
|
|
17
|
+
export * from './context-url';
|
|
18
|
+
export * from './teams-projects-protocol';
|
|
19
|
+
export * from './snapshot-url';
|
|
20
|
+
export * from './oss-allowlist';
|
|
16
21
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -25,4 +25,9 @@ __exportStar(require("./workspace-instance"), exports);
|
|
|
25
25
|
__exportStar(require("./permission"), exports);
|
|
26
26
|
__exportStar(require("./admin-protocol"), exports);
|
|
27
27
|
__exportStar(require("./email-protocol"), exports);
|
|
28
|
+
__exportStar(require("./headless-workspace-log"), exports);
|
|
29
|
+
__exportStar(require("./context-url"), exports);
|
|
30
|
+
__exportStar(require("./teams-projects-protocol"), exports);
|
|
31
|
+
__exportStar(require("./snapshot-url"), exports);
|
|
32
|
+
__exportStar(require("./oss-allowlist"), exports);
|
|
28
33
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,6CAA2B;AAC3B,mDAAiC;AACjC,oDAAkC;AAClC,+CAA6B;AAC7B,+CAA6B;AAC7B,qDAAmC;AACnC,uDAAqC;AACrC,+CAA6B;AAC7B,mDAAiC;AACjC,mDAAiC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,6CAA2B;AAC3B,mDAAiC;AACjC,oDAAkC;AAClC,+CAA6B;AAC7B,+CAA6B;AAC7B,qDAAmC;AACnC,uDAAqC;AACrC,+CAA6B;AAC7B,mDAAiC;AACjC,mDAAiC;AACjC,2DAAyC;AACzC,gDAA8B;AAC9B,4DAA0C;AAC1C,iDAA+B;AAC/B,kDAAgC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Logger } from "vscode-ws-jsonrpc";
|
|
2
2
|
import { JsonRpcProxy } from "../proxy-factory";
|
|
3
|
-
import { ConnectionHandler } from "../handler";
|
|
3
|
+
import { ConnectionEventHandler, ConnectionHandler } from "../handler";
|
|
4
|
+
import ReconnectingWebSocket, { Event } from 'reconnecting-websocket';
|
|
4
5
|
export interface WebSocketOptions {
|
|
5
6
|
onerror?: (event: Event) => void;
|
|
7
|
+
onListening?: (socket: ReconnectingWebSocket) => void;
|
|
6
8
|
}
|
|
7
9
|
export declare class WebSocketConnectionProvider {
|
|
8
10
|
/**
|
|
@@ -13,14 +15,10 @@ export declare class WebSocketConnectionProvider {
|
|
|
13
15
|
* notifications and requests from a remote side.
|
|
14
16
|
*/
|
|
15
17
|
createProxy<T extends object>(path: string | Promise<string>, target?: object, options?: WebSocketOptions): JsonRpcProxy<T>;
|
|
16
|
-
createProxy2<T extends object>(path: string, target?: object, options?: WebSocketOptions): {
|
|
17
|
-
proxy: JsonRpcProxy<T>;
|
|
18
|
-
webSocket: WebSocket;
|
|
19
|
-
};
|
|
20
18
|
/**
|
|
21
19
|
* Install a connection handler for the given path.
|
|
22
20
|
*/
|
|
23
|
-
listen(handler: ConnectionHandler, options?: WebSocketOptions): WebSocket;
|
|
21
|
+
listen(handler: ConnectionHandler, eventHandler: ConnectionEventHandler, options?: WebSocketOptions): WebSocket;
|
|
24
22
|
protected createLogger(): Logger;
|
|
25
23
|
/**
|
|
26
24
|
* Creates a web socket for the given url
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../src/messaging/browser/connection.ts"],"names":[],"mappings":"AAOA,OAAO,
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../src/messaging/browser/connection.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAuC,MAAM,mBAAmB,CAAC;AAIhF,OAAO,EAAuB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,qBAAqB,EAAE,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC7B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACzD;AAED,qBAAa,2BAA2B;IAEpC;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC;IAyB3H;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS;IAwB/G,SAAS,CAAC,YAAY,IAAI,MAAM;IAIhC;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;CAW1C"}
|
|
@@ -7,12 +7,13 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.WebSocketConnectionProvider = void 0;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
const vscode_ws_jsonrpc_1 = require("vscode-ws-jsonrpc");
|
|
11
|
+
const vscode_jsonrpc_1 = require("vscode-jsonrpc");
|
|
12
|
+
const messageWriter_1 = require("vscode-jsonrpc/lib/messageWriter");
|
|
13
|
+
const messageReader_1 = require("vscode-jsonrpc/lib/messageReader");
|
|
14
|
+
const proxy_factory_1 = require("../proxy-factory");
|
|
15
|
+
const reconnecting_websocket_1 = require("reconnecting-websocket");
|
|
16
|
+
class WebSocketConnectionProvider {
|
|
16
17
|
/**
|
|
17
18
|
* Create a proxy object to remote interface of T type
|
|
18
19
|
* over a web socket connection for the given path.
|
|
@@ -20,64 +21,56 @@ var WebSocketConnectionProvider = /** @class */ (function () {
|
|
|
20
21
|
* An optional target can be provided to handle
|
|
21
22
|
* notifications and requests from a remote side.
|
|
22
23
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
createProxy(path, target, options) {
|
|
25
|
+
const factory = new proxy_factory_1.JsonRpcProxyFactory(target);
|
|
26
|
+
const startListening = (path) => {
|
|
27
|
+
const socket = this.listen({
|
|
28
|
+
path,
|
|
29
|
+
onConnection: c => factory.listen(c),
|
|
30
|
+
}, {
|
|
31
|
+
onTransportDidClose: () => factory.fireConnectionClosed(),
|
|
32
|
+
onTransportDidOpen: () => factory.fireConnectionOpened(),
|
|
30
33
|
}, options);
|
|
34
|
+
if (options === null || options === void 0 ? void 0 : options.onListening) {
|
|
35
|
+
options.onListening(socket);
|
|
36
|
+
}
|
|
31
37
|
};
|
|
32
38
|
if (typeof path === "string") {
|
|
33
39
|
startListening(path);
|
|
34
40
|
}
|
|
35
41
|
else {
|
|
36
|
-
path.then(
|
|
42
|
+
path.then(path => startListening(path));
|
|
37
43
|
}
|
|
38
44
|
return factory.createProxy();
|
|
39
|
-
}
|
|
40
|
-
WebSocketConnectionProvider.prototype.createProxy2 = function (path, target, options) {
|
|
41
|
-
var factory = new proxy_factory_1.JsonRpcProxyFactory(target);
|
|
42
|
-
var webSocket = this.listen({
|
|
43
|
-
path: path,
|
|
44
|
-
onConnection: function (c) { return factory.listen(c); }
|
|
45
|
-
}, options);
|
|
46
|
-
var proxy = factory.createProxy();
|
|
47
|
-
return { proxy: proxy, webSocket: webSocket };
|
|
48
|
-
};
|
|
45
|
+
}
|
|
49
46
|
/**
|
|
50
47
|
* Install a connection handler for the given path.
|
|
51
48
|
*/
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
listen(handler, eventHandler, options) {
|
|
50
|
+
const url = handler.path;
|
|
51
|
+
const webSocket = this.createWebSocket(url);
|
|
52
|
+
const logger = this.createLogger();
|
|
56
53
|
if (options && options.onerror) {
|
|
57
|
-
|
|
58
|
-
webSocket.addEventListener('error',
|
|
59
|
-
|
|
54
|
+
const onerror = options.onerror;
|
|
55
|
+
webSocket.addEventListener('error', (event) => {
|
|
56
|
+
onerror(event);
|
|
60
57
|
});
|
|
61
58
|
}
|
|
62
59
|
else {
|
|
63
|
-
webSocket.addEventListener('error',
|
|
60
|
+
webSocket.addEventListener('error', (error) => {
|
|
64
61
|
logger.error(JSON.stringify(error));
|
|
65
62
|
});
|
|
66
63
|
}
|
|
67
|
-
|
|
68
|
-
webSocket: webSocket,
|
|
69
|
-
onConnection: function (connection) { return handler.onConnection(connection); },
|
|
70
|
-
logger: logger
|
|
71
|
-
});
|
|
64
|
+
doListen(webSocket, handler, eventHandler, logger);
|
|
72
65
|
return webSocket;
|
|
73
|
-
}
|
|
74
|
-
|
|
66
|
+
}
|
|
67
|
+
createLogger() {
|
|
75
68
|
return new vscode_ws_jsonrpc_1.ConsoleLogger();
|
|
76
|
-
}
|
|
69
|
+
}
|
|
77
70
|
/**
|
|
78
71
|
* Creates a web socket for the given url
|
|
79
72
|
*/
|
|
80
|
-
|
|
73
|
+
createWebSocket(url) {
|
|
81
74
|
return new reconnecting_websocket_1.default(url, undefined, {
|
|
82
75
|
maxReconnectionDelay: 10000,
|
|
83
76
|
minReconnectionDelay: 1000,
|
|
@@ -86,8 +79,146 @@ var WebSocketConnectionProvider = /** @class */ (function () {
|
|
|
86
79
|
debug: false,
|
|
87
80
|
WebSocket: WebSocket
|
|
88
81
|
});
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
}());
|
|
82
|
+
}
|
|
83
|
+
}
|
|
92
84
|
exports.WebSocketConnectionProvider = WebSocketConnectionProvider;
|
|
85
|
+
// The following was extracted from vscode-ws-jsonrpc to make these changes:
|
|
86
|
+
// - switch from WebSocket to ReconnectingWebSocket
|
|
87
|
+
// - webSocket.onopen: making sure it's only ever called once so we're re-using MessageConnection
|
|
88
|
+
// - WebSocketMessageWriter: buffer and re-try messages instead of throwing an error immidiately
|
|
89
|
+
// - WebSocketMessageReader: don't close MessageConnection on 'socket.onclose'
|
|
90
|
+
function doListen(resocket, handler, eventHandler, logger) {
|
|
91
|
+
resocket.addEventListener("close", () => eventHandler.onTransportDidClose());
|
|
92
|
+
let alreadyOpened = false;
|
|
93
|
+
resocket.onopen = () => {
|
|
94
|
+
// trigerr "open" every time we re-open the underlying websocket
|
|
95
|
+
eventHandler.onTransportDidOpen();
|
|
96
|
+
// make sure we're only ever creating one MessageConnection, irregardless of how many times we have to re-open the underlying (reconnecting) websocket
|
|
97
|
+
if (alreadyOpened) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
alreadyOpened = true;
|
|
101
|
+
const connection = createWebSocketConnection(resocket, logger);
|
|
102
|
+
handler.onConnection(connection);
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function createWebSocketConnection(resocket, logger) {
|
|
106
|
+
const socket = (0, vscode_ws_jsonrpc_1.toSocket)(resocket);
|
|
107
|
+
const messageReader = new NonClosingWebSocketMessageReader(socket);
|
|
108
|
+
const messageWriter = new BufferingWebSocketMessageWriter(resocket, logger);
|
|
109
|
+
const connection = (0, vscode_jsonrpc_1.createMessageConnection)(messageReader, messageWriter, logger);
|
|
110
|
+
connection.onClose(() => connection.dispose());
|
|
111
|
+
return connection;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* This takes vscode-ws-jsonrpc/lib/socket/writer/WebSocketMessageWriter and adds a buffer
|
|
115
|
+
*/
|
|
116
|
+
class BufferingWebSocketMessageWriter extends messageWriter_1.AbstractMessageWriter {
|
|
117
|
+
constructor(socket, logger) {
|
|
118
|
+
super();
|
|
119
|
+
this.errorCount = 0;
|
|
120
|
+
this.buffer = [];
|
|
121
|
+
this.socket = socket;
|
|
122
|
+
this.logger = logger;
|
|
123
|
+
socket.addEventListener("open", (event) => this.flushBuffer());
|
|
124
|
+
}
|
|
125
|
+
write(msg) {
|
|
126
|
+
if (this.socket.readyState !== reconnecting_websocket_1.default.OPEN) {
|
|
127
|
+
this.bufferMsg(msg);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
const content = JSON.stringify(msg);
|
|
132
|
+
this.socket.send(content);
|
|
133
|
+
}
|
|
134
|
+
catch (e) {
|
|
135
|
+
this.errorCount++;
|
|
136
|
+
this.fireError(e, msg, this.errorCount);
|
|
137
|
+
this.bufferMsg(msg);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
flushBuffer() {
|
|
141
|
+
if (this.buffer.length === 0) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const buffer = [...this.buffer];
|
|
145
|
+
this.buffer = [];
|
|
146
|
+
for (const msg of buffer) {
|
|
147
|
+
this.write(msg);
|
|
148
|
+
}
|
|
149
|
+
//this.logger.info(`flushed buffer (${this.buffer.length})`)
|
|
150
|
+
}
|
|
151
|
+
bufferMsg(msg) {
|
|
152
|
+
this.buffer.push(msg);
|
|
153
|
+
//this.logger.info(`buffered message (${this.buffer.length})`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* This takes vscode-ws-jsonrpc/lib/socket/reader/WebSocketMessageReader and removes the "onClose -> fireClose" connection
|
|
158
|
+
*/
|
|
159
|
+
class NonClosingWebSocketMessageReader extends messageReader_1.AbstractMessageReader {
|
|
160
|
+
constructor(socket) {
|
|
161
|
+
super();
|
|
162
|
+
this.events = [];
|
|
163
|
+
this.state = 'initial';
|
|
164
|
+
this.callback = () => { };
|
|
165
|
+
this.socket = socket;
|
|
166
|
+
this.socket.onMessage(message => this.readMessage(message));
|
|
167
|
+
this.socket.onError(error => this.fireError(error));
|
|
168
|
+
this.socket.onClose((code, reason) => {
|
|
169
|
+
if (code !== 1000) {
|
|
170
|
+
const error = {
|
|
171
|
+
name: '' + code,
|
|
172
|
+
message: `Error during socket reconnect: code = ${code}, reason = ${reason}`
|
|
173
|
+
};
|
|
174
|
+
this.fireError(error);
|
|
175
|
+
}
|
|
176
|
+
// this.fireClose(); // <-- reason for this class to be copied over
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
listen(callback) {
|
|
180
|
+
if (this.state === 'initial') {
|
|
181
|
+
this.state = 'listening';
|
|
182
|
+
this.callback = callback;
|
|
183
|
+
while (this.events.length !== 0) {
|
|
184
|
+
const event = this.events.pop();
|
|
185
|
+
if (event.message) {
|
|
186
|
+
this.readMessage(event.message);
|
|
187
|
+
}
|
|
188
|
+
else if (event.error) {
|
|
189
|
+
this.fireError(event.error);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
this.fireClose();
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
readMessage(message) {
|
|
198
|
+
if (this.state === 'initial') {
|
|
199
|
+
this.events.splice(0, 0, { message });
|
|
200
|
+
}
|
|
201
|
+
else if (this.state === 'listening') {
|
|
202
|
+
const data = JSON.parse(message);
|
|
203
|
+
this.callback(data);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
fireError(error) {
|
|
207
|
+
if (this.state === 'initial') {
|
|
208
|
+
this.events.splice(0, 0, { error });
|
|
209
|
+
}
|
|
210
|
+
else if (this.state === 'listening') {
|
|
211
|
+
super.fireError(error);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
fireClose() {
|
|
215
|
+
if (this.state === 'initial') {
|
|
216
|
+
this.events.splice(0, 0, {});
|
|
217
|
+
}
|
|
218
|
+
else if (this.state === 'listening') {
|
|
219
|
+
super.fireClose();
|
|
220
|
+
}
|
|
221
|
+
this.state = 'closed';
|
|
222
|
+
}
|
|
223
|
+
}
|
|
93
224
|
//# sourceMappingURL=connection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/messaging/browser/connection.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/messaging/browser/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,85 +4,65 @@
|
|
|
4
4
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
5
5
|
* See License-AGPL.txt in the project root for license information.
|
|
6
6
|
*/
|
|
7
|
-
var __extends = (this && this.__extends) || (function () {
|
|
8
|
-
var extendStatics = function (d, b) {
|
|
9
|
-
extendStatics = Object.setPrototypeOf ||
|
|
10
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
11
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
12
|
-
return extendStatics(d, b);
|
|
13
|
-
};
|
|
14
|
-
return function (d, b) {
|
|
15
|
-
extendStatics(d, b);
|
|
16
|
-
function __() { this.constructor = d; }
|
|
17
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
18
|
-
};
|
|
19
|
-
})();
|
|
20
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
8
|
exports.createWindowMessageConnection = exports.WindowMessageReader = exports.WindowMessageWriter = void 0;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
9
|
+
const messageWriter_1 = require("vscode-jsonrpc/lib/messageWriter");
|
|
10
|
+
const messageReader_1 = require("vscode-jsonrpc/lib/messageReader");
|
|
11
|
+
const main_1 = require("vscode-jsonrpc/lib/main");
|
|
12
|
+
const vscode_ws_jsonrpc_1 = require("vscode-ws-jsonrpc");
|
|
26
13
|
function isWindowMessage(value) {
|
|
27
14
|
return !!value && typeof value === 'object' &&
|
|
28
15
|
('jsonrpc' in value && typeof value['jsonrpc'] === 'string') &&
|
|
29
16
|
('serviceId' in value && typeof value['serviceId'] === 'string');
|
|
30
17
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
_this.targetOrigin = targetOrigin;
|
|
38
|
-
return _this;
|
|
18
|
+
class WindowMessageWriter extends messageWriter_1.AbstractMessageWriter {
|
|
19
|
+
constructor(serviceId, window, targetOrigin) {
|
|
20
|
+
super();
|
|
21
|
+
this.serviceId = serviceId;
|
|
22
|
+
this.window = window;
|
|
23
|
+
this.targetOrigin = targetOrigin;
|
|
39
24
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
this.window.postMessage(Object.assign(msg, { serviceId
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
}(messageWriter_1.AbstractMessageWriter));
|
|
25
|
+
write(msg) {
|
|
26
|
+
const { serviceId } = this;
|
|
27
|
+
this.window.postMessage(Object.assign(msg, { serviceId }), this.targetOrigin);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
46
30
|
exports.WindowMessageWriter = WindowMessageWriter;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (_this.sourceOrigin !== '*' && event.origin !== _this.sourceOrigin) {
|
|
31
|
+
class WindowMessageReader extends messageReader_1.AbstractMessageReader {
|
|
32
|
+
constructor(serviceId, sourceOrigin) {
|
|
33
|
+
super();
|
|
34
|
+
this.serviceId = serviceId;
|
|
35
|
+
this.sourceOrigin = sourceOrigin;
|
|
36
|
+
this.buffer = [];
|
|
37
|
+
window.addEventListener('message', event => {
|
|
38
|
+
if (this.sourceOrigin !== '*' && event.origin !== this.sourceOrigin) {
|
|
56
39
|
return;
|
|
57
40
|
}
|
|
58
|
-
if (!isWindowMessage(event.data) || event.data.serviceId !==
|
|
41
|
+
if (!isWindowMessage(event.data) || event.data.serviceId !== this.serviceId) {
|
|
59
42
|
return;
|
|
60
43
|
}
|
|
61
|
-
if (
|
|
62
|
-
|
|
44
|
+
if (this.callback) {
|
|
45
|
+
this.callback(event.data);
|
|
63
46
|
}
|
|
64
47
|
else {
|
|
65
|
-
|
|
48
|
+
this.buffer.push(event.data);
|
|
66
49
|
}
|
|
67
50
|
}, false);
|
|
68
|
-
return _this;
|
|
69
51
|
}
|
|
70
|
-
|
|
71
|
-
|
|
52
|
+
listen(callback) {
|
|
53
|
+
let message;
|
|
72
54
|
while (message = this.buffer.pop()) {
|
|
73
55
|
callback(message);
|
|
74
56
|
}
|
|
75
57
|
Object.freeze(this.buffer);
|
|
76
58
|
this.callback = callback;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
}(messageReader_1.AbstractMessageReader));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
80
61
|
exports.WindowMessageReader = WindowMessageReader;
|
|
81
|
-
function createWindowMessageConnection(serviceId, window, sourceOrigin, targetOrigin) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
return main_1.createMessageConnection(reader, writer, new vscode_ws_jsonrpc_1.ConsoleLogger());
|
|
62
|
+
function createWindowMessageConnection(serviceId, window, sourceOrigin, targetOrigin = sourceOrigin) {
|
|
63
|
+
const reader = new WindowMessageReader(serviceId, sourceOrigin);
|
|
64
|
+
const writer = new WindowMessageWriter(serviceId, window, targetOrigin);
|
|
65
|
+
return (0, main_1.createMessageConnection)(reader, writer, new vscode_ws_jsonrpc_1.ConsoleLogger());
|
|
86
66
|
}
|
|
87
67
|
exports.createWindowMessageConnection = createWindowMessageConnection;
|
|
88
68
|
//# sourceMappingURL=window-connection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window-connection.js","sourceRoot":"","sources":["../../../src/messaging/browser/window-connection.ts"],"names":[],"mappings":";AAAA;;;;GAIG
|
|
1
|
+
{"version":3,"file":"window-connection.js","sourceRoot":"","sources":["../../../src/messaging/browser/window-connection.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,oEAAwF;AACxF,oEAAsG;AACtG,kDAAqF;AACrF,yDAAkD;AAKlD,SAAS,eAAe,CAAC,KAAU;IAC/B,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QACvC,CAAC,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC;QAC5D,CAAC,WAAW,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC;AACzE,CAAC;AAED,MAAa,mBAAoB,SAAQ,qCAAqB;IAE1D,YAAqB,SAAiB,EAAW,MAAc,EAAW,YAAoB;QAC1F,KAAK,EAAE,CAAC;QADS,cAAS,GAAT,SAAS,CAAQ;QAAW,WAAM,GAAN,MAAM,CAAQ;QAAW,iBAAY,GAAZ,YAAY,CAAQ;IAE9F,CAAC;IAED,KAAK,CAAC,GAAY;QACd,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAClF,CAAC;CAEJ;AAXD,kDAWC;AAED,MAAa,mBAAoB,SAAQ,qCAAqB;IAK1D,YAAqB,SAAiB,EAAW,YAAoB;QACjE,KAAK,EAAE,CAAC;QADS,cAAS,GAAT,SAAS,CAAQ;QAAW,iBAAY,GAAZ,YAAY,CAAQ;QAFlD,WAAM,GAAc,EAAE,CAAC;QAItC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;YACvC,IAAI,IAAI,CAAC,YAAY,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE;gBACjE,OAAO;aACV;YACD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE;gBACzE,OAAO;aACV;YACD,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC7B;iBAAM;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAChC;QACL,CAAC,EAAE,KAAK,CAAC,CAAC;IACd,CAAC;IAED,MAAM,CAAC,QAAsB;QACzB,IAAI,OAAO,CAAC;QACZ,OAAO,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE;YAChC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACrB;QACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CAEJ;AA/BD,kDA+BC;AAED,SAAgB,6BAA6B,CAAC,SAAiB,EAAE,MAAc,EAAE,YAAoB,EAAE,YAAY,GAAG,YAAY;IAC9H,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACxE,OAAO,IAAA,8BAAuB,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,iCAAa,EAAE,CAAC,CAAC;AACxE,CAAC;AAJD,sEAIC"}
|