parent
5ef159edb7
commit
6716a0823a
@ -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<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ |
||||
'use strict'; |
||||
|
||||
var _createClass = function () { |
||||
function defineProperties(target, props) { |
||||
for (var i = 0; i < props.length; i++) { |
||||
var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor); |
||||
} |
||||
}return function (Constructor, protoProps, staticProps) { |
||||
if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor; |
||||
}; |
||||
}(); |
||||
|
||||
function _classCallCheck(instance, Constructor) { |
||||
if (!(instance instanceof Constructor)) { |
||||
throw new TypeError("Cannot call a class as a function"); |
||||
} |
||||
} |
||||
|
||||
var RemixExtension = function () { |
||||
function RemixExtension() { |
||||
var _this = this; |
||||
|
||||
_classCallCheck(this, RemixExtension); |
||||
|
||||
this._notifications = {}; |
||||
this._pendingRequests = {}; |
||||
this._id = 0; |
||||
window.addEventListener('message', function (event) { |
||||
return _this._newMessage(event); |
||||
}, false); |
||||
} |
||||
|
||||
_createClass(RemixExtension, [{ |
||||
key: 'listen', |
||||
value: function listen(key, type, callback) { |
||||
if (!this._notifications[key]) this._notifications[key] = {}; |
||||
this._notifications[key][type] = callback; |
||||
} |
||||
}, { |
||||
key: 'call', |
||||
value: function call(key, type, params, callback) { |
||||
this._id++; |
||||
this._pendingRequests[this._id] = callback; |
||||
window.parent.postMessage(JSON.stringify({ |
||||
action: 'request', |
||||
key: key, |
||||
type: type, |
||||
value: params, |
||||
id: this._id |
||||
}), '*'); |
||||
} |
||||
}, { |
||||
key: '_newMessage', |
||||
value: function _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'); |
||||
} |
||||
var _msg = msg, |
||||
action = _msg.action, |
||||
key = _msg.key, |
||||
type = _msg.type, |
||||
value = _msg.value; |
||||
|
||||
if (action === 'notification') { |
||||
if (this._notifications[key] && this._notifications[key][type]) { |
||||
this._notifications[key][type](value); |
||||
} |
||||
} else if (action === 'response') { |
||||
var _msg2 = msg, |
||||
id = _msg2.id, |
||||
error = _msg2.error; |
||||
|
||||
if (this._pendingRequests[id]) { |
||||
this._pendingRequests[id](error, value); |
||||
delete this._pendingRequests[id]; |
||||
} |
||||
} |
||||
} |
||||
}]); |
||||
|
||||
return RemixExtension; |
||||
}(); |
||||
|
||||
if (window) window.RemixExtension = RemixExtension; |
||||
if (module && module.exports) module.exports = RemixExtension; |
||||
|
||||
},{}]},{},[1]); |
@ -0,0 +1,55 @@ |
||||
'use strict' |
||||
|
||||
class RemixExtension { |
||||
constructor () { |
||||
this._notifications = {} |
||||
this._pendingRequests = {} |
||||
this._id = 0 |
||||
window.addEventListener('message', (event) => 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 |
||||
|
@ -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" |
||||
] |
||||
} |
||||
] |
||||
] |
||||
} |
||||
} |
Loading…
Reference in new issue