@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.
Files changed (99) hide show
  1. package/README.md +3 -0
  2. package/out/assets.d.ts +8 -0
  3. package/out/assets.d.ts.map +1 -0
  4. package/out/assets.js +14 -0
  5. package/out/assets.js.map +1 -0
  6. package/out/batch.d.ts +37 -0
  7. package/out/batch.d.ts.map +1 -0
  8. package/out/batch.js +148 -0
  9. package/out/batch.js.map +1 -0
  10. package/out/concept.d.ts +5 -0
  11. package/out/concept.d.ts.map +1 -0
  12. package/out/concept.js +48 -0
  13. package/out/concept.js.map +1 -0
  14. package/out/constant.d.ts +8 -0
  15. package/out/constant.d.ts.map +1 -0
  16. package/out/constant.js +41 -0
  17. package/out/constant.js.map +1 -0
  18. package/out/data/defaultErrorMessage.json +98 -0
  19. package/out/delay.d.ts +3 -0
  20. package/out/delay.d.ts.map +1 -0
  21. package/out/delay.js +9 -0
  22. package/out/delay.js.map +1 -0
  23. package/out/env.d.ts +11 -0
  24. package/out/env.d.ts.map +1 -0
  25. package/out/env.js +14 -0
  26. package/out/env.js.map +1 -0
  27. package/out/file.d.ts +34 -0
  28. package/out/file.d.ts.map +1 -0
  29. package/out/file.js +50 -0
  30. package/out/file.js.map +1 -0
  31. package/out/hash.d.ts +7 -0
  32. package/out/hash.d.ts.map +1 -0
  33. package/out/hash.js +38 -0
  34. package/out/hash.js.map +1 -0
  35. package/out/index.d.ts +15 -0
  36. package/out/index.d.ts.map +1 -0
  37. package/out/index.js +31 -0
  38. package/out/index.js.map +1 -0
  39. package/out/logger.d.ts +3 -0
  40. package/out/logger.d.ts.map +1 -0
  41. package/out/logger.js +21 -0
  42. package/out/logger.js.map +1 -0
  43. package/out/string.d.ts +76 -0
  44. package/out/string.d.ts.map +1 -0
  45. package/out/string.js +191 -0
  46. package/out/string.js.map +1 -0
  47. package/out/time-slicing/constant.d.ts +36 -0
  48. package/out/time-slicing/constant.d.ts.map +1 -0
  49. package/out/time-slicing/constant.js +40 -0
  50. package/out/time-slicing/constant.js.map +1 -0
  51. package/out/time-slicing/controller.d.ts +54 -0
  52. package/out/time-slicing/controller.d.ts.map +1 -0
  53. package/out/time-slicing/controller.js +295 -0
  54. package/out/time-slicing/controller.js.map +1 -0
  55. package/out/time-slicing/index.d.ts +6 -0
  56. package/out/time-slicing/index.d.ts.map +1 -0
  57. package/out/time-slicing/index.js +26 -0
  58. package/out/time-slicing/index.js.map +1 -0
  59. package/out/time-slicing/page-state.d.ts +3 -0
  60. package/out/time-slicing/page-state.d.ts.map +1 -0
  61. package/out/time-slicing/page-state.js +8 -0
  62. package/out/time-slicing/page-state.js.map +1 -0
  63. package/out/time-slicing/performance.d.ts +12 -0
  64. package/out/time-slicing/performance.d.ts.map +1 -0
  65. package/out/time-slicing/performance.js +50 -0
  66. package/out/time-slicing/performance.js.map +1 -0
  67. package/out/time-slicing/runner.d.ts +13 -0
  68. package/out/time-slicing/runner.d.ts.map +1 -0
  69. package/out/time-slicing/runner.js +52 -0
  70. package/out/time-slicing/runner.js.map +1 -0
  71. package/out/time-slicing/tool.d.ts +25 -0
  72. package/out/time-slicing/tool.d.ts.map +1 -0
  73. package/out/time-slicing/tool.js +47 -0
  74. package/out/time-slicing/tool.js.map +1 -0
  75. package/out/time-slicing/utils.d.ts +63 -0
  76. package/out/time-slicing/utils.d.ts.map +1 -0
  77. package/out/time-slicing/utils.js +47 -0
  78. package/out/time-slicing/utils.js.map +1 -0
  79. package/out/time-slicing/wrapper.d.ts +19 -0
  80. package/out/time-slicing/wrapper.d.ts.map +1 -0
  81. package/out/time-slicing/wrapper.js +55 -0
  82. package/out/time-slicing/wrapper.js.map +1 -0
  83. package/out/traverse.d.ts +37 -0
  84. package/out/traverse.d.ts.map +1 -0
  85. package/out/traverse.js +144 -0
  86. package/out/traverse.js.map +1 -0
  87. package/out/types.d.ts +2 -0
  88. package/out/types.d.ts.map +1 -0
  89. package/out/types.js +3 -0
  90. package/out/types.js.map +1 -0
  91. package/out/uuid.d.ts +4 -0
  92. package/out/uuid.d.ts.map +1 -0
  93. package/out/uuid.js +15 -0
  94. package/out/uuid.js.map +1 -0
  95. package/out/window.d.ts +8 -0
  96. package/out/window.d.ts.map +1 -0
  97. package/out/window.js +14 -0
  98. package/out/window.js.map +1 -0
  99. 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,6 @@
1
+ export { delay, isGenerator, returnOrigin } from './utils';
2
+ export * from './runner';
3
+ export * from './wrapper';
4
+ export * from './tool';
5
+ export * from './controller';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ /** 页面活动状态 */
2
+ export declare const isPageActive: () => boolean;
3
+ //# sourceMappingURL=page-state.d.ts.map
@@ -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"}