cnpmcore 1.9.0 → 1.11.0

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 (110) hide show
  1. package/History.md +32 -0
  2. package/dist/app/common/LogUtil.d.ts +1 -0
  3. package/dist/app/common/LogUtil.js +8 -0
  4. package/dist/app/common/SyncUtil.js +2 -2
  5. package/dist/app/common/adapter/NPMRegistry.d.ts +2 -0
  6. package/dist/app/common/adapter/NPMRegistry.js +5 -2
  7. package/dist/app/common/adapter/binary/NodePreGypBinary.js +20 -5
  8. package/dist/app/common/adapter/changesStream/AbstractChangesStream.d.ts +19 -0
  9. package/dist/app/common/adapter/changesStream/AbstractChangesStream.js +30 -0
  10. package/dist/app/common/adapter/changesStream/CnpmcoreChangesStream.d.ts +8 -0
  11. package/dist/app/common/adapter/changesStream/CnpmcoreChangesStream.js +62 -0
  12. package/dist/app/common/adapter/changesStream/CnpmjsorgChangesStream.d.ts +9 -0
  13. package/dist/app/common/adapter/changesStream/CnpmjsorgChangesStream.js +73 -0
  14. package/dist/app/common/adapter/changesStream/NpmChangesStream.d.ts +8 -0
  15. package/dist/app/common/adapter/changesStream/NpmChangesStream.js +51 -0
  16. package/dist/app/common/enum/Hook.d.ts +18 -0
  17. package/dist/app/common/enum/Hook.js +24 -0
  18. package/dist/app/common/enum/Registry.d.ts +5 -0
  19. package/dist/app/common/enum/Registry.js +10 -0
  20. package/dist/app/common/enum/Task.d.ts +3 -1
  21. package/dist/app/common/enum/Task.js +3 -1
  22. package/dist/app/common/typing.d.ts +5 -0
  23. package/dist/app/core/entity/Hook.d.ts +30 -0
  24. package/dist/app/core/entity/Hook.js +43 -0
  25. package/dist/app/core/entity/HookEvent.d.ts +36 -0
  26. package/dist/app/core/entity/HookEvent.js +59 -0
  27. package/dist/app/core/entity/Package.d.ts +2 -0
  28. package/dist/app/core/entity/Package.js +2 -1
  29. package/dist/app/core/entity/Registry.d.ts +23 -0
  30. package/dist/app/core/entity/Registry.js +22 -0
  31. package/dist/app/core/entity/Scope.d.ts +16 -0
  32. package/dist/app/core/entity/Scope.js +19 -0
  33. package/dist/app/core/entity/Task.d.ts +50 -8
  34. package/dist/app/core/entity/Task.js +60 -9
  35. package/dist/app/core/event/ChangesStream.d.ts +10 -5
  36. package/dist/app/core/event/ChangesStream.js +46 -15
  37. package/dist/app/core/event/index.d.ts +12 -4
  38. package/dist/app/core/event/index.js +1 -1
  39. package/dist/app/core/service/BinarySyncerService.d.ts +3 -3
  40. package/dist/app/core/service/ChangesStreamService.d.ts +15 -5
  41. package/dist/app/core/service/ChangesStreamService.js +113 -115
  42. package/dist/app/core/service/CreateHookTriggerService.d.ts +10 -0
  43. package/dist/app/core/service/CreateHookTriggerService.js +83 -0
  44. package/dist/app/core/service/HookManageService.d.ts +29 -0
  45. package/dist/app/core/service/HookManageService.js +77 -0
  46. package/dist/app/core/service/HookTriggerService.d.ts +14 -0
  47. package/dist/app/core/service/HookTriggerService.js +113 -0
  48. package/dist/app/core/service/PackageManagerService.d.ts +1 -0
  49. package/dist/app/core/service/PackageManagerService.js +8 -5
  50. package/dist/app/core/service/PackageSyncerService.d.ts +7 -4
  51. package/dist/app/core/service/PackageSyncerService.js +23 -4
  52. package/dist/app/core/service/RegistryManagerService.d.ts +29 -0
  53. package/dist/app/core/service/RegistryManagerService.js +97 -0
  54. package/dist/app/core/service/ScopeManagerService.d.ts +27 -0
  55. package/dist/app/core/service/ScopeManagerService.js +58 -0
  56. package/dist/app/core/service/TaskService.d.ts +4 -3
  57. package/dist/app/core/service/TaskService.js +10 -5
  58. package/dist/app/core/service/UserService.d.ts +1 -1
  59. package/dist/app/core/service/UserService.js +3 -3
  60. package/dist/app/core/util/ChangesStreamTransform.d.ts +8 -0
  61. package/dist/app/core/util/ChangesStreamTransform.js +50 -0
  62. package/dist/app/core/util/EntityUtil.d.ts +13 -0
  63. package/dist/app/core/util/EntityUtil.js +13 -1
  64. package/dist/app/infra/QueueAdapter.d.ts +16 -0
  65. package/dist/app/infra/QueueAdapter.js +50 -0
  66. package/dist/app/port/UserRoleManager.d.ts +1 -2
  67. package/dist/app/port/controller/HookController.d.ts +23 -0
  68. package/dist/app/port/controller/HookController.js +133 -0
  69. package/dist/app/port/controller/PackageSyncController.d.ts +1 -0
  70. package/dist/app/port/controller/PackageSyncController.js +13 -2
  71. package/dist/app/port/controller/RegistryController.d.ts +20 -0
  72. package/dist/app/port/controller/RegistryController.js +131 -0
  73. package/dist/app/port/controller/ScopeController.d.ts +14 -0
  74. package/dist/app/port/controller/ScopeController.js +68 -0
  75. package/dist/app/port/controller/convertor/HookConvertor.d.ts +37 -0
  76. package/dist/app/port/controller/convertor/HookConvertor.js +29 -0
  77. package/dist/app/port/middleware/AdminAccess.d.ts +2 -0
  78. package/dist/app/port/middleware/AdminAccess.js +15 -0
  79. package/dist/app/port/typebox.d.ts +48 -0
  80. package/dist/app/port/typebox.js +126 -2
  81. package/dist/app/repository/HookRepository.d.ts +19 -0
  82. package/dist/app/repository/HookRepository.js +69 -0
  83. package/dist/app/repository/RegistryRepository.d.ts +12 -0
  84. package/dist/app/repository/RegistryRepository.js +64 -0
  85. package/dist/app/repository/ScopeRepository.d.ts +14 -0
  86. package/dist/app/repository/ScopeRepository.js +73 -0
  87. package/dist/app/repository/TaskRepository.d.ts +5 -3
  88. package/dist/app/repository/TaskRepository.js +32 -2
  89. package/dist/app/repository/UserRepository.d.ts +1 -0
  90. package/dist/app/repository/UserRepository.js +7 -1
  91. package/dist/app/repository/model/Hook.d.ts +15 -0
  92. package/dist/app/repository/model/Hook.js +58 -0
  93. package/dist/app/repository/model/Package.d.ts +1 -0
  94. package/dist/app/repository/model/Package.js +4 -1
  95. package/dist/app/repository/model/Registry.d.ts +13 -0
  96. package/dist/app/repository/model/Registry.js +50 -0
  97. package/dist/app/repository/model/Scope.d.ts +9 -0
  98. package/dist/app/repository/model/Scope.js +39 -0
  99. package/dist/app/repository/model/Task.d.ts +1 -0
  100. package/dist/app/repository/model/Task.js +6 -1
  101. package/dist/app/schedule/CreateTriggerHookWorker.d.ts +8 -0
  102. package/dist/app/schedule/CreateTriggerHookWorker.js +51 -0
  103. package/dist/app/schedule/SyncPackageWorker.js +5 -1
  104. package/dist/app/schedule/TriggerHookWorker.d.ts +8 -0
  105. package/dist/app/schedule/TriggerHookWorker.js +49 -0
  106. package/dist/config/binaries.js +8 -1
  107. package/dist/config/config.default.js +5 -1
  108. package/package.json +1 -1
  109. package/dist/app/common/adapter/QueueAdapter.d.ts +0 -7
  110. package/dist/app/common/adapter/QueueAdapter.js +0 -37
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const node_stream_1 = require("node:stream");
4
+ // 网络问题可能会导致获取到的数据不完整
5
+ // 最后数据可能会发生截断,需要按行读取,例如:
6
+ // "seq": 1, "id": "test1",
7
+ // "seq"
8
+ // :2,
9
+ // "id": "test2",
10
+ // 先保存在 legacy 中,参与下次解析
11
+ class ChangesStreamTransform extends node_stream_1.Transform {
12
+ constructor(opts = {}) {
13
+ super({
14
+ ...opts,
15
+ readableObjectMode: true,
16
+ });
17
+ this.legacy = '';
18
+ }
19
+ _transform(chunk, _, callback) {
20
+ const text = chunk.toString();
21
+ const lines = text.split('\n');
22
+ for (const line of lines) {
23
+ const content = this.legacy + line;
24
+ const match = /"seq":(\d+),"id":"([^"]+)"/g.exec(content);
25
+ const seq = match === null || match === void 0 ? void 0 : match[1];
26
+ const fullname = match === null || match === void 0 ? void 0 : match[2];
27
+ if (seq && fullname) {
28
+ this.legacy = '';
29
+ // https://nodejs.org/en/docs/guides/backpressuring-in-streams/
30
+ // 需要处理 backpressure 场景
31
+ // 如果下游无法消费数据,就先暂停发送数据
32
+ // 自定义的 push 事件需要特殊处理
33
+ const pushed = this.push({ fullname, seq });
34
+ if (!pushed) {
35
+ this.pause();
36
+ // 需要使用 drain 会重复触发,使用 once
37
+ this.once('drain', () => {
38
+ this.resume();
39
+ });
40
+ }
41
+ }
42
+ else {
43
+ this.legacy += line;
44
+ }
45
+ }
46
+ callback();
47
+ }
48
+ }
49
+ exports.default = ChangesStreamTransform;
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhbmdlc1N0cmVhbVRyYW5zZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FwcC9jb3JlL3V0aWwvQ2hhbmdlc1N0cmVhbVRyYW5zZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDZDQUE2RTtBQUU3RSxxQkFBcUI7QUFDckIseUJBQXlCO0FBQ3pCLDJCQUEyQjtBQUMzQixRQUFRO0FBQ1IsTUFBTTtBQUNOLGlCQUFpQjtBQUNqQix1QkFBdUI7QUFDdkIsTUFBcUIsc0JBQXVCLFNBQVEsdUJBQVM7SUFDM0QsWUFBWSxPQUF5QixFQUFFO1FBQ3JDLEtBQUssQ0FBQztZQUNKLEdBQUcsSUFBSTtZQUNQLGtCQUFrQixFQUFFLElBQUk7U0FDekIsQ0FBQyxDQUFDO1FBRUcsV0FBTSxHQUFHLEVBQUUsQ0FBQztJQURwQixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVUsRUFBRSxDQUFpQixFQUFFLFFBQTJCO1FBQ25FLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9CLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25DLE1BQU0sS0FBSyxHQUFHLDZCQUE2QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxRCxNQUFNLEdBQUcsR0FBRyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdkIsTUFBTSxRQUFRLEdBQUcsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVCLElBQUksR0FBRyxJQUFJLFFBQVEsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLCtEQUErRDtnQkFDL0QsdUJBQXVCO2dCQUN2QixzQkFBc0I7Z0JBQ3RCLHFCQUFxQjtnQkFDckIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQXlCLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxDQUFDLE1BQU0sRUFBRTtvQkFDWCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2IsMkJBQTJCO29CQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7d0JBQ3RCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDaEIsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQzthQUNyQjtTQUNGO1FBRUQsUUFBUSxFQUFFLENBQUM7SUFDYixDQUFDO0NBQ0Y7QUF0Q0QseUNBc0NDIn0=
@@ -1,8 +1,21 @@
1
1
  import { EntityData } from '../entity/Entity';
2
2
  declare type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
3
3
  export declare type EasyData<T extends EntityData, Id extends keyof T> = PartialBy<T, 'createdAt' | 'updatedAt' | Id>;
4
+ export interface PageOptions {
5
+ pageSize?: number;
6
+ pageIndex?: number;
7
+ }
8
+ export interface PageResult<T> {
9
+ count: number;
10
+ data: Array<T>;
11
+ }
12
+ export interface PageLimitOptions {
13
+ offset: number;
14
+ limit: number;
15
+ }
4
16
  export declare class EntityUtil {
5
17
  static defaultData<T extends EntityData, Id extends keyof T>(data: EasyData<T, Id>, id: Id): T;
6
18
  static createId(): string;
19
+ static convertPageOptionsToLimitOption(page: PageOptions): PageLimitOptions;
7
20
  }
8
21
  export {};
@@ -5,6 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.EntityUtil = void 0;
7
7
  const bson_objectid_1 = __importDefault(require("bson-objectid"));
8
+ const egg_errors_1 = require("egg-errors");
9
+ const MAX_PAGE_SIZE = 100;
8
10
  class EntityUtil {
9
11
  static defaultData(data, id) {
10
12
  Reflect.set(data, id, EntityUtil.createId());
@@ -15,6 +17,16 @@ class EntityUtil {
15
17
  static createId() {
16
18
  return new bson_objectid_1.default().toHexString();
17
19
  }
20
+ static convertPageOptionsToLimitOption(page) {
21
+ const { pageIndex = 0, pageSize = 20 } = page;
22
+ if (pageSize > MAX_PAGE_SIZE) {
23
+ throw new egg_errors_1.E400(`max page size is 100, current request is ${pageSize}`);
24
+ }
25
+ return {
26
+ offset: pageIndex * pageSize,
27
+ limit: pageSize,
28
+ };
29
+ }
18
30
  }
19
31
  exports.EntityUtil = EntityUtil;
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5VXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FwcC9jb3JlL3V0aWwvRW50aXR5VXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxrRUFBcUM7QUFPckMsTUFBYSxVQUFVO0lBQ3JCLE1BQU0sQ0FBQyxXQUFXLENBQTJDLElBQXFCLEVBQUUsRUFBTTtRQUN4RixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7UUFDOUMsT0FBTyxJQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRO1FBQ2IsT0FBTyxJQUFJLHVCQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0NBQ0Y7QUFYRCxnQ0FXQyJ9
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5VXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FwcC9jb3JlL3V0aWwvRW50aXR5VXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxrRUFBcUM7QUFDckMsMkNBQWtDO0FBTWxDLE1BQU0sYUFBYSxHQUFHLEdBQVksQ0FBQztBQWNuQyxNQUFhLFVBQVU7SUFDckIsTUFBTSxDQUFDLFdBQVcsQ0FBMkMsSUFBcUIsRUFBRSxFQUFNO1FBQ3hGLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVE7UUFDYixPQUFPLElBQUksdUJBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLENBQUMsK0JBQStCLENBQUMsSUFBaUI7UUFDdEQsTUFBTSxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQztRQUM5QyxJQUFJLFFBQVEsR0FBRyxhQUFhLEVBQUU7WUFDNUIsTUFBTSxJQUFJLGlCQUFJLENBQUMsNENBQTRDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDeEU7UUFDRCxPQUFPO1lBQ0wsTUFBTSxFQUFFLFNBQVMsR0FBRyxRQUFRO1lBQzVCLEtBQUssRUFBRSxRQUFRO1NBQ2hCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF0QkQsZ0NBc0JDIn0=
@@ -0,0 +1,16 @@
1
+ import { QueueAdapter } from '../common/typing';
2
+ /**
3
+ * Use sort set to keep queue in order and keep same value only insert once
4
+ */
5
+ export declare class RedisQueueAdapter implements QueueAdapter {
6
+ private readonly redis;
7
+ private getQueueName;
8
+ private getQueueScoreName;
9
+ /**
10
+ * If queue has the same item, return false
11
+ * If queue not has the same item, return true
12
+ */
13
+ push<T>(key: string, item: T): Promise<boolean>;
14
+ pop<T>(key: string): Promise<T | null>;
15
+ length(key: string): Promise<number>;
16
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.RedisQueueAdapter = void 0;
10
+ const tegg_1 = require("@eggjs/tegg");
11
+ /**
12
+ * Use sort set to keep queue in order and keep same value only insert once
13
+ */
14
+ let RedisQueueAdapter = class RedisQueueAdapter {
15
+ getQueueName(key) {
16
+ return `CNPMCORE_Q_V2_${key}`;
17
+ }
18
+ getQueueScoreName(key) {
19
+ return `CNPMCORE_Q_S_V2_${key}`;
20
+ }
21
+ /**
22
+ * If queue has the same item, return false
23
+ * If queue not has the same item, return true
24
+ */
25
+ async push(key, item) {
26
+ const score = await this.redis.incr(this.getQueueScoreName(key));
27
+ const res = await this.redis.zadd(this.getQueueName(key), score, JSON.stringify(item));
28
+ return res !== 0;
29
+ }
30
+ async pop(key) {
31
+ const [json] = await this.redis.zpopmin(this.getQueueName(key));
32
+ if (!json)
33
+ return null;
34
+ return JSON.parse(json);
35
+ }
36
+ async length(key) {
37
+ return await this.redis.zcount(this.getQueueName(key), '-inf', '+inf');
38
+ }
39
+ };
40
+ __decorate([
41
+ (0, tegg_1.Inject)()
42
+ ], RedisQueueAdapter.prototype, "redis", void 0);
43
+ RedisQueueAdapter = __decorate([
44
+ (0, tegg_1.ContextProto)({
45
+ accessLevel: tegg_1.AccessLevel.PUBLIC,
46
+ name: 'queueAdapter',
47
+ })
48
+ ], RedisQueueAdapter);
49
+ exports.RedisQueueAdapter = RedisQueueAdapter;
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVldWVBZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXBwL2luZnJhL1F1ZXVlQWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxzQ0FJcUI7QUFJckI7O0dBRUc7QUFLSCxJQUFhLGlCQUFpQixHQUE5QixNQUFhLGlCQUFpQjtJQUlwQixZQUFZLENBQUMsR0FBVztRQUM5QixPQUFPLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU8saUJBQWlCLENBQUMsR0FBVztRQUNuQyxPQUFPLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBSSxHQUFXLEVBQUUsSUFBTztRQUNoQyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3ZGLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBSSxHQUFXO1FBQ3RCLE1BQU0sQ0FBRSxJQUFJLENBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQU0sQ0FBQztJQUMvQixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFXO1FBQ3RCLE9BQU8sTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6RSxDQUFDO0NBQ0YsQ0FBQTtBQTdCQztJQURDLElBQUEsYUFBTSxHQUFFO2dEQUNxQjtBQUZuQixpQkFBaUI7SUFKN0IsSUFBQSxtQkFBWSxFQUFDO1FBQ1osV0FBVyxFQUFFLGtCQUFXLENBQUMsTUFBTTtRQUMvQixJQUFJLEVBQUUsY0FBYztLQUNyQixDQUFDO0dBQ1csaUJBQWlCLENBK0I3QjtBQS9CWSw4Q0FBaUIifQ==
@@ -3,7 +3,7 @@ import { EggLogger } from 'egg';
3
3
  import { Package as PackageEntity } from '../core/entity/Package';
4
4
  import { User as UserEntity } from '../core/entity/User';
5
5
  import { Token as TokenEntity } from '../core/entity/Token';
6
- declare type TokenRole = 'read' | 'publish' | 'setting';
6
+ export declare type TokenRole = 'read' | 'publish' | 'setting';
7
7
  export declare class UserRoleManager {
8
8
  private readonly userRepository;
9
9
  private readonly packageRepository;
@@ -21,4 +21,3 @@ export declare class UserRoleManager {
21
21
  requiredPackageScope(scope: string, user: UserEntity): Promise<void>;
22
22
  isAdmin(ctx: EggContext): Promise<boolean>;
23
23
  }
24
- export {};
@@ -0,0 +1,23 @@
1
+ import { EggContext } from '@eggjs/tegg';
2
+ export interface CreateHookRequest {
3
+ type: string;
4
+ name: string;
5
+ endpoint: string;
6
+ secret: string;
7
+ }
8
+ export interface UpdateHookRequest {
9
+ endpoint: string;
10
+ secret: string;
11
+ }
12
+ export declare class HookController {
13
+ private readonly hookManageService;
14
+ private readonly taskService;
15
+ private readonly userRoleManager;
16
+ createHook(ctx: EggContext, req: CreateHookRequest): Promise<import("./convertor/HookConvertor").HookVo>;
17
+ updateHook(ctx: EggContext, id: string, req: UpdateHookRequest): Promise<import("./convertor/HookConvertor").HookVo>;
18
+ deleteHook(ctx: EggContext, id: string): Promise<import("./convertor/HookConvertor").DeleteHookVo>;
19
+ listHooks(ctx: EggContext): Promise<{
20
+ objects: import("./convertor/HookConvertor").HookVo[];
21
+ }>;
22
+ getHook(ctx: EggContext, id: string): Promise<import("./convertor/HookConvertor").HookVo>;
23
+ }
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
9
+ return function (target, key) { decorator(target, key, paramIndex); }
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.HookController = void 0;
13
+ const tegg_1 = require("@eggjs/tegg");
14
+ const HookConvertor_1 = require("./convertor/HookConvertor");
15
+ const typebox_1 = require("../typebox");
16
+ let HookController = class HookController {
17
+ async createHook(ctx, req) {
18
+ ctx.tValidate(typebox_1.CreateHookRequestRule, req);
19
+ const user = await this.userRoleManager.requiredAuthorizedUser(ctx, 'setting');
20
+ const hook = await this.hookManageService.createHook({
21
+ ownerId: user.userId,
22
+ type: req.type,
23
+ name: req.name,
24
+ endpoint: req.endpoint,
25
+ secret: req.secret,
26
+ });
27
+ return HookConvertor_1.HookConvertor.convertToHookVo(hook, user);
28
+ }
29
+ async updateHook(ctx, id, req) {
30
+ ctx.tValidate(typebox_1.UpdateHookRequestRule, req);
31
+ const user = await this.userRoleManager.requiredAuthorizedUser(ctx, 'setting');
32
+ const hook = await this.hookManageService.updateHook({
33
+ operatorId: user.userId,
34
+ hookId: id,
35
+ endpoint: req.endpoint,
36
+ secret: req.secret,
37
+ });
38
+ let task = null;
39
+ if (hook.latestTaskId) {
40
+ task = await this.taskService.findTask(hook.latestTaskId);
41
+ }
42
+ return HookConvertor_1.HookConvertor.convertToHookVo(hook, user, task);
43
+ }
44
+ async deleteHook(ctx, id) {
45
+ const user = await this.userRoleManager.requiredAuthorizedUser(ctx, 'setting');
46
+ const hook = await this.hookManageService.deleteHook({
47
+ operatorId: user.userId,
48
+ hookId: id,
49
+ });
50
+ let task = null;
51
+ if (hook.latestTaskId) {
52
+ task = await this.taskService.findTask(hook.latestTaskId);
53
+ }
54
+ return HookConvertor_1.HookConvertor.convertToDeleteHookVo(hook, user, task);
55
+ }
56
+ async listHooks(ctx) {
57
+ const user = await this.userRoleManager.requiredAuthorizedUser(ctx, 'read');
58
+ const hooks = await this.hookManageService.listHooksByOwnerId(user.userId);
59
+ const tasks = await this.taskService.findTasks(hooks.map(t => t.latestTaskId).filter((t) => !!t));
60
+ const res = hooks.map(hook => {
61
+ const task = tasks.find(t => t.taskId === hook.latestTaskId);
62
+ return HookConvertor_1.HookConvertor.convertToHookVo(hook, user, task);
63
+ });
64
+ return {
65
+ objects: res,
66
+ };
67
+ }
68
+ async getHook(ctx, id) {
69
+ const user = await this.userRoleManager.requiredAuthorizedUser(ctx, 'read');
70
+ const hook = await this.hookManageService.getHookByOwnerId(id, user.userId);
71
+ let task = null;
72
+ if (hook.latestTaskId) {
73
+ task = await this.taskService.findTask(hook.latestTaskId);
74
+ }
75
+ return HookConvertor_1.HookConvertor.convertToHookVo(hook, user, task);
76
+ }
77
+ };
78
+ __decorate([
79
+ (0, tegg_1.Inject)()
80
+ ], HookController.prototype, "hookManageService", void 0);
81
+ __decorate([
82
+ (0, tegg_1.Inject)()
83
+ ], HookController.prototype, "taskService", void 0);
84
+ __decorate([
85
+ (0, tegg_1.Inject)()
86
+ ], HookController.prototype, "userRoleManager", void 0);
87
+ __decorate([
88
+ (0, tegg_1.HTTPMethod)({
89
+ path: '/v1/hooks/hook',
90
+ method: tegg_1.HTTPMethodEnum.POST,
91
+ }),
92
+ __param(0, (0, tegg_1.Context)()),
93
+ __param(1, (0, tegg_1.HTTPBody)())
94
+ ], HookController.prototype, "createHook", null);
95
+ __decorate([
96
+ (0, tegg_1.HTTPMethod)({
97
+ path: '/v1/hooks/hook/:id',
98
+ method: tegg_1.HTTPMethodEnum.PUT,
99
+ }),
100
+ __param(0, (0, tegg_1.Context)()),
101
+ __param(1, (0, tegg_1.HTTPParam)()),
102
+ __param(2, (0, tegg_1.HTTPBody)())
103
+ ], HookController.prototype, "updateHook", null);
104
+ __decorate([
105
+ (0, tegg_1.HTTPMethod)({
106
+ path: '/v1/hooks/hook/:id',
107
+ method: tegg_1.HTTPMethodEnum.DELETE,
108
+ }),
109
+ __param(0, (0, tegg_1.Context)()),
110
+ __param(1, (0, tegg_1.HTTPParam)())
111
+ ], HookController.prototype, "deleteHook", null);
112
+ __decorate([
113
+ (0, tegg_1.HTTPMethod)({
114
+ path: '/v1/hooks',
115
+ method: tegg_1.HTTPMethodEnum.GET,
116
+ }),
117
+ __param(0, (0, tegg_1.Context)())
118
+ ], HookController.prototype, "listHooks", null);
119
+ __decorate([
120
+ (0, tegg_1.HTTPMethod)({
121
+ path: '/v1/hooks/hook/:id',
122
+ method: tegg_1.HTTPMethodEnum.GET,
123
+ }),
124
+ __param(0, (0, tegg_1.Context)()),
125
+ __param(1, (0, tegg_1.HTTPParam)())
126
+ ], HookController.prototype, "getHook", null);
127
+ HookController = __decorate([
128
+ (0, tegg_1.HTTPController)({
129
+ path: '/-/npm',
130
+ })
131
+ ], HookController);
132
+ exports.HookController = HookController;
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSG9va0NvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hcHAvcG9ydC9jb250cm9sbGVyL0hvb2tDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHNDQVNxQjtBQU1yQiw2REFBMEQ7QUFDMUQsd0NBQTBFO0FBaUIxRSxJQUFhLGNBQWMsR0FBM0IsTUFBYSxjQUFjO0lBY3pCLEtBQUssQ0FBQyxVQUFVLENBQVksR0FBZSxFQUFjLEdBQXNCO1FBQzdFLEdBQUcsQ0FBQyxTQUFTLENBQUMsK0JBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMvRSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7WUFDbkQsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ3BCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBZ0I7WUFDMUIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2QsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1lBQ3RCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtTQUNuQixDQUFDLENBQUM7UUFDSCxPQUFPLDZCQUFhLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBTUQsS0FBSyxDQUFDLFVBQVUsQ0FBWSxHQUFlLEVBQWUsRUFBVSxFQUFjLEdBQXNCO1FBQ3RHLEdBQUcsQ0FBQyxTQUFTLENBQUMsK0JBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMvRSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7WUFDbkQsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ3ZCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1lBQ3RCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtTQUNuQixDQUFDLENBQUM7UUFDSCxJQUFJLElBQUksR0FBMkIsSUFBSSxDQUFDO1FBQ3hDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFvQixDQUFDO1NBQzlFO1FBQ0QsT0FBTyw2QkFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFNRCxLQUFLLENBQUMsVUFBVSxDQUFZLEdBQWUsRUFBZSxFQUFVO1FBQ2xFLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDL0UsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDO1lBQ25ELFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTTtZQUN2QixNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxHQUEyQixJQUFJLENBQUM7UUFDeEMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQW9CLENBQUM7U0FDOUU7UUFDRCxPQUFPLDZCQUFhLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBTUQsS0FBSyxDQUFDLFNBQVMsQ0FBWSxHQUFlO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUUsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNFLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9HLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0IsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBb0IsQ0FBQztZQUNoRixPQUFPLDZCQUFhLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPO1lBQ0wsT0FBTyxFQUFFLEdBQUc7U0FDYixDQUFDO0lBQ0osQ0FBQztJQU1ELEtBQUssQ0FBQyxPQUFPLENBQVksR0FBZSxFQUFlLEVBQVU7UUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1RSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVFLElBQUksSUFBSSxHQUEyQixJQUFJLENBQUM7UUFDeEMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQW9CLENBQUM7U0FDOUU7UUFDRCxPQUFPLDZCQUFhLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGLENBQUE7QUE1RkM7SUFEQyxJQUFBLGFBQU0sR0FBRTt5REFDNkM7QUFHdEQ7SUFEQyxJQUFBLGFBQU0sR0FBRTttREFDaUM7QUFHMUM7SUFEQyxJQUFBLGFBQU0sR0FBRTt1REFDeUM7QUFNbEQ7SUFKQyxJQUFBLGlCQUFVLEVBQUM7UUFDVixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLE1BQU0sRUFBRSxxQkFBYyxDQUFDLElBQUk7S0FDNUIsQ0FBQztJQUNnQixXQUFBLElBQUEsY0FBTyxHQUFFLENBQUE7SUFBbUIsV0FBQSxJQUFBLGVBQVEsR0FBRSxDQUFBO2dEQVd2RDtBQU1EO0lBSkMsSUFBQSxpQkFBVSxFQUFDO1FBQ1YsSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixNQUFNLEVBQUUscUJBQWMsQ0FBQyxHQUFHO0tBQzNCLENBQUM7SUFDZ0IsV0FBQSxJQUFBLGNBQU8sR0FBRSxDQUFBO0lBQW1CLFdBQUEsSUFBQSxnQkFBUyxHQUFFLENBQUE7SUFBYyxXQUFBLElBQUEsZUFBUSxHQUFFLENBQUE7Z0RBY2hGO0FBTUQ7SUFKQyxJQUFBLGlCQUFVLEVBQUM7UUFDVixJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLE1BQU0sRUFBRSxxQkFBYyxDQUFDLE1BQU07S0FDOUIsQ0FBQztJQUNnQixXQUFBLElBQUEsY0FBTyxHQUFFLENBQUE7SUFBbUIsV0FBQSxJQUFBLGdCQUFTLEdBQUUsQ0FBQTtnREFXeEQ7QUFNRDtJQUpDLElBQUEsaUJBQVUsRUFBQztRQUNWLElBQUksRUFBRSxXQUFXO1FBQ2pCLE1BQU0sRUFBRSxxQkFBYyxDQUFDLEdBQUc7S0FDM0IsQ0FBQztJQUNlLFdBQUEsSUFBQSxjQUFPLEdBQUUsQ0FBQTsrQ0FXekI7QUFNRDtJQUpDLElBQUEsaUJBQVUsRUFBQztRQUNWLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsTUFBTSxFQUFFLHFCQUFjLENBQUMsR0FBRztLQUMzQixDQUFDO0lBQ2EsV0FBQSxJQUFBLGNBQU8sR0FBRSxDQUFBO0lBQW1CLFdBQUEsSUFBQSxnQkFBUyxHQUFFLENBQUE7NkNBUXJEO0FBN0ZVLGNBQWM7SUFIMUIsSUFBQSxxQkFBYyxFQUFDO1FBQ2QsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDO0dBQ1csY0FBYyxDQThGMUI7QUE5Rlksd0NBQWMifQ==
@@ -6,6 +6,7 @@ import { SyncPackageTaskType } from '../typebox';
6
6
  export declare class PackageSyncController extends AbstractController {
7
7
  private packageSyncerService;
8
8
  private backgroundTaskHelper;
9
+ private registryManagerService;
9
10
  private _executeTaskAsync;
10
11
  createSyncTask(ctx: EggContext, fullname: string, data: SyncPackageTaskType): Promise<{
11
12
  ok: boolean;
@@ -51,12 +51,19 @@ let PackageSyncController = class PackageSyncController extends AbstractControll
51
51
  ctx.tValidate(typebox_1.SyncPackageTaskRule, params);
52
52
  const [scope, name] = (0, PackageUtil_1.getScopeAndName)(params.fullname);
53
53
  const packageEntity = await this.packageRepository.findPackage(scope, name);
54
- if (packageEntity === null || packageEntity === void 0 ? void 0 : packageEntity.isPrivate) {
54
+ const registry = await this.registryManagerService.findByRegistryName(data === null || data === void 0 ? void 0 : data.registryName);
55
+ if (!registry && data.registryName) {
56
+ throw new egg_errors_1.ForbiddenError(`Can\'t find target registry "${data.registryName}"`);
57
+ }
58
+ if ((packageEntity === null || packageEntity === void 0 ? void 0 : packageEntity.isPrivate) && !registry) {
55
59
  throw new egg_errors_1.ForbiddenError(`Can\'t sync private package "${params.fullname}"`);
56
60
  }
57
61
  if (params.syncDownloadData && !this.packageSyncerService.allowSyncDownloadData) {
58
62
  throw new egg_errors_1.ForbiddenError('Not allow to sync package download data');
59
63
  }
64
+ if ((packageEntity === null || packageEntity === void 0 ? void 0 : packageEntity.registryId) && packageEntity.registryId !== registry.registryId) {
65
+ throw new egg_errors_1.ForbiddenError(`The package is synced from ${packageEntity.registryId}`);
66
+ }
60
67
  const authorized = await this.userRoleManager.getAuthorizedUserAndToken(ctx);
61
68
  const task = await this.packageSyncerService.createTask(params.fullname, {
62
69
  authorIp: ctx.ip,
@@ -65,6 +72,7 @@ let PackageSyncController = class PackageSyncController extends AbstractControll
65
72
  skipDependencies: params.skipDependencies,
66
73
  syncDownloadData: params.syncDownloadData,
67
74
  forceSyncHistory: params.forceSyncHistory,
75
+ registryId: registry === null || registry === void 0 ? void 0 : registry.registryId,
68
76
  });
69
77
  ctx.logger.info('[PackageSyncController.createSyncTask:success] taskId: %s, fullname: %s', task.taskId, fullname);
70
78
  if (data.force) {
@@ -161,6 +169,9 @@ __decorate([
161
169
  __decorate([
162
170
  (0, tegg_1.Inject)()
163
171
  ], PackageSyncController.prototype, "backgroundTaskHelper", void 0);
172
+ __decorate([
173
+ (0, tegg_1.Inject)()
174
+ ], PackageSyncController.prototype, "registryManagerService", void 0);
164
175
  __decorate([
165
176
  (0, tegg_1.HTTPMethod)({
166
177
  // PUT /-/package/:fullname/syncs
@@ -213,4 +224,4 @@ PackageSyncController = __decorate([
213
224
  (0, tegg_1.HTTPController)()
214
225
  ], PackageSyncController);
215
226
  exports.PackageSyncController = PackageSyncController;
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVN5bmNDb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL3BvcnQvY29udHJvbGxlci9QYWNrYWdlU3luY0NvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsc0NBV3FCO0FBQ3JCLDJDQUEyRDtBQUMzRCw2REFBMEQ7QUFDMUQsMERBQWdGO0FBR2hGLGlEQUFtRDtBQUNuRCx3Q0FBc0U7QUFHdEUsSUFBYSxxQkFBcUIsR0FBbEMsTUFBYSxxQkFBc0IsU0FBUSx1Q0FBa0I7SUFPbkQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQVU7UUFDeEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJIQUEySCxFQUMxSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQ3RFLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEMsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkQ7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLE1BQU0sR0FBRyxPQUFPLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDeEI7Z0JBQVM7WUFDUixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDZFQUE2RSxFQUM1RixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQU9ELEtBQUssQ0FBQyxjQUFjLENBQVksR0FBZSxFQUFlLFFBQWdCLEVBQWMsSUFBeUI7UUFDbkgsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsTUFBTSxJQUFJLDJCQUFjLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUN2RDtRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksa0JBQWtCLEdBQUcsQ0FBQyxJQUFJLHNCQUFzQixHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9GLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUc7WUFDYixRQUFRO1lBQ1IsSUFBSTtZQUNKLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQ3pDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQ3pDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDbkIsMkNBQTJDO1lBQzNDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksT0FBTztTQUNyRCxDQUFDO1FBQ0YsR0FBRyxDQUFDLFNBQVMsQ0FBQyw2QkFBbUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUUsS0FBSyxFQUFFLElBQUksQ0FBRSxHQUFHLElBQUEsNkJBQWUsRUFBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekQsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RSxJQUFJLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxTQUFTLEVBQUU7WUFDNUIsTUFBTSxJQUFJLDJCQUFjLENBQUMsZ0NBQWdDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1NBQzlFO1FBQ0QsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLEVBQUU7WUFDL0UsTUFBTSxJQUFJLDJCQUFjLENBQUMseUNBQXlDLENBQUMsQ0FBQztTQUNyRTtRQUNELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3RSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUN2RSxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDaEIsUUFBUSxFQUFFLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxJQUFJLENBQUMsTUFBTTtZQUNqQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjtZQUN6QyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO1lBQ3pDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7U0FDMUMsQ0FBQyxDQUFDO1FBQ0gsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMseUVBQXlFLEVBQ3ZGLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsc0NBQXNDO2dCQUN0QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO29CQUN2QyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1RUFBdUUsRUFDckYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNmLDZCQUE2QjtvQkFDN0IsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JDLENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtRQUNELEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLE9BQU87WUFDTCxFQUFFLEVBQUUsSUFBSTtZQUNSLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVELGdFQUFnRTtJQU1oRSxLQUFLLENBQUMsWUFBWSxDQUFjLFFBQWdCLEVBQWUsTUFBYztRQUMzRSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksMEJBQWEsQ0FBQyxZQUFZLFFBQVEsZ0JBQWdCLE1BQU0sYUFBYSxDQUFDLENBQUM7UUFDNUYsSUFBSSxNQUEwQixDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxnQkFBUyxDQUFDLE9BQU8sRUFBRTtZQUNwQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLGNBQWMsUUFBUSxVQUFVLE1BQU0sTUFBTSxDQUFDO1NBQ3ZGO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUM7UUFDdEMsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJO1lBQ1IsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLE1BQU07WUFDTixLQUFLO1NBQ04sQ0FBQztJQUNKLENBQUM7SUFFRCxnRUFBZ0U7SUFNaEUsS0FBSyxDQUFDLGVBQWUsQ0FBWSxHQUFlLEVBQWUsUUFBZ0IsRUFBZSxNQUFjO1FBQzFHLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sSUFBSSwwQkFBYSxDQUFDLFlBQVksUUFBUSxnQkFBZ0IsTUFBTSxhQUFhLENBQUMsQ0FBQztRQUM1RixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssZ0JBQVMsQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLDBCQUFhLENBQUMsWUFBWSxRQUFRLGdCQUFnQixNQUFNLGlCQUFpQixDQUFDLENBQUM7UUFFM0gsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxjQUFjO1lBQUUsTUFBTSxJQUFJLDBCQUFhLENBQUMsWUFBWSxRQUFRLGdCQUFnQixNQUFNLGlCQUFpQixDQUFDLENBQUM7UUFDMUcsSUFBSSxPQUFPLGNBQWMsS0FBSyxRQUFRLEVBQUU7WUFDdEMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM3QixPQUFPO1NBQ1I7UUFDRCxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNqQixPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsZ0RBQWdEO0lBQ2hELHFFQUFxRTtJQU1yRSxLQUFLLENBQUMsd0JBQXdCLENBQVksR0FBZSxFQUFlLFFBQWdCLEVBQWUsTUFBYztRQUNuSCxNQUFNLE9BQU8sR0FBd0I7WUFDbkMsUUFBUTtZQUNSLElBQUksRUFBRSxrQkFBa0IsR0FBRyxDQUFDLElBQUksc0JBQXNCLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQzFFLGdCQUFnQixFQUFFLE1BQU0sS0FBSyxNQUFNO1lBQ25DLGdCQUFnQixFQUFFLEtBQUs7WUFDdkIsS0FBSyxFQUFFLEtBQUs7WUFDWixnQkFBZ0IsRUFBRSxLQUFLO1NBQ3hCLENBQUM7UUFDRixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvRCxPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUk7WUFDUixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUU7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVELHlFQUF5RTtJQU16RSxLQUFLLENBQUMsc0JBQXNCLENBQWMsUUFBZ0IsRUFBZSxNQUFjO1FBQ3JGLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxnQkFBUyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLGdCQUFTLENBQUMsVUFBVSxDQUFDO1FBQ3pGLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDMUQsK0ZBQStGO1FBQy9GLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxZQUFZLFNBQVMsUUFBUSxVQUFVLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzRyxPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUk7WUFDUixRQUFRO1lBQ1IsR0FBRztZQUNILE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbEIsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFBO0FBNUtDO0lBREMsSUFBQSxhQUFNLEdBQUU7bUVBQzBDO0FBR25EO0lBREMsSUFBQSxhQUFNLEdBQUU7bUVBQzBDO0FBeUJuRDtJQUxDLElBQUEsaUJBQVUsRUFBQztRQUNWLGlDQUFpQztRQUNqQyxJQUFJLEVBQUUsd0JBQXdCLGlDQUFtQixTQUFTO1FBQzFELE1BQU0sRUFBRSxxQkFBYyxDQUFDLEdBQUc7S0FDM0IsQ0FBQztJQUNvQixXQUFBLElBQUEsY0FBTyxHQUFFLENBQUE7SUFBbUIsV0FBQSxJQUFBLGdCQUFTLEdBQUUsQ0FBQTtJQUFvQixXQUFBLElBQUEsZUFBUSxHQUFFLENBQUE7MkRBc0QxRjtBQVFEO0lBTEMsSUFBQSxpQkFBVSxFQUFDO1FBQ1YseUNBQXlDO1FBQ3pDLElBQUksRUFBRSx3QkFBd0IsaUNBQW1CLGlCQUFpQjtRQUNsRSxNQUFNLEVBQUUscUJBQWMsQ0FBQyxHQUFHO0tBQzNCLENBQUM7SUFDa0IsV0FBQSxJQUFBLGdCQUFTLEdBQUUsQ0FBQTtJQUFvQixXQUFBLElBQUEsZ0JBQVMsR0FBRSxDQUFBO3lEQWdCN0Q7QUFRRDtJQUxDLElBQUEsaUJBQVUsRUFBQztRQUNWLDZDQUE2QztRQUM3QyxJQUFJLEVBQUUsd0JBQXdCLGlDQUFtQixxQkFBcUI7UUFDdEUsTUFBTSxFQUFFLHFCQUFjLENBQUMsR0FBRztLQUMzQixDQUFDO0lBQ3FCLFdBQUEsSUFBQSxjQUFPLEdBQUUsQ0FBQTtJQUFtQixXQUFBLElBQUEsZ0JBQVMsR0FBRSxDQUFBO0lBQW9CLFdBQUEsSUFBQSxnQkFBUyxHQUFFLENBQUE7NERBYTVGO0FBU0Q7SUFMQyxJQUFBLGlCQUFVLEVBQUM7UUFDVixzQkFBc0I7UUFDdEIsSUFBSSxFQUFFLGNBQWMsaUNBQW1CLFFBQVE7UUFDL0MsTUFBTSxFQUFFLHFCQUFjLENBQUMsR0FBRztLQUMzQixDQUFDO0lBQzhCLFdBQUEsSUFBQSxjQUFPLEdBQUUsQ0FBQTtJQUFtQixXQUFBLElBQUEsZ0JBQVMsR0FBRSxDQUFBO0lBQW9CLFdBQUEsSUFBQSxnQkFBUyxHQUFFLENBQUE7cUVBY3JHO0FBUUQ7SUFMQyxJQUFBLGlCQUFVLEVBQUM7UUFDVixrQ0FBa0M7UUFDbEMsSUFBSSxFQUFFLGNBQWMsaUNBQW1CLG9CQUFvQjtRQUMzRCxNQUFNLEVBQUUscUJBQWMsQ0FBQyxHQUFHO0tBQzNCLENBQUM7SUFDNEIsV0FBQSxJQUFBLGdCQUFTLEdBQUUsQ0FBQTtJQUFvQixXQUFBLElBQUEsZ0JBQVMsR0FBRSxDQUFBO21FQWF2RTtBQTdLVSxxQkFBcUI7SUFEakMsSUFBQSxxQkFBYyxHQUFFO0dBQ0oscUJBQXFCLENBOEtqQztBQTlLWSxzREFBcUIifQ==
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVN5bmNDb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL3BvcnQvY29udHJvbGxlci9QYWNrYWdlU3luY0NvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsc0NBV3FCO0FBQ3JCLDJDQUEyRDtBQUMzRCw2REFBMEQ7QUFDMUQsMERBQWdGO0FBSWhGLGlEQUFtRDtBQUNuRCx3Q0FBc0U7QUFHdEUsSUFBYSxxQkFBcUIsR0FBbEMsTUFBYSxxQkFBc0IsU0FBUSx1Q0FBa0I7SUFVbkQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQVU7UUFDeEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJIQUEySCxFQUMxSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQ3RFLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEMsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkQ7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLE1BQU0sR0FBRyxPQUFPLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDeEI7Z0JBQVM7WUFDUixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDZFQUE2RSxFQUM1RixNQUFNLEVBQUUs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
@@ -0,0 +1,20 @@
1
+ import { EggContext } from '@eggjs/tegg';
2
+ import { AbstractController } from './AbstractController';
3
+ import { Static } from 'egg-typebox-validate/typebox';
4
+ import { RegistryCreateOptions, QueryPageOptions, RegistryCreateSyncOptions } from '../typebox';
5
+ export declare class RegistryController extends AbstractController {
6
+ private readonly registryManagerService;
7
+ private readonly scopeManagerService;
8
+ listRegistries(pageSize: Static<typeof QueryPageOptions>['pageSize'], pageIndex: Static<typeof QueryPageOptions>['pageIndex']): Promise<import("../../core/util/EntityUtil").PageResult<import("../../core/entity/Registry").Registry>>;
9
+ showRegistry(id: string): Promise<import("../../core/entity/Registry").Registry>;
10
+ showRegistryScopes(id: string, pageSize: Static<typeof QueryPageOptions>['pageSize'], pageIndex: Static<typeof QueryPageOptions>['pageIndex']): Promise<import("../../core/util/EntityUtil").PageResult<import("../../core/entity/Scope").Scope>>;
11
+ createRegistry(ctx: EggContext, registryOptions: Static<typeof RegistryCreateOptions>): Promise<{
12
+ ok: boolean;
13
+ }>;
14
+ createRegistrySyncTask(ctx: EggContext, id: string, registryOptions: Static<typeof RegistryCreateSyncOptions>): Promise<{
15
+ ok: boolean;
16
+ }>;
17
+ removeRegistry(ctx: EggContext, id: string): Promise<{
18
+ ok: boolean;
19
+ }>;
20
+ }
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
9
+ return function (target, key) { decorator(target, key, paramIndex); }
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RegistryController = void 0;
13
+ const tegg_1 = require("@eggjs/tegg");
14
+ const egg_errors_1 = require("egg-errors");
15
+ const AbstractController_1 = require("./AbstractController");
16
+ const AdminAccess_1 = require("../middleware/AdminAccess");
17
+ const typebox_1 = require("../typebox");
18
+ let RegistryController = class RegistryController extends AbstractController_1.AbstractController {
19
+ async listRegistries(pageSize, pageIndex) {
20
+ const registries = await this.registryManagerService.listRegistries({ pageSize, pageIndex });
21
+ return registries;
22
+ }
23
+ async showRegistry(id) {
24
+ const registry = await this.registryManagerService.findByRegistryId(id);
25
+ if (!registry) {
26
+ throw new egg_errors_1.NotFoundError('registry not found');
27
+ }
28
+ return registry;
29
+ }
30
+ async showRegistryScopes(id, pageSize, pageIndex) {
31
+ const registry = await this.registryManagerService.findByRegistryId(id);
32
+ if (!registry) {
33
+ throw new egg_errors_1.NotFoundError('registry not found');
34
+ }
35
+ const scopes = await this.scopeManagerService.listScopesByRegistryId(id, { pageIndex, pageSize });
36
+ return scopes;
37
+ }
38
+ async createRegistry(ctx, registryOptions) {
39
+ ctx.tValidate(typebox_1.RegistryCreateOptions, registryOptions);
40
+ const authorizedUser = await this.userRoleManager.requiredAuthorizedUser(ctx, 'setting');
41
+ const { name, changeStream, host, userPrefix = '', type } = registryOptions;
42
+ await this.registryManagerService.createRegistry({
43
+ name,
44
+ changeStream,
45
+ host,
46
+ userPrefix,
47
+ operatorId: authorizedUser.userId,
48
+ type,
49
+ });
50
+ return { ok: true };
51
+ }
52
+ async createRegistrySyncTask(ctx, id, registryOptions) {
53
+ ctx.tValidate(typebox_1.RegistryCreateSyncOptions, registryOptions);
54
+ const { since } = registryOptions;
55
+ const registry = await this.registryManagerService.findByRegistryId(id);
56
+ if (!registry) {
57
+ throw new egg_errors_1.NotFoundError('registry not found');
58
+ }
59
+ const authorizedUser = await this.userRoleManager.requiredAuthorizedUser(ctx, 'setting');
60
+ await this.registryManagerService.createSyncChangesStream({ registryId: registry.registryId, since, operatorId: authorizedUser.userId });
61
+ return { ok: true };
62
+ }
63
+ async removeRegistry(ctx, id) {
64
+ const authorizedUser = await this.userRoleManager.requiredAuthorizedUser(ctx, 'setting');
65
+ await this.registryManagerService.remove({ registryId: id, operatorId: authorizedUser.userId });
66
+ return { ok: true };
67
+ }
68
+ };
69
+ __decorate([
70
+ (0, tegg_1.Inject)()
71
+ ], RegistryController.prototype, "registryManagerService", void 0);
72
+ __decorate([
73
+ (0, tegg_1.Inject)()
74
+ ], RegistryController.prototype, "scopeManagerService", void 0);
75
+ __decorate([
76
+ (0, tegg_1.HTTPMethod)({
77
+ path: '/-/registry',
78
+ method: tegg_1.HTTPMethodEnum.GET,
79
+ }),
80
+ __param(0, (0, tegg_1.HTTPQuery)()),
81
+ __param(1, (0, tegg_1.HTTPQuery)())
82
+ ], RegistryController.prototype, "listRegistries", null);
83
+ __decorate([
84
+ (0, tegg_1.HTTPMethod)({
85
+ path: '/-/registry/:id',
86
+ method: tegg_1.HTTPMethodEnum.GET,
87
+ }),
88
+ __param(0, (0, tegg_1.HTTPParam)())
89
+ ], RegistryController.prototype, "showRegistry", null);
90
+ __decorate([
91
+ (0, tegg_1.HTTPMethod)({
92
+ path: '/-/registry/:id/scopes',
93
+ method: tegg_1.HTTPMethodEnum.GET,
94
+ }),
95
+ __param(0, (0, tegg_1.HTTPParam)()),
96
+ __param(1, (0, tegg_1.HTTPQuery)()),
97
+ __param(2, (0, tegg_1.HTTPQuery)())
98
+ ], RegistryController.prototype, "showRegistryScopes", null);
99
+ __decorate([
100
+ (0, tegg_1.HTTPMethod)({
101
+ path: '/-/registry',
102
+ method: tegg_1.HTTPMethodEnum.POST,
103
+ }),
104
+ (0, tegg_1.Middleware)(AdminAccess_1.AdminAccess),
105
+ __param(0, (0, tegg_1.Context)()),
106
+ __param(1, (0, tegg_1.HTTPBody)())
107
+ ], RegistryController.prototype, "createRegistry", null);
108
+ __decorate([
109
+ (0, tegg_1.HTTPMethod)({
110
+ path: '/-/registry/:id/sync',
111
+ method: tegg_1.HTTPMethodEnum.POST,
112
+ }),
113
+ (0, tegg_1.Middleware)(AdminAccess_1.AdminAccess),
114
+ __param(0, (0, tegg_1.Context)()),
115
+ __param(1, (0, tegg_1.HTTPParam)()),
116
+ __param(2, (0, tegg_1.HTTPBody)())
117
+ ], RegistryController.prototype, "createRegistrySyncTask", null);
118
+ __decorate([
119
+ (0, tegg_1.HTTPMethod)({
120
+ path: '/-/registry/:id',
121
+ method: tegg_1.HTTPMethodEnum.DELETE,
122
+ }),
123
+ (0, tegg_1.Middleware)(AdminAccess_1.AdminAccess),
124
+ __param(0, (0, tegg_1.Context)()),
125
+ __param(1, (0, tegg_1.HTTPParam)())
126
+ ], RegistryController.prototype, "removeRegistry", null);
127
+ RegistryController = __decorate([
128
+ (0, tegg_1.HTTPController)()
129
+ ], RegistryController);
130
+ exports.RegistryController = RegistryController;
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVnaXN0cnlDb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL3BvcnQvY29udHJvbGxlci9SZWdpc3RyeUNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsc0NBV3FCO0FBQ3JCLDJDQUEyQztBQUMzQyw2REFBMEQ7QUFHMUQsMkRBQXdEO0FBRXhELHdDQUFnRztBQUdoRyxJQUFhLGtCQUFrQixHQUEvQixNQUFhLGtCQUFtQixTQUFRLHVDQUFrQjtJQVV4RCxLQUFLLENBQUMsY0FBYyxDQUFjLFFBQXFELEVBQWUsU0FBdUQ7UUFDM0osTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDN0YsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQU1ELEtBQUssQ0FBQyxZQUFZLENBQWMsRUFBVTtRQUN4QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsTUFBTSxJQUFJLDBCQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUMvQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFNRCxLQUFLLENBQUMsa0JBQWtCLENBQWMsRUFBVSxFQUFlLFFBQXFELEVBQWUsU0FBdUQ7UUFDeEwsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLE1BQU0sSUFBSSwwQkFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDL0M7UUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIs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
@@ -0,0 +1,14 @@
1
+ import { EggContext } from '@eggjs/tegg';
2
+ import { AbstractController } from './AbstractController';
3
+ import { Static } from 'egg-typebox-validate/typebox';
4
+ import { ScopeCreateOptions } from '../typebox';
5
+ export declare class ScopeController extends AbstractController {
6
+ private readonly scopeManagerService;
7
+ private readonly registryManagerService;
8
+ createScope(ctx: EggContext, scopeOptions: Static<typeof ScopeCreateOptions>): Promise<{
9
+ ok: boolean;
10
+ }>;
11
+ removeScope(ctx: EggContext, id: string): Promise<{
12
+ ok: boolean;
13
+ }>;
14
+ }