Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Z
zeroing-pack
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-pack
Commits
519d7866
Commit
519d7866
authored
Nov 15, 2019
by
rockyl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
处理循环依赖的逻辑
parent
7e2446b6
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
191 additions
and
47 deletions
+191
-47
index.es.js
dist/index.es.js
+42
-11
index.es.js.map
dist/index.es.js.map
+1
-1
index.js
dist/index.js
+42
-11
index.js.map
dist/index.js.map
+1
-1
index.umd.js
dist/index.umd.js
+42
-11
index.umd.js.map
dist/index.umd.js.map
+1
-1
index.js
src/index.js
+42
-11
project.js
tests/project.js
+4
-0
test.js
tests/test.js
+16
-0
No files found.
dist/index.es.js
View file @
519d7866
...
@@ -44,7 +44,7 @@ async function packData(data, {getProcesses, getScripts}) {
...
@@ -44,7 +44,7 @@ async function packData(data, {getProcesses, getScripts}) {
}
}
//console.log('scriptIDs:', scriptIDs);
//console.log('scriptIDs:', scriptIDs);
let
scriptsContainer
=
newData
.
scripts
=
{};
let
scriptsContainer
=
newData
.
scripts
=
{};
if
(
scriptIDs
.
length
>
0
)
{
if
(
scriptIDs
.
length
>
0
)
{
const
scripts
=
await
getScripts
(
scriptIDs
);
const
scripts
=
await
getScripts
(
scriptIDs
);
for
(
let
scriptData
of
scripts
)
{
for
(
let
scriptData
of
scripts
)
{
let
{
id
,
code
}
=
JSON
.
parse
(
scriptData
);
let
{
id
,
code
}
=
JSON
.
parse
(
scriptData
);
...
@@ -54,26 +54,57 @@ async function packData(data, {getProcesses, getScripts}) {
...
@@ -54,26 +54,57 @@ async function packData(data, {getProcesses, getScripts}) {
}
}
let
processIDs
=
[];
let
processIDs
=
[];
for
(
let
process
of
newData
.
processes
)
{
findDepPidsBat
(
processIDs
,
newData
.
processes
);
//console.log('processIDs:', processIDs);
let
builtinProcesses
=
newData
.
builtinProcesses
=
[];
let
bProcessIDs
=
processIDs
;
while
(
true
)
{
let
newPids
=
await
addBuiltinProcesses
(
builtinProcesses
,
bProcessIDs
,
getProcesses
);
bProcessIDs
=
[];
for
(
let
id
of
newPids
)
{
if
(
!
processIDs
.
includes
(
id
))
{
bProcessIDs
.
push
(
id
);
processIDs
.
push
(
id
);
}
}
if
(
bProcessIDs
.
length
===
0
)
{
break
;
}
}
return
JSON
.
stringify
(
newData
);
}
function
findDepPids
(
list
,
process
)
{
if
(
process
.
sub
){
for
(
let
key
in
process
.
sub
)
{
for
(
let
key
in
process
.
sub
)
{
let
p
=
process
.
sub
[
key
];
let
p
=
process
.
sub
[
key
];
if
(
!
processIDs
.
includes
(
p
.
meta
))
{
if
(
!
list
.
includes
(
p
.
meta
))
{
processIDs
.
push
(
p
.
meta
);
list
.
push
(
p
.
meta
);
}
}
}
}
}
}
//console.log('processIDs:', processIDs);
}
let
builtinProcesses
=
newData
.
builtinProcesses
=
[];
if
(
processIDs
.
length
>
0
){
function
findDepPidsBat
(
list
,
processes
)
{
let
processes
=
await
getProcesses
(
processIDs
);
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
)
{
for
(
let
processData
of
processes
)
{
let
process
=
JSON
.
parse
(
processData
);
let
process
=
JSON
.
parse
(
processData
);
builtinProcesses
.
push
(
process
);
list
.
push
(
process
);
findDepPids
(
newPids
,
process
);
}
}
//console.log('processes:', data.processes);
//console.log('processes:', data.processes);
}
}
return
newPids
;
return
JSON
.
stringify
(
newData
);
}
}
async
function
pageTemplate
(
data
,
options
,
version
)
{
async
function
pageTemplate
(
data
,
options
,
version
)
{
...
...
dist/index.es.js.map
View file @
519d7866
{
"version"
:
3
,
"file"
:
"index.es.js"
,
"sources"
:
[
"../src/index.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2019-11-13.
\n
*
\n
* 项目打包
\n
*/
\n\n
const camelcase = require('camelcase');
\n\n
const replaceFields = ['page_title', 'container_id', 'version'];
\n\n
export async function pack(project, options) {\n
\t
let version = Date.now() + Math.floor(Math.random() * 1000);
\n\t
let data = JSON.parse(project.data);
\n\t
const newTpl = await pageTemplate(data, options, version);
\n\t
const newData = await packData(data, options);
\n\n\t
return {\n
\t\t
version,
\n\t\t
data: newData,
\n\t\t
tpl: newTpl,
\n\t
}
\n
}
\n\n
async function packData(data, {getProcesses, getScripts}) {\n
\t
let newData = {};
\n\t
newData.options = data.options;
\n\t
delete newData.options.tpl;
\n\t
newData.views = data.views;
\n\t
newData.assets = data.assets;
\n\t
newData.dataMapping = data.dataMapping;
\n\t
newData.processes = data.processes;
\n\n\t
let scriptIDs = [];
\n\t
for (let view of newData.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 = newData.scripts = {};
\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 {id, code} = JSON.parse(scriptData);
\n\t\t\t
scriptsContainer[id] = code;
\n\t\t
}
\n\t\t
//console.log('scripts:', scriptsContainer);
\n\t
}
\n\n\t
let processIDs = [];
\n\t
for (let process of newData.processes) {\n
\t\t
for (let key in process.sub) {\n
\t\t\t
let p = process.sub[key];
\n\t\t\t
if (!processIDs.includes(p.meta))
{
\n\t\t\t\tprocessIDs.push(p.meta);\n\t\t\t}\n\t\t}\n\t
}
\n\t
//console.log('processIDs:', processIDs);
\n\t
let builtinProcesses = newData.builtinProcesses = [];
\n\t
if(processIDs.length > 0){\n
\t\t
let processes = await getProcesses(processIDs);
\n\t\t
for (let processData of processes) {\n
\t\t\t
let process = JSON.parse(processData);
\n\t\t\t
builtinProcesses.push(process);
\n\t\t
}
\n\t\t
//console.log('processes:', data.processes);
\n\t
}
\n\n\t
return JSON.stringify(newData);
\n
}
\n\n
async function pageTemplate(data, options, version) {\n
\t
const
{
tpl,
}
= data.options;
\n\t
let newTpl = tpl;
\n\t
let newOptions = Object.assign(data.options,
{
\n\t\tversion,\n\t
}
);
\n\t
delete newOptions.tpl;
\n\t
for (let field of replaceFields) {\n
\t\t
const key = camelcase(field);
\n\t\t
newTpl = newTpl.replace(new RegExp(`
\\\\
$${field.toUpperCase()}
\\\\
$`, 'g'), newOptions[key]);
\n\t
}
\n\t
return newTpl;
\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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"
}
{
"version"
:
3
,
"file"
:
"index.es.js"
,
"sources"
:
[
"../src/index.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2019-11-13.
\n
*
\n
* 项目打包
\n
*/
\n\n
const camelcase = require('camelcase');
\n\n
const replaceFields = ['page_title', 'container_id', 'version'];
\n\n
export async function pack(project, options) {\n
\t
let version = Date.now() + Math.floor(Math.random() * 1000);
\n\t
let data = JSON.parse(project.data);
\n\t
const newTpl = await pageTemplate(data, options, version);
\n\t
const newData = await packData(data, options);
\n\n\t
return {\n
\t\t
version,
\n\t\t
data: newData,
\n\t\t
tpl: newTpl,
\n\t
}
\n
}
\n\n
async function packData(data, {getProcesses, getScripts}) {\n
\t
let newData = {};
\n\t
newData.options = data.options;
\n\t
delete newData.options.tpl;
\n\t
newData.views = data.views;
\n\t
newData.assets = data.assets;
\n\t
newData.dataMapping = data.dataMapping;
\n\t
newData.processes = data.processes;
\n\n\t
let scriptIDs = [];
\n\t
for (let view of newData.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 = newData.scripts = {};
\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 {id, code} = JSON.parse(scriptData);
\n\t\t\t
scriptsContainer[id] = code;
\n\t\t
}
\n\t\t
//console.log('scripts:', scriptsContainer);
\n\t
}
\n\n\t
let processIDs = [];
\n\t
findDepPidsBat(processIDs, newData.processes);
\n\t
//console.log('processIDs:', processIDs);
\n\t
let builtinProcesses = newData.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
return JSON.stringify(newData);
\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
}
\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 = JSON.parse(processData);
\n\t\t\t
list.push(process);
\n\t\t\t
findDepPids(newPids, process);
\n\t\t
}
\n\t\t
//console.log('processes:', data.processes);
\n\t
}
\n\t
return newPids;
\n
}
\n\n
async function pageTemplate(data, options, version) {\n
\t
const
{
tpl,
}
= data.options;
\n\t
let newTpl = tpl;
\n\t
let newOptions = Object.assign(data.options,
{
\n\t\tversion,\n\t
}
);
\n\t
delete newOptions.tpl;
\n\t
for (let field of replaceFields) {\n
\t\t
const key = camelcase(field);
\n\t\t
newTpl = newTpl.replace(new RegExp(`
\\\\
$${field.toUpperCase()}
\\\\
$`, 'g'), newOptions[key]);
\n\t
}
\n\t
return newTpl;
\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;;;;;;AAMA,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;;AAEvC,MAAM,aAAa,GAAG,CAAC,YAAY,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;;AAEhE,AAAO,eAAe,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;CAC5C,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;CAC5D,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;CAC1D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;;CAE9C,OAAO;EACN,OAAO;EACP,IAAI,EAAE,OAAO;EACb,GAAG,EAAE,MAAM;EACX;CACD;;AAED,eAAe,QAAQ,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE;CACzD,IAAI,OAAO,GAAG,EAAE,CAAC;CACjB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;CAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;CAC3B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;CAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;CAC7B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;CACvC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;;CAEnC,IAAI,SAAS,GAAG,EAAE,CAAC;CACnB,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;EAC/B,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;;CAED,IAAI,gBAAgB,GAAG,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;CAC5C,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,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;GACxC,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;GAC5B;;EAED;;CAED,IAAI,UAAU,GAAG,EAAE,CAAC;CACpB,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;;CAE9C,IAAI,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,GAAG,EAAE,CAAC;;CAErD,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,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CAC/B;;AAED,SAAS,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE;CACnC,GAAG,OAAO,CAAC,GAAG,CAAC;EACd,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;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,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;GACtC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;GACnB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;GAC9B;;EAED;CACD,OAAO,OAAO,CAAC;CACf;;AAED,eAAe,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;CACnD,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;CAC5B,IAAI,MAAM,GAAG,GAAG,CAAC;CACjB,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;EAC5C,OAAO;EACP,CAAC,CAAC;CACH,OAAO,UAAU,CAAC,GAAG,CAAC;CACtB,KAAK,IAAI,KAAK,IAAI,aAAa,EAAE;EAChC,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;EAC7B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;EAC1F;CACD,OAAO,MAAM,CAAC;CACd;;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.js
View file @
519d7866
...
@@ -48,7 +48,7 @@ async function packData(data, {getProcesses, getScripts}) {
...
@@ -48,7 +48,7 @@ async function packData(data, {getProcesses, getScripts}) {
}
}
//console.log('scriptIDs:', scriptIDs);
//console.log('scriptIDs:', scriptIDs);
let
scriptsContainer
=
newData
.
scripts
=
{};
let
scriptsContainer
=
newData
.
scripts
=
{};
if
(
scriptIDs
.
length
>
0
)
{
if
(
scriptIDs
.
length
>
0
)
{
const
scripts
=
await
getScripts
(
scriptIDs
);
const
scripts
=
await
getScripts
(
scriptIDs
);
for
(
let
scriptData
of
scripts
)
{
for
(
let
scriptData
of
scripts
)
{
let
{
id
,
code
}
=
JSON
.
parse
(
scriptData
);
let
{
id
,
code
}
=
JSON
.
parse
(
scriptData
);
...
@@ -58,26 +58,57 @@ async function packData(data, {getProcesses, getScripts}) {
...
@@ -58,26 +58,57 @@ async function packData(data, {getProcesses, getScripts}) {
}
}
let
processIDs
=
[];
let
processIDs
=
[];
for
(
let
process
of
newData
.
processes
)
{
findDepPidsBat
(
processIDs
,
newData
.
processes
);
//console.log('processIDs:', processIDs);
let
builtinProcesses
=
newData
.
builtinProcesses
=
[];
let
bProcessIDs
=
processIDs
;
while
(
true
)
{
let
newPids
=
await
addBuiltinProcesses
(
builtinProcesses
,
bProcessIDs
,
getProcesses
);
bProcessIDs
=
[];
for
(
let
id
of
newPids
)
{
if
(
!
processIDs
.
includes
(
id
))
{
bProcessIDs
.
push
(
id
);
processIDs
.
push
(
id
);
}
}
if
(
bProcessIDs
.
length
===
0
)
{
break
;
}
}
return
JSON
.
stringify
(
newData
);
}
function
findDepPids
(
list
,
process
)
{
if
(
process
.
sub
){
for
(
let
key
in
process
.
sub
)
{
for
(
let
key
in
process
.
sub
)
{
let
p
=
process
.
sub
[
key
];
let
p
=
process
.
sub
[
key
];
if
(
!
processIDs
.
includes
(
p
.
meta
))
{
if
(
!
list
.
includes
(
p
.
meta
))
{
processIDs
.
push
(
p
.
meta
);
list
.
push
(
p
.
meta
);
}
}
}
}
}
}
//console.log('processIDs:', processIDs);
}
let
builtinProcesses
=
newData
.
builtinProcesses
=
[];
if
(
processIDs
.
length
>
0
){
function
findDepPidsBat
(
list
,
processes
)
{
let
processes
=
await
getProcesses
(
processIDs
);
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
)
{
for
(
let
processData
of
processes
)
{
let
process
=
JSON
.
parse
(
processData
);
let
process
=
JSON
.
parse
(
processData
);
builtinProcesses
.
push
(
process
);
list
.
push
(
process
);
findDepPids
(
newPids
,
process
);
}
}
//console.log('processes:', data.processes);
//console.log('processes:', data.processes);
}
}
return
newPids
;
return
JSON
.
stringify
(
newData
);
}
}
async
function
pageTemplate
(
data
,
options
,
version
)
{
async
function
pageTemplate
(
data
,
options
,
version
)
{
...
...
dist/index.js.map
View file @
519d7866
{
"version"
:
3
,
"file"
:
"index.js"
,
"sources"
:
[
"../src/index.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2019-11-13.
\n
*
\n
* 项目打包
\n
*/
\n\n
const camelcase = require('camelcase');
\n\n
const replaceFields = ['page_title', 'container_id', 'version'];
\n\n
export async function pack(project, options) {\n
\t
let version = Date.now() + Math.floor(Math.random() * 1000);
\n\t
let data = JSON.parse(project.data);
\n\t
const newTpl = await pageTemplate(data, options, version);
\n\t
const newData = await packData(data, options);
\n\n\t
return {\n
\t\t
version,
\n\t\t
data: newData,
\n\t\t
tpl: newTpl,
\n\t
}
\n
}
\n\n
async function packData(data, {getProcesses, getScripts}) {\n
\t
let newData = {};
\n\t
newData.options = data.options;
\n\t
delete newData.options.tpl;
\n\t
newData.views = data.views;
\n\t
newData.assets = data.assets;
\n\t
newData.dataMapping = data.dataMapping;
\n\t
newData.processes = data.processes;
\n\n\t
let scriptIDs = [];
\n\t
for (let view of newData.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 = newData.scripts = {};
\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 {id, code} = JSON.parse(scriptData);
\n\t\t\t
scriptsContainer[id] = code;
\n\t\t
}
\n\t\t
//console.log('scripts:', scriptsContainer);
\n\t
}
\n\n\t
let processIDs = [];
\n\t
for (let process of newData.processes) {\n
\t\t
for (let key in process.sub) {\n
\t\t\t
let p = process.sub[key];
\n\t\t\t
if (!processIDs.includes(p.meta))
{
\n\t\t\t\tprocessIDs.push(p.meta);\n\t\t\t}\n\t\t}\n\t
}
\n\t
//console.log('processIDs:', processIDs);
\n\t
let builtinProcesses = newData.builtinProcesses = [];
\n\t
if(processIDs.length > 0){\n
\t\t
let processes = await getProcesses(processIDs);
\n\t\t
for (let processData of processes) {\n
\t\t\t
let process = JSON.parse(processData);
\n\t\t\t
builtinProcesses.push(process);
\n\t\t
}
\n\t\t
//console.log('processes:', data.processes);
\n\t
}
\n\n\t
return JSON.stringify(newData);
\n
}
\n\n
async function pageTemplate(data, options, version) {\n
\t
const
{
tpl,
}
= data.options;
\n\t
let newTpl = tpl;
\n\t
let newOptions = Object.assign(data.options,
{
\n\t\tversion,\n\t
}
);
\n\t
delete newOptions.tpl;
\n\t
for (let field of replaceFields) {\n
\t\t
const key = camelcase(field);
\n\t\t
newTpl = newTpl.replace(new RegExp(`
\\\\
$${field.toUpperCase()}
\\\\
$`, 'g'), newOptions[key]);
\n\t
}
\n\t
return newTpl;
\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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"
}
{
"version"
:
3
,
"file"
:
"index.js"
,
"sources"
:
[
"../src/index.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2019-11-13.
\n
*
\n
* 项目打包
\n
*/
\n\n
const camelcase = require('camelcase');
\n\n
const replaceFields = ['page_title', 'container_id', 'version'];
\n\n
export async function pack(project, options) {\n
\t
let version = Date.now() + Math.floor(Math.random() * 1000);
\n\t
let data = JSON.parse(project.data);
\n\t
const newTpl = await pageTemplate(data, options, version);
\n\t
const newData = await packData(data, options);
\n\n\t
return {\n
\t\t
version,
\n\t\t
data: newData,
\n\t\t
tpl: newTpl,
\n\t
}
\n
}
\n\n
async function packData(data, {getProcesses, getScripts}) {\n
\t
let newData = {};
\n\t
newData.options = data.options;
\n\t
delete newData.options.tpl;
\n\t
newData.views = data.views;
\n\t
newData.assets = data.assets;
\n\t
newData.dataMapping = data.dataMapping;
\n\t
newData.processes = data.processes;
\n\n\t
let scriptIDs = [];
\n\t
for (let view of newData.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 = newData.scripts = {};
\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 {id, code} = JSON.parse(scriptData);
\n\t\t\t
scriptsContainer[id] = code;
\n\t\t
}
\n\t\t
//console.log('scripts:', scriptsContainer);
\n\t
}
\n\n\t
let processIDs = [];
\n\t
findDepPidsBat(processIDs, newData.processes);
\n\t
//console.log('processIDs:', processIDs);
\n\t
let builtinProcesses = newData.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
return JSON.stringify(newData);
\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
}
\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 = JSON.parse(processData);
\n\t\t\t
list.push(process);
\n\t\t\t
findDepPids(newPids, process);
\n\t\t
}
\n\t\t
//console.log('processes:', data.processes);
\n\t
}
\n\t
return newPids;
\n
}
\n\n
async function pageTemplate(data, options, version) {\n
\t
const
{
tpl,
}
= data.options;
\n\t
let newTpl = tpl;
\n\t
let newOptions = Object.assign(data.options,
{
\n\t\tversion,\n\t
}
);
\n\t
delete newOptions.tpl;
\n\t
for (let field of replaceFields) {\n
\t\t
const key = camelcase(field);
\n\t\t
newTpl = newTpl.replace(new RegExp(`
\\\\
$${field.toUpperCase()}
\\\\
$`, 'g'), newOptions[key]);
\n\t
}
\n\t
return newTpl;
\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.umd.js
View file @
519d7866
...
@@ -50,7 +50,7 @@
...
@@ -50,7 +50,7 @@
}
}
//console.log('scriptIDs:', scriptIDs);
//console.log('scriptIDs:', scriptIDs);
let
scriptsContainer
=
newData
.
scripts
=
{};
let
scriptsContainer
=
newData
.
scripts
=
{};
if
(
scriptIDs
.
length
>
0
)
{
if
(
scriptIDs
.
length
>
0
)
{
const
scripts
=
await
getScripts
(
scriptIDs
);
const
scripts
=
await
getScripts
(
scriptIDs
);
for
(
let
scriptData
of
scripts
)
{
for
(
let
scriptData
of
scripts
)
{
let
{
id
,
code
}
=
JSON
.
parse
(
scriptData
);
let
{
id
,
code
}
=
JSON
.
parse
(
scriptData
);
...
@@ -60,26 +60,57 @@
...
@@ -60,26 +60,57 @@
}
}
let
processIDs
=
[];
let
processIDs
=
[];
for
(
let
process
of
newData
.
processes
)
{
findDepPidsBat
(
processIDs
,
newData
.
processes
);
//console.log('processIDs:', processIDs);
let
builtinProcesses
=
newData
.
builtinProcesses
=
[];
let
bProcessIDs
=
processIDs
;
while
(
true
)
{
let
newPids
=
await
addBuiltinProcesses
(
builtinProcesses
,
bProcessIDs
,
getProcesses
);
bProcessIDs
=
[];
for
(
let
id
of
newPids
)
{
if
(
!
processIDs
.
includes
(
id
))
{
bProcessIDs
.
push
(
id
);
processIDs
.
push
(
id
);
}
}
if
(
bProcessIDs
.
length
===
0
)
{
break
;
}
}
return
JSON
.
stringify
(
newData
);
}
function
findDepPids
(
list
,
process
)
{
if
(
process
.
sub
){
for
(
let
key
in
process
.
sub
)
{
for
(
let
key
in
process
.
sub
)
{
let
p
=
process
.
sub
[
key
];
let
p
=
process
.
sub
[
key
];
if
(
!
processIDs
.
includes
(
p
.
meta
))
{
if
(
!
list
.
includes
(
p
.
meta
))
{
processIDs
.
push
(
p
.
meta
);
list
.
push
(
p
.
meta
);
}
}
}
}
}
}
//console.log('processIDs:', processIDs);
}
let
builtinProcesses
=
newData
.
builtinProcesses
=
[];
if
(
processIDs
.
length
>
0
){
function
findDepPidsBat
(
list
,
processes
)
{
let
processes
=
await
getProcesses
(
processIDs
);
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
)
{
for
(
let
processData
of
processes
)
{
let
process
=
JSON
.
parse
(
processData
);
let
process
=
JSON
.
parse
(
processData
);
builtinProcesses
.
push
(
process
);
list
.
push
(
process
);
findDepPids
(
newPids
,
process
);
}
}
//console.log('processes:', data.processes);
//console.log('processes:', data.processes);
}
}
return
newPids
;
return
JSON
.
stringify
(
newData
);
}
}
async
function
pageTemplate
(
data
,
options
,
version
)
{
async
function
pageTemplate
(
data
,
options
,
version
)
{
...
...
dist/index.umd.js.map
View file @
519d7866
{
"version"
:
3
,
"file"
:
"index.umd.js"
,
"sources"
:
[
"../src/index.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2019-11-13.
\n
*
\n
* 项目打包
\n
*/
\n\n
const camelcase = require('camelcase');
\n\n
const replaceFields = ['page_title', 'container_id', 'version'];
\n\n
export async function pack(project, options) {\n
\t
let version = Date.now() + Math.floor(Math.random() * 1000);
\n\t
let data = JSON.parse(project.data);
\n\t
const newTpl = await pageTemplate(data, options, version);
\n\t
const newData = await packData(data, options);
\n\n\t
return {\n
\t\t
version,
\n\t\t
data: newData,
\n\t\t
tpl: newTpl,
\n\t
}
\n
}
\n\n
async function packData(data, {getProcesses, getScripts}) {\n
\t
let newData = {};
\n\t
newData.options = data.options;
\n\t
delete newData.options.tpl;
\n\t
newData.views = data.views;
\n\t
newData.assets = data.assets;
\n\t
newData.dataMapping = data.dataMapping;
\n\t
newData.processes = data.processes;
\n\n\t
let scriptIDs = [];
\n\t
for (let view of newData.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 = newData.scripts = {};
\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 {id, code} = JSON.parse(scriptData);
\n\t\t\t
scriptsContainer[id] = code;
\n\t\t
}
\n\t\t
//console.log('scripts:', scriptsContainer);
\n\t
}
\n\n\t
let processIDs = [];
\n\t
for (let process of newData.processes) {\n
\t\t
for (let key in process.sub) {\n
\t\t\t
let p = process.sub[key];
\n\t\t\t
if (!processIDs.includes(p.meta))
{
\n\t\t\t\tprocessIDs.push(p.meta);\n\t\t\t}\n\t\t}\n\t
}
\n\t
//console.log('processIDs:', processIDs);
\n\t
let builtinProcesses = newData.builtinProcesses = [];
\n\t
if(processIDs.length > 0){\n
\t\t
let processes = await getProcesses(processIDs);
\n\t\t
for (let processData of processes) {\n
\t\t\t
let process = JSON.parse(processData);
\n\t\t\t
builtinProcesses.push(process);
\n\t\t
}
\n\t\t
//console.log('processes:', data.processes);
\n\t
}
\n\n\t
return JSON.stringify(newData);
\n
}
\n\n
async function pageTemplate(data, options, version) {\n
\t
const
{
tpl,
}
= data.options;
\n\t
let newTpl = tpl;
\n\t
let newOptions = Object.assign(data.options,
{
\n\t\tversion,\n\t
}
);
\n\t
delete newOptions.tpl;
\n\t
for (let field of replaceFields) {\n
\t\t
const key = camelcase(field);
\n\t\t
newTpl = newTpl.replace(new RegExp(`
\\\\
$${field.toUpperCase()}
\\\\
$`, 'g'), newOptions[key]);
\n\t
}
\n\t
return newTpl;
\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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"
}
{
"version"
:
3
,
"file"
:
"index.umd.js"
,
"sources"
:
[
"../src/index.js"
],
"sourcesContent"
:
[
"/**
\n
* Created by rockyl on 2019-11-13.
\n
*
\n
* 项目打包
\n
*/
\n\n
const camelcase = require('camelcase');
\n\n
const replaceFields = ['page_title', 'container_id', 'version'];
\n\n
export async function pack(project, options) {\n
\t
let version = Date.now() + Math.floor(Math.random() * 1000);
\n\t
let data = JSON.parse(project.data);
\n\t
const newTpl = await pageTemplate(data, options, version);
\n\t
const newData = await packData(data, options);
\n\n\t
return {\n
\t\t
version,
\n\t\t
data: newData,
\n\t\t
tpl: newTpl,
\n\t
}
\n
}
\n\n
async function packData(data, {getProcesses, getScripts}) {\n
\t
let newData = {};
\n\t
newData.options = data.options;
\n\t
delete newData.options.tpl;
\n\t
newData.views = data.views;
\n\t
newData.assets = data.assets;
\n\t
newData.dataMapping = data.dataMapping;
\n\t
newData.processes = data.processes;
\n\n\t
let scriptIDs = [];
\n\t
for (let view of newData.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 = newData.scripts = {};
\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 {id, code} = JSON.parse(scriptData);
\n\t\t\t
scriptsContainer[id] = code;
\n\t\t
}
\n\t\t
//console.log('scripts:', scriptsContainer);
\n\t
}
\n\n\t
let processIDs = [];
\n\t
findDepPidsBat(processIDs, newData.processes);
\n\t
//console.log('processIDs:', processIDs);
\n\t
let builtinProcesses = newData.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
return JSON.stringify(newData);
\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
}
\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 = JSON.parse(processData);
\n\t\t\t
list.push(process);
\n\t\t\t
findDepPids(newPids, process);
\n\t\t
}
\n\t\t
//console.log('processes:', data.processes);
\n\t
}
\n\t
return newPids;
\n
}
\n\n
async function pageTemplate(data, options, version) {\n
\t
const
{
tpl,
}
= data.options;
\n\t
let newTpl = tpl;
\n\t
let newOptions = Object.assign(data.options,
{
\n\t\tversion,\n\t
}
);
\n\t
delete newOptions.tpl;
\n\t
for (let field of replaceFields) {\n
\t\t
const key = camelcase(field);
\n\t\t
newTpl = newTpl.replace(new RegExp(`
\\\\
$${field.toUpperCase()}
\\\\
$`, 'g'), newOptions[key]);
\n\t
}
\n\t
return newTpl;
\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
src/index.js
View file @
519d7866
...
@@ -44,7 +44,7 @@ async function packData(data, {getProcesses, getScripts}) {
...
@@ -44,7 +44,7 @@ async function packData(data, {getProcesses, getScripts}) {
}
}
//console.log('scriptIDs:', scriptIDs);
//console.log('scriptIDs:', scriptIDs);
let
scriptsContainer
=
newData
.
scripts
=
{};
let
scriptsContainer
=
newData
.
scripts
=
{};
if
(
scriptIDs
.
length
>
0
)
{
if
(
scriptIDs
.
length
>
0
)
{
const
scripts
=
await
getScripts
(
scriptIDs
);
const
scripts
=
await
getScripts
(
scriptIDs
);
for
(
let
scriptData
of
scripts
)
{
for
(
let
scriptData
of
scripts
)
{
let
{
id
,
code
}
=
JSON
.
parse
(
scriptData
);
let
{
id
,
code
}
=
JSON
.
parse
(
scriptData
);
...
@@ -54,26 +54,57 @@ async function packData(data, {getProcesses, getScripts}) {
...
@@ -54,26 +54,57 @@ async function packData(data, {getProcesses, getScripts}) {
}
}
let
processIDs
=
[];
let
processIDs
=
[];
for
(
let
process
of
newData
.
processes
)
{
findDepPidsBat
(
processIDs
,
newData
.
processes
);
//console.log('processIDs:', processIDs);
let
builtinProcesses
=
newData
.
builtinProcesses
=
[];
let
bProcessIDs
=
processIDs
;
while
(
true
)
{
let
newPids
=
await
addBuiltinProcesses
(
builtinProcesses
,
bProcessIDs
,
getProcesses
);
bProcessIDs
=
[];
for
(
let
id
of
newPids
)
{
if
(
!
processIDs
.
includes
(
id
))
{
bProcessIDs
.
push
(
id
);
processIDs
.
push
(
id
);
}
}
if
(
bProcessIDs
.
length
===
0
)
{
break
;
}
}
return
JSON
.
stringify
(
newData
);
}
function
findDepPids
(
list
,
process
)
{
if
(
process
.
sub
){
for
(
let
key
in
process
.
sub
)
{
for
(
let
key
in
process
.
sub
)
{
let
p
=
process
.
sub
[
key
];
let
p
=
process
.
sub
[
key
];
if
(
!
processIDs
.
includes
(
p
.
meta
))
{
if
(
!
list
.
includes
(
p
.
meta
))
{
processIDs
.
push
(
p
.
meta
);
list
.
push
(
p
.
meta
);
}
}
}
}
}
}
//console.log('processIDs:', processIDs);
}
let
builtinProcesses
=
newData
.
builtinProcesses
=
[];
if
(
processIDs
.
length
>
0
){
function
findDepPidsBat
(
list
,
processes
)
{
let
processes
=
await
getProcesses
(
processIDs
);
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
)
{
for
(
let
processData
of
processes
)
{
let
process
=
JSON
.
parse
(
processData
);
let
process
=
JSON
.
parse
(
processData
);
builtinProcesses
.
push
(
process
);
list
.
push
(
process
);
findDepPids
(
newPids
,
process
);
}
}
//console.log('processes:', data.processes);
//console.log('processes:', data.processes);
}
}
return
newPids
;
return
JSON
.
stringify
(
newData
);
}
}
async
function
pageTemplate
(
data
,
options
,
version
)
{
async
function
pageTemplate
(
data
,
options
,
version
)
{
...
...
tests/project.js
View file @
519d7866
...
@@ -284,6 +284,10 @@ content="width=device-width,initial-scale=1, minimum-scale=1, maximum-scale=1, u
...
@@ -284,6 +284,10 @@ content="width=device-width,initial-scale=1, minimum-scale=1, maximum-scale=1, u
y
:
100
,
y
:
100
,
},
},
},
},
a3
:
{
uuid
:
'a3'
,
meta
:
'ddd'
}
}
}
},
},
{
{
...
...
tests/test.js
View file @
519d7866
...
@@ -26,6 +26,22 @@ function getProcesses(ids) {
...
@@ -26,6 +26,22 @@ function getProcesses(ids) {
script
:
"resolve({type: 'success', payload: args});"
,
script
:
"resolve({type: 'success', payload: args});"
,
output
:
[
'success'
],
output
:
[
'success'
],
}),
}),
JSON
.
stringify
({
id
:
'ddd'
,
name
:
'DDD'
,
props
:
{},
sub
:
{
1
:
{
uuid
:
1
,
meta
:
'eee'
,
}
}
}),
JSON
.
stringify
({
id
:
'eee'
,
name
:
'EEE'
,
props
:
{},
}),
]
]
}
}
...
...
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