@eggjs/core-decorator 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/decorator/ConfigSource.d.ts +1 -0
- package/dist/decorator/ConfigSource.js +8 -0
- package/dist/decorator/ContextProto.d.ts +2 -0
- package/dist/decorator/ContextProto.js +10 -0
- package/dist/decorator/EggQualifier.d.ts +2 -0
- package/dist/decorator/EggQualifier.js +8 -0
- package/dist/decorator/InitTypeQualifier.d.ts +2 -0
- package/dist/decorator/InitTypeQualifier.js +8 -0
- package/dist/decorator/Inject.d.ts +3 -0
- package/dist/decorator/Inject.js +102 -0
- package/dist/decorator/ModuleQualifier.d.ts +1 -0
- package/dist/decorator/ModuleQualifier.js +8 -0
- package/dist/decorator/MultiInstanceInfo.d.ts +2 -0
- package/dist/decorator/MultiInstanceInfo.js +8 -0
- package/dist/decorator/MultiInstanceProto.d.ts +2 -0
- package/dist/decorator/MultiInstanceProto.js +36 -0
- package/dist/decorator/Prototype.d.ts +2 -0
- package/dist/decorator/Prototype.js +29 -0
- package/dist/decorator/SingletonProto.d.ts +2 -0
- package/dist/decorator/SingletonProto.js +10 -0
- package/dist/decorator/index.d.ts +10 -0
- package/dist/decorator/index.js +11 -0
- package/dist/index.d.ts +3 -195
- package/dist/index.js +4 -535
- package/dist/util/MetadataUtil.d.ts +35 -0
- package/dist/util/MetadataUtil.js +83 -0
- package/dist/util/PrototypeUtil.d.ts +108 -0
- package/dist/util/PrototypeUtil.js +249 -0
- package/dist/util/QualifierUtil.d.ts +13 -0
- package/dist/util/QualifierUtil.js +92 -0
- package/dist/util/index.d.ts +3 -0
- package/dist/util/index.js +4 -0
- package/package.json +4 -4
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { type EggMultiInstanceCallbackPrototypeInfo, type EggMultiInstancePrototypeInfo, type EggProtoImplClass, type EggPrototypeInfo, type EggPrototypeName, type InjectConstructorInfo, type InjectObjectInfo, InjectType, type MultiInstancePrototypeGetObjectsContext, MultiInstanceType, type QualifierAttribute } from '@eggjs/tegg-types';
|
|
2
|
+
export declare class PrototypeUtil {
|
|
3
|
+
static readonly IS_EGG_OBJECT_PROTOTYPE: unique symbol;
|
|
4
|
+
static readonly IS_EGG_OBJECT_MULTI_INSTANCE_PROTOTYPE: unique symbol;
|
|
5
|
+
static readonly FILE_PATH: unique symbol;
|
|
6
|
+
static readonly PROTOTYPE_PROPERTY: unique symbol;
|
|
7
|
+
static readonly MULTI_INSTANCE_PROTOTYPE_STATIC_PROPERTY: unique symbol;
|
|
8
|
+
static readonly MULTI_INSTANCE_PROTOTYPE_CALLBACK_PROPERTY: unique symbol;
|
|
9
|
+
static readonly INJECT_OBJECT_NAME_SET: unique symbol;
|
|
10
|
+
static readonly INJECT_TYPE: unique symbol;
|
|
11
|
+
static readonly INJECT_CONSTRUCTOR_NAME_SET: unique symbol;
|
|
12
|
+
static readonly CLAZZ_PROTO: unique symbol;
|
|
13
|
+
static readonly MULTI_INSTANCE_CONSTRUCTOR_INDEX: unique symbol;
|
|
14
|
+
static readonly MULTI_INSTANCE_CONSTRUCTOR_ATTRIBUTES: unique symbol;
|
|
15
|
+
/**
|
|
16
|
+
* Mark class is egg object prototype
|
|
17
|
+
* @param {Function} clazz -
|
|
18
|
+
*/
|
|
19
|
+
static setIsEggPrototype(clazz: EggProtoImplClass): void;
|
|
20
|
+
/**
|
|
21
|
+
* If class is egg object prototype, return true
|
|
22
|
+
* @param {Function} clazz -
|
|
23
|
+
*/
|
|
24
|
+
static isEggPrototype(clazz: EggProtoImplClass): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Mark class is egg object multi instance prototype
|
|
27
|
+
* @param {Function} clazz -
|
|
28
|
+
*/
|
|
29
|
+
static setIsEggMultiInstancePrototype(clazz: EggProtoImplClass): void;
|
|
30
|
+
/**
|
|
31
|
+
* If class is egg object multi instance prototype, return true
|
|
32
|
+
* @param {Function} clazz -
|
|
33
|
+
*/
|
|
34
|
+
static isEggMultiInstancePrototype(clazz: EggProtoImplClass): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Get the type of the egg multi-instance prototype.
|
|
37
|
+
* @param {Function} clazz -
|
|
38
|
+
*/
|
|
39
|
+
static getEggMultiInstancePrototypeType(clazz: EggProtoImplClass): MultiInstanceType | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* set class file path
|
|
42
|
+
* @param {Function} clazz -
|
|
43
|
+
* @param {string} filePath -
|
|
44
|
+
*/
|
|
45
|
+
static setFilePath(clazz: EggProtoImplClass, filePath: string): void;
|
|
46
|
+
/**
|
|
47
|
+
* get class file path
|
|
48
|
+
* @param {Function} clazz -
|
|
49
|
+
*/
|
|
50
|
+
static getFilePath(clazz: EggProtoImplClass): string | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* set class property
|
|
53
|
+
* @param {EggProtoImplClass} clazz -
|
|
54
|
+
* @param {EggPrototypeInfo} property -
|
|
55
|
+
*/
|
|
56
|
+
static setProperty(clazz: EggProtoImplClass, property: EggPrototypeInfo): void;
|
|
57
|
+
/**
|
|
58
|
+
* get class property
|
|
59
|
+
* @param {EggProtoImplClass} clazz -
|
|
60
|
+
* @return {EggPrototypeInfo} -
|
|
61
|
+
*/
|
|
62
|
+
static getProperty(clazz: EggProtoImplClass): EggPrototypeInfo | undefined;
|
|
63
|
+
static getInitType(clazz: EggProtoImplClass, ctx: MultiInstancePrototypeGetObjectsContext): Promise<string | undefined>;
|
|
64
|
+
static getAccessLevel(clazz: EggProtoImplClass, ctx: MultiInstancePrototypeGetObjectsContext): Promise<string | undefined>;
|
|
65
|
+
static getObjNames(clazz: EggProtoImplClass, ctx: MultiInstancePrototypeGetObjectsContext): Promise<EggPrototypeName[]>;
|
|
66
|
+
/**
|
|
67
|
+
* set class property
|
|
68
|
+
* @param {EggProtoImplClass} clazz -
|
|
69
|
+
* @param {EggPrototypeInfo} property -
|
|
70
|
+
*/
|
|
71
|
+
static setMultiInstanceStaticProperty(clazz: EggProtoImplClass, property: EggMultiInstancePrototypeInfo): void;
|
|
72
|
+
/**
|
|
73
|
+
* set class property
|
|
74
|
+
* @param {EggProtoImplClass} clazz -
|
|
75
|
+
* @param {EggPrototypeInfo} property -
|
|
76
|
+
*/
|
|
77
|
+
static setMultiInstanceCallbackProperty(clazz: EggProtoImplClass, property: EggMultiInstanceCallbackPrototypeInfo): void;
|
|
78
|
+
/**
|
|
79
|
+
* Get instance property of Static multi-instance prototype.
|
|
80
|
+
* @param {EggProtoImplClass} clazz -
|
|
81
|
+
*/
|
|
82
|
+
static getStaticMultiInstanceProperty(clazz: EggProtoImplClass): EggMultiInstancePrototypeInfo | undefined;
|
|
83
|
+
/**
|
|
84
|
+
* Get instance property of Dynamic multi-instance prototype.
|
|
85
|
+
* @param {EggProtoImplClass} clazz -
|
|
86
|
+
* @param {MultiInstancePrototypeGetObjectsContext} ctx -
|
|
87
|
+
*/
|
|
88
|
+
static getDynamicMultiInstanceProperty(clazz: EggProtoImplClass, ctx: MultiInstancePrototypeGetObjectsContext): Promise<EggMultiInstancePrototypeInfo | undefined>;
|
|
89
|
+
/**
|
|
90
|
+
* get class property
|
|
91
|
+
* @param {EggProtoImplClass} clazz -
|
|
92
|
+
* @param {MultiInstancePrototypeGetObjectsContext} ctx -
|
|
93
|
+
*/
|
|
94
|
+
static getMultiInstanceProperty(clazz: EggProtoImplClass, ctx: MultiInstancePrototypeGetObjectsContext): Promise<EggMultiInstancePrototypeInfo | undefined>;
|
|
95
|
+
static setMultiInstanceConstructorAttributes(clazz: EggProtoImplClass, attributes: QualifierAttribute[]): void;
|
|
96
|
+
static getMultiInstanceConstructorAttributes(clazz: EggProtoImplClass): QualifierAttribute[];
|
|
97
|
+
static setMultiInstanceConstructorIndex(clazz: EggProtoImplClass, index: number): void;
|
|
98
|
+
static getMultiInstanceConstructorIndex(clazz: EggProtoImplClass): number | undefined;
|
|
99
|
+
static setInjectType(clazz: EggProtoImplClass, type: InjectType): void;
|
|
100
|
+
static addInjectObject(clazz: EggProtoImplClass, injectObject: InjectObjectInfo): void;
|
|
101
|
+
static addInjectConstructor(clazz: EggProtoImplClass, injectConstructorInfo: InjectConstructorInfo): void;
|
|
102
|
+
static getInjectType(clazz: EggProtoImplClass): InjectType | undefined;
|
|
103
|
+
static getInjectObjects(clazz: EggProtoImplClass): Array<InjectObjectInfo | InjectConstructorInfo>;
|
|
104
|
+
static getClazzProto(clazz: EggProtoImplClass): object | undefined;
|
|
105
|
+
static setClazzProto(clazz: EggProtoImplClass, proto: object): void;
|
|
106
|
+
static getDesignType(clazz: EggProtoImplClass, propKey?: PropertyKey): unknown;
|
|
107
|
+
static getDesignParamtypes(clazz: EggProtoImplClass, propKey?: PropertyKey): unknown[];
|
|
108
|
+
}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { InitTypeQualifierAttribute, InjectType, LoadUnitNameQualifierAttribute, MultiInstanceType, } from '@eggjs/tegg-types';
|
|
2
|
+
import { MetadataUtil } from "./MetadataUtil.js";
|
|
3
|
+
export class PrototypeUtil {
|
|
4
|
+
static IS_EGG_OBJECT_PROTOTYPE = Symbol.for('EggPrototype#isEggPrototype');
|
|
5
|
+
static IS_EGG_OBJECT_MULTI_INSTANCE_PROTOTYPE = Symbol.for('EggPrototype#isEggMultiInstancePrototype');
|
|
6
|
+
static FILE_PATH = Symbol.for('EggPrototype.filePath');
|
|
7
|
+
static PROTOTYPE_PROPERTY = Symbol.for('EggPrototype.Property');
|
|
8
|
+
static MULTI_INSTANCE_PROTOTYPE_STATIC_PROPERTY = Symbol.for('EggPrototype.MultiInstanceStaticProperty');
|
|
9
|
+
static MULTI_INSTANCE_PROTOTYPE_CALLBACK_PROPERTY = Symbol.for('EggPrototype.MultiInstanceCallbackProperty');
|
|
10
|
+
static INJECT_OBJECT_NAME_SET = Symbol.for('EggPrototype.injectObjectNames');
|
|
11
|
+
static INJECT_TYPE = Symbol.for('EggPrototype.injectType');
|
|
12
|
+
static INJECT_CONSTRUCTOR_NAME_SET = Symbol.for('EggPrototype.injectConstructorNames');
|
|
13
|
+
static CLAZZ_PROTO = Symbol.for('EggPrototype.clazzProto');
|
|
14
|
+
static MULTI_INSTANCE_CONSTRUCTOR_INDEX = Symbol.for('EggPrototype#multiInstanceConstructorIndex');
|
|
15
|
+
static MULTI_INSTANCE_CONSTRUCTOR_ATTRIBUTES = Symbol.for('EggPrototype#multiInstanceConstructorAttributes');
|
|
16
|
+
/**
|
|
17
|
+
* Mark class is egg object prototype
|
|
18
|
+
* @param {Function} clazz -
|
|
19
|
+
*/
|
|
20
|
+
static setIsEggPrototype(clazz) {
|
|
21
|
+
MetadataUtil.defineMetaData(PrototypeUtil.IS_EGG_OBJECT_PROTOTYPE, true, clazz);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* If class is egg object prototype, return true
|
|
25
|
+
* @param {Function} clazz -
|
|
26
|
+
*/
|
|
27
|
+
static isEggPrototype(clazz) {
|
|
28
|
+
return MetadataUtil.getOwnBooleanMetaData(PrototypeUtil.IS_EGG_OBJECT_PROTOTYPE, clazz);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Mark class is egg object multi instance prototype
|
|
32
|
+
* @param {Function} clazz -
|
|
33
|
+
*/
|
|
34
|
+
static setIsEggMultiInstancePrototype(clazz) {
|
|
35
|
+
MetadataUtil.defineMetaData(PrototypeUtil.IS_EGG_OBJECT_MULTI_INSTANCE_PROTOTYPE, true, clazz);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* If class is egg object multi instance prototype, return true
|
|
39
|
+
* @param {Function} clazz -
|
|
40
|
+
*/
|
|
41
|
+
static isEggMultiInstancePrototype(clazz) {
|
|
42
|
+
return MetadataUtil.getOwnBooleanMetaData(PrototypeUtil.IS_EGG_OBJECT_MULTI_INSTANCE_PROTOTYPE, clazz);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get the type of the egg multi-instance prototype.
|
|
46
|
+
* @param {Function} clazz -
|
|
47
|
+
*/
|
|
48
|
+
static getEggMultiInstancePrototypeType(clazz) {
|
|
49
|
+
if (!PrototypeUtil.isEggMultiInstancePrototype(clazz)) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const metadata = MetadataUtil.getOwnMetaData(PrototypeUtil.MULTI_INSTANCE_PROTOTYPE_STATIC_PROPERTY, clazz);
|
|
53
|
+
if (metadata) {
|
|
54
|
+
return MultiInstanceType.STATIC;
|
|
55
|
+
}
|
|
56
|
+
return MultiInstanceType.DYNAMIC;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* set class file path
|
|
60
|
+
* @param {Function} clazz -
|
|
61
|
+
* @param {string} filePath -
|
|
62
|
+
*/
|
|
63
|
+
static setFilePath(clazz, filePath) {
|
|
64
|
+
MetadataUtil.defineMetaData(PrototypeUtil.FILE_PATH, filePath, clazz);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* get class file path
|
|
68
|
+
* @param {Function} clazz -
|
|
69
|
+
*/
|
|
70
|
+
static getFilePath(clazz) {
|
|
71
|
+
return MetadataUtil.getOwnMetaData(PrototypeUtil.FILE_PATH, clazz);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* set class property
|
|
75
|
+
* @param {EggProtoImplClass} clazz -
|
|
76
|
+
* @param {EggPrototypeInfo} property -
|
|
77
|
+
*/
|
|
78
|
+
static setProperty(clazz, property) {
|
|
79
|
+
MetadataUtil.defineMetaData(PrototypeUtil.PROTOTYPE_PROPERTY, property, clazz);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* get class property
|
|
83
|
+
* @param {EggProtoImplClass} clazz -
|
|
84
|
+
* @return {EggPrototypeInfo} -
|
|
85
|
+
*/
|
|
86
|
+
static getProperty(clazz) {
|
|
87
|
+
return MetadataUtil.getOwnMetaData(PrototypeUtil.PROTOTYPE_PROPERTY, clazz);
|
|
88
|
+
}
|
|
89
|
+
static async getInitType(clazz, ctx) {
|
|
90
|
+
const property = PrototypeUtil.getProperty(clazz) ?? await PrototypeUtil.getMultiInstanceProperty(clazz, ctx);
|
|
91
|
+
return property?.initType;
|
|
92
|
+
}
|
|
93
|
+
static async getAccessLevel(clazz, ctx) {
|
|
94
|
+
const property = PrototypeUtil.getProperty(clazz) ?? await PrototypeUtil.getMultiInstanceProperty(clazz, ctx);
|
|
95
|
+
return property?.accessLevel;
|
|
96
|
+
}
|
|
97
|
+
static async getObjNames(clazz, ctx) {
|
|
98
|
+
const property = PrototypeUtil.getProperty(clazz);
|
|
99
|
+
if (property) {
|
|
100
|
+
return [property.name];
|
|
101
|
+
}
|
|
102
|
+
const multiInstanceProperty = await PrototypeUtil.getMultiInstanceProperty(clazz, ctx);
|
|
103
|
+
return multiInstanceProperty?.objects.map(t => t.name) || [];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* set class property
|
|
107
|
+
* @param {EggProtoImplClass} clazz -
|
|
108
|
+
* @param {EggPrototypeInfo} property -
|
|
109
|
+
*/
|
|
110
|
+
static setMultiInstanceStaticProperty(clazz, property) {
|
|
111
|
+
MetadataUtil.defineMetaData(PrototypeUtil.MULTI_INSTANCE_PROTOTYPE_STATIC_PROPERTY, property, clazz);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* set class property
|
|
115
|
+
* @param {EggProtoImplClass} clazz -
|
|
116
|
+
* @param {EggPrototypeInfo} property -
|
|
117
|
+
*/
|
|
118
|
+
static setMultiInstanceCallbackProperty(clazz, property) {
|
|
119
|
+
MetadataUtil.defineMetaData(PrototypeUtil.MULTI_INSTANCE_PROTOTYPE_CALLBACK_PROPERTY, property, clazz);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get instance property of Static multi-instance prototype.
|
|
123
|
+
* @param {EggProtoImplClass} clazz -
|
|
124
|
+
*/
|
|
125
|
+
static getStaticMultiInstanceProperty(clazz) {
|
|
126
|
+
const metadata = MetadataUtil.getOwnMetaData(PrototypeUtil.MULTI_INSTANCE_PROTOTYPE_STATIC_PROPERTY, clazz);
|
|
127
|
+
if (metadata) {
|
|
128
|
+
return metadata;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get instance property of Dynamic multi-instance prototype.
|
|
133
|
+
* @param {EggProtoImplClass} clazz -
|
|
134
|
+
* @param {MultiInstancePrototypeGetObjectsContext} ctx -
|
|
135
|
+
*/
|
|
136
|
+
static async getDynamicMultiInstanceProperty(clazz, ctx) {
|
|
137
|
+
const callBackMetadata = MetadataUtil.getOwnMetaData(PrototypeUtil.MULTI_INSTANCE_PROTOTYPE_CALLBACK_PROPERTY, clazz);
|
|
138
|
+
if (callBackMetadata) {
|
|
139
|
+
const objects = await callBackMetadata.getObjects(ctx);
|
|
140
|
+
return {
|
|
141
|
+
...callBackMetadata,
|
|
142
|
+
objects,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* get class property
|
|
148
|
+
* @param {EggProtoImplClass} clazz -
|
|
149
|
+
* @param {MultiInstancePrototypeGetObjectsContext} ctx -
|
|
150
|
+
*/
|
|
151
|
+
static async getMultiInstanceProperty(clazz, ctx) {
|
|
152
|
+
const metadata = MetadataUtil.getOwnMetaData(PrototypeUtil.MULTI_INSTANCE_PROTOTYPE_STATIC_PROPERTY, clazz);
|
|
153
|
+
if (metadata) {
|
|
154
|
+
return metadata;
|
|
155
|
+
}
|
|
156
|
+
const callBackMetadata = MetadataUtil.getOwnMetaData(PrototypeUtil.MULTI_INSTANCE_PROTOTYPE_CALLBACK_PROPERTY, clazz);
|
|
157
|
+
if (callBackMetadata) {
|
|
158
|
+
const objects = await callBackMetadata.getObjects(ctx);
|
|
159
|
+
// TODO delete in next major version, default qualifier be added in ProtoDescriptorHelper.addDefaultQualifier
|
|
160
|
+
const defaultQualifier = [{
|
|
161
|
+
attribute: InitTypeQualifierAttribute,
|
|
162
|
+
value: callBackMetadata.initType,
|
|
163
|
+
}, {
|
|
164
|
+
attribute: LoadUnitNameQualifierAttribute,
|
|
165
|
+
value: ctx.moduleName,
|
|
166
|
+
}];
|
|
167
|
+
for (const object of objects) {
|
|
168
|
+
defaultQualifier.forEach(qualifier => {
|
|
169
|
+
if (!object.qualifiers.find(t => t.attribute === qualifier.attribute)) {
|
|
170
|
+
object.qualifiers.push(qualifier);
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
...callBackMetadata,
|
|
176
|
+
objects,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
static setMultiInstanceConstructorAttributes(clazz, attributes) {
|
|
181
|
+
MetadataUtil.defineMetaData(PrototypeUtil.MULTI_INSTANCE_CONSTRUCTOR_ATTRIBUTES, attributes, clazz);
|
|
182
|
+
}
|
|
183
|
+
static getMultiInstanceConstructorAttributes(clazz) {
|
|
184
|
+
return MetadataUtil.getMetaData(PrototypeUtil.MULTI_INSTANCE_CONSTRUCTOR_ATTRIBUTES, clazz) || [];
|
|
185
|
+
}
|
|
186
|
+
static setMultiInstanceConstructorIndex(clazz, index) {
|
|
187
|
+
MetadataUtil.defineMetaData(PrototypeUtil.MULTI_INSTANCE_CONSTRUCTOR_INDEX, index, clazz);
|
|
188
|
+
}
|
|
189
|
+
static getMultiInstanceConstructorIndex(clazz) {
|
|
190
|
+
return MetadataUtil.getMetaData(PrototypeUtil.MULTI_INSTANCE_CONSTRUCTOR_INDEX, clazz);
|
|
191
|
+
}
|
|
192
|
+
static setInjectType(clazz, type) {
|
|
193
|
+
const injectType = MetadataUtil.getMetaData(PrototypeUtil.INJECT_TYPE, clazz);
|
|
194
|
+
if (!injectType) {
|
|
195
|
+
MetadataUtil.defineMetaData(PrototypeUtil.INJECT_TYPE, type, clazz);
|
|
196
|
+
}
|
|
197
|
+
else if (injectType !== type) {
|
|
198
|
+
throw new Error(`class ${clazz.name} already use inject type ${injectType} can not use ${type}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
static addInjectObject(clazz, injectObject) {
|
|
202
|
+
const objs = MetadataUtil.initOwnArrayMetaData(PrototypeUtil.INJECT_OBJECT_NAME_SET, clazz, []);
|
|
203
|
+
objs.push(injectObject);
|
|
204
|
+
MetadataUtil.defineMetaData(PrototypeUtil.INJECT_OBJECT_NAME_SET, objs, clazz);
|
|
205
|
+
}
|
|
206
|
+
static addInjectConstructor(clazz, injectConstructorInfo) {
|
|
207
|
+
const objs = MetadataUtil.initArrayMetaData(PrototypeUtil.INJECT_CONSTRUCTOR_NAME_SET, clazz, []);
|
|
208
|
+
objs.push(injectConstructorInfo);
|
|
209
|
+
MetadataUtil.defineMetaData(PrototypeUtil.INJECT_CONSTRUCTOR_NAME_SET, objs, clazz);
|
|
210
|
+
}
|
|
211
|
+
static getInjectType(clazz) {
|
|
212
|
+
const injectType = MetadataUtil.getMetaData(PrototypeUtil.INJECT_TYPE, clazz);
|
|
213
|
+
return injectType;
|
|
214
|
+
}
|
|
215
|
+
static getInjectObjects(clazz) {
|
|
216
|
+
const injectType = MetadataUtil.getMetaData(PrototypeUtil.INJECT_TYPE, clazz);
|
|
217
|
+
if (!injectType) {
|
|
218
|
+
return [];
|
|
219
|
+
}
|
|
220
|
+
if (injectType === InjectType.CONSTRUCTOR) {
|
|
221
|
+
return MetadataUtil.getArrayMetaData(PrototypeUtil.INJECT_CONSTRUCTOR_NAME_SET, clazz)
|
|
222
|
+
.sort((a, b) => {
|
|
223
|
+
return a.refIndex - b.refIndex;
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
return MetadataUtil.getArrayMetaData(PrototypeUtil.INJECT_OBJECT_NAME_SET, clazz);
|
|
227
|
+
}
|
|
228
|
+
// static getInjectConstructors(clazz: EggProtoImplClass): Array<InjectConstructorInfo> {
|
|
229
|
+
// return MetadataUtil.getArrayMetaData<InjectConstructorInfo>(PrototypeUtil.INJECT_CONSTRUCTOR_NAME_SET, clazz)
|
|
230
|
+
// .sort((a, b) => {
|
|
231
|
+
// return a.refIndex - b.refIndex;
|
|
232
|
+
// });
|
|
233
|
+
// }
|
|
234
|
+
// TODO fix proto type
|
|
235
|
+
static getClazzProto(clazz) {
|
|
236
|
+
return MetadataUtil.getMetaData(PrototypeUtil.CLAZZ_PROTO, clazz);
|
|
237
|
+
}
|
|
238
|
+
// TODO fix proto type
|
|
239
|
+
static setClazzProto(clazz, proto) {
|
|
240
|
+
MetadataUtil.defineMetaData(PrototypeUtil.CLAZZ_PROTO, proto, clazz);
|
|
241
|
+
}
|
|
242
|
+
static getDesignType(clazz, propKey) {
|
|
243
|
+
return MetadataUtil.getMetaData('design:type', clazz, propKey);
|
|
244
|
+
}
|
|
245
|
+
static getDesignParamtypes(clazz, propKey) {
|
|
246
|
+
return MetadataUtil.getMetaData('design:paramtypes', clazz, propKey);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvdG90eXBlVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL1Byb3RvdHlwZVV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtrQiwwQkFBMEIsRUFHakQsVUFBVSxFQUFFLDhCQUE4QixFQUUxQyxpQkFBaUIsR0FFbEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFakQsTUFBTSxPQUFPLGFBQWE7SUFDeEIsTUFBTSxDQUFVLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUNwRixNQUFNLENBQVUsc0NBQXNDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0lBQ2hILE1BQU0sQ0FBVSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sQ0FBVSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDekUsTUFBTSxDQUFVLHdDQUF3QyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMENBQTBDLENBQUMsQ0FBQztJQUNsSCxNQUFNLENBQVUsMENBQTBDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQ3RILE1BQU0sQ0FBVSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDdEYsTUFBTSxDQUFVLFdBQVcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDcEUsTUFBTSxDQUFVLDJCQUEyQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUNoRyxNQUFNLENBQVUsV0FBVyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMseUJB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
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { EggProtoImplClass, QualifierAttribute, QualifierInfo, QualifierValue } from '@eggjs/tegg-types';
|
|
2
|
+
export declare class QualifierUtil {
|
|
3
|
+
static addProtoQualifier(clazz: EggProtoImplClass, attribute: QualifierAttribute, value: QualifierValue): void;
|
|
4
|
+
static getProtoQualifiers(clazz: EggProtoImplClass): QualifierInfo[];
|
|
5
|
+
static addInjectQualifier(clazz: EggProtoImplClass, property: PropertyKey | undefined, parameterIndex: number | undefined, attribute: QualifierAttribute, value: QualifierValue): void;
|
|
6
|
+
static addProperQualifier(clazz: EggProtoImplClass, property: PropertyKey, attribute: QualifierAttribute, value: QualifierValue): void;
|
|
7
|
+
static getProperQualifiers(clazz: EggProtoImplClass, property: PropertyKey): QualifierInfo[];
|
|
8
|
+
static getQualifierValue(clazz: EggProtoImplClass, attribute: QualifierAttribute): QualifierValue | undefined;
|
|
9
|
+
static getProperQualifier(clazz: EggProtoImplClass, property: PropertyKey, attribute: QualifierAttribute): QualifierValue | undefined;
|
|
10
|
+
static matchQualifiers(clazzQualifiers: QualifierInfo[], requestQualifiers: QualifierInfo[]): boolean;
|
|
11
|
+
static equalQualifiers(clazzQualifiers: QualifierInfo[], requestQualifiers: QualifierInfo[]): boolean;
|
|
12
|
+
static mergeQualifiers(...qualifiers: QualifierInfo[][]): QualifierInfo[];
|
|
13
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { MapUtil, ObjectUtils } from '@eggjs/tegg-common-util';
|
|
2
|
+
import { PROPERTY_QUALIFIER_META_DATA, QUALIFIER_META_DATA } from '@eggjs/tegg-types';
|
|
3
|
+
import { MetadataUtil } from "./MetadataUtil.js";
|
|
4
|
+
export class QualifierUtil {
|
|
5
|
+
static addProtoQualifier(clazz, attribute, value) {
|
|
6
|
+
const qualifiers = MetadataUtil.initOwnMapMetaData(QUALIFIER_META_DATA, clazz, new Map());
|
|
7
|
+
qualifiers.set(attribute, value);
|
|
8
|
+
}
|
|
9
|
+
static getProtoQualifiers(clazz) {
|
|
10
|
+
const qualifiers = MetadataUtil.getMetaData(QUALIFIER_META_DATA, clazz);
|
|
11
|
+
if (!qualifiers) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
const res = [];
|
|
15
|
+
for (const [attribute, value] of qualifiers) {
|
|
16
|
+
res.push({
|
|
17
|
+
attribute,
|
|
18
|
+
value,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return res;
|
|
22
|
+
}
|
|
23
|
+
static addInjectQualifier(clazz, property, parameterIndex, attribute, value) {
|
|
24
|
+
if (typeof parameterIndex === 'number') {
|
|
25
|
+
const argNames = ObjectUtils.getConstructorArgNameList(clazz);
|
|
26
|
+
const argName = argNames[parameterIndex];
|
|
27
|
+
QualifierUtil.addProperQualifier(clazz, argName, attribute, value);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
QualifierUtil.addProperQualifier(clazz.constructor, property, attribute, value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
static addProperQualifier(clazz, property, attribute, value) {
|
|
34
|
+
const properQualifiers = MetadataUtil.initOwnMapMetaData(PROPERTY_QUALIFIER_META_DATA, clazz, new Map());
|
|
35
|
+
const qualifiers = MapUtil.getOrStore(properQualifiers, property, new Map());
|
|
36
|
+
qualifiers.set(attribute, value);
|
|
37
|
+
}
|
|
38
|
+
static getProperQualifiers(clazz, property) {
|
|
39
|
+
const properQualifiers = MetadataUtil.getMetaData(PROPERTY_QUALIFIER_META_DATA, clazz);
|
|
40
|
+
const qualifiers = properQualifiers?.get(property);
|
|
41
|
+
if (!qualifiers) {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
const res = [];
|
|
45
|
+
for (const [attribute, value] of qualifiers) {
|
|
46
|
+
res.push({
|
|
47
|
+
attribute,
|
|
48
|
+
value,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return res;
|
|
52
|
+
}
|
|
53
|
+
static getQualifierValue(clazz, attribute) {
|
|
54
|
+
const qualifiers = MetadataUtil.getMetaData(QUALIFIER_META_DATA, clazz);
|
|
55
|
+
return qualifiers?.get(attribute);
|
|
56
|
+
}
|
|
57
|
+
static getProperQualifier(clazz, property, attribute) {
|
|
58
|
+
const properQualifiers = MetadataUtil.getMetaData(PROPERTY_QUALIFIER_META_DATA, clazz);
|
|
59
|
+
const qualifiers = properQualifiers?.get(property);
|
|
60
|
+
return qualifiers?.get(attribute);
|
|
61
|
+
}
|
|
62
|
+
static matchQualifiers(clazzQualifiers, requestQualifiers) {
|
|
63
|
+
for (const request of requestQualifiers) {
|
|
64
|
+
if (!clazzQualifiers.find(t => t.attribute === request.attribute && t.value === request.value)) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
static equalQualifiers(clazzQualifiers, requestQualifiers) {
|
|
71
|
+
if (clazzQualifiers.length !== requestQualifiers.length)
|
|
72
|
+
return false;
|
|
73
|
+
return QualifierUtil.matchQualifiers(clazzQualifiers, requestQualifiers);
|
|
74
|
+
}
|
|
75
|
+
static mergeQualifiers(...qualifiers) {
|
|
76
|
+
const result = [];
|
|
77
|
+
const temp = {};
|
|
78
|
+
for (const qualifierList of qualifiers) {
|
|
79
|
+
for (const { attribute, value } of qualifierList) {
|
|
80
|
+
temp[attribute] = value;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
for (const key of Reflect.ownKeys(temp)) {
|
|
84
|
+
result.push({
|
|
85
|
+
attribute: key,
|
|
86
|
+
value: temp[key],
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVhbGlmaWVyVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL1F1YWxpZmllclV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUd0RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFakQsTUFBTSxPQUFPLGFBQWE7SUFDeEIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQXdCLEVBQUUsU0FBNkIsRUFBRSxLQUFxQjtRQUNyRyxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFzQyxDQUFDLENBQUM7UUFDOUgsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUF3QjtRQUNoRCxNQUFNLFVBQVUsR0FBd0QsWUFBWSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3SCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQW9CLEVBQUUsQ0FBQztRQUNoQyxLQUFLLE1BQU0sQ0FBRSxTQUFTLEVBQUUsS0FBSyxDQUFFLElBQUksVUFBVSxFQUFFLENBQUM7WUFDOUMsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFDUCxTQUFTO2dCQUNULEtBQUs7YUFDTixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQXdCLEVB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
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from "./MetadataUtil.js";
|
|
2
|
+
export * from "./PrototypeUtil.js";
|
|
3
|
+
export * from "./QualifierUtil.js";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxvQkFBb0IsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/core-decorator",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.9",
|
|
4
4
|
"description": "tegg core decorator",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"egg",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"access": "public"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@eggjs/tegg-common-util": "4.0.0-beta.
|
|
38
|
-
"@eggjs/tegg-types": "4.0.0-beta.
|
|
37
|
+
"@eggjs/tegg-common-util": "4.0.0-beta.9",
|
|
38
|
+
"@eggjs/tegg-types": "4.0.0-beta.9"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/node": "^22.10.5",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"types": "./dist/index.d.ts",
|
|
49
49
|
"scripts": {
|
|
50
50
|
"clean": "rimraf dist",
|
|
51
|
-
"build": "tsdown",
|
|
51
|
+
"build": "tsdown && rimraf dist && tsc -b --clean && tsc",
|
|
52
52
|
"typecheck": "tsc --noEmit"
|
|
53
53
|
}
|
|
54
54
|
}
|