import{createQueryTester as t,$eq as i,$ne as n,$lt as r,$lte as e,$gt as o,$gte as s,$in as u,$nin as a,$all as h,$size as c,$regex as f,$elemMatch as l,$exists as v}from"sift";function d(){return(d=Object.assign||function(t){for(var i=1;i "+t[i])}))}(t),function(i){return function(t,i){for(var n=p(i),r=0;r0),r=this.m(t,n.h);return n.l(this.O),this.g=r,this.j=t,this.s=n.s,this.$("updated",i),this},i.m=function(t,i){void 0===i&&(i=j);for(var n=Object.create(null),r=0;r1?"(?:"+i.join("|")+")":i[0];return new RegExp("^"+n+"$")}(t)),null===i?-1!==t.indexOf(n):i.test(n)}},q=function(t){function i(i,n){return t.call(this,i,d({conditionsMatcher:M,fieldMatcher:F},n))||this}return y(i,t),i}(E),z=function(){function t(t){this.rule=t}return t.prototype.because=function(t){return this.rule.reason=t,this},t}(),B=function(){function t(t){void 0===t&&(t=E),this.rules=[],this.M=t;this.can=this.can.bind(this),this.cannot=this.cannot.bind(this),this.build=this.build.bind(this)}var i=t.prototype;return i.can=function(t,i,n,r){var e={action:t};return i&&(e.subject=i,Array.isArray(n)||"string"==typeof n?e.fields=n:void 0!==n&&(e.conditions=n),void 0!==r&&(e.conditions=r)),this.rules.push(e),new z(e)},i.cannot=function(t,i,n,r){var e=this.can(t,i,n,r);return e.rule.inverted=!0,e},i.build=function(t){return new this.M(this.rules,t)},t}();function D(t,i){var n,r;if("function"==typeof t)r=t,n={};else{if("function"!=typeof i)throw new Error("`defineAbility` expects to receive either options and dsl function or only dsl function");n=t,r=i}var e=new B(q),o=r(e.can,e.cannot);return o&&"function"==typeof o.then?o.then((function(){return e.build(n)})):e.build(n)}var P=function(t){return'Cannot execute "'+t.action+'" on "'+t.subjectType+'"'},U=function(t){this.message=t};U.prototype=Object.create(Error.prototype);var G=function(t){function i(i){var n;return(n=t.call(this,"")||this).ability=void 0,n.field=void 0,n.ability=i,"function"==typeof Error.captureStackTrace&&(n.name="ForbiddenError",Error.captureStackTrace(function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(n),n.constructor)),n}y(i,t),i.setDefaultMessage=function(t){this.T="string"==typeof t?function(){return t}:t},i.from=function(t){return new this(t)};var n=i.prototype;return n.setMessage=function(t){return this.message=t,this},n.throwUnlessCan=function(){var t,i=(t=this.ability).relevantRuleFor.apply(t,arguments);if(!i||i.inverted){this.action=arguments.length<=0?void 0:arguments[0],this.subject=arguments.length<=1?void 0:arguments[1],this.subjectType=this.ability.detectSubjectType(arguments.length<=1?void 0:arguments[1]),this.field=arguments.length<=2?void 0:arguments[2];var n=i?i.reason:"";throw this.message=this.message||n||this.constructor.T(this),this}},i}(U);G.T=P;export{q as Ability,B as AbilityBuilder,G as ForbiddenError,E as PureAbility,x as buildMongoQueryMatcher,O as createAliasResolver,D as defineAbility,g as detectSubjectType,F as fieldPatternMatcher,P as getDefaultErrorMessage,M as mongoQueryMatcher,w as subject,p as wrapArray}; //# sourceMappingURL=index.js.map