UNPKG

45.9 kBSource Map (JSON)View Raw
1{"version":3,"file":"abp-ng2-module.mjs","sources":["../../../projects/abp-ng2-module/src/lib/abp.module.ts","../../../projects/abp-ng2-module/src/lib/services/auth/token.service.ts","../../../projects/abp-ng2-module/src/lib/services/auth/permission-checker.service.ts","../../../projects/abp-ng2-module/src/lib/services/features/feature-checker.service.ts","../../../projects/abp-ng2-module/src/lib/services/localization/localization.service.ts","../../../projects/abp-ng2-module/src/lib/services/log/log.service.ts","../../../projects/abp-ng2-module/src/lib/services/message/message.service.ts","../../../projects/abp-ng2-module/src/lib/services/multi-tenancy/abp-multi-tenancy.service.ts","../../../projects/abp-ng2-module/src/lib/services/notify/notify.service.ts","../../../projects/abp-ng2-module/src/lib/services/session/abp-session.service.ts","../../../projects/abp-ng2-module/src/lib/services/settings/setting.service.ts","../../../projects/abp-ng2-module/src/lib/services/utils/utils.service.ts","../../../projects/abp-ng2-module/src/lib/services/abp-user-configuration.service.ts","../../../projects/abp-ng2-module/src/lib/interceptors/refresh-token.service.ts","../../../projects/abp-ng2-module/src/lib/interceptors/abp-http-configuration.service.ts","../../../projects/abp-ng2-module/src/lib/interceptors/abpHttpInterceptor.ts","../../../projects/abp-ng2-module/src/public-api.ts","../../../projects/abp-ng2-module/src/abp-ng2-module.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n ],\r\n exports: []\r\n})\r\nexport class AbpModule { }\r\n","///<reference path=\"../../../../../../node_modules/abp-web-resources/Abp/Framework/scripts/abp.d.ts\"/>\r\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TokenService {\r\n\r\n getToken(): string {\r\n return abp.auth.getToken();\r\n }\r\n\r\n getTokenCookieName(): string {\r\n return abp.auth.tokenCookieName;\r\n }\r\n\r\n clearToken(): void {\r\n abp.auth.clearToken();\r\n }\r\n\r\n setToken(authToken: string, expireDate?: Date): void {\r\n abp.auth.setToken(authToken, expireDate);\r\n }\r\n\r\n //refresh token\r\n getRefreshToken(): string {\r\n return abp.auth.getRefreshToken();\r\n }\r\n\r\n getRefreshTokenCookieName(): string {\r\n return abp.auth.refreshTokenCookieName;\r\n }\r\n\r\n clearRefreshToken(): void {\r\n abp.auth.clearRefreshToken();\r\n }\r\n\r\n setRefreshToken(refreshToken: string, expireDate?: Date): void {\r\n abp.auth.setRefreshToken(refreshToken, expireDate);\r\n }\r\n}","///<reference path=\"../../../../../../node_modules/abp-web-resources/Abp/Framework/scripts/abp.d.ts\"/>\r\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PermissionCheckerService {\r\n\r\n isGranted(permissionName: string): boolean {\r\n return abp.auth.isGranted(permissionName);\r\n }\r\n\r\n}","///<reference path=\"../../../../../../node_modules/abp-web-resources/Abp/Framework/scripts/abp.d.ts\"/>\r\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FeatureCheckerService {\r\n\r\n get(featureName: string): abp.features.IFeature {\r\n return abp.features.get(featureName);\r\n }\r\n\r\n getValue(featureName: string): string {\r\n return abp.features.getValue(featureName);\r\n }\r\n\r\n isEnabled(featureName: string): boolean {\r\n return abp.features.isEnabled(featureName);\r\n }\r\n\r\n}","///<reference path=\"../../../../../../node_modules/abp-web-resources/Abp/Framework/scripts/abp.d.ts\"/>\r\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalizationService {\r\n\r\n get languages(): abp.localization.ILanguageInfo[] {\r\n return abp.localization.languages;\r\n }\r\n\r\n get currentLanguage(): abp.localization.ILanguageInfo {\r\n return abp.localization.currentLanguage;\r\n }\r\n\r\n localize(key: string, sourceName: string): string {\r\n return abp.localization.localize(key, sourceName);\r\n }\r\n \r\n getSource(sourceName: string): (...key: string[]) => string {\r\n return abp.localization.getSource(sourceName);\r\n }\r\n\r\n}","///<reference path=\"../../../../../../node_modules/abp-web-resources/Abp/Framework/scripts/abp.d.ts\"/>\r\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LogService {\r\n\r\n debug(logObject?: any): void {\r\n abp.log.debug(logObject);\r\n }\r\n\r\n info(logObject?: any): void {\r\n abp.log.info(logObject);\r\n }\r\n\r\n warn(logObject?: any): void {\r\n abp.log.warn(logObject);\r\n }\r\n\r\n error(logObject?: any): void {\r\n abp.log.error(logObject);\r\n }\r\n\r\n fatal(logObject?: any): void {\r\n abp.log.fatal(logObject);\r\n }\r\n\r\n}","///<reference path=\"../../../../../../node_modules/abp-web-resources/Abp/Framework/scripts/abp.d.ts\"/>\r\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MessageService {\r\n\r\n info(message: string, title?: string, options?: any): any {\r\n return abp.message.info(message, title, options);\r\n }\r\n\r\n success(message: string, title?: string, options?: any): any {\r\n return abp.message.success(message, title, options);\r\n }\r\n\r\n warn(message: string, title?: string, options?: any): any {\r\n return abp.message.warn(message, title, options);\r\n }\r\n\r\n error(message: string, title?: string, options?: any): any {\r\n return abp.message.error(message, title, options);\r\n }\r\n\r\n confirm(message: string, title?: string, callback?: (result: boolean, info?: any) => void, options?: any): any {\r\n return abp.message.confirm(message, title, callback, options);\r\n }\r\n\r\n}","///<reference path=\"../../../../../../node_modules/abp-web-resources/Abp/Framework/scripts/abp.d.ts\"/>\r\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AbpMultiTenancyService {\r\n\r\n get isEnabled(): boolean {\r\n return abp.multiTenancy.isEnabled;\r\n }\r\n\r\n}","///<reference path=\"../../../../../../node_modules/abp-web-resources/Abp/Framework/scripts/abp.d.ts\"/>\r\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotifyService {\r\n\r\n info(message: string, title?: string, options?: any): void {\r\n abp.notify.info(message, title, options);\r\n }\r\n\r\n success(message: string, title?: string, options?: any): void {\r\n abp.notify.success(message, title, options);\r\n }\r\n\r\n warn(message: string, title?: string, options?: any): void {\r\n abp.notify.warn(message, title, options);\r\n }\r\n\r\n error(message: string, title?: string, options?: any): void {\r\n abp.notify.error(message, title, options);\r\n }\r\n\r\n}","///<reference path=\"../../../../../../node_modules/abp-web-resources/Abp/Framework/scripts/abp.d.ts\"/>\r\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AbpSessionService {\r\n\r\n get userId(): number | undefined {\r\n return abp.session.userId;\r\n }\r\n\r\n get tenantId(): number | undefined {\r\n return abp.session.tenantId;\r\n }\r\n\r\n get impersonatorUserId(): number | undefined {\r\n return abp.session.impersonatorUserId;\r\n }\r\n\r\n get impersonatorTenantId(): number | undefined {\r\n return abp.session.impersonatorTenantId;\r\n }\r\n\r\n get multiTenancySide(): abp.multiTenancy.sides {\r\n return abp.session.multiTenancySide;\r\n }\r\n\r\n}","///<reference path=\"../../../../../../node_modules/abp-web-resources/Abp/Framework/scripts/abp.d.ts\"/>\r\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SettingService {\r\n\r\n get(name: string): string {\r\n return abp.setting.get(name);\r\n }\r\n\r\n getBoolean(name: string): boolean {\r\n return abp.setting.getBoolean(name);\r\n }\r\n \r\n getInt(name: string): number {\r\n return abp.setting.getInt(name);\r\n }\r\n\r\n}","///<reference path=\"../../../../../../node_modules/abp-web-resources/Abp/Framework/scripts/abp.d.ts\"/>\r\n\r\nimport {Injectable} from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilsService {\r\n getCookieValue(key: string): string {\r\n return abp.utils.getCookieValue(key);\r\n }\r\n\r\n setCookieValue(key: string, value: string, expireDate?: Date, path?: string, domain?: string, attributes?: any): void {\r\n abp.utils.setCookieValue(key, value, expireDate, path, domain, attributes);\r\n }\r\n\r\n deleteCookie(key: string, path?: string): void {\r\n abp.utils.deleteCookie(key, path);\r\n }\r\n}\r\n","///<reference path=\"../../../../../node_modules/abp-web-resources/Abp/Framework/scripts/abp.d.ts\"/>\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\ndeclare var jQuery: any;\r\ndeclare var abp: any;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AbpUserConfigurationService {\r\n\r\n constructor(private _http: HttpClient) {\r\n \r\n }\r\n\r\n initialize(): void {\r\n this._http.get('/AbpUserConfiguration/GetAll')\r\n .subscribe(result => {\r\n jQuery.extend(true, abp, JSON.parse(JSON.stringify(result)));\r\n });\r\n }\r\n\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport abstract class RefreshTokenService {\r\n /**\r\n * Try to authenticate with refresh token and return if auth succeed\r\n */\r\n abstract tryAuthWithRefreshToken(): Observable<boolean>;\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { MessageService } from '../services/message/message.service';\r\nimport { LogService } from '../services/log/log.service';\r\nimport { HttpResponse } from '@angular/common/http';\r\nimport { IErrorInfo, IAjaxResponse } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AbpHttpConfigurationService {\r\n\r\n constructor(\r\n private _messageService: MessageService,\r\n private _logService: LogService) {\r\n }\r\n\r\n defaultError = <IErrorInfo>{\r\n message: 'An error has occurred!',\r\n details: 'Error details were not sent by server.'\r\n };\r\n\r\n defaultError401 = <IErrorInfo>{\r\n message: 'You are not authenticated!',\r\n details: 'You should be authenticated (sign in) in order to perform this operation.'\r\n };\r\n\r\n defaultError403 = <IErrorInfo>{\r\n message: 'You are not authorized!',\r\n details: 'You are not allowed to perform this operation.'\r\n };\r\n\r\n defaultError404 = <IErrorInfo>{\r\n message: 'Resource not found!',\r\n details: 'The resource requested could not be found on the server.'\r\n };\r\n\r\n logError(error: IErrorInfo): void {\r\n this._logService.error(error);\r\n }\r\n\r\n showError(error: IErrorInfo): any {\r\n if (error.details) {\r\n return this._messageService.error(error.details, error.message || this.defaultError.message);\r\n } else {\r\n return this._messageService.error(error.message || this.defaultError.message);\r\n }\r\n }\r\n\r\n handleTargetUrl(targetUrl: string): void {\r\n if (!targetUrl) {\r\n location.href = '/';\r\n } else {\r\n location.href = targetUrl;\r\n }\r\n }\r\n\r\n handleUnAuthorizedRequest(messagePromise: any, targetUrl?: string) {\r\n const self = this;\r\n\r\n if (messagePromise) {\r\n messagePromise.done(() => {\r\n this.handleTargetUrl(targetUrl || '/');\r\n });\r\n } else {\r\n self.handleTargetUrl(targetUrl || '/');\r\n }\r\n }\r\n\r\n handleNonAbpErrorResponse(response: HttpResponse<any>) {\r\n const self = this;\r\n\r\n switch (response.status) {\r\n case 401:\r\n self.handleUnAuthorizedRequest(\r\n self.showError(self.defaultError401),\r\n '/'\r\n );\r\n break;\r\n case 403:\r\n self.showError(self.defaultError403);\r\n break;\r\n case 404:\r\n self.showError(self.defaultError404);\r\n break;\r\n default:\r\n self.showError(self.defaultError);\r\n break;\r\n }\r\n }\r\n\r\n handleAbpResponse(response: HttpResponse<any>, ajaxResponse: IAjaxResponse): HttpResponse<any> {\r\n var newResponse: HttpResponse<any>;\r\n\r\n if (ajaxResponse.success) {\r\n\r\n newResponse = response.clone({\r\n body: ajaxResponse.result\r\n });\r\n\r\n if (ajaxResponse.targetUrl) {\r\n this.handleTargetUrl(ajaxResponse.targetUrl);;\r\n }\r\n } else {\r\n\r\n newResponse = response.clone({\r\n body: ajaxResponse.result\r\n });\r\n\r\n if (!ajaxResponse.error) {\r\n ajaxResponse.error = this.defaultError;\r\n }\r\n\r\n this.logError(ajaxResponse.error);\r\n this.showError(ajaxResponse.error);\r\n\r\n if (response.status === 401) {\r\n this.handleUnAuthorizedRequest(null, ajaxResponse.targetUrl);\r\n }\r\n }\r\n\r\n return newResponse;\r\n }\r\n\r\n getAbpAjaxResponseOrNull(response: HttpResponse<any>): IAjaxResponse | null {\r\n if (!response || !response.headers) {\r\n return null;\r\n }\r\n\r\n var contentType = response.headers.get('Content-Type');\r\n if (!contentType) {\r\n this._logService.warn('Content-Type is not sent!');\r\n return null;\r\n }\r\n\r\n if (contentType.indexOf(\"application/json\") < 0) {\r\n this._logService.warn('Content-Type is not application/json: ' + contentType);\r\n return null;\r\n }\r\n\r\n var responseObj = JSON.parse(JSON.stringify(response.body));\r\n if (!responseObj.__abp) {\r\n return null;\r\n }\r\n\r\n return responseObj as IAjaxResponse;\r\n }\r\n\r\n handleResponse(response: HttpResponse<any>): HttpResponse<any> {\r\n var ajaxResponse = this.getAbpAjaxResponseOrNull(response);\r\n if (ajaxResponse == null) {\r\n return response;\r\n }\r\n\r\n return this.handleAbpResponse(response, ajaxResponse);\r\n }\r\n\r\n blobToText(blob: any): Observable<string> {\r\n return new Observable<string>((observer: any) => {\r\n if (!blob) {\r\n observer.next(\"\");\r\n observer.complete();\r\n } else {\r\n let reader = new FileReader();\r\n reader.onload = function () {\r\n observer.next(this.result);\r\n observer.complete();\r\n }\r\n reader.readAsText(blob);\r\n }\r\n });\r\n }\r\n}","import { Injectable, Injector } from '@angular/core';\r\nimport { Observable, of, BehaviorSubject } from 'rxjs';\r\nimport { LogService } from '../services/log/log.service';\r\nimport { TokenService } from '../services/auth/token.service';\r\nimport { UtilsService } from '../services/utils/utils.service';\r\nimport { HttpInterceptor, HttpHandler, HttpRequest, HttpEvent, HttpResponse, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { switchMap, filter, take, catchError, tap, map } from 'rxjs/operators';\r\nimport { throwError } from 'rxjs';\r\nimport { AbpHttpConfigurationService } from './abp-http-configuration.service'\r\nimport { RefreshTokenService } from './refresh-token.service'\r\ndeclare const abp: any;\r\n\r\n@Injectable()\r\nexport class AbpHttpInterceptor implements HttpInterceptor {\r\n\r\n protected configuration: AbpHttpConfigurationService;\r\n private _tokenService: TokenService = new TokenService();\r\n private _utilsService: UtilsService = new UtilsService();\r\n private _logService: LogService = new LogService();\r\n\r\n constructor(configuration: AbpHttpConfigurationService,\r\n private _injector: Injector) {\r\n this.configuration = configuration;\r\n }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n var modifiedRequest = this.normalizeRequestHeaders(request);\r\n return next.handle(modifiedRequest)\r\n .pipe(\r\n catchError(error => {\r\n if (error instanceof HttpErrorResponse && error.status === 401) {\r\n return this.tryAuthWithRefreshToken(request, next, error);\r\n } else {\r\n return this.handleErrorResponse(error);\r\n }\r\n }),\r\n switchMap((event) => {\r\n return this.handleSuccessResponse(event);\r\n })\r\n );\r\n }\r\n\r\n protected tryGetRefreshTokenService(): Observable<boolean> {\r\n var _refreshTokenService = this._injector.get(RefreshTokenService, null);\r\n\r\n if (_refreshTokenService) {\r\n return _refreshTokenService.tryAuthWithRefreshToken();\r\n }\r\n return of(false);\r\n }\r\n\r\n private isRefreshing = false;\r\n private refreshTokenSubject: BehaviorSubject<any> = new BehaviorSubject<any>(null);\r\n\r\n private tryAuthWithRefreshToken(request: HttpRequest<any>, next: HttpHandler, error: any) {\r\n if (!this.isRefreshing) {\r\n this.isRefreshing = true;\r\n this.refreshTokenSubject.next(null);\r\n\r\n return this.tryGetRefreshTokenService().pipe(\r\n switchMap((authResult: boolean) => {\r\n this.isRefreshing = false;\r\n if (authResult) {\r\n this.refreshTokenSubject.next(authResult);\r\n let modifiedRequest = this.normalizeRequestHeaders(request);\r\n return next.handle(modifiedRequest);\r\n } else {\r\n return this.handleErrorResponse(error);\r\n }\r\n }));\r\n } else {\r\n return this.refreshTokenSubject.pipe(\r\n filter(authResult => authResult != null),\r\n take(1),\r\n switchMap(authResult => {\r\n let modifiedRequest = this.normalizeRequestHeaders(request);\r\n return next.handle(modifiedRequest);\r\n }));\r\n }\r\n }\r\n\r\n protected normalizeRequestHeaders(request: HttpRequest<any>): HttpRequest<any> {\r\n var modifiedHeaders = new HttpHeaders();\r\n modifiedHeaders = request.headers.set(\"Pragma\", \"no-cache\")\r\n .set(\"Cache-Control\", \"no-cache\")\r\n .set(\"Expires\", \"Sat, 01 Jan 2000 00:00:00 GMT\");\r\n\r\n modifiedHeaders = this.addXRequestedWithHeader(modifiedHeaders);\r\n modifiedHeaders = this.addAuthorizationHeaders(modifiedHeaders);\r\n modifiedHeaders = this.addAspNetCoreCultureHeader(modifiedHeaders);\r\n modifiedHeaders = this.addAcceptLanguageHeader(modifiedHeaders);\r\n modifiedHeaders = this.addTenantIdHeader(modifiedHeaders);\r\n\r\n return request.clone({\r\n headers: modifiedHeaders\r\n });\r\n }\r\n\r\n protected addXRequestedWithHeader(headers: HttpHeaders): HttpHeaders {\r\n if (headers) {\r\n headers = headers.set('X-Requested-With', 'XMLHttpRequest');\r\n }\r\n\r\n return headers;\r\n }\r\n\r\n protected addAspNetCoreCultureHeader(headers: HttpHeaders): HttpHeaders {\r\n let cookieLangValue = this._utilsService.getCookieValue(\"Abp.Localization.CultureName\");\r\n if (cookieLangValue && headers && !headers.has('.AspNetCore.Culture')) {\r\n headers = headers.set('.AspNetCore.Culture', cookieLangValue);\r\n }\r\n\r\n return headers;\r\n }\r\n\r\n protected addAcceptLanguageHeader(headers: HttpHeaders): HttpHeaders {\r\n let cookieLangValue = this._utilsService.getCookieValue(\"Abp.Localization.CultureName\");\r\n if (cookieLangValue && headers && !headers.has('Accept-Language')) {\r\n headers = headers.set('Accept-Language', cookieLangValue);\r\n }\r\n\r\n return headers;\r\n }\r\n\r\n protected addTenantIdHeader(headers: HttpHeaders): HttpHeaders {\r\n let cookieTenantIdValue = this._utilsService.getCookieValue(abp.multiTenancy.tenantIdCookieName);\r\n if (cookieTenantIdValue && headers && !headers.has(abp.multiTenancy.tenantIdCookieName)) {\r\n headers = headers.set(abp.multiTenancy.tenantIdCookieName, cookieTenantIdValue);\r\n }\r\n\r\n return headers;\r\n }\r\n\r\n protected addAuthorizationHeaders(headers: HttpHeaders): HttpHeaders {\r\n let authorizationHeaders = headers ? headers.getAll('Authorization') : null;\r\n if (!authorizationHeaders) {\r\n authorizationHeaders = [];\r\n }\r\n\r\n if (!this.itemExists(authorizationHeaders, (item: string) => item.indexOf('Bearer ') == 0)) {\r\n let token = this._tokenService.getToken();\r\n if (headers && token) {\r\n headers = headers.set('Authorization', 'Bearer ' + token);\r\n }\r\n }\r\n\r\n return headers;\r\n }\r\n\r\n protected handleSuccessResponse(event: HttpEvent<any>): Observable<HttpEvent<any>> {\r\n var self = this;\r\n\r\n if (event instanceof HttpResponse) {\r\n if (event.body instanceof Blob && event.body.type && event.body.type.indexOf(\"application/json\") >= 0) {\r\n return self.configuration.blobToText(event.body).pipe(\r\n map(\r\n json => {\r\n const responseBody = json == \"null\" ? {} : JSON.parse(json);\r\n\r\n var modifiedResponse = self.configuration.handleResponse(event.clone({\r\n body: responseBody\r\n }));\r\n\r\n return modifiedResponse.clone({\r\n body: new Blob([JSON.stringify(modifiedResponse.body)], { type: 'application/json' })\r\n });\r\n })\r\n );\r\n }\r\n }\r\n return of(event);\r\n }\r\n\r\n protected handleErrorResponse(error: any): Observable<never> {\r\n if (!(error.error instanceof Blob)) {\r\n return throwError(error);\r\n }\r\n\r\n return this.configuration.blobToText(error.error).pipe(\r\n switchMap((json) => {\r\n const errorBody = (json == \"\" || json == \"null\") ? {} : JSON.parse(json);\r\n const errorResponse = new HttpResponse({\r\n headers: error.headers,\r\n status: error.status,\r\n body: errorBody\r\n });\r\n\r\n var ajaxResponse = this.configuration.getAbpAjaxResponseOrNull(errorResponse);\r\n\r\n if (ajaxResponse != null) {\r\n this.configuration.handleAbpResponse(errorResponse, ajaxResponse);\r\n } else {\r\n this.configuration.handleNonAbpErrorResponse(errorResponse);\r\n }\r\n\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n\r\n private itemExists<T>(items: T[], predicate: (item: T) => boolean): boolean {\r\n for (let i = 0; i < items.length; i++) {\r\n if (predicate(items[i])) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","/*\r\n * Public API Surface of abp-ng2-module\r\n */\r\n\r\nexport * from './lib/abp.module';\r\nexport * from './lib/services/';\r\nexport * from './lib/interceptors/';\r\nexport * from './lib/models/';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MessageService","i2.LogService","i1.AbpHttpConfigurationService"],"mappings":"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"}
\No newline at end of file