New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@remote-ui/rpc

Package Overview
Dependencies
Maintainers
2
Versions
55
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@remote-ui/rpc - npm Package Compare versions

Comparing version

to
0.0.8

147

build/cjs/endpoint.js

@@ -94,2 +94,8 @@ "use strict";

function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }

@@ -99,6 +105,2 @@

function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }

@@ -118,3 +120,4 @@

_ref$createFunctionSt = _ref.createFunctionStrategy,
createFunctionStrategy = _ref$createFunctionSt === void 0 ? _strategies.createMessengerFunctionStrategy : _ref$createFunctionSt;
createFunctionStrategy = _ref$createFunctionSt === void 0 ? _strategies.createMessengerFunctionStrategy : _ref$createFunctionSt,
callable = _ref.callable;

@@ -160,3 +163,3 @@ var terminated = false;

_listener = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(event) {
var _i3, _arr2, _listener2, data, stackFrame, _data2, id, target, args, func, result, _toWire7, _toWire8, serializedResult, transferables, name, message, stack;
var _i2, _arr2, _listener2, data, stackFrame, _data2, id, target, args, func, result, _toWire7, _toWire8, serializedResult, transferables, name, message, stack;

@@ -167,4 +170,4 @@ return regeneratorRuntime.wrap(function _callee$(_context) {

case 0:
for (_i3 = 0, _arr2 = _toConsumableArray(eventListeners); _i3 < _arr2.length; _i3++) {
_listener2 = _arr2[_i3];
for (_i2 = 0, _arr2 = _toConsumableArray(eventListeners); _i2 < _arr2.length; _i2++) {
_listener2 = _arr2[_i2];

@@ -245,49 +248,38 @@ _listener2(event);

messenger.addEventListener('message', listener);
return {
call: new Proxy({}, {
get: function get(_target, property) {
return function () {
if (terminated) {
throw new Error('You attempted to call a function on a terminated web worker.');
}
var call;
var id = uuid();
var done = new Promise(function (resolve, reject) {
messenger.addEventListener('message', function listener(_ref2) {
var data = _ref2.data;
if (callable == null) {
if (typeof Proxy !== 'function') {
throw new Error("You must pass an array of callable methods in environments without Proxies.");
}
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
call = new Proxy({}, {
get: function get(_target, property) {
return handlerForCall(property);
}
});
} else {
call = {};
messenger.removeEventListener('message', listener);
var _iterator = _createForOfIteratorHelper(callable),
_step;
var _data = _slicedToArray(data, 4),
errorResult = _data[2],
value = _data[3];
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var method = _step.value;
Object.defineProperty(call, method, {
value: handlerForCall(method),
writable: false,
enumerable: true
});
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
if (errorResult == null) {
resolve(fromWire(value));
} else {
var error = new Error();
Object.assign(error, errorResult);
reject(error);
}
});
});
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var _toWire = toWire(args),
_toWire2 = _slicedToArray(_toWire, 2),
serializedArgs = _toWire2[0],
transferables = _toWire2[1];
messenger.postMessage([APPLY, id, property, serializedArgs], transferables);
return done;
};
}
}),
return {
call: call,
functions: functions,

@@ -301,10 +293,10 @@ replace: function replace(newMessenger) {

expose: function expose(api) {
for (var _i2 = 0, _Object$keys = Object.keys(api); _i2 < _Object$keys.length; _i2++) {
var _key2 = _Object$keys[_i2];
var value = api[_key2];
for (var _i = 0, _Object$keys = Object.keys(api); _i < _Object$keys.length; _i++) {
var _key = _Object$keys[_i];
var value = api[_key];
if (typeof value === 'function') {
activeApi.set(_key2, value);
activeApi.set(_key, value);
} else {
activeApi["delete"](_key2);
activeApi["delete"](_key);
}

@@ -334,2 +326,47 @@ }

function handlerForCall(property) {
return function () {
if (terminated) {
throw new Error('You attempted to call a function on a terminated web worker.');
}
var id = uuid();
var done = new Promise(function (resolve, reject) {
messenger.addEventListener('message', function listener(_ref2) {
var data = _ref2.data;
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
messenger.removeEventListener('message', listener);
var _data = _slicedToArray(data, 4),
errorResult = _data[2],
value = _data[3];
if (errorResult == null) {
resolve(fromWire(value));
} else {
var error = new Error();
Object.assign(error, errorResult);
reject(error);
}
});
});
for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {
args[_key2] = arguments[_key2];
}
var _toWire = toWire(args),
_toWire2 = _slicedToArray(_toWire, 2),
serializedArgs = _toWire2[0],
transferables = _toWire2[1];
messenger.postMessage([APPLY, id, property, serializedArgs], transferables);
return done;
};
}
function toWire(value) {

@@ -336,0 +373,0 @@ if (_typeof(value) === 'object') {

@@ -27,2 +27,6 @@ "use strict";

require("core-js/modules/es.object.define-properties");
require("core-js/modules/es.object.define-property");
require("core-js/modules/es.object.to-string");

@@ -32,4 +36,2 @@

require("core-js/modules/es.reflect.get");
require("core-js/modules/es.regexp.to-string");

@@ -58,2 +60,4 @@

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }

@@ -193,2 +197,4 @@

fromWire: function fromWire(_ref5, retainedBy) {
var _Object$definePropert;
var _ref6 = _slicedToArray(_ref5, 2),

@@ -243,66 +249,61 @@ id = _ref6[0],

var retainers = new Set(retainedBy);
var proxy = new Proxy(function () {}, {
get: function get(target, prop, receiver) {
if (prop === 'apply' || prop === 'bind') {
return receiver;
}
if (prop === _types.RELEASE_METHOD) {
return release;
}
function proxy() {
if (released) {
throw new Error('You attempted to call a function that was already released.');
}
if (prop === _types.RETAIN_METHOD) {
return retain;
}
if (revoked) {
throw new Error('You attempted to call a function that was already revoked.');
}
if (prop === _types.RETAINED_BY) {
return retainers;
}
var id = uuid();
var done = new Promise(function (resolve, reject) {
port.addEventListener('message', function listener(_ref8) {
var data = _ref8.data;
return Reflect.get(target, prop, receiver);
},
apply: function apply(_target, _this, args) {
if (released) {
throw new Error('You attempted to call a function that was already released.');
}
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
if (revoked) {
throw new Error('You attempted to call a function that was already revoked.');
}
var _data2 = _slicedToArray(data, 4),
errorResult = _data2[2],
value = _data2[3];
var id = uuid();
var done = new Promise(function (resolve, reject) {
port.addEventListener('message', function listener(_ref8) {
var data = _ref8.data;
port.removeEventListener('message', listener);
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
if (errorResult == null) {
resolve(_fromWire(value, retainedBy));
} else {
var error = new Error();
Object.assign(error, errorResult);
reject(errorResult);
}
});
});
var _data2 = _slicedToArray(data, 4),
errorResult = _data2[2],
value = _data2[3];
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
port.removeEventListener('message', listener);
var _toWire4 = _toWire(args),
_toWire5 = _slicedToArray(_toWire4, 2),
serializedArgs = _toWire5[0],
transferables = _toWire5[1];
if (errorResult == null) {
resolve(_fromWire(value, retainedBy));
} else {
var error = new Error();
Object.assign(error, errorResult);
reject(errorResult);
}
});
});
port.postMessage([APPLY, id, serializedArgs], transferables);
return done;
}
var _toWire4 = _toWire(args),
_toWire5 = _slicedToArray(_toWire4, 2),
serializedArgs = _toWire5[0],
transferables = _toWire5[1];
Object.defineProperties(proxy, (_Object$definePropert = {}, _defineProperty(_Object$definePropert, _types.RELEASE_METHOD, {
value: release,
writable: false
}), _defineProperty(_Object$definePropert, _types.RETAIN_METHOD, {
value: retain,
writable: false
}), _defineProperty(_Object$definePropert, _types.RETAINED_BY, {
value: retainers,
writable: false
}), _Object$definePropert));
port.postMessage([APPLY, id, serializedArgs], transferables);
return done;
}
});
var _iterator = _createForOfIteratorHelper(retainers),

@@ -309,0 +310,0 @@ _step;

@@ -27,2 +27,6 @@ "use strict";

require("core-js/modules/es.object.define-properties");
require("core-js/modules/es.object.define-property");
require("core-js/modules/es.object.to-string");

@@ -32,4 +36,2 @@

require("core-js/modules/es.reflect.get");
require("core-js/modules/es.regexp.to-string");

@@ -64,2 +66,4 @@

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }

@@ -218,2 +222,4 @@

fromWire: function fromWire(id, retainedBy) {
var _Object$definePropert;
if (idsToProxy.has(id)) {

@@ -241,55 +247,50 @@ return idsToProxy.get(id);

var retainers = new Set(retainedBy);
var proxy = new Proxy(function () {}, {
get: function get(target, prop, receiver) {
if (prop === 'apply' || prop === 'bind') {
return receiver;
}
if (prop === _types.RELEASE_METHOD) {
return release;
}
function proxy() {
if (released) {
throw new Error('You attempted to call a function that was already released.');
}
if (prop === _types.RETAIN_METHOD) {
return retain;
}
if (!idsToProxy.has(id)) {
throw new Error('You attempted to call a function that was already revoked.');
}
if (prop === _types.RETAINED_BY) {
return retainers;
}
var callId = uuid();
var done = new Promise(function (resolve, reject) {
callIdsToResolver.set(callId, function (errorResult, value) {
if (errorResult == null) {
resolve(_fromWire(value, retainedBy));
} else {
var _error = new Error();
return Reflect.get(target, prop, receiver);
},
apply: function apply(_target, _this, args) {
if (released) {
throw new Error('You attempted to call a function that was already released.');
}
Object.assign(_error, errorResult);
reject(errorResult);
}
});
});
if (!idsToProxy.has(id)) {
throw new Error('You attempted to call a function that was already revoked.');
}
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var callId = uuid();
var done = new Promise(function (resolve, reject) {
callIdsToResolver.set(callId, function (errorResult, value) {
if (errorResult == null) {
resolve(_fromWire(value, retainedBy));
} else {
var _error = new Error();
var _toWire = toWire(args),
_toWire2 = _slicedToArray(_toWire, 2),
serializedArgs = _toWire2[0],
transferables = _toWire2[1];
Object.assign(_error, errorResult);
reject(errorResult);
}
});
});
messenger.postMessage([APPLY, callId, id, serializedArgs], transferables);
return done;
}
var _toWire = toWire(args),
_toWire2 = _slicedToArray(_toWire, 2),
serializedArgs = _toWire2[0],
transferables = _toWire2[1];
Object.defineProperties(proxy, (_Object$definePropert = {}, _defineProperty(_Object$definePropert, _types.RELEASE_METHOD, {
value: release,
writable: false
}), _defineProperty(_Object$definePropert, _types.RETAIN_METHOD, {
value: retain,
writable: false
}), _defineProperty(_Object$definePropert, _types.RETAINED_BY, {
value: retainers,
writable: false
}), _Object$definePropert));
messenger.postMessage([APPLY, callId, id, serializedArgs], transferables);
return done;
}
});
var _iterator = _createForOfIteratorHelper(retainers),

@@ -296,0 +297,0 @@ _step;

@@ -19,3 +19,4 @@ "use strict";

uuid = defaultUuid,
createFunctionStrategy = _strategies.createMessengerFunctionStrategy
createFunctionStrategy = _strategies.createMessengerFunctionStrategy,
callable
} = {}) {

@@ -106,38 +107,29 @@ let terminated = false;

messenger.addEventListener('message', listener);
return {
call: new Proxy({}, {
let call;
if (callable == null) {
if (typeof Proxy !== 'function') {
throw new Error(`You must pass an array of callable methods in environments without Proxies.`);
}
call = new Proxy({}, {
get(_target, property) {
return (...args) => {
if (terminated) {
throw new Error('You attempted to call a function on a terminated web worker.');
}
return handlerForCall(property);
}
const id = uuid();
const done = new Promise((resolve, reject) => {
messenger.addEventListener('message', function listener({
data
}) {
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
});
} else {
call = {};
messenger.removeEventListener('message', listener);
const [,, errorResult, value] = data;
for (const method of callable) {
Object.defineProperty(call, method, {
value: handlerForCall(method),
writable: false,
enumerable: true
});
}
}
if (errorResult == null) {
resolve(fromWire(value));
} else {
const error = new Error();
Object.assign(error, errorResult);
reject(error);
}
});
});
const [serializedArgs, transferables] = toWire(args);
messenger.postMessage([APPLY, id, property, serializedArgs], transferables);
return done;
};
}
}),
return {
call,
functions,

@@ -176,2 +168,35 @@

function handlerForCall(property) {
return (...args) => {
if (terminated) {
throw new Error('You attempted to call a function on a terminated web worker.');
}
const id = uuid();
const done = new Promise((resolve, reject) => {
messenger.addEventListener('message', function listener({
data
}) {
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
messenger.removeEventListener('message', listener);
const [,, errorResult, value] = data;
if (errorResult == null) {
resolve(fromWire(value));
} else {
const error = new Error();
Object.assign(error, errorResult);
reject(error);
}
});
});
const [serializedArgs, transferables] = toWire(args);
messenger.postMessage([APPLY, id, property, serializedArgs], transferables);
return done;
};
}
function toWire(value) {

@@ -178,0 +203,0 @@ if (typeof value === 'object') {

@@ -135,58 +135,51 @@ "use strict";

const retainers = new Set(retainedBy);
const proxy = new Proxy(function () {}, {
get(target, prop, receiver) {
if (prop === 'apply' || prop === 'bind') {
return receiver;
}
if (prop === _types.RELEASE_METHOD) {
return release;
}
function proxy(...args) {
if (released) {
throw new Error('You attempted to call a function that was already released.');
}
if (prop === _types.RETAIN_METHOD) {
return retain;
}
if (revoked) {
throw new Error('You attempted to call a function that was already revoked.');
}
if (prop === _types.RETAINED_BY) {
return retainers;
}
const id = uuid();
const done = new Promise((resolve, reject) => {
port.addEventListener('message', function listener({
data
}) {
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
return Reflect.get(target, prop, receiver);
},
const [,, errorResult, value] = data;
port.removeEventListener('message', listener);
apply(_target, _this, args) {
if (released) {
throw new Error('You attempted to call a function that was already released.');
}
if (errorResult == null) {
resolve(fromWire(value, retainedBy));
} else {
const error = new Error();
Object.assign(error, errorResult);
reject(errorResult);
}
});
});
const [serializedArgs, transferables] = toWire(args);
port.postMessage([APPLY, id, serializedArgs], transferables);
return done;
}
if (revoked) {
throw new Error('You attempted to call a function that was already revoked.');
}
const id = uuid();
const done = new Promise((resolve, reject) => {
port.addEventListener('message', function listener({
data
}) {
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
const [,, errorResult, value] = data;
port.removeEventListener('message', listener);
if (errorResult == null) {
resolve(fromWire(value, retainedBy));
} else {
const error = new Error();
Object.assign(error, errorResult);
reject(errorResult);
}
});
});
const [serializedArgs, transferables] = toWire(args);
port.postMessage([APPLY, id, serializedArgs], transferables);
return done;
Object.defineProperties(proxy, {
[_types.RELEASE_METHOD]: {
value: release,
writable: false
},
[_types.RETAIN_METHOD]: {
value: retain,
writable: false
},
[_types.RETAINED_BY]: {
value: retainers,
writable: false
}
});

@@ -193,0 +186,0 @@

@@ -146,49 +146,42 @@ "use strict";

const retainers = new Set(retainedBy);
const proxy = new Proxy(function () {}, {
get(target, prop, receiver) {
if (prop === 'apply' || prop === 'bind') {
return receiver;
}
if (prop === _types.RELEASE_METHOD) {
return release;
}
function proxy(...args) {
if (released) {
throw new Error('You attempted to call a function that was already released.');
}
if (prop === _types.RETAIN_METHOD) {
return retain;
}
if (!idsToProxy.has(id)) {
throw new Error('You attempted to call a function that was already revoked.');
}
if (prop === _types.RETAINED_BY) {
return retainers;
}
const callId = uuid();
const done = new Promise((resolve, reject) => {
callIdsToResolver.set(callId, (errorResult, value) => {
if (errorResult == null) {
resolve(fromWire(value, retainedBy));
} else {
const error = new Error();
Object.assign(error, errorResult);
reject(errorResult);
}
});
});
const [serializedArgs, transferables] = toWire(args);
messenger.postMessage([APPLY, callId, id, serializedArgs], transferables);
return done;
}
return Reflect.get(target, prop, receiver);
Object.defineProperties(proxy, {
[_types.RELEASE_METHOD]: {
value: release,
writable: false
},
apply(_target, _this, args) {
if (released) {
throw new Error('You attempted to call a function that was already released.');
}
if (!idsToProxy.has(id)) {
throw new Error('You attempted to call a function that was already revoked.');
}
const callId = uuid();
const done = new Promise((resolve, reject) => {
callIdsToResolver.set(callId, (errorResult, value) => {
if (errorResult == null) {
resolve(fromWire(value, retainedBy));
} else {
const error = new Error();
Object.assign(error, errorResult);
reject(errorResult);
}
});
});
const [serializedArgs, transferables] = toWire(args);
messenger.postMessage([APPLY, callId, id, serializedArgs], transferables);
return done;
[_types.RETAIN_METHOD]: {
value: retain,
writable: false
},
[_types.RETAINED_BY]: {
value: retainers,
writable: false
}
});

@@ -195,0 +188,0 @@

import { MessageEndpoint, RemoteCallable, FunctionStrategy, FunctionStrategyOptions } from './types';
interface Options {
interface Options<T = unknown> {
uuid?(): string;
createFunctionStrategy?(options: FunctionStrategyOptions): FunctionStrategy<unknown>;
callable?: (keyof T)[];
}

@@ -15,4 +16,4 @@ export interface Endpoint<T> {

}
export declare function createEndpoint<T>(initialMessenger: MessageEndpoint, { uuid, createFunctionStrategy, }?: Options): Endpoint<T>;
export declare function createEndpoint<T>(initialMessenger: MessageEndpoint, { uuid, createFunctionStrategy, callable, }?: Options<T>): Endpoint<T>;
export {};
//# sourceMappingURL=endpoint.d.ts.map

@@ -9,3 +9,3 @@ "use strict";

const FUNCTION = '_@f';
function createEndpoint(initialMessenger, { uuid = defaultUuid, createFunctionStrategy = strategies_1.createMessengerFunctionStrategy, } = {}) {
function createEndpoint(initialMessenger, { uuid = defaultUuid, createFunctionStrategy = strategies_1.createMessengerFunctionStrategy, callable, } = {}) {
let terminated = false;

@@ -74,33 +74,25 @@ let messenger = initialMessenger;

messenger.addEventListener('message', listener);
return {
call: new Proxy({}, {
let call;
if (callable == null) {
if (typeof Proxy !== 'function') {
throw new Error(`You must pass an array of callable methods in environments without Proxies.`);
}
call = new Proxy({}, {
get(_target, property) {
return (...args) => {
if (terminated) {
throw new Error('You attempted to call a function on a terminated web worker.');
}
const id = uuid();
const done = new Promise((resolve, reject) => {
messenger.addEventListener('message', function listener({ data }) {
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
messenger.removeEventListener('message', listener);
const [, , errorResult, value] = data;
if (errorResult == null) {
resolve(fromWire(value));
}
else {
const error = new Error();
Object.assign(error, errorResult);
reject(error);
}
});
});
const [serializedArgs, transferables] = toWire(args);
messenger.postMessage([APPLY, id, property, serializedArgs], transferables);
return done;
};
return handlerForCall(property);
},
}),
});
}
else {
call = {};
for (const method of callable) {
Object.defineProperty(call, method, {
value: handlerForCall(method),
writable: false,
enumerable: true,
});
}
}
return {
call,
functions,

@@ -134,2 +126,30 @@ replace(newMessenger) {

};
function handlerForCall(property) {
return (...args) => {
if (terminated) {
throw new Error('You attempted to call a function on a terminated web worker.');
}
const id = uuid();
const done = new Promise((resolve, reject) => {
messenger.addEventListener('message', function listener({ data }) {
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
messenger.removeEventListener('message', listener);
const [, , errorResult, value] = data;
if (errorResult == null) {
resolve(fromWire(value));
}
else {
const error = new Error();
Object.assign(error, errorResult);
reject(error);
}
});
});
const [serializedArgs, transferables] = toWire(args);
messenger.postMessage([APPLY, id, property, serializedArgs], transferables);
return done;
};
}
function toWire(value) {

@@ -136,0 +156,0 @@ if (typeof value === 'object') {

@@ -96,47 +96,35 @@ "use strict";

const retainers = new Set(retainedBy);
const proxy = new Proxy(function () { }, {
get(target, prop, receiver) {
if (prop === 'apply' || prop === 'bind') {
return receiver;
}
if (prop === types_1.RELEASE_METHOD) {
return release;
}
if (prop === types_1.RETAIN_METHOD) {
return retain;
}
if (prop === types_1.RETAINED_BY) {
return retainers;
}
return Reflect.get(target, prop, receiver);
},
apply(_target, _this, args) {
if (released) {
throw new Error('You attempted to call a function that was already released.');
}
if (revoked) {
throw new Error('You attempted to call a function that was already revoked.');
}
const id = uuid();
const done = new Promise((resolve, reject) => {
port.addEventListener('message', function listener({ data }) {
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
const [, , errorResult, value] = data;
port.removeEventListener('message', listener);
if (errorResult == null) {
resolve(fromWire(value, retainedBy));
}
else {
const error = new Error();
Object.assign(error, errorResult);
reject(errorResult);
}
});
function proxy(...args) {
if (released) {
throw new Error('You attempted to call a function that was already released.');
}
if (revoked) {
throw new Error('You attempted to call a function that was already revoked.');
}
const id = uuid();
const done = new Promise((resolve, reject) => {
port.addEventListener('message', function listener({ data }) {
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
const [, , errorResult, value] = data;
port.removeEventListener('message', listener);
if (errorResult == null) {
resolve(fromWire(value, retainedBy));
}
else {
const error = new Error();
Object.assign(error, errorResult);
reject(errorResult);
}
});
const [serializedArgs, transferables] = toWire(args);
port.postMessage([APPLY, id, serializedArgs], transferables);
return done;
},
});
const [serializedArgs, transferables] = toWire(args);
port.postMessage([APPLY, id, serializedArgs], transferables);
return done;
}
Object.defineProperties(proxy, {
[types_1.RELEASE_METHOD]: { value: release, writable: false },
[types_1.RETAIN_METHOD]: { value: retain, writable: false },
[types_1.RETAINED_BY]: { value: retainers, writable: false },
});

@@ -143,0 +131,0 @@ for (const retainer of retainers) {

@@ -97,42 +97,30 @@ "use strict";

const retainers = new Set(retainedBy);
const proxy = new Proxy(function () { }, {
get(target, prop, receiver) {
if (prop === 'apply' || prop === 'bind') {
return receiver;
}
if (prop === types_1.RELEASE_METHOD) {
return release;
}
if (prop === types_1.RETAIN_METHOD) {
return retain;
}
if (prop === types_1.RETAINED_BY) {
return retainers;
}
return Reflect.get(target, prop, receiver);
},
apply(_target, _this, args) {
if (released) {
throw new Error('You attempted to call a function that was already released.');
}
if (!idsToProxy.has(id)) {
throw new Error('You attempted to call a function that was already revoked.');
}
const callId = uuid();
const done = new Promise((resolve, reject) => {
callIdsToResolver.set(callId, (errorResult, value) => {
if (errorResult == null) {
resolve(fromWire(value, retainedBy));
}
else {
const error = new Error();
Object.assign(error, errorResult);
reject(errorResult);
}
});
function proxy(...args) {
if (released) {
throw new Error('You attempted to call a function that was already released.');
}
if (!idsToProxy.has(id)) {
throw new Error('You attempted to call a function that was already revoked.');
}
const callId = uuid();
const done = new Promise((resolve, reject) => {
callIdsToResolver.set(callId, (errorResult, value) => {
if (errorResult == null) {
resolve(fromWire(value, retainedBy));
}
else {
const error = new Error();
Object.assign(error, errorResult);
reject(errorResult);
}
});
const [serializedArgs, transferables] = toWire(args);
messenger.postMessage([APPLY, callId, id, serializedArgs], transferables);
return done;
},
});
const [serializedArgs, transferables] = toWire(args);
messenger.postMessage([APPLY, callId, id, serializedArgs], transferables);
return done;
}
Object.defineProperties(proxy, {
[types_1.RELEASE_METHOD]: { value: release, writable: false },
[types_1.RETAIN_METHOD]: { value: retain, writable: false },
[types_1.RETAINED_BY]: { value: retainers, writable: false },
});

@@ -139,0 +127,0 @@ for (const retainer of retainers) {

{
"name": "@remote-ui/rpc",
"version": "0.0.7",
"version": "0.0.8",
"publishConfig": {

@@ -12,3 +12,3 @@ "access": "public"

},
"gitHead": "bd96aac31482a4f2cc54598159a3271960aade7b"
"gitHead": "0f214b5378b3dbc93376366daaf61088ea6cb213"
}

@@ -16,3 +16,3 @@ import {

interface Options {
interface Options<T = unknown> {
uuid?(): string;

@@ -22,2 +22,3 @@ createFunctionStrategy?(

): FunctionStrategy<unknown>;
callable?: (keyof T)[];
}

@@ -38,3 +39,4 @@

createFunctionStrategy = createMessengerFunctionStrategy,
}: Options = {},
callable,
}: Options<T> = {},
): Endpoint<T> {

@@ -120,46 +122,33 @@ let terminated = false;

return {
call: new Proxy(
let call: any;
if (callable == null) {
if (typeof Proxy !== 'function') {
throw new Error(
`You must pass an array of callable methods in environments without Proxies.`,
);
}
call = new Proxy(
{},
{
get(_target, property) {
return (...args: any[]) => {
if (terminated) {
throw new Error(
'You attempted to call a function on a terminated web worker.',
);
}
return handlerForCall(property);
},
},
);
} else {
call = {};
const id = uuid();
const done = new Promise<any>((resolve, reject) => {
messenger.addEventListener('message', function listener({data}) {
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
for (const method of callable) {
Object.defineProperty(call, method, {
value: handlerForCall(method),
writable: false,
enumerable: true,
});
}
}
messenger.removeEventListener('message', listener);
const [, , errorResult, value] = data;
if (errorResult == null) {
resolve(fromWire(value));
} else {
const error = new Error();
Object.assign(error, errorResult);
reject(error);
}
});
});
const [serializedArgs, transferables] = toWire(args);
messenger.postMessage(
[APPLY, id, property, serializedArgs],
transferables,
);
return done;
};
},
},
) as any,
return {
call,
functions,

@@ -195,2 +184,41 @@ replace(newMessenger) {

function handlerForCall(property: string | number | symbol) {
return (...args: any[]) => {
if (terminated) {
throw new Error(
'You attempted to call a function on a terminated web worker.',
);
}
const id = uuid();
const done = new Promise<any>((resolve, reject) => {
messenger.addEventListener('message', function listener({data}) {
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
messenger.removeEventListener('message', listener);
const [, , errorResult, value] = data;
if (errorResult == null) {
resolve(fromWire(value));
} else {
const error = new Error();
Object.assign(error, errorResult);
reject(error);
}
});
});
const [serializedArgs, transferables] = toWire(args);
messenger.postMessage(
[APPLY, id, property, serializedArgs],
transferables,
);
return done;
};
}
function toWire(value: unknown): [any, Transferable[]?] {

@@ -197,0 +225,0 @@ if (typeof value === 'object') {

@@ -130,64 +130,49 @@ import {

const proxy = new Proxy(function () {}, {
get(target, prop, receiver) {
if (prop === 'apply' || prop === 'bind') {
return receiver;
}
function proxy(...args: any[]) {
if (released) {
throw new Error(
'You attempted to call a function that was already released.',
);
}
if (prop === RELEASE_METHOD) {
return release;
}
if (revoked) {
throw new Error(
'You attempted to call a function that was already revoked.',
);
}
if (prop === RETAIN_METHOD) {
return retain;
}
const id = uuid();
const done = new Promise<any>((resolve, reject) => {
port!.addEventListener('message', function listener({data}) {
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
if (prop === RETAINED_BY) {
return retainers;
}
const [, , errorResult, value] = data;
return Reflect.get(target, prop, receiver);
},
apply(_target, _this, args) {
if (released) {
throw new Error(
'You attempted to call a function that was already released.',
);
}
port!.removeEventListener('message', listener);
if (revoked) {
throw new Error(
'You attempted to call a function that was already revoked.',
);
}
if (errorResult == null) {
resolve(fromWire(value, retainedBy));
} else {
const error = new Error();
Object.assign(error, errorResult);
reject(errorResult);
}
});
});
const id = uuid();
const done = new Promise<any>((resolve, reject) => {
port.addEventListener('message', function listener({data}) {
if (data == null || data[0] !== RESULT || data[1] !== id) {
return;
}
const [serializedArgs, transferables] = toWire(args);
port!.postMessage(
[APPLY, id, serializedArgs],
transferables as Transferable[],
);
const [, , errorResult, value] = data;
return done;
}
port.removeEventListener('message', listener);
if (errorResult == null) {
resolve(fromWire(value, retainedBy));
} else {
const error = new Error();
Object.assign(error, errorResult);
reject(errorResult);
}
});
});
const [serializedArgs, transferables] = toWire(args);
port.postMessage(
[APPLY, id, serializedArgs],
transferables as Transferable[],
);
return done;
},
Object.defineProperties(proxy, {
[RELEASE_METHOD]: {value: release, writable: false},
[RETAIN_METHOD]: {value: retain, writable: false},
[RETAINED_BY]: {value: retainers, writable: false},
});

@@ -194,0 +179,0 @@

@@ -138,57 +138,42 @@ import {

const proxy = new Proxy(function () {}, {
get(target, prop, receiver) {
if (prop === 'apply' || prop === 'bind') {
return receiver;
}
function proxy(...args: any[]) {
if (released) {
throw new Error(
'You attempted to call a function that was already released.',
);
}
if (prop === RELEASE_METHOD) {
return release;
}
if (!idsToProxy.has(id)) {
throw new Error(
'You attempted to call a function that was already revoked.',
);
}
if (prop === RETAIN_METHOD) {
return retain;
}
const callId = uuid();
if (prop === RETAINED_BY) {
return retainers;
}
const done = new Promise<any>((resolve, reject) => {
callIdsToResolver.set(callId, (errorResult, value) => {
if (errorResult == null) {
resolve(fromWire(value, retainedBy));
} else {
const error = new Error();
Object.assign(error, errorResult);
reject(errorResult);
}
});
});
return Reflect.get(target, prop, receiver);
},
apply(_target, _this, args) {
if (released) {
throw new Error(
'You attempted to call a function that was already released.',
);
}
const [serializedArgs, transferables] = toWire(args);
messenger.postMessage(
[APPLY, callId, id, serializedArgs],
transferables,
);
if (!idsToProxy.has(id)) {
throw new Error(
'You attempted to call a function that was already revoked.',
);
}
return done;
}
const callId = uuid();
const done = new Promise<any>((resolve, reject) => {
callIdsToResolver.set(callId, (errorResult, value) => {
if (errorResult == null) {
resolve(fromWire(value, retainedBy));
} else {
const error = new Error();
Object.assign(error, errorResult);
reject(errorResult);
}
});
});
const [serializedArgs, transferables] = toWire(args);
messenger.postMessage(
[APPLY, callId, id, serializedArgs],
transferables,
);
return done;
},
Object.defineProperties(proxy, {
[RELEASE_METHOD]: {value: release, writable: false},
[RETAIN_METHOD]: {value: retain, writable: false},
[RETAINED_BY]: {value: retainers, writable: false},
});

@@ -195,0 +180,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet