UNPKG

8.36 kBJavaScriptView Raw
1var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
2var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
3var _Map = require("@babel/runtime-corejs2/core-js/map");
4var _Array$isArray = require("@babel/runtime-corejs2/core-js/array/is-array");
5var _typeof = require("./typeof.js")["default"];
6function createAddInitializerMethod(initializers, decoratorFinishedRef) {
7 return function (initializer) {
8 assertNotFinished(decoratorFinishedRef, "addInitializer"), assertCallable(initializer, "An initializer"), initializers.push(initializer);
9 };
10}
11function memberDec(dec, name, desc, initializers, kind, isStatic, isPrivate, value) {
12 var kindStr;
13 switch (kind) {
14 case 1:
15 kindStr = "accessor";
16 break;
17 case 2:
18 kindStr = "method";
19 break;
20 case 3:
21 kindStr = "getter";
22 break;
23 case 4:
24 kindStr = "setter";
25 break;
26 default:
27 kindStr = "field";
28 }
29 var get,
30 set,
31 ctx = {
32 kind: kindStr,
33 name: isPrivate ? "#" + name : name,
34 "static": isStatic,
35 "private": isPrivate
36 },
37 decoratorFinishedRef = {
38 v: !1
39 };
40 0 !== kind && (ctx.addInitializer = createAddInitializerMethod(initializers, decoratorFinishedRef)), 0 === kind ? isPrivate ? (get = desc.get, set = desc.set) : (get = function get() {
41 return this[name];
42 }, set = function set(v) {
43 this[name] = v;
44 }) : 2 === kind ? get = function get() {
45 return desc.value;
46 } : (1 !== kind && 3 !== kind || (get = function get() {
47 return desc.get.call(this);
48 }), 1 !== kind && 4 !== kind || (set = function set(v) {
49 desc.set.call(this, v);
50 })), ctx.access = get && set ? {
51 get: get,
52 set: set
53 } : get ? {
54 get: get
55 } : {
56 set: set
57 };
58 try {
59 return dec(value, ctx);
60 } finally {
61 decoratorFinishedRef.v = !0;
62 }
63}
64function assertNotFinished(decoratorFinishedRef, fnName) {
65 if (decoratorFinishedRef.v) throw new Error("attempted to call " + fnName + " after decoration was finished");
66}
67function assertCallable(fn, hint) {
68 if ("function" != typeof fn) throw new TypeError(hint + " must be a function");
69}
70function assertValidReturnValue(kind, value) {
71 var type = _typeof(value);
72 if (1 === kind) {
73 if ("object" !== type || null === value) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
74 void 0 !== value.get && assertCallable(value.get, "accessor.get"), void 0 !== value.set && assertCallable(value.set, "accessor.set"), void 0 !== value.init && assertCallable(value.init, "accessor.init");
75 } else if ("function" !== type) {
76 var hint;
77 throw hint = 0 === kind ? "field" : 10 === kind ? "class" : "method", new TypeError(hint + " decorators must return a function or void 0");
78 }
79}
80function applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, initializers) {
81 var desc,
82 init,
83 value,
84 newValue,
85 get,
86 set,
87 decs = decInfo[0];
88 if (isPrivate ? desc = 0 === kind || 1 === kind ? {
89 get: decInfo[3],
90 set: decInfo[4]
91 } : 3 === kind ? {
92 get: decInfo[3]
93 } : 4 === kind ? {
94 set: decInfo[3]
95 } : {
96 value: decInfo[3]
97 } : 0 !== kind && (desc = _Object$getOwnPropertyDescriptor(base, name)), 1 === kind ? value = {
98 get: desc.get,
99 set: desc.set
100 } : 2 === kind ? value = desc.value : 3 === kind ? value = desc.get : 4 === kind && (value = desc.set), "function" == typeof decs) void 0 !== (newValue = memberDec(decs, name, desc, initializers, kind, isStatic, isPrivate, value)) && (assertValidReturnValue(kind, newValue), 0 === kind ? init = newValue : 1 === kind ? (init = newValue.init, get = newValue.get || value.get, set = newValue.set || value.set, value = {
101 get: get,
102 set: set
103 }) : value = newValue);else for (var i = decs.length - 1; i >= 0; i--) {
104 var newInit;
105 if (void 0 !== (newValue = memberDec(decs[i], name, desc, initializers, kind, isStatic, isPrivate, value))) assertValidReturnValue(kind, newValue), 0 === kind ? newInit = newValue : 1 === kind ? (newInit = newValue.init, get = newValue.get || value.get, set = newValue.set || value.set, value = {
106 get: get,
107 set: set
108 }) : value = newValue, void 0 !== newInit && (void 0 === init ? init = newInit : "function" == typeof init ? init = [init, newInit] : init.push(newInit));
109 }
110 if (0 === kind || 1 === kind) {
111 if (void 0 === init) init = function init(instance, _init) {
112 return _init;
113 };else if ("function" != typeof init) {
114 var ownInitializers = init;
115 init = function init(instance, _init2) {
116 for (var value = _init2, i = 0; i < ownInitializers.length; i++) value = ownInitializers[i].call(instance, value);
117 return value;
118 };
119 } else {
120 var originalInitializer = init;
121 init = function init(instance, _init3) {
122 return originalInitializer.call(instance, _init3);
123 };
124 }
125 ret.push(init);
126 }
127 0 !== kind && (1 === kind ? (desc.get = value.get, desc.set = value.set) : 2 === kind ? desc.value = value : 3 === kind ? desc.get = value : 4 === kind && (desc.set = value), isPrivate ? 1 === kind ? (ret.push(function (instance, args) {
128 return value.get.call(instance, args);
129 }), ret.push(function (instance, args) {
130 return value.set.call(instance, args);
131 })) : 2 === kind ? ret.push(value) : ret.push(function (instance, args) {
132 return value.call(instance, args);
133 }) : _Object$defineProperty(base, name, desc));
134}
135function applyMemberDecs(Class, decInfos) {
136 for (var protoInitializers, staticInitializers, ret = [], existingProtoNonFields = new _Map(), existingStaticNonFields = new _Map(), i = 0; i < decInfos.length; i++) {
137 var decInfo = decInfos[i];
138 if (_Array$isArray(decInfo)) {
139 var base,
140 initializers,
141 kind = decInfo[1],
142 name = decInfo[2],
143 isPrivate = decInfo.length > 3,
144 isStatic = kind >= 5;
145 if (isStatic ? (base = Class, 0 !== (kind -= 5) && (initializers = staticInitializers = staticInitializers || [])) : (base = Class.prototype, 0 !== kind && (initializers = protoInitializers = protoInitializers || [])), 0 !== kind && !isPrivate) {
146 var existingNonFields = isStatic ? existingStaticNonFields : existingProtoNonFields,
147 existingKind = existingNonFields.get(name) || 0;
148 if (!0 === existingKind || 3 === existingKind && 4 !== kind || 4 === existingKind && 3 !== kind) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + name);
149 !existingKind && kind > 2 ? existingNonFields.set(name, kind) : existingNonFields.set(name, !0);
150 }
151 applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, initializers);
152 }
153 }
154 return pushInitializers(ret, protoInitializers), pushInitializers(ret, staticInitializers), ret;
155}
156function pushInitializers(ret, initializers) {
157 initializers && ret.push(function (instance) {
158 for (var i = 0; i < initializers.length; i++) initializers[i].call(instance);
159 return instance;
160 });
161}
162function applyClassDecs(targetClass, classDecs) {
163 if (classDecs.length > 0) {
164 for (var initializers = [], newClass = targetClass, name = targetClass.name, i = classDecs.length - 1; i >= 0; i--) {
165 var decoratorFinishedRef = {
166 v: !1
167 };
168 try {
169 var nextNewClass = classDecs[i](newClass, {
170 kind: "class",
171 name: name,
172 addInitializer: createAddInitializerMethod(initializers, decoratorFinishedRef)
173 });
174 } finally {
175 decoratorFinishedRef.v = !0;
176 }
177 void 0 !== nextNewClass && (assertValidReturnValue(10, nextNewClass), newClass = nextNewClass);
178 }
179 return [newClass, function () {
180 for (var i = 0; i < initializers.length; i++) initializers[i].call(newClass);
181 }];
182 }
183}
184function applyDecs2203R(targetClass, memberDecs, classDecs) {
185 return {
186 e: applyMemberDecs(targetClass, memberDecs),
187 get c() {
188 return applyClassDecs(targetClass, classDecs);
189 }
190 };
191}
192module.exports = applyDecs2203R, module.exports.__esModule = true, module.exports["default"] = module.exports;
\No newline at end of file