{"version":3,"file":"ogs-gmbh-ngx-http.mjs","sources":["../../../src/common/merge.common.ts","../../../src/common/connection.common.ts","../../../src/common/config.common.ts","../../../src/constants/headers.constant.ts","../../../src/constants/ports.constant.ts","../../../src/constants/content-types.constant.ts","../../../src/constants/protocols.constant.ts","../../../src/constants/response-types.constant.ts","../../../src/constants/observe.constant.ts","../../../src/tokens/environment.token.ts","../../../src/enums/request.enum.ts","../../../src/providers/environment.provider.ts","../../../src/public-api.ts","../../../src/ogs-gmbh-ngx-http.ts"],"sourcesContent":["import { HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { HttpHeadersOption, HttpJsonBodyOption, HttpParamsOption } from \"../types/http.type\";\nimport { merge } from \"es-toolkit\";\n\n/**\n * Merge HTTP headers from different sources\n *\n * Given HTTP headers will be merged in sequential order. If you provide HTTP headers A & B, the output would be A' & B.\n * @remarks This function will take care of the data structure. You can provide either the HTTP header instance or a record. The result will be deterministic.\n *\n * @param headers - Different HTTP headers\n * @returns Merged HTTP headers as instance\n * @category Commons\n *\n * @since 1.0.0\n * @author Simon Kovtyk\n */\nfunction mergeHttpHeaders (...headers: HttpHeadersOption[]): HttpHeaders {\n  let httpHeaderResult: HttpHeaders = new HttpHeaders();\n\n  headers.forEach((currentHeader: HttpHeadersOption): void => {\n    if (currentHeader instanceof HttpHeaders) {\n      currentHeader.keys().forEach((currentHeaderKey: string): void => {\n        /* eslint-disable-next-line @tseslint/no-non-null-assertion */\n        const currentHeaderValue: string = currentHeader.get(currentHeaderKey)!;\n\n        httpHeaderResult = httpHeaderResult.append(currentHeaderKey, currentHeaderValue);\n      });\n    } else {\n      Object.keys(currentHeader).forEach((currentHeaderKey: string): void => {\n        /* eslint-disable-next-line @tseslint/no-non-null-assertion */\n        const currentHeaderValue: string | string[] = currentHeader[ currentHeaderKey ]!;\n\n        if (Array.isArray(currentHeaderValue)) {\n          currentHeaderValue.forEach((currentHeaderValueItem: string): void => {\n            httpHeaderResult = httpHeaderResult.append(currentHeaderKey, currentHeaderValueItem);\n          });\n\n          return;\n        }\n\n        httpHeaderResult = httpHeaderResult.append(currentHeaderKey, currentHeaderValue);\n      });\n    }\n  });\n\n  return httpHeaderResult;\n}\n\n/**\n * Merge HTTP params from different sources\n *\n * Given HTTP params will be merged in sequential order. If you provide HTTP params A & B, the output would be A' & B.\n * @remarks This function will take care of the data structure. You can provide either the HTTP params instance or a record. The result will be deterministic.\n *\n * @param params - Different HTTP params\n * @returns Merged HTTP params as instance\n *\n * @since 1.0.0\n * @author Simon Kovtyk\n */\nfunction mergeHttpParams (...params: HttpParamsOption[]): HttpParams {\n  let httpParamsResult: HttpParams = new HttpParams();\n\n  params.forEach((currentParams: HttpParamsOption): void => {\n    if (currentParams instanceof HttpParams) {\n      currentParams.keys().forEach((currentParamsKey: string): void => {\n        /* eslint-disable-next-line @tseslint/no-non-null-assertion */\n        const currentParamsValue: string = currentParams.get(currentParamsKey)!;\n\n        httpParamsResult = httpParamsResult.append(currentParamsKey, currentParamsValue);\n      });\n    } else {\n      Object.keys(currentParams).forEach((currentParamsKey: string): void => {\n        /* eslint-disable-next-line @tseslint/no-non-null-assertion */\n        const currentParamsValue: string | number | boolean | ReadonlyArray<string | number | boolean> = currentParams[ currentParamsKey ]!;\n\n        if (Array.isArray(currentParamsValue)) {\n          currentParamsValue.forEach((currentParamsValueItem: string | number | boolean): void => {\n            httpParamsResult = httpParamsResult.append(currentParamsKey, currentParamsValueItem);\n          });\n        } else\n          httpParamsResult = httpParamsResult.append(currentParamsKey, currentParamsValue as string | number | boolean);\n      });\n    }\n  });\n\n  return httpParamsResult;\n}\n\n/**\n * Merge HTTP JSON bodies from different sources\n *\n * Given HTTP JSON bodies will be merged in sequential order. If you provide HTTP JSON bodies A & B, the output would be A' & B.\n *\n * @param body - Different HTTP JSON bodies\n * @returns Merged HTTP JSON body\n *\n * @since 1.0.0\n * @author Simon Kovtyk\n */\nfunction mergeHttpJsonBody (...body: HttpJsonBodyOption[]): HttpJsonBodyOption {\n  let httpBodyResult: HttpJsonBodyOption = {};\n\n  body.forEach((currentBody: HttpJsonBodyOption): void => {\n    httpBodyResult = merge(httpBodyResult, currentBody);\n  });\n\n  return httpBodyResult;\n}\n\n/**\n * Merge HTTP FormData bodies from different sources\n *\n * Given HTTP FormData bodies will be merged in sequential order. If you provide HTTP FormData bodies A & B, the output would be A' & B.\n *\n * @param body - Different HTTP FormData bodies\n * @returns Merged HTTP FormData body\n *\n * @since 1.0.0\n * @author Simon Kovtyk\n */\nfunction mergeHttpFormDataBody (...body: FormData[]): FormData {\n  const httpBodyResult: FormData = new FormData();\n\n  body.forEach((currentBody: FormData): void => {\n    currentBody.forEach((value: FormDataEntryValue, key: string): void => {\n      httpBodyResult.append(key, value);\n    });\n  });\n\n  return httpBodyResult;\n}\n\n/**\n * Merge HTTP URLSearchParam bodies from different sources\n *\n * Given HTTP URLSearchParam bodies will be merged in sequential order. If you provide HTTP URLSearchParam bodies A & B, the output would be A' & B.\n *\n * @param body - Different HTTP URLSearchParam bodies\n * @returns Merged HTTP URLSearchParam body\n *\n * @since 1.0.0\n * @author Simon Kovtyk\n */\nfunction mergeHttpUrlSearchParamsBody (...body: URLSearchParams[]): URLSearchParams {\n  const httpBodyResult: URLSearchParams = new URLSearchParams();\n\n  body.forEach((currentBody: URLSearchParams): void => {\n    currentBody.forEach((value: string, key: string): void => {\n      httpBodyResult.append(key, value);\n    });\n  });\n\n  return httpBodyResult;\n}\n\nexport {\n  mergeHttpParams,\n  mergeHttpHeaders,\n  mergeHttpJsonBody,\n  mergeHttpFormDataBody,\n  mergeHttpUrlSearchParamsBody\n};\n","import { HttpConfig } from \"../types/environment-config.type\";\n\n/**\n * Build an HTTP connection string from the given configuration\n *\n * @param httpConfig - The configuration for the HTTP connection\n * @returns HTTP connection string\n * @category Commons\n *\n * @since 1.0.0\n * @author Simon Kovtyk\n */\nexport const buildHttpConnectionString = (httpConfig: HttpConfig): string => `${ httpConfig.protocol ?? \"http\" }://${ httpConfig.host ?? \"localhost\" }${ httpConfig.port ? `:${ httpConfig.port }` : \"\" }${ httpConfig.path ?? \"\" }`;\n","import { HttpConfig } from \"../types/environment-config.type\";\n\n/**\n * Merge HTTP configurations\n *\n * @param baseHttpConfig - Base HTTP configuration\n * @param httpConfig - HTTP configuration, that will overrride the base configuration\n * @returns Merged HTTP configuration\n * @category Commons\n *\n * @since 1.0.0\n * @author Simon Kovtyk\n */\nexport const mergeHttpConfig = (baseHttpConfig: HttpConfig, httpConfig: HttpConfig): HttpConfig => ({\n  ...baseHttpConfig,\n  ...httpConfig\n});\n","/**\n * A collection of HTTP headers\n *\n * @since 1.0.0\n * @author Simon Kovtyk\n * @category Constants\n */\nexport namespace HttpHeaders {\n  /**\n   * Content-Type header\n   *\n   * @since 1.0.0\n   * @author Simon Kovtyk\n   * @category Constants\n   */\n  export const CONTENT_TYPE: string = \"Content-Type\";\n}\n","/**\n * Common HTTP ports\n *\n * @since 1.0.0\n * @author Simon Kovtyk\n * @category Constants\n */\nexport namespace HttpPorts {\n  /**\n   * Default HTTP port\n   *\n   * @since 1.0.0\n   * @author Simon Kovtyk\n   * @category Constants\n   */\n  export const HTTP_PORT: number = 80;\n  /**\n   * Default HTTPS port\n   *\n   * @since 1.0.0\n   * @author Simon Kovtyk\n   * @category Constants\n   */\n  export const HTTPS_PORT: number = 443;\n  /**\n   * Default alternative HTTP port\n   * @remarks Use it for example, if default HTTP port is already in use.\n   *\n   * @since 1.0.0\n   * @author Simon Kovtyk\n   * @category Constants\n   */\n  export const HTTP_PORT_ALTERNATE: number = 7104;\n  /**\n   * Default alternative HTTPS port\n   * @remarks Use it for example, if default HTTPS port is already in use.\n   *\n   * @since 1.0.0\n   * @author Simon Kovtyk\n   * @category Constants\n   */\n  export const HTTPS_PORT_ALTERNATE: number = 7102;\n}\n","/**\n * A collection of HTTP content-types sorted by type\n *\n * @since 1.0.0\n * @author Simon Kovtyk\n * @category Constants\n */\nexport namespace HttpContentTypes {\n  /**\n   * A collection of application/* content-types\n   * @category Constants\n   *\n   * @since 1.0.0\n   * @author Simon Kovtyk\n   */\n  export namespace Application {\n    /**\n     * Content-type: application/x-www-form-urlencoded\n     *\n     * @since 1.0.0\n     * @author Simon Kovtyk\n     */\n    export const X_WWW_FORM_URLENCODED: string = \"application/x-www-form-urlencoded\";\n  }\n}\n","/**\n * A collection of HTTP protocols prefixes\n *\n * @since 1.0.0\n * @author Simon Kovtyk\n * @category Constants\n */\nexport namespace HTTP_PROTOCOLS {\n  /**\n   * HTTPS prefix\n   *\n   * @since 1.0.0\n   * @author Simon Kovtyk\n   * @category Constants\n   */\n  export const HTTPS: string = \"https\";\n  /**\n   * HTTP prefix\n   *\n   * @since 1.0.0\n   * @author Simon Kovtyk\n   * @category Constants\n   */\n  export const HTTP: string = \"http\";\n}\n","/**\n * A collection of HTTP response types for Angular HttpClient\n *\n * @see https://v18.angular.dev/api/common/http/HttpRequest#responseType\n * @since 1.0.0\n * @author Simon Kovtyk\n * @category Constants\n */\nexport namespace HttpResponseTypes {\n  /**\n   * JSON Response Type\n   *\n   * Expects to get a JSON\n   *\n   * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON\n   * @since 1.0.0\n   * @author Simon Kovtyk\n   */\n  /* eslint-disable-next-line @tseslint/no-shadow */\n  export const JSON: string = \"json\";\n  /**\n   * ArrayBuffer Response Type\n   *\n   * Expects to get a ArrayBuffer\n   *\n   * @see https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer\n   * @since 1.0.0\n   * @author Simon Kovtyk\n   */\n  export const ARRAYBUFFER: string = \"arraybuffer\";\n  /**\n   * Blob Response Type\n   *\n   * Expects to get a ArrayBuffe\n   *\n   * @see https://developer.mozilla.org/en-US/docs/Web/API/Blob\n   * @since 1.0.0\n   * @author Simon Kovtyk\n   */\n  export const BLOB: string = \"blob\";\n  /**\n   * Text Response Type\n   *\n   * Expects to get a ArrayBuffe\n   *\n   * @since 1.0.0\n   * @author Simon Kovtyk\n   */\n  export const TEXT: string = \"text\";\n}\n","/**\n * A collection of possible HTTP observe options for Angular HttpClient\n *\n * @see https://v21.angular.dev/api/common/http/HttpClient\n * @since 1.0.0\n * @author Simon Kovtyk\n * @category Constants\n */\nexport namespace HttpObserve {\n  /**\n   * Observe the HTTP body\n   *\n   * @since 1.0.0\n   * @author Simon Kovtyk\n   * @category Constants\n   */\n  export const BODY: string = \"body\";\n  /**\n   * Observe the HTTP events\n   *\n   * @since 1.0.0\n   * @author Simon Kovtyk\n   * @category Constants\n   */\n  export const EVENTS: string = \"events\";\n  /**\n   * Observe the HTTP response\n   *\n   * @since 1.0.0\n   * @author Simon Kovtyk\n   * @category Constants\n   */\n  export const RESPONSE: string = \"response\";\n}\n","import { InjectionToken } from \"@angular/core\";\n\n/**\n * InjectionToken for which the HTTP-Environment will be provided\n * @readonly\n * @category Dependency Injection\n *\n * @since 1.0.0\n * @author Simon Kovtyk\n */\nexport const HTTP_ENVIRONMENT_TOKEN: InjectionToken<string> = new InjectionToken<string>(\"http-environment-token\");\n","/**\n * Enumeration of HTTP request status\n *\n * @since 1.0.0\n * @author Simon Kovtyk\n * @category Enum\n */\nexport enum HttpRequestStatus {\n  /**\n   * Status for pending HTTP requests\n   */\n  PENDING = \"PENDING\",\n  /**\n   * Status for success in HTTP requests\n   */\n  SUCCESS = \"SUCCESS\",\n  /**\n   * Status for error in HTTP requests\n   */\n  ERROR = \"ERROR\"\n}\n","import { FactoryProvider } from \"@angular/core\";\nimport { HTTP_ENVIRONMENT_TOKEN } from \"../tokens/environment.token\";\nimport { HttpConfig } from \"../types/environment-config.type\";\nimport { buildHttpConnectionString } from \"../public-api\";\n\n/**\n * Provide an HTTP configuration by InjectionToken\n *\n * Internally, it uses the `buildHttpConnectionString` function to build the HTTP connection string based on the provided configuration.\n *\n * @param httpConfig - The HTTP configuration\n * @returns A FactoryProvider that simply builds the HTTP configurtion\n * @category Dependency Injection\n *\n * @since 1.0.0\n * @author Simon Kovtyk\n */\nexport const provideHttpConfig = (httpConfig: HttpConfig): FactoryProvider => ({\n  provide: HTTP_ENVIRONMENT_TOKEN,\n  useFactory: (): string => buildHttpConnectionString(httpConfig),\n  multi: false\n});\n","/**\n * Export unit of this package\n */\nexport * from \"./common/merge.common\";\nexport * from \"./common/connection.common\";\nexport * from \"./common/config.common\";\nexport * from \"./constants/headers.constant\";\nexport * from \"./constants/ports.constant\";\nexport * from \"./constants/content-types.constant\";\nexport * from \"./constants/protocols.constant\";\nexport * from \"./constants/response-types.constant\";\nexport * from \"./constants/observe.constant\";\nexport * from \"./tokens/environment.token\";\nexport * from \"./types/environment-config.type\";\nexport * from \"./types/http.type\";\nexport * from \"./enums/request.enum\";\nexport * from \"./providers/environment.provider\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["HttpHeaders"],"mappings":"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"}