@certd/pipeline 1.38.1 → 1.38.2

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,16 @@
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.38.2](https://github.com/certd/certd/compare/v1.38.1...v1.38.2) (2026-01-22)
7
+
8
+ ### Bug Fixes
9
+
10
+ * 修复插件修改名字和删除后没有注销注册的bug ([61192b9](https://github.com/certd/certd/commit/61192b998a7088a8f446fd224cc242def462a79b))
11
+
12
+ ### Performance Improvements
13
+
14
+ * 支持同步域名过期时间 ([a97cee8](https://github.com/certd/certd/commit/a97cee84f3bfdeeb2083d91f748cac5405fed6ae))
15
+
6
16
  ## [1.38.1](https://github.com/certd/certd/compare/v1.38.0...v1.38.1) (2026-01-15)
7
17
 
8
18
  ### Bug Fixes
@@ -6,11 +6,11 @@ export type PageSearch = {
6
6
  pageSize?: number;
7
7
  searchKey?: string;
8
8
  };
9
- export type PageRes = {
9
+ export type PageRes<T = any> = {
10
10
  pageNo?: number;
11
11
  pageSize?: number;
12
- total?: string;
13
- list: any[];
12
+ total?: number;
13
+ list: T[];
14
14
  };
15
15
  export declare class Pager {
16
16
  pageNo: number;
@@ -19,3 +19,9 @@ export declare class Pager {
19
19
  getOffset(): number;
20
20
  setOffset(offset: number): void;
21
21
  }
22
+ export declare function doPageTurn<T>(req: {
23
+ pager: Pager;
24
+ getPage: (pager: Pager) => Promise<PageRes<T>>;
25
+ itemHandle?: (item: T) => Promise<void>;
26
+ batchHandle?: (pageRes: PageRes<T>) => Promise<void>;
27
+ }): Promise<number>;
@@ -12,3 +12,28 @@ export class Pager {
12
12
  this.pageNo = Math.ceil(offset / (this.pageSize ?? 50)) + 1;
13
13
  }
14
14
  }
15
+ export async function doPageTurn(req) {
16
+ let count = 0;
17
+ const { pager, getPage, itemHandle, batchHandle } = req;
18
+ while (true) {
19
+ const pageRes = await getPage(pager);
20
+ if (!pageRes || !pageRes.list || pageRes.list.length === 0) {
21
+ break;
22
+ }
23
+ count += pageRes.list.length;
24
+ if (batchHandle) {
25
+ await batchHandle(pageRes);
26
+ }
27
+ if (itemHandle) {
28
+ for (const item of pageRes.list) {
29
+ await itemHandle(item);
30
+ }
31
+ }
32
+ if (pageRes.total && pageRes.total >= 0 && count >= pageRes.total) {
33
+ //遍历完成
34
+ break;
35
+ }
36
+ pager.pageNo++;
37
+ }
38
+ return count;
39
+ }
@@ -18,4 +18,13 @@ const onRegister = ({ key, value }) => {
18
18
  }
19
19
  pluginGroups.other.plugins.push(value.define);
20
20
  };
21
- export const pluginRegistry = createRegistry("plugin", onRegister);
21
+ const onUnRegister = ({ key }) => {
22
+ for (const group of Object.values(pluginGroups)) {
23
+ const index = group.plugins.findIndex(plugin => plugin.name === key);
24
+ if (index > -1) {
25
+ group.plugins.splice(index, 1);
26
+ return;
27
+ }
28
+ }
29
+ };
30
+ export const pluginRegistry = createRegistry("plugin", onRegister, onUnRegister);
@@ -23,7 +23,8 @@ export declare class Registry<T = any> {
23
23
  [key: string]: RegistryItem<T>;
24
24
  };
25
25
  onRegister?: OnRegister<T>;
26
- constructor(type: string, onRegister?: OnRegister<T>);
26
+ onUnRegister?: OnRegister<T>;
27
+ constructor(type: string, onRegister?: OnRegister<T>, onUnRegister?: OnRegister<T>);
27
28
  register(key: string, value: RegistryItem<T>): void;
28
29
  unRegister(key: string): void;
29
30
  get(name: string): RegistryItem<T>;
@@ -41,4 +42,4 @@ export declare class Registry<T = any> {
41
42
  }[];
42
43
  getDefine(key: string, prefix?: string): Registrable | undefined;
43
44
  }
44
- export declare function createRegistry<T>(type: string, onRegister?: OnRegister<T>): Registry<T>;
45
+ export declare function createRegistry<T>(type: string, onRegister?: OnRegister<T>, onUnRegister?: OnRegister<T>): Registry<T>;
@@ -3,9 +3,11 @@ export class Registry {
3
3
  type = "";
4
4
  storage = {};
5
5
  onRegister;
6
- constructor(type, onRegister) {
6
+ onUnRegister;
7
+ constructor(type, onRegister, onUnRegister) {
7
8
  this.type = type;
8
9
  this.onRegister = onRegister;
10
+ this.onUnRegister = onUnRegister;
9
11
  }
10
12
  register(key, value) {
11
13
  if (!key || value == null) {
@@ -22,6 +24,13 @@ export class Registry {
22
24
  logger.info(`注册插件:${this.type}:${key}`);
23
25
  }
24
26
  unRegister(key) {
27
+ if (this.onUnRegister) {
28
+ this.onUnRegister({
29
+ registry: this,
30
+ key,
31
+ value: this.storage[key],
32
+ });
33
+ }
25
34
  delete this.storage[key];
26
35
  logger.info(`反注册插件:${this.type}:${key}`);
27
36
  }
@@ -74,7 +83,7 @@ export class Registry {
74
83
  return item.define;
75
84
  }
76
85
  }
77
- export function createRegistry(type, onRegister) {
86
+ export function createRegistry(type, onRegister, onUnRegister) {
78
87
  const pipelineregistrycacheKey = "PIPELINE_REGISTRY_CACHE";
79
88
  // @ts-ignore
80
89
  let cached = global[pipelineregistrycacheKey];
@@ -86,7 +95,7 @@ export function createRegistry(type, onRegister) {
86
95
  if (cached[type]) {
87
96
  return cached[type];
88
97
  }
89
- const newRegistry = new Registry(type, onRegister);
98
+ const newRegistry = new Registry(type, onRegister, onUnRegister);
90
99
  cached[type] = newRegistry;
91
100
  return newRegistry;
92
101
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@certd/pipeline",
3
3
  "private": false,
4
- "version": "1.38.1",
4
+ "version": "1.38.2",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",
@@ -18,8 +18,8 @@
18
18
  "compile": "tsc --skipLibCheck --watch"
19
19
  },
20
20
  "dependencies": {
21
- "@certd/basic": "^1.38.1",
22
- "@certd/plus-core": "^1.38.1",
21
+ "@certd/basic": "^1.38.2",
22
+ "@certd/plus-core": "^1.38.2",
23
23
  "dayjs": "^1.11.7",
24
24
  "lodash-es": "^4.17.21",
25
25
  "reflect-metadata": "^0.1.13"
@@ -45,5 +45,5 @@
45
45
  "tslib": "^2.8.1",
46
46
  "typescript": "^5.4.2"
47
47
  },
48
- "gitHead": "2c80c35b21b3f435e835167fca13db510bbc38a2"
48
+ "gitHead": "f92dc6a1ad103de9cc184da3b84096943906cb59"
49
49
  }
@@ -0,0 +1,17 @@
1
+ import { expect } from "chai";
2
+ import "mocha";
3
+ import { EchoPlugin } from "./echo-plugin.js";
4
+ describe("task_plugin", function () {
5
+ it("#taskplugin", function () {
6
+ console.log("before new plugin");
7
+ const echoPlugin = new EchoPlugin();
8
+ console.log("before set property", echoPlugin);
9
+ echoPlugin.cert = { test: 1 };
10
+ console.log("before execute");
11
+ // @ts-ignore
12
+ echoPlugin.execute();
13
+ console.log("after execute");
14
+ expect(echoPlugin.cert.test).eq(1);
15
+ });
16
+ });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2luZGV4LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QixPQUFPLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxRQUFRLENBQUMsYUFBYSxFQUFFO0lBQ3RCLEVBQUUsQ0FBQyxhQUFhLEVBQUU7UUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMvQyxVQUFVLENBQUMsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM5QixhQUFhO1FBQ2IsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0IsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==