@casl/angular
Version:
Angular module for CASL which makes it easy to add permissions in any Angular app
128 lines (123 loc) • 5.54 kB
JavaScript
import * as i0 from '@angular/core';
import { Pipe, Inject, Injectable, signal, inject } from '@angular/core';
import { PureAbility } from '@casl/ability';
import { Observable } from 'rxjs';
import { __spreadArray } from 'tslib';
/**
* @deprecated use AbilityService instead
*/
var AblePipe = /** @class */ (function () {
function AblePipe(ability) {
this._ability = ability;
}
AblePipe.prototype.transform = function () {
var _a;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return (_a = this._ability).can.apply(_a, args);
};
AblePipe.ɵfac = function AblePipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AblePipe)(i0.ɵɵdirectiveInject(PureAbility, 16)); };
AblePipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "able", type: AblePipe, pure: false });
return AblePipe;
}());
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AblePipe, [{
type: Pipe,
args: [{ name: 'able', pure: false, standalone: true }]
}], function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [PureAbility]
}] }]; }, null); })();
/**
* @deprecated use AbilityService instead
*/
var AblePurePipe = /** @class */ (function () {
function AblePurePipe(ability) {
this._ability = ability;
}
AblePurePipe.prototype.transform = function () {
var _this = this;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return new Observable(function (s) {
var emit = function () {
var _a;
return s.next((_a = _this._ability).can.apply(_a, args));
};
emit();
return _this._ability.on('updated', emit);
});
};
AblePurePipe.ɵfac = function AblePurePipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AblePurePipe)(i0.ɵɵdirectiveInject(PureAbility, 16)); };
AblePurePipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "ablePure", type: AblePurePipe, pure: true });
return AblePurePipe;
}());
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AblePurePipe, [{
type: Pipe,
args: [{ name: 'ablePure', standalone: true }]
}], function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [PureAbility]
}] }]; }, null); })();
var AbilityService = /** @class */ (function () {
function AbilityService(ability) {
this.ability$ = new Observable(function (observer) {
observer.next(ability);
return ability.on('updated', function () { return observer.next(ability); });
});
}
AbilityService.ɵfac = function AbilityService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AbilityService)(i0.ɵɵinject(PureAbility)); };
AbilityService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AbilityService, factory: AbilityService.ɵfac, providedIn: 'root' });
return AbilityService;
}());
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AbilityService, [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [PureAbility]
}] }]; }, null); })();
var AbilityServiceSignal = /** @class */ (function () {
function AbilityServiceSignal() {
var _this = this;
this._rules = signal.apply(void 0, __spreadArray([[]], (ngDevMode ? [{ debugName: "_rules" }] : []), false));
this._ability = inject(PureAbility);
this.can = function () {
var _a;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
_this._rules(); // generate side effect for angular to track changes in this signal
return (_a = _this._ability).can.apply(_a, args);
};
this.cannot = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return !_this.can.apply(_this, args);
};
this._disposeAbilitySubscription = this._ability.on('updated', function (event) {
_this._rules.set(event.rules);
});
}
AbilityServiceSignal.prototype.ngOnDestroy = function () {
this._disposeAbilitySubscription();
};
AbilityServiceSignal.prototype.update = function (rules) {
this._ability.update(rules);
};
AbilityServiceSignal.ɵfac = function AbilityServiceSignal_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AbilityServiceSignal)(); };
AbilityServiceSignal.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AbilityServiceSignal, factory: AbilityServiceSignal.ɵfac, providedIn: 'root' });
return AbilityServiceSignal;
}());
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AbilityServiceSignal, [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], function () { return []; }, null); })();
export { AbilityService, AbilityServiceSignal, AblePipe, AblePurePipe };
//# sourceMappingURL=index.js.map