rimless 0.1.5 → 0.2.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/LICENSE +1 -1
- package/README.md +42 -43
- package/dist/index.es.js +159 -0
- package/dist/index.es.js.map +1 -0
- package/dist/index.umd.js +2 -0
- package/dist/index.umd.js.map +1 -0
- package/package.json +46 -78
- package/lib/guest.d.ts +0 -6
- package/lib/guest.js +0 -60
- package/lib/guest.js.map +0 -1
- package/lib/helpers.d.ts +0 -26
- package/lib/helpers.js +0 -84
- package/lib/helpers.js.map +0 -1
- package/lib/host.d.ts +0 -15
- package/lib/host.js +0 -77
- package/lib/host.js.map +0 -1
- package/lib/index.d.ts +0 -3
- package/lib/index.js +0 -10
- package/lib/index.js.map +0 -1
- package/lib/rimless.min.js +0 -1
- package/lib/rpc.d.ts +0 -40
- package/lib/rpc.js +0 -215
- package/lib/rpc.js.map +0 -1
- package/lib/types.d.ts +0 -52
- package/lib/types.js +0 -15
- package/lib/types.js.map +0 -1
- package/lib/worker.d.ts +0 -6
- package/lib/worker.js +0 -42
- package/lib/worker.js.map +0 -1
package/lib/guest.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var helpers_1 = require("./helpers");
|
|
4
|
-
var rpc_1 = require("./rpc");
|
|
5
|
-
var types_1 = require("./types");
|
|
6
|
-
var REQUEST_INTERVAL = 600;
|
|
7
|
-
var TIMEOUT_INTERVAL = 3000;
|
|
8
|
-
var interval = null;
|
|
9
|
-
var connected = false;
|
|
10
|
-
function connect(schema, options) {
|
|
11
|
-
if (schema === void 0) { schema = {}; }
|
|
12
|
-
if (options === void 0) { options = {}; }
|
|
13
|
-
return new Promise(function (resolve, reject) {
|
|
14
|
-
var localMethods = helpers_1.extractMethods(schema);
|
|
15
|
-
// on handshake response
|
|
16
|
-
function handleHandshakeResponse(event) {
|
|
17
|
-
if (event.data.action !== types_1.actions.HANDSHAKE_REPLY)
|
|
18
|
-
return;
|
|
19
|
-
// register local methods
|
|
20
|
-
var unregisterLocal = rpc_1.registerLocalMethods(schema, localMethods, event.data.connectionID);
|
|
21
|
-
// register remote methods
|
|
22
|
-
var _a = rpc_1.registerRemoteMethods(event.data.schema, event.data.methods, event.data.connectionID, event), remote = _a.remote, unregisterRemote = _a.unregisterRemote;
|
|
23
|
-
// close the connection and all listeners when called
|
|
24
|
-
var close = function () {
|
|
25
|
-
self.removeEventListener(types_1.events.MESSAGE, handleHandshakeResponse);
|
|
26
|
-
unregisterRemote();
|
|
27
|
-
unregisterLocal();
|
|
28
|
-
};
|
|
29
|
-
connected = true;
|
|
30
|
-
// resolve connection object
|
|
31
|
-
var connection = { remote: remote, close: close };
|
|
32
|
-
return resolve(connection);
|
|
33
|
-
}
|
|
34
|
-
// subscribe to HANDSHAKE REPLY MESSAGES
|
|
35
|
-
self.addEventListener(types_1.events.MESSAGE, handleHandshakeResponse);
|
|
36
|
-
var payload = {
|
|
37
|
-
action: types_1.actions.HANDSHAKE_REQUEST,
|
|
38
|
-
methods: localMethods,
|
|
39
|
-
schema: JSON.parse(JSON.stringify(schema)),
|
|
40
|
-
};
|
|
41
|
-
interval = setInterval(function () {
|
|
42
|
-
if (connected)
|
|
43
|
-
return clearInterval(interval);
|
|
44
|
-
// publish the HANDSHAKE REQUEST
|
|
45
|
-
if (helpers_1.isWorker())
|
|
46
|
-
self.postMessage(payload);
|
|
47
|
-
else
|
|
48
|
-
window.parent.postMessage(payload, "*");
|
|
49
|
-
}, REQUEST_INTERVAL);
|
|
50
|
-
// timeout the connection after a time
|
|
51
|
-
setTimeout(function () {
|
|
52
|
-
if (!connected)
|
|
53
|
-
reject("connection timeout");
|
|
54
|
-
}, TIMEOUT_INTERVAL);
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
exports.default = ({
|
|
58
|
-
connect: connect,
|
|
59
|
-
});
|
|
60
|
-
//# sourceMappingURL=guest.js.map
|
package/lib/guest.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"guest.js","sourceRoot":"","sources":["../src/guest.ts"],"names":[],"mappings":";;AAAA,qCAAqD;AACrD,6BAAoE;AACpE,iCAAgE;AAEhE,IAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,IAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B,IAAI,QAAQ,GAAQ,IAAI,CAAC;AACzB,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,SAAS,OAAO,CAAC,MAAoB,EAAE,OAAiB;IAAvC,uBAAA,EAAA,WAAoB;IAAE,wBAAA,EAAA,YAAiB;IACtD,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QAEjC,IAAM,YAAY,GAAG,wBAAc,CAAC,MAAM,CAAC,CAAC;QAE5C,wBAAwB;QACxB,SAAS,uBAAuB,CAAC,KAAU;YACzC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,eAAO,CAAC,eAAe;gBAAE,OAAO;YAE1D,yBAAyB;YACzB,IAAM,eAAe,GAAG,0BAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE5F,0BAA0B;YACpB,IAAA,uGACwF,EADtF,kBAAM,EAAE,sCAC8E,CAAC;YAE/F,qDAAqD;YACrD,IAAM,KAAK,GAAG;gBACZ,IAAI,CAAC,mBAAmB,CAAC,cAAM,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;gBAClE,gBAAgB,EAAE,CAAC;gBACnB,eAAe,EAAE,CAAC;YACpB,CAAC,CAAC;YAEF,SAAS,GAAG,IAAI,CAAC;YAEjB,4BAA4B;YAC5B,IAAM,UAAU,GAAG,EAAE,MAAM,QAAA,EAAE,KAAK,OAAA,EAAE,CAAC;YACrC,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC,gBAAgB,CAAC,cAAM,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;QAE/D,IAAM,OAAO,GAAG;YACd,MAAM,EAAE,eAAO,CAAC,iBAAiB;YACjC,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SAC3C,CAAC;QAEF,QAAQ,GAAG,WAAW,CAAC;YACrB,IAAI,SAAS;gBAAE,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;YAE9C,gCAAgC;YAChC,IAAI,kBAAQ,EAAE;gBAAG,IAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;;gBAC9C,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAE/C,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAErB,sCAAsC;QACtC,UAAU,CAAC;YACT,IAAI,CAAC,SAAS;gBAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC/C,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAEvB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kBAAe,CAAC;IACd,OAAO,SAAA;CACR,CAAC,CAAC"}
|
package/lib/helpers.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export declare const CONNECTION_TIMEOUT = 1000;
|
|
2
|
-
/**
|
|
3
|
-
* check if the remote is trusted
|
|
4
|
-
*
|
|
5
|
-
* @param event
|
|
6
|
-
*/
|
|
7
|
-
export declare function isTrustedRemote(event: any): boolean;
|
|
8
|
-
/**
|
|
9
|
-
* check if run in a webworker
|
|
10
|
-
*
|
|
11
|
-
* @param event
|
|
12
|
-
*/
|
|
13
|
-
export declare function isWorker(): boolean;
|
|
14
|
-
/**
|
|
15
|
-
* we cannot send functions through postMessage
|
|
16
|
-
* extract the path to all functions in the schema
|
|
17
|
-
*
|
|
18
|
-
* @param obj
|
|
19
|
-
*/
|
|
20
|
-
export declare function extractMethods(obj: any): string[];
|
|
21
|
-
/**
|
|
22
|
-
* convert the url into an origin (remove paths)
|
|
23
|
-
*
|
|
24
|
-
* @param url
|
|
25
|
-
*/
|
|
26
|
-
export declare function getOriginFromURL(url: string | null): string;
|
package/lib/helpers.js
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CONNECTION_TIMEOUT = 1000;
|
|
4
|
-
/**
|
|
5
|
-
* check if the remote is trusted
|
|
6
|
-
*
|
|
7
|
-
* @param event
|
|
8
|
-
*/
|
|
9
|
-
function isTrustedRemote(event) {
|
|
10
|
-
// TODO: implement
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
exports.isTrustedRemote = isTrustedRemote;
|
|
14
|
-
/**
|
|
15
|
-
* check if run in a webworker
|
|
16
|
-
*
|
|
17
|
-
* @param event
|
|
18
|
-
*/
|
|
19
|
-
function isWorker() {
|
|
20
|
-
return typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope;
|
|
21
|
-
}
|
|
22
|
-
exports.isWorker = isWorker;
|
|
23
|
-
/**
|
|
24
|
-
* we cannot send functions through postMessage
|
|
25
|
-
* extract the path to all functions in the schema
|
|
26
|
-
*
|
|
27
|
-
* @param obj
|
|
28
|
-
*/
|
|
29
|
-
function extractMethods(obj) {
|
|
30
|
-
var paths = [];
|
|
31
|
-
(function parse(obj, path) {
|
|
32
|
-
if (path === void 0) { path = ""; }
|
|
33
|
-
Object.keys(obj).forEach(function (prop) {
|
|
34
|
-
var propPath = path ? path + "." + prop : prop;
|
|
35
|
-
if (obj[prop] === Object(obj[prop])) {
|
|
36
|
-
parse(obj[prop], propPath);
|
|
37
|
-
}
|
|
38
|
-
if (typeof obj[prop] === "function") {
|
|
39
|
-
paths.push(propPath);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
}(obj));
|
|
43
|
-
return paths;
|
|
44
|
-
}
|
|
45
|
-
exports.extractMethods = extractMethods;
|
|
46
|
-
var urlRegex = /^(https?:|file:)?\/\/([^/:]+)?(:(\d+))?/;
|
|
47
|
-
var ports = { "http:": "80", "https:": "443" };
|
|
48
|
-
/**
|
|
49
|
-
* convert the url into an origin (remove paths)
|
|
50
|
-
*
|
|
51
|
-
* @param url
|
|
52
|
-
*/
|
|
53
|
-
function getOriginFromURL(url) {
|
|
54
|
-
var _a;
|
|
55
|
-
var location = document.location;
|
|
56
|
-
var regexResult = urlRegex.exec(url || "");
|
|
57
|
-
var protocol;
|
|
58
|
-
var hostname;
|
|
59
|
-
var port;
|
|
60
|
-
if (regexResult) {
|
|
61
|
-
// It's an absolute URL. Use the parsed info.
|
|
62
|
-
// regexResult[1] will be undefined if the URL starts with //
|
|
63
|
-
_a = regexResult[1], protocol = _a === void 0 ? location.protocol : _a, hostname = regexResult[2], port = regexResult[4];
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
// It's a relative path. Use the current location's info.
|
|
67
|
-
protocol = location.protocol;
|
|
68
|
-
hostname = location.hostname;
|
|
69
|
-
port = location.port;
|
|
70
|
-
}
|
|
71
|
-
// If the protocol is file, the origin is "null"
|
|
72
|
-
// The origin of a document with file protocol is an opaque origin
|
|
73
|
-
// and its serialization "null" [1]
|
|
74
|
-
// [1] https://html.spec.whatwg.org/multipage/origin.html#origin
|
|
75
|
-
if (protocol === "file:") {
|
|
76
|
-
return "null";
|
|
77
|
-
}
|
|
78
|
-
// If the port is the default for the protocol, we don't want to add it to the origin string
|
|
79
|
-
// or it won't match the message's event.origin.
|
|
80
|
-
var portSuffix = port && port !== ports[protocol] ? ":" + port : "";
|
|
81
|
-
return protocol + "//" + hostname + portSuffix;
|
|
82
|
-
}
|
|
83
|
-
exports.getOriginFromURL = getOriginFromURL;
|
|
84
|
-
//# sourceMappingURL=helpers.js.map
|
package/lib/helpers.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;AAAa,QAAA,kBAAkB,GAAG,IAAI,CAAC;AAEvC;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAAU;IACxC,kBAAkB;IAClB,OAAO,IAAI,CAAC;AACd,CAAC;AAHD,0CAGC;AAED;;;;GAIG;AACH,SAAgB,QAAQ;IACtB,OAAO,OAAO,iBAAiB,KAAK,WAAW,IAAI,IAAI,YAAY,iBAAiB,CAAC;AACvF,CAAC;AAFD,4BAEC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,GAAQ;IACrC,IAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,CAAC,SAAS,KAAK,CAAC,GAAQ,EAAE,IAAS;QAAT,qBAAA,EAAA,SAAS;QACjC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAC,IAAI;YAC5B,IAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAI,IAAI,SAAI,IAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YACjD,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;gBACnC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;aAC5B;YACD,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE;gBACnC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACtB;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACR,OAAO,KAAK,CAAC;AACf,CAAC;AAdD,wCAcC;AAED,IAAM,QAAQ,GAAG,yCAAyC,CAAC;AAC3D,IAAM,KAAK,GAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAEtD;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,GAAkB;;IAEzC,IAAA,4BAAQ,CAAc;IAE9B,IAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC;IACb,IAAI,QAAQ,CAAC;IACb,IAAI,IAAI,CAAC;IAET,IAAI,WAAW,EAAE;QACf,6CAA6C;QAC7C,6DAA6D;QAC1D,mBAA4B,EAA5B,iDAA4B,EAAE,yBAAQ,EAAI,qBAAI,CAAgB;KAClE;SAAM;QACL,yDAAyD;QACzD,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC7B,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC7B,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;KACtB;IAED,gDAAgD;IAChD,kEAAkE;IAClE,mCAAmC;IACnC,gEAAgE;IAChE,IAAI,QAAQ,KAAK,OAAO,EAAE;QACxB,OAAO,MAAM,CAAC;KACf;IAED,4FAA4F;IAC5F,gDAAgD;IAChD,IAAM,UAAU,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAI,IAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAU,QAAQ,UAAK,QAAQ,GAAG,UAAY,CAAC;AACjD,CAAC;AAhCD,4CAgCC"}
|
package/lib/host.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { IConnection, ISchema } from "./types";
|
|
2
|
-
/**
|
|
3
|
-
* Perform a handshake with the target iframe, when the handshake is confirmed
|
|
4
|
-
* resolve the connection object containing RPCs and properties
|
|
5
|
-
*
|
|
6
|
-
* @param iframe
|
|
7
|
-
* @param schema
|
|
8
|
-
* @param options
|
|
9
|
-
* @returns Promise
|
|
10
|
-
*/
|
|
11
|
-
declare function connect(guest: HTMLIFrameElement | Worker, schema?: ISchema, options?: any): Promise<IConnection>;
|
|
12
|
-
declare const _default: {
|
|
13
|
-
connect: typeof connect;
|
|
14
|
-
};
|
|
15
|
-
export default _default;
|
package/lib/host.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
var short_uuid_1 = __importDefault(require("short-uuid"));
|
|
7
|
-
var helpers_1 = require("./helpers");
|
|
8
|
-
var rpc_1 = require("./rpc");
|
|
9
|
-
var types_1 = require("./types");
|
|
10
|
-
var connections = {};
|
|
11
|
-
function isValidTarget(iframe, event) {
|
|
12
|
-
var childURL = iframe.getAttribute("src");
|
|
13
|
-
var childOrigin = helpers_1.getOriginFromURL(childURL);
|
|
14
|
-
var hasProperOrigin = event.origin === childOrigin;
|
|
15
|
-
var hasProperSource = event.source === iframe.contentWindow;
|
|
16
|
-
return hasProperOrigin && hasProperSource;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Perform a handshake with the target iframe, when the handshake is confirmed
|
|
20
|
-
* resolve the connection object containing RPCs and properties
|
|
21
|
-
*
|
|
22
|
-
* @param iframe
|
|
23
|
-
* @param schema
|
|
24
|
-
* @param options
|
|
25
|
-
* @returns Promise
|
|
26
|
-
*/
|
|
27
|
-
function connect(guest, schema, options) {
|
|
28
|
-
if (schema === void 0) { schema = {}; }
|
|
29
|
-
if (!guest)
|
|
30
|
-
throw new Error("a target is required");
|
|
31
|
-
// this check should be improved
|
|
32
|
-
var guestIsWorker = guest.onerror !== undefined &&
|
|
33
|
-
guest.onmessage !== undefined;
|
|
34
|
-
var listeners = guestIsWorker ? guest : window;
|
|
35
|
-
return new Promise(function (resolve, reject) {
|
|
36
|
-
var connectionID = short_uuid_1.default.generate();
|
|
37
|
-
// on handshake request
|
|
38
|
-
function handleHandshake(event) {
|
|
39
|
-
if (!guestIsWorker && !isValidTarget(guest, event))
|
|
40
|
-
return;
|
|
41
|
-
if (event.data.action !== types_1.actions.HANDSHAKE_REQUEST)
|
|
42
|
-
return;
|
|
43
|
-
// register local methods
|
|
44
|
-
var localMethods = helpers_1.extractMethods(schema);
|
|
45
|
-
var unregisterLocal = rpc_1.registerLocalMethods(schema, localMethods, connectionID, guestIsWorker ? guest : undefined);
|
|
46
|
-
// register remote methods
|
|
47
|
-
var _a = rpc_1.registerRemoteMethods(event.data.schema, event.data.methods, connectionID, event, guestIsWorker ? guest : undefined), remote = _a.remote, unregisterRemote = _a.unregisterRemote;
|
|
48
|
-
var payload = {
|
|
49
|
-
action: types_1.actions.HANDSHAKE_REPLY,
|
|
50
|
-
connectionID: connectionID,
|
|
51
|
-
methods: localMethods,
|
|
52
|
-
schema: JSON.parse(JSON.stringify(schema)),
|
|
53
|
-
};
|
|
54
|
-
// confirm the connection
|
|
55
|
-
if (guestIsWorker)
|
|
56
|
-
guest.postMessage(payload);
|
|
57
|
-
else
|
|
58
|
-
event.source.postMessage(payload, event.origin);
|
|
59
|
-
// close the connection and all listeners when called
|
|
60
|
-
var close = function () {
|
|
61
|
-
listeners.removeEventListener(types_1.events.MESSAGE, handleHandshake);
|
|
62
|
-
unregisterRemote();
|
|
63
|
-
unregisterLocal();
|
|
64
|
-
};
|
|
65
|
-
// resolve connection object
|
|
66
|
-
var connection = { remote: remote, close: close };
|
|
67
|
-
connections[connectionID] = connection;
|
|
68
|
-
return resolve(connection);
|
|
69
|
-
}
|
|
70
|
-
// subscribe to HANDSHAKE MESSAGES
|
|
71
|
-
listeners.addEventListener(types_1.events.MESSAGE, handleHandshake);
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
exports.default = ({
|
|
75
|
-
connect: connect,
|
|
76
|
-
});
|
|
77
|
-
//# sourceMappingURL=host.js.map
|
package/lib/host.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":";;;;;AAAA,0DAA+B;AAE/B,qCAA6D;AAC7D,6BAAoE;AACpE,iCAA8E;AAE9E,IAAM,WAAW,GAAiB,EAAE,CAAC;AAErC,SAAS,aAAa,CAAC,MAAyB,EAAE,KAAU;IAC1D,IAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAM,WAAW,GAAG,0BAAgB,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAM,eAAe,GAAG,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC;IACrD,IAAM,eAAe,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,aAAa,CAAC;IAE9D,OAAO,eAAe,IAAI,eAAe,CAAC;AAC5C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,OAAO,CACd,KAAiC,EACjC,MAAoB,EACpB,OAAa;IADb,uBAAA,EAAA,WAAoB;IAGpB,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAEpD,gCAAgC;IAChC,IAAM,aAAa,GAChB,KAAgB,CAAC,OAAO,KAAK,SAAS;QACtC,KAAgB,CAAC,SAAS,KAAK,SAAS,CAAC;IAC5C,IAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAEjD,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QACjC,IAAM,YAAY,GAAG,oBAAK,CAAC,QAAQ,EAAE,CAAC;QAEtC,uBAAuB;QACvB,SAAS,eAAe,CAAC,KAAU;YACjC,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,KAA0B,EAAE,KAAK,CAAC;gBAAE,OAAO;YAChF,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,eAAO,CAAC,iBAAiB;gBAAE,OAAO;YAE5D,yBAAyB;YACzB,IAAM,YAAY,GAAG,wBAAc,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAM,eAAe,GACnB,0BAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAE,KAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAE1G,0BAA0B;YACpB,IAAA,+HAC4H,EAD1H,kBAAM,EAAE,sCACkH,CAAC;YAEnI,IAAM,OAAO,GAAG;gBACd,MAAM,EAAE,eAAO,CAAC,eAAe;gBAC/B,YAAY,cAAA;gBACZ,OAAO,EAAE,YAAY;gBACrB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aAC3C,CAAC;YAEF,yBAAyB;YACzB,IAAI,aAAa;gBAAG,KAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;;gBACrD,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAErD,qDAAqD;YACrD,IAAM,KAAK,GAAG;gBACZ,SAAS,CAAC,mBAAmB,CAAC,cAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;gBAC/D,gBAAgB,EAAE,CAAC;gBACnB,eAAe,EAAE,CAAC;YACpB,CAAC,CAAC;YAEF,4BAA4B;YAC5B,IAAM,UAAU,GAAgB,EAAE,MAAM,QAAA,EAAE,KAAK,OAAA,EAAE,CAAC;YAClD,WAAW,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;YACvC,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QAED,kCAAkC;QAClC,SAAS,CAAC,gBAAgB,CAAC,cAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kBAAe,CAAC;IACd,OAAO,SAAA;CACR,CAAC,CAAC"}
|
package/lib/index.d.ts
DELETED
package/lib/index.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
var guest_1 = __importDefault(require("./guest"));
|
|
7
|
-
exports.guest = guest_1.default;
|
|
8
|
-
var host_1 = __importDefault(require("./host"));
|
|
9
|
-
exports.host = host_1.default;
|
|
10
|
-
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,kDAA4B;AAGb,gBAHR,eAAK,CAGQ;AAFpB,gDAA0B;AAEjB,eAFF,cAAI,CAEE"}
|
package/lib/rimless.min.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.rimless=f()}})(function(){var define,module,exports;return function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r}()({1:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var helpers_1=require("./helpers");var rpc_1=require("./rpc");var types_1=require("./types");var REQUEST_INTERVAL=600;var TIMEOUT_INTERVAL=3e3;var interval=null;var connected=false;function connect(schema,options){if(schema===void 0){schema={}}if(options===void 0){options={}}return new Promise(function(resolve,reject){var localMethods=helpers_1.extractMethods(schema);function handleHandshakeResponse(event){if(event.data.action!==types_1.actions.HANDSHAKE_REPLY)return;var unregisterLocal=rpc_1.registerLocalMethods(schema,localMethods,event.data.connectionID);var _a=rpc_1.registerRemoteMethods(event.data.schema,event.data.methods,event.data.connectionID,event),remote=_a.remote,unregisterRemote=_a.unregisterRemote;var close=function(){self.removeEventListener(types_1.events.MESSAGE,handleHandshakeResponse);unregisterRemote();unregisterLocal()};connected=true;var connection={remote:remote,close:close};return resolve(connection)}self.addEventListener(types_1.events.MESSAGE,handleHandshakeResponse);var payload={action:types_1.actions.HANDSHAKE_REQUEST,methods:localMethods,schema:JSON.parse(JSON.stringify(schema))};interval=setInterval(function(){if(connected)return clearInterval(interval);if(helpers_1.isWorker())self.postMessage(payload);else window.parent.postMessage(payload,"*")},REQUEST_INTERVAL);setTimeout(function(){if(!connected)reject("connection timeout")},TIMEOUT_INTERVAL)})}exports.default={connect:connect}},{"./helpers":2,"./rpc":5,"./types":6}],2:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.CONNECTION_TIMEOUT=1e3;function isTrustedRemote(event){return true}exports.isTrustedRemote=isTrustedRemote;function isWorker(){return typeof WorkerGlobalScope!=="undefined"&&self instanceof WorkerGlobalScope}exports.isWorker=isWorker;function extractMethods(obj){var paths=[];(function parse(obj,path){if(path===void 0){path=""}Object.keys(obj).forEach(function(prop){var propPath=path?path+"."+prop:prop;if(obj[prop]===Object(obj[prop])){parse(obj[prop],propPath)}if(typeof obj[prop]==="function"){paths.push(propPath)}})})(obj);return paths}exports.extractMethods=extractMethods;var urlRegex=/^(https?:|file:)?\/\/([^/:]+)?(:(\d+))?/;var ports={"http:":"80","https:":"443"};function getOriginFromURL(url){var _a;var location=document.location;var regexResult=urlRegex.exec(url||"");var protocol;var hostname;var port;if(regexResult){_a=regexResult[1],protocol=_a===void 0?location.protocol:_a,hostname=regexResult[2],port=regexResult[4]}else{protocol=location.protocol;hostname=location.hostname;port=location.port}if(protocol==="file:"){return"null"}var portSuffix=port&&port!==ports[protocol]?":"+port:"";return protocol+"//"+hostname+portSuffix}exports.getOriginFromURL=getOriginFromURL},{}],3:[function(require,module,exports){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:true});var short_uuid_1=__importDefault(require("short-uuid"));var helpers_1=require("./helpers");var rpc_1=require("./rpc");var types_1=require("./types");var connections={};function isValidTarget(iframe,event){var childURL=iframe.getAttribute("src");var childOrigin=helpers_1.getOriginFromURL(childURL);var hasProperOrigin=event.origin===childOrigin;var hasProperSource=event.source===iframe.contentWindow;return hasProperOrigin&&hasProperSource}function connect(guest,schema,options){if(schema===void 0){schema={}}if(!guest)throw new Error("a target is required");var guestIsWorker=guest.onerror!==undefined&&guest.onmessage!==undefined;var listeners=guestIsWorker?guest:window;return new Promise(function(resolve,reject){var connectionID=short_uuid_1.default.generate();function handleHandshake(event){if(!guestIsWorker&&!isValidTarget(guest,event))return;if(event.data.action!==types_1.actions.HANDSHAKE_REQUEST)return;var localMethods=helpers_1.extractMethods(schema);var unregisterLocal=rpc_1.registerLocalMethods(schema,localMethods,connectionID,guestIsWorker?guest:undefined);var _a=rpc_1.registerRemoteMethods(event.data.schema,event.data.methods,connectionID,event,guestIsWorker?guest:undefined),remote=_a.remote,unregisterRemote=_a.unregisterRemote;var payload={action:types_1.actions.HANDSHAKE_REPLY,connectionID:connectionID,methods:localMethods,schema:JSON.parse(JSON.stringify(schema))};if(guestIsWorker)guest.postMessage(payload);else event.source.postMessage(payload,event.origin);var close=function(){listeners.removeEventListener(types_1.events.MESSAGE,handleHandshake);unregisterRemote();unregisterLocal()};var connection={remote:remote,close:close};connections[connectionID]=connection;return resolve(connection)}listeners.addEventListener(types_1.events.MESSAGE,handleHandshake)})}exports.default={connect:connect}},{"./helpers":2,"./rpc":5,"./types":6,"short-uuid":11}],4:[function(require,module,exports){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:true});var guest_1=__importDefault(require("./guest"));exports.guest=guest_1.default;var host_1=__importDefault(require("./host"));exports.host=host_1.default},{"./guest":1,"./host":3}],5:[function(require,module,exports){"use strict";var __assign=this&&this.__assign||function(){__assign=Object.assign||function(t){for(var s,i=1,n=arguments.length;i<n;i++){s=arguments[i];for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))t[p]=s[p]}return t};return __assign.apply(this,arguments)};var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve){resolve(value)})}return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};var __generator=this&&this.__generator||function(thisArg,body){var _={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},f,y,t,g;return g={next:verb(0),throw:verb(1),return:verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{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;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}};var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:true});var lodash_get_1=__importDefault(require("lodash.get"));var lodash_set_1=__importDefault(require("lodash.set"));var short_uuid_1=__importDefault(require("short-uuid"));var helpers_1=require("./helpers");var types_1=require("./types");function registerLocalMethods(schema,methods,_connectionID,guest){if(schema===void 0){schema={}}if(methods===void 0){methods=[]}var listeners=[];methods.forEach(function(methodName){function handleCall(event){return __awaiter(this,void 0,void 0,function(){var _a,action,callID,connectionID,callName,_b,args,payload,result,error_1;return __generator(this,function(_c){switch(_c.label){case 0:_a=event.data,action=_a.action,callID=_a.callID,connectionID=_a.connectionID,callName=_a.callName,_b=_a.args,args=_b===void 0?[]:_b;if(action!==types_1.actions.RPC_REQUEST)return[2];if(!helpers_1.isTrustedRemote(event))return[2];if(!callID||!callName)return[2];if(callName!==methodName)return[2];if(connectionID!==_connectionID)return[2];payload={action:types_1.actions.RPC_RESOLVE,callID:callID,callName:callName,connectionID:connectionID,error:null,result:null};_c.label=1;case 1:_c.trys.push([1,3,,4]);return[4,lodash_get_1.default(schema,methodName).apply(void 0,args)];case 2:result=_c.sent();payload.result=JSON.parse(JSON.stringify(result));return[3,4];case 3:error_1=_c.sent();payload.error=JSON.parse(JSON.stringify(error_1,Object.getOwnPropertyNames(error_1)));return[3,4];case 4:if(guest)guest.postMessage(payload);else if(helpers_1.isWorker())self.postMessage(payload);else event.source.postMessage(payload,event.origin);return[2]}})})}if(guest)guest.addEventListener(types_1.events.MESSAGE,handleCall);else self.addEventListener(types_1.events.MESSAGE,handleCall);listeners.push(function(){return self.removeEventListener(types_1.events.MESSAGE,handleCall)})});return function(){return listeners.forEach(function(unregister){return unregister()})}}exports.registerLocalMethods=registerLocalMethods;function createRPC(_callName,_connectionID,event,listeners,guest){if(listeners===void 0){listeners=[]}return function(){var args=[];for(var _i=0;_i<arguments.length;_i++){args[_i]=arguments[_i]}return new Promise(function(resolve,reject){var callID=short_uuid_1.default.generate();function handleResponse(event){var _a=event.data,callID=_a.callID,connectionID=_a.connectionID,callName=_a.callName,result=_a.result,error=_a.error,action=_a.action;if(!helpers_1.isTrustedRemote(event))return;if(!callID||!callName)return;if(callName!==_callName)return;if(connectionID!==_connectionID)return;if(action===types_1.actions.RPC_RESOLVE)return resolve(result);if(action===types_1.actions.RPC_REJECT)return reject(error)}var payload={action:types_1.actions.RPC_REQUEST,args:JSON.parse(JSON.stringify(args)),callID:callID,callName:_callName,connectionID:_connectionID};if(guest)guest.addEventListener(types_1.events.MESSAGE,handleResponse);else self.addEventListener(types_1.events.MESSAGE,handleResponse);listeners.push(function(){return self.removeEventListener(types_1.events.MESSAGE,handleResponse)});if(guest)guest.postMessage(payload);else if(helpers_1.isWorker())self.postMessage(payload);else(event.source||event.target).postMessage(payload,event.origin)})}}exports.createRPC=createRPC;function registerRemoteMethods(schema,methods,_connectionID,event,guest){if(schema===void 0){schema={}}if(methods===void 0){methods=[]}var remote=__assign({},schema);var listeners=[];methods.forEach(function(methodName){var rpc=createRPC(methodName,_connectionID,event,listeners,guest);lodash_set_1.default(remote,methodName,rpc)});return{remote:remote,unregisterRemote:function(){return listeners.forEach(function(unregister){return unregister()})}}}exports.registerRemoteMethods=registerRemoteMethods},{"./helpers":2,"./types":6,"lodash.get":9,"lodash.set":10,"short-uuid":11}],6:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var events;(function(events){events["MESSAGE"]="message"})(events=exports.events||(exports.events={}));var actions;(function(actions){actions["HANDSHAKE_REQUEST"]="RIMLESS/HANDSHAKE_REQUEST";actions["HANDSHAKE_REPLY"]="RIMLESS/HANDSHAKE_REPLY";actions["RPC_REQUEST"]="RIMLESS/RPC_REQUEST";actions["RPC_RESOLVE"]="RIMLESS/RPC_RESOLVE";actions["RPC_REJECT"]="RIMLESS/RPC_REJECT"})(actions=exports.actions||(exports.actions={}))},{}],7:[function(require,module,exports){var Converter=require("./src/converter");function anyBase(srcAlphabet,dstAlphabet){var converter=new Converter(srcAlphabet,dstAlphabet);return function(number){return converter.convert(number)}}anyBase.BIN="01";anyBase.OCT="01234567";anyBase.DEC="0123456789";anyBase.HEX="0123456789abcdef";module.exports=anyBase},{"./src/converter":8}],8:[function(require,module,exports){"use strict";function Converter(srcAlphabet,dstAlphabet){if(!srcAlphabet||!dstAlphabet||!srcAlphabet.length||!dstAlphabet.length){throw new Error("Bad alphabet")}this.srcAlphabet=srcAlphabet;this.dstAlphabet=dstAlphabet}Converter.prototype.convert=function(number){var i,divide,newlen,numberMap={},fromBase=this.srcAlphabet.length,toBase=this.dstAlphabet.length,length=number.length,result=typeof number==="string"?"":[];if(!this.isValid(number)){throw new Error('Number "'+number+'" contains of non-alphabetic digits ('+this.srcAlphabet+")")}if(this.srcAlphabet===this.dstAlphabet){return number}for(i=0;i<length;i++){numberMap[i]=this.srcAlphabet.indexOf(number[i])}do{divide=0;newlen=0;for(i=0;i<length;i++){divide=divide*fromBase+numberMap[i];if(divide>=toBase){numberMap[newlen++]=parseInt(divide/toBase,10);divide=divide%toBase}else if(newlen>0){numberMap[newlen++]=0}}length=newlen;result=this.dstAlphabet.slice(divide,divide+1).concat(result)}while(newlen!==0);return result};Converter.prototype.isValid=function(number){var i=0;for(;i<number.length;++i){if(this.srcAlphabet.indexOf(number[i])===-1){return false}}return true};module.exports=Converter},{}],9:[function(require,module,exports){(function(global){var FUNC_ERROR_TEXT="Expected a function";var HASH_UNDEFINED="__lodash_hash_undefined__";var INFINITY=1/0;var funcTag="[object Function]",genTag="[object GeneratorFunction]",symbolTag="[object Symbol]";var reIsDeepProp=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,reIsPlainProp=/^\w*$/,reLeadingDot=/^\./,rePropName=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;var reRegExpChar=/[\\^$.*+?()[\]{}|]/g;var reEscapeChar=/\\(\\)?/g;var reIsHostCtor=/^\[object .+?Constructor\]$/;var freeGlobal=typeof global=="object"&&global&&global.Object===Object&&global;var freeSelf=typeof self=="object"&&self&&self.Object===Object&&self;var root=freeGlobal||freeSelf||Function("return this")();function getValue(object,key){return object==null?undefined:object[key]}function isHostObject(value){var result=false;if(value!=null&&typeof value.toString!="function"){try{result=!!(value+"")}catch(e){}}return result}var arrayProto=Array.prototype,funcProto=Function.prototype,objectProto=Object.prototype;var coreJsData=root["__core-js_shared__"];var maskSrcKey=function(){var uid=/[^.]+$/.exec(coreJsData&&coreJsData.keys&&coreJsData.keys.IE_PROTO||"");return uid?"Symbol(src)_1."+uid:""}();var funcToString=funcProto.toString;var hasOwnProperty=objectProto.hasOwnProperty;var objectToString=objectProto.toString;var reIsNative=RegExp("^"+funcToString.call(hasOwnProperty).replace(reRegExpChar,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var Symbol=root.Symbol,splice=arrayProto.splice;var Map=getNative(root,"Map"),nativeCreate=getNative(Object,"create");var symbolProto=Symbol?Symbol.prototype:undefined,symbolToString=symbolProto?symbolProto.toString:undefined;function Hash(entries){var index=-1,length=entries?entries.length:0;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1])}}function hashClear(){this.__data__=nativeCreate?nativeCreate(null):{}}function hashDelete(key){return this.has(key)&&delete this.__data__[key]}function hashGet(key){var data=this.__data__;if(nativeCreate){var result=data[key];return result===HASH_UNDEFINED?undefined:result}return hasOwnProperty.call(data,key)?data[key]:undefined}function hashHas(key){var data=this.__data__;return nativeCreate?data[key]!==undefined:hasOwnProperty.call(data,key)}function hashSet(key,value){var data=this.__data__;data[key]=nativeCreate&&value===undefined?HASH_UNDEFINED:value;return this}Hash.prototype.clear=hashClear;Hash.prototype["delete"]=hashDelete;Hash.prototype.get=hashGet;Hash.prototype.has=hashHas;Hash.prototype.set=hashSet;function ListCache(entries){var index=-1,length=entries?entries.length:0;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1])}}function listCacheClear(){this.__data__=[]}function listCacheDelete(key){var data=this.__data__,index=assocIndexOf(data,key);if(index<0){return false}var lastIndex=data.length-1;if(index==lastIndex){data.pop()}else{splice.call(data,index,1)}return true}function listCacheGet(key){var data=this.__data__,index=assocIndexOf(data,key);return index<0?undefined:data[index][1]}function listCacheHas(key){return assocIndexOf(this.__data__,key)>-1}function listCacheSet(key,value){var data=this.__data__,index=assocIndexOf(data,key);if(index<0){data.push([key,value])}else{data[index][1]=value}return this}ListCache.prototype.clear=listCacheClear;ListCache.prototype["delete"]=listCacheDelete;ListCache.prototype.get=listCacheGet;ListCache.prototype.has=listCacheHas;ListCache.prototype.set=listCacheSet;function MapCache(entries){var index=-1,length=entries?entries.length:0;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1])}}function mapCacheClear(){this.__data__={hash:new Hash,map:new(Map||ListCache),string:new Hash}}function mapCacheDelete(key){return getMapData(this,key)["delete"](key)}function mapCacheGet(key){return getMapData(this,key).get(key)}function mapCacheHas(key){return getMapData(this,key).has(key)}function mapCacheSet(key,value){getMapData(this,key).set(key,value);return this}MapCache.prototype.clear=mapCacheClear;MapCache.prototype["delete"]=mapCacheDelete;MapCache.prototype.get=mapCacheGet;MapCache.prototype.has=mapCacheHas;MapCache.prototype.set=mapCacheSet;function assocIndexOf(array,key){var length=array.length;while(length--){if(eq(array[length][0],key)){return length}}return-1}function baseGet(object,path){path=isKey(path,object)?[path]:castPath(path);var index=0,length=path.length;while(object!=null&&index<length){object=object[toKey(path[index++])]}return index&&index==length?object:undefined}function baseIsNative(value){if(!isObject(value)||isMasked(value)){return false}var pattern=isFunction(value)||isHostObject(value)?reIsNative:reIsHostCtor;return pattern.test(toSource(value))}function baseToString(value){if(typeof value=="string"){return value}if(isSymbol(value)){return symbolToString?symbolToString.call(value):""}var result=value+"";return result=="0"&&1/value==-INFINITY?"-0":result}function castPath(value){return isArray(value)?value:stringToPath(value)}function getMapData(map,key){var data=map.__data__;return isKeyable(key)?data[typeof key=="string"?"string":"hash"]:data.map}function getNative(object,key){var value=getValue(object,key);return baseIsNative(value)?value:undefined}function isKey(value,object){if(isArray(value)){return false}var type=typeof value;if(type=="number"||type=="symbol"||type=="boolean"||value==null||isSymbol(value)){return true}return reIsPlainProp.test(value)||!reIsDeepProp.test(value)||object!=null&&value in Object(object)}function isKeyable(value){var type=typeof value;return type=="string"||type=="number"||type=="symbol"||type=="boolean"?value!=="__proto__":value===null}function isMasked(func){return!!maskSrcKey&&maskSrcKey in func}var stringToPath=memoize(function(string){string=toString(string);var result=[];if(reLeadingDot.test(string)){result.push("")}string.replace(rePropName,function(match,number,quote,string){result.push(quote?string.replace(reEscapeChar,"$1"):number||match)});return result});function toKey(value){if(typeof value=="string"||isSymbol(value)){return value}var result=value+"";return result=="0"&&1/value==-INFINITY?"-0":result}function toSource(func){if(func!=null){try{return funcToString.call(func)}catch(e){}try{return func+""}catch(e){}}return""}function memoize(func,resolver){if(typeof func!="function"||resolver&&typeof resolver!="function"){throw new TypeError(FUNC_ERROR_TEXT)}var memoized=function(){var args=arguments,key=resolver?resolver.apply(this,args):args[0],cache=memoized.cache;if(cache.has(key)){return cache.get(key)}var result=func.apply(this,args);memoized.cache=cache.set(key,result);return result};memoized.cache=new(memoize.Cache||MapCache);return memoized}memoize.Cache=MapCache;function eq(value,other){return value===other||value!==value&&other!==other}var isArray=Array.isArray;function isFunction(value){var tag=isObject(value)?objectToString.call(value):"";return tag==funcTag||tag==genTag}function isObject(value){var type=typeof value;return!!value&&(type=="object"||type=="function")}function isObjectLike(value){return!!value&&typeof value=="object"}function isSymbol(value){return typeof value=="symbol"||isObjectLike(value)&&objectToString.call(value)==symbolTag}function toString(value){return value==null?"":baseToString(value)}function get(object,path,defaultValue){var result=object==null?undefined:baseGet(object,path);return result===undefined?defaultValue:result}module.exports=get}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],10:[function(require,module,exports){(function(global){var FUNC_ERROR_TEXT="Expected a function";var HASH_UNDEFINED="__lodash_hash_undefined__";var INFINITY=1/0,MAX_SAFE_INTEGER=9007199254740991;var funcTag="[object Function]",genTag="[object GeneratorFunction]",symbolTag="[object Symbol]";var reIsDeepProp=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,reIsPlainProp=/^\w*$/,reLeadingDot=/^\./,rePropName=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;var reRegExpChar=/[\\^$.*+?()[\]{}|]/g;var reEscapeChar=/\\(\\)?/g;var reIsHostCtor=/^\[object .+?Constructor\]$/;var reIsUint=/^(?:0|[1-9]\d*)$/;var freeGlobal=typeof global=="object"&&global&&global.Object===Object&&global;var freeSelf=typeof self=="object"&&self&&self.Object===Object&&self;var root=freeGlobal||freeSelf||Function("return this")();function getValue(object,key){return object==null?undefined:object[key]}function isHostObject(value){var result=false;if(value!=null&&typeof value.toString!="function"){try{result=!!(value+"")}catch(e){}}return result}var arrayProto=Array.prototype,funcProto=Function.prototype,objectProto=Object.prototype;var coreJsData=root["__core-js_shared__"];var maskSrcKey=function(){var uid=/[^.]+$/.exec(coreJsData&&coreJsData.keys&&coreJsData.keys.IE_PROTO||"");return uid?"Symbol(src)_1."+uid:""}();var funcToString=funcProto.toString;var hasOwnProperty=objectProto.hasOwnProperty;var objectToString=objectProto.toString;var reIsNative=RegExp("^"+funcToString.call(hasOwnProperty).replace(reRegExpChar,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var Symbol=root.Symbol,splice=arrayProto.splice;var Map=getNative(root,"Map"),nativeCreate=getNative(Object,"create");var symbolProto=Symbol?Symbol.prototype:undefined,symbolToString=symbolProto?symbolProto.toString:undefined;function Hash(entries){var index=-1,length=entries?entries.length:0;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1])}}function hashClear(){this.__data__=nativeCreate?nativeCreate(null):{}}function hashDelete(key){return this.has(key)&&delete this.__data__[key]}function hashGet(key){var data=this.__data__;if(nativeCreate){var result=data[key];return result===HASH_UNDEFINED?undefined:result}return hasOwnProperty.call(data,key)?data[key]:undefined}function hashHas(key){var data=this.__data__;return nativeCreate?data[key]!==undefined:hasOwnProperty.call(data,key)}function hashSet(key,value){var data=this.__data__;data[key]=nativeCreate&&value===undefined?HASH_UNDEFINED:value;return this}Hash.prototype.clear=hashClear;Hash.prototype["delete"]=hashDelete;Hash.prototype.get=hashGet;Hash.prototype.has=hashHas;Hash.prototype.set=hashSet;function ListCache(entries){var index=-1,length=entries?entries.length:0;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1])}}function listCacheClear(){this.__data__=[]}function listCacheDelete(key){var data=this.__data__,index=assocIndexOf(data,key);if(index<0){return false}var lastIndex=data.length-1;if(index==lastIndex){data.pop()}else{splice.call(data,index,1)}return true}function listCacheGet(key){var data=this.__data__,index=assocIndexOf(data,key);return index<0?undefined:data[index][1]}function listCacheHas(key){return assocIndexOf(this.__data__,key)>-1}function listCacheSet(key,value){var data=this.__data__,index=assocIndexOf(data,key);if(index<0){data.push([key,value])}else{data[index][1]=value}return this}ListCache.prototype.clear=listCacheClear;ListCache.prototype["delete"]=listCacheDelete;ListCache.prototype.get=listCacheGet;ListCache.prototype.has=listCacheHas;ListCache.prototype.set=listCacheSet;function MapCache(entries){var index=-1,length=entries?entries.length:0;this.clear();while(++index<length){var entry=entries[index];this.set(entry[0],entry[1])}}function mapCacheClear(){this.__data__={hash:new Hash,map:new(Map||ListCache),string:new Hash}}function mapCacheDelete(key){return getMapData(this,key)["delete"](key)}function mapCacheGet(key){return getMapData(this,key).get(key)}function mapCacheHas(key){return getMapData(this,key).has(key)}function mapCacheSet(key,value){getMapData(this,key).set(key,value);return this}MapCache.prototype.clear=mapCacheClear;MapCache.prototype["delete"]=mapCacheDelete;MapCache.prototype.get=mapCacheGet;MapCache.prototype.has=mapCacheHas;MapCache.prototype.set=mapCacheSet;function assignValue(object,key,value){var objValue=object[key];if(!(hasOwnProperty.call(object,key)&&eq(objValue,value))||value===undefined&&!(key in object)){object[key]=value}}function assocIndexOf(array,key){var length=array.length;while(length--){if(eq(array[length][0],key)){return length}}return-1}function baseIsNative(value){if(!isObject(value)||isMasked(value)){return false}var pattern=isFunction(value)||isHostObject(value)?reIsNative:reIsHostCtor;return pattern.test(toSource(value))}function baseSet(object,path,value,customizer){if(!isObject(object)){return object}path=isKey(path,object)?[path]:castPath(path);var index=-1,length=path.length,lastIndex=length-1,nested=object;while(nested!=null&&++index<length){var key=toKey(path[index]),newValue=value;if(index!=lastIndex){var objValue=nested[key];newValue=customizer?customizer(objValue,key,nested):undefined;if(newValue===undefined){newValue=isObject(objValue)?objValue:isIndex(path[index+1])?[]:{}}}assignValue(nested,key,newValue);nested=nested[key]}return object}function baseToString(value){if(typeof value=="string"){return value}if(isSymbol(value)){return symbolToString?symbolToString.call(value):""}var result=value+"";return result=="0"&&1/value==-INFINITY?"-0":result}function castPath(value){return isArray(value)?value:stringToPath(value)}function getMapData(map,key){var data=map.__data__;return isKeyable(key)?data[typeof key=="string"?"string":"hash"]:data.map}function getNative(object,key){var value=getValue(object,key);return baseIsNative(value)?value:undefined}function isIndex(value,length){length=length==null?MAX_SAFE_INTEGER:length;return!!length&&(typeof value=="number"||reIsUint.test(value))&&(value>-1&&value%1==0&&value<length)}function isKey(value,object){if(isArray(value)){return false}var type=typeof value;if(type=="number"||type=="symbol"||type=="boolean"||value==null||isSymbol(value)){return true}return reIsPlainProp.test(value)||!reIsDeepProp.test(value)||object!=null&&value in Object(object)}function isKeyable(value){var type=typeof value;return type=="string"||type=="number"||type=="symbol"||type=="boolean"?value!=="__proto__":value===null}function isMasked(func){return!!maskSrcKey&&maskSrcKey in func}var stringToPath=memoize(function(string){string=toString(string);var result=[];if(reLeadingDot.test(string)){result.push("")}string.replace(rePropName,function(match,number,quote,string){result.push(quote?string.replace(reEscapeChar,"$1"):number||match)});return result});function toKey(value){if(typeof value=="string"||isSymbol(value)){return value}var result=value+"";return result=="0"&&1/value==-INFINITY?"-0":result}function toSource(func){if(func!=null){try{return funcToString.call(func)}catch(e){}try{return func+""}catch(e){}}return""}function memoize(func,resolver){if(typeof func!="function"||resolver&&typeof resolver!="function"){throw new TypeError(FUNC_ERROR_TEXT)}var memoized=function(){var args=arguments,key=resolver?resolver.apply(this,args):args[0],cache=memoized.cache;if(cache.has(key)){return cache.get(key)}var result=func.apply(this,args);memoized.cache=cache.set(key,result);return result};memoized.cache=new(memoize.Cache||MapCache);return memoized}memoize.Cache=MapCache;function eq(value,other){return value===other||value!==value&&other!==other}var isArray=Array.isArray;function isFunction(value){var tag=isObject(value)?objectToString.call(value):"";return tag==funcTag||tag==genTag}function isObject(value){var type=typeof value;return!!value&&(type=="object"||type=="function")}function isObjectLike(value){return!!value&&typeof value=="object"}function isSymbol(value){return typeof value=="symbol"||isObjectLike(value)&&objectToString.call(value)==symbolTag}function toString(value){return value==null?"":baseToString(value)}function set(object,path,value){return object==null?object:baseSet(object,path,value)}module.exports=set}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],11:[function(require,module,exports){var anyBase=require("any-base");var uuidV4=require("uuid/v4");var flickrBase58="123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";var cookieBase90="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$%&'()*+-./:<=>?@[]^_`{|}~";var toFlickr;function shortenUUID(longId,translator){return translator(longId.toLowerCase().replace(/-/g,""))}function enlargeUUID(shortId,translator){var uu1=translator(shortId);var leftPad="";var m;for(var i=0,len=32-uu1.length;i<len;++i){leftPad+="0"}m=(leftPad+uu1).match(/(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/);return[m[1],m[2],m[3],m[4],m[5]].join("-")}module.exports=function(){function MakeConvertor(toAlphabet){var useAlphabet=toAlphabet||flickrBase58;var fromHex=anyBase(anyBase.HEX,useAlphabet);var toHex=anyBase(useAlphabet,anyBase.HEX);var generate=function(){return shortenUUID(uuidV4(),fromHex)};return{new:generate,generate:generate,uuid:uuidV4,fromUUID:function(uuid){return shortenUUID(uuid,fromHex)},toUUID:function(shortUuid){return enlargeUUID(shortUuid,toHex)},alphabet:useAlphabet}}MakeConvertor.constants={flickrBase58:flickrBase58,cookieBase90:cookieBase90};MakeConvertor.uuid=uuidV4;MakeConvertor.generate=function(){if(!toFlickr){toFlickr=anyBase(anyBase.HEX,flickrBase58)}return shortenUUID(uuidV4(),toFlickr)};return MakeConvertor}()},{"any-base":7,"uuid/v4":14}],12:[function(require,module,exports){var byteToHex=[];for(var i=0;i<256;++i){byteToHex[i]=(i+256).toString(16).substr(1)}function bytesToUuid(buf,offset){var i=offset||0;var bth=byteToHex;return[bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]]].join("")}module.exports=bytesToUuid},{}],13:[function(require,module,exports){var getRandomValues=typeof crypto!="undefined"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto!="undefined"&&typeof window.msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto);if(getRandomValues){var rnds8=new Uint8Array(16);module.exports=function whatwgRNG(){getRandomValues(rnds8);return rnds8}}else{var rnds=new Array(16);module.exports=function mathRNG(){for(var i=0,r;i<16;i++){if((i&3)===0)r=Math.random()*4294967296;rnds[i]=r>>>((i&3)<<3)&255}return rnds}}},{}],14:[function(require,module,exports){var rng=require("./lib/rng");var bytesToUuid=require("./lib/bytesToUuid");function v4(options,buf,offset){var i=buf&&offset||0;if(typeof options=="string"){buf=options==="binary"?new Array(16):null;options=null}options=options||{};var rnds=options.random||(options.rng||rng)();rnds[6]=rnds[6]&15|64;rnds[8]=rnds[8]&63|128;if(buf){for(var ii=0;ii<16;++ii){buf[i+ii]=rnds[ii]}}return buf||bytesToUuid(rnds)}module.exports=v4},{"./lib/bytesToUuid":12,"./lib/rng":13}]},{},[4])(4)});
|
package/lib/rpc.d.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { ISchema } from "./types";
|
|
2
|
-
/**
|
|
3
|
-
* for each function in the schema
|
|
4
|
-
* 1. subscribe to an event that the remote can call
|
|
5
|
-
* 2. listen for calls from the remote. When called execute the function and emit the results.
|
|
6
|
-
*
|
|
7
|
-
* @param methods an array of method ids from the local schema
|
|
8
|
-
* @param _connectionID
|
|
9
|
-
* @return a function to cancel all subscriptions
|
|
10
|
-
*/
|
|
11
|
-
export declare function registerLocalMethods(schema: ISchema | undefined, methods: any[] | undefined, _connectionID: string, guest?: Worker): any;
|
|
12
|
-
/**
|
|
13
|
-
* Create a function that will make an RPC request to the remote with some arguments.
|
|
14
|
-
* Listen to an event that returns the results from the remote.
|
|
15
|
-
*
|
|
16
|
-
* @param _callName
|
|
17
|
-
* @param _connectionID
|
|
18
|
-
* @param event
|
|
19
|
-
* @param listeners
|
|
20
|
-
* @param guest
|
|
21
|
-
*
|
|
22
|
-
* @returns a promise with the result of the RPC
|
|
23
|
-
*/
|
|
24
|
-
export declare function createRPC(_callName: string, _connectionID: string, event: any, listeners?: Array<() => void>, guest?: Worker): (...args: any) => Promise<unknown>;
|
|
25
|
-
/**
|
|
26
|
-
* create an object based on the remote schema and methods. Functions in that object will
|
|
27
|
-
* emit an event that will trigger the RPC on the remote.
|
|
28
|
-
*
|
|
29
|
-
* @param schema
|
|
30
|
-
* @param methods
|
|
31
|
-
* @param _connectionID
|
|
32
|
-
* @param event
|
|
33
|
-
* @param guest
|
|
34
|
-
*/
|
|
35
|
-
export declare function registerRemoteMethods(schema: ISchema | undefined, methods: any[] | undefined, _connectionID: string, event: any, guest?: Worker): {
|
|
36
|
-
remote: {
|
|
37
|
-
[x: string]: any;
|
|
38
|
-
};
|
|
39
|
-
unregisterRemote: () => void;
|
|
40
|
-
};
|
package/lib/rpc.js
DELETED
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (_) try {
|
|
29
|
-
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;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
50
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
|
-
};
|
|
52
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
-
var lodash_get_1 = __importDefault(require("lodash.get"));
|
|
54
|
-
var lodash_set_1 = __importDefault(require("lodash.set"));
|
|
55
|
-
var short_uuid_1 = __importDefault(require("short-uuid"));
|
|
56
|
-
var helpers_1 = require("./helpers");
|
|
57
|
-
var types_1 = require("./types");
|
|
58
|
-
/**
|
|
59
|
-
* for each function in the schema
|
|
60
|
-
* 1. subscribe to an event that the remote can call
|
|
61
|
-
* 2. listen for calls from the remote. When called execute the function and emit the results.
|
|
62
|
-
*
|
|
63
|
-
* @param methods an array of method ids from the local schema
|
|
64
|
-
* @param _connectionID
|
|
65
|
-
* @return a function to cancel all subscriptions
|
|
66
|
-
*/
|
|
67
|
-
function registerLocalMethods(schema, methods, _connectionID, guest) {
|
|
68
|
-
if (schema === void 0) { schema = {}; }
|
|
69
|
-
if (methods === void 0) { methods = []; }
|
|
70
|
-
var listeners = [];
|
|
71
|
-
methods.forEach(function (methodName) {
|
|
72
|
-
// handle a remote calling a local method
|
|
73
|
-
function handleCall(event) {
|
|
74
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
75
|
-
var _a, action, callID, connectionID, callName, _b, args, payload, result, error_1;
|
|
76
|
-
return __generator(this, function (_c) {
|
|
77
|
-
switch (_c.label) {
|
|
78
|
-
case 0:
|
|
79
|
-
_a = event.data, action = _a.action, callID = _a.callID, connectionID = _a.connectionID, callName = _a.callName, _b = _a.args, args = _b === void 0 ? [] : _b;
|
|
80
|
-
if (action !== types_1.actions.RPC_REQUEST)
|
|
81
|
-
return [2 /*return*/];
|
|
82
|
-
if (!helpers_1.isTrustedRemote(event))
|
|
83
|
-
return [2 /*return*/];
|
|
84
|
-
if (!callID || !callName)
|
|
85
|
-
return [2 /*return*/];
|
|
86
|
-
if (callName !== methodName)
|
|
87
|
-
return [2 /*return*/];
|
|
88
|
-
if (connectionID !== _connectionID)
|
|
89
|
-
return [2 /*return*/];
|
|
90
|
-
payload = {
|
|
91
|
-
action: types_1.actions.RPC_RESOLVE,
|
|
92
|
-
callID: callID,
|
|
93
|
-
callName: callName,
|
|
94
|
-
connectionID: connectionID,
|
|
95
|
-
error: null,
|
|
96
|
-
result: null,
|
|
97
|
-
};
|
|
98
|
-
_c.label = 1;
|
|
99
|
-
case 1:
|
|
100
|
-
_c.trys.push([1, 3, , 4]);
|
|
101
|
-
return [4 /*yield*/, lodash_get_1.default(schema, methodName).apply(void 0, args)];
|
|
102
|
-
case 2:
|
|
103
|
-
result = _c.sent();
|
|
104
|
-
payload.result = JSON.parse(JSON.stringify(result));
|
|
105
|
-
return [3 /*break*/, 4];
|
|
106
|
-
case 3:
|
|
107
|
-
error_1 = _c.sent();
|
|
108
|
-
payload.error = JSON.parse(JSON.stringify(error_1, Object.getOwnPropertyNames(error_1)));
|
|
109
|
-
return [3 /*break*/, 4];
|
|
110
|
-
case 4:
|
|
111
|
-
if (guest)
|
|
112
|
-
guest.postMessage(payload);
|
|
113
|
-
else if (helpers_1.isWorker())
|
|
114
|
-
self.postMessage(payload);
|
|
115
|
-
else
|
|
116
|
-
event.source.postMessage(payload, event.origin);
|
|
117
|
-
return [2 /*return*/];
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
// subscribe to the call event
|
|
123
|
-
if (guest)
|
|
124
|
-
guest.addEventListener(types_1.events.MESSAGE, handleCall);
|
|
125
|
-
else
|
|
126
|
-
self.addEventListener(types_1.events.MESSAGE, handleCall);
|
|
127
|
-
listeners.push(function () { return self.removeEventListener(types_1.events.MESSAGE, handleCall); });
|
|
128
|
-
});
|
|
129
|
-
return function () { return listeners.forEach(function (unregister) { return unregister(); }); };
|
|
130
|
-
}
|
|
131
|
-
exports.registerLocalMethods = registerLocalMethods;
|
|
132
|
-
/**
|
|
133
|
-
* Create a function that will make an RPC request to the remote with some arguments.
|
|
134
|
-
* Listen to an event that returns the results from the remote.
|
|
135
|
-
*
|
|
136
|
-
* @param _callName
|
|
137
|
-
* @param _connectionID
|
|
138
|
-
* @param event
|
|
139
|
-
* @param listeners
|
|
140
|
-
* @param guest
|
|
141
|
-
*
|
|
142
|
-
* @returns a promise with the result of the RPC
|
|
143
|
-
*/
|
|
144
|
-
function createRPC(_callName, _connectionID, event, listeners, guest) {
|
|
145
|
-
if (listeners === void 0) { listeners = []; }
|
|
146
|
-
return function () {
|
|
147
|
-
var args = [];
|
|
148
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
149
|
-
args[_i] = arguments[_i];
|
|
150
|
-
}
|
|
151
|
-
return new Promise(function (resolve, reject) {
|
|
152
|
-
var callID = short_uuid_1.default.generate();
|
|
153
|
-
// on RPC response
|
|
154
|
-
function handleResponse(event) {
|
|
155
|
-
var _a = event.data, callID = _a.callID, connectionID = _a.connectionID, callName = _a.callName, result = _a.result, error = _a.error, action = _a.action;
|
|
156
|
-
if (!helpers_1.isTrustedRemote(event))
|
|
157
|
-
return;
|
|
158
|
-
if (!callID || !callName)
|
|
159
|
-
return;
|
|
160
|
-
if (callName !== _callName)
|
|
161
|
-
return;
|
|
162
|
-
if (connectionID !== _connectionID)
|
|
163
|
-
return;
|
|
164
|
-
// resolve the response
|
|
165
|
-
if (action === types_1.actions.RPC_RESOLVE)
|
|
166
|
-
return resolve(result);
|
|
167
|
-
if (action === types_1.actions.RPC_REJECT)
|
|
168
|
-
return reject(error);
|
|
169
|
-
}
|
|
170
|
-
// send the RPC request with arguments
|
|
171
|
-
var payload = {
|
|
172
|
-
action: types_1.actions.RPC_REQUEST,
|
|
173
|
-
args: JSON.parse(JSON.stringify(args)),
|
|
174
|
-
callID: callID,
|
|
175
|
-
callName: _callName,
|
|
176
|
-
connectionID: _connectionID,
|
|
177
|
-
};
|
|
178
|
-
if (guest)
|
|
179
|
-
guest.addEventListener(types_1.events.MESSAGE, handleResponse);
|
|
180
|
-
else
|
|
181
|
-
self.addEventListener(types_1.events.MESSAGE, handleResponse);
|
|
182
|
-
listeners.push(function () { return self.removeEventListener(types_1.events.MESSAGE, handleResponse); });
|
|
183
|
-
if (guest)
|
|
184
|
-
guest.postMessage(payload);
|
|
185
|
-
else if (helpers_1.isWorker())
|
|
186
|
-
self.postMessage(payload);
|
|
187
|
-
else
|
|
188
|
-
(event.source || event.target).postMessage(payload, event.origin);
|
|
189
|
-
});
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
exports.createRPC = createRPC;
|
|
193
|
-
/**
|
|
194
|
-
* create an object based on the remote schema and methods. Functions in that object will
|
|
195
|
-
* emit an event that will trigger the RPC on the remote.
|
|
196
|
-
*
|
|
197
|
-
* @param schema
|
|
198
|
-
* @param methods
|
|
199
|
-
* @param _connectionID
|
|
200
|
-
* @param event
|
|
201
|
-
* @param guest
|
|
202
|
-
*/
|
|
203
|
-
function registerRemoteMethods(schema, methods, _connectionID, event, guest) {
|
|
204
|
-
if (schema === void 0) { schema = {}; }
|
|
205
|
-
if (methods === void 0) { methods = []; }
|
|
206
|
-
var remote = __assign({}, schema);
|
|
207
|
-
var listeners = [];
|
|
208
|
-
methods.forEach(function (methodName) {
|
|
209
|
-
var rpc = createRPC(methodName, _connectionID, event, listeners, guest);
|
|
210
|
-
lodash_set_1.default(remote, methodName, rpc);
|
|
211
|
-
});
|
|
212
|
-
return { remote: remote, unregisterRemote: function () { return listeners.forEach(function (unregister) { return unregister(); }); } };
|
|
213
|
-
}
|
|
214
|
-
exports.registerRemoteMethods = registerRemoteMethods;
|
|
215
|
-
//# sourceMappingURL=rpc.js.map
|