phecda-core 1.6.0 → 2.0.0-alpha.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.
- package/dist/index.d.ts +16 -10
- package/dist/index.global.js +155 -77
- package/dist/index.js +164 -81
- package/dist/index.mjs +155 -77
- 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.js
CHANGED
|
@@ -25,6 +25,7 @@ __export(src_exports, {
|
|
|
25
25
|
Bind: () => Bind,
|
|
26
26
|
Clear: () => Clear,
|
|
27
27
|
DataMap: () => DataMap,
|
|
28
|
+
Effect: () => Effect,
|
|
28
29
|
Empty: () => Empty,
|
|
29
30
|
Err: () => Err,
|
|
30
31
|
Expose: () => Expose,
|
|
@@ -44,17 +45,20 @@ __export(src_exports, {
|
|
|
44
45
|
getBind: () => getBind,
|
|
45
46
|
getExposeKey: () => getExposeKey,
|
|
46
47
|
getHandler: () => getHandler,
|
|
47
|
-
getIgnoreKey: () => getIgnoreKey,
|
|
48
48
|
getInitEvent: () => getInitEvent,
|
|
49
49
|
getModelState: () => getModelState,
|
|
50
|
+
getOwnExposeKey: () => getOwnExposeKey,
|
|
51
|
+
getOwnHandler: () => getOwnHandler,
|
|
52
|
+
getOwnIgnoreKey: () => getOwnIgnoreKey,
|
|
53
|
+
getOwnInitEvent: () => getOwnInitEvent,
|
|
54
|
+
getOwnModelState: () => getOwnModelState,
|
|
55
|
+
getOwnState: () => getOwnState,
|
|
50
56
|
getProperty: () => getProperty,
|
|
51
57
|
getState: () => getState,
|
|
52
58
|
getTag: () => getTag,
|
|
53
59
|
init: () => init,
|
|
54
60
|
injectProperty: () => injectProperty,
|
|
55
61
|
isPhecda: () => isPhecda,
|
|
56
|
-
mergeOptions: () => mergeOptions,
|
|
57
|
-
mergeState: () => mergeState,
|
|
58
62
|
plainToClass: () => plainToClass,
|
|
59
63
|
regisHandler: () => regisHandler,
|
|
60
64
|
regisInitEvent: () => regisInitEvent,
|
|
@@ -62,59 +66,23 @@ __export(src_exports, {
|
|
|
62
66
|
registerAsync: () => registerAsync,
|
|
63
67
|
setExposeKey: () => setExposeKey,
|
|
64
68
|
setIgnoreKey: () => setIgnoreKey,
|
|
65
|
-
|
|
69
|
+
setModelVar: () => setModelVar,
|
|
70
|
+
setState: () => setState,
|
|
66
71
|
snapShot: () => snapShot,
|
|
67
72
|
to: () => to,
|
|
68
73
|
validate: () => validate
|
|
69
74
|
});
|
|
70
75
|
module.exports = __toCommonJS(src_exports);
|
|
71
76
|
|
|
72
|
-
// src/utils.ts
|
|
73
|
-
async function validate(p, v) {
|
|
74
|
-
if (typeof p === "string" || typeof p === "number") {
|
|
75
|
-
if (v === p)
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
78
|
-
if (typeof p === "function")
|
|
79
|
-
return p(v);
|
|
80
|
-
if (p instanceof RegExp)
|
|
81
|
-
return p.test(v);
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
__name(validate, "validate");
|
|
85
|
-
function getTag(Model) {
|
|
86
|
-
return Model.prototype?.__TAG__;
|
|
87
|
-
}
|
|
88
|
-
__name(getTag, "getTag");
|
|
89
|
-
function mergeOptions(obj1, obj2) {
|
|
90
|
-
if (!obj2)
|
|
91
|
-
return obj1;
|
|
92
|
-
for (const i in obj2) {
|
|
93
|
-
if (isObject(obj1[i]) && isObject(obj2[i])) {
|
|
94
|
-
mergeOptions(obj1[i], obj2[i]);
|
|
95
|
-
continue;
|
|
96
|
-
}
|
|
97
|
-
if (Array.isArray(obj1[i]) && Array.isArray(obj2[i])) {
|
|
98
|
-
obj1[i].push(...obj2[i].filter((item) => !obj1[i].includes(item)));
|
|
99
|
-
continue;
|
|
100
|
-
}
|
|
101
|
-
obj1[i] = obj2[i];
|
|
102
|
-
}
|
|
103
|
-
return obj1;
|
|
104
|
-
}
|
|
105
|
-
__name(mergeOptions, "mergeOptions");
|
|
106
|
-
function isObject(obj) {
|
|
107
|
-
return Object.prototype.toString.call(obj) === "[object Object]";
|
|
108
|
-
}
|
|
109
|
-
__name(isObject, "isObject");
|
|
110
|
-
|
|
111
77
|
// src/core.ts
|
|
112
78
|
function isPhecda(target) {
|
|
113
79
|
return target && !!target.prototype._namespace;
|
|
114
80
|
}
|
|
115
81
|
__name(isPhecda, "isPhecda");
|
|
116
82
|
function init(target) {
|
|
117
|
-
if (!target
|
|
83
|
+
if (!target)
|
|
84
|
+
return;
|
|
85
|
+
if (!target.hasOwnProperty("_namespace")) {
|
|
118
86
|
target._namespace = {
|
|
119
87
|
__INIT_EVENT__: /* @__PURE__ */ new Set(),
|
|
120
88
|
__EXPOSE_VAR__: /* @__PURE__ */ new Set(),
|
|
@@ -131,19 +99,32 @@ function regisInitEvent(target, key) {
|
|
|
131
99
|
target._namespace.__INIT_EVENT__.add(key);
|
|
132
100
|
}
|
|
133
101
|
__name(regisInitEvent, "regisInitEvent");
|
|
134
|
-
function
|
|
135
|
-
|
|
102
|
+
function getOwnInitEvent(target) {
|
|
103
|
+
if (!target?._namespace)
|
|
104
|
+
return [];
|
|
136
105
|
return [
|
|
137
106
|
...target._namespace.__INIT_EVENT__
|
|
138
107
|
];
|
|
139
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
|
+
}
|
|
140
121
|
__name(getInitEvent, "getInitEvent");
|
|
141
|
-
function
|
|
122
|
+
function setModelVar(target, key) {
|
|
142
123
|
init(target);
|
|
143
124
|
target._namespace.__STATE_VAR__.add(key);
|
|
144
125
|
setExposeKey(target, key);
|
|
145
126
|
}
|
|
146
|
-
__name(
|
|
127
|
+
__name(setModelVar, "setModelVar");
|
|
147
128
|
function setExposeKey(target, key) {
|
|
148
129
|
init(target);
|
|
149
130
|
target._namespace.__EXPOSE_VAR__.add(key);
|
|
@@ -154,27 +135,54 @@ function setIgnoreKey(target, key) {
|
|
|
154
135
|
target._namespace.__IGNORE_VAR__.add(key);
|
|
155
136
|
}
|
|
156
137
|
__name(setIgnoreKey, "setIgnoreKey");
|
|
157
|
-
function
|
|
158
|
-
|
|
138
|
+
function getOwnModelState(target) {
|
|
139
|
+
target = Object.getPrototypeOf(target);
|
|
159
140
|
return [
|
|
160
141
|
...target._namespace.__STATE_VAR__
|
|
161
142
|
];
|
|
162
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
|
+
}
|
|
163
156
|
__name(getModelState, "getModelState");
|
|
164
|
-
function
|
|
165
|
-
|
|
157
|
+
function getOwnExposeKey(target) {
|
|
158
|
+
target = Object.getPrototypeOf(target);
|
|
166
159
|
return [
|
|
167
160
|
...target._namespace.__EXPOSE_VAR__
|
|
168
161
|
].filter((item) => !target._namespace.__IGNORE_VAR__.has(item));
|
|
169
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
|
+
}
|
|
170
177
|
__name(getExposeKey, "getExposeKey");
|
|
171
|
-
function
|
|
172
|
-
|
|
178
|
+
function getOwnIgnoreKey(target) {
|
|
179
|
+
if (!target?._namespace)
|
|
180
|
+
return [];
|
|
173
181
|
return [
|
|
174
182
|
...target._namespace.__IGNORE_VAR__
|
|
175
183
|
];
|
|
176
184
|
}
|
|
177
|
-
__name(
|
|
185
|
+
__name(getOwnIgnoreKey, "getOwnIgnoreKey");
|
|
178
186
|
function regisHandler(target, key, handler) {
|
|
179
187
|
init(target);
|
|
180
188
|
if (!target._namespace.__STATE_HANDLER__.has(key))
|
|
@@ -185,22 +193,48 @@ function regisHandler(target, key, handler) {
|
|
|
185
193
|
target._namespace.__STATE_HANDLER__.get(key).push(handler);
|
|
186
194
|
}
|
|
187
195
|
__name(regisHandler, "regisHandler");
|
|
188
|
-
function
|
|
196
|
+
function getOwnHandler(target, key) {
|
|
197
|
+
if (!target?._namespace)
|
|
198
|
+
return [];
|
|
189
199
|
return target._namespace.__STATE_HANDLER__.get(key) || [];
|
|
190
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
|
+
}
|
|
191
213
|
__name(getHandler, "getHandler");
|
|
192
|
-
function
|
|
214
|
+
function setState(target, key, state) {
|
|
215
|
+
init(target);
|
|
193
216
|
const namespace = target._namespace.__STATE_NAMESPACE__;
|
|
194
|
-
|
|
195
|
-
namespace.set(key, state);
|
|
196
|
-
else
|
|
197
|
-
mergeOptions(namespace.get(key), state);
|
|
217
|
+
namespace.set(key, state);
|
|
198
218
|
}
|
|
199
|
-
__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");
|
|
200
225
|
function getState(target, key) {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
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;
|
|
204
238
|
}
|
|
205
239
|
__name(getState, "getState");
|
|
206
240
|
function register(instance) {
|
|
@@ -224,7 +258,7 @@ __name(registerAsync, "registerAsync");
|
|
|
224
258
|
|
|
225
259
|
// src/decorators.ts
|
|
226
260
|
function Init(target, key) {
|
|
227
|
-
|
|
261
|
+
setModelVar(target, key);
|
|
228
262
|
regisHandler(target, key, {
|
|
229
263
|
async init(instance) {
|
|
230
264
|
instance[key]();
|
|
@@ -234,8 +268,8 @@ function Init(target, key) {
|
|
|
234
268
|
__name(Init, "Init");
|
|
235
269
|
function Bind(value) {
|
|
236
270
|
return (target, k) => {
|
|
237
|
-
|
|
238
|
-
|
|
271
|
+
setModelVar(target, k);
|
|
272
|
+
setState(target, k, {
|
|
239
273
|
value
|
|
240
274
|
});
|
|
241
275
|
};
|
|
@@ -243,7 +277,7 @@ function Bind(value) {
|
|
|
243
277
|
__name(Bind, "Bind");
|
|
244
278
|
function Rule(rule, info, meta) {
|
|
245
279
|
return (obj, key) => {
|
|
246
|
-
|
|
280
|
+
setModelVar(obj, key);
|
|
247
281
|
regisHandler(obj, key, {
|
|
248
282
|
rule,
|
|
249
283
|
info,
|
|
@@ -268,7 +302,7 @@ function Clear(target, key) {
|
|
|
268
302
|
__name(Clear, "Clear");
|
|
269
303
|
function Err(cb) {
|
|
270
304
|
return (target, key) => {
|
|
271
|
-
|
|
305
|
+
setModelVar(target, key);
|
|
272
306
|
regisHandler(target, key, {
|
|
273
307
|
error: cb
|
|
274
308
|
});
|
|
@@ -281,7 +315,7 @@ function Expose(target, key) {
|
|
|
281
315
|
__name(Expose, "Expose");
|
|
282
316
|
function Pipe(v) {
|
|
283
317
|
return (obj, key) => {
|
|
284
|
-
|
|
318
|
+
setModelVar(obj, key);
|
|
285
319
|
regisHandler(obj, key, {
|
|
286
320
|
async pipe(instance) {
|
|
287
321
|
const tasks = v.value;
|
|
@@ -301,7 +335,7 @@ __name(Tag, "Tag");
|
|
|
301
335
|
function Assign(cb) {
|
|
302
336
|
return (target) => {
|
|
303
337
|
init(target.prototype);
|
|
304
|
-
|
|
338
|
+
setModelVar(target.prototype, "__CLASS");
|
|
305
339
|
regisHandler(target.prototype, "__CLASS", {
|
|
306
340
|
init: async (instance) => {
|
|
307
341
|
const value = await cb(instance);
|
|
@@ -335,6 +369,24 @@ function Inject(key) {
|
|
|
335
369
|
}
|
|
336
370
|
__name(Inject, "Inject");
|
|
337
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
|
+
|
|
338
390
|
// src/helper.ts
|
|
339
391
|
function getBind(Model) {
|
|
340
392
|
const instance = new Model();
|
|
@@ -385,8 +437,8 @@ async function plainToClass(Model, input, options = {}) {
|
|
|
385
437
|
__name(plainToClass, "plainToClass");
|
|
386
438
|
function classToValue(instance) {
|
|
387
439
|
const data = {};
|
|
388
|
-
const
|
|
389
|
-
for (const item of
|
|
440
|
+
const exposeVars = getExposeKey(instance);
|
|
441
|
+
for (const item of exposeVars)
|
|
390
442
|
data[item] = instance[item];
|
|
391
443
|
return data;
|
|
392
444
|
}
|
|
@@ -437,7 +489,7 @@ __name(getProperty, "getProperty");
|
|
|
437
489
|
// src/custom/decorator.ts
|
|
438
490
|
function Watcher(eventName, options) {
|
|
439
491
|
return (obj, key) => {
|
|
440
|
-
|
|
492
|
+
setModelVar(obj, key);
|
|
441
493
|
regisHandler(obj, key, {
|
|
442
494
|
init(instance) {
|
|
443
495
|
getProperty("watcher")?.({
|
|
@@ -451,6 +503,32 @@ function Watcher(eventName, options) {
|
|
|
451
503
|
};
|
|
452
504
|
}
|
|
453
505
|
__name(Watcher, "Watcher");
|
|
506
|
+
function Effect(eventName, options) {
|
|
507
|
+
return (obj, key) => {
|
|
508
|
+
setModelVar(obj, key);
|
|
509
|
+
regisHandler(obj, key, {
|
|
510
|
+
init(instance) {
|
|
511
|
+
instance[`$_${key}`] = instance[key];
|
|
512
|
+
Object.defineProperty(instance, key, {
|
|
513
|
+
get() {
|
|
514
|
+
return instance[`$_${key}`];
|
|
515
|
+
},
|
|
516
|
+
set(v) {
|
|
517
|
+
instance[`$_${key}`] = v;
|
|
518
|
+
getProperty(`effect-${eventName}`)?.({
|
|
519
|
+
instance,
|
|
520
|
+
key,
|
|
521
|
+
value: v,
|
|
522
|
+
options
|
|
523
|
+
});
|
|
524
|
+
return true;
|
|
525
|
+
}
|
|
526
|
+
});
|
|
527
|
+
}
|
|
528
|
+
});
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
__name(Effect, "Effect");
|
|
454
532
|
function Storage(storeKey) {
|
|
455
533
|
return (target, key) => {
|
|
456
534
|
let tag;
|
|
@@ -458,7 +536,7 @@ function Storage(storeKey) {
|
|
|
458
536
|
init(target);
|
|
459
537
|
tag = storeKey || target.__TAG__;
|
|
460
538
|
const uniTag = Symbol(tag);
|
|
461
|
-
|
|
539
|
+
setModelVar(target, uniTag);
|
|
462
540
|
regisHandler(target, uniTag, {
|
|
463
541
|
init: (instance) => {
|
|
464
542
|
getProperty("storage")?.({
|
|
@@ -472,7 +550,7 @@ function Storage(storeKey) {
|
|
|
472
550
|
init(target.prototype);
|
|
473
551
|
tag = storeKey || `${target.prototype.__TAG__}_${key}`;
|
|
474
552
|
const uniTag = Symbol(tag);
|
|
475
|
-
|
|
553
|
+
setModelVar(target.prototype, uniTag);
|
|
476
554
|
regisHandler(target.prototype, uniTag, {
|
|
477
555
|
init: (instance) => {
|
|
478
556
|
getProperty("storage")?.({
|
|
@@ -492,6 +570,7 @@ __name(Storage, "Storage");
|
|
|
492
570
|
Bind,
|
|
493
571
|
Clear,
|
|
494
572
|
DataMap,
|
|
573
|
+
Effect,
|
|
495
574
|
Empty,
|
|
496
575
|
Err,
|
|
497
576
|
Expose,
|
|
@@ -511,17 +590,20 @@ __name(Storage, "Storage");
|
|
|
511
590
|
getBind,
|
|
512
591
|
getExposeKey,
|
|
513
592
|
getHandler,
|
|
514
|
-
getIgnoreKey,
|
|
515
593
|
getInitEvent,
|
|
516
594
|
getModelState,
|
|
595
|
+
getOwnExposeKey,
|
|
596
|
+
getOwnHandler,
|
|
597
|
+
getOwnIgnoreKey,
|
|
598
|
+
getOwnInitEvent,
|
|
599
|
+
getOwnModelState,
|
|
600
|
+
getOwnState,
|
|
517
601
|
getProperty,
|
|
518
602
|
getState,
|
|
519
603
|
getTag,
|
|
520
604
|
init,
|
|
521
605
|
injectProperty,
|
|
522
606
|
isPhecda,
|
|
523
|
-
mergeOptions,
|
|
524
|
-
mergeState,
|
|
525
607
|
plainToClass,
|
|
526
608
|
regisHandler,
|
|
527
609
|
regisInitEvent,
|
|
@@ -529,7 +611,8 @@ __name(Storage, "Storage");
|
|
|
529
611
|
registerAsync,
|
|
530
612
|
setExposeKey,
|
|
531
613
|
setIgnoreKey,
|
|
532
|
-
|
|
614
|
+
setModelVar,
|
|
615
|
+
setState,
|
|
533
616
|
snapShot,
|
|
534
617
|
to,
|
|
535
618
|
validate
|