@eggjs/tegg-orm-plugin 4.0.0-beta.8 → 4.0.0-beta.9
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/dist/app.d.ts +22 -7
- package/dist/app.js +46 -11
- package/dist/config/config.default.d.ts +11 -14
- package/dist/config/config.default.js +4 -5
- package/dist/index.d.ts +4 -8
- package/dist/index.js +5 -12
- package/dist/lib/DataSourceManager.d.ts +20 -2
- package/dist/lib/DataSourceManager.js +21 -3
- package/dist/lib/LeoricRegister.d.ts +16 -5
- package/dist/lib/LeoricRegister.js +82 -5
- package/dist/lib/ModelProtoHook.d.ts +7 -11
- package/dist/lib/ModelProtoHook.js +19 -4
- package/dist/lib/ModelProtoManager.d.ts +11 -2
- package/dist/lib/ModelProtoManager.js +14 -3
- package/dist/lib/ORMLoadUnitHook.d.ts +4 -8
- package/dist/lib/ORMLoadUnitHook.js +19 -7
- package/dist/lib/SingletonModelObject.d.ts +18 -22
- package/dist/lib/SingletonModelObject.js +50 -4
- package/dist/lib/SingletonModelProto.d.ts +23 -2
- package/dist/lib/SingletonModelProto.js +42 -3
- package/dist/lib/SingletonORM.d.ts +6 -3
- package/dist/lib/SingletonORM.js +36 -6
- package/dist/lib/types.d.ts +3 -2
- package/dist/lib/types.js +2 -3
- package/dist/types.d.ts +7 -7
- package/dist/types.js +4 -12
- package/package.json +11 -11
- package/dist/DataSourceManager-CyKZLZ5P.d.ts +0 -23
- package/dist/DataSourceManager-D8WpEJAL.js +0 -22
- package/dist/LeoricRegister-BYtIlnjj.d.ts +0 -20
- package/dist/LeoricRegister-D5XVCPFb.js +0 -67
- package/dist/ModelProtoHook-DUljMCzr.js +0 -19
- package/dist/ModelProtoManager-DNpjSdgO.d.ts +0 -15
- package/dist/ModelProtoManager-L7fRU1sn.js +0 -21
- package/dist/ORMLoadUnitHook-BVBniFwv.js +0 -17
- package/dist/SingletonModelObject-BUrJjvMq.js +0 -48
- package/dist/SingletonModelProto-CffXdtt4.d.ts +0 -27
- package/dist/SingletonModelProto-DM-war1a.js +0 -41
- package/dist/SingletonORM-CPBngV28.js +0 -36
- package/dist/SingletonORM-Qo7APzul.d.ts +0 -10
- package/dist/app-CZucRSDc.d.ts +0 -26
- package/dist/app-Dyi1e0rC.js +0 -43
- package/dist/types-AcnzDaZv.d.ts +0 -8
- package/dist/types-CLh7lniX.js +0 -4
- package/dist/types-dLxBJ-zQ.d.ts +0 -7
package/dist/app.d.ts
CHANGED
|
@@ -1,7 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { Application } from 'egg';
|
|
2
|
+
import { Orm } from './lib/SingletonORM.ts';
|
|
3
|
+
import { LeoricRegister } from './lib/LeoricRegister.ts';
|
|
4
|
+
export default class OrmAppBootHook {
|
|
5
|
+
private readonly app;
|
|
6
|
+
private readonly dataSourceManager;
|
|
7
|
+
private readonly leoricRegister;
|
|
8
|
+
private readonly modelProtoManager;
|
|
9
|
+
private readonly modelProtoHook;
|
|
10
|
+
private readonly ormLoadUnitHook;
|
|
11
|
+
constructor(app: Application);
|
|
12
|
+
configWillLoad(): void;
|
|
13
|
+
configDidLoad(): void;
|
|
14
|
+
didLoad(): Promise<void>;
|
|
15
|
+
beforeClose(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
declare module 'egg' {
|
|
18
|
+
interface Application {
|
|
19
|
+
leoricRegister: LeoricRegister;
|
|
20
|
+
orm: Orm;
|
|
21
|
+
}
|
|
22
|
+
}
|
package/dist/app.js
CHANGED
|
@@ -1,11 +1,46 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import "./
|
|
4
|
-
import "./
|
|
5
|
-
import "./
|
|
6
|
-
import "./
|
|
7
|
-
import "./
|
|
8
|
-
import "./
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
export
|
|
1
|
+
import { Application } from 'egg';
|
|
2
|
+
import { MODEL_PROTO_IMPL_TYPE } from '@eggjs/tegg-orm-decorator';
|
|
3
|
+
import { Orm } from "./lib/SingletonORM.js";
|
|
4
|
+
import { DataSourceManager } from "./lib/DataSourceManager.js";
|
|
5
|
+
import { LeoricRegister } from "./lib/LeoricRegister.js";
|
|
6
|
+
import { ModelProtoManager } from "./lib/ModelProtoManager.js";
|
|
7
|
+
import { ModelProtoHook } from "./lib/ModelProtoHook.js";
|
|
8
|
+
import SingletonModelProto from "./lib/SingletonModelProto.js";
|
|
9
|
+
import { SingletonModelObject } from "./lib/SingletonModelObject.js";
|
|
10
|
+
import { ORMLoadUnitHook } from "./lib/ORMLoadUnitHook.js";
|
|
11
|
+
export default class OrmAppBootHook {
|
|
12
|
+
constructor(app) {
|
|
13
|
+
this.app = app;
|
|
14
|
+
this.dataSourceManager = new DataSourceManager();
|
|
15
|
+
this.modelProtoManager = new ModelProtoManager();
|
|
16
|
+
this.leoricRegister = new LeoricRegister(this.modelProtoManager, this.dataSourceManager);
|
|
17
|
+
this.modelProtoHook = new ModelProtoHook(this.modelProtoManager);
|
|
18
|
+
this.app.eggPrototypeCreatorFactory.registerPrototypeCreator(MODEL_PROTO_IMPL_TYPE, SingletonModelProto.createProto);
|
|
19
|
+
this.app.leoricRegister = this.leoricRegister;
|
|
20
|
+
this.ormLoadUnitHook = new ORMLoadUnitHook();
|
|
21
|
+
}
|
|
22
|
+
configWillLoad() {
|
|
23
|
+
this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.modelProtoHook);
|
|
24
|
+
this.app.eggObjectFactory.registerEggObjectCreateMethod(SingletonModelProto, SingletonModelObject.createObject);
|
|
25
|
+
this.app.loadUnitLifecycleUtil.registerLifecycle(this.ormLoadUnitHook);
|
|
26
|
+
}
|
|
27
|
+
configDidLoad() {
|
|
28
|
+
const config = this.app.config.orm;
|
|
29
|
+
if (config.datasources) {
|
|
30
|
+
for (const datasource of config.datasources) {
|
|
31
|
+
this.dataSourceManager.addConfig(datasource);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this.dataSourceManager.addDefaultConfig(config);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async didLoad() {
|
|
39
|
+
await this.app.moduleHandler.ready();
|
|
40
|
+
await this.leoricRegister.register();
|
|
41
|
+
}
|
|
42
|
+
async beforeClose() {
|
|
43
|
+
this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.modelProtoHook);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sbUJBQW1CLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE1BQU0sQ0FBQyxPQUFPLE9BQU8sY0FBYztJQVFqQyxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyx3QkFBd0IsQ0FBQyxxQkFBcUIsRUFBRSxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNySCxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzlDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsNkJBQTZCLENBQUMsbUJBQW1CLEVBQUUsb0JBQW9CLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDbkMsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkIsS0FBSyxNQUFNLFVBQVUsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVc7UUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDMUUsQ0FBQztDQUNGIn0=
|
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
import { OrmConfig } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
interface AppOrmConfig extends OrmConfig {
|
|
5
|
-
datasources?: OrmConfig[];
|
|
1
|
+
import type { OrmConfig } from '../lib/DataSourceManager.ts';
|
|
2
|
+
export interface AppOrmConfig extends OrmConfig {
|
|
3
|
+
datasources?: OrmConfig[];
|
|
6
4
|
}
|
|
7
5
|
declare const _default: {
|
|
8
|
-
|
|
6
|
+
orm: AppOrmConfig;
|
|
9
7
|
};
|
|
8
|
+
export default _default;
|
|
10
9
|
declare module 'egg' {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
interface EggAppConfig {
|
|
11
|
+
/**
|
|
12
|
+
* orm config
|
|
13
|
+
*/
|
|
14
|
+
orm: AppOrmConfig;
|
|
15
|
+
}
|
|
17
16
|
}
|
|
18
|
-
//#endregion
|
|
19
|
-
export { AppOrmConfig, _default as default };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
//#
|
|
5
|
-
export { config_default_default as default };
|
|
1
|
+
export default {
|
|
2
|
+
orm: {},
|
|
3
|
+
};
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLGVBQWU7SUFDYixHQUFHLEVBQUUsRUFBa0I7Q0FDeEIsQ0FBQyJ9
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
import { LeoricRegister } from "./LeoricRegister-BYtIlnjj.js";
|
|
6
|
-
import "./app-CZucRSDc.js";
|
|
7
|
-
import "./types-AcnzDaZv.js";
|
|
8
|
-
export { LeoricRegister, Orm };
|
|
1
|
+
import './types.ts';
|
|
2
|
+
import { LeoricRegister } from './lib/LeoricRegister.ts';
|
|
3
|
+
import { Orm } from './lib/SingletonORM.ts';
|
|
4
|
+
export { Orm, LeoricRegister };
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import "./SingletonModelProto-DM-war1a.js";
|
|
7
|
-
import "./SingletonModelObject-BUrJjvMq.js";
|
|
8
|
-
import "./ORMLoadUnitHook-BVBniFwv.js";
|
|
9
|
-
import "./app-Dyi1e0rC.js";
|
|
10
|
-
import "./types-CLh7lniX.js";
|
|
11
|
-
|
|
12
|
-
export { LeoricRegister, Orm };
|
|
1
|
+
import "./types.js";
|
|
2
|
+
import { LeoricRegister } from "./lib/LeoricRegister.js";
|
|
3
|
+
import { Orm } from "./lib/SingletonORM.js";
|
|
4
|
+
export { Orm, LeoricRegister };
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLENBQUM7QUFFcEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxDQUFDIn0=
|
|
@@ -1,2 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
+
}
|
|
@@ -1,3 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVNvdXJjZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0RhdGFTb3VyY2VNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThCQSxNQUFNLE9BQU8saUJBQWlCO0lBSTVCO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBaUI7UUFDaEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQztJQUN4QyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUM7SUFDdEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFpQjtRQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBWTtRQUNwQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUM7UUFDdEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDL0QsQ0FBQztDQUNGIn0=
|
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
|
|
1
|
+
import { Base } from 'sdk-base';
|
|
2
|
+
import { ModelMetadata } from '@eggjs/tegg-orm-decorator';
|
|
3
|
+
import { ModelProtoManager } from './ModelProtoManager.ts';
|
|
4
|
+
import { DataSourceManager, type OrmConfig } from './DataSourceManager.ts';
|
|
5
|
+
import type { RealmType } from './types.ts';
|
|
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;
|
|
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
|
+
}
|
|
@@ -1,5 +1,82 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { Base } from 'sdk-base';
|
|
2
|
+
import Realm from 'leoric';
|
|
3
|
+
import { ModelMetadata, ModelMetadataUtil } from '@eggjs/tegg-orm-decorator';
|
|
4
|
+
import { ModelProtoManager } from "./ModelProtoManager.js";
|
|
5
|
+
import { DataSourceManager } from "./DataSourceManager.js";
|
|
6
|
+
export class LeoricRegister extends Base {
|
|
7
|
+
constructor(modelProtoManager, dataSourceManager) {
|
|
8
|
+
super();
|
|
9
|
+
this.modelProtoManager = modelProtoManager;
|
|
10
|
+
this.dataSourceManager = dataSourceManager;
|
|
11
|
+
this.realmMap = new Map();
|
|
12
|
+
}
|
|
13
|
+
getConfig(datasource) {
|
|
14
|
+
let config;
|
|
15
|
+
if (!datasource) {
|
|
16
|
+
config = this.dataSourceManager.getDefaultConfig();
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
config = this.dataSourceManager.getConfig(datasource);
|
|
20
|
+
}
|
|
21
|
+
return config;
|
|
22
|
+
}
|
|
23
|
+
getRealm(config) {
|
|
24
|
+
if (!config?.database) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
const realm = this.realmMap.get(config.database);
|
|
28
|
+
return realm;
|
|
29
|
+
}
|
|
30
|
+
getOrCreateRealm(datasource) {
|
|
31
|
+
const config = this.getConfig(datasource);
|
|
32
|
+
let realm;
|
|
33
|
+
if (config) {
|
|
34
|
+
realm = this.getRealm(config);
|
|
35
|
+
if (realm) {
|
|
36
|
+
return realm;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
realm = new Realm({ ...config });
|
|
40
|
+
this.realmMap.set(config.database, realm);
|
|
41
|
+
return realm;
|
|
42
|
+
}
|
|
43
|
+
generateLeoricAttributes(metadata) {
|
|
44
|
+
const attributes = {};
|
|
45
|
+
for (const attribute of metadata.attributes) {
|
|
46
|
+
attributes[attribute.propertyName] = {
|
|
47
|
+
columnName: attribute.attributeName,
|
|
48
|
+
type: attribute.dataType,
|
|
49
|
+
allowNull: attribute.allowNull,
|
|
50
|
+
primaryKey: attribute.primary,
|
|
51
|
+
unique: attribute.unique,
|
|
52
|
+
autoIncrement: attribute.autoIncrement,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return attributes;
|
|
56
|
+
}
|
|
57
|
+
async register() {
|
|
58
|
+
for (const { proto, clazz } of this.modelProtoManager.getProtos()) {
|
|
59
|
+
const metadata = ModelMetadataUtil.getModelMetadata(clazz);
|
|
60
|
+
if (!metadata)
|
|
61
|
+
throw new Error(`not found metadata for model ${proto.id}`);
|
|
62
|
+
const realm = this.getOrCreateRealm(metadata.dataSource);
|
|
63
|
+
realm.models[clazz.name] = clazz;
|
|
64
|
+
realm[clazz.name] = clazz;
|
|
65
|
+
const attributes = this.generateLeoricAttributes(metadata);
|
|
66
|
+
const hooks = {};
|
|
67
|
+
for (const hookName of Realm.hookNames) {
|
|
68
|
+
if (clazz[hookName]) {
|
|
69
|
+
hooks[hookName] = clazz[hookName];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
clazz.init(attributes, {
|
|
73
|
+
tableName: metadata.tableName,
|
|
74
|
+
hooks,
|
|
75
|
+
}, {});
|
|
76
|
+
}
|
|
77
|
+
await Promise.all(Array.from(this.realmMap.values())
|
|
78
|
+
.map(realm => realm.connect()));
|
|
79
|
+
this.ready(true);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVvcmljUmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0xlb3JpY1JlZ2lzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxLQUFLLE1BQU0sUUFBUSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWtCLE1BQU0sd0JBQXdCLENBQUM7QUFHM0UsTUFBTSxPQUFPLGNBQWUsU0FBUSxJQUFJO0lBS3RDLFlBQVksaUJBQW9DLEVBQUUsaUJBQW9DO1FBQ3BGLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFNBQVMsQ0FBQyxVQUFtQjtRQUMzQixJQUFJLE1BQTZCLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQTZCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDdEIsT0FBTyxTQUFTLENBQUM7UUFD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
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
constructor(modelProtoManager: ModelProtoManager);
|
|
9
|
-
postCreate(ctx: EggPrototypeLifecycleContext, obj: EggPrototype): Promise<void>;
|
|
1
|
+
import { type LifecycleHook } from '@eggjs/tegg';
|
|
2
|
+
import { type EggPrototype, type EggPrototypeLifecycleContext } from '@eggjs/tegg-metadata';
|
|
3
|
+
import { ModelProtoManager } from './ModelProtoManager.ts';
|
|
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>;
|
|
10
8
|
}
|
|
11
|
-
//#endregion
|
|
12
|
-
export { ModelProtoHook };
|
|
@@ -1,4 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import {} from '@eggjs/tegg';
|
|
2
|
+
import {} from '@eggjs/tegg-metadata';
|
|
3
|
+
import { IS_MODEL, ModelMetaBuilder, ModelMetadataUtil } from '@eggjs/tegg-orm-decorator';
|
|
4
|
+
import { ModelProtoManager } from "./ModelProtoManager.js";
|
|
5
|
+
export class ModelProtoHook {
|
|
6
|
+
constructor(modelProtoManager) {
|
|
7
|
+
this.modelProtoManager = modelProtoManager;
|
|
8
|
+
}
|
|
9
|
+
async postCreate(ctx, obj) {
|
|
10
|
+
if (!obj.getMetaData(IS_MODEL)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const builder = new ModelMetaBuilder(ctx.clazz);
|
|
14
|
+
const metadata = builder.build();
|
|
15
|
+
ModelMetadataUtil.setModelMetadata(ctx.clazz, metadata);
|
|
16
|
+
this.modelProtoManager.addProto(ctx.clazz, obj);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxQcm90b0hvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL01vZGVsUHJvdG9Ib29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0IsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUF3RCxNQUFNLHNCQUFzQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUFZLGlCQUFvQztRQUM5QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBaUMsRUFBRSxHQUFpQjtRQUNuRSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDRiJ9
|
|
@@ -1,2 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { type EggPrototype } from '@eggjs/tegg-metadata';
|
|
2
|
+
import { type 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
|
+
}
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export
|
|
1
|
+
import {} from '@eggjs/tegg-metadata';
|
|
2
|
+
import {} from '@eggjs/tegg';
|
|
3
|
+
export class ModelProtoManager {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.protos = [];
|
|
6
|
+
}
|
|
7
|
+
addProto(clazz, proto) {
|
|
8
|
+
this.protos.push({ proto, clazz });
|
|
9
|
+
}
|
|
10
|
+
getProtos() {
|
|
11
|
+
return this.protos.slice();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxQcm90b01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL01vZGVsUHJvdG9NYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQTBCLE1BQU0sYUFBYSxDQUFDO0FBT3JELE1BQU0sT0FBTyxpQkFBaUI7SUFBOUI7UUFDbUIsV0FBTSxHQUEwQixFQUFFLENBQUM7SUFTdEQsQ0FBQztJQVBDLFFBQVEsQ0FBQyxLQUF3QixFQUFFLEtBQW1CO1FBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUNGIn0=
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import { LifecycleHook } from
|
|
2
|
-
import { LoadUnit, LoadUnitLifecycleContext } from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
declare class ORMLoadUnitHook implements LifecycleHook<LoadUnitLifecycleContext, LoadUnit> {
|
|
6
|
-
postCreate(_ctx: LoadUnitLifecycleContext, loadUnit: LoadUnit): Promise<void>;
|
|
1
|
+
import { type LifecycleHook } from '@eggjs/tegg';
|
|
2
|
+
import { type LoadUnit, type LoadUnitLifecycleContext } from '@eggjs/tegg-metadata';
|
|
3
|
+
export declare class ORMLoadUnitHook implements LifecycleHook<LoadUnitLifecycleContext, LoadUnit> {
|
|
4
|
+
postCreate(_ctx: LoadUnitLifecycleContext, loadUnit: LoadUnit): Promise<void>;
|
|
7
5
|
}
|
|
8
|
-
//#endregion
|
|
9
|
-
export { ORMLoadUnitHook };
|
|
@@ -1,7 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import "
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export
|
|
1
|
+
import {} from '@eggjs/tegg';
|
|
2
|
+
import { EggLoadUnitType, EggPrototypeCreatorFactory, EggPrototypeFactory, } from '@eggjs/tegg-metadata';
|
|
3
|
+
import { Orm } from "./SingletonORM.js";
|
|
4
|
+
const REGISTER_CLAZZ = [
|
|
5
|
+
Orm,
|
|
6
|
+
];
|
|
7
|
+
export class ORMLoadUnitHook {
|
|
8
|
+
async postCreate(_ctx, loadUnit) {
|
|
9
|
+
if (loadUnit.type === EggLoadUnitType.APP) {
|
|
10
|
+
for (const clazz of REGISTER_CLAZZ) {
|
|
11
|
+
const protos = await EggPrototypeCreatorFactory.createProto(clazz, loadUnit);
|
|
12
|
+
for (const proto of protos) {
|
|
13
|
+
EggPrototypeFactory.instance.registerPrototype(proto, loadUnit);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT1JNTG9hZFVuaXRIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9PUk1Mb2FkVW5pdEhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixNQUFNLGFBQWEsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsZUFBZSxFQUNmLDBCQUEwQixFQUMxQixtQkFBbUIsR0FHcEIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEMsTUFBTSxjQUFjLEdBQUc7SUFDckIsR0FBRztDQUNKLENBQUM7QUFFRixNQUFNLE9BQU8sZUFBZTtJQUMxQixLQUFLLENBQUMsVUFBVSxDQUFDLElBQThCLEVBQUUsUUFBa0I7UUFDakUsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMxQyxLQUFLLE1BQU0sS0FBSyxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQyxNQUFNLE1BQU0sR0FBRyxNQUFNLDBCQUEwQixDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzdFLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQzNCLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ2xFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
|
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
get obj(): typeof Bone;
|
|
20
|
-
static createObject(name: EggObjectName, proto: EggPrototype): Promise<SingletonModelObject>;
|
|
1
|
+
import { type EggObject } from '@eggjs/tegg-runtime';
|
|
2
|
+
import { type EggPrototype } from '@eggjs/tegg-metadata';
|
|
3
|
+
import { type EggPrototypeName, type EggObjectName } from '@eggjs/tegg';
|
|
4
|
+
import { type Id } from '@eggjs/tegg-lifecycle';
|
|
5
|
+
import { Bone } from 'leoric';
|
|
6
|
+
import SingletonModelProto from './SingletonModelProto.ts';
|
|
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>;
|
|
21
19
|
}
|
|
22
|
-
//#endregion
|
|
23
|
-
export { SingletonModelObject };
|
|
@@ -1,4 +1,50 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { ContextHandler, EggObjectStatus, } from '@eggjs/tegg-runtime';
|
|
2
|
+
import {} from '@eggjs/tegg-metadata';
|
|
3
|
+
import {} from '@eggjs/tegg';
|
|
4
|
+
import { IdenticalUtil } from '@eggjs/tegg-lifecycle';
|
|
5
|
+
import { Bone } from 'leoric';
|
|
6
|
+
import { EGG_CONTEXT } from '@eggjs/egg-module-common';
|
|
7
|
+
import SingletonModelProto from "./SingletonModelProto.js";
|
|
8
|
+
export class SingletonModelObject {
|
|
9
|
+
constructor(name, proto) {
|
|
10
|
+
this.status = EggObjectStatus.PENDING;
|
|
11
|
+
this.name = name;
|
|
12
|
+
this.proto = proto;
|
|
13
|
+
this.id = IdenticalUtil.createObjectId(this.proto.id);
|
|
14
|
+
}
|
|
15
|
+
async init() {
|
|
16
|
+
const clazz = class ContextModelClass extends this.proto.model {
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
18
|
+
// @ts-ignore
|
|
19
|
+
static get name() {
|
|
20
|
+
return super.name;
|
|
21
|
+
}
|
|
22
|
+
static get ctx() {
|
|
23
|
+
const ctx = ContextHandler.getContext();
|
|
24
|
+
if (ctx) {
|
|
25
|
+
return ctx.get(EGG_CONTEXT);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
get ctx() {
|
|
29
|
+
return ContextModelClass.ctx;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
this._obj = clazz;
|
|
33
|
+
this.status = EggObjectStatus.READY;
|
|
34
|
+
}
|
|
35
|
+
injectProperty() {
|
|
36
|
+
throw new Error('never call ModelObject#injectProperty');
|
|
37
|
+
}
|
|
38
|
+
get isReady() {
|
|
39
|
+
return this.status === EggObjectStatus.READY;
|
|
40
|
+
}
|
|
41
|
+
get obj() {
|
|
42
|
+
return this._obj;
|
|
43
|
+
}
|
|
44
|
+
static async createObject(name, proto) {
|
|
45
|
+
const modelObject = new SingletonModelObject(name, proto);
|
|
46
|
+
await modelObject.init();
|
|
47
|
+
return modelObject;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZ2xldG9uTW9kZWxPYmplY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL1NpbmdsZXRvbk1vZGVsT2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBRWQsZUFBZSxHQUNoQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQTZDLE1BQU0sYUFBYSxDQUFDO0FBQ3hFLE9BQU8sRUFBVyxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RCxPQUFPLG1CQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBRTNELE1BQU0sT0FBTyxvQkFBb0I7SUFPL0IsWUFBWSxJQUFtQixFQUFFLEtBQTBCO1FBTm5ELFdBQU0sR0FBb0IsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQU94RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLEtBQUssR0FBRyxNQUFNLGlCQUFrQixTQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztZQUM1RCw2REFBNkQ7WUFDN0QsYUFBYTtZQUNiLE1BQU0sS0FBSyxJQUFJO2dCQUNiLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQztZQUNwQixDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUc7Z0JBQ1osTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNSLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDOUIsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLEdBQUc7Z0JBQ0wsT0FBTyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7WUFDL0IsQ0FBQztTQUVGLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsS0FBSyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQW1CLEVBQUUsS0FBbUI7UUFDaEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsS0FBNEIsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7Q0FDRiJ9
|
|
@@ -1,2 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { type EggPrototype, type LoadUnit, type EggPrototypeLifecycleContext, type InjectObjectProto, type InjectConstructorProto } from '@eggjs/tegg-metadata';
|
|
2
|
+
import { AccessLevel, type EggPrototypeName, ObjectInitType, type QualifierInfo, type MetaDataKey, type QualifierAttribute, type QualifierValue } from '@eggjs/tegg';
|
|
3
|
+
import { type 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: (InjectObjectProto | InjectConstructorProto)[];
|
|
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
|
+
}
|