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.
- package/History.md +32 -0
- package/dist/app/common/LogUtil.d.ts +1 -0
- package/dist/app/common/LogUtil.js +8 -0
- package/dist/app/common/SyncUtil.js +2 -2
- package/dist/app/common/adapter/NPMRegistry.d.ts +2 -0
- package/dist/app/common/adapter/NPMRegistry.js +5 -2
- package/dist/app/common/adapter/binary/NodePreGypBinary.js +20 -5
- package/dist/app/common/adapter/changesStream/AbstractChangesStream.d.ts +19 -0
- package/dist/app/common/adapter/changesStream/AbstractChangesStream.js +30 -0
- package/dist/app/common/adapter/changesStream/CnpmcoreChangesStream.d.ts +8 -0
- package/dist/app/common/adapter/changesStream/CnpmcoreChangesStream.js +62 -0
- package/dist/app/common/adapter/changesStream/CnpmjsorgChangesStream.d.ts +9 -0
- package/dist/app/common/adapter/changesStream/CnpmjsorgChangesStream.js +73 -0
- package/dist/app/common/adapter/changesStream/NpmChangesStream.d.ts +8 -0
- package/dist/app/common/adapter/changesStream/NpmChangesStream.js +51 -0
- package/dist/app/common/enum/Hook.d.ts +18 -0
- package/dist/app/common/enum/Hook.js +24 -0
- package/dist/app/common/enum/Registry.d.ts +5 -0
- package/dist/app/common/enum/Registry.js +10 -0
- package/dist/app/common/enum/Task.d.ts +3 -1
- package/dist/app/common/enum/Task.js +3 -1
- package/dist/app/common/typing.d.ts +5 -0
- package/dist/app/core/entity/Hook.d.ts +30 -0
- package/dist/app/core/entity/Hook.js +43 -0
- package/dist/app/core/entity/HookEvent.d.ts +36 -0
- package/dist/app/core/entity/HookEvent.js +59 -0
- package/dist/app/core/entity/Package.d.ts +2 -0
- package/dist/app/core/entity/Package.js +2 -1
- package/dist/app/core/entity/Registry.d.ts +23 -0
- package/dist/app/core/entity/Registry.js +22 -0
- package/dist/app/core/entity/Scope.d.ts +16 -0
- package/dist/app/core/entity/Scope.js +19 -0
- package/dist/app/core/entity/Task.d.ts +50 -8
- package/dist/app/core/entity/Task.js +60 -9
- package/dist/app/core/event/ChangesStream.d.ts +10 -5
- package/dist/app/core/event/ChangesStream.js +46 -15
- package/dist/app/core/event/index.d.ts +12 -4
- package/dist/app/core/event/index.js +1 -1
- package/dist/app/core/service/BinarySyncerService.d.ts +3 -3
- package/dist/app/core/service/ChangesStreamService.d.ts +15 -5
- package/dist/app/core/service/ChangesStreamService.js +113 -115
- package/dist/app/core/service/CreateHookTriggerService.d.ts +10 -0
- package/dist/app/core/service/CreateHookTriggerService.js +83 -0
- package/dist/app/core/service/HookManageService.d.ts +29 -0
- package/dist/app/core/service/HookManageService.js +77 -0
- package/dist/app/core/service/HookTriggerService.d.ts +14 -0
- package/dist/app/core/service/HookTriggerService.js +113 -0
- package/dist/app/core/service/PackageManagerService.d.ts +1 -0
- package/dist/app/core/service/PackageManagerService.js +8 -5
- package/dist/app/core/service/PackageSyncerService.d.ts +7 -4
- package/dist/app/core/service/PackageSyncerService.js +23 -4
- package/dist/app/core/service/RegistryManagerService.d.ts +29 -0
- package/dist/app/core/service/RegistryManagerService.js +97 -0
- package/dist/app/core/service/ScopeManagerService.d.ts +27 -0
- package/dist/app/core/service/ScopeManagerService.js +58 -0
- package/dist/app/core/service/TaskService.d.ts +4 -3
- package/dist/app/core/service/TaskService.js +10 -5
- package/dist/app/core/service/UserService.d.ts +1 -1
- package/dist/app/core/service/UserService.js +3 -3
- package/dist/app/core/util/ChangesStreamTransform.d.ts +8 -0
- package/dist/app/core/util/ChangesStreamTransform.js +50 -0
- package/dist/app/core/util/EntityUtil.d.ts +13 -0
- package/dist/app/core/util/EntityUtil.js +13 -1
- package/dist/app/infra/QueueAdapter.d.ts +16 -0
- package/dist/app/infra/QueueAdapter.js +50 -0
- package/dist/app/port/UserRoleManager.d.ts +1 -2
- package/dist/app/port/controller/HookController.d.ts +23 -0
- package/dist/app/port/controller/HookController.js +133 -0
- package/dist/app/port/controller/PackageSyncController.d.ts +1 -0
- package/dist/app/port/controller/PackageSyncController.js +13 -2
- package/dist/app/port/controller/RegistryController.d.ts +20 -0
- package/dist/app/port/controller/RegistryController.js +131 -0
- package/dist/app/port/controller/ScopeController.d.ts +14 -0
- package/dist/app/port/controller/ScopeController.js +68 -0
- package/dist/app/port/controller/convertor/HookConvertor.d.ts +37 -0
- package/dist/app/port/controller/convertor/HookConvertor.js +29 -0
- package/dist/app/port/middleware/AdminAccess.d.ts +2 -0
- package/dist/app/port/middleware/AdminAccess.js +15 -0
- package/dist/app/port/typebox.d.ts +48 -0
- package/dist/app/port/typebox.js +126 -2
- package/dist/app/repository/HookRepository.d.ts +19 -0
- package/dist/app/repository/HookRepository.js +69 -0
- package/dist/app/repository/RegistryRepository.d.ts +12 -0
- package/dist/app/repository/RegistryRepository.js +64 -0
- package/dist/app/repository/ScopeRepository.d.ts +14 -0
- package/dist/app/repository/ScopeRepository.js +73 -0
- package/dist/app/repository/TaskRepository.d.ts +5 -3
- package/dist/app/repository/TaskRepository.js +32 -2
- package/dist/app/repository/UserRepository.d.ts +1 -0
- package/dist/app/repository/UserRepository.js +7 -1
- package/dist/app/repository/model/Hook.d.ts +15 -0
- package/dist/app/repository/model/Hook.js +58 -0
- package/dist/app/repository/model/Package.d.ts +1 -0
- package/dist/app/repository/model/Package.js +4 -1
- package/dist/app/repository/model/Registry.d.ts +13 -0
- package/dist/app/repository/model/Registry.js +50 -0
- package/dist/app/repository/model/Scope.d.ts +9 -0
- package/dist/app/repository/model/Scope.js +39 -0
- package/dist/app/repository/model/Task.d.ts +1 -0
- package/dist/app/repository/model/Task.js +6 -1
- package/dist/app/schedule/CreateTriggerHookWorker.d.ts +8 -0
- package/dist/app/schedule/CreateTriggerHookWorker.js +51 -0
- package/dist/app/schedule/SyncPackageWorker.js +5 -1
- package/dist/app/schedule/TriggerHookWorker.d.ts +8 -0
- package/dist/app/schedule/TriggerHookWorker.js +49 -0
- package/dist/config/binaries.js +8 -1
- package/dist/config/config.default.js +5 -1
- package/package.json +1 -1
- package/dist/app/common/adapter/QueueAdapter.d.ts +0 -7
- 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,
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSG9va0NvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hcHAvcG9ydC9jb250cm9sbGVyL0hvb2tDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHNDQVNxQjtBQU1yQiw2REFBMEQ7QUFDMUQsd0NBQTBFO0FBaUIxRSxJQUFhLGNBQWMsR0FBM0IsTUFBYSxjQUFjO0lBY3pCLEtBQUssQ0FBQyxVQUFVLENBQVksR0FBZSxFQUFjLEdBQXNCO1FBQzdFLEdBQUcsQ0FBQyxTQUFTLENBQUMsK0JBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMvRSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7WUFDbkQsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ3BCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBZ0I7WUFDMUIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2QsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1lBQ3RCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtTQUNuQixDQUFDLENBQUM7UUFDSCxPQUFPLDZCQUFhLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBTUQsS0FBSyxDQUFDLFVBQVUsQ0FBWSxHQUFlLEVBQWUsRUFBVSxFQUFjLEdBQXNCO1FBQ3RHLEdBQUcsQ0FBQyxTQUFTLENBQUMsK0JBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMvRSxNQUFNLElB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
|
|
@@ -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
|
-
|
|
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,
|
|
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
|
+
}
|