deno.land / x / hooks@v0.6.5 / src / utils.ts

نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
const proto = Object.prototype as any;// These are non-standard but offer a more reliable prototype based// lookup for propertiesconst hasProtoDefinitions = typeof proto.__lookupGetter__ === 'function' && typeof proto.__defineGetter__ === 'function' && typeof proto.__defineSetter__ === 'function';
export function copyToSelf (target: any) { // tslint:disable-next-line for (const key in target) { if (!target.hasOwnProperty(key)) { const getter = hasProtoDefinitions ? target.constructor.prototype.__lookupGetter__(key) : Object.getOwnPropertyDescriptor(target, key);
if (hasProtoDefinitions && getter) { target.__defineGetter__(key, getter);
const setter = target.constructor.prototype.__lookupSetter__(key);
if (setter) { target.__defineSetter__(key, setter); } } else if (getter) { Object.defineProperty(target, key, getter); } else { target[key] = target[key]; } } }}
export function copyProperties <F> (target: F, ...originals: any[]) { for (const original of originals) { const originalProps = (Object.keys(original) as any) .concat(Object.getOwnPropertySymbols(original));
for (const prop of originalProps) { const propDescriptor = Object.getOwnPropertyDescriptor(original, prop);
if (propDescriptor && !Object.prototype.hasOwnProperty.call(target, prop)) { Object.defineProperty(target, prop, propDescriptor); } } }
return target;}
export function copyFnProperties <F> (target: F, original : any) { const internalProps = ['name', 'length'];
try { for (const prop of internalProps) { const value = original[prop];
Object.defineProperty(target, prop, { value }); } } catch (e) { // Avoid IE error }
return target;}
hooks

Version Info

Tagged at
3 years ago