@eggjs/tegg-orm-plugin 4.0.0-beta.3 → 4.0.0-beta.5
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/README.md +12 -0
- package/dist/_virtual/_@oxc-project_runtime@0.93.0/helpers/decorate.js +10 -0
- package/dist/_virtual/_@oxc-project_runtime@0.93.0/helpers/decorateMetadata.js +7 -0
- package/dist/app.d.ts +26 -0
- package/dist/app.js +44 -0
- package/dist/config/config.default.d.ts +19 -0
- package/dist/config/config.default.js +5 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +5 -0
- package/dist/lib/DataSourceManager.d.ts +23 -0
- package/dist/lib/DataSourceManager.js +22 -0
- package/dist/lib/LeoricRegister.d.ts +20 -0
- package/dist/lib/LeoricRegister.js +68 -0
- package/dist/lib/ModelProtoHook.d.ts +12 -0
- package/dist/lib/ModelProtoHook.js +20 -0
- package/dist/lib/ModelProtoManager.d.ts +15 -0
- package/dist/lib/ModelProtoManager.js +21 -0
- package/dist/lib/ORMLoadUnitHook.d.ts +9 -0
- package/dist/lib/ORMLoadUnitHook.js +17 -0
- package/dist/lib/SingletonModelObject.d.ts +23 -0
- package/dist/lib/SingletonModelObject.js +49 -0
- package/dist/lib/SingletonModelProto.d.ts +27 -0
- package/dist/lib/SingletonModelProto.js +41 -0
- package/dist/lib/SingletonORM.d.ts +10 -0
- package/dist/lib/SingletonORM.js +23 -0
- package/dist/lib/types.d.ts +7 -0
- package/dist/lib/types.js +3 -0
- package/dist/types.d.ts +8 -0
- package/dist/types.js +5 -0
- package/package.json +54 -49
- package/app.d.ts +0 -14
- package/app.js +0 -44
- package/index.d.ts +0 -21
- package/index.js +0 -5
- package/lib/DataSourceManager.d.ts +0 -20
- package/lib/DataSourceManager.js +0 -21
- package/lib/LeoricRegister.d.ts +0 -16
- package/lib/LeoricRegister.js +0 -80
- package/lib/ModelProtoHook.d.ts +0 -8
- package/lib/ModelProtoHook.js +0 -16
- package/lib/ModelProtoManager.d.ts +0 -11
- package/lib/ModelProtoManager.js +0 -12
- package/lib/ORMLoadUnitHook.d.ts +0 -5
- package/lib/ORMLoadUnitHook.js +0 -18
- package/lib/SingletonModelObject.d.ts +0 -19
- package/lib/SingletonModelObject.js +0 -46
- package/lib/SingletonModelProto.d.ts +0 -23
- package/lib/SingletonModelProto.js +0 -40
- package/lib/SingletonORM.d.ts +0 -6
- package/lib/SingletonORM.js +0 -36
- package/lib/types.d.ts +0 -3
- package/lib/types.js +0 -2
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"tegg"
|
|
7
7
|
]
|
|
8
8
|
},
|
|
9
|
-
"version": "4.0.0-beta.
|
|
9
|
+
"version": "4.0.0-beta.5",
|
|
10
10
|
"description": "orm decorator for egg",
|
|
11
11
|
"keywords": [
|
|
12
12
|
"egg",
|
|
@@ -18,35 +18,26 @@
|
|
|
18
18
|
"leoric"
|
|
19
19
|
],
|
|
20
20
|
"files": [
|
|
21
|
-
"
|
|
22
|
-
"app.d.ts",
|
|
23
|
-
"lib/**/*.js",
|
|
24
|
-
"lib/**/*.d.ts",
|
|
25
|
-
"app/**/*.js",
|
|
26
|
-
"app/**/*.d.ts",
|
|
27
|
-
"index.js",
|
|
28
|
-
"index.d.ts"
|
|
21
|
+
"dist"
|
|
29
22
|
],
|
|
30
23
|
"type": "module",
|
|
31
24
|
"exports": {
|
|
32
|
-
".":
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
".": "./dist/index.js",
|
|
26
|
+
"./app": "./dist/app.js",
|
|
27
|
+
"./config/config.default": "./dist/config/config.default.js",
|
|
28
|
+
"./lib/DataSourceManager": "./dist/lib/DataSourceManager.js",
|
|
29
|
+
"./lib/LeoricRegister": "./dist/lib/LeoricRegister.js",
|
|
30
|
+
"./lib/ModelProtoHook": "./dist/lib/ModelProtoHook.js",
|
|
31
|
+
"./lib/ModelProtoManager": "./dist/lib/ModelProtoManager.js",
|
|
32
|
+
"./lib/ORMLoadUnitHook": "./dist/lib/ORMLoadUnitHook.js",
|
|
33
|
+
"./lib/SingletonModelObject": "./dist/lib/SingletonModelObject.js",
|
|
34
|
+
"./lib/SingletonModelProto": "./dist/lib/SingletonModelProto.js",
|
|
35
|
+
"./lib/SingletonORM": "./dist/lib/SingletonORM.js",
|
|
36
|
+
"./lib/types": "./dist/lib/types.js",
|
|
37
|
+
"./types": "./dist/types.js",
|
|
36
38
|
"./package.json": "./package.json"
|
|
37
39
|
},
|
|
38
|
-
"
|
|
39
|
-
"pretest": "npm run prepare-test",
|
|
40
|
-
"test": "egg-bin test",
|
|
41
|
-
"precov": "npm run prepare-test",
|
|
42
|
-
"cov": "egg-bin cov",
|
|
43
|
-
"clean": "tsc -b --clean",
|
|
44
|
-
"tsc": "npm run clean && tsc -p ./tsconfig.pub.json",
|
|
45
|
-
"tsc:pub": "npm run tsc",
|
|
46
|
-
"prepublishOnly": "npm run tsc",
|
|
47
|
-
"prepare-test": "node ./test/fixtures/prepare.js"
|
|
48
|
-
},
|
|
49
|
-
"homepage": "https://github.com/eggjs/tegg",
|
|
40
|
+
"homepage": "https://github.com/eggjs/tegg/tree/next/plugin/orm",
|
|
50
41
|
"bugs": {
|
|
51
42
|
"url": "https://github.com/eggjs/tegg/issues"
|
|
52
43
|
},
|
|
@@ -56,36 +47,50 @@
|
|
|
56
47
|
"directory": "plugin/orm"
|
|
57
48
|
},
|
|
58
49
|
"engines": {
|
|
59
|
-
"node": ">=
|
|
50
|
+
"node": ">=22.18.0"
|
|
60
51
|
},
|
|
61
52
|
"dependencies": {
|
|
62
|
-
"@eggjs/core": "^6.4.0",
|
|
63
|
-
"@eggjs/egg-module-common": "^4.0.0-beta.3",
|
|
64
|
-
"@eggjs/tegg": "^4.0.0-beta.3",
|
|
65
|
-
"@eggjs/tegg-common-util": "^4.0.0-beta.3",
|
|
66
|
-
"@eggjs/tegg-lifecycle": "^4.0.0-beta.3",
|
|
67
|
-
"@eggjs/tegg-loader": "^4.0.0-beta.3",
|
|
68
|
-
"@eggjs/tegg-metadata": "^4.0.0-beta.3",
|
|
69
|
-
"@eggjs/tegg-orm-decorator": "^4.0.0-beta.3",
|
|
70
|
-
"@eggjs/tegg-runtime": "^4.0.0-beta.3",
|
|
71
53
|
"leoric": "^2.12.2",
|
|
72
|
-
"sdk-base": "^5.0.1"
|
|
54
|
+
"sdk-base": "^5.0.1",
|
|
55
|
+
"@eggjs/egg-module-common": "4.0.0-beta.5",
|
|
56
|
+
"@eggjs/tegg": "4.0.0-beta.5",
|
|
57
|
+
"@eggjs/tegg-lifecycle": "4.0.0-beta.5",
|
|
58
|
+
"@eggjs/tegg-metadata": "4.0.0-beta.5",
|
|
59
|
+
"@eggjs/tegg-orm-decorator": "4.0.0-beta.5",
|
|
60
|
+
"@eggjs/tegg-runtime": "4.0.0-beta.5"
|
|
61
|
+
},
|
|
62
|
+
"peerDependencies": {
|
|
63
|
+
"egg": "beta",
|
|
64
|
+
"@eggjs/tegg-plugin": "4.0.0-beta.5"
|
|
73
65
|
},
|
|
74
66
|
"devDependencies": {
|
|
75
|
-
"@eggjs/
|
|
76
|
-
"@eggjs/
|
|
77
|
-
"@eggjs/
|
|
78
|
-
"@
|
|
79
|
-
"
|
|
80
|
-
"@types/
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
67
|
+
"@eggjs/bin": "beta",
|
|
68
|
+
"@eggjs/mock": "beta",
|
|
69
|
+
"@eggjs/tracer": "beta",
|
|
70
|
+
"@types/mocha": "^10.0.10",
|
|
71
|
+
"mocha": "^11.0.1",
|
|
72
|
+
"@types/node": "^22.10.5",
|
|
73
|
+
"egg": "beta",
|
|
74
|
+
"mysql2": "^3.12.0",
|
|
75
|
+
"typescript": "^5.9.3",
|
|
76
|
+
"tsdown": "^0.15.6",
|
|
77
|
+
"unplugin-unused": "^0.5.3",
|
|
78
|
+
"@eggjs/tegg-config": "4.0.0-beta.5",
|
|
79
|
+
"@eggjs/module-test-util": "4.0.0-beta.4",
|
|
80
|
+
"@eggjs/tegg-plugin": "4.0.0-beta.5"
|
|
86
81
|
},
|
|
87
82
|
"publishConfig": {
|
|
88
83
|
"access": "public"
|
|
89
84
|
},
|
|
90
|
-
"
|
|
91
|
-
|
|
85
|
+
"main": "./dist/index.js",
|
|
86
|
+
"module": "./dist/index.js",
|
|
87
|
+
"types": "./dist/index.d.ts",
|
|
88
|
+
"scripts": {
|
|
89
|
+
"test:mocha:skip": "npm run prepare-test && egg-bin test",
|
|
90
|
+
"cov:mocha:skip": "npm run prepare-test && egg-bin cov",
|
|
91
|
+
"clean": "rimraf dist",
|
|
92
|
+
"build": "tsdown",
|
|
93
|
+
"typecheck": "tsc --noEmit",
|
|
94
|
+
"prepare-test": "node ./test/fixtures/prepare.js"
|
|
95
|
+
}
|
|
96
|
+
}
|
package/app.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { EggCore as Application } from '@eggjs/core';
|
|
2
|
-
export default class OrmAppBootHook {
|
|
3
|
-
private readonly app;
|
|
4
|
-
private readonly dataSourceManager;
|
|
5
|
-
private readonly leoricRegister;
|
|
6
|
-
private readonly modelProtoManager;
|
|
7
|
-
private readonly modelProtoHook;
|
|
8
|
-
private readonly ormLoadUnitHook;
|
|
9
|
-
constructor(app: Application);
|
|
10
|
-
configWillLoad(): void;
|
|
11
|
-
configDidLoad(): void;
|
|
12
|
-
didLoad(): Promise<void>;
|
|
13
|
-
beforeClose(): Promise<void>;
|
|
14
|
-
}
|
package/app.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { DataSourceManager } from './lib/DataSourceManager.js';
|
|
2
|
-
import { LeoricRegister } from './lib/LeoricRegister.js';
|
|
3
|
-
import { ModelProtoManager } from './lib/ModelProtoManager.js';
|
|
4
|
-
import { ModelProtoHook } from './lib/ModelProtoHook.js';
|
|
5
|
-
import { MODEL_PROTO_IMPL_TYPE } from '@eggjs/tegg-orm-decorator';
|
|
6
|
-
import SingletonModelProto from './lib/SingletonModelProto.js';
|
|
7
|
-
import { SingletonModelObject } from './lib/SingletonModelObject.js';
|
|
8
|
-
import { ORMLoadUnitHook } from './lib/ORMLoadUnitHook.js';
|
|
9
|
-
export default class OrmAppBootHook {
|
|
10
|
-
constructor(app) {
|
|
11
|
-
this.app = app;
|
|
12
|
-
this.dataSourceManager = new DataSourceManager();
|
|
13
|
-
this.modelProtoManager = new ModelProtoManager();
|
|
14
|
-
this.leoricRegister = new LeoricRegister(this.modelProtoManager, this.dataSourceManager);
|
|
15
|
-
this.modelProtoHook = new ModelProtoHook(this.modelProtoManager);
|
|
16
|
-
this.app.eggPrototypeCreatorFactory.registerPrototypeCreator(MODEL_PROTO_IMPL_TYPE, SingletonModelProto.createProto);
|
|
17
|
-
this.app.leoricRegister = this.leoricRegister;
|
|
18
|
-
this.ormLoadUnitHook = new ORMLoadUnitHook();
|
|
19
|
-
}
|
|
20
|
-
configWillLoad() {
|
|
21
|
-
this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.modelProtoHook);
|
|
22
|
-
this.app.eggObjectFactory.registerEggObjectCreateMethod(SingletonModelProto, SingletonModelObject.createObject);
|
|
23
|
-
this.app.loadUnitLifecycleUtil.registerLifecycle(this.ormLoadUnitHook);
|
|
24
|
-
}
|
|
25
|
-
configDidLoad() {
|
|
26
|
-
const config = this.app.config.orm;
|
|
27
|
-
if (config.datasources) {
|
|
28
|
-
for (const datasource of config.datasources) {
|
|
29
|
-
this.dataSourceManager.addConfig(datasource);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
this.dataSourceManager.addDefaultConfig(config);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
async didLoad() {
|
|
37
|
-
await this.app.moduleHandler.ready();
|
|
38
|
-
await this.leoricRegister.register();
|
|
39
|
-
}
|
|
40
|
-
async beforeClose() {
|
|
41
|
-
this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.modelProtoHook);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxtQkFBbUIsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsTUFBTSxDQUFDLE9BQU8sT0FBTyxjQUFjO0lBUWpDLFlBQVksR0FBZ0I7UUFDMUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLHdCQUF3QixDQUFDLHFCQUFxQixFQUFFLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JILElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDOUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQyxtQkFBbUIsRUFBRSxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUNuQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixLQUFLLE1BQU0sVUFBVSxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxRSxDQUFDO0NBQ0YifQ==
|
package/index.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import '@eggjs/tegg-plugin';
|
|
2
|
-
import { AttributeOptions } from '@eggjs/tegg-orm-decorator';
|
|
3
|
-
import { LeoricRegister } from './lib/LeoricRegister.js';
|
|
4
|
-
import { Orm } from './lib/SingletonORM.js';
|
|
5
|
-
import type { OrmConfig } from './lib/DataSourceManager.js';
|
|
6
|
-
import type { DataType } from './lib/types.js';
|
|
7
|
-
export { Orm, LeoricRegister };
|
|
8
|
-
declare module '@eggjs/tegg-orm-decorator' {
|
|
9
|
-
function Attribute(dataType: DataType, options?: AttributeOptions): (target: any, propertyKey: PropertyKey) => void;
|
|
10
|
-
}
|
|
11
|
-
declare module '@eggjs/core' {
|
|
12
|
-
interface EggAppConfig {
|
|
13
|
-
orm: OrmConfig & {
|
|
14
|
-
datasources?: OrmConfig[];
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
interface EggCore {
|
|
18
|
-
leoricRegister: LeoricRegister;
|
|
19
|
-
orm: Orm;
|
|
20
|
-
}
|
|
21
|
-
}
|
package/index.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import '@eggjs/tegg-plugin';
|
|
2
|
-
import { LeoricRegister } from './lib/LeoricRegister.js';
|
|
3
|
-
import { Orm } from './lib/SingletonORM.js';
|
|
4
|
-
export { Orm, LeoricRegister };
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLG9CQUFvQixDQUFDO0FBRzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsQ0FBQyJ9
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export interface OrmConfig {
|
|
2
|
-
client: string;
|
|
3
|
-
database: string;
|
|
4
|
-
host: string;
|
|
5
|
-
port: number;
|
|
6
|
-
user: string;
|
|
7
|
-
define: object;
|
|
8
|
-
options: object;
|
|
9
|
-
charset: string;
|
|
10
|
-
[key: string]: any;
|
|
11
|
-
}
|
|
12
|
-
export declare class DataSourceManager {
|
|
13
|
-
private readonly dataSourceConfigs;
|
|
14
|
-
private defaultDataSourceConfig?;
|
|
15
|
-
constructor();
|
|
16
|
-
addDefaultConfig(config: OrmConfig): void;
|
|
17
|
-
getDefaultConfig(): OrmConfig | undefined;
|
|
18
|
-
addConfig(config: OrmConfig): void;
|
|
19
|
-
getConfig(name: string): OrmConfig | undefined;
|
|
20
|
-
}
|
package/lib/DataSourceManager.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export class DataSourceManager {
|
|
2
|
-
constructor() {
|
|
3
|
-
this.dataSourceConfigs = [];
|
|
4
|
-
}
|
|
5
|
-
addDefaultConfig(config) {
|
|
6
|
-
this.defaultDataSourceConfig = config;
|
|
7
|
-
}
|
|
8
|
-
getDefaultConfig() {
|
|
9
|
-
return this.defaultDataSourceConfig;
|
|
10
|
-
}
|
|
11
|
-
addConfig(config) {
|
|
12
|
-
this.dataSourceConfigs.push(config);
|
|
13
|
-
}
|
|
14
|
-
getConfig(name) {
|
|
15
|
-
if (this.defaultDataSourceConfig?.database === name) {
|
|
16
|
-
return this.defaultDataSourceConfig;
|
|
17
|
-
}
|
|
18
|
-
return this.dataSourceConfigs.find(t => t.database === name);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVNvdXJjZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJEYXRhU291cmNlTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4QkEsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QjtRQUNFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQWlCO1FBQ2hDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxNQUFNLENBQUM7SUFDeEMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3RDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBaUI7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVk7UUFDcEIsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQ3RDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRiJ9
|
package/lib/LeoricRegister.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Base } from 'sdk-base';
|
|
2
|
-
import { ModelMetadata } from '@eggjs/tegg-orm-decorator';
|
|
3
|
-
import { ModelProtoManager } from './ModelProtoManager.js';
|
|
4
|
-
import { DataSourceManager, OrmConfig } from './DataSourceManager.js';
|
|
5
|
-
import type { RealmType } from './types.js';
|
|
6
|
-
export declare class LeoricRegister extends Base {
|
|
7
|
-
private readonly modelProtoManager;
|
|
8
|
-
private readonly dataSourceManager;
|
|
9
|
-
readonly realmMap: Map<string, RealmType>;
|
|
10
|
-
constructor(modelProtoManager: ModelProtoManager, dataSourceManager: DataSourceManager);
|
|
11
|
-
getConfig(datasource?: string): OrmConfig | undefined;
|
|
12
|
-
getRealm(config: OrmConfig | undefined): RealmType | undefined;
|
|
13
|
-
getOrCreateRealm(datasource: string | undefined): any;
|
|
14
|
-
generateLeoricAttributes(metadata: ModelMetadata): Record<string, any>;
|
|
15
|
-
register(): Promise<void>;
|
|
16
|
-
}
|
package/lib/LeoricRegister.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { Base } from 'sdk-base';
|
|
2
|
-
import Realm from 'leoric';
|
|
3
|
-
import { ModelMetadataUtil } from '@eggjs/tegg-orm-decorator';
|
|
4
|
-
export class LeoricRegister extends Base {
|
|
5
|
-
constructor(modelProtoManager, dataSourceManager) {
|
|
6
|
-
super();
|
|
7
|
-
this.modelProtoManager = modelProtoManager;
|
|
8
|
-
this.dataSourceManager = dataSourceManager;
|
|
9
|
-
this.realmMap = new Map();
|
|
10
|
-
}
|
|
11
|
-
getConfig(datasource) {
|
|
12
|
-
let config;
|
|
13
|
-
if (!datasource) {
|
|
14
|
-
config = this.dataSourceManager.getDefaultConfig();
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
config = this.dataSourceManager.getConfig(datasource);
|
|
18
|
-
}
|
|
19
|
-
return config;
|
|
20
|
-
}
|
|
21
|
-
getRealm(config) {
|
|
22
|
-
if (!config?.database) {
|
|
23
|
-
return undefined;
|
|
24
|
-
}
|
|
25
|
-
const realm = this.realmMap.get(config.database);
|
|
26
|
-
return realm;
|
|
27
|
-
}
|
|
28
|
-
getOrCreateRealm(datasource) {
|
|
29
|
-
const config = this.getConfig(datasource);
|
|
30
|
-
let realm;
|
|
31
|
-
if (config) {
|
|
32
|
-
realm = this.getRealm(config);
|
|
33
|
-
if (realm) {
|
|
34
|
-
return realm;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
realm = new Realm({ ...config });
|
|
38
|
-
this.realmMap.set(config.database, realm);
|
|
39
|
-
return realm;
|
|
40
|
-
}
|
|
41
|
-
generateLeoricAttributes(metadata) {
|
|
42
|
-
const attributes = {};
|
|
43
|
-
for (const attribute of metadata.attributes) {
|
|
44
|
-
attributes[attribute.propertyName] = {
|
|
45
|
-
columnName: attribute.attributeName,
|
|
46
|
-
type: attribute.dataType,
|
|
47
|
-
allowNull: attribute.allowNull,
|
|
48
|
-
primaryKey: attribute.primary,
|
|
49
|
-
unique: attribute.unique,
|
|
50
|
-
autoIncrement: attribute.autoIncrement,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
return attributes;
|
|
54
|
-
}
|
|
55
|
-
async register() {
|
|
56
|
-
for (const { proto, clazz } of this.modelProtoManager.getProtos()) {
|
|
57
|
-
const metadata = ModelMetadataUtil.getModelMetadata(clazz);
|
|
58
|
-
if (!metadata)
|
|
59
|
-
throw new Error(`not found metadata for model ${proto.id}`);
|
|
60
|
-
const realm = this.getOrCreateRealm(metadata.dataSource);
|
|
61
|
-
realm.models[clazz.name] = clazz;
|
|
62
|
-
realm[clazz.name] = clazz;
|
|
63
|
-
const attributes = this.generateLeoricAttributes(metadata);
|
|
64
|
-
const hooks = {};
|
|
65
|
-
for (const hookName of Realm.hookNames) {
|
|
66
|
-
if (clazz[hookName]) {
|
|
67
|
-
hooks[hookName] = clazz[hookName];
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
clazz.init(attributes, {
|
|
71
|
-
tableName: metadata.tableName,
|
|
72
|
-
hooks,
|
|
73
|
-
}, {});
|
|
74
|
-
}
|
|
75
|
-
await Promise.all(Array.from(this.realmMap.values())
|
|
76
|
-
.map(realm => realm.connect()));
|
|
77
|
-
this.ready(true);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVvcmljUmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJMZW9yaWNSZWdpc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxNQUFNLFFBQVEsQ0FBQztBQUMzQixPQUFPLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFNN0UsTUFBTSxPQUFPLGNBQWUsU0FBUSxJQUFJO0lBS3RDLFlBQVksaUJBQW9DLEVBQUUsaUJBQW9DO1FBQ3BGLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFNBQVMsQ0FBQyxVQUFtQjtRQUMzQixJQUFJLE1BQTZCLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQTZCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDdEIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUE4QjtRQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUksS0FBNEIsQ0FBQztRQUNqQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO1FBQ0QsS0FBSyxHQUFHLElBQUssS0FBYSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU8sQ0FBQyxRQUFRLEVBQUUsS0FBTSxDQUFDLENBQUM7UUFDNUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsd0JBQXdCLENBQUMsUUFBdUI7UUFDOUMsTUFBTSxVQUFVLEdBQXdCLEVBQUUsQ0FBQztRQUMzQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1QyxVQUFVLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHO2dCQUNuQyxVQUFVLEVBQUUsU0FBUyxDQUFDLGFBQWE7Z0JBQ25DLElBQUksRUFBRSxTQUFTLENBQUMsUUFBUTtnQkFDeEIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO2dCQUM5QixVQUFVLEVBQUUsU0FBUyxDQUFDLE9BQU87Z0JBQzdCLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtnQkFDeEIsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhO2FBQ3ZDLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osS0FBSyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxRQUFRO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzFCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzRCxNQUFNLEtBQUssR0FBd0IsRUFBRSxDQUFDO1lBQ3RDLEtBQUssTUFBTSxRQUFRLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLEtBQUssQ0FBQyxRQUE4QixDQUFDLEVBQUUsQ0FBQztvQkFDMUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUE4QixDQUFDLENBQUM7Z0JBQzFELENBQUM7WUFDSCxDQUFDO1lBRUEsS0FBYSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQzlCLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztnQkFDN0IsS0FBSzthQUNOLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDVCxDQUFDO1FBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNqRCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkIsQ0FBQztDQUNGIn0=
|
package/lib/ModelProtoHook.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { LifecycleHook } from '@eggjs/tegg';
|
|
2
|
-
import { EggPrototype, EggPrototypeLifecycleContext } from '@eggjs/tegg-metadata';
|
|
3
|
-
import { ModelProtoManager } from './ModelProtoManager.js';
|
|
4
|
-
export declare class ModelProtoHook implements LifecycleHook<EggPrototypeLifecycleContext, EggPrototype> {
|
|
5
|
-
private readonly modelProtoManager;
|
|
6
|
-
constructor(modelProtoManager: ModelProtoManager);
|
|
7
|
-
postCreate(ctx: EggPrototypeLifecycleContext, obj: EggPrototype): Promise<void>;
|
|
8
|
-
}
|
package/lib/ModelProtoHook.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { IS_MODEL, ModelMetaBuilder, ModelMetadataUtil } from '@eggjs/tegg-orm-decorator';
|
|
2
|
-
export class ModelProtoHook {
|
|
3
|
-
constructor(modelProtoManager) {
|
|
4
|
-
this.modelProtoManager = modelProtoManager;
|
|
5
|
-
}
|
|
6
|
-
async postCreate(ctx, obj) {
|
|
7
|
-
if (!obj.getMetaData(IS_MODEL)) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
const builder = new ModelMetaBuilder(ctx.clazz);
|
|
11
|
-
const metadata = builder.build();
|
|
12
|
-
ModelMetadataUtil.setModelMetadata(ctx.clazz, metadata);
|
|
13
|
-
this.modelProtoManager.addProto(ctx.clazz, obj);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxQcm90b0hvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJNb2RlbFByb3RvSG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHMUYsTUFBTSxPQUFPLGNBQWM7SUFHekIsWUFBWSxpQkFBb0M7UUFDOUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO0lBQzdDLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQWlDLEVBQUUsR0FBaUI7UUFDbkUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMvQixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0YifQ==
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { EggPrototype } from '@eggjs/tegg-metadata';
|
|
2
|
-
import { EggProtoImplClass } from '@eggjs/tegg';
|
|
3
|
-
export interface ModelProtoPair {
|
|
4
|
-
proto: EggPrototype;
|
|
5
|
-
clazz: EggProtoImplClass;
|
|
6
|
-
}
|
|
7
|
-
export declare class ModelProtoManager {
|
|
8
|
-
private readonly protos;
|
|
9
|
-
addProto(clazz: EggProtoImplClass, proto: EggPrototype): void;
|
|
10
|
-
getProtos(): Array<ModelProtoPair>;
|
|
11
|
-
}
|
package/lib/ModelProtoManager.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export class ModelProtoManager {
|
|
2
|
-
constructor() {
|
|
3
|
-
this.protos = [];
|
|
4
|
-
}
|
|
5
|
-
addProto(clazz, proto) {
|
|
6
|
-
this.protos.push({ proto, clazz });
|
|
7
|
-
}
|
|
8
|
-
getProtos() {
|
|
9
|
-
return this.protos.slice();
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxQcm90b01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJNb2RlbFByb3RvTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQU8saUJBQWlCO0lBQTlCO1FBQ21CLFdBQU0sR0FBMEIsRUFBRSxDQUFDO0lBU3RELENBQUM7SUFQQyxRQUFRLENBQUMsS0FBd0IsRUFBRSxLQUFtQjtRQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FDRiJ9
|
package/lib/ORMLoadUnitHook.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { LifecycleHook } from '@eggjs/tegg';
|
|
2
|
-
import { LoadUnit, LoadUnitLifecycleContext } from '@eggjs/tegg-metadata';
|
|
3
|
-
export declare class ORMLoadUnitHook implements LifecycleHook<LoadUnitLifecycleContext, LoadUnit> {
|
|
4
|
-
postCreate(_ctx: LoadUnitLifecycleContext, loadUnit: LoadUnit): Promise<void>;
|
|
5
|
-
}
|
package/lib/ORMLoadUnitHook.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { EggLoadUnitType, EggPrototypeCreatorFactory, EggPrototypeFactory, } from '@eggjs/tegg-metadata';
|
|
2
|
-
import { Orm } from './SingletonORM.js';
|
|
3
|
-
const REGISTER_CLAZZ = [
|
|
4
|
-
Orm,
|
|
5
|
-
];
|
|
6
|
-
export class ORMLoadUnitHook {
|
|
7
|
-
async postCreate(_ctx, loadUnit) {
|
|
8
|
-
if (loadUnit.type === EggLoadUnitType.APP) {
|
|
9
|
-
for (const clazz of REGISTER_CLAZZ) {
|
|
10
|
-
const protos = await EggPrototypeCreatorFactory.createProto(clazz, loadUnit);
|
|
11
|
-
for (const proto of protos) {
|
|
12
|
-
EggPrototypeFactory.instance.registerPrototype(proto, loadUnit);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT1JNTG9hZFVuaXRIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiT1JNTG9hZFVuaXRIb29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsMEJBQTBCLEVBQzFCLG1CQUFtQixHQUdwQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV4QyxNQUFNLGNBQWMsR0FBRztJQUNyQixHQUFHO0NBQ0osQ0FBQztBQUVGLE1BQU0sT0FBTyxlQUFlO0lBQzFCLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBOEIsRUFBRSxRQUFrQjtRQUNqRSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzFDLEtBQUssTUFBTSxLQUFLLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sTUFBTSxHQUFHLE1BQU0sMEJBQTBCLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDN0UsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDM0IsbUJBQW1CLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDbEUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { EggObject } from '@eggjs/tegg-runtime';
|
|
2
|
-
import { EggPrototype } from '@eggjs/tegg-metadata';
|
|
3
|
-
import { EggPrototypeName, EggObjectName } from '@eggjs/tegg';
|
|
4
|
-
import { Id } from '@eggjs/tegg-lifecycle';
|
|
5
|
-
import { Bone } from 'leoric';
|
|
6
|
-
import SingletonModelProto from './SingletonModelProto.js';
|
|
7
|
-
export declare class SingletonModelObject implements EggObject {
|
|
8
|
-
private status;
|
|
9
|
-
id: Id;
|
|
10
|
-
readonly name: EggPrototypeName;
|
|
11
|
-
private _obj;
|
|
12
|
-
readonly proto: SingletonModelProto;
|
|
13
|
-
constructor(name: EggObjectName, proto: SingletonModelProto);
|
|
14
|
-
init(): Promise<void>;
|
|
15
|
-
injectProperty(): void;
|
|
16
|
-
get isReady(): boolean;
|
|
17
|
-
get obj(): typeof Bone;
|
|
18
|
-
static createObject(name: EggObjectName, proto: EggPrototype): Promise<SingletonModelObject>;
|
|
19
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { ContextHandler, EggObjectStatus, } from '@eggjs/tegg-runtime';
|
|
2
|
-
import { IdenticalUtil } from '@eggjs/tegg-lifecycle';
|
|
3
|
-
import { EGG_CONTEXT } from '@eggjs/egg-module-common';
|
|
4
|
-
export class SingletonModelObject {
|
|
5
|
-
constructor(name, proto) {
|
|
6
|
-
this.status = EggObjectStatus.PENDING;
|
|
7
|
-
this.name = name;
|
|
8
|
-
this.proto = proto;
|
|
9
|
-
this.id = IdenticalUtil.createObjectId(this.proto.id);
|
|
10
|
-
}
|
|
11
|
-
async init() {
|
|
12
|
-
const clazz = class ContextModelClass extends this.proto.model {
|
|
13
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
14
|
-
// @ts-ignore
|
|
15
|
-
static get name() {
|
|
16
|
-
return super.name;
|
|
17
|
-
}
|
|
18
|
-
static get ctx() {
|
|
19
|
-
const ctx = ContextHandler.getContext();
|
|
20
|
-
if (ctx) {
|
|
21
|
-
return ctx.get(EGG_CONTEXT);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
get ctx() {
|
|
25
|
-
return ContextModelClass.ctx;
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
this._obj = clazz;
|
|
29
|
-
this.status = EggObjectStatus.READY;
|
|
30
|
-
}
|
|
31
|
-
injectProperty() {
|
|
32
|
-
throw new Error('never call ModelObject#injectProperty');
|
|
33
|
-
}
|
|
34
|
-
get isReady() {
|
|
35
|
-
return this.status === EggObjectStatus.READY;
|
|
36
|
-
}
|
|
37
|
-
get obj() {
|
|
38
|
-
return this._obj;
|
|
39
|
-
}
|
|
40
|
-
static async createObject(name, proto) {
|
|
41
|
-
const modelObject = new SingletonModelObject(name, proto);
|
|
42
|
-
await modelObject.init();
|
|
43
|
-
return modelObject;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZ2xldG9uTW9kZWxPYmplY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJTaW5nbGV0b25Nb2RlbE9iamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsY0FBYyxFQUVkLGVBQWUsR0FDaEIsTUFBTSxxQkFBcUIsQ0FBQztBQUc3QixPQUFPLEVBQU0sYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3ZELE1BQU0sT0FBTyxvQkFBb0I7SUFPL0IsWUFBWSxJQUFtQixFQUFFLEtBQTBCO1FBTm5ELFdBQU0sR0FBb0IsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQU94RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLEtBQUssR0FBRyxNQUFNLGlCQUFrQixTQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztZQUM1RCw2REFBNkQ7WUFDN0QsYUFBYTtZQUNiLE1BQU0sS0FBSyxJQUFJO2dCQUNiLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQztZQUNwQixDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUc7Z0JBQ1osTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNSLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDOUIsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLEdBQUc7Z0JBQ0wsT0FBTyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7WUFDL0IsQ0FBQztTQUVGLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsS0FBSyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQW1CLEVBQUUsS0FBbUI7UUFDaEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsS0FBNEIsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7Q0FDRiJ9
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { EggPrototype, LoadUnit, EggPrototypeLifecycleContext } from '@eggjs/tegg-metadata';
|
|
2
|
-
import { AccessLevel, EggPrototypeName, ObjectInitType, QualifierInfo, MetaDataKey, QualifierAttribute, QualifierValue } from '@eggjs/tegg';
|
|
3
|
-
import { Id } from '@eggjs/tegg-lifecycle';
|
|
4
|
-
import { Bone } from 'leoric';
|
|
5
|
-
export default class SingletonModelProto implements EggPrototype {
|
|
6
|
-
[key: symbol]: PropertyDescriptor;
|
|
7
|
-
private readonly qualifiers;
|
|
8
|
-
readonly accessLevel = AccessLevel.PUBLIC;
|
|
9
|
-
id: Id;
|
|
10
|
-
readonly initType = ObjectInitType.SINGLETON;
|
|
11
|
-
readonly injectObjects: never[];
|
|
12
|
-
readonly loadUnitId: string;
|
|
13
|
-
readonly moduleName: string;
|
|
14
|
-
readonly name: EggPrototypeName;
|
|
15
|
-
readonly model: typeof Bone;
|
|
16
|
-
constructor(loadUnit: LoadUnit, model: typeof Bone);
|
|
17
|
-
constructEggObject(): object;
|
|
18
|
-
getMetaData<T>(metadataKey: MetaDataKey): T | undefined;
|
|
19
|
-
verifyQualifier(qualifier: QualifierInfo): boolean;
|
|
20
|
-
verifyQualifiers(qualifiers: QualifierInfo[]): boolean;
|
|
21
|
-
getQualifier(attribute: QualifierAttribute): QualifierValue | undefined;
|
|
22
|
-
static createProto(ctx: EggPrototypeLifecycleContext): SingletonModelProto;
|
|
23
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { AccessLevel, ObjectInitType, QualifierUtil, MetadataUtil, } from '@eggjs/tegg';
|
|
2
|
-
import { IdenticalUtil } from '@eggjs/tegg-lifecycle';
|
|
3
|
-
export default class SingletonModelProto {
|
|
4
|
-
constructor(loadUnit, model) {
|
|
5
|
-
this.accessLevel = AccessLevel.PUBLIC;
|
|
6
|
-
this.initType = ObjectInitType.SINGLETON;
|
|
7
|
-
this.injectObjects = [];
|
|
8
|
-
this.model = model;
|
|
9
|
-
this.id = IdenticalUtil.createProtoId(loadUnit.id, `leoric:${model.name}`);
|
|
10
|
-
this.loadUnitId = loadUnit.id;
|
|
11
|
-
this.moduleName = loadUnit.name;
|
|
12
|
-
this.name = model.name;
|
|
13
|
-
this.qualifiers = QualifierUtil.getProtoQualifiers(model);
|
|
14
|
-
}
|
|
15
|
-
constructEggObject() {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
18
|
-
getMetaData(metadataKey) {
|
|
19
|
-
return MetadataUtil.getMetaData(metadataKey, this.model);
|
|
20
|
-
}
|
|
21
|
-
verifyQualifier(qualifier) {
|
|
22
|
-
const selfQualifiers = this.qualifiers.find(t => t.attribute === qualifier.attribute);
|
|
23
|
-
return selfQualifiers?.value === qualifier.value;
|
|
24
|
-
}
|
|
25
|
-
verifyQualifiers(qualifiers) {
|
|
26
|
-
for (const qualifier of qualifiers) {
|
|
27
|
-
if (!this.verifyQualifier(qualifier)) {
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return true;
|
|
32
|
-
}
|
|
33
|
-
getQualifier(attribute) {
|
|
34
|
-
return this.qualifiers.find(t => t.attribute === attribute)?.value;
|
|
35
|
-
}
|
|
36
|
-
static createProto(ctx) {
|
|
37
|
-
return new SingletonModelProto(ctx.loadUnit, ctx.clazz);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZ2xldG9uTW9kZWxQcm90by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIlNpbmdsZXRvbk1vZGVsUHJvdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFdBQVcsRUFFWCxjQUFjLEVBRWQsYUFBYSxFQUNiLFlBQVksR0FFYixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQU0sYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHMUQsTUFBTSxDQUFDLE9BQU8sT0FBTyxtQkFBbUI7SUFZdEMsWUFBWSxRQUFrQixFQUFFLEtBQWtCO1FBVHpDLGdCQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUVqQyxhQUFRLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUNwQyxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQU8xQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxVQUFVLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsV0FBVyxDQUFJLFdBQXdCO1FBQ3JDLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxlQUFlLENBQUMsU0FBd0I7UUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RixPQUFPLGNBQWMsRUFBRSxLQUFLLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBMkI7UUFDMUMsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQTZCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNyRSxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFpQztRQUNsRCxPQUFPLElBQUksbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsS0FBb0IsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDRiJ9
|
package/lib/SingletonORM.d.ts
DELETED
package/lib/SingletonORM.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
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;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { AccessLevel, Inject, SingletonProto, } from '@eggjs/tegg';
|
|
11
|
-
import { LeoricRegister } from './LeoricRegister.js';
|
|
12
|
-
let Orm = class Orm {
|
|
13
|
-
// default dataSource
|
|
14
|
-
get client() {
|
|
15
|
-
const defaultConfig = this.leoricRegister.getConfig();
|
|
16
|
-
return this.leoricRegister.getRealm(defaultConfig);
|
|
17
|
-
}
|
|
18
|
-
getClient(datasource) {
|
|
19
|
-
const config = this.leoricRegister.getConfig(datasource);
|
|
20
|
-
if (!config) {
|
|
21
|
-
throw new Error(`not found ${datasource} datasource`);
|
|
22
|
-
}
|
|
23
|
-
return this.leoricRegister.getOrCreateRealm(config.database);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
__decorate([
|
|
27
|
-
Inject(),
|
|
28
|
-
__metadata("design:type", LeoricRegister)
|
|
29
|
-
], Orm.prototype, "leoricRegister", void 0);
|
|
30
|
-
Orm = __decorate([
|
|
31
|
-
SingletonProto({
|
|
32
|
-
accessLevel: AccessLevel.PUBLIC,
|
|
33
|
-
})
|
|
34
|
-
], Orm);
|
|
35
|
-
export { Orm };
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZ2xldG9uT1JNLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiU2luZ2xldG9uT1JNLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsTUFBTSxFQUNOLGNBQWMsR0FDZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFNOUMsSUFBTSxHQUFHLEdBQVQsTUFBTSxHQUFHO0lBSWQscUJBQXFCO0lBQ3JCLElBQUksTUFBTTtRQUNSLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdEQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsU0FBUyxDQUFDLFVBQWtCO1FBQzFCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxVQUFVLGFBQWEsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBRSxDQUFDO0lBQ2hFLENBQUM7Q0FFRixDQUFBO0FBaEJTO0lBRFAsTUFBTSxFQUFFOzhCQUNlLGNBQWM7MkNBQUM7QUFGNUIsR0FBRztJQUhmLGNBQWMsQ0FBQztRQUNkLFdBQVcsRUFBRSxXQUFXLENBQUMsTUFBTTtLQUNoQyxDQUFDO0dBQ1csR0FBRyxDQWtCZiJ9
|