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

burrata

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

burrata - npm Package Compare versions

Comparing version 0.0.1 to 0.1.0

src/node.js

51

package.json
{
"name": "burrata",
"version": "0.0.1",
"version": "0.1.0",
"description": "Robust, developer-friendly postMessage.",

@@ -22,16 +22,41 @@ "repository": "https://github.com/timdp/burrata",

"scripts": {
"prepare": "yarn run build",
"clean": "yarn run rimraf dist",
"build": "yarn run clean && yarn run build:bundle && yarn run build:minify",
"prepublishOnly": "yarn run build",
"clean": "yarn run clean:dist && yarn run clean:coverage",
"clean:dist": "yarn run rimraf dist",
"clean:coverage": "yarn run rimraf dist",
"build": "yarn run clean:dist && yarn run build:bundle && yarn run build:minify",
"build:bundle": "yarn run rollup -c",
"build:minify": "yarn run uglifyjs -c -m -o dist/burrata.min.js dist/burrata.js",
"test": "yarn run standard"
"test": "yarn run build && yarn run test:lint && yarn run test:e2e",
"test:lint": "yarn run standard",
"test:e2e": "yarn run clean:coverage && yarn run karma start --single-run"
},
"dependencies": {
"@babel/polyfill": "^7.0.0-beta.51",
"p-defer": "^1.0.0"
"@babel/runtime": "^7.0.0-beta.51",
"custom-event": "^1.0.1",
"event-target-shim": "^3.0.1",
"p-defer": "^1.0.0",
"serialize-error": "^2.1.0"
},
"devDependencies": {
"@babel/core": "^7.0.0-beta.51",
"@babel/plugin-transform-runtime": "^7.0.0-beta.51",
"@babel/preset-env": "^7.0.0-beta.51",
"babel-loader": "^8.0.0-beta",
"babel-plugin-istanbul": "^4.1.6",
"chai": "^4.1.2",
"dirty-chai": "^2.0.1",
"es6-error": "^4.1.1",
"karma": "^2.0.3",
"karma-chai": "^0.1.0",
"karma-chrome-launcher": "^2.2.0",
"karma-coverage": "^1.1.2",
"karma-coveralls": "^1.2.1",
"karma-dirty-chai": "^2.0.0",
"karma-junit-reporter": "^1.2.0",
"karma-mocha": "^1.3.0",
"karma-mocha-iframes": "^0.5.2",
"karma-spec-reporter": "^0.0.32",
"karma-webpack": "^3.0.0",
"mocha": "^5.2.0",
"rimraf": "^2.6.2",

@@ -44,10 +69,16 @@ "rollup": "^0.60.7",

"standard": "^11.0.1",
"uglify-js": "^3.4.0"
"uglify-js": "^3.4.0",
"webpack": "^4.12.0"
},
"standard": {
"globals": [
"EventTarget",
"CustomEvent"
"describe",
"it",
"before",
"after",
"beforeEach",
"afterEach",
"expect"
]
}
}

@@ -7,2 +7,45 @@ # Burrata

## Usage
1. Load `dist/burrata.js` with a `<script>` tag. This will put the `burrata`
object on the `window`.
2. Create an instance of `Master`, register some commands, and call `init()` to
listen for commands from slaves:
```js
const master = new burrata.Master()
// Register the "echo" command, which sends back the value of the "msg" arg.
master.setHandler('echo', async ({ msg }) => {
return msg
})
// Start listening for commands.
master.init()
```
3. Add an `<iframe>` for each slave. In the iframe HTML document, load
`burrata.js` again and set up the slave:
```js
// Choose a unique ID for this slave.
const id = '123'
const slave = new burrata.Slave(id)
// Connect to master.
await slave.init()
// Call "echo" on master and print the result.
const response = await slave.send('echo', { msg: 'Hello!' })
console.log('Response: ' + response)
```
Slaves can define command handlers using the same API. See the [demo](demo/) for
more examples.
## Known Issues
- Coverage reporting is currently broken.
## Author

@@ -9,0 +52,0 @@

2

src/index.js

@@ -1,4 +0,2 @@

import '@babel/polyfill'
export { Master } from './master'
export { Slave } from './slave'

@@ -1,6 +0,6 @@

import { Peer } from './peer'
import { Node } from './node'
import { Receiver } from './receiver'
import { Sender } from './sender'
class SlaveStub extends Peer {
class SlaveStub extends Node {
constructor (master, id, target) {

@@ -21,3 +21,3 @@ super(id, target, '*')

class Master extends Peer {
class Master extends Node {
constructor (target = window) {

@@ -52,3 +52,3 @@ super('', target, '*')

for (let i = 0; i < slaves.length; ++i) {
result[slaves[i]] = responses[i]
result[slaves[i].id] = responses[i]
}

@@ -59,5 +59,5 @@ return result

_accept (id, win) {
const peer = new SlaveStub(this, id, win)
this._slaves[id] = peer
return peer
const node = new SlaveStub(this, id, win)
this._slaves[id] = node
return node
}

@@ -64,0 +64,0 @@ }

@@ -0,7 +1,9 @@

import CustomEvent from 'custom-event'
import defer from 'p-defer'
import { Peer } from './peer'
import serializeError from 'serialize-error'
import { Node } from './node'
class Receiver {
constructor (peer) {
this._peer = peer
constructor (node) {
this._node = node
this._dfds = {}

@@ -48,3 +50,3 @@ this._onMessage = this._onMessage.bind(this)

async _handleConnect ({ id, from }, source) {
const slave = this._peer._accept(from, source)
const slave = this._node._accept(from, source)
slave._send('response', id)

@@ -56,22 +58,21 @@ const evt = new CustomEvent('connect', {

})
this._peer.dispatchEvent(evt)
this._node.dispatchEvent(evt)
}
async _handleRequest ({ id, from, payload: { type, args } }) {
if (!Peer.instances.hasOwnProperty(from)) {
if (!Node.instances.hasOwnProperty(from)) {
return
}
const peer = Peer.instances[from]
const node = Node.instances[from]
let result = null
let error = null
try {
result = await this._peer.handle(type, args, peer)
result = await this._node.handle(type, args, node)
} catch (err) {
let errStr = 'Unknown error'
error = { message: '' + err }
try {
errStr = '' + err
} catch (err2) {}
error = { message: errStr }
error = serializeError(err)
} catch (_) {}
} finally {
peer._send('response', id, { error, result })
node._send('response', id, { error, result })
}

@@ -87,3 +88,15 @@ }

if (error != null) {
reject(new Error(error.message))
const err = new Error(error.message)
;['name', 'stack'].forEach(name => {
const value = error[name]
try {
Object.defineProperty(err, name, {
configurable: true,
enumerable: false,
value,
writable: true
})
} catch (_) {}
})
reject(err)
} else {

@@ -90,0 +103,0 @@ resolve(result)

let count = 0
class Sender {
constructor (peer) {
this._peer = peer
constructor (node) {
this._node = node
this._id = count++

@@ -21,3 +21,3 @@ this._msgId = 0

const id = `${this._id}:${msgId}`
const receiving = this._peer._receive(id)
const receiving = this._node._receive(id)
this._send(command, id, payload)

@@ -28,3 +28,3 @@ return receiving

_send (type, id, payload = {}) {
const { id: from, target, origin } = this._peer
const { id: from, target, origin } = this._node
const msg = JSON.stringify({ type, from, id, payload })

@@ -31,0 +31,0 @@ target.postMessage(msg, origin)

@@ -1,6 +0,6 @@

import { Peer } from './peer'
import { Node } from './node'
import { Receiver } from './receiver'
import { Sender } from './sender'
class Slave extends Peer {
class Slave extends Node {
constructor (id, target = window.parent, origin = '*') {

@@ -7,0 +7,0 @@ super(id, target, origin)

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc