Skip to content

Commit

Permalink
refactor(register): update register hook. Update node plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
Masquerade-Circus committed Dec 7, 2020
1 parent ca76a57 commit f62505c
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 29 deletions.
2 changes: 1 addition & 1 deletion .dccache
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/register.js":"1","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/rollupSource.js":"2","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/dist/valyrian.min.js":"3","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/lib/index.js":"4","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/hooks.js":"5","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/node.js":"6","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/node.sw.tpl.js":"7","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/request.js":"8","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/router.js":"9","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/signals.js":"10","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/store.js":"11","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/sw.js":"12","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/v-model.js":"13","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/directives_test.js":"14","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/hooks_test.js":"15","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/hyperscript_test.js":"16","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/keyed_test.js":"17","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/lifecycle_test.js":"18","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/mount_n_update_test.js":"19","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/node_test.js":"20","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/request_test.js":"21","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/router_test.js":"22","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/signals_test.js":"23","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/store_test.js":"24","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/utils/tree-adapter.js":"25"},[882,1607119100023.176,"26"],[2068,1607120291416.5527,"27"],[4951,1607121934115.4512,"28"],[13063,1607120673640.9028,"29"],[2801,1601561147084.002,"30"],[9672,1607119378753.205,"31"],[4083,1601561152283.9846,"32"],[4175,1601711784571.025,"33"],[6605,1601711802107.2263,"34"],[4083,1601561161489.3032,"35"],[2041,1601561163851.908,"36"],[448,1601561166242.2478,"37"],[3182,1601561182841.262,"38"],[14551,1607030292474.3137,"39"],[5491,1601561187310.7358,"40"],[2790,1602046213316.2332,"41"],[2477,1601561192499.9382,"42"],[3853,1601561256934.404,"43"],[8396,1602046229772.1895,"44"],[6623,1607119389329.592,"45"],[8776,1601711047778.4246,"46"],[9719,1601711813515.5264,"47"],[5720,1601561591586.4749,"48"],[4426,1601561595435.788,"49"],[14845,1602043898530.3389,"50"],"d2f3f5c1211fe7a5bd863ade5a4b0e0d8272784ff8ec9bcc15534cd486f42ca9","0ec7df7c9a6bab0fd6d04c253af13a09b487cba19889d7dc7a0df382f5535f00","05f8fbc05e9e2c371f3feac40047010a62d3dcea864437667f9bdf160887c39d","5c0ea99ac4af5513b9144084d68f4626bf5927f1b4e184368cf10edcab0a44f6","16b6f25485c43e37c210e4bef87353a9a9c0e639c9509770dc63ab49dec3525a","cb1f208a7b5100fcce761a897ade98a6b31a53ba976c3e3966f0e2e1e8b33fb9","9e41c42d425160d207ad8dbe2eddd6c2bf432338665826d07c897e0f2b44a14d","0f4356afca5c145d5a323cd651da7354a490286b68bdd63078750f936d7e0483","0403d6187aa2b372e3031cc6ca26b86366d841928875cb6f271e109869e7231a","8d1fe0d59ee427d044a50a05fef348508a6e3c0470fe1fc027b1414ca488edb9","a950855c17dfc2667d895f978f7374e977e2631344198066f5972e92d0994289","74dd7dfefb006f754a7c5b13d8086b36990b440c16ce5b60b2b661188ac91c6c","ba3588cbe7fe65446cbdc8b9ffed65283c602fef940cb68d5fba025bb1aaad58","7125bc46c5881021937ed7df34b8b4b047443bdc7a621cd8203827240085ca40","ef5804184ff8456f5e366df6bfff69f5a3afee68423593338e4800c79816c9c0","f5ee42c239f8b6306df002d52bd928c5b521db32b0616e5e676e69c34ae80b7c","3e9635114cde575b7d4b68c636752d3919eefa460998dc33f0590d88c9090020","4a1e952b9225b20ac59c16d15fb586602804ff03e05813c1399c206097609c03","dccc69630bab05c149376b89b581dabd10ebfd2015d0b65a8a4ed413b0cf14c5","dacb264f5d142800de5510deeceba1665ac70bfffe32b896427ed5dc5bff9087","5cac321ab5cf8f969d3629db4b4df564485a456fcca0c4a509ce12bb681a798e","5d0626c0127689268963cd71c5caabd84a59d20540344c48f73ae07475a46cdd","b6c8e80c37efde1a28cb7681d7d9b31d6cb10ad25d74691e84b87237b347497b","020812b85ad71a026e6b73f6e7fb0601518d903093e2484605d0271666622efa","9c0dd2ed2e6b14a644c8a2c1b28761b16f7253b182307a3f1b9fb529088b602c"]
[{"/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/register.js":"1","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/rollupSource.js":"2","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/dist/valyrian.min.js":"3","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/lib/index.js":"4","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/hooks.js":"5","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/node.js":"6","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/node.sw.tpl.js":"7","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/request.js":"8","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/router.js":"9","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/signals.js":"10","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/store.js":"11","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/sw.js":"12","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/v-model.js":"13","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/directives_test.js":"14","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/hooks_test.js":"15","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/hyperscript_test.js":"16","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/keyed_test.js":"17","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/lifecycle_test.js":"18","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/mount_n_update_test.js":"19","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/node_test.js":"20","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/request_test.js":"21","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/router_test.js":"22","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/signals_test.js":"23","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/store_test.js":"24","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/utils/tree-adapter.js":"25"},[688,1607308222699.7341,"26"],[2068,1607120291416.5527,"27"],[4951,1607121934115.4512,"28"],[13063,1607120673640.9028,"29"],[2801,1601561147084.002,"30"],[10093,1607308687058.202,"31"],[4083,1601561152283.9846,"32"],[4175,1601711784571.025,"33"],[6605,1601711802107.2263,"34"],[4083,1601561161489.3032,"35"],[2041,1601561163851.908,"36"],[448,1601561166242.2478,"37"],[3182,1601561182841.262,"38"],[14551,1607240550740.148,"39"],[5491,1601561187310.7358,"40"],[2790,1602046213316.2332,"41"],[2477,1601561192499.9382,"42"],[3853,1601561256934.404,"43"],[8396,1602046229772.1895,"44"],[6623,1607119389329.592,"45"],[8776,1601711047778.4246,"46"],[9719,1601711813515.5264,"47"],[5720,1601561591586.4749,"48"],[4426,1601561595435.788,"49"],[14845,1602043898530.3389,"50"],"31bff5a8431e32a68275fe4e83ed7607a6132a9db824f5fc2aadc622a5934e4b","0ec7df7c9a6bab0fd6d04c253af13a09b487cba19889d7dc7a0df382f5535f00","05f8fbc05e9e2c371f3feac40047010a62d3dcea864437667f9bdf160887c39d","5c0ea99ac4af5513b9144084d68f4626bf5927f1b4e184368cf10edcab0a44f6","16b6f25485c43e37c210e4bef87353a9a9c0e639c9509770dc63ab49dec3525a","a4c0edecd1216917be040457522aa33af0e27400e05d5483bf1235b14d13d117","9e41c42d425160d207ad8dbe2eddd6c2bf432338665826d07c897e0f2b44a14d","0f4356afca5c145d5a323cd651da7354a490286b68bdd63078750f936d7e0483","0403d6187aa2b372e3031cc6ca26b86366d841928875cb6f271e109869e7231a","8d1fe0d59ee427d044a50a05fef348508a6e3c0470fe1fc027b1414ca488edb9","a950855c17dfc2667d895f978f7374e977e2631344198066f5972e92d0994289","74dd7dfefb006f754a7c5b13d8086b36990b440c16ce5b60b2b661188ac91c6c","ba3588cbe7fe65446cbdc8b9ffed65283c602fef940cb68d5fba025bb1aaad58","7125bc46c5881021937ed7df34b8b4b047443bdc7a621cd8203827240085ca40","ef5804184ff8456f5e366df6bfff69f5a3afee68423593338e4800c79816c9c0","f5ee42c239f8b6306df002d52bd928c5b521db32b0616e5e676e69c34ae80b7c","3e9635114cde575b7d4b68c636752d3919eefa460998dc33f0590d88c9090020","4a1e952b9225b20ac59c16d15fb586602804ff03e05813c1399c206097609c03","dccc69630bab05c149376b89b581dabd10ebfd2015d0b65a8a4ed413b0cf14c5","dacb264f5d142800de5510deeceba1665ac70bfffe32b896427ed5dc5bff9087","5cac321ab5cf8f969d3629db4b4df564485a456fcca0c4a509ce12bb681a798e","5d0626c0127689268963cd71c5caabd84a59d20540344c48f73ae07475a46cdd","b6c8e80c37efde1a28cb7681d7d9b31d6cb10ad25d74691e84b87237b347497b","020812b85ad71a026e6b73f6e7fb0601518d903093e2484605d0271666622efa","9c0dd2ed2e6b14a644c8a2c1b28761b16f7253b182307a3f1b9fb529088b602c"]
42 changes: 26 additions & 16 deletions plugins/node.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
let fs = require("fs");
let path = require("path");

let { PurgeCSS } = require("purgecss");
let fetch = require("node-fetch");
let FormData = require("form-data");
let treeAdapter = require("./utils/tree-adapter");
let requestPlugin = require("./request");

let rollup = require("rollup");
let commonjs = require("@rollup/plugin-commonjs");
Expand All @@ -15,6 +13,7 @@ let buble = require("@rollup/plugin-buble");
let json = require("@rollup/plugin-json");
let { terser } = require("rollup-plugin-terser");
let sourcemaps = require("rollup-plugin-sourcemaps");
let { PurgeCSS } = require("purgecss");
let csso = require("csso");

global.fetch = fetch;
Expand All @@ -31,18 +30,18 @@ let errorHandler = (resolve, reject) => (err) => {

function fileMethodFactory() {
let prop = [];
return function(file) {
return function(file, options = {}) {
if (!file) {
return prop;
}

let asyncMethod = async () => {
let contents = "";
let useSourceMap = /(development|test)/gi.test(process.env.NODE_ENV || "");
if (typeof file === "string") {
let ext = file.split(".").pop();
if (/(js|jsx|mjs|ts|tsx)/.test(ext)) {
let inputOptions = {
...options.inputOptions,
input: file,
plugins: [
includepaths({ paths: [process.cwd()] }),
Expand All @@ -59,20 +58,21 @@ function fileMethodFactory() {
}),
commonjs({
include: ["./node_modules/**", "./**"],
sourceMap: useSourceMap
sourceMap: true
}),
terser({ warnings: "verbose" })
terser({ warnings: "verbose" }),
...((options.inputOptions || {}).plugins || [])
]
};

if (useSourceMap) {
inputOptions.plugins.push(sourcemaps());
}
inputOptions.plugins.push(sourcemaps());

let outputOptions = {
compact: true,
format: "iife",
sourcemap: useSourceMap,
compact: true
name: "v" + (0 | (Math.random() * 9e6)).toString(36),
...options.outputOptions,
sourcemap: true
};

const bundle = await rollup.rollup(inputOptions);
Expand All @@ -90,6 +90,7 @@ function fileMethodFactory() {
let content = fs.readFileSync(file, "utf8");

let { css, map } = csso.minify(content, {
...options,
filename: file, // will be added to source map as reference to source file
sourceMap: true // generate source map
});
Expand Down Expand Up @@ -156,18 +157,18 @@ inline.uncss = (function() {
.join("");

let output = await purgecss.purge({
content: contents,
css: [{ raw: css }],
fontFace: true,
keyframes: true,
variables: true,
defaultExtractor: (content) => content.match(/[A-Za-z0-9-_/:@]*[A-Za-z0-9-_/:@/]+/g) || [],
...options
...options,
content: contents,
css: [{ raw: css }]
});

prop = csso.minify(output[0].css, {
sourceMap: false,
restructure: false
restructure: true
}).css;

return prop;
Expand Down Expand Up @@ -306,15 +307,24 @@ icons.options = {
};

let plugin = function(v) {
v.usePlugin(requestPlugin);
v.inline = inline;
v.sw = sw;
v.icons = icons;
v.htmlToDom = treeAdapter.htmlToDom;
v.domToHtml = treeAdapter.domToHtml;
v.domToHyperscript = treeAdapter.domToHyperscript;
v.htmlToHyperscript = treeAdapter.htmlToHyperscript;
v.hyperscriptToHtml = (...args) => v.mount("div", () => args);
};

plugin.inline = inline;
plugin.sw = sw;
plugin.icons = icons;
plugin.htmlToDom = treeAdapter.htmlToDom;
plugin.domToHtml = treeAdapter.domToHtml;
plugin.domToHyperscript = treeAdapter.domToHyperscript;
plugin.htmlToHyperscript = treeAdapter.htmlToHyperscript;
plugin.hyperscriptToHtml = (...args) => v.mount("div", () => args);

plugin.default = plugin;
module.exports = plugin;
17 changes: 5 additions & 12 deletions register.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,22 @@
const { addHook } = require("pirates");
const { transform } = require("sucrase");

// Assume .jsx components are using x-engine
const jsxOptions = {
production: true,
transforms: ["imports", "typescript", "jsx"],
jsxPragma: "v",
jsxFragmentPragma: "v"
};

// Return a function to revert the hook
return addHook(
addHook(
(code, filePath) => {
let ext = filePath.split(".").pop();

const fileOptions = {
let { code: transformed, sourceMap } = transform(code, {
sourceMapOptions: { compiledFilename: filePath },
filePath
};
const { code: transformed, sourceMap } = transform(code, {
...fileOptions,
filePath,
...jsxOptions
});
const mapBase64 = Buffer.from(JSON.stringify(sourceMap)).toString("base64");
const suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${mapBase64}`;
let mapBase64 = Buffer.from(JSON.stringify(sourceMap)).toString("base64");
let suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${mapBase64}`;
return `${transformed}\n${suffix}`;
},
{ exts: [".js", ".jsx", ".ts", ".tsx", ".mjs"] }
Expand Down

0 comments on commit f62505c

Please sign in to comment.