You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
6.2 KiB
195 lines
6.2 KiB
var _typeof = require("./typeof.js")["default"]; |
|
var checkInRHS = require("./checkInRHS.js"); |
|
function _bindPropCall(e, t) { |
|
return function (r, a) { |
|
return e[t].call(r, a); |
|
}; |
|
} |
|
function createAddInitializerMethod(e, t) { |
|
return function (r) { |
|
if (t.v) throw new Error("attempted to call addInitializer after decoration was finished"); |
|
assertCallable(r, "An initializer", !0), e.push(r); |
|
}; |
|
} |
|
function memberDec(e, t, r, a, n, i, o, s, l, c, u) { |
|
function assertInstanceIfPrivate(e) { |
|
return function (t, r) { |
|
if (!c(t)) throw new TypeError("Attempted to access private element on non-instance"); |
|
return e(t, r); |
|
}; |
|
} |
|
var f, |
|
d, |
|
p = { |
|
v: !1 |
|
}, |
|
v = { |
|
kind: ["field", "accessor", "method", "getter", "setter", "field"][i], |
|
name: s ? "#" + r : r, |
|
"static": o, |
|
"private": s, |
|
metadata: u, |
|
addInitializer: createAddInitializerMethod(n, p) |
|
}; |
|
if (s || 0 !== i && 2 !== i) { |
|
if (2 === i) f = assertInstanceIfPrivate(function () { |
|
return a.value; |
|
});else { |
|
var h = 0 === i || 1 === i; |
|
(h || 3 === i) && (f = _bindPropCall(a, "get"), s && (f = assertInstanceIfPrivate(f))), (h || 4 === i) && (d = _bindPropCall(a, "set"), s && (d = assertInstanceIfPrivate(d))); |
|
} |
|
} else f = function f(e) { |
|
return e[r]; |
|
}, 0 === i && (d = function d(e, t) { |
|
e[r] = t; |
|
}); |
|
var m = s ? c.bind() : function (e) { |
|
return r in e; |
|
}, |
|
b = v.access = { |
|
has: m |
|
}; |
|
f && (b.get = f), d && (b.set = d); |
|
try { |
|
return e.call(t, l, v); |
|
} finally { |
|
p.v = !0; |
|
} |
|
} |
|
function assertCallable(e, t, r) { |
|
if ("function" != typeof e && (r || void 0 !== e)) throw new TypeError(t + " must be a function"); |
|
} |
|
function assertValidReturnValue(e, t) { |
|
var r = _typeof(t); |
|
if (1 === e) { |
|
if ("object" !== r || !t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); |
|
assertCallable(t.get, "accessor.get"), assertCallable(t.set, "accessor.set"), assertCallable(t.init, "accessor.init"); |
|
} else if ("function" !== r) throw new TypeError((0 === e ? "field" : 5 === e ? "class" : "method") + " decorators must return a function or void 0"); |
|
} |
|
function applyMemberDec(e, t, r, a, n, i, o, s, l, c, u) { |
|
var f, |
|
d, |
|
p, |
|
v, |
|
h = r[0], |
|
m = r[3]; |
|
a || Array.isArray(h) || (h = [h]), s ? f = 0 === i || 1 === i ? { |
|
get: function get() { |
|
return m(this); |
|
}, |
|
set: function set(e) { |
|
r[4](this, e); |
|
} |
|
} : 3 === i ? { |
|
get: m |
|
} : 4 === i ? { |
|
set: m |
|
} : { |
|
value: m |
|
} : 0 !== i && (f = Object.getOwnPropertyDescriptor(t, n)), 1 === i ? p = { |
|
get: f.get, |
|
set: f.set |
|
} : 2 === i ? p = f.value : 3 === i ? p = f.get : 4 === i && (p = f.set); |
|
for (var b = a ? 2 : 1, y = h.length - 1; y >= 0; y -= b) { |
|
var g; |
|
if (void 0 !== (v = memberDec(h[y], a ? h[y - 1] : void 0, n, f, l, i, o, s, p, c, u))) assertValidReturnValue(i, v), 0 === i ? g = v : 1 === i ? (g = v.init, p = { |
|
get: v.get || p.get, |
|
set: v.set || p.set |
|
}) : p = v, void 0 !== g && (void 0 === d ? d = g : "function" == typeof d ? d = [d, g] : d.push(g)); |
|
} |
|
if (0 === i || 1 === i) { |
|
if (void 0 === d) d = function d(e, t) { |
|
return t; |
|
};else if ("function" != typeof d) { |
|
var I = d; |
|
d = function d(e, t) { |
|
for (var r = t, a = I.length - 1; a >= 0; a--) r = I[a].call(e, r); |
|
return r; |
|
}; |
|
} else { |
|
var w = d; |
|
d = d.call.bind(w); |
|
} |
|
e.push(d); |
|
} |
|
0 !== i && (1 === i ? (f.get = p.get, f.set = p.set) : 2 === i ? f.value = p : 3 === i ? f.get = p : 4 === i && (f.set = p), s ? 1 === i ? e.push(_bindPropCall(f, "get"), _bindPropCall(f, "set")) : e.push(2 === i ? p : Function.call.bind(p)) : Object.defineProperty(t, n, f)); |
|
} |
|
function applyMemberDecs(e, t, r, a) { |
|
var n, |
|
i, |
|
o, |
|
s = [], |
|
l = new Map(), |
|
c = new Map(); |
|
function pushInitializers(e) { |
|
e && s.push(function (t) { |
|
for (var r = 0; r < e.length; r++) e[r].call(t); |
|
return t; |
|
}); |
|
} |
|
for (var u = 0; u < t.length; u++) { |
|
var f = t[u]; |
|
if (Array.isArray(f)) { |
|
var d, |
|
p, |
|
v = f[1], |
|
h = f[2], |
|
m = f.length > 3, |
|
b = 16 & v, |
|
y = !!(8 & v), |
|
g = r; |
|
if (v &= 7, y ? (d = e, p = i = i || [], m && !o && (o = function o(t) { |
|
return checkInRHS(t) === e; |
|
}), g = o) : (d = e.prototype, p = n = n || []), 0 !== v && !m) { |
|
var I = y ? c : l, |
|
w = I.get(h) || 0; |
|
if (!0 === w || 3 === w && 4 !== v || 4 === w && 3 !== v) 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: " + h); |
|
I.set(h, !(!w && v > 2) || v); |
|
} |
|
applyMemberDec(s, d, f, b, h, v, y, m, p, g, a); |
|
} |
|
} |
|
return pushInitializers(n), pushInitializers(i), s; |
|
} |
|
function applyClassDecs(e, t, r, a) { |
|
if (t.length) { |
|
for (var n = [], i = e, o = e.name, s = r ? 2 : 1, l = t.length - 1; l >= 0; l -= s) { |
|
var c = { |
|
v: !1 |
|
}; |
|
try { |
|
var u = t[l].call(r ? t[l - 1] : void 0, i, { |
|
kind: "class", |
|
name: o, |
|
addInitializer: createAddInitializerMethod(n, c), |
|
metadata: a |
|
}); |
|
} finally { |
|
c.v = !0; |
|
} |
|
void 0 !== u && (assertValidReturnValue(5, u), i = u); |
|
} |
|
return [defineMetadata(i, a), function () { |
|
for (var e = 0; e < n.length; e++) n[e].call(i); |
|
}]; |
|
} |
|
} |
|
function defineMetadata(e, t) { |
|
return Object.defineProperty(e, Symbol.metadata || Symbol["for"]("Symbol.metadata"), { |
|
configurable: !0, |
|
enumerable: !0, |
|
value: t |
|
}); |
|
} |
|
function applyDecs2305(e, t, r, a, n, i) { |
|
if (arguments.length >= 6) var o = i[Symbol.metadata || Symbol["for"]("Symbol.metadata")]; |
|
var s = Object.create(void 0 === o ? null : o), |
|
l = applyMemberDecs(e, t, n, s); |
|
return r.length || defineMetadata(e, s), { |
|
e: l, |
|
get c() { |
|
return applyClassDecs(e, r, a, s); |
|
} |
|
}; |
|
} |
|
module.exports = applyDecs2305, module.exports.__esModule = true, module.exports["default"] = module.exports; |