http-request-manager 0.0.2 → 0.0.20

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 (103) hide show
  1. package/README.md +262 -13
  2. package/esm2022/http-request-manager.mjs +5 -0
  3. package/esm2022/lib/interceptors/credentials.interceptor.mjs +14 -0
  4. package/esm2022/lib/interceptors/index.mjs +5 -0
  5. package/esm2022/lib/interceptors/models/error-settings.model.mjs +10 -0
  6. package/esm2022/lib/interceptors/request-error.interceptor.mjs +49 -0
  7. package/esm2022/lib/interceptors/request-header.interceptor.mjs +41 -0
  8. package/esm2022/lib/models/data-type.enum.mjs +7 -0
  9. package/esm2022/lib/models/database-storage.model.mjs +10 -0
  10. package/esm2022/lib/models/index.mjs +4 -0
  11. package/esm2022/lib/models/retry-options.model.mjs +10 -0
  12. package/esm2022/lib/services/index.mjs +6 -0
  13. package/esm2022/lib/services/local-storage-manager-service/index.mjs +3 -0
  14. package/esm2022/lib/services/local-storage-manager-service/local-storage-manager.service.mjs +275 -0
  15. package/esm2022/lib/services/local-storage-manager-service/models/global-store-options.model.mjs +13 -0
  16. package/esm2022/lib/services/local-storage-manager-service/models/index.mjs +7 -0
  17. package/esm2022/lib/services/local-storage-manager-service/models/setting-options.model.mjs +13 -0
  18. package/esm2022/lib/services/local-storage-manager-service/models/storage-data.model.mjs +10 -0
  19. package/esm2022/lib/services/local-storage-manager-service/models/storage-option-settings.model.mjs +13 -0
  20. package/esm2022/lib/services/local-storage-manager-service/models/storage-option.model.mjs +12 -0
  21. package/esm2022/lib/services/local-storage-manager-service/models/storage-type.enum.mjs +7 -0
  22. package/esm2022/lib/services/request-manager-services/http-manager.service.mjs +172 -0
  23. package/esm2022/lib/services/request-manager-services/index.mjs +5 -0
  24. package/esm2022/lib/services/request-manager-services/request.service.mjs +159 -0
  25. package/esm2022/lib/services/request-manager-services/rxjs-operators/countdown.mjs +9 -0
  26. package/esm2022/lib/services/request-manager-services/rxjs-operators/delay-retry.mjs +8 -0
  27. package/esm2022/lib/services/request-manager-services/rxjs-operators/index.mjs +5 -0
  28. package/esm2022/lib/services/request-manager-services/rxjs-operators/request-polling.mjs +14 -0
  29. package/esm2022/lib/services/request-manager-services/rxjs-operators/request-streaming.mjs +19 -0
  30. package/esm2022/lib/services/request-manager-state-service/http-manager-state.store.mjs +299 -0
  31. package/esm2022/lib/services/request-manager-state-service/index.mjs +3 -0
  32. package/esm2022/lib/services/request-manager-state-service/models/api-request.model.mjs +20 -0
  33. package/esm2022/lib/services/request-manager-state-service/models/index.mjs +3 -0
  34. package/esm2022/lib/services/request-manager-state-service/models/request-options.model.mjs +10 -0
  35. package/esm2022/lib/services/utils/app.service.mjs +20 -0
  36. package/esm2022/lib/services/utils/encryption/asymmetrical-encryption.service.mjs +186 -0
  37. package/esm2022/lib/services/utils/encryption/encryption-test.service.mjs +35 -0
  38. package/esm2022/lib/services/utils/encryption/index.mjs +4 -0
  39. package/esm2022/lib/services/utils/encryption/random.mjs +52 -0
  40. package/esm2022/lib/services/utils/encryption/symmetrical-encryption.service.mjs +77 -0
  41. package/esm2022/lib/services/utils/headers.service.mjs +21 -0
  42. package/esm2022/lib/services/utils/index.mjs +6 -0
  43. package/esm2022/lib/services/utils/path-query.service.mjs +53 -0
  44. package/esm2022/lib/services/utils/utils.service.mjs +134 -0
  45. package/esm2022/public-api.mjs +7 -0
  46. package/fesm2022/http-request-manager.mjs +1715 -0
  47. package/fesm2022/http-request-manager.mjs.map +1 -0
  48. package/http-request-manager-0.0.20.tgz +0 -0
  49. package/index.d.ts +5 -0
  50. package/lib/interceptors/credentials.interceptor.d.ts +8 -0
  51. package/lib/interceptors/index.d.ts +4 -0
  52. package/lib/interceptors/models/error-settings.model.d.ts +10 -0
  53. package/lib/interceptors/request-error.interceptor.d.ts +10 -0
  54. package/lib/interceptors/request-header.interceptor.d.ts +15 -0
  55. package/lib/models/data-type.enum.d.ts +5 -0
  56. package/lib/models/database-storage.model.d.ts +10 -0
  57. package/lib/models/index.d.ts +3 -0
  58. package/lib/models/retry-options.model.d.ts +10 -0
  59. package/lib/services/index.d.ts +4 -0
  60. package/lib/services/local-storage-manager-service/index.d.ts +2 -0
  61. package/lib/services/local-storage-manager-service/local-storage-manager.service.d.ts +81 -0
  62. package/lib/services/local-storage-manager-service/models/global-store-options.model.d.ts +15 -0
  63. package/lib/services/local-storage-manager-service/models/index.d.ts +6 -0
  64. package/lib/services/local-storage-manager-service/models/setting-options.model.d.ts +15 -0
  65. package/lib/services/local-storage-manager-service/models/storage-data.model.d.ts +10 -0
  66. package/lib/services/local-storage-manager-service/models/storage-option-settings.model.d.ts +15 -0
  67. package/lib/services/local-storage-manager-service/models/storage-option.model.d.ts +13 -0
  68. package/lib/services/local-storage-manager-service/models/storage-type.enum.d.ts +5 -0
  69. package/lib/services/request-manager-services/http-manager.service.d.ts +35 -0
  70. package/lib/services/request-manager-services/index.d.ts +3 -0
  71. package/lib/services/request-manager-services/request.service.d.ts +27 -0
  72. package/lib/services/request-manager-services/rxjs-operators/countdown.d.ts +2 -0
  73. package/lib/services/request-manager-services/rxjs-operators/delay-retry.d.ts +2 -0
  74. package/lib/services/request-manager-services/rxjs-operators/index.d.ts +4 -0
  75. package/lib/services/request-manager-services/rxjs-operators/request-polling.d.ts +7 -0
  76. package/lib/services/request-manager-services/rxjs-operators/request-streaming.d.ts +2 -0
  77. package/lib/services/request-manager-state-service/http-manager-state.store.d.ts +55 -0
  78. package/lib/services/request-manager-state-service/index.d.ts +2 -0
  79. package/lib/services/request-manager-state-service/models/api-request.model.d.ts +25 -0
  80. package/lib/services/request-manager-state-service/models/index.d.ts +2 -0
  81. package/lib/services/request-manager-state-service/models/request-options.model.d.ts +10 -0
  82. package/lib/services/utils/app.service.d.ts +8 -0
  83. package/lib/services/utils/encryption/asymmetrical-encryption.service.d.ts +17 -0
  84. package/lib/services/utils/encryption/encryption-test.service.d.ts +10 -0
  85. package/lib/services/utils/encryption/index.d.ts +3 -0
  86. package/lib/services/utils/encryption/random.d.ts +7 -0
  87. package/lib/services/utils/encryption/symmetrical-encryption.service.d.ts +14 -0
  88. package/lib/services/utils/headers.service.d.ts +10 -0
  89. package/lib/services/utils/index.d.ts +5 -0
  90. package/lib/services/utils/path-query.service.d.ts +11 -0
  91. package/lib/services/utils/utils.service.d.ts +24 -0
  92. package/package.json +17 -3
  93. package/public-api.d.ts +3 -0
  94. package/ng-package.json +0 -7
  95. package/src/lib/http-request-manager.component.spec.ts +0 -21
  96. package/src/lib/http-request-manager.component.ts +0 -15
  97. package/src/lib/http-request-manager.module.ts +0 -16
  98. package/src/lib/http-request-manager.service.spec.ts +0 -16
  99. package/src/lib/http-request-manager.service.ts +0 -9
  100. package/src/public-api.ts +0 -7
  101. package/tsconfig.lib.json +0 -14
  102. package/tsconfig.lib.prod.json +0 -10
  103. package/tsconfig.spec.json +0 -14
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-request-manager.mjs","sources":["../../../projects/http-request-manager/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts","../../../projects/http-request-manager/src/lib/services/local-storage-manager-service/models/storage-option-settings.model.ts","../../../projects/http-request-manager/src/lib/services/local-storage-manager-service/models/storage-option.model.ts","../../../projects/http-request-manager/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts","../../../projects/http-request-manager/src/lib/services/local-storage-manager-service/models/setting-options.model.ts","../../../projects/http-request-manager/src/lib/services/local-storage-manager-service/models/storage-data.model.ts","../../../projects/http-request-manager/src/lib/services/utils/utils.service.ts","../../../projects/http-request-manager/src/lib/services/utils/encryption/random.ts","../../../projects/http-request-manager/src/lib/services/utils/app.service.ts","../../../projects/http-request-manager/src/lib/services/utils/encryption/symmetrical-encryption.service.ts","../../../projects/http-request-manager/src/lib/services/utils/encryption/encryption-test.service.ts","../../../projects/http-request-manager/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts","../../../projects/http-request-manager/src/lib/services/utils/headers.service.ts","../../../projects/http-request-manager/src/lib/services/utils/path-query.service.ts","../../../projects/http-request-manager/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts","../../../projects/http-request-manager/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts","../../../projects/http-request-manager/src/lib/services/request-manager-services/request.service.ts","../../../projects/http-request-manager/src/lib/services/request-manager-services/rxjs-operators/countdown.ts","../../../projects/http-request-manager/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts","../../../projects/http-request-manager/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts","../../../projects/http-request-manager/src/lib/services/request-manager-services/http-manager.service.ts","../../../projects/http-request-manager/src/lib/models/database-storage.model.ts","../../../projects/http-request-manager/src/lib/models/retry-options.model.ts","../../../projects/http-request-manager/src/lib/models/data-type.enum.ts","../../../projects/http-request-manager/src/lib/services/request-manager-state-service/models/api-request.model.ts","../../../projects/http-request-manager/src/lib/services/request-manager-state-service/models/request-options.model.ts","../../../projects/http-request-manager/src/lib/services/request-manager-state-service/http-manager-state.store.ts","../../../projects/http-request-manager/src/lib/services/index.ts","../../../projects/http-request-manager/src/lib/interceptors/models/error-settings.model.ts","../../../projects/http-request-manager/src/lib/interceptors/credentials.interceptor.ts","../../../projects/http-request-manager/src/lib/interceptors/request-header.interceptor.ts","../../../projects/http-request-manager/src/lib/interceptors/request-error.interceptor.ts","../../../projects/http-request-manager/src/public-api.ts","../../../projects/http-request-manager/src/http-request-manager.ts"],"sourcesContent":["export enum StorageType {\n GLOBAL,\n SESSION,\n DB\n}\n","import { StorageType } from \"./storage-type.enum\"\n\nexport interface StorageOptionSettingsInterface {\n storage?: StorageType\n expires?: number\n expiresIn?: string\n encrypted?: boolean\n}\n\nexport class StorageOptionSettings implements StorageOptionSettingsInterface {\n\n constructor(\n public storage = StorageType.GLOBAL,\n public expires?: number,\n public expiresIn?: string,\n public encrypted?: boolean,\n ) {}\n\n static adapt(item?: any): StorageOptionSettings {\n\n return new StorageOptionSettings(\n (item?.storage) ? item.storage : StorageType.GLOBAL,\n (item?.expires) ? item.expires : 0,\n (item?.expiresIn) ? item.expiresIn : '',\n (item?.encrypted) ? item.encrypted : false,\n )\n\n }\n\n}\n","import { StorageOptionSettings } from \"./storage-option-settings.model\"\n\nexport interface StorageOptionInterface {\n id?: string\n name: string\n options?: StorageOptionSettings\n}\n\nexport class StorageOption implements StorageOptionInterface {\n\n constructor(\n public id?: string,\n public name = 'untitled',\n public options?: StorageOptionSettings,\n ) {}\n\n static adapt(item?: any): StorageOption {\n\n return new StorageOption(\n (item?.id) ? item.id : crypto.randomUUID(),\n item?.name,\n (item?.options) ? StorageOptionSettings.adapt(item.options) : StorageOptionSettings.adapt(),\n )\n\n }\n\n}\n\n\n","import { StorageOption } from \"./storage-option.model\"\n\nexport interface GlobalStoreOptionsInterface {\n encryption?: boolean\n expiresIn?: string\n expires?: number\n stores: StorageOption[]|null\n}\n\nexport class GlobalStoreOptions implements GlobalStoreOptionsInterface {\n\n constructor(\n public encryption = false,\n public expiresIn?: string,\n public expires?: number,\n public stores: StorageOption[]|null = [],\n ) {}\n\n static adapt(item?: any): GlobalStoreOptions {\n\n return new GlobalStoreOptions(\n (item?.encryption) ? item.encryption : false,\n (item?.expiresIn) ? item.expiresIn : '',\n (item?.expires) ? item.expires : 0,\n (item?.stores) ? item.stores.map((item: any) => StorageOption.adapt(item)) : []\n )\n\n }\n\n}\n","import { StorageType } from \"./storage-type.enum\"\n\nexport interface SettingOptionsInterface {\n storage?: StorageType\n expires?: number\n expiresIn?: string\n encrypted?: boolean\n}\n\nexport class SettingOptions implements SettingOptionsInterface {\n\n constructor(\n public storage = StorageType.GLOBAL,\n public expires?: number,\n public expiresIn?: string,\n public encrypted?: boolean,\n ) {}\n\n static adapt(item?: any): SettingOptions {\n\n return new SettingOptions(\n (item?.storage) ? item.storage : StorageType.GLOBAL,\n (item?.expires) ? item.expires : 0,\n (item?.expiresIn) ? item.expiresIn : '',\n (item?.encrypted) ? item?.encrypted : false,\n )\n\n }\n\n}\n","export interface StorageDataInterface {\n id?: string\n data?: any\n}\n\nexport class StorageData implements StorageDataInterface {\n\n constructor(\n public id?: string,\n public data?: any,\n ) {}\n\n static adapt(item?: any): StorageData {\n\n return new StorageData(\n (item?.id) ? item.id : crypto.randomUUID(),\n (item?.data) ? item.data : null\n )\n\n }\n\n}\n\n\n","\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UtilsService {\n\n http = inject(HttpClient)\n\n constructor() { }\n\n isString(x: string | number) {\n return Object.prototype.toString.call(x) === '[object String]'\n }\n\n isObject(obj: any) {\n return Object.prototype.toString.call(obj) === '[object Object]'\n }\n\n JSONToString(value: any) {\n return (this.isObject(value)) ? JSON.stringify(value) : value\n }\n\n stringToJSON(value: string) {\n return (this.isJSON(value)) ? JSON.parse(value) : value\n }\n\n isJSON(str: any) {\n try {\n JSON.parse(str)\n } catch (e) {\n return false\n }\n return true\n }\n\n getValueByProp(obj: any, prop: string) {\n if(typeof obj === 'undefined') return false\n return obj[prop]\n }\n\n objectsEqual(x: any, y: any): boolean {\n\n const ok = Object.keys, tx = typeof x, ty = typeof y\n\n return x && y && tx === 'object' && tx === ty ? (\n ok(x).length === ok(y).length &&\n ok(x).every((key: any) => this.objectsEqual(x[key], y[key]))\n ) : (x === y)\n\n }\n\n getJSON(file: string) {\n return this.http.get(`assets/data/${file}`)\n }\n\n get today() {\n return new Date().getMilliseconds() / 1000\n }\n\n base32ToHex(base32: string): string {\n\n const base32chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\"\n\n const charToValue = (char: string) => base32chars.indexOf(char.toUpperCase())\n\n let bits = ''\n let hex = ''\n\n for (let i = 0; i < base32.length; i++) {\n const val = charToValue(base32.charAt(i))\n bits += val.toString(2).padStart(5, '0')\n }\n\n for (let i = 0; i + 4 <= bits.length; i += 4) {\n const chunk = bits.substr(i, 4)\n hex += parseInt(chunk, 2).toString(16)\n }\n\n return hex.toUpperCase()\n }\n\n binaryToHex(binary: string): string {\n let hex = '';\n for (let i = 0; i < binary.length; i += 8) {\n const byte = binary.substr(i, 8);\n const decimal = parseInt(byte, 2);\n hex += decimal.toString(16).padStart(2, '0');\n }\n return hex.padStart(32, '0').substr(0, 32);\n }\n\n // y = years, m = months, w = weeks, d = days, hr = hours, mn = minutes else seconds\n expires(str?: string) {\n\n if(!str) return\n\n const match = str.match(/[^0-9]+$/)\n\n const type = (match) ? str.slice(-match[0].length) : 0\n\n const now = Math.floor(new Date().getTime() / 1000)\n\n let value = 0;\n\n switch (type) {\n case\n 'y':\n const years = parseInt(str.slice(0, -1))\n value = now + (years * 31556926)\n break;\n case\n 'm':\n const months = parseInt(str.slice(0, -1))\n value = now + (months * 2629743)\n break;\n case\n 'w':\n const weeks = parseInt(str.slice(0, -1))\n value = now + (weeks * 604800)\n break;\n case\n 'd':\n const days = parseInt(str.slice(0, -1))\n value = now + (days * 86400)\n break;\n case\n 'hr':\n const hrs = parseInt(str.slice(0, -2))\n value = now + (hrs * 3600)\n break;\n case\n 'mn':\n const min = parseInt(str.slice(0, -2))\n value = now + (min * 60)\n break;\n default: //seconds\n const sec = parseInt(str.slice(0, -1))\n value = now + (sec)\n break;\n }\n return value;\n }\n\n hasExpired(expiryDate: number): boolean {\n if (!expiryDate || expiryDate === 0) return false\n const currentTime = Math.floor(new Date().getTime() / 1000)\n return expiryDate < currentTime\n }\n\n hasExpiry(setting: any) {\n return (setting?.expires) ? true : false\n }\n\n expiresIn(expiryDate: number) {\n if (!expiryDate) return;\n const now = Math.floor(new Date().getTime() / 1000);\n return expiryDate - now;\n }\n\n lc = (str: string) => str.toLowerCase().replace(/[^\\w\\s]/g, '').replace(/\\s+/g, '_')\n\n}\n","export const Random = () => {\n const typedArray = new Uint8Array(1)\n const randomValue = crypto.getRandomValues(typedArray)[0]\n const randomFloat = randomValue / Math.pow(2, 8)\n return randomFloat\n}\n\nexport const RandomNumber = (min: number, max: number) => {\n return Math.floor(Random() * max) + min\n}\n\nexport const RandomNumbers = (min: number, max: number, length: number) => {\n const numbers: number[] = []\n for (let i = 0; i < length; i++) numbers.push(Math.floor(Random() * max) + min)\n return numbers\n}\n\nexport const RandomNumbersUnique = (min: number, max: number, length: number) => {\n let count = 0;\n\n // Adjust the length if it exceeds the number of unique numbers possible in the range\n if (length > (max - min + 1)) {\n console.error('error encountered');\n length = max - min + 1;\n }\n\n console.log('length', length);\n const numbers: number[] = [];\n const maxAttempts = length * 100 ; // Safeguard to prevent infinite loops\n\n while (numbers.length < length && count < maxAttempts) {\n\n const num = Math.floor(Random() * max) + min;\n\n if (!numbers.includes(num)) {\n numbers.push(num);\n }\n }\n\n if (count >= maxAttempts) {\n throw new Error('Maximum attempts exceeded while generating unique numbers');\n }\n\n return numbers;\n};\n\nexport const RandomStr = () => {\n\n const typedArray = new Uint8Array(8)\n const array = new Uint32Array(1)\n crypto.getRandomValues(array)\n return array[0].toString(36)\n\n}\n\nexport const RandomSignature = () => {\n\n const typedArray = new Uint8Array(8)\n const array = new Uint32Array(1)\n crypto.getRandomValues(array)\n return array[0]\n\n}\n\nexport const UUID = () => {\n return self.crypto.randomUUID()\n}\n\n\n","import { APP_ID, Inject, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppService {\n\n appID: string\n\n constructor(@Inject(APP_ID) private id: string) {\n this.appID = this.id\n }\n\n}\n","import { Injectable, inject } from '@angular/core';\nimport * as CryptoJS from 'crypto-js';\n\nimport { RandomSignature } from './random';\nimport { AppService } from '../app.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SymmetricalEncryptionService {\n\n appID: string; // APP SERVICE TO MANAGER ENCRYPTION KEY\n\n private appService = inject(AppService)\n\n constructor() {\n // TODO: The APP ID is not a string, it is a function\n this.appID = (this.appService.appID) ? this.appService.appID : ''\n if(this.appID === '') console.warn('No App Key has been define')\n }\n\n generateCipherKey() {\n return (RandomSignature().toString() + RandomSignature().toString()).substring(0, 8)\n }\n\n encrypt(str: any, key = this.appID) {\n\n if(!str || key === '') return ''\n\n let _key = CryptoJS.enc.Utf8.parse(key)\n let _iv = CryptoJS.enc.Utf8.parse(key)\n\n try {\n\n const encrypted = CryptoJS.AES.encrypt(\n JSON.stringify(str), _key, {\n keySize: 16,\n iv: _iv,\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.Pkcs7\n });\n\n return encrypted.toString()\n\n } catch(error: any) {\n console.log(error)\n }\n\n return\n }\n\n decrypt(str: string, key = this.appID) {\n\n if(!str || key === '') return\n\n let _key = CryptoJS.enc.Utf8.parse(key)\n let _iv = CryptoJS.enc.Utf8.parse(key)\n\n try {\n\n return CryptoJS.AES.decrypt(\n str, _key, {\n keySize: 16,\n iv: _iv,\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.Pkcs7\n }).toString(CryptoJS.enc.Utf8);\n\n } catch(error: any) {\n console.log(error)\n }\n\n return\n }\n\n createSignature(url: string, len = 16) {\n const sig = CryptoJS.SHA256(url).toString(CryptoJS.enc.Hex)\n return sig.substring(0, len).toUpperCase()\n }\n\n normalizeURL(url: string) {\n const normalizedURL = url.replace(/(https?:\\/\\/)?(www\\.)?/, '').replace(/\\/+$/, '');\n return normalizedURL;\n }\n\n generateSignature(url: string) {\n const normalizedURL = this.normalizeURL(url)\n const hash = CryptoJS.SHA256(normalizedURL)\n const signature = hash.toString(CryptoJS.enc.Hex)\n return signature;\n }\n\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EncryptionTestService {\n\n constructor() { }\n\n private isBase64(str: string): boolean {\n const base64Pattern = /^(?:[A-Z0-9+/]{4})*(?:[A-Z0-9+/]{2}==|[A-Z0-9+/]{3}=)?$/i;\n return base64Pattern.test(str);\n }\n\n private isHexadecimal(str: string): boolean {\n const hexPattern = /^[0-9a-fA-F]+$/;\n return hexPattern.test(str) && (str.length % 2 === 0);\n }\n\n private hasHighEntropy(str: string): boolean {\n const uniqueChars = new Set(str).size;\n return uniqueChars > str.length * 0.6;\n }\n\n isEncrypted(str: string): boolean {\n\n if (typeof str !== 'string') {\n return false;\n }\n\n if (this.isBase64(str) || this.isHexadecimal(str)) {\n return true;\n }\n\n return this.hasHighEntropy(str);\n\n }\n\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { withLatestFrom, map, tap } from 'rxjs/operators';\n\nimport { UtilsService } from '../utils/utils.service';\nimport { SymmetricalEncryptionService } from '../utils/encryption/symmetrical-encryption.service';\n\nimport { StorageOption, StorageType } from './models';\nimport { SettingOptions } from './models/setting-options.model';\nimport { StorageData } from './models/storage-data.model';\nimport { EncryptionTestService } from '../utils/encryption/encryption-test.service';\nimport { interval } from 'rxjs';\nimport { AppService } from '../utils/app.service';\n\nexport interface State {\n localStores: StorageData[]\n sessionStores: StorageData[]\n settings: StorageOption[]\n}\n\nconst storage: State = {\n localStores: [],\n sessionStores: [],\n settings: [],\n};\n\n@Injectable({ providedIn: 'root' })\nexport class LocalStorageManagerService extends ComponentStore<State> implements OnDestroy {\n\n storageName = 'storage'\n storageSettingsName = 'global-storage'\n\n stateRetrieved = false\n encrypted = false\n\n app = inject(AppService)\n utils = inject(UtilsService)\n encryption = inject(SymmetricalEncryptionService)\n encryptionTest = inject(EncryptionTestService)\n\n // SELECTORS\n\n private readonly data$ = this.select((state) => state)\n\n readonly stores$ = this.select((state) => state.settings)\n\n readonly storeExists$ = (store: string) => this.select(\n this.data$,\n (data) => data.settings.find(item => item.name === store) ? true : false\n )\n\n readonly store$ = (store: string) => this.select(\n this.data$,\n (data) => {\n\n const foundStore = data.settings.find(item => item.name === store)\n\n if(foundStore) {\n\n const options = SettingOptions.adapt(foundStore.options)\n\n const found = foundStore.options?.storage === StorageType.GLOBAL\n ? data.localStores.find(item => item.id === foundStore.id) as StorageData\n : data.sessionStores.find(item => item.id === foundStore.id) as StorageData;\n\n if(!found) {\n this.deleteStore({ name: store })\n return\n }\n\n const storageData = (options.encrypted) ? this.encryption.decrypt(found.data, this.app.appID) : found.data\n return (this.isString(storageData)) ? JSON.parse(storageData): storageData\n\n } else {\n return null\n }\n\n }\n )\n\n readonly settings$ = this.select((state) => state.settings)\n\n readonly setting$ = (store: string) => this.select(\n this.data$,\n (state) => {\n const foundSetting = state.settings.find(item => item.name === store)\n return (foundSetting) ? foundSetting : null\n }\n )\n\n persistence$ = this.data$\n .subscribe(data => {\n if(this.stateRetrieved) this.persistState(data)\n })\n\n startTimer() {\n const timer$ = interval(1000 * 3).pipe(\n withLatestFrom(this.data$),\n map(([_, state]) => state),\n tap((state) => {\n\n const expired: StorageOption[] = this.expired(state) ? this.expired(state) : []\n\n if (expired.length > 0) {\n\n const ids = expired.map((item) => item.id)\n\n const updatedState: State = {\n ...state,\n localStores: state.localStores.filter((item) => !ids.includes(item.id)),\n sessionStores: state.sessionStores.filter((item) => !ids.includes(item.id)),\n settings: state.settings.filter((item) => !ids.includes(item.id)),\n };\n\n this.persistState(updatedState)\n this.updateState(updatedState)\n\n }\n })\n );\n\n timer$.subscribe()\n }\n\n private updateState = this.updater((state, updatedState: State) => ({\n ...updatedState,\n }))\n\n constructor() {\n super(storage)\n this.retrieveState()\n this.startTimer()\n }\n\n readonly setStore = this.updater((state: State, store: { id: string, name: string, data: any, options: SettingOptions }): any => {\n\n const settings = StorageOption.adapt(store)\n\n const type = store.options.storage\n const hasStore = this.hasGlobalStorage(type, store.id)\n\n store.name = this.validStoreName(store.name)\n\n if(!hasStore) {\n console.warn(`No such Store: ${store.name}`)\n return state\n } else {\n\n const str = this.encryptionTest.isEncrypted(store.data) ? store.data : JSON.stringify(store.data)\n const dataStr = (this.isObjectOrArray(str)) ? (store.options.encrypted) ? this.encryption.encrypt(str, this.app.appID) : store.data : store.data\n\n const localData = (dataStr && settings.options?.storage === StorageType.GLOBAL) ? [{ data: dataStr, id: settings.id }] : []\n const sessionData = (dataStr && settings.options?.storage === StorageType.SESSION) ? [{ data: dataStr, id: settings.id }] : []\n\n return {\n ...state,\n localStores: [...state.localStores, ...localData],\n sessionStores: [...state.sessionStores, ...sessionData],\n settings: [...state.settings, ...[settings]],\n }\n\n }\n\n })\n\n readonly createStore = this.updater((state: State, store: { id?: string, name: string, data: any, options: SettingOptions }): any => {\n\n const settings = StorageOption.adapt(store)\n const foundStore = state?.settings.some(item => item.name === store.name)\n\n const expires = (settings.options?.expiresIn) ? this.utils.expires(settings.options?.expiresIn) : 0\n if(settings.options) settings.options.expires = expires\n\n store.name = this.validStoreName(store.name)\n if(foundStore) {\n return state\n } else {\n if(!this.isObjectOrArray(store.data)) {\n console.warn('Data must ba an Object or Array')\n return\n }\n\n\n store.data = (this.isString(store.data)) ? JSON.parse(store.data) : store.data\n const dataStr = (store.options.encrypted) ? this.encryption.encrypt(store.data, this.app.appID) : store.data\n\n const localData = (settings.options?.storage === StorageType.GLOBAL) ? [{ data: dataStr, id: settings.id }] : []\n const sessionData = (settings.options?.storage === StorageType.SESSION) ? [{ data: dataStr, id: settings.id }] : []\n\n return {\n ...state,\n localStores: [...state.localStores, ...localData],\n sessionStores: [...state.sessionStores, ...sessionData],\n settings: [...state.settings, ...[settings]],\n }\n\n }\n\n })\n\n readonly updateStore = this.updater((state: State, store: { name: string, data: any }): any => {\n\n store.name = this.validStoreName(store.name)\n\n const settings = state.settings.find(item => item.name === store.name)\n\n if(settings) {\n\n const type = settings.options?.storage\n const hasStore = this.hasGlobalStorage(type, settings.id || '')\n\n if(!hasStore) {\n console.warn(`No such Store: ${store.name}`)\n } else {\n\n const dataStr = (settings.options?.encrypted) ? this.encryption.encrypt(store.data, this.app.appID) : store.data\n\n const localData = (dataStr && settings.options?.storage === StorageType.GLOBAL) ? [{ data: dataStr, id: settings.id }] : []\n const sessionData = (dataStr && settings.options?.storage === StorageType.SESSION) ? [{ data: dataStr, id: settings.id }] : []\n\n state.localStores = state.localStores.filter(item => item.id !== settings.id)\n state.sessionStores = state.sessionStores.filter(item => item.id !== settings.id)\n\n return {\n ...state,\n localStores: [...state.localStores, ...localData],\n sessionStores: [...state.sessionStores, ...sessionData],\n }\n\n }\n }\n\n return state\n\n })\n\n readonly deleteStore = this.updater((state: State, store: { name: string }): any => {\n\n store.name = this.validStoreName(store.name)\n\n const id = state.settings.find(item => item.name === store.name)?.id\n\n if(id) {\n\n const settings = state.settings.filter(item => item.id !== id)\n const localData = state.localStores.filter(item => item.id !== id)\n const sessionData = state.sessionStores.filter(item => item.id !== id)\n\n return {\n ...state,\n localStores: [...localData],\n sessionStores: [...sessionData],\n settings: [...settings],\n }\n\n } else {\n console.warn(`No such Store: ${store.name}`)\n return state\n }\n\n })\n\n resetStore() {\n\n const newState = {\n localStores: [],\n sessionStores: [],\n settings: [],\n }\n\n this.updateState(newState)\n this.persistState(newState)\n\n }\n\n private persistState(state: State|null) {\n\n if(!state) return\n\n const strLocal = JSON.stringify(state.localStores)\n localStorage.setItem(this.storageName, strLocal)\n\n const strSession = JSON.stringify(state.sessionStores)\n sessionStorage.setItem(this.storageName, strSession)\n\n const settingsStr = this.encryption.encrypt(state.settings, this.app.appID)\n localStorage.setItem(this.storageSettingsName, settingsStr || '')\n\n }\n\n private expired(state: State|null) {\n\n if(!state) return []\n return state.settings?.filter(item => (item.options?.expires || 0) > 0 && this.utils.hasExpired(item.options?.expires || 0))\n\n }\n\n private retrieveState() {\n\n const str = localStorage.getItem(this.storageSettingsName)\n\n const localStr = localStorage.getItem(this.storageName)\n const sessionStr = sessionStorage.getItem(this.storageName)\n\n const localData: StorageData[] = (localStr) ? JSON.parse(localStr) : null\n const sessionData: StorageData[] = (sessionStr) ? JSON.parse(sessionStr) : null\n\n const decryptedStr = str ? this.encryption.decrypt(str, this.app.appID) : null\n const settings: StorageOption[] = (decryptedStr && decryptedStr !== null) ? JSON.parse(decryptedStr) : []\n\n settings.forEach(store => {\n\n const expired = (store.options?.expires || 0) > 0 && this.utils.hasExpired(store.options?.expires || 0)\n\n if(!expired) {\n\n const hasStorage = this.hasGlobalStorage(store.options?.storage, store.id || '')\n\n if(!hasStorage) {\n this.createStore({ id: store.id, name: store.name, data: [], options: SettingOptions.adapt(store.options)})\n } else {\n const storeData = (store.options?.storage === StorageType.GLOBAL) ? localData.find(item => item.id === store.id) : sessionData.find(item => item.id === store.id)\n this.setStore({ id: store.id || '', name: store.name, data: storeData?.data, options: SettingOptions.adapt(store.options) })\n }\n\n }\n\n })\n\n this.stateRetrieved = true\n\n }\n\n private isObjectOrArray = (obj: any) => {\n try {\n\n //obj = (Object.prototype.toString.call(obj) === '[object Object]') ? JSON.parse(obj) : obj\n return typeof obj === 'object' || Array.isArray(obj)\n\n } catch (error) {\n return false\n }\n\n }\n\n private isString (obj: any) {\n return (Object.prototype.toString.call(obj) === '[object String]')\n }\n\n private fixAndParseJSON(jsonString: string): any {\n const fixedString = jsonString\n .replace(/'/g, '\"')\n .replace(/([{,]\\s*)(\\w+)\\s*:/g, '$1\"$2\":')\n .replace(/,\\s*(\\}|\\])/g, '$1');\n\n try {\n return JSON.parse(fixedString);\n } catch (error: any) {\n throw new Error('Failed to parse JSON: ' + error.message);\n }\n }\n\n private validStoreName(str: string) {\n return str\n .toLowerCase() // Convert to lowercase\n .replace(/\\s+/g, '_') // Replace spaces with underscores\n .replace(/[^ -~]/g, ''); // Remove non-ASCII characters\n }\n\n private hasGlobalStorage(type: StorageType = StorageType.GLOBAL, id: string) {\n\n const strData: StorageOption[] = []\n\n if(type === StorageType.GLOBAL) {\n const str = localStorage.getItem(this.storageName)\n strData.push(...(str ? JSON.parse(str) : []))\n } else {\n const str = sessionStorage.getItem(this.storageName)\n strData.push(...(str ? JSON.parse(str) : []))\n }\n\n const found = strData.find(store => store.id === id)\n return (found) ? true : false\n\n }\n\n override ngOnDestroy() {\n this.persistence$.unsubscribe()\n }\n\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HeadersService {\n\n headers = {}\n\n generateHeaders(headers?: Record<string, string>): { headers: HttpHeaders } {\n\n const allHeaders = headers ? { ...this.headers, ...headers } : {}\n return { headers: new HttpHeaders(allHeaders) }\n\n }\n\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PathQueryService {\n\n buildAPIPath(server: string|string[], params?: any[]|any) {\n\n server = (Array.isArray(server)) ? server.join('/') : server\n\n const pathObjects = (params) ? params.filter((path:any) => (!this.isObject(path))) : []\n const queryObjects = (params) ? params.filter((path:any) => (this.isObject(path))) : []\n\n const query = this.removeEmptyParams(queryObjects.reduce((r: any, c: any) => {\n Object.entries(c).forEach(([key, value]) => {\n r[key] = Array.isArray(value) ? value.join(',') : value\n })\n return r\n }, {}))\n\n let path = this.buildRestPath(server, pathObjects)\n\n return(Object.keys(query).length > 0) ? path + '?' + this.buildQueryPath(query) : path\n\n }\n\n private buildRestPath(server: string, params: any[]): string {\n server = (server.charAt(0) === '/') ? server.substring(1) : server\n return this.cleanUrlPath(server +'/'+ params.join('/'))\n }\n\n private buildQueryPath(params: any): string {\n\n const searchParams = new URLSearchParams()\n\n for (const key in params) {\n\n if (Array.isArray(params[key])) {\n params[key].forEach((value: any) => searchParams.append(key, value));\n } else {\n searchParams.append(key, params[key]);\n }\n\n }\n\n return searchParams.toString()\n\n }\n\n private cleanUrlPath(str: string) {\n return str.replace(/([^:]\\/)\\/+/g, \"$1\").replace(/\\/$/,'')\n }\n\n private isObject(val: any): boolean {\n return (val === null) ? false : ( (typeof val === 'function') || (typeof val === 'object') )\n }\n\n private removeEmptyParams = (obj: any): Record<string, any> =>\n Object.fromEntries(\n Object.entries(obj)\n .map(([key, value]) =>\n [key, value && typeof value === 'object' ? this.removeEmptyParams(value) : value]\n )\n .filter(([_, value]) => value !== undefined && value !== \"\")\n )\n\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, EMPTY, Observable, from, of } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AsymmetricalEncryptionService {\n\n constructor() {}\n\n generateKeyPair(modulusLength = 2048): Observable<CryptoKeyPair> {\n \n // modulusLength - 1024, 2048, 4096\n // hash - SHA-256\n\n return from(crypto.subtle.generateKey(\n {\n name: \"RSA-OAEP\",\n modulusLength,\n publicExponent: new Uint8Array([1, 0, 1]), // 65537\n hash: { name: \"SHA-256\" }\n },\n true, // Extractable keys\n [\"encrypt\", \"decrypt\"]\n ))\n\n }\n\n encryptData(publicKey: CryptoKey, data: string) {\n\n const encodedData = new TextEncoder().encode(data)\n\n return from(crypto.subtle.encrypt(\n {\n name: \"RSA-OAEP\"\n },\n publicKey,\n encodedData\n )).pipe(\n map(enc => this.arrayBufferToBase64(enc))\n )\n\n }\n\n decryptData(privateKey: CryptoKey, encryptedData: string) {\n\n const encStr = this.base64ToArrayBuffer(encryptedData)\n\n return from(crypto.subtle.decrypt(\n {\n name: \"RSA-OAEP\"\n },\n privateKey,\n encStr\n ).then(decryptedData => {\n return new TextDecoder().decode(decryptedData)\n }))\n\n }\n\n pemToArrayBuffer(pem: string): ArrayBuffer {\n\n const b64 = pem.replace(/(-----BEGIN (RSA )?(PRIVATE|PUBLIC) KEY-----|-----END (RSA )?(PRIVATE|PUBLIC) KEY-----|\\n)/g, '')\n const binaryString = atob(b64)\n const len = binaryString.length\n const buffer = new ArrayBuffer(len)\n const view = new Uint8Array(buffer)\n\n for (let i = 0; i < len; i++) {\n view[i] = binaryString.charCodeAt(i)\n }\n\n return buffer\n\n }\n\n base64ToArrayBuffer(base64: string): ArrayBuffer {\n \n const binaryString = atob(base64);\n const len = binaryString.length;\n const buffer = new ArrayBuffer(len);\n const view = new Uint8Array(buffer);\n\n for (let i = 0; i < len; i++) {\n view[i] = binaryString.charCodeAt(i);\n }\n\n return buffer;\n }\n\n arrayBufferToBase64(buffer: ArrayBuffer): string {\n\n let binary = '';\n const bytes = new Uint8Array(buffer);\n const len = bytes.byteLength;\n\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n\n return window.btoa(binary)\n\n }\n\n base64ToPEM(base64Key: string, publicKey = true) {\n\n const keyType = (publicKey) ? 'PUBLIC' : 'PRIVATE'\n\n const header = `-----BEGIN ${keyType} KEY-----\\n`\n const footer = `\\n-----END ${keyType} KEY-----`\n\n const keyBody = base64Key.match(/.{1,64}/g)?.join(\"\\n\") || \"\"\n\n return header + keyBody + footer\n\n }\n\n pemToCryptoKey(\n pem: string, \n algorithm: RsaHashedKeyGenParams, \n extractable: boolean, \n keyUsages: KeyUsage[],\n format: any = \"pkcs8\" //\"raw\" | \"pkcs8\" | \"spki\"\n ) {\n \n const buffer = this.pemToArrayBuffer(pem);\n\n console.log('buffer found ', buffer);\n \n return from(crypto.subtle.importKey(\n format,\n buffer,\n algorithm,\n extractable,\n keyUsages\n ))\n\n }\n \n // TESTING\n\n testGenerateKeys(): Observable<string> {\n const testSequence: BehaviorSubject<string> = new BehaviorSubject<string>(\"\");\n const testSequence$: Observable<string> = testSequence.asObservable();\n testSequence.next(\"Test Generating Keys\");\n\n // GENERATE KEYS\n this.generateKeyPair().subscribe((data) => {\n\n console.log(\"GEN-GENERATED KEYS: \", data)\n\n crypto.subtle.exportKey('spki', data.publicKey)\n .then(key => {\n const publicKeyBase64 = this.arrayBufferToBase64(key);\n console.log(\"GEN-EXPORT PUBLIC KEY: \", this.base64ToPEM(publicKeyBase64, true));\n })\n\n crypto.subtle.exportKey('pkcs8', data.privateKey)\n .then(key => {\n const privateKeyBase64 = this.arrayBufferToBase64(key);\n console.log(\"GEN-EXPORT PRIVATE KEY: \", this.base64ToPEM(privateKeyBase64, false));\n });\n\n // TEST WITH GENERATED KEYS\n this.encryptData(data.publicKey, \"Sample Data here - Mike Bonifacio\")\n .subscribe((enc) => {\n\n console.log(\"GEN-ENCRYPT==>: \", enc)\n\n this.decryptData(data.privateKey, enc).subscribe((dec) => {\n testSequence.next('Test Passed');\n testSequence.complete();\n })\n\n })\n\n })\n return testSequence$;\n\n }\n\n testDecryptionWithKeys(): Observable<string> {\n const testSequence: BehaviorSubject<string> = new BehaviorSubject<string>(\"\");\n const testSequence$: Observable<string> = testSequence.asObservable();\n testSequence.next(\"Test Generating Keys\");\n\n const privateKey = `-----BEGIN PRIVATE KEY-----\n MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDKVBkCWNb9eHVF\n twAA5mdAyvXFix3WavdrsoYRkvtCl8ogDBQf8f6N0bRkDF1zcVHRrNAEyozXDtuD\n kFgSiivBFREI7fiS3sOvduq6FaGXzX0IY6oaVMu8oOPgDvC0yvoohR+0Qxq2d6lP\n SPyHeKQaxP4KxzCJJzB1XAcbd2eFzUUDv25mNlwdVkmW8FI/sAxnJLgPTW78dzfX\n Ddfk+nxdIqxVKSLATnL0kMN7aGJx24UozioAIpzvvvF5/+7HTd1gi6NeCqrAYr3g\n iP364AE26CFwFvHnafO9uNQhlQ+uiNnOoInXByfFGVP+RidSpfLzaxDjs6RDwpol\n h098btONAgMBAAECggEAAVhHM2OD5IkUtuowwcKNaCTKGmrClRE3gMuzJeBsSJEy\n uAReUFILZylcnhegDytSti2vDA9T7xqtO6CU0p3V8LpU89JMOPRb/deirI4UXSpx\n xbNyjirOO6bnrNlOWfKexdQQsikYPzF2iM1Scpr1u9ZDCHZOl1ZYSrkve5My4coP\n 3Gx6tTBqL0jQBfcpf4ES8BH3JSawR/MgqzDS74+bI2VH+kvuPAC1L4fBgaV3VUv0\n nFzim5A3s5VaXPgJbEIghP9BkYGFkeT9ma3nliEZWc96AzsmowFn1ayCvrNVPo9R\n ECD2NnttBiCJZt3H93sR9+OTeA8Bls+aZGlKd5mLAQKBgQDpf8nIYUm/Zmls7/lQ\n QBUSGHEYrbjNsEejQsPgNDtg2EVSxdUkvTn7Wb+HExTk09Z5bNvhaO2532/FH9y8\n ahSXafiMXpfR2olwXdOB9yXXl4F5C0LGnmzGim4OSeWzAX0JCL470KaS0QN3EmoG\n 9F0YCfMnZXNTweSSx4xvlO6ggQKBgQDd01uIolm7z1DIWCwNERAXP2GDwcvxyzYK\n YqJfKDeHt2t6yIzZMMotnPDy+OlcdGspIIHkB5a+SZN5Nt7DUKg/MnyOZ3KbVq41\n k7dR4Ka3LRnGkesy7lSr7ef1rfquyR75OXJQcPWvkFcLu0TMiQhvptatZ8VN+F4n\n fDQELRotDQKBgQCgN+AUT7VT0QjcCBnRV/ddUEoiPenFsYSmYMSYzh5ESIHg1wB2\n 0iS79Iw4Of6nOTg8X1bM57vfQ5Kk90T2P+/bKYqzfqC8DTErWiYsUpKzyTC9Bt4N\n /Vz0Kr5zrX8ggg/yp/4oevYhXav8AzWfigNq4EDpMnKc8TlPAf+5/L50gQKBgQC2\n mLPhPhr1gUszD3l7bA89w7uGlLFHoQoj9FtKTzWervp3QLzIT+QtNeIVb5XQuDg5\n y3uAdEq+6pvNjMBEMJG+K9Xh9v+dJPYUPjsJ2A4D/MkZ7qWX8B2cxSJK1uLim8W2\n S3ZxBvsGgJ9WldmlMCvUlJZkeWYtr4P5psC+q02/xQKBgQCDII/jcV2+lRM2iNTe\n vBijZSaNMEWOK/Y+/HFK8GYKXnB+xNWhrm8rKgWGzpDJAUPMh9Tt+leW9LKEBuzF\n Y1bGblmGm1zsPWpIx05Fdtv9eOJmFnXbGzIsYyhadZnPcQOWhqxtpVxSuul0Jc7Q\n XNq4qPaPXhbQAshgtyBt75DMkw==\n -----END PRIVATE KEY-----`\n \n const pubKey = `-----BEGIN PUBLIC KEY-----\n MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAylQZAljW/Xh1RbcAAOZn\n QMr1xYsd1mr3a7KGEZL7QpfKIAwUH/H+jdG0ZAxdc3FR0azQBMqM1w7bg5BYEoor\n wRURCO34kt7Dr3bquhWhl819CGOqGlTLvKDj4A7wtMr6KIUftEMatnepT0j8h3ik\n GsT+CscwiScwdVwHG3dnhc1FA79uZjZcHVZJlvBSP7AMZyS4D01u/Hc31w3X5Pp8\n XSKsVSkiwE5y9JDDe2hicduFKM4qACKc777xef/ux03dYIujXgqqwGK94Ij9+uAB\n NughcBbx52nzvbjUIZUProjZzqCJ1wcnxRlT/kYnUqXy82sQ47OkQ8KaJYdPfG7T\n jQIDAQAB\n -----END PUBLIC KEY-----`\n\n const algorithm: RsaHashedKeyGenParams = {\n name: \"RSA-OAEP\",\n modulusLength: 2048,\n publicExponent: new Uint8Array([1, 0, 1]),\n hash: \"SHA-256\"\n };\n\n // ENCRYPT\n this.pemToCryptoKey(\n pubKey,\n algorithm,\n true,\n [\"encrypt\"],\n \"spki\"\n ).subscribe((keyPublic) => {\n\n // console.log(\"PUBLIC KEY: \", keyPublic)\n\n this.encryptData(keyPublic, \"Sample Data here - Mike Bonifacio\")\n .subscribe((str) => {\n console.log(\"ENCRYPTED STRING: \", str);\n testSequence.next('encrypted string success');\n })\n\n })\n\n const enc = \"r7UOuEGBZ6jbVTOIBuv9jFOEtRiedmS27hfW40k7XKCTsQ5VhWup0qu2BA2ANZaGKii/uehJ/RSPiyfGbJ6leJrat0mA1hPqH/XodaBzLMDigvdYM1NSXFZMDa40OpLUIXbPlAvybjcGu7Bal+LMA8htHrFu/OmM/fHI66xOzzpuXSYx0OkWjtY81rUQ1FFkvrkx2jGFPZ0p+Nw/v3Q4cJnet6V63vCueFlD749VMcVXo7pvz4AIPpB+IOy3kbxaYTPakLVioJERU6GFMXWkECuRvohhS9CETcORZtRVRkvhcHk3lxgIhfqojUKYgD6K5dDELDPsWIS+iTG1XIQIlg==\";\n\n // DECRYPTION\n this.pemToCryptoKey(\n privateKey,\n algorithm,\n false,\n [\"decrypt\"],\n \"pkcs8\"\n ).subscribe((key) => {\n\n // console.log(\"DECRYPT ===\", key)\n\n this.decryptData(key, enc)\n .pipe(\n catchError(err => {\n console.log(\"ERROR: \", err);\n return EMPTY\n })\n ).subscribe((str) => {\n console.log(\"DECRYPTED STRING: \", str);\n testSequence.next('decrypted string success');\n })\n\n })\n\n return testSequence$;\n };\n}\n","import { OperatorFunction } from 'rxjs';\nimport { filter, map, tap } from 'rxjs/operators';\nimport { HttpEventType } from '@angular/common/http';\n\nexport function requestStreaming(): OperatorFunction<any, any> {\n\n return input$ => input$.pipe(\n filter((event: any) =>\n event.type === HttpEventType.DownloadProgress || event.type === HttpEventType.Response\n ),\n\n map((event: any) => {\n\n if (event.type === HttpEventType.DownloadProgress) {\n return event.partialText || ''\n } else if (event.type === HttpEventType.Response) {\n return event.body\n }\n\n }),\n\n map((data: any) => {\n if (typeof data === 'string') {\n const matches = data.match(/{[^}]+}/g) || []\n return (matches.length > 0) ? matches.map(match => JSON.parse(match)) : data\n }\n return data\n })\n )\n\n}\n\n\n","import { HttpClient, HttpEvent, HttpEventType } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { finalize, map, tap } from 'rxjs/operators';\n\nimport { ApiRequest } from '../request-manager-state-service/models/api-request.model';\nimport { PathQueryService, HeadersService } from '../utils';\nimport { requestStreaming } from './rxjs-operators/request-streaming';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RequestService {\n\n private http = inject(HttpClient)\n\n private pathQueryService = inject(PathQueryService)\n private headersService = inject(HeadersService)\n\n isPending = new BehaviorSubject<boolean>(false)\n isPending$ = this.isPending.asObservable()\n\n progress = new BehaviorSubject<number>(0)\n progress$ = this.progress.asObservable()\n\n getRecordRequest<T>(options: ApiRequest): Observable<T> {\n\n this.isPending.next(true);\n\n const urlPath = this.buildUrlPath(options);\n const headers = this.buildCombinedHeaders(options)\n\n return (options.stream)\n ? this.http.get<any>(urlPath, headers).pipe(\n requestStreaming(),\n this.handleFinalize()\n )\n : this.http.get<T>(urlPath, headers).pipe(\n this.request(options),\n this.handleFinalize()\n )\n }\n\n createRecordRequest<T>(options: ApiRequest, data: any): Observable<T> {\n\n this.isPending.next(true);\n\n const urlPath = this.buildUrlPath(options);\n const headers = this.buildCombinedHeaders(options);\n\n return (options.stream)\n ? this.http.post<any>(urlPath, data, headers).pipe(\n requestStreaming(),\n this.handleFinalize()\n )\n : this.http.post<T>(urlPath, data, headers).pipe(\n this.request(options),\n this.handleFinalize()\n )\n }\n\n updateRecordRequest<T>(options: ApiRequest, data: any): Observable<T> {\n\n this.isPending.next(true);\n\n const urlPath = this.buildUrlPath(options);\n const headers = this.buildHeaders(options);\n\n return this.http.put<any>(urlPath, data, headers).pipe(\n this.request(options),\n this.handleFinalize()\n )\n }\n\n deleteRecordRequest<T>(options: ApiRequest): Observable<T> {\n\n this.isPending.next(true);\n\n const urlPath = this.buildUrlPath(options);\n const headers = this.buildHeaders(options);\n\n return this.http.delete<any>(urlPath, headers).pipe(\n this.handleFinalize()\n )\n }\n\n // Helper functions\n private buildUrlPath(options: ApiRequest): string {\n return this.pathQueryService.buildAPIPath(options.server, options.path);\n }\n\n private buildHeaders(options: ApiRequest): any {\n return this.headersService.generateHeaders(options.headers);\n }\n\n private buildCombinedHeaders(options: ApiRequest): any {\n const headers = this.headersService.generateHeaders(options.headers)\n return this.combineHeaders(headers, options.stream)\n }\n\n private request<T>(options: ApiRequest): (source: Observable<any>) => Observable<T> {\n return (source$: Observable<any>): Observable<T> => {\n return source$.pipe(\n map(data => {\n if (options.adapter) {\n return Array.isArray(data)\n ? data.map((item: any) => options.adapter!(item))\n : options.adapter!(data)\n }\n return data\n })\n )\n }\n }\n\n downloadFileRequest(options: ApiRequest): Observable<any> {\n\n this.isPending.next(true);\n\n const urlPath = this.buildUrlPath(options);\n return this.http.get(urlPath, { responseType: 'blob', observe: 'events', reportProgress: true })\n .pipe(\n map((event: HttpEvent<any>) => {\n\n this.isPending.next(true)\n\n switch (event.type) {\n case HttpEventType.DownloadProgress:\n const status = (event.total) ? Math.round(event.loaded / (event.total || 1) * 100) : 100\n this.progress.next(status)\n return status\n case HttpEventType.Response:\n const header_content = event.headers.get('Content-Disposition') || '';\n const file = header_content.split('=')[1].substring(0, header_content.split('=')[1].length);\n this.downloadFile(file, event.body)\n this.isPending.next(false)\n return 100\n default:\n this.isPending.next(false)\n return 0\n }\n\n })\n )\n }\n\n private handleFinalize(): (source: Observable<any>) => Observable<any> {\n return finalize(() => this.isPending.next(false));\n }\n\n private downloadFile(file:string, fileData: any) {\n\n const navigatorAny = window.navigator as any\n\n const extension = file.split('.')[1].toLowerCase()\n\n var newBlob = new Blob([fileData], { type: this.createFileType(extension) })\n\n if (navigatorAny.msSaveOrOpenBlob) {\n navigatorAny.msSaveOrOpenBlob(newBlob, file)\n } else {\n const link = document.createElement('a')\n const url = window.URL.createObjectURL(newBlob)\n link.href = url\n link.download = file\n link.click()\n window.URL.revokeObjectURL(url)\n }\n\n }\n\n private createFileType(ext: any): string {\n\n let fileType: string = \"\"\n\n if (ext == 'pdf' || ext == 'csv') {\n fileType = `application/${ext}`\n }\n else if (ext == 'jpeg' || ext == 'jpg' || ext == 'png') {\n fileType = `image/${ext}`\n }\n else if (ext == 'txt') {\n fileType = 'text/plain'\n }\n else if (ext == 'ppt' || ext == 'pot' || ext == 'pps' || ext == 'ppa') {\n fileType = 'application/vnd.ms-powerpoint'\n }\n else if (ext == 'pptx') {\n fileType = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'\n }\n else if (ext == 'doc' || ext == 'dot') {\n fileType = 'application/msword'\n }\n else if (ext == 'docx') {\n fileType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n }\n else if (ext == 'xls' || ext == 'xlt' || ext == 'xla') {\n fileType = 'application/vnd.ms-excel'\n }\n else if (ext == 'xlsx') {\n fileType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n }\n\n return fileType\n\n }\n\n private combineHeaders(headers: any, isStreaming: boolean) {\n\n const options = {\n observe: 'events' as const,\n responseType: 'text' as const,\n reportProgress: true,\n };\n\n return (isStreaming) ? { ...headers, ...options } : headers\n\n }\n\n}\n","import { Observable, defer, interval } from 'rxjs';\nimport { takeWhile, map, tap } from 'rxjs/operators';\n\nexport function countdown(duration: number): Observable<number> {\n\n return defer(() => {\n\n const currentCount = { current: duration }\n\n return interval(1000).pipe(\n map(() => --currentCount.current),\n takeWhile(count => count >= 0)\n )\n\n })\n\n}\n","import {Observable, of, throwError} from 'rxjs';\nimport {delay, mergeMap, retryWhen} from 'rxjs/operators';\n\nconst DEFAULT_MAX_RETRIES = 3;\n\nexport function delayedRetry(delayMs: number, maxRetry = DEFAULT_MAX_RETRIES) {\n\n let retries = maxRetry;\n\n return (src: Observable<any>) =>\n src.pipe(\n retryWhen((errors: Observable<any>) => errors.pipe(\n delay(delayMs),\n mergeMap(error => retries-- > 0 ? of(error) : throwError(error)\n ))\n )\n );\n}\n","import { BehaviorSubject, Observable, interval } from 'rxjs';\nimport { mergeMap, startWith, takeUntil, tap } from 'rxjs/operators';\n\n/**\n * @param pollInterval\n * @param stopCondition$\n * @param isPending$\n */\n\nexport function requestPolling<T>(pollInterval: number, stopCondition$: Observable<any>, isPending$: BehaviorSubject<boolean>) {\n return (source: Observable<T>): Observable<T> => {\n return interval(pollInterval * 1000)\n .pipe(\n startWith(0), \n tap(() => isPending$.next(true)),\n mergeMap(() => source),\n tap(() => isPending$.next(false)),\n takeUntil(stopCondition$),\n );\n };\n}","import { inject, Injectable, Injector } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { BehaviorSubject, EMPTY, Observable, Subject, throwError } from 'rxjs';\nimport { tap, map, finalize, catchError } from 'rxjs/operators';\n\nimport { ApiRequest } from '../request-manager-state-service/models/api-request.model';\nimport { RequestService } from './request.service';\nimport { requestPolling, countdown, delayedRetry } from './rxjs-operators';\n\nimport { ToastDisplay, ToastColors } from 'toast-message';\nimport { ToastMessageService } from 'toast-message-display';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HTTPManagerService<T> extends RequestService {\n\n toastMessage = inject(ToastMessageService)\n ng_injector = inject(Injector)\n\n private countdown = new BehaviorSubject<number>(0);\n countdown$ = this.countdown.asObservable();\n\n private error = new BehaviorSubject<boolean>(false);\n error$ = this.error.asObservable();\n\n private data = new BehaviorSubject<any>(null)\n data$ = this.data.asObservable()\n\n private polling$ = new Subject<void>();\n\n constructor() {\n super();\n }\n\n // REQUESTS\n\n getRequest<T>(options: ApiRequest, params?: any[]) {\n\n this.data.next(null)\n\n const updatedOptions = {\n ...options,\n path: params ? [...options.path, ...params] : options.path,\n };\n\n const func = this.getRecordRequest;\n\n const requests = this.createRequest(func, updatedOptions);\n\n return this.createObservable<T>(options, requests, func.name).pipe(tap(data => this.data.next(data)))\n }\n\n postRequest<T extends { id?: number|string }>(data: T, options: ApiRequest, params?: any[]) {\n\n this.data.next(null)\n\n const updatedOptions = {\n ...options,\n path: params ? [...options.path, ...params] : options.path,\n };\n\n const func = this.createRecordRequest;\n\n const requests = this.createRequest(func, updatedOptions, data);\n\n return this.createObservable<T>(options, requests, func.name).pipe(tap(data => this.data.next(data)))\n }\n\n putRequest<T extends { id?: number|string }>(data: T, options: ApiRequest, params?: any[]) {\n\n this.data.next(null)\n\n const updatedOptions = {\n ...options,\n path: params ? [...options.path, ...params] : options.path,\n };\n\n const func = this.updateRecordRequest;\n\n const requests = this.createRequest(func, updatedOptions, data);\n\n return this.createObservable<T>(options, requests, func.name).pipe(tap(data => this.data.next(data)))\n }\n\n deleteRequest<T>(options: ApiRequest, params?: any[]) {\n\n this.data.next(null)\n\n const updatedOptions = {\n ...options,\n path: params ? [...options.path, ...params] : options.path,\n };\n\n const func = this.deleteRecordRequest;\n\n const requests = this.createRequest(func, updatedOptions);\n\n return this.createObservable<T>(options, requests, func.name).pipe(tap(data => this.data.next(data)))\n }\n\n downloadRequest<T>(options: ApiRequest, params?: any[]) {\n\n const updatedOptions = {\n ...options,\n path: params ? [...options.path, ...params] : options.path,\n };\n\n const func = this.downloadFileRequest;\n\n const requests = this.createRequest(func, updatedOptions);\n\n return this.createObservable<T>(options, requests, func.name)\n .pipe(\n tap(() => this.error.next(false)),\n catchError((err) => {\n this.error.next(true)\n return EMPTY\n })\n )\n\n }\n\n // UTILS\n\n private createObservable<T>(options: ApiRequest, request$: Observable<T>, funcName: string) {\n const polling = options.polling ? (options.polling > 0 ? true : false) : false;\n const isPolling =\n polling &&\n !(funcName === 'deleteRecordRequest' || funcName === 'updateRecordRequest' || funcName === 'createRecordRequest')\n ? true\n : false;\n\n this.polling$.next();\n\n const polling$ =\n (isPolling && options.polling) || 0 >= 3\n ? request$.pipe(\n requestPolling((options.polling || 0) + 1, this.polling$, this.isPending),\n tap(() => this.countdown.next(0)),\n tap(() => {\n if (!options.polling) return;\n const count = options.polling ? options.polling : 0;\n console.log('COUNT:', count);\n countdown(count)\n .pipe(\n map((x: number) => {\n console.log('XX:', count, x);\n const pollingInSec = options.polling || 0;\n const percentageCompleted = ((pollingInSec - x) / pollingInSec) * 100;\n return Math.round(percentageCompleted);\n })\n )\n .subscribe((countDownValue: number) => {\n console.log(this.countdown.value, countDownValue);\n this.countdown.next(countDownValue);\n });\n }),\n )\n : request$.pipe(\n catchError((err: any) => {\n\n if (err instanceof HttpErrorResponse) {\n this.error.next(true);\n if(options.displayError) this.handleErrorWithSnackBar(err);\n return this.handleError(err);\n }\n\n return throwError(() => err);\n }),\n finalize(() => this.isPending.next(false))\n )\n\n return polling$.pipe(\n catchError((err: any, caught: Observable<T>) => {\n\n if (err instanceof HttpErrorResponse) {\n this.error.next(true);\n this.stopPolling();\n return this.handleError(err);\n }\n\n return throwError(() => err);\n }),\n options.retry.times > 0\n ? delayedRetry((options?.retry.delay || 3) * 1000, (options?.retry.times || 0) - 1)\n : (source: Observable<T>) => source\n );\n }\n\n private createRequest(func: Function, options: ApiRequest, data?: any | any[]) {\n const dataItem = this.prepareRequestData(options, data, func.name);\n return func.bind(this)(dataItem.options, dataItem.data);\n }\n\n private prepareRequestData(options: ApiRequest, data: any, funcName: string) {\n\n if ((options.mapper && funcName === 'updateRecordRequest') || funcName === 'createRecordRequest') {\n data = options.mapper\n ? Array.isArray(data)\n ? map((item) => options.mapper(item))\n : options.mapper(data)\n : data;\n } else {\n data = options.adapter\n ? Array.isArray(data)\n ? map((item) => options.adapter(item))\n : options.adapter(data)\n : data;\n }\n\n return { options: options, data: data };\n }\n\n // MISC\n\n private handleError(error: Response | any) {\n this.isPending.next(false);\n return throwError(() => error);\n }\n\n private handleErrorWithSnackBar(error: Response | any) {\n\n const displayError = ToastDisplay.adapt({\n message: error.message || `${error.status} - ${error.statusText}`,\n action: 'OK',\n color: ToastColors.ERROR,\n icon: 'error',\n duration: 5 * 1000, //5 seconds\n })\n\n this.toastMessage.toastMessage(displayError)\n\n }\n\n private stopPolling() {\n this.isPending.next(false);\n this.polling$.next();\n }\n}\n","import { DataType } from \"./data-type.enum\"\n\nexport interface DatabaseStorageInterface {\n table: string\n expiresIn: string\n}\n\nexport class DatabaseStorage implements DatabaseStorageInterface {\n \n constructor(\n public table = '',\n public expiresIn: '',\n ) {}\n\n static adapt(item?: any): DatabaseStorage {\n\n return new DatabaseStorage(\n item?.table,\n item?.expiresIn,\n )\n\n }\n\n}\n","export interface RetryOptionsInterface {\n times?: number // total request to be made including initial request\n delay?: number // seconds (<= 3 default 3 seconds)\n}\n\nexport class RetryOptions implements RetryOptionsInterface {\n \n constructor(\n public times = 0,\n public delay = 0,\n ) {}\n\n static adapt(item?: any): RetryOptions {\n\n return new RetryOptions(\n item?.times ? Math.floor(item.times) : 0,\n item?.delay ? Math.floor(item.delay) : 0,\n )\n\n }\n\n}\n","export enum DataType {\n ANY = 0,\n ARRAY,\n OBJECT\n}\n","import { RetryOptions } from \"../../request-manager-services\"\n\nexport interface ApiRequestInterface {\n server: string\n path: any[]\n headers: any\n adapter?: any\n mapper?: any\n polling?: number // seconds (undefined | 0 = none)\n retry: RetryOptions\n stream?: boolean\n displayError: boolean\n}\n\nexport class ApiRequest implements ApiRequestInterface {\n\n constructor(\n public server = '',\n public path: any[] = [],\n public headers = {},\n public adapter?: any,\n public mapper?: any,\n public polling?: number,\n public retry = RetryOptions.adapt(),\n public stream = false,\n public displayError = false,\n ) {}\n\n static adapt(item?: any): ApiRequest {\n\n const server = Array.isArray(item?.server) ? item.server.join('/') : item?.server || '';\n const retryOptions = item?.retry ? RetryOptions.adapt(item.retry) : RetryOptions.adapt();\n\n return new ApiRequest(\n server,\n item?.path,\n (item?.headers) ? item.headers : {},\n item?.adapter,\n item?.mapper,\n item?.polling ? Math.floor(item.polling) : 0,\n retryOptions,\n item?.stream,\n item?.displayError,\n )\n\n }\n\n}\n","export interface RequestOptionsInterface {\n path: any[],\n headers: any,\n}\n\nexport class RequestOptions implements RequestOptionsInterface {\n\n constructor(\n public path: any[] = [],\n public headers = {},\n ) {}\n\n static adapt(item?: any): RequestOptions {\n\n return new RequestOptions(\n item?.path,\n item?.headers,\n )\n\n }\n\n}\n","import { inject, Inject, Injectable, InjectionToken } from '@angular/core'\nimport { ComponentStore } from '@ngrx/component-store'\n\nimport { BehaviorSubject, EMPTY, Observable, of, Subject } from 'rxjs'\nimport { tap, switchMap, concatMap, scan, expand, map, takeUntil } from 'rxjs/operators'\nimport { DatabaseStorage } from '../../models/database-storage.model'\nimport { HTTPManagerService, DataType } from '../request-manager-services'\nimport { ApiRequest, RequestOptions } from './models'\n\n\nconst API_OPTS = new InjectionToken<ApiRequest>('API_OPTS')\n\nexport interface APIStateManagerData<T> {\n data: T[]\n dataObject: T | null\n}\n\nconst defaultState: APIStateManagerData<any> = {\n data: [],\n dataObject: null,\n}\n\n@Injectable()\nexport class HTTPManagerStateService<T extends { id: number }> extends ComponentStore<APIStateManagerData<T>> {\n\n httpManagerService = inject(HTTPManagerService)\n\n error$ = this.httpManagerService.error$\n isPending$ = this.httpManagerService.isPending$\n\n // PAGINATION\n private page = new BehaviorSubject<number>(0)\n page$ = this.page.asObservable()\n\n private totalPages = new BehaviorSubject<number>(0)\n totalPages$ = this.totalPages.asObservable()\n\n private percentage = new BehaviorSubject<number>(0)\n percentage$ = this.percentage.asObservable()\n // ----------\n\n private hasDatabase = false\n\n streamedResponse = []\n\n constructor(\n @Inject(API_OPTS) private apiOptions: ApiRequest,\n @Inject(\"dataType\") private dataType: DataType | undefined,\n @Inject(\"database\") private database?: DatabaseStorage | undefined\n ) {\n super(defaultState)\n\n this.setApiRequestOptions(apiOptions, dataType, database)\n }\n\n setApiRequestOptions(apiOptions: ApiRequest, dataType?: DataType, database?: DatabaseStorage) {\n\n this.apiOptions = ApiRequest.adapt(apiOptions)\n this.dataType = (dataType) ? dataType : DataType.ARRAY\n\n this.hasDatabase = this.database?.table === \"\" ? false : true\n this.database = (this.hasDatabase) ? DatabaseStorage.adapt(database) : undefined\n\n }\n\n get apiRequestOptions() {\n return this.apiOptions\n }\n\n initStorage() {\n // if(this.otherOptions.database) {\n // console.log('Has Database Option:', this.otherOptions.database.table)\n // const schema = (this.otherOptions.adapters?.incoming) ? Object.keys(this.otherOptions.adapters.incoming({})).join() : '++id'\n // this.apiService.initDB(this.otherOptions.database.expiresIn, this.otherOptions.database.table, schema)\n // }\n }\n\n initializeState(data: any) {\n this.setData$(data)\n }\n\n // --------------------------------------------------------------------------------------------------\n // SELECTORS\n\n readonly data$ = this.select(({ data, dataObject }) => {\n const isArray =( this.dataType === DataType.ARRAY) ? true : false\n return (isArray) ? data : dataObject\n })\n\n readonly selectRecord$ = (id: number) => this.select(\n this.data$,\n (data) => {\n if (this.dataType === DataType.ARRAY && Array.isArray(data)) {\n return data.find(item => item.id === id) as T | null\n } else {\n return (data as T).id === id ? data : null\n }\n }\n )\n\n // --------------------------------------------------------------------------------------------------\n\n // UPDATERS\n\n private readonly resetData$ = this.updater((state: APIStateManagerData<T>) => {\n return { ...state, data: [], dataObject: null }\n })\n\n private readonly setData$ = this.updater((state: APIStateManagerData<T>, data: T | T[] | any) => {\n\n if (!data) return state\n\n if (this.dataType === DataType.ARRAY) {\n\n const dataArray = Array.isArray(data) ? data : [data]\n\n const stateDataSample = (state.data.length > 0) ? Object.keys(state.data[0]) : []\n const newDataSample = (dataArray.length > 0) ? Object.keys(dataArray[0]) : []\n\n const isSame = (state.data.length === 0) ? false : stateDataSample.every((value, index) => value === newDataSample[index])\n const updatedData = (!isSame && dataArray.length !== 0) ? this.updateArrayState([], dataArray) : this.updateArrayState(state.data, dataArray)\n\n return { ...state, data: updatedData, dataObject: null } as APIStateManagerData<T>\n\n } else {\n const dataObject = this.isEmpty(data) ? null : data\n return { ...state, data: [], dataObject: dataObject } as APIStateManagerData<T>\n }\n\n })\n\n private updateArrayState(currentData: any[], newData: any[]): any[] {\n\n const filterCurrentData = () => {\n const ids = this.streamedResponse.map((obj: any) => obj.id)\n return currentData.filter(obj => (obj.id) ? ids.includes(obj.id) : obj)\n }\n\n const filteredCurrentData = (this.httpManagerService.isPending.value) ? currentData : filterCurrentData()\n\n const updatedData = filteredCurrentData.map(item => {\n const newItem = newData.find(newItem => {\n const hasId = (newItem?.id && item?.id) ? true : false\n return (hasId) ? newItem.id === item.id : JSON.stringify(newItem) === JSON.stringify(item)\n })\n return (newItem) ? { ...item, ...newItem } : item\n })\n\n const addedData = newData.filter(newItem => {\n return !filteredCurrentData.some(item => {\n const hasId = (newItem?.id && item?.id) ? true : false\n return (hasId) ? item.id === newItem.id : JSON.stringify(newItem) === JSON.stringify(item)\n })\n })\n\n return [...updatedData, ...addedData]\n\n}\n\n private readonly addData$ = this.updater((state: APIStateManagerData<T>, data: T) => {\n\n if (this.dataType === DataType.ARRAY) {\n const newState = [...state.data, data]\n return { ...state, ...{ data: newState } }\n } else {\n return { ...state, ...{ dataObject: data } }\n }\n\n })\n\n private readonly deleteData$ = this.updater((state: APIStateManagerData<T>, data: T & { id: number }) => {\n if (this.dataType === DataType.ARRAY) {\n const newState = state.data.filter(item => item.id !== data.id)\n return { ...state, ...{ data: newState } }\n } else {\n return { ...state, ...{ dataObject: null } }\n }\n })\n\n private readonly updateData$ = this.updater((state: APIStateManagerData<T>, data: T) => {\n\n if (this.dataType === DataType.ARRAY) {\n\n const objIndex = state.data.findIndex(item => item.id === data.id)\n\n if (objIndex > -1) {\n const newState = [...state.data]\n newState[objIndex] = data\n return { ...state, ...{ data: newState } }\n }\n\n return state\n\n } else {\n return { ...state, ...{ dataObject: data } }\n }\n\n })\n\n // --------------------------------------------------------------------------------------------------\n // EFFECTS\n\n readonly clearRecords = this.effect(data =>\n data.pipe(\n tap(() => {\n if (this.dataType === DataType.ARRAY) {\n this.setData$([])\n } else {\n this.setData$({})\n }\n })\n ))\n\n readonly refreshData = this.effect(data =>\n data.pipe(\n tap(() => {\n // this.apiService.flushDatabase(this.otherOptions.database?.table)\n this.fetchRecords()\n })\n ))\n\n // --------------------------------------------------------------------------------------------------\n // CRUD OPERATIONS\n\n // FETCH RECORDS\n readonly fetchRecords = (options?: RequestOptions) =>\n this.effect<any>(() =>\n of(RequestOptions.adapt(options)).pipe(\n switchMap(() => {\n\n this.streamedResponse = []\n const requestOptions = this.updateRequestOptions(options?.headers)\n\n return this.httpManagerService.getRequest(requestOptions, options?.path)\n .pipe(\n tap((data: any) => {\n data = (!data) ? (this.dataType === DataType.ARRAY) ? [] : {} : data\n this.setData$(data)\n })\n )\n\n })\n )\n )\n\n // CREATE RECORD\n readonly createRecord = (data: any|null, options?: RequestOptions) =>\n this.effect<any>(() =>\n of(data).pipe(\n switchMap((data: any) => {\n\n this.streamedResponse = []\n const requestOptions = this.updateRequestOptions(options?.headers)\n\n return this.httpManagerService.postRequest(data, requestOptions, options?.path)\n .pipe(\n tap((data: any) => {\n data = (!data) ? (this.dataType === DataType.ARRAY) ? [] : {} : data\n this.addData$(data)\n }),\n )\n\n })\n )\n )\n\n // UPDATE RECORD\n readonly updateRecord = (data: any|null, options?: RequestOptions) =>\n this.effect<any>(() =>\n of(data).pipe(\n concatMap((data: any) => {\n\n this.streamedResponse = []\n const requestOptions = this.updateRequestOptions(options?.headers)\n\n return this.httpManagerService.putRequest(data, requestOptions, options?.path)\n .pipe(\n tap((data: any) => {\n data = (!data) ? (this.dataType === DataType.ARRAY) ? [] : {} : data\n this.updateData$(data)\n }),\n )\n\n })\n )\n )\n\n // DELETE RECORD\n readonly deleteRecord = (options?: RequestOptions) =>\n this.effect<any>(() =>\n of(options).pipe(\n concatMap((data: any) => {\n\n this.streamedResponse = []\n const requestOptions = this.updateRequestOptions(options?.headers)\n\n return this.httpManagerService.deleteRequest(requestOptions, options?.path)\n .pipe(\n tap((data: any) => {\n data = (!data) ? (this.dataType === DataType.ARRAY) ? [] : {} : data\n this.deleteData$(data)\n }),\n )\n\n })\n )\n )\n\n // --------------------------------------------------------------------------------------------------\n // FETCH STREAM\n\n readonly createStream = (data: any|null, options?: RequestOptions) =>\n this.effect<any>(() =>\n of(data).pipe(\n tap(() => this.httpManagerService.isPending.next(true)),\n switchMap((data: any) => {\n\n const requestOptions = this.updateRequestOptions(options?.headers)\n\n return this.httpManagerService.postRequest(data, requestOptions, options?.path)\n .pipe(\n tap((res: any) => {\n if(res.length > 0) this.setData$(res)\n this.streamedResponse = res\n }),\n scan((acc, res: any) => {\n\n const previous = acc.current\n const current = res\n return { previous, current }\n\n }, { previous: null, current: null }),\n tap(({ previous, current }) => {\n\n if(previous && JSON.stringify(previous) === JSON.stringify(current)) {\n this.httpManagerService.isPending.next(false)\n this.setData$([])\n } else {\n this.httpManagerService.isPending.next(true)\n }\n\n })\n )\n\n })\n )\n\n )\n\n readonly fetchStream = (options?: RequestOptions) =>\n this.effect<any>(() =>\n of(options).pipe(\n tap(() => this.httpManagerService.isPending.next(true)),\n switchMap((options: any) => {\n\n const requestOptions = this.updateRequestOptions(options?.headers)\n\n return this.httpManagerService.getRequest(requestOptions, options?.path)\n .pipe(\n tap((res: any) => {\n if(res.length > 0) this.setData$(res)\n this.streamedResponse = res\n }),\n scan((acc, res: any) => {\n\n const previous = acc.current\n const current = res\n return { previous, current }\n\n }, { previous: null, current: null }),\n tap(({ previous, current }) => {\n\n if(previous && JSON.stringify(previous) === JSON.stringify(current)) {\n this.httpManagerService.isPending.next(false)\n this.setData$([])\n } else {\n this.httpManagerService.isPending.next(true)\n }\n\n })\n )\n\n }),\n )\n )\n\n // FETCH PAGINATION\n\n private fetchPaginationCancel$ = new Subject<void>();\n\n readonly fetchPaginationRecords = (size = 10, options?: RequestOptions) =>\n this.effect<any>(() => {\n\n this.fetchPaginationCancel$.next();\n\n return of(RequestOptions.adapt(options)).pipe(\n switchMap(() => {\n this.resetData$();\n\n const requestOptions = this.updateRequestOptions(options?.headers);\n const updatedPath = [...(options?.path ?? []), { size, page: 1 }];\n\n const firstRequestObservable = this.httpManagerService.getRequest(requestOptions, updatedPath).pipe(\n takeUntil(this.fetchPaginationCancel$),\n tap(() => this.httpManagerService.isPending.next(true)),\n tap((data: any) => {\n data = !data ? (this.dataType === DataType.ARRAY ? [] : {}) : data;\n this.setData$(data.results);\n })\n );\n\n return firstRequestObservable.pipe(\n takeUntil(this.fetchPaginationCancel$),\n expand((data: any) => {\n this.httpManagerService.isPending.next(true);\n\n const totalPages = data?.totalPages || 1;\n const currentPage = data?.page || 1;\n\n if (currentPage < totalPages) {\n const nextPage = currentPage + 1;\n const updatedPathWithNextPage = [...(options?.path ?? []), { size, page: nextPage }];\n\n const nextRequestObservable = this.httpManagerService.getRequest(requestOptions, updatedPathWithNextPage).pipe(\n takeUntil(this.fetchPaginationCancel$),\n tap(() => this.httpManagerService.isPending.next(true)),\n tap((nextData: any) => {\n nextData = !nextData ? (this.dataType === DataType.ARRAY ? [] : {}) : nextData;\n this.setData$(nextData.results);\n })\n );\n return nextRequestObservable;\n }\n\n return EMPTY;\n }),\n takeUntil(this.fetchPaginationCancel$),\n tap(() => this.httpManagerService.isPending.next(false))\n );\n })\n );\n });\n\n\n // --------------------------------------------------------------------------------------------------\n // MISC\n\n private isEmpty(obj: any) {\n return Object.keys(obj).length === 0\n }\n\n private updateRequestOptions(headers?: any): ApiRequest {\n\n const options = ApiRequest.adapt({ ...this.apiOptions })\n\n options.headers = (headers)\n ? { ...options.headers, ...headers }\n : { ...options.headers }\n\n return options\n }\n\n}\n","\n// export * from \"./database-manager-services/index\";\nexport * from \"./local-storage-manager-service/index\";\n\nexport * from \"./request-manager-services/index\";\nexport * from \"./request-manager-state-service/index\";\n\nexport * from \"./utils/index\";\n\n","export interface ErrorDisplaySettingsInterface {\n displayTime: number\n position: string\n}\n\nexport class ErrorDisplaySettings implements ErrorDisplaySettingsInterface {\n\n constructor(\n public displayTime = 3 * 1000,\n public position = 'top'\n ) {}\n\n static adapt(item?: any): ErrorDisplaySettings {\n\n return new ErrorDisplaySettings(\n (item?.displayTime) ? item.displayTime * 1000 : 3 * 1000,\n item?.position,\n )\n\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpEvent, HttpInterceptor, HttpHandler, HttpRequest\n} from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class WithCredentialsInterceptor implements HttpInterceptor {\n\n intercept(req: HttpRequest<any>, next: HttpHandler):\n Observable<HttpEvent<any>> {\n\n req = req.clone({ withCredentials: true })\n\n return next.handle(req);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor,\n} from '@angular/common/http';\nimport { Observable, Subscription } from 'rxjs';\nimport { LangChangeEvent, TranslateService } from '@ngx-translate/core';\n\n@Injectable()\nexport class RequestHeadersInterceptor implements HttpInterceptor {\n\n subscriptions = new Subscription()\n language = 'en-CA'\n\n get currentDate() {\n\n const date = new Date()\n\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n\n return `${year}-${month}-${day}`\n\n }\n\n constructor(\n private translate: TranslateService\n ) {\n this.subscriptions.add(\n this.translate.onLangChange\n .subscribe((params: LangChangeEvent) => {\n this.language = `${params.lang}-CA`\n })\n )\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n request = request.clone({\n setHeaders: {\n 'Content-Type': 'application/json',\n 'Accept-Language': this.language || 'en-CA',\n 'Current-Date': this.currentDate\n }\n })\n\n return next.handle(request)\n\n }\n\n ngOnDestroy() {\n this.subscriptions.unsubscribe()\n }\n}\n\n","import { inject, Injectable } from '@angular/core'\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpErrorResponse } from '@angular/common/http'\nimport { Observable, catchError, throwError } from 'rxjs'\nimport { ToastColors, ToastDisplay, ToastMessageService } from 'toast-message'\n\n@Injectable()\nexport class RequestErrorInterceptor implements HttpInterceptor {\n\n toastMessage = inject(ToastMessageService)\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n return next.handle(req).pipe(\n\n catchError((error: HttpErrorResponse) => {\n\n const displayError = ToastDisplay.adapt({\n message: 'This is a toast message. This is an Error!!',\n action: 'OK',\n color: ToastColors.SUCCESS,\n icon: 'info',\n duration: 5 * 1000, //5 seconds\n })\n\n if (error.status >= 400 && error.status < 500) {\n\n displayError.color = ToastColors.ERROR\n displayError.message = `${error.status}: ${error.statusText}`\n\n console.error('Client Error:', {\n status: error.status,\n message: error.message,\n error: error.error,\n text: error.statusText,\n })\n\n this.toastMessage.toastMessage(displayError)\n\n } else if (error.status >= 500) {\n\n displayError.color = ToastColors.ERROR\n displayError.message = `${error.status}: ${error.statusText}`\n\n console.error('Server Error:', {\n status: error.status,\n message: error.message,\n error: error.error,\n text: error.statusText,\n })\n\n this.toastMessage.toastMessage(displayError)\n\n }\n\n return throwError(() => error)\n\n })\n\n )\n }\n\n}\n\n\n","/*\n * Public API Surface of http-request-manager\n */\n\nexport * from \"./lib/services/index\"\nexport * from \"./lib/interceptors/index\"\nexport * from \"./lib/models/index\"\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ToastMessageService","catchError"],"mappings":"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"}
Binary file
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="http-request-manager" />
5
+ export * from './public-api';
@@ -0,0 +1,8 @@
1
+ import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export declare class WithCredentialsInterceptor implements HttpInterceptor {
5
+ intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<WithCredentialsInterceptor, never>;
7
+ static ɵprov: i0.ɵɵInjectableDeclaration<WithCredentialsInterceptor>;
8
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./models/error-settings.model";
2
+ export * from "./credentials.interceptor";
3
+ export * from "./request-header.interceptor";
4
+ export * from "./request-error.interceptor";
@@ -0,0 +1,10 @@
1
+ export interface ErrorDisplaySettingsInterface {
2
+ displayTime: number;
3
+ position: string;
4
+ }
5
+ export declare class ErrorDisplaySettings implements ErrorDisplaySettingsInterface {
6
+ displayTime: number;
7
+ position: string;
8
+ constructor(displayTime?: number, position?: string);
9
+ static adapt(item?: any): ErrorDisplaySettings;
10
+ }
@@ -0,0 +1,10 @@
1
+ import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ import { ToastMessageService } from 'toast-message';
4
+ import * as i0 from "@angular/core";
5
+ export declare class RequestErrorInterceptor implements HttpInterceptor {
6
+ toastMessage: ToastMessageService;
7
+ intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<RequestErrorInterceptor, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<RequestErrorInterceptor>;
10
+ }
@@ -0,0 +1,15 @@
1
+ import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
2
+ import { Observable, Subscription } from 'rxjs';
3
+ import { TranslateService } from '@ngx-translate/core';
4
+ import * as i0 from "@angular/core";
5
+ export declare class RequestHeadersInterceptor implements HttpInterceptor {
6
+ private translate;
7
+ subscriptions: Subscription;
8
+ language: string;
9
+ get currentDate(): string;
10
+ constructor(translate: TranslateService);
11
+ intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
12
+ ngOnDestroy(): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<RequestHeadersInterceptor, never>;
14
+ static ɵprov: i0.ɵɵInjectableDeclaration<RequestHeadersInterceptor>;
15
+ }
@@ -0,0 +1,5 @@
1
+ export declare enum DataType {
2
+ ANY = 0,
3
+ ARRAY = 1,
4
+ OBJECT = 2
5
+ }
@@ -0,0 +1,10 @@
1
+ export interface DatabaseStorageInterface {
2
+ table: string;
3
+ expiresIn: string;
4
+ }
5
+ export declare class DatabaseStorage implements DatabaseStorageInterface {
6
+ table: string;
7
+ expiresIn: '';
8
+ constructor(table: string, expiresIn: '');
9
+ static adapt(item?: any): DatabaseStorage;
10
+ }
@@ -0,0 +1,3 @@
1
+ export * from './database-storage.model';
2
+ export * from './retry-options.model';
3
+ export * from './data-type.enum';
@@ -0,0 +1,10 @@
1
+ export interface RetryOptionsInterface {
2
+ times?: number;
3
+ delay?: number;
4
+ }
5
+ export declare class RetryOptions implements RetryOptionsInterface {
6
+ times: number;
7
+ delay: number;
8
+ constructor(times?: number, delay?: number);
9
+ static adapt(item?: any): RetryOptions;
10
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./local-storage-manager-service/index";
2
+ export * from "./request-manager-services/index";
3
+ export * from "./request-manager-state-service/index";
4
+ export * from "./utils/index";
@@ -0,0 +1,2 @@
1
+ export * from "./models/index";
2
+ export * from "./local-storage-manager.service";
@@ -0,0 +1,81 @@
1
+ import { OnDestroy } from '@angular/core';
2
+ import { ComponentStore } from '@ngrx/component-store';
3
+ import { UtilsService } from '../utils/utils.service';
4
+ import { SymmetricalEncryptionService } from '../utils/encryption/symmetrical-encryption.service';
5
+ import { StorageOption } from './models';
6
+ import { SettingOptions } from './models/setting-options.model';
7
+ import { StorageData } from './models/storage-data.model';
8
+ import { EncryptionTestService } from '../utils/encryption/encryption-test.service';
9
+ import { AppService } from '../utils/app.service';
10
+ import * as i0 from "@angular/core";
11
+ export interface State {
12
+ localStores: StorageData[];
13
+ sessionStores: StorageData[];
14
+ settings: StorageOption[];
15
+ }
16
+ export declare class LocalStorageManagerService extends ComponentStore<State> implements OnDestroy {
17
+ storageName: string;
18
+ storageSettingsName: string;
19
+ stateRetrieved: boolean;
20
+ encrypted: boolean;
21
+ app: AppService;
22
+ utils: UtilsService;
23
+ encryption: SymmetricalEncryptionService;
24
+ encryptionTest: EncryptionTestService;
25
+ private readonly data$;
26
+ readonly stores$: import("rxjs").Observable<StorageOption[]>;
27
+ readonly storeExists$: (store: string) => import("rxjs").Observable<boolean>;
28
+ readonly store$: (store: string) => import("rxjs").Observable<any>;
29
+ readonly settings$: import("rxjs").Observable<StorageOption[]>;
30
+ readonly setting$: (store: string) => import("rxjs").Observable<StorageOption | null>;
31
+ persistence$: import("rxjs").Subscription;
32
+ startTimer(): void;
33
+ private updateState;
34
+ constructor();
35
+ readonly setStore: (observableOrValue: {
36
+ id: string;
37
+ name: string;
38
+ data: any;
39
+ options: SettingOptions;
40
+ } | import("rxjs").Observable<{
41
+ id: string;
42
+ name: string;
43
+ data: any;
44
+ options: SettingOptions;
45
+ }>) => import("rxjs").Subscription;
46
+ readonly createStore: (observableOrValue: {
47
+ id?: string | undefined;
48
+ name: string;
49
+ data: any;
50
+ options: SettingOptions;
51
+ } | import("rxjs").Observable<{
52
+ id?: string | undefined;
53
+ name: string;
54
+ data: any;
55
+ options: SettingOptions;
56
+ }>) => import("rxjs").Subscription;
57
+ readonly updateStore: (observableOrValue: {
58
+ name: string;
59
+ data: any;
60
+ } | import("rxjs").Observable<{
61
+ name: string;
62
+ data: any;
63
+ }>) => import("rxjs").Subscription;
64
+ readonly deleteStore: (observableOrValue: {
65
+ name: string;
66
+ } | import("rxjs").Observable<{
67
+ name: string;
68
+ }>) => import("rxjs").Subscription;
69
+ resetStore(): void;
70
+ private persistState;
71
+ private expired;
72
+ private retrieveState;
73
+ private isObjectOrArray;
74
+ private isString;
75
+ private fixAndParseJSON;
76
+ private validStoreName;
77
+ private hasGlobalStorage;
78
+ ngOnDestroy(): void;
79
+ static ɵfac: i0.ɵɵFactoryDeclaration<LocalStorageManagerService, never>;
80
+ static ɵprov: i0.ɵɵInjectableDeclaration<LocalStorageManagerService>;
81
+ }
@@ -0,0 +1,15 @@
1
+ import { StorageOption } from "./storage-option.model";
2
+ export interface GlobalStoreOptionsInterface {
3
+ encryption?: boolean;
4
+ expiresIn?: string;
5
+ expires?: number;
6
+ stores: StorageOption[] | null;
7
+ }
8
+ export declare class GlobalStoreOptions implements GlobalStoreOptionsInterface {
9
+ encryption: boolean;
10
+ expiresIn?: string | undefined;
11
+ expires?: number | undefined;
12
+ stores: StorageOption[] | null;
13
+ constructor(encryption?: boolean, expiresIn?: string | undefined, expires?: number | undefined, stores?: StorageOption[] | null);
14
+ static adapt(item?: any): GlobalStoreOptions;
15
+ }
@@ -0,0 +1,6 @@
1
+ export * from "./global-store-options.model";
2
+ export * from "./setting-options.model";
3
+ export * from "./storage-data.model";
4
+ export * from "./storage-option-settings.model";
5
+ export * from "./storage-option.model";
6
+ export * from "./storage-type.enum";
@@ -0,0 +1,15 @@
1
+ import { StorageType } from "./storage-type.enum";
2
+ export interface SettingOptionsInterface {
3
+ storage?: StorageType;
4
+ expires?: number;
5
+ expiresIn?: string;
6
+ encrypted?: boolean;
7
+ }
8
+ export declare class SettingOptions implements SettingOptionsInterface {
9
+ storage: StorageType;
10
+ expires?: number | undefined;
11
+ expiresIn?: string | undefined;
12
+ encrypted?: boolean | undefined;
13
+ constructor(storage?: StorageType, expires?: number | undefined, expiresIn?: string | undefined, encrypted?: boolean | undefined);
14
+ static adapt(item?: any): SettingOptions;
15
+ }