@eggjs/core-decorator 4.0.0-beta.8 → 4.0.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,112 @@
1
+ import { EggMultiInstanceCallbackPrototypeInfo, EggMultiInstancePrototypeInfo, EggProtoImplClass, EggPrototypeInfo, EggPrototypeName, InjectConstructorInfo, InjectObjectInfo, InjectType, MultiInstancePrototypeGetObjectsContext, MultiInstanceType, QualifierAttribute } from "@eggjs/tegg-types";
2
+
3
+ //#region src/util/PrototypeUtil.d.ts
4
+ declare class PrototypeUtil {
5
+ static readonly IS_EGG_OBJECT_PROTOTYPE: symbol;
6
+ static readonly IS_EGG_OBJECT_MULTI_INSTANCE_PROTOTYPE: symbol;
7
+ static readonly FILE_PATH: symbol;
8
+ static readonly PROTOTYPE_PROPERTY: symbol;
9
+ static readonly MULTI_INSTANCE_PROTOTYPE_STATIC_PROPERTY: symbol;
10
+ static readonly MULTI_INSTANCE_PROTOTYPE_CALLBACK_PROPERTY: symbol;
11
+ static readonly INJECT_OBJECT_NAME_SET: symbol;
12
+ static readonly INJECT_TYPE: symbol;
13
+ static readonly INJECT_CONSTRUCTOR_NAME_SET: symbol;
14
+ static readonly CLAZZ_PROTO: symbol;
15
+ static readonly MULTI_INSTANCE_CONSTRUCTOR_INDEX: symbol;
16
+ static readonly MULTI_INSTANCE_CONSTRUCTOR_ATTRIBUTES: symbol;
17
+ /**
18
+ * Mark class is egg object prototype
19
+ * @param {Function} clazz -
20
+ */
21
+ static setIsEggPrototype(clazz: EggProtoImplClass): void;
22
+ /**
23
+ * If class is egg object prototype, return true
24
+ * @param {Function} clazz -
25
+ */
26
+ static isEggPrototype(clazz: EggProtoImplClass): boolean;
27
+ /**
28
+ * Mark class is egg object multi instance prototype
29
+ * @param {Function} clazz -
30
+ */
31
+ static setIsEggMultiInstancePrototype(clazz: EggProtoImplClass): void;
32
+ /**
33
+ * If class is egg object multi instance prototype, return true
34
+ * @param {Function} clazz -
35
+ */
36
+ static isEggMultiInstancePrototype(clazz: EggProtoImplClass): boolean;
37
+ /**
38
+ * Get the type of the egg multi-instance prototype.
39
+ * @param {Function} clazz -
40
+ */
41
+ static getEggMultiInstancePrototypeType(clazz: EggProtoImplClass): MultiInstanceType | undefined;
42
+ /**
43
+ * set class file path
44
+ * @param {Function} clazz -
45
+ * @param {string} filePath -
46
+ */
47
+ static setFilePath(clazz: EggProtoImplClass, filePath: string): void;
48
+ /**
49
+ * get class file path
50
+ * @param {Function} clazz -
51
+ */
52
+ static getFilePath(clazz: EggProtoImplClass): string | undefined;
53
+ /**
54
+ * set class property
55
+ * @param {EggProtoImplClass} clazz -
56
+ * @param {EggPrototypeInfo} property -
57
+ */
58
+ static setProperty(clazz: EggProtoImplClass, property: EggPrototypeInfo): void;
59
+ /**
60
+ * get class property
61
+ * @param {EggProtoImplClass} clazz -
62
+ * @return {EggPrototypeInfo} -
63
+ */
64
+ static getProperty(clazz: EggProtoImplClass): EggPrototypeInfo | undefined;
65
+ static getInitType(clazz: EggProtoImplClass, ctx: MultiInstancePrototypeGetObjectsContext): Promise<string | undefined>;
66
+ static getAccessLevel(clazz: EggProtoImplClass, ctx: MultiInstancePrototypeGetObjectsContext): Promise<string | undefined>;
67
+ static getObjNames(clazz: EggProtoImplClass, ctx: MultiInstancePrototypeGetObjectsContext): Promise<EggPrototypeName[]>;
68
+ /**
69
+ * set class property
70
+ * @param {EggProtoImplClass} clazz -
71
+ * @param {EggPrototypeInfo} property -
72
+ */
73
+ static setMultiInstanceStaticProperty(clazz: EggProtoImplClass, property: EggMultiInstancePrototypeInfo): void;
74
+ /**
75
+ * set class property
76
+ * @param {EggProtoImplClass} clazz -
77
+ * @param {EggPrototypeInfo} property -
78
+ */
79
+ static setMultiInstanceCallbackProperty(clazz: EggProtoImplClass, property: EggMultiInstanceCallbackPrototypeInfo): void;
80
+ /**
81
+ * Get instance property of Static multi-instance prototype.
82
+ * @param {EggProtoImplClass} clazz -
83
+ */
84
+ static getStaticMultiInstanceProperty(clazz: EggProtoImplClass): EggMultiInstancePrototypeInfo | undefined;
85
+ /**
86
+ * Get instance property of Dynamic multi-instance prototype.
87
+ * @param {EggProtoImplClass} clazz -
88
+ * @param {MultiInstancePrototypeGetObjectsContext} ctx -
89
+ */
90
+ static getDynamicMultiInstanceProperty(clazz: EggProtoImplClass, ctx: MultiInstancePrototypeGetObjectsContext): Promise<EggMultiInstancePrototypeInfo | undefined>;
91
+ /**
92
+ * get class property
93
+ * @param {EggProtoImplClass} clazz -
94
+ * @param {MultiInstancePrototypeGetObjectsContext} ctx -
95
+ */
96
+ static getMultiInstanceProperty(clazz: EggProtoImplClass, ctx: MultiInstancePrototypeGetObjectsContext): Promise<EggMultiInstancePrototypeInfo | undefined>;
97
+ static setMultiInstanceConstructorAttributes(clazz: EggProtoImplClass, attributes: QualifierAttribute[]): void;
98
+ static getMultiInstanceConstructorAttributes(clazz: EggProtoImplClass): QualifierAttribute[];
99
+ static setMultiInstanceConstructorIndex(clazz: EggProtoImplClass, index: number): void;
100
+ static getMultiInstanceConstructorIndex(clazz: EggProtoImplClass): number | undefined;
101
+ static setInjectType(clazz: EggProtoImplClass, type: InjectType): void;
102
+ static addInjectObject(clazz: EggProtoImplClass, injectObject: InjectObjectInfo): void;
103
+ static addInjectConstructor(clazz: EggProtoImplClass, injectConstructorInfo: InjectConstructorInfo): void;
104
+ static getInjectType(clazz: EggProtoImplClass): InjectType | undefined;
105
+ static getInjectObjects(clazz: EggProtoImplClass): Array<InjectObjectInfo | InjectConstructorInfo>;
106
+ static getClazzProto(clazz: EggProtoImplClass): object | undefined;
107
+ static setClazzProto(clazz: EggProtoImplClass, proto: object): void;
108
+ static getDesignType(clazz: EggProtoImplClass, propKey?: PropertyKey): unknown | undefined;
109
+ static getDesignParamtypes(clazz: EggProtoImplClass, propKey?: PropertyKey): unknown[] | undefined;
110
+ }
111
+ //#endregion
112
+ export { PrototypeUtil };
@@ -0,0 +1,216 @@
1
+ import { MetadataUtil } from "./MetadataUtil.js";
2
+ import { InitTypeQualifierAttribute, InjectType, LoadUnitNameQualifierAttribute, MultiInstanceType } from "@eggjs/tegg-types";
3
+
4
+ //#region src/util/PrototypeUtil.ts
5
+ var PrototypeUtil = class PrototypeUtil {
6
+ static IS_EGG_OBJECT_PROTOTYPE = Symbol.for("EggPrototype#isEggPrototype");
7
+ static IS_EGG_OBJECT_MULTI_INSTANCE_PROTOTYPE = Symbol.for("EggPrototype#isEggMultiInstancePrototype");
8
+ static FILE_PATH = Symbol.for("EggPrototype.filePath");
9
+ static PROTOTYPE_PROPERTY = Symbol.for("EggPrototype.Property");
10
+ static MULTI_INSTANCE_PROTOTYPE_STATIC_PROPERTY = Symbol.for("EggPrototype.MultiInstanceStaticProperty");
11
+ static MULTI_INSTANCE_PROTOTYPE_CALLBACK_PROPERTY = Symbol.for("EggPrototype.MultiInstanceCallbackProperty");
12
+ static INJECT_OBJECT_NAME_SET = Symbol.for("EggPrototype.injectObjectNames");
13
+ static INJECT_TYPE = Symbol.for("EggPrototype.injectType");
14
+ static INJECT_CONSTRUCTOR_NAME_SET = Symbol.for("EggPrototype.injectConstructorNames");
15
+ static CLAZZ_PROTO = Symbol.for("EggPrototype.clazzProto");
16
+ static MULTI_INSTANCE_CONSTRUCTOR_INDEX = Symbol.for("EggPrototype#multiInstanceConstructorIndex");
17
+ static MULTI_INSTANCE_CONSTRUCTOR_ATTRIBUTES = Symbol.for("EggPrototype#multiInstanceConstructorAttributes");
18
+ /**
19
+ * Mark class is egg object prototype
20
+ * @param {Function} clazz -
21
+ */
22
+ static setIsEggPrototype(clazz) {
23
+ MetadataUtil.defineMetaData(PrototypeUtil.IS_EGG_OBJECT_PROTOTYPE, true, clazz);
24
+ }
25
+ /**
26
+ * If class is egg object prototype, return true
27
+ * @param {Function} clazz -
28
+ */
29
+ static isEggPrototype(clazz) {
30
+ return MetadataUtil.getOwnBooleanMetaData(PrototypeUtil.IS_EGG_OBJECT_PROTOTYPE, clazz);
31
+ }
32
+ /**
33
+ * Mark class is egg object multi instance prototype
34
+ * @param {Function} clazz -
35
+ */
36
+ static setIsEggMultiInstancePrototype(clazz) {
37
+ MetadataUtil.defineMetaData(PrototypeUtil.IS_EGG_OBJECT_MULTI_INSTANCE_PROTOTYPE, true, clazz);
38
+ }
39
+ /**
40
+ * If class is egg object multi instance prototype, return true
41
+ * @param {Function} clazz -
42
+ */
43
+ static isEggMultiInstancePrototype(clazz) {
44
+ return MetadataUtil.getOwnBooleanMetaData(PrototypeUtil.IS_EGG_OBJECT_MULTI_INSTANCE_PROTOTYPE, clazz);
45
+ }
46
+ /**
47
+ * Get the type of the egg multi-instance prototype.
48
+ * @param {Function} clazz -
49
+ */
50
+ static getEggMultiInstancePrototypeType(clazz) {
51
+ if (!PrototypeUtil.isEggMultiInstancePrototype(clazz)) return;
52
+ if (MetadataUtil.getOwnMetaData(PrototypeUtil.MULTI_INSTANCE_PROTOTYPE_STATIC_PROPERTY, clazz)) return MultiInstanceType.STATIC;
53
+ return MultiInstanceType.DYNAMIC;
54
+ }
55
+ /**
56
+ * set class file path
57
+ * @param {Function} clazz -
58
+ * @param {string} filePath -
59
+ */
60
+ static setFilePath(clazz, filePath) {
61
+ MetadataUtil.defineMetaData(PrototypeUtil.FILE_PATH, filePath, clazz);
62
+ }
63
+ /**
64
+ * get class file path
65
+ * @param {Function} clazz -
66
+ */
67
+ static getFilePath(clazz) {
68
+ return MetadataUtil.getOwnMetaData(PrototypeUtil.FILE_PATH, clazz);
69
+ }
70
+ /**
71
+ * set class property
72
+ * @param {EggProtoImplClass} clazz -
73
+ * @param {EggPrototypeInfo} property -
74
+ */
75
+ static setProperty(clazz, property) {
76
+ MetadataUtil.defineMetaData(PrototypeUtil.PROTOTYPE_PROPERTY, property, clazz);
77
+ }
78
+ /**
79
+ * get class property
80
+ * @param {EggProtoImplClass} clazz -
81
+ * @return {EggPrototypeInfo} -
82
+ */
83
+ static getProperty(clazz) {
84
+ return MetadataUtil.getOwnMetaData(PrototypeUtil.PROTOTYPE_PROPERTY, clazz);
85
+ }
86
+ static async getInitType(clazz, ctx) {
87
+ return (PrototypeUtil.getProperty(clazz) ?? await PrototypeUtil.getMultiInstanceProperty(clazz, ctx))?.initType;
88
+ }
89
+ static async getAccessLevel(clazz, ctx) {
90
+ return (PrototypeUtil.getProperty(clazz) ?? await PrototypeUtil.getMultiInstanceProperty(clazz, ctx))?.accessLevel;
91
+ }
92
+ static async getObjNames(clazz, ctx) {
93
+ const property = PrototypeUtil.getProperty(clazz);
94
+ if (property) return [property.name];
95
+ return (await PrototypeUtil.getMultiInstanceProperty(clazz, ctx))?.objects.map((t) => t.name) || [];
96
+ }
97
+ /**
98
+ * set class property
99
+ * @param {EggProtoImplClass} clazz -
100
+ * @param {EggPrototypeInfo} property -
101
+ */
102
+ static setMultiInstanceStaticProperty(clazz, property) {
103
+ MetadataUtil.defineMetaData(PrototypeUtil.MULTI_INSTANCE_PROTOTYPE_STATIC_PROPERTY, property, clazz);
104
+ }
105
+ /**
106
+ * set class property
107
+ * @param {EggProtoImplClass} clazz -
108
+ * @param {EggPrototypeInfo} property -
109
+ */
110
+ static setMultiInstanceCallbackProperty(clazz, property) {
111
+ MetadataUtil.defineMetaData(PrototypeUtil.MULTI_INSTANCE_PROTOTYPE_CALLBACK_PROPERTY, property, clazz);
112
+ }
113
+ /**
114
+ * Get instance property of Static multi-instance prototype.
115
+ * @param {EggProtoImplClass} clazz -
116
+ */
117
+ static getStaticMultiInstanceProperty(clazz) {
118
+ const metadata = MetadataUtil.getOwnMetaData(PrototypeUtil.MULTI_INSTANCE_PROTOTYPE_STATIC_PROPERTY, clazz);
119
+ if (metadata) return metadata;
120
+ }
121
+ /**
122
+ * Get instance property of Dynamic multi-instance prototype.
123
+ * @param {EggProtoImplClass} clazz -
124
+ * @param {MultiInstancePrototypeGetObjectsContext} ctx -
125
+ */
126
+ static async getDynamicMultiInstanceProperty(clazz, ctx) {
127
+ const callBackMetadata = MetadataUtil.getOwnMetaData(PrototypeUtil.MULTI_INSTANCE_PROTOTYPE_CALLBACK_PROPERTY, clazz);
128
+ if (callBackMetadata) {
129
+ const objects = await callBackMetadata.getObjects(ctx);
130
+ return {
131
+ ...callBackMetadata,
132
+ objects
133
+ };
134
+ }
135
+ }
136
+ /**
137
+ * get class property
138
+ * @param {EggProtoImplClass} clazz -
139
+ * @param {MultiInstancePrototypeGetObjectsContext} ctx -
140
+ */
141
+ static async getMultiInstanceProperty(clazz, ctx) {
142
+ const metadata = MetadataUtil.getOwnMetaData(PrototypeUtil.MULTI_INSTANCE_PROTOTYPE_STATIC_PROPERTY, clazz);
143
+ if (metadata) return metadata;
144
+ const callBackMetadata = MetadataUtil.getOwnMetaData(PrototypeUtil.MULTI_INSTANCE_PROTOTYPE_CALLBACK_PROPERTY, clazz);
145
+ if (callBackMetadata) {
146
+ const objects = await callBackMetadata.getObjects(ctx);
147
+ const defaultQualifier = [{
148
+ attribute: InitTypeQualifierAttribute,
149
+ value: callBackMetadata.initType
150
+ }, {
151
+ attribute: LoadUnitNameQualifierAttribute,
152
+ value: ctx.moduleName
153
+ }];
154
+ for (const object of objects) defaultQualifier.forEach((qualifier) => {
155
+ if (!object.qualifiers.find((t) => t.attribute === qualifier.attribute)) object.qualifiers.push(qualifier);
156
+ });
157
+ return {
158
+ ...callBackMetadata,
159
+ objects
160
+ };
161
+ }
162
+ }
163
+ static setMultiInstanceConstructorAttributes(clazz, attributes) {
164
+ MetadataUtil.defineMetaData(PrototypeUtil.MULTI_INSTANCE_CONSTRUCTOR_ATTRIBUTES, attributes, clazz);
165
+ }
166
+ static getMultiInstanceConstructorAttributes(clazz) {
167
+ return MetadataUtil.getMetaData(PrototypeUtil.MULTI_INSTANCE_CONSTRUCTOR_ATTRIBUTES, clazz) || [];
168
+ }
169
+ static setMultiInstanceConstructorIndex(clazz, index) {
170
+ MetadataUtil.defineMetaData(PrototypeUtil.MULTI_INSTANCE_CONSTRUCTOR_INDEX, index, clazz);
171
+ }
172
+ static getMultiInstanceConstructorIndex(clazz) {
173
+ return MetadataUtil.getMetaData(PrototypeUtil.MULTI_INSTANCE_CONSTRUCTOR_INDEX, clazz);
174
+ }
175
+ static setInjectType(clazz, type) {
176
+ const injectType = MetadataUtil.getMetaData(PrototypeUtil.INJECT_TYPE, clazz);
177
+ if (!injectType) MetadataUtil.defineMetaData(PrototypeUtil.INJECT_TYPE, type, clazz);
178
+ else if (injectType !== type) throw new Error(`class ${clazz.name} already use inject type ${injectType} can not use ${type}`);
179
+ }
180
+ static addInjectObject(clazz, injectObject) {
181
+ const objs = MetadataUtil.initOwnArrayMetaData(PrototypeUtil.INJECT_OBJECT_NAME_SET, clazz, []);
182
+ objs.push(injectObject);
183
+ MetadataUtil.defineMetaData(PrototypeUtil.INJECT_OBJECT_NAME_SET, objs, clazz);
184
+ }
185
+ static addInjectConstructor(clazz, injectConstructorInfo) {
186
+ const objs = MetadataUtil.initArrayMetaData(PrototypeUtil.INJECT_CONSTRUCTOR_NAME_SET, clazz, []);
187
+ objs.push(injectConstructorInfo);
188
+ MetadataUtil.defineMetaData(PrototypeUtil.INJECT_CONSTRUCTOR_NAME_SET, objs, clazz);
189
+ }
190
+ static getInjectType(clazz) {
191
+ return MetadataUtil.getMetaData(PrototypeUtil.INJECT_TYPE, clazz);
192
+ }
193
+ static getInjectObjects(clazz) {
194
+ const injectType = MetadataUtil.getMetaData(PrototypeUtil.INJECT_TYPE, clazz);
195
+ if (!injectType) return [];
196
+ if (injectType === InjectType.CONSTRUCTOR) return MetadataUtil.getArrayMetaData(PrototypeUtil.INJECT_CONSTRUCTOR_NAME_SET, clazz).sort((a, b) => {
197
+ return a.refIndex - b.refIndex;
198
+ });
199
+ return MetadataUtil.getArrayMetaData(PrototypeUtil.INJECT_OBJECT_NAME_SET, clazz);
200
+ }
201
+ static getClazzProto(clazz) {
202
+ return MetadataUtil.getMetaData(PrototypeUtil.CLAZZ_PROTO, clazz);
203
+ }
204
+ static setClazzProto(clazz, proto) {
205
+ MetadataUtil.defineMetaData(PrototypeUtil.CLAZZ_PROTO, proto, clazz);
206
+ }
207
+ static getDesignType(clazz, propKey) {
208
+ return MetadataUtil.getMetaData("design:type", clazz, propKey);
209
+ }
210
+ static getDesignParamtypes(clazz, propKey) {
211
+ return MetadataUtil.getMetaData("design:paramtypes", clazz, propKey);
212
+ }
213
+ };
214
+
215
+ //#endregion
216
+ export { PrototypeUtil };
@@ -0,0 +1,17 @@
1
+ import { EggProtoImplClass, QualifierAttribute, QualifierInfo, QualifierValue } from "@eggjs/tegg-types";
2
+
3
+ //#region src/util/QualifierUtil.d.ts
4
+ declare class QualifierUtil {
5
+ static addProtoQualifier(clazz: EggProtoImplClass, attribute: QualifierAttribute, value: QualifierValue, isForceReplacement?: boolean): void;
6
+ static getProtoQualifiers(clazz: EggProtoImplClass): QualifierInfo[];
7
+ static addInjectQualifier(clazz: EggProtoImplClass, property: PropertyKey | undefined, parameterIndex: number | undefined, attribute: QualifierAttribute, value: QualifierValue): void;
8
+ static addProperQualifier(clazz: EggProtoImplClass, property: PropertyKey, attribute: QualifierAttribute, value: QualifierValue): void;
9
+ static getProperQualifiers(clazz: EggProtoImplClass, property: PropertyKey): QualifierInfo[];
10
+ static getQualifierValue(clazz: EggProtoImplClass, attribute: QualifierAttribute): QualifierValue | undefined;
11
+ static getProperQualifier(clazz: EggProtoImplClass, property: PropertyKey, attribute: QualifierAttribute): QualifierValue | undefined;
12
+ static matchQualifiers(clazzQualifiers: QualifierInfo[], requestQualifiers: QualifierInfo[]): boolean;
13
+ static equalQualifiers(clazzQualifiers: QualifierInfo[], requestQualifiers: QualifierInfo[]): boolean;
14
+ static mergeQualifiers(...qualifiers: QualifierInfo[][]): QualifierInfo[];
15
+ }
16
+ //#endregion
17
+ export { QualifierUtil };
@@ -0,0 +1,68 @@
1
+ import { MetadataUtil } from "./MetadataUtil.js";
2
+ import { PROPERTY_QUALIFIER_META_DATA, QUALIFIER_META_DATA } from "@eggjs/tegg-types";
3
+ import { MapUtil, ObjectUtils } from "@eggjs/tegg-common-util";
4
+
5
+ //#region src/util/QualifierUtil.ts
6
+ var QualifierUtil = class QualifierUtil {
7
+ static addProtoQualifier(clazz, attribute, value, isForceReplacement) {
8
+ if (QualifierUtil.getQualifierValue(clazz, attribute) && !isForceReplacement) throw new Error(`Qualifier Error: clazz ${clazz.name} attribute ${attribute.toString()} has been implemented`);
9
+ MetadataUtil.initOwnMapMetaData(QUALIFIER_META_DATA, clazz, /* @__PURE__ */ new Map()).set(attribute, value);
10
+ }
11
+ static getProtoQualifiers(clazz) {
12
+ const qualifiers = MetadataUtil.getMetaData(QUALIFIER_META_DATA, clazz);
13
+ if (!qualifiers) return [];
14
+ const res = [];
15
+ for (const [attribute, value] of qualifiers) res.push({
16
+ attribute,
17
+ value
18
+ });
19
+ return res;
20
+ }
21
+ static addInjectQualifier(clazz, property, parameterIndex, attribute, value) {
22
+ if (typeof parameterIndex === "number") {
23
+ const argName = ObjectUtils.getConstructorArgNameList(clazz)[parameterIndex];
24
+ QualifierUtil.addProperQualifier(clazz, argName, attribute, value);
25
+ } else QualifierUtil.addProperQualifier(clazz.constructor, property, attribute, value);
26
+ }
27
+ static addProperQualifier(clazz, property, attribute, value) {
28
+ const properQualifiers = MetadataUtil.initOwnMapMetaData(PROPERTY_QUALIFIER_META_DATA, clazz, /* @__PURE__ */ new Map());
29
+ MapUtil.getOrStore(properQualifiers, property, /* @__PURE__ */ new Map()).set(attribute, value);
30
+ }
31
+ static getProperQualifiers(clazz, property) {
32
+ const qualifiers = MetadataUtil.getMetaData(PROPERTY_QUALIFIER_META_DATA, clazz)?.get(property);
33
+ if (!qualifiers) return [];
34
+ const res = [];
35
+ for (const [attribute, value] of qualifiers) res.push({
36
+ attribute,
37
+ value
38
+ });
39
+ return res;
40
+ }
41
+ static getQualifierValue(clazz, attribute) {
42
+ return MetadataUtil.getMetaData(QUALIFIER_META_DATA, clazz)?.get(attribute);
43
+ }
44
+ static getProperQualifier(clazz, property, attribute) {
45
+ return (MetadataUtil.getMetaData(PROPERTY_QUALIFIER_META_DATA, clazz)?.get(property))?.get(attribute);
46
+ }
47
+ static matchQualifiers(clazzQualifiers, requestQualifiers) {
48
+ for (const request of requestQualifiers) if (!clazzQualifiers.find((t) => t.attribute === request.attribute && t.value === request.value)) return false;
49
+ return true;
50
+ }
51
+ static equalQualifiers(clazzQualifiers, requestQualifiers) {
52
+ if (clazzQualifiers.length !== requestQualifiers.length) return false;
53
+ return QualifierUtil.matchQualifiers(clazzQualifiers, requestQualifiers);
54
+ }
55
+ static mergeQualifiers(...qualifiers) {
56
+ const result = [];
57
+ const temp = {};
58
+ for (const qualifierList of qualifiers) for (const { attribute, value } of qualifierList) temp[attribute] = value;
59
+ for (const key of Reflect.ownKeys(temp)) result.push({
60
+ attribute: key,
61
+ value: temp[key]
62
+ });
63
+ return result;
64
+ }
65
+ };
66
+
67
+ //#endregion
68
+ export { QualifierUtil };
@@ -0,0 +1,3 @@
1
+ import { MetadataUtil } from "./MetadataUtil.js";
2
+ import { PrototypeUtil } from "./PrototypeUtil.js";
3
+ import { QualifierUtil } from "./QualifierUtil.js";
@@ -0,0 +1,5 @@
1
+ import { MetadataUtil } from "./MetadataUtil.js";
2
+ import { PrototypeUtil } from "./PrototypeUtil.js";
3
+ import { QualifierUtil } from "./QualifierUtil.js";
4
+
5
+ export { };
package/package.json CHANGED
@@ -1,54 +1,50 @@
1
1
  {
2
2
  "name": "@eggjs/core-decorator",
3
- "version": "4.0.0-beta.8",
3
+ "version": "4.0.1-beta.0",
4
4
  "description": "tegg core decorator",
5
5
  "keywords": [
6
- "egg",
7
- "typescript",
8
6
  "decorator",
9
- "tegg"
10
- ],
11
- "type": "module",
12
- "exports": {
13
- ".": "./dist/index.js",
14
- "./package.json": "./package.json"
15
- },
16
- "files": [
17
- "dist"
7
+ "egg",
8
+ "tegg",
9
+ "typescript"
18
10
  ],
19
- "author": "killagu <killa123@126.com>",
20
- "license": "MIT",
21
- "homepage": "https://github.com/eggjs/tegg/tree/next/core/core-decorator",
11
+ "homepage": "https://github.com/eggjs/egg/tree/next/tegg/core/core-decorator",
22
12
  "bugs": {
23
- "url": "https://github.com/eggjs/tegg/issues"
13
+ "url": "https://github.com/eggjs/egg/issues"
24
14
  },
15
+ "license": "MIT",
16
+ "author": "killagu <killa123@126.com>",
25
17
  "repository": {
26
18
  "type": "git",
27
- "url": "git@github.com:eggjs/tegg.git",
28
- "directory": "core/core-decorator"
19
+ "url": "git+https://github.com/eggjs/egg.git",
20
+ "directory": "tegg/core/core-decorator"
29
21
  },
30
- "engines": {
31
- "node": ">=22.18.0"
22
+ "files": [
23
+ "dist"
24
+ ],
25
+ "type": "module",
26
+ "main": "./dist/index.js",
27
+ "module": "./dist/index.js",
28
+ "types": "./dist/index.d.ts",
29
+ "exports": {
30
+ ".": "./dist/index.js",
31
+ "./package.json": "./package.json"
32
32
  },
33
33
  "publishConfig": {
34
34
  "access": "public"
35
35
  },
36
36
  "dependencies": {
37
- "@eggjs/tegg-common-util": "4.0.0-beta.8",
38
- "@eggjs/tegg-types": "4.0.0-beta.8"
37
+ "@eggjs/tegg-common-util": "4.0.1-beta.0",
38
+ "@eggjs/tegg-types": "4.0.1-beta.0"
39
39
  },
40
40
  "devDependencies": {
41
- "@types/node": "^22.10.5",
42
- "typescript": "^5.9.3",
43
- "tsdown": "^0.15.6",
44
- "unplugin-unused": "^0.5.3"
41
+ "@types/node": "^24.10.2",
42
+ "typescript": "^5.9.3"
43
+ },
44
+ "engines": {
45
+ "node": ">=22.18.0"
45
46
  },
46
- "main": "./dist/index.js",
47
- "module": "./dist/index.js",
48
- "types": "./dist/index.d.ts",
49
47
  "scripts": {
50
- "clean": "rimraf dist",
51
- "build": "tsdown",
52
- "typecheck": "tsc --noEmit"
48
+ "typecheck": "tsgo --noEmit"
53
49
  }
54
50
  }