Skip to content

Instantly share code, notes, and snippets.

@OliverJAsh
Created November 13, 2014 20:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save OliverJAsh/e392a67dd61f94b10abf to your computer and use it in GitHub Desktop.
Save OliverJAsh/e392a67dd61f94b10abf to your computer and use it in GitHub Desktop.
sandboxed-module test with ES6 source transformer
npm install
node traceur-runner.js main.js
import http from 'http';
console.log('foo: http:', http);
export default 'foo';
import traceurAPI from 'traceur/src/node/api.js';
import SandboxedModule from 'sandboxed-module';
var es6 = source => {
var compiler = new traceurAPI.NodeCompiler({ modules: 'commonjs' });
return compiler.compile(source);
};
// ES6 modules translate to a CJS module with a default property
var sandboxEs6Require = (moduleId, options) => {
let defaultOptions = { sourceTransformers: { es6 } };
return SandboxedModule.require(
moduleId,
Object.assign({}, defaultOptions, options)).default;
};
var foo = sandboxEs6Require('./foo', { requires: { http: 'mocked http' } });
console.log('main: foo:', foo);
{
"name": "sandbox-test",
"version": "0.0.0",
"dependencies": {
"lodash-node": "^2.4.1",
"sandboxed-module": "^1.0.2"
},
"devDependencies": {
"traceur": "0.0.72",
"traceur-source-maps": "^1.0.5"
}
}
'use strict';
var traceur = require('traceur');
require('traceur-source-maps').install(traceur);
var path = require('path');
traceur.require.makeDefault(function (modulePath) {
var isDependency = modulePath.indexOf('node_modules') !== -1;
return ! isDependency;
});
require(path.resolve(process.cwd(), process.argv[2]));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment