@experteam-mx/ngx-services 18.2.0 → 18.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/esm2022/lib/apis/api-companies.service.mjs +35 -24
  2. package/esm2022/lib/apis/api-invoices.service.mjs +74 -0
  3. package/esm2022/lib/apis/api-reports.service.mjs +43 -0
  4. package/esm2022/lib/apis/api-security.service.mjs +66 -2
  5. package/esm2022/lib/apis/api-shipments.service.mjs +43 -0
  6. package/esm2022/lib/apis/models/api-companies.interfaces.mjs +1 -1
  7. package/esm2022/lib/apis/models/api-companies.types.mjs +1 -1
  8. package/esm2022/lib/apis/models/api-invoices.interfaces.mjs +2 -0
  9. package/esm2022/lib/apis/models/api-invoices.types.mjs +2 -0
  10. package/esm2022/lib/apis/models/api-reports.interfaces.mjs +2 -0
  11. package/esm2022/lib/apis/models/api-reports.types.mjs +2 -0
  12. package/esm2022/lib/apis/models/api-security.interfaces.mjs +1 -1
  13. package/esm2022/lib/apis/models/api-security.types.mjs +1 -1
  14. package/esm2022/lib/apis/models/api-shipments.types.mjs +2 -0
  15. package/esm2022/lib/apis/models/api.models.mjs +1 -1
  16. package/esm2022/lib/cypher/crypto.service.mjs +4 -3
  17. package/esm2022/lib/helpers/http.mjs +4 -4
  18. package/esm2022/lib/interceptors/api-headers.interceptor.mjs +15 -11
  19. package/esm2022/lib/interceptors/api-token.interceptor.mjs +8 -7
  20. package/esm2022/lib/interceptors/http-caching.interceptor.mjs +15 -4
  21. package/esm2022/lib/ngx-services.models.mjs +1 -1
  22. package/esm2022/public-api.mjs +9 -2
  23. package/fesm2022/experteam-mx-ngx-services.mjs +289 -49
  24. package/fesm2022/experteam-mx-ngx-services.mjs.map +1 -1
  25. package/lib/apis/api-companies.service.d.ts +46 -39
  26. package/lib/apis/api-invoices.service.d.ts +48 -0
  27. package/lib/apis/api-reports.service.d.ts +26 -0
  28. package/lib/apis/api-security.service.d.ts +45 -1
  29. package/lib/apis/api-shipments.service.d.ts +26 -0
  30. package/lib/apis/models/api-companies.interfaces.d.ts +6 -193
  31. package/lib/apis/models/api-companies.types.d.ts +30 -22
  32. package/lib/apis/models/api-invoices.interfaces.d.ts +139 -0
  33. package/lib/apis/models/api-invoices.types.d.ts +44 -0
  34. package/lib/apis/models/api-reports.interfaces.d.ts +47 -0
  35. package/lib/apis/models/api-reports.types.d.ts +6 -0
  36. package/lib/apis/models/api-security.interfaces.d.ts +18 -7
  37. package/lib/apis/models/api-security.types.d.ts +27 -4
  38. package/lib/apis/models/api-shipments.types.d.ts +32 -0
  39. package/lib/apis/models/api.models.d.ts +5 -0
  40. package/lib/interceptors/api-headers.interceptor.d.ts +6 -5
  41. package/lib/interceptors/api-token.interceptor.d.ts +5 -5
  42. package/lib/interceptors/http-caching.interceptor.d.ts +8 -0
  43. package/lib/ngx-services.models.d.ts +6 -3
  44. package/package.json +9 -1
  45. package/public-api.d.ts +8 -1
@@ -1 +1 @@
1
- {"version":3,"file":"experteam-mx-ngx-services.mjs","sources":["../../../../projects/experteam-mx/ngx-services/src/lib/ngx-services.module.ts","../../../../projects/experteam-mx/ngx-services/src/lib/helpers/http.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-companies.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-security.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/cypher/crypto.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/interceptors/api-headers.interceptor.ts","../../../../projects/experteam-mx/ngx-services/src/lib/interceptors/api-token.interceptor.ts","../../../../projects/experteam-mx/ngx-services/src/lib/interceptors/http-caching.interceptor.ts","../../../../projects/experteam-mx/ngx-services/src/public-api.ts","../../../../projects/experteam-mx/ngx-services/src/experteam-mx-ngx-services.ts"],"sourcesContent":["import { ModuleWithProviders, NgModule } from '@angular/core'\r\nimport { Environment } from './ngx-services.models'\r\nimport { provideHttpClient } from '@angular/common/http'\r\n\r\n@NgModule({\r\n providers: [provideHttpClient()]\r\n})\r\nexport class NgxServicesModule {\r\n /**\r\n * Returns a module with providers for the NgxServicesModule.\r\n *\r\n * @param {Environment} environment - The environment configuration object.\r\n *\r\n * @return {ModuleWithProviders<NgxServicesModule>} The module with providers for the NgxServicesModule.\r\n */\r\n public static forRoot (environment: Environment): ModuleWithProviders<NgxServicesModule> {\r\n return {\r\n ngModule: NgxServicesModule,\r\n providers: [\r\n {\r\n provide: 'env',\r\n useValue: environment\r\n }\r\n ]\r\n }\r\n }\r\n}\r\n","import { HttpHeaders, HttpParams } from '@angular/common/http'\r\nimport { QueryParams } from '../apis/models/api.models'\r\n\r\n/**\r\n * Convert an object of key-value pairs into a URL query string.\r\n *\r\n * @param {Object} params - The key-value pairs to converted into a query string.\r\n *\r\n * @return {string} - The generated query string.\r\n */\r\nexport const queryString = (params: QueryParams): string => {\r\n let queryElements: string[] = []\r\n\r\n Object.entries(params).forEach(([key, value]) => {\r\n if (Array.isArray(value)) {\r\n const arrayQuery = value\r\n .map((item) => `${encodeURIComponent(key)}=${encodeURIComponent(item as string | number | boolean)}`)\r\n .join('&')\r\n\r\n queryElements.push(arrayQuery)\r\n } else {\r\n const encodedQuery = `${encodeURIComponent(key)}=${encodeURIComponent(value as string | number | boolean)}`\r\n\r\n queryElements.push(encodedQuery)\r\n }\r\n })\r\n\r\n const queryString = queryElements.join('&')\r\n\r\n return queryString.length ? `?${queryString}` : ''\r\n}\r\n\r\n/**\r\n * Creates an instance of HttpParams using the provided params object.\r\n *\r\n * @param {Object} params - The object containing the params to the HttpParams constructor.\r\n *\r\n * @returns {HttpParams} - An instance of HttpParams created from the params object.\r\n */\r\nexport const httpParams = (\r\n params: QueryParams\r\n): HttpParams => new HttpParams({\r\n fromObject: params\r\n})\r\n\r\n/**\r\n * Returns the headers for generating PDF files.\r\n *\r\n * @param {string} format - The format of the headers, 'object' or 'http_header'.\r\n *\r\n * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating PDF files.\r\n */\r\nexport const pdfHeaders = (format: 'object' | 'http_header' = 'object'): HttpHeaders | { [header: string]: string | string[] } => {\r\n const headers = {\r\n 'Accept': 'application/pdf'\r\n }\r\n\r\n return format === 'object'\r\n ? headers\r\n : new HttpHeaders(headers)\r\n}\r\n\r\n/**\r\n * Returns the headers for generating XML files.\r\n *\r\n * @param {string} format - The format of the headers, 'object' or 'http_header'.\r\n *\r\n * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating XML files.\r\n */\r\nexport const xmlHeaders = (format: 'object' | 'http_header' = 'object'): HttpHeaders | { [header: string]: string | string[] } => {\r\n const headers = {\r\n 'Accept': 'application/xml',\r\n }\r\n\r\n return format === 'object'\r\n ? headers\r\n : new HttpHeaders(headers)\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport {\r\n AccountEntitiesData,\r\n CompanyCountriesData,\r\n CompanyCountryData,\r\n CompanyCountryTaxesData,\r\n CountryReferenceCurrenciesData,\r\n CountryReferenceData,\r\n CountryReferencesData,\r\n EmployeeData,\r\n EmployeesData,\r\n ExchangesData,\r\n InstallationData,\r\n InstallationsData,\r\n LocationData,\r\n LocationEmployeesData,\r\n LocationsData,\r\n ParametersData,\r\n ParametersProps,\r\n ParameterValueData,\r\n ParameterValueProps,\r\n SupplyEntitiesData,\r\n WorkflowsData\r\n} from './models/api-companies.types'\r\nimport { ApiSuccess, QueryParams } from './models/api.models'\r\nimport { forkJoin, map, mergeMap, Observable } from 'rxjs'\r\nimport { httpParams } from '../helpers/http'\r\nimport { CountryCurrencyRate } from './models/api-companies.interfaces'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiCompaniesService {\r\n constructor (\r\n @Inject('env') private environments: Environment,\r\n private http: HttpClient,\r\n ) { }\r\n\r\n /**\r\n * Retrieves the URL for the companies API from the environment configurations.\r\n *\r\n * @return {string} The URL of the companies API.\r\n */\r\n get url (): string {\r\n return this.environments.apiCompaniesUrl\r\n }\r\n\r\n /**\r\n * Fetches the installations based on the provided query parameters.\r\n *\r\n * @param {QueryParams} params - The parameters used to filter the installations query.\r\n * @return {Observable<InstallationsData>} An observable that emits the installations data.\r\n */\r\n getInstallations (params: QueryParams): Observable<InstallationsData> {\r\n return this.http.get<ApiSuccess<InstallationsData>>(`${this.url}/installations`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves the installation details based on the given installation ID.\r\n *\r\n * @param {number} id - The unique identifier of the installation to retrieve.\r\n * @returns {Observable<InstallationData>} An observable of the installation details.\r\n */\r\n getInstallation (id: number): Observable<InstallationData> {\r\n return this.http.get<ApiSuccess<InstallationData>>(`${this.url}/installations/${id}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves a list of locations based on the provided query parameters.\r\n *\r\n * @param {QueryParams} params - The parameters to use for querying locations.\r\n * @return {Observable<LocationsData>} An observable that emits the locations data.\r\n */\r\n getLocations (params: QueryParams): Observable<LocationsData> {\r\n return this.http.get<ApiSuccess<LocationsData>>(`${this.url}/locations`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches the location details for a given location ID.\r\n *\r\n * @param {number} id - The unique identifier of the location.\r\n * @return {Observable<LocationData>} An Observable containing the location details.\r\n */\r\n getLocation (id: number): Observable<LocationData> {\r\n return this.http.get<ApiSuccess<LocationData>>(`${this.url}/locations/${id}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves a list of active supply entities.\r\n *\r\n * @param {QueryParams} params - The query parameters to filter supply entities.\r\n * @return {Observable<SupplyEntitiesData>} Observable emitting supply entities data.\r\n */\r\n getSupplyEntitiesActive (params: QueryParams): Observable<SupplyEntitiesData> {\r\n return this.http.get<ApiSuccess<SupplyEntitiesData>>(`${this.url}/supply-entities/actives`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches a list of employees based on the specified query parameters.\r\n *\r\n * @param {QueryParams} params - The parameters to filter and sort the employees.\r\n * @return {Observable<EmployeesData>} An observable that emits the list of employees.\r\n */\r\n getEmployees (params: QueryParams): Observable<EmployeesData> {\r\n return this.http.get<ApiSuccess<EmployeesData>>(`${this.url}/employees`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches an employee's details based on the provided employee ID.\r\n *\r\n * @param {number} id - The unique identifier of the employee.\r\n * @return {Observable<EmployeeData>} An observable that emits the employee's details.\r\n */\r\n getEmployee (id: number): Observable<EmployeeData> {\r\n return this.http.get<ApiSuccess<EmployeeData>>(`${this.url}/employees/${id}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves the list of employees for a specified location based on provided query parameters.\r\n *\r\n * @param {QueryParams} params - The query parameters used to filter and retrieve the location employees.\r\n * @returns {Observable<LocationEmployeesData>} An observable that emits the list of employees for the specified location.\r\n */\r\n getLocationEmployees (params: QueryParams): Observable<LocationEmployeesData> {\r\n return this.http.get<ApiSuccess<LocationEmployeesData>>(`${this.url}/location-employees`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves a list of countries where the company operates.\r\n *\r\n * @param {QueryParams} params - The query parameters for the API request.\r\n * @return {Observable<CompanyCountriesData>} An observable containing the list of company countries.\r\n */\r\n getCompanyCountries (params: QueryParams): Observable<CompanyCountriesData> {\r\n return this.http.get<ApiSuccess<CompanyCountriesData>>(`${this.url}/company-countries`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n\r\n /**\r\n * Retrieves the country information for a specified company by its ID.\r\n *\r\n * @param {number} id - The unique identifier of the company.\r\n * @return {Observable<CompanyCountryData>} An observable containing the country information of the company.\r\n */\r\n getCompanyCountry (id: number): Observable<CompanyCountryData> {\r\n return this.http.get<ApiSuccess<CompanyCountryData>>(`${this.url}/company-countries/${id}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches the reference currencies for a given country.\r\n *\r\n * @param {QueryParams} params - The query parameters to include in the request.\r\n * @return {Observable<CountryReferenceCurrenciesData>} The observable containing the country reference currencies data.\r\n */\r\n getCountryReferenceCurrencies (params: QueryParams): Observable<CountryReferenceCurrenciesData> {\r\n return this.http.get<ApiSuccess<CountryReferenceCurrenciesData>>(\r\n `${this.url}/country-reference-currencies`,\r\n { params }\r\n ).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves a list of currencies for different countries along with their current exchange rates.\r\n *\r\n * @param {QueryParams} params - The query parameters used to fetch the country reference currencies.\r\n * @return {Observable<CountryCurrencyRate[]>} An observable that emits an array of country currency rates.\r\n */\r\n getCountryCurrenciesWithRate (params: QueryParams): Observable<CountryCurrencyRate[]> {\r\n return this.getCountryReferenceCurrencies(params)\r\n .pipe(mergeMap((currenciesData) => {\r\n const $observables = currenciesData.country_reference_currencies\r\n .map((country_reference_currency) =>\r\n this.getCurrentExchanges({\r\n currency_id: country_reference_currency.currency.id,\r\n }).pipe(\r\n map((exchangesData) => ({\r\n ...country_reference_currency,\r\n rate: exchangesData.exchanges[0]?.value ?? 1.00,\r\n }))\r\n )\r\n )\r\n\r\n return forkJoin($observables)\r\n }))\r\n }\r\n\r\n /**\r\n * Retrieves the current exchanges based on the given query parameters.\r\n *\r\n * @param {QueryParams} params - The query parameters to filter the exchanges.\r\n *\r\n * @returns {Observable<ExchangesData>} - An observable that emits the API response data containing the current exchanges.\r\n */\r\n getCurrentExchanges (params: QueryParams): Observable<ExchangesData> {\r\n return this.http.get<ApiSuccess<ExchangesData>>(`${this.url}/exchanges/current`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches the country-specific tax information for a company.\r\n *\r\n * @param {QueryParams} params - The parameters used to filter and query the taxes.\r\n * @return {Observable<CompanyCountryTaxesData>} An observable that emits the tax information.\r\n */\r\n getCompanyCountryTaxes (params: QueryParams): Observable<CompanyCountryTaxesData> {\r\n return this.http.get<ApiSuccess<CompanyCountryTaxesData>>(`${this.url}/company-country-taxes`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves the list of active account entities based on the provided query parameters.\r\n *\r\n * @param {QueryParams} params - The parameters to filter and query active account entities.\r\n * @return {Observable<AccountEntitiesData>} An observable that emits the list of active account entities.\r\n */\r\n getActiveAccountEntities (params: QueryParams): Observable<AccountEntitiesData> {\r\n return this.http.get<ApiSuccess<AccountEntitiesData>>(`${this.url}/account-entities/actives`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves the parameter values based on the provided parameter names.\r\n *\r\n * @param {Object} params - An object containing the required parameters.\r\n * @param {string[]} params.paramNames - An array of parameter names for which the values need to be fetched.\r\n * @return {Observable<ParametersData>} An observable that emits the fetched parameter values.\r\n */\r\n getParameters ({\r\n paramNames,\r\n }: ParametersProps): Observable<ParametersData> {\r\n const parameters = paramNames.map((p) => ({ name: p }))\r\n\r\n return this.http.post<ApiSuccess<ParametersData>>(`${this.url}/parameters-values`, {\r\n parameters\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves the value of a specified parameter.\r\n *\r\n * @param {Object} input - The input object containing the parameter details.\r\n * @param {string} input.paramName - The name of the parameter whose value is to be retrieved.\r\n * @return {Observable<ParameterValueData>} An observable emitting the value of the specified parameter.\r\n */\r\n getParameterValue ({\r\n paramName,\r\n }: ParameterValueProps): Observable<ParameterValueData> {\r\n return this.http.get<ApiSuccess<ParameterValueData>>(`${this.url}/parameters-values/${paramName}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves a list of country references based on the given query parameters.\r\n *\r\n * @param {QueryParams} params - The query parameters for retrieving country references.\r\n * @return {Observable<CountryReferencesData>} An observable containing the country reference data.\r\n */\r\n getCountryReferences (params: QueryParams): Observable<CountryReferencesData> {\r\n return this.http.get<ApiSuccess<CountryReferencesData>>(`${this.url}/country-references`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches the country reference data for a given country ID.\r\n *\r\n * @param {number} id - The unique identifier of the country for which the reference data is to be retrieved.\r\n * @return {Observable<CountryReferenceData>} An observable containing the country reference data.\r\n */\r\n getCountryReference (id: number): Observable<CountryReferenceData> {\r\n return this.http.get<ApiSuccess<CountryReferenceData>>(`${this.url}/country-references/${id}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches the list of workflows based on the provided query parameters.\r\n *\r\n * @param {QueryParams} params - The query parameters used to filter workflows.\r\n * @return {Observable<WorkflowsData>} An observable containing the workflow data.\r\n */\r\n getWorkflows (params: QueryParams): Observable<WorkflowsData> {\r\n return this.http.get<ApiSuccess<WorkflowsData>>(`${this.url}/workflows`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { ApiSuccess } from './models/api.models'\r\nimport {\r\n ChangeLanguageIn,\r\n CreateSessionIn,\r\n CreateSessionOut,\r\n GetUserOut,\r\n LoginIn,\r\n LoginOut,\r\n MeOut\r\n} from './models/api-security.types'\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { map, Observable, tap } from 'rxjs'\r\nimport { CookieService } from 'ngx-cookie-service'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiSecurityService {\r\n constructor (\r\n @Inject('env') private environments: Environment,\r\n private cookie: CookieService,\r\n private http: HttpClient,\r\n ) {}\r\n\r\n /**\r\n * Retrieves the API security URL from the environments configuration.\r\n *\r\n * @return {string} The API security URL.\r\n */\r\n get url (): string {\r\n return this.environments.apiSecurityUrl\r\n }\r\n\r\n /**\r\n * Authenticates a user with the provided credentials and role.\r\n *\r\n * @param {Object} param0 - The login input object.\r\n * @param {string} param0.username - The username of the user.\r\n * @param {string} param0.password - The password of the user.\r\n * @param {string} param0.role - The role of the user.\r\n * @return {Observable<LoginOut>} An observable emitting the login output object.\r\n */\r\n login ({\r\n username,\r\n password,\r\n role,\r\n }: LoginIn): Observable<LoginOut> {\r\n return this.http.post<ApiSuccess<LoginOut>>(`${this.url}/auth/login`, {\r\n system_name: 'CRA',\r\n username,\r\n password,\r\n role,\r\n }).pipe(\r\n map(({ data }) => data),\r\n tap(({ access_token }) => this.cookie.set(this.environments.authCookie, access_token, { path: '/' }))\r\n )\r\n }\r\n\r\n /**\r\n * Logs out the current user by making a POST request to the logout endpoint.\r\n *\r\n * This method deletes all cookies after a successful logout.\r\n *\r\n * @return {Observable<{}>} An observable that emits the server's response to the logout request.\r\n */\r\n logout (): Observable<{}> {\r\n return this.http.post<ApiSuccess<{}>>(`${this.url}/auth/logout`, null)\r\n .pipe(\r\n map(({ data }) => data),\r\n tap(() => this.cookie.delete(this.environments.authCookie, '/'))\r\n )\r\n }\r\n\r\n /**\r\n * Creates a new session for a specified model.\r\n *\r\n * @param {Object} params - The parameters for creating the session.\r\n * @param {string} params.modelType - The type of the model.\r\n * @param {string} params.modelId - The ID of the model.\r\n * @param {string} [params.token] - Optional authorization token.\r\n *\r\n * @return {Observable<CreateSessionOut>} An observable containing the created session details.\r\n */\r\n createSession ({\r\n modelType,\r\n modelId,\r\n token,\r\n }: CreateSessionIn): Observable<CreateSessionOut> {\r\n let headers = new HttpHeaders({})\r\n\r\n if (token)\r\n headers = headers.set('Authorization', `Bearer ${token}`)\r\n\r\n return this.http.post<ApiSuccess<CreateSessionOut>>(\r\n `${this.url}/sessions`, {\r\n model_type: modelType,\r\n model_id: modelId,\r\n }, {\r\n headers\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches the authenticated user's information.\r\n * Sends a GET request to the endpoint '/auth/me' to retrieve information\r\n * about the currently authenticated user.\r\n *\r\n * @return {Observable<MeOut>} An observable that emits the authenticated user's data.\r\n */\r\n me (): Observable<MeOut> {\r\n return this.http.get<ApiSuccess<MeOut>>(`${this.url}/auth/me`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches the authenticated user's details from the server.\r\n *\r\n * @param token The JWT token used for authorization.\r\n * @return An Observable that emits the user's details encapsulated in a MeOut object.\r\n */\r\n otherMe (token: string): Observable<MeOut> {\r\n return this.http.get<ApiSuccess<MeOut>>(`${this.url}/auth/me`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`\r\n }\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches a user by their unique ID.\r\n *\r\n * @param {number} id - The unique identifier of the user to be fetched.\r\n * @return {Observable<GetUserOut>} An observable containing the user information.\r\n */\r\n user (id: number): Observable<GetUserOut> {\r\n return this.http.get<ApiSuccess<GetUserOut>>(`${this.url}/users/${id}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Changes the language for the authenticated user.\r\n *\r\n * @param {Object} params - The input parameters for changing the language.\r\n * @param {string} params.languageId - The ID of the new language to be set.\r\n * @return {Observable<ApiSuccess<MeOut>>} An observable that emits the result of the language change request.\r\n */\r\n changeLanguage ({\r\n languageId\r\n }: ChangeLanguageIn): Observable<MeOut> {\r\n return this.http.put<ApiSuccess<MeOut>>(`${this.url}/auth/me`, {\r\n language_id: languageId\r\n }).pipe(map(({ data }) => data))\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Environment } from '../ngx-services.models'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoService {\r\n constructor (\r\n @Inject('env') private environments: Environment\r\n ) {\r\n }\r\n\r\n public async encryptAES (plaintext: string): Promise<string> {\r\n const cryptoKey = await this.loadKey()\r\n\r\n // Convert the plaintext in Uint8Array\r\n const encoder = new TextEncoder()\r\n const encoded = encoder.encode(plaintext)\r\n\r\n // Generate a random Initialization Vector (IV)\r\n const iv = crypto.getRandomValues(new Uint8Array(12))\r\n\r\n // Encrypt the plaintext\r\n const ciphertext = await crypto.subtle.encrypt(\r\n {\r\n name: 'AES-GCM',\r\n iv,\r\n },\r\n cryptoKey,\r\n encoded\r\n )\r\n\r\n return `${this.uint8ArrayToBase64(iv)}:${this.arrayBufferToBase64(ciphertext)}`\r\n }\r\n\r\n public async decryptAES (payload: string): Promise<string> {\r\n // Extract the Initialization Vector (IV), and the cypher text\r\n const [base64IV, base64Ciphertext] = payload.split(':')\r\n\r\n if (!base64IV || !base64Ciphertext)\r\n throw new Error('The payload must contain the IV and the cipher text.')\r\n\r\n const cryptoKey = await this.loadKey()\r\n\r\n const iv = this.base64ToUint8Array(base64IV)\r\n const cipherText = this.base64ToArrayBuffer(base64Ciphertext)\r\n\r\n // Decrypt the cypher text\r\n const decrypted = await crypto.subtle.decrypt(\r\n {\r\n name: 'AES-GCM',\r\n iv: iv,\r\n },\r\n cryptoKey,\r\n cipherText\r\n )\r\n\r\n // Decode the decrypted text\r\n const decoder = new TextDecoder()\r\n return decoder.decode(decrypted)\r\n }\r\n\r\n private async loadKey () {\r\n // Decode the base64 key to Uint8Array\r\n const rawKey = this.base64ToUint8Array(this.environments.secretKey)\r\n\r\n // Import the key to API Crypto\r\n return await crypto.subtle.importKey(\r\n 'raw',\r\n rawKey,\r\n { name: 'AES-GCM' },\r\n true,\r\n ['encrypt', 'decrypt']\r\n )\r\n }\r\n\r\n private uint8ArrayToBase64 (data: Uint8Array): string {\r\n let binary = ''\r\n const len = data.byteLength\r\n\r\n for (let i = 0; i < len; i++) {\r\n binary += String.fromCharCode(data[i])\r\n }\r\n\r\n return btoa(binary)\r\n }\r\n\r\n private base64ToUint8Array (base64: string): Uint8Array {\r\n const binaryString = atob(base64)\r\n const len = binaryString.length\r\n const bytes = new Uint8Array(len)\r\n for (let i = 0; i < len; i++) {\r\n bytes[i] = binaryString.charCodeAt(i)\r\n }\r\n return bytes\r\n }\r\n\r\n private arrayBufferToBase64 (buffer: ArrayBuffer): string {\r\n let binary = ''\r\n const bytes = new Uint8Array(buffer)\r\n const len = bytes.byteLength\r\n\r\n for (let i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i])\r\n }\r\n\r\n return btoa(binary)\r\n }\r\n\r\n private base64ToArrayBuffer (base64: string): ArrayBuffer {\r\n const binaryString = atob(base64)\r\n const len = binaryString.length\r\n const bytes = new Uint8Array(len)\r\n\r\n for (let i = 0; i < len; i++) {\r\n bytes[i] = binaryString.charCodeAt(i)\r\n }\r\n\r\n return bytes.buffer\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { HttpEvent, HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from '@angular/common/http'\r\nimport { Observable } from 'rxjs'\r\n\r\n@Injectable()\r\nexport class ApiHeadersInterceptor implements HttpInterceptor {\r\n /**\r\n * Intercepts HTTP requests and adds common headers.\r\n *\r\n * @param {HttpRequest<unknown>} request - The HTTP request intercepted.\r\n * @param {HttpHandler} next - The next handler in the chain.\r\n *\r\n * @returns {Observable<HttpEvent<unknown>>} - Observable of the HTTP event after interception.\r\n */\r\n intercept (request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n let headers = new HttpHeaders({\r\n 'cache-control': 'max-age=0, no-cache, no-store, must-revalidate',\r\n 'expires': '0',\r\n 'pragma': 'no-cache'\r\n })\r\n\r\n if (!request.headers.has('Content-Type'))\r\n headers = headers.set('Content-Type', 'application/json')\r\n\r\n if (!request.headers.has('Accept'))\r\n headers = headers.set('Accept', 'application/json')\r\n\r\n if (!request.headers.has('Accept-Language'))\r\n headers = headers.set('Accept-Language', localStorage.getItem('lang') ?? 'en')\r\n\r\n request = request.clone({ headers })\r\n\r\n return next.handle(request)\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http'\r\nimport { Observable } from 'rxjs'\r\nimport { CookieService } from 'ngx-cookie-service'\r\nimport { Environment } from '../ngx-services.models'\r\n\r\n@Injectable()\r\nexport class ApiTokenInterceptor implements HttpInterceptor {\r\n constructor (\r\n @Inject('env') private environments: Environment,\r\n private cookie: CookieService\r\n ) {}\r\n\r\n /**\r\n * Intercepts the HTTP request and adds the Authorization header.\r\n *\r\n * @param {HttpRequest<unknown>} request - The HTTP request to intercept.\r\n * @param {HttpHandler} next - The next HTTP handler in the chain.\r\n *\r\n * @returns {Observable<HttpEvent<unknown>>} - An observable containing the HTTP event.\r\n */\r\n intercept (request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n if (request.headers.has('Authorization'))\r\n return next.handle(request)\r\n\r\n const token = this.cookie.get(this.environments.authCookie)\r\n\r\n if (!token)\r\n return next.handle(request)\r\n\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`\r\n }\r\n })\r\n\r\n return next.handle(request)\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http'\r\n\r\nimport { Observable, of } from 'rxjs'\r\nimport { tap } from 'rxjs/operators'\r\nimport { Environment } from '../ngx-services.models'\r\n\r\nconst DEFAULT_TTL = 10000 // ttl in ms\r\n\r\n@Injectable()\r\nexport class HttpCachingInterceptor implements HttpInterceptor {\r\n private cache = new Map<string, { ttl: number, res: HttpResponse<any> }>()\r\n\r\n constructor (@Inject('env') private envs: Environment) {}\r\n\r\n intercept (req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (req.method !== 'GET')\r\n return next.handle(req)\r\n\r\n const cached = this.cache.get(req.urlWithParams)\r\n\r\n if (cached) {\r\n const isExpired = Date.now() > cached.ttl\r\n\r\n if (!isExpired)\r\n return of(cached.res)\r\n\r\n this.cache.delete(req.urlWithParams) // If expired, remove the entry from cache\r\n }\r\n\r\n return next.handle(req).pipe(\r\n tap((res) => {\r\n if (!(res instanceof HttpResponse))\r\n return\r\n\r\n const ttl = Date.now() + (this.envs.cacheTtl ?? DEFAULT_TTL)\r\n\r\n this.cache.set(req.urlWithParams, { res, ttl })\r\n })\r\n )\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-services\r\n */\r\nexport * from './lib/ngx-services.module'\r\n\r\n// api services\r\nexport * from './lib/apis/api-companies.service'\r\nexport * from './lib/apis/api-security.service'\r\n\r\n// api models\r\nexport * from './lib/apis/models/api.models'\r\nexport * from './lib/apis/models/api-companies.interfaces'\r\nexport * from './lib/apis/models/api-companies.types'\r\nexport * from './lib/apis/models/api-security.interfaces'\r\nexport * from './lib/apis/models/api-security.types'\r\n\r\n// cypher\r\nexport * from './lib/cypher/crypto.service'\r\n\r\n// interceptors\r\nexport * from './lib/interceptors/api-headers.interceptor'\r\nexport * from './lib/interceptors/api-token.interceptor'\r\nexport * from './lib/interceptors/http-caching.interceptor'\r\n\r\n// helpers\r\nexport * from './lib/helpers/http'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","tap"],"mappings":"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"}
1
+ {"version":3,"file":"experteam-mx-ngx-services.mjs","sources":["../../../../projects/experteam-mx/ngx-services/src/lib/ngx-services.module.ts","../../../../projects/experteam-mx/ngx-services/src/lib/helpers/http.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-companies.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-invoices.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-reports.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-security.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-shipments.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/cypher/crypto.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/interceptors/api-headers.interceptor.ts","../../../../projects/experteam-mx/ngx-services/src/lib/interceptors/api-token.interceptor.ts","../../../../projects/experteam-mx/ngx-services/src/lib/interceptors/http-caching.interceptor.ts","../../../../projects/experteam-mx/ngx-services/src/public-api.ts","../../../../projects/experteam-mx/ngx-services/src/experteam-mx-ngx-services.ts"],"sourcesContent":["import { ModuleWithProviders, NgModule } from '@angular/core'\r\nimport { Environment } from './ngx-services.models'\r\nimport { provideHttpClient } from '@angular/common/http'\r\n\r\n@NgModule({\r\n providers: [provideHttpClient()]\r\n})\r\nexport class NgxServicesModule {\r\n /**\r\n * Returns a module with providers for the NgxServicesModule.\r\n *\r\n * @param {Environment} environment - The environment configuration object.\r\n *\r\n * @return {ModuleWithProviders<NgxServicesModule>} The module with providers for the NgxServicesModule.\r\n */\r\n public static forRoot (environment: Environment): ModuleWithProviders<NgxServicesModule> {\r\n return {\r\n ngModule: NgxServicesModule,\r\n providers: [\r\n {\r\n provide: 'env',\r\n useValue: environment\r\n }\r\n ]\r\n }\r\n }\r\n}\r\n","import { HttpHeaders, HttpParams } from '@angular/common/http'\r\nimport { QueryParams } from '../apis/models/api.models'\r\n\r\n/**\r\n * Convert an object of key-value pairs into a URL query string.\r\n *\r\n * @param {Object} params - The key-value pairs to converted into a query string.\r\n *\r\n * @return {string} - The generated query string.\r\n */\r\nexport const queryString = (params: QueryParams): string => {\r\n const queryElements: string[] = []\r\n\r\n Object.entries(params).forEach(([key, value]) => {\r\n if (Array.isArray(value)) {\r\n const arrayQuery = value\r\n .map((item) => `${encodeURIComponent(key)}=${encodeURIComponent(item as string | number | boolean)}`)\r\n .join('&')\r\n\r\n queryElements.push(arrayQuery)\r\n } else {\r\n const encodedQuery = `${encodeURIComponent(key)}=${encodeURIComponent(value as string | number | boolean)}`\r\n\r\n queryElements.push(encodedQuery)\r\n }\r\n })\r\n\r\n const queryString = queryElements.join('&')\r\n\r\n return queryString.length ? `?${queryString}` : ''\r\n}\r\n\r\n/**\r\n * Creates an instance of HttpParams using the provided params object.\r\n *\r\n * @param {Object} params - The object containing the params to the HttpParams constructor.\r\n *\r\n * @returns {HttpParams} - An instance of HttpParams created from the params object.\r\n */\r\nexport const httpParams = (\r\n params: QueryParams\r\n): HttpParams => new HttpParams({\r\n fromObject: params\r\n})\r\n\r\n/**\r\n * Returns the headers for generating PDF files.\r\n *\r\n * @param {string} format - The format of the headers, 'object' or 'http_header'.\r\n *\r\n * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating PDF files.\r\n */\r\nexport const pdfHeaders = (format: 'object' | 'http_header' = 'object'): HttpHeaders | { [header: string]: string | string[] } => {\r\n const headers = {\r\n Accept: 'application/pdf'\r\n }\r\n\r\n return format === 'object'\r\n ? headers\r\n : new HttpHeaders(headers)\r\n}\r\n\r\n/**\r\n * Returns the headers for generating XML files.\r\n *\r\n * @param {string} format - The format of the headers, 'object' or 'http_header'.\r\n *\r\n * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating XML files.\r\n */\r\nexport const xmlHeaders = (format: 'object' | 'http_header' = 'object'): HttpHeaders | { [header: string]: string | string[] } => {\r\n const headers = {\r\n Accept: 'application/xml',\r\n }\r\n\r\n return format === 'object'\r\n ? headers\r\n : new HttpHeaders(headers)\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport {\r\n AccountEntitiesOut,\r\n CompanyCountriesOut,\r\n CompanyCountryOut,\r\n CompanyCountryTaxesOut,\r\n CountryExchangesOut,\r\n CountryReferenceCurrenciesOut,\r\n CountryReferenceOut,\r\n CountryReferencesOut,\r\n EmployeeOut,\r\n EmployeesOut,\r\n ExchangesOut,\r\n InstallationOut,\r\n InstallationsOut,\r\n LocationEmployeesOut,\r\n LocationOut,\r\n LocationsOut,\r\n ParametersIn,\r\n ParametersOut,\r\n ParameterValueIn,\r\n ParameterValueOut,\r\n SupplyEntitiesOut,\r\n WorkflowsOut\r\n} from './models/api-companies.types'\r\nimport { ApiSuccess, QueryParams } from './models/api.models'\r\nimport { forkJoin, map, mergeMap, Observable } from 'rxjs'\r\nimport { httpParams } from '../helpers/http'\r\nimport { CountryCurrencyRate } from './models/api-companies.interfaces'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiCompaniesService {\r\n constructor (\r\n @Inject('env') private environments: Environment,\r\n private http: HttpClient\r\n ) { }\r\n\r\n /**\r\n * Retrieves the URL for the companies API from the environment configurations.\r\n *\r\n * @return {string} The URL of the companies API.\r\n */\r\n get url (): string {\r\n return this.environments.apiCompaniesUrl\r\n }\r\n\r\n /**\r\n * Fetches the installations based on the provided query parameters.\r\n *\r\n * @param {QueryParams} params - The parameters used to filter the installations query.\r\n * @return {Observable<InstallationsOut>} An observable that emits the installation's data.\r\n */\r\n getInstallations (params: QueryParams): Observable<InstallationsOut> {\r\n return this.http.get<ApiSuccess<InstallationsOut>>(`${this.url}/installations`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves the installation details based on the given installation ID.\r\n *\r\n * @param {number} id - The unique identifier of the installation to retrieve.\r\n * @returns {Observable<InstallationOut>} An observable of the installation details.\r\n */\r\n getInstallation (id: number): Observable<InstallationOut> {\r\n return this.http.get<ApiSuccess<InstallationOut>>(`${this.url}/installations/${id}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves a list of locations based on the provided query parameters.\r\n *\r\n * @param {QueryParams} params - The parameters to use for querying locations.\r\n * @return {Observable<LocationsOut>} An observable that emits the location's data.\r\n */\r\n getLocations (params: QueryParams): Observable<LocationsOut> {\r\n return this.http.get<ApiSuccess<LocationsOut>>(`${this.url}/locations`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches the location details for a given location ID.\r\n *\r\n * @param {number} id - The unique identifier of the location.\r\n * @return {Observable<LocationOut>} An Observable containing the location details.\r\n */\r\n getLocation (id: number): Observable<LocationOut> {\r\n return this.http.get<ApiSuccess<LocationOut>>(`${this.url}/locations/${id}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves a list of active supply entities.\r\n *\r\n * @param {QueryParams} params - The query parameters to filter supply entities.\r\n * @return {Observable<SupplyEntitiesOut>} Observable emitting supply entities data.\r\n */\r\n getSupplyEntitiesActive (params: QueryParams): Observable<SupplyEntitiesOut> {\r\n return this.http.get<ApiSuccess<SupplyEntitiesOut>>(`${this.url}/supply-entities/actives`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches a list of employees based on the specified query parameters.\r\n *\r\n * @param {QueryParams} params - The parameters to filter and sort the employees.\r\n * @return {Observable<EmployeesOut>} An observable that emits the list of employees.\r\n */\r\n getEmployees (params: QueryParams): Observable<EmployeesOut> {\r\n return this.http.get<ApiSuccess<EmployeesOut>>(`${this.url}/employees`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches an employee's details based on the provided employee ID.\r\n *\r\n * @param {number} id - The unique identifier of the employee.\r\n * @return {Observable<EmployeeOut>} An observable that emits the employee's details.\r\n */\r\n getEmployee (id: number): Observable<EmployeeOut> {\r\n return this.http.get<ApiSuccess<EmployeeOut>>(`${this.url}/employees/${id}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves the list of employees for a specified location based on provided query parameters.\r\n *\r\n * @param {QueryParams} params - The query parameters used to filter and retrieve the location employees.\r\n * @returns {Observable<LocationEmployeesOut>} An observable that emits the list of employees for the specified location.\r\n */\r\n getLocationEmployees (params: QueryParams): Observable<LocationEmployeesOut> {\r\n return this.http.get<ApiSuccess<LocationEmployeesOut>>(`${this.url}/location-employees`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves a list of countries where the company operates.\r\n *\r\n * @param {QueryParams} params - The query parameters for the API request.\r\n * @return {Observable<CompanyCountriesOut>} An observable containing the list of company countries.\r\n */\r\n getCompanyCountries (params: QueryParams): Observable<CompanyCountriesOut> {\r\n return this.http.get<ApiSuccess<CompanyCountriesOut>>(`${this.url}/company-countries`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves the country information for a specified company by its ID.\r\n *\r\n * @param {number} id - The unique identifier of the company.\r\n * @return {Observable<CompanyCountryOut>} An observable containing the country information of the company.\r\n */\r\n getCompanyCountry (id: number): Observable<CompanyCountryOut> {\r\n return this.http.get<ApiSuccess<CompanyCountryOut>>(`${this.url}/company-countries/${id}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches the reference currencies for a given country.\r\n *\r\n * @param {QueryParams} params - The query parameters to include in the request.\r\n * @return {Observable<CountryReferenceCurrenciesOut>} The observable containing the country reference currencies data.\r\n */\r\n getCountryReferenceCurrencies (params: QueryParams): Observable<CountryReferenceCurrenciesOut> {\r\n return this.http.get<ApiSuccess<CountryReferenceCurrenciesOut>>(\r\n `${this.url}/country-reference-currencies`,\r\n { params }\r\n ).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves a list of currencies for different countries along with their current exchange rates.\r\n *\r\n * @param {QueryParams} params - The query parameters used to fetch the country reference currencies.\r\n * @return {Observable<CountryCurrencyRate[]>} An observable that emits an array of country currency rates.\r\n */\r\n getCountryCurrenciesWithRate (params: QueryParams): Observable<CountryCurrencyRate[]> {\r\n return this.getCountryReferenceCurrencies(params)\r\n .pipe(mergeMap((currenciesData) => {\r\n const $observables = currenciesData.country_reference_currencies\r\n .map((item) =>\r\n this.getCurrentExchanges({\r\n currency_id: item.currency.id,\r\n }).pipe(\r\n map((exchangesData) => ({\r\n ...item,\r\n rate: exchangesData.exchanges[0]?.value,\r\n }))\r\n )\r\n )\r\n\r\n return forkJoin($observables)\r\n }))\r\n }\r\n\r\n /**\r\n * Fetches exchange data based on the provided query parameters.\r\n *\r\n * @param {QueryParams} params - The query parameters for retrieving exchange data.\r\n * @return {Observable<CountryExchangesOut>} An observable containing the exchange data.\r\n */\r\n getExchanges (params: QueryParams): Observable<CountryExchangesOut> {\r\n return this.http.get<ApiSuccess<CountryExchangesOut>>(`${this.url}/exchanges`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves the current exchanges based on the given query parameters.\r\n *\r\n * @param {QueryParams} params - The query parameters to filter the exchanges.\r\n *\r\n * @returns {Observable<ExchangesOut>} - An observable that emits the API response data containing the current exchanges.\r\n */\r\n getCurrentExchanges (params: QueryParams): Observable<ExchangesOut> {\r\n return this.http.get<ApiSuccess<ExchangesOut>>(`${this.url}/exchanges/current`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches the country-specific tax information for a company.\r\n *\r\n * @param {QueryParams} params - The parameters used to filter and query the taxes.\r\n * @return {Observable<CompanyCountryTaxesOut>} An observable that emits the tax information.\r\n */\r\n getCompanyCountryTaxes (params: QueryParams): Observable<CompanyCountryTaxesOut> {\r\n return this.http.get<ApiSuccess<CompanyCountryTaxesOut>>(`${this.url}/company-country-taxes`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves the list of active account entities based on the provided query parameters.\r\n *\r\n * @param {QueryParams} params - The parameters to filter and query active account entities.\r\n * @return {Observable<AccountEntitiesOut>} An observable that emits the list of active account entities.\r\n */\r\n getActiveAccountEntities (params: QueryParams): Observable<AccountEntitiesOut> {\r\n return this.http.get<ApiSuccess<AccountEntitiesOut>>(`${this.url}/account-entities/actives`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves the parameter values based on the provided parameter names.\r\n *\r\n * @param {Object} params - An object containing the required parameters.\r\n * @param {string[]} params.paramNames - An array of parameter names for which the values need to be fetched.\r\n * @return {Observable<ParametersOut>} An observable that emits the fetched parameter values.\r\n */\r\n getParameters ({\r\n paramNames,\r\n }: ParametersIn): Observable<ParametersOut> {\r\n const parameters = paramNames.map((p) => ({ name: p }))\r\n\r\n return this.http.post<ApiSuccess<ParametersOut>>(`${this.url}/parameters-values`, {\r\n parameters\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves the value of a specified parameter.\r\n *\r\n * @param {Object} input - The input object containing the parameter details.\r\n * @param {string} input.paramName - The name of the parameter whose value is to be retrieved.\r\n * @return {Observable<ParameterValueOut>} An observable emitting the value of the specified parameter.\r\n */\r\n getParameterValue ({\r\n paramName,\r\n }: ParameterValueIn): Observable<ParameterValueOut> {\r\n return this.http.get<ApiSuccess<ParameterValueOut>>(`${this.url}/parameters-values/${paramName}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves a list of country references based on the given query parameters.\r\n *\r\n * @param {QueryParams} params - The query parameters for retrieving country references.\r\n * @return {Observable<CountryReferencesOut>} An observable containing the country reference data.\r\n */\r\n getCountryReferences (params: QueryParams): Observable<CountryReferencesOut> {\r\n return this.http.get<ApiSuccess<CountryReferencesOut>>(`${this.url}/country-references`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches the country reference data for a given country ID.\r\n *\r\n * @param {number} id - The unique identifier of the country for which the reference data is to be retrieved.\r\n * @return {Observable<CountryReferenceOut>} An observable containing the country reference data.\r\n */\r\n getCountryReference (id: number): Observable<CountryReferenceOut> {\r\n return this.http.get<ApiSuccess<CountryReferenceOut>>(`${this.url}/country-references/${id}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches the list of workflows based on the provided query parameters.\r\n *\r\n * @param {QueryParams} params - The query parameters used to filter workflows.\r\n * @return {Observable<WorkflowsOut>} An observable containing the workflow data.\r\n */\r\n getWorkflows (params: QueryParams): Observable<WorkflowsOut> {\r\n return this.http.get<ApiSuccess<WorkflowsOut>>(`${this.url}/workflows`, {\r\n params: httpParams(params),\r\n }).pipe(map(({ data }) => data))\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { map, Observable } from 'rxjs'\r\nimport { ApiSuccess } from './models/api.models'\r\nimport {\r\n AccountPaymentOperationOut,\r\n AccountPaymentOperationIn,\r\n CancelBillingIn,\r\n CancelPaymentReceiptIn,\r\n CollectionReceiptOut\r\n} from './models/api-invoices.types'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiInvoicesService {\r\n constructor (\r\n @Inject('env') private environments: Environment,\r\n private http: HttpClient\r\n ) { }\r\n\r\n /**\r\n * Retrieves the API URL for invoices from the environments configuration.\r\n *\r\n * @return {string} The API URL for invoices.\r\n */\r\n get url (): string {\r\n return this.environments.apiInvoicesUrl\r\n }\r\n\r\n /**\r\n * Fetches and returns the collection receipt data for a given collection ID.\r\n *\r\n * @param {number} id - The unique identifier of the collection for which the receipt needs to be retrieved.\r\n * @return {Observable<CollectionReceiptOut>} An observable containing the collection receipt data.\r\n */\r\n printCollectionReceipt (id: number): Observable<CollectionReceiptOut> {\r\n return this.http.get<ApiSuccess<CollectionReceiptOut>>(`${this.url}/operation/print/collection-receipt/${id}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Handles the account payment operation by sending a POST request to the specified endpoint.\r\n * Processes the response and returns the operation data.\r\n *\r\n * @param {AccountPaymentOperationIn} body The payload containing information for the account payment operation.\r\n * @return {Observable<AccountPaymentOperationOut>} An observable emitting the processed account payment operation data.\r\n */\r\n accountPaymentOperation (body: AccountPaymentOperationIn): Observable<AccountPaymentOperationOut> {\r\n return this.http.post<ApiSuccess<AccountPaymentOperationOut>>(`${this.url}/operation/account-payment`, body)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Cancels a payment receipt based on the provided input.\r\n * This method sends a POST request to cancel a document.\r\n *\r\n * @param body The data required to cancel the payment receipt, encapsulated in a CancelPaymentReceiptIn object.\r\n * @return An Observable representing the result of the cancellation. Emits an empty object on success.\r\n */\r\n cancelPaymentReceipt (body: CancelPaymentReceiptIn): Observable<{}> {\r\n return this.http.post<ApiSuccess<{}>>(`${this.url}/operation/cancel-document`, body)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Cancels an invoice based on the provided invoice ID and additional parameters.\r\n *\r\n * @param {Object} parameters - The parameters required to cancel the invoice, encapsulated in a CancelBillingIn object.\r\n * @return {Observable<Object>} An observable that emits the response of the cancellation operation.\r\n */\r\n cancelInvoice ({ invoiceId, ...body }: CancelBillingIn): Observable<{}> {\r\n return this.http.post<ApiSuccess<{}>>(`${this.url}/operation/cancel-billing/${invoiceId}`, body)\r\n .pipe(map(({ data }) => data))\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { map, Observable } from 'rxjs'\r\nimport { ApiSuccess, QueryParams } from './models/api.models'\r\nimport { CollectionPaymentsOut } from './models/api-reports.types'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiReportsService {\r\n constructor (\r\n @Inject('env') private environments: Environment,\r\n private http: HttpClient\r\n ) { }\r\n\r\n /**\r\n * Retrieves the URL for the reports API from the environment configurations.\r\n *\r\n * @return {string} The URL of the reports API.\r\n */\r\n get url (): string {\r\n return this.environments.apiReportsUrl\r\n }\r\n\r\n /**\r\n * Retrieves the list of collection payments\r\n *\r\n * @param {QueryParams} params - The query parameters used to fetch the collection payments.\r\n * @return {Observable<CollectionPaymentsOut[]>} An observable that emits an array of collection payment.\r\n */\r\n getCollectionPayments (params: QueryParams): Observable<CollectionPaymentsOut> {\r\n return this.http.get<ApiSuccess<CollectionPaymentsOut>>(`${this.url}/collection-payment`, {\r\n params\r\n }).pipe(map(({ data }) => data))\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { ApiSuccess, QueryParams } from './models/api.models'\r\nimport {\r\n ChangeLanguageIn,\r\n CreateSessionIn,\r\n CreateSessionOut,\r\n GetUserOut,\r\n LoginIn,\r\n LoginOut,\r\n MeOut, ModulePermissionsOut, RoleByIdOut, RolePermissionsIn, RoleTypesOut\r\n} from './models/api-security.types'\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { map, Observable, tap } from 'rxjs'\r\nimport { CookieService } from 'ngx-cookie-service'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiSecurityService {\r\n constructor (\r\n @Inject('env') private environments: Environment,\r\n private cookie: CookieService,\r\n private http: HttpClient\r\n ) {}\r\n\r\n /**\r\n * Retrieves the API security URL from the environments configuration.\r\n *\r\n * @return {string} The API security URL.\r\n */\r\n get url (): string {\r\n return this.environments.apiSecurityUrl\r\n }\r\n\r\n /**\r\n * Authenticates a user with the provided credentials and role.\r\n *\r\n * @param {Object} param0 - The login input object.\r\n * @param {string} param0.username - The username of the user.\r\n * @param {string} param0.password - The password of the user.\r\n * @param {string} param0.role - The role of the user.\r\n * @return {Observable<LoginOut>} An observable emitting the login output object.\r\n */\r\n login ({\r\n username,\r\n password,\r\n role,\r\n }: LoginIn): Observable<LoginOut> {\r\n return this.http.post<ApiSuccess<LoginOut>>(`${this.url}/auth/login`, {\r\n system_name: 'CRA',\r\n username,\r\n password,\r\n role,\r\n }).pipe(\r\n map(({ data }) => data),\r\n tap(({ access_token }) => this.cookie.set(this.environments.authCookie, access_token, { path: '/' }))\r\n )\r\n }\r\n\r\n /**\r\n * Logs out the current user by making a POST request to the logout endpoint.\r\n *\r\n * This method deletes all cookies after a successful logout.\r\n *\r\n * @return {Observable<{}>} An observable that emits the server's response to the logout request.\r\n */\r\n logout (): Observable<{}> {\r\n return this.http.post<ApiSuccess<{}>>(`${this.url}/auth/logout`, null)\r\n .pipe(\r\n map(({ data }) => data),\r\n tap(() => this.cookie.delete(this.environments.authCookie, '/'))\r\n )\r\n }\r\n\r\n /**\r\n * Creates a new session for a specified model.\r\n *\r\n * @param {Object} params - The parameters for creating the session.\r\n * @param {string} params.modelType - The type of the model.\r\n * @param {string} params.modelId - The ID of the model.\r\n * @param {string} [params.token] - Optional authorization token.\r\n *\r\n * @return {Observable<CreateSessionOut>} An observable containing the created session details.\r\n */\r\n createSession ({\r\n modelType,\r\n modelId,\r\n token,\r\n }: CreateSessionIn): Observable<CreateSessionOut> {\r\n let headers = new HttpHeaders({})\r\n\r\n if (token) { headers = headers.set('Authorization', `Bearer ${token}`) }\r\n\r\n return this.http.post<ApiSuccess<CreateSessionOut>>(\r\n `${this.url}/sessions`, {\r\n model_type: modelType,\r\n model_id: modelId,\r\n }, {\r\n headers\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches the authenticated user's information.\r\n * Sends a GET request to the endpoint '/auth/me' to retrieve information\r\n * about the currently authenticated user.\r\n *\r\n * @return {Observable<MeOut>} An observable that emits the authenticated user's data.\r\n */\r\n me (): Observable<MeOut> {\r\n return this.http.get<ApiSuccess<MeOut>>(`${this.url}/auth/me`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches the authenticated user's details from the server.\r\n *\r\n * @param token The JWT token used for authorization.\r\n * @return An Observable that emits the user's details encapsulated in a MeOut object.\r\n */\r\n otherMe (token: string): Observable<MeOut> {\r\n return this.http.get<ApiSuccess<MeOut>>(`${this.url}/auth/me`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`\r\n }\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Fetches a user by their unique ID.\r\n *\r\n * @param {number} id - The unique identifier of the user to be fetched.\r\n * @return {Observable<GetUserOut>} An observable containing the user information.\r\n */\r\n user (id: number): Observable<GetUserOut> {\r\n return this.http.get<ApiSuccess<GetUserOut>>(`${this.url}/users/${id}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Changes the language for the authenticated user.\r\n *\r\n * @param {Object} params - The input parameters for changing the language.\r\n * @param {string} params.languageId - The ID of the new language to be set.\r\n * @return {Observable<ApiSuccess<MeOut>>} An observable that emits the result of the language change request.\r\n */\r\n changeLanguage ({\r\n languageId\r\n }: ChangeLanguageIn): Observable<MeOut> {\r\n return this.http.put<ApiSuccess<MeOut>>(`${this.url}/auth/me`, {\r\n language_id: languageId\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves the role types from the API.\r\n *\r\n * @param {QueryParams} params - The query parameters to be sent with the request.\r\n * @returns {Observable<RoleTypesOut>} An observable containing the role types output.\r\n */\r\n getRoleTypes (params: QueryParams): Observable<RoleTypesOut> {\r\n return this.http.get<ApiSuccess<RoleTypesOut>>(`${this.url}/role-types`, {\r\n params\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves the permissions for a module.\r\n *\r\n * @param {QueryParams} params - The query parameters to be sent with the request.\r\n * @returns {Observable<ModulePermissionsOut>} An observable containing the module permissions.\r\n */\r\n getPermissions (params: QueryParams): Observable<ModulePermissionsOut> {\r\n return this.http.get<ApiSuccess<ModulePermissionsOut>>(`${this.url}/modules`, {\r\n params\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves roles by the specified ID.\r\n *\r\n * @param params - The ID of the role to retrieve.\r\n * @returns An Observable that emits the role data.\r\n */\r\n getRolesById (params: number): Observable<RoleByIdOut> {\r\n return this.http.get<ApiSuccess<RoleByIdOut>>(`${this.url}/roles/${params}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Creates a new role with the specified permissions.\r\n *\r\n * @param {RolePermissionsIn} body - The permissions and details for the new role.\r\n * @returns {Observable<ModulePermissionsOut>} An observable containing the created role's permissions.\r\n */\r\n createRole (body: RolePermissionsIn): Observable<ModulePermissionsOut> {\r\n return this.http.post<ApiSuccess<ModulePermissionsOut>>(`${this.url}/roles`, body)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Updates the permissions of a specific role.\r\n *\r\n * @param id - The unique identifier of the role to update.\r\n * @param body - The new permissions to assign to the role.\r\n * @returns An Observable that emits the updated module permissions.\r\n */\r\n updateRolePermissions (id: number, body: RolePermissionsIn): Observable<ModulePermissionsOut> {\r\n return this.http.put<ApiSuccess<ModulePermissionsOut>>(`${this.url}/roles/${id}`, body)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Deletes the permissions associated with a specific role.\r\n *\r\n * @param {number} id - The unique identifier of the role whose permissions are to be deleted.\r\n * @returns {Observable<{}>} An observable that emits the result of the delete operation.\r\n */\r\n deleteRolePermissions (id: number): Observable<{}> {\r\n return this.http.delete<ApiSuccess<{}>>(`${this.url}/roles/${id}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { map, Observable } from 'rxjs'\r\nimport { ApiSuccess } from './models/api.models'\r\nimport { ValidateAccountIn, ValidateAccountOut } from './models/api-shipments.types'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiShipmentsService {\r\n constructor (\r\n @Inject('env') private environments: Environment,\r\n private http: HttpClient\r\n ) { }\r\n\r\n /**\r\n * Retrieves the URL for the shipments API from the environment configurations.\r\n *\r\n * @return {string} The URL of the shipments API.\r\n */\r\n get url (): string {\r\n return this.environments.apiShipmentUrl\r\n }\r\n\r\n /**\r\n * Retrieves the parameter values based on the provided parameter names.\r\n *\r\n * @param {ValidateAccountIn} body - An object of parameter names for which the values need to be fetched.\r\n * @return {Observable<ValidateAccountIn>} An observable that emits the fetched parameter values\r\n * @param body\r\n */\r\n validateAccount (body: ValidateAccountIn): Observable<ValidateAccountOut> {\r\n return this.http.post<ApiSuccess<ValidateAccountOut>>(`${this.url}/accounts`, body)\r\n .pipe(map(({ data }) => data))\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Environment } from '../ngx-services.models'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CryptoService {\r\n constructor (\r\n @Inject('env') private environments: Environment\r\n ) {\r\n }\r\n\r\n public async encryptAES (plaintext: string): Promise<string> {\r\n const cryptoKey = await this.loadKey()\r\n\r\n // Convert the plaintext in Uint8Array\r\n const encoder = new TextEncoder()\r\n const encoded = encoder.encode(plaintext)\r\n\r\n // Generate a random Initialization Vector (IV)\r\n const iv = crypto.getRandomValues(new Uint8Array(12))\r\n\r\n // Encrypt the plaintext\r\n const ciphertext = await crypto.subtle.encrypt(\r\n {\r\n name: 'AES-GCM',\r\n iv,\r\n },\r\n cryptoKey,\r\n encoded\r\n )\r\n\r\n return `${this.uint8ArrayToBase64(iv)}:${this.arrayBufferToBase64(ciphertext)}`\r\n }\r\n\r\n public async decryptAES (payload: string): Promise<string> {\r\n // Extract the Initialization Vector (IV), and the cypher text\r\n const [base64IV, base64Ciphertext] = payload.split(':')\r\n\r\n if (!base64IV || !base64Ciphertext) { throw new Error('The payload must contain the IV and the cipher text.') }\r\n\r\n const cryptoKey = await this.loadKey()\r\n\r\n const iv = this.base64ToUint8Array(base64IV)\r\n const cipherText = this.base64ToArrayBuffer(base64Ciphertext)\r\n\r\n // Decrypt the cypher text\r\n const decrypted = await crypto.subtle.decrypt(\r\n {\r\n name: 'AES-GCM',\r\n iv,\r\n },\r\n cryptoKey,\r\n cipherText\r\n )\r\n\r\n // Decode the decrypted text\r\n const decoder = new TextDecoder()\r\n return decoder.decode(decrypted)\r\n }\r\n\r\n private async loadKey () {\r\n // Decode the base64 key to Uint8Array\r\n const rawKey = this.base64ToUint8Array(this.environments.secretKey)\r\n\r\n // Import the key to API Crypto\r\n return await crypto.subtle.importKey(\r\n 'raw',\r\n rawKey,\r\n { name: 'AES-GCM' },\r\n true,\r\n ['encrypt', 'decrypt']\r\n )\r\n }\r\n\r\n private uint8ArrayToBase64 (data: Uint8Array): string {\r\n let binary = ''\r\n const len = data.byteLength\r\n\r\n for (let i = 0; i < len; i++) {\r\n binary += String.fromCharCode(data[i])\r\n }\r\n\r\n return btoa(binary)\r\n }\r\n\r\n private base64ToUint8Array (base64: string): Uint8Array {\r\n const binaryString = atob(base64)\r\n const len = binaryString.length\r\n const bytes = new Uint8Array(len)\r\n for (let i = 0; i < len; i++) {\r\n bytes[i] = binaryString.charCodeAt(i)\r\n }\r\n return bytes\r\n }\r\n\r\n private arrayBufferToBase64 (buffer: ArrayBuffer): string {\r\n let binary = ''\r\n const bytes = new Uint8Array(buffer)\r\n const len = bytes.byteLength\r\n\r\n for (let i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i])\r\n }\r\n\r\n return btoa(binary)\r\n }\r\n\r\n private base64ToArrayBuffer (base64: string): ArrayBuffer {\r\n const binaryString = atob(base64)\r\n const len = binaryString.length\r\n const bytes = new Uint8Array(len)\r\n\r\n for (let i = 0; i < len; i++) {\r\n bytes[i] = binaryString.charCodeAt(i)\r\n }\r\n\r\n return bytes.buffer\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { HttpEvent, HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from '@angular/common/http'\r\nimport { Observable } from 'rxjs'\r\n\r\n@Injectable()\r\nexport class ApiHeadersInterceptor implements HttpInterceptor {\r\n /**\r\n * Intercepts HTTP requests and modifies request headers to include caching, content type,\r\n * accept language, and other HTTP-specific configurations before forwarding the request onward.\r\n *\r\n * @param {HttpRequest<unknown>} request - The HTTP request instance to be intercepted and modified.\r\n * @param {HttpHandler} next - The next handler instance in the HTTP pipeline which processes\r\n * the modified request and forwards it.\r\n * @return {Observable<HttpEvent<unknown>>} An observable of the processed HTTP event.\r\n */\r\n intercept (request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n let headers = new HttpHeaders({\r\n 'cache-control': 'max-age=0, no-cache, no-store, must-revalidate',\r\n expires: '0',\r\n pragma: 'no-cache'\r\n })\r\n\r\n if (!request.headers.has('Content-Type')) {\r\n headers = headers.set('Content-Type', 'application/json')\r\n }\r\n\r\n if (!request.headers.has('Accept')) {\r\n headers = headers.set('Accept', 'application/json')\r\n }\r\n\r\n if (!request.headers.has('Accept-Language')) {\r\n headers = headers.set('Accept-Language', localStorage.getItem('lang') ?? 'en')\r\n }\r\n\r\n request = request.clone({ headers })\r\n\r\n return next.handle(request)\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http'\r\nimport { Observable } from 'rxjs'\r\nimport { CookieService } from 'ngx-cookie-service'\r\nimport { Environment } from '../ngx-services.models'\r\n\r\n@Injectable()\r\nexport class ApiTokenInterceptor implements HttpInterceptor {\r\n constructor (\r\n @Inject('env') private environments: Environment,\r\n private cookie: CookieService\r\n ) {}\r\n\r\n /**\r\n * Intercepts and modifies the outgoing HTTP request to include an authorization token\r\n * from cookies if the request does not already have an Authorization or AppKey header.\r\n *\r\n * @param {HttpRequest<unknown>} request - The outgoing HTTP request to be intercepted.\r\n * @param {HttpHandler} next - The next handler in the HTTP request processing chain.\r\n * @return {Observable<HttpEvent<unknown>>} An observable of the HTTP event, modified or unmodified.\r\n */\r\n intercept (request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n if (request.headers.has('Authorization') || request.headers.has('AppKey')) {\r\n return next.handle(request)\r\n }\r\n\r\n const token = this.cookie.get(this.environments.authCookie)\r\n\r\n if (!token) return next.handle(request)\r\n\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`\r\n }\r\n })\r\n\r\n return next.handle(request)\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http'\r\n\r\nimport { Observable, of } from 'rxjs'\r\nimport { tap } from 'rxjs/operators'\r\nimport { Environment } from '../ngx-services.models'\r\n\r\nconst DEFAULT_TTL = 10000 // ttl in ms\r\n\r\n@Injectable()\r\nexport class HttpCachingInterceptor implements HttpInterceptor {\r\n private cache = new Map<string, { ttl: number, res: HttpResponse<any> }>()\r\n\r\n constructor (@Inject('env') private envs: Environment) {}\r\n\r\n /**\r\n * Intercepts HTTP requests to add caching functionality for GET requests.\r\n * Non-GET requests are passed through without caching.\r\n *\r\n * @param {HttpRequest<any>} req - The HTTP request being intercepted.\r\n * @param {HttpHandler} next - The next handler in the HTTP pipeline to execute the request.\r\n * @return {Observable<HttpEvent<any>>} - An observable containing the HTTP response event, either from cache or the backend service.\r\n */\r\n intercept (req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (req.method !== 'GET') { return next.handle(req) }\r\n\r\n const cached = this.cache.get(req.urlWithParams)\r\n\r\n if (cached) {\r\n const isExpired = Date.now() > cached.ttl\r\n\r\n if (!isExpired) { return of(cached.res) }\r\n\r\n this.cache.delete(req.urlWithParams) // If expired, remove the entry from cache\r\n }\r\n\r\n return next.handle(req).pipe(\r\n tap((res) => {\r\n if (!(res instanceof HttpResponse)) { return }\r\n\r\n const ttl = Date.now() + (this.envs.cacheTtl ?? DEFAULT_TTL)\r\n\r\n this.cache.set(req.urlWithParams, { res, ttl })\r\n })\r\n )\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-services\r\n */\r\nexport * from './lib/ngx-services.module'\r\n\r\n// api services\r\nexport * from './lib/apis/api-companies.service'\r\nexport * from './lib/apis/api-invoices.service'\r\nexport * from './lib/apis/api-reports.service'\r\nexport * from './lib/apis/api-security.service'\r\nexport * from './lib/apis/api-shipments.service'\r\n\r\n// api models\r\nexport * from './lib/apis/models/api-companies.interfaces'\r\nexport * from './lib/apis/models/api-companies.types'\r\nexport * from './lib/apis/models/api-invoices.interfaces'\r\nexport * from './lib/apis/models/api-invoices.types'\r\nexport * from './lib/apis/models/api-reports.interfaces'\r\nexport * from './lib/apis/models/api-security.interfaces'\r\nexport * from './lib/apis/models/api-security.types'\r\nexport * from './lib/apis/models/api-shipments.types'\r\nexport * from './lib/apis/models/api.models'\r\n\r\n// cypher\r\nexport * from './lib/cypher/crypto.service'\r\n\r\n// interceptors\r\nexport * from './lib/interceptors/api-headers.interceptor'\r\nexport * from './lib/interceptors/api-token.interceptor'\r\nexport * from './lib/interceptors/http-caching.interceptor'\r\n\r\n// helpers\r\nexport * from './lib/helpers/http'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","tap"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Environment } from '../ngx-services.models';
2
2
  import { HttpClient } from '@angular/common/http';
3
- import { AccountEntitiesData, CompanyCountriesData, CompanyCountryData, CompanyCountryTaxesData, CountryReferenceCurrenciesData, CountryReferenceData, CountryReferencesData, EmployeeData, EmployeesData, ExchangesData, InstallationData, InstallationsData, LocationData, LocationEmployeesData, LocationsData, ParametersData, ParametersProps, ParameterValueData, ParameterValueProps, SupplyEntitiesData, WorkflowsData } from './models/api-companies.types';
3
+ import { AccountEntitiesOut, CompanyCountriesOut, CompanyCountryOut, CompanyCountryTaxesOut, CountryExchangesOut, CountryReferenceCurrenciesOut, CountryReferenceOut, CountryReferencesOut, EmployeeOut, EmployeesOut, ExchangesOut, InstallationOut, InstallationsOut, LocationEmployeesOut, LocationOut, LocationsOut, ParametersIn, ParametersOut, ParameterValueIn, ParameterValueOut, SupplyEntitiesOut, WorkflowsOut } from './models/api-companies.types';
4
4
  import { QueryParams } from './models/api.models';
5
5
  import { Observable } from 'rxjs';
6
6
  import { CountryCurrencyRate } from './models/api-companies.interfaces';
@@ -19,79 +19,79 @@ export declare class ApiCompaniesService {
19
19
  * Fetches the installations based on the provided query parameters.
20
20
  *
21
21
  * @param {QueryParams} params - The parameters used to filter the installations query.
22
- * @return {Observable<InstallationsData>} An observable that emits the installations data.
22
+ * @return {Observable<InstallationsOut>} An observable that emits the installation's data.
23
23
  */
24
- getInstallations(params: QueryParams): Observable<InstallationsData>;
24
+ getInstallations(params: QueryParams): Observable<InstallationsOut>;
25
25
  /**
26
26
  * Retrieves the installation details based on the given installation ID.
27
27
  *
28
28
  * @param {number} id - The unique identifier of the installation to retrieve.
29
- * @returns {Observable<InstallationData>} An observable of the installation details.
29
+ * @returns {Observable<InstallationOut>} An observable of the installation details.
30
30
  */
31
- getInstallation(id: number): Observable<InstallationData>;
31
+ getInstallation(id: number): Observable<InstallationOut>;
32
32
  /**
33
33
  * Retrieves a list of locations based on the provided query parameters.
34
34
  *
35
35
  * @param {QueryParams} params - The parameters to use for querying locations.
36
- * @return {Observable<LocationsData>} An observable that emits the locations data.
36
+ * @return {Observable<LocationsOut>} An observable that emits the location's data.
37
37
  */
38
- getLocations(params: QueryParams): Observable<LocationsData>;
38
+ getLocations(params: QueryParams): Observable<LocationsOut>;
39
39
  /**
40
40
  * Fetches the location details for a given location ID.
41
41
  *
42
42
  * @param {number} id - The unique identifier of the location.
43
- * @return {Observable<LocationData>} An Observable containing the location details.
43
+ * @return {Observable<LocationOut>} An Observable containing the location details.
44
44
  */
45
- getLocation(id: number): Observable<LocationData>;
45
+ getLocation(id: number): Observable<LocationOut>;
46
46
  /**
47
47
  * Retrieves a list of active supply entities.
48
48
  *
49
49
  * @param {QueryParams} params - The query parameters to filter supply entities.
50
- * @return {Observable<SupplyEntitiesData>} Observable emitting supply entities data.
50
+ * @return {Observable<SupplyEntitiesOut>} Observable emitting supply entities data.
51
51
  */
52
- getSupplyEntitiesActive(params: QueryParams): Observable<SupplyEntitiesData>;
52
+ getSupplyEntitiesActive(params: QueryParams): Observable<SupplyEntitiesOut>;
53
53
  /**
54
54
  * Fetches a list of employees based on the specified query parameters.
55
55
  *
56
56
  * @param {QueryParams} params - The parameters to filter and sort the employees.
57
- * @return {Observable<EmployeesData>} An observable that emits the list of employees.
57
+ * @return {Observable<EmployeesOut>} An observable that emits the list of employees.
58
58
  */
59
- getEmployees(params: QueryParams): Observable<EmployeesData>;
59
+ getEmployees(params: QueryParams): Observable<EmployeesOut>;
60
60
  /**
61
61
  * Fetches an employee's details based on the provided employee ID.
62
62
  *
63
63
  * @param {number} id - The unique identifier of the employee.
64
- * @return {Observable<EmployeeData>} An observable that emits the employee's details.
64
+ * @return {Observable<EmployeeOut>} An observable that emits the employee's details.
65
65
  */
66
- getEmployee(id: number): Observable<EmployeeData>;
66
+ getEmployee(id: number): Observable<EmployeeOut>;
67
67
  /**
68
68
  * Retrieves the list of employees for a specified location based on provided query parameters.
69
69
  *
70
70
  * @param {QueryParams} params - The query parameters used to filter and retrieve the location employees.
71
- * @returns {Observable<LocationEmployeesData>} An observable that emits the list of employees for the specified location.
71
+ * @returns {Observable<LocationEmployeesOut>} An observable that emits the list of employees for the specified location.
72
72
  */
73
- getLocationEmployees(params: QueryParams): Observable<LocationEmployeesData>;
73
+ getLocationEmployees(params: QueryParams): Observable<LocationEmployeesOut>;
74
74
  /**
75
75
  * Retrieves a list of countries where the company operates.
76
76
  *
77
77
  * @param {QueryParams} params - The query parameters for the API request.
78
- * @return {Observable<CompanyCountriesData>} An observable containing the list of company countries.
78
+ * @return {Observable<CompanyCountriesOut>} An observable containing the list of company countries.
79
79
  */
80
- getCompanyCountries(params: QueryParams): Observable<CompanyCountriesData>;
80
+ getCompanyCountries(params: QueryParams): Observable<CompanyCountriesOut>;
81
81
  /**
82
82
  * Retrieves the country information for a specified company by its ID.
83
83
  *
84
84
  * @param {number} id - The unique identifier of the company.
85
- * @return {Observable<CompanyCountryData>} An observable containing the country information of the company.
85
+ * @return {Observable<CompanyCountryOut>} An observable containing the country information of the company.
86
86
  */
87
- getCompanyCountry(id: number): Observable<CompanyCountryData>;
87
+ getCompanyCountry(id: number): Observable<CompanyCountryOut>;
88
88
  /**
89
89
  * Fetches the reference currencies for a given country.
90
90
  *
91
91
  * @param {QueryParams} params - The query parameters to include in the request.
92
- * @return {Observable<CountryReferenceCurrenciesData>} The observable containing the country reference currencies data.
92
+ * @return {Observable<CountryReferenceCurrenciesOut>} The observable containing the country reference currencies data.
93
93
  */
94
- getCountryReferenceCurrencies(params: QueryParams): Observable<CountryReferenceCurrenciesData>;
94
+ getCountryReferenceCurrencies(params: QueryParams): Observable<CountryReferenceCurrenciesOut>;
95
95
  /**
96
96
  * Retrieves a list of currencies for different countries along with their current exchange rates.
97
97
  *
@@ -99,65 +99,72 @@ export declare class ApiCompaniesService {
99
99
  * @return {Observable<CountryCurrencyRate[]>} An observable that emits an array of country currency rates.
100
100
  */
101
101
  getCountryCurrenciesWithRate(params: QueryParams): Observable<CountryCurrencyRate[]>;
102
+ /**
103
+ * Fetches exchange data based on the provided query parameters.
104
+ *
105
+ * @param {QueryParams} params - The query parameters for retrieving exchange data.
106
+ * @return {Observable<CountryExchangesOut>} An observable containing the exchange data.
107
+ */
108
+ getExchanges(params: QueryParams): Observable<CountryExchangesOut>;
102
109
  /**
103
110
  * Retrieves the current exchanges based on the given query parameters.
104
111
  *
105
112
  * @param {QueryParams} params - The query parameters to filter the exchanges.
106
113
  *
107
- * @returns {Observable<ExchangesData>} - An observable that emits the API response data containing the current exchanges.
114
+ * @returns {Observable<ExchangesOut>} - An observable that emits the API response data containing the current exchanges.
108
115
  */
109
- getCurrentExchanges(params: QueryParams): Observable<ExchangesData>;
116
+ getCurrentExchanges(params: QueryParams): Observable<ExchangesOut>;
110
117
  /**
111
118
  * Fetches the country-specific tax information for a company.
112
119
  *
113
120
  * @param {QueryParams} params - The parameters used to filter and query the taxes.
114
- * @return {Observable<CompanyCountryTaxesData>} An observable that emits the tax information.
121
+ * @return {Observable<CompanyCountryTaxesOut>} An observable that emits the tax information.
115
122
  */
116
- getCompanyCountryTaxes(params: QueryParams): Observable<CompanyCountryTaxesData>;
123
+ getCompanyCountryTaxes(params: QueryParams): Observable<CompanyCountryTaxesOut>;
117
124
  /**
118
125
  * Retrieves the list of active account entities based on the provided query parameters.
119
126
  *
120
127
  * @param {QueryParams} params - The parameters to filter and query active account entities.
121
- * @return {Observable<AccountEntitiesData>} An observable that emits the list of active account entities.
128
+ * @return {Observable<AccountEntitiesOut>} An observable that emits the list of active account entities.
122
129
  */
123
- getActiveAccountEntities(params: QueryParams): Observable<AccountEntitiesData>;
130
+ getActiveAccountEntities(params: QueryParams): Observable<AccountEntitiesOut>;
124
131
  /**
125
132
  * Retrieves the parameter values based on the provided parameter names.
126
133
  *
127
134
  * @param {Object} params - An object containing the required parameters.
128
135
  * @param {string[]} params.paramNames - An array of parameter names for which the values need to be fetched.
129
- * @return {Observable<ParametersData>} An observable that emits the fetched parameter values.
136
+ * @return {Observable<ParametersOut>} An observable that emits the fetched parameter values.
130
137
  */
131
- getParameters({ paramNames, }: ParametersProps): Observable<ParametersData>;
138
+ getParameters({ paramNames, }: ParametersIn): Observable<ParametersOut>;
132
139
  /**
133
140
  * Retrieves the value of a specified parameter.
134
141
  *
135
142
  * @param {Object} input - The input object containing the parameter details.
136
143
  * @param {string} input.paramName - The name of the parameter whose value is to be retrieved.
137
- * @return {Observable<ParameterValueData>} An observable emitting the value of the specified parameter.
144
+ * @return {Observable<ParameterValueOut>} An observable emitting the value of the specified parameter.
138
145
  */
139
- getParameterValue({ paramName, }: ParameterValueProps): Observable<ParameterValueData>;
146
+ getParameterValue({ paramName, }: ParameterValueIn): Observable<ParameterValueOut>;
140
147
  /**
141
148
  * Retrieves a list of country references based on the given query parameters.
142
149
  *
143
150
  * @param {QueryParams} params - The query parameters for retrieving country references.
144
- * @return {Observable<CountryReferencesData>} An observable containing the country reference data.
151
+ * @return {Observable<CountryReferencesOut>} An observable containing the country reference data.
145
152
  */
146
- getCountryReferences(params: QueryParams): Observable<CountryReferencesData>;
153
+ getCountryReferences(params: QueryParams): Observable<CountryReferencesOut>;
147
154
  /**
148
155
  * Fetches the country reference data for a given country ID.
149
156
  *
150
157
  * @param {number} id - The unique identifier of the country for which the reference data is to be retrieved.
151
- * @return {Observable<CountryReferenceData>} An observable containing the country reference data.
158
+ * @return {Observable<CountryReferenceOut>} An observable containing the country reference data.
152
159
  */
153
- getCountryReference(id: number): Observable<CountryReferenceData>;
160
+ getCountryReference(id: number): Observable<CountryReferenceOut>;
154
161
  /**
155
162
  * Fetches the list of workflows based on the provided query parameters.
156
163
  *
157
164
  * @param {QueryParams} params - The query parameters used to filter workflows.
158
- * @return {Observable<WorkflowsData>} An observable containing the workflow data.
165
+ * @return {Observable<WorkflowsOut>} An observable containing the workflow data.
159
166
  */
160
- getWorkflows(params: QueryParams): Observable<WorkflowsData>;
167
+ getWorkflows(params: QueryParams): Observable<WorkflowsOut>;
161
168
  static ɵfac: i0.ɵɵFactoryDeclaration<ApiCompaniesService, never>;
162
169
  static ɵprov: i0.ɵɵInjectableDeclaration<ApiCompaniesService>;
163
170
  }
@@ -0,0 +1,48 @@
1
+ import { Environment } from '../ngx-services.models';
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { Observable } from 'rxjs';
4
+ import { AccountPaymentOperationOut, AccountPaymentOperationIn, CancelBillingIn, CancelPaymentReceiptIn, CollectionReceiptOut } from './models/api-invoices.types';
5
+ import * as i0 from "@angular/core";
6
+ export declare class ApiInvoicesService {
7
+ private environments;
8
+ private http;
9
+ constructor(environments: Environment, http: HttpClient);
10
+ /**
11
+ * Retrieves the API URL for invoices from the environments configuration.
12
+ *
13
+ * @return {string} The API URL for invoices.
14
+ */
15
+ get url(): string;
16
+ /**
17
+ * Fetches and returns the collection receipt data for a given collection ID.
18
+ *
19
+ * @param {number} id - The unique identifier of the collection for which the receipt needs to be retrieved.
20
+ * @return {Observable<CollectionReceiptOut>} An observable containing the collection receipt data.
21
+ */
22
+ printCollectionReceipt(id: number): Observable<CollectionReceiptOut>;
23
+ /**
24
+ * Handles the account payment operation by sending a POST request to the specified endpoint.
25
+ * Processes the response and returns the operation data.
26
+ *
27
+ * @param {AccountPaymentOperationIn} body The payload containing information for the account payment operation.
28
+ * @return {Observable<AccountPaymentOperationOut>} An observable emitting the processed account payment operation data.
29
+ */
30
+ accountPaymentOperation(body: AccountPaymentOperationIn): Observable<AccountPaymentOperationOut>;
31
+ /**
32
+ * Cancels a payment receipt based on the provided input.
33
+ * This method sends a POST request to cancel a document.
34
+ *
35
+ * @param body The data required to cancel the payment receipt, encapsulated in a CancelPaymentReceiptIn object.
36
+ * @return An Observable representing the result of the cancellation. Emits an empty object on success.
37
+ */
38
+ cancelPaymentReceipt(body: CancelPaymentReceiptIn): Observable<{}>;
39
+ /**
40
+ * Cancels an invoice based on the provided invoice ID and additional parameters.
41
+ *
42
+ * @param {Object} parameters - The parameters required to cancel the invoice, encapsulated in a CancelBillingIn object.
43
+ * @return {Observable<Object>} An observable that emits the response of the cancellation operation.
44
+ */
45
+ cancelInvoice({ invoiceId, ...body }: CancelBillingIn): Observable<{}>;
46
+ static ɵfac: i0.ɵɵFactoryDeclaration<ApiInvoicesService, never>;
47
+ static ɵprov: i0.ɵɵInjectableDeclaration<ApiInvoicesService>;
48
+ }
@@ -0,0 +1,26 @@
1
+ import { Environment } from '../ngx-services.models';
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { Observable } from 'rxjs';
4
+ import { QueryParams } from './models/api.models';
5
+ import { CollectionPaymentsOut } from './models/api-reports.types';
6
+ import * as i0 from "@angular/core";
7
+ export declare class ApiReportsService {
8
+ private environments;
9
+ private http;
10
+ constructor(environments: Environment, http: HttpClient);
11
+ /**
12
+ * Retrieves the URL for the reports API from the environment configurations.
13
+ *
14
+ * @return {string} The URL of the reports API.
15
+ */
16
+ get url(): string;
17
+ /**
18
+ * Retrieves the list of collection payments
19
+ *
20
+ * @param {QueryParams} params - The query parameters used to fetch the collection payments.
21
+ * @return {Observable<CollectionPaymentsOut[]>} An observable that emits an array of collection payment.
22
+ */
23
+ getCollectionPayments(params: QueryParams): Observable<CollectionPaymentsOut>;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<ApiReportsService, never>;
25
+ static ɵprov: i0.ɵɵInjectableDeclaration<ApiReportsService>;
26
+ }