mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
64 lines
1.4 KiB
JavaScript
64 lines
1.4 KiB
JavaScript
"use strict";
|
|
|
|
const { createBrowser } = require("jsdom-context-require");
|
|
const compiler = require("../../compiler");
|
|
const globals = [
|
|
"console",
|
|
"__coverage__",
|
|
"Error",
|
|
"describe",
|
|
"before",
|
|
"after",
|
|
"beforeEach",
|
|
"afterEach",
|
|
"it",
|
|
];
|
|
|
|
const browserExtensions = {
|
|
".marko": compileMarkoModule,
|
|
".html": compileMarkoModule,
|
|
};
|
|
|
|
module.exports = function (dir, html, options) {
|
|
options = options || {};
|
|
return createBrowser({
|
|
dir: dir,
|
|
html: html,
|
|
extensions: browserExtensions,
|
|
// runScripts: 'dangerously', // JSDOM 10+
|
|
beforeParse(window, browser) {
|
|
window.global = window;
|
|
window.alert = () => {};
|
|
window.addEventListener("error", (e) => {
|
|
browser.error = browser.error || e.error;
|
|
});
|
|
browser.require("complain").log = (...args) =>
|
|
require("complain").log(...args);
|
|
globals.forEach(function (k) {
|
|
window[k] = global[k];
|
|
});
|
|
if (options.beforeParse) {
|
|
options.beforeParse(window, browser);
|
|
}
|
|
},
|
|
});
|
|
};
|
|
|
|
function compileMarkoModule(module, filename) {
|
|
return module._compile(
|
|
compiler.compileFile(filename, {
|
|
writeToDisk: false,
|
|
output: "vdom",
|
|
browser: true,
|
|
meta: true,
|
|
modules: "cjs",
|
|
babelConfig: {
|
|
babelrc: false,
|
|
configFile: false,
|
|
browserslistConfigFile: false,
|
|
},
|
|
}),
|
|
filename,
|
|
);
|
|
}
|