Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Z
zeroing-code-divider
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
劳工
zeroing-code-divider
Commits
0cb1266f
Commit
0cb1266f
authored
Feb 16, 2020
by
rockyl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
库版本锁
parent
1b6d4100
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
51 additions
and
27 deletions
+51
-27
index.es.js
dist/index.es.js
+12
-6
index.es.js.map
dist/index.es.js.map
+1
-1
index.js
dist/index.js
+12
-6
index.js.map
dist/index.js.map
+1
-1
index.umd.js
dist/index.umd.js
+12
-6
index.umd.js.map
dist/index.umd.js.map
+1
-1
main.js
src/main.js
+12
-6
No files found.
dist/index.es.js
View file @
0cb1266f
...
@@ -188,11 +188,13 @@ ${scripts}
...
@@ -188,11 +188,13 @@ ${scripts}
* Created by rockyl on 2019-12-20.
* Created by rockyl on 2019-12-20.
*/
*/
async
function
divideCode
(
data
,
{
debug
,
compile
,
uglify
,
getP
rocesses
,
getScripts
,
getCustom
s
})
{
async
function
divideCode
(
data
,
{
debug
,
compile
,
uglify
,
getP
ackage
s
})
{
const
processManager
=
new
ProcessManager
();
const
processManager
=
new
ProcessManager
();
const
scriptManager
=
new
ScriptManager
();
const
scriptManager
=
new
ScriptManager
();
const
customManager
=
new
CustomManager
();
const
customManager
=
new
CustomManager
();
const
dependencies
=
data
.
dependencies
;
/*=====START process =====*/
/*=====START process =====*/
//console.log(TAG, 'start process');
//console.log(TAG, 'start process');
let
processIDs
=
[];
let
processIDs
=
[];
...
@@ -201,7 +203,7 @@ async function divideCode(data, {debug, compile, uglify, getProcesses, getScript
...
@@ -201,7 +203,7 @@ async function divideCode(data, {debug, compile, uglify, getProcesses, getScript
let
bProcessIDs
=
processIDs
;
let
bProcessIDs
=
processIDs
;
while
(
true
)
{
while
(
true
)
{
let
newPids
=
await
addBuiltinProcesses
(
builtinProcesses
,
bProcessIDs
,
getP
rocess
es
);
let
newPids
=
await
addBuiltinProcesses
(
builtinProcesses
,
bProcessIDs
,
getP
ackages
,
dependenci
es
);
bProcessIDs
=
[];
bProcessIDs
=
[];
for
(
let
id
of
newPids
)
{
for
(
let
id
of
newPids
)
{
if
(
!
processIDs
.
includes
(
id
))
{
if
(
!
processIDs
.
includes
(
id
))
{
...
@@ -255,7 +257,7 @@ async function divideCode(data, {debug, compile, uglify, getProcesses, getScript
...
@@ -255,7 +257,7 @@ async function divideCode(data, {debug, compile, uglify, getProcesses, getScript
//let scriptsContainer = data.scripts = {};
//let scriptsContainer = data.scripts = {};
//let scriptsCode = '';
//let scriptsCode = '';
if
(
scriptIDs
.
length
>
0
)
{
if
(
scriptIDs
.
length
>
0
)
{
const
scripts
=
await
get
Script
s
(
scriptIDs
);
const
scripts
=
await
get
Package
s
(
scriptIDs
);
for
(
let
scriptData
of
scripts
)
{
for
(
let
scriptData
of
scripts
)
{
let
script
=
typeof
scriptData
===
'string'
?
JSON
.
parse
(
scriptData
)
:
scriptData
;
let
script
=
typeof
scriptData
===
'string'
?
JSON
.
parse
(
scriptData
)
:
scriptData
;
//scriptsContainer[id] = code;
//scriptsContainer[id] = code;
...
@@ -276,7 +278,7 @@ async function divideCode(data, {debug, compile, uglify, getProcesses, getScript
...
@@ -276,7 +278,7 @@ async function divideCode(data, {debug, compile, uglify, getProcesses, getScript
//data.customs = [];
//data.customs = [];
const
customs
=
data
.
customs
;
const
customs
=
data
.
customs
;
if
(
customs
&&
customs
.
length
>
0
)
{
if
(
customs
&&
customs
.
length
>
0
)
{
let
customMetas
=
await
get
Custom
s
(
customs
.
map
(
item
=>
item
.
id
));
let
customMetas
=
await
get
Package
s
(
customs
.
map
(
item
=>
item
.
id
));
data
.
customs
=
customMetas
.
map
(
item
=>
{
data
.
customs
=
customMetas
.
map
(
item
=>
{
const
custom
=
typeof
item
===
'string'
?
JSON
.
parse
(
item
)
:
item
;
const
custom
=
typeof
item
===
'string'
?
JSON
.
parse
(
item
)
:
item
;
customManager
.
deal
(
custom
);
customManager
.
deal
(
custom
);
...
@@ -337,10 +339,14 @@ function findDepPidsBat(list, processes) {
...
@@ -337,10 +339,14 @@ function findDepPidsBat(list, processes) {
}
}
}
}
async
function
addBuiltinProcesses
(
list
,
ids
,
getP
rocess
es
)
{
async
function
addBuiltinProcesses
(
list
,
ids
,
getP
ackages
,
dependenci
es
)
{
let
newPids
=
[];
let
newPids
=
[];
let
schema
=
{};
if
(
ids
.
length
>
0
)
{
if
(
ids
.
length
>
0
)
{
let
processes
=
await
getProcesses
(
ids
);
for
(
let
id
of
ids
){
schema
[
id
]
=
dependencies
[
id
];
}
let
processes
=
await
getPackages
(
schema
);
for
(
let
processData
of
processes
)
{
for
(
let
processData
of
processes
)
{
let
process
=
typeof
processData
===
'string'
?
JSON
.
parse
(
processData
)
:
processData
;
let
process
=
typeof
processData
===
'string'
?
JSON
.
parse
(
processData
)
:
processData
;
list
.
push
(
process
);
list
.
push
(
process
);
...
...
dist/index.es.js.map
View file @
0cb1266f
{
"version"
:
3
,
"file"
:
"index.es.js"
,
"sources"
:
[
"../src/ProcessManager.js"
,
"../src/ScriptManager.js"
,
"../src/CustomManager.js"
,
"../src/main.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2019-11-29.
\n
*/
\n\n
import crypto from 'crypto'
\n\n
function md5(source) {\n
\t
const hash = crypto.createHash('md5');
\n\t
return hash.update(source).digest('hex');
\n
}
\n\n
export default class ProcessManager {\n
\t
constructor() {\n
\t\t
this.pool = {};
\n\t\t
this.scripts = '';
\n\t
}
\n\n\t
deal(process) {\n
\t\t
let hash = this.put(process);
\n\t\t
if (hash) {\n
\t\t\t
process.script = 'link://' + hash;
\n\t\t
}
\n\t\t
if (process.metas) {\n
\t\t\t
for (let subProcess of process.metas)
{
\n\t\t\t\tthis.deal(subProcess);\n\t\t\t}\n\t\t}\n\t
}
\n\n\t
put(process) {\n
\t\t
const {id, name, script} = process;
\n\t\t
if (script) {\n
\t\t\t
let hash = md5(script);
\n\t\t\t
if (!this.pool.hasOwnProperty(hash)) {\n
\t\t\t\t
this.pool[hash] = {\n
\t\t\t\t\t
script,
\n\t\t\t\t\t
ids: [],
\n\t\t\t\t
};
\n\t\t\t
}
\n\t\t\t
this.pool[hash].ids.push(`${id} - ${name}`);
\n\t\t\t
return hash;
\n\t\t
}
\n\t
}
\n\n\t
generateCurrent() {\n
\t\t
let scripts = '';
\n\t\t
for (let hash in this.pool) {\n
\t\t\t
let {script, ids} = this.pool[hash];
\n\t\t\t
let idsComment = ids.map(id => {\n
\t\t\t\t
return `/*== ${id} ==*/`
\n\t\t\t
}).join('
\\
n');
\n\t\t\t
scripts += `
\n\t
exports['${hash}'] = function(args, props, target, global, vm, scope){\n
\t\t
return new Promise(function(resolve, reject)
{
\n\n${idsComment}\n${script
}
\n\n\t\t
function next(type, payload){resolve({type: type, payload: payload})}
\n\t\t
});
\n\t
};
\n
`;
\n\t\t
}
\n\t\t
this.scripts += scripts;
\n\t\t
this.pool = {};
\n\n\t\t
return scripts;
\n\t
}
\n\n\t
coverScripts(scripts) {\n
\t\t
this.scripts = scripts;
\n\t
}
\n\n\t
generate() {\n
\t\t
this.generateCurrent();
\n\t\t
let scripts = this.scripts;
\n\n\t\t
return `
\n
console.log('processes.js loaded');
\n\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\n
export default class ScriptManager {\n
\t
constructor() {\n
\t\t
this.pool = [];
\n\t
}
\n\n\t
deal(script)
{
\n\t\tthis.pool.push(script);\n\t
}
\n\n\t
generate(){\n
\t\t
let scripts = '';
\n\t\t
for(let {id, code} of this.pool){\n
\t\t\t
scripts += `
\n
/*=====START ${id} START=====*/
\n
(function(exports)
{
\n${code}\n
}
)(exports);
\n\t
engine.registerScriptDef(exports.default.id, exports.default);
\n
/*=====END ${id} END=====*/`;
\n\t\t
}
\n\n\t\t
return `
\n
console.log('scripts.js loaded');
\n\n
(function(){\nvar exports =
{
};\n${scripts}\n})();\n`;\n\t}\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-11-29.
\n
*/
\n\n
export default class CustomManager {\n
\t
constructor() {\n
\t\t
this.pool = [];
\n\t
}
\n\n\t
deal(custom)
{
\n\t\tthis.pool.push(custom);\n\t
}
\n\n\t
generate() {\n
\t\t
let scripts = '';
\n\t\t
for (let {id, code} of this.pool) {\n
\t\t\t
scripts += `
\n
/*=====START ${id} START=====*/
\n
var module = {\n
\t
exports:
{
}\n
}
;
\n
(function(module){\nfunction getAssetByUUID(uuid){\n
\t
return engine.resolveCustomAsset('${id}', uuid);
\n
}
\n
function getProps(){\n
\t
return engine.getProps('${id}');
\n
}
\n\n
${code}
\n
})(module);
\n
exports['${id}'] = module.exports;
\n
/*=====END ${id} END=====*/`;
\n\t\t
}
\n\n\t\t
return `
\n
console.log('customs.js loaded');
\n\n
(function(){\nvar exports = {};
\n\n
function require(id){\n
\t
if(id === 'tslib'){\n
\t\t
return window['tslib']
\t\n\t
}else{\n
\t\t
console.log('missing require', id);
\n\t
}
\n
}
\n\n
${scripts}
\n\n\t
for(var key in exports){\n
\t\t
engine.registerCustomModule(key, exports[key]);
\n\t
}
\n
})();
\n
`
\n\t
}
\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-12-20.
\n
*/
\n\n
import ProcessManager from
\"
./ProcessManager
\"
;
\n
import ScriptManager from
\"
./ScriptManager
\"
;
\n
import CustomManager from
\"
./CustomManager
\"
;
\n
import
{
compute
}
from
\"
props-compute
\"
;
\n\n
const TAG = 'zeroing-code-divider';
\n\n
export async function divideCode(data, {debug, compile, uglify, getProcesses, getScripts, getCustoms}) {\n
\t
const processManager = new ProcessManager();
\n\t
const scriptManager = new ScriptManager();
\n\t
const customManager = new CustomManager();
\n\n\t
/*=====START process =====*/
\n\t
//console.log(TAG, 'start process');
\n\t
let processIDs = [];
\n\t
findDepPidsBat(processIDs, data.processes);
\n\t
let builtinProcesses = data.builtinProcesses = [];
\n\n\t
let bProcessIDs = processIDs;
\n\t
while (true) {\n
\t\t
let newPids = await addBuiltinProcesses(builtinProcesses, bProcessIDs, getProcesses);
\n\t\t
bProcessIDs = [];
\n\t\t
for (let id of newPids) {\n
\t\t\t
if (!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\t
if (bProcessIDs.length === 0)
{
\n\t\t\tbreak;\n\t\t}\n\t
}
\n\n\t
for (let process of data.processes)
{
\n\t\tprocessManager.deal(process);\n\t
}
\n\n\t
//console.log(TAG, 'processManager.generateCurrent()');
\n\n\t
let ptScript = processManager.generateCurrent();
\n\t
if (compile) {\n
\t\t
const result = await compile(ptScript);
\n\t\t
processManager.coverScripts(result.code); //自定义过程先编译
\n\t
}
\n\n\t
for (let process of builtinProcesses)
{
\n\t\tprocessManager.deal(process);\n\t
}
\n\n\t
let processScriptContent = processManager.generate();
\n\t
//console.log(processScriptContent);
\n\t
if (!debug) {\n
\t\t
processScriptContent = uglify(processScriptContent);
\n\t
}
\n\t
/*=====END process =====*/
\n\n\t
/*=====START script =====*/
\n\t
//console.log(TAG, 'start script');
\n\t
let scriptIDs = [];
\n\t
for (let view of data.views) {\n
\t\t
traverseNode(view, (node) => {\n
\t\t\t
if (node.scripts && node.scripts.length > 0) {\n
\t\t\t\t
for (let
{
script
}
of node.scripts) {\n
\t\t\t\t\t
if (!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 = data.scripts = {};
\n\t
//let scriptsCode = '';
\n\t
if (scriptIDs.length > 0) {\n
\t\t
const scripts = await getScripts(scriptIDs);
\n\t\t
for (let scriptData of scripts) {\n
\t\t\t
let script = typeof scriptData === 'string' ? JSON.parse(scriptData) : scriptData;
\n\t\t\t
//scriptsContainer[id] = code;
\n\t\t\t
scriptManager.deal(script);
\n\t\t
}
\n\t\t
//console.log('scripts:', scriptsContainer);
\n\t
}
\n\n\t
let scriptsContent = scriptManager.generate();
\n\t
//console.log(scriptsContent);
\n\t
if (!debug) {\n
\t\t
scriptsContent = uglify(scriptsContent);
\n\t
}
\n\t
/*=====END script =====*/
\n\n\t
/*=====START custom =====*/
\n\t
//console.log(TAG, 'start custom');
\n\t
//data.customs = [];
\n\t
const customs = data.customs;
\n\t
if (customs && customs.length > 0) {\n
\t\t
let customMetas = await getCustoms(customs.map(item => item.id));
\n\t\t
data.customs = customMetas.map(item => {\n
\t\t\t
const custom = typeof item === 'string' ? JSON.parse(item) : item;
\n\t\t\t
customManager.deal(custom);
\n\t\t\t
let {props, assetMapping} = customs.find(c => c.id === custom.id);
\n\t\t\t
/*if (props) {\n
\t\t\t\t
for (let key in custom.props) {\n
\t\t\t\t\t
if (!props.hasOwnProperty(key) && custom.props[key].hasOwnProperty('default')) {\n
\t\t\t\t\t\t
props[key] = custom.props[key].default;
\n\t\t\t\t\t
}
\n\t\t\t\t
}
\n\t\t\t
}*/
\n\t\t\t
compute(props, custom.props);
\n\t\t\t
for (let uuid in assetMapping) {\n
\t\t\t\t
let asset = custom.assets.find(item => item.uuid === uuid);
\n\t\t\t\t
if (asset) {\n
\t\t\t\t\t
asset.url = assetMapping[uuid];
\n\t\t\t\t
}
\n\t\t\t
}
\n\t\t\t
return {\n
\t\t\t\t
id: custom.id,
\n\t\t\t\t
name: custom.name,
\n\t\t\t\t
assets: custom.assets,
\n\t\t\t\t
props,
\n\t\t\t
};
\n\t\t
})
\n\t
}
\n\t
let customScriptContent = customManager.generate();
\n\t
//console.log(customScriptContent);
\n\t
if (!debug) {\n
\t\t
customScriptContent = uglify(customScriptContent);
\n\t
}
\n\t
/*=====END custom =====*/
\n\n\t
return
{
\n\t\tprocessScriptContent,\n\t\tscriptsContent,\n\t\tcustomScriptContent,\n\t}\n
}
\n\n
function findDepPids(list, process) {\n
\t
if (process.sub) {\n
\t\t
for (let key in process.sub) {\n
\t\t\t
let p = process.sub[key];
\n\t\t\t
if (!list.includes(p.meta))
{
\n\t\t\t\tlist.push(p.meta);\n\t\t\t}\n\t\t}\n\t}\n
}
\n\n
function findDepPidsBat(list, processes) {\n
\t
for (let process of processes) {\n
\t\t
findDepPids(list, process);
\n\t\t
if (process.metas) {\n
\t\t\t
findDepPidsBat(list, process.metas)
\n\t\t
}
\n\t
}
\n
}
\n\n
async function addBuiltinProcesses(list, ids, getProcesses) {\n
\t
let newPids = [];
\n\t
if (ids.length > 0) {\n
\t\t
let processes = await getProcesses(ids);
\n\t\t
for (let processData of processes) {\n
\t\t\t
let process = typeof processData === 'string' ? JSON.parse(processData) : processData;
\n\t\t\t
list.push(process);
\n\t\t\t
findDepPids(newPids, process);
\n\t\t
}
\n\t
}
\n\t
return newPids;
\n
}
\n\n
function traverseNode(root, callback) {\n
\t
callback(root);
\n\t
if (root.children && root.children.length > 0) {\n
\t\t
for (let childNode of root.children) {\n
\t\t\t
traverseNode(childNode, callback);
\n\t\t
}
\n\t
}
\n
}
\n
"
],
"names"
:
[],
"mappings"
:
";;;AAAA;;;AAGA,AAEA;AACA,SAAS,GAAG,CAAC,MAAM,EAAE;CACpB,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;CACtC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CACzC;;AAED,AAAe,MAAM,cAAc,CAAC;CACnC,WAAW,GAAG;EACb,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;EACf,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;EAClB;;CAED,IAAI,CAAC,OAAO,EAAE;EACb,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;EAC7B,IAAI,IAAI,EAAE;GACT,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;GAClC;EACD,IAAI,OAAO,CAAC,KAAK,EAAE;GAClB,KAAK,IAAI,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE;IACrC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtB;GACD;EACD;;CAED,GAAG,CAAC,OAAO,EAAE;EACZ,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;EACnC,IAAI,MAAM,EAAE;GACX,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;GACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;IACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;KACjB,MAAM;KACN,GAAG,EAAE,EAAE;KACP,CAAC;IACF;GACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;GAC5C,OAAO,IAAI,CAAC;GACZ;EACD;;CAED,eAAe,GAAG;EACjB,IAAI,OAAO,GAAG,EAAE,CAAC;EACjB,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;GAC3B,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;GACpC,IAAI,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI;IAC9B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;IACxB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;GACd,OAAO,IAAI,CAAC;UACL,EAAE,IAAI,CAAC;;;AAGjB,EAAE,UAAU,CAAC;AACb,EAAE,MAAM,CAAC;;;;;AAKT,CAAC,CAAC;GACC;EACD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;EACxB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;;EAEf,OAAO,OAAO,CAAC;EACf;;CAED,YAAY,CAAC,OAAO,EAAE;EACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EACvB;;CAED,QAAQ,GAAG;EACV,IAAI,CAAC,eAAe,EAAE,CAAC;EACvB,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;EAE3B,OAAO,CAAC;;;;;AAKV,EAAE,OAAO,CAAC;;;;AAIV,CAAC;EACC;CACD;;ACxFD;;;;AAIA,AAAe,MAAM,aAAa,CAAC;CAClC,WAAW,GAAG;EACb,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;EACf;;CAED,IAAI,CAAC,MAAM,CAAC;EACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACvB;;CAED,QAAQ,EAAE;EACT,IAAI,OAAO,GAAG,EAAE,CAAC;EACjB,IAAI,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;GAC/B,OAAO,IAAI,CAAC;aACF,EAAE,EAAE,CAAC;;AAElB,EAAE,IAAI,CAAC;;;WAGI,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;GAC1B;;EAED,OAAO,CAAC;;;;;AAKV,EAAE,OAAO,CAAC;;AAEV,CAAC,CAAC;EACA;CACD;;AClCD;;;;AAIA,AAAe,MAAM,aAAa,CAAC;CAClC,WAAW,GAAG;EACb,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;EACf;;CAED,IAAI,CAAC,MAAM,EAAE;EACZ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACvB;;CAED,QAAQ,GAAG;EACV,IAAI,OAAO,GAAG,EAAE,CAAC;EACjB,KAAK,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;GACjC,OAAO,IAAI,CAAC;aACF,EAAE,EAAE,CAAC;;;;;;mCAMiB,EAAE,EAAE,CAAC;;;yBAGf,EAAE,EAAE,CAAC;;;AAG9B,EAAE,IAAI,CAAC;;SAEE,EAAE,EAAE,CAAC;WACH,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;GAC1B;;EAED,OAAO,CAAC;;;;;;;;;;;;;;AAcV,EAAE,OAAO,CAAC;;;;;;AAMV,CAAC;EACC;CACD;;ACzDD;;;AAGA,AAOA;AACA,AAAO,eAAe,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE;CACtG,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;CAC5C,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;CAC1C,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;;;;CAI1C,IAAI,UAAU,GAAG,EAAE,CAAC;CACpB,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;CAC3C,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;;CAElD,IAAI,WAAW,GAAG,UAAU,CAAC;CAC7B,OAAO,IAAI,EAAE;EACZ,IAAI,OAAO,GAAG,MAAM,mBAAmB,CAAC,gBAAgB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;EACrF,WAAW,GAAG,EAAE,CAAC;EACjB,KAAK,IAAI,EAAE,IAAI,OAAO,EAAE;GACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;IAC7B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrB,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB;GACD;EACD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;GAC7B,MAAM;GACN;EACD;;CAED,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;EACnC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC7B;;;;CAID,IAAI,QAAQ,GAAG,cAAc,CAAC,eAAe,EAAE,CAAC;CAChD,IAAI,OAAO,EAAE;EACZ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;EACvC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACzC;;CAED,KAAK,IAAI,OAAO,IAAI,gBAAgB,EAAE;EACrC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC7B;;CAED,IAAI,oBAAoB,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;;CAErD,IAAI,CAAC,KAAK,EAAE;EACX,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;EACpD;;;;;CAKD,IAAI,SAAS,GAAG,EAAE,CAAC;CACnB,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;EAC5B,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK;GAC5B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IAC5C,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;KAClC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;MAChC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;MACvB;KACD;IACD;GACD,CAAC,CAAC;EACH;;;;CAID,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;EACzB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;EAC5C,KAAK,IAAI,UAAU,IAAI,OAAO,EAAE;GAC/B,IAAI,MAAM,GAAG,OAAO,UAAU,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;;GAElF,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;GAC3B;;EAED;;CAED,IAAI,cAAc,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;;CAE9C,IAAI,CAAC,KAAK,EAAE;EACX,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;EACxC;;;;;;CAMD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;CAC7B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;EAClC,IAAI,WAAW,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EACjE,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI;GACtC,MAAM,MAAM,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;GAClE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;GAC3B,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;;;;;;;;GAQlE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;GAC7B,KAAK,IAAI,IAAI,IAAI,YAAY,EAAE;IAC9B,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC3D,IAAI,KAAK,EAAE;KACV,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;KAC/B;IACD;GACD,OAAO;IACN,EAAE,EAAE,MAAM,CAAC,EAAE;IACb,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,KAAK;IACL,CAAC;GACF,EAAC;EACF;CACD,IAAI,mBAAmB,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;;CAEnD,IAAI,CAAC,KAAK,EAAE;EACX,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;EAClD;;;CAGD,OAAO;EACN,oBAAoB;EACpB,cAAc;EACd,mBAAmB;EACnB;CACD;;AAED,SAAS,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE;CACnC,IAAI,OAAO,CAAC,GAAG,EAAE;EAChB,KAAK,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;GAC5B,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;GACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;IAC3B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClB;GACD;EACD;CACD;;AAED,SAAS,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;CACxC,KAAK,IAAI,OAAO,IAAI,SAAS,EAAE;EAC9B,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;EAC3B,IAAI,OAAO,CAAC,KAAK,EAAE;GAClB,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAC;GACnC;EACD;CACD;;AAED,eAAe,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE;CAC3D,IAAI,OAAO,GAAG,EAAE,CAAC;CACjB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;EACnB,IAAI,SAAS,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;EACxC,KAAK,IAAI,WAAW,IAAI,SAAS,EAAE;GAClC,IAAI,OAAO,GAAG,OAAO,WAAW,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;GACtF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;GACnB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;GAC9B;EACD;CACD,OAAO,OAAO,CAAC;CACf;;AAED,SAAS,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE;CACrC,QAAQ,CAAC,IAAI,CAAC,CAAC;CACf,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;EAC9C,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;GACpC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;GAClC;EACD;CACD;;;;"
}
{
"version"
:
3
,
"file"
:
"index.es.js"
,
"sources"
:
[
"../src/ProcessManager.js"
,
"../src/ScriptManager.js"
,
"../src/CustomManager.js"
,
"../src/main.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2019-11-29.
\n
*/
\n\n
import crypto from 'crypto'
\n\n
function md5(source) {\n
\t
const hash = crypto.createHash('md5');
\n\t
return hash.update(source).digest('hex');
\n
}
\n\n
export default class ProcessManager {\n
\t
constructor() {\n
\t\t
this.pool = {};
\n\t\t
this.scripts = '';
\n\t
}
\n\n\t
deal(process) {\n
\t\t
let hash = this.put(process);
\n\t\t
if (hash) {\n
\t\t\t
process.script = 'link://' + hash;
\n\t\t
}
\n\t\t
if (process.metas) {\n
\t\t\t
for (let subProcess of process.metas)
{
\n\t\t\t\tthis.deal(subProcess);\n\t\t\t}\n\t\t}\n\t
}
\n\n\t
put(process) {\n
\t\t
const {id, name, script} = process;
\n\t\t
if (script) {\n
\t\t\t
let hash = md5(script);
\n\t\t\t
if (!this.pool.hasOwnProperty(hash)) {\n
\t\t\t\t
this.pool[hash] = {\n
\t\t\t\t\t
script,
\n\t\t\t\t\t
ids: [],
\n\t\t\t\t
};
\n\t\t\t
}
\n\t\t\t
this.pool[hash].ids.push(`${id} - ${name}`);
\n\t\t\t
return hash;
\n\t\t
}
\n\t
}
\n\n\t
generateCurrent() {\n
\t\t
let scripts = '';
\n\t\t
for (let hash in this.pool) {\n
\t\t\t
let {script, ids} = this.pool[hash];
\n\t\t\t
let idsComment = ids.map(id => {\n
\t\t\t\t
return `/*== ${id} ==*/`
\n\t\t\t
}).join('
\\
n');
\n\t\t\t
scripts += `
\n\t
exports['${hash}'] = function(args, props, target, global, vm, scope){\n
\t\t
return new Promise(function(resolve, reject)
{
\n\n${idsComment}\n${script
}
\n\n\t\t
function next(type, payload){resolve({type: type, payload: payload})}
\n\t\t
});
\n\t
};
\n
`;
\n\t\t
}
\n\t\t
this.scripts += scripts;
\n\t\t
this.pool = {};
\n\n\t\t
return scripts;
\n\t
}
\n\n\t
coverScripts(scripts) {\n
\t\t
this.scripts = scripts;
\n\t
}
\n\n\t
generate() {\n
\t\t
this.generateCurrent();
\n\t\t
let scripts = this.scripts;
\n\n\t\t
return `
\n
console.log('processes.js loaded');
\n\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\n
export default class ScriptManager {\n
\t
constructor() {\n
\t\t
this.pool = [];
\n\t
}
\n\n\t
deal(script)
{
\n\t\tthis.pool.push(script);\n\t
}
\n\n\t
generate(){\n
\t\t
let scripts = '';
\n\t\t
for(let {id, code} of this.pool){\n
\t\t\t
scripts += `
\n
/*=====START ${id} START=====*/
\n
(function(exports)
{
\n${code}\n
}
)(exports);
\n\t
engine.registerScriptDef(exports.default.id, exports.default);
\n
/*=====END ${id} END=====*/`;
\n\t\t
}
\n\n\t\t
return `
\n
console.log('scripts.js loaded');
\n\n
(function(){\nvar exports =
{
};\n${scripts}\n})();\n`;\n\t}\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-11-29.
\n
*/
\n\n
export default class CustomManager {\n
\t
constructor() {\n
\t\t
this.pool = [];
\n\t
}
\n\n\t
deal(custom)
{
\n\t\tthis.pool.push(custom);\n\t
}
\n\n\t
generate() {\n
\t\t
let scripts = '';
\n\t\t
for (let {id, code} of this.pool) {\n
\t\t\t
scripts += `
\n
/*=====START ${id} START=====*/
\n
var module = {\n
\t
exports:
{
}\n
}
;
\n
(function(module){\nfunction getAssetByUUID(uuid){\n
\t
return engine.resolveCustomAsset('${id}', uuid);
\n
}
\n
function getProps(){\n
\t
return engine.getProps('${id}');
\n
}
\n\n
${code}
\n
})(module);
\n
exports['${id}'] = module.exports;
\n
/*=====END ${id} END=====*/`;
\n\t\t
}
\n\n\t\t
return `
\n
console.log('customs.js loaded');
\n\n
(function(){\nvar exports = {};
\n\n
function require(id){\n
\t
if(id === 'tslib'){\n
\t\t
return window['tslib']
\t\n\t
}else{\n
\t\t
console.log('missing require', id);
\n\t
}
\n
}
\n\n
${scripts}
\n\n\t
for(var key in exports){\n
\t\t
engine.registerCustomModule(key, exports[key]);
\n\t
}
\n
})();
\n
`
\n\t
}
\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-12-20.
\n
*/
\n\n
import ProcessManager from
\"
./ProcessManager
\"
;
\n
import ScriptManager from
\"
./ScriptManager
\"
;
\n
import CustomManager from
\"
./CustomManager
\"
;
\n
import
{
compute
}
from
\"
props-compute
\"
;
\n\n
const TAG = 'zeroing-code-divider';
\n\n
export async function divideCode(data, {debug, compile, uglify, getPackages}) {\n
\t
const processManager = new ProcessManager();
\n\t
const scriptManager = new ScriptManager();
\n\t
const customManager = new CustomManager();
\n\n\t
const dependencies = data.dependencies;
\n\n\t
/*=====START process =====*/
\n\t
//console.log(TAG, 'start process');
\n\t
let processIDs = [];
\n\t
findDepPidsBat(processIDs, data.processes);
\n\t
let builtinProcesses = data.builtinProcesses = [];
\n\n\t
let bProcessIDs = processIDs;
\n\t
while (true) {\n
\t\t
let newPids = await addBuiltinProcesses(builtinProcesses, bProcessIDs, getPackages, dependencies);
\n\t\t
bProcessIDs = [];
\n\t\t
for (let id of newPids) {\n
\t\t\t
if (!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\t
if (bProcessIDs.length === 0)
{
\n\t\t\tbreak;\n\t\t}\n\t
}
\n\n\t
for (let process of data.processes)
{
\n\t\tprocessManager.deal(process);\n\t
}
\n\n\t
//console.log(TAG, 'processManager.generateCurrent()');
\n\n\t
let ptScript = processManager.generateCurrent();
\n\t
if (compile) {\n
\t\t
const result = await compile(ptScript);
\n\t\t
processManager.coverScripts(result.code); //自定义过程先编译
\n\t
}
\n\n\t
for (let process of builtinProcesses)
{
\n\t\tprocessManager.deal(process);\n\t
}
\n\n\t
let processScriptContent = processManager.generate();
\n\t
//console.log(processScriptContent);
\n\t
if (!debug) {\n
\t\t
processScriptContent = uglify(processScriptContent);
\n\t
}
\n\t
/*=====END process =====*/
\n\n\t
/*=====START script =====*/
\n\t
//console.log(TAG, 'start script');
\n\t
let scriptIDs = [];
\n\t
for (let view of data.views) {\n
\t\t
traverseNode(view, (node) => {\n
\t\t\t
if (node.scripts && node.scripts.length > 0) {\n
\t\t\t\t
for (let
{
script
}
of node.scripts) {\n
\t\t\t\t\t
if (!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 = data.scripts = {};
\n\t
//let scriptsCode = '';
\n\t
if (scriptIDs.length > 0) {\n
\t\t
const scripts = await getPackages(scriptIDs);
\n\t\t
for (let scriptData of scripts) {\n
\t\t\t
let script = typeof scriptData === 'string' ? JSON.parse(scriptData) : scriptData;
\n\t\t\t
//scriptsContainer[id] = code;
\n\t\t\t
scriptManager.deal(script);
\n\t\t
}
\n\t\t
//console.log('scripts:', scriptsContainer);
\n\t
}
\n\n\t
let scriptsContent = scriptManager.generate();
\n\t
//console.log(scriptsContent);
\n\t
if (!debug) {\n
\t\t
scriptsContent = uglify(scriptsContent);
\n\t
}
\n\t
/*=====END script =====*/
\n\n\t
/*=====START custom =====*/
\n\t
//console.log(TAG, 'start custom');
\n\t
//data.customs = [];
\n\t
const customs = data.customs;
\n\t
if (customs && customs.length > 0) {\n
\t\t
let customMetas = await getPackages(customs.map(item => item.id));
\n\t\t
data.customs = customMetas.map(item => {\n
\t\t\t
const custom = typeof item === 'string' ? JSON.parse(item) : item;
\n\t\t\t
customManager.deal(custom);
\n\t\t\t
let {props, assetMapping} = customs.find(c => c.id === custom.id);
\n\t\t\t
/*if (props) {\n
\t\t\t\t
for (let key in custom.props) {\n
\t\t\t\t\t
if (!props.hasOwnProperty(key) && custom.props[key].hasOwnProperty('default')) {\n
\t\t\t\t\t\t
props[key] = custom.props[key].default;
\n\t\t\t\t\t
}
\n\t\t\t\t
}
\n\t\t\t
}*/
\n\t\t\t
compute(props, custom.props);
\n\t\t\t
for (let uuid in assetMapping) {\n
\t\t\t\t
let asset = custom.assets.find(item => item.uuid === uuid);
\n\t\t\t\t
if (asset) {\n
\t\t\t\t\t
asset.url = assetMapping[uuid];
\n\t\t\t\t
}
\n\t\t\t
}
\n\t\t\t
return {\n
\t\t\t\t
id: custom.id,
\n\t\t\t\t
name: custom.name,
\n\t\t\t\t
assets: custom.assets,
\n\t\t\t\t
props,
\n\t\t\t
};
\n\t\t
})
\n\t
}
\n\t
let customScriptContent = customManager.generate();
\n\t
//console.log(customScriptContent);
\n\t
if (!debug) {\n
\t\t
customScriptContent = uglify(customScriptContent);
\n\t
}
\n\t
/*=====END custom =====*/
\n\n\t
return
{
\n\t\tprocessScriptContent,\n\t\tscriptsContent,\n\t\tcustomScriptContent,\n\t}\n
}
\n\n
function findDepPids(list, process) {\n
\t
if (process.sub) {\n
\t\t
for (let key in process.sub) {\n
\t\t\t
let p = process.sub[key];
\n\t\t\t
if (!list.includes(p.meta))
{
\n\t\t\t\tlist.push(p.meta);\n\t\t\t}\n\t\t}\n\t}\n
}
\n\n
function findDepPidsBat(list, processes) {\n
\t
for (let process of processes) {\n
\t\t
findDepPids(list, process);
\n\t\t
if (process.metas) {\n
\t\t\t
findDepPidsBat(list, process.metas)
\n\t\t
}
\n\t
}
\n
}
\n\n
async function addBuiltinProcesses(list, ids, getPackages, dependencies) {\n
\t
let newPids = [];
\n\t
let schema = {};
\n\t
if (ids.length > 0) {\n
\t\t
for(let id of ids){\n
\t\t\t
schema[id] = dependencies[id];
\n\t\t
}
\n\t\t
let processes = await getPackages(schema);
\n\t\t
for (let processData of processes) {\n
\t\t\t
let process = typeof processData === 'string' ? JSON.parse(processData) : processData;
\n\t\t\t
list.push(process);
\n\t\t\t
findDepPids(newPids, process);
\n\t\t
}
\n\t
}
\n\t
return newPids;
\n
}
\n\n
function traverseNode(root, callback) {\n
\t
callback(root);
\n\t
if (root.children && root.children.length > 0) {\n
\t\t
for (let childNode of root.children) {\n
\t\t\t
traverseNode(childNode, callback);
\n\t\t
}
\n\t
}
\n
}
\n
"
],
"names"
:
[],
"mappings"
:
"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"
}
\ No newline at end of file
\ No newline at end of file
dist/index.js
View file @
0cb1266f
...
@@ -194,11 +194,13 @@ ${scripts}
...
@@ -194,11 +194,13 @@ ${scripts}
* Created by rockyl on 2019-12-20.
* Created by rockyl on 2019-12-20.
*/
*/
async
function
divideCode
(
data
,
{
debug
,
compile
,
uglify
,
getP
rocesses
,
getScripts
,
getCustom
s
})
{
async
function
divideCode
(
data
,
{
debug
,
compile
,
uglify
,
getP
ackage
s
})
{
const
processManager
=
new
ProcessManager
();
const
processManager
=
new
ProcessManager
();
const
scriptManager
=
new
ScriptManager
();
const
scriptManager
=
new
ScriptManager
();
const
customManager
=
new
CustomManager
();
const
customManager
=
new
CustomManager
();
const
dependencies
=
data
.
dependencies
;
/*=====START process =====*/
/*=====START process =====*/
//console.log(TAG, 'start process');
//console.log(TAG, 'start process');
let
processIDs
=
[];
let
processIDs
=
[];
...
@@ -207,7 +209,7 @@ async function divideCode(data, {debug, compile, uglify, getProcesses, getScript
...
@@ -207,7 +209,7 @@ async function divideCode(data, {debug, compile, uglify, getProcesses, getScript
let
bProcessIDs
=
processIDs
;
let
bProcessIDs
=
processIDs
;
while
(
true
)
{
while
(
true
)
{
let
newPids
=
await
addBuiltinProcesses
(
builtinProcesses
,
bProcessIDs
,
getP
rocess
es
);
let
newPids
=
await
addBuiltinProcesses
(
builtinProcesses
,
bProcessIDs
,
getP
ackages
,
dependenci
es
);
bProcessIDs
=
[];
bProcessIDs
=
[];
for
(
let
id
of
newPids
)
{
for
(
let
id
of
newPids
)
{
if
(
!
processIDs
.
includes
(
id
))
{
if
(
!
processIDs
.
includes
(
id
))
{
...
@@ -261,7 +263,7 @@ async function divideCode(data, {debug, compile, uglify, getProcesses, getScript
...
@@ -261,7 +263,7 @@ async function divideCode(data, {debug, compile, uglify, getProcesses, getScript
//let scriptsContainer = data.scripts = {};
//let scriptsContainer = data.scripts = {};
//let scriptsCode = '';
//let scriptsCode = '';
if
(
scriptIDs
.
length
>
0
)
{
if
(
scriptIDs
.
length
>
0
)
{
const
scripts
=
await
get
Script
s
(
scriptIDs
);
const
scripts
=
await
get
Package
s
(
scriptIDs
);
for
(
let
scriptData
of
scripts
)
{
for
(
let
scriptData
of
scripts
)
{
let
script
=
typeof
scriptData
===
'string'
?
JSON
.
parse
(
scriptData
)
:
scriptData
;
let
script
=
typeof
scriptData
===
'string'
?
JSON
.
parse
(
scriptData
)
:
scriptData
;
//scriptsContainer[id] = code;
//scriptsContainer[id] = code;
...
@@ -282,7 +284,7 @@ async function divideCode(data, {debug, compile, uglify, getProcesses, getScript
...
@@ -282,7 +284,7 @@ async function divideCode(data, {debug, compile, uglify, getProcesses, getScript
//data.customs = [];
//data.customs = [];
const
customs
=
data
.
customs
;
const
customs
=
data
.
customs
;
if
(
customs
&&
customs
.
length
>
0
)
{
if
(
customs
&&
customs
.
length
>
0
)
{
let
customMetas
=
await
get
Custom
s
(
customs
.
map
(
item
=>
item
.
id
));
let
customMetas
=
await
get
Package
s
(
customs
.
map
(
item
=>
item
.
id
));
data
.
customs
=
customMetas
.
map
(
item
=>
{
data
.
customs
=
customMetas
.
map
(
item
=>
{
const
custom
=
typeof
item
===
'string'
?
JSON
.
parse
(
item
)
:
item
;
const
custom
=
typeof
item
===
'string'
?
JSON
.
parse
(
item
)
:
item
;
customManager
.
deal
(
custom
);
customManager
.
deal
(
custom
);
...
@@ -343,10 +345,14 @@ function findDepPidsBat(list, processes) {
...
@@ -343,10 +345,14 @@ function findDepPidsBat(list, processes) {
}
}
}
}
async
function
addBuiltinProcesses
(
list
,
ids
,
getP
rocess
es
)
{
async
function
addBuiltinProcesses
(
list
,
ids
,
getP
ackages
,
dependenci
es
)
{
let
newPids
=
[];
let
newPids
=
[];
let
schema
=
{};
if
(
ids
.
length
>
0
)
{
if
(
ids
.
length
>
0
)
{
let
processes
=
await
getProcesses
(
ids
);
for
(
let
id
of
ids
){
schema
[
id
]
=
dependencies
[
id
];
}
let
processes
=
await
getPackages
(
schema
);
for
(
let
processData
of
processes
)
{
for
(
let
processData
of
processes
)
{
let
process
=
typeof
processData
===
'string'
?
JSON
.
parse
(
processData
)
:
processData
;
let
process
=
typeof
processData
===
'string'
?
JSON
.
parse
(
processData
)
:
processData
;
list
.
push
(
process
);
list
.
push
(
process
);
...
...
dist/index.js.map
View file @
0cb1266f
{
"version"
:
3
,
"file"
:
"index.js"
,
"sources"
:
[
"../src/ProcessManager.js"
,
"../src/ScriptManager.js"
,
"../src/CustomManager.js"
,
"../src/main.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2019-11-29.
\n
*/
\n\n
import crypto from 'crypto'
\n\n
function md5(source) {\n
\t
const hash = crypto.createHash('md5');
\n\t
return hash.update(source).digest('hex');
\n
}
\n\n
export default class ProcessManager {\n
\t
constructor() {\n
\t\t
this.pool = {};
\n\t\t
this.scripts = '';
\n\t
}
\n\n\t
deal(process) {\n
\t\t
let hash = this.put(process);
\n\t\t
if (hash) {\n
\t\t\t
process.script = 'link://' + hash;
\n\t\t
}
\n\t\t
if (process.metas) {\n
\t\t\t
for (let subProcess of process.metas)
{
\n\t\t\t\tthis.deal(subProcess);\n\t\t\t}\n\t\t}\n\t
}
\n\n\t
put(process) {\n
\t\t
const {id, name, script} = process;
\n\t\t
if (script) {\n
\t\t\t
let hash = md5(script);
\n\t\t\t
if (!this.pool.hasOwnProperty(hash)) {\n
\t\t\t\t
this.pool[hash] = {\n
\t\t\t\t\t
script,
\n\t\t\t\t\t
ids: [],
\n\t\t\t\t
};
\n\t\t\t
}
\n\t\t\t
this.pool[hash].ids.push(`${id} - ${name}`);
\n\t\t\t
return hash;
\n\t\t
}
\n\t
}
\n\n\t
generateCurrent() {\n
\t\t
let scripts = '';
\n\t\t
for (let hash in this.pool) {\n
\t\t\t
let {script, ids} = this.pool[hash];
\n\t\t\t
let idsComment = ids.map(id => {\n
\t\t\t\t
return `/*== ${id} ==*/`
\n\t\t\t
}).join('
\\
n');
\n\t\t\t
scripts += `
\n\t
exports['${hash}'] = function(args, props, target, global, vm, scope){\n
\t\t
return new Promise(function(resolve, reject)
{
\n\n${idsComment}\n${script
}
\n\n\t\t
function next(type, payload){resolve({type: type, payload: payload})}
\n\t\t
});
\n\t
};
\n
`;
\n\t\t
}
\n\t\t
this.scripts += scripts;
\n\t\t
this.pool = {};
\n\n\t\t
return scripts;
\n\t
}
\n\n\t
coverScripts(scripts) {\n
\t\t
this.scripts = scripts;
\n\t
}
\n\n\t
generate() {\n
\t\t
this.generateCurrent();
\n\t\t
let scripts = this.scripts;
\n\n\t\t
return `
\n
console.log('processes.js loaded');
\n\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\n
export default class ScriptManager {\n
\t
constructor() {\n
\t\t
this.pool = [];
\n\t
}
\n\n\t
deal(script)
{
\n\t\tthis.pool.push(script);\n\t
}
\n\n\t
generate(){\n
\t\t
let scripts = '';
\n\t\t
for(let {id, code} of this.pool){\n
\t\t\t
scripts += `
\n
/*=====START ${id} START=====*/
\n
(function(exports)
{
\n${code}\n
}
)(exports);
\n\t
engine.registerScriptDef(exports.default.id, exports.default);
\n
/*=====END ${id} END=====*/`;
\n\t\t
}
\n\n\t\t
return `
\n
console.log('scripts.js loaded');
\n\n
(function(){\nvar exports =
{
};\n${scripts}\n})();\n`;\n\t}\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-11-29.
\n
*/
\n\n
export default class CustomManager {\n
\t
constructor() {\n
\t\t
this.pool = [];
\n\t
}
\n\n\t
deal(custom)
{
\n\t\tthis.pool.push(custom);\n\t
}
\n\n\t
generate() {\n
\t\t
let scripts = '';
\n\t\t
for (let {id, code} of this.pool) {\n
\t\t\t
scripts += `
\n
/*=====START ${id} START=====*/
\n
var module = {\n
\t
exports:
{
}\n
}
;
\n
(function(module){\nfunction getAssetByUUID(uuid){\n
\t
return engine.resolveCustomAsset('${id}', uuid);
\n
}
\n
function getProps(){\n
\t
return engine.getProps('${id}');
\n
}
\n\n
${code}
\n
})(module);
\n
exports['${id}'] = module.exports;
\n
/*=====END ${id} END=====*/`;
\n\t\t
}
\n\n\t\t
return `
\n
console.log('customs.js loaded');
\n\n
(function(){\nvar exports = {};
\n\n
function require(id){\n
\t
if(id === 'tslib'){\n
\t\t
return window['tslib']
\t\n\t
}else{\n
\t\t
console.log('missing require', id);
\n\t
}
\n
}
\n\n
${scripts}
\n\n\t
for(var key in exports){\n
\t\t
engine.registerCustomModule(key, exports[key]);
\n\t
}
\n
})();
\n
`
\n\t
}
\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-12-20.
\n
*/
\n\n
import ProcessManager from
\"
./ProcessManager
\"
;
\n
import ScriptManager from
\"
./ScriptManager
\"
;
\n
import CustomManager from
\"
./CustomManager
\"
;
\n
import
{
compute
}
from
\"
props-compute
\"
;
\n\n
const TAG = 'zeroing-code-divider';
\n\n
export async function divideCode(data, {debug, compile, uglify, getProcesses, getScripts, getCustoms}) {\n
\t
const processManager = new ProcessManager();
\n\t
const scriptManager = new ScriptManager();
\n\t
const customManager = new CustomManager();
\n\n\t
/*=====START process =====*/
\n\t
//console.log(TAG, 'start process');
\n\t
let processIDs = [];
\n\t
findDepPidsBat(processIDs, data.processes);
\n\t
let builtinProcesses = data.builtinProcesses = [];
\n\n\t
let bProcessIDs = processIDs;
\n\t
while (true) {\n
\t\t
let newPids = await addBuiltinProcesses(builtinProcesses, bProcessIDs, getProcesses);
\n\t\t
bProcessIDs = [];
\n\t\t
for (let id of newPids) {\n
\t\t\t
if (!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\t
if (bProcessIDs.length === 0)
{
\n\t\t\tbreak;\n\t\t}\n\t
}
\n\n\t
for (let process of data.processes)
{
\n\t\tprocessManager.deal(process);\n\t
}
\n\n\t
//console.log(TAG, 'processManager.generateCurrent()');
\n\n\t
let ptScript = processManager.generateCurrent();
\n\t
if (compile) {\n
\t\t
const result = await compile(ptScript);
\n\t\t
processManager.coverScripts(result.code); //自定义过程先编译
\n\t
}
\n\n\t
for (let process of builtinProcesses)
{
\n\t\tprocessManager.deal(process);\n\t
}
\n\n\t
let processScriptContent = processManager.generate();
\n\t
//console.log(processScriptContent);
\n\t
if (!debug) {\n
\t\t
processScriptContent = uglify(processScriptContent);
\n\t
}
\n\t
/*=====END process =====*/
\n\n\t
/*=====START script =====*/
\n\t
//console.log(TAG, 'start script');
\n\t
let scriptIDs = [];
\n\t
for (let view of data.views) {\n
\t\t
traverseNode(view, (node) => {\n
\t\t\t
if (node.scripts && node.scripts.length > 0) {\n
\t\t\t\t
for (let
{
script
}
of node.scripts) {\n
\t\t\t\t\t
if (!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 = data.scripts = {};
\n\t
//let scriptsCode = '';
\n\t
if (scriptIDs.length > 0) {\n
\t\t
const scripts = await getScripts(scriptIDs);
\n\t\t
for (let scriptData of scripts) {\n
\t\t\t
let script = typeof scriptData === 'string' ? JSON.parse(scriptData) : scriptData;
\n\t\t\t
//scriptsContainer[id] = code;
\n\t\t\t
scriptManager.deal(script);
\n\t\t
}
\n\t\t
//console.log('scripts:', scriptsContainer);
\n\t
}
\n\n\t
let scriptsContent = scriptManager.generate();
\n\t
//console.log(scriptsContent);
\n\t
if (!debug) {\n
\t\t
scriptsContent = uglify(scriptsContent);
\n\t
}
\n\t
/*=====END script =====*/
\n\n\t
/*=====START custom =====*/
\n\t
//console.log(TAG, 'start custom');
\n\t
//data.customs = [];
\n\t
const customs = data.customs;
\n\t
if (customs && customs.length > 0) {\n
\t\t
let customMetas = await getCustoms(customs.map(item => item.id));
\n\t\t
data.customs = customMetas.map(item => {\n
\t\t\t
const custom = typeof item === 'string' ? JSON.parse(item) : item;
\n\t\t\t
customManager.deal(custom);
\n\t\t\t
let {props, assetMapping} = customs.find(c => c.id === custom.id);
\n\t\t\t
/*if (props) {\n
\t\t\t\t
for (let key in custom.props) {\n
\t\t\t\t\t
if (!props.hasOwnProperty(key) && custom.props[key].hasOwnProperty('default')) {\n
\t\t\t\t\t\t
props[key] = custom.props[key].default;
\n\t\t\t\t\t
}
\n\t\t\t\t
}
\n\t\t\t
}*/
\n\t\t\t
compute(props, custom.props);
\n\t\t\t
for (let uuid in assetMapping) {\n
\t\t\t\t
let asset = custom.assets.find(item => item.uuid === uuid);
\n\t\t\t\t
if (asset) {\n
\t\t\t\t\t
asset.url = assetMapping[uuid];
\n\t\t\t\t
}
\n\t\t\t
}
\n\t\t\t
return {\n
\t\t\t\t
id: custom.id,
\n\t\t\t\t
name: custom.name,
\n\t\t\t\t
assets: custom.assets,
\n\t\t\t\t
props,
\n\t\t\t
};
\n\t\t
})
\n\t
}
\n\t
let customScriptContent = customManager.generate();
\n\t
//console.log(customScriptContent);
\n\t
if (!debug) {\n
\t\t
customScriptContent = uglify(customScriptContent);
\n\t
}
\n\t
/*=====END custom =====*/
\n\n\t
return
{
\n\t\tprocessScriptContent,\n\t\tscriptsContent,\n\t\tcustomScriptContent,\n\t}\n
}
\n\n
function findDepPids(list, process) {\n
\t
if (process.sub) {\n
\t\t
for (let key in process.sub) {\n
\t\t\t
let p = process.sub[key];
\n\t\t\t
if (!list.includes(p.meta))
{
\n\t\t\t\tlist.push(p.meta);\n\t\t\t}\n\t\t}\n\t}\n
}
\n\n
function findDepPidsBat(list, processes) {\n
\t
for (let process of processes) {\n
\t\t
findDepPids(list, process);
\n\t\t
if (process.metas) {\n
\t\t\t
findDepPidsBat(list, process.metas)
\n\t\t
}
\n\t
}
\n
}
\n\n
async function addBuiltinProcesses(list, ids, getProcesses) {\n
\t
let newPids = [];
\n\t
if (ids.length > 0) {\n
\t\t
let processes = await getProcesses(ids);
\n\t\t
for (let processData of processes) {\n
\t\t\t
let process = typeof processData === 'string' ? JSON.parse(processData) : processData;
\n\t\t\t
list.push(process);
\n\t\t\t
findDepPids(newPids, process);
\n\t\t
}
\n\t
}
\n\t
return newPids;
\n
}
\n\n
function traverseNode(root, callback) {\n
\t
callback(root);
\n\t
if (root.children && root.children.length > 0) {\n
\t\t
for (let childNode of root.children) {\n
\t\t\t
traverseNode(childNode, callback);
\n\t\t
}
\n\t
}
\n
}
\n
"
],
"names"
:
[
"compute"
],
"mappings"
:
"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"
}
{
"version"
:
3
,
"file"
:
"index.js"
,
"sources"
:
[
"../src/ProcessManager.js"
,
"../src/ScriptManager.js"
,
"../src/CustomManager.js"
,
"../src/main.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2019-11-29.
\n
*/
\n\n
import crypto from 'crypto'
\n\n
function md5(source) {\n
\t
const hash = crypto.createHash('md5');
\n\t
return hash.update(source).digest('hex');
\n
}
\n\n
export default class ProcessManager {\n
\t
constructor() {\n
\t\t
this.pool = {};
\n\t\t
this.scripts = '';
\n\t
}
\n\n\t
deal(process) {\n
\t\t
let hash = this.put(process);
\n\t\t
if (hash) {\n
\t\t\t
process.script = 'link://' + hash;
\n\t\t
}
\n\t\t
if (process.metas) {\n
\t\t\t
for (let subProcess of process.metas)
{
\n\t\t\t\tthis.deal(subProcess);\n\t\t\t}\n\t\t}\n\t
}
\n\n\t
put(process) {\n
\t\t
const {id, name, script} = process;
\n\t\t
if (script) {\n
\t\t\t
let hash = md5(script);
\n\t\t\t
if (!this.pool.hasOwnProperty(hash)) {\n
\t\t\t\t
this.pool[hash] = {\n
\t\t\t\t\t
script,
\n\t\t\t\t\t
ids: [],
\n\t\t\t\t
};
\n\t\t\t
}
\n\t\t\t
this.pool[hash].ids.push(`${id} - ${name}`);
\n\t\t\t
return hash;
\n\t\t
}
\n\t
}
\n\n\t
generateCurrent() {\n
\t\t
let scripts = '';
\n\t\t
for (let hash in this.pool) {\n
\t\t\t
let {script, ids} = this.pool[hash];
\n\t\t\t
let idsComment = ids.map(id => {\n
\t\t\t\t
return `/*== ${id} ==*/`
\n\t\t\t
}).join('
\\
n');
\n\t\t\t
scripts += `
\n\t
exports['${hash}'] = function(args, props, target, global, vm, scope){\n
\t\t
return new Promise(function(resolve, reject)
{
\n\n${idsComment}\n${script
}
\n\n\t\t
function next(type, payload){resolve({type: type, payload: payload})}
\n\t\t
});
\n\t
};
\n
`;
\n\t\t
}
\n\t\t
this.scripts += scripts;
\n\t\t
this.pool = {};
\n\n\t\t
return scripts;
\n\t
}
\n\n\t
coverScripts(scripts) {\n
\t\t
this.scripts = scripts;
\n\t
}
\n\n\t
generate() {\n
\t\t
this.generateCurrent();
\n\t\t
let scripts = this.scripts;
\n\n\t\t
return `
\n
console.log('processes.js loaded');
\n\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\n
export default class ScriptManager {\n
\t
constructor() {\n
\t\t
this.pool = [];
\n\t
}
\n\n\t
deal(script)
{
\n\t\tthis.pool.push(script);\n\t
}
\n\n\t
generate(){\n
\t\t
let scripts = '';
\n\t\t
for(let {id, code} of this.pool){\n
\t\t\t
scripts += `
\n
/*=====START ${id} START=====*/
\n
(function(exports)
{
\n${code}\n
}
)(exports);
\n\t
engine.registerScriptDef(exports.default.id, exports.default);
\n
/*=====END ${id} END=====*/`;
\n\t\t
}
\n\n\t\t
return `
\n
console.log('scripts.js loaded');
\n\n
(function(){\nvar exports =
{
};\n${scripts}\n})();\n`;\n\t}\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-11-29.
\n
*/
\n\n
export default class CustomManager {\n
\t
constructor() {\n
\t\t
this.pool = [];
\n\t
}
\n\n\t
deal(custom)
{
\n\t\tthis.pool.push(custom);\n\t
}
\n\n\t
generate() {\n
\t\t
let scripts = '';
\n\t\t
for (let {id, code} of this.pool) {\n
\t\t\t
scripts += `
\n
/*=====START ${id} START=====*/
\n
var module = {\n
\t
exports:
{
}\n
}
;
\n
(function(module){\nfunction getAssetByUUID(uuid){\n
\t
return engine.resolveCustomAsset('${id}', uuid);
\n
}
\n
function getProps(){\n
\t
return engine.getProps('${id}');
\n
}
\n\n
${code}
\n
})(module);
\n
exports['${id}'] = module.exports;
\n
/*=====END ${id} END=====*/`;
\n\t\t
}
\n\n\t\t
return `
\n
console.log('customs.js loaded');
\n\n
(function(){\nvar exports = {};
\n\n
function require(id){\n
\t
if(id === 'tslib'){\n
\t\t
return window['tslib']
\t\n\t
}else{\n
\t\t
console.log('missing require', id);
\n\t
}
\n
}
\n\n
${scripts}
\n\n\t
for(var key in exports){\n
\t\t
engine.registerCustomModule(key, exports[key]);
\n\t
}
\n
})();
\n
`
\n\t
}
\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-12-20.
\n
*/
\n\n
import ProcessManager from
\"
./ProcessManager
\"
;
\n
import ScriptManager from
\"
./ScriptManager
\"
;
\n
import CustomManager from
\"
./CustomManager
\"
;
\n
import
{
compute
}
from
\"
props-compute
\"
;
\n\n
const TAG = 'zeroing-code-divider';
\n\n
export async function divideCode(data, {debug, compile, uglify, getPackages}) {\n
\t
const processManager = new ProcessManager();
\n\t
const scriptManager = new ScriptManager();
\n\t
const customManager = new CustomManager();
\n\n\t
const dependencies = data.dependencies;
\n\n\t
/*=====START process =====*/
\n\t
//console.log(TAG, 'start process');
\n\t
let processIDs = [];
\n\t
findDepPidsBat(processIDs, data.processes);
\n\t
let builtinProcesses = data.builtinProcesses = [];
\n\n\t
let bProcessIDs = processIDs;
\n\t
while (true) {\n
\t\t
let newPids = await addBuiltinProcesses(builtinProcesses, bProcessIDs, getPackages, dependencies);
\n\t\t
bProcessIDs = [];
\n\t\t
for (let id of newPids) {\n
\t\t\t
if (!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\t
if (bProcessIDs.length === 0)
{
\n\t\t\tbreak;\n\t\t}\n\t
}
\n\n\t
for (let process of data.processes)
{
\n\t\tprocessManager.deal(process);\n\t
}
\n\n\t
//console.log(TAG, 'processManager.generateCurrent()');
\n\n\t
let ptScript = processManager.generateCurrent();
\n\t
if (compile) {\n
\t\t
const result = await compile(ptScript);
\n\t\t
processManager.coverScripts(result.code); //自定义过程先编译
\n\t
}
\n\n\t
for (let process of builtinProcesses)
{
\n\t\tprocessManager.deal(process);\n\t
}
\n\n\t
let processScriptContent = processManager.generate();
\n\t
//console.log(processScriptContent);
\n\t
if (!debug) {\n
\t\t
processScriptContent = uglify(processScriptContent);
\n\t
}
\n\t
/*=====END process =====*/
\n\n\t
/*=====START script =====*/
\n\t
//console.log(TAG, 'start script');
\n\t
let scriptIDs = [];
\n\t
for (let view of data.views) {\n
\t\t
traverseNode(view, (node) => {\n
\t\t\t
if (node.scripts && node.scripts.length > 0) {\n
\t\t\t\t
for (let
{
script
}
of node.scripts) {\n
\t\t\t\t\t
if (!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 = data.scripts = {};
\n\t
//let scriptsCode = '';
\n\t
if (scriptIDs.length > 0) {\n
\t\t
const scripts = await getPackages(scriptIDs);
\n\t\t
for (let scriptData of scripts) {\n
\t\t\t
let script = typeof scriptData === 'string' ? JSON.parse(scriptData) : scriptData;
\n\t\t\t
//scriptsContainer[id] = code;
\n\t\t\t
scriptManager.deal(script);
\n\t\t
}
\n\t\t
//console.log('scripts:', scriptsContainer);
\n\t
}
\n\n\t
let scriptsContent = scriptManager.generate();
\n\t
//console.log(scriptsContent);
\n\t
if (!debug) {\n
\t\t
scriptsContent = uglify(scriptsContent);
\n\t
}
\n\t
/*=====END script =====*/
\n\n\t
/*=====START custom =====*/
\n\t
//console.log(TAG, 'start custom');
\n\t
//data.customs = [];
\n\t
const customs = data.customs;
\n\t
if (customs && customs.length > 0) {\n
\t\t
let customMetas = await getPackages(customs.map(item => item.id));
\n\t\t
data.customs = customMetas.map(item => {\n
\t\t\t
const custom = typeof item === 'string' ? JSON.parse(item) : item;
\n\t\t\t
customManager.deal(custom);
\n\t\t\t
let {props, assetMapping} = customs.find(c => c.id === custom.id);
\n\t\t\t
/*if (props) {\n
\t\t\t\t
for (let key in custom.props) {\n
\t\t\t\t\t
if (!props.hasOwnProperty(key) && custom.props[key].hasOwnProperty('default')) {\n
\t\t\t\t\t\t
props[key] = custom.props[key].default;
\n\t\t\t\t\t
}
\n\t\t\t\t
}
\n\t\t\t
}*/
\n\t\t\t
compute(props, custom.props);
\n\t\t\t
for (let uuid in assetMapping) {\n
\t\t\t\t
let asset = custom.assets.find(item => item.uuid === uuid);
\n\t\t\t\t
if (asset) {\n
\t\t\t\t\t
asset.url = assetMapping[uuid];
\n\t\t\t\t
}
\n\t\t\t
}
\n\t\t\t
return {\n
\t\t\t\t
id: custom.id,
\n\t\t\t\t
name: custom.name,
\n\t\t\t\t
assets: custom.assets,
\n\t\t\t\t
props,
\n\t\t\t
};
\n\t\t
})
\n\t
}
\n\t
let customScriptContent = customManager.generate();
\n\t
//console.log(customScriptContent);
\n\t
if (!debug) {\n
\t\t
customScriptContent = uglify(customScriptContent);
\n\t
}
\n\t
/*=====END custom =====*/
\n\n\t
return
{
\n\t\tprocessScriptContent,\n\t\tscriptsContent,\n\t\tcustomScriptContent,\n\t}\n
}
\n\n
function findDepPids(list, process) {\n
\t
if (process.sub) {\n
\t\t
for (let key in process.sub) {\n
\t\t\t
let p = process.sub[key];
\n\t\t\t
if (!list.includes(p.meta))
{
\n\t\t\t\tlist.push(p.meta);\n\t\t\t}\n\t\t}\n\t}\n
}
\n\n
function findDepPidsBat(list, processes) {\n
\t
for (let process of processes) {\n
\t\t
findDepPids(list, process);
\n\t\t
if (process.metas) {\n
\t\t\t
findDepPidsBat(list, process.metas)
\n\t\t
}
\n\t
}
\n
}
\n\n
async function addBuiltinProcesses(list, ids, getPackages, dependencies) {\n
\t
let newPids = [];
\n\t
let schema = {};
\n\t
if (ids.length > 0) {\n
\t\t
for(let id of ids){\n
\t\t\t
schema[id] = dependencies[id];
\n\t\t
}
\n\t\t
let processes = await getPackages(schema);
\n\t\t
for (let processData of processes) {\n
\t\t\t
let process = typeof processData === 'string' ? JSON.parse(processData) : processData;
\n\t\t\t
list.push(process);
\n\t\t\t
findDepPids(newPids, process);
\n\t\t
}
\n\t
}
\n\t
return newPids;
\n
}
\n\n
function traverseNode(root, callback) {\n
\t
callback(root);
\n\t
if (root.children && root.children.length > 0) {\n
\t\t
for (let childNode of root.children) {\n
\t\t\t
traverseNode(childNode, callback);
\n\t\t
}
\n\t
}
\n
}
\n
"
],
"names"
:
[
"compute"
],
"mappings"
:
";;;;;;;;;AAAA;;;AAGA,AAEA;AACA,SAAS,GAAG,CAAC,MAAM,EAAE;CACpB,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;CACtC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CACzC;;AAED,AAAe,MAAM,cAAc,CAAC;CACnC,WAAW,GAAG;EACb,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;EACf,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;EAClB;;CAED,IAAI,CAAC,OAAO,EAAE;EACb,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;EAC7B,IAAI,IAAI,EAAE;GACT,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;GAClC;EACD,IAAI,OAAO,CAAC,KAAK,EAAE;GAClB,KAAK,IAAI,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE;IACrC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtB;GACD;EACD;;CAED,GAAG,CAAC,OAAO,EAAE;EACZ,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;EACnC,IAAI,MAAM,EAAE;GACX,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;GACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;IACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;KACjB,MAAM;KACN,GAAG,EAAE,EAAE;KACP,CAAC;IACF;GACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;GAC5C,OAAO,IAAI,CAAC;GACZ;EACD;;CAED,eAAe,GAAG;EACjB,IAAI,OAAO,GAAG,EAAE,CAAC;EACjB,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;GAC3B,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;GACpC,IAAI,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI;IAC9B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;IACxB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;GACd,OAAO,IAAI,CAAC;UACL,EAAE,IAAI,CAAC;;;AAGjB,EAAE,UAAU,CAAC;AACb,EAAE,MAAM,CAAC;;;;;AAKT,CAAC,CAAC;GACC;EACD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;EACxB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;;EAEf,OAAO,OAAO,CAAC;EACf;;CAED,YAAY,CAAC,OAAO,EAAE;EACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EACvB;;CAED,QAAQ,GAAG;EACV,IAAI,CAAC,eAAe,EAAE,CAAC;EACvB,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;EAE3B,OAAO,CAAC;;;;;AAKV,EAAE,OAAO,CAAC;;;;AAIV,CAAC;EACC;CACD;;ACxFD;;;;AAIA,AAAe,MAAM,aAAa,CAAC;CAClC,WAAW,GAAG;EACb,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;EACf;;CAED,IAAI,CAAC,MAAM,CAAC;EACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACvB;;CAED,QAAQ,EAAE;EACT,IAAI,OAAO,GAAG,EAAE,CAAC;EACjB,IAAI,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;GAC/B,OAAO,IAAI,CAAC;aACF,EAAE,EAAE,CAAC;;AAElB,EAAE,IAAI,CAAC;;;WAGI,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;GAC1B;;EAED,OAAO,CAAC;;;;;AAKV,EAAE,OAAO,CAAC;;AAEV,CAAC,CAAC;EACA;CACD;;AClCD;;;;AAIA,AAAe,MAAM,aAAa,CAAC;CAClC,WAAW,GAAG;EACb,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;EACf;;CAED,IAAI,CAAC,MAAM,EAAE;EACZ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACvB;;CAED,QAAQ,GAAG;EACV,IAAI,OAAO,GAAG,EAAE,CAAC;EACjB,KAAK,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;GACjC,OAAO,IAAI,CAAC;aACF,EAAE,EAAE,CAAC;;;;;;mCAMiB,EAAE,EAAE,CAAC;;;yBAGf,EAAE,EAAE,CAAC;;;AAG9B,EAAE,IAAI,CAAC;;SAEE,EAAE,EAAE,CAAC;WACH,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;GAC1B;;EAED,OAAO,CAAC;;;;;;;;;;;;;;AAcV,EAAE,OAAO,CAAC;;;;;;AAMV,CAAC;EACC;CACD;;ACzDD;;;AAGA,AAOA;AACA,AAAO,eAAe,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE;CAC7E,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;CAC5C,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;CAC1C,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;;CAE1C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;;;;CAIvC,IAAI,UAAU,GAAG,EAAE,CAAC;CACpB,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;CAC3C,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;;CAElD,IAAI,WAAW,GAAG,UAAU,CAAC;CAC7B,OAAO,IAAI,EAAE;EACZ,IAAI,OAAO,GAAG,MAAM,mBAAmB,CAAC,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;EAClG,WAAW,GAAG,EAAE,CAAC;EACjB,KAAK,IAAI,EAAE,IAAI,OAAO,EAAE;GACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;IAC7B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrB,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB;GACD;EACD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;GAC7B,MAAM;GACN;EACD;;CAED,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;EACnC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC7B;;;;CAID,IAAI,QAAQ,GAAG,cAAc,CAAC,eAAe,EAAE,CAAC;CAChD,IAAI,OAAO,EAAE;EACZ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;EACvC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACzC;;CAED,KAAK,IAAI,OAAO,IAAI,gBAAgB,EAAE;EACrC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EAC7B;;CAED,IAAI,oBAAoB,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;;CAErD,IAAI,CAAC,KAAK,EAAE;EACX,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;EACpD;;;;;CAKD,IAAI,SAAS,GAAG,EAAE,CAAC;CACnB,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;EAC5B,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK;GAC5B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IAC5C,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;KAClC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;MAChC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;MACvB;KACD;IACD;GACD,CAAC,CAAC;EACH;;;;CAID,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;EACzB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;EAC7C,KAAK,IAAI,UAAU,IAAI,OAAO,EAAE;GAC/B,IAAI,MAAM,GAAG,OAAO,UAAU,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;;GAElF,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;GAC3B;;EAED;;CAED,IAAI,cAAc,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;;CAE9C,IAAI,CAAC,KAAK,EAAE;EACX,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;EACxC;;;;;;CAMD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;CAC7B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;EAClC,IAAI,WAAW,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EAClE,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI;GACtC,MAAM,MAAM,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;GAClE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;GAC3B,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;;;;;;;;GAQlEA,oBAAO,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;GAC7B,KAAK,IAAI,IAAI,IAAI,YAAY,EAAE;IAC9B,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC3D,IAAI,KAAK,EAAE;KACV,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;KAC/B;IACD;GACD,OAAO;IACN,EAAE,EAAE,MAAM,CAAC,EAAE;IACb,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,KAAK;IACL,CAAC;GACF,EAAC;EACF;CACD,IAAI,mBAAmB,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;;CAEnD,IAAI,CAAC,KAAK,EAAE;EACX,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;EAClD;;;CAGD,OAAO;EACN,oBAAoB;EACpB,cAAc;EACd,mBAAmB;EACnB;CACD;;AAED,SAAS,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE;CACnC,IAAI,OAAO,CAAC,GAAG,EAAE;EAChB,KAAK,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;GAC5B,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;GACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;IAC3B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClB;GACD;EACD;CACD;;AAED,SAAS,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;CACxC,KAAK,IAAI,OAAO,IAAI,SAAS,EAAE;EAC9B,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;EAC3B,IAAI,OAAO,CAAC,KAAK,EAAE;GAClB,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAC;GACnC;EACD;CACD;;AAED,eAAe,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE;CACxE,IAAI,OAAO,GAAG,EAAE,CAAC;CACjB,IAAI,MAAM,GAAG,EAAE,CAAC;CAChB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;EACnB,IAAI,IAAI,EAAE,IAAI,GAAG,CAAC;GACjB,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;GAC9B;EACD,IAAI,SAAS,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;EAC1C,KAAK,IAAI,WAAW,IAAI,SAAS,EAAE;GAClC,IAAI,OAAO,GAAG,OAAO,WAAW,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;GACtF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;GACnB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;GAC9B;EACD;CACD,OAAO,OAAO,CAAC;CACf;;AAED,SAAS,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE;CACrC,QAAQ,CAAC,IAAI,CAAC,CAAC;CACf,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;EAC9C,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;GACpC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;GAClC;EACD;CACD;;;;"
}
\ No newline at end of file
\ No newline at end of file
dist/index.umd.js
View file @
0cb1266f
...
@@ -193,11 +193,13 @@ ${scripts}
...
@@ -193,11 +193,13 @@ ${scripts}
* Created by rockyl on 2019-12-20.
* Created by rockyl on 2019-12-20.
*/
*/
async
function
divideCode
(
data
,
{
debug
,
compile
,
uglify
,
getP
rocesses
,
getScripts
,
getCustom
s
})
{
async
function
divideCode
(
data
,
{
debug
,
compile
,
uglify
,
getP
ackage
s
})
{
const
processManager
=
new
ProcessManager
();
const
processManager
=
new
ProcessManager
();
const
scriptManager
=
new
ScriptManager
();
const
scriptManager
=
new
ScriptManager
();
const
customManager
=
new
CustomManager
();
const
customManager
=
new
CustomManager
();
const
dependencies
=
data
.
dependencies
;
/*=====START process =====*/
/*=====START process =====*/
//console.log(TAG, 'start process');
//console.log(TAG, 'start process');
let
processIDs
=
[];
let
processIDs
=
[];
...
@@ -206,7 +208,7 @@ ${scripts}
...
@@ -206,7 +208,7 @@ ${scripts}
let
bProcessIDs
=
processIDs
;
let
bProcessIDs
=
processIDs
;
while
(
true
)
{
while
(
true
)
{
let
newPids
=
await
addBuiltinProcesses
(
builtinProcesses
,
bProcessIDs
,
getP
rocess
es
);
let
newPids
=
await
addBuiltinProcesses
(
builtinProcesses
,
bProcessIDs
,
getP
ackages
,
dependenci
es
);
bProcessIDs
=
[];
bProcessIDs
=
[];
for
(
let
id
of
newPids
)
{
for
(
let
id
of
newPids
)
{
if
(
!
processIDs
.
includes
(
id
))
{
if
(
!
processIDs
.
includes
(
id
))
{
...
@@ -260,7 +262,7 @@ ${scripts}
...
@@ -260,7 +262,7 @@ ${scripts}
//let scriptsContainer = data.scripts = {};
//let scriptsContainer = data.scripts = {};
//let scriptsCode = '';
//let scriptsCode = '';
if
(
scriptIDs
.
length
>
0
)
{
if
(
scriptIDs
.
length
>
0
)
{
const
scripts
=
await
get
Script
s
(
scriptIDs
);
const
scripts
=
await
get
Package
s
(
scriptIDs
);
for
(
let
scriptData
of
scripts
)
{
for
(
let
scriptData
of
scripts
)
{
let
script
=
typeof
scriptData
===
'string'
?
JSON
.
parse
(
scriptData
)
:
scriptData
;
let
script
=
typeof
scriptData
===
'string'
?
JSON
.
parse
(
scriptData
)
:
scriptData
;
//scriptsContainer[id] = code;
//scriptsContainer[id] = code;
...
@@ -281,7 +283,7 @@ ${scripts}
...
@@ -281,7 +283,7 @@ ${scripts}
//data.customs = [];
//data.customs = [];
const
customs
=
data
.
customs
;
const
customs
=
data
.
customs
;
if
(
customs
&&
customs
.
length
>
0
)
{
if
(
customs
&&
customs
.
length
>
0
)
{
let
customMetas
=
await
get
Custom
s
(
customs
.
map
(
item
=>
item
.
id
));
let
customMetas
=
await
get
Package
s
(
customs
.
map
(
item
=>
item
.
id
));
data
.
customs
=
customMetas
.
map
(
item
=>
{
data
.
customs
=
customMetas
.
map
(
item
=>
{
const
custom
=
typeof
item
===
'string'
?
JSON
.
parse
(
item
)
:
item
;
const
custom
=
typeof
item
===
'string'
?
JSON
.
parse
(
item
)
:
item
;
customManager
.
deal
(
custom
);
customManager
.
deal
(
custom
);
...
@@ -342,10 +344,14 @@ ${scripts}
...
@@ -342,10 +344,14 @@ ${scripts}
}
}
}
}
async
function
addBuiltinProcesses
(
list
,
ids
,
getP
rocess
es
)
{
async
function
addBuiltinProcesses
(
list
,
ids
,
getP
ackages
,
dependenci
es
)
{
let
newPids
=
[];
let
newPids
=
[];
let
schema
=
{};
if
(
ids
.
length
>
0
)
{
if
(
ids
.
length
>
0
)
{
let
processes
=
await
getProcesses
(
ids
);
for
(
let
id
of
ids
){
schema
[
id
]
=
dependencies
[
id
];
}
let
processes
=
await
getPackages
(
schema
);
for
(
let
processData
of
processes
)
{
for
(
let
processData
of
processes
)
{
let
process
=
typeof
processData
===
'string'
?
JSON
.
parse
(
processData
)
:
processData
;
let
process
=
typeof
processData
===
'string'
?
JSON
.
parse
(
processData
)
:
processData
;
list
.
push
(
process
);
list
.
push
(
process
);
...
...
dist/index.umd.js.map
View file @
0cb1266f
{
"version"
:
3
,
"file"
:
"index.umd.js"
,
"sources"
:
[
"../src/ProcessManager.js"
,
"../src/ScriptManager.js"
,
"../src/CustomManager.js"
,
"../src/main.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2019-11-29.
\n
*/
\n\n
import crypto from 'crypto'
\n\n
function md5(source) {\n
\t
const hash = crypto.createHash('md5');
\n\t
return hash.update(source).digest('hex');
\n
}
\n\n
export default class ProcessManager {\n
\t
constructor() {\n
\t\t
this.pool = {};
\n\t\t
this.scripts = '';
\n\t
}
\n\n\t
deal(process) {\n
\t\t
let hash = this.put(process);
\n\t\t
if (hash) {\n
\t\t\t
process.script = 'link://' + hash;
\n\t\t
}
\n\t\t
if (process.metas) {\n
\t\t\t
for (let subProcess of process.metas)
{
\n\t\t\t\tthis.deal(subProcess);\n\t\t\t}\n\t\t}\n\t
}
\n\n\t
put(process) {\n
\t\t
const {id, name, script} = process;
\n\t\t
if (script) {\n
\t\t\t
let hash = md5(script);
\n\t\t\t
if (!this.pool.hasOwnProperty(hash)) {\n
\t\t\t\t
this.pool[hash] = {\n
\t\t\t\t\t
script,
\n\t\t\t\t\t
ids: [],
\n\t\t\t\t
};
\n\t\t\t
}
\n\t\t\t
this.pool[hash].ids.push(`${id} - ${name}`);
\n\t\t\t
return hash;
\n\t\t
}
\n\t
}
\n\n\t
generateCurrent() {\n
\t\t
let scripts = '';
\n\t\t
for (let hash in this.pool) {\n
\t\t\t
let {script, ids} = this.pool[hash];
\n\t\t\t
let idsComment = ids.map(id => {\n
\t\t\t\t
return `/*== ${id} ==*/`
\n\t\t\t
}).join('
\\
n');
\n\t\t\t
scripts += `
\n\t
exports['${hash}'] = function(args, props, target, global, vm, scope){\n
\t\t
return new Promise(function(resolve, reject)
{
\n\n${idsComment}\n${script
}
\n\n\t\t
function next(type, payload){resolve({type: type, payload: payload})}
\n\t\t
});
\n\t
};
\n
`;
\n\t\t
}
\n\t\t
this.scripts += scripts;
\n\t\t
this.pool = {};
\n\n\t\t
return scripts;
\n\t
}
\n\n\t
coverScripts(scripts) {\n
\t\t
this.scripts = scripts;
\n\t
}
\n\n\t
generate() {\n
\t\t
this.generateCurrent();
\n\t\t
let scripts = this.scripts;
\n\n\t\t
return `
\n
console.log('processes.js loaded');
\n\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\n
export default class ScriptManager {\n
\t
constructor() {\n
\t\t
this.pool = [];
\n\t
}
\n\n\t
deal(script)
{
\n\t\tthis.pool.push(script);\n\t
}
\n\n\t
generate(){\n
\t\t
let scripts = '';
\n\t\t
for(let {id, code} of this.pool){\n
\t\t\t
scripts += `
\n
/*=====START ${id} START=====*/
\n
(function(exports)
{
\n${code}\n
}
)(exports);
\n\t
engine.registerScriptDef(exports.default.id, exports.default);
\n
/*=====END ${id} END=====*/`;
\n\t\t
}
\n\n\t\t
return `
\n
console.log('scripts.js loaded');
\n\n
(function(){\nvar exports =
{
};\n${scripts}\n})();\n`;\n\t}\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-11-29.
\n
*/
\n\n
export default class CustomManager {\n
\t
constructor() {\n
\t\t
this.pool = [];
\n\t
}
\n\n\t
deal(custom)
{
\n\t\tthis.pool.push(custom);\n\t
}
\n\n\t
generate() {\n
\t\t
let scripts = '';
\n\t\t
for (let {id, code} of this.pool) {\n
\t\t\t
scripts += `
\n
/*=====START ${id} START=====*/
\n
var module = {\n
\t
exports:
{
}\n
}
;
\n
(function(module){\nfunction getAssetByUUID(uuid){\n
\t
return engine.resolveCustomAsset('${id}', uuid);
\n
}
\n
function getProps(){\n
\t
return engine.getProps('${id}');
\n
}
\n\n
${code}
\n
})(module);
\n
exports['${id}'] = module.exports;
\n
/*=====END ${id} END=====*/`;
\n\t\t
}
\n\n\t\t
return `
\n
console.log('customs.js loaded');
\n\n
(function(){\nvar exports = {};
\n\n
function require(id){\n
\t
if(id === 'tslib'){\n
\t\t
return window['tslib']
\t\n\t
}else{\n
\t\t
console.log('missing require', id);
\n\t
}
\n
}
\n\n
${scripts}
\n\n\t
for(var key in exports){\n
\t\t
engine.registerCustomModule(key, exports[key]);
\n\t
}
\n
})();
\n
`
\n\t
}
\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-12-20.
\n
*/
\n\n
import ProcessManager from
\"
./ProcessManager
\"
;
\n
import ScriptManager from
\"
./ScriptManager
\"
;
\n
import CustomManager from
\"
./CustomManager
\"
;
\n
import
{
compute
}
from
\"
props-compute
\"
;
\n\n
const TAG = 'zeroing-code-divider';
\n\n
export async function divideCode(data, {debug, compile, uglify, getProcesses, getScripts, getCustoms}) {\n
\t
const processManager = new ProcessManager();
\n\t
const scriptManager = new ScriptManager();
\n\t
const customManager = new CustomManager();
\n\n\t
/*=====START process =====*/
\n\t
//console.log(TAG, 'start process');
\n\t
let processIDs = [];
\n\t
findDepPidsBat(processIDs, data.processes);
\n\t
let builtinProcesses = data.builtinProcesses = [];
\n\n\t
let bProcessIDs = processIDs;
\n\t
while (true) {\n
\t\t
let newPids = await addBuiltinProcesses(builtinProcesses, bProcessIDs, getProcesses);
\n\t\t
bProcessIDs = [];
\n\t\t
for (let id of newPids) {\n
\t\t\t
if (!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\t
if (bProcessIDs.length === 0)
{
\n\t\t\tbreak;\n\t\t}\n\t
}
\n\n\t
for (let process of data.processes)
{
\n\t\tprocessManager.deal(process);\n\t
}
\n\n\t
//console.log(TAG, 'processManager.generateCurrent()');
\n\n\t
let ptScript = processManager.generateCurrent();
\n\t
if (compile) {\n
\t\t
const result = await compile(ptScript);
\n\t\t
processManager.coverScripts(result.code); //自定义过程先编译
\n\t
}
\n\n\t
for (let process of builtinProcesses)
{
\n\t\tprocessManager.deal(process);\n\t
}
\n\n\t
let processScriptContent = processManager.generate();
\n\t
//console.log(processScriptContent);
\n\t
if (!debug) {\n
\t\t
processScriptContent = uglify(processScriptContent);
\n\t
}
\n\t
/*=====END process =====*/
\n\n\t
/*=====START script =====*/
\n\t
//console.log(TAG, 'start script');
\n\t
let scriptIDs = [];
\n\t
for (let view of data.views) {\n
\t\t
traverseNode(view, (node) => {\n
\t\t\t
if (node.scripts && node.scripts.length > 0) {\n
\t\t\t\t
for (let
{
script
}
of node.scripts) {\n
\t\t\t\t\t
if (!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 = data.scripts = {};
\n\t
//let scriptsCode = '';
\n\t
if (scriptIDs.length > 0) {\n
\t\t
const scripts = await getScripts(scriptIDs);
\n\t\t
for (let scriptData of scripts) {\n
\t\t\t
let script = typeof scriptData === 'string' ? JSON.parse(scriptData) : scriptData;
\n\t\t\t
//scriptsContainer[id] = code;
\n\t\t\t
scriptManager.deal(script);
\n\t\t
}
\n\t\t
//console.log('scripts:', scriptsContainer);
\n\t
}
\n\n\t
let scriptsContent = scriptManager.generate();
\n\t
//console.log(scriptsContent);
\n\t
if (!debug) {\n
\t\t
scriptsContent = uglify(scriptsContent);
\n\t
}
\n\t
/*=====END script =====*/
\n\n\t
/*=====START custom =====*/
\n\t
//console.log(TAG, 'start custom');
\n\t
//data.customs = [];
\n\t
const customs = data.customs;
\n\t
if (customs && customs.length > 0) {\n
\t\t
let customMetas = await getCustoms(customs.map(item => item.id));
\n\t\t
data.customs = customMetas.map(item => {\n
\t\t\t
const custom = typeof item === 'string' ? JSON.parse(item) : item;
\n\t\t\t
customManager.deal(custom);
\n\t\t\t
let {props, assetMapping} = customs.find(c => c.id === custom.id);
\n\t\t\t
/*if (props) {\n
\t\t\t\t
for (let key in custom.props) {\n
\t\t\t\t\t
if (!props.hasOwnProperty(key) && custom.props[key].hasOwnProperty('default')) {\n
\t\t\t\t\t\t
props[key] = custom.props[key].default;
\n\t\t\t\t\t
}
\n\t\t\t\t
}
\n\t\t\t
}*/
\n\t\t\t
compute(props, custom.props);
\n\t\t\t
for (let uuid in assetMapping) {\n
\t\t\t\t
let asset = custom.assets.find(item => item.uuid === uuid);
\n\t\t\t\t
if (asset) {\n
\t\t\t\t\t
asset.url = assetMapping[uuid];
\n\t\t\t\t
}
\n\t\t\t
}
\n\t\t\t
return {\n
\t\t\t\t
id: custom.id,
\n\t\t\t\t
name: custom.name,
\n\t\t\t\t
assets: custom.assets,
\n\t\t\t\t
props,
\n\t\t\t
};
\n\t\t
})
\n\t
}
\n\t
let customScriptContent = customManager.generate();
\n\t
//console.log(customScriptContent);
\n\t
if (!debug) {\n
\t\t
customScriptContent = uglify(customScriptContent);
\n\t
}
\n\t
/*=====END custom =====*/
\n\n\t
return
{
\n\t\tprocessScriptContent,\n\t\tscriptsContent,\n\t\tcustomScriptContent,\n\t}\n
}
\n\n
function findDepPids(list, process) {\n
\t
if (process.sub) {\n
\t\t
for (let key in process.sub) {\n
\t\t\t
let p = process.sub[key];
\n\t\t\t
if (!list.includes(p.meta))
{
\n\t\t\t\tlist.push(p.meta);\n\t\t\t}\n\t\t}\n\t}\n
}
\n\n
function findDepPidsBat(list, processes) {\n
\t
for (let process of processes) {\n
\t\t
findDepPids(list, process);
\n\t\t
if (process.metas) {\n
\t\t\t
findDepPidsBat(list, process.metas)
\n\t\t
}
\n\t
}
\n
}
\n\n
async function addBuiltinProcesses(list, ids, getProcesses) {\n
\t
let newPids = [];
\n\t
if (ids.length > 0) {\n
\t\t
let processes = await getProcesses(ids);
\n\t\t
for (let processData of processes) {\n
\t\t\t
let process = typeof processData === 'string' ? JSON.parse(processData) : processData;
\n\t\t\t
list.push(process);
\n\t\t\t
findDepPids(newPids, process);
\n\t\t
}
\n\t
}
\n\t
return newPids;
\n
}
\n\n
function traverseNode(root, callback) {\n
\t
callback(root);
\n\t
if (root.children && root.children.length > 0) {\n
\t\t
for (let childNode of root.children) {\n
\t\t\t
traverseNode(childNode, callback);
\n\t\t
}
\n\t
}
\n
}
\n
"
],
"names"
:
[
"compute"
],
"mappings"
:
"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"
}
{
"version"
:
3
,
"file"
:
"index.umd.js"
,
"sources"
:
[
"../src/ProcessManager.js"
,
"../src/ScriptManager.js"
,
"../src/CustomManager.js"
,
"../src/main.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2019-11-29.
\n
*/
\n\n
import crypto from 'crypto'
\n\n
function md5(source) {\n
\t
const hash = crypto.createHash('md5');
\n\t
return hash.update(source).digest('hex');
\n
}
\n\n
export default class ProcessManager {\n
\t
constructor() {\n
\t\t
this.pool = {};
\n\t\t
this.scripts = '';
\n\t
}
\n\n\t
deal(process) {\n
\t\t
let hash = this.put(process);
\n\t\t
if (hash) {\n
\t\t\t
process.script = 'link://' + hash;
\n\t\t
}
\n\t\t
if (process.metas) {\n
\t\t\t
for (let subProcess of process.metas)
{
\n\t\t\t\tthis.deal(subProcess);\n\t\t\t}\n\t\t}\n\t
}
\n\n\t
put(process) {\n
\t\t
const {id, name, script} = process;
\n\t\t
if (script) {\n
\t\t\t
let hash = md5(script);
\n\t\t\t
if (!this.pool.hasOwnProperty(hash)) {\n
\t\t\t\t
this.pool[hash] = {\n
\t\t\t\t\t
script,
\n\t\t\t\t\t
ids: [],
\n\t\t\t\t
};
\n\t\t\t
}
\n\t\t\t
this.pool[hash].ids.push(`${id} - ${name}`);
\n\t\t\t
return hash;
\n\t\t
}
\n\t
}
\n\n\t
generateCurrent() {\n
\t\t
let scripts = '';
\n\t\t
for (let hash in this.pool) {\n
\t\t\t
let {script, ids} = this.pool[hash];
\n\t\t\t
let idsComment = ids.map(id => {\n
\t\t\t\t
return `/*== ${id} ==*/`
\n\t\t\t
}).join('
\\
n');
\n\t\t\t
scripts += `
\n\t
exports['${hash}'] = function(args, props, target, global, vm, scope){\n
\t\t
return new Promise(function(resolve, reject)
{
\n\n${idsComment}\n${script
}
\n\n\t\t
function next(type, payload){resolve({type: type, payload: payload})}
\n\t\t
});
\n\t
};
\n
`;
\n\t\t
}
\n\t\t
this.scripts += scripts;
\n\t\t
this.pool = {};
\n\n\t\t
return scripts;
\n\t
}
\n\n\t
coverScripts(scripts) {\n
\t\t
this.scripts = scripts;
\n\t
}
\n\n\t
generate() {\n
\t\t
this.generateCurrent();
\n\t\t
let scripts = this.scripts;
\n\n\t\t
return `
\n
console.log('processes.js loaded');
\n\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\n
export default class ScriptManager {\n
\t
constructor() {\n
\t\t
this.pool = [];
\n\t
}
\n\n\t
deal(script)
{
\n\t\tthis.pool.push(script);\n\t
}
\n\n\t
generate(){\n
\t\t
let scripts = '';
\n\t\t
for(let {id, code} of this.pool){\n
\t\t\t
scripts += `
\n
/*=====START ${id} START=====*/
\n
(function(exports)
{
\n${code}\n
}
)(exports);
\n\t
engine.registerScriptDef(exports.default.id, exports.default);
\n
/*=====END ${id} END=====*/`;
\n\t\t
}
\n\n\t\t
return `
\n
console.log('scripts.js loaded');
\n\n
(function(){\nvar exports =
{
};\n${scripts}\n})();\n`;\n\t}\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-11-29.
\n
*/
\n\n
export default class CustomManager {\n
\t
constructor() {\n
\t\t
this.pool = [];
\n\t
}
\n\n\t
deal(custom)
{
\n\t\tthis.pool.push(custom);\n\t
}
\n\n\t
generate() {\n
\t\t
let scripts = '';
\n\t\t
for (let {id, code} of this.pool) {\n
\t\t\t
scripts += `
\n
/*=====START ${id} START=====*/
\n
var module = {\n
\t
exports:
{
}\n
}
;
\n
(function(module){\nfunction getAssetByUUID(uuid){\n
\t
return engine.resolveCustomAsset('${id}', uuid);
\n
}
\n
function getProps(){\n
\t
return engine.getProps('${id}');
\n
}
\n\n
${code}
\n
})(module);
\n
exports['${id}'] = module.exports;
\n
/*=====END ${id} END=====*/`;
\n\t\t
}
\n\n\t\t
return `
\n
console.log('customs.js loaded');
\n\n
(function(){\nvar exports = {};
\n\n
function require(id){\n
\t
if(id === 'tslib'){\n
\t\t
return window['tslib']
\t\n\t
}else{\n
\t\t
console.log('missing require', id);
\n\t
}
\n
}
\n\n
${scripts}
\n\n\t
for(var key in exports){\n
\t\t
engine.registerCustomModule(key, exports[key]);
\n\t
}
\n
})();
\n
`
\n\t
}
\n
}
\n
"
,
"/**
\n
* Created by rockyl on 2019-12-20.
\n
*/
\n\n
import ProcessManager from
\"
./ProcessManager
\"
;
\n
import ScriptManager from
\"
./ScriptManager
\"
;
\n
import CustomManager from
\"
./CustomManager
\"
;
\n
import
{
compute
}
from
\"
props-compute
\"
;
\n\n
const TAG = 'zeroing-code-divider';
\n\n
export async function divideCode(data, {debug, compile, uglify, getPackages}) {\n
\t
const processManager = new ProcessManager();
\n\t
const scriptManager = new ScriptManager();
\n\t
const customManager = new CustomManager();
\n\n\t
const dependencies = data.dependencies;
\n\n\t
/*=====START process =====*/
\n\t
//console.log(TAG, 'start process');
\n\t
let processIDs = [];
\n\t
findDepPidsBat(processIDs, data.processes);
\n\t
let builtinProcesses = data.builtinProcesses = [];
\n\n\t
let bProcessIDs = processIDs;
\n\t
while (true) {\n
\t\t
let newPids = await addBuiltinProcesses(builtinProcesses, bProcessIDs, getPackages, dependencies);
\n\t\t
bProcessIDs = [];
\n\t\t
for (let id of newPids) {\n
\t\t\t
if (!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\t
if (bProcessIDs.length === 0)
{
\n\t\t\tbreak;\n\t\t}\n\t
}
\n\n\t
for (let process of data.processes)
{
\n\t\tprocessManager.deal(process);\n\t
}
\n\n\t
//console.log(TAG, 'processManager.generateCurrent()');
\n\n\t
let ptScript = processManager.generateCurrent();
\n\t
if (compile) {\n
\t\t
const result = await compile(ptScript);
\n\t\t
processManager.coverScripts(result.code); //自定义过程先编译
\n\t
}
\n\n\t
for (let process of builtinProcesses)
{
\n\t\tprocessManager.deal(process);\n\t
}
\n\n\t
let processScriptContent = processManager.generate();
\n\t
//console.log(processScriptContent);
\n\t
if (!debug) {\n
\t\t
processScriptContent = uglify(processScriptContent);
\n\t
}
\n\t
/*=====END process =====*/
\n\n\t
/*=====START script =====*/
\n\t
//console.log(TAG, 'start script');
\n\t
let scriptIDs = [];
\n\t
for (let view of data.views) {\n
\t\t
traverseNode(view, (node) => {\n
\t\t\t
if (node.scripts && node.scripts.length > 0) {\n
\t\t\t\t
for (let
{
script
}
of node.scripts) {\n
\t\t\t\t\t
if (!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 = data.scripts = {};
\n\t
//let scriptsCode = '';
\n\t
if (scriptIDs.length > 0) {\n
\t\t
const scripts = await getPackages(scriptIDs);
\n\t\t
for (let scriptData of scripts) {\n
\t\t\t
let script = typeof scriptData === 'string' ? JSON.parse(scriptData) : scriptData;
\n\t\t\t
//scriptsContainer[id] = code;
\n\t\t\t
scriptManager.deal(script);
\n\t\t
}
\n\t\t
//console.log('scripts:', scriptsContainer);
\n\t
}
\n\n\t
let scriptsContent = scriptManager.generate();
\n\t
//console.log(scriptsContent);
\n\t
if (!debug) {\n
\t\t
scriptsContent = uglify(scriptsContent);
\n\t
}
\n\t
/*=====END script =====*/
\n\n\t
/*=====START custom =====*/
\n\t
//console.log(TAG, 'start custom');
\n\t
//data.customs = [];
\n\t
const customs = data.customs;
\n\t
if (customs && customs.length > 0) {\n
\t\t
let customMetas = await getPackages(customs.map(item => item.id));
\n\t\t
data.customs = customMetas.map(item => {\n
\t\t\t
const custom = typeof item === 'string' ? JSON.parse(item) : item;
\n\t\t\t
customManager.deal(custom);
\n\t\t\t
let {props, assetMapping} = customs.find(c => c.id === custom.id);
\n\t\t\t
/*if (props) {\n
\t\t\t\t
for (let key in custom.props) {\n
\t\t\t\t\t
if (!props.hasOwnProperty(key) && custom.props[key].hasOwnProperty('default')) {\n
\t\t\t\t\t\t
props[key] = custom.props[key].default;
\n\t\t\t\t\t
}
\n\t\t\t\t
}
\n\t\t\t
}*/
\n\t\t\t
compute(props, custom.props);
\n\t\t\t
for (let uuid in assetMapping) {\n
\t\t\t\t
let asset = custom.assets.find(item => item.uuid === uuid);
\n\t\t\t\t
if (asset) {\n
\t\t\t\t\t
asset.url = assetMapping[uuid];
\n\t\t\t\t
}
\n\t\t\t
}
\n\t\t\t
return {\n
\t\t\t\t
id: custom.id,
\n\t\t\t\t
name: custom.name,
\n\t\t\t\t
assets: custom.assets,
\n\t\t\t\t
props,
\n\t\t\t
};
\n\t\t
})
\n\t
}
\n\t
let customScriptContent = customManager.generate();
\n\t
//console.log(customScriptContent);
\n\t
if (!debug) {\n
\t\t
customScriptContent = uglify(customScriptContent);
\n\t
}
\n\t
/*=====END custom =====*/
\n\n\t
return
{
\n\t\tprocessScriptContent,\n\t\tscriptsContent,\n\t\tcustomScriptContent,\n\t}\n
}
\n\n
function findDepPids(list, process) {\n
\t
if (process.sub) {\n
\t\t
for (let key in process.sub) {\n
\t\t\t
let p = process.sub[key];
\n\t\t\t
if (!list.includes(p.meta))
{
\n\t\t\t\tlist.push(p.meta);\n\t\t\t}\n\t\t}\n\t}\n
}
\n\n
function findDepPidsBat(list, processes) {\n
\t
for (let process of processes) {\n
\t\t
findDepPids(list, process);
\n\t\t
if (process.metas) {\n
\t\t\t
findDepPidsBat(list, process.metas)
\n\t\t
}
\n\t
}
\n
}
\n\n
async function addBuiltinProcesses(list, ids, getPackages, dependencies) {\n
\t
let newPids = [];
\n\t
let schema = {};
\n\t
if (ids.length > 0) {\n
\t\t
for(let id of ids){\n
\t\t\t
schema[id] = dependencies[id];
\n\t\t
}
\n\t\t
let processes = await getPackages(schema);
\n\t\t
for (let processData of processes) {\n
\t\t\t
let process = typeof processData === 'string' ? JSON.parse(processData) : processData;
\n\t\t\t
list.push(process);
\n\t\t\t
findDepPids(newPids, process);
\n\t\t
}
\n\t
}
\n\t
return newPids;
\n
}
\n\n
function traverseNode(root, callback) {\n
\t
callback(root);
\n\t
if (root.children && root.children.length > 0) {\n
\t\t
for (let childNode of root.children) {\n
\t\t\t
traverseNode(childNode, callback);
\n\t\t
}
\n\t
}
\n
}
\n
"
],
"names"
:
[
"compute"
],
"mappings"
:
"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"
}
\ No newline at end of file
\ No newline at end of file
src/main.js
View file @
0cb1266f
...
@@ -9,11 +9,13 @@ import {compute} from "props-compute";
...
@@ -9,11 +9,13 @@ import {compute} from "props-compute";
const
TAG
=
'zeroing-code-divider'
;
const
TAG
=
'zeroing-code-divider'
;
export
async
function
divideCode
(
data
,
{
debug
,
compile
,
uglify
,
getP
rocesses
,
getScripts
,
getCustom
s
})
{
export
async
function
divideCode
(
data
,
{
debug
,
compile
,
uglify
,
getP
ackage
s
})
{
const
processManager
=
new
ProcessManager
();
const
processManager
=
new
ProcessManager
();
const
scriptManager
=
new
ScriptManager
();
const
scriptManager
=
new
ScriptManager
();
const
customManager
=
new
CustomManager
();
const
customManager
=
new
CustomManager
();
const
dependencies
=
data
.
dependencies
;
/*=====START process =====*/
/*=====START process =====*/
//console.log(TAG, 'start process');
//console.log(TAG, 'start process');
let
processIDs
=
[];
let
processIDs
=
[];
...
@@ -22,7 +24,7 @@ export async function divideCode(data, {debug, compile, uglify, getProcesses, ge
...
@@ -22,7 +24,7 @@ export async function divideCode(data, {debug, compile, uglify, getProcesses, ge
let
bProcessIDs
=
processIDs
;
let
bProcessIDs
=
processIDs
;
while
(
true
)
{
while
(
true
)
{
let
newPids
=
await
addBuiltinProcesses
(
builtinProcesses
,
bProcessIDs
,
getP
rocess
es
);
let
newPids
=
await
addBuiltinProcesses
(
builtinProcesses
,
bProcessIDs
,
getP
ackages
,
dependenci
es
);
bProcessIDs
=
[];
bProcessIDs
=
[];
for
(
let
id
of
newPids
)
{
for
(
let
id
of
newPids
)
{
if
(
!
processIDs
.
includes
(
id
))
{
if
(
!
processIDs
.
includes
(
id
))
{
...
@@ -76,7 +78,7 @@ export async function divideCode(data, {debug, compile, uglify, getProcesses, ge
...
@@ -76,7 +78,7 @@ export async function divideCode(data, {debug, compile, uglify, getProcesses, ge
//let scriptsContainer = data.scripts = {};
//let scriptsContainer = data.scripts = {};
//let scriptsCode = '';
//let scriptsCode = '';
if
(
scriptIDs
.
length
>
0
)
{
if
(
scriptIDs
.
length
>
0
)
{
const
scripts
=
await
get
Script
s
(
scriptIDs
);
const
scripts
=
await
get
Package
s
(
scriptIDs
);
for
(
let
scriptData
of
scripts
)
{
for
(
let
scriptData
of
scripts
)
{
let
script
=
typeof
scriptData
===
'string'
?
JSON
.
parse
(
scriptData
)
:
scriptData
;
let
script
=
typeof
scriptData
===
'string'
?
JSON
.
parse
(
scriptData
)
:
scriptData
;
//scriptsContainer[id] = code;
//scriptsContainer[id] = code;
...
@@ -97,7 +99,7 @@ export async function divideCode(data, {debug, compile, uglify, getProcesses, ge
...
@@ -97,7 +99,7 @@ export async function divideCode(data, {debug, compile, uglify, getProcesses, ge
//data.customs = [];
//data.customs = [];
const
customs
=
data
.
customs
;
const
customs
=
data
.
customs
;
if
(
customs
&&
customs
.
length
>
0
)
{
if
(
customs
&&
customs
.
length
>
0
)
{
let
customMetas
=
await
get
Custom
s
(
customs
.
map
(
item
=>
item
.
id
));
let
customMetas
=
await
get
Package
s
(
customs
.
map
(
item
=>
item
.
id
));
data
.
customs
=
customMetas
.
map
(
item
=>
{
data
.
customs
=
customMetas
.
map
(
item
=>
{
const
custom
=
typeof
item
===
'string'
?
JSON
.
parse
(
item
)
:
item
;
const
custom
=
typeof
item
===
'string'
?
JSON
.
parse
(
item
)
:
item
;
customManager
.
deal
(
custom
);
customManager
.
deal
(
custom
);
...
@@ -158,10 +160,14 @@ function findDepPidsBat(list, processes) {
...
@@ -158,10 +160,14 @@ function findDepPidsBat(list, processes) {
}
}
}
}
async
function
addBuiltinProcesses
(
list
,
ids
,
getP
rocess
es
)
{
async
function
addBuiltinProcesses
(
list
,
ids
,
getP
ackages
,
dependenci
es
)
{
let
newPids
=
[];
let
newPids
=
[];
let
schema
=
{};
if
(
ids
.
length
>
0
)
{
if
(
ids
.
length
>
0
)
{
let
processes
=
await
getProcesses
(
ids
);
for
(
let
id
of
ids
){
schema
[
id
]
=
dependencies
[
id
];
}
let
processes
=
await
getPackages
(
schema
);
for
(
let
processData
of
processes
)
{
for
(
let
processData
of
processes
)
{
let
process
=
typeof
processData
===
'string'
?
JSON
.
parse
(
processData
)
:
processData
;
let
process
=
typeof
processData
===
'string'
?
JSON
.
parse
(
processData
)
:
processData
;
list
.
push
(
process
);
list
.
push
(
process
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment