Commit c936d152 authored by rockyl's avatar rockyl

分离代码分离器

parent 7a65f27a
import decamelize from 'decamelize';
import crypto from 'crypto';
import babel from '@babel/core';
import { divideCode } from 'zeroing-code-divider';
/**
* Created by rockyl on 2019-11-30.
......@@ -34,172 +34,6 @@ function uglify(source){
}
}
/**
* Created by rockyl on 2019-11-29.
*/
function md5(source) {
const hash = crypto.createHash('md5');
return hash.update(source).digest('hex');
}
class ProcessManager {
constructor() {
this.pool = {};
this.scripts = '';
}
deal(process) {
let hash = this.put(process);
if (hash) {
process.script = 'link://' + hash;
}
if (process.metas) {
for (let subProcess of process.metas) {
this.deal(subProcess);
}
}
}
put(process) {
const {id, name, script} = process;
if (script) {
let hash = md5(script);
if (!this.pool.hasOwnProperty(hash)) {
this.pool[hash] = {
script,
ids: [],
};
}
this.pool[hash].ids.push(`${id} - ${name}`);
return hash;
}
}
generateCurrent() {
let scripts = '';
for (let hash in this.pool) {
let {script, ids} = this.pool[hash];
let idsComment = ids.map(id => {
return `/*== ${id} ==*/`
}).join('\n');
scripts += `
exports['${hash}'] = function(args, props, target, global, vm){
return new Promise(function(resolve, reject){
${idsComment}
${script}
function next(type, payload){resolve({type: type, payload: payload})}
});
};
`;
}
this.scripts += scripts;
this.pool = {};
}
async compile() {
try {
const {code, sourcemap} = await compile(this.scripts, true);
this.scripts = code;
} catch (e) {
console.log('编译失败', e);
}
}
generate() {
this.generateCurrent();
let scripts = this.scripts;
return `
(function(){
var exports = {};
${scripts}
engine.setScriptMap(exports);
})();
`
}
}
/**
* Created by rockyl on 2019-11-29.
*/
class ScriptManager {
constructor() {
this.pool = [];
}
deal(script){
this.pool.push(script);
}
generate(){
let scripts = '';
for(let {id, code} of this.pool){
scripts += `
/*=====START ${id} START=====*/
(function(exports){
${code}
})(exports);
engine.registerScriptDef(exports.default.id, exports.default);
/*=====END ${id} END=====*/`;
}
return `
(function(){
var exports = {};
${scripts}
})();
`;
}
}
/**
* Created by rockyl on 2019-11-29.
*/
class CustomManager {
constructor() {
this.pool = [];
}
deal(custom) {
this.pool.push(custom);
}
generate(){
let scripts = '';
for(let {id, code} of this.pool){
scripts += `
/*=====START ${id} START=====*/
module = {
exports: {}
};
(function(module){
${code}
})(module);
exports['${id}'] = module.exports;
/*=====END ${id} END=====*/`;
}
return `
(function(){
var exports = {};
var module;
${scripts}
for(var key in exports){
engine.registerCustomModule(key, exports[key]);
}
})();
`
}
}
/**
* Created by rockyl on 2019-11-13.
*
......@@ -230,10 +64,6 @@ function fillTpl(data, params) {
}
async function packData(data, {debug, packedAssets, getProcesses, getScripts, getCustoms}) {
const processManager = new ProcessManager();
const scriptManager = new ScriptManager();
const customManager = new CustomManager();
let newData = {};
newData.options = data.options;
newData.views = data.views;
......@@ -246,7 +76,17 @@ async function packData(data, {debug, packedAssets, getProcesses, getScripts, ge
console.log(TAG, 'start');
/*=====START process =====*/
const {
processScriptContent,
scriptsContent,
customScriptContent,
} = await divideCode(newData, {
debug,
uglify, compile,
getProcesses, getScripts, getCustoms,
});
/*/!*=====START process =====*!/
console.log(TAG, 'start process');
let processIDs = [];
findDepPidsBat(processIDs, newData.processes);
......@@ -285,9 +125,9 @@ async function packData(data, {debug, packedAssets, getProcesses, getScripts, ge
if (!debug) {
processScriptContent = uglify(processScriptContent);
}
/*=====END process =====*/
/!*=====END process =====*!/
/*=====START script =====*/
/!*=====START script =====*!/
console.log(TAG, 'start script');
let scriptIDs = [];
for (let view of newData.views) {
......@@ -319,24 +159,24 @@ async function packData(data, {debug, packedAssets, getProcesses, getScripts, ge
if (!debug) {
scriptsContent = uglify(scriptsContent);
}
/*=====END script =====*/
/!*=====END script =====*!/
/*=====START custom =====*/
/!*=====START custom =====*!/
console.log(TAG, 'start custom');
//newData.customs = [];
if (data.customs && data.customs.length > 0) {
/*newData.customs = */
/!*newData.customs = *!/
(await getCustoms(data.customs)).map(item => {
customManager.deal(JSON.parse(item));
//return JSON.parse(item);
});
})
}
let customScriptContent = customManager.generate();
//console.log(customScriptContent);
if (!debug) {
customScriptContent = uglify(customScriptContent);
}
/*=====END custom =====*/
/!*=====END custom =====*!/*/
return {
data: JSON.stringify(newData),
......@@ -366,36 +206,6 @@ function deleteUnusedData(processes) {
}
}
function findDepPids(list, process) {
if (process.sub) {
for (let key in process.sub) {
let p = process.sub[key];
if (!list.includes(p.meta)) {
list.push(p.meta);
}
}
}
}
function findDepPidsBat(list, processes) {
for (let process of processes) {
findDepPids(list, process);
}
}
async function addBuiltinProcesses(list, ids, getProcesses) {
let newPids = [];
if (ids.length > 0) {
let processes = await getProcesses(ids);
for (let processData of processes) {
let process = JSON.parse(processData);
list.push(process);
findDepPids(newPids, process);
}
}
return newPids;
}
function pageTemplate(tpl, options, version) {
const params = {
version,
......@@ -415,14 +225,5 @@ function fillTemplate(tpl, options, params) {
options.newTpl = tpl;
}
function traverseNode(root, callback) {
callback(root);
if (root.children && root.children.length > 0) {
for (let childNode of root.children) {
traverseNode(childNode, callback);
}
}
}
export { fillTpl, pack };
//# sourceMappingURL=index.es.js.map
{"version":3,"file":"index.es.js","sources":["../src/code-process.js","../src/ProcessManager.js","../src/ScriptManager.js","../src/CustomManager.js","../src/index.js"],"sourcesContent":["/**\n * Created by rockyl on 2019-11-30.\n */\n\nimport babel from '@babel/core';\n\nconst UglifyJS = require('uglify-js');\n\nexport async function compile(source, debug = false) {\n\tconst {code, map} = await babel.transformAsync(source, {\n\t\tpresets: [\n\t\t\t['@babel/env', {}]\n\t\t],\n\t\tbabelrc: false,\n\t\tsourceMaps: debug,\n\t});\n\n\tconst result = {\n\t\tcode,\n\t};\n\tif (map) {\n\t\tresult.sourcemap = map.mappings;\n\t}\n\treturn result;\n}\n\nexport function uglify(source){\n\tconst uglifyResult = UglifyJS.minify(source, {\n\t});\n\tif (!uglifyResult.error) {\n\t\treturn uglifyResult.code;\n\t}\n}","/**\n * Created by rockyl on 2019-11-29.\n */\n\nimport crypto from 'crypto'\nimport {compile} from \"./code-process\";\n\nfunction md5(source) {\n\tconst hash = crypto.createHash('md5');\n\treturn hash.update(source).digest('hex');\n}\n\nexport default class ProcessManager {\n\tconstructor() {\n\t\tthis.pool = {};\n\t\tthis.scripts = '';\n\t}\n\n\tdeal(process) {\n\t\tlet hash = this.put(process);\n\t\tif (hash) {\n\t\t\tprocess.script = 'link://' + hash;\n\t\t}\n\t\tif (process.metas) {\n\t\t\tfor (let subProcess of process.metas) {\n\t\t\t\tthis.deal(subProcess);\n\t\t\t}\n\t\t}\n\t}\n\n\tput(process) {\n\t\tconst {id, name, script} = process;\n\t\tif (script) {\n\t\t\tlet hash = md5(script);\n\t\t\tif (!this.pool.hasOwnProperty(hash)) {\n\t\t\t\tthis.pool[hash] = {\n\t\t\t\t\tscript,\n\t\t\t\t\tids: [],\n\t\t\t\t};\n\t\t\t}\n\t\t\tthis.pool[hash].ids.push(`${id} - ${name}`);\n\t\t\treturn hash;\n\t\t}\n\t}\n\n\tgenerateCurrent() {\n\t\tlet scripts = '';\n\t\tfor (let hash in this.pool) {\n\t\t\tlet {script, ids} = this.pool[hash];\n\t\t\tlet idsComment = ids.map(id => {\n\t\t\t\treturn `/*== ${id} ==*/`\n\t\t\t}).join('\\n');\n\t\t\tscripts += `\n\texports['${hash}'] = function(args, props, target, global, vm){\n\t\treturn new Promise(function(resolve, reject){\n\n${idsComment}\n${script}\n\n\t\tfunction next(type, payload){resolve({type: type, payload: payload})}\n\t\t});\n\t};\n`;\n\t\t}\n\t\tthis.scripts += scripts;\n\t\tthis.pool = {};\n\t}\n\n\tasync compile() {\n\t\ttry {\n\t\t\tconst {code, sourcemap} = await compile(this.scripts, true);\n\t\t\tthis.scripts = code;\n\t\t} catch (e) {\n\t\t\tconsole.log('编译失败', e);\n\t\t}\n\t}\n\n\tgenerate() {\n\t\tthis.generateCurrent();\n\t\tlet scripts = this.scripts;\n\n\t\treturn `\n(function(){\nvar exports = {};\n${scripts}\n\n\tengine.setScriptMap(exports);\n})();\n`\n\t}\n}\n","/**\n * Created by rockyl on 2019-11-29.\n */\n\nexport default class ScriptManager {\n\tconstructor() {\n\t\tthis.pool = [];\n\t}\n\n\tdeal(script){\n\t\tthis.pool.push(script);\n\t}\n\n\tgenerate(){\n\t\tlet scripts = '';\n\t\tfor(let {id, code} of this.pool){\n\t\t\tscripts += `\n/*=====START ${id} START=====*/\n(function(exports){\n${code}\n})(exports);\n\tengine.registerScriptDef(exports.default.id, exports.default);\n/*=====END ${id} END=====*/`;\n\t\t}\n\n\t\treturn `\n(function(){\nvar exports = {};\n${scripts}\n})();\n`;\n\t}\n}\n","/**\n * Created by rockyl on 2019-11-29.\n */\n\nexport default class CustomManager {\n\tconstructor() {\n\t\tthis.pool = [];\n\t}\n\n\tdeal(custom) {\n\t\tthis.pool.push(custom);\n\t}\n\n\tgenerate(){\n\t\tlet scripts = '';\n\t\tfor(let {id, code} of this.pool){\n\t\t\tscripts += `\n/*=====START ${id} START=====*/\nmodule = {\n\texports: {}\n};\n(function(module){\n${code}\n})(module);\nexports['${id}'] = module.exports;\n/*=====END ${id} END=====*/`;\n\t\t}\n\n\t\treturn `\n(function(){\nvar exports = {};\nvar module;\n\n${scripts}\n\n\tfor(var key in exports){\n\t\tengine.registerCustomModule(key, exports[key]);\n\t}\n})();\n`\n\t}\n}\n","/**\n * Created by rockyl on 2019-11-13.\n *\n * 项目打包\n */\n\nimport decamelize from 'decamelize'\nimport ProcessManager from './ProcessManager'\nimport ScriptManager from './ScriptManager'\nimport CustomManager from './CustomManager'\nimport {uglify} from \"./code-process\";\n\nconst replaceFields = ['pageTitle', 'containerId'];\nconst TAG = 'zeroing-pack';\n\nexport async function pack(data, options) {\n\tlet version = Date.now() + Math.floor(Math.random() * 1000);\n\tpageTemplate(data, data.options, version);\n\tconst newData = await packData(data, options);\n\n\treturn {\n\t\tversion,\n\t\tdata: newData,\n\t}\n}\n\nexport function fillTpl(data, params) {\n\tconst {options} = data;\n\tfillTemplate(options.newTpl, options, params);\n\n\tconst newTpl = options.newTpl;\n\tdelete options.newTpl;\n\treturn newTpl;\n}\n\nasync function packData(data, {debug, packedAssets, getProcesses, getScripts, getCustoms}) {\n\tconst processManager = new ProcessManager();\n\tconst scriptManager = new ScriptManager();\n\tconst customManager = new CustomManager();\n\n\tlet newData = {};\n\tnewData.options = data.options;\n\tnewData.views = data.views;\n\tnewData.assets = packedAssets || data.assets;\n\tnewData.dataMapping = data.dataMapping;\n\tnewData.processes = data.processes;\n\n\tdelete newData.options.tpl;\n\tdeleteUnusedData(newData.processes);\n\n\tconsole.log(TAG, 'start');\n\n\t/*=====START process =====*/\n\tconsole.log(TAG, 'start process');\n\tlet processIDs = [];\n\tfindDepPidsBat(processIDs, newData.processes);\n\tlet builtinProcesses = newData.builtinProcesses = [];\n\n\tlet bProcessIDs = processIDs;\n\twhile (true) {\n\t\tlet newPids = await addBuiltinProcesses(builtinProcesses, bProcessIDs, getProcesses);\n\t\tbProcessIDs = [];\n\t\tfor (let id of newPids) {\n\t\t\tif (!processIDs.includes(id)) {\n\t\t\t\tbProcessIDs.push(id);\n\t\t\t\tprocessIDs.push(id);\n\t\t\t}\n\t\t}\n\t\tif (bProcessIDs.length === 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tfor (let process of newData.processes) {\n\t\tprocessManager.deal(process);\n\t}\n\n\tconsole.log(TAG, 'processManager.generateCurrent()');\n\n\tprocessManager.generateCurrent();\n\tawait processManager.compile(); //自定义过程先编译\n\n\tfor (let process of builtinProcesses) {\n\t\tprocessManager.deal(process);\n\t}\n\n\tlet processScriptContent = processManager.generate();\n\t//console.log(processScriptContent);\n\tif (!debug) {\n\t\tprocessScriptContent = uglify(processScriptContent);\n\t}\n\t/*=====END process =====*/\n\n\t/*=====START script =====*/\n\tconsole.log(TAG, 'start script');\n\tlet scriptIDs = [];\n\tfor (let view of newData.views) {\n\t\ttraverseNode(view, (node) => {\n\t\t\tif (node.scripts && node.scripts.length > 0) {\n\t\t\t\tfor (let {script} of node.scripts) {\n\t\t\t\t\tif (!scriptIDs.includes(script)) {\n\t\t\t\t\t\tscriptIDs.push(script);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t//console.log('scriptIDs:', scriptIDs);\n\t//let scriptsContainer = newData.scripts = {};\n\t//let scriptsCode = '';\n\tif (scriptIDs.length > 0) {\n\t\tconst scripts = await getScripts(scriptIDs);\n\t\tfor (let scriptData of scripts) {\n\t\t\tlet script = JSON.parse(scriptData);\n\t\t\t//scriptsContainer[id] = code;\n\t\t\tscriptManager.deal(script);\n\t\t}\n\t\t//console.log('scripts:', scriptsContainer);\n\t}\n\n\tlet scriptsContent = scriptManager.generate();\n\t//console.log(scriptsContent);\n\tif (!debug) {\n\t\tscriptsContent = uglify(scriptsContent);\n\t}\n\t/*=====END script =====*/\n\n\t/*=====START custom =====*/\n\tconsole.log(TAG, 'start custom');\n\t//newData.customs = [];\n\tif (data.customs && data.customs.length > 0) {\n\t\t/*newData.customs = */\n\t\t(await getCustoms(data.customs)).map(item => {\n\t\t\tcustomManager.deal(JSON.parse(item));\n\t\t\t//return JSON.parse(item);\n\t\t})\n\t}\n\tlet customScriptContent = customManager.generate();\n\t//console.log(customScriptContent);\n\tif (!debug) {\n\t\tcustomScriptContent = uglify(customScriptContent);\n\t}\n\t/*=====END custom =====*/\n\n\treturn {\n\t\tdata: JSON.stringify(newData),\n\t\tprocessScriptContent,\n\t\tscriptsContent,\n\t\tcustomScriptContent,\n\t};\n}\n\nconst unusedFields = ['design'];\n\nfunction deleteUnusedData(processes) {\n\tfor (let process of processes) {\n\t\tif (process.sub) {\n\t\t\tfor (let uuid in process.sub) {\n\t\t\t\tlet subProcess = process.sub[uuid];\n\t\t\t\tfor (let field of unusedFields) {\n\t\t\t\t\tif (subProcess.hasOwnProperty(field)) {\n\t\t\t\t\t\tdelete subProcess[field];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (process.metas && process.metas.length > 0) {\n\t\t\tdeleteUnusedData(process.metas);\n\t\t}\n\t}\n}\n\nfunction findDepPids(list, process) {\n\tif (process.sub) {\n\t\tfor (let key in process.sub) {\n\t\t\tlet p = process.sub[key];\n\t\t\tif (!list.includes(p.meta)) {\n\t\t\t\tlist.push(p.meta);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction findDepPidsBat(list, processes) {\n\tfor (let process of processes) {\n\t\tfindDepPids(list, process);\n\t}\n}\n\nasync function addBuiltinProcesses(list, ids, getProcesses) {\n\tlet newPids = [];\n\tif (ids.length > 0) {\n\t\tlet processes = await getProcesses(ids);\n\t\tfor (let processData of processes) {\n\t\t\tlet process = JSON.parse(processData);\n\t\t\tlist.push(process);\n\t\t\tfindDepPids(newPids, process);\n\t\t}\n\t}\n\treturn newPids;\n}\n\nfunction pageTemplate(tpl, options, version) {\n\tconst params = {\n\t\tversion,\n\t};\n\tfor (let field of replaceFields) {\n\t\tparams[field] = options[field];\n\t}\n\tfillTemplate(options.tpl, options, params);\n}\n\nfunction fillTemplate(tpl, options, params) {\n\tfor (let field in params) {\n\t\tconst pattern = decamelize(field).toUpperCase();\n\t\ttpl = tpl.replace(new RegExp(`\\\\$${pattern}\\\\$`, 'g'), params[field]);\n\t}\n\n\toptions.newTpl = tpl;\n}\n\nfunction traverseNode(root, callback) {\n\tcallback(root);\n\tif (root.children && root.children.length > 0) {\n\t\tfor (let childNode of root.children) {\n\t\t\ttraverseNode(childNode, callback);\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"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"}
\ No newline at end of file
{"version":3,"file":"index.es.js","sources":["../src/code-process.js","../src/index.js"],"sourcesContent":["/**\n * Created by rockyl on 2019-11-30.\n */\n\nimport babel from '@babel/core';\n\nconst UglifyJS = require('uglify-js');\n\nexport async function compile(source, debug = false) {\n\tconst {code, map} = await babel.transformAsync(source, {\n\t\tpresets: [\n\t\t\t['@babel/env', {}]\n\t\t],\n\t\tbabelrc: false,\n\t\tsourceMaps: debug,\n\t});\n\n\tconst result = {\n\t\tcode,\n\t};\n\tif (map) {\n\t\tresult.sourcemap = map.mappings;\n\t}\n\treturn result;\n}\n\nexport function uglify(source){\n\tconst uglifyResult = UglifyJS.minify(source, {\n\t});\n\tif (!uglifyResult.error) {\n\t\treturn uglifyResult.code;\n\t}\n}","/**\n * Created by rockyl on 2019-11-13.\n *\n * 项目打包\n */\n\nimport decamelize from 'decamelize'\nimport {uglify, compile} from \"./code-process\";\nimport {divideCode} from 'zeroing-code-divider';\n\nconst replaceFields = ['pageTitle', 'containerId'];\nconst TAG = 'zeroing-pack';\n\nexport async function pack(data, options) {\n\tlet version = Date.now() + Math.floor(Math.random() * 1000);\n\tpageTemplate(data, data.options, version);\n\tconst newData = await packData(data, options);\n\n\treturn {\n\t\tversion,\n\t\tdata: newData,\n\t}\n}\n\nexport function fillTpl(data, params) {\n\tconst {options} = data;\n\tfillTemplate(options.newTpl, options, params);\n\n\tconst newTpl = options.newTpl;\n\tdelete options.newTpl;\n\treturn newTpl;\n}\n\nasync function packData(data, {debug, packedAssets, getProcesses, getScripts, getCustoms}) {\n\tlet newData = {};\n\tnewData.options = data.options;\n\tnewData.views = data.views;\n\tnewData.assets = packedAssets || data.assets;\n\tnewData.dataMapping = data.dataMapping;\n\tnewData.processes = data.processes;\n\n\tdelete newData.options.tpl;\n\tdeleteUnusedData(newData.processes);\n\n\tconsole.log(TAG, 'start');\n\n\tconst {\n\t\tprocessScriptContent,\n\t\tscriptsContent,\n\t\tcustomScriptContent,\n\t} = await divideCode(newData, {\n\t\tdebug,\n\t\tuglify, compile,\n\t\tgetProcesses, getScripts, getCustoms,\n\t});\n\n\t/*/!*=====START process =====*!/\n\tconsole.log(TAG, 'start process');\n\tlet processIDs = [];\n\tfindDepPidsBat(processIDs, newData.processes);\n\tlet builtinProcesses = newData.builtinProcesses = [];\n\n\tlet bProcessIDs = processIDs;\n\twhile (true) {\n\t\tlet newPids = await addBuiltinProcesses(builtinProcesses, bProcessIDs, getProcesses);\n\t\tbProcessIDs = [];\n\t\tfor (let id of newPids) {\n\t\t\tif (!processIDs.includes(id)) {\n\t\t\t\tbProcessIDs.push(id);\n\t\t\t\tprocessIDs.push(id);\n\t\t\t}\n\t\t}\n\t\tif (bProcessIDs.length === 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tfor (let process of newData.processes) {\n\t\tprocessManager.deal(process);\n\t}\n\n\tconsole.log(TAG, 'processManager.generateCurrent()');\n\n\tprocessManager.generateCurrent();\n\tawait processManager.compile(); //自定义过程先编译\n\n\tfor (let process of builtinProcesses) {\n\t\tprocessManager.deal(process);\n\t}\n\n\tlet processScriptContent = processManager.generate();\n\t//console.log(processScriptContent);\n\tif (!debug) {\n\t\tprocessScriptContent = uglify(processScriptContent);\n\t}\n\t/!*=====END process =====*!/\n\n\t/!*=====START script =====*!/\n\tconsole.log(TAG, 'start script');\n\tlet scriptIDs = [];\n\tfor (let view of newData.views) {\n\t\ttraverseNode(view, (node) => {\n\t\t\tif (node.scripts && node.scripts.length > 0) {\n\t\t\t\tfor (let {script} of node.scripts) {\n\t\t\t\t\tif (!scriptIDs.includes(script)) {\n\t\t\t\t\t\tscriptIDs.push(script);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t//console.log('scriptIDs:', scriptIDs);\n\t//let scriptsContainer = newData.scripts = {};\n\t//let scriptsCode = '';\n\tif (scriptIDs.length > 0) {\n\t\tconst scripts = await getScripts(scriptIDs);\n\t\tfor (let scriptData of scripts) {\n\t\t\tlet script = JSON.parse(scriptData);\n\t\t\t//scriptsContainer[id] = code;\n\t\t\tscriptManager.deal(script);\n\t\t}\n\t\t//console.log('scripts:', scriptsContainer);\n\t}\n\n\tlet scriptsContent = scriptManager.generate();\n\t//console.log(scriptsContent);\n\tif (!debug) {\n\t\tscriptsContent = uglify(scriptsContent);\n\t}\n\t/!*=====END script =====*!/\n\n\t/!*=====START custom =====*!/\n\tconsole.log(TAG, 'start custom');\n\t//newData.customs = [];\n\tif (data.customs && data.customs.length > 0) {\n\t\t/!*newData.customs = *!/\n\t\t(await getCustoms(data.customs)).map(item => {\n\t\t\tcustomManager.deal(JSON.parse(item));\n\t\t\t//return JSON.parse(item);\n\t\t})\n\t}\n\tlet customScriptContent = customManager.generate();\n\t//console.log(customScriptContent);\n\tif (!debug) {\n\t\tcustomScriptContent = uglify(customScriptContent);\n\t}\n\t/!*=====END custom =====*!/*/\n\n\treturn {\n\t\tdata: JSON.stringify(newData),\n\t\tprocessScriptContent,\n\t\tscriptsContent,\n\t\tcustomScriptContent,\n\t};\n}\n\nconst unusedFields = ['design'];\n\nfunction deleteUnusedData(processes) {\n\tfor (let process of processes) {\n\t\tif (process.sub) {\n\t\t\tfor (let uuid in process.sub) {\n\t\t\t\tlet subProcess = process.sub[uuid];\n\t\t\t\tfor (let field of unusedFields) {\n\t\t\t\t\tif (subProcess.hasOwnProperty(field)) {\n\t\t\t\t\t\tdelete subProcess[field];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (process.metas && process.metas.length > 0) {\n\t\t\tdeleteUnusedData(process.metas);\n\t\t}\n\t}\n}\n\nfunction findDepPids(list, process) {\n\tif (process.sub) {\n\t\tfor (let key in process.sub) {\n\t\t\tlet p = process.sub[key];\n\t\t\tif (!list.includes(p.meta)) {\n\t\t\t\tlist.push(p.meta);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction findDepPidsBat(list, processes) {\n\tfor (let process of processes) {\n\t\tfindDepPids(list, process);\n\t}\n}\n\nasync function addBuiltinProcesses(list, ids, getProcesses) {\n\tlet newPids = [];\n\tif (ids.length > 0) {\n\t\tlet processes = await getProcesses(ids);\n\t\tfor (let processData of processes) {\n\t\t\tlet process = JSON.parse(processData);\n\t\t\tlist.push(process);\n\t\t\tfindDepPids(newPids, process);\n\t\t}\n\t}\n\treturn newPids;\n}\n\nfunction pageTemplate(tpl, options, version) {\n\tconst params = {\n\t\tversion,\n\t};\n\tfor (let field of replaceFields) {\n\t\tparams[field] = options[field];\n\t}\n\tfillTemplate(options.tpl, options, params);\n}\n\nfunction fillTemplate(tpl, options, params) {\n\tfor (let field in params) {\n\t\tconst pattern = decamelize(field).toUpperCase();\n\t\ttpl = tpl.replace(new RegExp(`\\\\$${pattern}\\\\$`, 'g'), params[field]);\n\t}\n\n\toptions.newTpl = tpl;\n}\n\nfunction traverseNode(root, callback) {\n\tcallback(root);\n\tif (root.children && root.children.length > 0) {\n\t\tfor (let childNode of root.children) {\n\t\t\ttraverseNode(childNode, callback);\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"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"}
\ No newline at end of file
......@@ -5,8 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var decamelize = _interopDefault(require('decamelize'));
var crypto = _interopDefault(require('crypto'));
var babel = _interopDefault(require('@babel/core'));
var zeroingCodeDivider = require('zeroing-code-divider');
/**
* Created by rockyl on 2019-11-30.
......@@ -40,172 +40,6 @@ function uglify(source){
}
}
/**
* Created by rockyl on 2019-11-29.
*/
function md5(source) {
const hash = crypto.createHash('md5');
return hash.update(source).digest('hex');
}
class ProcessManager {
constructor() {
this.pool = {};
this.scripts = '';
}
deal(process) {
let hash = this.put(process);
if (hash) {
process.script = 'link://' + hash;
}
if (process.metas) {
for (let subProcess of process.metas) {
this.deal(subProcess);
}
}
}
put(process) {
const {id, name, script} = process;
if (script) {
let hash = md5(script);
if (!this.pool.hasOwnProperty(hash)) {
this.pool[hash] = {
script,
ids: [],
};
}
this.pool[hash].ids.push(`${id} - ${name}`);
return hash;
}
}
generateCurrent() {
let scripts = '';
for (let hash in this.pool) {
let {script, ids} = this.pool[hash];
let idsComment = ids.map(id => {
return `/*== ${id} ==*/`
}).join('\n');
scripts += `
exports['${hash}'] = function(args, props, target, global, vm){
return new Promise(function(resolve, reject){
${idsComment}
${script}
function next(type, payload){resolve({type: type, payload: payload})}
});
};
`;
}
this.scripts += scripts;
this.pool = {};
}
async compile() {
try {
const {code, sourcemap} = await compile(this.scripts, true);
this.scripts = code;
} catch (e) {
console.log('编译失败', e);
}
}
generate() {
this.generateCurrent();
let scripts = this.scripts;
return `
(function(){
var exports = {};
${scripts}
engine.setScriptMap(exports);
})();
`
}
}
/**
* Created by rockyl on 2019-11-29.
*/
class ScriptManager {
constructor() {
this.pool = [];
}
deal(script){
this.pool.push(script);
}
generate(){
let scripts = '';
for(let {id, code} of this.pool){
scripts += `
/*=====START ${id} START=====*/
(function(exports){
${code}
})(exports);
engine.registerScriptDef(exports.default.id, exports.default);
/*=====END ${id} END=====*/`;
}
return `
(function(){
var exports = {};
${scripts}
})();
`;
}
}
/**
* Created by rockyl on 2019-11-29.
*/
class CustomManager {
constructor() {
this.pool = [];
}
deal(custom) {
this.pool.push(custom);
}
generate(){
let scripts = '';
for(let {id, code} of this.pool){
scripts += `
/*=====START ${id} START=====*/
module = {
exports: {}
};
(function(module){
${code}
})(module);
exports['${id}'] = module.exports;
/*=====END ${id} END=====*/`;
}
return `
(function(){
var exports = {};
var module;
${scripts}
for(var key in exports){
engine.registerCustomModule(key, exports[key]);
}
})();
`
}
}
/**
* Created by rockyl on 2019-11-13.
*
......@@ -236,10 +70,6 @@ function fillTpl(data, params) {
}
async function packData(data, {debug, packedAssets, getProcesses, getScripts, getCustoms}) {
const processManager = new ProcessManager();
const scriptManager = new ScriptManager();
const customManager = new CustomManager();
let newData = {};
newData.options = data.options;
newData.views = data.views;
......@@ -252,7 +82,17 @@ async function packData(data, {debug, packedAssets, getProcesses, getScripts, ge
console.log(TAG, 'start');
/*=====START process =====*/
const {
processScriptContent,
scriptsContent,
customScriptContent,
} = await zeroingCodeDivider.divideCode(newData, {
debug,
uglify, compile,
getProcesses, getScripts, getCustoms,
});
/*/!*=====START process =====*!/
console.log(TAG, 'start process');
let processIDs = [];
findDepPidsBat(processIDs, newData.processes);
......@@ -291,9 +131,9 @@ async function packData(data, {debug, packedAssets, getProcesses, getScripts, ge
if (!debug) {
processScriptContent = uglify(processScriptContent);
}
/*=====END process =====*/
/!*=====END process =====*!/
/*=====START script =====*/
/!*=====START script =====*!/
console.log(TAG, 'start script');
let scriptIDs = [];
for (let view of newData.views) {
......@@ -325,24 +165,24 @@ async function packData(data, {debug, packedAssets, getProcesses, getScripts, ge
if (!debug) {
scriptsContent = uglify(scriptsContent);
}
/*=====END script =====*/
/!*=====END script =====*!/
/*=====START custom =====*/
/!*=====START custom =====*!/
console.log(TAG, 'start custom');
//newData.customs = [];
if (data.customs && data.customs.length > 0) {
/*newData.customs = */
/!*newData.customs = *!/
(await getCustoms(data.customs)).map(item => {
customManager.deal(JSON.parse(item));
//return JSON.parse(item);
});
})
}
let customScriptContent = customManager.generate();
//console.log(customScriptContent);
if (!debug) {
customScriptContent = uglify(customScriptContent);
}
/*=====END custom =====*/
/!*=====END custom =====*!/*/
return {
data: JSON.stringify(newData),
......@@ -372,36 +212,6 @@ function deleteUnusedData(processes) {
}
}
function findDepPids(list, process) {
if (process.sub) {
for (let key in process.sub) {
let p = process.sub[key];
if (!list.includes(p.meta)) {
list.push(p.meta);
}
}
}
}
function findDepPidsBat(list, processes) {
for (let process of processes) {
findDepPids(list, process);
}
}
async function addBuiltinProcesses(list, ids, getProcesses) {
let newPids = [];
if (ids.length > 0) {
let processes = await getProcesses(ids);
for (let processData of processes) {
let process = JSON.parse(processData);
list.push(process);
findDepPids(newPids, process);
}
}
return newPids;
}
function pageTemplate(tpl, options, version) {
const params = {
version,
......@@ -421,15 +231,6 @@ function fillTemplate(tpl, options, params) {
options.newTpl = tpl;
}
function traverseNode(root, callback) {
callback(root);
if (root.children && root.children.length > 0) {
for (let childNode of root.children) {
traverseNode(childNode, callback);
}
}
}
exports.fillTpl = fillTpl;
exports.pack = pack;
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sources":["../src/code-process.js","../src/ProcessManager.js","../src/ScriptManager.js","../src/CustomManager.js","../src/index.js"],"sourcesContent":["/**\n * Created by rockyl on 2019-11-30.\n */\n\nimport babel from '@babel/core';\n\nconst UglifyJS = require('uglify-js');\n\nexport async function compile(source, debug = false) {\n\tconst {code, map} = await babel.transformAsync(source, {\n\t\tpresets: [\n\t\t\t['@babel/env', {}]\n\t\t],\n\t\tbabelrc: false,\n\t\tsourceMaps: debug,\n\t});\n\n\tconst result = {\n\t\tcode,\n\t};\n\tif (map) {\n\t\tresult.sourcemap = map.mappings;\n\t}\n\treturn result;\n}\n\nexport function uglify(source){\n\tconst uglifyResult = UglifyJS.minify(source, {\n\t});\n\tif (!uglifyResult.error) {\n\t\treturn uglifyResult.code;\n\t}\n}","/**\n * Created by rockyl on 2019-11-29.\n */\n\nimport crypto from 'crypto'\nimport {compile} from \"./code-process\";\n\nfunction md5(source) {\n\tconst hash = crypto.createHash('md5');\n\treturn hash.update(source).digest('hex');\n}\n\nexport default class ProcessManager {\n\tconstructor() {\n\t\tthis.pool = {};\n\t\tthis.scripts = '';\n\t}\n\n\tdeal(process) {\n\t\tlet hash = this.put(process);\n\t\tif (hash) {\n\t\t\tprocess.script = 'link://' + hash;\n\t\t}\n\t\tif (process.metas) {\n\t\t\tfor (let subProcess of process.metas) {\n\t\t\t\tthis.deal(subProcess);\n\t\t\t}\n\t\t}\n\t}\n\n\tput(process) {\n\t\tconst {id, name, script} = process;\n\t\tif (script) {\n\t\t\tlet hash = md5(script);\n\t\t\tif (!this.pool.hasOwnProperty(hash)) {\n\t\t\t\tthis.pool[hash] = {\n\t\t\t\t\tscript,\n\t\t\t\t\tids: [],\n\t\t\t\t};\n\t\t\t}\n\t\t\tthis.pool[hash].ids.push(`${id} - ${name}`);\n\t\t\treturn hash;\n\t\t}\n\t}\n\n\tgenerateCurrent() {\n\t\tlet scripts = '';\n\t\tfor (let hash in this.pool) {\n\t\t\tlet {script, ids} = this.pool[hash];\n\t\t\tlet idsComment = ids.map(id => {\n\t\t\t\treturn `/*== ${id} ==*/`\n\t\t\t}).join('\\n');\n\t\t\tscripts += `\n\texports['${hash}'] = function(args, props, target, global, vm){\n\t\treturn new Promise(function(resolve, reject){\n\n${idsComment}\n${script}\n\n\t\tfunction next(type, payload){resolve({type: type, payload: payload})}\n\t\t});\n\t};\n`;\n\t\t}\n\t\tthis.scripts += scripts;\n\t\tthis.pool = {};\n\t}\n\n\tasync compile() {\n\t\ttry {\n\t\t\tconst {code, sourcemap} = await compile(this.scripts, true);\n\t\t\tthis.scripts = code;\n\t\t} catch (e) {\n\t\t\tconsole.log('编译失败', e);\n\t\t}\n\t}\n\n\tgenerate() {\n\t\tthis.generateCurrent();\n\t\tlet scripts = this.scripts;\n\n\t\treturn `\n(function(){\nvar exports = {};\n${scripts}\n\n\tengine.setScriptMap(exports);\n})();\n`\n\t}\n}\n","/**\n * Created by rockyl on 2019-11-29.\n */\n\nexport default class ScriptManager {\n\tconstructor() {\n\t\tthis.pool = [];\n\t}\n\n\tdeal(script){\n\t\tthis.pool.push(script);\n\t}\n\n\tgenerate(){\n\t\tlet scripts = '';\n\t\tfor(let {id, code} of this.pool){\n\t\t\tscripts += `\n/*=====START ${id} START=====*/\n(function(exports){\n${code}\n})(exports);\n\tengine.registerScriptDef(exports.default.id, exports.default);\n/*=====END ${id} END=====*/`;\n\t\t}\n\n\t\treturn `\n(function(){\nvar exports = {};\n${scripts}\n})();\n`;\n\t}\n}\n","/**\n * Created by rockyl on 2019-11-29.\n */\n\nexport default class CustomManager {\n\tconstructor() {\n\t\tthis.pool = [];\n\t}\n\n\tdeal(custom) {\n\t\tthis.pool.push(custom);\n\t}\n\n\tgenerate(){\n\t\tlet scripts = '';\n\t\tfor(let {id, code} of this.pool){\n\t\t\tscripts += `\n/*=====START ${id} START=====*/\nmodule = {\n\texports: {}\n};\n(function(module){\n${code}\n})(module);\nexports['${id}'] = module.exports;\n/*=====END ${id} END=====*/`;\n\t\t}\n\n\t\treturn `\n(function(){\nvar exports = {};\nvar module;\n\n${scripts}\n\n\tfor(var key in exports){\n\t\tengine.registerCustomModule(key, exports[key]);\n\t}\n})();\n`\n\t}\n}\n","/**\n * Created by rockyl on 2019-11-13.\n *\n * 项目打包\n */\n\nimport decamelize from 'decamelize'\nimport ProcessManager from './ProcessManager'\nimport ScriptManager from './ScriptManager'\nimport CustomManager from './CustomManager'\nimport {uglify} from \"./code-process\";\n\nconst replaceFields = ['pageTitle', 'containerId'];\nconst TAG = 'zeroing-pack';\n\nexport async function pack(data, options) {\n\tlet version = Date.now() + Math.floor(Math.random() * 1000);\n\tpageTemplate(data, data.options, version);\n\tconst newData = await packData(data, options);\n\n\treturn {\n\t\tversion,\n\t\tdata: newData,\n\t}\n}\n\nexport function fillTpl(data, params) {\n\tconst {options} = data;\n\tfillTemplate(options.newTpl, options, params);\n\n\tconst newTpl = options.newTpl;\n\tdelete options.newTpl;\n\treturn newTpl;\n}\n\nasync function packData(data, {debug, packedAssets, getProcesses, getScripts, getCustoms}) {\n\tconst processManager = new ProcessManager();\n\tconst scriptManager = new ScriptManager();\n\tconst customManager = new CustomManager();\n\n\tlet newData = {};\n\tnewData.options = data.options;\n\tnewData.views = data.views;\n\tnewData.assets = packedAssets || data.assets;\n\tnewData.dataMapping = data.dataMapping;\n\tnewData.processes = data.processes;\n\n\tdelete newData.options.tpl;\n\tdeleteUnusedData(newData.processes);\n\n\tconsole.log(TAG, 'start');\n\n\t/*=====START process =====*/\n\tconsole.log(TAG, 'start process');\n\tlet processIDs = [];\n\tfindDepPidsBat(processIDs, newData.processes);\n\tlet builtinProcesses = newData.builtinProcesses = [];\n\n\tlet bProcessIDs = processIDs;\n\twhile (true) {\n\t\tlet newPids = await addBuiltinProcesses(builtinProcesses, bProcessIDs, getProcesses);\n\t\tbProcessIDs = [];\n\t\tfor (let id of newPids) {\n\t\t\tif (!processIDs.includes(id)) {\n\t\t\t\tbProcessIDs.push(id);\n\t\t\t\tprocessIDs.push(id);\n\t\t\t}\n\t\t}\n\t\tif (bProcessIDs.length === 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tfor (let process of newData.processes) {\n\t\tprocessManager.deal(process);\n\t}\n\n\tconsole.log(TAG, 'processManager.generateCurrent()');\n\n\tprocessManager.generateCurrent();\n\tawait processManager.compile(); //自定义过程先编译\n\n\tfor (let process of builtinProcesses) {\n\t\tprocessManager.deal(process);\n\t}\n\n\tlet processScriptContent = processManager.generate();\n\t//console.log(processScriptContent);\n\tif (!debug) {\n\t\tprocessScriptContent = uglify(processScriptContent);\n\t}\n\t/*=====END process =====*/\n\n\t/*=====START script =====*/\n\tconsole.log(TAG, 'start script');\n\tlet scriptIDs = [];\n\tfor (let view of newData.views) {\n\t\ttraverseNode(view, (node) => {\n\t\t\tif (node.scripts && node.scripts.length > 0) {\n\t\t\t\tfor (let {script} of node.scripts) {\n\t\t\t\t\tif (!scriptIDs.includes(script)) {\n\t\t\t\t\t\tscriptIDs.push(script);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t//console.log('scriptIDs:', scriptIDs);\n\t//let scriptsContainer = newData.scripts = {};\n\t//let scriptsCode = '';\n\tif (scriptIDs.length > 0) {\n\t\tconst scripts = await getScripts(scriptIDs);\n\t\tfor (let scriptData of scripts) {\n\t\t\tlet script = JSON.parse(scriptData);\n\t\t\t//scriptsContainer[id] = code;\n\t\t\tscriptManager.deal(script);\n\t\t}\n\t\t//console.log('scripts:', scriptsContainer);\n\t}\n\n\tlet scriptsContent = scriptManager.generate();\n\t//console.log(scriptsContent);\n\tif (!debug) {\n\t\tscriptsContent = uglify(scriptsContent);\n\t}\n\t/*=====END script =====*/\n\n\t/*=====START custom =====*/\n\tconsole.log(TAG, 'start custom');\n\t//newData.customs = [];\n\tif (data.customs && data.customs.length > 0) {\n\t\t/*newData.customs = */\n\t\t(await getCustoms(data.customs)).map(item => {\n\t\t\tcustomManager.deal(JSON.parse(item));\n\t\t\t//return JSON.parse(item);\n\t\t})\n\t}\n\tlet customScriptContent = customManager.generate();\n\t//console.log(customScriptContent);\n\tif (!debug) {\n\t\tcustomScriptContent = uglify(customScriptContent);\n\t}\n\t/*=====END custom =====*/\n\n\treturn {\n\t\tdata: JSON.stringify(newData),\n\t\tprocessScriptContent,\n\t\tscriptsContent,\n\t\tcustomScriptContent,\n\t};\n}\n\nconst unusedFields = ['design'];\n\nfunction deleteUnusedData(processes) {\n\tfor (let process of processes) {\n\t\tif (process.sub) {\n\t\t\tfor (let uuid in process.sub) {\n\t\t\t\tlet subProcess = process.sub[uuid];\n\t\t\t\tfor (let field of unusedFields) {\n\t\t\t\t\tif (subProcess.hasOwnProperty(field)) {\n\t\t\t\t\t\tdelete subProcess[field];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (process.metas && process.metas.length > 0) {\n\t\t\tdeleteUnusedData(process.metas);\n\t\t}\n\t}\n}\n\nfunction findDepPids(list, process) {\n\tif (process.sub) {\n\t\tfor (let key in process.sub) {\n\t\t\tlet p = process.sub[key];\n\t\t\tif (!list.includes(p.meta)) {\n\t\t\t\tlist.push(p.meta);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction findDepPidsBat(list, processes) {\n\tfor (let process of processes) {\n\t\tfindDepPids(list, process);\n\t}\n}\n\nasync function addBuiltinProcesses(list, ids, getProcesses) {\n\tlet newPids = [];\n\tif (ids.length > 0) {\n\t\tlet processes = await getProcesses(ids);\n\t\tfor (let processData of processes) {\n\t\t\tlet process = JSON.parse(processData);\n\t\t\tlist.push(process);\n\t\t\tfindDepPids(newPids, process);\n\t\t}\n\t}\n\treturn newPids;\n}\n\nfunction pageTemplate(tpl, options, version) {\n\tconst params = {\n\t\tversion,\n\t};\n\tfor (let field of replaceFields) {\n\t\tparams[field] = options[field];\n\t}\n\tfillTemplate(options.tpl, options, params);\n}\n\nfunction fillTemplate(tpl, options, params) {\n\tfor (let field in params) {\n\t\tconst pattern = decamelize(field).toUpperCase();\n\t\ttpl = tpl.replace(new RegExp(`\\\\$${pattern}\\\\$`, 'g'), params[field]);\n\t}\n\n\toptions.newTpl = tpl;\n}\n\nfunction traverseNode(root, callback) {\n\tcallback(root);\n\tif (root.children && root.children.length > 0) {\n\t\tfor (let childNode of root.children) {\n\t\t\ttraverseNode(childNode, callback);\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"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"}
\ No newline at end of file
{"version":3,"file":"index.js","sources":["../src/code-process.js","../src/index.js"],"sourcesContent":["/**\n * Created by rockyl on 2019-11-30.\n */\n\nimport babel from '@babel/core';\n\nconst UglifyJS = require('uglify-js');\n\nexport async function compile(source, debug = false) {\n\tconst {code, map} = await babel.transformAsync(source, {\n\t\tpresets: [\n\t\t\t['@babel/env', {}]\n\t\t],\n\t\tbabelrc: false,\n\t\tsourceMaps: debug,\n\t});\n\n\tconst result = {\n\t\tcode,\n\t};\n\tif (map) {\n\t\tresult.sourcemap = map.mappings;\n\t}\n\treturn result;\n}\n\nexport function uglify(source){\n\tconst uglifyResult = UglifyJS.minify(source, {\n\t});\n\tif (!uglifyResult.error) {\n\t\treturn uglifyResult.code;\n\t}\n}","/**\n * Created by rockyl on 2019-11-13.\n *\n * 项目打包\n */\n\nimport decamelize from 'decamelize'\nimport {uglify, compile} from \"./code-process\";\nimport {divideCode} from 'zeroing-code-divider';\n\nconst replaceFields = ['pageTitle', 'containerId'];\nconst TAG = 'zeroing-pack';\n\nexport async function pack(data, options) {\n\tlet version = Date.now() + Math.floor(Math.random() * 1000);\n\tpageTemplate(data, data.options, version);\n\tconst newData = await packData(data, options);\n\n\treturn {\n\t\tversion,\n\t\tdata: newData,\n\t}\n}\n\nexport function fillTpl(data, params) {\n\tconst {options} = data;\n\tfillTemplate(options.newTpl, options, params);\n\n\tconst newTpl = options.newTpl;\n\tdelete options.newTpl;\n\treturn newTpl;\n}\n\nasync function packData(data, {debug, packedAssets, getProcesses, getScripts, getCustoms}) {\n\tlet newData = {};\n\tnewData.options = data.options;\n\tnewData.views = data.views;\n\tnewData.assets = packedAssets || data.assets;\n\tnewData.dataMapping = data.dataMapping;\n\tnewData.processes = data.processes;\n\n\tdelete newData.options.tpl;\n\tdeleteUnusedData(newData.processes);\n\n\tconsole.log(TAG, 'start');\n\n\tconst {\n\t\tprocessScriptContent,\n\t\tscriptsContent,\n\t\tcustomScriptContent,\n\t} = await divideCode(newData, {\n\t\tdebug,\n\t\tuglify, compile,\n\t\tgetProcesses, getScripts, getCustoms,\n\t});\n\n\t/*/!*=====START process =====*!/\n\tconsole.log(TAG, 'start process');\n\tlet processIDs = [];\n\tfindDepPidsBat(processIDs, newData.processes);\n\tlet builtinProcesses = newData.builtinProcesses = [];\n\n\tlet bProcessIDs = processIDs;\n\twhile (true) {\n\t\tlet newPids = await addBuiltinProcesses(builtinProcesses, bProcessIDs, getProcesses);\n\t\tbProcessIDs = [];\n\t\tfor (let id of newPids) {\n\t\t\tif (!processIDs.includes(id)) {\n\t\t\t\tbProcessIDs.push(id);\n\t\t\t\tprocessIDs.push(id);\n\t\t\t}\n\t\t}\n\t\tif (bProcessIDs.length === 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tfor (let process of newData.processes) {\n\t\tprocessManager.deal(process);\n\t}\n\n\tconsole.log(TAG, 'processManager.generateCurrent()');\n\n\tprocessManager.generateCurrent();\n\tawait processManager.compile(); //自定义过程先编译\n\n\tfor (let process of builtinProcesses) {\n\t\tprocessManager.deal(process);\n\t}\n\n\tlet processScriptContent = processManager.generate();\n\t//console.log(processScriptContent);\n\tif (!debug) {\n\t\tprocessScriptContent = uglify(processScriptContent);\n\t}\n\t/!*=====END process =====*!/\n\n\t/!*=====START script =====*!/\n\tconsole.log(TAG, 'start script');\n\tlet scriptIDs = [];\n\tfor (let view of newData.views) {\n\t\ttraverseNode(view, (node) => {\n\t\t\tif (node.scripts && node.scripts.length > 0) {\n\t\t\t\tfor (let {script} of node.scripts) {\n\t\t\t\t\tif (!scriptIDs.includes(script)) {\n\t\t\t\t\t\tscriptIDs.push(script);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t//console.log('scriptIDs:', scriptIDs);\n\t//let scriptsContainer = newData.scripts = {};\n\t//let scriptsCode = '';\n\tif (scriptIDs.length > 0) {\n\t\tconst scripts = await getScripts(scriptIDs);\n\t\tfor (let scriptData of scripts) {\n\t\t\tlet script = JSON.parse(scriptData);\n\t\t\t//scriptsContainer[id] = code;\n\t\t\tscriptManager.deal(script);\n\t\t}\n\t\t//console.log('scripts:', scriptsContainer);\n\t}\n\n\tlet scriptsContent = scriptManager.generate();\n\t//console.log(scriptsContent);\n\tif (!debug) {\n\t\tscriptsContent = uglify(scriptsContent);\n\t}\n\t/!*=====END script =====*!/\n\n\t/!*=====START custom =====*!/\n\tconsole.log(TAG, 'start custom');\n\t//newData.customs = [];\n\tif (data.customs && data.customs.length > 0) {\n\t\t/!*newData.customs = *!/\n\t\t(await getCustoms(data.customs)).map(item => {\n\t\t\tcustomManager.deal(JSON.parse(item));\n\t\t\t//return JSON.parse(item);\n\t\t})\n\t}\n\tlet customScriptContent = customManager.generate();\n\t//console.log(customScriptContent);\n\tif (!debug) {\n\t\tcustomScriptContent = uglify(customScriptContent);\n\t}\n\t/!*=====END custom =====*!/*/\n\n\treturn {\n\t\tdata: JSON.stringify(newData),\n\t\tprocessScriptContent,\n\t\tscriptsContent,\n\t\tcustomScriptContent,\n\t};\n}\n\nconst unusedFields = ['design'];\n\nfunction deleteUnusedData(processes) {\n\tfor (let process of processes) {\n\t\tif (process.sub) {\n\t\t\tfor (let uuid in process.sub) {\n\t\t\t\tlet subProcess = process.sub[uuid];\n\t\t\t\tfor (let field of unusedFields) {\n\t\t\t\t\tif (subProcess.hasOwnProperty(field)) {\n\t\t\t\t\t\tdelete subProcess[field];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (process.metas && process.metas.length > 0) {\n\t\t\tdeleteUnusedData(process.metas);\n\t\t}\n\t}\n}\n\nfunction findDepPids(list, process) {\n\tif (process.sub) {\n\t\tfor (let key in process.sub) {\n\t\t\tlet p = process.sub[key];\n\t\t\tif (!list.includes(p.meta)) {\n\t\t\t\tlist.push(p.meta);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction findDepPidsBat(list, processes) {\n\tfor (let process of processes) {\n\t\tfindDepPids(list, process);\n\t}\n}\n\nasync function addBuiltinProcesses(list, ids, getProcesses) {\n\tlet newPids = [];\n\tif (ids.length > 0) {\n\t\tlet processes = await getProcesses(ids);\n\t\tfor (let processData of processes) {\n\t\t\tlet process = JSON.parse(processData);\n\t\t\tlist.push(process);\n\t\t\tfindDepPids(newPids, process);\n\t\t}\n\t}\n\treturn newPids;\n}\n\nfunction pageTemplate(tpl, options, version) {\n\tconst params = {\n\t\tversion,\n\t};\n\tfor (let field of replaceFields) {\n\t\tparams[field] = options[field];\n\t}\n\tfillTemplate(options.tpl, options, params);\n}\n\nfunction fillTemplate(tpl, options, params) {\n\tfor (let field in params) {\n\t\tconst pattern = decamelize(field).toUpperCase();\n\t\ttpl = tpl.replace(new RegExp(`\\\\$${pattern}\\\\$`, 'g'), params[field]);\n\t}\n\n\toptions.newTpl = tpl;\n}\n\nfunction traverseNode(root, callback) {\n\tcallback(root);\n\tif (root.children && root.children.length > 0) {\n\t\tfor (let childNode of root.children) {\n\t\t\ttraverseNode(childNode, callback);\n\t\t}\n\t}\n}\n"],"names":["divideCode"],"mappings":"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"}
\ No newline at end of file
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('decamelize'), require('crypto'), require('@babel/core')) :
typeof define === 'function' && define.amd ? define(['exports', 'decamelize', 'crypto', '@babel/core'], factory) :
(global = global || self, factory(global['zeroing-pack'] = {}, global.decamelize, global.crypto, global.babel));
}(this, function (exports, decamelize, crypto, babel) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('decamelize'), require('@babel/core'), require('zeroing-code-divider')) :
typeof define === 'function' && define.amd ? define(['exports', 'decamelize', '@babel/core', 'zeroing-code-divider'], factory) :
(global = global || self, factory(global['zeroing-pack'] = {}, global.decamelize, global.babel, global.zeroingCodeDivider));
}(this, function (exports, decamelize, babel, zeroingCodeDivider) { 'use strict';
decamelize = decamelize && decamelize.hasOwnProperty('default') ? decamelize['default'] : decamelize;
crypto = crypto && crypto.hasOwnProperty('default') ? crypto['default'] : crypto;
babel = babel && babel.hasOwnProperty('default') ? babel['default'] : babel;
/**
......@@ -40,172 +39,6 @@
}
}
/**
* Created by rockyl on 2019-11-29.
*/
function md5(source) {
const hash = crypto.createHash('md5');
return hash.update(source).digest('hex');
}
class ProcessManager {
constructor() {
this.pool = {};
this.scripts = '';
}
deal(process) {
let hash = this.put(process);
if (hash) {
process.script = 'link://' + hash;
}
if (process.metas) {
for (let subProcess of process.metas) {
this.deal(subProcess);
}
}
}
put(process) {
const {id, name, script} = process;
if (script) {
let hash = md5(script);
if (!this.pool.hasOwnProperty(hash)) {
this.pool[hash] = {
script,
ids: [],
};
}
this.pool[hash].ids.push(`${id} - ${name}`);
return hash;
}
}
generateCurrent() {
let scripts = '';
for (let hash in this.pool) {
let {script, ids} = this.pool[hash];
let idsComment = ids.map(id => {
return `/*== ${id} ==*/`
}).join('\n');
scripts += `
exports['${hash}'] = function(args, props, target, global, vm){
return new Promise(function(resolve, reject){
${idsComment}
${script}
function next(type, payload){resolve({type: type, payload: payload})}
});
};
`;
}
this.scripts += scripts;
this.pool = {};
}
async compile() {
try {
const {code, sourcemap} = await compile(this.scripts, true);
this.scripts = code;
} catch (e) {
console.log('编译失败', e);
}
}
generate() {
this.generateCurrent();
let scripts = this.scripts;
return `
(function(){
var exports = {};
${scripts}
engine.setScriptMap(exports);
})();
`
}
}
/**
* Created by rockyl on 2019-11-29.
*/
class ScriptManager {
constructor() {
this.pool = [];
}
deal(script){
this.pool.push(script);
}
generate(){
let scripts = '';
for(let {id, code} of this.pool){
scripts += `
/*=====START ${id} START=====*/
(function(exports){
${code}
})(exports);
engine.registerScriptDef(exports.default.id, exports.default);
/*=====END ${id} END=====*/`;
}
return `
(function(){
var exports = {};
${scripts}
})();
`;
}
}
/**
* Created by rockyl on 2019-11-29.
*/
class CustomManager {
constructor() {
this.pool = [];
}
deal(custom) {
this.pool.push(custom);
}
generate(){
let scripts = '';
for(let {id, code} of this.pool){
scripts += `
/*=====START ${id} START=====*/
module = {
exports: {}
};
(function(module){
${code}
})(module);
exports['${id}'] = module.exports;
/*=====END ${id} END=====*/`;
}
return `
(function(){
var exports = {};
var module;
${scripts}
for(var key in exports){
engine.registerCustomModule(key, exports[key]);
}
})();
`
}
}
/**
* Created by rockyl on 2019-11-13.
*
......@@ -236,10 +69,6 @@ ${scripts}
}
async function packData(data, {debug, packedAssets, getProcesses, getScripts, getCustoms}) {
const processManager = new ProcessManager();
const scriptManager = new ScriptManager();
const customManager = new CustomManager();
let newData = {};
newData.options = data.options;
newData.views = data.views;
......@@ -252,7 +81,17 @@ ${scripts}
console.log(TAG, 'start');
/*=====START process =====*/
const {
processScriptContent,
scriptsContent,
customScriptContent,
} = await zeroingCodeDivider.divideCode(newData, {
debug,
uglify, compile,
getProcesses, getScripts, getCustoms,
});
/*/!*=====START process =====*!/
console.log(TAG, 'start process');
let processIDs = [];
findDepPidsBat(processIDs, newData.processes);
......@@ -291,9 +130,9 @@ ${scripts}
if (!debug) {
processScriptContent = uglify(processScriptContent);
}
/*=====END process =====*/
/!*=====END process =====*!/
/*=====START script =====*/
/!*=====START script =====*!/
console.log(TAG, 'start script');
let scriptIDs = [];
for (let view of newData.views) {
......@@ -325,24 +164,24 @@ ${scripts}
if (!debug) {
scriptsContent = uglify(scriptsContent);
}
/*=====END script =====*/
/!*=====END script =====*!/
/*=====START custom =====*/
/!*=====START custom =====*!/
console.log(TAG, 'start custom');
//newData.customs = [];
if (data.customs && data.customs.length > 0) {
/*newData.customs = */
/!*newData.customs = *!/
(await getCustoms(data.customs)).map(item => {
customManager.deal(JSON.parse(item));
//return JSON.parse(item);
});
})
}
let customScriptContent = customManager.generate();
//console.log(customScriptContent);
if (!debug) {
customScriptContent = uglify(customScriptContent);
}
/*=====END custom =====*/
/!*=====END custom =====*!/*/
return {
data: JSON.stringify(newData),
......@@ -372,36 +211,6 @@ ${scripts}
}
}
function findDepPids(list, process) {
if (process.sub) {
for (let key in process.sub) {
let p = process.sub[key];
if (!list.includes(p.meta)) {
list.push(p.meta);
}
}
}
}
function findDepPidsBat(list, processes) {
for (let process of processes) {
findDepPids(list, process);
}
}
async function addBuiltinProcesses(list, ids, getProcesses) {
let newPids = [];
if (ids.length > 0) {
let processes = await getProcesses(ids);
for (let processData of processes) {
let process = JSON.parse(processData);
list.push(process);
findDepPids(newPids, process);
}
}
return newPids;
}
function pageTemplate(tpl, options, version) {
const params = {
version,
......@@ -421,15 +230,6 @@ ${scripts}
options.newTpl = tpl;
}
function traverseNode(root, callback) {
callback(root);
if (root.children && root.children.length > 0) {
for (let childNode of root.children) {
traverseNode(childNode, callback);
}
}
}
exports.fillTpl = fillTpl;
exports.pack = pack;
......
{"version":3,"file":"index.umd.js","sources":["../src/code-process.js","../src/ProcessManager.js","../src/ScriptManager.js","../src/CustomManager.js","../src/index.js"],"sourcesContent":["/**\n * Created by rockyl on 2019-11-30.\n */\n\nimport babel from '@babel/core';\n\nconst UglifyJS = require('uglify-js');\n\nexport async function compile(source, debug = false) {\n\tconst {code, map} = await babel.transformAsync(source, {\n\t\tpresets: [\n\t\t\t['@babel/env', {}]\n\t\t],\n\t\tbabelrc: false,\n\t\tsourceMaps: debug,\n\t});\n\n\tconst result = {\n\t\tcode,\n\t};\n\tif (map) {\n\t\tresult.sourcemap = map.mappings;\n\t}\n\treturn result;\n}\n\nexport function uglify(source){\n\tconst uglifyResult = UglifyJS.minify(source, {\n\t});\n\tif (!uglifyResult.error) {\n\t\treturn uglifyResult.code;\n\t}\n}","/**\n * Created by rockyl on 2019-11-29.\n */\n\nimport crypto from 'crypto'\nimport {compile} from \"./code-process\";\n\nfunction md5(source) {\n\tconst hash = crypto.createHash('md5');\n\treturn hash.update(source).digest('hex');\n}\n\nexport default class ProcessManager {\n\tconstructor() {\n\t\tthis.pool = {};\n\t\tthis.scripts = '';\n\t}\n\n\tdeal(process) {\n\t\tlet hash = this.put(process);\n\t\tif (hash) {\n\t\t\tprocess.script = 'link://' + hash;\n\t\t}\n\t\tif (process.metas) {\n\t\t\tfor (let subProcess of process.metas) {\n\t\t\t\tthis.deal(subProcess);\n\t\t\t}\n\t\t}\n\t}\n\n\tput(process) {\n\t\tconst {id, name, script} = process;\n\t\tif (script) {\n\t\t\tlet hash = md5(script);\n\t\t\tif (!this.pool.hasOwnProperty(hash)) {\n\t\t\t\tthis.pool[hash] = {\n\t\t\t\t\tscript,\n\t\t\t\t\tids: [],\n\t\t\t\t};\n\t\t\t}\n\t\t\tthis.pool[hash].ids.push(`${id} - ${name}`);\n\t\t\treturn hash;\n\t\t}\n\t}\n\n\tgenerateCurrent() {\n\t\tlet scripts = '';\n\t\tfor (let hash in this.pool) {\n\t\t\tlet {script, ids} = this.pool[hash];\n\t\t\tlet idsComment = ids.map(id => {\n\t\t\t\treturn `/*== ${id} ==*/`\n\t\t\t}).join('\\n');\n\t\t\tscripts += `\n\texports['${hash}'] = function(args, props, target, global, vm){\n\t\treturn new Promise(function(resolve, reject){\n\n${idsComment}\n${script}\n\n\t\tfunction next(type, payload){resolve({type: type, payload: payload})}\n\t\t});\n\t};\n`;\n\t\t}\n\t\tthis.scripts += scripts;\n\t\tthis.pool = {};\n\t}\n\n\tasync compile() {\n\t\ttry {\n\t\t\tconst {code, sourcemap} = await compile(this.scripts, true);\n\t\t\tthis.scripts = code;\n\t\t} catch (e) {\n\t\t\tconsole.log('编译失败', e);\n\t\t}\n\t}\n\n\tgenerate() {\n\t\tthis.generateCurrent();\n\t\tlet scripts = this.scripts;\n\n\t\treturn `\n(function(){\nvar exports = {};\n${scripts}\n\n\tengine.setScriptMap(exports);\n})();\n`\n\t}\n}\n","/**\n * Created by rockyl on 2019-11-29.\n */\n\nexport default class ScriptManager {\n\tconstructor() {\n\t\tthis.pool = [];\n\t}\n\n\tdeal(script){\n\t\tthis.pool.push(script);\n\t}\n\n\tgenerate(){\n\t\tlet scripts = '';\n\t\tfor(let {id, code} of this.pool){\n\t\t\tscripts += `\n/*=====START ${id} START=====*/\n(function(exports){\n${code}\n})(exports);\n\tengine.registerScriptDef(exports.default.id, exports.default);\n/*=====END ${id} END=====*/`;\n\t\t}\n\n\t\treturn `\n(function(){\nvar exports = {};\n${scripts}\n})();\n`;\n\t}\n}\n","/**\n * Created by rockyl on 2019-11-29.\n */\n\nexport default class CustomManager {\n\tconstructor() {\n\t\tthis.pool = [];\n\t}\n\n\tdeal(custom) {\n\t\tthis.pool.push(custom);\n\t}\n\n\tgenerate(){\n\t\tlet scripts = '';\n\t\tfor(let {id, code} of this.pool){\n\t\t\tscripts += `\n/*=====START ${id} START=====*/\nmodule = {\n\texports: {}\n};\n(function(module){\n${code}\n})(module);\nexports['${id}'] = module.exports;\n/*=====END ${id} END=====*/`;\n\t\t}\n\n\t\treturn `\n(function(){\nvar exports = {};\nvar module;\n\n${scripts}\n\n\tfor(var key in exports){\n\t\tengine.registerCustomModule(key, exports[key]);\n\t}\n})();\n`\n\t}\n}\n","/**\n * Created by rockyl on 2019-11-13.\n *\n * 项目打包\n */\n\nimport decamelize from 'decamelize'\nimport ProcessManager from './ProcessManager'\nimport ScriptManager from './ScriptManager'\nimport CustomManager from './CustomManager'\nimport {uglify} from \"./code-process\";\n\nconst replaceFields = ['pageTitle', 'containerId'];\nconst TAG = 'zeroing-pack';\n\nexport async function pack(data, options) {\n\tlet version = Date.now() + Math.floor(Math.random() * 1000);\n\tpageTemplate(data, data.options, version);\n\tconst newData = await packData(data, options);\n\n\treturn {\n\t\tversion,\n\t\tdata: newData,\n\t}\n}\n\nexport function fillTpl(data, params) {\n\tconst {options} = data;\n\tfillTemplate(options.newTpl, options, params);\n\n\tconst newTpl = options.newTpl;\n\tdelete options.newTpl;\n\treturn newTpl;\n}\n\nasync function packData(data, {debug, packedAssets, getProcesses, getScripts, getCustoms}) {\n\tconst processManager = new ProcessManager();\n\tconst scriptManager = new ScriptManager();\n\tconst customManager = new CustomManager();\n\n\tlet newData = {};\n\tnewData.options = data.options;\n\tnewData.views = data.views;\n\tnewData.assets = packedAssets || data.assets;\n\tnewData.dataMapping = data.dataMapping;\n\tnewData.processes = data.processes;\n\n\tdelete newData.options.tpl;\n\tdeleteUnusedData(newData.processes);\n\n\tconsole.log(TAG, 'start');\n\n\t/*=====START process =====*/\n\tconsole.log(TAG, 'start process');\n\tlet processIDs = [];\n\tfindDepPidsBat(processIDs, newData.processes);\n\tlet builtinProcesses = newData.builtinProcesses = [];\n\n\tlet bProcessIDs = processIDs;\n\twhile (true) {\n\t\tlet newPids = await addBuiltinProcesses(builtinProcesses, bProcessIDs, getProcesses);\n\t\tbProcessIDs = [];\n\t\tfor (let id of newPids) {\n\t\t\tif (!processIDs.includes(id)) {\n\t\t\t\tbProcessIDs.push(id);\n\t\t\t\tprocessIDs.push(id);\n\t\t\t}\n\t\t}\n\t\tif (bProcessIDs.length === 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tfor (let process of newData.processes) {\n\t\tprocessManager.deal(process);\n\t}\n\n\tconsole.log(TAG, 'processManager.generateCurrent()');\n\n\tprocessManager.generateCurrent();\n\tawait processManager.compile(); //自定义过程先编译\n\n\tfor (let process of builtinProcesses) {\n\t\tprocessManager.deal(process);\n\t}\n\n\tlet processScriptContent = processManager.generate();\n\t//console.log(processScriptContent);\n\tif (!debug) {\n\t\tprocessScriptContent = uglify(processScriptContent);\n\t}\n\t/*=====END process =====*/\n\n\t/*=====START script =====*/\n\tconsole.log(TAG, 'start script');\n\tlet scriptIDs = [];\n\tfor (let view of newData.views) {\n\t\ttraverseNode(view, (node) => {\n\t\t\tif (node.scripts && node.scripts.length > 0) {\n\t\t\t\tfor (let {script} of node.scripts) {\n\t\t\t\t\tif (!scriptIDs.includes(script)) {\n\t\t\t\t\t\tscriptIDs.push(script);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t//console.log('scriptIDs:', scriptIDs);\n\t//let scriptsContainer = newData.scripts = {};\n\t//let scriptsCode = '';\n\tif (scriptIDs.length > 0) {\n\t\tconst scripts = await getScripts(scriptIDs);\n\t\tfor (let scriptData of scripts) {\n\t\t\tlet script = JSON.parse(scriptData);\n\t\t\t//scriptsContainer[id] = code;\n\t\t\tscriptManager.deal(script);\n\t\t}\n\t\t//console.log('scripts:', scriptsContainer);\n\t}\n\n\tlet scriptsContent = scriptManager.generate();\n\t//console.log(scriptsContent);\n\tif (!debug) {\n\t\tscriptsContent = uglify(scriptsContent);\n\t}\n\t/*=====END script =====*/\n\n\t/*=====START custom =====*/\n\tconsole.log(TAG, 'start custom');\n\t//newData.customs = [];\n\tif (data.customs && data.customs.length > 0) {\n\t\t/*newData.customs = */\n\t\t(await getCustoms(data.customs)).map(item => {\n\t\t\tcustomManager.deal(JSON.parse(item));\n\t\t\t//return JSON.parse(item);\n\t\t})\n\t}\n\tlet customScriptContent = customManager.generate();\n\t//console.log(customScriptContent);\n\tif (!debug) {\n\t\tcustomScriptContent = uglify(customScriptContent);\n\t}\n\t/*=====END custom =====*/\n\n\treturn {\n\t\tdata: JSON.stringify(newData),\n\t\tprocessScriptContent,\n\t\tscriptsContent,\n\t\tcustomScriptContent,\n\t};\n}\n\nconst unusedFields = ['design'];\n\nfunction deleteUnusedData(processes) {\n\tfor (let process of processes) {\n\t\tif (process.sub) {\n\t\t\tfor (let uuid in process.sub) {\n\t\t\t\tlet subProcess = process.sub[uuid];\n\t\t\t\tfor (let field of unusedFields) {\n\t\t\t\t\tif (subProcess.hasOwnProperty(field)) {\n\t\t\t\t\t\tdelete subProcess[field];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (process.metas && process.metas.length > 0) {\n\t\t\tdeleteUnusedData(process.metas);\n\t\t}\n\t}\n}\n\nfunction findDepPids(list, process) {\n\tif (process.sub) {\n\t\tfor (let key in process.sub) {\n\t\t\tlet p = process.sub[key];\n\t\t\tif (!list.includes(p.meta)) {\n\t\t\t\tlist.push(p.meta);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction findDepPidsBat(list, processes) {\n\tfor (let process of processes) {\n\t\tfindDepPids(list, process);\n\t}\n}\n\nasync function addBuiltinProcesses(list, ids, getProcesses) {\n\tlet newPids = [];\n\tif (ids.length > 0) {\n\t\tlet processes = await getProcesses(ids);\n\t\tfor (let processData of processes) {\n\t\t\tlet process = JSON.parse(processData);\n\t\t\tlist.push(process);\n\t\t\tfindDepPids(newPids, process);\n\t\t}\n\t}\n\treturn newPids;\n}\n\nfunction pageTemplate(tpl, options, version) {\n\tconst params = {\n\t\tversion,\n\t};\n\tfor (let field of replaceFields) {\n\t\tparams[field] = options[field];\n\t}\n\tfillTemplate(options.tpl, options, params);\n}\n\nfunction fillTemplate(tpl, options, params) {\n\tfor (let field in params) {\n\t\tconst pattern = decamelize(field).toUpperCase();\n\t\ttpl = tpl.replace(new RegExp(`\\\\$${pattern}\\\\$`, 'g'), params[field]);\n\t}\n\n\toptions.newTpl = tpl;\n}\n\nfunction traverseNode(root, callback) {\n\tcallback(root);\n\tif (root.children && root.children.length > 0) {\n\t\tfor (let childNode of root.children) {\n\t\t\ttraverseNode(childNode, callback);\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"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"}
\ No newline at end of file
{"version":3,"file":"index.umd.js","sources":["../src/code-process.js","../src/index.js"],"sourcesContent":["/**\n * Created by rockyl on 2019-11-30.\n */\n\nimport babel from '@babel/core';\n\nconst UglifyJS = require('uglify-js');\n\nexport async function compile(source, debug = false) {\n\tconst {code, map} = await babel.transformAsync(source, {\n\t\tpresets: [\n\t\t\t['@babel/env', {}]\n\t\t],\n\t\tbabelrc: false,\n\t\tsourceMaps: debug,\n\t});\n\n\tconst result = {\n\t\tcode,\n\t};\n\tif (map) {\n\t\tresult.sourcemap = map.mappings;\n\t}\n\treturn result;\n}\n\nexport function uglify(source){\n\tconst uglifyResult = UglifyJS.minify(source, {\n\t});\n\tif (!uglifyResult.error) {\n\t\treturn uglifyResult.code;\n\t}\n}","/**\n * Created by rockyl on 2019-11-13.\n *\n * 项目打包\n */\n\nimport decamelize from 'decamelize'\nimport {uglify, compile} from \"./code-process\";\nimport {divideCode} from 'zeroing-code-divider';\n\nconst replaceFields = ['pageTitle', 'containerId'];\nconst TAG = 'zeroing-pack';\n\nexport async function pack(data, options) {\n\tlet version = Date.now() + Math.floor(Math.random() * 1000);\n\tpageTemplate(data, data.options, version);\n\tconst newData = await packData(data, options);\n\n\treturn {\n\t\tversion,\n\t\tdata: newData,\n\t}\n}\n\nexport function fillTpl(data, params) {\n\tconst {options} = data;\n\tfillTemplate(options.newTpl, options, params);\n\n\tconst newTpl = options.newTpl;\n\tdelete options.newTpl;\n\treturn newTpl;\n}\n\nasync function packData(data, {debug, packedAssets, getProcesses, getScripts, getCustoms}) {\n\tlet newData = {};\n\tnewData.options = data.options;\n\tnewData.views = data.views;\n\tnewData.assets = packedAssets || data.assets;\n\tnewData.dataMapping = data.dataMapping;\n\tnewData.processes = data.processes;\n\n\tdelete newData.options.tpl;\n\tdeleteUnusedData(newData.processes);\n\n\tconsole.log(TAG, 'start');\n\n\tconst {\n\t\tprocessScriptContent,\n\t\tscriptsContent,\n\t\tcustomScriptContent,\n\t} = await divideCode(newData, {\n\t\tdebug,\n\t\tuglify, compile,\n\t\tgetProcesses, getScripts, getCustoms,\n\t});\n\n\t/*/!*=====START process =====*!/\n\tconsole.log(TAG, 'start process');\n\tlet processIDs = [];\n\tfindDepPidsBat(processIDs, newData.processes);\n\tlet builtinProcesses = newData.builtinProcesses = [];\n\n\tlet bProcessIDs = processIDs;\n\twhile (true) {\n\t\tlet newPids = await addBuiltinProcesses(builtinProcesses, bProcessIDs, getProcesses);\n\t\tbProcessIDs = [];\n\t\tfor (let id of newPids) {\n\t\t\tif (!processIDs.includes(id)) {\n\t\t\t\tbProcessIDs.push(id);\n\t\t\t\tprocessIDs.push(id);\n\t\t\t}\n\t\t}\n\t\tif (bProcessIDs.length === 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tfor (let process of newData.processes) {\n\t\tprocessManager.deal(process);\n\t}\n\n\tconsole.log(TAG, 'processManager.generateCurrent()');\n\n\tprocessManager.generateCurrent();\n\tawait processManager.compile(); //自定义过程先编译\n\n\tfor (let process of builtinProcesses) {\n\t\tprocessManager.deal(process);\n\t}\n\n\tlet processScriptContent = processManager.generate();\n\t//console.log(processScriptContent);\n\tif (!debug) {\n\t\tprocessScriptContent = uglify(processScriptContent);\n\t}\n\t/!*=====END process =====*!/\n\n\t/!*=====START script =====*!/\n\tconsole.log(TAG, 'start script');\n\tlet scriptIDs = [];\n\tfor (let view of newData.views) {\n\t\ttraverseNode(view, (node) => {\n\t\t\tif (node.scripts && node.scripts.length > 0) {\n\t\t\t\tfor (let {script} of node.scripts) {\n\t\t\t\t\tif (!scriptIDs.includes(script)) {\n\t\t\t\t\t\tscriptIDs.push(script);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t//console.log('scriptIDs:', scriptIDs);\n\t//let scriptsContainer = newData.scripts = {};\n\t//let scriptsCode = '';\n\tif (scriptIDs.length > 0) {\n\t\tconst scripts = await getScripts(scriptIDs);\n\t\tfor (let scriptData of scripts) {\n\t\t\tlet script = JSON.parse(scriptData);\n\t\t\t//scriptsContainer[id] = code;\n\t\t\tscriptManager.deal(script);\n\t\t}\n\t\t//console.log('scripts:', scriptsContainer);\n\t}\n\n\tlet scriptsContent = scriptManager.generate();\n\t//console.log(scriptsContent);\n\tif (!debug) {\n\t\tscriptsContent = uglify(scriptsContent);\n\t}\n\t/!*=====END script =====*!/\n\n\t/!*=====START custom =====*!/\n\tconsole.log(TAG, 'start custom');\n\t//newData.customs = [];\n\tif (data.customs && data.customs.length > 0) {\n\t\t/!*newData.customs = *!/\n\t\t(await getCustoms(data.customs)).map(item => {\n\t\t\tcustomManager.deal(JSON.parse(item));\n\t\t\t//return JSON.parse(item);\n\t\t})\n\t}\n\tlet customScriptContent = customManager.generate();\n\t//console.log(customScriptContent);\n\tif (!debug) {\n\t\tcustomScriptContent = uglify(customScriptContent);\n\t}\n\t/!*=====END custom =====*!/*/\n\n\treturn {\n\t\tdata: JSON.stringify(newData),\n\t\tprocessScriptContent,\n\t\tscriptsContent,\n\t\tcustomScriptContent,\n\t};\n}\n\nconst unusedFields = ['design'];\n\nfunction deleteUnusedData(processes) {\n\tfor (let process of processes) {\n\t\tif (process.sub) {\n\t\t\tfor (let uuid in process.sub) {\n\t\t\t\tlet subProcess = process.sub[uuid];\n\t\t\t\tfor (let field of unusedFields) {\n\t\t\t\t\tif (subProcess.hasOwnProperty(field)) {\n\t\t\t\t\t\tdelete subProcess[field];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (process.metas && process.metas.length > 0) {\n\t\t\tdeleteUnusedData(process.metas);\n\t\t}\n\t}\n}\n\nfunction findDepPids(list, process) {\n\tif (process.sub) {\n\t\tfor (let key in process.sub) {\n\t\t\tlet p = process.sub[key];\n\t\t\tif (!list.includes(p.meta)) {\n\t\t\t\tlist.push(p.meta);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction findDepPidsBat(list, processes) {\n\tfor (let process of processes) {\n\t\tfindDepPids(list, process);\n\t}\n}\n\nasync function addBuiltinProcesses(list, ids, getProcesses) {\n\tlet newPids = [];\n\tif (ids.length > 0) {\n\t\tlet processes = await getProcesses(ids);\n\t\tfor (let processData of processes) {\n\t\t\tlet process = JSON.parse(processData);\n\t\t\tlist.push(process);\n\t\t\tfindDepPids(newPids, process);\n\t\t}\n\t}\n\treturn newPids;\n}\n\nfunction pageTemplate(tpl, options, version) {\n\tconst params = {\n\t\tversion,\n\t};\n\tfor (let field of replaceFields) {\n\t\tparams[field] = options[field];\n\t}\n\tfillTemplate(options.tpl, options, params);\n}\n\nfunction fillTemplate(tpl, options, params) {\n\tfor (let field in params) {\n\t\tconst pattern = decamelize(field).toUpperCase();\n\t\ttpl = tpl.replace(new RegExp(`\\\\$${pattern}\\\\$`, 'g'), params[field]);\n\t}\n\n\toptions.newTpl = tpl;\n}\n\nfunction traverseNode(root, callback) {\n\tcallback(root);\n\tif (root.children && root.children.length > 0) {\n\t\tfor (let childNode of root.children) {\n\t\t\ttraverseNode(childNode, callback);\n\t\t}\n\t}\n}\n"],"names":["divideCode"],"mappings":"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"}
\ No newline at end of file
/**
* Created by rockyl on 2019-11-29.
*/
export default class CustomManager {
constructor() {
this.pool = [];
}
deal(custom) {
this.pool.push(custom);
}
generate(){
let scripts = '';
for(let {id, code} of this.pool){
scripts += `
/*=====START ${id} START=====*/
module = {
exports: {}
};
(function(module){
${code}
})(module);
exports['${id}'] = module.exports;
/*=====END ${id} END=====*/`;
}
return `
(function(){
var exports = {};
var module;
${scripts}
for(var key in exports){
engine.registerCustomModule(key, exports[key]);
}
})();
`
}
}
/**
* Created by rockyl on 2019-11-29.
*/
import crypto from 'crypto'
import {compile} from "./code-process";
function md5(source) {
const hash = crypto.createHash('md5');
return hash.update(source).digest('hex');
}
export default class ProcessManager {
constructor() {
this.pool = {};
this.scripts = '';
}
deal(process) {
let hash = this.put(process);
if (hash) {
process.script = 'link://' + hash;
}
if (process.metas) {
for (let subProcess of process.metas) {
this.deal(subProcess);
}
}
}
put(process) {
const {id, name, script} = process;
if (script) {
let hash = md5(script);
if (!this.pool.hasOwnProperty(hash)) {
this.pool[hash] = {
script,
ids: [],
};
}
this.pool[hash].ids.push(`${id} - ${name}`);
return hash;
}
}
generateCurrent() {
let scripts = '';
for (let hash in this.pool) {
let {script, ids} = this.pool[hash];
let idsComment = ids.map(id => {
return `/*== ${id} ==*/`
}).join('\n');
scripts += `
exports['${hash}'] = function(args, props, target, global, vm){
return new Promise(function(resolve, reject){
${idsComment}
${script}
function next(type, payload){resolve({type: type, payload: payload})}
});
};
`;
}
this.scripts += scripts;
this.pool = {};
}
async compile() {
try {
const {code, sourcemap} = await compile(this.scripts, true);
this.scripts = code;
} catch (e) {
console.log('编译失败', e);
}
}
generate() {
this.generateCurrent();
let scripts = this.scripts;
return `
(function(){
var exports = {};
${scripts}
engine.setScriptMap(exports);
})();
`
}
}
/**
* Created by rockyl on 2019-11-29.
*/
export default class ScriptManager {
constructor() {
this.pool = [];
}
deal(script){
this.pool.push(script);
}
generate(){
let scripts = '';
for(let {id, code} of this.pool){
scripts += `
/*=====START ${id} START=====*/
(function(exports){
${code}
})(exports);
engine.registerScriptDef(exports.default.id, exports.default);
/*=====END ${id} END=====*/`;
}
return `
(function(){
var exports = {};
${scripts}
})();
`;
}
}
......@@ -5,10 +5,8 @@
*/
import decamelize from 'decamelize'
import ProcessManager from './ProcessManager'
import ScriptManager from './ScriptManager'
import CustomManager from './CustomManager'
import {uglify} from "./code-process";
import {uglify, compile} from "./code-process";
import {divideCode} from 'zeroing-code-divider';
const replaceFields = ['pageTitle', 'containerId'];
const TAG = 'zeroing-pack';
......@@ -34,10 +32,6 @@ export function fillTpl(data, params) {
}
async function packData(data, {debug, packedAssets, getProcesses, getScripts, getCustoms}) {
const processManager = new ProcessManager();
const scriptManager = new ScriptManager();
const customManager = new CustomManager();
let newData = {};
newData.options = data.options;
newData.views = data.views;
......@@ -50,7 +44,17 @@ async function packData(data, {debug, packedAssets, getProcesses, getScripts, ge
console.log(TAG, 'start');
/*=====START process =====*/
const {
processScriptContent,
scriptsContent,
customScriptContent,
} = await divideCode(newData, {
debug,
uglify, compile,
getProcesses, getScripts, getCustoms,
});
/*/!*=====START process =====*!/
console.log(TAG, 'start process');
let processIDs = [];
findDepPidsBat(processIDs, newData.processes);
......@@ -89,9 +93,9 @@ async function packData(data, {debug, packedAssets, getProcesses, getScripts, ge
if (!debug) {
processScriptContent = uglify(processScriptContent);
}
/*=====END process =====*/
/!*=====END process =====*!/
/*=====START script =====*/
/!*=====START script =====*!/
console.log(TAG, 'start script');
let scriptIDs = [];
for (let view of newData.views) {
......@@ -123,13 +127,13 @@ async function packData(data, {debug, packedAssets, getProcesses, getScripts, ge
if (!debug) {
scriptsContent = uglify(scriptsContent);
}
/*=====END script =====*/
/!*=====END script =====*!/
/*=====START custom =====*/
/!*=====START custom =====*!/
console.log(TAG, 'start custom');
//newData.customs = [];
if (data.customs && data.customs.length > 0) {
/*newData.customs = */
/!*newData.customs = *!/
(await getCustoms(data.customs)).map(item => {
customManager.deal(JSON.parse(item));
//return JSON.parse(item);
......@@ -140,7 +144,7 @@ async function packData(data, {debug, packedAssets, getProcesses, getScripts, ge
if (!debug) {
customScriptContent = uglify(customScriptContent);
}
/*=====END custom =====*/
/!*=====END custom =====*!/*/
return {
data: JSON.stringify(newData),
......
......@@ -1005,3 +1005,7 @@ xregexp@^4.2.4:
integrity sha1-AqSuoFbWWkJjLALwIz6rjk1+V+0=
dependencies:
"@babel/runtime-corejs2" "^7.2.0"
"zeroing-code-divider@http://gitlab2.dui88.com/laoqifeng/zeroing-code-divider.git":
version "1.0.0"
resolved "http://gitlab2.dui88.com/laoqifeng/zeroing-code-divider.git#18776cf8096cc5d5133c16dd58ac3de512c39402"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment