@eggjs/tegg-background-task 4.0.0-beta.7 → 4.0.0-beta.9
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/dist/BackgroundTaskHelper.d.ts +11 -15
- package/dist/BackgroundTaskHelper.js +113 -77
- package/dist/index.d.ts +1 -2
- package/dist/index.js +2 -3
- package/package.json +6 -6
- package/dist/_virtual/_@oxc-project_runtime@0.93.0/helpers/decorate.js +0 -10
- package/dist/_virtual/_@oxc-project_runtime@0.93.0/helpers/decorateMetadata.js +0 -7
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
doPreDestroy(): Promise<void>;
|
|
13
|
-
private sleep;
|
|
1
|
+
import type { EggLogger, EggAppConfig } from 'egg';
|
|
2
|
+
import type { EggObjectLifecycle } from '@eggjs/tegg-types';
|
|
3
|
+
export declare class BackgroundTaskHelper implements EggObjectLifecycle {
|
|
4
|
+
logger: EggLogger;
|
|
5
|
+
timeout: number;
|
|
6
|
+
config: EggAppConfig;
|
|
7
|
+
private backgroundTasks;
|
|
8
|
+
init(): Promise<void>;
|
|
9
|
+
run(fn: () => Promise<void>): void;
|
|
10
|
+
doPreDestroy(): Promise<void>;
|
|
11
|
+
private sleep;
|
|
14
12
|
}
|
|
15
|
-
//#endregion
|
|
16
|
-
export { BackgroundTaskHelper };
|
|
@@ -1,78 +1,114 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import { ContextHandler, EggContextLifecycleUtil } from "@eggjs/tegg-runtime";
|
|
7
|
-
|
|
8
|
-
//#region src/BackgroundTaskHelper.ts
|
|
9
|
-
let BackgroundTaskHelper = class BackgroundTaskHelper$1 {
|
|
10
|
-
logger;
|
|
11
|
-
timeout = 5e3;
|
|
12
|
-
config;
|
|
13
|
-
backgroundTasks = [];
|
|
14
|
-
async init() {
|
|
15
|
-
const ctx = ContextHandler.getContext();
|
|
16
|
-
assert(ctx, "background task helper must be init in context");
|
|
17
|
-
EggContextLifecycleUtil.registerObjectLifecycle(ctx, { preDestroy: async () => {
|
|
18
|
-
await this.doPreDestroy();
|
|
19
|
-
} });
|
|
20
|
-
if (this.config.backgroundTask?.timeout) this.timeout = this.config.backgroundTask.timeout;
|
|
21
|
-
}
|
|
22
|
-
run(fn) {
|
|
23
|
-
const backgroundTask = new Promise((resolve) => {
|
|
24
|
-
try {
|
|
25
|
-
fn().then(resolve).catch((e) => {
|
|
26
|
-
e.message = "[BackgroundTaskHelper] background throw error:" + e.message;
|
|
27
|
-
this.logger.error(e);
|
|
28
|
-
resolve();
|
|
29
|
-
});
|
|
30
|
-
} catch (e) {
|
|
31
|
-
e.message = "[BackgroundTaskHelper] create background throw error:" + e.message;
|
|
32
|
-
this.logger.error(e);
|
|
33
|
-
resolve();
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
this.backgroundTasks.push(backgroundTask);
|
|
37
|
-
}
|
|
38
|
-
async doPreDestroy() {
|
|
39
|
-
if (!this.backgroundTasks.length) return;
|
|
40
|
-
const backgroundTasks = this.backgroundTasks.slice();
|
|
41
|
-
if (this.timeout <= 0 || this.timeout === Infinity) await Promise.all(backgroundTasks);
|
|
42
|
-
else {
|
|
43
|
-
const { promise: timeout, resolve } = this.sleep();
|
|
44
|
-
await Promise.race([timeout, Promise.all(backgroundTasks)]);
|
|
45
|
-
resolve();
|
|
46
|
-
}
|
|
47
|
-
if (this.backgroundTasks.length !== backgroundTasks.length) {
|
|
48
|
-
this.backgroundTasks = this.backgroundTasks.slice(backgroundTasks.length);
|
|
49
|
-
return this.doPreDestroy();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
sleep() {
|
|
53
|
-
let timer;
|
|
54
|
-
let promiseResolve;
|
|
55
|
-
const now = Date.now();
|
|
56
|
-
const p = new Promise((r) => {
|
|
57
|
-
promiseResolve = r;
|
|
58
|
-
timer = setTimeout(() => {
|
|
59
|
-
this.logger.error(`[BackgroundTaskHelper] task is timeout actual is ${Date.now() - now} expect is ${this.timeout}`);
|
|
60
|
-
r();
|
|
61
|
-
}, this.timeout);
|
|
62
|
-
});
|
|
63
|
-
function resolve() {
|
|
64
|
-
clearTimeout(timer);
|
|
65
|
-
promiseResolve();
|
|
66
|
-
}
|
|
67
|
-
return {
|
|
68
|
-
promise: p,
|
|
69
|
-
resolve
|
|
70
|
-
};
|
|
71
|
-
}
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
72
6
|
};
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import assert from 'node:assert';
|
|
11
|
+
import { ContextProto, Inject } from '@eggjs/core-decorator';
|
|
12
|
+
import { AccessLevel } from '@eggjs/tegg-types';
|
|
13
|
+
import { ContextHandler, EggContextLifecycleUtil } from '@eggjs/tegg-runtime';
|
|
14
|
+
let BackgroundTaskHelper = class BackgroundTaskHelper {
|
|
15
|
+
logger;
|
|
16
|
+
// default timeout for async task
|
|
17
|
+
timeout = 5000;
|
|
18
|
+
config;
|
|
19
|
+
backgroundTasks = [];
|
|
20
|
+
async init() {
|
|
21
|
+
const ctx = ContextHandler.getContext();
|
|
22
|
+
assert(ctx, 'background task helper must be init in context');
|
|
23
|
+
EggContextLifecycleUtil.registerObjectLifecycle(ctx, {
|
|
24
|
+
preDestroy: async () => {
|
|
25
|
+
await this.doPreDestroy();
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
if (this.config.backgroundTask?.timeout) {
|
|
29
|
+
this.timeout = this.config.backgroundTask.timeout;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
run(fn) {
|
|
33
|
+
const backgroundTask = new Promise(resolve => {
|
|
34
|
+
try {
|
|
35
|
+
fn()
|
|
36
|
+
// fn is resolve, resolve the task
|
|
37
|
+
.then(resolve)
|
|
38
|
+
.catch(e => {
|
|
39
|
+
e.message = '[BackgroundTaskHelper] background throw error:' + e.message;
|
|
40
|
+
this.logger.error(e);
|
|
41
|
+
// fn is rejected, resolve the task
|
|
42
|
+
resolve();
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (e) {
|
|
46
|
+
e.message = '[BackgroundTaskHelper] create background throw error:' + e.message;
|
|
47
|
+
this.logger.error(e);
|
|
48
|
+
// create task failed, resolve the task
|
|
49
|
+
resolve();
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
this.backgroundTasks.push(backgroundTask);
|
|
53
|
+
}
|
|
54
|
+
async doPreDestroy() {
|
|
55
|
+
// quick quit
|
|
56
|
+
if (!this.backgroundTasks.length)
|
|
57
|
+
return;
|
|
58
|
+
const backgroundTasks = this.backgroundTasks.slice();
|
|
59
|
+
if (this.timeout <= 0 || this.timeout === Infinity) {
|
|
60
|
+
await Promise.all(backgroundTasks);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const { promise: timeout, resolve } = this.sleep();
|
|
64
|
+
await Promise.race([
|
|
65
|
+
// not block the pre destroy process too long
|
|
66
|
+
timeout,
|
|
67
|
+
// ensure all background task are done before destroy the context
|
|
68
|
+
Promise.all(backgroundTasks),
|
|
69
|
+
]);
|
|
70
|
+
// always resolve the sleep promise
|
|
71
|
+
resolve();
|
|
72
|
+
}
|
|
73
|
+
if (this.backgroundTasks.length !== backgroundTasks.length) {
|
|
74
|
+
this.backgroundTasks = this.backgroundTasks.slice(backgroundTasks.length);
|
|
75
|
+
return this.doPreDestroy();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
sleep() {
|
|
79
|
+
let timer;
|
|
80
|
+
let promiseResolve;
|
|
81
|
+
const now = Date.now();
|
|
82
|
+
const p = new Promise(r => {
|
|
83
|
+
promiseResolve = r;
|
|
84
|
+
timer = setTimeout(() => {
|
|
85
|
+
this.logger.error(`[BackgroundTaskHelper] task is timeout actual is ${Date.now() - now} expect is ${this.timeout}`);
|
|
86
|
+
r();
|
|
87
|
+
}, this.timeout);
|
|
88
|
+
});
|
|
89
|
+
function resolve() {
|
|
90
|
+
// clear timeout and resolve the promise
|
|
91
|
+
clearTimeout(timer);
|
|
92
|
+
promiseResolve();
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
promise: p,
|
|
96
|
+
resolve,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
__decorate([
|
|
101
|
+
Inject(),
|
|
102
|
+
__metadata("design:type", Function)
|
|
103
|
+
], BackgroundTaskHelper.prototype, "logger", void 0);
|
|
104
|
+
__decorate([
|
|
105
|
+
Inject(),
|
|
106
|
+
__metadata("design:type", Object)
|
|
107
|
+
], BackgroundTaskHelper.prototype, "config", void 0);
|
|
108
|
+
BackgroundTaskHelper = __decorate([
|
|
109
|
+
ContextProto({
|
|
110
|
+
accessLevel: AccessLevel.PUBLIC,
|
|
111
|
+
})
|
|
112
|
+
], BackgroundTaskHelper);
|
|
113
|
+
export { BackgroundTaskHelper };
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFja2dyb3VuZFRhc2tIZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQmFja2dyb3VuZFRhc2tIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBR2pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt2RSxJQUFNLG9CQUFvQixHQUExQixNQUFNLG9CQUFvQjtJQUUvQixNQUFNLENBQVk7SUFFbEIsaUNBQWlDO0lBQ2pDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFHZixNQUFNLENBQWU7SUFFYixlQUFlLEdBQXlCLEVBQUUsQ0FBQztJQUVuRCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN4QyxNQUFNLENBQUMsR0FBRyxFQUFFLGdEQUFnRCxDQUFDLENBQUM7UUFDOUQsdUJBQXVCLENBQUMsdUJBQXVCLENBQUMsR0FBRyxFQUFFO1lBQ25ELFVBQVUsRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDckIsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUIsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFRCxHQUFHLENBQUMsRUFBdUI7UUFDekIsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLENBQU8sT0FBTyxD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
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { BackgroundTaskHelper };
|
|
1
|
+
export * from './BackgroundTaskHelper.ts';
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export { BackgroundTaskHelper };
|
|
1
|
+
export * from "./BackgroundTaskHelper.js";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/tegg-background-task",
|
|
3
3
|
"description": "background util for tegg",
|
|
4
|
-
"version": "4.0.0-beta.
|
|
4
|
+
"version": "4.0.0-beta.9",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"egg",
|
|
7
7
|
"typescript",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"author": "killagu <killa123@126.com>",
|
|
33
33
|
"license": "MIT",
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@eggjs/core-decorator": "4.0.0-beta.
|
|
36
|
-
"@eggjs/tegg-runtime": "4.0.0-beta.
|
|
37
|
-
"@eggjs/tegg-types": "4.0.0-beta.
|
|
35
|
+
"@eggjs/core-decorator": "4.0.0-beta.9",
|
|
36
|
+
"@eggjs/tegg-runtime": "4.0.0-beta.9",
|
|
37
|
+
"@eggjs/tegg-types": "4.0.0-beta.9"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
40
|
"egg": "beta"
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"typescript": "^5.9.3",
|
|
45
45
|
"tsdown": "^0.15.6",
|
|
46
46
|
"unplugin-unused": "^0.5.3",
|
|
47
|
-
"@eggjs/tegg-common-util": "4.0.0-beta.
|
|
47
|
+
"@eggjs/tegg-common-util": "4.0.0-beta.9"
|
|
48
48
|
},
|
|
49
49
|
"publishConfig": {
|
|
50
50
|
"access": "public"
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"types": "./dist/index.d.ts",
|
|
55
55
|
"scripts": {
|
|
56
56
|
"clean": "rimraf dist",
|
|
57
|
-
"build": "tsdown",
|
|
57
|
+
"build": "tsdown && rimraf dist && tsc -b --clean && tsc",
|
|
58
58
|
"typecheck": "tsc --noEmit"
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
//#region \0@oxc-project+runtime@0.93.0/helpers/decorate.js
|
|
2
|
-
function __decorate(decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
//#endregion
|
|
10
|
-
export { __decorate };
|