@e7w/easy-model 0.0.8 → 0.0.9
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/helpers.d.ts +2 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.es.js +102 -90
- package/dist/index.umd.js +1 -1
- package/dist/provide.d.ts +1 -0
- package/package.json +2 -2
- package/src/helpers.ts +15 -5
- package/src/index.ts +1 -1
- package/src/observe.ts +10 -1
- package/src/provide.ts +8 -2
package/dist/helpers.d.ts
CHANGED
|
@@ -4,3 +4,5 @@ export declare function safeGet(target: Obj, p: string | symbol): any;
|
|
|
4
4
|
export declare function track(target: Obj, handler: (path: (string | symbol)[]) => void): void;
|
|
5
5
|
export declare function subscribe(target: Obj, handler: (path: (string | symbol)[]) => void): () => void;
|
|
6
6
|
export declare function trigger(target: Obj, path: (string | symbol)[]): void;
|
|
7
|
+
export declare function startTrigger(): symbol | null;
|
|
8
|
+
export declare function endTrigger(symbol: symbol | null): void;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { subscribe } from "./helpers";
|
|
2
|
-
export { provide, extend } from "./provide";
|
|
2
|
+
export { provide, extend, filterSymbol } from "./provide";
|
package/dist/index.es.js
CHANGED
|
@@ -1,87 +1,95 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
const
|
|
5
|
-
function
|
|
6
|
-
if (n =
|
|
7
|
-
return
|
|
8
|
-
const t = new Proxy(n, new
|
|
9
|
-
return
|
|
1
|
+
var S = Object.defineProperty;
|
|
2
|
+
var j = (n, t, e) => t in n ? S(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;
|
|
3
|
+
var c = (n, t, e) => (j(n, typeof t != "symbol" ? t + "" : t, e), e);
|
|
4
|
+
const g = /* @__PURE__ */ new WeakMap(), O = Symbol("origin");
|
|
5
|
+
function o(n) {
|
|
6
|
+
if (n = f(n), g.has(n))
|
|
7
|
+
return g.get(n);
|
|
8
|
+
const t = new Proxy(n, new E(n));
|
|
9
|
+
return g.set(n, t), t;
|
|
10
10
|
}
|
|
11
|
-
function
|
|
12
|
-
return n && (n[
|
|
11
|
+
function f(n) {
|
|
12
|
+
return n && (n[O] || n);
|
|
13
13
|
}
|
|
14
|
-
class
|
|
14
|
+
class E {
|
|
15
15
|
constructor(t) {
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
c(this, "triggers", {});
|
|
17
|
+
c(this, "cachedFns", {});
|
|
18
18
|
this.obj = t;
|
|
19
19
|
}
|
|
20
|
-
get(t, e,
|
|
21
|
-
if (e ===
|
|
20
|
+
get(t, e, r) {
|
|
21
|
+
if (e === O)
|
|
22
22
|
return this.obj;
|
|
23
|
-
let
|
|
24
|
-
return typeof
|
|
23
|
+
let s = m(t, e) || Reflect.get(t, e, r);
|
|
24
|
+
return typeof s == "function" ? this.cachedFns[e] || (this.cachedFns[e] = s.bind(o(t))) : (typeof s == "object" && (s = o(s), k(s, this.getTrigger(e))), s);
|
|
25
25
|
}
|
|
26
|
-
set(t, e,
|
|
27
|
-
if (
|
|
26
|
+
set(t, e, r, s) {
|
|
27
|
+
if (r && (r = f(r)), r === f(Reflect.get(t, e)))
|
|
28
28
|
return !0;
|
|
29
|
-
const
|
|
30
|
-
return
|
|
29
|
+
const i = A(), y = Reflect.set(t, e, r, s);
|
|
30
|
+
return _(this.obj, [e]), C(i), y;
|
|
31
31
|
}
|
|
32
32
|
getTrigger(t) {
|
|
33
|
-
return t in this.triggers || (this.triggers[t] = (e) =>
|
|
33
|
+
return t in this.triggers || (this.triggers[t] = (e) => _(this.obj, [t, ...e])), this.triggers[t];
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
const b = /* @__PURE__ */ new Set()
|
|
37
|
-
|
|
36
|
+
const b = /* @__PURE__ */ new Set();
|
|
37
|
+
let a = null;
|
|
38
|
+
const u = ["push", "pop", "shift", "unshift", "splice", "sort"];
|
|
39
|
+
function m(n, t) {
|
|
38
40
|
return t === "hasOwnProperty" ? function(e) {
|
|
39
|
-
return
|
|
40
|
-
} : Array.isArray(n) && typeof
|
|
41
|
-
let
|
|
42
|
-
return
|
|
41
|
+
return f(this).hasOwnProperty(e);
|
|
42
|
+
} : Array.isArray(n) && typeof u[t] == "function" ? function(...e) {
|
|
43
|
+
let r;
|
|
44
|
+
return u.includes(t) ? (r = u[t].apply(f(this), e), _(this, [t])) : r = u[t].apply(this, e), r;
|
|
43
45
|
} : null;
|
|
44
46
|
}
|
|
45
|
-
const
|
|
46
|
-
function
|
|
47
|
-
return n =
|
|
47
|
+
const d = /* @__PURE__ */ new WeakMap();
|
|
48
|
+
function w(n) {
|
|
49
|
+
return n = f(n), d.has(n) || d.set(n, /* @__PURE__ */ new Set()), d.get(n);
|
|
48
50
|
}
|
|
49
|
-
function
|
|
50
|
-
|
|
51
|
+
function k(n, t) {
|
|
52
|
+
w(n).add(t);
|
|
51
53
|
}
|
|
52
|
-
function
|
|
53
|
-
const e = (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
k(n).delete(e);
|
|
54
|
+
function M(n, t) {
|
|
55
|
+
const e = (s) => {
|
|
56
|
+
const i = b.has(t);
|
|
57
|
+
b.add(t), i || R(() => t(s)), k(n, e);
|
|
58
|
+
}, r = () => {
|
|
59
|
+
w(n).delete(e);
|
|
59
60
|
};
|
|
60
|
-
return
|
|
61
|
+
return k(n, e), r;
|
|
61
62
|
}
|
|
62
|
-
function
|
|
63
|
-
const e =
|
|
64
|
-
e.clear(),
|
|
63
|
+
function _(n, t) {
|
|
64
|
+
const e = w(n), r = [...e];
|
|
65
|
+
e.clear(), r.forEach((s) => s(t));
|
|
65
66
|
}
|
|
66
|
-
const
|
|
67
|
-
function
|
|
68
|
-
const t = new EventTarget(), e = new Event(
|
|
69
|
-
t.addEventListener(
|
|
70
|
-
t.removeEventListener(
|
|
67
|
+
const p = "__easy_model_event__";
|
|
68
|
+
function R(n) {
|
|
69
|
+
const t = new EventTarget(), e = new Event(p);
|
|
70
|
+
t.addEventListener(p, () => {
|
|
71
|
+
t.removeEventListener(p, n), n();
|
|
71
72
|
}), t.dispatchEvent(e);
|
|
72
73
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return new Proxy(n, new a(n));
|
|
74
|
+
function A() {
|
|
75
|
+
return a ? null : a = Symbol();
|
|
76
76
|
}
|
|
77
|
-
function
|
|
78
|
-
|
|
79
|
-
return c(Object.assign(s, t));
|
|
77
|
+
function C(n) {
|
|
78
|
+
a === n && (a = null, b.clear());
|
|
80
79
|
}
|
|
81
|
-
|
|
80
|
+
let l = null;
|
|
81
|
+
const H = Symbol("filterSymbol");
|
|
82
|
+
function x(n) {
|
|
83
|
+
return new Proxy(n, new h(n));
|
|
84
|
+
}
|
|
85
|
+
function F(n, t, e) {
|
|
86
|
+
const r = e ? n(...e) : Object.create(n.prototype);
|
|
87
|
+
return o(Object.assign(r, t));
|
|
88
|
+
}
|
|
89
|
+
const v = class {
|
|
82
90
|
constructor(t) {
|
|
83
|
-
|
|
84
|
-
|
|
91
|
+
c(this, "fakeCtor");
|
|
92
|
+
c(this, "caches", /* @__PURE__ */ new Map());
|
|
85
93
|
this.Ctor = t;
|
|
86
94
|
const e = function() {
|
|
87
95
|
};
|
|
@@ -90,59 +98,63 @@ const _ = class {
|
|
|
90
98
|
constructor: t,
|
|
91
99
|
__proto__: t.prototype
|
|
92
100
|
},
|
|
93
|
-
|
|
101
|
+
v.prototypeHandlers
|
|
94
102
|
), this.fakeCtor = e;
|
|
95
103
|
}
|
|
96
|
-
apply(t, e,
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
Reflect.construct(this.Ctor,
|
|
104
|
+
apply(t, e, r) {
|
|
105
|
+
const s = l;
|
|
106
|
+
l = this.fakeCtor;
|
|
107
|
+
const i = this.getInstance(r) || this.register(
|
|
108
|
+
r,
|
|
109
|
+
Reflect.construct(this.Ctor, this.filterArgs(r), this.fakeCtor)
|
|
102
110
|
);
|
|
103
|
-
return
|
|
111
|
+
return l = s, i;
|
|
104
112
|
}
|
|
105
|
-
construct(t, e,
|
|
106
|
-
const
|
|
113
|
+
construct(t, e, r) {
|
|
114
|
+
const s = Reflect.construct(
|
|
107
115
|
t,
|
|
108
|
-
e,
|
|
109
|
-
|
|
116
|
+
this.filterArgs(e),
|
|
117
|
+
r === this.Ctor ? this.fakeCtor : r
|
|
110
118
|
);
|
|
111
|
-
return
|
|
119
|
+
return l !== r ? o(s) : s;
|
|
112
120
|
}
|
|
113
121
|
getInstance(t) {
|
|
114
122
|
for (const e of this.caches.keys()) {
|
|
115
123
|
if (e.length !== t.length || !e.every(
|
|
116
|
-
(
|
|
124
|
+
(s, i) => s === t[i] ? !0 : typeof s == "object" && typeof t[i] == "object" ? this.isShallowEqualObj(s, t[i]) : !1
|
|
117
125
|
))
|
|
118
126
|
continue;
|
|
119
|
-
const
|
|
120
|
-
return
|
|
127
|
+
const r = this.caches.get(e);
|
|
128
|
+
return r.deref() ? o(r.deref()) : (this.caches.delete(e), null);
|
|
121
129
|
}
|
|
122
130
|
return null;
|
|
123
131
|
}
|
|
124
132
|
register(t, e) {
|
|
125
|
-
return this.caches.set(t, new WeakRef(e)),
|
|
133
|
+
return this.caches.set(t, new WeakRef(e)), o(e);
|
|
126
134
|
}
|
|
127
135
|
isShallowEqualObj(t, e) {
|
|
128
|
-
const
|
|
129
|
-
return
|
|
136
|
+
const r = Object.keys(t), s = e.keys(e);
|
|
137
|
+
return r.length === s.length && r.every((i) => t[i] === e[i]);
|
|
138
|
+
}
|
|
139
|
+
filterArgs(t) {
|
|
140
|
+
return t.filter((e) => e !== H);
|
|
130
141
|
}
|
|
131
142
|
};
|
|
132
|
-
let
|
|
133
|
-
|
|
134
|
-
get(t, e,
|
|
135
|
-
const
|
|
136
|
-
if (
|
|
137
|
-
return
|
|
138
|
-
const
|
|
139
|
-
return typeof e == "symbol" || ["constructor", "__proto__"].includes(e) || typeof
|
|
140
|
-
return
|
|
143
|
+
let h = v;
|
|
144
|
+
c(h, "prototypeHandlers", {
|
|
145
|
+
get(t, e, r) {
|
|
146
|
+
const s = m(t, e);
|
|
147
|
+
if (s)
|
|
148
|
+
return s;
|
|
149
|
+
const i = Reflect.get(t, e, r);
|
|
150
|
+
return typeof e == "symbol" || ["constructor", "__proto__"].includes(e) || typeof i != "function" ? i : function(...y) {
|
|
151
|
+
return i.apply(o(this), y);
|
|
141
152
|
};
|
|
142
153
|
}
|
|
143
154
|
});
|
|
144
155
|
export {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
156
|
+
F as extend,
|
|
157
|
+
H as filterSymbol,
|
|
158
|
+
x as provide,
|
|
159
|
+
M as subscribe
|
|
148
160
|
};
|
package/dist/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(o,c){typeof exports=="object"&&typeof module<"u"?c(exports):typeof define=="function"&&define.amd?define(["exports"],c):(o=typeof globalThis<"u"?globalThis:o||self,c(o["@e7w/easy-model"]={}))})(this,function(o){"use strict";var F=Object.defineProperty;var P=(o,c,f)=>c in o?F(o,c,{enumerable:!0,configurable:!0,writable:!0,value:f}):o[c]=f;var h=(o,c,f)=>(P(o,typeof c!="symbol"?c+"":c,f),f);const c=new WeakMap,f=Symbol("origin");function u(n){if(n=l(n),c.has(n))return c.get(n);const e=new Proxy(n,new T(n));return c.set(n,e),e}function l(n){return n&&(n[f]||n)}class T{constructor(e){h(this,"triggers",{});h(this,"cachedFns",{});this.obj=e}get(e,t,r){if(t===f)return this.obj;let s=O(e,t)||Reflect.get(e,t,r);return typeof s=="function"?this.cachedFns[t]||(this.cachedFns[t]=s.bind(u(e))):(typeof s=="object"&&(s=u(s),m(s,this.getTrigger(t))),s)}set(e,t,r,s){if(r&&(r=l(r)),r===l(Reflect.get(e,t)))return!0;const i=A(),S=Reflect.set(e,t,r,s);return _(this.obj,[t]),C(i),S}getTrigger(e){return e in this.triggers||(this.triggers[e]=t=>_(this.obj,[e,...t])),this.triggers[e]}}const p=new Set;let a=null;const d=["push","pop","shift","unshift","splice","sort"];function O(n,e){return e==="hasOwnProperty"?function(t){return l(this).hasOwnProperty(t)}:Array.isArray(n)&&typeof d[e]=="function"?function(...t){let r;return d.includes(e)?(r=d[e].apply(l(this),t),_(this,[e])):r=d[e].apply(this,t),r}:null}const b=new WeakMap;function k(n){return n=l(n),b.has(n)||b.set(n,new Set),b.get(n)}function m(n,e){k(n).add(e)}function E(n,e){const t=s=>{const i=p.has(e);p.add(e),i||R(()=>e(s)),m(n,t)},r=()=>{k(n).delete(t)};return m(n,t),r}function _(n,e){const t=k(n),r=[...t];t.clear(),r.forEach(s=>s(e))}const v="__easy_model_event__";function R(n){const e=new EventTarget,t=new Event(v);e.addEventListener(v,()=>{e.removeEventListener(v,n),n()}),e.dispatchEvent(t)}function A(){return a?null:a=Symbol()}function C(n){a===n&&(a=null,p.clear())}let y=null;const j=Symbol("filterSymbol");function H(n){return new Proxy(n,new g(n))}function M(n,e,t){const r=t?n(...t):Object.create(n.prototype);return u(Object.assign(r,e))}const w=class{constructor(e){h(this,"fakeCtor");h(this,"caches",new Map);this.Ctor=e;const t=function(){};t.prototype=new Proxy({constructor:e,__proto__:e.prototype},w.prototypeHandlers),this.fakeCtor=t}apply(e,t,r){const s=y;y=this.fakeCtor;const i=this.getInstance(r)||this.register(r,Reflect.construct(this.Ctor,this.filterArgs(r),this.fakeCtor));return y=s,i}construct(e,t,r){const s=Reflect.construct(e,this.filterArgs(t),r===this.Ctor?this.fakeCtor:r);return y!==r?u(s):s}getInstance(e){for(const t of this.caches.keys()){if(t.length!==e.length||!t.every((s,i)=>s===e[i]?!0:typeof s=="object"&&typeof e[i]=="object"?this.isShallowEqualObj(s,e[i]):!1))continue;const r=this.caches.get(t);return r.deref()?u(r.deref()):(this.caches.delete(t),null)}return null}register(e,t){return this.caches.set(e,new WeakRef(t)),u(t)}isShallowEqualObj(e,t){const r=Object.keys(e),s=t.keys(t);return r.length===s.length&&r.every(i=>e[i]===t[i])}filterArgs(e){return e.filter(t=>t!==j)}};let g=w;h(g,"prototypeHandlers",{get(e,t,r){const s=O(e,t);if(s)return s;const i=Reflect.get(e,t,r);return typeof t=="symbol"||["constructor","__proto__"].includes(t)||typeof i!="function"?i:function(...S){return i.apply(u(this),S)}}}),o.extend=M,o.filterSymbol=j,o.provide=H,o.subscribe=E,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
|
package/dist/provide.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type Ctor } from "./helpers";
|
|
2
|
+
export declare const filterSymbol: unique symbol;
|
|
2
3
|
export declare function provide<T extends Ctor>(Ctor: T): T & ((...args: ConstructorParameters<T>) => InstanceType<T>);
|
|
3
4
|
export declare function extend<T extends ReturnType<typeof provide>, P extends Partial<InstanceType<T>>>(Provider: T, extendData: P): P & Partial<Omit<InstanceType<T>, keyof P>>;
|
|
4
5
|
export declare function extend<T extends ReturnType<typeof provide>, P extends Partial<InstanceType<T>>, M extends Parameters<T>>(Provider: T, extendData: P, args: M): InstanceType<T>;
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@e7w/easy-model",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.9",
|
|
4
4
|
"description": "一个简单的状态管理包, A simple state management lib for Typescript",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"module": "./dist/index.es.js",
|
|
7
|
-
"types": "./src/index.
|
|
7
|
+
"types": "./src/index.ts",
|
|
8
8
|
"typings": "./dist/index.d.ts",
|
|
9
9
|
"exports": {
|
|
10
10
|
"import": "./dist/index.es.js",
|
package/src/helpers.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getOrigin } from "./observe";
|
|
2
2
|
|
|
3
3
|
const triggered = new Set();
|
|
4
|
+
let triggerSymbol: Symbol | null = null;
|
|
4
5
|
|
|
5
6
|
export type Ctor = new (...args: any[]) => any;
|
|
6
7
|
export type Obj = Record<string | symbol | number, any>;
|
|
@@ -49,9 +50,9 @@ export function subscribe(
|
|
|
49
50
|
handler: (path: (string | symbol)[]) => void
|
|
50
51
|
): () => void {
|
|
51
52
|
const wrappedHandler: typeof handler = (path) => {
|
|
52
|
-
|
|
53
|
-
triggerTop(() => handler(path));
|
|
53
|
+
const isTriggered = triggered.has(handler);
|
|
54
54
|
triggered.add(handler);
|
|
55
|
+
if (!isTriggered) triggerTop(() => handler(path));
|
|
55
56
|
track(target, wrappedHandler);
|
|
56
57
|
};
|
|
57
58
|
const unsubscribe = () => {
|
|
@@ -63,11 +64,9 @@ export function subscribe(
|
|
|
63
64
|
|
|
64
65
|
export function trigger(target: Obj, path: (string | symbol)[]): void {
|
|
65
66
|
const handlers = getUpdateHandlers(target);
|
|
66
|
-
const cbs = [...handlers]
|
|
67
|
+
const cbs = [...handlers];
|
|
67
68
|
handlers.clear();
|
|
68
|
-
|
|
69
69
|
cbs.forEach((fn) => fn(path));
|
|
70
|
-
triggered.clear();
|
|
71
70
|
}
|
|
72
71
|
|
|
73
72
|
const eventName = "__easy_model_event__";
|
|
@@ -80,3 +79,14 @@ function triggerTop(cb: () => void): void {
|
|
|
80
79
|
});
|
|
81
80
|
target.dispatchEvent(e);
|
|
82
81
|
}
|
|
82
|
+
|
|
83
|
+
export function startTrigger() {
|
|
84
|
+
if (triggerSymbol) return null;
|
|
85
|
+
return (triggerSymbol = Symbol());
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function endTrigger(symbol: symbol | null) {
|
|
89
|
+
if (triggerSymbol !== symbol) return;
|
|
90
|
+
triggerSymbol = null;
|
|
91
|
+
triggered.clear();
|
|
92
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { subscribe } from "./helpers";
|
|
2
|
-
export { provide, extend } from "./provide";
|
|
2
|
+
export { provide, extend, filterSymbol } from "./provide";
|
package/src/observe.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
type Obj,
|
|
3
|
+
safeGet,
|
|
4
|
+
track,
|
|
5
|
+
trigger,
|
|
6
|
+
startTrigger,
|
|
7
|
+
endTrigger,
|
|
8
|
+
} from "./helpers";
|
|
2
9
|
|
|
3
10
|
const observedMap = new WeakMap();
|
|
4
11
|
const origin = Symbol("origin");
|
|
@@ -48,8 +55,10 @@ class ObserveHandler<T extends Obj> implements ProxyHandler<T> {
|
|
|
48
55
|
): boolean {
|
|
49
56
|
if (newValue) newValue = getOrigin(newValue);
|
|
50
57
|
if (newValue === getOrigin(Reflect.get(target, p))) return true;
|
|
58
|
+
const flag = startTrigger();
|
|
51
59
|
const ret = Reflect.set(target, p, newValue, receiver);
|
|
52
60
|
trigger(this.obj, [p]);
|
|
61
|
+
endTrigger(flag);
|
|
53
62
|
return ret;
|
|
54
63
|
}
|
|
55
64
|
|
package/src/provide.ts
CHANGED
|
@@ -3,6 +3,8 @@ import { observe } from "./observe";
|
|
|
3
3
|
|
|
4
4
|
let creatingTarget: any = null;
|
|
5
5
|
|
|
6
|
+
export const filterSymbol = Symbol("filterSymbol");
|
|
7
|
+
|
|
6
8
|
export function provide<T extends Ctor>(
|
|
7
9
|
Ctor: T
|
|
8
10
|
): T & ((...args: ConstructorParameters<T>) => InstanceType<T>) {
|
|
@@ -84,7 +86,7 @@ class Provider<T extends Ctor> implements ProxyHandler<T> {
|
|
|
84
86
|
this.getInstance(argArray) ||
|
|
85
87
|
this.register(
|
|
86
88
|
argArray,
|
|
87
|
-
Reflect.construct(this.Ctor, argArray, this.fakeCtor)
|
|
89
|
+
Reflect.construct(this.Ctor, this.filterArgs(argArray), this.fakeCtor)
|
|
88
90
|
);
|
|
89
91
|
creatingTarget = last;
|
|
90
92
|
return instance;
|
|
@@ -97,7 +99,7 @@ class Provider<T extends Ctor> implements ProxyHandler<T> {
|
|
|
97
99
|
): InstanceType<T> {
|
|
98
100
|
const instance = Reflect.construct(
|
|
99
101
|
target,
|
|
100
|
-
argArray,
|
|
102
|
+
this.filterArgs(argArray),
|
|
101
103
|
newTarget === this.Ctor ? this.fakeCtor : newTarget
|
|
102
104
|
);
|
|
103
105
|
if (creatingTarget !== newTarget) return observe(instance);
|
|
@@ -142,4 +144,8 @@ class Provider<T extends Ctor> implements ProxyHandler<T> {
|
|
|
142
144
|
kOfA.every((key) => objectA[key] === objectB[key])
|
|
143
145
|
);
|
|
144
146
|
}
|
|
147
|
+
|
|
148
|
+
private filterArgs(args: any[]): any[] {
|
|
149
|
+
return args.filter((arg) => arg !== filterSymbol);
|
|
150
|
+
}
|
|
145
151
|
}
|