UNPKG

8.91 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 applyDecs2203Factory() {
7 function createAddInitializerMethod(initializers, decoratorFinishedRef) {
8 return function (initializer) {
9 !function (decoratorFinishedRef, fnName) {
10 if (decoratorFinishedRef.v) throw new Error("attempted to call " + fnName + " after decoration was finished");
11 }(decoratorFinishedRef, "addInitializer"), assertCallable(initializer, "An initializer"), initializers.push(initializer);
12 };
13 }
14 function memberDec(dec, name, desc, initializers, kind, isStatic, isPrivate, value) {
15 var kindStr;
16 switch (kind) {
17 case 1:
18 kindStr = "accessor";
19 break;
20 case 2:
21 kindStr = "method";
22 break;
23 case 3:
24 kindStr = "getter";
25 break;
26 case 4:
27 kindStr = "setter";
28 break;
29 default:
30 kindStr = "field";
31 }
32 var get,
33 set,
34 ctx = {
35 kind: kindStr,
36 name: isPrivate ? "#" + name : name,
37 "static": isStatic,
38 "private": isPrivate
39 },
40 decoratorFinishedRef = {
41 v: !1
42 };
43 0 !== kind && (ctx.addInitializer = createAddInitializerMethod(initializers, decoratorFinishedRef)), 0 === kind ? isPrivate ? (get = desc.get, set = desc.set) : (get = function get() {
44 return this[name];
45 }, set = function set(v) {
46 this[name] = v;
47 }) : 2 === kind ? get = function get() {
48 return desc.value;
49 } : (1 !== kind && 3 !== kind || (get = function get() {
50 return desc.get.call(this);
51 }), 1 !== kind && 4 !== kind || (set = function set(v) {
52 desc.set.call(this, v);
53 })), ctx.access = get && set ? {
54 get: get,
55 set: set
56 } : get ? {
57 get: get
58 } : {
59 set: set
60 };
61 try {
62 return dec(value, ctx);
63 } finally {
64 decoratorFinishedRef.v = !0;
65 }
66 }
67 function assertCallable(fn, hint) {
68 if ("function" != typeof fn) throw new TypeError(hint + " must be a function");
69 }
70 function 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 }
80 function 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 }
135 function pushInitializers(ret, initializers) {
136 initializers && ret.push(function (instance) {
137 for (var i = 0; i < initializers.length; i++) initializers[i].call(instance);
138 return instance;
139 });
140 }
141 return function (targetClass, memberDecs, classDecs) {
142 var ret = [];
143 return function (ret, Class, decInfos) {
144 for (var protoInitializers, staticInitializers, existingProtoNonFields = new _Map(), existingStaticNonFields = new _Map(), i = 0; i < decInfos.length; i++) {
145 var decInfo = decInfos[i];
146 if (_Array$isArray(decInfo)) {
147 var base,
148 initializers,
149 kind = decInfo[1],
150 name = decInfo[2],
151 isPrivate = decInfo.length > 3,
152 isStatic = kind >= 5;
153 if (isStatic ? (base = Class, 0 != (kind -= 5) && (initializers = staticInitializers = staticInitializers || [])) : (base = Class.prototype, 0 !== kind && (initializers = protoInitializers = protoInitializers || [])), 0 !== kind && !isPrivate) {
154 var existingNonFields = isStatic ? existingStaticNonFields : existingProtoNonFields,
155 existingKind = existingNonFields.get(name) || 0;
156 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);
157 !existingKind && kind > 2 ? existingNonFields.set(name, kind) : existingNonFields.set(name, !0);
158 }
159 applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, initializers);
160 }
161 }
162 pushInitializers(ret, protoInitializers), pushInitializers(ret, staticInitializers);
163 }(ret, targetClass, memberDecs), function (ret, targetClass, classDecs) {
164 if (classDecs.length > 0) {
165 for (var initializers = [], newClass = targetClass, name = targetClass.name, i = classDecs.length - 1; i >= 0; i--) {
166 var decoratorFinishedRef = {
167 v: !1
168 };
169 try {
170 var nextNewClass = classDecs[i](newClass, {
171 kind: "class",
172 name: name,
173 addInitializer: createAddInitializerMethod(initializers, decoratorFinishedRef)
174 });
175 } finally {
176 decoratorFinishedRef.v = !0;
177 }
178 void 0 !== nextNewClass && (assertValidReturnValue(10, nextNewClass), newClass = nextNewClass);
179 }
180 ret.push(newClass, function () {
181 for (var i = 0; i < initializers.length; i++) initializers[i].call(newClass);
182 });
183 }
184 }(ret, targetClass, classDecs), ret;
185 };
186}
187var applyDecs2203Impl;
188function applyDecs2203(targetClass, memberDecs, classDecs) {
189 return (applyDecs2203Impl = applyDecs2203Impl || applyDecs2203Factory())(targetClass, memberDecs, classDecs);
190}
191module.exports = applyDecs2203, module.exports.__esModule = true, module.exports["default"] = module.exports;
\No newline at end of file