@certd/basic 1.37.10 → 1.37.11
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/CHANGELOG.md +8 -0
- package/build.md +1 -1
- package/dist/utils/util.lock.d.ts +5 -5
- package/dist/utils/util.lock.js +9 -38
- package/package.json +3 -2
- package/test.mjs +14 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [1.37.11](https://github.com/certd/certd/compare/v1.37.10...v1.37.11) (2025-11-28)
|
|
7
|
+
|
|
8
|
+
### Performance Improvements
|
|
9
|
+
|
|
10
|
+
* 优化宝塔网站证书在并发部署时导致nginx配置文件错乱的问题 ([51cc084](https://github.com/certd/certd/commit/51cc08411fd2dbab66d769b495dc1b0bf2f2578c))
|
|
11
|
+
* 优化天翼云cdn 等待5秒部署完成 ([53c88ad](https://github.com/certd/certd/commit/53c88ad5afe66a3f7c38b9b759747918913a4edc))
|
|
12
|
+
* ssl.com支持ecc ([b5ec047](https://github.com/certd/certd/commit/b5ec04723db48422f71041f4043002e7f5b450b1))
|
|
13
|
+
|
|
6
14
|
## [1.37.10](https://github.com/certd/certd/compare/v1.37.9...v1.37.10) (2025-11-19)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package @certd/basic
|
package/build.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
04:13
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export declare class Locker {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
private asyncLocker;
|
|
3
|
+
constructor();
|
|
4
|
+
execute(lockStr: string, callback: any, options?: {
|
|
5
|
+
timeout?: number;
|
|
6
|
+
}): Promise<any>;
|
|
7
7
|
}
|
|
8
8
|
export declare const locker: Locker;
|
package/dist/utils/util.lock.js
CHANGED
|
@@ -1,43 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import AsyncLock from "async-lock";
|
|
2
3
|
export class Locker {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const timeoutId = setTimeout(() => {
|
|
7
|
-
logger.warn('Lock timeout,自动解锁', lockStr);
|
|
8
|
-
this.unlock(lockStr);
|
|
9
|
-
}, 20000);
|
|
10
|
-
try {
|
|
11
|
-
return await callback();
|
|
12
|
-
}
|
|
13
|
-
finally {
|
|
14
|
-
clearTimeout(timeoutId);
|
|
15
|
-
this.unlock(lockStr);
|
|
16
|
-
}
|
|
4
|
+
asyncLocker;
|
|
5
|
+
constructor() {
|
|
6
|
+
this.asyncLocker = new AsyncLock();
|
|
17
7
|
}
|
|
18
|
-
async
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
let count = 0;
|
|
22
|
-
while (true) {
|
|
23
|
-
await utils.sleep(100);
|
|
24
|
-
if (!this.isLocked(str)) {
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
count++;
|
|
28
|
-
if (count > 20) {
|
|
29
|
-
throw new Error('Lock timeout');
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
this.locked[str] = true;
|
|
34
|
-
}
|
|
35
|
-
unlock(str) {
|
|
36
|
-
delete this.locked[str];
|
|
37
|
-
}
|
|
38
|
-
isLocked(str) {
|
|
39
|
-
return this.locked[str] ?? false;
|
|
8
|
+
async execute(lockStr, callback, options) {
|
|
9
|
+
const timeout = options?.timeout ?? 120000;
|
|
10
|
+
return this.asyncLocker.acquire(lockStr, callback, { timeout });
|
|
40
11
|
}
|
|
41
12
|
}
|
|
42
13
|
export const locker = new Locker();
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5sb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3V0aWwubG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhO0FBQ2IsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBRW5DLE1BQU0sT0FBTyxNQUFNO0lBQ1QsV0FBVyxDQUFZO0lBRS9CO1FBQ0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQWUsRUFBRSxRQUFhLEVBQUUsT0FBOEI7UUFDMUUsTUFBTSxPQUFPLEdBQUcsT0FBTyxFQUFFLE9BQU8sSUFBSSxNQUFNLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@certd/basic",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.37.
|
|
4
|
+
"version": "1.37.11",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.js",
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
"compile": "tsc --skipLibCheck --watch"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
+
"async-lock": "^1.4.1",
|
|
20
21
|
"axios": "^1.7.2",
|
|
21
22
|
"dayjs": "^1.11.7",
|
|
22
23
|
"http-proxy-agent": "^7.0.2",
|
|
@@ -46,5 +47,5 @@
|
|
|
46
47
|
"tslib": "^2.8.1",
|
|
47
48
|
"typescript": "^5.4.2"
|
|
48
49
|
},
|
|
49
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "9acac86ed58616fef31ec4d63021bb221429a425"
|
|
50
51
|
}
|
package/test.mjs
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { random } from "lodash-es";
|
|
2
|
+
import { locker } from "./dist/utils/util.lock.js";
|
|
3
|
+
|
|
4
|
+
async function testLocker() {
|
|
5
|
+
for (let i = 0; i < 10; i++) {
|
|
6
|
+
await locker.execute("test", async () => {
|
|
7
|
+
console.log("test", i);
|
|
8
|
+
await new Promise(resolve => setTimeout(resolve, Math.random() * 1000));
|
|
9
|
+
throw new Error("test error");
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
await testLocker();
|