{"version":3,"file":"paddls-ngx-common.mjs","sources":["../../../projects/ngx-common/src/lib/decorators/on-attribute-change/on-attribute-change.decorator.ts","../../../projects/ngx-common/src/lib/operators/take-until-destroy/on-destroy-listener.decorator.ts","../../../projects/ngx-common/src/lib/operators/take-until-destroy/take-until-destroy.operator.ts","../../../projects/ngx-common/src/lib/decorators/log/log.decorator.ts","../../../projects/ngx-common/src/lib/modules/error-handler/model/runtime.error.ts","../../../projects/ngx-common/src/lib/modules/error-handler/handler/default-error.handler.ts","../../../projects/ngx-common/src/lib/modules/error-handler/error-handler.module.ts","../../../projects/ngx-common/src/lib/modules/error-handler/error-handling.service.ts","../../../projects/ngx-common/src/lib/modules/error-handler/operator/handle-error.operator.ts","../../../projects/ngx-common/src/lib/modules/error-handler/model/not-implemented.error.ts","../../../projects/ngx-common/src/lib/modules/local-storage/local-storage.service.ts","../../../projects/ngx-common/src/lib/modules/local-storage/local-storage.module.ts","../../../projects/ngx-common/src/lib/modules/config/config.token.ts","../../../projects/ngx-common/src/lib/modules/config/config.service.ts","../../../projects/ngx-common/src/lib/modules/config/config.module.ts","../../../projects/ngx-common/src/lib/modules/route/route.module.ts","../../../projects/ngx-common/src/lib/modules/route/decorators/route-param/route-param.decorator.ts","../../../projects/ngx-common/src/paddls-ngx-common.ts"],"sourcesContent":["import { asyncScheduler, BehaviorSubject } from 'rxjs';\nimport { observeOn } from 'rxjs/operators';\n\nconst ON_ATTRIBUTE_CHANGE_METADATA_KEY: string = 'ngx-common:on-attribute-change';\nconst ON_ATTRIBUTE_CHANGE_OBS_METADATA_KEY: string = 'ngx-common:on-attribute-change-observable';\n\nfunction initializeAttribute(attribute: string, instance: any): void {\n  if (!Reflect.hasOwnMetadata(`${ON_ATTRIBUTE_CHANGE_METADATA_KEY}:${attribute}`, instance)) {\n    const source$: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n    Reflect.defineMetadata(`${ON_ATTRIBUTE_CHANGE_METADATA_KEY}:${attribute}`, source$, instance);\n    Reflect.defineMetadata(`${ON_ATTRIBUTE_CHANGE_OBS_METADATA_KEY}:${attribute}`, source$.pipe(\n      observeOn(asyncScheduler),\n    ), instance);\n  }\n}\n\nexport function OnAttributeChange<T, R>(defaultAttribute: string = null): any {\n  return (target: any, propertyKey: string) => {\n    const isValid: boolean = !!defaultAttribute || new RegExp('^\\\\w+\\\\$$').test(propertyKey);\n    if(!isValid) {\n      throw new Error('Invalid OnAttributeChange property: it should end with \"$\" or been specified as a parameter.');\n    }\n    const attribute: string = defaultAttribute || propertyKey.slice(0, -1);\n      Object.defineProperty(target.constructor.prototype, attribute, {\n      get(): any {\n        initializeAttribute(attribute, this);\n\n        return Reflect.getOwnMetadata(`${ON_ATTRIBUTE_CHANGE_METADATA_KEY}:${attribute}`, this).value;\n      },\n      set(value: any): void {\n        initializeAttribute(attribute, this);\n\n        Reflect.getOwnMetadata(`${ ON_ATTRIBUTE_CHANGE_METADATA_KEY }:${ attribute }`, this)?.next(value);\n      },\n      enumerable: true,\n      configurable: true\n    });\n\n    Object.defineProperty(target.constructor.prototype, propertyKey, {\n      get(): any {\n        initializeAttribute(attribute, this);\n\n        return Reflect.getOwnMetadata(`${ON_ATTRIBUTE_CHANGE_OBS_METADATA_KEY}:${attribute}`, this);\n      },\n      enumerable: true,\n      configurable: true\n    });\n  };\n}\n","import { Subject } from 'rxjs';\n\nexport const DESTROY_LISTENER_METADATA_KEY: string = 'ngx-common:take-until-destroy';\n\nfunction onDestroyComplete(instance: any): void {\n    const onDestroy$: Subject<void> = getOnDestroy(instance);\n    if (onDestroy$) {\n        getOnDestroy(instance).next();\n        getOnDestroy(instance).complete();\n        Reflect.deleteMetadata(DESTROY_LISTENER_METADATA_KEY, instance);\n    }\n}\n\nfunction onDestroyListener(ngOnDestroy: () => void): () => void {\n    return function(): void {\n        if (ngOnDestroy) {\n            ngOnDestroy.call(this);\n        }\n        onDestroyComplete(this);\n    };\n}\n\nexport function getOnDestroy(instance: any): Subject<void> {\n    if (!Reflect.hasOwnMetadata(DESTROY_LISTENER_METADATA_KEY, instance)) {\n        Reflect.defineMetadata(DESTROY_LISTENER_METADATA_KEY, new Subject<void>(), instance);\n    }\n    return Reflect.getOwnMetadata(DESTROY_LISTENER_METADATA_KEY, instance);\n}\n\nexport function OnDestroyListener(): ClassDecorator {\n    return function(target: any): any {\n        if (!Reflect.hasOwnMetadata(DESTROY_LISTENER_METADATA_KEY, target)) {\n            Reflect.defineMetadata(DESTROY_LISTENER_METADATA_KEY, true, target);\n        }\n\n        const ngOnDestroy: any = target.prototype.ngOnDestroy;\n\n        target.prototype.ngOnDestroy = onDestroyListener(ngOnDestroy);\n\n        return target;\n    };\n}\n","import { takeUntil } from 'rxjs/operators';\nimport { MonoTypeOperatorFunction, Observable } from 'rxjs';\nimport { DESTROY_LISTENER_METADATA_KEY, getOnDestroy } from './on-destroy-listener.decorator';\n\n/**\n * @deprecated use takeUntilDestroyed() from @angular/core\n * Subscribe until the component emit destroy\n * @param instance the component instance\n */\nexport function takeUntilDestroy<T>(instance: any): MonoTypeOperatorFunction<T> {\n    const constructor: any = instance.__proto__.constructor;\n    if (!hasDestroylistener(constructor)) {\n        console.error(`You should annotate ${ constructor.name } class with @OnDestroyListener`);\n\n        throw new Error(`You should annotate ${ constructor.name } class with @OnDestroyListener`);\n    }\n    const onDestroy$: Observable<void> = getOnDestroy(instance);\n\n    return takeUntil(onDestroy$);\n}\n\nfunction hasDestroylistener(constructor: any): boolean {\n    return Reflect.hasOwnMetadata(DESTROY_LISTENER_METADATA_KEY, constructor) || (!!constructor?.__proto__ && hasDestroylistener(constructor.__proto__));\n}\n","import { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nexport function Log(active: boolean = true, color: string = '#4CAF50'): MethodDecorator {\n  return (target: any, propertyKey: any, descriptor: any): any => {\n    if (active) {\n      const originalMethod: any = descriptor.value;\n\n      descriptor.value = descriptor.value = function(...args: any): any {\n        const time: number = new Date().getTime();\n        console.log(`%c ${ target.constructor.name } > ${ propertyKey }`, `color: ${ color }; font-weight: bold`, ...args);\n        const result: any = originalMethod.apply(this, args);\n        if (result instanceof Promise) {\n          return result.then((data: any) => {\n            console.log(`%c ${target.constructor.name} < ${propertyKey} (${new Date().getTime() - time} ms)`, `color: ${color}; font-weight: bold`, data);\n\n            return data;\n          });\n        } else if (result instanceof Observable) {\n          return result.pipe(tap((data: any) => {\n            console.log(`%c ${target.constructor.name} < ${propertyKey} (${new Date().getTime() - time} ms)`, `color: ${color}; font-weight: bold`, data);\n          }));\n        } else {\n          console.log(`%c ${target.constructor.name} < ${propertyKey} (${new Date().getTime() - time} ms)`, `color: #4CAF50; font-weight: bold`, result);\n\n          return result;\n        }\n      };\n    }\n    return descriptor;\n  };\n}\n","export class RuntimeError {\n  public constructor(public readonly code: string,\n                     public readonly origin?: string,\n                     public readonly message?: string) {\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { RuntimeError } from '../model/runtime.error';\n\n@Injectable()\nexport class DefaultErrorHandler {\n\n  public handle(error: RuntimeError): Observable<any> {\n    return throwError(error);\n  }\n}\n","import { EnvironmentProviders, inject, InjectionToken, Injector, makeEnvironmentProviders, ModuleWithProviders, NgModule, provideAppInitializer, Type } from '@angular/core';\nimport { ErrorHandler } from './model/error-handler.model';\nimport { DefaultErrorHandler } from './handler/default-error.handler';\nimport { ErrorHandlingService } from './error-handling.service';\n\nexport const ERROR_HANDLER_TOKEN: InjectionToken<ErrorHandler> = new InjectionToken<ErrorHandler>('ERROR_HANDLER');\n\nexport function provideErrorHandler(handlers: Type<ErrorHandler>[]): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    provideAppInitializer(() => ((injector: Injector) => (): void => {\n      NgxErrorHandlerModule.injector = injector;\n    })(inject(Injector))()),\n    ErrorHandlingService,\n    DefaultErrorHandler,\n    ...handlers.map((handler: Type<ErrorHandler>) => ({\n      provide: ERROR_HANDLER_TOKEN,\n      useClass: handler,\n      multi: true\n    }))\n  ]);\n}\n\n// @dynamic\n@NgModule()\nexport class NgxErrorHandlerModule {\n\n  public static injector: Injector;\n\n  /**\n   * @deprecated use provideErrorHandler() instead\n   */\n  public static forRoot(handlers: Type<ErrorHandler>[]): ModuleWithProviders<NgxErrorHandlerModule> {\n    return {\n      ngModule: NgxErrorHandlerModule,\n      providers: [\n        provideErrorHandler(handlers)\n      ]\n    };\n  }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ErrorHandler } from './model/error-handler.model';\nimport { RuntimeError } from './model/runtime.error';\nimport { ERROR_HANDLER_TOKEN } from './error-handler.module';\nimport { DefaultErrorHandler } from './handler/default-error.handler';\n\n@Injectable()\nexport class ErrorHandlingService {\n\n  public constructor(@Inject(ERROR_HANDLER_TOKEN) private readonly errorHandlers: ErrorHandler[],\n                     private readonly defaultHandler: DefaultErrorHandler) {\n  }\n\n  public handle(error: any): void {\n    const exception: RuntimeError = this.getFormattedException(error);\n    const handlers: ErrorHandler[] = this.errorHandlers\n      .filter((handler: ErrorHandler) => handler.canHandle(exception));\n\n    if (handlers.length) {\n      handlers.forEach((handler: ErrorHandler) => {\n        handler.handle(exception);\n      });\n    } else {\n      this.defaultHandler.handle(error);\n    }\n  }\n\n  public getFormattedException(error: any): RuntimeError {\n    if (error instanceof RuntimeError) {\n      return error;\n    } else {\n      return new RuntimeError(error.code ?? error.name ?? error.message, error, error.message ?? null);\n    }\n  }\n}\n","import { MonoTypeOperatorFunction, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { ErrorHandlingService } from '../error-handling.service';\nimport { NgxErrorHandlerModule } from '../error-handler.module';\n\nexport function handleError<T>(): MonoTypeOperatorFunction<T> {\n  return catchError((error: unknown) => {\n      NgxErrorHandlerModule.injector\n        .get(ErrorHandlingService)\n        .handle(error);\n\n      return throwError(() => error);\n    }\n  );\n}\n","import { RuntimeError } from './runtime.error';\n\nexport class NotImplementedError extends RuntimeError {\n  public constructor() {\n    super('not_implemented');\n  }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport has from 'lodash.has';\nimport isObject from 'lodash.isobject';\n\n@Injectable()\nexport class NgxLocalStorageService {\n\n  private readonly storage: { [key: string]: BehaviorSubject<string> } = {};\n\n  public constructor() {\n    for (let i: number = 0; i < localStorage.length; i++) {\n      const key: string = localStorage.key(i);\n\n      this.storage[key] = new BehaviorSubject(localStorage.getItem(key));\n    }\n  }\n\n  public clear(): void {\n    for (const key of Object.keys(this.storage)) {\n      this.remove(key);\n    }\n  }\n\n  public get(key: string): Observable<string> {\n    if (!has(this.storage, key)) {\n      this.storage[key] = new BehaviorSubject(null);\n    }\n\n    return this.storage[key];\n  }\n\n  public set(key: string, value: string): Observable<string> {\n    if (!has(this.storage, key)) {\n      this.storage[key] = new BehaviorSubject(value);\n    } else {\n      this.storage[key].next(value);\n    }\n    localStorage.setItem(key, isObject(value) ? JSON.stringify(value) : value);\n\n    return this.get(key);\n  }\n\n  public remove(key: string): void {\n    this.storage[key].next(null);\n    localStorage.removeItem(key);\n  }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgxLocalStorageService } from './local-storage.service';\n\n@NgModule()\nexport class NgxLocalStorageModule {\n\n  public static forRoot(): ModuleWithProviders<NgxLocalStorageModule> {\n    return {\n      ngModule: NgxLocalStorageModule,\n      providers: [\n        NgxLocalStorageService\n      ]\n    };\n  }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const CONFIG_URL_TOKEN: InjectionToken<string> = new InjectionToken('CONFIG_URL_TOKEN');\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { pluck, tap } from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\nimport { hardCache } from '@paddls/rxjs-common';\nimport { CONFIG_URL_TOKEN } from './config.token';\nimport get from 'lodash.get';\n\n@Injectable()\nexport class NgxConfigService {\n\n  private readonly config$: Observable<any>;\n\n  private config: any;\n\n  public constructor(httpClient: HttpClient,\n                     @Inject(CONFIG_URL_TOKEN) url: string) {\n    this.config$ = httpClient.get(url).pipe(\n      tap((config: any) => this.config = config),\n      hardCache()\n    );\n  }\n\n  public getConfig(key: string): Observable<any> {\n    return this.config$.pipe(\n      pluck(key)\n    );\n  }\n\n  public getConfigSnapshot(key: string): any {\n    return get(this.config, key);\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgxConfigService } from './config.service';\nimport { CONFIG_URL_TOKEN } from './config.token';\n\n@NgModule()\nexport class NgxConfigModule {\n\n  public static forRoot(url: string): ModuleWithProviders<NgxConfigModule> {\n    return {\n      ngModule: NgxConfigModule,\n      providers: [\n        NgxConfigService,\n        {\n          provide: CONFIG_URL_TOKEN,\n          useValue: url\n        }\n      ]\n    };\n  }\n}\n","import { Injector, NgModule } from '@angular/core';\n\n// @dynamic\n@NgModule()\nexport class NgxRouteModule {\n\n  private static injector: Injector;\n\n  public constructor(injector: Injector) {\n    NgxRouteModule.injector = injector;\n  }\n\n  public static getInjector(): Injector {\n    return NgxRouteModule.injector;\n  }\n}\n","import { ActivatedRoute, ParamMap } from '@angular/router';\nimport { map } from 'rxjs/operators';\nimport { softCache } from '@paddls/rxjs-common';\nimport { Observable } from 'rxjs';\nimport { NgxRouteModule } from '../../route.module';\nimport { PropertyKeyConfiguration } from '../../property-key-configuration.interface';\n\nexport interface RouteParamContext {\n\n}\n\nexport interface RouteParamContextConfiguration extends RouteParamContext, PropertyKeyConfiguration {\n\n  key: string;\n\n}\n\nexport const ROUTE_PARAM_METADATA_KEY: string = 'ngx-common:route-param';\n\nexport const ROUTE_PARAM_INSTANCE_METADATA_KEY: string = 'ngx-common:route-param-instance';\n\nexport function RouteParam(key: string): any {\n  return (target: any, propertyKey: string) => {\n\n    const routeParamContextConfiguration: RouteParamContextConfiguration = {\n      propertyKey,\n      key\n    };\n\n    let metadata: RouteParamContextConfiguration[] = [];\n    if (Reflect.has(target, ROUTE_PARAM_METADATA_KEY)) {\n      metadata = Reflect.get(target, ROUTE_PARAM_METADATA_KEY);\n    }\n    Reflect.set(target, ROUTE_PARAM_METADATA_KEY, metadata.concat(routeParamContextConfiguration));\n\n    Object.defineProperty(target.constructor.prototype, propertyKey, {\n      get(): Observable<string> {\n        if (Reflect.has(this, `${ ROUTE_PARAM_INSTANCE_METADATA_KEY }:${ propertyKey }`)) {\n          return Reflect.get(this, `${ ROUTE_PARAM_INSTANCE_METADATA_KEY }:${ propertyKey }`);\n        }\n        const obs$: Observable<string> = NgxRouteModule.getInjector().get(ActivatedRoute).paramMap.pipe(\n          map((paramMap: ParamMap) => paramMap.get(key)),\n          softCache()\n        );\n\n        Reflect.set(this, `${ ROUTE_PARAM_INSTANCE_METADATA_KEY }:${ propertyKey }`, obs$);\n\n        return obs$;\n      },\n      set: () => void 0,\n      enumerable: true,\n      configurable: true\n    });\n  };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DefaultErrorHandler"],"mappings":"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"}