diff --git a/src/app/plugin/wrapper/bundle.js b/src/app/plugin/wrapper/bundle.js new file mode 100644 index 0000000000..8888bc1f06 --- /dev/null +++ b/src/app/plugin/wrapper/bundle.js @@ -0,0 +1,94 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o this._newMessage(event), false) + } + + listen (key, type, callback) { + if (!this._notifications[key]) this._notifications[key] = {} + this._notifications[key][type] = callback + } + + call (key, type, params, callback) { + this._id++ + this._pendingRequests[this._id] = callback + window.parent.postMessage(JSON.stringify({ + action: 'request', + key, + type, + value: params, + id: this._id + }), '*') + } + + _newMessage (event) { + if (!event.data) return + if (typeof event.data !== 'string') return + + var msg + try { + msg = JSON.parse(event.data) + } catch (e) { + return console.log('unable to parse data') + } + const {action, key, type, value} = msg + if (action === 'notification') { + if (this._notifications[key] && this._notifications[key][type]) { + this._notifications[key][type](value) + } + } else if (action === 'response') { + const {id, error} = msg + if (this._pendingRequests[id]) { + this._pendingRequests[id](error, value) + delete this._pendingRequests[id] + } + } + } +} + +if (window) window.RemixExtension = RemixExtension +if (module && module.exports) module.exports = RemixExtension + diff --git a/src/app/plugin/wrapper/package.json b/src/app/plugin/wrapper/package.json new file mode 100644 index 0000000000..ae2bbda9a0 --- /dev/null +++ b/src/app/plugin/wrapper/package.json @@ -0,0 +1,71 @@ +{ + "name": "remix-extension", + "version": "0.0.1", + "description": "Ethereum IDE and tools for the web", + "contributors": [ + { + "name": "Yann Levreau", + "email": "yann@ethdev.com" + } + ], + "main": "./index.js", + "dependencies": { + "babel-eslint": "^7.1.1", + "babel-plugin-transform-object-assign": "^6.22.0", + "babel-preset-es2015": "^6.24.0", + "babelify": "^7.3.0", + "standard": "^7.0.1", + "tape": "^4.6.0" + }, + "scripts": { + "browserify": "browserify index.js -o bundle.js" + }, + "standard": { + "ignore": [ + "node_modules/*" + ], + "parser": "babel-eslint" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ethereum/remix-ide.git" + }, + "author": "cpp-ethereum team", + "license": "MIT", + "bugs": { + "url": "https://github.com/ethereum/remix-ide/issues" + }, + "homepage": "https://github.com/ethereum/remix-ide#readme", + "browserify": { + "transform": [ + [ + "babelify", + { + "plugins": [ + [ + "fast-async", + { + "runtimePatten": null, + "compiler": { + "promises": true, + "es7": true, + "noRuntime": true, + "wrapAwait": true + } + } + ], + "transform-object-assign" + ] + } + ], + [ + "babelify", + { + "presets": [ + "es2015" + ] + } + ] + ] + } +}