ng-lock
Version:
Angular decorator for lock a function and user interface while a task running.
1 lines • 35.6 kB
Source Map (JSON)
{"version":3,"file":"ng-lock.mjs","sources":["../../../projects/ng-lock/src/lib/ng-lock-types.ts","../../../projects/ng-lock/src/lib/ng-lock-utils.ts","../../../projects/ng-lock/src/lib/ng-lock-element-finder.ts","../../../projects/ng-lock/src/lib/ng-lock.decorator.ts","../../../projects/ng-lock/src/lib/ng-lock-token.ts","../../../projects/ng-lock/src/lib/ng-lock-interceptor.service.ts","../../../projects/ng-lock/src/lib/ng-lock.directive.ts","../../../projects/ng-lock/src/lib/ng-lock.module.ts","../../../projects/ng-lock/src/lib/ng-lock-rxjs.ts","../../../projects/ng-lock/src/lib/ng-lock-provider.ts","../../../projects/ng-lock/src/public-api.ts","../../../projects/ng-lock/src/ng-lock.ts"],"sourcesContent":["export type NgLockElementFunction = (...args: any[]) => NgLockElementFinder;\r\nexport type NgLockElementFinder = (self: any, args: any[]) => Element;\r\nexport type NgLockFunction = (...args: any[]) => any;\r\n\r\nexport const NG_UNLOCK_CALLBACK = 'ngUnlockCallback';\r\nexport const NG_IS_LOCK_CALLBACK = 'ngIsLockCallback';\r\nexport const NG_LOCK_SIGNAL = 'ngLockSignal';\r\nexport const NG_LOCK_SUBJECT = 'ngLockSubject';\r\nexport const NG_LOCK_OPTION = 'ngLockOption';\r\nexport type NG_CALLBACKS = typeof NG_UNLOCK_CALLBACK | typeof NG_IS_LOCK_CALLBACK | typeof NG_LOCK_SIGNAL | typeof NG_LOCK_SUBJECT | typeof NG_LOCK_OPTION;\r\nexport const NG_LOCK_LOCKED_CLASS = 'ng-lock-locked';\r\n\r\n/**\r\n * All ngLock options\r\n * @see NgLockOption\r\n */\r\nexport interface NgLockAllOption {\r\n maxCall: number,\r\n unlockTimeout: number | null;\r\n lockElementFunction: NgLockElementFinder;\r\n lockClass: string;\r\n returnLastResultWhenLocked: boolean;\r\n unlockOnPromiseResolve: boolean;\r\n unlockOnObservableChanges: boolean;\r\n debug: boolean;\r\n}\r\n\r\n/**\r\n * ngLock options\r\n * - maxCall: Max number of the calls beyond which the method is locked\r\n * - unlockTimeout: Max time (in millisecond) to lock function\r\n * - lockElementFunction: function for find the HTMLElement for apply the lockClass\r\n * - lockClass: CSS class applied when the method is locked\r\n * - returnLastResultWhenLocked: if true, when the method is locked the last result is returned, otherwise return undefined\r\n * - unlockOnPromiseResolve: if true, when a locked method return a Promise, the method is automatically unlock when the Promise is resolved\r\n * - unlockOnObservableChanges: if true, when a locked method return a subscription, the method is automatically unlock when the observable changes\r\n * - debug: if true, the decorator log into the console some info\r\n * @see NgLockDefaultOption for the default value\r\n */\r\nexport type NgLockOption = Partial<NgLockAllOption>\r\n","import { Signal } from \"@angular/core\";\r\nimport { NG_CALLBACKS, NG_IS_LOCK_CALLBACK, NG_LOCK_OPTION, NG_LOCK_SIGNAL, NG_LOCK_SUBJECT, NG_UNLOCK_CALLBACK, NgLockAllOption, NgLockFunction, NgLockOption } from \"./ng-lock-types\";\r\nimport type { Observable, Subscriber } from \"rxjs\";\r\n\r\n/**\r\n * Unlock a locked function by ngLock() decorator\r\n * @param {NgLockFunction} methodToUnlock The function to unlock\r\n * @param {string} reason The reason for the log\r\n * @return {void}\r\n * @throws Error\r\n */\r\nexport function ngUnlock(methodToUnlock: NgLockFunction, reason?: string): void {\r\n const callback = ngCallbacks(methodToUnlock, NG_UNLOCK_CALLBACK);\r\n callback(reason);\r\n}\r\n\r\n/**\r\n * Unlock all locked functions by ngLock() decorator\r\n * @param {any} component The component instance (this)\r\n * @return {void}\r\n */\r\nexport function ngUnlockAll(component: any): void {\r\n Object.getOwnPropertyNames(Object.getPrototypeOf(component)).forEach(key => {\r\n const prop = component[key];\r\n if (typeof prop === 'function' && typeof prop['ngLock'] === 'object' && typeof prop['ngLock'][NG_UNLOCK_CALLBACK] === 'function') {\r\n if (prop['ngLock'][NG_IS_LOCK_CALLBACK]()) {\r\n prop['ngLock'][NG_UNLOCK_CALLBACK]('ngUnlockAll');\r\n }\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Return true if the provided function is locked\r\n * @param {NgLockFunction} methodToCheck The method to check\r\n * @return {boolean}\r\n * @throws Error\r\n */\r\nexport function ngIsLock(methodToCheck: NgLockFunction): boolean {\r\n const callback = ngCallbacks(methodToCheck, NG_IS_LOCK_CALLBACK);\r\n return callback();\r\n}\r\n\r\n/**\r\n * Return a Signal for the given function on the lock status (locked/unlocked)\r\n * @param {NgLockFunction} method The function\r\n * @return {Signal<boolean>}\r\n */\r\nexport function ngLockSignal(method: NgLockFunction): Signal<boolean> {\r\n const callback = ngCallbacks(method, NG_LOCK_SIGNAL);\r\n return callback();\r\n}\r\n\r\n/**\r\n * Return the option for the given function\r\n * @param {NgLockFunction} method The function\r\n * @return {NgLockAllOption}\r\n */\r\nexport function ngLockOption(method: NgLockFunction): NgLockAllOption {\r\n const callback = ngCallbacks(method, NG_LOCK_OPTION);\r\n return callback();\r\n}\r\n\r\n/**\r\n * Return an Observable for the given function on the lock status (locked/unlocked)\r\n * @param {NgLockFunction} method - The function\r\n * @return {Observable<boolean>}\r\n */\r\nexport function ngLockObservable(method: NgLockFunction): Observable<boolean> {\r\n const callback = ngCallbacks(method, NG_LOCK_SUBJECT);\r\n return callback();\r\n}\r\n\r\n/**\r\n * Return the provided NG_CALLBACKS\r\n * @param {NgLockFunction} method The function to return the unlock callback\r\n * @param {NG_CALLBACKS} callback The NG_CALLBACKS\r\n * @return {NgLockFunction} Return the NG_CALLBACKS\r\n * @throws Error\r\n */\r\nexport function ngCallbacks(method: NgLockFunction, callback: NG_CALLBACKS): NgLockFunction {\r\n if (!(method instanceof Function)) {\r\n throw new Error('\"method\" param must be a function.');\r\n }\r\n if (callback !== NG_UNLOCK_CALLBACK && callback !== NG_IS_LOCK_CALLBACK && callback !== NG_LOCK_SIGNAL && callback !== NG_LOCK_SUBJECT && callback !== NG_LOCK_OPTION) {\r\n throw new Error(`\"callback\" param \"${callback}\" must be a NG_CALLBACKS.`);\r\n }\r\n if (typeof (method as any)['ngLock'] !== 'object') {\r\n throw new Error(`\"method\" param (function ${method.name}) must be a @ngLock() decorated function.`);\r\n }\r\n if (typeof (method as any)['ngLock'][callback as any] !== 'function') {\r\n throw new Error(`\"method\" param (function ${method.name}) must be a @ngLock() decorated function with \"${callback}\".`);\r\n }\r\n return (method as any)['ngLock'][callback];\r\n}\r\n\r\n/**\r\n * Add class and attribute on HTML element\r\n * @param {Element} elementToLock \r\n * @param {NgLockOption} options \r\n */\r\nexport const ngLockHtmlElement = (elementToLock: Element | null, options: NgLockOption) => {\r\n if (!elementToLock) {\r\n return;\r\n }\r\n if (options?.lockClass) elementToLock.classList.add(options.lockClass);\r\n elementToLock.setAttribute('disabled', 'disabled');\r\n elementToLock.setAttribute('aria-disabled', 'true');\r\n}\r\n\r\n/**\r\n * Remove class and attribute from HTML element\r\n * @param {Element} elementToLock \r\n * @param {NgLockOption} options \r\n */\r\nexport const ngUnLockHtmlElement = (elementToLock: Element | null, options: NgLockOption) => {\r\n if (!elementToLock) {\r\n return;\r\n }\r\n if (options?.lockClass) elementToLock.classList.remove(options.lockClass);\r\n elementToLock.removeAttribute('disabled');\r\n elementToLock.removeAttribute('aria-disabled');\r\n}\r\n\r\n/**\r\n * Check if value is a Promise\r\n */\r\nexport const isPromise = (value: any): value is Promise<unknown> => value && typeof value.finally === 'function' && typeof value.then === 'function' && value[Symbol.toStringTag] === 'Promise';\r\n\r\n/**\r\n * Check if value is a destination partialObserver\r\n */\r\nexport const isObserver = (value: any): value is { destination: { partialObserver: Subscriber<unknown> } } => value && typeof value?.destination?.partialObserver === 'object';","import { ElementRef } from \"@angular/core\";\r\nimport type { NgLockElementFinder, NgLockElementFunction } from \"./ng-lock-types\";\r\n\r\n/**\r\n * Uses the provided \"selector\" to find with \"querySelector()\" and apply the lockClass on the founded element.\r\n * @param {string} selector A DOMString containing a selector to match.\r\n * @returns {NgLockElementFinder} Return a NgLockElementFinder function\r\n * @throws Error\r\n */\r\nexport const ngLockElementByQuerySelector: NgLockElementFunction = (selector: string): NgLockElementFinder => {\r\n return (_self: any, _args: any[]): Element => {\r\n if (!selector) {\r\n throw new Error('selector is required');\r\n }\r\n const el = document.querySelector(selector);\r\n if (el) {\r\n return el;\r\n } else {\r\n throw new Error('Element not found');\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * Uses a function argument for apply the lockClass. If provided a argsIndex use the specific argument, otherwise\r\n * search an argument with a target property that is a HTMLElement\r\n * @param {number} argsIndex (optional) index of the argument that is HTMLElement or contains target property (also a HTMLElement)\r\n * @returns {NgLockElementFinder} Return a NgLockElementFinder function\r\n * @throws Error\r\n */\r\nexport const ngLockElementByTargetEventArgument: NgLockElementFunction = (argsIndex?: number): NgLockElementFinder => {\r\n return (_self: any, args: any[]): Element => {\r\n if (!args || args.length <= 0) {\r\n throw new Error('Method without arguments');\r\n }\r\n let arg: any;\r\n if (typeof argsIndex === 'number') {\r\n if (argsIndex < 0) {\r\n throw new Error('argsIndex must be grater than or equal 0');\r\n } else {\r\n if (args.length - 1 < argsIndex) {\r\n throw new Error('argsIndex grater than arguments length');\r\n }\r\n arg = args[argsIndex];\r\n if ((arg as MouseEvent).currentTarget instanceof HTMLElement) {\r\n return arg.currentTarget;\r\n }\r\n if ((arg as MouseEvent).target instanceof HTMLElement) {\r\n return arg.target;\r\n }\r\n if (arg instanceof HTMLElement) {\r\n return arg;\r\n }\r\n throw new Error('Argument not an HTMLElement or with target, currentTarget property');\r\n }\r\n } else {\r\n arg = args.find(_arg => (_arg as MouseEvent).currentTarget instanceof HTMLElement);\r\n if (arg) {\r\n return arg.currentTarget;\r\n }\r\n arg = args.find(_arg => (_arg as MouseEvent).target instanceof HTMLElement);\r\n if (arg) {\r\n return arg.target;\r\n }\r\n arg = args.find(_arg => _arg instanceof HTMLElement);\r\n if (arg) {\r\n return arg;\r\n }\r\n throw new Error('Argument not found');\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * Apply lockClass to a component property that must be a HTMLElement or element with Angular nativeElement (also a HTMLElement)\r\n * @param {string} property The property name of the component\r\n * @returns {NgLockElementFinder} Return a NgLockElementFinder function\r\n * @throws Error\r\n */\r\nexport const ngLockElementByComponentProperty: NgLockElementFunction = (property: string): NgLockElementFinder => {\r\n return (self: any, _args: any[]): Element => {\r\n if (!property) {\r\n throw new Error('Property is required');\r\n }\r\n const prop = self[property];\r\n if (prop) {\r\n if (prop instanceof HTMLElement) {\r\n return prop;\r\n }\r\n if ((prop as ElementRef<HTMLElement>).nativeElement instanceof HTMLElement) {\r\n return prop.nativeElement;\r\n }\r\n throw new Error('Property must be a HTMLElement or object with nativeElement (also HTMLElement)');\r\n } else {\r\n throw new Error('Property not found');\r\n }\r\n };\r\n};\r\n","import { signal } from \"@angular/core\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\nimport { NG_IS_LOCK_CALLBACK, NG_LOCK_LOCKED_CLASS, NG_LOCK_OPTION, NG_LOCK_SIGNAL, NG_LOCK_SUBJECT, NG_UNLOCK_CALLBACK, NgLockAllOption, NgLockOption } from \"./ng-lock-types\";\r\nimport { isObserver, isPromise, ngLockHtmlElement, ngUnLockHtmlElement } from \"./ng-lock-utils\";\r\nimport { ngLockElementByTargetEventArgument } from \"./ng-lock-element-finder\";\r\n\r\n/**\r\n * ngLock default options\r\n * @see NgLockOption\r\n */\r\nexport const NgLockDefaultOption: NgLockAllOption = {\r\n maxCall: 1,\r\n unlockTimeout: null,\r\n lockElementFunction: ngLockElementByTargetEventArgument(),\r\n lockClass: NG_LOCK_LOCKED_CLASS,\r\n returnLastResultWhenLocked: false,\r\n unlockOnPromiseResolve: true,\r\n unlockOnObservableChanges: true,\r\n debug: false\r\n} as const;\r\n\r\n/**\r\n * Lock the decorated function\r\n * @param {NgLockOption} options (optional) NgLockOption\r\n * @return {MethodDecorator} Return a MethodDecorator\r\n */\r\nexport function ngLock(options?: NgLockOption): MethodDecorator {\r\n return function <T>(_target: object, key: string | symbol, descriptor: TypedPropertyDescriptor<T>): TypedPropertyDescriptor<T> | void {\r\n let _options: NgLockAllOption;\r\n if (!options) {\r\n _options = { ...NgLockDefaultOption };\r\n } else {\r\n _options = { ...NgLockDefaultOption, ...options };\r\n }\r\n\r\n let callCounter: number = 0;\r\n let timeoutHandle: ReturnType<typeof setTimeout> | null = null;\r\n let elementToLock: Element | null = null;\r\n let lastResult: any;\r\n\r\n const originalMethod: any = descriptor.value;\r\n const ngLockSignal = signal(false);\r\n const ngLockSubject = new BehaviorSubject(false);\r\n\r\n const ngLockLog = (...args: unknown[]): void => {\r\n if (_options.debug) {\r\n console.log(...args);\r\n }\r\n }\r\n\r\n const ngUnlockCallback = (log: string): void => {\r\n let message = `NgLock: unlock method \"${key.toString()}\"`;\r\n message += `, reason: ${log ?? 'ngUnlock'}`;\r\n if (!ngIsLockCallback()) {\r\n message += ' (warning! the method is already unlocked)';\r\n }\r\n ngLockLog(message);\r\n\r\n callCounter = 0;\r\n\r\n ngUnLockHtmlElement(elementToLock, _options);\r\n\r\n if (timeoutHandle) {\r\n clearTimeout(timeoutHandle);\r\n }\r\n\r\n ngLockSignal.set(false);\r\n ngLockSubject.next(false);\r\n };\r\n\r\n const ngIsLockCallback = (): boolean => callCounter >= _options?.maxCall;\r\n\r\n ngLockLog(`NgLock: decorate method \"${key.toString()}\"`);\r\n\r\n descriptor.value = function (...args: unknown[]) {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-expect-error\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n const self = this;\r\n\r\n if (ngIsLockCallback()) {\r\n ngLockLog(`NgLock: method \"${key.toString()}\" locked`);\r\n if (_options.returnLastResultWhenLocked) {\r\n return lastResult;\r\n }\r\n return;\r\n }\r\n callCounter++;\r\n\r\n if (typeof _options.lockElementFunction === 'function') {\r\n elementToLock = _options.lockElementFunction(self, args);\r\n }\r\n if (ngIsLockCallback()) {\r\n ngLockHtmlElement(elementToLock, _options)\r\n ngLockSignal.set(true);\r\n ngLockSubject.next(true);\r\n if (_options.unlockTimeout && _options.unlockTimeout > 0) {\r\n timeoutHandle = setTimeout(() => ngUnlockCallback('unlockTimeout reached'), _options.unlockTimeout);\r\n }\r\n }\r\n\r\n lastResult = originalMethod.apply(self, args);\r\n ngLockLog(`NgLock: execute method \"${key.toString()}\"`);\r\n\r\n if (_options.unlockOnPromiseResolve && isPromise(lastResult)) {\r\n lastResult.finally(() => ngUnlockCallback('Promise resolved'));\r\n } else if (_options.unlockOnObservableChanges && isObserver(lastResult)) {\r\n const obsNext = lastResult.destination.partialObserver.next;\r\n if (typeof obsNext === 'function') {\r\n lastResult.destination.partialObserver.next = (...args: unknown[]) => {\r\n ngUnlockCallback('Subscription changes');\r\n obsNext(args);\r\n };\r\n }\r\n const obsError = lastResult.destination.partialObserver.error;\r\n if (typeof obsError === 'function') {\r\n lastResult.destination.partialObserver.error = (...args: unknown[]) => {\r\n ngUnlockCallback('Subscription error');\r\n obsError(args);\r\n };\r\n }\r\n const obsComplete = lastResult.destination.partialObserver.complete;\r\n if (typeof obsComplete === 'function') {\r\n lastResult.destination.partialObserver.complete = () => {\r\n ngUnlockCallback('Subscription complete');\r\n obsComplete();\r\n };\r\n }\r\n }\r\n return lastResult;\r\n } as unknown as T;\r\n\r\n Object.defineProperty(descriptor.value, 'ngLock', {\r\n value: {\r\n [NG_LOCK_OPTION]: () => _options,\r\n [NG_UNLOCK_CALLBACK]: ngUnlockCallback,\r\n [NG_IS_LOCK_CALLBACK]: ngIsLockCallback,\r\n [NG_LOCK_SIGNAL]: () => ngLockSignal.asReadonly(),\r\n [NG_LOCK_SUBJECT]: () => ngLockSubject.asObservable(),\r\n }, enumerable: true, writable: false\r\n });\r\n\r\n return descriptor;\r\n };\r\n}\r\n","import { HttpContext, HttpContextToken } from \"@angular/common/http\";\r\nimport type { NgLockFunction } from \"./ng-lock-types\";\r\n\r\n/**\r\n * Unlock the given method on HTTP response\r\n */\r\nexport const NG_LOCK_CONTEXT = new HttpContextToken<NgLockFunction>(() => (function () { }));\r\n\r\n/**\r\n * Return HttpContextToken for unlock the given method on HTTP response\r\n * @param {NgLockFunction} methodToUnlock the method to unlock\r\n * @param {HttpContext} context current context\r\n * @returns {HttpContext}\r\n */\r\nexport const withNgLockContext = (methodToUnlock: NgLockFunction, context: HttpContext = new HttpContext()) => context.set(NG_LOCK_CONTEXT, methodToUnlock)","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { NG_LOCK_CONTEXT } from './ng-lock-token';\r\nimport type { NgLockFunction } from './ng-lock-types';\r\nimport { ngUnlock } from './ng-lock-utils';\r\n\r\n\r\n@Injectable()\r\nexport class NgLockInterceptorService implements HttpInterceptor {\r\n\r\n intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n return next.handle(req).pipe(\r\n finalize(() => {\r\n const context: NgLockFunction = req.context.get(NG_LOCK_CONTEXT);\r\n if (typeof context === 'function') {\r\n ngUnlock(context, 'HTTP response')\r\n }\r\n })\r\n );\r\n }\r\n\r\n}\r\n","import { DestroyRef, Directive, ElementRef, Input, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgLockFunction } from './ng-lock-types';\nimport { ngLockHtmlElement, ngLockObservable, ngLockOption, ngUnLockHtmlElement } from './ng-lock-utils';\n\n\n/**\n * @ngModule NgLockModule\n *\n * @description\n *\n * The `ngLock` directive it's a Angular directive lock html element when a decorated method with `@ngLock` is running a task.\n *\n * @usageNotes\n *\n * ### Usage\n *\n * ```html\n * <input [ngLock]=\"myMethod\" /><button (click)=\"myMethod($event)\">Send</button>\n * ```\n * ```ts\n * @ngLock()\n * myMethod(event: MouseEvent){\n * return new Promise(resolve => setTimeout(resolve, 5000));\n * }\n * ```\n */\n@Directive({\n selector: '[ngLock]',\n standalone: true\n})\nexport class NgLockDirective implements OnInit {\n\n /**\n * @ngModule NgLockModule\n *\n * @description\n *\n * The `ngLock` directive it's a Angular directive lock html element when a decorated method with `@ngLock` is running a task.\n *\n * @usageNotes\n *\n * ### Usage\n *\n * ```html\n * <input [ngLock]=\"myMethod\" /><button (click)=\"myMethod($event)\">Send</button>\n * ```\n * ```ts\n * @ngLock()\n * myMethod(event: MouseEvent){\n * return new Promise(resolve => setTimeout(resolve, 5000));\n * }\n * ```\n */\n @Input({ required: true }) ngLock!: NgLockFunction;\n\n constructor(\n private eleRef: ElementRef<HTMLElement>,\n private destroyRef: DestroyRef) {\n }\n\n ngOnInit(): void {\n const option = ngLockOption(this.ngLock)\n ngLockObservable(this.ngLock).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(status => {\n if (status) {\n ngLockHtmlElement(this.eleRef.nativeElement, option)\n } else {\n ngUnLockHtmlElement(this.eleRef.nativeElement, option)\n }\n })\n }\n}","import { NgModule } from '@angular/core';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { NgLockInterceptorService } from './ng-lock-interceptor.service';\r\nimport { NgLockDirective } from './ng-lock.directive';\r\n\r\n@NgModule({\r\n imports: [NgLockDirective],\r\n exports: [NgLockDirective],\r\n providers: [\r\n NgLockInterceptorService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: NgLockInterceptorService,\r\n multi: true,\r\n },\r\n ]\r\n})\r\nexport class NgLockModule { }\r\n","import { MonoTypeOperatorFunction, Observable, tap } from \"rxjs\";\r\nimport type { NgLockFunction } from \"./ng-lock-types\";\r\nimport { ngUnlock } from \"./ng-lock-utils\";\r\n\r\n/**\r\n * Unlock the method when Observable changes\r\n * @param {NgLockFunction} methodToUnlock method to unlock\r\n * @returns {MonoTypeOperatorFunction<T>}\r\n */\r\nexport const ngLockChanges = <T>(methodToUnlock: NgLockFunction): MonoTypeOperatorFunction<T> => {\r\n return (source$: Observable<T>): Observable<T> => {\r\n return source$.pipe(tap(() => ngUnlock(methodToUnlock, 'Observable changes')));\r\n }\r\n}","import { HTTP_INTERCEPTORS } from \"@angular/common/http\";\r\nimport { EnvironmentProviders, makeEnvironmentProviders } from \"@angular/core\";\r\nimport { NgLockInterceptorService } from \"./ng-lock-interceptor.service\";\r\n\r\nexport function provideNgLock() {\r\n const providers: EnvironmentProviders[] = [makeEnvironmentProviders([{\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: NgLockInterceptorService,\r\n multi: true,\r\n }])];\r\n return providers;\r\n}\r\n","/*\r\n * Public API Surface of ng-lock\r\n */\r\nexport * from './lib/ng-lock.decorator';\r\nexport * from './lib/ng-lock-interceptor.service';\r\nexport * from './lib/ng-lock-token';\r\nexport * from './lib/ng-lock.module';\r\nexport * from './lib/ng-lock-rxjs';\r\nexport * from './lib/ng-lock-types';\r\nexport * from './lib/ng-lock.directive';\r\nexport * from './lib/ng-lock-utils';\r\nexport * from './lib/ng-lock-element-finder';\r\nexport * from './lib/ng-lock-provider';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}