phecda-core 1.7.0 → 2.0.0-alpha.1
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/index.d.ts +16 -11
- package/dist/index.global.js +130 -79
- package/dist/index.js +138 -83
- package/dist/index.mjs +130 -79
- package/dist/preset/index.global.js +7 -5
- package/dist/preset/index.js +7 -5
- package/dist/preset/index.mjs +7 -5
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ interface PhecdaHandler {
|
|
|
12
12
|
[key: string]: any;
|
|
13
13
|
}
|
|
14
14
|
interface Phecda {
|
|
15
|
+
prototype: any;
|
|
15
16
|
_namespace: {
|
|
16
17
|
__INIT_EVENT__: Set<PropertyKey>;
|
|
17
18
|
__EXPOSE_VAR__: Set<PropertyKey>;
|
|
@@ -76,7 +77,7 @@ declare function addDecoToClass<M extends new (...args: any) => any>(c: M, key:
|
|
|
76
77
|
|
|
77
78
|
declare function Init(target: any, key: PropertyKey): void;
|
|
78
79
|
declare function Bind(value: any): (target: any, k: PropertyKey) => void;
|
|
79
|
-
declare function Rule(rule: RegExp | string | Function | number, info: string, meta?: any): (obj: any, key: PropertyKey) => void;
|
|
80
|
+
declare function Rule(rule: RegExp | string | Function | number, info: string | ((k: string) => string), meta?: any): (obj: any, key: PropertyKey) => void;
|
|
80
81
|
declare function Ignore(target: any, key: PropertyKey): void;
|
|
81
82
|
declare function Clear(target: any, key: PropertyKey): void;
|
|
82
83
|
declare function Err<Fn extends (...args: any) => any>(cb: Fn): (target: any, key: PropertyKey) => void;
|
|
@@ -92,22 +93,26 @@ declare function Inject<K extends keyof PhecdaInjectData>(key: K): PhecdaInjectD
|
|
|
92
93
|
|
|
93
94
|
declare function validate(p: RegExp | string | Function | Object | Number, v: any): Promise<any>;
|
|
94
95
|
declare function getTag<M extends new (...args: any) => any>(Model: M): any;
|
|
95
|
-
declare function mergeOptions(obj1: any, obj2?: any): any;
|
|
96
96
|
|
|
97
97
|
declare function isPhecda(target: any): any;
|
|
98
98
|
declare function init(target: Phecda): void;
|
|
99
99
|
declare function regisInitEvent(target: Phecda, key: string): void;
|
|
100
|
-
declare function
|
|
101
|
-
declare function
|
|
100
|
+
declare function getOwnInitEvent(target: Phecda): string[];
|
|
101
|
+
declare function getInitEvent(target: Phecda): PropertyKey[];
|
|
102
|
+
declare function setModelVar(target: Phecda, key: PropertyKey): void;
|
|
102
103
|
declare function setExposeKey(target: Phecda, key: PropertyKey): void;
|
|
103
104
|
declare function setIgnoreKey(target: Phecda, key: PropertyKey): void;
|
|
104
|
-
declare function
|
|
105
|
-
declare function
|
|
106
|
-
declare function
|
|
105
|
+
declare function getOwnModelState(target: Phecda): string[];
|
|
106
|
+
declare function getModelState(target: Phecda): PropertyKey[];
|
|
107
|
+
declare function getOwnExposeKey(target: Phecda): string[];
|
|
108
|
+
declare function getExposeKey(target: Phecda): PropertyKey[];
|
|
109
|
+
declare function getOwnIgnoreKey(target: Phecda): string[];
|
|
107
110
|
declare function regisHandler(target: Phecda, key: PropertyKey, handler: PhecdaHandler): void;
|
|
108
|
-
declare function
|
|
109
|
-
declare function
|
|
110
|
-
declare function
|
|
111
|
+
declare function getOwnHandler(target: Phecda, key: PropertyKey): PhecdaHandler[];
|
|
112
|
+
declare function getHandler(target: Phecda, key: PropertyKey): any[];
|
|
113
|
+
declare function setState(target: Phecda, key: PropertyKey, state: Record<string, any>): void;
|
|
114
|
+
declare function getOwnState(target: Phecda, key: PropertyKey): Object;
|
|
115
|
+
declare function getState(target: Phecda, key: PropertyKey): any;
|
|
111
116
|
declare function register(instance: Phecda): void;
|
|
112
117
|
declare function registerAsync(instance: Phecda): Promise<void>;
|
|
113
118
|
|
|
@@ -121,4 +126,4 @@ declare function Watcher(eventName: keyof Events, options?: {
|
|
|
121
126
|
declare function Effect(eventName: string, options?: any): (obj: any, key: string) => void;
|
|
122
127
|
declare function Storage(storeKey?: string): (target: any, key?: PropertyKey) => void;
|
|
123
128
|
|
|
124
|
-
export { Assign, Bind, ClassValue, Clear, DataMap, Effect, Empty, Err, Events, Expose, Global, Ignore, Init, Inject, NameSpace, Phecda, PhecdaHandler, PhecdaInjectData, Pipe, Provide, Rule, Storage, Tag, UsePipeOptions, Watcher, activeInstance, addDecoToClass, classToValue, getBind, getExposeKey, getHandler,
|
|
129
|
+
export { Assign, Bind, ClassValue, Clear, DataMap, Effect, Empty, Err, Events, Expose, Global, Ignore, Init, Inject, NameSpace, Phecda, PhecdaHandler, PhecdaInjectData, Pipe, Provide, Rule, Storage, Tag, UsePipeOptions, Watcher, activeInstance, addDecoToClass, classToValue, getBind, getExposeKey, getHandler, getInitEvent, getModelState, getOwnExposeKey, getOwnHandler, getOwnIgnoreKey, getOwnInitEvent, getOwnModelState, getOwnState, getProperty, getState, getTag, init, injectProperty, isPhecda, plainToClass, regisHandler, regisInitEvent, register, registerAsync, setExposeKey, setIgnoreKey, setModelVar, setState, snapShot, to, validate };
|
package/dist/index.global.js
CHANGED
|
@@ -46,17 +46,20 @@ var Phecda = (() => {
|
|
|
46
46
|
getBind: () => getBind,
|
|
47
47
|
getExposeKey: () => getExposeKey,
|
|
48
48
|
getHandler: () => getHandler,
|
|
49
|
-
getIgnoreKey: () => getIgnoreKey,
|
|
50
49
|
getInitEvent: () => getInitEvent,
|
|
51
50
|
getModelState: () => getModelState,
|
|
51
|
+
getOwnExposeKey: () => getOwnExposeKey,
|
|
52
|
+
getOwnHandler: () => getOwnHandler,
|
|
53
|
+
getOwnIgnoreKey: () => getOwnIgnoreKey,
|
|
54
|
+
getOwnInitEvent: () => getOwnInitEvent,
|
|
55
|
+
getOwnModelState: () => getOwnModelState,
|
|
56
|
+
getOwnState: () => getOwnState,
|
|
52
57
|
getProperty: () => getProperty,
|
|
53
58
|
getState: () => getState,
|
|
54
59
|
getTag: () => getTag,
|
|
55
60
|
init: () => init,
|
|
56
61
|
injectProperty: () => injectProperty,
|
|
57
62
|
isPhecda: () => isPhecda,
|
|
58
|
-
mergeOptions: () => mergeOptions,
|
|
59
|
-
mergeState: () => mergeState,
|
|
60
63
|
plainToClass: () => plainToClass,
|
|
61
64
|
regisHandler: () => regisHandler,
|
|
62
65
|
regisInitEvent: () => regisInitEvent,
|
|
@@ -64,58 +67,22 @@ var Phecda = (() => {
|
|
|
64
67
|
registerAsync: () => registerAsync,
|
|
65
68
|
setExposeKey: () => setExposeKey,
|
|
66
69
|
setIgnoreKey: () => setIgnoreKey,
|
|
67
|
-
|
|
70
|
+
setModelVar: () => setModelVar,
|
|
71
|
+
setState: () => setState,
|
|
68
72
|
snapShot: () => snapShot,
|
|
69
73
|
to: () => to,
|
|
70
74
|
validate: () => validate
|
|
71
75
|
});
|
|
72
76
|
|
|
73
|
-
// src/utils.ts
|
|
74
|
-
async function validate(p, v) {
|
|
75
|
-
if (typeof p === "string" || typeof p === "number") {
|
|
76
|
-
if (v === p)
|
|
77
|
-
return true;
|
|
78
|
-
}
|
|
79
|
-
if (typeof p === "function")
|
|
80
|
-
return p(v);
|
|
81
|
-
if (p instanceof RegExp)
|
|
82
|
-
return p.test(v);
|
|
83
|
-
return false;
|
|
84
|
-
}
|
|
85
|
-
__name(validate, "validate");
|
|
86
|
-
function getTag(Model) {
|
|
87
|
-
return Model.prototype?.__TAG__;
|
|
88
|
-
}
|
|
89
|
-
__name(getTag, "getTag");
|
|
90
|
-
function mergeOptions(obj1, obj2) {
|
|
91
|
-
if (!obj2)
|
|
92
|
-
return obj1;
|
|
93
|
-
for (const i in obj2) {
|
|
94
|
-
if (isObject(obj1[i]) && isObject(obj2[i])) {
|
|
95
|
-
mergeOptions(obj1[i], obj2[i]);
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
if (Array.isArray(obj1[i]) && Array.isArray(obj2[i])) {
|
|
99
|
-
obj1[i].push(...obj2[i].filter((item) => !obj1[i].includes(item)));
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
obj1[i] = obj2[i];
|
|
103
|
-
}
|
|
104
|
-
return obj1;
|
|
105
|
-
}
|
|
106
|
-
__name(mergeOptions, "mergeOptions");
|
|
107
|
-
function isObject(obj) {
|
|
108
|
-
return Object.prototype.toString.call(obj) === "[object Object]";
|
|
109
|
-
}
|
|
110
|
-
__name(isObject, "isObject");
|
|
111
|
-
|
|
112
77
|
// src/core.ts
|
|
113
78
|
function isPhecda(target) {
|
|
114
79
|
return target && !!target.prototype._namespace;
|
|
115
80
|
}
|
|
116
81
|
__name(isPhecda, "isPhecda");
|
|
117
82
|
function init(target) {
|
|
118
|
-
if (!target
|
|
83
|
+
if (!target)
|
|
84
|
+
return;
|
|
85
|
+
if (!target.hasOwnProperty("_namespace")) {
|
|
119
86
|
target._namespace = {
|
|
120
87
|
__INIT_EVENT__: /* @__PURE__ */ new Set(),
|
|
121
88
|
__EXPOSE_VAR__: /* @__PURE__ */ new Set(),
|
|
@@ -132,19 +99,32 @@ var Phecda = (() => {
|
|
|
132
99
|
target._namespace.__INIT_EVENT__.add(key);
|
|
133
100
|
}
|
|
134
101
|
__name(regisInitEvent, "regisInitEvent");
|
|
135
|
-
function
|
|
136
|
-
|
|
102
|
+
function getOwnInitEvent(target) {
|
|
103
|
+
if (!target?._namespace)
|
|
104
|
+
return [];
|
|
137
105
|
return [
|
|
138
106
|
...target._namespace.__INIT_EVENT__
|
|
139
107
|
];
|
|
140
108
|
}
|
|
109
|
+
__name(getOwnInitEvent, "getOwnInitEvent");
|
|
110
|
+
function getInitEvent(target) {
|
|
111
|
+
let proto = Object.getPrototypeOf(target);
|
|
112
|
+
const set = /* @__PURE__ */ new Set();
|
|
113
|
+
while (proto?._namespace) {
|
|
114
|
+
proto._namespace.__INIT_EVENT__.forEach((item) => set.add(item));
|
|
115
|
+
proto = Object.getPrototypeOf(proto);
|
|
116
|
+
}
|
|
117
|
+
return [
|
|
118
|
+
...set
|
|
119
|
+
];
|
|
120
|
+
}
|
|
141
121
|
__name(getInitEvent, "getInitEvent");
|
|
142
|
-
function
|
|
122
|
+
function setModelVar(target, key) {
|
|
143
123
|
init(target);
|
|
144
124
|
target._namespace.__STATE_VAR__.add(key);
|
|
145
125
|
setExposeKey(target, key);
|
|
146
126
|
}
|
|
147
|
-
__name(
|
|
127
|
+
__name(setModelVar, "setModelVar");
|
|
148
128
|
function setExposeKey(target, key) {
|
|
149
129
|
init(target);
|
|
150
130
|
target._namespace.__EXPOSE_VAR__.add(key);
|
|
@@ -155,27 +135,54 @@ var Phecda = (() => {
|
|
|
155
135
|
target._namespace.__IGNORE_VAR__.add(key);
|
|
156
136
|
}
|
|
157
137
|
__name(setIgnoreKey, "setIgnoreKey");
|
|
158
|
-
function
|
|
159
|
-
|
|
138
|
+
function getOwnModelState(target) {
|
|
139
|
+
target = Object.getPrototypeOf(target);
|
|
160
140
|
return [
|
|
161
141
|
...target._namespace.__STATE_VAR__
|
|
162
142
|
];
|
|
163
143
|
}
|
|
144
|
+
__name(getOwnModelState, "getOwnModelState");
|
|
145
|
+
function getModelState(target) {
|
|
146
|
+
let proto = Object.getPrototypeOf(target);
|
|
147
|
+
const set = /* @__PURE__ */ new Set();
|
|
148
|
+
while (proto?._namespace) {
|
|
149
|
+
proto._namespace.__STATE_VAR__.forEach((item) => set.add(item));
|
|
150
|
+
proto = Object.getPrototypeOf(proto);
|
|
151
|
+
}
|
|
152
|
+
return [
|
|
153
|
+
...set
|
|
154
|
+
];
|
|
155
|
+
}
|
|
164
156
|
__name(getModelState, "getModelState");
|
|
165
|
-
function
|
|
166
|
-
|
|
157
|
+
function getOwnExposeKey(target) {
|
|
158
|
+
target = Object.getPrototypeOf(target);
|
|
167
159
|
return [
|
|
168
160
|
...target._namespace.__EXPOSE_VAR__
|
|
169
161
|
].filter((item) => !target._namespace.__IGNORE_VAR__.has(item));
|
|
170
162
|
}
|
|
163
|
+
__name(getOwnExposeKey, "getOwnExposeKey");
|
|
164
|
+
function getExposeKey(target) {
|
|
165
|
+
let proto = Object.getPrototypeOf(target);
|
|
166
|
+
const set = /* @__PURE__ */ new Set();
|
|
167
|
+
while (proto?._namespace) {
|
|
168
|
+
[
|
|
169
|
+
...proto._namespace.__EXPOSE_VAR__
|
|
170
|
+
].forEach((item) => !proto._namespace.__IGNORE_VAR__.has(item) && set.add(item));
|
|
171
|
+
proto = Object.getPrototypeOf(proto);
|
|
172
|
+
}
|
|
173
|
+
return [
|
|
174
|
+
...set
|
|
175
|
+
];
|
|
176
|
+
}
|
|
171
177
|
__name(getExposeKey, "getExposeKey");
|
|
172
|
-
function
|
|
173
|
-
|
|
178
|
+
function getOwnIgnoreKey(target) {
|
|
179
|
+
if (!target?._namespace)
|
|
180
|
+
return [];
|
|
174
181
|
return [
|
|
175
182
|
...target._namespace.__IGNORE_VAR__
|
|
176
183
|
];
|
|
177
184
|
}
|
|
178
|
-
__name(
|
|
185
|
+
__name(getOwnIgnoreKey, "getOwnIgnoreKey");
|
|
179
186
|
function regisHandler(target, key, handler) {
|
|
180
187
|
init(target);
|
|
181
188
|
if (!target._namespace.__STATE_HANDLER__.has(key))
|
|
@@ -186,22 +193,48 @@ var Phecda = (() => {
|
|
|
186
193
|
target._namespace.__STATE_HANDLER__.get(key).push(handler);
|
|
187
194
|
}
|
|
188
195
|
__name(regisHandler, "regisHandler");
|
|
189
|
-
function
|
|
196
|
+
function getOwnHandler(target, key) {
|
|
197
|
+
if (!target?._namespace)
|
|
198
|
+
return [];
|
|
190
199
|
return target._namespace.__STATE_HANDLER__.get(key) || [];
|
|
191
200
|
}
|
|
201
|
+
__name(getOwnHandler, "getOwnHandler");
|
|
202
|
+
function getHandler(target, key) {
|
|
203
|
+
let proto = Object.getPrototypeOf(target);
|
|
204
|
+
const set = /* @__PURE__ */ new Set();
|
|
205
|
+
while (proto?._namespace) {
|
|
206
|
+
proto._namespace.__STATE_HANDLER__.get(key)?.forEach((item) => set.add(item));
|
|
207
|
+
proto = Object.getPrototypeOf(proto);
|
|
208
|
+
}
|
|
209
|
+
return [
|
|
210
|
+
...set
|
|
211
|
+
];
|
|
212
|
+
}
|
|
192
213
|
__name(getHandler, "getHandler");
|
|
193
|
-
function
|
|
214
|
+
function setState(target, key, state) {
|
|
215
|
+
init(target);
|
|
194
216
|
const namespace = target._namespace.__STATE_NAMESPACE__;
|
|
195
|
-
|
|
196
|
-
namespace.set(key, state);
|
|
197
|
-
else
|
|
198
|
-
mergeOptions(namespace.get(key), state);
|
|
217
|
+
namespace.set(key, state);
|
|
199
218
|
}
|
|
200
|
-
__name(
|
|
219
|
+
__name(setState, "setState");
|
|
220
|
+
function getOwnState(target, key) {
|
|
221
|
+
target = Object.getPrototypeOf(target);
|
|
222
|
+
return target._namespace.__STATE_NAMESPACE__.get(key) || {};
|
|
223
|
+
}
|
|
224
|
+
__name(getOwnState, "getOwnState");
|
|
201
225
|
function getState(target, key) {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
226
|
+
let proto = Object.getPrototypeOf(target);
|
|
227
|
+
let ret = {};
|
|
228
|
+
while (proto?._namespace) {
|
|
229
|
+
const state = proto._namespace.__STATE_NAMESPACE__.get(key);
|
|
230
|
+
if (state)
|
|
231
|
+
ret = {
|
|
232
|
+
...state,
|
|
233
|
+
...ret
|
|
234
|
+
};
|
|
235
|
+
proto = Object.getPrototypeOf(proto);
|
|
236
|
+
}
|
|
237
|
+
return ret;
|
|
205
238
|
}
|
|
206
239
|
__name(getState, "getState");
|
|
207
240
|
function register(instance) {
|
|
@@ -225,7 +258,7 @@ var Phecda = (() => {
|
|
|
225
258
|
|
|
226
259
|
// src/decorators.ts
|
|
227
260
|
function Init(target, key) {
|
|
228
|
-
|
|
261
|
+
setModelVar(target, key);
|
|
229
262
|
regisHandler(target, key, {
|
|
230
263
|
async init(instance) {
|
|
231
264
|
instance[key]();
|
|
@@ -235,8 +268,8 @@ var Phecda = (() => {
|
|
|
235
268
|
__name(Init, "Init");
|
|
236
269
|
function Bind(value) {
|
|
237
270
|
return (target, k) => {
|
|
238
|
-
|
|
239
|
-
|
|
271
|
+
setModelVar(target, k);
|
|
272
|
+
setState(target, k, {
|
|
240
273
|
value
|
|
241
274
|
});
|
|
242
275
|
};
|
|
@@ -244,7 +277,7 @@ var Phecda = (() => {
|
|
|
244
277
|
__name(Bind, "Bind");
|
|
245
278
|
function Rule(rule, info, meta) {
|
|
246
279
|
return (obj, key) => {
|
|
247
|
-
|
|
280
|
+
setModelVar(obj, key);
|
|
248
281
|
regisHandler(obj, key, {
|
|
249
282
|
rule,
|
|
250
283
|
info,
|
|
@@ -269,7 +302,7 @@ var Phecda = (() => {
|
|
|
269
302
|
__name(Clear, "Clear");
|
|
270
303
|
function Err(cb) {
|
|
271
304
|
return (target, key) => {
|
|
272
|
-
|
|
305
|
+
setModelVar(target, key);
|
|
273
306
|
regisHandler(target, key, {
|
|
274
307
|
error: cb
|
|
275
308
|
});
|
|
@@ -282,7 +315,7 @@ var Phecda = (() => {
|
|
|
282
315
|
__name(Expose, "Expose");
|
|
283
316
|
function Pipe(v) {
|
|
284
317
|
return (obj, key) => {
|
|
285
|
-
|
|
318
|
+
setModelVar(obj, key);
|
|
286
319
|
regisHandler(obj, key, {
|
|
287
320
|
async pipe(instance) {
|
|
288
321
|
const tasks = v.value;
|
|
@@ -302,7 +335,7 @@ var Phecda = (() => {
|
|
|
302
335
|
function Assign(cb) {
|
|
303
336
|
return (target) => {
|
|
304
337
|
init(target.prototype);
|
|
305
|
-
|
|
338
|
+
setModelVar(target.prototype, "__CLASS");
|
|
306
339
|
regisHandler(target.prototype, "__CLASS", {
|
|
307
340
|
init: async (instance) => {
|
|
308
341
|
const value = await cb(instance);
|
|
@@ -336,6 +369,24 @@ var Phecda = (() => {
|
|
|
336
369
|
}
|
|
337
370
|
__name(Inject, "Inject");
|
|
338
371
|
|
|
372
|
+
// src/utils.ts
|
|
373
|
+
async function validate(p, v) {
|
|
374
|
+
if (typeof p === "string" || typeof p === "number") {
|
|
375
|
+
if (v === p)
|
|
376
|
+
return true;
|
|
377
|
+
}
|
|
378
|
+
if (typeof p === "function")
|
|
379
|
+
return p(v);
|
|
380
|
+
if (p instanceof RegExp)
|
|
381
|
+
return p.test(v);
|
|
382
|
+
return false;
|
|
383
|
+
}
|
|
384
|
+
__name(validate, "validate");
|
|
385
|
+
function getTag(Model) {
|
|
386
|
+
return Model.prototype?.__TAG__;
|
|
387
|
+
}
|
|
388
|
+
__name(getTag, "getTag");
|
|
389
|
+
|
|
339
390
|
// src/helper.ts
|
|
340
391
|
function getBind(Model) {
|
|
341
392
|
const instance = new Model();
|
|
@@ -361,7 +412,7 @@ var Phecda = (() => {
|
|
|
361
412
|
for (const handler of handlers) {
|
|
362
413
|
const rule = handler.rule;
|
|
363
414
|
if (rule && !await validate(rule, data[item])) {
|
|
364
|
-
err.push(handler.info
|
|
415
|
+
err.push(typeof handler.info === "function" ? handler.info(item) : handler.info);
|
|
365
416
|
if (!options.collectError)
|
|
366
417
|
break;
|
|
367
418
|
}
|
|
@@ -386,8 +437,8 @@ var Phecda = (() => {
|
|
|
386
437
|
__name(plainToClass, "plainToClass");
|
|
387
438
|
function classToValue(instance) {
|
|
388
439
|
const data = {};
|
|
389
|
-
const
|
|
390
|
-
for (const item of
|
|
440
|
+
const exposeVars = getExposeKey(instance);
|
|
441
|
+
for (const item of exposeVars)
|
|
391
442
|
data[item] = instance[item];
|
|
392
443
|
return data;
|
|
393
444
|
}
|
|
@@ -438,7 +489,7 @@ var Phecda = (() => {
|
|
|
438
489
|
// src/custom/decorator.ts
|
|
439
490
|
function Watcher(eventName, options) {
|
|
440
491
|
return (obj, key) => {
|
|
441
|
-
|
|
492
|
+
setModelVar(obj, key);
|
|
442
493
|
regisHandler(obj, key, {
|
|
443
494
|
init(instance) {
|
|
444
495
|
getProperty("watcher")?.({
|
|
@@ -454,7 +505,7 @@ var Phecda = (() => {
|
|
|
454
505
|
__name(Watcher, "Watcher");
|
|
455
506
|
function Effect(eventName, options) {
|
|
456
507
|
return (obj, key) => {
|
|
457
|
-
|
|
508
|
+
setModelVar(obj, key);
|
|
458
509
|
regisHandler(obj, key, {
|
|
459
510
|
init(instance) {
|
|
460
511
|
instance[`$_${key}`] = instance[key];
|
|
@@ -485,7 +536,7 @@ var Phecda = (() => {
|
|
|
485
536
|
init(target);
|
|
486
537
|
tag = storeKey || target.__TAG__;
|
|
487
538
|
const uniTag = Symbol(tag);
|
|
488
|
-
|
|
539
|
+
setModelVar(target, uniTag);
|
|
489
540
|
regisHandler(target, uniTag, {
|
|
490
541
|
init: (instance) => {
|
|
491
542
|
getProperty("storage")?.({
|
|
@@ -499,7 +550,7 @@ var Phecda = (() => {
|
|
|
499
550
|
init(target.prototype);
|
|
500
551
|
tag = storeKey || `${target.prototype.__TAG__}_${key}`;
|
|
501
552
|
const uniTag = Symbol(tag);
|
|
502
|
-
|
|
553
|
+
setModelVar(target.prototype, uniTag);
|
|
503
554
|
regisHandler(target.prototype, uniTag, {
|
|
504
555
|
init: (instance) => {
|
|
505
556
|
getProperty("storage")?.({
|
package/dist/index.js
CHANGED
|
@@ -45,17 +45,20 @@ __export(src_exports, {
|
|
|
45
45
|
getBind: () => getBind,
|
|
46
46
|
getExposeKey: () => getExposeKey,
|
|
47
47
|
getHandler: () => getHandler,
|
|
48
|
-
getIgnoreKey: () => getIgnoreKey,
|
|
49
48
|
getInitEvent: () => getInitEvent,
|
|
50
49
|
getModelState: () => getModelState,
|
|
50
|
+
getOwnExposeKey: () => getOwnExposeKey,
|
|
51
|
+
getOwnHandler: () => getOwnHandler,
|
|
52
|
+
getOwnIgnoreKey: () => getOwnIgnoreKey,
|
|
53
|
+
getOwnInitEvent: () => getOwnInitEvent,
|
|
54
|
+
getOwnModelState: () => getOwnModelState,
|
|
55
|
+
getOwnState: () => getOwnState,
|
|
51
56
|
getProperty: () => getProperty,
|
|
52
57
|
getState: () => getState,
|
|
53
58
|
getTag: () => getTag,
|
|
54
59
|
init: () => init,
|
|
55
60
|
injectProperty: () => injectProperty,
|
|
56
61
|
isPhecda: () => isPhecda,
|
|
57
|
-
mergeOptions: () => mergeOptions,
|
|
58
|
-
mergeState: () => mergeState,
|
|
59
62
|
plainToClass: () => plainToClass,
|
|
60
63
|
regisHandler: () => regisHandler,
|
|
61
64
|
regisInitEvent: () => regisInitEvent,
|
|
@@ -63,59 +66,23 @@ __export(src_exports, {
|
|
|
63
66
|
registerAsync: () => registerAsync,
|
|
64
67
|
setExposeKey: () => setExposeKey,
|
|
65
68
|
setIgnoreKey: () => setIgnoreKey,
|
|
66
|
-
|
|
69
|
+
setModelVar: () => setModelVar,
|
|
70
|
+
setState: () => setState,
|
|
67
71
|
snapShot: () => snapShot,
|
|
68
72
|
to: () => to,
|
|
69
73
|
validate: () => validate
|
|
70
74
|
});
|
|
71
75
|
module.exports = __toCommonJS(src_exports);
|
|
72
76
|
|
|
73
|
-
// src/utils.ts
|
|
74
|
-
async function validate(p, v) {
|
|
75
|
-
if (typeof p === "string" || typeof p === "number") {
|
|
76
|
-
if (v === p)
|
|
77
|
-
return true;
|
|
78
|
-
}
|
|
79
|
-
if (typeof p === "function")
|
|
80
|
-
return p(v);
|
|
81
|
-
if (p instanceof RegExp)
|
|
82
|
-
return p.test(v);
|
|
83
|
-
return false;
|
|
84
|
-
}
|
|
85
|
-
__name(validate, "validate");
|
|
86
|
-
function getTag(Model) {
|
|
87
|
-
return Model.prototype?.__TAG__;
|
|
88
|
-
}
|
|
89
|
-
__name(getTag, "getTag");
|
|
90
|
-
function mergeOptions(obj1, obj2) {
|
|
91
|
-
if (!obj2)
|
|
92
|
-
return obj1;
|
|
93
|
-
for (const i in obj2) {
|
|
94
|
-
if (isObject(obj1[i]) && isObject(obj2[i])) {
|
|
95
|
-
mergeOptions(obj1[i], obj2[i]);
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
if (Array.isArray(obj1[i]) && Array.isArray(obj2[i])) {
|
|
99
|
-
obj1[i].push(...obj2[i].filter((item) => !obj1[i].includes(item)));
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
obj1[i] = obj2[i];
|
|
103
|
-
}
|
|
104
|
-
return obj1;
|
|
105
|
-
}
|
|
106
|
-
__name(mergeOptions, "mergeOptions");
|
|
107
|
-
function isObject(obj) {
|
|
108
|
-
return Object.prototype.toString.call(obj) === "[object Object]";
|
|
109
|
-
}
|
|
110
|
-
__name(isObject, "isObject");
|
|
111
|
-
|
|
112
77
|
// src/core.ts
|
|
113
78
|
function isPhecda(target) {
|
|
114
79
|
return target && !!target.prototype._namespace;
|
|
115
80
|
}
|
|
116
81
|
__name(isPhecda, "isPhecda");
|
|
117
82
|
function init(target) {
|
|
118
|
-
if (!target
|
|
83
|
+
if (!target)
|
|
84
|
+
return;
|
|
85
|
+
if (!target.hasOwnProperty("_namespace")) {
|
|
119
86
|
target._namespace = {
|
|
120
87
|
__INIT_EVENT__: /* @__PURE__ */ new Set(),
|
|
121
88
|
__EXPOSE_VAR__: /* @__PURE__ */ new Set(),
|
|
@@ -132,19 +99,32 @@ function regisInitEvent(target, key) {
|
|
|
132
99
|
target._namespace.__INIT_EVENT__.add(key);
|
|
133
100
|
}
|
|
134
101
|
__name(regisInitEvent, "regisInitEvent");
|
|
135
|
-
function
|
|
136
|
-
|
|
102
|
+
function getOwnInitEvent(target) {
|
|
103
|
+
if (!target?._namespace)
|
|
104
|
+
return [];
|
|
137
105
|
return [
|
|
138
106
|
...target._namespace.__INIT_EVENT__
|
|
139
107
|
];
|
|
140
108
|
}
|
|
109
|
+
__name(getOwnInitEvent, "getOwnInitEvent");
|
|
110
|
+
function getInitEvent(target) {
|
|
111
|
+
let proto = Object.getPrototypeOf(target);
|
|
112
|
+
const set = /* @__PURE__ */ new Set();
|
|
113
|
+
while (proto?._namespace) {
|
|
114
|
+
proto._namespace.__INIT_EVENT__.forEach((item) => set.add(item));
|
|
115
|
+
proto = Object.getPrototypeOf(proto);
|
|
116
|
+
}
|
|
117
|
+
return [
|
|
118
|
+
...set
|
|
119
|
+
];
|
|
120
|
+
}
|
|
141
121
|
__name(getInitEvent, "getInitEvent");
|
|
142
|
-
function
|
|
122
|
+
function setModelVar(target, key) {
|
|
143
123
|
init(target);
|
|
144
124
|
target._namespace.__STATE_VAR__.add(key);
|
|
145
125
|
setExposeKey(target, key);
|
|
146
126
|
}
|
|
147
|
-
__name(
|
|
127
|
+
__name(setModelVar, "setModelVar");
|
|
148
128
|
function setExposeKey(target, key) {
|
|
149
129
|
init(target);
|
|
150
130
|
target._namespace.__EXPOSE_VAR__.add(key);
|
|
@@ -155,27 +135,54 @@ function setIgnoreKey(target, key) {
|
|
|
155
135
|
target._namespace.__IGNORE_VAR__.add(key);
|
|
156
136
|
}
|
|
157
137
|
__name(setIgnoreKey, "setIgnoreKey");
|
|
158
|
-
function
|
|
159
|
-
|
|
138
|
+
function getOwnModelState(target) {
|
|
139
|
+
target = Object.getPrototypeOf(target);
|
|
160
140
|
return [
|
|
161
141
|
...target._namespace.__STATE_VAR__
|
|
162
142
|
];
|
|
163
143
|
}
|
|
144
|
+
__name(getOwnModelState, "getOwnModelState");
|
|
145
|
+
function getModelState(target) {
|
|
146
|
+
let proto = Object.getPrototypeOf(target);
|
|
147
|
+
const set = /* @__PURE__ */ new Set();
|
|
148
|
+
while (proto?._namespace) {
|
|
149
|
+
proto._namespace.__STATE_VAR__.forEach((item) => set.add(item));
|
|
150
|
+
proto = Object.getPrototypeOf(proto);
|
|
151
|
+
}
|
|
152
|
+
return [
|
|
153
|
+
...set
|
|
154
|
+
];
|
|
155
|
+
}
|
|
164
156
|
__name(getModelState, "getModelState");
|
|
165
|
-
function
|
|
166
|
-
|
|
157
|
+
function getOwnExposeKey(target) {
|
|
158
|
+
target = Object.getPrototypeOf(target);
|
|
167
159
|
return [
|
|
168
160
|
...target._namespace.__EXPOSE_VAR__
|
|
169
161
|
].filter((item) => !target._namespace.__IGNORE_VAR__.has(item));
|
|
170
162
|
}
|
|
163
|
+
__name(getOwnExposeKey, "getOwnExposeKey");
|
|
164
|
+
function getExposeKey(target) {
|
|
165
|
+
let proto = Object.getPrototypeOf(target);
|
|
166
|
+
const set = /* @__PURE__ */ new Set();
|
|
167
|
+
while (proto?._namespace) {
|
|
168
|
+
[
|
|
169
|
+
...proto._namespace.__EXPOSE_VAR__
|
|
170
|
+
].forEach((item) => !proto._namespace.__IGNORE_VAR__.has(item) && set.add(item));
|
|
171
|
+
proto = Object.getPrototypeOf(proto);
|
|
172
|
+
}
|
|
173
|
+
return [
|
|
174
|
+
...set
|
|
175
|
+
];
|
|
176
|
+
}
|
|
171
177
|
__name(getExposeKey, "getExposeKey");
|
|
172
|
-
function
|
|
173
|
-
|
|
178
|
+
function getOwnIgnoreKey(target) {
|
|
179
|
+
if (!target?._namespace)
|
|
180
|
+
return [];
|
|
174
181
|
return [
|
|
175
182
|
...target._namespace.__IGNORE_VAR__
|
|
176
183
|
];
|
|
177
184
|
}
|
|
178
|
-
__name(
|
|
185
|
+
__name(getOwnIgnoreKey, "getOwnIgnoreKey");
|
|
179
186
|
function regisHandler(target, key, handler) {
|
|
180
187
|
init(target);
|
|
181
188
|
if (!target._namespace.__STATE_HANDLER__.has(key))
|
|
@@ -186,22 +193,48 @@ function regisHandler(target, key, handler) {
|
|
|
186
193
|
target._namespace.__STATE_HANDLER__.get(key).push(handler);
|
|
187
194
|
}
|
|
188
195
|
__name(regisHandler, "regisHandler");
|
|
189
|
-
function
|
|
196
|
+
function getOwnHandler(target, key) {
|
|
197
|
+
if (!target?._namespace)
|
|
198
|
+
return [];
|
|
190
199
|
return target._namespace.__STATE_HANDLER__.get(key) || [];
|
|
191
200
|
}
|
|
201
|
+
__name(getOwnHandler, "getOwnHandler");
|
|
202
|
+
function getHandler(target, key) {
|
|
203
|
+
let proto = Object.getPrototypeOf(target);
|
|
204
|
+
const set = /* @__PURE__ */ new Set();
|
|
205
|
+
while (proto?._namespace) {
|
|
206
|
+
proto._namespace.__STATE_HANDLER__.get(key)?.forEach((item) => set.add(item));
|
|
207
|
+
proto = Object.getPrototypeOf(proto);
|
|
208
|
+
}
|
|
209
|
+
return [
|
|
210
|
+
...set
|
|
211
|
+
];
|
|
212
|
+
}
|
|
192
213
|
__name(getHandler, "getHandler");
|
|
193
|
-
function
|
|
214
|
+
function setState(target, key, state) {
|
|
215
|
+
init(target);
|
|
194
216
|
const namespace = target._namespace.__STATE_NAMESPACE__;
|
|
195
|
-
|
|
196
|
-
namespace.set(key, state);
|
|
197
|
-
else
|
|
198
|
-
mergeOptions(namespace.get(key), state);
|
|
217
|
+
namespace.set(key, state);
|
|
199
218
|
}
|
|
200
|
-
__name(
|
|
219
|
+
__name(setState, "setState");
|
|
220
|
+
function getOwnState(target, key) {
|
|
221
|
+
target = Object.getPrototypeOf(target);
|
|
222
|
+
return target._namespace.__STATE_NAMESPACE__.get(key) || {};
|
|
223
|
+
}
|
|
224
|
+
__name(getOwnState, "getOwnState");
|
|
201
225
|
function getState(target, key) {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
226
|
+
let proto = Object.getPrototypeOf(target);
|
|
227
|
+
let ret = {};
|
|
228
|
+
while (proto?._namespace) {
|
|
229
|
+
const state = proto._namespace.__STATE_NAMESPACE__.get(key);
|
|
230
|
+
if (state)
|
|
231
|
+
ret = {
|
|
232
|
+
...state,
|
|
233
|
+
...ret
|
|
234
|
+
};
|
|
235
|
+
proto = Object.getPrototypeOf(proto);
|
|
236
|
+
}
|
|
237
|
+
return ret;
|
|
205
238
|
}
|
|
206
239
|
__name(getState, "getState");
|
|
207
240
|
function register(instance) {
|
|
@@ -225,7 +258,7 @@ __name(registerAsync, "registerAsync");
|
|
|
225
258
|
|
|
226
259
|
// src/decorators.ts
|
|
227
260
|
function Init(target, key) {
|
|
228
|
-
|
|
261
|
+
setModelVar(target, key);
|
|
229
262
|
regisHandler(target, key, {
|
|
230
263
|
async init(instance) {
|
|
231
264
|
instance[key]();
|
|
@@ -235,8 +268,8 @@ function Init(target, key) {
|
|
|
235
268
|
__name(Init, "Init");
|
|
236
269
|
function Bind(value) {
|
|
237
270
|
return (target, k) => {
|
|
238
|
-
|
|
239
|
-
|
|
271
|
+
setModelVar(target, k);
|
|
272
|
+
setState(target, k, {
|
|
240
273
|
value
|
|
241
274
|
});
|
|
242
275
|
};
|
|
@@ -244,7 +277,7 @@ function Bind(value) {
|
|
|
244
277
|
__name(Bind, "Bind");
|
|
245
278
|
function Rule(rule, info, meta) {
|
|
246
279
|
return (obj, key) => {
|
|
247
|
-
|
|
280
|
+
setModelVar(obj, key);
|
|
248
281
|
regisHandler(obj, key, {
|
|
249
282
|
rule,
|
|
250
283
|
info,
|
|
@@ -269,7 +302,7 @@ function Clear(target, key) {
|
|
|
269
302
|
__name(Clear, "Clear");
|
|
270
303
|
function Err(cb) {
|
|
271
304
|
return (target, key) => {
|
|
272
|
-
|
|
305
|
+
setModelVar(target, key);
|
|
273
306
|
regisHandler(target, key, {
|
|
274
307
|
error: cb
|
|
275
308
|
});
|
|
@@ -282,7 +315,7 @@ function Expose(target, key) {
|
|
|
282
315
|
__name(Expose, "Expose");
|
|
283
316
|
function Pipe(v) {
|
|
284
317
|
return (obj, key) => {
|
|
285
|
-
|
|
318
|
+
setModelVar(obj, key);
|
|
286
319
|
regisHandler(obj, key, {
|
|
287
320
|
async pipe(instance) {
|
|
288
321
|
const tasks = v.value;
|
|
@@ -302,7 +335,7 @@ __name(Tag, "Tag");
|
|
|
302
335
|
function Assign(cb) {
|
|
303
336
|
return (target) => {
|
|
304
337
|
init(target.prototype);
|
|
305
|
-
|
|
338
|
+
setModelVar(target.prototype, "__CLASS");
|
|
306
339
|
regisHandler(target.prototype, "__CLASS", {
|
|
307
340
|
init: async (instance) => {
|
|
308
341
|
const value = await cb(instance);
|
|
@@ -336,6 +369,24 @@ function Inject(key) {
|
|
|
336
369
|
}
|
|
337
370
|
__name(Inject, "Inject");
|
|
338
371
|
|
|
372
|
+
// src/utils.ts
|
|
373
|
+
async function validate(p, v) {
|
|
374
|
+
if (typeof p === "string" || typeof p === "number") {
|
|
375
|
+
if (v === p)
|
|
376
|
+
return true;
|
|
377
|
+
}
|
|
378
|
+
if (typeof p === "function")
|
|
379
|
+
return p(v);
|
|
380
|
+
if (p instanceof RegExp)
|
|
381
|
+
return p.test(v);
|
|
382
|
+
return false;
|
|
383
|
+
}
|
|
384
|
+
__name(validate, "validate");
|
|
385
|
+
function getTag(Model) {
|
|
386
|
+
return Model.prototype?.__TAG__;
|
|
387
|
+
}
|
|
388
|
+
__name(getTag, "getTag");
|
|
389
|
+
|
|
339
390
|
// src/helper.ts
|
|
340
391
|
function getBind(Model) {
|
|
341
392
|
const instance = new Model();
|
|
@@ -361,7 +412,7 @@ async function plainToClass(Model, input, options = {}) {
|
|
|
361
412
|
for (const handler of handlers) {
|
|
362
413
|
const rule = handler.rule;
|
|
363
414
|
if (rule && !await validate(rule, data[item])) {
|
|
364
|
-
err.push(handler.info
|
|
415
|
+
err.push(typeof handler.info === "function" ? handler.info(item) : handler.info);
|
|
365
416
|
if (!options.collectError)
|
|
366
417
|
break;
|
|
367
418
|
}
|
|
@@ -386,8 +437,8 @@ async function plainToClass(Model, input, options = {}) {
|
|
|
386
437
|
__name(plainToClass, "plainToClass");
|
|
387
438
|
function classToValue(instance) {
|
|
388
439
|
const data = {};
|
|
389
|
-
const
|
|
390
|
-
for (const item of
|
|
440
|
+
const exposeVars = getExposeKey(instance);
|
|
441
|
+
for (const item of exposeVars)
|
|
391
442
|
data[item] = instance[item];
|
|
392
443
|
return data;
|
|
393
444
|
}
|
|
@@ -438,7 +489,7 @@ __name(getProperty, "getProperty");
|
|
|
438
489
|
// src/custom/decorator.ts
|
|
439
490
|
function Watcher(eventName, options) {
|
|
440
491
|
return (obj, key) => {
|
|
441
|
-
|
|
492
|
+
setModelVar(obj, key);
|
|
442
493
|
regisHandler(obj, key, {
|
|
443
494
|
init(instance) {
|
|
444
495
|
getProperty("watcher")?.({
|
|
@@ -454,7 +505,7 @@ function Watcher(eventName, options) {
|
|
|
454
505
|
__name(Watcher, "Watcher");
|
|
455
506
|
function Effect(eventName, options) {
|
|
456
507
|
return (obj, key) => {
|
|
457
|
-
|
|
508
|
+
setModelVar(obj, key);
|
|
458
509
|
regisHandler(obj, key, {
|
|
459
510
|
init(instance) {
|
|
460
511
|
instance[`$_${key}`] = instance[key];
|
|
@@ -485,7 +536,7 @@ function Storage(storeKey) {
|
|
|
485
536
|
init(target);
|
|
486
537
|
tag = storeKey || target.__TAG__;
|
|
487
538
|
const uniTag = Symbol(tag);
|
|
488
|
-
|
|
539
|
+
setModelVar(target, uniTag);
|
|
489
540
|
regisHandler(target, uniTag, {
|
|
490
541
|
init: (instance) => {
|
|
491
542
|
getProperty("storage")?.({
|
|
@@ -499,7 +550,7 @@ function Storage(storeKey) {
|
|
|
499
550
|
init(target.prototype);
|
|
500
551
|
tag = storeKey || `${target.prototype.__TAG__}_${key}`;
|
|
501
552
|
const uniTag = Symbol(tag);
|
|
502
|
-
|
|
553
|
+
setModelVar(target.prototype, uniTag);
|
|
503
554
|
regisHandler(target.prototype, uniTag, {
|
|
504
555
|
init: (instance) => {
|
|
505
556
|
getProperty("storage")?.({
|
|
@@ -539,17 +590,20 @@ __name(Storage, "Storage");
|
|
|
539
590
|
getBind,
|
|
540
591
|
getExposeKey,
|
|
541
592
|
getHandler,
|
|
542
|
-
getIgnoreKey,
|
|
543
593
|
getInitEvent,
|
|
544
594
|
getModelState,
|
|
595
|
+
getOwnExposeKey,
|
|
596
|
+
getOwnHandler,
|
|
597
|
+
getOwnIgnoreKey,
|
|
598
|
+
getOwnInitEvent,
|
|
599
|
+
getOwnModelState,
|
|
600
|
+
getOwnState,
|
|
545
601
|
getProperty,
|
|
546
602
|
getState,
|
|
547
603
|
getTag,
|
|
548
604
|
init,
|
|
549
605
|
injectProperty,
|
|
550
606
|
isPhecda,
|
|
551
|
-
mergeOptions,
|
|
552
|
-
mergeState,
|
|
553
607
|
plainToClass,
|
|
554
608
|
regisHandler,
|
|
555
609
|
regisInitEvent,
|
|
@@ -557,7 +611,8 @@ __name(Storage, "Storage");
|
|
|
557
611
|
registerAsync,
|
|
558
612
|
setExposeKey,
|
|
559
613
|
setIgnoreKey,
|
|
560
|
-
|
|
614
|
+
setModelVar,
|
|
615
|
+
setState,
|
|
561
616
|
snapShot,
|
|
562
617
|
to,
|
|
563
618
|
validate
|
package/dist/index.mjs
CHANGED
|
@@ -1,52 +1,15 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
3
|
|
|
4
|
-
// src/utils.ts
|
|
5
|
-
async function validate(p, v) {
|
|
6
|
-
if (typeof p === "string" || typeof p === "number") {
|
|
7
|
-
if (v === p)
|
|
8
|
-
return true;
|
|
9
|
-
}
|
|
10
|
-
if (typeof p === "function")
|
|
11
|
-
return p(v);
|
|
12
|
-
if (p instanceof RegExp)
|
|
13
|
-
return p.test(v);
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
__name(validate, "validate");
|
|
17
|
-
function getTag(Model) {
|
|
18
|
-
return Model.prototype?.__TAG__;
|
|
19
|
-
}
|
|
20
|
-
__name(getTag, "getTag");
|
|
21
|
-
function mergeOptions(obj1, obj2) {
|
|
22
|
-
if (!obj2)
|
|
23
|
-
return obj1;
|
|
24
|
-
for (const i in obj2) {
|
|
25
|
-
if (isObject(obj1[i]) && isObject(obj2[i])) {
|
|
26
|
-
mergeOptions(obj1[i], obj2[i]);
|
|
27
|
-
continue;
|
|
28
|
-
}
|
|
29
|
-
if (Array.isArray(obj1[i]) && Array.isArray(obj2[i])) {
|
|
30
|
-
obj1[i].push(...obj2[i].filter((item) => !obj1[i].includes(item)));
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
obj1[i] = obj2[i];
|
|
34
|
-
}
|
|
35
|
-
return obj1;
|
|
36
|
-
}
|
|
37
|
-
__name(mergeOptions, "mergeOptions");
|
|
38
|
-
function isObject(obj) {
|
|
39
|
-
return Object.prototype.toString.call(obj) === "[object Object]";
|
|
40
|
-
}
|
|
41
|
-
__name(isObject, "isObject");
|
|
42
|
-
|
|
43
4
|
// src/core.ts
|
|
44
5
|
function isPhecda(target) {
|
|
45
6
|
return target && !!target.prototype._namespace;
|
|
46
7
|
}
|
|
47
8
|
__name(isPhecda, "isPhecda");
|
|
48
9
|
function init(target) {
|
|
49
|
-
if (!target
|
|
10
|
+
if (!target)
|
|
11
|
+
return;
|
|
12
|
+
if (!target.hasOwnProperty("_namespace")) {
|
|
50
13
|
target._namespace = {
|
|
51
14
|
__INIT_EVENT__: /* @__PURE__ */ new Set(),
|
|
52
15
|
__EXPOSE_VAR__: /* @__PURE__ */ new Set(),
|
|
@@ -63,19 +26,32 @@ function regisInitEvent(target, key) {
|
|
|
63
26
|
target._namespace.__INIT_EVENT__.add(key);
|
|
64
27
|
}
|
|
65
28
|
__name(regisInitEvent, "regisInitEvent");
|
|
66
|
-
function
|
|
67
|
-
|
|
29
|
+
function getOwnInitEvent(target) {
|
|
30
|
+
if (!target?._namespace)
|
|
31
|
+
return [];
|
|
68
32
|
return [
|
|
69
33
|
...target._namespace.__INIT_EVENT__
|
|
70
34
|
];
|
|
71
35
|
}
|
|
36
|
+
__name(getOwnInitEvent, "getOwnInitEvent");
|
|
37
|
+
function getInitEvent(target) {
|
|
38
|
+
let proto = Object.getPrototypeOf(target);
|
|
39
|
+
const set = /* @__PURE__ */ new Set();
|
|
40
|
+
while (proto?._namespace) {
|
|
41
|
+
proto._namespace.__INIT_EVENT__.forEach((item) => set.add(item));
|
|
42
|
+
proto = Object.getPrototypeOf(proto);
|
|
43
|
+
}
|
|
44
|
+
return [
|
|
45
|
+
...set
|
|
46
|
+
];
|
|
47
|
+
}
|
|
72
48
|
__name(getInitEvent, "getInitEvent");
|
|
73
|
-
function
|
|
49
|
+
function setModelVar(target, key) {
|
|
74
50
|
init(target);
|
|
75
51
|
target._namespace.__STATE_VAR__.add(key);
|
|
76
52
|
setExposeKey(target, key);
|
|
77
53
|
}
|
|
78
|
-
__name(
|
|
54
|
+
__name(setModelVar, "setModelVar");
|
|
79
55
|
function setExposeKey(target, key) {
|
|
80
56
|
init(target);
|
|
81
57
|
target._namespace.__EXPOSE_VAR__.add(key);
|
|
@@ -86,27 +62,54 @@ function setIgnoreKey(target, key) {
|
|
|
86
62
|
target._namespace.__IGNORE_VAR__.add(key);
|
|
87
63
|
}
|
|
88
64
|
__name(setIgnoreKey, "setIgnoreKey");
|
|
89
|
-
function
|
|
90
|
-
|
|
65
|
+
function getOwnModelState(target) {
|
|
66
|
+
target = Object.getPrototypeOf(target);
|
|
91
67
|
return [
|
|
92
68
|
...target._namespace.__STATE_VAR__
|
|
93
69
|
];
|
|
94
70
|
}
|
|
71
|
+
__name(getOwnModelState, "getOwnModelState");
|
|
72
|
+
function getModelState(target) {
|
|
73
|
+
let proto = Object.getPrototypeOf(target);
|
|
74
|
+
const set = /* @__PURE__ */ new Set();
|
|
75
|
+
while (proto?._namespace) {
|
|
76
|
+
proto._namespace.__STATE_VAR__.forEach((item) => set.add(item));
|
|
77
|
+
proto = Object.getPrototypeOf(proto);
|
|
78
|
+
}
|
|
79
|
+
return [
|
|
80
|
+
...set
|
|
81
|
+
];
|
|
82
|
+
}
|
|
95
83
|
__name(getModelState, "getModelState");
|
|
96
|
-
function
|
|
97
|
-
|
|
84
|
+
function getOwnExposeKey(target) {
|
|
85
|
+
target = Object.getPrototypeOf(target);
|
|
98
86
|
return [
|
|
99
87
|
...target._namespace.__EXPOSE_VAR__
|
|
100
88
|
].filter((item) => !target._namespace.__IGNORE_VAR__.has(item));
|
|
101
89
|
}
|
|
90
|
+
__name(getOwnExposeKey, "getOwnExposeKey");
|
|
91
|
+
function getExposeKey(target) {
|
|
92
|
+
let proto = Object.getPrototypeOf(target);
|
|
93
|
+
const set = /* @__PURE__ */ new Set();
|
|
94
|
+
while (proto?._namespace) {
|
|
95
|
+
[
|
|
96
|
+
...proto._namespace.__EXPOSE_VAR__
|
|
97
|
+
].forEach((item) => !proto._namespace.__IGNORE_VAR__.has(item) && set.add(item));
|
|
98
|
+
proto = Object.getPrototypeOf(proto);
|
|
99
|
+
}
|
|
100
|
+
return [
|
|
101
|
+
...set
|
|
102
|
+
];
|
|
103
|
+
}
|
|
102
104
|
__name(getExposeKey, "getExposeKey");
|
|
103
|
-
function
|
|
104
|
-
|
|
105
|
+
function getOwnIgnoreKey(target) {
|
|
106
|
+
if (!target?._namespace)
|
|
107
|
+
return [];
|
|
105
108
|
return [
|
|
106
109
|
...target._namespace.__IGNORE_VAR__
|
|
107
110
|
];
|
|
108
111
|
}
|
|
109
|
-
__name(
|
|
112
|
+
__name(getOwnIgnoreKey, "getOwnIgnoreKey");
|
|
110
113
|
function regisHandler(target, key, handler) {
|
|
111
114
|
init(target);
|
|
112
115
|
if (!target._namespace.__STATE_HANDLER__.has(key))
|
|
@@ -117,22 +120,48 @@ function regisHandler(target, key, handler) {
|
|
|
117
120
|
target._namespace.__STATE_HANDLER__.get(key).push(handler);
|
|
118
121
|
}
|
|
119
122
|
__name(regisHandler, "regisHandler");
|
|
120
|
-
function
|
|
123
|
+
function getOwnHandler(target, key) {
|
|
124
|
+
if (!target?._namespace)
|
|
125
|
+
return [];
|
|
121
126
|
return target._namespace.__STATE_HANDLER__.get(key) || [];
|
|
122
127
|
}
|
|
128
|
+
__name(getOwnHandler, "getOwnHandler");
|
|
129
|
+
function getHandler(target, key) {
|
|
130
|
+
let proto = Object.getPrototypeOf(target);
|
|
131
|
+
const set = /* @__PURE__ */ new Set();
|
|
132
|
+
while (proto?._namespace) {
|
|
133
|
+
proto._namespace.__STATE_HANDLER__.get(key)?.forEach((item) => set.add(item));
|
|
134
|
+
proto = Object.getPrototypeOf(proto);
|
|
135
|
+
}
|
|
136
|
+
return [
|
|
137
|
+
...set
|
|
138
|
+
];
|
|
139
|
+
}
|
|
123
140
|
__name(getHandler, "getHandler");
|
|
124
|
-
function
|
|
141
|
+
function setState(target, key, state) {
|
|
142
|
+
init(target);
|
|
125
143
|
const namespace = target._namespace.__STATE_NAMESPACE__;
|
|
126
|
-
|
|
127
|
-
namespace.set(key, state);
|
|
128
|
-
else
|
|
129
|
-
mergeOptions(namespace.get(key), state);
|
|
144
|
+
namespace.set(key, state);
|
|
130
145
|
}
|
|
131
|
-
__name(
|
|
146
|
+
__name(setState, "setState");
|
|
147
|
+
function getOwnState(target, key) {
|
|
148
|
+
target = Object.getPrototypeOf(target);
|
|
149
|
+
return target._namespace.__STATE_NAMESPACE__.get(key) || {};
|
|
150
|
+
}
|
|
151
|
+
__name(getOwnState, "getOwnState");
|
|
132
152
|
function getState(target, key) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
153
|
+
let proto = Object.getPrototypeOf(target);
|
|
154
|
+
let ret = {};
|
|
155
|
+
while (proto?._namespace) {
|
|
156
|
+
const state = proto._namespace.__STATE_NAMESPACE__.get(key);
|
|
157
|
+
if (state)
|
|
158
|
+
ret = {
|
|
159
|
+
...state,
|
|
160
|
+
...ret
|
|
161
|
+
};
|
|
162
|
+
proto = Object.getPrototypeOf(proto);
|
|
163
|
+
}
|
|
164
|
+
return ret;
|
|
136
165
|
}
|
|
137
166
|
__name(getState, "getState");
|
|
138
167
|
function register(instance) {
|
|
@@ -156,7 +185,7 @@ __name(registerAsync, "registerAsync");
|
|
|
156
185
|
|
|
157
186
|
// src/decorators.ts
|
|
158
187
|
function Init(target, key) {
|
|
159
|
-
|
|
188
|
+
setModelVar(target, key);
|
|
160
189
|
regisHandler(target, key, {
|
|
161
190
|
async init(instance) {
|
|
162
191
|
instance[key]();
|
|
@@ -166,8 +195,8 @@ function Init(target, key) {
|
|
|
166
195
|
__name(Init, "Init");
|
|
167
196
|
function Bind(value) {
|
|
168
197
|
return (target, k) => {
|
|
169
|
-
|
|
170
|
-
|
|
198
|
+
setModelVar(target, k);
|
|
199
|
+
setState(target, k, {
|
|
171
200
|
value
|
|
172
201
|
});
|
|
173
202
|
};
|
|
@@ -175,7 +204,7 @@ function Bind(value) {
|
|
|
175
204
|
__name(Bind, "Bind");
|
|
176
205
|
function Rule(rule, info, meta) {
|
|
177
206
|
return (obj, key) => {
|
|
178
|
-
|
|
207
|
+
setModelVar(obj, key);
|
|
179
208
|
regisHandler(obj, key, {
|
|
180
209
|
rule,
|
|
181
210
|
info,
|
|
@@ -200,7 +229,7 @@ function Clear(target, key) {
|
|
|
200
229
|
__name(Clear, "Clear");
|
|
201
230
|
function Err(cb) {
|
|
202
231
|
return (target, key) => {
|
|
203
|
-
|
|
232
|
+
setModelVar(target, key);
|
|
204
233
|
regisHandler(target, key, {
|
|
205
234
|
error: cb
|
|
206
235
|
});
|
|
@@ -213,7 +242,7 @@ function Expose(target, key) {
|
|
|
213
242
|
__name(Expose, "Expose");
|
|
214
243
|
function Pipe(v) {
|
|
215
244
|
return (obj, key) => {
|
|
216
|
-
|
|
245
|
+
setModelVar(obj, key);
|
|
217
246
|
regisHandler(obj, key, {
|
|
218
247
|
async pipe(instance) {
|
|
219
248
|
const tasks = v.value;
|
|
@@ -233,7 +262,7 @@ __name(Tag, "Tag");
|
|
|
233
262
|
function Assign(cb) {
|
|
234
263
|
return (target) => {
|
|
235
264
|
init(target.prototype);
|
|
236
|
-
|
|
265
|
+
setModelVar(target.prototype, "__CLASS");
|
|
237
266
|
regisHandler(target.prototype, "__CLASS", {
|
|
238
267
|
init: async (instance) => {
|
|
239
268
|
const value = await cb(instance);
|
|
@@ -267,6 +296,24 @@ function Inject(key) {
|
|
|
267
296
|
}
|
|
268
297
|
__name(Inject, "Inject");
|
|
269
298
|
|
|
299
|
+
// src/utils.ts
|
|
300
|
+
async function validate(p, v) {
|
|
301
|
+
if (typeof p === "string" || typeof p === "number") {
|
|
302
|
+
if (v === p)
|
|
303
|
+
return true;
|
|
304
|
+
}
|
|
305
|
+
if (typeof p === "function")
|
|
306
|
+
return p(v);
|
|
307
|
+
if (p instanceof RegExp)
|
|
308
|
+
return p.test(v);
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
__name(validate, "validate");
|
|
312
|
+
function getTag(Model) {
|
|
313
|
+
return Model.prototype?.__TAG__;
|
|
314
|
+
}
|
|
315
|
+
__name(getTag, "getTag");
|
|
316
|
+
|
|
270
317
|
// src/helper.ts
|
|
271
318
|
function getBind(Model) {
|
|
272
319
|
const instance = new Model();
|
|
@@ -292,7 +339,7 @@ async function plainToClass(Model, input, options = {}) {
|
|
|
292
339
|
for (const handler of handlers) {
|
|
293
340
|
const rule = handler.rule;
|
|
294
341
|
if (rule && !await validate(rule, data[item])) {
|
|
295
|
-
err.push(handler.info
|
|
342
|
+
err.push(typeof handler.info === "function" ? handler.info(item) : handler.info);
|
|
296
343
|
if (!options.collectError)
|
|
297
344
|
break;
|
|
298
345
|
}
|
|
@@ -317,8 +364,8 @@ async function plainToClass(Model, input, options = {}) {
|
|
|
317
364
|
__name(plainToClass, "plainToClass");
|
|
318
365
|
function classToValue(instance) {
|
|
319
366
|
const data = {};
|
|
320
|
-
const
|
|
321
|
-
for (const item of
|
|
367
|
+
const exposeVars = getExposeKey(instance);
|
|
368
|
+
for (const item of exposeVars)
|
|
322
369
|
data[item] = instance[item];
|
|
323
370
|
return data;
|
|
324
371
|
}
|
|
@@ -369,7 +416,7 @@ __name(getProperty, "getProperty");
|
|
|
369
416
|
// src/custom/decorator.ts
|
|
370
417
|
function Watcher(eventName, options) {
|
|
371
418
|
return (obj, key) => {
|
|
372
|
-
|
|
419
|
+
setModelVar(obj, key);
|
|
373
420
|
regisHandler(obj, key, {
|
|
374
421
|
init(instance) {
|
|
375
422
|
getProperty("watcher")?.({
|
|
@@ -385,7 +432,7 @@ function Watcher(eventName, options) {
|
|
|
385
432
|
__name(Watcher, "Watcher");
|
|
386
433
|
function Effect(eventName, options) {
|
|
387
434
|
return (obj, key) => {
|
|
388
|
-
|
|
435
|
+
setModelVar(obj, key);
|
|
389
436
|
regisHandler(obj, key, {
|
|
390
437
|
init(instance) {
|
|
391
438
|
instance[`$_${key}`] = instance[key];
|
|
@@ -416,7 +463,7 @@ function Storage(storeKey) {
|
|
|
416
463
|
init(target);
|
|
417
464
|
tag = storeKey || target.__TAG__;
|
|
418
465
|
const uniTag = Symbol(tag);
|
|
419
|
-
|
|
466
|
+
setModelVar(target, uniTag);
|
|
420
467
|
regisHandler(target, uniTag, {
|
|
421
468
|
init: (instance) => {
|
|
422
469
|
getProperty("storage")?.({
|
|
@@ -430,7 +477,7 @@ function Storage(storeKey) {
|
|
|
430
477
|
init(target.prototype);
|
|
431
478
|
tag = storeKey || `${target.prototype.__TAG__}_${key}`;
|
|
432
479
|
const uniTag = Symbol(tag);
|
|
433
|
-
|
|
480
|
+
setModelVar(target.prototype, uniTag);
|
|
434
481
|
regisHandler(target.prototype, uniTag, {
|
|
435
482
|
init: (instance) => {
|
|
436
483
|
getProperty("storage")?.({
|
|
@@ -469,17 +516,20 @@ export {
|
|
|
469
516
|
getBind,
|
|
470
517
|
getExposeKey,
|
|
471
518
|
getHandler,
|
|
472
|
-
getIgnoreKey,
|
|
473
519
|
getInitEvent,
|
|
474
520
|
getModelState,
|
|
521
|
+
getOwnExposeKey,
|
|
522
|
+
getOwnHandler,
|
|
523
|
+
getOwnIgnoreKey,
|
|
524
|
+
getOwnInitEvent,
|
|
525
|
+
getOwnModelState,
|
|
526
|
+
getOwnState,
|
|
475
527
|
getProperty,
|
|
476
528
|
getState,
|
|
477
529
|
getTag,
|
|
478
530
|
init,
|
|
479
531
|
injectProperty,
|
|
480
532
|
isPhecda,
|
|
481
|
-
mergeOptions,
|
|
482
|
-
mergeState,
|
|
483
533
|
plainToClass,
|
|
484
534
|
regisHandler,
|
|
485
535
|
regisInitEvent,
|
|
@@ -487,7 +537,8 @@ export {
|
|
|
487
537
|
registerAsync,
|
|
488
538
|
setExposeKey,
|
|
489
539
|
setIgnoreKey,
|
|
490
|
-
|
|
540
|
+
setModelVar,
|
|
541
|
+
setState,
|
|
491
542
|
snapShot,
|
|
492
543
|
to,
|
|
493
544
|
validate
|
|
@@ -43,7 +43,9 @@ var Phecda = (() => {
|
|
|
43
43
|
|
|
44
44
|
// src/core.ts
|
|
45
45
|
function init(target) {
|
|
46
|
-
if (!target
|
|
46
|
+
if (!target)
|
|
47
|
+
return;
|
|
48
|
+
if (!target.hasOwnProperty("_namespace")) {
|
|
47
49
|
target._namespace = {
|
|
48
50
|
__INIT_EVENT__: /* @__PURE__ */ new Set(),
|
|
49
51
|
__EXPOSE_VAR__: /* @__PURE__ */ new Set(),
|
|
@@ -55,12 +57,12 @@ var Phecda = (() => {
|
|
|
55
57
|
}
|
|
56
58
|
}
|
|
57
59
|
__name(init, "init");
|
|
58
|
-
function
|
|
60
|
+
function setModelVar(target, key) {
|
|
59
61
|
init(target);
|
|
60
62
|
target._namespace.__STATE_VAR__.add(key);
|
|
61
63
|
setExposeKey(target, key);
|
|
62
64
|
}
|
|
63
|
-
__name(
|
|
65
|
+
__name(setModelVar, "setModelVar");
|
|
64
66
|
function setExposeKey(target, key) {
|
|
65
67
|
init(target);
|
|
66
68
|
target._namespace.__EXPOSE_VAR__.add(key);
|
|
@@ -80,7 +82,7 @@ var Phecda = (() => {
|
|
|
80
82
|
// src/decorators.ts
|
|
81
83
|
function Rule(rule, info, meta) {
|
|
82
84
|
return (obj, key) => {
|
|
83
|
-
|
|
85
|
+
setModelVar(obj, key);
|
|
84
86
|
regisHandler(obj, key, {
|
|
85
87
|
rule,
|
|
86
88
|
info,
|
|
@@ -91,7 +93,7 @@ var Phecda = (() => {
|
|
|
91
93
|
__name(Rule, "Rule");
|
|
92
94
|
function Pipe(v) {
|
|
93
95
|
return (obj, key) => {
|
|
94
|
-
|
|
96
|
+
setModelVar(obj, key);
|
|
95
97
|
regisHandler(obj, key, {
|
|
96
98
|
async pipe(instance) {
|
|
97
99
|
const tasks = v.value;
|
package/dist/preset/index.js
CHANGED
|
@@ -43,7 +43,9 @@ module.exports = __toCommonJS(preset_exports);
|
|
|
43
43
|
|
|
44
44
|
// src/core.ts
|
|
45
45
|
function init(target) {
|
|
46
|
-
if (!target
|
|
46
|
+
if (!target)
|
|
47
|
+
return;
|
|
48
|
+
if (!target.hasOwnProperty("_namespace")) {
|
|
47
49
|
target._namespace = {
|
|
48
50
|
__INIT_EVENT__: /* @__PURE__ */ new Set(),
|
|
49
51
|
__EXPOSE_VAR__: /* @__PURE__ */ new Set(),
|
|
@@ -55,12 +57,12 @@ function init(target) {
|
|
|
55
57
|
}
|
|
56
58
|
}
|
|
57
59
|
__name(init, "init");
|
|
58
|
-
function
|
|
60
|
+
function setModelVar(target, key) {
|
|
59
61
|
init(target);
|
|
60
62
|
target._namespace.__STATE_VAR__.add(key);
|
|
61
63
|
setExposeKey(target, key);
|
|
62
64
|
}
|
|
63
|
-
__name(
|
|
65
|
+
__name(setModelVar, "setModelVar");
|
|
64
66
|
function setExposeKey(target, key) {
|
|
65
67
|
init(target);
|
|
66
68
|
target._namespace.__EXPOSE_VAR__.add(key);
|
|
@@ -80,7 +82,7 @@ __name(regisHandler, "regisHandler");
|
|
|
80
82
|
// src/decorators.ts
|
|
81
83
|
function Rule(rule, info, meta) {
|
|
82
84
|
return (obj, key) => {
|
|
83
|
-
|
|
85
|
+
setModelVar(obj, key);
|
|
84
86
|
regisHandler(obj, key, {
|
|
85
87
|
rule,
|
|
86
88
|
info,
|
|
@@ -91,7 +93,7 @@ function Rule(rule, info, meta) {
|
|
|
91
93
|
__name(Rule, "Rule");
|
|
92
94
|
function Pipe(v) {
|
|
93
95
|
return (obj, key) => {
|
|
94
|
-
|
|
96
|
+
setModelVar(obj, key);
|
|
95
97
|
regisHandler(obj, key, {
|
|
96
98
|
async pipe(instance) {
|
|
97
99
|
const tasks = v.value;
|
package/dist/preset/index.mjs
CHANGED
|
@@ -3,7 +3,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
3
3
|
|
|
4
4
|
// src/core.ts
|
|
5
5
|
function init(target) {
|
|
6
|
-
if (!target
|
|
6
|
+
if (!target)
|
|
7
|
+
return;
|
|
8
|
+
if (!target.hasOwnProperty("_namespace")) {
|
|
7
9
|
target._namespace = {
|
|
8
10
|
__INIT_EVENT__: /* @__PURE__ */ new Set(),
|
|
9
11
|
__EXPOSE_VAR__: /* @__PURE__ */ new Set(),
|
|
@@ -15,12 +17,12 @@ function init(target) {
|
|
|
15
17
|
}
|
|
16
18
|
}
|
|
17
19
|
__name(init, "init");
|
|
18
|
-
function
|
|
20
|
+
function setModelVar(target, key) {
|
|
19
21
|
init(target);
|
|
20
22
|
target._namespace.__STATE_VAR__.add(key);
|
|
21
23
|
setExposeKey(target, key);
|
|
22
24
|
}
|
|
23
|
-
__name(
|
|
25
|
+
__name(setModelVar, "setModelVar");
|
|
24
26
|
function setExposeKey(target, key) {
|
|
25
27
|
init(target);
|
|
26
28
|
target._namespace.__EXPOSE_VAR__.add(key);
|
|
@@ -40,7 +42,7 @@ __name(regisHandler, "regisHandler");
|
|
|
40
42
|
// src/decorators.ts
|
|
41
43
|
function Rule(rule, info, meta) {
|
|
42
44
|
return (obj, key) => {
|
|
43
|
-
|
|
45
|
+
setModelVar(obj, key);
|
|
44
46
|
regisHandler(obj, key, {
|
|
45
47
|
rule,
|
|
46
48
|
info,
|
|
@@ -51,7 +53,7 @@ function Rule(rule, info, meta) {
|
|
|
51
53
|
__name(Rule, "Rule");
|
|
52
54
|
function Pipe(v) {
|
|
53
55
|
return (obj, key) => {
|
|
54
|
-
|
|
56
|
+
setModelVar(obj, key);
|
|
55
57
|
regisHandler(obj, key, {
|
|
56
58
|
async pipe(instance) {
|
|
57
59
|
const tasks = v.value;
|