@remote-ui/rpc
Advanced tools
Comparing version
@@ -10,2 +10,4 @@ 'use strict'; | ||
var webWorker = require('./adaptors/web-worker.js'); | ||
var iframeParent = require('./adaptors/iframe-parent.js'); | ||
var iframeChild = require('./adaptors/iframe-child.js'); | ||
var types = require('./types.js'); | ||
@@ -22,4 +24,6 @@ | ||
exports.fromWebWorker = webWorker.fromWebWorker; | ||
exports.fromIframe = iframeParent.fromIframe; | ||
exports.fromInsideIframe = iframeChild.fromInsideIframe; | ||
exports.RELEASE_METHOD = types.RELEASE_METHOD; | ||
exports.RETAINED_BY = types.RETAINED_BY; | ||
exports.RETAIN_METHOD = types.RETAIN_METHOD; |
@@ -0,3 +1,5 @@ | ||
export { fromIframe } from './iframe-parent'; | ||
export { fromInsideIframe } from './iframe-child'; | ||
export { fromMessagePort } from './message-port'; | ||
export { fromWebWorker } from './web-worker'; | ||
//# sourceMappingURL=index.d.ts.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.fromWebWorker = exports.fromMessagePort = void 0; | ||
exports.fromWebWorker = exports.fromMessagePort = exports.fromInsideIframe = exports.fromIframe = void 0; | ||
var iframe_parent_1 = require("./iframe-parent"); | ||
Object.defineProperty(exports, "fromIframe", { enumerable: true, get: function () { return iframe_parent_1.fromIframe; } }); | ||
var iframe_child_1 = require("./iframe-child"); | ||
Object.defineProperty(exports, "fromInsideIframe", { enumerable: true, get: function () { return iframe_child_1.fromInsideIframe; } }); | ||
var message_port_1 = require("./message-port"); | ||
@@ -5,0 +9,0 @@ Object.defineProperty(exports, "fromMessagePort", { enumerable: true, get: function () { return message_port_1.fromMessagePort; } }); |
@@ -1,3 +0,3 @@ | ||
import { MessageEndpoint } from '../types'; | ||
import type { MessageEndpoint } from '../types'; | ||
export declare function fromMessagePort(messagePort: MessagePort): MessageEndpoint; | ||
//# sourceMappingURL=message-port.d.ts.map |
@@ -1,3 +0,3 @@ | ||
import { MessageEndpoint } from '../types'; | ||
import type { MessageEndpoint } from '../types'; | ||
export declare function fromWebWorker(worker: Worker): MessageEndpoint; | ||
//# sourceMappingURL=web-worker.d.ts.map |
export { createEndpoint } from './endpoint'; | ||
export type { Endpoint, CreateEndpointOptions } from './endpoint'; | ||
export { createBasicEncoder } from './encoding'; | ||
export { fromMessagePort, fromWebWorker } from './adaptors'; | ||
export { fromMessagePort, fromWebWorker, fromIframe, fromInsideIframe, } from './adaptors'; | ||
export { retain, release, StackFrame, RELEASE_METHOD, RETAIN_METHOD, RETAINED_BY, } from './memory'; | ||
@@ -6,0 +6,0 @@ export type { Retainer, MemoryManageable } from './memory'; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.RETAINED_BY = exports.RETAIN_METHOD = exports.RELEASE_METHOD = exports.StackFrame = exports.release = exports.retain = exports.fromWebWorker = exports.fromMessagePort = exports.createBasicEncoder = exports.createEndpoint = void 0; | ||
exports.RETAINED_BY = exports.RETAIN_METHOD = exports.RELEASE_METHOD = exports.StackFrame = exports.release = exports.retain = exports.fromInsideIframe = exports.fromIframe = exports.fromWebWorker = exports.fromMessagePort = exports.createBasicEncoder = exports.createEndpoint = void 0; | ||
var endpoint_1 = require("./endpoint"); | ||
@@ -11,2 +11,4 @@ Object.defineProperty(exports, "createEndpoint", { enumerable: true, get: function () { return endpoint_1.createEndpoint; } }); | ||
Object.defineProperty(exports, "fromWebWorker", { enumerable: true, get: function () { return adaptors_1.fromWebWorker; } }); | ||
Object.defineProperty(exports, "fromIframe", { enumerable: true, get: function () { return adaptors_1.fromIframe; } }); | ||
Object.defineProperty(exports, "fromInsideIframe", { enumerable: true, get: function () { return adaptors_1.fromInsideIframe; } }); | ||
var memory_1 = require("./memory"); | ||
@@ -13,0 +15,0 @@ Object.defineProperty(exports, "retain", { enumerable: true, get: function () { return memory_1.retain; } }); |
@@ -10,2 +10,6 @@ # Changelog | ||
## [1.2.0] - 2021-06-08 | ||
- Adds additional adaptors for converting `iframe` elements into `Endpoint` objects [[#97](https://github.com/Shopify/remote-ui/pull/97)] | ||
## [1.0.2] - 2020-06-24 | ||
@@ -12,0 +16,0 @@ |
{ | ||
"name": "@remote-ui/rpc", | ||
"description": "An RPC library with strong support for simulating the transfer of functions via postMessage", | ||
"version": "1.1.0", | ||
"version": "1.2.0", | ||
"publishConfig": { | ||
@@ -26,3 +26,3 @@ "access": "public" | ||
}, | ||
"gitHead": "9331355a9f807c6745fb882a81d2aa8896e8ab2b" | ||
"gitHead": "dd5749a49702b4d9b3ecb75026beaa5aab2b269f" | ||
} |
@@ -326,1 +326,48 @@ # `@remote-ui/rpc` | ||
- Instances of classes will transfer, but only their own properties — that is, properties on their prototype chain **will not** be transferred (additionally, no effort is made to preserve `instanceof` or similar checks on the transferred value) | ||
## Adaptors | ||
This library also provides a collection of adaptors that transform common `postMessage`-related objects into an `Endpoint`. You can of course write your own adaptor for these (and may need to, if you have complex needs), but these adaptors can be a helpful starting point: | ||
- `fromWebWorker()` allows you to create an `Endpoint` from a [Web Worker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers): | ||
```ts | ||
import {fromWebWorker} from '@remote-ui/rpc'; | ||
const worker = new Worker('./worker.js', import.meta.url); | ||
const endpoint = fromWebWorker(worker); | ||
``` | ||
- `fromMessagePort()` allows you to create an `Endpoint` from a [`MessagePort` object](https://developer.mozilla.org/en-US/docs/Web/API/MessagePort) | ||
```ts | ||
import {fromMessagePort} from '@remote-ui/rpc'; | ||
const channel = new MessageChannel(); | ||
const endpoint = fromWebWorker(channel.port2); | ||
``` | ||
- `fromIframe()` allows you to create an `Endpoint` from a browser window by connecting it to a child `iframe`: | ||
```ts | ||
import {fromIframe} from '@remote-ui/rpc'; | ||
const iframe = document.createElement('iframe'); | ||
iframe.setAttribute('src', '/my-iframe-page'); | ||
document.appendChild(iframe); | ||
const endpoint = fromIframe(iframe); | ||
// Optionally, you can pass {terminate: false} to prevent the iframe from being | ||
// removed from the DOM when the endpoint is terminated: | ||
const endpoint2 = fromIframe(iframe, {terminate: false}); | ||
``` | ||
- `fromInsideIframe()` allows you to create an `Endpoint` from a parent browser window, from _within_ a child `iframe`: | ||
```ts | ||
// Can only be run from inside an iframe, where `self.parent` is available | ||
import {fromInsideIframe} from '@remote-ui/rpc'; | ||
const endpoint = fromInsideIframe(); | ||
``` |
@@ -0,2 +1,4 @@ | ||
export {fromIframe} from './iframe-parent'; | ||
export {fromInsideIframe} from './iframe-child'; | ||
export {fromMessagePort} from './message-port'; | ||
export {fromWebWorker} from './web-worker'; |
@@ -1,2 +0,2 @@ | ||
import {MessageEndpoint} from '../types'; | ||
import type {MessageEndpoint} from '../types'; | ||
@@ -3,0 +3,0 @@ export function fromMessagePort(messagePort: MessagePort): MessageEndpoint { |
@@ -1,2 +0,2 @@ | ||
import {MessageEndpoint} from '../types'; | ||
import type {MessageEndpoint} from '../types'; | ||
@@ -3,0 +3,0 @@ export function fromWebWorker(worker: Worker): MessageEndpoint { |
export {createEndpoint} from './endpoint'; | ||
export type {Endpoint, CreateEndpointOptions} from './endpoint'; | ||
export {createBasicEncoder} from './encoding'; | ||
export {fromMessagePort, fromWebWorker} from './adaptors'; | ||
export { | ||
fromMessagePort, | ||
fromWebWorker, | ||
fromIframe, | ||
fromInsideIframe, | ||
} from './adaptors'; | ||
export { | ||
retain, | ||
@@ -7,0 +12,0 @@ release, |
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
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
295493
8.7%93
17.72%3610
12.22%373
14.42%0
-100%