MCPcopy
hub / github.com/nytimes/react-tracking / makeClassMemberDecorator

Function makeClassMemberDecorator

src/makeClassMemberDecorator.js:12–56  ·  view source on GitHub ↗
(decorate)

Source from the content-addressed store, hash-verified

10 * @returns {Function} Class member decorator ((target, name, descriptor) => newDescriptor)
11 */
12export default function makeClassMemberDecorator(decorate) {
13 return function decorateClassMember(target, name, descriptor) {
14 const { configurable, enumerable, value, get, initializer } = descriptor;
15
16 if (value) {
17 return {
18 configurable,
19 enumerable,
20 value: decorate(value),
21 };
22 }
23
24 // support lazy initializer
25 if (get || initializer) {
26 return {
27 configurable,
28 enumerable,
29 get() {
30 // This happens if someone accesses the
31 // property directly on the prototype
32 if (this === target) {
33 return null;
34 }
35
36 const resolvedValue = initializer
37 ? Reflect.apply(initializer, this, [])
38 : Reflect.apply(get, this, []);
39 const decoratedValue = decorate(resolvedValue).bind(this);
40
41 Reflect.defineProperty(this, name, {
42 configurable,
43 enumerable,
44 value: decoratedValue,
45 });
46
47 return decoratedValue;
48 },
49 };
50 }
51
52 throw new Error(
53 'called makeClassMemberDecorator on unsupported descriptor'
54 );
55 };
56}

Callers 3

TestClass · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…