@certd/basic 1.37.10 → 1.37.12

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 CHANGED
@@ -3,6 +3,18 @@
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.12](https://github.com/certd/certd/compare/v1.37.11...v1.37.12) (2025-11-29)
7
+
8
+ **Note:** Version bump only for package @certd/basic
9
+
10
+ ## [1.37.11](https://github.com/certd/certd/compare/v1.37.10...v1.37.11) (2025-11-28)
11
+
12
+ ### Performance Improvements
13
+
14
+ * 优化宝塔网站证书在并发部署时导致nginx配置文件错乱的问题 ([51cc084](https://github.com/certd/certd/commit/51cc08411fd2dbab66d769b495dc1b0bf2f2578c))
15
+ * 优化天翼云cdn 等待5秒部署完成 ([53c88ad](https://github.com/certd/certd/commit/53c88ad5afe66a3f7c38b9b759747918913a4edc))
16
+ * ssl.com支持ecc ([b5ec047](https://github.com/certd/certd/commit/b5ec04723db48422f71041f4043002e7f5b450b1))
17
+
6
18
  ## [1.37.10](https://github.com/certd/certd/compare/v1.37.9...v1.37.10) (2025-11-19)
7
19
 
8
20
  **Note:** Version bump only for package @certd/basic
package/build.md CHANGED
@@ -1 +1 @@
1
- 23:49
1
+ 02:28
@@ -1,8 +1,8 @@
1
1
  export declare class Locker {
2
- locked: Record<string, any>;
3
- execute(lockStr: string, callback: any): Promise<any>;
4
- lock(str: string): Promise<void>;
5
- unlock(str: string): void;
6
- isLocked(str: string): any;
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;
@@ -1,43 +1,14 @@
1
- import { logger, utils } from './index.js';
1
+ // @ts-ignore
2
+ import AsyncLock from "async-lock";
2
3
  export class Locker {
3
- locked = {};
4
- async execute(lockStr, callback) {
5
- await this.lock(lockStr);
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 lock(str) {
19
- const isLocked = this.isLocked(str);
20
- if (isLocked) {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5sb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3V0aWwubG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxNQUFNLE9BQU8sTUFBTTtJQUNqQixNQUFNLEdBQXdCLEVBQUUsQ0FBQztJQUVqQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQWUsRUFBRSxRQUFhO1FBQzFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QixNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDVixJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sUUFBUSxFQUFFLENBQUM7UUFDMUIsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQVc7UUFDcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsT0FBTyxJQUFJLEVBQUUsQ0FBQztnQkFDWixNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3hCLE1BQU07Z0JBQ1IsQ0FBQztnQkFDRCxLQUFLLEVBQUUsQ0FBQztnQkFDUixJQUFJLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQztvQkFDZixNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDIn0=
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.10",
4
+ "version": "1.37.12",
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": "eb41a3655fe91af94f1c42a51aaa9122edfcf40e"
50
+ "gitHead": "7a1c6d291877b44c4b8add9f55549aa9be3f94a5"
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();