@dxos/client-services 0.1.3 → 0.1.4
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/dist/src/index.d.ts +0 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +0 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/packlets/services/iframe-service-proxy.d.ts +23 -0
- package/dist/src/packlets/services/iframe-service-proxy.d.ts.map +1 -0
- package/dist/src/packlets/services/iframe-service-proxy.js +53 -0
- package/dist/src/packlets/services/iframe-service-proxy.js.map +1 -0
- package/dist/src/packlets/testing/test-builder.d.ts.map +1 -1
- package/dist/src/packlets/testing/test-builder.js +1 -0
- package/dist/src/packlets/testing/test-builder.js.map +1 -1
- package/package.json +26 -26
- package/src/index.ts +0 -1
- package/src/packlets/services/iframe-service-proxy.ts +71 -0
- package/src/packlets/testing/test-builder.ts +1 -0
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,UAAU,CAAC;AAEzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,UAAU,CAAC;AAEzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -24,6 +24,5 @@ __exportStar(require("./packlets/identity"), exports);
|
|
|
24
24
|
__exportStar(require("./packlets/invitations"), exports);
|
|
25
25
|
__exportStar(require("./packlets/services"), exports);
|
|
26
26
|
__exportStar(require("./packlets/storage"), exports);
|
|
27
|
-
__exportStar(require("./packlets/testing"), exports);
|
|
28
27
|
__exportStar(require("./packlets/vault"), exports);
|
|
29
28
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;AAEF,2CAAyB;AAEzB,wDAAsC;AACtC,sDAAoC;AACpC,sDAAoC;AACpC,yDAAuC;AACvC,sDAAoC;AACpC,qDAAmC;AACnC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;AAEF,2CAAyB;AAEzB,wDAAsC;AACtC,sDAAoC;AACpC,sDAAoC;AACpC,yDAAuC;AACvC,sDAAoC;AACpC,qDAAmC;AACnC,mDAAiC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Config, ConfigProto } from '@dxos/config';
|
|
2
|
+
import { ClientServicesProvider } from './service-definitions';
|
|
3
|
+
export declare const DEFAULT_CLIENT_ORIGIN = "https://halo.dxos.org/headless.html";
|
|
4
|
+
export declare const DEFAULT_CONFIG_CHANNEL = "dxos:app";
|
|
5
|
+
export declare type ClientIFrameServiceProxyParams = {
|
|
6
|
+
config: Config | ConfigProto;
|
|
7
|
+
channel?: string;
|
|
8
|
+
timeout?: number;
|
|
9
|
+
};
|
|
10
|
+
/** */
|
|
11
|
+
export declare class ClientIFrameServiceProxy implements ClientServicesProvider {
|
|
12
|
+
private _iframeId?;
|
|
13
|
+
private _clientServicesProxy?;
|
|
14
|
+
private readonly params;
|
|
15
|
+
constructor({ config, channel, timeout }: ClientIFrameServiceProxyParams);
|
|
16
|
+
get proxy(): import("@dxos/rpc").ProtoRpcPeer<import("./service-definitions").ClientServices>;
|
|
17
|
+
get descriptors(): import("@dxos/rpc").ServiceBundle<import("./service-definitions").ClientServices>;
|
|
18
|
+
get services(): import("./service-definitions").ClientServices;
|
|
19
|
+
open(): Promise<void>;
|
|
20
|
+
close(): Promise<void>;
|
|
21
|
+
private _getIFramePort;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=iframe-service-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iframe-service-proxy.d.ts","sourceRoot":"","sources":["../../../../src/packlets/services/iframe-service-proxy.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAc,MAAM,cAAc,CAAC;AAK/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAI/D,eAAO,MAAM,qBAAqB,wCAAwC,CAAC;AAC3E,eAAO,MAAM,sBAAsB,aAAa,CAAC;AAEjD,oBAAY,8BAA8B,GAAG;IAC3C,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM;AACN,qBAAa,wBAAyB,YAAW,sBAAsB;IACrE,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAEZ,EAAE,MAAM,EAAE,OAAgC,EAAE,OAAc,EAAE,EAAE,8BAA8B;IAKxG,IAAI,KAAK,qFAER;IAED,IAAI,WAAW,sFAEd;IAED,IAAI,QAAQ,mDAEX;IAEK,IAAI;IAOJ,KAAK;IASX,OAAO,CAAC,cAAc;CASvB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//
|
|
3
|
+
// Copyright 2021 DXOS.org
|
|
4
|
+
//
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ClientIFrameServiceProxy = exports.DEFAULT_CONFIG_CHANNEL = exports.DEFAULT_CLIENT_ORIGIN = void 0;
|
|
7
|
+
const config_1 = require("@dxos/config");
|
|
8
|
+
const keys_1 = require("@dxos/keys");
|
|
9
|
+
const rpc_tunnel_1 = require("@dxos/rpc-tunnel");
|
|
10
|
+
const service_proxy_1 = require("./service-proxy");
|
|
11
|
+
// TODO(mykola): Remove copy-paste from client/config.ts
|
|
12
|
+
exports.DEFAULT_CLIENT_ORIGIN = 'https://halo.dxos.org/headless.html';
|
|
13
|
+
exports.DEFAULT_CONFIG_CHANNEL = 'dxos:app';
|
|
14
|
+
/** */
|
|
15
|
+
class ClientIFrameServiceProxy {
|
|
16
|
+
constructor({ config, channel = exports.DEFAULT_CONFIG_CHANNEL, timeout = 1000 }) {
|
|
17
|
+
this.params = { config, channel, timeout };
|
|
18
|
+
this._clientServicesProxy = new service_proxy_1.ClientServicesProxy(this._getIFramePort());
|
|
19
|
+
}
|
|
20
|
+
get proxy() {
|
|
21
|
+
return this._clientServicesProxy.proxy;
|
|
22
|
+
}
|
|
23
|
+
get descriptors() {
|
|
24
|
+
return this._clientServicesProxy.descriptors;
|
|
25
|
+
}
|
|
26
|
+
get services() {
|
|
27
|
+
return this._clientServicesProxy.services;
|
|
28
|
+
}
|
|
29
|
+
async open() {
|
|
30
|
+
if (!this._clientServicesProxy) {
|
|
31
|
+
this._clientServicesProxy = new service_proxy_1.ClientServicesProxy(this._getIFramePort());
|
|
32
|
+
}
|
|
33
|
+
return this._clientServicesProxy.open();
|
|
34
|
+
}
|
|
35
|
+
async close() {
|
|
36
|
+
var _a, _b;
|
|
37
|
+
await ((_a = this._clientServicesProxy) === null || _a === void 0 ? void 0 : _a.close());
|
|
38
|
+
this._clientServicesProxy = undefined;
|
|
39
|
+
if (this._iframeId) {
|
|
40
|
+
(_b = document.getElementById(this._iframeId)) === null || _b === void 0 ? void 0 : _b.remove();
|
|
41
|
+
this._iframeId = undefined;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
_getIFramePort() {
|
|
45
|
+
var _a;
|
|
46
|
+
this._iframeId = `__DXOS_CLIENT_${keys_1.PublicKey.random().toHex()}__`;
|
|
47
|
+
const source = new URL((_a = (0, config_1.fromConfig)(this.params.config).get('runtime.client.remoteSource')) !== null && _a !== void 0 ? _a : exports.DEFAULT_CLIENT_ORIGIN, window.location.origin);
|
|
48
|
+
const iframe = (0, rpc_tunnel_1.createIFrame)(source.toString(), this._iframeId);
|
|
49
|
+
return (0, rpc_tunnel_1.createIFramePort)({ origin: source.origin, iframe, channel: this.params.channel });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.ClientIFrameServiceProxy = ClientIFrameServiceProxy;
|
|
53
|
+
//# sourceMappingURL=iframe-service-proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iframe-service-proxy.js","sourceRoot":"","sources":["../../../../src/packlets/services/iframe-service-proxy.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAEF,yCAA+D;AAC/D,qCAAuC;AAEvC,iDAAkE;AAGlE,mDAAsD;AAEtD,wDAAwD;AAC3C,QAAA,qBAAqB,GAAG,qCAAqC,CAAC;AAC9D,QAAA,sBAAsB,GAAG,UAAU,CAAC;AAQjD,MAAM;AACN,MAAa,wBAAwB;IAKnC,YAAY,EAAE,MAAM,EAAE,OAAO,GAAG,8BAAsB,EAAE,OAAO,GAAG,IAAI,EAAkC;QACtG,IAAI,CAAC,MAAM,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,oBAAoB,GAAG,IAAI,mCAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,oBAAqB,CAAC,KAAK,CAAC;IAC1C,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,oBAAqB,CAAC,WAAW,CAAC;IAChD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,oBAAqB,CAAC,QAAQ,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,mCAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;SAC5E;QACD,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,KAAK;;QACT,MAAM,CAAA,MAAA,IAAI,CAAC,oBAAoB,0CAAE,KAAK,EAAE,CAAA,CAAC;QACzC,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;QACtC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAA,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,0CAAE,MAAM,EAAE,CAAC;YAClD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC5B;IACH,CAAC;IAEO,cAAc;;QACpB,IAAI,CAAC,SAAS,GAAG,iBAAiB,gBAAS,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,GAAG,CACpB,MAAA,IAAA,mBAAU,EAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,mCAAI,6BAAqB,EAC1F,MAAM,CAAC,QAAQ,CAAC,MAAM,CACvB,CAAC;QACF,MAAM,MAAM,GAAG,IAAA,yBAAY,EAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/D,OAAO,IAAA,6BAAgB,EAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3F,CAAC;CACF;AA/CD,4DA+CC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-builder.d.ts","sourceRoot":"","sources":["../../../../src/packlets/testing/test-builder.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAuB,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAElF,OAAO,EAAiB,OAAO,EAAe,MAAM,6BAA6B,CAAC;AAElF,OAAO,EAA6B,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM5F,eAAO,MAAM,iBAAiB,WAAY,MAAM,wBAAwB,0BAA0B,uBAUjG,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;oBAchC,CAAC;AAEF,eAAO,MAAM,WAAW,aAAoB,MAAM,8BAUjD,CAAC;AAEF,eAAO,MAAM,cAAc,SAAgB,cAAc,4BAGxD,CAAC;
|
|
1
|
+
{"version":3,"file":"test-builder.d.ts","sourceRoot":"","sources":["../../../../src/packlets/testing/test-builder.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAuB,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAElF,OAAO,EAAiB,OAAO,EAAe,MAAM,6BAA6B,CAAC;AAElF,OAAO,EAA6B,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM5F,eAAO,MAAM,iBAAiB,WAAY,MAAM,wBAAwB,0BAA0B,uBAUjG,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;oBAchC,CAAC;AAEF,eAAO,MAAM,WAAW,aAAoB,MAAM,8BAUjD,CAAC;AAEF,eAAO,MAAM,cAAc,SAAgB,cAAc,4BAGxD,CAAC;AAIF,eAAO,MAAM,SAAS,WAAkB,MAAM,UAAU,MAAM,kBAc7D,CAAC"}
|
|
@@ -46,6 +46,7 @@ const createIdentity = async (peer) => {
|
|
|
46
46
|
return peer;
|
|
47
47
|
};
|
|
48
48
|
exports.createIdentity = createIdentity;
|
|
49
|
+
// TODO(wittjosiah): Factor out to client-testing?
|
|
49
50
|
// TODO(burdon): Create builder and make configurable.
|
|
50
51
|
const syncItems = async (space1, space2) => {
|
|
51
52
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-builder.js","sourceRoot":"","sources":["../../../../src/packlets/testing/test-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"test-builder.js","sourceRoot":"","sources":["../../../../src/packlets/testing/test-builder.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/client-services",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"homepage": "https://dxos.org",
|
|
5
5
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
6
6
|
"license": "MIT",
|
|
@@ -15,29 +15,29 @@
|
|
|
15
15
|
"src"
|
|
16
16
|
],
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@dxos/async": "0.1.
|
|
19
|
-
"@dxos/codec-protobuf": "0.1.
|
|
20
|
-
"@dxos/config": "0.1.
|
|
21
|
-
"@dxos/credentials": "0.1.
|
|
22
|
-
"@dxos/crypto": "0.1.
|
|
23
|
-
"@dxos/debug": "0.1.
|
|
24
|
-
"@dxos/echo-db": "0.1.
|
|
25
|
-
"@dxos/feed-store": "0.1.
|
|
26
|
-
"@dxos/keyring": "0.1.
|
|
27
|
-
"@dxos/keys": "0.1.
|
|
28
|
-
"@dxos/log": "0.1.
|
|
29
|
-
"@dxos/messaging": "0.1.
|
|
30
|
-
"@dxos/model-factory": "0.1.
|
|
31
|
-
"@dxos/network-manager": "0.1.
|
|
32
|
-
"@dxos/object-model": "0.1.
|
|
33
|
-
"@dxos/protocol-plugin-rpc": "0.1.
|
|
34
|
-
"@dxos/protocols": "0.1.
|
|
35
|
-
"@dxos/random-access-storage": "0.1.
|
|
36
|
-
"@dxos/rpc": "0.1.
|
|
37
|
-
"@dxos/rpc-tunnel": "0.1.
|
|
38
|
-
"@dxos/text-model": "0.1.
|
|
39
|
-
"@dxos/timeframe": "0.1.
|
|
40
|
-
"@dxos/util": "0.1.
|
|
18
|
+
"@dxos/async": "0.1.4",
|
|
19
|
+
"@dxos/codec-protobuf": "0.1.4",
|
|
20
|
+
"@dxos/config": "0.1.4",
|
|
21
|
+
"@dxos/credentials": "0.1.4",
|
|
22
|
+
"@dxos/crypto": "0.1.4",
|
|
23
|
+
"@dxos/debug": "0.1.4",
|
|
24
|
+
"@dxos/echo-db": "0.1.4",
|
|
25
|
+
"@dxos/feed-store": "0.1.4",
|
|
26
|
+
"@dxos/keyring": "0.1.4",
|
|
27
|
+
"@dxos/keys": "0.1.4",
|
|
28
|
+
"@dxos/log": "0.1.4",
|
|
29
|
+
"@dxos/messaging": "0.1.4",
|
|
30
|
+
"@dxos/model-factory": "0.1.4",
|
|
31
|
+
"@dxos/network-manager": "0.1.4",
|
|
32
|
+
"@dxos/object-model": "0.1.4",
|
|
33
|
+
"@dxos/protocol-plugin-rpc": "0.1.4",
|
|
34
|
+
"@dxos/protocols": "0.1.4",
|
|
35
|
+
"@dxos/random-access-storage": "0.1.4",
|
|
36
|
+
"@dxos/rpc": "0.1.4",
|
|
37
|
+
"@dxos/rpc-tunnel": "0.1.4",
|
|
38
|
+
"@dxos/text-model": "0.1.4",
|
|
39
|
+
"@dxos/timeframe": "0.1.4",
|
|
40
|
+
"@dxos/util": "0.1.4",
|
|
41
41
|
"abstract-leveldown": "~7.0.0",
|
|
42
42
|
"assert": "^2.0.0",
|
|
43
43
|
"base-x": "~3.0.9",
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"memdown": "^5.1.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@dxos/signal": "0.1.
|
|
50
|
-
"@dxos/testutils": "0.1.
|
|
49
|
+
"@dxos/signal": "0.1.4",
|
|
50
|
+
"@dxos/testutils": "0.1.4",
|
|
51
51
|
"@types/level-js": "~4.0.1",
|
|
52
52
|
"@types/memdown": "^3.0.0",
|
|
53
53
|
"@types/readable-stream": "^2.3.9"
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2021 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Config, ConfigProto, fromConfig } from '@dxos/config';
|
|
6
|
+
import { PublicKey } from '@dxos/keys';
|
|
7
|
+
import { RpcPort } from '@dxos/rpc';
|
|
8
|
+
import { createIFrame, createIFramePort } from '@dxos/rpc-tunnel';
|
|
9
|
+
|
|
10
|
+
import { ClientServicesProvider } from './service-definitions';
|
|
11
|
+
import { ClientServicesProxy } from './service-proxy';
|
|
12
|
+
|
|
13
|
+
// TODO(mykola): Remove copy-paste from client/config.ts
|
|
14
|
+
export const DEFAULT_CLIENT_ORIGIN = 'https://halo.dxos.org/headless.html';
|
|
15
|
+
export const DEFAULT_CONFIG_CHANNEL = 'dxos:app';
|
|
16
|
+
|
|
17
|
+
export type ClientIFrameServiceProxyParams = {
|
|
18
|
+
config: Config | ConfigProto;
|
|
19
|
+
channel?: string;
|
|
20
|
+
timeout?: number;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/** */
|
|
24
|
+
export class ClientIFrameServiceProxy implements ClientServicesProvider {
|
|
25
|
+
private _iframeId?: string;
|
|
26
|
+
private _clientServicesProxy?: ClientServicesProxy;
|
|
27
|
+
private readonly params;
|
|
28
|
+
|
|
29
|
+
constructor({ config, channel = DEFAULT_CONFIG_CHANNEL, timeout = 1000 }: ClientIFrameServiceProxyParams) {
|
|
30
|
+
this.params = { config, channel, timeout };
|
|
31
|
+
this._clientServicesProxy = new ClientServicesProxy(this._getIFramePort());
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
get proxy() {
|
|
35
|
+
return this._clientServicesProxy!.proxy;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
get descriptors() {
|
|
39
|
+
return this._clientServicesProxy!.descriptors;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
get services() {
|
|
43
|
+
return this._clientServicesProxy!.services;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async open() {
|
|
47
|
+
if (!this._clientServicesProxy) {
|
|
48
|
+
this._clientServicesProxy = new ClientServicesProxy(this._getIFramePort());
|
|
49
|
+
}
|
|
50
|
+
return this._clientServicesProxy.open();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async close() {
|
|
54
|
+
await this._clientServicesProxy?.close();
|
|
55
|
+
this._clientServicesProxy = undefined;
|
|
56
|
+
if (this._iframeId) {
|
|
57
|
+
document.getElementById(this._iframeId)?.remove();
|
|
58
|
+
this._iframeId = undefined;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
private _getIFramePort(): RpcPort {
|
|
63
|
+
this._iframeId = `__DXOS_CLIENT_${PublicKey.random().toHex()}__`;
|
|
64
|
+
const source = new URL(
|
|
65
|
+
fromConfig(this.params.config).get('runtime.client.remoteSource') ?? DEFAULT_CLIENT_ORIGIN,
|
|
66
|
+
window.location.origin
|
|
67
|
+
);
|
|
68
|
+
const iframe = createIFrame(source.toString(), this._iframeId);
|
|
69
|
+
return createIFramePort({ origin: source.origin, iframe, channel: this.params.channel });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -61,6 +61,7 @@ export const createIdentity = async (peer: ServiceContext) => {
|
|
|
61
61
|
return peer;
|
|
62
62
|
};
|
|
63
63
|
|
|
64
|
+
// TODO(wittjosiah): Factor out to client-testing?
|
|
64
65
|
// TODO(burdon): Create builder and make configurable.
|
|
65
66
|
export const syncItems = async (space1: ISpace, space2: ISpace) => {
|
|
66
67
|
{
|