efront 4.34.1 → 4.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/coms/basic/Matrix.js +3 -1
- package/coms/basic/color.js +258 -78
- package/coms/basic/color_test.js +23 -2
- package/coms/basic/crc.js +6 -2
- package/coms/basic/data.js +3 -3
- package/coms/basic/decodeASN1.js +2 -2
- package/coms/basic/math.js +321 -0
- package/coms/basic/math.md +265 -0
- package/coms/basic/math_test.xht +56 -0
- package/coms/basic/pinyin.js +40 -0
- package/coms/basic/pinyin_test.js +40 -0
- package/coms/basic/wait.js +1 -1
- package/coms/basic_/JSON.js +24 -4
- package/coms/compile/Html.js +1 -0
- package/coms/compile/Javascript.js +14 -0
- package/coms/compile/Javascript_test.js +4 -3
- package/coms/compile/Program.js +82 -45
- package/coms/compile/autoenum.js +498 -138
- package/coms/compile/autoenum_test.js +70 -4
- package/coms/compile/autoeval.js +616 -18
- package/coms/compile/autoeval_test.js +55 -2
- package/coms/compile/common.js +27 -15
- package/coms/compile/common_test.js +12 -2
- package/coms/compile/downLevel.js +60 -7
- package/coms/compile/downLevel_test.js +22 -8
- package/coms/compile/powermap.js +2 -2
- package/coms/compile/rescan.js +2 -2
- package/coms/compile/scanner2.js +25 -1
- package/coms/compile/translate.js +18 -7
- package/coms/compile/unstruct.js +44 -2
- package/coms/compile/unstruct_test.js +14 -9
- package/coms/compile//347/256/227/345/274/217.js +276 -0
- package/coms/compile//347/256/227/345/274/217_test.js +26 -0
- package/coms/compile//347/264/240/351/246/250.js +60 -23
- package/coms/compile//347/264/240/351/246/250_test.js +8 -3
- package/coms/docs/markdown.js +4 -0
- package/coms/frame/ChatRTC.js +60 -18
- package/coms/frame/chat-rtc.xht +20 -18
- package/coms/frame/chat.js +38 -21
- package/coms/frame/chat.less +8 -3
- package/coms/reptile/colors.js +1 -0
- package/coms/zimoli/prompt.js +12 -2
- package/coms/zimoli/render.js +0 -1
- package/coms//350/214/250/350/217/260//344/270/212/350/211/262.xht +4 -0
- package/coms//350/214/250/350/217/260//346/240/207/347/255/276/345/214/226.js +14 -4
- package/package.json +24 -24
- package/public/efront.js +1 -2
- package/public//346/226/207/344/273/266/347/263/273/347/273/237//344/270/273/351/241/265.jsp +2 -2
- package/tools/build-efront +22 -0
- package/tools/build-efront.bat +22 -0
- package/tools/build-efront.js +64 -0
- package/tools/build-setup.bat +9 -0
- package/tools/buildEmoji.js +17 -0
- package/tools/electron.js +37 -0
- package/tools/empty.js +11 -0
- package/tools/fixBuffer.js +41 -0
- package/tools/install-all.js +46 -0
- package/tools/makeUseStrict.js +35 -0
- package/tools/readHelpersFromTypescript.js +82 -0
- package/tools/reload.js +20 -0
- package/tools/run-efront.bat +14 -0
- package/tools/toCRLF.js +30 -0
- package/tools/unwrap-typescript.js +28 -0
- package/tools/update-libs.bat +86 -0
- package/tools/write-utf8.js +39 -0
package/coms/frame/chat-rtc.xht
CHANGED
|
@@ -132,18 +132,6 @@
|
|
|
132
132
|
</span>
|
|
133
133
|
</div>
|
|
134
134
|
<script>
|
|
135
|
-
var chatrtc = new ChatRTC;
|
|
136
|
-
// fullscreen.open();
|
|
137
|
-
var status = function () {
|
|
138
|
-
return acceptTime ? i18n`通话中` : rejectTime ? i18n`无应答` : i18n`正在呼叫`
|
|
139
|
-
};
|
|
140
|
-
var btn = button;
|
|
141
|
-
var dvs;
|
|
142
|
-
var callingStart = new Date, acceptTime = 0;
|
|
143
|
-
var started = false;
|
|
144
|
-
var interval = 0;
|
|
145
|
-
var timeNode = document.createTextNode("");
|
|
146
|
-
var rejectTime = 0;
|
|
147
135
|
care(this, function ([type, sender, data]) {
|
|
148
136
|
if (sender !== remoteUser.cid) return;
|
|
149
137
|
switch (type) {
|
|
@@ -161,6 +149,23 @@
|
|
|
161
149
|
break;
|
|
162
150
|
}
|
|
163
151
|
});
|
|
152
|
+
var page = this;
|
|
153
|
+
var onCandidate = function (candidate) {
|
|
154
|
+
cast(page, ["didate", candidate]);
|
|
155
|
+
};
|
|
156
|
+
var chatrtc = new ChatRTC(onCandidate);
|
|
157
|
+
// fullscreen.open();
|
|
158
|
+
var status = function () {
|
|
159
|
+
return acceptTime ? i18n`通话中` : rejectTime ? i18n`无应答` : i18n`正在呼叫`
|
|
160
|
+
};
|
|
161
|
+
var btn = button;
|
|
162
|
+
var dvs;
|
|
163
|
+
var callingStart = new Date, acceptTime = 0;
|
|
164
|
+
var started = false;
|
|
165
|
+
var interval = 0;
|
|
166
|
+
var timeNode = document.createTextNode("");
|
|
167
|
+
var rejectTime = 0;
|
|
168
|
+
|
|
164
169
|
interval = setInterval(function () {
|
|
165
170
|
var toNum2 = a => a < 10 ? "0" + a : a;
|
|
166
171
|
var now = new Date;
|
|
@@ -231,17 +236,15 @@
|
|
|
231
236
|
await start();
|
|
232
237
|
acceptTime = new Date;
|
|
233
238
|
};
|
|
234
|
-
|
|
235
|
-
cast(page, ["didate", candidate]);
|
|
236
|
-
};
|
|
239
|
+
|
|
237
240
|
var start = async function () {
|
|
238
241
|
try {
|
|
239
242
|
if (!remoteOffer) {
|
|
240
|
-
var offer = await chatrtc.
|
|
243
|
+
var offer = await chatrtc.initOffer();
|
|
241
244
|
cast(page, ['offer', offer]);
|
|
242
245
|
}
|
|
243
246
|
else {
|
|
244
|
-
var answer = await chatrtc.
|
|
247
|
+
var answer = await chatrtc.takeOffer(remoteOffer);
|
|
245
248
|
cast(page, ['accept', answer]);
|
|
246
249
|
}
|
|
247
250
|
}
|
|
@@ -253,7 +256,6 @@
|
|
|
253
256
|
}
|
|
254
257
|
render.refresh();
|
|
255
258
|
}
|
|
256
|
-
var page = this;
|
|
257
259
|
var hangup = async function () {
|
|
258
260
|
cast(page, ['hangup']);
|
|
259
261
|
remove(page);
|
package/coms/frame/chat.js
CHANGED
|
@@ -111,17 +111,30 @@ var dragpage = {
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
var rtcMap = Object.create(null);
|
|
114
|
-
var getRtc = function (userid) {
|
|
114
|
+
var getRtc = function (userid, scope, offer) {
|
|
115
115
|
var rtc = rtcMap[userid];
|
|
116
|
-
if (!rtc)
|
|
116
|
+
if (!rtc) {
|
|
117
|
+
rtc = rtcMap[userid] = new ChatRTC(function (date) {
|
|
118
|
+
scope.send("didate", date, userid);
|
|
119
|
+
|
|
120
|
+
});
|
|
121
|
+
if (offer) rtc.takeOffer(offer).then(answer => {
|
|
122
|
+
scope.send('takeup', answer, userid);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
117
125
|
return rtc;
|
|
118
126
|
}
|
|
127
|
+
var channelId = 0;
|
|
119
128
|
async function pullFileWithRTC(scope, file) {
|
|
120
129
|
var rid = scope.remoteUser.cid;
|
|
121
|
-
var rtc = getRtc(rid);
|
|
130
|
+
var rtc = getRtc(rid, scope);
|
|
131
|
+
var pullid = Math.random().toString(36).slice(2, 6) + "-" + ++channelId;
|
|
122
132
|
var h = await window.showSaveFilePicker({ suggestedName: file.name });
|
|
123
133
|
var writable = await h.createWritable();
|
|
124
|
-
|
|
134
|
+
/**
|
|
135
|
+
* @type {RTCDataChannel}
|
|
136
|
+
*/
|
|
137
|
+
var channel = await rtc.createChannel(pullid);
|
|
125
138
|
channel.binaryType = 'arraybuffer';
|
|
126
139
|
var writed = 0;
|
|
127
140
|
var span = document.createElement('div');
|
|
@@ -159,40 +172,34 @@ async function pullFileWithRTC(scope, file) {
|
|
|
159
172
|
channel.onerror = function (event) {
|
|
160
173
|
// <!-- console.log('接收端异常',event) -->
|
|
161
174
|
};
|
|
162
|
-
var
|
|
163
|
-
|
|
164
|
-
};
|
|
165
|
-
var offer = await rtc.init(ondate);
|
|
166
|
-
scope.send('accept', { file: file.id, channel: channel.id, offer })
|
|
175
|
+
var offer = await rtc.initOffer();
|
|
176
|
+
scope.send('accept', { file: file.id, channel: pullid, offer })
|
|
167
177
|
channel.onmessage = async function (event) {
|
|
168
178
|
var buff = new Uint8Array(event.data);
|
|
169
179
|
writed += buff.length;
|
|
170
180
|
// <!-- console.log('接收端收到', writed, file.size); -->
|
|
171
181
|
await writable.write(buff);
|
|
172
182
|
report();
|
|
173
|
-
if (writed >= file.size) {
|
|
174
|
-
writable.close();
|
|
175
|
-
}
|
|
176
183
|
}
|
|
184
|
+
|
|
177
185
|
}
|
|
178
186
|
/**
|
|
179
187
|
* @param {File} file
|
|
180
188
|
*/
|
|
181
189
|
async function pushFileWithRTC(scope, file, msg) {
|
|
182
190
|
var sender = msg.sender;
|
|
183
|
-
var rtc = getRtc(sender);
|
|
191
|
+
var rtc = getRtc(sender, scope, msg.offer);
|
|
184
192
|
var reader = file.stream().getReader();
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
var
|
|
189
|
-
scope.send('takeup', answer, sender);
|
|
190
|
-
var remote = await rtc.waitChannel();
|
|
193
|
+
/**
|
|
194
|
+
* @type {RTCDataChannel}
|
|
195
|
+
*/
|
|
196
|
+
var remote = await rtc.waitChannel(msg.channel);
|
|
191
197
|
remote.binaryType = 'arraybuffer';
|
|
192
198
|
var writed = 0, reported = 0;
|
|
193
199
|
var readed = reader.read();
|
|
194
200
|
var sizeLimit = 65536;
|
|
195
201
|
remote.onmessage = async function (event) {
|
|
202
|
+
if (!opened) opened = true;
|
|
196
203
|
var [low, high] = new Uint32Array(event.data);
|
|
197
204
|
reported = high * 0x100000000 + low;
|
|
198
205
|
// <!-- console.log('发送端收到', size(writed), size(reported)); -->
|
|
@@ -200,8 +207,8 @@ async function pushFileWithRTC(scope, file, msg) {
|
|
|
200
207
|
var readed1 = readed;
|
|
201
208
|
readed = reader.read();
|
|
202
209
|
var { done, value } = await readed1;
|
|
203
|
-
if (done) {
|
|
204
|
-
if (writed
|
|
210
|
+
if (done || writed >= file.size) {
|
|
211
|
+
if (writed !== file.size) console.error('发送异常', size(file.size), size(writed), value);
|
|
205
212
|
remote.close();
|
|
206
213
|
return;
|
|
207
214
|
}
|
|
@@ -217,9 +224,18 @@ async function pushFileWithRTC(scope, file, msg) {
|
|
|
217
224
|
remote.onerror = function (event) {
|
|
218
225
|
// <!-- console.log("发送端异常",event) -->
|
|
219
226
|
}
|
|
227
|
+
var opened = false;
|
|
220
228
|
remote.onopen = async function () {
|
|
221
229
|
// <!-- console.log("发送端打开") -->
|
|
230
|
+
opened = true;
|
|
222
231
|
};
|
|
232
|
+
if (remote.readyState === 'open') {
|
|
233
|
+
await wait(20);
|
|
234
|
+
if (!opened) {
|
|
235
|
+
opened = true;
|
|
236
|
+
remote.send(new Uint8Array(0));
|
|
237
|
+
}
|
|
238
|
+
}
|
|
223
239
|
}
|
|
224
240
|
var shakeing = [];
|
|
225
241
|
var shakeUser = async function (page, shakes) {
|
|
@@ -475,6 +491,7 @@ function chat(title = '会话窗口') {
|
|
|
475
491
|
},
|
|
476
492
|
async qr(canvas) {
|
|
477
493
|
var qrcode = await init("thirdParty$qrcode");
|
|
494
|
+
if (!this.cid) await wait(() => this.cid, 12000);
|
|
478
495
|
var qr = qrcode(0, 'L');
|
|
479
496
|
var href = this.linkurl;
|
|
480
497
|
qr.addData(href);
|
package/coms/frame/chat.less
CHANGED
|
@@ -157,16 +157,21 @@ padding {
|
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
+
padding{
|
|
161
|
+
padding: 0 20px;
|
|
162
|
+
}
|
|
160
163
|
msg {
|
|
164
|
+
max-width: 100%;
|
|
161
165
|
display: block;
|
|
162
166
|
border-radius: 4px;
|
|
163
167
|
padding: 6px 12px;
|
|
164
168
|
line-height: 20px;
|
|
165
169
|
white-space: normal;
|
|
166
170
|
word-break: break-all;
|
|
167
|
-
|
|
171
|
+
@color-remote:lch(60 30 90);
|
|
172
|
+
background: @color-remote;
|
|
168
173
|
position: relative;
|
|
169
|
-
margin: 0 10px;
|
|
174
|
+
margin: 0 -10px;
|
|
170
175
|
float: left;
|
|
171
176
|
user-select: text;
|
|
172
177
|
|
|
@@ -181,7 +186,7 @@ msg {
|
|
|
181
186
|
|
|
182
187
|
&:not([self]):before {
|
|
183
188
|
left: 0;
|
|
184
|
-
border-right-color:
|
|
189
|
+
border-right-color: @color-remote;
|
|
185
190
|
}
|
|
186
191
|
|
|
187
192
|
&[self] {
|
package/coms/reptile/colors.js
CHANGED
|
@@ -49,6 +49,7 @@ colors.outside = colors.FgCyan;
|
|
|
49
49
|
colors.stamp = colors.FgGray;
|
|
50
50
|
colors.regexp = colors.FgRed2;
|
|
51
51
|
colors.text = colors.FgRed;
|
|
52
|
+
colors.danger = colors.Underscore + colors.BgRed + colors.FgWhite2;
|
|
52
53
|
colors.flow = colors.FgPurple;
|
|
53
54
|
colors.digit = colors.FgGreen2;
|
|
54
55
|
colors.deep0 = colors.FgYellow;
|
package/coms/zimoli/prompt.js
CHANGED
|
@@ -30,7 +30,7 @@ var fixContainer = function (elem, ipt) {
|
|
|
30
30
|
move.fixPosition(elem);
|
|
31
31
|
};
|
|
32
32
|
function prompt() {
|
|
33
|
-
var msg, check, ipt;
|
|
33
|
+
var msg, check, ipt, info;
|
|
34
34
|
var opts = [];
|
|
35
35
|
var submit = null;
|
|
36
36
|
var wrap = false;
|
|
@@ -53,6 +53,7 @@ function prompt() {
|
|
|
53
53
|
if (isFunction(arg.check)) check = arg.check;
|
|
54
54
|
if (isFunction(arg.submit)) submit = arg;
|
|
55
55
|
if (isString(arg.msg || arg.title)) msg = arg.msg || arg.title;
|
|
56
|
+
if (isHandled(arg.info)) info = arg.info;
|
|
56
57
|
if (isHandled(arg.value)) value = arg.value;
|
|
57
58
|
for (var k in attrs) {
|
|
58
59
|
if (k in arg) attrs[k] = arg[k];
|
|
@@ -94,7 +95,16 @@ function prompt() {
|
|
|
94
95
|
on('input')(ipt, setDisable);
|
|
95
96
|
}
|
|
96
97
|
var body = document.createElement("div");
|
|
97
|
-
|
|
98
|
+
var content = [ipt, tip];
|
|
99
|
+
if (info) {
|
|
100
|
+
if (isNode(info)) content.push(info);
|
|
101
|
+
else {
|
|
102
|
+
var info_node = document.createElement('div');
|
|
103
|
+
info_node.innerHTML = info;
|
|
104
|
+
content.push(info_node);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
appendChild(body, content);
|
|
98
108
|
var c = confirm(msg, body, buttons, async function (_) {
|
|
99
109
|
if (_ === buttons[0]) {
|
|
100
110
|
var value = getValue();
|
package/coms/zimoli/render.js
CHANGED
|
@@ -13,14 +13,22 @@ var amp = a => `&#${a.charCodeAt()};`;
|
|
|
13
13
|
var encodeAmp = function (a) {
|
|
14
14
|
return a.replace(/[\<\>\|&]/g, amp);
|
|
15
15
|
};
|
|
16
|
-
var codecolor = function (c
|
|
17
|
-
var wrap
|
|
18
|
-
|
|
16
|
+
var codecolor = function (c) {
|
|
17
|
+
var envs, wrap, encode;
|
|
18
|
+
for (var cx = 1, dx = arguments.length; cx < dx; cx++) {
|
|
19
|
+
var a = arguments[cx];
|
|
20
|
+
switch (typeof a) {
|
|
21
|
+
case "object": envs = a; break;
|
|
22
|
+
case "function":
|
|
23
|
+
if (!wrap && a.length === 2) wrap = a;
|
|
24
|
+
else encode = a;
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
19
28
|
if (!wrap) {
|
|
20
29
|
wrap = wrapLabel;
|
|
21
30
|
if (!encode) encode = encodeAmp;
|
|
22
31
|
}
|
|
23
|
-
var envs = c.envs;
|
|
24
32
|
var deep = 0;
|
|
25
33
|
var used = c.used;
|
|
26
34
|
var scoped = c.scoped;
|
|
@@ -69,6 +77,7 @@ var codecolor = function (c, encode) {
|
|
|
69
77
|
if (pdot) keys.shift();
|
|
70
78
|
var invoked = null;
|
|
71
79
|
var endi = keys.length - 1;
|
|
80
|
+
if (o.danger) var danger = wrap(keys[0], 'danger');
|
|
72
81
|
if (isInvoke(o)) {
|
|
73
82
|
if (!/^[\?]/.test(keys[endi])) invoked = wrap(keys[endi], "invoke");
|
|
74
83
|
}
|
|
@@ -84,6 +93,7 @@ var codecolor = function (c, encode) {
|
|
|
84
93
|
keys[cx] = /^[\?]/.test(k) || !k ? k : wrap(k, 'express');
|
|
85
94
|
}
|
|
86
95
|
if (endi === keys.length - 1) keys[endi] = invoked;
|
|
96
|
+
if (danger) keys[0] = danger;
|
|
87
97
|
keys = keys.join(".");
|
|
88
98
|
if (pdot) keys = "." + keys;
|
|
89
99
|
o.text = keys;
|
package/package.json
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "efront",
|
|
3
|
+
"version": "4.35.0",
|
|
4
|
+
"description": "一个开发环境,提供一种自由的前端开发模式,也可作为辅助工具使用。",
|
|
5
|
+
"main": "./coms/efront",
|
|
6
|
+
"directories": {
|
|
7
|
+
"test": "test"
|
|
8
|
+
},
|
|
9
|
+
"bin": {
|
|
10
|
+
"efront": "tools/run-efront.bat"
|
|
11
|
+
},
|
|
12
|
+
"scripts": {
|
|
13
|
+
"prepack": "node tools/build-efront.js --node --no-target&node public/efront build 文件系统.html"
|
|
14
|
+
},
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "https://github.com/yunxu1019/efront.git"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"efront"
|
|
21
|
+
],
|
|
22
|
+
"author": "yunxu1019",
|
|
23
|
+
"license": "MIT"
|
|
24
|
+
}
|