UNPKG

@casl/ability

Version:

CASL is an isomorphic authorization JavaScript library which restricts what resources a given user is allowed to access

167 lines (149 loc) 4.42 kB
const e = Object.hasOwn || ((e, t) => Object.prototype.hasOwnProperty.call(e, t)); function t(e) { return Array.isArray(e) ? e : [ e ]; } const n = new Set([ "__proto__", "constructor", "prototype" ]); function r(e, t, r) { let o = e, u = t; if (-1 !== t.indexOf(".")) { const r = t.split("."); u = r.pop(), o = r.reduce((e, t) => n.has(t) ? e : (e[t] = e[t] || {}, e[t]), e); } n.has(u) || (o[u] = r); } const o = "__caslSubjectType__"; function u(t, n) { if (n) if (e(n, o)) { if (t !== n[o]) throw new Error(`Trying to cast object to subject type ${t} but previously it was casted to ${n[o]}`); } else Object.defineProperty(n, o, { value: t }); return n; } const c = e => { const t = typeof e; return "string" === t || "function" === t; }, i = e => e.modelName || e.name; function s(e) { return "string" == typeof e ? e : i(e); } function f(t) { return e(t, o) ? t[o] : i(t.constructor); } const a = { function: e => e.constructor, string: f }; function b(n, r, o) { let u = t(r), c = 0; for (;c < u.length; ) { const t = u[c++]; e(n, t) && (u = o(u, n[t])); } return u; } const l = (e, t) => e.concat(t); function p(e, t) { return t && !1 === t.skipValidate || function(e, t) { if (t in e) throw new Error(`Cannot use "${t}" as an alias because it's reserved action.`); const n = Object.keys(e), r = (e, n) => { const r = function(e, t) { if ("string" == typeof t && -1 !== e.indexOf(t)) return t; for (let n = 0; n < t.length; n++) if (-1 !== e.indexOf(t[n])) return t[n]; return null; }(e, n); if (r) throw new Error(`Detected cycle ${r} -> ${e.join(", ")}`); if ("string" == typeof n && n === t || -1 !== e.indexOf(t) || Array.isArray(n) && -1 !== n.indexOf(t)) throw new Error(`Cannot make an alias to "${t}" because this is reserved action`); return e.concat(n); }; for (let t = 0; t < n.length; t++) b(e, n[t], r); }(e, t && t.anyAction || "manage"), t => b(e, t, l); } function j(e, t, n) { for (let r = n; r < t.length; r++) e.push(t[r]); } function g(e, t) { if (!e || !e.length) return t || []; if (!t || !t.length) return e || []; let n = 0, r = 0; const o = []; for (;n < e.length && r < t.length; ) e[n].priority < t[r].priority ? (o.push(e[n]), n++) : e[n].priority > t[r].priority ? (o.push(t[r]), r++) : (o.push(e[n]), n++, r++); return j(o, e, n), j(o, t, r), o; } function y(e, t, n) { let r = e.get(t); return r || (r = n(), e.set(t, r)), r; } const O = e => e; function m(e, t) { let n; for (let r = 0; r < e.length; r++) { const o = t(e[r]); n && o && n.push(e[r]), o || (n ?? (n = e.slice(0, r))); } return n || e; } Object.defineProperty(exports, "DETECT_SUBJECT_TYPE_STRATEGY", { enumerable: !0, get: function() { return a; } }), Object.defineProperty(exports, "createAliasResolver", { enumerable: !0, get: function() { return p; } }), Object.defineProperty(exports, "detectSubjectType", { enumerable: !0, get: function() { return f; } }), Object.defineProperty(exports, "filterWithLazyAllocation", { enumerable: !0, get: function() { return m; } }), Object.defineProperty(exports, "getOrDefault", { enumerable: !0, get: function() { return y; } }), Object.defineProperty(exports, "getSubjectTypeName", { enumerable: !0, get: function() { return s; } }), Object.defineProperty(exports, "identity", { enumerable: !0, get: function() { return O; } }), Object.defineProperty(exports, "isSubjectType", { enumerable: !0, get: function() { return c; } }), Object.defineProperty(exports, "mergePrioritized", { enumerable: !0, get: function() { return g; } }), Object.defineProperty(exports, "setByPath", { enumerable: !0, get: function() { return r; } }), Object.defineProperty(exports, "setSubjectType", { enumerable: !0, get: function() { return u; } }), Object.defineProperty(exports, "wrapArray", { enumerable: !0, get: function() { return t; } }); //# sourceMappingURL=utils-DKsJWNoq.cjs.map