{"version":3,"file":"nativescript-community-https-angular.mjs","sources":["../../../../src/https/angular/excluded.service.ts","../../../../src/https/angular/ns-http-xhr-backend.ts","../../../../src/https/angular/ns-https.module.ts","../../../../src/https/angular/nativescript-community-https-angular.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpRequest } from '@angular/common/http';\n\n@Injectable()\nexport class ExcludedService {\n    private readonly _urlList: string[] = [];\n\n    public static isMultipartFormRequest(request: HttpRequest<any>): boolean {\n        const headers = request.headers.get('Content-Type');\n        return headers ? headers.includes('application/x-www-form-urlencoded') : false;\n    }\n\n    public addUrl(domain: string): void {\n        this._urlList.push(domain);\n    }\n\n    public contains(needle: string): boolean {\n        return Boolean(this._urlList.filter((url) => url === needle).length);\n    }\n\n    public skipSslPinning(request: HttpRequest<any>): boolean {\n        return this.contains(request.url);\n    }\n}\n","import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { XhrFactory } from '@angular/common';\nimport { HttpErrorResponse, HttpEvent, HttpHeaders, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Observable, from, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { NSFileSystem, NsHttpBackEnd } from '@nativescript/angular';\nimport { Headers, HttpsRequestObject, HttpsRequestOptions, HttpsResponse, request as httpsRequest } from '@nativescript-community/https';\nimport { ExcludedService } from './excluded.service';\n\n/** Https request default options. */\nexport type HttpsRequestDefaultOptions = Pick<HttpsRequestOptions, 'timeout' | 'allowLargeResponse' | 'cachePolicy' | 'cookiesEnabled'> & { useLegacy?: boolean };\n\n/** Page size injection token. */\nexport const HTTPS_REQUEST_DEFAULT_OPTIONS = new InjectionToken<HttpsRequestDefaultOptions>('HTTPS_REQUEST_DEFAULT_OPTIONS');\n\n@Injectable()\nexport class NativeScriptHttpXhrBackend extends NsHttpBackEnd {\n    constructor(\n        xhrFactory: XhrFactory,\n        nsFileSystem: NSFileSystem,\n        private readonly _excludedService: ExcludedService,\n        @Optional()\n        @Inject(HTTPS_REQUEST_DEFAULT_OPTIONS)\n        private readonly _defaults?: HttpsRequestDefaultOptions\n    ) {\n        super(xhrFactory, nsFileSystem);\n    }\n\n    public handle(req: HttpRequest<any>): Observable<HttpEvent<any>> {\n        let result: Observable<HttpEvent<any>>;\n        if (this._isLocalRequest(req.url) || this._excludedService.skipSslPinning(req)) {\n            result = super.handle(req);\n        } else {\n            result = this._request(req).pipe(\n                map((response: HttpsResponse) => {\n                    if (response.statusCode < 200 || response.statusCode > 299) {\n                        throw this._mapHttpErrorResponse(response, req);\n                    }\n                    return new HttpResponse({\n                        body: response.content,\n                        headers: new HttpHeaders(response.headers),\n                        status: response.statusCode,\n                        statusText: response.reason,\n                        url: req.url\n                    });\n                }),\n                catchError((error) => throwError(() => error))\n            );\n        }\n\n        return result;\n    }\n\n    private _isLocalRequest(url: string): boolean {\n        return url.indexOf('~') === 0 || url.indexOf('/') === 0;\n    }\n\n    private _request(request: HttpRequest<any>) {\n        const method = request.method as 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD';\n        let url = request.url;\n        if (request.params) {\n            const params = request.params.toString();\n            if (params.length) {\n                const qIdx = url.indexOf('?');\n                const sep = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');\n                url += sep + params;\n            }\n        }\n        return from(\n            httpsRequest(\n                {\n                    url,\n                    method,\n                    headers: this._mapHeaders(request),\n                    params: this._mapParams(request),\n                    body: request.body,\n                    timeout: this._defaults?.timeout ?? 3 * 60,\n                    allowLargeResponse: this._defaults?.allowLargeResponse ?? true,\n                    cachePolicy: this._defaults?.cachePolicy ?? 'noCache',\n                    cookiesEnabled: this._defaults?.cookiesEnabled ?? false\n                },\n                this._defaults?.useLegacy ?? true\n            )\n        );\n    }\n\n    private _mapHeaders(request: HttpRequest<any>): Headers {\n        const headerKeys = request.headers.keys();\n        const headers = headerKeys.reduce<Headers>((accumulator, key) => {\n            const values = request.headers.getAll(key);\n            if (values !== null && values !== undefined) {\n                accumulator[key] = values.length > 1 ? values.join(' ') : values[0];\n            }\n            return accumulator;\n        }, {});\n\n        if (Object.keys(headers).length) {\n            return headers;\n        }\n\n        return {\n            'Content-Type': 'application/json',\n            Accept: 'application/json'\n        };\n    }\n\n    private _mapParams(request: HttpRequest<any>): HttpsRequestObject {\n        const paramKeys = request.params.keys();\n        const params = paramKeys.reduce<HttpsRequestObject>((accumulator, key) => {\n            const values = request.params.getAll(key);\n            if (values !== null && values !== undefined) {\n                accumulator[key] = values.length > 1 ? values : values[0];\n            }\n            return accumulator;\n        }, {});\n        return params;\n    }\n\n    private _mapHttpErrorResponse(error: HttpsResponse, request: HttpRequest<any>): HttpErrorResponse {\n        return new HttpErrorResponse({\n            error: error.content,\n            status: error.statusCode,\n            headers: new HttpHeaders(error.headers),\n            statusText: error.reason || (typeof error.content === 'string' && error.content) || String(error.statusCode),\n            url: request.url\n        });\n    }\n}\n","import { NgModule, ModuleWithProviders, Optional, Inject, InjectionToken } from '@angular/core';\nimport { HttpBackend } from '@angular/common/http';\nimport { NativeScriptHttpClientModule } from '@nativescript/angular';\nimport { HttpsSSLPinningOptions, enableSSLPinning } from '@nativescript-community/https';\nimport { HTTPS_REQUEST_DEFAULT_OPTIONS, NativeScriptHttpXhrBackend, HttpsRequestDefaultOptions } from './ns-http-xhr-backend';\nimport { ExcludedService } from './excluded.service';\n\n/** Page size injection token. */\nexport const HTTPS_SSL_PINNING_OPTIONS = new InjectionToken<HttpsSSLPinningOptions>('HTTPS_SSL_PINNING_OPTIONS');\n\n@NgModule({\n    providers: [\n        ExcludedService,\n        NativeScriptHttpXhrBackend,\n        { provide: HttpBackend, useExisting: NativeScriptHttpXhrBackend },\n        { provide: HTTPS_REQUEST_DEFAULT_OPTIONS, useValue: {} },\n        { provide: HTTPS_SSL_PINNING_OPTIONS, useValue: { host: '', certificate: '' } }\n    ],\n    imports: [NativeScriptHttpClientModule],\n    exports: [NativeScriptHttpClientModule]\n})\nexport class NativeScriptHttpsModule {\n    constructor(@Optional()@Inject(HTTPS_SSL_PINNING_OPTIONS) defaults?: HttpsSSLPinningOptions) {\n        enableSSLPinning(defaults ?? { host: '', certificate: '' });\n    }\n    /**\n     * Creates and configures a module.\n     * @param defaults Https request default options.\n     * @returns A wrapper around an NgModule that associates it with the providers.\n     */\n    static forRoot(defaults: HttpsRequestDefaultOptions & HttpsSSLPinningOptions = { host: '', certificate: '' }): ModuleWithProviders<NativeScriptHttpsModule> {\n        return {\n            ngModule: NativeScriptHttpsModule,\n            providers: [\n                { provide: HTTPS_REQUEST_DEFAULT_OPTIONS, useValue: defaults },\n                { provide: HTTPS_SSL_PINNING_OPTIONS, useValue: defaults }\n            ]\n        };\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["request","httpsRequest"],"mappings":"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"}