@acorex/core 21.0.1-next.57 → 21.0.1-next.58
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.
- package/fesm2022/acorex-core-components.mjs +3 -3
- package/fesm2022/acorex-core-components.mjs.map +1 -1
- package/fesm2022/acorex-core-config.mjs +3 -3
- package/fesm2022/acorex-core-config.mjs.map +1 -1
- package/fesm2022/acorex-core-constants.mjs.map +1 -1
- package/fesm2022/acorex-core-date-time.mjs +25 -25
- package/fesm2022/acorex-core-date-time.mjs.map +1 -1
- package/fesm2022/acorex-core-events.mjs +3 -3
- package/fesm2022/acorex-core-events.mjs.map +1 -1
- package/fesm2022/acorex-core-file.mjs +10 -10
- package/fesm2022/acorex-core-file.mjs.map +1 -1
- package/fesm2022/acorex-core-format.mjs +19 -19
- package/fesm2022/acorex-core-format.mjs.map +1 -1
- package/fesm2022/acorex-core-full-screen.mjs +3 -3
- package/fesm2022/acorex-core-full-screen.mjs.map +1 -1
- package/fesm2022/acorex-core-icon.mjs +3 -3
- package/fesm2022/acorex-core-icon.mjs.map +1 -1
- package/fesm2022/acorex-core-image.mjs +3 -3
- package/fesm2022/acorex-core-image.mjs.map +1 -1
- package/fesm2022/acorex-core-locale.mjs +10 -10
- package/fesm2022/acorex-core-locale.mjs.map +1 -1
- package/fesm2022/acorex-core-memoize.mjs.map +1 -1
- package/fesm2022/acorex-core-network.mjs +3 -3
- package/fesm2022/acorex-core-network.mjs.map +1 -1
- package/fesm2022/acorex-core-pipes.mjs +3 -3
- package/fesm2022/acorex-core-pipes.mjs.map +1 -1
- package/fesm2022/acorex-core-platform.mjs +118 -12
- package/fesm2022/acorex-core-platform.mjs.map +1 -1
- package/fesm2022/acorex-core-storage.mjs +9 -9
- package/fesm2022/acorex-core-storage.mjs.map +1 -1
- package/fesm2022/acorex-core-translation.mjs +142 -77
- package/fesm2022/acorex-core-translation.mjs.map +1 -1
- package/fesm2022/acorex-core-utils.mjs +3 -3
- package/fesm2022/acorex-core-utils.mjs.map +1 -1
- package/fesm2022/acorex-core-validation.mjs +40 -40
- package/fesm2022/acorex-core-validation.mjs.map +1 -1
- package/fesm2022/acorex-core-z-index.mjs +3 -3
- package/fesm2022/acorex-core-z-index.mjs.map +1 -1
- package/fesm2022/acorex-core.mjs.map +1 -1
- package/package.json +23 -23
- package/{format/index.d.ts → types/acorex-core-format.d.ts} +2 -2
- package/{platform/index.d.ts → types/acorex-core-platform.d.ts} +28 -5
- package/{translation/index.d.ts → types/acorex-core-translation.d.ts} +29 -7
- package/{validation/index.d.ts → types/acorex-core-validation.d.ts} +10 -10
- /package/{components/index.d.ts → types/acorex-core-components.d.ts} +0 -0
- /package/{config/index.d.ts → types/acorex-core-config.d.ts} +0 -0
- /package/{constants/index.d.ts → types/acorex-core-constants.d.ts} +0 -0
- /package/{date-time/index.d.ts → types/acorex-core-date-time.d.ts} +0 -0
- /package/{events/index.d.ts → types/acorex-core-events.d.ts} +0 -0
- /package/{file/index.d.ts → types/acorex-core-file.d.ts} +0 -0
- /package/{full-screen/index.d.ts → types/acorex-core-full-screen.d.ts} +0 -0
- /package/{icon/index.d.ts → types/acorex-core-icon.d.ts} +0 -0
- /package/{image/index.d.ts → types/acorex-core-image.d.ts} +0 -0
- /package/{locale/index.d.ts → types/acorex-core-locale.d.ts} +0 -0
- /package/{memoize/index.d.ts → types/acorex-core-memoize.d.ts} +0 -0
- /package/{network/index.d.ts → types/acorex-core-network.d.ts} +0 -0
- /package/{pipes/index.d.ts → types/acorex-core-pipes.d.ts} +0 -0
- /package/{storage/index.d.ts → types/acorex-core-storage.d.ts} +0 -0
- /package/{utils/index.d.ts → types/acorex-core-utils.d.ts} +0 -0
- /package/{z-index/index.d.ts → types/acorex-core-z-index.d.ts} +0 -0
- /package/{index.d.ts → types/acorex-core.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-core-storage.mjs","sources":["../tmp-esm2022/storage/cookie-storage.service.js","../tmp-esm2022/storage/local-storage.service.js","../tmp-esm2022/storage/session-storage.service.js","../tmp-esm2022/storage/acorex-core-storage.js"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXCookieStorageService {\n constructor() {\n this.document = inject(DOCUMENT);\n // Get the `PLATFORM_ID` so we can check if we're in a browser.\n this.platformId = inject(PLATFORM_ID);\n this.documentIsAccessible = isPlatformBrowser(this.platformId);\n }\n /**\n * Get cookie Regular Expression\n *\n * @param name Cookie name\n * @returns property RegExp\n *\n */\n static getCookieRegExp(name) {\n const escapedName = name.replace(/([[\\]{}()|=;+?,.*^$])/gi, '\\\\$1');\n return new RegExp('(?:^' + escapedName + '|;\\\\s*' + escapedName + ')=(.*?)(?:;|$)', 'g');\n }\n /**\n * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n * @param encodedURIComponent A value representing an encoded URI component.\n *\n * @returns The unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n */\n static safeDecodeURIComponent(encodedURIComponent) {\n try {\n return decodeURIComponent(encodedURIComponent);\n }\n catch {\n // probably it is not uri encoded. return as is\n return encodedURIComponent;\n }\n }\n /**\n * Return `true` if {@link Document} is accessible, otherwise return `false`\n *\n * @param name Cookie name\n * @returns boolean - whether cookie with specified name exists\n *\n */\n check(name) {\n if (!this.documentIsAccessible) {\n return false;\n }\n name = encodeURIComponent(name);\n const regExp = AXCookieStorageService.getCookieRegExp(name);\n return regExp.test(this.document.cookie);\n }\n /**\n * Get cookies by name\n *\n * @param name Cookie name\n * @returns property value\n *\n */\n get(name) {\n if (this.documentIsAccessible && this.check(name)) {\n name = encodeURIComponent(name);\n const regExp = AXCookieStorageService.getCookieRegExp(name);\n const result = regExp.exec(this.document.cookie);\n return result[1] ? AXCookieStorageService.safeDecodeURIComponent(result[1]) : '';\n }\n else {\n return '';\n }\n }\n /**\n * Get all cookies in JSON format\n *\n * @returns all the cookies in json\n *\n */\n getAll() {\n if (!this.documentIsAccessible) {\n return {};\n }\n const cookies = {};\n const document = this.document;\n if (document.cookie && document.cookie !== '') {\n document.cookie.split(';').forEach((currentCookie) => {\n const [cookieName, cookieValue] = currentCookie.split('=');\n cookies[AXCookieStorageService.safeDecodeURIComponent(cookieName.replace(/^ /, ''))] =\n AXCookieStorageService.safeDecodeURIComponent(cookieValue);\n });\n }\n return cookies;\n }\n set(name, value, expiresOrOptions, path, domain, secure, sameSite) {\n if (!this.documentIsAccessible) {\n return;\n }\n if (typeof expiresOrOptions === 'number' ||\n expiresOrOptions instanceof Date ||\n path ||\n domain ||\n secure ||\n sameSite) {\n const optionsBody = {\n expires: expiresOrOptions,\n path,\n domain,\n secure,\n sameSite: sameSite ? sameSite : 'Lax',\n };\n this.set(name, value, optionsBody);\n return;\n }\n let cookieString = encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';';\n const options = expiresOrOptions ? expiresOrOptions : {};\n if (options.expires) {\n if (typeof options.expires === 'number') {\n const dateExpires = new Date(new Date().getTime() + options.expires * 1000 * 60 * 60 * 24);\n cookieString += 'expires=' + dateExpires.toUTCString() + ';';\n }\n else {\n cookieString += 'expires=' + options.expires.toUTCString() + ';';\n }\n }\n if (options.path) {\n cookieString += 'path=' + options.path + ';';\n }\n if (options.domain) {\n cookieString += 'domain=' + options.domain + ';';\n }\n if (options.secure === false && options.sameSite === 'None') {\n options.secure = true;\n console.warn(`[ngx-cookie-service] Cookie ${name} was forced with secure flag because sameSite=None.` +\n `More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`);\n }\n if (options.secure) {\n cookieString += 'secure;';\n }\n if (!options.sameSite) {\n options.sameSite = 'Lax';\n }\n cookieString += 'sameSite=' + options.sameSite + ';';\n this.document.cookie = cookieString;\n }\n /**\n * Delete cookie by name\n *\n * @param name Cookie name\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Cookie secure flag\n * @param sameSite Cookie sameSite flag - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite\n *\n */\n delete(name, path, domain, secure, sameSite = 'Lax') {\n if (!this.documentIsAccessible) {\n return;\n }\n const expiresDate = new Date('Thu, 01 Jan 1970 00:00:01 GMT');\n this.set(name, '', {\n expires: expiresDate,\n path,\n domain,\n secure,\n sameSite,\n });\n }\n /**\n * Delete all cookies\n *\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Is the Cookie secure\n * @param sameSite Is the cookie same site\n *\n */\n deleteAll(path, domain, secure, sameSite = 'Lax') {\n if (!this.documentIsAccessible) {\n return;\n }\n const cookies = this.getAll();\n for (const cookieName in cookies) {\n // eslint-disable-next-line no-prototype-builtins\n if (cookies.hasOwnProperty(cookieName)) {\n this.delete(cookieName, path, domain, secure, sameSite);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCookieStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCookieStorageService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCookieStorageService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3RvcmFnZS9zcmMvY29va2llLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkxRSxNQUFNLE9BQU8sc0JBQXNCO0lBT2pDO1FBSlEsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQywrREFBK0Q7UUFDdkQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUd2QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVk7UUFDekMsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUU1RSxPQUFPLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxXQUFXLEdBQUcsUUFBUSxHQUFHLFdBQVcsR0FBRyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBMkI7UUFDL0QsSUFBSSxDQUFDO1lBQ0gsT0FBTyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwrQ0FBK0M7WUFDL0MsT0FBTyxtQkFBbUIsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FN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LFVBQVUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNqQyxpREFBaUQ7WUFDakQsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs4R0FuUlUsc0JBQXNCO2tIQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBET0NVTUVOVCwgaW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDb29raWVPcHRpb25zLCBBWFNhbWVTaXRlIH0gZnJvbSAnLi9zdG9yYWdlLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWENvb2tpZVN0b3JhZ2VTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudElzQWNjZXNzaWJsZTogYm9vbGVhbjtcblxuICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgLy8gR2V0IHRoZSBgUExBVEZPUk1fSURgIHNvIHdlIGNhbiBjaGVjayBpZiB3ZSdyZSBpbiBhIGJyb3dzZXIuXG4gIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvb2tpZSBSZWd1bGFyIEV4cHJlc3Npb25cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgQ29va2llIG5hbWVcbiAgICogQHJldHVybnMgcHJvcGVydHkgUmVnRXhwXG4gICAqXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRDb29raWVSZWdFeHAobmFtZTogc3RyaW5nKTogUmVnRXhwIHtcbiAgICBjb25zdCBlc2NhcGVkTmFtZTogc3RyaW5nID0gbmFtZS5yZXBsYWNlKC8oW1tcXF17fSgpfD07Kz8sLipeJF0pL2dpLCAnXFxcXCQxJyk7XG5cbiAgICByZXR1cm4gbmV3IFJlZ0V4cCgnKD86XicgKyBlc2NhcGVkTmFtZSArICd8O1xcXFxzKicgKyBlc2NhcGVkTmFtZSArICcpPSguKj8pKD86O3wkKScsICdnJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdW5lbmNvZGVkIHZlcnNpb24gb2YgYW4gZW5jb2RlZCBjb21wb25lbnQgb2YgYSBVbmlmb3JtIFJlc291cmNlIElkZW50aWZpZXIgKFVSSSkuXG4gICAqXG4gICAqIEBwYXJhbSBlbmNvZGVkVVJJQ29tcG9uZW50IEEgdmFsdWUgcmVwcmVzZW50aW5nIGFuIGVuY29kZWQgVVJJIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHVuZW5jb2RlZCB2ZXJzaW9uIG9mIGFuIGVuY29kZWQgY29tcG9uZW50IG9mIGEgVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVyIChVUkkpLlxuICAgKlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgc2FmZURlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkVVJJQ29tcG9uZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZWRVUklDb21wb25lbnQpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gcHJvYmFibHkgaXQgaXMgbm90IHVyaSBlbmNvZGVkLiByZXR1cm4gYXMgaXNcbiAgICAgIHJldHVybiBlbmNvZGVkVVJJQ29tcG9uZW50O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYHRydWVgIGlmIHtAbGluayBEb2N1bWVudH0gaXMgYWNjZXNzaWJsZSwgb3RoZXJ3aXNlIHJldHVybiBgZmFsc2VgXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIENvb2tpZSBuYW1lXG4gICAqIEByZXR1cm5zIGJvb2xlYW4gLSB3aGV0aGVyIGNvb2tpZSB3aXRoIHNwZWNpZmllZCBuYW1lIGV4aXN0c1xuICAgKlxuICAgKi9cbiAgY2hlY2sobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQobmFtZSk7XG4gICAgY29uc3QgcmVnRXhwOiBSZWdFeHAgPSBBWENvb2tpZVN0b3JhZ2VTZXJ2aWNlLmdldENvb2tpZVJlZ0V4cChuYW1lKTtcbiAgICByZXR1cm4gcmVnRXhwLnRlc3QodGhpcy5kb2N1bWVudC5jb29raWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb29raWVzIGJ5IG5hbWVcbiAgICpcbiAgICogQHBhcmFtIG5hbWUgQ29va2llIG5hbWVcbiAgICogQHJldHVybnMgcHJvcGVydHkgdmFsdWVcbiAgICpcbiAgICovXG4gIGdldChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlICYmIHRoaXMuY2hlY2sobmFtZSkpIHtcbiAgICAgIG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQobmFtZSk7XG5cbiAgICAgIGNvbnN0IHJlZ0V4cDogUmVnRXhwID0gQVhDb29raWVTdG9yYWdlU2VydmljZS5nZXRDb29raWVSZWdFeHAobmFtZSk7XG4gICAgICBjb25zdCByZXN1bHQ6IFJlZ0V4cEV4ZWNBcnJheSA9IHJlZ0V4cC5leGVjKHRoaXMuZG9jdW1lbnQuY29va2llKTtcblxuICAgICAgcmV0dXJuIHJlc3VsdFsxXSA/IEFYQ29va2llU3RvcmFnZVNlcnZpY2Uuc2FmZURlY29kZVVSSUNvbXBvbmVudChyZXN1bHRbMV0pIDogJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBjb29raWVzIGluIEpTT04gZm9ybWF0XG4gICAqXG4gICAqIEByZXR1cm5zIGFsbCB0aGUgY29va2llcyBpbiBqc29uXG4gICAqXG4gICAqL1xuICBnZXRBbGwoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgaWYgKCF0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29uc3QgY29va2llczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIGNvbnN0IGRvY3VtZW50OiBhbnkgPSB0aGlzLmRvY3VtZW50O1xuXG4gICAgaWYgKGRvY3VtZW50LmNvb2tpZSAmJiBkb2N1bWVudC5jb29raWUgIT09ICcnKSB7XG4gICAgICBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKS5mb3JFYWNoKChjdXJyZW50Q29va2llKSA9PiB7XG4gICAgICAgIGNvbnN0IFtjb29raWVOYW1lLCBjb29raWVWYWx1ZV0gPSBjdXJyZW50Q29va2llLnNwbGl0KCc9Jyk7XG4gICAgICAgIGNvb2tpZXNbQVhDb29raWVTdG9yYWdlU2VydmljZS5zYWZlRGVjb2RlVVJJQ29tcG9uZW50KGNvb2tpZU5hbWUucmVwbGFjZSgvXiAvLCAnJykpXSA9XG4gICAgICAgICAgQVhDb29raWVTdG9yYWdlU2VydmljZS5zYWZlRGVjb2RlVVJJQ29tcG9uZW50KGNvb2tpZVZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjb29raWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjb29raWUgYmFzZWQgb24gcHJvdmlkZWQgaW5mb3JtYXRpb25cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgICAgIENvb2tpZSBuYW1lXG4gICAqIEBwYXJhbSB2YWx1ZSAgICBDb29raWUgdmFsdWVcbiAgICogQHBhcmFtIGV4cGlyZXMgIE51bWJlciBvZiBkYXlzIHVudGlsIHRoZSBjb29raWVzIGV4cGlyZXMgb3IgYW4gYWN0dWFsIGBEYXRlYFxuICAgKiBAcGFyYW0gcGF0aCAgICAgQ29va2llIHBhdGhcbiAgICogQHBhcmFtIGRvbWFpbiAgIENvb2tpZSBkb21haW5cbiAgICogQHBhcmFtIHNlY3VyZSAgIFNlY3VyZSBmbGFnXG4gICAqIEBwYXJhbSBzYW1lU2l0ZSBPV0FTUCBzYW1lc2l0ZSB0b2tlbiBgTGF4YCwgYE5vbmVgLCBvciBgU3RyaWN0YC4gRGVmYXVsdHMgdG8gYExheGBcbiAgICpcbiAgICovXG4gIHNldChcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBleHBpcmVzPzogQVhDb29raWVPcHRpb25zWydleHBpcmVzJ10sXG4gICAgcGF0aD86IEFYQ29va2llT3B0aW9uc1sncGF0aCddLFxuICAgIGRvbWFpbj86IEFYQ29va2llT3B0aW9uc1snZG9tYWluJ10sXG4gICAgc2VjdXJlPzogQVhDb29raWVPcHRpb25zWydzZWN1cmUnXSxcbiAgICBzYW1lU2l0ZT86IEFYU2FtZVNpdGUsXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNldCBjb29raWUgYmFzZWQgb24gcHJvdmlkZWQgaW5mb3JtYXRpb25cbiAgICpcbiAgICogQ29va2llJ3MgcGFyYW1ldGVyczpcbiAgICogPHByZT5cbiAgICogZXhwaXJlcyAgTnVtYmVyIG9mIGRheXMgdW50aWwgdGhlIGNvb2tpZXMgZXhwaXJlcyBvciBhbiBhY3R1YWwgYERhdGVgXG4gICAqIHBhdGggICAgIENvb2tpZSBwYXRoXG4gICAqIGRvbWFpbiAgIENvb2tpZSBkb21haW5cbiAgICogc2VjdXJlICAgU2VjdXJlIGZsYWdcbiAgICogc2FtZVNpdGUgT1dBU1Agc2FtZXNpdGUgdG9rZW4gYExheGAsIGBOb25lYCwgb3IgYFN0cmljdGAuIERlZmF1bHRzIHRvIGBMYXhgXG4gICAqIDwvcHJlPlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAgICAgQ29va2llIG5hbWVcbiAgICogQHBhcmFtIHZhbHVlICAgIENvb2tpZSB2YWx1ZVxuICAgKiBAcGFyYW0gb3B0aW9ucyAgQm9keSB3aXRoIGNvb2tpZSdzIHBhcmFtc1xuICAgKlxuICAgKi9cbiAgc2V0KG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgb3B0aW9ucz86IEFYQ29va2llT3B0aW9ucyk6IHZvaWQ7XG5cbiAgc2V0KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIGV4cGlyZXNPck9wdGlvbnM/OiBBWENvb2tpZU9wdGlvbnNbJ2V4cGlyZXMnXSB8IEFYQ29va2llT3B0aW9ucyxcbiAgICBwYXRoPzogQVhDb29raWVPcHRpb25zWydwYXRoJ10sXG4gICAgZG9tYWluPzogQVhDb29raWVPcHRpb25zWydkb21haW4nXSxcbiAgICBzZWN1cmU/OiBBWENvb2tpZU9wdGlvbnNbJ3NlY3VyZSddLFxuICAgIHNhbWVTaXRlPzogQVhTYW1lU2l0ZSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIGV4cGlyZXNPck9wdGlvbnMgPT09ICdudW1iZXInIHx8XG4gICAgICBleHBpcmVzT3JPcHRpb25zIGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICAgcGF0aCB8fFxuICAgICAgZG9tYWluIHx8XG4gICAgICBzZWN1cmUgfHxcbiAgICAgIHNhbWVTaXRlXG4gICAgKSB7XG4gICAgICBjb25zdCBvcHRpb25zQm9keSA9IHtcbiAgICAgICAgZXhwaXJlczogZXhwaXJlc09yT3B0aW9ucyBhcyBBWENvb2tpZU9wdGlvbnNbJ2V4cGlyZXMnXSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgZG9tYWluLFxuICAgICAgICBzZWN1cmUsXG4gICAgICAgIHNhbWVTaXRlOiBzYW1lU2l0ZSA/IHNhbWVTaXRlIDogJ0xheCcsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNldChuYW1lLCB2YWx1ZSwgb3B0aW9uc0JvZHkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjb29raWVTdHJpbmc6IHN0cmluZyA9IGVuY29kZVVSSUNvbXBvbmVudChuYW1lKSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkgKyAnOyc7XG5cbiAgICBjb25zdCBvcHRpb25zID0gZXhwaXJlc09yT3B0aW9ucyA/IGV4cGlyZXNPck9wdGlvbnMgOiB7fTtcblxuICAgIGlmIChvcHRpb25zLmV4cGlyZXMpIHtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5leHBpcmVzID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBkYXRlRXhwaXJlczogRGF0ZSA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgb3B0aW9ucy5leHBpcmVzICogMTAwMCAqIDYwICogNjAgKiAyNCk7XG5cbiAgICAgICAgY29va2llU3RyaW5nICs9ICdleHBpcmVzPScgKyBkYXRlRXhwaXJlcy50b1VUQ1N0cmluZygpICsgJzsnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29va2llU3RyaW5nICs9ICdleHBpcmVzPScgKyBvcHRpb25zLmV4cGlyZXMudG9VVENTdHJpbmcoKSArICc7JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5wYXRoKSB7XG4gICAgICBjb29raWVTdHJpbmcgKz0gJ3BhdGg9JyArIG9wdGlvbnMucGF0aCArICc7JztcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5kb21haW4pIHtcbiAgICAgIGNvb2tpZVN0cmluZyArPSAnZG9tYWluPScgKyBvcHRpb25zLmRvbWFpbiArICc7JztcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zZWN1cmUgPT09IGZhbHNlICYmIG9wdGlvbnMuc2FtZVNpdGUgPT09ICdOb25lJykge1xuICAgICAgb3B0aW9ucy5zZWN1cmUgPSB0cnVlO1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW25neC1jb29raWUtc2VydmljZV0gQ29va2llICR7bmFtZX0gd2FzIGZvcmNlZCB3aXRoIHNlY3VyZSBmbGFnIGJlY2F1c2Ugc2FtZVNpdGU9Tm9uZS5gICtcbiAgICAgICAgICBgTW9yZSBkZXRhaWxzIDogaHR0cHM6Ly9naXRodWIuY29tL3N0ZXZlcm1laXN0ZXIvbmd4LWNvb2tpZS1zZXJ2aWNlL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtNTk3NzIwMTMwYCxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnNlY3VyZSkge1xuICAgICAgY29va2llU3RyaW5nICs9ICdzZWN1cmU7JztcbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuc2FtZVNpdGUpIHtcbiAgICAgIG9wdGlvbnMuc2FtZVNpdGUgPSAnTGF4JztcbiAgICB9XG5cbiAgICBjb29raWVTdHJpbmcgKz0gJ3NhbWVTaXRlPScgKyBvcHRpb25zLnNhbWVTaXRlICsgJzsnO1xuXG4gICAgdGhpcy5kb2N1bWVudC5jb29raWUgPSBjb29raWVTdHJpbmc7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGNvb2tpZSBieSBuYW1lXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lICAgQ29va2llIG5hbWVcbiAgICogQHBhcmFtIHBhdGggICBDb29raWUgcGF0aFxuICAgKiBAcGFyYW0gZG9tYWluIENvb2tpZSBkb21haW5cbiAgICogQHBhcmFtIHNlY3VyZSBDb29raWUgc2VjdXJlIGZsYWdcbiAgICogQHBhcmFtIHNhbWVTaXRlIENvb2tpZSBzYW1lU2l0ZSBmbGFnIC0gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1NldC1Db29raWUvU2FtZVNpdGVcbiAgICpcbiAgICovXG4gIGRlbGV0ZShcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgcGF0aD86IEFYQ29va2llT3B0aW9uc1sncGF0aCddLFxuICAgIGRvbWFpbj86IEFYQ29va2llT3B0aW9uc1snZG9tYWluJ10sXG4gICAgc2VjdXJlPzogQVhDb29raWVPcHRpb25zWydzZWN1cmUnXSxcbiAgICBzYW1lU2l0ZTogQVhTYW1lU2l0ZSA9ICdMYXgnLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXhwaXJlc0RhdGUgPSBuZXcgRGF0ZSgnVGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMSBHTVQnKTtcbiAgICB0aGlzLnNldChuYW1lLCAnJywge1xuICAgICAgZXhwaXJlczogZXhwaXJlc0RhdGUsXG4gICAgICBwYXRoLFxuICAgICAgZG9tYWluLFxuICAgICAgc2VjdXJlLFxuICAgICAgc2FtZVNpdGUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGFsbCBjb29raWVzXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoICAgQ29va2llIHBhdGhcbiAgICogQHBhcmFtIGRvbWFpbiBDb29raWUgZG9tYWluXG4gICAqIEBwYXJhbSBzZWN1cmUgSXMgdGhlIENvb2tpZSBzZWN1cmVcbiAgICogQHBhcmFtIHNhbWVTaXRlIElzIHRoZSBjb29raWUgc2FtZSBzaXRlXG4gICAqXG4gICAqL1xuICBkZWxldGVBbGwoXG4gICAgcGF0aD86IEFYQ29va2llT3B0aW9uc1sncGF0aCddLFxuICAgIGRvbWFpbj86IEFYQ29va2llT3B0aW9uc1snZG9tYWluJ10sXG4gICAgc2VjdXJlPzogQVhDb29raWVPcHRpb25zWydzZWN1cmUnXSxcbiAgICBzYW1lU2l0ZTogQVhTYW1lU2l0ZSA9ICdMYXgnLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb29raWVzID0gdGhpcy5nZXRBbGwoKTtcblxuICAgIGZvciAoY29uc3QgY29va2llTmFtZSBpbiBjb29raWVzKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gICAgICBpZiAoY29va2llcy5oYXNPd25Qcm9wZXJ0eShjb29raWVOYW1lKSkge1xuICAgICAgICB0aGlzLmRlbGV0ZShjb29raWVOYW1lLCBwYXRoLCBkb21haW4sIHNlY3VyZSwgc2FtZVNpdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19","import { isBrowser } from '@acorex/core/platform';\nimport { Injectable, InjectionToken, inject } from '@angular/core';\nimport { AES, Utf8 } from 'crypto-es';\nimport * as i0 from \"@angular/core\";\nexport const AX_LOCALSTORAGE_SECRET_KEY = new InjectionToken('AX_LOCALSTORAGE_SECRET_KEY');\nexport class AXLocalStorageService {\n constructor() {\n this.secret_key = inject(AX_LOCALSTORAGE_SECRET_KEY);\n }\n /**\n * Reads a value from localStorage and parses JSON.\n *\n * @param key - Storage key\n * @returns T | null\n */\n get(key) {\n if (isBrowser()) {\n const value = localStorage.getItem(key);\n return value ? JSON.parse(value) : null;\n }\n else {\n return null;\n }\n }\n /**\n * Writes a JSON-serialized value to localStorage.\n *\n * @param key - Storage key\n * @param value - Value to persist\n */\n set(key, value) {\n if (isBrowser()) {\n return localStorage.setItem(key, JSON.stringify(value));\n }\n }\n clear() {\n if (isBrowser()) {\n return localStorage.clear();\n }\n }\n /**\n * Removes a single entry by key from localStorage.\n *\n * @param key - Storage key\n */\n removeItem(key) {\n if (isBrowser()) {\n return localStorage.removeItem(key);\n }\n }\n /**\n * Encrypts the JSON-serialized value using AES and stores it.\n * Requires providing AX_LOCALSTORAGE_SECRET_KEY.\n *\n * @param key - Storage key\n * @param value - Value to encrypt and store\n */\n setWithEncryption(key, value) {\n if (isBrowser()) {\n const encrypted = AES.encrypt(JSON.stringify(value), this.secret_key).toString();\n return localStorage.setItem(key, encrypted);\n }\n }\n /**\n * Reads the encrypted value, decrypts it using AES and parses JSON.\n * Requires providing AX_LOCALSTORAGE_SECRET_KEY.\n *\n * @param key - Storage key\n * @returns T | null\n */\n getWithEncription(key) {\n if (isBrowser()) {\n const encrypted = localStorage.getItem(key) || '';\n const decrypted = AES.decrypt(encrypted, this.secret_key).toString(Utf8);\n return encrypted ? JSON.parse(decrypted) : {};\n }\n else {\n return null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXLocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXLocalStorageService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXLocalStorageService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zdG9yYWdlL3NyYy9sb2NhbC1zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFHdEMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQTJCLElBQUksY0FBYyxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFHbkgsTUFBTSxPQUFPLHFCQUFxQjtJQURsQztRQUVVLGVBQVUsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztLQWlGekQ7SUEvRUM7Ozs7O09BS0c7SUFFSCxHQUFHLENBQWMsR0FBVztRQUMxQixJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDaEIsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzFDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBRUgsR0FBRyxDQUFjLEdBQVcsRUFBRSxLQUFRO1FBQ3BDLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNoQixPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDaEIsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBRUgsVUFBVSxDQUFDLEdBQVc7UUFDcEIsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUVILGlCQUFpQixDQUFjLEdBQVcsRUFBRSxLQUFRO1FBQ2xELElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNoQixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pGLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFFSCxpQkFBaUIsQ0FBYyxHQUFXO1FBQ3hDLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNoQixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsRCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxFQUFRLENBQUM7UUFDdkQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDOzhHQWpGVSxxQkFBcUI7a0hBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJ0BhY29yZXgvY29yZS9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBRVMsIFV0ZjggfSBmcm9tICdjcnlwdG8tZXMnO1xuaW1wb3J0IHsgQVhTdG9yYWdlIH0gZnJvbSAnLi9zdG9yYWdlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjb25zdCBBWF9MT0NBTFNUT1JBR0VfU0VDUkVUX0tFWTogSW5qZWN0aW9uVG9rZW48c3RyaW5nPiA9IG5ldyBJbmplY3Rpb25Ub2tlbignQVhfTE9DQUxTVE9SQUdFX1NFQ1JFVF9LRVknKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTG9jYWxTdG9yYWdlU2VydmljZSBpbXBsZW1lbnRzIEFYU3RvcmFnZSB7XG4gIHByaXZhdGUgc2VjcmV0X2tleSA9IGluamVjdChBWF9MT0NBTFNUT1JBR0VfU0VDUkVUX0tFWSk7XG5cbiAgLyoqXG4gICAqIFJlYWRzIGEgdmFsdWUgZnJvbSBsb2NhbFN0b3JhZ2UgYW5kIHBhcnNlcyBKU09OLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gU3RvcmFnZSBrZXlcbiAgICogQHJldHVybnMgVCB8IG51bGxcbiAgICovXG5cbiAgZ2V0PFQgPSB1bmtub3duPihrZXk6IHN0cmluZyk6IFQge1xuICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgcmV0dXJuIHZhbHVlID8gSlNPTi5wYXJzZSh2YWx1ZSkgOiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIGEgSlNPTi1zZXJpYWxpemVkIHZhbHVlIHRvIGxvY2FsU3RvcmFnZS5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIFN0b3JhZ2Uga2V5XG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHRvIHBlcnNpc3RcbiAgICovXG5cbiAgc2V0PFQgPSB1bmtub3duPihrZXk6IHN0cmluZywgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICBpZiAoaXNCcm93c2VyKCkpIHtcbiAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBzaW5nbGUgZW50cnkgYnkga2V5IGZyb20gbG9jYWxTdG9yYWdlLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gU3RvcmFnZSBrZXlcbiAgICovXG5cbiAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZykge1xuICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVuY3J5cHRzIHRoZSBKU09OLXNlcmlhbGl6ZWQgdmFsdWUgdXNpbmcgQUVTIGFuZCBzdG9yZXMgaXQuXG4gICAqIFJlcXVpcmVzIHByb3ZpZGluZyBBWF9MT0NBTFNUT1JBR0VfU0VDUkVUX0tFWS5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIFN0b3JhZ2Uga2V5XG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHRvIGVuY3J5cHQgYW5kIHN0b3JlXG4gICAqL1xuXG4gIHNldFdpdGhFbmNyeXB0aW9uPFQgPSB1bmtub3duPihrZXk6IHN0cmluZywgdmFsdWU6IFQpIHtcbiAgICBpZiAoaXNCcm93c2VyKCkpIHtcbiAgICAgIGNvbnN0IGVuY3J5cHRlZCA9IEFFUy5lbmNyeXB0KEpTT04uc3RyaW5naWZ5KHZhbHVlKSwgdGhpcy5zZWNyZXRfa2V5KS50b1N0cmluZygpO1xuICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgZW5jcnlwdGVkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgdGhlIGVuY3J5cHRlZCB2YWx1ZSwgZGVjcnlwdHMgaXQgdXNpbmcgQUVTIGFuZCBwYXJzZXMgSlNPTi5cbiAgICogUmVxdWlyZXMgcHJvdmlkaW5nIEFYX0xPQ0FMU1RPUkFHRV9TRUNSRVRfS0VZLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gU3RvcmFnZSBrZXlcbiAgICogQHJldHVybnMgVCB8IG51bGxcbiAgICovXG5cbiAgZ2V0V2l0aEVuY3JpcHRpb248VCA9IHVua25vd24+KGtleTogc3RyaW5nKTogVCB7XG4gICAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgICBjb25zdCBlbmNyeXB0ZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpIHx8ICcnO1xuICAgICAgY29uc3QgZGVjcnlwdGVkID0gQUVTLmRlY3J5cHQoZW5jcnlwdGVkLCB0aGlzLnNlY3JldF9rZXkpLnRvU3RyaW5nKFV0ZjgpO1xuICAgICAgcmV0dXJuIGVuY3J5cHRlZCA/IEpTT04ucGFyc2UoZGVjcnlwdGVkKSA6ICh7fSBhcyBUKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=","import { isBrowser } from '@acorex/core/platform';\nimport { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXSessionStorageService {\n get(key) {\n if (isBrowser()) {\n const value = sessionStorage.getItem(key);\n return value ? JSON.parse(value) : null;\n }\n else {\n return null;\n }\n }\n set(key, value) {\n if (isBrowser()) {\n return sessionStorage.setItem(key, JSON.stringify(value));\n }\n }\n clear() {\n if (isBrowser()) {\n return sessionStorage.clear();\n }\n }\n removeItem(key) {\n if (isBrowser()) {\n return sessionStorage.removeItem(key);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSessionStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSessionStorageService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXSessionStorageService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3N0b3JhZ2Uvc3JjL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLEdBQUcsQ0FBYyxHQUFXO1FBQzFCLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNoQixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsR0FBRyxDQUFjLEdBQVcsRUFBRSxLQUFRO1FBQ3BDLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNoQixPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDaEIsT0FBTyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDaEIsT0FBTyxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDOzhHQTFCVSx1QkFBdUI7a0hBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJ0BhY29yZXgvY29yZS9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFN0b3JhZ2UgfSBmcm9tICcuL3N0b3JhZ2UuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIGltcGxlbWVudHMgQVhTdG9yYWdlIHtcbiAgZ2V0PFQgPSB1bmtub3duPihrZXk6IHN0cmluZyk6IFQge1xuICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgICByZXR1cm4gdmFsdWUgPyBKU09OLnBhcnNlKHZhbHVlKSA6IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHNldDxUID0gdW5rbm93bj4oa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVJdGVtKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgIH1cbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3RvcmFnZS9zcmMvYWNvcmV4LWNvcmUtc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-core-storage.mjs","sources":["../../../../packages/core/storage/src/cookie-storage.service.ts","../../../../packages/core/storage/src/local-storage.service.ts","../../../../packages/core/storage/src/session-storage.service.ts","../../../../packages/core/storage/src/acorex-core-storage.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { AXCookieOptions, AXSameSite } from './storage.interface';\n\n@Injectable()\nexport class AXCookieStorageService {\n private readonly documentIsAccessible: boolean;\n\n private document = inject(DOCUMENT);\n // Get the `PLATFORM_ID` so we can check if we're in a browser.\n private platformId = inject(PLATFORM_ID);\n\n constructor() {\n this.documentIsAccessible = isPlatformBrowser(this.platformId);\n }\n\n /**\n * Get cookie Regular Expression\n *\n * @param name Cookie name\n * @returns property RegExp\n *\n */\n private static getCookieRegExp(name: string): RegExp {\n const escapedName: string = name.replace(/([[\\]{}()|=;+?,.*^$])/gi, '\\\\$1');\n\n return new RegExp('(?:^' + escapedName + '|;\\\\s*' + escapedName + ')=(.*?)(?:;|$)', 'g');\n }\n\n /**\n * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n * @param encodedURIComponent A value representing an encoded URI component.\n *\n * @returns The unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n */\n private static safeDecodeURIComponent(encodedURIComponent: string): string {\n try {\n return decodeURIComponent(encodedURIComponent);\n } catch {\n // probably it is not uri encoded. return as is\n return encodedURIComponent;\n }\n }\n\n /**\n * Return `true` if {@link Document} is accessible, otherwise return `false`\n *\n * @param name Cookie name\n * @returns boolean - whether cookie with specified name exists\n *\n */\n check(name: string): boolean {\n if (!this.documentIsAccessible) {\n return false;\n }\n name = encodeURIComponent(name);\n const regExp: RegExp = AXCookieStorageService.getCookieRegExp(name);\n return regExp.test(this.document.cookie);\n }\n\n /**\n * Get cookies by name\n *\n * @param name Cookie name\n * @returns property value\n *\n */\n get(name: string): string {\n if (this.documentIsAccessible && this.check(name)) {\n name = encodeURIComponent(name);\n\n const regExp: RegExp = AXCookieStorageService.getCookieRegExp(name);\n const result: RegExpExecArray = regExp.exec(this.document.cookie);\n\n return result[1] ? AXCookieStorageService.safeDecodeURIComponent(result[1]) : '';\n } else {\n return '';\n }\n }\n\n /**\n * Get all cookies in JSON format\n *\n * @returns all the cookies in json\n *\n */\n getAll(): { [key: string]: string } {\n if (!this.documentIsAccessible) {\n return {};\n }\n\n const cookies: { [key: string]: string } = {};\n const document: any = this.document;\n\n if (document.cookie && document.cookie !== '') {\n document.cookie.split(';').forEach((currentCookie) => {\n const [cookieName, cookieValue] = currentCookie.split('=');\n cookies[AXCookieStorageService.safeDecodeURIComponent(cookieName.replace(/^ /, ''))] =\n AXCookieStorageService.safeDecodeURIComponent(cookieValue);\n });\n }\n\n return cookies;\n }\n\n /**\n * Set cookie based on provided information\n *\n * @param name Cookie name\n * @param value Cookie value\n * @param expires Number of days until the cookies expires or an actual `Date`\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Secure flag\n * @param sameSite OWASP samesite token `Lax`, `None`, or `Strict`. Defaults to `Lax`\n *\n */\n set(\n name: string,\n value: string,\n expires?: AXCookieOptions['expires'],\n path?: AXCookieOptions['path'],\n domain?: AXCookieOptions['domain'],\n secure?: AXCookieOptions['secure'],\n sameSite?: AXSameSite,\n ): void;\n\n /**\n * Set cookie based on provided information\n *\n * Cookie's parameters:\n * <pre>\n * expires Number of days until the cookies expires or an actual `Date`\n * path Cookie path\n * domain Cookie domain\n * secure Secure flag\n * sameSite OWASP samesite token `Lax`, `None`, or `Strict`. Defaults to `Lax`\n * </pre>\n *\n * @param name Cookie name\n * @param value Cookie value\n * @param options Body with cookie's params\n *\n */\n set(name: string, value: string, options?: AXCookieOptions): void;\n\n set(\n name: string,\n value: string,\n expiresOrOptions?: AXCookieOptions['expires'] | AXCookieOptions,\n path?: AXCookieOptions['path'],\n domain?: AXCookieOptions['domain'],\n secure?: AXCookieOptions['secure'],\n sameSite?: AXSameSite,\n ): void {\n if (!this.documentIsAccessible) {\n return;\n }\n\n if (\n typeof expiresOrOptions === 'number' ||\n expiresOrOptions instanceof Date ||\n path ||\n domain ||\n secure ||\n sameSite\n ) {\n const optionsBody = {\n expires: expiresOrOptions as AXCookieOptions['expires'],\n path,\n domain,\n secure,\n sameSite: sameSite ? sameSite : 'Lax',\n };\n\n this.set(name, value, optionsBody);\n return;\n }\n\n let cookieString: string = encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';';\n\n const options = expiresOrOptions ? expiresOrOptions : {};\n\n if (options.expires) {\n if (typeof options.expires === 'number') {\n const dateExpires: Date = new Date(new Date().getTime() + options.expires * 1000 * 60 * 60 * 24);\n\n cookieString += 'expires=' + dateExpires.toUTCString() + ';';\n } else {\n cookieString += 'expires=' + options.expires.toUTCString() + ';';\n }\n }\n\n if (options.path) {\n cookieString += 'path=' + options.path + ';';\n }\n\n if (options.domain) {\n cookieString += 'domain=' + options.domain + ';';\n }\n\n if (options.secure === false && options.sameSite === 'None') {\n options.secure = true;\n console.warn(\n `[ngx-cookie-service] Cookie ${name} was forced with secure flag because sameSite=None.` +\n `More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`,\n );\n }\n if (options.secure) {\n cookieString += 'secure;';\n }\n\n if (!options.sameSite) {\n options.sameSite = 'Lax';\n }\n\n cookieString += 'sameSite=' + options.sameSite + ';';\n\n this.document.cookie = cookieString;\n }\n\n /**\n * Delete cookie by name\n *\n * @param name Cookie name\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Cookie secure flag\n * @param sameSite Cookie sameSite flag - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite\n *\n */\n delete(\n name: string,\n path?: AXCookieOptions['path'],\n domain?: AXCookieOptions['domain'],\n secure?: AXCookieOptions['secure'],\n sameSite: AXSameSite = 'Lax',\n ): void {\n if (!this.documentIsAccessible) {\n return;\n }\n const expiresDate = new Date('Thu, 01 Jan 1970 00:00:01 GMT');\n this.set(name, '', {\n expires: expiresDate,\n path,\n domain,\n secure,\n sameSite,\n });\n }\n\n /**\n * Delete all cookies\n *\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Is the Cookie secure\n * @param sameSite Is the cookie same site\n *\n */\n deleteAll(\n path?: AXCookieOptions['path'],\n domain?: AXCookieOptions['domain'],\n secure?: AXCookieOptions['secure'],\n sameSite: AXSameSite = 'Lax',\n ): void {\n if (!this.documentIsAccessible) {\n return;\n }\n\n const cookies = this.getAll();\n\n for (const cookieName in cookies) {\n // eslint-disable-next-line no-prototype-builtins\n if (cookies.hasOwnProperty(cookieName)) {\n this.delete(cookieName, path, domain, secure, sameSite);\n }\n }\n }\n}\n","import { isBrowser } from '@acorex/core/platform';\nimport { Injectable, InjectionToken, inject } from '@angular/core';\nimport { AES, Utf8 } from 'crypto-es';\nimport { AXStorage } from './storage.interface';\n\nexport const AX_LOCALSTORAGE_SECRET_KEY: InjectionToken<string> = new InjectionToken('AX_LOCALSTORAGE_SECRET_KEY');\n\n@Injectable()\nexport class AXLocalStorageService implements AXStorage {\n private secret_key = inject(AX_LOCALSTORAGE_SECRET_KEY);\n\n /**\n * Reads a value from localStorage and parses JSON.\n *\n * @param key - Storage key\n * @returns T | null\n */\n\n get<T = unknown>(key: string): T {\n if (isBrowser()) {\n const value = localStorage.getItem(key);\n return value ? JSON.parse(value) : null;\n } else {\n return null;\n }\n }\n\n /**\n * Writes a JSON-serialized value to localStorage.\n *\n * @param key - Storage key\n * @param value - Value to persist\n */\n\n set<T = unknown>(key: string, value: T): void {\n if (isBrowser()) {\n return localStorage.setItem(key, JSON.stringify(value));\n }\n }\n\n clear(): void {\n if (isBrowser()) {\n return localStorage.clear();\n }\n }\n\n /**\n * Removes a single entry by key from localStorage.\n *\n * @param key - Storage key\n */\n\n removeItem(key: string) {\n if (isBrowser()) {\n return localStorage.removeItem(key);\n }\n }\n\n /**\n * Encrypts the JSON-serialized value using AES and stores it.\n * Requires providing AX_LOCALSTORAGE_SECRET_KEY.\n *\n * @param key - Storage key\n * @param value - Value to encrypt and store\n */\n\n setWithEncryption<T = unknown>(key: string, value: T) {\n if (isBrowser()) {\n const encrypted = AES.encrypt(JSON.stringify(value), this.secret_key).toString();\n return localStorage.setItem(key, encrypted);\n }\n }\n\n /**\n * Reads the encrypted value, decrypts it using AES and parses JSON.\n * Requires providing AX_LOCALSTORAGE_SECRET_KEY.\n *\n * @param key - Storage key\n * @returns T | null\n */\n\n getWithEncription<T = unknown>(key: string): T {\n if (isBrowser()) {\n const encrypted = localStorage.getItem(key) || '';\n const decrypted = AES.decrypt(encrypted, this.secret_key).toString(Utf8);\n return encrypted ? JSON.parse(decrypted) : ({} as T);\n } else {\n return null;\n }\n }\n}\n","import { isBrowser } from '@acorex/core/platform';\nimport { Injectable } from '@angular/core';\nimport { AXStorage } from './storage.interface';\n\n@Injectable()\nexport class AXSessionStorageService implements AXStorage {\n get<T = unknown>(key: string): T {\n if (isBrowser()) {\n const value = sessionStorage.getItem(key);\n return value ? JSON.parse(value) : null;\n } else {\n return null;\n }\n }\n\n set<T = unknown>(key: string, value: T): void {\n if (isBrowser()) {\n return sessionStorage.setItem(key, JSON.stringify(value));\n }\n }\n\n clear(): void {\n if (isBrowser()) {\n return sessionStorage.clear();\n }\n }\n\n removeItem(key: string) {\n if (isBrowser()) {\n return sessionStorage.removeItem(key);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAKa,sBAAsB,CAAA;AAOjC,IAAA,WAAA,GAAA;AAJQ,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAE3B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QAGtC,IAAI,CAAC,oBAAoB,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;IAChE;AAEA;;;;;;AAMG;IACK,OAAO,eAAe,CAAC,IAAY,EAAA;QACzC,MAAM,WAAW,GAAW,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,MAAM,CAAC;AAE3E,QAAA,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,gBAAgB,EAAE,GAAG,CAAC;IAC1F;AAEA;;;;;;;AAOG;IACK,OAAO,sBAAsB,CAAC,mBAA2B,EAAA;AAC/D,QAAA,IAAI;AACF,YAAA,OAAO,kBAAkB,CAAC,mBAAmB,CAAC;QAChD;AAAE,QAAA,MAAM;;AAEN,YAAA,OAAO,mBAAmB;QAC5B;IACF;AAEA;;;;;;AAMG;AACH,IAAA,KAAK,CAAC,IAAY,EAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC9B,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAW,sBAAsB,CAAC,eAAe,CAAC,IAAI,CAAC;QACnE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC1C;AAEA;;;;;;AAMG;AACH,IAAA,GAAG,CAAC,IAAY,EAAA;QACd,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACjD,YAAA,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC;YAE/B,MAAM,MAAM,GAAW,sBAAsB,CAAC,eAAe,CAAC,IAAI,CAAC;AACnE,YAAA,MAAM,MAAM,GAAoB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAEjE,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;QAClF;aAAO;AACL,YAAA,OAAO,EAAE;QACX;IACF;AAEA;;;;;AAKG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC9B,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,OAAO,GAA8B,EAAE;AAC7C,QAAA,MAAM,QAAQ,GAAQ,IAAI,CAAC,QAAQ;QAEnC,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE;AAC7C,YAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,KAAI;AACnD,gBAAA,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1D,gBAAA,OAAO,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAClF,oBAAA,sBAAsB,CAAC,sBAAsB,CAAC,WAAW,CAAC;AAC9D,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,OAAO,OAAO;IAChB;AA2CA,IAAA,GAAG,CACD,IAAY,EACZ,KAAa,EACb,gBAA+D,EAC/D,IAA8B,EAC9B,MAAkC,EAClC,MAAkC,EAClC,QAAqB,EAAA;AAErB,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B;QACF;QAEA,IACE,OAAO,gBAAgB,KAAK,QAAQ;AACpC,YAAA,gBAAgB,YAAY,IAAI;YAChC,IAAI;YACJ,MAAM;YACN,MAAM;AACN,YAAA,QAAQ,EACR;AACA,YAAA,MAAM,WAAW,GAAG;AAClB,gBAAA,OAAO,EAAE,gBAA8C;gBACvD,IAAI;gBACJ,MAAM;gBACN,MAAM;gBACN,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK;aACtC;YAED,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC;YAClC;QACF;AAEA,QAAA,IAAI,YAAY,GAAW,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,GAAG;QAE3F,MAAM,OAAO,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,EAAE;AAExD,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;AACnB,YAAA,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE;gBACvC,MAAM,WAAW,GAAS,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBAEhG,YAAY,IAAI,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,GAAG,GAAG;YAC9D;iBAAO;gBACL,YAAY,IAAI,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,GAAG;YAClE;QACF;AAEA,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,YAAY,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG;QAC9C;AAEA,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,YAAY,IAAI,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG;QAClD;AAEA,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE;AAC3D,YAAA,OAAO,CAAC,MAAM,GAAG,IAAI;AACrB,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,4BAAA,EAA+B,IAAI,CAAA,mDAAA,CAAqD;AACtF,gBAAA,CAAA,mGAAA,CAAqG,CACxG;QACH;AACA,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,YAAY,IAAI,SAAS;QAC3B;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACrB,YAAA,OAAO,CAAC,QAAQ,GAAG,KAAK;QAC1B;QAEA,YAAY,IAAI,WAAW,GAAG,OAAO,CAAC,QAAQ,GAAG,GAAG;AAEpD,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,YAAY;IACrC;AAEA;;;;;;;;;AASG;IACH,MAAM,CACJ,IAAY,EACZ,IAA8B,EAC9B,MAAkC,EAClC,MAAkC,EAClC,QAAA,GAAuB,KAAK,EAAA;AAE5B,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B;QACF;AACA,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,+BAA+B,CAAC;AAC7D,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE;AACjB,YAAA,OAAO,EAAE,WAAW;YACpB,IAAI;YACJ,MAAM;YACN,MAAM;YACN,QAAQ;AACT,SAAA,CAAC;IACJ;AAEA;;;;;;;;AAQG;IACH,SAAS,CACP,IAA8B,EAC9B,MAAkC,EAClC,MAAkC,EAClC,WAAuB,KAAK,EAAA;AAE5B,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE;AAE7B,QAAA,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE;;AAEhC,YAAA,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;AACtC,gBAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;YACzD;QACF;IACF;8GAnRW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;MCCY,0BAA0B,GAA2B,IAAI,cAAc,CAAC,4BAA4B;MAGpG,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAiFxD,IAAA;AA/EC;;;;;AAKG;AAEH,IAAA,GAAG,CAAc,GAAW,EAAA;QAC1B,IAAI,SAAS,EAAE,EAAE;YACf,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AACvC,YAAA,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI;QACzC;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF;AAEA;;;;;AAKG;IAEH,GAAG,CAAc,GAAW,EAAE,KAAQ,EAAA;QACpC,IAAI,SAAS,EAAE,EAAE;AACf,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzD;IACF;IAEA,KAAK,GAAA;QACH,IAAI,SAAS,EAAE,EAAE;AACf,YAAA,OAAO,YAAY,CAAC,KAAK,EAAE;QAC7B;IACF;AAEA;;;;AAIG;AAEH,IAAA,UAAU,CAAC,GAAW,EAAA;QACpB,IAAI,SAAS,EAAE,EAAE;AACf,YAAA,OAAO,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;QACrC;IACF;AAEA;;;;;;AAMG;IAEH,iBAAiB,CAAc,GAAW,EAAE,KAAQ,EAAA;QAClD,IAAI,SAAS,EAAE,EAAE;YACf,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE;YAChF,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC;QAC7C;IACF;AAEA;;;;;;AAMG;AAEH,IAAA,iBAAiB,CAAc,GAAW,EAAA;QACxC,IAAI,SAAS,EAAE,EAAE;YACf,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;AACjD,YAAA,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACxE,YAAA,OAAO,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAI,EAAQ;QACtD;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF;8GAjFW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;MCFY,uBAAuB,CAAA;AAClC,IAAA,GAAG,CAAc,GAAW,EAAA;QAC1B,IAAI,SAAS,EAAE,EAAE;YACf,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC;AACzC,YAAA,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI;QACzC;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF;IAEA,GAAG,CAAc,GAAW,EAAE,KAAQ,EAAA;QACpC,IAAI,SAAS,EAAE,EAAE;AACf,YAAA,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3D;IACF;IAEA,KAAK,GAAA;QACH,IAAI,SAAS,EAAE,EAAE;AACf,YAAA,OAAO,cAAc,CAAC,KAAK,EAAE;QAC/B;IACF;AAEA,IAAA,UAAU,CAAC,GAAW,EAAA;QACpB,IAAI,SAAS,EAAE,EAAE;AACf,YAAA,OAAO,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC;QACvC;IACF;8GA1BW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;;ACJD;;AAEG;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { InjectionToken, inject, Injectable, TemplateRef, ViewContainerRef, Directive, Pipe, provideAppInitializer, NgModule } from '@angular/core';
|
|
3
3
|
import { get } from 'lodash-es';
|
|
4
|
-
import { of, tap, shareReplay, firstValueFrom, BehaviorSubject, switchMap, from
|
|
4
|
+
import { of, tap, shareReplay, firstValueFrom, BehaviorSubject, distinctUntilChanged, switchMap, from } from 'rxjs';
|
|
5
5
|
import { AXEventService, AXSystemEvents } from '@acorex/core/events';
|
|
6
6
|
import { AXLocaleService } from '@acorex/core/locale';
|
|
7
7
|
import { waitFor } from '@acorex/core/utils';
|
|
@@ -157,10 +157,10 @@ class AXTranslationLoaderService {
|
|
|
157
157
|
getFallbackScopes(scope) {
|
|
158
158
|
return this.config.fallbacks?.scopes?.[scope] ?? [];
|
|
159
159
|
}
|
|
160
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
161
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
161
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationLoaderService, providedIn: 'root' }); }
|
|
162
162
|
}
|
|
163
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationLoaderService, decorators: [{
|
|
164
164
|
type: Injectable,
|
|
165
165
|
args: [{ providedIn: 'root' }]
|
|
166
166
|
}] });
|
|
@@ -215,36 +215,18 @@ function escapeRegExp(string) {
|
|
|
215
215
|
class TranslationResolverService {
|
|
216
216
|
constructor() {
|
|
217
217
|
this.loaderService = inject(AXTranslationLoaderService);
|
|
218
|
-
this.cache = new Map();
|
|
219
|
-
this.inflight = new Map();
|
|
220
218
|
this.parser = new TranslationParserService();
|
|
221
219
|
}
|
|
222
220
|
async resolve(lang, scope, key, params) {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
const fetchPromise = firstValueFrom(this.loaderService.load(lang, scope));
|
|
228
|
-
this.inflight.set(cacheKey, fetchPromise);
|
|
229
|
-
try {
|
|
230
|
-
const data = await fetchPromise;
|
|
231
|
-
this.cache.set(cacheKey, data);
|
|
232
|
-
}
|
|
233
|
-
finally {
|
|
234
|
-
this.inflight.delete(cacheKey);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
await this.inflight.get(cacheKey);
|
|
239
|
-
}
|
|
221
|
+
let result = this.loaderService.peek(lang, scope, key);
|
|
222
|
+
if (result == null) {
|
|
223
|
+
await firstValueFrom(this.loaderService.load(lang, scope));
|
|
224
|
+
result = this.loaderService.peek(lang, scope, key);
|
|
240
225
|
}
|
|
241
|
-
|
|
242
|
-
if (!translations) {
|
|
243
|
-
console.warn(`Translations not found for ${cacheKey} after attempting to load.`);
|
|
226
|
+
if (result == null) {
|
|
244
227
|
const unresolvedResult = key;
|
|
245
228
|
return this.format(unresolvedResult, params);
|
|
246
229
|
}
|
|
247
|
-
let result = get(translations, key, key);
|
|
248
230
|
// Recursively resolve references
|
|
249
231
|
if (typeof result === 'string' && this.parser.isExpression(result)) {
|
|
250
232
|
const tokens = this.parser.parse(result, lang, scope);
|
|
@@ -284,6 +266,57 @@ class TranslationResolverService {
|
|
|
284
266
|
}
|
|
285
267
|
}
|
|
286
268
|
|
|
269
|
+
const LOCALE_KEY_REGEX = /^(\*-\*|[a-z]{2}-[A-Z]{2})$/;
|
|
270
|
+
function resolveMultiLanguageValue(value, locale) {
|
|
271
|
+
return value[locale] ?? value['en-US'] ?? Object.values(value).find((item) => item != null) ?? '';
|
|
272
|
+
}
|
|
273
|
+
function isValidMultiLanguageObject(value) {
|
|
274
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
275
|
+
return false;
|
|
276
|
+
}
|
|
277
|
+
const entries = Object.entries(value);
|
|
278
|
+
if (!entries.length) {
|
|
279
|
+
return false;
|
|
280
|
+
}
|
|
281
|
+
return entries.every(([key, entryValue]) => LOCALE_KEY_REGEX.test(key) && typeof entryValue === 'string');
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Resolves {@link AXMultiLanguageString} to a single string for the given locale.
|
|
285
|
+
* Fallback order: `currentLocale` → `en-US` → first map value.
|
|
286
|
+
*/
|
|
287
|
+
function resolveMultiLanguageString(content, currentLocale) {
|
|
288
|
+
if (content == null || content === '') {
|
|
289
|
+
return '';
|
|
290
|
+
}
|
|
291
|
+
if (typeof content === 'string') {
|
|
292
|
+
return content;
|
|
293
|
+
}
|
|
294
|
+
if (!isValidMultiLanguageObject(content)) {
|
|
295
|
+
return String(content);
|
|
296
|
+
}
|
|
297
|
+
return resolveMultiLanguageValue(content, currentLocale);
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Creates an {@link AXMultiLanguageMap} with `en-US` and `fa-IR` entries.
|
|
301
|
+
* Use for seed data, tests, and demos that supply English and Persian copy explicitly.
|
|
302
|
+
*/
|
|
303
|
+
function createMultiLanguageString(enUs, faIr) {
|
|
304
|
+
return { 'en-US': enUs, 'fa-IR': faIr };
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* True when there is no displayable text in any locale (plain string or ML map).
|
|
308
|
+
*/
|
|
309
|
+
function isEffectivelyEmptyLocalizedValue(value) {
|
|
310
|
+
if (value == null)
|
|
311
|
+
return true;
|
|
312
|
+
if (typeof value === 'string')
|
|
313
|
+
return value.trim() === '';
|
|
314
|
+
if (typeof value !== 'object' || Array.isArray(value))
|
|
315
|
+
return false;
|
|
316
|
+
const record = value;
|
|
317
|
+
return Object.values(record).every((v) => v == null || String(v).trim() === '');
|
|
318
|
+
}
|
|
319
|
+
|
|
287
320
|
let singletonInstance;
|
|
288
321
|
function translateSync(key, options) {
|
|
289
322
|
return singletonInstance.translateSync(key, options);
|
|
@@ -298,6 +331,7 @@ class AXTranslationService {
|
|
|
298
331
|
this.resolver = new TranslationResolverService();
|
|
299
332
|
this.activeLang = new BehaviorSubject(this.config.defaults.lang);
|
|
300
333
|
this.langChanges$ = this.activeLang.asObservable();
|
|
334
|
+
this.currentLocale$ = this.langChanges$.pipe(distinctUntilChanged());
|
|
301
335
|
singletonInstance = this;
|
|
302
336
|
this.localeService.profileChanged$.subscribe((locale) => {
|
|
303
337
|
if (locale?.localeInfo?.code) {
|
|
@@ -320,37 +354,55 @@ class AXTranslationService {
|
|
|
320
354
|
getDefaultLang() {
|
|
321
355
|
return this.config.defaults.lang;
|
|
322
356
|
}
|
|
323
|
-
|
|
324
|
-
if (
|
|
325
|
-
return
|
|
357
|
+
resolve(value, locale) {
|
|
358
|
+
if (value == null) {
|
|
359
|
+
return '';
|
|
326
360
|
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
361
|
+
if (typeof value === 'string') {
|
|
362
|
+
return value;
|
|
363
|
+
}
|
|
364
|
+
if (!isValidMultiLanguageObject(value)) {
|
|
365
|
+
return '';
|
|
366
|
+
}
|
|
367
|
+
return resolveMultiLanguageValue(value, locale ?? this.getActiveLang());
|
|
368
|
+
}
|
|
369
|
+
toLocaleMap(value, activeLocale = this.getActiveLang()) {
|
|
370
|
+
if (isValidMultiLanguageObject(value)) {
|
|
371
|
+
return { ...value };
|
|
372
|
+
}
|
|
373
|
+
return {
|
|
374
|
+
[activeLocale]: typeof value === 'string' ? value : '',
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
translate$(value, options) {
|
|
378
|
+
if (isValidMultiLanguageObject(value)) {
|
|
379
|
+
return this.langChanges$.pipe(switchMap((activeLang) => {
|
|
380
|
+
const targetLang = options?.lang ?? activeLang;
|
|
381
|
+
const selectedValue = resolveMultiLanguageValue(value, targetLang);
|
|
382
|
+
const scope = options?.scope ?? this.config.defaults.scope;
|
|
383
|
+
return from(this.translateAsync(selectedValue, {
|
|
384
|
+
...options,
|
|
385
|
+
lang: targetLang,
|
|
386
|
+
scope,
|
|
387
|
+
}));
|
|
334
388
|
}));
|
|
335
|
-
}
|
|
389
|
+
}
|
|
390
|
+
return this.translateValue$(value, options);
|
|
336
391
|
}
|
|
337
392
|
async translateAsync(text, options) {
|
|
338
|
-
const lang
|
|
339
|
-
const scope = options?.scope ?? this.config.defaults.scope;
|
|
393
|
+
const { lang, scope } = this.resolveContext(options);
|
|
340
394
|
const params = options?.params;
|
|
341
395
|
if (!this.parser.isExpression(text)) {
|
|
342
|
-
|
|
343
|
-
return this.resolver.format(resolved, params);
|
|
396
|
+
return this.resolver.resolve(lang, scope, text, params);
|
|
344
397
|
}
|
|
345
398
|
const tokens = this.parser.parse(text, lang, scope);
|
|
346
399
|
const results = await Promise.all(tokens.map((token) => this.resolver
|
|
347
400
|
.resolve(token.lang ?? lang, token.scope ?? scope, token.key, params)
|
|
348
|
-
.then((translated) => [token.fullMatch,
|
|
401
|
+
.then((translated) => [token.fullMatch, translated])));
|
|
349
402
|
return results.reduce((output, [match, translated]) => output.replace(match, translated), text);
|
|
350
403
|
}
|
|
351
404
|
translateSync(text, options) {
|
|
352
|
-
const lang
|
|
353
|
-
const scope = options?.scope ?? this.config.defaults.scope;
|
|
405
|
+
const { lang, scope } = this.resolveContext(options);
|
|
354
406
|
const params = options?.params;
|
|
355
407
|
const waitForLoad = options?.waitForLoad ?? false;
|
|
356
408
|
const timeoutMs = options?.timeoutMs ?? 100;
|
|
@@ -376,10 +428,40 @@ class AXTranslationService {
|
|
|
376
428
|
}
|
|
377
429
|
return result;
|
|
378
430
|
}
|
|
379
|
-
|
|
380
|
-
|
|
431
|
+
translateValue$(text, options) {
|
|
432
|
+
if (!text) {
|
|
433
|
+
return of('');
|
|
434
|
+
}
|
|
435
|
+
const staticOptions = { ...options };
|
|
436
|
+
const staticScope = staticOptions.scope ?? this.config.defaults.scope;
|
|
437
|
+
return this.langChanges$.pipe(switchMap((lang) => {
|
|
438
|
+
return from(this.translateAsync(text, {
|
|
439
|
+
...staticOptions,
|
|
440
|
+
lang: staticOptions.lang ?? lang,
|
|
441
|
+
scope: staticScope,
|
|
442
|
+
}));
|
|
443
|
+
}), shareReplay({ bufferSize: 1, refCount: true }));
|
|
444
|
+
}
|
|
445
|
+
resolveContext(options) {
|
|
446
|
+
return {
|
|
447
|
+
lang: options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang,
|
|
448
|
+
scope: options?.scope ?? this.config.defaults.scope,
|
|
449
|
+
};
|
|
450
|
+
}
|
|
451
|
+
isValidMultiLanguageObject(value) {
|
|
452
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
453
|
+
return false;
|
|
454
|
+
}
|
|
455
|
+
const entries = Object.entries(value);
|
|
456
|
+
if (!entries.length) {
|
|
457
|
+
return false;
|
|
458
|
+
}
|
|
459
|
+
return entries.every(([key, entryValue]) => LOCALE_KEY_REGEX.test(key) && typeof entryValue === 'string');
|
|
460
|
+
}
|
|
461
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
462
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationService, providedIn: 'root' }); }
|
|
381
463
|
}
|
|
382
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
464
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationService, decorators: [{
|
|
383
465
|
type: Injectable,
|
|
384
466
|
args: [{
|
|
385
467
|
providedIn: 'root',
|
|
@@ -413,45 +495,28 @@ class AXTranslatorDirective {
|
|
|
413
495
|
this.vc.clear();
|
|
414
496
|
this.vc.createEmbeddedView(this.templateRef, { $implicit: t });
|
|
415
497
|
}
|
|
416
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
417
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
498
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
499
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: AXTranslatorDirective, isStandalone: true, selector: "[translate]", ngImport: i0 }); }
|
|
418
500
|
}
|
|
419
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
501
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslatorDirective, decorators: [{
|
|
420
502
|
type: Directive,
|
|
421
503
|
args: [{ selector: '[translate]' }]
|
|
422
504
|
}] });
|
|
423
505
|
|
|
424
|
-
const LOCALE_KEY_REGEX = /^(\*-\*|[a-z]{2}-[A-Z]{2})$/;
|
|
425
506
|
class AXTranslatorPipe {
|
|
426
507
|
constructor() {
|
|
427
508
|
this.service = inject(AXTranslationService);
|
|
428
509
|
}
|
|
429
510
|
transform(value, options) {
|
|
430
511
|
if (!value) {
|
|
431
|
-
return of('');
|
|
432
|
-
}
|
|
433
|
-
if (this.isMultiLanguageMap(value)) {
|
|
434
|
-
return this.service.langChanges$.pipe(map((activeLang) => this.resolveMultiLanguageValue(value, options?.lang ?? activeLang)));
|
|
512
|
+
return of('');
|
|
435
513
|
}
|
|
436
514
|
return this.service.translate$(value, options);
|
|
437
515
|
}
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
return false;
|
|
441
|
-
}
|
|
442
|
-
const entries = Object.entries(value);
|
|
443
|
-
if (!entries.length) {
|
|
444
|
-
return false;
|
|
445
|
-
}
|
|
446
|
-
return entries.every(([key, entryValue]) => LOCALE_KEY_REGEX.test(key) && typeof entryValue === 'string');
|
|
447
|
-
}
|
|
448
|
-
resolveMultiLanguageValue(value, locale) {
|
|
449
|
-
return value[locale] ?? value['en-US'] ?? Object.values(value).find((item) => item != null) ?? '';
|
|
450
|
-
}
|
|
451
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
452
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.3", ngImport: i0, type: AXTranslatorPipe, isStandalone: true, name: "translate" }); }
|
|
516
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
517
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: AXTranslatorPipe, isStandalone: true, name: "translate" }); }
|
|
453
518
|
}
|
|
454
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
519
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslatorPipe, decorators: [{
|
|
455
520
|
type: Pipe,
|
|
456
521
|
args: [{
|
|
457
522
|
name: 'translate',
|
|
@@ -465,16 +530,16 @@ function initializeApp(translatorService) {
|
|
|
465
530
|
};
|
|
466
531
|
}
|
|
467
532
|
class AXTranslationModule {
|
|
468
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
469
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
470
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
533
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
534
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationModule, imports: [AXTranslatorPipe, AXTranslatorDirective], exports: [AXTranslatorPipe, AXTranslatorDirective] }); }
|
|
535
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationModule, providers: [
|
|
471
536
|
provideAppInitializer(() => {
|
|
472
537
|
const initializerFn = initializeApp(inject(AXTranslationLoaderService));
|
|
473
538
|
return initializerFn();
|
|
474
539
|
}),
|
|
475
540
|
] }); }
|
|
476
541
|
}
|
|
477
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
542
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationModule, decorators: [{
|
|
478
543
|
type: NgModule,
|
|
479
544
|
args: [{
|
|
480
545
|
imports: [AXTranslatorPipe, AXTranslatorDirective],
|
|
@@ -492,5 +557,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
492
557
|
* Generated bundle index. Do not edit.
|
|
493
558
|
*/
|
|
494
559
|
|
|
495
|
-
export { AXTranslationDefaultConfig, AXTranslationLoaderDefault, AXTranslationModule, AXTranslationService, AXTranslatorDirective, AXTranslatorPipe, AX_TRANSLATION_CONFIG, AX_TRANSLATION_LOADER, loadTranslationScope, translateSync, translationConfig };
|
|
560
|
+
export { AXTranslationDefaultConfig, AXTranslationLoaderDefault, AXTranslationModule, AXTranslationService, AXTranslatorDirective, AXTranslatorPipe, AX_TRANSLATION_CONFIG, AX_TRANSLATION_LOADER, LOCALE_KEY_REGEX, createMultiLanguageString, isEffectivelyEmptyLocalizedValue, isValidMultiLanguageObject, loadTranslationScope, resolveMultiLanguageString, resolveMultiLanguageValue, translateSync, translationConfig };
|
|
496
561
|
//# sourceMappingURL=acorex-core-translation.mjs.map
|