@lcap/nasl-utils 3.9.0-beta.1
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/README.md +3 -0
- package/out/assets.d.ts +8 -0
- package/out/assets.d.ts.map +1 -0
- package/out/assets.js +14 -0
- package/out/assets.js.map +1 -0
- package/out/batch.d.ts +37 -0
- package/out/batch.d.ts.map +1 -0
- package/out/batch.js +148 -0
- package/out/batch.js.map +1 -0
- package/out/concept.d.ts +5 -0
- package/out/concept.d.ts.map +1 -0
- package/out/concept.js +48 -0
- package/out/concept.js.map +1 -0
- package/out/constant.d.ts +8 -0
- package/out/constant.d.ts.map +1 -0
- package/out/constant.js +41 -0
- package/out/constant.js.map +1 -0
- package/out/data/defaultErrorMessage.json +98 -0
- package/out/delay.d.ts +3 -0
- package/out/delay.d.ts.map +1 -0
- package/out/delay.js +9 -0
- package/out/delay.js.map +1 -0
- package/out/env.d.ts +11 -0
- package/out/env.d.ts.map +1 -0
- package/out/env.js +14 -0
- package/out/env.js.map +1 -0
- package/out/file.d.ts +34 -0
- package/out/file.d.ts.map +1 -0
- package/out/file.js +50 -0
- package/out/file.js.map +1 -0
- package/out/hash.d.ts +7 -0
- package/out/hash.d.ts.map +1 -0
- package/out/hash.js +38 -0
- package/out/hash.js.map +1 -0
- package/out/index.d.ts +15 -0
- package/out/index.d.ts.map +1 -0
- package/out/index.js +31 -0
- package/out/index.js.map +1 -0
- package/out/logger.d.ts +3 -0
- package/out/logger.d.ts.map +1 -0
- package/out/logger.js +21 -0
- package/out/logger.js.map +1 -0
- package/out/string.d.ts +76 -0
- package/out/string.d.ts.map +1 -0
- package/out/string.js +191 -0
- package/out/string.js.map +1 -0
- package/out/time-slicing/constant.d.ts +36 -0
- package/out/time-slicing/constant.d.ts.map +1 -0
- package/out/time-slicing/constant.js +40 -0
- package/out/time-slicing/constant.js.map +1 -0
- package/out/time-slicing/controller.d.ts +54 -0
- package/out/time-slicing/controller.d.ts.map +1 -0
- package/out/time-slicing/controller.js +295 -0
- package/out/time-slicing/controller.js.map +1 -0
- package/out/time-slicing/index.d.ts +6 -0
- package/out/time-slicing/index.d.ts.map +1 -0
- package/out/time-slicing/index.js +26 -0
- package/out/time-slicing/index.js.map +1 -0
- package/out/time-slicing/page-state.d.ts +3 -0
- package/out/time-slicing/page-state.d.ts.map +1 -0
- package/out/time-slicing/page-state.js +8 -0
- package/out/time-slicing/page-state.js.map +1 -0
- package/out/time-slicing/performance.d.ts +12 -0
- package/out/time-slicing/performance.d.ts.map +1 -0
- package/out/time-slicing/performance.js +50 -0
- package/out/time-slicing/performance.js.map +1 -0
- package/out/time-slicing/runner.d.ts +13 -0
- package/out/time-slicing/runner.d.ts.map +1 -0
- package/out/time-slicing/runner.js +52 -0
- package/out/time-slicing/runner.js.map +1 -0
- package/out/time-slicing/tool.d.ts +25 -0
- package/out/time-slicing/tool.d.ts.map +1 -0
- package/out/time-slicing/tool.js +47 -0
- package/out/time-slicing/tool.js.map +1 -0
- package/out/time-slicing/utils.d.ts +63 -0
- package/out/time-slicing/utils.d.ts.map +1 -0
- package/out/time-slicing/utils.js +47 -0
- package/out/time-slicing/utils.js.map +1 -0
- package/out/time-slicing/wrapper.d.ts +19 -0
- package/out/time-slicing/wrapper.d.ts.map +1 -0
- package/out/time-slicing/wrapper.js +55 -0
- package/out/time-slicing/wrapper.js.map +1 -0
- package/out/traverse.d.ts +37 -0
- package/out/traverse.d.ts.map +1 -0
- package/out/traverse.js +144 -0
- package/out/traverse.js.map +1 -0
- package/out/types.d.ts +2 -0
- package/out/types.d.ts.map +1 -0
- package/out/types.js +3 -0
- package/out/types.js.map +1 -0
- package/out/uuid.d.ts +4 -0
- package/out/uuid.d.ts.map +1 -0
- package/out/uuid.js +15 -0
- package/out/uuid.js.map +1 -0
- package/out/window.d.ts +8 -0
- package/out/window.d.ts.map +1 -0
- package/out/window.js +14 -0
- package/out/window.js.map +1 -0
- package/package.json +35 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TimeSlicingController = void 0;
|
|
4
|
+
const page_state_1 = require("./page-state");
|
|
5
|
+
const performance_1 = require("./performance");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const constant_1 = require("./constant");
|
|
8
|
+
/** 时间分片控制器 */
|
|
9
|
+
class TimeSlicingController {
|
|
10
|
+
constructor() {
|
|
11
|
+
/** 控制器编号 */
|
|
12
|
+
this.id = (0, utils_1.getId)();
|
|
13
|
+
/** 已处理的任务数量 */
|
|
14
|
+
this.allTaskNumber = 0;
|
|
15
|
+
/**
|
|
16
|
+
* 已处理任务消耗的总时间
|
|
17
|
+
*
|
|
18
|
+
* @description 单位“毫秒”
|
|
19
|
+
*/
|
|
20
|
+
this.allTaskTime = 0;
|
|
21
|
+
/**
|
|
22
|
+
* 单个任务平均执行时间
|
|
23
|
+
*
|
|
24
|
+
* @description 单位“毫秒”,初始化为`1`微秒
|
|
25
|
+
*/
|
|
26
|
+
this.averageTaskTime = 1e-3;
|
|
27
|
+
/** 资源不足帧的数量 */
|
|
28
|
+
this.lowResourceFrame = 0;
|
|
29
|
+
/** 帧数据 */
|
|
30
|
+
this.frame = {
|
|
31
|
+
id: 0,
|
|
32
|
+
time: 0,
|
|
33
|
+
groupTime: 0,
|
|
34
|
+
mark: (0, utils_1.getFrameMark)(0),
|
|
35
|
+
};
|
|
36
|
+
/** 任务组数据 */
|
|
37
|
+
this.group = {
|
|
38
|
+
id: 0,
|
|
39
|
+
time: 0,
|
|
40
|
+
limit: 1,
|
|
41
|
+
frameId: 1,
|
|
42
|
+
mark: (0, utils_1.getGroupMark)(0),
|
|
43
|
+
};
|
|
44
|
+
/** 异步等待数据 */
|
|
45
|
+
this.async = {
|
|
46
|
+
id: 0,
|
|
47
|
+
time: 0,
|
|
48
|
+
result: undefined,
|
|
49
|
+
mark: (0, utils_1.getAsyncMark)(0),
|
|
50
|
+
};
|
|
51
|
+
/** 性能检测包装器 */
|
|
52
|
+
this.performance = new performance_1.Performance(this.id);
|
|
53
|
+
/// #if process.env.NODE_ENV === 'development'
|
|
54
|
+
this.groupList = [];
|
|
55
|
+
this.frameList = [];
|
|
56
|
+
this.asyncList = [];
|
|
57
|
+
}
|
|
58
|
+
/// #endif
|
|
59
|
+
/** 任务增长系数 */
|
|
60
|
+
increaseRatio(now) {
|
|
61
|
+
if (now <= 0) {
|
|
62
|
+
return 1;
|
|
63
|
+
}
|
|
64
|
+
else if (this.allTaskTime < 0.01) {
|
|
65
|
+
return now * 10;
|
|
66
|
+
}
|
|
67
|
+
else if (now < 10) {
|
|
68
|
+
return now * 2;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
return now * 1.3;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/** 下组任务状态 */
|
|
75
|
+
getNextData() {
|
|
76
|
+
const { frame, group, async } = this;
|
|
77
|
+
// 页面处于活动状态
|
|
78
|
+
if ((0, page_state_1.isPageActive)()) {
|
|
79
|
+
/** 帧剩余时间 */
|
|
80
|
+
const restFrameTime = Math.max(constant_1.FrameMinTime - async.time - frame.time, 0);
|
|
81
|
+
/** 是否使用下一帧 */
|
|
82
|
+
const useNextFrame = restFrameTime < constant_1.FrameIdleTime;
|
|
83
|
+
/** 下组任务状态 */
|
|
84
|
+
const state = useNextFrame ? constant_1.NextState.NextFrame : constant_1.NextState.MicroTask;
|
|
85
|
+
/** 增长系数计算的任务上限 */
|
|
86
|
+
const taskNumberByRatio = this.increaseRatio(group.limit);
|
|
87
|
+
/** 理论上限 */
|
|
88
|
+
const taskNumberByTheoretical = useNextFrame
|
|
89
|
+
? Math.round((constant_1.FrameMinTime - constant_1.FrameIdleTime) / this.averageTaskTime * constant_1.TheoreticalLimitCalculationCoefficient)
|
|
90
|
+
: Math.round(restFrameTime / this.averageTaskTime * constant_1.TheoreticalLimitCalculationCoefficient);
|
|
91
|
+
/** 实际应该使用的任务上限 */
|
|
92
|
+
const realTaskNumber = Math.floor(taskNumberByTheoretical <= 0
|
|
93
|
+
? 1
|
|
94
|
+
: taskNumberByTheoretical < taskNumberByRatio
|
|
95
|
+
? taskNumberByTheoretical
|
|
96
|
+
: taskNumberByRatio);
|
|
97
|
+
return {
|
|
98
|
+
next: state,
|
|
99
|
+
task: realTaskNumber,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
// 页面在后台时,不需要顾忌 UI 渲染,全速跑即可
|
|
103
|
+
else {
|
|
104
|
+
return {
|
|
105
|
+
next: constant_1.NextState.MicroTask,
|
|
106
|
+
task: Math.round(constant_1.FrameMinTime / this.averageTaskTime),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/** 清除状态 */
|
|
111
|
+
clearState() {
|
|
112
|
+
this.performance.clear();
|
|
113
|
+
}
|
|
114
|
+
/** 展示信息 */
|
|
115
|
+
displayInfo() {
|
|
116
|
+
// 调试用的代码,别删
|
|
117
|
+
// console.log('时间分片完成', {
|
|
118
|
+
// '任务数': this.allTaskNumber,
|
|
119
|
+
// '单任务平均耗时': this.averageTaskTime,
|
|
120
|
+
// '任务组数据': this.groupList,
|
|
121
|
+
// '帧数据': this.frameList,
|
|
122
|
+
// '异步等待数据': this.asyncList,
|
|
123
|
+
// });
|
|
124
|
+
}
|
|
125
|
+
/** 当前组运行开始 */
|
|
126
|
+
setGroupStart() {
|
|
127
|
+
const { group, frame, performance } = this;
|
|
128
|
+
group.id++;
|
|
129
|
+
group.time = 0;
|
|
130
|
+
group.frameId = frame.id;
|
|
131
|
+
group.mark = (0, utils_1.getGroupMark)(group.id);
|
|
132
|
+
performance.mark(group.mark.GroupStart);
|
|
133
|
+
}
|
|
134
|
+
/** 当前组运行结束 */
|
|
135
|
+
setGroupEnd() {
|
|
136
|
+
const { group, frame, performance } = this;
|
|
137
|
+
performance.mark(group.mark.GroupEnd);
|
|
138
|
+
/** 当前微任务的运行时间 */
|
|
139
|
+
const groupMeasure = performance.measure(group.mark.GroupMeasure, group.mark.GroupStart, group.mark.GroupEnd);
|
|
140
|
+
/** 当前帧的运行时间 */
|
|
141
|
+
const frameMeasure = performance.measure(frame.mark.FrameMeasure, frame.mark.FrameStart, group.mark.GroupEnd);
|
|
142
|
+
performance.clearByNames(group.mark.GroupStart, group.mark.GroupEnd);
|
|
143
|
+
performance.clearByNames(group.mark.GroupMeasure, frame.mark.FrameMeasure);
|
|
144
|
+
group.time = groupMeasure.duration;
|
|
145
|
+
frame.time = frameMeasure.duration;
|
|
146
|
+
this.frame.groupTime += groupMeasure.duration;
|
|
147
|
+
this.allTaskNumber += group.limit;
|
|
148
|
+
this.allTaskTime += groupMeasure.duration;
|
|
149
|
+
this.averageTaskTime = this.allTaskTime / this.allTaskNumber;
|
|
150
|
+
/// #if process.env.NODE_ENV === 'development'
|
|
151
|
+
this.groupList.push({ ...group });
|
|
152
|
+
/// #endif
|
|
153
|
+
}
|
|
154
|
+
/** 动画帧开始 */
|
|
155
|
+
setFrameStart() {
|
|
156
|
+
const { frame, performance } = this;
|
|
157
|
+
frame.id++;
|
|
158
|
+
frame.groupTime = 0;
|
|
159
|
+
frame.mark = (0, utils_1.getFrameMark)(frame.id);
|
|
160
|
+
performance.clear();
|
|
161
|
+
performance.mark(frame.mark.FrameStart);
|
|
162
|
+
}
|
|
163
|
+
/** 动画帧结束 */
|
|
164
|
+
setFrameEnd() {
|
|
165
|
+
const { frame } = this;
|
|
166
|
+
/// #if process.env.NODE_ENV === 'development'
|
|
167
|
+
this.frameList.push({ ...this.frame });
|
|
168
|
+
/// #endif
|
|
169
|
+
// 资源不足
|
|
170
|
+
if ((frame.groupTime / frame.time) < constant_1.LowResourceRatio) {
|
|
171
|
+
this.lowResourceFrame++;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/** 异步等待开始 */
|
|
175
|
+
setAsyncStart() {
|
|
176
|
+
const { async, performance } = this;
|
|
177
|
+
async.id++;
|
|
178
|
+
async.time = 0;
|
|
179
|
+
async.mark = (0, utils_1.getAsyncMark)(async.id);
|
|
180
|
+
performance.mark(async.mark.AsyncStart);
|
|
181
|
+
}
|
|
182
|
+
/** 异步等待结束 */
|
|
183
|
+
setAsyncEnd() {
|
|
184
|
+
const { async, performance } = this;
|
|
185
|
+
performance.mark(async.mark.AsyncEnd);
|
|
186
|
+
async.time = performance.measure(async.mark.AsyncMeasure, async.mark.AsyncStart, async.mark.AsyncEnd).duration;
|
|
187
|
+
performance.clearByNames(async.mark.AsyncStart, async.mark.AsyncEnd, async.mark.AsyncMeasure);
|
|
188
|
+
/// #if process.env.NODE_ENV === 'development'
|
|
189
|
+
this.asyncList.push({ ...async });
|
|
190
|
+
/// #endif
|
|
191
|
+
}
|
|
192
|
+
run(generator) {
|
|
193
|
+
return new Promise((resolve) => {
|
|
194
|
+
/** 生成器结果 */
|
|
195
|
+
let result = {
|
|
196
|
+
done: false,
|
|
197
|
+
value: undefined,
|
|
198
|
+
};
|
|
199
|
+
/** 异步运行标志 */
|
|
200
|
+
let waitAsync = false;
|
|
201
|
+
const { group, id } = this;
|
|
202
|
+
const isPromise = (input) => Boolean(input && input instanceof Promise);
|
|
203
|
+
/** 运行结束 */
|
|
204
|
+
const runStop = (result) => {
|
|
205
|
+
this.clearState();
|
|
206
|
+
/// #if process.env.NODE_ENV === 'development'
|
|
207
|
+
this.displayInfo();
|
|
208
|
+
console.timeEnd(`时间分片-${id}`);
|
|
209
|
+
/// #endif
|
|
210
|
+
resolve(result);
|
|
211
|
+
};
|
|
212
|
+
/** 运行帧 */
|
|
213
|
+
const runFrame = () => {
|
|
214
|
+
this.setFrameStart();
|
|
215
|
+
runGroup();
|
|
216
|
+
};
|
|
217
|
+
/** 运行下组任务 */
|
|
218
|
+
const runNextGroup = () => {
|
|
219
|
+
const { next, task } = this.getNextData();
|
|
220
|
+
group.limit = task;
|
|
221
|
+
if (next === constant_1.NextState.MicroTask) {
|
|
222
|
+
Promise.resolve().then(runGroup);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
this.setFrameEnd();
|
|
226
|
+
requestIdleCallback(runFrame);
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
/** 运行任务组 */
|
|
230
|
+
const runGroup = () => {
|
|
231
|
+
this.setGroupStart();
|
|
232
|
+
runGroupTask();
|
|
233
|
+
this.setGroupEnd();
|
|
234
|
+
// 等待异步任务
|
|
235
|
+
if (waitAsync) {
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
// 结束运行
|
|
239
|
+
if (result.done) {
|
|
240
|
+
runStop(result.value);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
runNextGroup();
|
|
244
|
+
};
|
|
245
|
+
/** 运行异步任务 */
|
|
246
|
+
const runAsyncTask = (param) => {
|
|
247
|
+
this.setAsyncEnd();
|
|
248
|
+
this.async.result = param;
|
|
249
|
+
runNextGroup();
|
|
250
|
+
waitAsync = false;
|
|
251
|
+
this.async.time = 0;
|
|
252
|
+
};
|
|
253
|
+
/** 运行任务 */
|
|
254
|
+
const runGroupTask = () => {
|
|
255
|
+
let taskId = 0;
|
|
256
|
+
while (!result.done && taskId < group.limit) {
|
|
257
|
+
const lastParam = isPromise(result.value) ? this.async.result : result.value;
|
|
258
|
+
taskId++;
|
|
259
|
+
result = generator.next(lastParam);
|
|
260
|
+
// 返回 Promise 时,等待异步任务完成
|
|
261
|
+
if (isPromise(result.value)) {
|
|
262
|
+
// 最后返回异步
|
|
263
|
+
if (result.done) {
|
|
264
|
+
result.value
|
|
265
|
+
.then(runStop)
|
|
266
|
+
.catch(error => generator.throw(error));
|
|
267
|
+
}
|
|
268
|
+
// 中途的异步流程
|
|
269
|
+
else {
|
|
270
|
+
waitAsync = true;
|
|
271
|
+
this.setAsyncStart();
|
|
272
|
+
result.value
|
|
273
|
+
.then(runAsyncTask)
|
|
274
|
+
.catch(error => generator.throw(error));
|
|
275
|
+
}
|
|
276
|
+
break;
|
|
277
|
+
}
|
|
278
|
+
// 运行完毕
|
|
279
|
+
else if (result.done || taskId >= group.limit) {
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// 记录实际运行数量
|
|
284
|
+
group.limit = taskId;
|
|
285
|
+
};
|
|
286
|
+
/// #if process.env.NODE_ENV === 'development'
|
|
287
|
+
console.time(`时间分片-${id}`);
|
|
288
|
+
/// #endif
|
|
289
|
+
// 启动分片
|
|
290
|
+
runFrame();
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
exports.TimeSlicingController = TimeSlicingController;
|
|
295
|
+
//# sourceMappingURL=controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/time-slicing/controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/time-slicing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE3D,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.returnOrigin = exports.isGenerator = exports.delay = void 0;
|
|
18
|
+
var utils_1 = require("./utils");
|
|
19
|
+
Object.defineProperty(exports, "delay", { enumerable: true, get: function () { return utils_1.delay; } });
|
|
20
|
+
Object.defineProperty(exports, "isGenerator", { enumerable: true, get: function () { return utils_1.isGenerator; } });
|
|
21
|
+
Object.defineProperty(exports, "returnOrigin", { enumerable: true, get: function () { return utils_1.returnOrigin; } });
|
|
22
|
+
__exportStar(require("./runner"), exports);
|
|
23
|
+
__exportStar(require("./wrapper"), exports);
|
|
24
|
+
__exportStar(require("./tool"), exports);
|
|
25
|
+
__exportStar(require("./controller"), exports);
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/time-slicing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iCAA2D;AAAlD,8FAAA,KAAK,OAAA;AAAE,oGAAA,WAAW,OAAA;AAAE,qGAAA,YAAY,OAAA;AAEzC,2CAAyB;AACzB,4CAA0B;AAC1B,yCAAuB;AACvB,+CAA6B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-state.d.ts","sourceRoot":"","sources":["../../src/time-slicing/page-state.ts"],"names":[],"mappings":"AAEA,aAAa;AACb,eAAO,MAAM,YAAY,eAAoC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isPageActive = void 0;
|
|
4
|
+
const env_1 = require("../env");
|
|
5
|
+
/** 页面活动状态 */
|
|
6
|
+
const isPageActive = () => !env_1.isNode && !document.hidden;
|
|
7
|
+
exports.isPageActive = isPageActive;
|
|
8
|
+
//# sourceMappingURL=page-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-state.js","sourceRoot":"","sources":["../../src/time-slicing/page-state.ts"],"names":[],"mappings":";;;AAAA,gCAAgC;AAEhC,aAAa;AACN,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,CAAC,YAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAAjD,QAAA,YAAY,gBAAqC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class Performance {
|
|
2
|
+
private id;
|
|
3
|
+
constructor(id: number);
|
|
4
|
+
get prefix(): string;
|
|
5
|
+
private getPerformanceId;
|
|
6
|
+
private clearEntry;
|
|
7
|
+
mark(name: string): PerformanceMark;
|
|
8
|
+
measure(name: string, startMark: string, endMark: string): PerformanceMeasure;
|
|
9
|
+
clearByNames(...names: string[]): void;
|
|
10
|
+
clear(): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=performance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../src/time-slicing/performance.ts"],"names":[],"mappings":"AAKA,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAS;gBAEP,EAAE,EAAE,MAAM;IAItB,IAAI,MAAM,WAET;IAED,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,UAAU;IASlB,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAIxD,YAAY,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE;IAU/B,KAAK;CAQN"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Performance = void 0;
|
|
4
|
+
var EntryType;
|
|
5
|
+
(function (EntryType) {
|
|
6
|
+
EntryType["mark"] = "mark";
|
|
7
|
+
EntryType["measure"] = "measure";
|
|
8
|
+
})(EntryType || (EntryType = {}));
|
|
9
|
+
class Performance {
|
|
10
|
+
constructor(id) {
|
|
11
|
+
this.id = id;
|
|
12
|
+
}
|
|
13
|
+
get prefix() {
|
|
14
|
+
return `[time-slicing]-${this.id}`;
|
|
15
|
+
}
|
|
16
|
+
getPerformanceId(name) {
|
|
17
|
+
return `${this.prefix}-${name}`;
|
|
18
|
+
}
|
|
19
|
+
clearEntry(entry) {
|
|
20
|
+
if (entry.entryType === EntryType.mark) {
|
|
21
|
+
performance.clearMarks(entry.name);
|
|
22
|
+
}
|
|
23
|
+
else if (entry.entryType === EntryType.measure) {
|
|
24
|
+
performance.clearMeasures(entry.name);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
mark(name) {
|
|
28
|
+
return performance?.mark?.(this.getPerformanceId(name));
|
|
29
|
+
}
|
|
30
|
+
measure(name, startMark, endMark) {
|
|
31
|
+
return performance?.measure?.(this.getPerformanceId(name), this.getPerformanceId(startMark), this.getPerformanceId(endMark));
|
|
32
|
+
}
|
|
33
|
+
clearByNames(...names) {
|
|
34
|
+
for (const name of names) {
|
|
35
|
+
const entry = performance?.getEntriesByName?.(this.getPerformanceId(name))[0];
|
|
36
|
+
if (entry) {
|
|
37
|
+
this.clearEntry(entry);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
clear() {
|
|
42
|
+
const { prefix } = this;
|
|
43
|
+
performance.getEntries()
|
|
44
|
+
.filter((item) => item.entryType === EntryType.mark || item.entryType === EntryType.measure)
|
|
45
|
+
.filter((item) => item.name.startsWith(prefix))
|
|
46
|
+
.forEach((entry) => this.clearEntry(entry));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.Performance = Performance;
|
|
50
|
+
//# sourceMappingURL=performance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../src/time-slicing/performance.ts"],"names":[],"mappings":";;;AAAA,IAAK,SAGJ;AAHD,WAAK,SAAS;IACZ,0BAAa,CAAA;IACb,gCAAmB,CAAA;AACrB,CAAC,EAHI,SAAS,KAAT,SAAS,QAGb;AAED,MAAa,WAAW;IAGtB,YAAY,EAAU;QACpB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED,IAAI,MAAM;QACR,OAAO,kBAAkB,IAAI,CAAC,EAAE,EAAE,CAAC;IACrC,CAAC;IAEO,gBAAgB,CAAC,IAAY;QACnC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;IAClC,CAAC;IAEO,UAAU,CAAC,KAAuB;QACxC,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACvC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;aACI,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;YAC/C,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAY;QACf,OAAO,WAAW,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,SAAiB,EAAE,OAAe;QACtD,OAAO,WAAW,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/H,CAAC;IAED,YAAY,CAAC,GAAG,KAAe;QAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,WAAW,EAAE,gBAAgB,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE9E,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAExB,WAAW,CAAC,UAAU,EAAE;aACrB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,OAAO,CAAC;aAC3F,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAC9C,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;CACF;AAlDD,kCAkDC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 运行生成器
|
|
3
|
+
*
|
|
4
|
+
* @description 同步模式
|
|
5
|
+
*/
|
|
6
|
+
export declare function runGeneratorSync<T = void>(generator: Generator<any, T, any>): T;
|
|
7
|
+
/**
|
|
8
|
+
* 运行生成器
|
|
9
|
+
*
|
|
10
|
+
* @description 异步模式
|
|
11
|
+
*/
|
|
12
|
+
export declare function runGeneratorAsync<T = void>(generator: Generator<any, T, any>): T extends Promise<any> ? T : Promise<T>;
|
|
13
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/time-slicing/runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,KAM3E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAiCtH"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runGeneratorAsync = exports.runGeneratorSync = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* 运行生成器
|
|
6
|
+
*
|
|
7
|
+
* @description 同步模式
|
|
8
|
+
*/
|
|
9
|
+
function runGeneratorSync(generator) {
|
|
10
|
+
let result = generator.next();
|
|
11
|
+
while (!result.done) {
|
|
12
|
+
result = generator.next(result.value);
|
|
13
|
+
}
|
|
14
|
+
return result.value;
|
|
15
|
+
}
|
|
16
|
+
exports.runGeneratorSync = runGeneratorSync;
|
|
17
|
+
/**
|
|
18
|
+
* 运行生成器
|
|
19
|
+
*
|
|
20
|
+
* @description 异步模式
|
|
21
|
+
*/
|
|
22
|
+
function runGeneratorAsync(generator) {
|
|
23
|
+
return new Promise((resolve) => {
|
|
24
|
+
let result = {
|
|
25
|
+
done: false,
|
|
26
|
+
value: undefined,
|
|
27
|
+
};
|
|
28
|
+
function isPromise(input) {
|
|
29
|
+
return Boolean(input && input instanceof Promise);
|
|
30
|
+
}
|
|
31
|
+
function runAsync(param) {
|
|
32
|
+
result.value = param;
|
|
33
|
+
run();
|
|
34
|
+
}
|
|
35
|
+
function run() {
|
|
36
|
+
while (!result.done && !isPromise(result.value)) {
|
|
37
|
+
result = generator.next(result.value);
|
|
38
|
+
}
|
|
39
|
+
if (isPromise(result.value)) {
|
|
40
|
+
result.value
|
|
41
|
+
.then(result.done ? resolve : runAsync)
|
|
42
|
+
.catch(error => generator.throw(error));
|
|
43
|
+
}
|
|
44
|
+
else if (result.done) {
|
|
45
|
+
resolve(result.value);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
run();
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
exports.runGeneratorAsync = runGeneratorAsync;
|
|
52
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/time-slicing/runner.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,SAAgB,gBAAgB,CAAW,SAAiC;IAC1E,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAND,4CAMC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAW,SAAiC;IAC3E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,MAAM,GAA2B;YACnC,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,SAAS;SACjB,CAAC;QAEF,SAAS,SAAS,CAAC,KAAc;YAC/B,OAAO,OAAO,CAAC,KAAK,IAAI,KAAK,YAAY,OAAO,CAAC,CAAC;QACpD,CAAC;QAED,SAAS,QAAQ,CAAC,KAAc;YAC9B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YACrB,GAAG,EAAE,CAAC;QACR,CAAC;QAED,SAAS,GAAG;YACV,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChD,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,KAAK;qBACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;qBACtC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5C,CAAC;iBACI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,GAAG,EAAE,CAAC;IACR,CAAC,CAAQ,CAAC;AACZ,CAAC;AAjCD,8CAiCC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 时间分片
|
|
3
|
+
*
|
|
4
|
+
* @description 大型任务分片执行,保证不阻塞主线程
|
|
5
|
+
* @description 数组回调必须是同步的,若是想要使用异步回调,请使用`timeSlicingWithGenerator`方法
|
|
6
|
+
* @param {T[]} list - 项目列表
|
|
7
|
+
* @param {(val: T, index: number) => void} cb - 每个项目的回调
|
|
8
|
+
*/
|
|
9
|
+
export declare function timeSlicingWithList<T>(list: T[], cb: (val: T, index: number, arr: T[]) => void): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* 生成器时间分片
|
|
12
|
+
*
|
|
13
|
+
* @description 大型任务的分片执行保证不阻塞主线程
|
|
14
|
+
* @description 生成器中允许使用异步操作,使用`yield [promise]`语句即可
|
|
15
|
+
* @example
|
|
16
|
+
* ```
|
|
17
|
+
* timeSlicingWithGenerator((function test() {
|
|
18
|
+
* const result = yield axios.get('xxxxxx');
|
|
19
|
+
* console.log(result);
|
|
20
|
+
* })());
|
|
21
|
+
* ```
|
|
22
|
+
* @param {Generator<any, T, any>} generator - 生成器
|
|
23
|
+
*/
|
|
24
|
+
export declare function timeSlicingWithGenerator<T = void>(generator: Generator<any, T, any>): T extends Promise<any> ? T : Promise<T>;
|
|
25
|
+
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/time-slicing/tool.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ9G;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,GAAG,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAO7H"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.timeSlicingWithGenerator = exports.timeSlicingWithList = void 0;
|
|
4
|
+
const env_1 = require("../env");
|
|
5
|
+
const controller_1 = require("./controller");
|
|
6
|
+
const runner_1 = require("./runner");
|
|
7
|
+
const wrapper_1 = require("./wrapper");
|
|
8
|
+
/**
|
|
9
|
+
* 时间分片
|
|
10
|
+
*
|
|
11
|
+
* @description 大型任务分片执行,保证不阻塞主线程
|
|
12
|
+
* @description 数组回调必须是同步的,若是想要使用异步回调,请使用`timeSlicingWithGenerator`方法
|
|
13
|
+
* @param {T[]} list - 项目列表
|
|
14
|
+
* @param {(val: T, index: number) => void} cb - 每个项目的回调
|
|
15
|
+
*/
|
|
16
|
+
function timeSlicingWithList(list, cb) {
|
|
17
|
+
// node 环境不需要进行切片
|
|
18
|
+
if (env_1.isNode) {
|
|
19
|
+
list.forEach((item, i) => cb(item, i, list));
|
|
20
|
+
return Promise.resolve();
|
|
21
|
+
}
|
|
22
|
+
return new controller_1.TimeSlicingController().run((0, wrapper_1.wrapForEachToGenerator)(list, cb));
|
|
23
|
+
}
|
|
24
|
+
exports.timeSlicingWithList = timeSlicingWithList;
|
|
25
|
+
/**
|
|
26
|
+
* 生成器时间分片
|
|
27
|
+
*
|
|
28
|
+
* @description 大型任务的分片执行保证不阻塞主线程
|
|
29
|
+
* @description 生成器中允许使用异步操作,使用`yield [promise]`语句即可
|
|
30
|
+
* @example
|
|
31
|
+
* ```
|
|
32
|
+
* timeSlicingWithGenerator((function test() {
|
|
33
|
+
* const result = yield axios.get('xxxxxx');
|
|
34
|
+
* console.log(result);
|
|
35
|
+
* })());
|
|
36
|
+
* ```
|
|
37
|
+
* @param {Generator<any, T, any>} generator - 生成器
|
|
38
|
+
*/
|
|
39
|
+
function timeSlicingWithGenerator(generator) {
|
|
40
|
+
// node 环境不需要进行切片
|
|
41
|
+
if (env_1.isNode) {
|
|
42
|
+
return (0, runner_1.runGeneratorAsync)(generator);
|
|
43
|
+
}
|
|
44
|
+
return new controller_1.TimeSlicingController().run(generator);
|
|
45
|
+
}
|
|
46
|
+
exports.timeSlicingWithGenerator = timeSlicingWithGenerator;
|
|
47
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/time-slicing/tool.ts"],"names":[],"mappings":";;;AAAA,gCAAgC;AAChC,6CAAqD;AACrD,qCAAyD;AACzD,uCAAmD;AAEnD;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CAAI,IAAS,EAAE,EAA6C;IAC7F,iBAAiB;IACjB,IAAI,YAAM,EAAE,CAAC;QACX,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,kCAAqB,EAAE,CAAC,GAAG,CAAC,IAAA,gCAAsB,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3E,CAAC;AARD,kDAQC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,wBAAwB,CAAW,SAAiC;IAClF,iBAAiB;IACjB,IAAI,YAAM,EAAE,CAAC;QACX,OAAO,IAAA,0BAAQ,EAAI,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,IAAI,kCAAqB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACpD,CAAC;AAPD,4DAOC"}
|