diff options
author | kumavis <kumavis@users.noreply.github.com> | 2016-09-14 02:29:46 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-14 02:29:46 +0800 |
commit | b13eaaa0cd201704a63e30f3601552c136c9278c (patch) | |
tree | a2b85fba2f42921ce2c9afb158f6bcad787f4ea0 /library/server.js | |
parent | b4344f2a02ac7b130fc69bbb772f68b4d042b49c (diff) | |
parent | 81d25d560f4920ee7a357881931e674bea97176c (diff) | |
download | tangerine-wallet-browser-b13eaaa0cd201704a63e30f3601552c136c9278c.tar tangerine-wallet-browser-b13eaaa0cd201704a63e30f3601552c136c9278c.tar.gz tangerine-wallet-browser-b13eaaa0cd201704a63e30f3601552c136c9278c.tar.bz2 tangerine-wallet-browser-b13eaaa0cd201704a63e30f3601552c136c9278c.tar.lz tangerine-wallet-browser-b13eaaa0cd201704a63e30f3601552c136c9278c.tar.xz tangerine-wallet-browser-b13eaaa0cd201704a63e30f3601552c136c9278c.tar.zst tangerine-wallet-browser-b13eaaa0cd201704a63e30f3601552c136c9278c.zip |
Merge pull request #651 from MetaMask/library
MetaMask "Mascara" Library - initial PR
Diffstat (limited to 'library/server.js')
-rw-r--r-- | library/server.js | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/library/server.js b/library/server.js new file mode 100644 index 000000000..bb0b24e50 --- /dev/null +++ b/library/server.js @@ -0,0 +1,105 @@ +const express = require('express') +const browserify = require('browserify') +const watchify = require('watchify') +const babelify = require('babelify') + +const zeroBundle = createBundle('./index.js') +const controllerBundle = createBundle('./controller.js') +const popupBundle = createBundle('./popup.js') +const appBundle = createBundle('./example/index.js') + +// +// Iframe Server +// + +const iframeServer = express() + +// serve popup window +iframeServer.get('/popup/scripts/popup.js', function(req, res){ + res.send(popupBundle.latest) +}) +iframeServer.use('/popup', express.static('../dist/chrome')) + +// serve controller bundle +iframeServer.get('/controller.js', function(req, res){ + res.send(controllerBundle.latest) +}) + +// serve background controller +iframeServer.use(express.static('./server')) + +// start the server +const mascaraPort = 9001 +iframeServer.listen(mascaraPort) +console.log(`Mascara service listening on port ${mascaraPort}`) + + +// +// Dapp Server +// + +const dappServer = express() + +// serve metamask-lib bundle +dappServer.get('/zero.js', function(req, res){ + res.send(zeroBundle.latest) +}) + +// serve dapp bundle +dappServer.get('/app.js', function(req, res){ + res.send(appBundle.latest) +}) + +// serve static +dappServer.use(express.static('./example')) + +// start the server +const dappPort = '9002' +dappServer.listen(dappPort) +console.log(`Dapp listening on port ${dappPort}`) + +// +// util +// + +function serveBundle(entryPoint){ + const bundle = createBundle(entryPoint) + return function(req, res){ + res.send(bundle.latest) + } +} + +function createBundle(entryPoint){ + + var bundleContainer = {} + + var bundler = browserify({ + entries: [entryPoint], + cache: {}, + packageCache: {}, + plugin: [watchify], + }) + + // global transpile + var bablePreset = require.resolve('babel-preset-es2015') + + bundler.transform(babelify, { + global: true, + presets: [bablePreset], + babelrc: false, + }) + + bundler.on('update', bundle) + bundle() + + return bundleContainer + + function bundle() { + bundler.bundle(function(err, result){ + if (err) throw err + console.log(`Bundle updated! (${entryPoint})`) + bundleContainer.latest = result.toString() + }) + } + +} |