@prostojs/mate 0.1.12 → 0.1.13
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/mate.cjs.prod.js +36 -9
- package/dist/mate.d.ts +39 -28
- package/dist/mate.esm-bundler.js +36 -9
- package/dist/src/mate.d.ts +30 -22
- package/dist/src/mate.d.ts.map +1 -1
- package/dist/src/tests/mate.artifacts.d.ts +35 -6
- package/dist/src/tests/mate.artifacts.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/mate.cjs.prod.js
CHANGED
|
@@ -74,11 +74,12 @@ class Mate {
|
|
|
74
74
|
}
|
|
75
75
|
set(args, key, value, isArray) {
|
|
76
76
|
var _a;
|
|
77
|
+
let level = 'CLASS';
|
|
77
78
|
const newArgs = args.level === 'CLASS' ? { target: args.target }
|
|
78
|
-
: args.level === '
|
|
79
|
+
: args.level === 'PROP' ? { target: args.target, propKey: args.propKey }
|
|
79
80
|
: args;
|
|
80
81
|
let meta = Reflect.getOwnMetadata(this.workspace, newArgs.target, newArgs.propKey) || {};
|
|
81
|
-
if (newArgs.propKey && this.options.readReturnType && !meta.returnType) {
|
|
82
|
+
if (newArgs.propKey && this.options.readReturnType && !meta.returnType && args.descriptor) {
|
|
82
83
|
meta.returnType = Reflect.getOwnMetadata('design:returntype', newArgs.target, newArgs.propKey);
|
|
83
84
|
}
|
|
84
85
|
if (newArgs.propKey && this.options.readType && !meta.type) {
|
|
@@ -91,12 +92,13 @@ class Mate {
|
|
|
91
92
|
data.params = (_a = Reflect.getOwnMetadata('design:paramtypes', newArgs.target, newArgs.propKey)) === null || _a === void 0 ? void 0 : _a.map((f) => ({ type: f }));
|
|
92
93
|
}
|
|
93
94
|
if (typeof index === 'number') {
|
|
95
|
+
level = 'PARAM';
|
|
94
96
|
data.params = data.params || [];
|
|
95
97
|
data.params[index] = data.params[index] || {
|
|
96
98
|
type: undefined,
|
|
97
99
|
};
|
|
98
100
|
if (cb) {
|
|
99
|
-
data.params[index] = cb(data.params[index], args.propKey, typeof args.index === 'number' ? args.index : undefined);
|
|
101
|
+
data.params[index] = cb(data.params[index], level, args.propKey, typeof args.index === 'number' ? args.index : undefined);
|
|
100
102
|
}
|
|
101
103
|
else {
|
|
102
104
|
data = data.params[index];
|
|
@@ -113,6 +115,7 @@ class Mate {
|
|
|
113
115
|
return meta;
|
|
114
116
|
});
|
|
115
117
|
}
|
|
118
|
+
level = typeof index === 'number' ? 'PARAM' : newArgs.propKey && newArgs.descriptor ? 'METHOD' : newArgs.propKey ? 'PROP' : 'CLASS';
|
|
116
119
|
if (typeof key !== 'function') {
|
|
117
120
|
if (isArray) {
|
|
118
121
|
const newArray = (data[key] || []);
|
|
@@ -127,11 +130,11 @@ class Mate {
|
|
|
127
130
|
}
|
|
128
131
|
}
|
|
129
132
|
else if (cb && typeof index !== 'number') {
|
|
130
|
-
meta = cb(data, args.propKey, typeof args.index === 'number' ? args.index : undefined);
|
|
133
|
+
meta = cb(data, level, args.propKey, typeof args.index === 'number' ? args.index : undefined);
|
|
131
134
|
}
|
|
132
135
|
Reflect.defineMetadata(this.workspace, meta, newArgs.target, newArgs.propKey);
|
|
133
136
|
}
|
|
134
|
-
read(target, propKey
|
|
137
|
+
read(target, propKey) {
|
|
135
138
|
const isConstr = isConstructor(target);
|
|
136
139
|
const constructor = isConstr ? target : getConstructor(target);
|
|
137
140
|
const proto = constructor.prototype;
|
|
@@ -142,17 +145,31 @@ class Mate {
|
|
|
142
145
|
if (inheritFn) {
|
|
143
146
|
if (typeof propKey === 'string') {
|
|
144
147
|
const classMeta = Reflect.getOwnMetadata(this.workspace, constructor);
|
|
145
|
-
shouldInherit = inheritFn(classMeta,
|
|
148
|
+
shouldInherit = inheritFn(classMeta, ownMeta, 'PROP', propKey);
|
|
146
149
|
}
|
|
147
150
|
else {
|
|
148
|
-
shouldInherit = inheritFn(ownMeta);
|
|
151
|
+
shouldInherit = inheritFn(ownMeta, ownMeta, 'CLASS');
|
|
149
152
|
}
|
|
150
153
|
}
|
|
151
154
|
if (shouldInherit) {
|
|
152
155
|
const parent = Object.getPrototypeOf(constructor);
|
|
153
156
|
if (typeof parent === 'function' && parent !== fnProto && parent !== constructor) {
|
|
154
|
-
const inheritedMeta = this.read(parent, propKey);
|
|
155
|
-
|
|
157
|
+
const inheritedMeta = this.read(parent, propKey) || {};
|
|
158
|
+
const ownParams = ownMeta === null || ownMeta === void 0 ? void 0 : ownMeta.params;
|
|
159
|
+
ownMeta = { ...inheritedMeta, ...ownMeta };
|
|
160
|
+
if (typeof propKey === 'string' && ownParams && (inheritedMeta === null || inheritedMeta === void 0 ? void 0 : inheritedMeta.params)) {
|
|
161
|
+
for (let i = 0; i < ownParams.length; i++) {
|
|
162
|
+
if (typeof (inheritedMeta === null || inheritedMeta === void 0 ? void 0 : inheritedMeta.params[i]) !== 'undefined') {
|
|
163
|
+
const ownParam = ownParams[i];
|
|
164
|
+
if (ownMeta.params && inheritFn && inheritFn(ownMeta, ownParam, 'PARAM', typeof propKey === 'string' ? propKey : undefined)) {
|
|
165
|
+
ownMeta.params[i] = {
|
|
166
|
+
...inheritedMeta === null || inheritedMeta === void 0 ? void 0 : inheritedMeta.params[i],
|
|
167
|
+
...ownParams[i],
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
156
173
|
}
|
|
157
174
|
}
|
|
158
175
|
}
|
|
@@ -177,6 +194,16 @@ class Mate {
|
|
|
177
194
|
this.set(args, key, value, isArray);
|
|
178
195
|
});
|
|
179
196
|
}
|
|
197
|
+
decorateConditional(ccb) {
|
|
198
|
+
return ((target, propKey, descriptor) => {
|
|
199
|
+
const hasIndex = typeof descriptor === 'number';
|
|
200
|
+
const decoratorLevel = hasIndex ? 'PARAM' : propKey && descriptor ? 'METHOD' : propKey ? 'PROP' : 'CLASS';
|
|
201
|
+
const d = ccb(decoratorLevel);
|
|
202
|
+
if (d) {
|
|
203
|
+
d(target, propKey, descriptor);
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
180
207
|
decorateClass(key, value, isArray) {
|
|
181
208
|
return this.decorate(key, value, isArray, 'CLASS');
|
|
182
209
|
}
|
package/dist/mate.d.ts
CHANGED
|
@@ -1,36 +1,58 @@
|
|
|
1
|
+
declare type ArrayElementType<T> = T extends (infer E)[] ? E : never;
|
|
2
|
+
|
|
1
3
|
export declare function getConstructor<T = TAny>(instance: T): TFunction;
|
|
2
4
|
|
|
3
5
|
export declare function isConstructor<T = TAny>(v: T): v is (T & TClassConstructor);
|
|
4
6
|
|
|
5
|
-
export declare class Mate<
|
|
7
|
+
export declare class Mate<TClass extends TObject = TEmpty, TProp extends TObject = TEmpty, TParam extends TObject = TEmpty> {
|
|
6
8
|
protected workspace: string;
|
|
7
|
-
protected options: TMateOptions<
|
|
8
|
-
constructor(workspace: string, options?: TMateOptions<
|
|
9
|
-
set<
|
|
10
|
-
set<
|
|
11
|
-
set<
|
|
12
|
-
read<
|
|
9
|
+
protected options: TMateOptions<TClass, TProp, TParam>;
|
|
10
|
+
constructor(workspace: string, options?: TMateOptions<TClass, TProp, TParam>);
|
|
11
|
+
set<TMeta extends TObject = Partial<TClass & TProp & TParam>>(args: TMergedDecoratorArgs, cb: ((meta: TMeta, level: TLevels, propKey?: string | symbol, index?: number) => TMeta)): void;
|
|
12
|
+
set<TMeta extends TObject = Partial<TClass & TProp & TParam>, TKey extends keyof TMeta = keyof TMeta>(args: TMergedDecoratorArgs, key: keyof TMeta, value: TMeta[TKey]): void;
|
|
13
|
+
set<TMeta extends TObject = Partial<TClass & TProp & TParam>, TKey extends keyof TMeta = keyof TMeta>(args: TMergedDecoratorArgs, key: keyof TMeta, value: TMeta[TKey], isArray: boolean | undefined): void;
|
|
14
|
+
read<TMeta extends Partial<TClass & TMateClassMeta & TProp & TMatePropMeta<TParam> & TParam & TMateParamMeta>>(target: TFunction | TObject, propKey?: string | symbol): TMeta | undefined;
|
|
13
15
|
apply(...decorators: (MethodDecorator | ClassDecorator | ParameterDecorator | PropertyDecorator)[]): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
14
|
-
decorate<
|
|
15
|
-
decorate<
|
|
16
|
-
decorate<
|
|
17
|
-
decorate<
|
|
18
|
-
|
|
19
|
-
decorateClass<
|
|
20
|
-
decorateClass<
|
|
16
|
+
decorate<TMeta extends TObject = Partial<TClass & TProp & TParam>>(cb: ((meta: TMeta, level: TLevels, propKey?: string | symbol, index?: number) => TMeta)): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
17
|
+
decorate<TMeta extends Partial<TClass & TProp & TParam>, TKey extends keyof TMeta>(key: TKey, value: TMeta[TKey]): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
18
|
+
decorate<TMeta extends Partial<TClass & TProp & TParam>, TKey extends keyof TMeta, TIsArray extends boolean = false>(key: TKey, value: TIsArray extends true ? ArrayElementType<TMeta[TKey]> : TMeta[TKey], isArray: TIsArray): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
19
|
+
decorate<TMeta extends Partial<TClass & TProp & TParam>, TKey extends keyof TMeta, TIsArray extends boolean = false>(key: TKey | ((meta: TMeta, level: TLevels, propKey?: string | symbol, index?: number) => TMeta), value: TIsArray extends true ? ArrayElementType<TMeta[TKey]> : TMeta[TKey], isArray: TIsArray, level: TMergedDecoratorArgs['level']): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
20
|
+
decorateConditional(ccb: (level: TLevels) => (MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator) | void | undefined): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
21
|
+
decorateClass<TMeta extends TObject = Partial<TClass & TProp & TParam>>(cb: ((meta: TMeta, level: TLevels, propKey?: string | symbol, index?: number) => TMeta)): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
22
|
+
decorateClass<TMeta extends TObject = Partial<TClass & TProp & TParam>, TKey extends keyof TMeta = keyof TMeta, TIsArray extends boolean = false>(key: TKey, value: TIsArray extends true ? ArrayElementType<TMeta[TKey]> : TMeta[TKey]): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
23
|
+
decorateClass<TMeta extends TObject = Partial<TClass & TProp & TParam>, TKey extends keyof TMeta = keyof TMeta, TIsArray extends boolean = false>(key: TKey, value: TIsArray extends true ? ArrayElementType<TMeta[TKey]> : TMeta[TKey], isArray: boolean | undefined): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
21
24
|
}
|
|
22
25
|
|
|
23
26
|
declare type TAny = any;
|
|
24
27
|
|
|
25
28
|
declare type TClassConstructor<T = unknown> = new (...args: TAny[]) => T;
|
|
26
29
|
|
|
30
|
+
declare interface TEmpty {
|
|
31
|
+
}
|
|
32
|
+
|
|
27
33
|
declare type TFunction = Function;
|
|
28
34
|
|
|
29
|
-
|
|
35
|
+
declare type TLevels = 'CLASS' | 'METHOD' | 'PROP' | 'PARAM';
|
|
36
|
+
|
|
37
|
+
export declare interface TMateClassMeta {
|
|
38
|
+
properties?: (string | symbol)[];
|
|
39
|
+
type?: TFunction;
|
|
40
|
+
returnType?: TFunction;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export declare interface TMateOptions<TClass extends TObject = TEmpty, TProp extends TObject = TEmpty, TParam extends TObject = TEmpty> {
|
|
30
44
|
readReturnType?: boolean;
|
|
31
45
|
readType?: boolean;
|
|
32
46
|
collectPropKeys?: boolean;
|
|
33
|
-
inherit?: boolean | ((classMeta:
|
|
47
|
+
inherit?: boolean | ((classMeta: TClass & TMateClassMeta, targetMeta: (TMatePropMeta<TParam> & TProp) | (TMateParamMeta & TParam), level: 'CLASS' | 'PROP' | 'PARAM', key?: string) => boolean);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export declare interface TMateParamMeta {
|
|
51
|
+
type?: TFunction;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export declare interface TMatePropMeta<TParam extends TObject = TEmpty> {
|
|
55
|
+
params?: (TParam & TMateParamMeta)[];
|
|
34
56
|
}
|
|
35
57
|
|
|
36
58
|
export declare interface TMergedDecoratorArgs {
|
|
@@ -38,20 +60,9 @@ export declare interface TMergedDecoratorArgs {
|
|
|
38
60
|
propKey?: string | symbol;
|
|
39
61
|
descriptor?: TypedPropertyDescriptor<TAny>;
|
|
40
62
|
index?: number;
|
|
41
|
-
level?:
|
|
63
|
+
level?: TLevels;
|
|
42
64
|
}
|
|
43
65
|
|
|
44
66
|
declare type TObject = object;
|
|
45
67
|
|
|
46
|
-
export declare interface TProstoMetadata<TParams extends TProstoParamsMetadata = TProstoParamsMetadata> {
|
|
47
|
-
params: TParams[];
|
|
48
|
-
properties?: (string | symbol)[];
|
|
49
|
-
type?: TFunction;
|
|
50
|
-
returnType?: TFunction;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export declare interface TProstoParamsMetadata {
|
|
54
|
-
type?: TFunction;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
68
|
export { }
|
package/dist/mate.esm-bundler.js
CHANGED
|
@@ -70,11 +70,12 @@ class Mate {
|
|
|
70
70
|
}
|
|
71
71
|
set(args, key, value, isArray) {
|
|
72
72
|
var _a;
|
|
73
|
+
let level = 'CLASS';
|
|
73
74
|
const newArgs = args.level === 'CLASS' ? { target: args.target }
|
|
74
|
-
: args.level === '
|
|
75
|
+
: args.level === 'PROP' ? { target: args.target, propKey: args.propKey }
|
|
75
76
|
: args;
|
|
76
77
|
let meta = Reflect.getOwnMetadata(this.workspace, newArgs.target, newArgs.propKey) || {};
|
|
77
|
-
if (newArgs.propKey && this.options.readReturnType && !meta.returnType) {
|
|
78
|
+
if (newArgs.propKey && this.options.readReturnType && !meta.returnType && args.descriptor) {
|
|
78
79
|
meta.returnType = Reflect.getOwnMetadata('design:returntype', newArgs.target, newArgs.propKey);
|
|
79
80
|
}
|
|
80
81
|
if (newArgs.propKey && this.options.readType && !meta.type) {
|
|
@@ -87,12 +88,13 @@ class Mate {
|
|
|
87
88
|
data.params = (_a = Reflect.getOwnMetadata('design:paramtypes', newArgs.target, newArgs.propKey)) === null || _a === void 0 ? void 0 : _a.map((f) => ({ type: f }));
|
|
88
89
|
}
|
|
89
90
|
if (typeof index === 'number') {
|
|
91
|
+
level = 'PARAM';
|
|
90
92
|
data.params = data.params || [];
|
|
91
93
|
data.params[index] = data.params[index] || {
|
|
92
94
|
type: undefined,
|
|
93
95
|
};
|
|
94
96
|
if (cb) {
|
|
95
|
-
data.params[index] = cb(data.params[index], args.propKey, typeof args.index === 'number' ? args.index : undefined);
|
|
97
|
+
data.params[index] = cb(data.params[index], level, args.propKey, typeof args.index === 'number' ? args.index : undefined);
|
|
96
98
|
}
|
|
97
99
|
else {
|
|
98
100
|
data = data.params[index];
|
|
@@ -109,6 +111,7 @@ class Mate {
|
|
|
109
111
|
return meta;
|
|
110
112
|
});
|
|
111
113
|
}
|
|
114
|
+
level = typeof index === 'number' ? 'PARAM' : newArgs.propKey && newArgs.descriptor ? 'METHOD' : newArgs.propKey ? 'PROP' : 'CLASS';
|
|
112
115
|
if (typeof key !== 'function') {
|
|
113
116
|
if (isArray) {
|
|
114
117
|
const newArray = (data[key] || []);
|
|
@@ -123,11 +126,11 @@ class Mate {
|
|
|
123
126
|
}
|
|
124
127
|
}
|
|
125
128
|
else if (cb && typeof index !== 'number') {
|
|
126
|
-
meta = cb(data, args.propKey, typeof args.index === 'number' ? args.index : undefined);
|
|
129
|
+
meta = cb(data, level, args.propKey, typeof args.index === 'number' ? args.index : undefined);
|
|
127
130
|
}
|
|
128
131
|
Reflect.defineMetadata(this.workspace, meta, newArgs.target, newArgs.propKey);
|
|
129
132
|
}
|
|
130
|
-
read(target, propKey
|
|
133
|
+
read(target, propKey) {
|
|
131
134
|
const isConstr = isConstructor(target);
|
|
132
135
|
const constructor = isConstr ? target : getConstructor(target);
|
|
133
136
|
const proto = constructor.prototype;
|
|
@@ -138,17 +141,31 @@ class Mate {
|
|
|
138
141
|
if (inheritFn) {
|
|
139
142
|
if (typeof propKey === 'string') {
|
|
140
143
|
const classMeta = Reflect.getOwnMetadata(this.workspace, constructor);
|
|
141
|
-
shouldInherit = inheritFn(classMeta,
|
|
144
|
+
shouldInherit = inheritFn(classMeta, ownMeta, 'PROP', propKey);
|
|
142
145
|
}
|
|
143
146
|
else {
|
|
144
|
-
shouldInherit = inheritFn(ownMeta);
|
|
147
|
+
shouldInherit = inheritFn(ownMeta, ownMeta, 'CLASS');
|
|
145
148
|
}
|
|
146
149
|
}
|
|
147
150
|
if (shouldInherit) {
|
|
148
151
|
const parent = Object.getPrototypeOf(constructor);
|
|
149
152
|
if (typeof parent === 'function' && parent !== fnProto && parent !== constructor) {
|
|
150
|
-
const inheritedMeta = this.read(parent, propKey);
|
|
151
|
-
|
|
153
|
+
const inheritedMeta = this.read(parent, propKey) || {};
|
|
154
|
+
const ownParams = ownMeta === null || ownMeta === void 0 ? void 0 : ownMeta.params;
|
|
155
|
+
ownMeta = { ...inheritedMeta, ...ownMeta };
|
|
156
|
+
if (typeof propKey === 'string' && ownParams && (inheritedMeta === null || inheritedMeta === void 0 ? void 0 : inheritedMeta.params)) {
|
|
157
|
+
for (let i = 0; i < ownParams.length; i++) {
|
|
158
|
+
if (typeof (inheritedMeta === null || inheritedMeta === void 0 ? void 0 : inheritedMeta.params[i]) !== 'undefined') {
|
|
159
|
+
const ownParam = ownParams[i];
|
|
160
|
+
if (ownMeta.params && inheritFn && inheritFn(ownMeta, ownParam, 'PARAM', typeof propKey === 'string' ? propKey : undefined)) {
|
|
161
|
+
ownMeta.params[i] = {
|
|
162
|
+
...inheritedMeta === null || inheritedMeta === void 0 ? void 0 : inheritedMeta.params[i],
|
|
163
|
+
...ownParams[i],
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
152
169
|
}
|
|
153
170
|
}
|
|
154
171
|
}
|
|
@@ -173,6 +190,16 @@ class Mate {
|
|
|
173
190
|
this.set(args, key, value, isArray);
|
|
174
191
|
});
|
|
175
192
|
}
|
|
193
|
+
decorateConditional(ccb) {
|
|
194
|
+
return ((target, propKey, descriptor) => {
|
|
195
|
+
const hasIndex = typeof descriptor === 'number';
|
|
196
|
+
const decoratorLevel = hasIndex ? 'PARAM' : propKey && descriptor ? 'METHOD' : propKey ? 'PROP' : 'CLASS';
|
|
197
|
+
const d = ccb(decoratorLevel);
|
|
198
|
+
if (d) {
|
|
199
|
+
d(target, propKey, descriptor);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}
|
|
176
203
|
decorateClass(key, value, isArray) {
|
|
177
204
|
return this.decorate(key, value, isArray, 'CLASS');
|
|
178
205
|
}
|
package/dist/src/mate.d.ts
CHANGED
|
@@ -1,41 +1,49 @@
|
|
|
1
1
|
import { TAny, TFunction, TObject } from './types';
|
|
2
|
+
type TLevels = 'CLASS' | 'METHOD' | 'PROP' | 'PARAM';
|
|
2
3
|
export interface TMergedDecoratorArgs {
|
|
3
4
|
target: TFunction | TObject;
|
|
4
5
|
propKey?: string | symbol;
|
|
5
6
|
descriptor?: TypedPropertyDescriptor<TAny>;
|
|
6
7
|
index?: number;
|
|
7
|
-
level?:
|
|
8
|
+
level?: TLevels;
|
|
8
9
|
}
|
|
9
|
-
export interface
|
|
10
|
-
params: TParams[];
|
|
11
|
-
properties?: (string | symbol)[];
|
|
10
|
+
export interface TMateParamMeta {
|
|
12
11
|
type?: TFunction;
|
|
13
|
-
returnType?: TFunction;
|
|
14
12
|
}
|
|
15
|
-
export interface
|
|
13
|
+
export interface TMatePropMeta<TParam extends TObject = TEmpty> {
|
|
14
|
+
params?: (TParam & TMateParamMeta)[];
|
|
15
|
+
}
|
|
16
|
+
export interface TMateClassMeta {
|
|
17
|
+
properties?: (string | symbol)[];
|
|
16
18
|
type?: TFunction;
|
|
19
|
+
returnType?: TFunction;
|
|
17
20
|
}
|
|
18
|
-
export interface TMateOptions<
|
|
21
|
+
export interface TMateOptions<TClass extends TObject = TEmpty, TProp extends TObject = TEmpty, TParam extends TObject = TEmpty> {
|
|
19
22
|
readReturnType?: boolean;
|
|
20
23
|
readType?: boolean;
|
|
21
24
|
collectPropKeys?: boolean;
|
|
22
|
-
inherit?: boolean | ((classMeta:
|
|
25
|
+
inherit?: boolean | ((classMeta: TClass & TMateClassMeta, targetMeta: (TMatePropMeta<TParam> & TProp) | (TMateParamMeta & TParam), level: 'CLASS' | 'PROP' | 'PARAM', key?: string) => boolean);
|
|
26
|
+
}
|
|
27
|
+
interface TEmpty {
|
|
23
28
|
}
|
|
24
|
-
export declare class Mate<
|
|
29
|
+
export declare class Mate<TClass extends TObject = TEmpty, TProp extends TObject = TEmpty, TParam extends TObject = TEmpty> {
|
|
25
30
|
protected workspace: string;
|
|
26
|
-
protected options: TMateOptions<
|
|
27
|
-
constructor(workspace: string, options?: TMateOptions<
|
|
28
|
-
set<
|
|
29
|
-
set<
|
|
30
|
-
set<
|
|
31
|
-
read<
|
|
31
|
+
protected options: TMateOptions<TClass, TProp, TParam>;
|
|
32
|
+
constructor(workspace: string, options?: TMateOptions<TClass, TProp, TParam>);
|
|
33
|
+
set<TMeta extends TObject = Partial<TClass & TProp & TParam>>(args: TMergedDecoratorArgs, cb: ((meta: TMeta, level: TLevels, propKey?: string | symbol, index?: number) => TMeta)): void;
|
|
34
|
+
set<TMeta extends TObject = Partial<TClass & TProp & TParam>, TKey extends keyof TMeta = keyof TMeta>(args: TMergedDecoratorArgs, key: keyof TMeta, value: TMeta[TKey]): void;
|
|
35
|
+
set<TMeta extends TObject = Partial<TClass & TProp & TParam>, TKey extends keyof TMeta = keyof TMeta>(args: TMergedDecoratorArgs, key: keyof TMeta, value: TMeta[TKey], isArray: boolean | undefined): void;
|
|
36
|
+
read<TMeta extends Partial<TClass & TMateClassMeta & TProp & TMatePropMeta<TParam> & TParam & TMateParamMeta>>(target: TFunction | TObject, propKey?: string | symbol): TMeta | undefined;
|
|
32
37
|
apply(...decorators: (MethodDecorator | ClassDecorator | ParameterDecorator | PropertyDecorator)[]): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
33
|
-
decorate<
|
|
34
|
-
decorate<
|
|
35
|
-
decorate<
|
|
36
|
-
decorate<
|
|
37
|
-
|
|
38
|
-
decorateClass<
|
|
39
|
-
decorateClass<
|
|
38
|
+
decorate<TMeta extends TObject = Partial<TClass & TProp & TParam>>(cb: ((meta: TMeta, level: TLevels, propKey?: string | symbol, index?: number) => TMeta)): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
39
|
+
decorate<TMeta extends Partial<TClass & TProp & TParam>, TKey extends keyof TMeta>(key: TKey, value: TMeta[TKey]): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
40
|
+
decorate<TMeta extends Partial<TClass & TProp & TParam>, TKey extends keyof TMeta, TIsArray extends boolean = false>(key: TKey, value: TIsArray extends true ? ArrayElementType<TMeta[TKey]> : TMeta[TKey], isArray: TIsArray): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
41
|
+
decorate<TMeta extends Partial<TClass & TProp & TParam>, TKey extends keyof TMeta, TIsArray extends boolean = false>(key: TKey | ((meta: TMeta, level: TLevels, propKey?: string | symbol, index?: number) => TMeta), value: TIsArray extends true ? ArrayElementType<TMeta[TKey]> : TMeta[TKey], isArray: TIsArray, level: TMergedDecoratorArgs['level']): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
42
|
+
decorateConditional(ccb: (level: TLevels) => (MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator) | void | undefined): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
43
|
+
decorateClass<TMeta extends TObject = Partial<TClass & TProp & TParam>>(cb: ((meta: TMeta, level: TLevels, propKey?: string | symbol, index?: number) => TMeta)): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
44
|
+
decorateClass<TMeta extends TObject = Partial<TClass & TProp & TParam>, TKey extends keyof TMeta = keyof TMeta, TIsArray extends boolean = false>(key: TKey, value: TIsArray extends true ? ArrayElementType<TMeta[TKey]> : TMeta[TKey]): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
45
|
+
decorateClass<TMeta extends TObject = Partial<TClass & TProp & TParam>, TKey extends keyof TMeta = keyof TMeta, TIsArray extends boolean = false>(key: TKey, value: TIsArray extends true ? ArrayElementType<TMeta[TKey]> : TMeta[TKey], isArray: boolean | undefined): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
40
46
|
}
|
|
47
|
+
type ArrayElementType<T> = T extends (infer E)[] ? E : never;
|
|
48
|
+
export {};
|
|
41
49
|
//# sourceMappingURL=mate.d.ts.map
|
package/dist/src/mate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mate.d.ts","sourceRoot":"","sources":["../../src/mate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAK,SAAS,CAAA;AAMjD,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAA;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"mate.d.ts","sourceRoot":"","sources":["../../src/mate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,35 @@
|
|
|
1
|
-
import { Mate
|
|
2
|
-
|
|
3
|
-
inherit?: boolean
|
|
4
|
-
fromPropertyCb?: string[]
|
|
5
|
-
|
|
1
|
+
import { Mate } from '..';
|
|
2
|
+
interface TClass {
|
|
3
|
+
inherit?: boolean;
|
|
4
|
+
fromPropertyCb?: string[];
|
|
5
|
+
d1?: string;
|
|
6
|
+
d2?: string;
|
|
7
|
+
d3?: string;
|
|
8
|
+
multi?: string;
|
|
9
|
+
class?: string;
|
|
10
|
+
classArray?: string[];
|
|
11
|
+
fromProperty?: string;
|
|
12
|
+
}
|
|
13
|
+
interface TProp {
|
|
14
|
+
inherit?: boolean;
|
|
15
|
+
fromPropertyCb?: string[];
|
|
16
|
+
prop1D?: string;
|
|
17
|
+
prop2D?: string;
|
|
18
|
+
method?: string;
|
|
19
|
+
methodArray?: string[];
|
|
20
|
+
method2?: string;
|
|
21
|
+
property?: string;
|
|
22
|
+
empty?: string;
|
|
23
|
+
}
|
|
24
|
+
interface TParam {
|
|
25
|
+
inherit?: boolean;
|
|
26
|
+
propS?: string;
|
|
27
|
+
param?: string;
|
|
28
|
+
param1?: string;
|
|
29
|
+
param2?: string;
|
|
30
|
+
paramArray?: string[];
|
|
31
|
+
}
|
|
32
|
+
export declare const mate: Mate<TClass, TProp, TParam>;
|
|
6
33
|
export declare class MateTestClass {
|
|
7
34
|
constructor(_a: string);
|
|
8
35
|
prop1?: string;
|
|
@@ -10,11 +37,12 @@ export declare class MateTestClass {
|
|
|
10
37
|
test(_b: string): string;
|
|
11
38
|
viaCB(_c: string): void;
|
|
12
39
|
param: string;
|
|
40
|
+
empty(): void;
|
|
13
41
|
}
|
|
14
42
|
export declare class MateTestClass2 {
|
|
15
43
|
constructor(a: string);
|
|
16
44
|
test(arg1: number, arg2: boolean): void;
|
|
17
|
-
toOverwriteMeta(): void;
|
|
45
|
+
toOverwriteMeta(arg: string): void;
|
|
18
46
|
}
|
|
19
47
|
export declare class MateTestClass3 extends MateTestClass2 {
|
|
20
48
|
constructor();
|
|
@@ -26,4 +54,5 @@ export declare class MateTestClass4 extends MateTestClass2 {
|
|
|
26
54
|
test2(): void;
|
|
27
55
|
toOverwriteMeta(): void;
|
|
28
56
|
}
|
|
57
|
+
export {};
|
|
29
58
|
//# sourceMappingURL=mate.artifacts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mate.artifacts.d.ts","sourceRoot":"","sources":["../../../src/tests/mate.artifacts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"mate.artifacts.d.ts","sourceRoot":"","sources":["../../../src/tests/mate.artifacts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAA;AAEzB,UAAU,MAAM;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,UAAU,KAAK;IACX,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,UAAU,MAAM;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,eAAO,MAAM,IAAI,6BAaf,CAAA;AAcF,qBAIa,aAAa;gBAKd,EAAE,EAAE,MAAM;IAOlB,KAAK,CAAC,EAAE,MAAM,CAAA;IAGd,KAAK,CAAC,EAAE,MAAM,CAAA;IAMd,IAAI,CAKI,EAAE,EAAE,MAAM,GAAG,MAAM;IAgB3B,KAAK,CAMG,EAAE,EAAE,MAAM;IAWlB,KAAK,EAAE,MAAM,CAAK;IAGlB,KAAK;CAGR;AAED,qBACa,cAAc;gBACX,CAAC,EAAE,MAAM;IAOrB,IAAI,CAGD,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IAM9B,eAAe,CAAC,GAAG,EAAE,MAAM;CAG9B;AAED,qBACa,cAAe,SAAQ,cAAc;;IAM9C,KAAK;IAML,eAAe;CAGlB;AAED,qBACa,cAAe,SAAQ,cAAc;;IAM9C,KAAK;IAKL,eAAe;CAGlB"}
|