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.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._namespace) {
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 getInitEvent(target) {
67
- init(target);
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 setModalVar(target, key) {
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(setModalVar, "setModalVar");
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 getModelState(target) {
90
- init(target);
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 getExposeKey(target) {
97
- init(target);
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 getIgnoreKey(target) {
104
- init(target);
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(getIgnoreKey, "getIgnoreKey");
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 getHandler(target, key) {
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 mergeState(target, key, state) {
141
+ function setState(target, key, state) {
142
+ init(target);
125
143
  const namespace = target._namespace.__STATE_NAMESPACE__;
126
- if (!namespace.has(key))
127
- namespace.set(key, state);
128
- else
129
- mergeOptions(namespace.get(key), state);
144
+ namespace.set(key, state);
130
145
  }
131
- __name(mergeState, "mergeState");
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
- const namespace = target._namespace.__STATE_NAMESPACE__;
134
- if (namespace)
135
- return namespace.get(key);
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
- setModalVar(target, key);
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
- setModalVar(target, k);
170
- mergeState(target, k, {
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
- setModalVar(obj, key);
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
- setModalVar(target, key);
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
- setModalVar(obj, key);
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
- setModalVar(target.prototype, "__CLASS");
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();
@@ -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 exposeVar = getExposeKey(instance);
321
- for (const item of exposeVar)
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
- setModalVar(obj, key);
419
+ setModelVar(obj, key);
373
420
  regisHandler(obj, key, {
374
421
  init(instance) {
375
422
  getProperty("watcher")?.({
@@ -383,6 +430,32 @@ function Watcher(eventName, options) {
383
430
  };
384
431
  }
385
432
  __name(Watcher, "Watcher");
433
+ function Effect(eventName, options) {
434
+ return (obj, key) => {
435
+ setModelVar(obj, key);
436
+ regisHandler(obj, key, {
437
+ init(instance) {
438
+ instance[`$_${key}`] = instance[key];
439
+ Object.defineProperty(instance, key, {
440
+ get() {
441
+ return instance[`$_${key}`];
442
+ },
443
+ set(v) {
444
+ instance[`$_${key}`] = v;
445
+ getProperty(`effect-${eventName}`)?.({
446
+ instance,
447
+ key,
448
+ value: v,
449
+ options
450
+ });
451
+ return true;
452
+ }
453
+ });
454
+ }
455
+ });
456
+ };
457
+ }
458
+ __name(Effect, "Effect");
386
459
  function Storage(storeKey) {
387
460
  return (target, key) => {
388
461
  let tag;
@@ -390,7 +463,7 @@ function Storage(storeKey) {
390
463
  init(target);
391
464
  tag = storeKey || target.__TAG__;
392
465
  const uniTag = Symbol(tag);
393
- setModalVar(target, uniTag);
466
+ setModelVar(target, uniTag);
394
467
  regisHandler(target, uniTag, {
395
468
  init: (instance) => {
396
469
  getProperty("storage")?.({
@@ -404,7 +477,7 @@ function Storage(storeKey) {
404
477
  init(target.prototype);
405
478
  tag = storeKey || `${target.prototype.__TAG__}_${key}`;
406
479
  const uniTag = Symbol(tag);
407
- setModalVar(target.prototype, uniTag);
480
+ setModelVar(target.prototype, uniTag);
408
481
  regisHandler(target.prototype, uniTag, {
409
482
  init: (instance) => {
410
483
  getProperty("storage")?.({
@@ -423,6 +496,7 @@ export {
423
496
  Bind,
424
497
  Clear,
425
498
  DataMap,
499
+ Effect,
426
500
  Empty,
427
501
  Err,
428
502
  Expose,
@@ -442,17 +516,20 @@ export {
442
516
  getBind,
443
517
  getExposeKey,
444
518
  getHandler,
445
- getIgnoreKey,
446
519
  getInitEvent,
447
520
  getModelState,
521
+ getOwnExposeKey,
522
+ getOwnHandler,
523
+ getOwnIgnoreKey,
524
+ getOwnInitEvent,
525
+ getOwnModelState,
526
+ getOwnState,
448
527
  getProperty,
449
528
  getState,
450
529
  getTag,
451
530
  init,
452
531
  injectProperty,
453
532
  isPhecda,
454
- mergeOptions,
455
- mergeState,
456
533
  plainToClass,
457
534
  regisHandler,
458
535
  regisInitEvent,
@@ -460,7 +537,8 @@ export {
460
537
  registerAsync,
461
538
  setExposeKey,
462
539
  setIgnoreKey,
463
- setModalVar,
540
+ setModelVar,
541
+ setState,
464
542
  snapShot,
465
543
  to,
466
544
  validate
@@ -43,7 +43,9 @@ var Phecda = (() => {
43
43
 
44
44
  // src/core.ts
45
45
  function init(target) {
46
- if (!target._namespace) {
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 setModalVar(target, key) {
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(setModalVar, "setModalVar");
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
- setModalVar(obj, key);
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
- setModalVar(obj, key);
96
+ setModelVar(obj, key);
95
97
  regisHandler(obj, key, {
96
98
  async pipe(instance) {
97
99
  const tasks = v.value;
@@ -43,7 +43,9 @@ module.exports = __toCommonJS(preset_exports);
43
43
 
44
44
  // src/core.ts
45
45
  function init(target) {
46
- if (!target._namespace) {
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 setModalVar(target, key) {
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(setModalVar, "setModalVar");
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
- setModalVar(obj, key);
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
- setModalVar(obj, key);
96
+ setModelVar(obj, key);
95
97
  regisHandler(obj, key, {
96
98
  async pipe(instance) {
97
99
  const tasks = v.value;
@@ -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._namespace) {
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 setModalVar(target, key) {
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(setModalVar, "setModalVar");
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
- setModalVar(obj, key);
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
- setModalVar(obj, key);
56
+ setModelVar(obj, key);
55
57
  regisHandler(obj, key, {
56
58
  async pipe(instance) {
57
59
  const tasks = v.value;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "phecda-core",
3
- "version": "1.6.0",
3
+ "version": "2.0.0-alpha.0",
4
4
  "description": "provide base function and abstract limit to other phecda module ",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",