UNPKG

@casl/angular

Version:

Angular module for CASL which makes it easy to add permissions in any Angular app

1 lines 10.9 kB
{"version":3,"file":"index.mjs","names":["i1.AbilityServiceSignal"],"sources":["../../.angular-build/AbilityServiceSignal.js","../../.angular-build/AblePipe.js","../../.angular-build/AbilityService.js"],"sourcesContent":["import { inject, Injectable, signal } from \"@angular/core\";\nimport { Ability } from \"@casl/ability\";\nimport * as i0 from \"@angular/core\";\nexport class AbilityServiceSignal {\n constructor() {\n this._rules = signal([], ...(ngDevMode ? [{ debugName: \"_rules\" }] : /* istanbul ignore next */ []));\n this._ability = inject(Ability);\n this.can = (...args) => {\n this._rules(); // generate side effect for angular to track changes in this signal\n return this._ability.can(...args);\n };\n this.cannot = (...args) => {\n return !this.can(...args);\n };\n this._disposeAbilitySubscription = this._ability.on('updated', (event) => {\n this._rules.set(event.rules);\n });\n }\n ngOnDestroy() {\n this._disposeAbilitySubscription();\n }\n update(rules) {\n this._ability.update(rules);\n }\n}\nAbilityServiceSignal.ɵfac = function AbilityServiceSignal_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AbilityServiceSignal)(); };\nAbilityServiceSignal.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AbilityServiceSignal, factory: AbilityServiceSignal.ɵfac, providedIn: 'root' });\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AbilityServiceSignal, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], () => [], null); })();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJpbGl0eVNlcnZpY2VTaWduYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQWJpbGl0eVNlcnZpY2VTaWduYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBYyxPQUFPLEVBQWEsTUFBTSxlQUFlLENBQUM7O0FBRy9ELE1BQU0sT0FBTyxvQkFBb0I7SUFLL0I7UUFKaUIsV0FBTSxHQUFHLE1BQU0sQ0FBaUIsRUFBRSw2RUFBQyxDQUFDO1FBQ3BDLGFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFpQixDQUFDO1FBYTVELFFBQUcsR0FBRyxDQUFDLEdBQUcsSUFBMEIsRUFBVyxFQUFFO1lBQy9DLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLG1FQUFtRTtZQUNsRixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDO1FBRUYsV0FBTSxHQUFHLENBQUMsR0FBRyxJQUEwQixFQUFXLEVBQUU7WUFDbEQsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUM7UUFoQkEsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFZLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQVdELE1BQU0sQ0FBQyxLQUFpQjtRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOzt3SEExQlUsb0JBQW9COzBFQUFwQixvQkFBb0IsV0FBcEIsb0JBQW9CLG1CQURQLE1BQU07aUZBQ25CLG9CQUFvQjtjQURoQyxVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBbnlBYmlsaXR5LCBBYmlsaXR5LCBSYXdSdWxlT2YgfSBmcm9tIFwiQGNhc2wvYWJpbGl0eVwiO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFiaWxpdHlTZXJ2aWNlU2lnbmFsPFQgZXh0ZW5kcyBBbnlBYmlsaXR5PiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J1bGVzID0gc2lnbmFsPFJhd1J1bGVPZjxUPltdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FiaWxpdHkgPSBpbmplY3QoQWJpbGl0eSkgYXMgdW5rbm93biBhcyBUO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NlQWJpbGl0eVN1YnNjcmlwdGlvbjogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9kaXNwb3NlQWJpbGl0eVN1YnNjcmlwdGlvbiA9IHRoaXMuX2FiaWxpdHkub24oJ3VwZGF0ZWQnLCAoZXZlbnQpID0+IHtcbiAgICAgIHRoaXMuX3J1bGVzLnNldChldmVudC5ydWxlcyBhcyBhbnkpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zZUFiaWxpdHlTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIGNhbiA9ICguLi5hcmdzOiBQYXJhbWV0ZXJzPFRbJ2NhbiddPik6IGJvb2xlYW4gPT4ge1xuICAgIHRoaXMuX3J1bGVzKCk7IC8vIGdlbmVyYXRlIHNpZGUgZWZmZWN0IGZvciBhbmd1bGFyIHRvIHRyYWNrIGNoYW5nZXMgaW4gdGhpcyBzaWduYWxcbiAgICByZXR1cm4gdGhpcy5fYWJpbGl0eS5jYW4oLi4uYXJncyk7XG4gIH07XG5cbiAgY2Fubm90ID0gKC4uLmFyZ3M6IFBhcmFtZXRlcnM8VFsnY2FuJ10+KTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuICF0aGlzLmNhbiguLi5hcmdzKTtcbiAgfTtcblxuICB1cGRhdGUocnVsZXM6IFRbJ3J1bGVzJ10pOiB2b2lkIHtcbiAgICB0aGlzLl9hYmlsaXR5LnVwZGF0ZShydWxlcyk7XG4gIH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport { AbilityServiceSignal } from './AbilityServiceSignal';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./AbilityServiceSignal\";\nexport class AblePipe {\n constructor(abilityService) {\n this._abilityService = abilityService;\n }\n transform(...args) {\n return this._abilityService.can(...args);\n }\n}\nAblePipe.ɵfac = function AblePipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AblePipe)(i0.ɵɵdirectiveInject(i1.AbilityServiceSignal, 16)); };\nAblePipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: \"able\", type: AblePipe, pure: false });\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AblePipe, [{\n type: Pipe,\n args: [{ name: 'able', pure: false, standalone: true }]\n }], () => [{ type: i1.AbilityServiceSignal }], null); })();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJsZVBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQWJsZVBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUc5RCxNQUFNLE9BQU8sUUFBUTtJQUduQixZQUFZLGNBQXVDO1FBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBRyxJQUEwQjtRQUNyQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7Z0dBVFUsUUFBUTtxRUFBUixRQUFRO2lGQUFSLFFBQVE7Y0FEcEIsSUFBSTtlQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCB0eXBlIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHR5cGUgQW55QWJpbGl0eSB9IGZyb20gJ0BjYXNsL2FiaWxpdHknO1xuaW1wb3J0IHsgQWJpbGl0eVNlcnZpY2VTaWduYWwgfSBmcm9tICcuL0FiaWxpdHlTZXJ2aWNlU2lnbmFsJztcblxuQFBpcGUoeyBuYW1lOiAnYWJsZScsIHB1cmU6IGZhbHNlLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgQWJsZVBpcGU8VCBleHRlbmRzIEFueUFiaWxpdHk+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FiaWxpdHlTZXJ2aWNlOiBBYmlsaXR5U2VydmljZVNpZ25hbDxUPjtcblxuICBjb25zdHJ1Y3RvcihhYmlsaXR5U2VydmljZTogQWJpbGl0eVNlcnZpY2VTaWduYWw8VD4pIHtcbiAgICB0aGlzLl9hYmlsaXR5U2VydmljZSA9IGFiaWxpdHlTZXJ2aWNlO1xuICB9XG5cbiAgdHJhbnNmb3JtKC4uLmFyZ3M6IFBhcmFtZXRlcnM8VFsnY2FuJ10+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FiaWxpdHlTZXJ2aWNlLmNhbiguLi5hcmdzKTtcbiAgfVxufVxuIl19","import { Inject, Injectable } from '@angular/core';\nimport { Ability } from '@casl/ability';\nimport { Observable } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AbilityService {\n constructor(ability) {\n this.ability$ = new Observable((observer) => {\n observer.next(ability);\n return ability.on('updated', () => observer.next(ability));\n });\n }\n}\nAbilityService.ɵfac = function AbilityService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AbilityService)(i0.ɵɵinject(Ability)); };\nAbilityService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AbilityService, factory: AbilityService.ɵfac, providedIn: 'root' });\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AbilityService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [Ability]\n }] }], null); })();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJpbGl0eVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQWJpbGl0eVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFtQixPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHbEMsTUFBTSxPQUFPLGNBQWM7SUFHekIsWUFBNkIsT0FBVTtRQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDMUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2QixPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzRHQVJVLGNBQWMsY0FHTCxPQUFPO29FQUhoQixjQUFjLFdBQWQsY0FBYyxtQkFERCxNQUFNO2lGQUNuQixjQUFjO2NBRDFCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O3NCQUluQixNQUFNO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHR5cGUgQW55QWJpbGl0eSwgQWJpbGl0eSB9IGZyb20gJ0BjYXNsL2FiaWxpdHknO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFiaWxpdHlTZXJ2aWNlPFQgZXh0ZW5kcyBBbnlBYmlsaXR5PiB7XG4gIHJlYWRvbmx5IGFiaWxpdHkkOiBPYnNlcnZhYmxlPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQWJpbGl0eSkgYWJpbGl0eTogVCkge1xuICAgIHRoaXMuYWJpbGl0eSQgPSBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICAgIG9ic2VydmVyLm5leHQoYWJpbGl0eSk7XG4gICAgICByZXR1cm4gYWJpbGl0eS5vbigndXBkYXRlZCcsICgpID0+IG9ic2VydmVyLm5leHQoYWJpbGl0eSkpO1xuICAgIH0pO1xuICB9XG59XG4iXX0="],"mappings":";;;;;;;;AAGA,IAAa,IAAb;IACI,WAAA;QACI,KAAK,IAAS,EAAO,OAAQ,YAAY,EAAC;YAAE,WAAW;cAAyC,KAChG,KAAK,IAAW,EAAO,IACvB,KAAK,MAAA,IAAU,OACX,KAAK,KACE,KAAK,EAAS,OAAO,KAEhC,KAAK,SAAA,IAAa,OACN,KAAK,OAAO;QAExB,KAAK,IAA8B,KAAK,EAAS,GAAG,WAAY;YAC5D,KAAK,EAAO,IAAI,EAAM;;;IAG9B,WAAA;QACI,KAAK;;IAET,MAAA,CAAO;QACH,KAAK,EAAS,OAAO;;;;AAG7B,EAAqB,OAAO,SAAsC;IAAqB,OAAO,KAAK,KAAqB;GACxH,EAAqB,QAAsB,EAAG,mBAAmB;IAAE,OAAO;IAAsB,SAAS,EAAqB;IAAM,YAAY;KACjH,sBAAd,aAA6B,cAAc,EAAG,kBAAkB,GAAsB,EAAC;IAChG,MAAM;IACN,MAAM,EAAC;QAAE,YAAY;;KACvB,MAAQ,IAAI;;AC1BlB,IAAa,IAAb;IACI,WAAA,CAAY;QACR,KAAK,IAAkB;;IAE3B,SAAA,IAAa;QACT,OAAO,KAAK,EAAgB,OAAO;;;;AAG3C,EAAS,OAAO,SAA0B;IAAqB,OAAO,KAAK,KAAqB,GAAU,EAAG,kBAAkBA,GAAyB;GACxJ,EAAS,QAAsB,EAAG,aAAa;IAAE,MAAM;IAAQ,MAAM;IAAU,OAAM;KACtD,sBAAd,aAA6B,cAAc,EAAG,kBAAkB,GAAU,EAAC;IACpF,MAAM;IACN,MAAM,EAAC;QAAE,MAAM;QAAQ,OAAM;QAAO,aAAY;;KAClD,MAAQ,EAAC;IAAE,MAAMA;KAA4B;;ACbnD,IAAa,IAAb;IACI,WAAA,CAAY;QACR,KAAK,WAAW,IAAI,EAAY,MAC5B,EAAS,KAAK,IACP,EAAQ,GAAG,WAAA,MAAiB,EAAS,KAAK;;;;AAI7D,EAAe,OAAO,SAAgC;IAAqB,OAAO,KAAK,KAAqB,GAAgB,EAAG,SAAS;GACxI,EAAe,QAAsB,EAAG,mBAAmB;IAAE,OAAO;IAAgB,SAAS,EAAe;IAAM,YAAY;KAC/F,sBAAd,aAA6B,cAAc,EAAG,kBAAkB,GAAgB,EAAC;IAC1F,MAAM;IACN,MAAM,EAAC;QAAE,YAAY;;KACvB,MAAQ,EAAC;IAAE,WAAM;IAAW,YAAY,EAAC;QAC/B,MAAM;QACN,MAAM,EAAC;;KACJ"}