efront 3.34.12 → 3.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/moue/content//344/275/240/345/245/275/344/270/226/347/225/214.vue +21 -0
- package/apps/moue/content//344/275/240/345/245/275/345/274/200/345/217/221/350/200/205.html +1 -0
- package/apps/moue/{home/index.js → content//344/275/240/345/245/275/345/274/200/345/217/221/350/200/205.js} +4 -2
- package/apps/moue/content//344/275/240/345/245/275/345/274/200/345/217/221/350/200/205.less +4 -0
- package/apps/moue/home/index2.vue +97 -18
- package/apps/moue/index.html +1 -1
- package/coms/basic/ArrayFill.md +9 -0
- package/coms/basic/awaitable.md +10 -0
- package/coms/basic/backEach.md +7 -0
- package/coms/basic/combine.md +23 -0
- package/coms/basic/renderExpress.js +1 -1
- package/coms/basic/wait.js +5 -0
- package/coms/basic_/readme.md +5 -4
- package/coms/compile/#/350/257/264/346/230/216.md +1 -0
- package/coms/compile/Html.js +263 -0
- package/coms/compile/Html_test.js +5 -0
- package/coms/compile/Javascript.js +594 -0
- package/coms/compile/Program.js +664 -0
- package/coms/compile/autoenum.js +179 -0
- package/coms/compile/autoenum_test.js +17 -0
- package/coms/compile/autoeval.js +50 -0
- package/coms/compile/autoeval_test.js +28 -0
- package/coms/compile/autoiota.js +121 -0
- package/coms/compile/breakcode.js +83 -0
- package/coms/compile/common.js +1063 -0
- package/coms/compile/downLevel.js +901 -0
- package/coms/compile/downLevel_test.js +111 -0
- package/coms/compile/formatcode.js +57 -0
- package/coms/compile/iso8859.js +9 -0
- package/coms/compile/iso8859_test.js +2 -0
- package/coms/compile/keywords.js +6 -0
- package/coms/compile/namelist.js +154 -0
- package/coms/compile/namelist_test.js +7 -0
- package/coms/compile/polyfill.js +31 -0
- package/coms/compile/required.js +20 -0
- package/coms/compile/richcss.js +237 -0
- package/coms/compile/richcss_test.js +7 -0
- package/coms/compile/scanner.js +653 -0
- package/coms/compile/scanner2.js +202 -0
- package/coms/compile/scanner2_test.js +110 -0
- package/coms/compile/scanner_test.js +10 -0
- package/coms/compile/unstruct.js +712 -0
- package/coms/compile/unstruct_test.js +54 -0
- package/coms/compile/washcode.js +237 -0
- package/coms/compile/washcode_test.js +17 -0
- package/coms/docs/helps.js +71 -0
- package/coms/docs/markdown.js +248 -0
- package/coms/frame/route.js +1 -1
- package/coms/reptile/colored_console.js +2 -1
- package/coms/zimoli/cless.js +1 -0
- package/coms/zimoli/css.js +1 -9
- package/coms/zimoli/html.js +1 -1
- package/coms/zimoli/menu.js +1 -1
- package/coms/zimoli/menuItem.html +1 -1
- package/coms/zimoli/menuItem.js +1 -1
- package/coms/zimoli/render.js +14 -3
- package/coms/zimoli/text.js +1 -1
- package/coms/zimoli/tree.js +2 -4
- package/coms/zimoli/zimoli.js +39 -12
- package/docs/compare.md +5 -5
- package/docs/components.jsp +17 -0
- package/docs/index.html +16 -26
- package/docs/main.xht +182 -0
- package/docs/mark.xht +166 -0
- package/docs/welcome.jsp +7 -0
- package/docs//345/221/275/344/273/244.xht +100 -0
- package/docs//347/211/210/346/234/254/350/257/264/346/230/216.md +9 -0
- package/docs//347/273/204/344/273/266.xht +87 -0
- package/package.json +1 -1
- package/public/efront.js +1 -1
- package/readme.md +6 -11
- package/apis/docs/getAllComponents.js +0 -69
- package/apps/moue/home/index.html +0 -1
- package/apps/moue/home/index.less +0 -0
- package/docs/main.js +0 -17
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var createNamelist = require("./namelist");
|
|
3
|
+
var Html = require("./Html");
|
|
4
|
+
var Javascript = require("./Javascript");
|
|
5
|
+
const {
|
|
6
|
+
/*-1 */COMMENT,
|
|
7
|
+
/* 0 */SPACE,
|
|
8
|
+
/* 1 */STRAP,
|
|
9
|
+
/* 2 */STAMP,
|
|
10
|
+
/* 3 */VALUE,
|
|
11
|
+
/* 4 */QUOTED,
|
|
12
|
+
/* 5 */PIECE,
|
|
13
|
+
/* 6 */EXPRESS,
|
|
14
|
+
/* 7 */SCOPED,
|
|
15
|
+
/* 8 */LABEL,
|
|
16
|
+
/* 9 */PROPERTY,
|
|
17
|
+
skipSentenceQueue,
|
|
18
|
+
rename,
|
|
19
|
+
relink,
|
|
20
|
+
} = require("./common");
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
var compress = function (scoped, maped = Object.create(null)) {
|
|
24
|
+
var { lets, vars, used } = scoped;
|
|
25
|
+
var map = lets || vars;
|
|
26
|
+
var __prevent = Object.create(null);
|
|
27
|
+
for (var k in used) {
|
|
28
|
+
if (!(k in map)) {
|
|
29
|
+
if (k in maped) {
|
|
30
|
+
k = maped[k];
|
|
31
|
+
}
|
|
32
|
+
__prevent[k] = true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
var keys = Object.keys(map);
|
|
36
|
+
keys.sort((a, b) => used[b].length - used[a].length);
|
|
37
|
+
if (keys.length) {
|
|
38
|
+
var names = createNamelist(keys.length, __prevent);
|
|
39
|
+
for (var cx = 0, dx = keys.length; cx < dx; cx++) {
|
|
40
|
+
var k = keys[cx];
|
|
41
|
+
var name = names[cx];
|
|
42
|
+
rename(used, k, name);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (scoped.length) {
|
|
46
|
+
maped = Object.create(maped);
|
|
47
|
+
for (var cx = 0, dx = keys.length; cx < dx; cx++) {
|
|
48
|
+
var k = keys[cx];
|
|
49
|
+
maped[k] = names[cx];
|
|
50
|
+
}
|
|
51
|
+
scoped.forEach(s => compress(s, maped));
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
class Code extends Array {
|
|
56
|
+
COMMENT = COMMENT
|
|
57
|
+
SPACE = SPACE
|
|
58
|
+
STRAP = STRAP
|
|
59
|
+
STAMP = STAMP
|
|
60
|
+
VALUE = VALUE
|
|
61
|
+
QUOTED = QUOTED
|
|
62
|
+
PIECE = PIECE
|
|
63
|
+
EXPRESS = EXPRESS
|
|
64
|
+
SCOPED = SCOPED
|
|
65
|
+
LABEL = LABEL
|
|
66
|
+
PROPERTY = PROPERTY
|
|
67
|
+
pressed = false
|
|
68
|
+
_scoped = null;
|
|
69
|
+
helpcode = false;
|
|
70
|
+
keepspace = true;
|
|
71
|
+
/**
|
|
72
|
+
* @type {Program}
|
|
73
|
+
*/
|
|
74
|
+
program = null;
|
|
75
|
+
isExpressQueue() {
|
|
76
|
+
if (!this.first) return false;
|
|
77
|
+
var first = this.first;
|
|
78
|
+
if (first.type === SCOPED) {
|
|
79
|
+
if (first.entry === '{') return false;
|
|
80
|
+
}
|
|
81
|
+
else if (first.type === STRAP) {
|
|
82
|
+
if (!this.program.strapexp_reg.test(first.text)) return false;
|
|
83
|
+
}
|
|
84
|
+
else if (!((EXPRESS | STAMP | QUOTED | SCOPED | VALUE) & first.type)) return false;
|
|
85
|
+
var last = skipSentenceQueue(this.first);
|
|
86
|
+
return this.last === last || !last;
|
|
87
|
+
}
|
|
88
|
+
fix() {
|
|
89
|
+
return this.program.fix(this);
|
|
90
|
+
}
|
|
91
|
+
toString() {
|
|
92
|
+
return this.program.createString(this);
|
|
93
|
+
}
|
|
94
|
+
get debug() {
|
|
95
|
+
return this.program.debug;
|
|
96
|
+
}
|
|
97
|
+
set debug(v) {
|
|
98
|
+
this.program.debug = v;
|
|
99
|
+
}
|
|
100
|
+
get envs() {
|
|
101
|
+
return this.scoped.envs;
|
|
102
|
+
}
|
|
103
|
+
get vars() {
|
|
104
|
+
return this.scoped.vars;
|
|
105
|
+
}
|
|
106
|
+
get used() {
|
|
107
|
+
return this.scoped.used;
|
|
108
|
+
}
|
|
109
|
+
get yield() {
|
|
110
|
+
return this.scoped.yield;
|
|
111
|
+
}
|
|
112
|
+
get async() {
|
|
113
|
+
return this.scoped.async;
|
|
114
|
+
}
|
|
115
|
+
get await() {
|
|
116
|
+
return this.scoped.await;
|
|
117
|
+
}
|
|
118
|
+
get return() {
|
|
119
|
+
return this.scoped.return;
|
|
120
|
+
}
|
|
121
|
+
get scoped() {
|
|
122
|
+
if (this._scoped) return this._scoped;
|
|
123
|
+
return this._scoped = this.program.createScoped(this);
|
|
124
|
+
}
|
|
125
|
+
set scoped(w) {
|
|
126
|
+
this._scoped = w;
|
|
127
|
+
}
|
|
128
|
+
getUndecleared() {
|
|
129
|
+
var res = Object.create(null);
|
|
130
|
+
for (var k in this.envs) {
|
|
131
|
+
res[k] = this.used[k];
|
|
132
|
+
}
|
|
133
|
+
return res;
|
|
134
|
+
}
|
|
135
|
+
// 提前处理属性
|
|
136
|
+
break() {
|
|
137
|
+
this.program.avoidMap = avoidMap;
|
|
138
|
+
this.program.detour(this.first);
|
|
139
|
+
return this;
|
|
140
|
+
}
|
|
141
|
+
// 绕开低版本ie的异常属性
|
|
142
|
+
detour(ie) {
|
|
143
|
+
this.program.avoidMap = avoidMap;
|
|
144
|
+
this.program.detour(this.first, !!ie);
|
|
145
|
+
return this;
|
|
146
|
+
}
|
|
147
|
+
// 压缩
|
|
148
|
+
press(keepspace) {
|
|
149
|
+
this.keepspace = keepspace;
|
|
150
|
+
this.pressed = true;
|
|
151
|
+
this.helpcode = false;
|
|
152
|
+
compress(this.scoped);
|
|
153
|
+
return this;
|
|
154
|
+
}
|
|
155
|
+
relink(list = this) {
|
|
156
|
+
return relink(list);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
var avoidMap = null;
|
|
161
|
+
var typeMap = Object.create(null);
|
|
162
|
+
function scan(text, type = "js", lastIndex = 0) {
|
|
163
|
+
if (isFinite(type)) lastIndex = +type, type = arguments[1];
|
|
164
|
+
var program = typeMap[type];
|
|
165
|
+
if (!program) switch (type) {
|
|
166
|
+
case "html":
|
|
167
|
+
program = typeMap[type] = new Html;
|
|
168
|
+
break;
|
|
169
|
+
case "js":
|
|
170
|
+
case "javascript":
|
|
171
|
+
program = typeMap[type] = new Javascript;
|
|
172
|
+
break;
|
|
173
|
+
default:
|
|
174
|
+
if (type instanceof Function) {
|
|
175
|
+
program = new type;
|
|
176
|
+
}
|
|
177
|
+
else if (type.exec instanceof Function) {
|
|
178
|
+
program = type;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
console.log("类型不支持", type)
|
|
182
|
+
}
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
program.Code = Code;
|
|
186
|
+
program.lastIndex = lastIndex;
|
|
187
|
+
var res = program.exec(text);
|
|
188
|
+
res.program = program;
|
|
189
|
+
return res;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
Object.defineProperty(scan, "avoid", {
|
|
193
|
+
get() {
|
|
194
|
+
return avoidMap;
|
|
195
|
+
},
|
|
196
|
+
set(map) {
|
|
197
|
+
avoidMap = map;
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
scan.Code = scan.Program = Code;
|
|
202
|
+
module.exports = scan;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
var fs = require("fs");
|
|
2
|
+
var path = require("path");
|
|
3
|
+
var esprima// = require("../esprima/index");
|
|
4
|
+
// var typescript = require("../typescript/index");
|
|
5
|
+
var console = require("../reptile/colored_console");
|
|
6
|
+
var scanner = require("./scanner2");
|
|
7
|
+
var data = fs.readFileSync(path.join(__dirname, "../typescript/index.js")).toString();
|
|
8
|
+
var data2 = fs.readFileSync(path.join(__dirname, "./scanner2.js")).toString();
|
|
9
|
+
// data='{ \r\na( ){ return a;} }';
|
|
10
|
+
function test(parser, name) {
|
|
11
|
+
var time = new Date;
|
|
12
|
+
var parsed = parser(data);
|
|
13
|
+
// var scanned1 = scanner(`\`a\${b}c\``);
|
|
14
|
+
console.log(new Date - time, name);
|
|
15
|
+
return parsed;
|
|
16
|
+
}
|
|
17
|
+
function testSpeed() {
|
|
18
|
+
|
|
19
|
+
console.log(data.slice(6426300, 6426400))
|
|
20
|
+
var scanned = test(scanner, 'scanner2');
|
|
21
|
+
var start = new Date();
|
|
22
|
+
var data3 = scanned.press().toString();
|
|
23
|
+
console.log(new Date - start, 'press().toString()');
|
|
24
|
+
fs.writeFileSync(path.join(__dirname, "./scanner2_temp.js"), data3);
|
|
25
|
+
|
|
26
|
+
test(esprima.parse, 'esprima.parse');
|
|
27
|
+
test(esprima.tokenize, 'esprima.tokenize');
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function testVariables() {
|
|
31
|
+
var rootpath = path.join(__dirname, "../zimoli/");
|
|
32
|
+
var getVariables //= require("./variables");
|
|
33
|
+
var names = fs.readdirSync(rootpath);
|
|
34
|
+
names.forEach(n => {
|
|
35
|
+
if (!/\.js$/i.test(n)) return;
|
|
36
|
+
var data3 = fs.readFileSync(path.join(rootpath, n)).toString().replace(/^\s*#!/, '//');
|
|
37
|
+
try {
|
|
38
|
+
var jst = esprima.parse(data3);
|
|
39
|
+
} catch (e) {
|
|
40
|
+
data3 = typescript.transpile(data3);
|
|
41
|
+
jst = esprima.parse(data3);
|
|
42
|
+
}
|
|
43
|
+
console.info(n);
|
|
44
|
+
if (n === "grid.js") debugger;
|
|
45
|
+
var globals = scanner(data3).getUndecleared();
|
|
46
|
+
var {
|
|
47
|
+
unDeclaredVariables: undeclares
|
|
48
|
+
} = getVariables(jst);
|
|
49
|
+
var warn = false;
|
|
50
|
+
for (var k in globals) {
|
|
51
|
+
if (!(k in undeclares)) {
|
|
52
|
+
warn = true;
|
|
53
|
+
if (warn) console.warn(n, k, 'globals:', globals[k], 'undeclared:', undeclares[k]);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
for (var k in undeclares) {
|
|
57
|
+
if (!(k in globals)) {
|
|
58
|
+
warn = true;
|
|
59
|
+
if (warn) console.warn(n, k, 'globals:', globals[k], 'undeclared:', undeclares[k]);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
function testRegexp() {
|
|
67
|
+
var m = scanner(`/${/[^\u0130\u0131\u00DFa-z0-9\\/:\-_\. ]+/g.source}/g/** a */`)
|
|
68
|
+
console.log(m)
|
|
69
|
+
}
|
|
70
|
+
function testStatic() {
|
|
71
|
+
var m = scanner(`class a{static{console.log(1)}}`);
|
|
72
|
+
console.log(m);
|
|
73
|
+
}
|
|
74
|
+
function testAssign() {
|
|
75
|
+
var m = scanner(`a=function(){}
|
|
76
|
+
a()`);
|
|
77
|
+
console.log(m.press().toString());
|
|
78
|
+
}
|
|
79
|
+
function testFormat() {
|
|
80
|
+
var t = fs.readFileSync(path.join(__dirname, "../efront/memery.js")).toString();
|
|
81
|
+
assert(scanner(t).toString(), t);
|
|
82
|
+
}
|
|
83
|
+
function testJsx() {
|
|
84
|
+
var m = `render() { return expression.map((item, index) => <Component1></Component1>) }`;
|
|
85
|
+
assert(scanner(m).toString(), m);
|
|
86
|
+
}
|
|
87
|
+
function testJsx2() {
|
|
88
|
+
var m = `return <Copoment1 onClick={onclick}>{webcontent}</Component1>`;
|
|
89
|
+
assert(scanner(m).toString(), m);
|
|
90
|
+
}
|
|
91
|
+
function testJsx3() {
|
|
92
|
+
var m = scanner(`return <a></b></c>`);
|
|
93
|
+
}
|
|
94
|
+
function testJsxOnlyHtml() {
|
|
95
|
+
var m = scanner(`<!-- angular 1.x -->
|
|
96
|
+
<component1 ng-bind="expression"><child1></child1></component1>`);
|
|
97
|
+
console.log(m.toString());
|
|
98
|
+
}
|
|
99
|
+
// testSpeed();
|
|
100
|
+
// testVariables();
|
|
101
|
+
// testRegexp();
|
|
102
|
+
// testStatic();
|
|
103
|
+
// testAssign();
|
|
104
|
+
// testFormat();
|
|
105
|
+
testJsx();
|
|
106
|
+
testJsx2();
|
|
107
|
+
// testJsx3();
|
|
108
|
+
testJsxOnlyHtml();
|
|
109
|
+
// var typescript = require("../typescript/index");
|
|
110
|
+
// typescript.transpile(data.toString(), { noEmitHelpers: true });
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
var scanner = require("./scanner");
|
|
2
|
+
var fs = require("fs");
|
|
3
|
+
function scanner_test() {
|
|
4
|
+
var time = new Date;
|
|
5
|
+
var str = fs.readFileSync('coms/typescript/index.js').toString();
|
|
6
|
+
var res = scanner(str);
|
|
7
|
+
res.forEach(a => a.data = str.slice(a.start, a.end))
|
|
8
|
+
console.log(res, new Date - time);
|
|
9
|
+
}
|
|
10
|
+
scanner_test();
|