@casl/angular 9.0.3 → 9.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![@casl/angular NPM version](https://badge.fury.io/js/%40casl%2Fangular.svg)](https://badge.fury.io/js/%40casl%2Fangular)
4
4
  [![](https://img.shields.io/npm/dm/%40casl%2Fangular.svg)](https://www.npmjs.com/package/%40casl%2Fangular)
5
- [![CASL Join the chat](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/stalniy-casl/casl)
5
+ [![Support](https://img.shields.io/badge/Support-github%20discussions-green?style=flat&link=https://github.com/stalniy/casl/discussions)](https://github.com/stalniy/casl/discussions)
6
6
 
7
7
  This package allows to integrate `@casl/ability` with [Angular] application. It provides deprecated `AblePipe`, `AblePurePipe` and new `AbilityService` and `AbilityServiceSignal` to Angular templates, so you can show or hide components, buttons, etc based on user ability to see them.
8
8
 
@@ -2,6 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { Pipe, Inject, Injectable, signal, inject } from '@angular/core';
3
3
  import { PureAbility } from '@casl/ability';
4
4
  import { Observable } from 'rxjs';
5
+ import { __spreadArray } from 'tslib';
5
6
 
6
7
  /**
7
8
  * @deprecated use AbilityService instead
@@ -85,7 +86,7 @@ var AbilityService = /** @class */ (function () {
85
86
  var AbilityServiceSignal = /** @class */ (function () {
86
87
  function AbilityServiceSignal() {
87
88
  var _this = this;
88
- this._rules = signal([]);
89
+ this._rules = signal.apply(void 0, __spreadArray([[]], (ngDevMode ? [{ debugName: "_rules" }] : []), false));
89
90
  this._ability = inject(PureAbility);
90
91
  this.can = function () {
91
92
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/pipes.ts","../../src/AbilityService.ts","../../src/AbilityServiceSignal.ts"],"sourcesContent":["import { Pipe, Inject, PipeTransform } from '@angular/core';\nimport { PureAbility, AnyAbility } from '@casl/ability';\nimport { Observable } from 'rxjs';\n\n/**\n * @deprecated use AbilityService instead\n */\n@Pipe({ name: 'able', pure: false, standalone: true })\nexport class AblePipe<T extends AnyAbility> implements PipeTransform {\n private _ability: T;\n\n constructor(@Inject(PureAbility) ability: T) {\n this._ability = ability;\n }\n\n transform(...args: Parameters<T['can']>): boolean {\n return this._ability.can(...args);\n }\n}\n\n/**\n * @deprecated use AbilityService instead\n */\n@Pipe({ name: 'ablePure', standalone: true })\nexport class AblePurePipe<T extends AnyAbility> implements PipeTransform {\n private _ability: T;\n\n constructor(@Inject(PureAbility) ability: T) {\n this._ability = ability;\n }\n\n transform(...args: Parameters<T['can']>): Observable<boolean> {\n return new Observable((s) => {\n const emit = () => s.next(this._ability.can(...args));\n emit();\n return this._ability.on('updated', emit);\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { AnyAbility, PureAbility } from '@casl/ability';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class AbilityService<T extends AnyAbility> {\n readonly ability$: Observable<T>;\n\n constructor(@Inject(PureAbility) ability: T) {\n this.ability$ = new Observable((observer) => {\n observer.next(ability);\n return ability.on('updated', () => observer.next(ability));\n });\n }\n}\n","import { inject, Injectable, OnDestroy, signal } from \"@angular/core\";\nimport { AnyAbility, PureAbility, RawRuleOf } from \"@casl/ability\";\n\n@Injectable({ providedIn: 'root' })\nexport class AbilityServiceSignal<T extends AnyAbility> implements OnDestroy {\n private readonly _rules = signal<RawRuleOf<T>[]>([]);\n private readonly _ability = inject(PureAbility) as unknown as T;\n private readonly _disposeAbilitySubscription: () => void;\n\n constructor() {\n this._disposeAbilitySubscription = this._ability.on('updated', (event) => {\n this._rules.set(event.rules as any);\n });\n }\n\n ngOnDestroy(): void {\n this._disposeAbilitySubscription();\n }\n\n can = (...args: Parameters<T['can']>): boolean => {\n this._rules(); // generate side effect for angular to track changes in this signal\n return this._ability.can(...args);\n };\n\n cannot = (...args: Parameters<T['can']>): boolean => {\n return !this.can(...args);\n };\n\n update(rules: T['rules']): void {\n this._ability.update(rules);\n }\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/pipes.ts","../../src/AbilityService.ts","../../src/AbilityServiceSignal.ts"],"sourcesContent":["import { Pipe, Inject, PipeTransform } from '@angular/core';\nimport { PureAbility, AnyAbility } from '@casl/ability';\nimport { Observable } from 'rxjs';\n\n/**\n * @deprecated use AbilityService instead\n */\n@Pipe({ name: 'able', pure: false, standalone: true })\nexport class AblePipe<T extends AnyAbility> implements PipeTransform {\n private _ability: T;\n\n constructor(@Inject(PureAbility) ability: T) {\n this._ability = ability;\n }\n\n transform(...args: Parameters<T['can']>): boolean {\n return this._ability.can(...args);\n }\n}\n\n/**\n * @deprecated use AbilityService instead\n */\n@Pipe({ name: 'ablePure', standalone: true })\nexport class AblePurePipe<T extends AnyAbility> implements PipeTransform {\n private _ability: T;\n\n constructor(@Inject(PureAbility) ability: T) {\n this._ability = ability;\n }\n\n transform(...args: Parameters<T['can']>): Observable<boolean> {\n return new Observable((s) => {\n const emit = () => s.next(this._ability.can(...args));\n emit();\n return this._ability.on('updated', emit);\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { AnyAbility, PureAbility } from '@casl/ability';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class AbilityService<T extends AnyAbility> {\n readonly ability$: Observable<T>;\n\n constructor(@Inject(PureAbility) ability: T) {\n this.ability$ = new Observable((observer) => {\n observer.next(ability);\n return ability.on('updated', () => observer.next(ability));\n });\n }\n}\n","import { inject, Injectable, OnDestroy, signal } from \"@angular/core\";\nimport { AnyAbility, PureAbility, RawRuleOf } from \"@casl/ability\";\n\n@Injectable({ providedIn: 'root' })\nexport class AbilityServiceSignal<T extends AnyAbility> implements OnDestroy {\n private readonly _rules = signal<RawRuleOf<T>[]>([]);\n private readonly _ability = inject(PureAbility) as unknown as T;\n private readonly _disposeAbilitySubscription: () => void;\n\n constructor() {\n this._disposeAbilitySubscription = this._ability.on('updated', (event) => {\n this._rules.set(event.rules as any);\n });\n }\n\n ngOnDestroy(): void {\n this._disposeAbilitySubscription();\n }\n\n can = (...args: Parameters<T['can']>): boolean => {\n this._rules(); // generate side effect for angular to track changes in this signal\n return this._ability.can(...args);\n };\n\n cannot = (...args: Parameters<T['can']>): boolean => {\n return !this.can(...args);\n };\n\n update(rules: T['rules']): void {\n this._ability.update(rules);\n }\n}"],"names":[],"mappings":"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"}
@@ -68,7 +68,7 @@ AbilityService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AbilitySe
68
68
 
69
69
  class AbilityServiceSignal {
70
70
  constructor() {
71
- this._rules = signal([]);
71
+ this._rules = signal([], ...(ngDevMode ? [{ debugName: "_rules" }] : []));
72
72
  this._ability = inject(PureAbility);
73
73
  this.can = (...args) => {
74
74
  this._rules(); // generate side effect for angular to track changes in this signal
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/pipes.ts","../../src/AbilityService.ts","../../src/AbilityServiceSignal.ts"],"sourcesContent":["import { Pipe, Inject, PipeTransform } from '@angular/core';\nimport { PureAbility, AnyAbility } from '@casl/ability';\nimport { Observable } from 'rxjs';\n\n/**\n * @deprecated use AbilityService instead\n */\n@Pipe({ name: 'able', pure: false, standalone: true })\nexport class AblePipe<T extends AnyAbility> implements PipeTransform {\n private _ability: T;\n\n constructor(@Inject(PureAbility) ability: T) {\n this._ability = ability;\n }\n\n transform(...args: Parameters<T['can']>): boolean {\n return this._ability.can(...args);\n }\n}\n\n/**\n * @deprecated use AbilityService instead\n */\n@Pipe({ name: 'ablePure', standalone: true })\nexport class AblePurePipe<T extends AnyAbility> implements PipeTransform {\n private _ability: T;\n\n constructor(@Inject(PureAbility) ability: T) {\n this._ability = ability;\n }\n\n transform(...args: Parameters<T['can']>): Observable<boolean> {\n return new Observable((s) => {\n const emit = () => s.next(this._ability.can(...args));\n emit();\n return this._ability.on('updated', emit);\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { AnyAbility, PureAbility } from '@casl/ability';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class AbilityService<T extends AnyAbility> {\n readonly ability$: Observable<T>;\n\n constructor(@Inject(PureAbility) ability: T) {\n this.ability$ = new Observable((observer) => {\n observer.next(ability);\n return ability.on('updated', () => observer.next(ability));\n });\n }\n}\n","import { inject, Injectable, OnDestroy, signal } from \"@angular/core\";\nimport { AnyAbility, PureAbility, RawRuleOf } from \"@casl/ability\";\n\n@Injectable({ providedIn: 'root' })\nexport class AbilityServiceSignal<T extends AnyAbility> implements OnDestroy {\n private readonly _rules = signal<RawRuleOf<T>[]>([]);\n private readonly _ability = inject(PureAbility) as unknown as T;\n private readonly _disposeAbilitySubscription: () => void;\n\n constructor() {\n this._disposeAbilitySubscription = this._ability.on('updated', (event) => {\n this._rules.set(event.rules as any);\n });\n }\n\n ngOnDestroy(): void {\n this._disposeAbilitySubscription();\n }\n\n can = (...args: Parameters<T['can']>): boolean => {\n this._rules(); // generate side effect for angular to track changes in this signal\n return this._ability.can(...args);\n };\n\n cannot = (...args: Parameters<T['can']>): boolean => {\n return !this.can(...args);\n };\n\n update(rules: T['rules']): void {\n this._ability.update(rules);\n }\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/pipes.ts","../../src/AbilityService.ts","../../src/AbilityServiceSignal.ts"],"sourcesContent":["import { Pipe, Inject, PipeTransform } from '@angular/core';\nimport { PureAbility, AnyAbility } from '@casl/ability';\nimport { Observable } from 'rxjs';\n\n/**\n * @deprecated use AbilityService instead\n */\n@Pipe({ name: 'able', pure: false, standalone: true })\nexport class AblePipe<T extends AnyAbility> implements PipeTransform {\n private _ability: T;\n\n constructor(@Inject(PureAbility) ability: T) {\n this._ability = ability;\n }\n\n transform(...args: Parameters<T['can']>): boolean {\n return this._ability.can(...args);\n }\n}\n\n/**\n * @deprecated use AbilityService instead\n */\n@Pipe({ name: 'ablePure', standalone: true })\nexport class AblePurePipe<T extends AnyAbility> implements PipeTransform {\n private _ability: T;\n\n constructor(@Inject(PureAbility) ability: T) {\n this._ability = ability;\n }\n\n transform(...args: Parameters<T['can']>): Observable<boolean> {\n return new Observable((s) => {\n const emit = () => s.next(this._ability.can(...args));\n emit();\n return this._ability.on('updated', emit);\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { AnyAbility, PureAbility } from '@casl/ability';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class AbilityService<T extends AnyAbility> {\n readonly ability$: Observable<T>;\n\n constructor(@Inject(PureAbility) ability: T) {\n this.ability$ = new Observable((observer) => {\n observer.next(ability);\n return ability.on('updated', () => observer.next(ability));\n });\n }\n}\n","import { inject, Injectable, OnDestroy, signal } from \"@angular/core\";\nimport { AnyAbility, PureAbility, RawRuleOf } from \"@casl/ability\";\n\n@Injectable({ providedIn: 'root' })\nexport class AbilityServiceSignal<T extends AnyAbility> implements OnDestroy {\n private readonly _rules = signal<RawRuleOf<T>[]>([]);\n private readonly _ability = inject(PureAbility) as unknown as T;\n private readonly _disposeAbilitySubscription: () => void;\n\n constructor() {\n this._disposeAbilitySubscription = this._ability.on('updated', (event) => {\n this._rules.set(event.rules as any);\n });\n }\n\n ngOnDestroy(): void {\n this._disposeAbilitySubscription();\n }\n\n can = (...args: Parameters<T['can']>): boolean => {\n this._rules(); // generate side effect for angular to track changes in this signal\n return this._ability.can(...args);\n };\n\n cannot = (...args: Parameters<T['can']>): boolean => {\n return !this.can(...args);\n };\n\n update(rules: T['rules']): void {\n this._ability.update(rules);\n }\n}"],"names":[],"mappings":"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"}
package/dist/umd/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@casl/ability'), require('rxjs')) :
3
- typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@casl/ability', 'rxjs'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.casl = global.casl || {}, global.casl.ng = {}), global.ng.core, global.casl, global.rxjs));
5
- })(this, (function (exports, i0, ability, rxjs) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@casl/ability'), require('rxjs'), require('tslib')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@casl/ability', 'rxjs', 'tslib'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.casl = global.casl || {}, global.casl.ng = {}), global.ng.core, global.casl, global.rxjs, global.tslib));
5
+ })(this, (function (exports, i0, ability, rxjs, tslib) { 'use strict';
6
6
 
7
7
  function _interopNamespaceDefault(e) {
8
8
  var n = Object.create(null);
@@ -105,7 +105,7 @@
105
105
  var AbilityServiceSignal = /** @class */ (function () {
106
106
  function AbilityServiceSignal() {
107
107
  var _this = this;
108
- this._rules = i0.signal([]);
108
+ this._rules = i0.signal.apply(void 0, tslib.__spreadArray([[]], (ngDevMode ? [{ debugName: "_rules" }] : []), false));
109
109
  this._ability = i0.inject(ability.PureAbility);
110
110
  this.can = function () {
111
111
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/pipes.ts","../../src/AbilityService.ts","../../src/AbilityServiceSignal.ts"],"sourcesContent":["import { Pipe, Inject, PipeTransform } from '@angular/core';\nimport { PureAbility, AnyAbility } from '@casl/ability';\nimport { Observable } from 'rxjs';\n\n/**\n * @deprecated use AbilityService instead\n */\n@Pipe({ name: 'able', pure: false, standalone: true })\nexport class AblePipe<T extends AnyAbility> implements PipeTransform {\n private _ability: T;\n\n constructor(@Inject(PureAbility) ability: T) {\n this._ability = ability;\n }\n\n transform(...args: Parameters<T['can']>): boolean {\n return this._ability.can(...args);\n }\n}\n\n/**\n * @deprecated use AbilityService instead\n */\n@Pipe({ name: 'ablePure', standalone: true })\nexport class AblePurePipe<T extends AnyAbility> implements PipeTransform {\n private _ability: T;\n\n constructor(@Inject(PureAbility) ability: T) {\n this._ability = ability;\n }\n\n transform(...args: Parameters<T['can']>): Observable<boolean> {\n return new Observable((s) => {\n const emit = () => s.next(this._ability.can(...args));\n emit();\n return this._ability.on('updated', emit);\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { AnyAbility, PureAbility } from '@casl/ability';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class AbilityService<T extends AnyAbility> {\n readonly ability$: Observable<T>;\n\n constructor(@Inject(PureAbility) ability: T) {\n this.ability$ = new Observable((observer) => {\n observer.next(ability);\n return ability.on('updated', () => observer.next(ability));\n });\n }\n}\n","import { inject, Injectable, OnDestroy, signal } from \"@angular/core\";\nimport { AnyAbility, PureAbility, RawRuleOf } from \"@casl/ability\";\n\n@Injectable({ providedIn: 'root' })\nexport class AbilityServiceSignal<T extends AnyAbility> implements OnDestroy {\n private readonly _rules = signal<RawRuleOf<T>[]>([]);\n private readonly _ability = inject(PureAbility) as unknown as T;\n private readonly _disposeAbilitySubscription: () => void;\n\n constructor() {\n this._disposeAbilitySubscription = this._ability.on('updated', (event) => {\n this._rules.set(event.rules as any);\n });\n }\n\n ngOnDestroy(): void {\n this._disposeAbilitySubscription();\n }\n\n can = (...args: Parameters<T['can']>): boolean => {\n this._rules(); // generate side effect for angular to track changes in this signal\n return this._ability.can(...args);\n };\n\n cannot = (...args: Parameters<T['can']>): boolean => {\n return !this.can(...args);\n };\n\n update(rules: T['rules']): void {\n this._ability.update(rules);\n }\n}"],"names":["PureAbility","Pipe","Inject","Observable","Injectable","signal","inject"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;IAIA;;IAEG;AACH,QAAA,QAAA,kBAAA,YAAA;IAIE,IAAA,SAAA,QAAA,CAAiC,OAAU,EAAA;IACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;IAED,IAAA,QAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;;YAAU,IAA6B,IAAA,GAAA,EAAA,CAAA;iBAA7B,IAA6B,EAAA,GAAA,CAAA,EAA7B,EAA6B,GAAA,SAAA,CAAA,MAAA,EAA7B,EAA6B,EAAA,EAAA;gBAA7B,IAA6B,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;YACrC,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,EAAC,GAAG,CAAI,KAAA,CAAA,EAAA,EAAA,IAAI,CAAE,CAAA;SACnC,CAAA;IATU,IAAA,QAAA,CAAA,IAAA,GAAA,SAAA,gBAAA,CAAA,iBAAA,EAAA,EAAA,OAAA,KAAA,iBAAA,IAAA,QAAQ,kCAGCA,mBAAW,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wFAHpB,QAAQ,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;IARrB,IAAA,OAAA,QAAA,CAAA;IAkBC,CAXD,EAWC,EAAA;sGAVY,QAAQ,EAAA,CAAA;kBADpBC,OAAI;mBAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;0BAItCC,SAAM;2BAACF,mBAAW,CAAA;;IASjC;;IAEG;AACH,QAAA,YAAA,kBAAA,YAAA;IAIE,IAAA,SAAA,YAAA,CAAiC,OAAU,EAAA;IACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;IAED,IAAA,YAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;YAAA,IAMC,KAAA,GAAA,IAAA,CAAA;YANS,IAA6B,IAAA,GAAA,EAAA,CAAA;iBAA7B,IAA6B,EAAA,GAAA,CAAA,EAA7B,EAA6B,GAAA,SAAA,CAAA,MAAA,EAA7B,EAA6B,EAAA,EAAA;gBAA7B,IAA6B,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;IACrC,QAAA,OAAO,IAAIG,eAAU,CAAC,UAAC,CAAC,EAAA;IACtB,YAAA,IAAM,IAAI,GAAG,YAAA;;IAAM,gBAAA,OAAA,CAAC,CAAC,IAAI,CAAC,CAAA,EAAA,GAAA,KAAI,CAAC,QAAQ,EAAC,GAAG,CAAA,KAAA,CAAA,EAAA,EAAI,IAAI,CAAE,CAAA,CAAA;IAAlC,aAAkC,CAAC;IACtD,YAAA,IAAI,EAAE,CAAC;gBACP,OAAO,KAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3C,SAAC,CAAC,CAAC;SACJ,CAAA;IAbU,IAAA,YAAA,CAAA,IAAA,GAAA,SAAA,oBAAA,CAAA,iBAAA,EAAA,EAAA,OAAA,KAAA,iBAAA,IAAA,YAAY,kCAGHH,mBAAW,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA;gGAHpB,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA;IAxBzB,IAAA,OAAA,YAAA,CAAA;IAsCC,CAfD,EAeC,EAAA;sGAdY,YAAY,EAAA,CAAA;kBADxBC,OAAI;IAAC,QAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;0BAI7BC,SAAM;2BAACF,mBAAW,CAAA;;;ACvBjC,QAAA,cAAA,kBAAA,YAAA;IAIE,IAAA,SAAA,cAAA,CAAiC,OAAU,EAAA;IACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAIG,eAAU,CAAC,UAAC,QAAQ,EAAA;IACtC,YAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,YAAA,OAAO,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,YAAM,EAAA,OAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAtB,EAAsB,CAAC,CAAC;IAC7D,SAAC,CAAC,CAAC;SACJ;IARU,IAAA,cAAA,CAAA,IAAA,GAAA,SAAA,sBAAA,CAAA,iBAAA,EAAA,EAAA,OAAA,KAAA,iBAAA,IAAA,cAAc,yBAGLH,mBAAW,CAAA,CAAA,CAAA,EAAA,CAAA;uFAHpB,cAAc,EAAA,OAAA,EAAd,cAAc,CAAA,IAAA,EAAA,UAAA,EADD,MAAM,EAAA,CAAA,CAAA;IAJhC,IAAA,OAAA,cAAA,CAAA;IAcC,CAVD,EAUC,EAAA;sGATY,cAAc,EAAA,CAAA;kBAD1BI,aAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;0BAInBF,SAAM;2BAACF,mBAAW,CAAA;;;ACLjC,QAAA,oBAAA,kBAAA,YAAA;IAME,IAAA,SAAA,oBAAA,GAAA;YAAA,IAIC,KAAA,GAAA,IAAA,CAAA;IARgB,QAAA,IAAA,CAAA,MAAM,GAAGK,SAAM,CAAiB,EAAE,CAAC,CAAC;IACpC,QAAA,IAAA,CAAA,QAAQ,GAAGC,SAAM,CAACN,mBAAW,CAAiB,CAAC;IAahE,QAAA,IAAA,CAAA,GAAG,GAAG,YAAA;;gBAAC,IAA6B,IAAA,GAAA,EAAA,CAAA;qBAA7B,IAA6B,EAAA,GAAA,CAAA,EAA7B,EAA6B,GAAA,SAAA,CAAA,MAAA,EAA7B,EAA6B,EAAA,EAAA;oBAA7B,IAA6B,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;IAClC,YAAA,KAAI,CAAC,MAAM,EAAE,CAAC;gBACd,OAAO,CAAA,EAAA,GAAA,KAAI,CAAC,QAAQ,EAAC,GAAG,CAAI,KAAA,CAAA,EAAA,EAAA,IAAI,CAAE,CAAA;IACpC,SAAC,CAAC;IAEF,QAAA,IAAA,CAAA,MAAM,GAAG,YAAA;gBAAC,IAA6B,IAAA,GAAA,EAAA,CAAA;qBAA7B,IAA6B,EAAA,GAAA,CAAA,EAA7B,EAA6B,GAAA,SAAA,CAAA,MAAA,EAA7B,EAA6B,EAAA,EAAA;oBAA7B,IAA6B,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;gBACrC,OAAO,CAAC,KAAI,CAAC,GAAG,OAAR,KAAI,EAAQ,IAAI,CAAC,CAAC;IAC5B,SAAC,CAAC;IAhBA,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,KAAK,EAAA;gBACnE,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAY,CAAC,CAAC;IACtC,SAAC,CAAC,CAAC;SACJ;IAED,IAAA,oBAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;YACE,IAAI,CAAC,2BAA2B,EAAE,CAAC;SACpC,CAAA;QAWD,oBAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,KAAiB,EAAA;IACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC7B,CAAA;gIA1BU,oBAAoB,GAAA,CAAA,EAAA,CAAA;6FAApB,oBAAoB,EAAA,OAAA,EAApB,oBAAoB,CAAA,IAAA,EAAA,UAAA,EADP,MAAM,EAAA,CAAA,CAAA;IAHhC,IAAA,OAAA,oBAAA,CAAA;IA+BC,CA5BD,EA4BC,EAAA;sGA3BY,oBAAoB,EAAA,CAAA;kBADhCI,aAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/pipes.ts","../../src/AbilityService.ts","../../src/AbilityServiceSignal.ts"],"sourcesContent":["import { Pipe, Inject, PipeTransform } from '@angular/core';\nimport { PureAbility, AnyAbility } from '@casl/ability';\nimport { Observable } from 'rxjs';\n\n/**\n * @deprecated use AbilityService instead\n */\n@Pipe({ name: 'able', pure: false, standalone: true })\nexport class AblePipe<T extends AnyAbility> implements PipeTransform {\n private _ability: T;\n\n constructor(@Inject(PureAbility) ability: T) {\n this._ability = ability;\n }\n\n transform(...args: Parameters<T['can']>): boolean {\n return this._ability.can(...args);\n }\n}\n\n/**\n * @deprecated use AbilityService instead\n */\n@Pipe({ name: 'ablePure', standalone: true })\nexport class AblePurePipe<T extends AnyAbility> implements PipeTransform {\n private _ability: T;\n\n constructor(@Inject(PureAbility) ability: T) {\n this._ability = ability;\n }\n\n transform(...args: Parameters<T['can']>): Observable<boolean> {\n return new Observable((s) => {\n const emit = () => s.next(this._ability.can(...args));\n emit();\n return this._ability.on('updated', emit);\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { AnyAbility, PureAbility } from '@casl/ability';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class AbilityService<T extends AnyAbility> {\n readonly ability$: Observable<T>;\n\n constructor(@Inject(PureAbility) ability: T) {\n this.ability$ = new Observable((observer) => {\n observer.next(ability);\n return ability.on('updated', () => observer.next(ability));\n });\n }\n}\n","import { inject, Injectable, OnDestroy, signal } from \"@angular/core\";\nimport { AnyAbility, PureAbility, RawRuleOf } from \"@casl/ability\";\n\n@Injectable({ providedIn: 'root' })\nexport class AbilityServiceSignal<T extends AnyAbility> implements OnDestroy {\n private readonly _rules = signal<RawRuleOf<T>[]>([]);\n private readonly _ability = inject(PureAbility) as unknown as T;\n private readonly _disposeAbilitySubscription: () => void;\n\n constructor() {\n this._disposeAbilitySubscription = this._ability.on('updated', (event) => {\n this._rules.set(event.rules as any);\n });\n }\n\n ngOnDestroy(): void {\n this._disposeAbilitySubscription();\n }\n\n can = (...args: Parameters<T['can']>): boolean => {\n this._rules(); // generate side effect for angular to track changes in this signal\n return this._ability.can(...args);\n };\n\n cannot = (...args: Parameters<T['can']>): boolean => {\n return !this.can(...args);\n };\n\n update(rules: T['rules']): void {\n this._ability.update(rules);\n }\n}"],"names":["PureAbility","Pipe","Inject","Observable","Injectable","signal","__spreadArray","inject"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@casl/angular",
3
- "version": "9.0.3",
3
+ "version": "9.0.5",
4
4
  "description": "Angular module for CASL which makes it easy to add permissions in any Angular app",
5
5
  "main": "dist/umd/index.js",
6
6
  "module": "dist/es5m/index.js",
@@ -22,20 +22,6 @@
22
22
  "publishConfig": {
23
23
  "access": "public"
24
24
  },
25
- "scripts": {
26
- "build.prepare": "rm -rf dist/* && npm run build.types",
27
- "build": "npm run build.prepare && npm run build.es5m && npm run build.es6 && npm run build.umd",
28
- "build.es5m": "TARGET=es5 BUILD=es5m npm run rollup",
29
- "build.es6": "TARGET=es2015 BUILD=es6m npm run rollup",
30
- "build.umd": "TARGET=es5 BUILD=umd npm run rollup",
31
- "build.types": "ngc -p tsconfig.types.json && rm -rf dist/types/*.js",
32
- "rollup.prepare": "ngc -p tsconfig.build.json --target $TARGET --outDir dist/$BUILD/tmp",
33
- "rollup": "npm run rollup.prepare && IGNORE_SUBPATH=1 LIB_MINIFY=false BUILD_TYPES=$BUILD ES_TRANSFORM=false dx rollup -i dist/$BUILD/tmp/index.js -n casl.ng -g @angular/core:ng.core,@casl/ability:casl,tslib:tslib,rxjs:rxjs && rm -rf dist/$BUILD/tmp",
34
- "test": "dx jest --config ./jest.config.js",
35
- "lint": "dx eslint src/ spec/",
36
- "release.prepare": "npm run lint && NODE_ENV=production npm run build && npm test",
37
- "release": "npm run release.prepare && dx semantic-release"
38
- },
39
25
  "keywords": [
40
26
  "casl",
41
27
  "angular",
@@ -46,31 +32,45 @@
46
32
  "author": "Sergii Stotskyi <sergiy.stotskiy@gmail.com>",
47
33
  "license": "MIT",
48
34
  "peerDependencies": {
49
- "@angular/core": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
35
+ "@angular/core": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0",
50
36
  "@casl/ability": "^4.0.0 || ^5.1.0 || ^6.0.0",
51
37
  "rxjs": "^7.5.5",
52
38
  "tslib": "^2.0.0"
53
39
  },
54
40
  "devDependencies": {
55
- "@angular-devkit/build-angular": "^19.0.0",
56
- "@angular/common": "^19.0.0",
57
- "@angular/compiler": "^19.0.0",
58
- "@angular/compiler-cli": "^19.0.0",
59
- "@angular/core": "^19.0.0",
60
- "@angular/platform-browser": "^19.0.0",
61
- "@angular/platform-browser-dynamic": "^19.0.0",
41
+ "@angular-devkit/build-angular": "^21.0.0",
42
+ "@angular/common": "^21.0.0",
43
+ "@angular/compiler": "^21.0.0",
44
+ "@angular/compiler-cli": "^21.0.0",
45
+ "@angular/core": "^21.0.0",
46
+ "@angular/platform-browser": "^21.0.0",
47
+ "@angular/platform-browser-dynamic": "^21.0.0",
62
48
  "@casl/ability": "^6.0.0",
63
- "@casl/dx": "workspace:^1.0.0",
49
+ "@casl/dx": "^1.0.0",
64
50
  "@types/jest": "^29.0.0",
65
- "jest": "^29.0.0",
66
- "jest-preset-angular": "^14.0.0",
51
+ "jest": "^30.0.0",
52
+ "jest-preset-angular": "^16.0.0",
67
53
  "rxjs": "^7.5.5",
68
54
  "tslib": "^2.0.0",
69
- "typescript": "~5.5.0",
70
- "zone.js": "~0.15.0"
55
+ "typescript": "~5.9.0",
56
+ "zone.js": "~0.16.0"
71
57
  },
72
58
  "files": [
73
59
  "dist",
74
60
  "*.d.ts"
75
- ]
76
- }
61
+ ],
62
+ "scripts": {
63
+ "build.prepare": "rm -rf dist/* && npm run build.types",
64
+ "build": "npm run build.prepare && npm run build.es5m && npm run build.es6 && npm run build.umd",
65
+ "build.es5m": "TARGET=es5 BUILD=es5m npm run rollup",
66
+ "build.es6": "TARGET=es2015 BUILD=es6m npm run rollup",
67
+ "build.umd": "TARGET=es5 BUILD=umd npm run rollup",
68
+ "build.types": "ngc -p tsconfig.types.json && rm -rf dist/types/*.js",
69
+ "rollup.prepare": "ngc -p tsconfig.build.json --target $TARGET --outDir dist/$BUILD/tmp",
70
+ "rollup": "npm run rollup.prepare && IGNORE_SUBPATH=1 LIB_MINIFY=false BUILD_TYPES=$BUILD ES_TRANSFORM=false dx rollup -i dist/$BUILD/tmp/index.js -n casl.ng -g @angular/core:ng.core,@casl/ability:casl,tslib:tslib,rxjs:rxjs && rm -rf dist/$BUILD/tmp",
71
+ "test": "dx jest --config ./jest.config.js",
72
+ "lint": "dx eslint src/ spec/",
73
+ "release.prepare": "npm run lint && NODE_ENV=production npm run build && npm test",
74
+ "release": "npm run release.prepare && pnpm publish"
75
+ }
76
+ }