2016-06-25 12:18:50 +08:00
|
|
|
var createRenderer = require('./create-renderer')
|
|
|
|
var Module = require('./module')
|
2016-04-27 01:29:27 +08:00
|
|
|
|
2016-06-25 12:05:39 +08:00
|
|
|
function runAsNewModule (code) {
|
2016-06-25 12:18:50 +08:00
|
|
|
var path = '__app__'
|
|
|
|
var m = new Module(path, null, true /* isBundle */)
|
2016-06-25 12:05:39 +08:00
|
|
|
m.load(path)
|
|
|
|
m._compile(code, path)
|
|
|
|
return Object.prototype.hasOwnProperty.call(m.exports, 'default')
|
|
|
|
? m.exports.default
|
|
|
|
: m.exports
|
2016-06-08 09:53:43 +08:00
|
|
|
}
|
|
|
|
|
2016-06-25 12:05:39 +08:00
|
|
|
exports.createRenderer = createRenderer
|
2016-06-08 09:53:43 +08:00
|
|
|
|
2016-06-25 12:05:39 +08:00
|
|
|
exports.createBundleRenderer = function (code, options) {
|
2016-06-25 12:18:50 +08:00
|
|
|
var renderer = createRenderer(options)
|
2016-06-08 09:53:43 +08:00
|
|
|
return {
|
2016-06-25 12:18:50 +08:00
|
|
|
renderToString: function (cb) {
|
|
|
|
var app = runAsNewModule(code)
|
2016-06-25 12:05:39 +08:00
|
|
|
renderer.renderToString(app, cb)
|
2016-06-08 09:53:43 +08:00
|
|
|
},
|
2016-06-25 12:18:50 +08:00
|
|
|
renderToStream: function () {
|
|
|
|
var app = runAsNewModule(code)
|
2016-06-25 12:05:39 +08:00
|
|
|
return renderer.renderToStream(app)
|
2016-04-27 01:29:27 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|