UNPKG

@karelics/angular-unleash-proxy-client

Version:

Angular wrapper for [unleash-proxy-client](https://github.com/Unleash/unleash-proxy-client-js).

1 lines 19.1 kB
{"version":3,"file":"karelics-angular-unleash-proxy-client.mjs","sources":["../../../projects/angular-unleash-proxy-client/src/lib/unleash.initializer.ts","../../../projects/angular-unleash-proxy-client/src/lib/unleash.service.ts","../../../projects/angular-unleash-proxy-client/src/lib/directives/feature.directive.ts","../../../projects/angular-unleash-proxy-client/src/lib/directives/feature-enabled.directive.ts","../../../projects/angular-unleash-proxy-client/src/lib/directives/feature-disabled.directive.ts","../../../projects/angular-unleash-proxy-client/src/lib/guards/utils.ts","../../../projects/angular-unleash-proxy-client/src/lib/guards/feature-enabled.guard.ts","../../../projects/angular-unleash-proxy-client/src/lib/guards/feature-disabled.guard.ts","../../../projects/angular-unleash-proxy-client/src/public-api.ts","../../../projects/angular-unleash-proxy-client/src/karelics-angular-unleash-proxy-client.ts"],"sourcesContent":["import { APP_INITIALIZER, EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders } from '@angular/core';\nimport { UnleashService } from './unleash.service';\nimport { take, tap } from 'rxjs';\nimport { IConfig as UnleashConfig } from 'unleash-proxy-client';\n\nexport const UNLEASH_CONFIG = new InjectionToken<UnleashConfig>('Unleash config');\n\nexport function provideUnleashProxy(\n config: UnleashConfig,\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: UNLEASH_CONFIG, useValue: config },\n {\n provide: APP_INITIALIZER,\n useFactory: () => {\n const unleashService = inject(UnleashService);\n return () => unleashService.initialized$.pipe(\n take(1),\n tap(() => unleashService.unleash.start())\n );\n },\n multi: true,\n },\n ]);\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { EVENTS, IConfig as UnleashConfig, UnleashClient } from 'unleash-proxy-client';\nimport { UNLEASH_CONFIG } from './unleash.initializer';\nimport { distinctUntilChanged, fromEvent, map, Observable, shareReplay, startWith } from 'rxjs';\nimport { ImpressionEvent } from './events/impression';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UnleashService {\n readonly unleash = new UnleashClient(this.config);\n\n readonly initialized$ = fromEvent<void>(this.unleash, EVENTS.INIT).pipe(shareReplay({ bufferSize: 1, refCount: true }));\n readonly error$ = fromEvent<unknown>(this.unleash, EVENTS.ERROR).pipe(shareReplay({ bufferSize: 1, refCount: true }));\n readonly ready$ = fromEvent<void>(this.unleash, EVENTS.READY).pipe(shareReplay({ bufferSize: 1, refCount: true }));\n readonly update$ = fromEvent<void>(this.unleash, EVENTS.UPDATE).pipe(shareReplay({ bufferSize: 1, refCount: true }));\n readonly impression$ = fromEvent<ImpressionEvent>(this.unleash, EVENTS.IMPRESSION).pipe(shareReplay({ bufferSize: 1, refCount: true }));\n\n constructor(\n @Inject(UNLEASH_CONFIG) private readonly config: UnleashConfig,\n ) { }\n\n isEnabled(featureFlag: string): boolean {\n return this.unleash.isEnabled(featureFlag);\n }\n\n isDisabled(featureFlag: string): boolean {\n return !this.isEnabled(featureFlag);\n }\n\n isEnabled$(featureFlag: string): Observable<boolean> {\n return this.update$.pipe(\n startWith(null),\n map(() => this.isEnabled(featureFlag)),\n distinctUntilChanged(),\n );\n }\n\n isDisabled$(featureFlag: string): Observable<boolean> {\n return this.isEnabled$(featureFlag).pipe(\n map((state) => !state),\n );\n }\n}\n","import { DestroyRef, Directive, inject, OnInit } from '@angular/core';\nimport { UnleashService } from '../unleash.service';\nimport { NgIf, NgIfContext } from '@angular/common';\nimport { Observable, ReplaySubject, switchMap, tap } from 'rxjs';\nimport { TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive()\nexport abstract class FeatureDirective implements OnInit {\n protected readonly unleashService = inject(UnleashService);\n protected readonly destroyRef = inject(DestroyRef);\n private readonly ngIf = inject(NgIf);\n\n private readonly toggleNamesSubject = new ReplaySubject<string[]>(1);\n\n protected abstract toggleState$: (toggleNames: string[]) => Observable<boolean>;\n\n ngOnInit(): void {\n this.toggleNamesSubject.pipe(\n switchMap((toggleNames) => this.toggleState$(toggleNames)),\n tap((state) => this.update(state)),\n takeUntilDestroyed(this.destroyRef),\n ).subscribe();\n }\n\n protected setToggleNames(names: string[]): void {\n this.toggleNamesSubject.next(names);\n }\n\n protected update(state: boolean): void {\n this.ngIf.ngIf = state;\n }\n\n protected setElseTemplate(templateRef: TemplateRef<NgIfContext<boolean>> | null): void {\n this.ngIf.ngIfElse = templateRef;\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { FeatureDirective } from './feature.directive';\nimport { NgIf, NgIfContext } from '@angular/common';\nimport { combineLatest, map } from 'rxjs';\nimport { JoinOperator } from './join-operator';\n\n@Directive({\n selector: '[featureEnabled]',\n standalone: true,\n hostDirectives: [NgIf],\n})\nexport class FeatureEnabledDirective extends FeatureDirective {\n @Input('featureEnabled') set toggleNames(val: string | string[]) {\n this.setToggleNames(Array.isArray(val) ? val : [val]);\n }\n\n @Input('featureEnabledOperator') set operator(val: JoinOperator) {\n this._operator = val.toLowerCase() as JoinOperator;\n }\n\n @Input('featureEnabledElse') set else(templateRef: TemplateRef<NgIfContext<boolean>> | null) {\n this.setElseTemplate(templateRef);\n }\n\n private _operator: JoinOperator = 'or';\n\n protected toggleState$ = (toggleNames: string[]) => {\n return combineLatest(\n toggleNames.map(name => this.unleashService.isEnabled$(name))\n ).pipe(\n map(states =>\n this._operator === 'and'\n ? states.every(state => state)\n : states.some(state => state)\n ),\n );\n };\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { FeatureDirective } from './feature.directive';\nimport { NgIf, NgIfContext } from '@angular/common';\nimport { combineLatest, map } from 'rxjs';\nimport { JoinOperator } from './join-operator';\n\n@Directive({\n selector: '[featureDisabled]',\n standalone: true,\n hostDirectives: [NgIf],\n})\nexport class FeatureDisabledDirective extends FeatureDirective {\n @Input('featureDisabled') set toggleNames(val: string | string[]) {\n this.setToggleNames(Array.isArray(val) ? val : [val]);\n }\n\n @Input('featureDisabledOperator') set operator(val: JoinOperator) {\n this._operator = val.toLowerCase() as JoinOperator;\n }\n\n @Input('featureDisabledElse') set else(templateRef: TemplateRef<NgIfContext<boolean>> | null) {\n this.setElseTemplate(templateRef);\n }\n\n private _operator: JoinOperator = 'or';\n\n protected toggleState$ = (toggleNames: string[]) => {\n return combineLatest(\n toggleNames.map(name => this.unleashService.isDisabled$(name))\n ).pipe(\n map(states =>\n this._operator === 'and'\n ? states.every(state => state)\n : states.some(state => state)\n ),\n );\n };\n}\n","import { Router, UrlTree } from '@angular/router';\nimport { inject } from '@angular/core';\n\nexport function redirectResult(redirectUrl?: string | UrlTree): UrlTree | Promise<boolean> | boolean {\n if (redirectUrl) {\n if (typeof redirectUrl === 'string') {\n const router = inject(Router);\n return router.navigateByUrl(redirectUrl);\n } else {\n return redirectUrl;\n }\n }\n return false;\n}\n","import { inject } from '@angular/core';\nimport { CanActivateFn, UrlTree } from '@angular/router';\nimport { UnleashService } from '../unleash.service';\nimport { redirectResult } from './utils';\nimport { JoinOperator } from '../directives/join-operator';\n\nexport function featureEnabled(toggleName: string, redirectUrl?: string | UrlTree): CanActivateFn;\nexport function featureEnabled(toggleNames: string[], operator?: JoinOperator, redirectUrl?: string | UrlTree): CanActivateFn;\nexport function featureEnabled(\n toggleNames: string | string[],\n operatorOrRedirectUrl?: JoinOperator | string | UrlTree,\n redirectUrl?: string | UrlTree\n): CanActivateFn {\n return () => {\n const unleashService = inject(UnleashService);\n\n const effectiveToggleNames = Array.isArray(toggleNames) ? toggleNames : [toggleNames];\n const effectiveOperator = Array.isArray(toggleNames) ? (operatorOrRedirectUrl ?? 'or') as JoinOperator : 'or';\n const effectiveRedirectUrl = Array.isArray(toggleNames) ? redirectUrl : operatorOrRedirectUrl as (string | UrlTree);\n\n const states = effectiveToggleNames.map(toggle => unleashService.isEnabled(toggle));\n const enabledState = effectiveOperator === 'and' ? states.every(Boolean) : states.some(Boolean);\n\n return enabledState || redirectResult(effectiveRedirectUrl);\n };\n}","import { inject } from '@angular/core';\nimport { CanActivateFn, UrlTree } from '@angular/router';\nimport { UnleashService } from '../unleash.service';\nimport { redirectResult } from './utils';\nimport { JoinOperator } from '../directives/join-operator';\n\nexport function featureDisabled(toggleName: string, redirectUrl?: string | UrlTree): CanActivateFn;\nexport function featureDisabled(toggleNames: string[], operator?: JoinOperator, redirectUrl?: string | UrlTree): CanActivateFn;\nexport function featureDisabled(\n toggleNames: string | string[],\n operatorOrRedirectUrl?: JoinOperator | string | UrlTree,\n redirectUrl?: string | UrlTree\n): CanActivateFn {\n return () => {\n const unleashService = inject(UnleashService);\n\n const effectiveToggleNames = Array.isArray(toggleNames) ? toggleNames : [toggleNames];\n const effectiveOperator = Array.isArray(toggleNames) ? (operatorOrRedirectUrl ?? 'or') as JoinOperator : 'or';\n const effectiveRedirectUrl = Array.isArray(toggleNames) ? redirectUrl : operatorOrRedirectUrl as (string | UrlTree);\n\n const states = effectiveToggleNames.map(toggle => unleashService.isDisabled(toggle));\n const disabledState = effectiveOperator === 'and' ? states.every(Boolean) : states.some(Boolean);\n\n return disabledState || redirectResult(effectiveRedirectUrl);\n };\n}\n","/*\n * Public API Surface of angular-unleash-proxy-client\n */\n\nexport * from './lib/unleash.service';\nexport * from './lib/unleash.initializer';\nexport * from './lib/directives/feature-enabled.directive';\nexport * from './lib/directives/feature-disabled.directive';\nexport * from './lib/guards/feature-enabled.guard';\nexport * from './lib/guards/feature-disabled.guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}