@manticsoftware/angular 21.1.2 → 21.1.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"manticsoftware-angular-runtime-config.mjs","sources":["../../../projects/rad-angular/runtime/config/src/lib/defaults/default-app-config.ts","../../../projects/rad-angular/runtime/config/src/lib/state/runtime-config.store.ts","../../../projects/rad-angular/runtime/config/src/lib/services/config.service.ts","../../../projects/rad-angular/runtime/config/src/lib/services/config-loader.service.ts","../../../projects/rad-angular/runtime/config/src/lib/services/config-merger.service.ts","../../../projects/rad-angular/runtime/config/src/lib/tokens/app-config.token.ts","../../../projects/rad-angular/runtime/config/src/lib/providers/provide-runtime-config.ts","../../../projects/rad-angular/runtime/config/src/manticsoftware-angular-runtime-config.ts"],"sourcesContent":["import { AppConfig } from '../contracts/app-config.model';\r\n\r\nexport const DEFAULT_APP_CONFIG: AppConfig = {\r\n\tappName: 'Compania ERP',\r\n\tenvironmentName: 'development',\r\n\r\n\tlocale: {\r\n\t\tlanguage: 'en',\r\n\t\tlocale: 'en-US',\r\n\t\tcountry: 'TN',\r\n\t\ttimezone: 'Africa/Tunis',\r\n\t},\r\n\r\n\tformat: {\r\n\t\tcurrencyCode: 'TND',\r\n\t\tshowCurrencySymbol: true,\r\n\t\tquantityDecimals: 3,\r\n\t\tamountDecimals: 3,\r\n\t\trateDecimals: 4,\r\n\t\tpercentDecimals: 2,\r\n\t\tdateFormat: 'dd/MM/yyyy',\r\n\t\tdateTimeFormat: 'dd/MM/yyyy HH:mm',\r\n\t\tfirstDayOfWeek: 1,\r\n\t\tlabelPosition: 'top',\r\n\t\tlabelWidthClass: 'col-xs-6'\r\n\t},\r\n\r\n\tui: {\r\n\t\tdirection: 'ltr',\r\n\t\ttheme: 'metronic8',\r\n\t},\r\n};","import { Injectable, computed, signal } from '@angular/core';\r\nimport { AppConfig } from '../contracts/app-config.model';\r\nimport { DEFAULT_APP_CONFIG } from '../defaults/default-app-config';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RuntimeConfigStore {\r\n\tprivate readonly _config = signal<AppConfig>(DEFAULT_APP_CONFIG);\r\n\r\n\treadonly config = this._config.asReadonly();\r\n\r\n\treadonly locale = computed(() => this._config().locale);\r\n\treadonly format = computed(() => this._config().format);\r\n\treadonly ui = computed(() => this._config().ui);\r\n\r\n\tset(config: AppConfig): void {\r\n\t\tthis._config.set(config);\r\n\t}\r\n\r\n\tpatch(patch: Partial<AppConfig>): void {\r\n\t\tthis._config.update(current => ({\r\n\t\t\t...current,\r\n\t\t\t...patch,\r\n\t\t\tlocale: {\r\n\t\t\t\t...current.locale,\r\n\t\t\t\t...(patch.locale ?? {}),\r\n\t\t\t},\r\n\t\t\tformat: {\r\n\t\t\t\t...current.format,\r\n\t\t\t\t...(patch.format ?? {}),\r\n\t\t\t},\r\n\t\t\tui: {\r\n\t\t\t\t...current.ui,\r\n\t\t\t\t...(patch.ui ?? {}),\r\n\t\t\t},\r\n\t\t}));\r\n\t}\r\n\r\n\treset(): void {\r\n\t\tthis._config.set(DEFAULT_APP_CONFIG);\r\n\t}\r\n}","import { Injectable, computed, inject } from '@angular/core';\r\nimport { RuntimeConfigStore } from '../state/runtime-config.store';\r\nimport { AppConfig } from '../contracts/app-config.model';\r\nimport { DEFAULT_APP_CONFIG } from '../defaults/default-app-config';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ConfigService {\r\n\r\n\tprivate readonly store = inject(RuntimeConfigStore)\r\n\treadonly config = this.store.config;\r\n\treadonly locale = this.store.locale;\r\n\treadonly format = this.store.format;\r\n\treadonly ui = this.store.ui;\r\n\r\n\treadonly language = computed(() => this.store.locale().language);\r\n\treadonly localeCode = computed(() => this.store.locale().locale);\r\n\treadonly country = computed(() => this.store.locale().country);\r\n\treadonly timezone = computed(() => this.store.locale().timezone);\r\n\r\n\treadonly currencyCode = computed(() => this.store.format().currencyCode);\r\n\treadonly showCurrencySymbol = computed(() => this.store.format().showCurrencySymbol);\r\n\r\n\treadonly amountDecimals = computed(() => this.store.format().amountDecimals);\r\n\treadonly quantityDecimals = computed(() => this.store.format().quantityDecimals);\r\n\treadonly rateDecimals = computed(() => this.store.format().rateDecimals);\r\n\treadonly percentDecimals = computed(() => this.store.format().percentDecimals);\r\n\treadonly dateFormat = computed(() => this.store.format().dateFormat);\r\n\treadonly dateTimeFormat = computed(() => this.store.format().dateTimeFormat);\r\n\r\n\treadonly labelWidthClass = computed(() => this.store.format().labelWidthClass);\r\n\treadonly labelPosition = computed(() => this.store.format().labelPosition);\r\n\r\n\tconstructor() { }\r\n\r\n\tgetSnapshot(): AppConfig {\r\n\t\treturn this.config();\r\n\t}\r\n\r\n\tinitialize(config?: Partial<AppConfig>): void {\r\n\t\tif (!config) {\r\n\t\t\tthis.store.set(DEFAULT_APP_CONFIG);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.store.patch(config);\r\n\t}\r\n\r\n\tapply(config: Partial<AppConfig>): void {\r\n\t\tthis.store.patch(config);\r\n\t}\r\n\r\n\treplace(config: AppConfig): void {\r\n\t\tthis.store.set(config);\r\n\t}\r\n\r\n\treset(): void {\r\n\t\tthis.store.reset();\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { ConfigService } from './config.service';\r\nimport { AppConfig } from '../contracts/app-config.model';\r\n\r\nexport interface RuntimeConfigPayload {\r\n\tlanguage?: string | null;\r\n\tlocale?: string | null;\r\n\tcountry?: string | null;\r\n\ttimezone?: string | null;\r\n\r\n\tcurrencyCode?: string | null;\r\n\tshowCurrencySymbol: boolean\r\n\r\n\tquantityDecimals?: number | null;\r\n\tamountDecimals?: number | null;\r\n\trateDecimals?: number | null;\r\n\tpercentDecimals?: number | null;\r\n\r\n\tdateFormat?: string | null;\r\n\tdateTimeFormat?: string | null;\r\n\tfirstDayOfWeek?: number | null;\r\n\r\n\tdirection?: 'ltr' | 'rtl' | null;\r\n\ttheme?: string | null;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ConfigLoaderService {\r\n\tconstructor(private readonly configService: ConfigService) { }\r\n\r\n\tapplyRuntimePayload(payload: RuntimeConfigPayload): void {\r\n\t\tthis.configService.apply({\r\n\t\t\tlocale: {\r\n\t\t\t\tlanguage: payload.language ?? this.configService.language(),\r\n\t\t\t\tlocale: payload.locale ?? this.configService.localeCode(),\r\n\t\t\t\tcountry: payload.country ?? this.configService.country(),\r\n\t\t\t\ttimezone: payload.timezone ?? this.configService.timezone(),\r\n\t\t\t},\r\n\t\t\tformat: {\r\n\t\t\t\tcurrencyCode: payload.currencyCode ?? this.configService.currencyCode(),\r\n\t\t\t\tshowCurrencySymbol: payload.showCurrencySymbol ?? this.configService.showCurrencySymbol(),\r\n\t\t\t\tquantityDecimals: payload.quantityDecimals ?? this.configService.quantityDecimals(),\r\n\t\t\t\tamountDecimals: payload.amountDecimals ?? this.configService.amountDecimals(),\r\n\t\t\t\trateDecimals: payload.rateDecimals ?? this.configService.rateDecimals(),\r\n\t\t\t\tpercentDecimals: payload.percentDecimals ?? this.configService.percentDecimals(),\r\n\t\t\t\tdateFormat: payload.dateFormat ?? this.configService.dateFormat(),\r\n\t\t\t\tdateTimeFormat: payload.dateTimeFormat ?? this.configService.dateTimeFormat(),\r\n\t\t\t\tfirstDayOfWeek: payload.firstDayOfWeek ?? this.configService.getSnapshot().format.firstDayOfWeek,\r\n\t\t\t\tlabelPosition: 'top',\r\n\t\t\t\tlabelWidthClass: 'col-xs-6'\r\n\t\t\t},\r\n\t\t\tui: {\r\n\t\t\t\tdirection: payload.direction ?? this.configService.getSnapshot().ui.direction,\r\n\t\t\t\ttheme: payload.theme ?? this.configService.getSnapshot().ui.theme,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tapplyResolvedConfig(config: AppConfig): void {\r\n\t\tthis.configService.replace(config);\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { AppConfig } from '../contracts/app-config.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ConfigMergerService {\r\n\tmerge(base: AppConfig, patch: Partial<AppConfig>): AppConfig {\r\n\t\treturn {\r\n\t\t\t...base,\r\n\t\t\t...patch,\r\n\t\t\tlocale: {\r\n\t\t\t\t...base.locale,\r\n\t\t\t\t...(patch.locale ?? {}),\r\n\t\t\t},\r\n\t\t\tformat: {\r\n\t\t\t\t...base.format,\r\n\t\t\t\t...(patch.format ?? {}),\r\n\t\t\t},\r\n\t\t\tui: {\r\n\t\t\t\t...base.ui,\r\n\t\t\t\t...(patch.ui ?? {}),\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n}","import { InjectionToken } from '@angular/core';\r\nimport { AppConfig } from '../contracts/app-config.model';\r\nimport { DEFAULT_APP_CONFIG } from '../defaults/default-app-config';\r\n\r\nexport const APP_CONFIG_TOKEN = new InjectionToken<AppConfig>(\r\n\t'APP_CONFIG_TOKEN',\r\n\t{\r\n\t\tprovidedIn: 'root',\r\n\t\tfactory: () => DEFAULT_APP_CONFIG,\r\n\t}\r\n);","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\r\n\r\nexport function provideRuntimeConfig(): EnvironmentProviders {\r\n\treturn makeEnvironmentProviders([]);\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ConfigService"],"mappings":"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"}
1
+ {"version":3,"file":"manticsoftware-angular-runtime-config.mjs","sources":["../../../projects/rad-angular/runtime/config/src/lib/defaults/default-app-config.ts","../../../projects/rad-angular/runtime/config/src/lib/state/runtime-config.store.ts","../../../projects/rad-angular/runtime/config/src/lib/services/config.service.ts","../../../projects/rad-angular/runtime/config/src/lib/services/config-loader.service.ts","../../../projects/rad-angular/runtime/config/src/lib/services/config-merger.service.ts","../../../projects/rad-angular/runtime/config/src/lib/tokens/app-config.token.ts","../../../projects/rad-angular/runtime/config/src/lib/providers/provide-runtime-config.ts","../../../projects/rad-angular/runtime/config/manticsoftware-angular-runtime-config.ts"],"sourcesContent":["import { AppConfig } from '../contracts/app-config.model';\r\n\r\nexport const DEFAULT_APP_CONFIG: AppConfig = {\r\n\tappName: 'Compania ERP',\r\n\tenvironmentName: 'development',\r\n\r\n\tlocale: {\r\n\t\tlanguage: 'en',\r\n\t\tlocale: 'en-US',\r\n\t\tcountry: 'TN',\r\n\t\ttimezone: 'Africa/Tunis',\r\n\t},\r\n\r\n\tformat: {\r\n\t\tcurrencyCode: 'TND',\r\n\t\tshowCurrencySymbol: true,\r\n\t\tquantityDecimals: 3,\r\n\t\tamountDecimals: 3,\r\n\t\trateDecimals: 4,\r\n\t\tpercentDecimals: 2,\r\n\t\tdateFormat: 'dd/MM/yyyy',\r\n\t\tdateTimeFormat: 'dd/MM/yyyy HH:mm',\r\n\t\tfirstDayOfWeek: 1,\r\n\t\tlabelPosition: 'top',\r\n\t\tlabelWidthClass: 'col-xs-6'\r\n\t},\r\n\r\n\tui: {\r\n\t\tdirection: 'ltr',\r\n\t\ttheme: 'metronic8',\r\n\t},\r\n};","import { Injectable, computed, signal } from '@angular/core';\r\nimport { AppConfig } from '../contracts/app-config.model';\r\nimport { DEFAULT_APP_CONFIG } from '../defaults/default-app-config';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RuntimeConfigStore {\r\n\tprivate readonly _config = signal<AppConfig>(DEFAULT_APP_CONFIG);\r\n\r\n\treadonly config = this._config.asReadonly();\r\n\r\n\treadonly locale = computed(() => this._config().locale);\r\n\treadonly format = computed(() => this._config().format);\r\n\treadonly ui = computed(() => this._config().ui);\r\n\r\n\tset(config: AppConfig): void {\r\n\t\tthis._config.set(config);\r\n\t}\r\n\r\n\tpatch(patch: Partial<AppConfig>): void {\r\n\t\tthis._config.update(current => ({\r\n\t\t\t...current,\r\n\t\t\t...patch,\r\n\t\t\tlocale: {\r\n\t\t\t\t...current.locale,\r\n\t\t\t\t...(patch.locale ?? {}),\r\n\t\t\t},\r\n\t\t\tformat: {\r\n\t\t\t\t...current.format,\r\n\t\t\t\t...(patch.format ?? {}),\r\n\t\t\t},\r\n\t\t\tui: {\r\n\t\t\t\t...current.ui,\r\n\t\t\t\t...(patch.ui ?? {}),\r\n\t\t\t},\r\n\t\t}));\r\n\t}\r\n\r\n\treset(): void {\r\n\t\tthis._config.set(DEFAULT_APP_CONFIG);\r\n\t}\r\n}","import { Injectable, computed, inject } from '@angular/core';\r\nimport { RuntimeConfigStore } from '../state/runtime-config.store';\r\nimport { AppConfig } from '../contracts/app-config.model';\r\nimport { DEFAULT_APP_CONFIG } from '../defaults/default-app-config';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ConfigService {\r\n\r\n\tprivate readonly store = inject(RuntimeConfigStore)\r\n\treadonly config = this.store.config;\r\n\treadonly locale = this.store.locale;\r\n\treadonly format = this.store.format;\r\n\treadonly ui = this.store.ui;\r\n\r\n\treadonly language = computed(() => this.store.locale().language);\r\n\treadonly localeCode = computed(() => this.store.locale().locale);\r\n\treadonly country = computed(() => this.store.locale().country);\r\n\treadonly timezone = computed(() => this.store.locale().timezone);\r\n\r\n\treadonly currencyCode = computed(() => this.store.format().currencyCode);\r\n\treadonly showCurrencySymbol = computed(() => this.store.format().showCurrencySymbol);\r\n\r\n\treadonly amountDecimals = computed(() => this.store.format().amountDecimals);\r\n\treadonly quantityDecimals = computed(() => this.store.format().quantityDecimals);\r\n\treadonly rateDecimals = computed(() => this.store.format().rateDecimals);\r\n\treadonly percentDecimals = computed(() => this.store.format().percentDecimals);\r\n\treadonly dateFormat = computed(() => this.store.format().dateFormat);\r\n\treadonly dateTimeFormat = computed(() => this.store.format().dateTimeFormat);\r\n\r\n\treadonly labelWidthClass = computed(() => this.store.format().labelWidthClass);\r\n\treadonly labelPosition = computed(() => this.store.format().labelPosition);\r\n\r\n\tconstructor() { }\r\n\r\n\tgetSnapshot(): AppConfig {\r\n\t\treturn this.config();\r\n\t}\r\n\r\n\tinitialize(config?: Partial<AppConfig>): void {\r\n\t\tif (!config) {\r\n\t\t\tthis.store.set(DEFAULT_APP_CONFIG);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.store.patch(config);\r\n\t}\r\n\r\n\tapply(config: Partial<AppConfig>): void {\r\n\t\tthis.store.patch(config);\r\n\t}\r\n\r\n\treplace(config: AppConfig): void {\r\n\t\tthis.store.set(config);\r\n\t}\r\n\r\n\treset(): void {\r\n\t\tthis.store.reset();\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { ConfigService } from './config.service';\r\nimport { AppConfig } from '../contracts/app-config.model';\r\n\r\nexport interface RuntimeConfigPayload {\r\n\tlanguage?: string | null;\r\n\tlocale?: string | null;\r\n\tcountry?: string | null;\r\n\ttimezone?: string | null;\r\n\r\n\tcurrencyCode?: string | null;\r\n\tshowCurrencySymbol: boolean\r\n\r\n\tquantityDecimals?: number | null;\r\n\tamountDecimals?: number | null;\r\n\trateDecimals?: number | null;\r\n\tpercentDecimals?: number | null;\r\n\r\n\tdateFormat?: string | null;\r\n\tdateTimeFormat?: string | null;\r\n\tfirstDayOfWeek?: number | null;\r\n\r\n\tdirection?: 'ltr' | 'rtl' | null;\r\n\ttheme?: string | null;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ConfigLoaderService {\r\n\tconstructor(private readonly configService: ConfigService) { }\r\n\r\n\tapplyRuntimePayload(payload: RuntimeConfigPayload): void {\r\n\t\tthis.configService.apply({\r\n\t\t\tlocale: {\r\n\t\t\t\tlanguage: payload.language ?? this.configService.language(),\r\n\t\t\t\tlocale: payload.locale ?? this.configService.localeCode(),\r\n\t\t\t\tcountry: payload.country ?? this.configService.country(),\r\n\t\t\t\ttimezone: payload.timezone ?? this.configService.timezone(),\r\n\t\t\t},\r\n\t\t\tformat: {\r\n\t\t\t\tcurrencyCode: payload.currencyCode ?? this.configService.currencyCode(),\r\n\t\t\t\tshowCurrencySymbol: payload.showCurrencySymbol ?? this.configService.showCurrencySymbol(),\r\n\t\t\t\tquantityDecimals: payload.quantityDecimals ?? this.configService.quantityDecimals(),\r\n\t\t\t\tamountDecimals: payload.amountDecimals ?? this.configService.amountDecimals(),\r\n\t\t\t\trateDecimals: payload.rateDecimals ?? this.configService.rateDecimals(),\r\n\t\t\t\tpercentDecimals: payload.percentDecimals ?? this.configService.percentDecimals(),\r\n\t\t\t\tdateFormat: payload.dateFormat ?? this.configService.dateFormat(),\r\n\t\t\t\tdateTimeFormat: payload.dateTimeFormat ?? this.configService.dateTimeFormat(),\r\n\t\t\t\tfirstDayOfWeek: payload.firstDayOfWeek ?? this.configService.getSnapshot().format.firstDayOfWeek,\r\n\t\t\t\tlabelPosition: 'top',\r\n\t\t\t\tlabelWidthClass: 'col-xs-6'\r\n\t\t\t},\r\n\t\t\tui: {\r\n\t\t\t\tdirection: payload.direction ?? this.configService.getSnapshot().ui.direction,\r\n\t\t\t\ttheme: payload.theme ?? this.configService.getSnapshot().ui.theme,\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tapplyResolvedConfig(config: AppConfig): void {\r\n\t\tthis.configService.replace(config);\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { AppConfig } from '../contracts/app-config.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ConfigMergerService {\r\n\tmerge(base: AppConfig, patch: Partial<AppConfig>): AppConfig {\r\n\t\treturn {\r\n\t\t\t...base,\r\n\t\t\t...patch,\r\n\t\t\tlocale: {\r\n\t\t\t\t...base.locale,\r\n\t\t\t\t...(patch.locale ?? {}),\r\n\t\t\t},\r\n\t\t\tformat: {\r\n\t\t\t\t...base.format,\r\n\t\t\t\t...(patch.format ?? {}),\r\n\t\t\t},\r\n\t\t\tui: {\r\n\t\t\t\t...base.ui,\r\n\t\t\t\t...(patch.ui ?? {}),\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n}","import { InjectionToken } from '@angular/core';\r\nimport { AppConfig } from '../contracts/app-config.model';\r\nimport { DEFAULT_APP_CONFIG } from '../defaults/default-app-config';\r\n\r\nexport const APP_CONFIG_TOKEN = new InjectionToken<AppConfig>(\r\n\t'APP_CONFIG_TOKEN',\r\n\t{\r\n\t\tprovidedIn: 'root',\r\n\t\tfactory: () => DEFAULT_APP_CONFIG,\r\n\t}\r\n);","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\r\n\r\nexport function provideRuntimeConfig(): EnvironmentProviders {\r\n\treturn makeEnvironmentProviders([]);\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ConfigService"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manticsoftware-angular-runtime-error-handling.mjs","sources":["../../../projects/rad-angular/runtime/error-handling/src/lib/helpers/error-utils.ts","../../../projects/rad-angular/runtime/error-handling/src/lib/services/error-mapper.service.ts","../../../projects/rad-angular/runtime/error-handling/src/lib/services/runtime-error-handler.service.ts","../../../projects/rad-angular/runtime/error-handling/src/lib/providers/provide-runtime-error-handling.ts","../../../projects/rad-angular/runtime/error-handling/src/manticsoftware-angular-runtime-error-handling.ts"],"sourcesContent":["export function isError(value: unknown): value is Error {\r\n return value instanceof Error;\r\n}\r\n\r\nexport function getErrorMessage(value: unknown, fallback = 'An unexpected error occurred.'): string {\r\n if (value instanceof Error && value.message) {\r\n return value.message;\r\n }\r\n\r\n if (typeof value === 'string' && value.trim().length > 0) {\r\n return value;\r\n }\r\n\r\n if (\r\n value !== null &&\r\n typeof value === 'object' &&\r\n 'message' in value &&\r\n typeof (value as { message?: unknown }).message === 'string'\r\n ) {\r\n return ((value as { message: string }).message || fallback).trim() || fallback;\r\n }\r\n\r\n return fallback;\r\n}\r\n\r\nexport function getErrorStack(value: unknown): string | undefined {\r\n if (value instanceof Error) {\r\n return value.stack;\r\n }\r\n\r\n return undefined;\r\n}","import { Injectable } from '@angular/core';\r\nimport { AppError } from '../contracts/app-error.model';\r\nimport { ErrorSource } from '../contracts/error-source.type';\r\nimport { getErrorMessage } from '../helpers/error-utils';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ErrorMapperService {\r\n\tmap(\r\n\t\terror: unknown,\r\n\t\tsource: ErrorSource = 'unknown',\r\n\t\toverride?: Partial<AppError>\r\n\t): AppError {\r\n\t\treturn {\r\n\t\t\tmessage: getErrorMessage(error),\r\n\t\t\tsource,\r\n\t\t\tseverity: 'error',\r\n\t\t\toriginalError: error,\r\n\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t...override,\r\n\t\t};\r\n\t}\r\n}","import { ErrorHandler, Injectable, inject } from '@angular/core';\r\nimport { LoggerService } from '@manticsoftware/angular/runtime/logger';\r\nimport { TelemetryService } from '@manticsoftware/angular/runtime/telemetry';\r\nimport { AppError } from '../contracts/app-error.model';\r\nimport { ErrorMapperService } from './error-mapper.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RuntimeErrorHandlerService implements ErrorHandler {\r\n\tprivate readonly mapper = inject(ErrorMapperService);\r\n\tprivate readonly logger = inject(LoggerService);\r\n\tprivate readonly telemetry = inject(TelemetryService);\r\n\r\n\thandleError(error: unknown): void {\r\n\t\tconst appError: AppError = this.mapper.map(error, 'runtime', {\r\n\t\t\tseverity: 'fatal',\r\n\t\t});\r\n\r\n\t\tthis.logger.error(appError.message, {\r\n\t\t\tsource: 'RuntimeErrorHandler',\r\n\t\t\terror: appError.originalError,\r\n\t\t\tdata: {\r\n\t\t\t\tcode: appError.code,\r\n\t\t\t\tdetails: appError.details,\r\n\t\t\t\ttraceId: appError.traceId,\r\n\t\t\t\tsource: appError.source,\r\n\t\t\t\tseverity: appError.severity,\r\n\t\t\t\ttimestamp: appError.timestamp,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tthis.telemetry.trackEvent('runtime.error.unhandled', {\r\n\t\t\tproperties: {\r\n\t\t\t\tmessage: appError.message,\r\n\t\t\t\tsource: appError.source,\r\n\t\t\t\tseverity: appError.severity,\r\n\t\t\t\ttraceId: appError.traceId ?? null,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tconsole.error('Unhandled application error.', error);\r\n\t}\r\n}\r\n","import { EnvironmentProviders, ErrorHandler, makeEnvironmentProviders } from '@angular/core';\r\nimport { RuntimeErrorHandlerService } from '../services/runtime-error-handler.service';\r\n\r\nexport function provideRuntimeErrorHandling(): EnvironmentProviders {\r\n\treturn makeEnvironmentProviders([\r\n\t\t{\r\n\t\t\tprovide: ErrorHandler,\r\n\t\t\tuseExisting: RuntimeErrorHandlerService,\r\n\t\t},\r\n\t]);\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAM,SAAU,OAAO,CAAC,KAAc,EAAA;IACpC,OAAO,KAAK,YAAY,KAAK;AAC/B;SAEgB,eAAe,CAAC,KAAc,EAAE,QAAQ,GAAG,+BAA+B,EAAA;IACxF,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;QAC3C,OAAO,KAAK,CAAC,OAAO;IACtB;AAEA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AACxD,QAAA,OAAO,KAAK;IACd;IAEA,IACE,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;AACzB,QAAA,SAAS,IAAI,KAAK;AAClB,QAAA,OAAQ,KAA+B,CAAC,OAAO,KAAK,QAAQ,EAC5D;AACA,QAAA,OAAO,CAAE,KAA6B,CAAC,OAAO,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,QAAQ;IAChF;AAEA,IAAA,OAAO,QAAQ;AACjB;AAEM,SAAU,aAAa,CAAC,KAAc,EAAA;AAC1C,IAAA,IAAI,KAAK,YAAY,KAAK,EAAE;QAC1B,OAAO,KAAK,CAAC,KAAK;IACpB;AAEA,IAAA,OAAO,SAAS;AAClB;;MCzBa,kBAAkB,CAAA;AAC9B,IAAA,GAAG,CACF,KAAc,EACd,MAAA,GAAsB,SAAS,EAC/B,QAA4B,EAAA;QAE5B,OAAO;AACN,YAAA,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC;YAC/B,MAAM;AACN,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACnC,YAAA,GAAG,QAAQ;SACX;IACF;uGAdY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA;;2FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCErB,0BAA0B,CAAA;AACrB,IAAA,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACnC,IAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAC9B,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAErD,IAAA,WAAW,CAAC,KAAc,EAAA;QACzB,MAAM,QAAQ,GAAa,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE;AAC5D,YAAA,QAAQ,EAAE,OAAO;AACjB,SAAA,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE;AACnC,YAAA,MAAM,EAAE,qBAAqB;YAC7B,KAAK,EAAE,QAAQ,CAAC,aAAa;AAC7B,YAAA,IAAI,EAAE;gBACL,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;AAC7B,aAAA;AACD,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,yBAAyB,EAAE;AACpD,YAAA,UAAU,EAAE;gBACX,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AAC3B,gBAAA,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI;AACjC,aAAA;AACD,SAAA,CAAC;AAEF,QAAA,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC;IACrD;uGAjCY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cADb,MAAM,EAAA,CAAA;;2FACnB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;SCHlB,2BAA2B,GAAA;AAC1C,IAAA,OAAO,wBAAwB,CAAC;AAC/B,QAAA;AACC,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,WAAW,EAAE,0BAA0B;AACvC,SAAA;AACD,KAAA,CAAC;AACH;;ACVA;;AAEG;;;;"}
1
+ {"version":3,"file":"manticsoftware-angular-runtime-error-handling.mjs","sources":["../../../projects/rad-angular/runtime/error-handling/src/lib/helpers/error-utils.ts","../../../projects/rad-angular/runtime/error-handling/src/lib/services/error-mapper.service.ts","../../../projects/rad-angular/runtime/error-handling/src/lib/services/runtime-error-handler.service.ts","../../../projects/rad-angular/runtime/error-handling/src/lib/providers/provide-runtime-error-handling.ts","../../../projects/rad-angular/runtime/error-handling/manticsoftware-angular-runtime-error-handling.ts"],"sourcesContent":["export function isError(value: unknown): value is Error {\r\n return value instanceof Error;\r\n}\r\n\r\nexport function getErrorMessage(value: unknown, fallback = 'An unexpected error occurred.'): string {\r\n if (value instanceof Error && value.message) {\r\n return value.message;\r\n }\r\n\r\n if (typeof value === 'string' && value.trim().length > 0) {\r\n return value;\r\n }\r\n\r\n if (\r\n value !== null &&\r\n typeof value === 'object' &&\r\n 'message' in value &&\r\n typeof (value as { message?: unknown }).message === 'string'\r\n ) {\r\n return ((value as { message: string }).message || fallback).trim() || fallback;\r\n }\r\n\r\n return fallback;\r\n}\r\n\r\nexport function getErrorStack(value: unknown): string | undefined {\r\n if (value instanceof Error) {\r\n return value.stack;\r\n }\r\n\r\n return undefined;\r\n}","import { Injectable } from '@angular/core';\r\nimport { AppError } from '../contracts/app-error.model';\r\nimport { ErrorSource } from '../contracts/error-source.type';\r\nimport { getErrorMessage } from '../helpers/error-utils';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ErrorMapperService {\r\n\tmap(\r\n\t\terror: unknown,\r\n\t\tsource: ErrorSource = 'unknown',\r\n\t\toverride?: Partial<AppError>\r\n\t): AppError {\r\n\t\treturn {\r\n\t\t\tmessage: getErrorMessage(error),\r\n\t\t\tsource,\r\n\t\t\tseverity: 'error',\r\n\t\t\toriginalError: error,\r\n\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t...override,\r\n\t\t};\r\n\t}\r\n}","import { ErrorHandler, Injectable, inject } from '@angular/core';\r\nimport { LoggerService } from '@manticsoftware/angular/runtime/logger';\r\nimport { TelemetryService } from '@manticsoftware/angular/runtime/telemetry';\r\nimport { AppError } from '../contracts/app-error.model';\r\nimport { ErrorMapperService } from './error-mapper.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RuntimeErrorHandlerService implements ErrorHandler {\r\n\tprivate readonly mapper = inject(ErrorMapperService);\r\n\tprivate readonly logger = inject(LoggerService);\r\n\tprivate readonly telemetry = inject(TelemetryService);\r\n\r\n\thandleError(error: unknown): void {\r\n\t\tconst appError: AppError = this.mapper.map(error, 'runtime', {\r\n\t\t\tseverity: 'fatal',\r\n\t\t});\r\n\r\n\t\tthis.logger.error(appError.message, {\r\n\t\t\tsource: 'RuntimeErrorHandler',\r\n\t\t\terror: appError.originalError,\r\n\t\t\tdata: {\r\n\t\t\t\tcode: appError.code,\r\n\t\t\t\tdetails: appError.details,\r\n\t\t\t\ttraceId: appError.traceId,\r\n\t\t\t\tsource: appError.source,\r\n\t\t\t\tseverity: appError.severity,\r\n\t\t\t\ttimestamp: appError.timestamp,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tthis.telemetry.trackEvent('runtime.error.unhandled', {\r\n\t\t\tproperties: {\r\n\t\t\t\tmessage: appError.message,\r\n\t\t\t\tsource: appError.source,\r\n\t\t\t\tseverity: appError.severity,\r\n\t\t\t\ttraceId: appError.traceId ?? null,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tconsole.error('Unhandled application error.', error);\r\n\t}\r\n}\r\n","import { EnvironmentProviders, ErrorHandler, makeEnvironmentProviders } from '@angular/core';\r\nimport { RuntimeErrorHandlerService } from '../services/runtime-error-handler.service';\r\n\r\nexport function provideRuntimeErrorHandling(): EnvironmentProviders {\r\n\treturn makeEnvironmentProviders([\r\n\t\t{\r\n\t\t\tprovide: ErrorHandler,\r\n\t\t\tuseExisting: RuntimeErrorHandlerService,\r\n\t\t},\r\n\t]);\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manticsoftware-angular-runtime-http.mjs","sources":["../../../projects/rad-angular/runtime/http/src/lib/contracts/environment.token.ts","../../../projects/rad-angular/runtime/http/src/lib/contracts/http-client-config.ts","../../../projects/rad-angular/runtime/http/src/lib/helpers/api-client.helper.ts","../../../projects/rad-angular/runtime/http/src/lib/helpers/response.adapter.ts","../../../projects/rad-angular/runtime/http/src/lib/base-http/base-http.service.ts","../../../projects/rad-angular/runtime/http/src/lib/base-api/base-api.service.ts","../../../projects/rad-angular/runtime/http/src/lib/errors/api-error-mapper.service.ts","../../../projects/rad-angular/runtime/http/src/lib/errors/http-error-handler.service.ts","../../../projects/rad-angular/runtime/http/src/lib/context/http-context.tokens.ts","../../../projects/rad-angular/runtime/http/src/lib/helpers/request-context.builder.ts","../../../projects/rad-angular/runtime/http/src/lib/interceptors/auth-header.interceptor.ts","../../../projects/rad-angular/runtime/http/src/lib/interceptors/error.interceptor.ts","../../../projects/rad-angular/runtime/http/src/lib/interceptors/retry.interceptor.ts","../../../projects/rad-angular/runtime/http/src/lib/interceptors/correlation-id.interceptor.ts","../../../projects/rad-angular/runtime/http/src/lib/provide-platform-http.ts","../../../projects/rad-angular/runtime/http/src/manticsoftware-angular-runtime-http.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface IEnvironment {\n frontAppBaseUrl: string;\n backendBaseUrl: string;\n backendApiUrl: string;\n backendUploadUrl: string;\n jsReportUrl?: string;\n websiteUrl: string;\n httpDelay?: number;\n hashLocationStrategy?: boolean;\n}\n\nexport const EnvironmentToken = new InjectionToken<IEnvironment>('environment');\n","import { InjectionToken } from '@angular/core';\n\nexport interface IHttpClientConfig {\n baseUrl?: string;\n apiBaseUrl?: string;\n withCredentials?: boolean;\n defaultHeaders?: Record<string, string>;\n authHeaderName?: string;\n getAccessToken?: () => string | null;\n retryCount?: number;\n retryDelayMs?: number;\n correlationIdHeaderName?: string;\n}\n\nexport const HTTP_CLIENT_CONFIG = new InjectionToken<Partial<IHttpClientConfig>>(\n 'HTTP_CLIENT_CONFIG'\n);\n","export class ApiClientHelper {\n static joinUrl(baseUrl: string, endpoint: string): string {\n const normalizedBase = baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`;\n const normalizedEndpoint = endpoint.startsWith('/') ? endpoint.slice(1) : endpoint;\n return `${normalizedBase}${normalizedEndpoint}`;\n }\n}\n","import { HttpResponse } from '@angular/common/http';\n\nexport class ResponseAdapter {\n static body<T>(response: T | HttpResponse<T>): T {\n if (response instanceof HttpResponse) {\n return response.body as T;\n }\n return response;\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { KeyValuePair, radSafeAny } from '@manticsoftware/angular/types';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { EnvironmentToken } from '../contracts/environment.token';\nimport { HTTP_CLIENT_CONFIG } from '../contracts/http-client-config';\nimport { IHttpRequestConfig } from '../contracts/http-request-config';\nimport { ApiClientHelper } from '../helpers/api-client.helper';\nimport { ResponseAdapter } from '../helpers/response.adapter';\n\n@Injectable({ providedIn: 'root' })\nexport class BaseHTTPService {\n\tprotected readonly router = inject(Router);\n\tprotected readonly http = inject(HttpClient);\n\tprotected readonly config = inject(HTTP_CLIENT_CONFIG, { optional: true });\n\tprotected readonly environment = inject(EnvironmentToken, { optional: true });\n\n\tprotected baseUrl: string;\n\n\tconstructor() {\n\t\tthis.baseUrl = this.config?.baseUrl ?? this.environment?.backendBaseUrl ?? '';\n\t}\n\n\t// Backward compatibility for existing callers.\n\tprotected Redirect(url: string, params: KeyValuePair[] | null = null) {\n\t\tconst queryParams: Record<string, string> = {};\n\t\tfor (const item of params ?? []) {\n\t\t\tqueryParams[item.key] = item.value;\n\t\t}\n\t\tthis.router.navigate([url], { queryParams });\n\t}\n\n\tprivate getHeader(config: IHttpRequestConfig): HttpHeaders {\n\t\tlet header = new HttpHeaders(this.config?.defaultHeaders ?? {});\n\n\t\tif (!config.headers && !(config.body instanceof FormData)) {\n\t\t\treturn header.set('Content-Type', 'application/json; charset=utf-8');\n\t\t}\n\n\t\tif (config.body instanceof FormData) {\n\t\t\treturn header.delete('Content-Type');\n\t\t}\n\n\t\tfor (const key of Object.keys(config.headers ?? {})) {\n\t\t\tconst value = config.headers?.[key];\n\t\t\tif (!value || header.has(key)) continue;\n\t\t\theader = header.append(key, value);\n\t\t}\n\n\t\treturn header;\n\t}\n\n\thttpGet<T>(config: IHttpRequestConfig): Observable<T> {\n\t\tconst url = this.composeUrl(config);\n\t\tconst options = {\n\t\t\theaders: this.getHeader(config),\n\t\t\tparams: config.params,\n\t\t\tobserve: 'response' as const,\n\t\t\tresponseType: 'json' as const,\n\t\t\tcontext: config.context,\n\t\t\treportProgress: config.reportProgress,\n\t\t\twithCredentials: config.withCredentials ?? this.config?.withCredentials ?? true,\n\t\t};\n\n\t\treturn this.http.get<T>(url, options).pipe(map((res) => ResponseAdapter.body(res)));\n\t}\n\n\thttpPost<T>(config: IHttpRequestConfig): Observable<radSafeAny> {\n\t\tconst url = this.composeUrl(config);\n\t\tconst observe = config.observe ?? 'response';\n\t\tconst optionsBase = {\n\t\t\theaders: this.getHeader(config),\n\t\t\tcontext: config.context,\n\t\t\tparams: config.params,\n\t\t\treportProgress: config.reportProgress,\n\t\t\twithCredentials: config.withCredentials ?? this.config?.withCredentials ?? true,\n\t\t};\n\n\t\tif (observe === 'events') {\n\t\t\treturn this.http.post(url, config.body ?? null, {\n\t\t\t\t...optionsBase,\n\t\t\t\tobserve: 'events',\n\t\t\t\tresponseType: (config.responseType ?? 'json') as 'json',\n\t\t\t});\n\t\t}\n\n\t\treturn this.http\n\t\t\t.post<T>(url, config.body ?? null, {\n\t\t\t\t...optionsBase,\n\t\t\t\tobserve: 'response',\n\t\t\t\tresponseType: 'json',\n\t\t\t})\n\t\t\t.pipe(map((res) => ResponseAdapter.body(res)));\n\t}\n\n\thttpDelete<T>(endpoint: string, id: number): Observable<T> {\n\t\tconst config: IHttpRequestConfig = { endpoint: `${endpoint}${id}` };\n\t\treturn this.httpDeleteByParam<T>(config.endpoint);\n\t}\n\n\thttpDeleteByParam<T>(endpoint: string, param?: unknown): Observable<T> {\n\t\tconst config: IHttpRequestConfig = { endpoint };\n\t\tconst url = this.composeUrl(config);\n\n\t\treturn this.http\n\t\t\t.delete<T>(url, {\n\t\t\t\theaders: this.getHeader(config),\n\t\t\t\tparams: (param as IHttpRequestConfig['params']) ?? config.params,\n\t\t\t\tobserve: 'response',\n\t\t\t\twithCredentials: config.withCredentials ?? this.config?.withCredentials ?? true,\n\t\t\t})\n\t\t\t.pipe(map((res) => ResponseAdapter.body(res)));\n\t}\n\n\tgetImage(config: IHttpRequestConfig): Observable<Blob> {\n\t\tconst url = this.composeUrl(config);\n\t\treturn this.http.get(url, {\n\t\t\tresponseType: 'blob',\n\t\t\twithCredentials: config.withCredentials ?? this.config?.withCredentials ?? true,\n\t\t});\n\t}\n\n\tprotected composeUrl(config: IHttpRequestConfig): string {\n\t\tif (config.url) return config.url;\n\t\treturn ApiClientHelper.joinUrl(this.baseUrl, config.endpoint);\n\t}\n}\n\r\n","import { PageResponse, radSafeAny } from '@manticsoftware/angular/types';\nimport { Observable } from 'rxjs';\nimport { BaseHTTPService } from '../base-http/base-http.service';\n\nexport abstract class BaseAPIService<\n\tTModel = radSafeAny,\n\tTListModel = TModel,\n\tTFilter = radSafeAny,\n> extends BaseHTTPService {\n\tprotected abstract endpoint: string;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.baseUrl =\n\t\t\tthis.config?.apiBaseUrl ?? this.environment?.backendApiUrl ?? this.baseUrl;\n\t}\n\n\tprotected endpointUrl(action: string): string {\n\t\tconst normalizedEndpoint = this.endpoint.endsWith('/')\n\t\t\t? this.endpoint.slice(0, -1)\n\t\t\t: this.endpoint;\n\t\tconst normalizedAction = action.startsWith('/') ? action.slice(1) : action;\n\t\treturn `${normalizedEndpoint}/${normalizedAction}`;\n\t}\n\n\tgetList(params?: TFilter): Observable<TListModel[]> {\n\t\treturn this.httpPost<TListModel[]>({\n\t\t\tendpoint: this.endpointUrl('getList'),\n\t\t\tbody: params,\n\t\t});\n\t}\n\n\tgetPagedList(params?: radSafeAny): Observable<PageResponse<TListModel>> {\n\t\treturn this.httpPost<PageResponse<TListModel>>({\n\t\t\tendpoint: this.endpointUrl('getPagedList'),\n\t\t\tbody: params,\n\t\t});\n\t}\n\n\tprintPreview(id: number): Observable<radSafeAny> {\n\t\treturn this.httpGet({\n\t\t\tendpoint: this.endpointUrl(`print/${id}`),\n\t\t});\n\t}\n\n\tgetById(id: number): Observable<TModel> {\n\t\treturn this.httpGet<TModel>({\n\t\t\tendpoint: this.endpointUrl(`GetById/${id}`),\n\t\t});\n\t}\n\n\tinsertOrUpdate(model: Partial<TModel> | Partial<TModel>[] | FormData): Observable<TModel> {\n\t\treturn this.httpPost<TModel>({\n\t\t\tendpoint: this.endpointUrl('insertOrUpdate'),\n\t\t\tbody: model,\n\t\t});\n\t}\n\n\tinsertOrUpdateBulk(model: TModel[]): Observable<boolean> {\n\t\treturn this.httpPost<boolean>({\n\t\t\tendpoint: this.endpointUrl('insertOrUpdateBulk'),\n\t\t\tbody: model,\n\t\t});\n\t}\n\n\tdelete(id: number): Observable<boolean> {\n\t\treturn this.httpDelete<boolean>(this.endpointUrl('delete/'), id);\n\t}\n\n\tdeleteAttachment(id: number): Observable<boolean> {\n\t\treturn this.httpDelete<boolean>(this.endpointUrl('deleteAttachment/'), id);\n\t}\n\n\tdeleteByParam(params?: radSafeAny): Observable<boolean> {\n\t\treturn this.httpDeleteByParam<boolean>(this.endpointUrl('delete'), params);\n\t}\n\n\ttoggleArchive(id: number): Observable<TModel> {\n\t\treturn this.httpPost<TModel>({\n\t\t\tendpoint: this.endpointUrl('toggleArchive'),\n\t\t\tparams: { id },\n\t\t});\n\t}\n\n\tgetTabList(): Observable<radSafeAny[]> {\n\t\treturn this.httpGet({\n\t\t\tendpoint: this.endpointUrl('getTabList'),\n\t\t});\n\t}\n\n\t// Backward compatibility for existing services.\n\tGetTabList(): Observable<radSafeAny[]> {\n\t\treturn this.getTabList();\n\t}\n}\n\r\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ApiError } from './api-error.types';\n\n@Injectable({ providedIn: 'root' })\nexport class ApiErrorMapperService {\n map(error: unknown): ApiError {\n if (error instanceof HttpErrorResponse) {\n const payload = error.error as { code?: string; message?: string } | null;\n return {\n status: error.status,\n code: payload?.code,\n message: payload?.message ?? error.message ?? 'Unexpected API error',\n details: error.error,\n };\n }\n\n return {\n status: 0,\n message: 'Unexpected API error',\n details: error,\n };\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\ntype BackendErrorPayload = {\n\tMessage?: string;\n\tErrors?: Record<string, string[] | string> | Array<Record<string, string>>;\n\terror?: string;\n};\n\n@Injectable({ providedIn: 'root' })\nexport class HttpErrorHandlerService {\n\t//private readonly alertService = inject(AlertService, { optional: true });\n\n\thandle(response: HttpErrorResponse): void {\n\t\tconst payload = this.normalizePayload(response.error);\n\t\tconst title = this.resolveTitle(response.status, payload);\n\t\tconst message = this.resolveMessage(response.status, payload, response.message);\n\n\t\t//this.alertService?.error.show({ title, message });\n\t}\n\n\tprivate normalizePayload(value: unknown): BackendErrorPayload {\n\t\tif (typeof value === 'string') {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(value) as BackendErrorPayload;\n\t\t\t} catch {\n\t\t\t\treturn { Message: value };\n\t\t\t}\n\t\t}\n\n\t\tif (value && typeof value === 'object') {\n\t\t\treturn value as BackendErrorPayload;\n\t\t}\n\n\t\treturn {};\n\t}\n\n\tprivate flattenValidationErrors(errors: BackendErrorPayload['Errors']): string[] {\n\t\tif (!errors) return [];\n\t\tif (Array.isArray(errors)) {\n\t\t\treturn errors.flatMap((item) => Object.values(item).map((v) => String(v)));\n\t\t}\n\n\t\treturn Object.values(errors).flatMap((value) =>\n\t\t\tArray.isArray(value) ? value.map(String) : [String(value)]\n\t\t);\n\t}\n\n\tprivate resolveTitle(status: number, payload: BackendErrorPayload): string {\n\t\tswitch (status) {\n\t\t\tcase 0:\n\t\t\t\treturn 'Network Issue';\n\t\t\tcase 400:\n\t\t\t\treturn payload.Message || 'Invalid Request';\n\t\t\tcase 401:\n\t\t\t\treturn 'Unauthorized';\n\t\t\tcase 403:\n\t\t\t\treturn 'Forbidden';\n\t\t\tcase 404:\n\t\t\t\treturn 'Not Found';\n\t\t\tcase 405:\n\t\t\t\treturn 'Method Not Allowed';\n\t\t\tcase 408:\n\t\t\t\treturn 'Request Timeout';\n\t\t\tcase 500:\n\t\t\t\treturn 'Operation Failed';\n\t\t\tdefault:\n\t\t\t\treturn payload.Message || 'Request Failed';\n\t\t}\n\t}\n\n\tprivate resolveMessage(\n\t\tstatus: number,\n\t\tpayload: BackendErrorPayload,\n\t\tfallback: string\n\t): string {\n\t\tif (status === 400) {\n\t\t\tconst validationMessages = this.flattenValidationErrors(payload.Errors);\n\t\t\tif (validationMessages.length > 0) {\n\t\t\t\treturn validationMessages.join('\\n');\n\t\t\t}\n\t\t}\n\n\t\tif (status === 0) {\n\t\t\treturn 'Unable to connect to the server. Please check your internet connection and try again.';\n\t\t}\n\n\t\treturn payload.error || payload.Message || fallback || 'Unexpected error.';\n\t}\n}\n","import { HttpContextToken } from '@angular/common/http';\n\nexport const SKIP_AUTH = new HttpContextToken<boolean>(() => false);\nexport const SKIP_ERROR_HANDLER = new HttpContextToken<boolean>(() => false);\nexport const RETRY_COUNT = new HttpContextToken<number>(() => 0);\n","import { HttpContext } from '@angular/common/http';\nimport { RETRY_COUNT, SKIP_AUTH, SKIP_ERROR_HANDLER } from '../context/http-context.tokens';\n\nexport class RequestContextBuilder {\n static skipAuth(context: HttpContext = new HttpContext()): HttpContext {\n return context.set(SKIP_AUTH, true);\n }\n\n static skipErrorHandler(context: HttpContext = new HttpContext()): HttpContext {\n return context.set(SKIP_ERROR_HANDLER, true);\n }\n\n static withRetry(retries: number, context: HttpContext = new HttpContext()): HttpContext {\n return context.set(RETRY_COUNT, retries);\n }\n}\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { HTTP_CLIENT_CONFIG } from '../contracts/http-client-config';\nimport { SKIP_AUTH } from '../context/http-context.tokens';\n\nexport const authHeaderInterceptor: HttpInterceptorFn = (req, next) => {\n\tconst config = inject(HTTP_CLIENT_CONFIG, { optional: true });\n\n\tif (req.context.get(SKIP_AUTH)) {\n\t\treturn next(req);\n\t}\n\n\tconst token = config?.getAccessToken?.();\n\tif (!token) {\n\t\treturn next(req);\n\t}\n\n\tconst authHeaderName = config?.authHeaderName ?? 'Authorization';\n\tconst updatedReq = req.clone({\n\t\tsetHeaders: { [authHeaderName]: `Bearer ${token}` },\n\t});\n\n\treturn next(updatedReq);\n};\n","import {\n\tHttpErrorResponse,\n\tHttpInterceptorFn,\n\tHttpEvent,\n} from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { SKIP_ERROR_HANDLER } from '../context/http-context.tokens';\nimport { ApiErrorMapperService } from '../errors/api-error-mapper.service';\nimport { HttpErrorHandlerService } from '../errors/http-error-handler.service';\n\nexport const httpErrorInterceptor: HttpInterceptorFn = (req, next): Observable<HttpEvent<unknown>> => {\n\tconst mapper = inject(ApiErrorMapperService);\n\tconst errorHandler = inject(HttpErrorHandlerService);\n\n\treturn next(req).pipe(\n\t\tcatchError((response: HttpErrorResponse) => {\n\t\t\tif (req.context.get(SKIP_ERROR_HANDLER)) {\n\t\t\t\treturn throwError(() => response);\n\t\t\t}\n\n\t\t\terrorHandler.handle(response);\n\t\t\treturn throwError(() => mapper.map(response));\n\t\t})\n\t);\n};\n","import {\n HttpInterceptorFn,\n HttpEvent,\n HttpErrorResponse,\n} from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Observable, timer, throwError } from 'rxjs';\nimport { mergeMap, retryWhen } from 'rxjs/operators';\nimport { HTTP_CLIENT_CONFIG } from '../contracts/http-client-config';\nimport { RETRY_COUNT } from '../context/http-context.tokens';\n\nexport const retryInterceptor: HttpInterceptorFn = (\n req,\n next\n): Observable<HttpEvent<unknown>> => {\n const config = inject(HTTP_CLIENT_CONFIG, { optional: true });\n\n const retries = req.context.get(RETRY_COUNT) || config?.retryCount || 0;\n const delayMs = config?.retryDelayMs || 300;\n\n if (retries <= 0) {\n return next(req);\n }\n\n return next(req).pipe(\n retryWhen((errors) =>\n errors.pipe(\n mergeMap((error: unknown, index: number) => {\n const attempt = index + 1;\n const isServerError =\n error instanceof HttpErrorResponse &&\n (error.status >= 500 || error.status === 0);\n\n if (!isServerError || attempt > retries) {\n return throwError(() => error);\n }\n\n return timer(delayMs * attempt);\n })\n )\n )\n );\n};\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { HTTP_CLIENT_CONFIG } from '../contracts/http-client-config';\n\nexport const correlationIdInterceptor: HttpInterceptorFn = (req, next) => {\n const config = inject(HTTP_CLIENT_CONFIG, { optional: true });\n\n const headerName = config?.correlationIdHeaderName ?? 'X-Correlation-Id';\n const correlationId =\n globalThis.crypto?.randomUUID?.() ??\n `${Date.now()}-${Math.random().toString(16).slice(2)}`;\n\n const updatedReq = req.clone({\n setHeaders: { [headerName]: correlationId },\n });\n\n return next(updatedReq);\n};\n","import { provideHttpClient, withInterceptors } from '@angular/common/http';\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { HTTP_CLIENT_CONFIG, IHttpClientConfig } from './contracts/http-client-config';\nimport { authHeaderInterceptor } from './interceptors/auth-header.interceptor';\nimport { correlationIdInterceptor } from './interceptors/correlation-id.interceptor';\nimport { httpErrorInterceptor } from './interceptors/error.interceptor';\nimport { retryInterceptor } from './interceptors/retry.interceptor';\n\nexport function providePlatformHttp(config: Partial<IHttpClientConfig> = {}): EnvironmentProviders {\n\treturn makeEnvironmentProviders([\n\t\t{ provide: HTTP_CLIENT_CONFIG, useValue: config },\n\t\tprovideHttpClient(\n\t\t\t// withFetch() is intentionally omitted to preserve upload progress events.\n\t\t\twithInterceptors([\n\t\t\t\tcorrelationIdInterceptor,\n\t\t\t\tauthHeaderInterceptor,\n\t\t\t\thttpErrorInterceptor,\n\t\t\t\tretryInterceptor,\n\t\t\t])\n\t\t),\n\t]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manticsoftware-angular-runtime-http.mjs","sources":["../../../projects/rad-angular/runtime/http/src/lib/contracts/environment.token.ts","../../../projects/rad-angular/runtime/http/src/lib/contracts/http-client-config.ts","../../../projects/rad-angular/runtime/http/src/lib/helpers/api-client.helper.ts","../../../projects/rad-angular/runtime/http/src/lib/helpers/response.adapter.ts","../../../projects/rad-angular/runtime/http/src/lib/base-http/base-http.service.ts","../../../projects/rad-angular/runtime/http/src/lib/base-api/base-api.service.ts","../../../projects/rad-angular/runtime/http/src/lib/errors/api-error-mapper.service.ts","../../../projects/rad-angular/runtime/http/src/lib/errors/http-error-handler.service.ts","../../../projects/rad-angular/runtime/http/src/lib/context/http-context.tokens.ts","../../../projects/rad-angular/runtime/http/src/lib/helpers/request-context.builder.ts","../../../projects/rad-angular/runtime/http/src/lib/interceptors/auth-header.interceptor.ts","../../../projects/rad-angular/runtime/http/src/lib/interceptors/error.interceptor.ts","../../../projects/rad-angular/runtime/http/src/lib/interceptors/retry.interceptor.ts","../../../projects/rad-angular/runtime/http/src/lib/interceptors/correlation-id.interceptor.ts","../../../projects/rad-angular/runtime/http/src/lib/provide-platform-http.ts","../../../projects/rad-angular/runtime/http/manticsoftware-angular-runtime-http.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface IEnvironment {\n frontAppBaseUrl: string;\n backendBaseUrl: string;\n backendApiUrl: string;\n backendUploadUrl: string;\n jsReportUrl?: string;\n websiteUrl: string;\n httpDelay?: number;\n hashLocationStrategy?: boolean;\n}\n\nexport const EnvironmentToken = new InjectionToken<IEnvironment>('environment');\n","import { InjectionToken } from '@angular/core';\n\nexport interface IHttpClientConfig {\n baseUrl?: string;\n apiBaseUrl?: string;\n withCredentials?: boolean;\n defaultHeaders?: Record<string, string>;\n authHeaderName?: string;\n getAccessToken?: () => string | null;\n retryCount?: number;\n retryDelayMs?: number;\n correlationIdHeaderName?: string;\n}\n\nexport const HTTP_CLIENT_CONFIG = new InjectionToken<Partial<IHttpClientConfig>>(\n 'HTTP_CLIENT_CONFIG'\n);\n","export class ApiClientHelper {\n static joinUrl(baseUrl: string, endpoint: string): string {\n const normalizedBase = baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`;\n const normalizedEndpoint = endpoint.startsWith('/') ? endpoint.slice(1) : endpoint;\n return `${normalizedBase}${normalizedEndpoint}`;\n }\n}\n","import { HttpResponse } from '@angular/common/http';\n\nexport class ResponseAdapter {\n static body<T>(response: T | HttpResponse<T>): T {\n if (response instanceof HttpResponse) {\n return response.body as T;\n }\n return response;\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { KeyValuePair, radSafeAny } from '@manticsoftware/angular/types';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { EnvironmentToken } from '../contracts/environment.token';\nimport { HTTP_CLIENT_CONFIG } from '../contracts/http-client-config';\nimport { IHttpRequestConfig } from '../contracts/http-request-config';\nimport { ApiClientHelper } from '../helpers/api-client.helper';\nimport { ResponseAdapter } from '../helpers/response.adapter';\n\n@Injectable({ providedIn: 'root' })\nexport class BaseHTTPService {\n\tprotected readonly router = inject(Router);\n\tprotected readonly http = inject(HttpClient);\n\tprotected readonly config = inject(HTTP_CLIENT_CONFIG, { optional: true });\n\tprotected readonly environment = inject(EnvironmentToken, { optional: true });\n\n\tprotected baseUrl: string;\n\n\tconstructor() {\n\t\tthis.baseUrl = this.config?.baseUrl ?? this.environment?.backendBaseUrl ?? '';\n\t}\n\n\t// Backward compatibility for existing callers.\n\tprotected Redirect(url: string, params: KeyValuePair[] | null = null) {\n\t\tconst queryParams: Record<string, string> = {};\n\t\tfor (const item of params ?? []) {\n\t\t\tqueryParams[item.key] = item.value;\n\t\t}\n\t\tthis.router.navigate([url], { queryParams });\n\t}\n\n\tprivate getHeader(config: IHttpRequestConfig): HttpHeaders {\n\t\tlet header = new HttpHeaders(this.config?.defaultHeaders ?? {});\n\n\t\tif (!config.headers && !(config.body instanceof FormData)) {\n\t\t\treturn header.set('Content-Type', 'application/json; charset=utf-8');\n\t\t}\n\n\t\tif (config.body instanceof FormData) {\n\t\t\treturn header.delete('Content-Type');\n\t\t}\n\n\t\tfor (const key of Object.keys(config.headers ?? {})) {\n\t\t\tconst value = config.headers?.[key];\n\t\t\tif (!value || header.has(key)) continue;\n\t\t\theader = header.append(key, value);\n\t\t}\n\n\t\treturn header;\n\t}\n\n\thttpGet<T>(config: IHttpRequestConfig): Observable<T> {\n\t\tconst url = this.composeUrl(config);\n\t\tconst options = {\n\t\t\theaders: this.getHeader(config),\n\t\t\tparams: config.params,\n\t\t\tobserve: 'response' as const,\n\t\t\tresponseType: 'json' as const,\n\t\t\tcontext: config.context,\n\t\t\treportProgress: config.reportProgress,\n\t\t\twithCredentials: config.withCredentials ?? this.config?.withCredentials ?? true,\n\t\t};\n\n\t\treturn this.http.get<T>(url, options).pipe(map((res) => ResponseAdapter.body(res)));\n\t}\n\n\thttpPost<T>(config: IHttpRequestConfig): Observable<radSafeAny> {\n\t\tconst url = this.composeUrl(config);\n\t\tconst observe = config.observe ?? 'response';\n\t\tconst optionsBase = {\n\t\t\theaders: this.getHeader(config),\n\t\t\tcontext: config.context,\n\t\t\tparams: config.params,\n\t\t\treportProgress: config.reportProgress,\n\t\t\twithCredentials: config.withCredentials ?? this.config?.withCredentials ?? true,\n\t\t};\n\n\t\tif (observe === 'events') {\n\t\t\treturn this.http.post(url, config.body ?? null, {\n\t\t\t\t...optionsBase,\n\t\t\t\tobserve: 'events',\n\t\t\t\tresponseType: (config.responseType ?? 'json') as 'json',\n\t\t\t});\n\t\t}\n\n\t\treturn this.http\n\t\t\t.post<T>(url, config.body ?? null, {\n\t\t\t\t...optionsBase,\n\t\t\t\tobserve: 'response',\n\t\t\t\tresponseType: 'json',\n\t\t\t})\n\t\t\t.pipe(map((res) => ResponseAdapter.body(res)));\n\t}\n\n\thttpDelete<T>(endpoint: string, id: number): Observable<T> {\n\t\tconst config: IHttpRequestConfig = { endpoint: `${endpoint}${id}` };\n\t\treturn this.httpDeleteByParam<T>(config.endpoint);\n\t}\n\n\thttpDeleteByParam<T>(endpoint: string, param?: unknown): Observable<T> {\n\t\tconst config: IHttpRequestConfig = { endpoint };\n\t\tconst url = this.composeUrl(config);\n\n\t\treturn this.http\n\t\t\t.delete<T>(url, {\n\t\t\t\theaders: this.getHeader(config),\n\t\t\t\tparams: (param as IHttpRequestConfig['params']) ?? config.params,\n\t\t\t\tobserve: 'response',\n\t\t\t\twithCredentials: config.withCredentials ?? this.config?.withCredentials ?? true,\n\t\t\t})\n\t\t\t.pipe(map((res) => ResponseAdapter.body(res)));\n\t}\n\n\tgetImage(config: IHttpRequestConfig): Observable<Blob> {\n\t\tconst url = this.composeUrl(config);\n\t\treturn this.http.get(url, {\n\t\t\tresponseType: 'blob',\n\t\t\twithCredentials: config.withCredentials ?? this.config?.withCredentials ?? true,\n\t\t});\n\t}\n\n\tprotected composeUrl(config: IHttpRequestConfig): string {\n\t\tif (config.url) return config.url;\n\t\treturn ApiClientHelper.joinUrl(this.baseUrl, config.endpoint);\n\t}\n}\n\r\n","import { PageResponse, radSafeAny } from '@manticsoftware/angular/types';\nimport { Observable } from 'rxjs';\nimport { BaseHTTPService } from '../base-http/base-http.service';\n\nexport abstract class BaseAPIService<\n\tTModel = radSafeAny,\n\tTListModel = TModel,\n\tTFilter = radSafeAny,\n> extends BaseHTTPService {\n\tprotected abstract endpoint: string;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.baseUrl =\n\t\t\tthis.config?.apiBaseUrl ?? this.environment?.backendApiUrl ?? this.baseUrl;\n\t}\n\n\tprotected endpointUrl(action: string): string {\n\t\tconst normalizedEndpoint = this.endpoint.endsWith('/')\n\t\t\t? this.endpoint.slice(0, -1)\n\t\t\t: this.endpoint;\n\t\tconst normalizedAction = action.startsWith('/') ? action.slice(1) : action;\n\t\treturn `${normalizedEndpoint}/${normalizedAction}`;\n\t}\n\n\tgetList(params?: TFilter): Observable<TListModel[]> {\n\t\treturn this.httpPost<TListModel[]>({\n\t\t\tendpoint: this.endpointUrl('getList'),\n\t\t\tbody: params,\n\t\t});\n\t}\n\n\tgetPagedList(params?: radSafeAny): Observable<PageResponse<TListModel>> {\n\t\treturn this.httpPost<PageResponse<TListModel>>({\n\t\t\tendpoint: this.endpointUrl('getPagedList'),\n\t\t\tbody: params,\n\t\t});\n\t}\n\n\tprintPreview(id: number): Observable<radSafeAny> {\n\t\treturn this.httpGet({\n\t\t\tendpoint: this.endpointUrl(`print/${id}`),\n\t\t});\n\t}\n\n\tgetById(id: number): Observable<TModel> {\n\t\treturn this.httpGet<TModel>({\n\t\t\tendpoint: this.endpointUrl(`GetById/${id}`),\n\t\t});\n\t}\n\n\tinsertOrUpdate(model: Partial<TModel> | Partial<TModel>[] | FormData): Observable<TModel> {\n\t\treturn this.httpPost<TModel>({\n\t\t\tendpoint: this.endpointUrl('insertOrUpdate'),\n\t\t\tbody: model,\n\t\t});\n\t}\n\n\tinsertOrUpdateBulk(model: TModel[]): Observable<boolean> {\n\t\treturn this.httpPost<boolean>({\n\t\t\tendpoint: this.endpointUrl('insertOrUpdateBulk'),\n\t\t\tbody: model,\n\t\t});\n\t}\n\n\tdelete(id: number): Observable<boolean> {\n\t\treturn this.httpDelete<boolean>(this.endpointUrl('delete/'), id);\n\t}\n\n\tdeleteAttachment(id: number): Observable<boolean> {\n\t\treturn this.httpDelete<boolean>(this.endpointUrl('deleteAttachment/'), id);\n\t}\n\n\tdeleteByParam(params?: radSafeAny): Observable<boolean> {\n\t\treturn this.httpDeleteByParam<boolean>(this.endpointUrl('delete'), params);\n\t}\n\n\ttoggleArchive(id: number): Observable<TModel> {\n\t\treturn this.httpPost<TModel>({\n\t\t\tendpoint: this.endpointUrl('toggleArchive'),\n\t\t\tparams: { id },\n\t\t});\n\t}\n\n\tgetTabList(): Observable<radSafeAny[]> {\n\t\treturn this.httpGet({\n\t\t\tendpoint: this.endpointUrl('getTabList'),\n\t\t});\n\t}\n\n\t// Backward compatibility for existing services.\n\tGetTabList(): Observable<radSafeAny[]> {\n\t\treturn this.getTabList();\n\t}\n}\n\r\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ApiError } from './api-error.types';\n\n@Injectable({ providedIn: 'root' })\nexport class ApiErrorMapperService {\n map(error: unknown): ApiError {\n if (error instanceof HttpErrorResponse) {\n const payload = error.error as { code?: string; message?: string } | null;\n return {\n status: error.status,\n code: payload?.code,\n message: payload?.message ?? error.message ?? 'Unexpected API error',\n details: error.error,\n };\n }\n\n return {\n status: 0,\n message: 'Unexpected API error',\n details: error,\n };\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\ntype BackendErrorPayload = {\n\tMessage?: string;\n\tErrors?: Record<string, string[] | string> | Array<Record<string, string>>;\n\terror?: string;\n};\n\n@Injectable({ providedIn: 'root' })\nexport class HttpErrorHandlerService {\n\t//private readonly alertService = inject(AlertService, { optional: true });\n\n\thandle(response: HttpErrorResponse): void {\n\t\tconst payload = this.normalizePayload(response.error);\n\t\tconst title = this.resolveTitle(response.status, payload);\n\t\tconst message = this.resolveMessage(response.status, payload, response.message);\n\n\t\t//this.alertService?.error.show({ title, message });\n\t}\n\n\tprivate normalizePayload(value: unknown): BackendErrorPayload {\n\t\tif (typeof value === 'string') {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(value) as BackendErrorPayload;\n\t\t\t} catch {\n\t\t\t\treturn { Message: value };\n\t\t\t}\n\t\t}\n\n\t\tif (value && typeof value === 'object') {\n\t\t\treturn value as BackendErrorPayload;\n\t\t}\n\n\t\treturn {};\n\t}\n\n\tprivate flattenValidationErrors(errors: BackendErrorPayload['Errors']): string[] {\n\t\tif (!errors) return [];\n\t\tif (Array.isArray(errors)) {\n\t\t\treturn errors.flatMap((item) => Object.values(item).map((v) => String(v)));\n\t\t}\n\n\t\treturn Object.values(errors).flatMap((value) =>\n\t\t\tArray.isArray(value) ? value.map(String) : [String(value)]\n\t\t);\n\t}\n\n\tprivate resolveTitle(status: number, payload: BackendErrorPayload): string {\n\t\tswitch (status) {\n\t\t\tcase 0:\n\t\t\t\treturn 'Network Issue';\n\t\t\tcase 400:\n\t\t\t\treturn payload.Message || 'Invalid Request';\n\t\t\tcase 401:\n\t\t\t\treturn 'Unauthorized';\n\t\t\tcase 403:\n\t\t\t\treturn 'Forbidden';\n\t\t\tcase 404:\n\t\t\t\treturn 'Not Found';\n\t\t\tcase 405:\n\t\t\t\treturn 'Method Not Allowed';\n\t\t\tcase 408:\n\t\t\t\treturn 'Request Timeout';\n\t\t\tcase 500:\n\t\t\t\treturn 'Operation Failed';\n\t\t\tdefault:\n\t\t\t\treturn payload.Message || 'Request Failed';\n\t\t}\n\t}\n\n\tprivate resolveMessage(\n\t\tstatus: number,\n\t\tpayload: BackendErrorPayload,\n\t\tfallback: string\n\t): string {\n\t\tif (status === 400) {\n\t\t\tconst validationMessages = this.flattenValidationErrors(payload.Errors);\n\t\t\tif (validationMessages.length > 0) {\n\t\t\t\treturn validationMessages.join('\\n');\n\t\t\t}\n\t\t}\n\n\t\tif (status === 0) {\n\t\t\treturn 'Unable to connect to the server. Please check your internet connection and try again.';\n\t\t}\n\n\t\treturn payload.error || payload.Message || fallback || 'Unexpected error.';\n\t}\n}\n","import { HttpContextToken } from '@angular/common/http';\n\nexport const SKIP_AUTH = new HttpContextToken<boolean>(() => false);\nexport const SKIP_ERROR_HANDLER = new HttpContextToken<boolean>(() => false);\nexport const RETRY_COUNT = new HttpContextToken<number>(() => 0);\n","import { HttpContext } from '@angular/common/http';\nimport { RETRY_COUNT, SKIP_AUTH, SKIP_ERROR_HANDLER } from '../context/http-context.tokens';\n\nexport class RequestContextBuilder {\n static skipAuth(context: HttpContext = new HttpContext()): HttpContext {\n return context.set(SKIP_AUTH, true);\n }\n\n static skipErrorHandler(context: HttpContext = new HttpContext()): HttpContext {\n return context.set(SKIP_ERROR_HANDLER, true);\n }\n\n static withRetry(retries: number, context: HttpContext = new HttpContext()): HttpContext {\n return context.set(RETRY_COUNT, retries);\n }\n}\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { HTTP_CLIENT_CONFIG } from '../contracts/http-client-config';\nimport { SKIP_AUTH } from '../context/http-context.tokens';\n\nexport const authHeaderInterceptor: HttpInterceptorFn = (req, next) => {\n\tconst config = inject(HTTP_CLIENT_CONFIG, { optional: true });\n\n\tif (req.context.get(SKIP_AUTH)) {\n\t\treturn next(req);\n\t}\n\n\tconst token = config?.getAccessToken?.();\n\tif (!token) {\n\t\treturn next(req);\n\t}\n\n\tconst authHeaderName = config?.authHeaderName ?? 'Authorization';\n\tconst updatedReq = req.clone({\n\t\tsetHeaders: { [authHeaderName]: `Bearer ${token}` },\n\t});\n\n\treturn next(updatedReq);\n};\n","import {\n\tHttpErrorResponse,\n\tHttpInterceptorFn,\n\tHttpEvent,\n} from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { SKIP_ERROR_HANDLER } from '../context/http-context.tokens';\nimport { ApiErrorMapperService } from '../errors/api-error-mapper.service';\nimport { HttpErrorHandlerService } from '../errors/http-error-handler.service';\n\nexport const httpErrorInterceptor: HttpInterceptorFn = (req, next): Observable<HttpEvent<unknown>> => {\n\tconst mapper = inject(ApiErrorMapperService);\n\tconst errorHandler = inject(HttpErrorHandlerService);\n\n\treturn next(req).pipe(\n\t\tcatchError((response: HttpErrorResponse) => {\n\t\t\tif (req.context.get(SKIP_ERROR_HANDLER)) {\n\t\t\t\treturn throwError(() => response);\n\t\t\t}\n\n\t\t\terrorHandler.handle(response);\n\t\t\treturn throwError(() => mapper.map(response));\n\t\t})\n\t);\n};\n","import {\n HttpInterceptorFn,\n HttpEvent,\n HttpErrorResponse,\n} from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Observable, timer, throwError } from 'rxjs';\nimport { mergeMap, retryWhen } from 'rxjs/operators';\nimport { HTTP_CLIENT_CONFIG } from '../contracts/http-client-config';\nimport { RETRY_COUNT } from '../context/http-context.tokens';\n\nexport const retryInterceptor: HttpInterceptorFn = (\n req,\n next\n): Observable<HttpEvent<unknown>> => {\n const config = inject(HTTP_CLIENT_CONFIG, { optional: true });\n\n const retries = req.context.get(RETRY_COUNT) || config?.retryCount || 0;\n const delayMs = config?.retryDelayMs || 300;\n\n if (retries <= 0) {\n return next(req);\n }\n\n return next(req).pipe(\n retryWhen((errors) =>\n errors.pipe(\n mergeMap((error: unknown, index: number) => {\n const attempt = index + 1;\n const isServerError =\n error instanceof HttpErrorResponse &&\n (error.status >= 500 || error.status === 0);\n\n if (!isServerError || attempt > retries) {\n return throwError(() => error);\n }\n\n return timer(delayMs * attempt);\n })\n )\n )\n );\n};\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { HTTP_CLIENT_CONFIG } from '../contracts/http-client-config';\n\nexport const correlationIdInterceptor: HttpInterceptorFn = (req, next) => {\n const config = inject(HTTP_CLIENT_CONFIG, { optional: true });\n\n const headerName = config?.correlationIdHeaderName ?? 'X-Correlation-Id';\n const correlationId =\n globalThis.crypto?.randomUUID?.() ??\n `${Date.now()}-${Math.random().toString(16).slice(2)}`;\n\n const updatedReq = req.clone({\n setHeaders: { [headerName]: correlationId },\n });\n\n return next(updatedReq);\n};\n","import { provideHttpClient, withInterceptors } from '@angular/common/http';\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { HTTP_CLIENT_CONFIG, IHttpClientConfig } from './contracts/http-client-config';\nimport { authHeaderInterceptor } from './interceptors/auth-header.interceptor';\nimport { correlationIdInterceptor } from './interceptors/correlation-id.interceptor';\nimport { httpErrorInterceptor } from './interceptors/error.interceptor';\nimport { retryInterceptor } from './interceptors/retry.interceptor';\n\nexport function providePlatformHttp(config: Partial<IHttpClientConfig> = {}): EnvironmentProviders {\n\treturn makeEnvironmentProviders([\n\t\t{ provide: HTTP_CLIENT_CONFIG, useValue: config },\n\t\tprovideHttpClient(\n\t\t\t// withFetch() is intentionally omitted to preserve upload progress events.\n\t\t\twithInterceptors([\n\t\t\t\tcorrelationIdInterceptor,\n\t\t\t\tauthHeaderInterceptor,\n\t\t\t\thttpErrorInterceptor,\n\t\t\t\tretryInterceptor,\n\t\t\t])\n\t\t),\n\t]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manticsoftware-angular-runtime-i18n-adapter.mjs","sources":["../../../projects/rad-angular/runtime/i18n-adapter/src/lib/loaders/transloco-http.loader.ts","../../../projects/rad-angular/runtime/i18n-adapter/src/lib/services/i18n.service.ts","../../../projects/rad-angular/runtime/i18n-adapter/src/lib/services/locale.service.ts","../../../projects/rad-angular/runtime/i18n-adapter/src/lib/services/i18n-runtime-initializer.service.ts","../../../projects/rad-angular/runtime/i18n-adapter/src/lib/providers/CustomMissingHandler.ts","../../../projects/rad-angular/runtime/i18n-adapter/src/lib/providers/provide-i18n-adapter.ts","../../../projects/rad-angular/runtime/i18n-adapter/src/manticsoftware-angular-runtime-i18n-adapter.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TRANSLOCO_CONFIG, TRANSLOCO_LOADER, translocoConfig, TranslocoConfig, TranslocoLoader } from '@jsverse/transloco';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TranslocoHttpLoader implements TranslocoLoader {\r\n\tconstructor(private http: HttpClient) { }\r\n\r\n\tgetTranslation(lang: string): Observable<Record<string, unknown>> {\r\n\t\treturn this.http.get<Record<string, unknown>>(`/assets/i18n/${lang}.json`);\r\n\t}\r\n}\r\n\r\nexport const translocoProvider = [\r\n\t{\r\n\t\tprovide: TRANSLOCO_CONFIG,\r\n\t\tuseValue: translocoConfig({\r\n\t\t\tavailableLangs: ['en', 'fr'],\r\n\t\t\tdefaultLang: 'en',\r\n\t\t\tfallbackLang: 'en',\r\n\t\t\treRenderOnLangChange: true,\r\n\t\t\tprodMode: false // Change to `true` in production\r\n\t\t}) as TranslocoConfig\r\n\t},\r\n\t{ provide: TRANSLOCO_LOADER, useClass: TranslocoHttpLoader }\r\n];","import { inject, Injectable } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class I18nService {\r\n\tprivate readonly transloco = inject(TranslocoService);\r\n\r\n\tgetActiveLanguage(): string {\r\n\t\treturn this.transloco.getActiveLang();\r\n\t}\r\n\r\n\tsetActiveLanguage(language: string): void {\r\n\t\tthis.transloco.setActiveLang(language);\r\n\t}\r\n\r\n\tgetAvailableLanguages(): string[] {\r\n\t\treturn this.transloco.getAvailableLangs().map(x => {\r\n\t\t\treturn typeof x === 'string' ? x : x.id;\r\n\t\t});\r\n\t}\r\n\r\n\ttranslate(key: string, params?: Record<string, unknown>): string {\r\n\t\treturn this.transloco.translate(key, params);\r\n\t}\r\n\r\n\tselectTranslate(key: string, params?: Record<string, unknown>) {\r\n\t\treturn this.transloco.selectTranslate(key, params);\r\n\t}\r\n\r\n\tload(language: string): Promise<void> {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.transloco.load(language).subscribe({\r\n\t\t\t\tnext: () => resolve(),\r\n\t\t\t\terror: reject,\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}","import { DOCUMENT } from '@angular/common';\r\nimport { computed, inject, Injectable } from '@angular/core';\r\nimport { ConfigService } from '@manticsoftware/angular/runtime/config';\r\nimport { I18nService } from './i18n.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LocaleService {\r\n\tprivate readonly document = inject(DOCUMENT);\r\n\tprivate readonly config = inject(ConfigService);\r\n\tprivate readonly i18n = inject(I18nService);\r\n\r\n\treadonly language = computed(() => this.config.language());\r\n\treadonly locale = computed(() => this.config.localeCode());\r\n\treadonly direction = computed(() => this.config.getSnapshot().ui.direction);\r\n\r\n\tasync applyFromConfig(): Promise<void> {\r\n\t\tconst language = this.language();\r\n\t\tconst direction = this.direction();\r\n\r\n\t\tawait this.i18n.load(language);\r\n\t\tthis.i18n.setActiveLanguage(language);\r\n\r\n\t\tthis.document.documentElement.lang = language;\r\n\t\tthis.document.documentElement.dir = direction;\r\n\t}\r\n\r\n\tasync applyLanguage(language: string, direction: 'ltr' | 'rtl' = 'ltr'): Promise<void> {\r\n\t\tawait this.i18n.load(language);\r\n\t\tthis.i18n.setActiveLanguage(language);\r\n\r\n\t\tthis.document.documentElement.lang = language;\r\n\t\tthis.document.documentElement.dir = direction;\r\n\t}\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { LocaleService } from './locale.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class I18nRuntimeInitializerService {\r\n\tprivate readonly localeService = inject(LocaleService);\r\n\r\n\tasync initialize(): Promise<void> {\r\n\t\tawait this.localeService.applyFromConfig();\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport {\r\n\tTranslocoMissingHandler,\r\n\tTranslocoMissingHandlerData\r\n} from '@jsverse/transloco';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CustomMissingHandler implements TranslocoMissingHandler {\r\n\r\n\thandle(key: string, config: TranslocoMissingHandlerData): string {\r\n\t\tconsole.warn(`[Custom Transloco] Missing translation key: ${key} (lang: ${config.activeLang})`);\r\n\t\treturn `{{${key}}}`; // Optional: return the key itself or a fallback format\r\n\t}\r\n}\r\n","import { APP_INITIALIZER, EnvironmentProviders, inject, makeEnvironmentProviders } from '@angular/core';\r\nimport {\r\n\tprovideTransloco,\r\n\ttranslocoConfig,\r\n\tTRANSLOCO_MISSING_HANDLER,\r\n} from '@jsverse/transloco';\r\n\r\nimport { DEFAULT_APP_CONFIG } from '@manticsoftware/angular/runtime/config';\r\nimport { TranslocoHttpLoader } from '../loaders/transloco-http.loader';\r\nimport { I18nRuntimeInitializerService } from '../services/i18n-runtime-initializer.service';\r\nimport { CustomMissingHandler } from './CustomMissingHandler';\r\n\r\nexport function provideI18nAdapter(): EnvironmentProviders {\r\n\treturn makeEnvironmentProviders([\r\n\t\tprovideTransloco({\r\n\t\t\tconfig: translocoConfig({\r\n\t\t\t\tavailableLangs: ['en', 'fr', 'ar'],\r\n\t\t\t\tdefaultLang: DEFAULT_APP_CONFIG.locale.language,\r\n\t\t\t\treRenderOnLangChange: true,\r\n\t\t\t\tprodMode: false,\r\n\t\t\t}),\r\n\t\t\tloader: TranslocoHttpLoader,\r\n\t\t}),\r\n\r\n\t\t// Ensures initial language/document direction are applied during bootstrap.\r\n\t\t{\r\n\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\tmulti: true,\r\n\t\t\tuseFactory: () => {\r\n\t\t\t\tconst initializer = inject(I18nRuntimeInitializerService);\r\n\t\t\t\treturn () => initializer.initialize();\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t{ provide: TRANSLOCO_MISSING_HANDLER, useClass: CustomMissingHandler },\r\n\t]);\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manticsoftware-angular-runtime-i18n-adapter.mjs","sources":["../../../projects/rad-angular/runtime/i18n-adapter/src/lib/loaders/transloco-http.loader.ts","../../../projects/rad-angular/runtime/i18n-adapter/src/lib/services/i18n.service.ts","../../../projects/rad-angular/runtime/i18n-adapter/src/lib/services/locale.service.ts","../../../projects/rad-angular/runtime/i18n-adapter/src/lib/services/i18n-runtime-initializer.service.ts","../../../projects/rad-angular/runtime/i18n-adapter/src/lib/providers/CustomMissingHandler.ts","../../../projects/rad-angular/runtime/i18n-adapter/src/lib/providers/provide-i18n-adapter.ts","../../../projects/rad-angular/runtime/i18n-adapter/manticsoftware-angular-runtime-i18n-adapter.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TRANSLOCO_CONFIG, TRANSLOCO_LOADER, translocoConfig, TranslocoConfig, TranslocoLoader } from '@jsverse/transloco';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TranslocoHttpLoader implements TranslocoLoader {\r\n\tconstructor(private http: HttpClient) { }\r\n\r\n\tgetTranslation(lang: string): Observable<Record<string, unknown>> {\r\n\t\treturn this.http.get<Record<string, unknown>>(`/assets/i18n/${lang}.json`);\r\n\t}\r\n}\r\n\r\nexport const translocoProvider = [\r\n\t{\r\n\t\tprovide: TRANSLOCO_CONFIG,\r\n\t\tuseValue: translocoConfig({\r\n\t\t\tavailableLangs: ['en', 'fr'],\r\n\t\t\tdefaultLang: 'en',\r\n\t\t\tfallbackLang: 'en',\r\n\t\t\treRenderOnLangChange: true,\r\n\t\t\tprodMode: false // Change to `true` in production\r\n\t\t}) as TranslocoConfig\r\n\t},\r\n\t{ provide: TRANSLOCO_LOADER, useClass: TranslocoHttpLoader }\r\n];","import { inject, Injectable } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class I18nService {\r\n\tprivate readonly transloco = inject(TranslocoService);\r\n\r\n\tgetActiveLanguage(): string {\r\n\t\treturn this.transloco.getActiveLang();\r\n\t}\r\n\r\n\tsetActiveLanguage(language: string): void {\r\n\t\tthis.transloco.setActiveLang(language);\r\n\t}\r\n\r\n\tgetAvailableLanguages(): string[] {\r\n\t\treturn this.transloco.getAvailableLangs().map(x => {\r\n\t\t\treturn typeof x === 'string' ? x : x.id;\r\n\t\t});\r\n\t}\r\n\r\n\ttranslate(key: string, params?: Record<string, unknown>): string {\r\n\t\treturn this.transloco.translate(key, params);\r\n\t}\r\n\r\n\tselectTranslate(key: string, params?: Record<string, unknown>) {\r\n\t\treturn this.transloco.selectTranslate(key, params);\r\n\t}\r\n\r\n\tload(language: string): Promise<void> {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.transloco.load(language).subscribe({\r\n\t\t\t\tnext: () => resolve(),\r\n\t\t\t\terror: reject,\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}","import { DOCUMENT } from '@angular/common';\r\nimport { computed, inject, Injectable } from '@angular/core';\r\nimport { ConfigService } from '@manticsoftware/angular/runtime/config';\r\nimport { I18nService } from './i18n.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LocaleService {\r\n\tprivate readonly document = inject(DOCUMENT);\r\n\tprivate readonly config = inject(ConfigService);\r\n\tprivate readonly i18n = inject(I18nService);\r\n\r\n\treadonly language = computed(() => this.config.language());\r\n\treadonly locale = computed(() => this.config.localeCode());\r\n\treadonly direction = computed(() => this.config.getSnapshot().ui.direction);\r\n\r\n\tasync applyFromConfig(): Promise<void> {\r\n\t\tconst language = this.language();\r\n\t\tconst direction = this.direction();\r\n\r\n\t\tawait this.i18n.load(language);\r\n\t\tthis.i18n.setActiveLanguage(language);\r\n\r\n\t\tthis.document.documentElement.lang = language;\r\n\t\tthis.document.documentElement.dir = direction;\r\n\t}\r\n\r\n\tasync applyLanguage(language: string, direction: 'ltr' | 'rtl' = 'ltr'): Promise<void> {\r\n\t\tawait this.i18n.load(language);\r\n\t\tthis.i18n.setActiveLanguage(language);\r\n\r\n\t\tthis.document.documentElement.lang = language;\r\n\t\tthis.document.documentElement.dir = direction;\r\n\t}\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { LocaleService } from './locale.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class I18nRuntimeInitializerService {\r\n\tprivate readonly localeService = inject(LocaleService);\r\n\r\n\tasync initialize(): Promise<void> {\r\n\t\tawait this.localeService.applyFromConfig();\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport {\r\n\tTranslocoMissingHandler,\r\n\tTranslocoMissingHandlerData\r\n} from '@jsverse/transloco';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CustomMissingHandler implements TranslocoMissingHandler {\r\n\r\n\thandle(key: string, config: TranslocoMissingHandlerData): string {\r\n\t\tconsole.warn(`[Custom Transloco] Missing translation key: ${key} (lang: ${config.activeLang})`);\r\n\t\treturn `{{${key}}}`; // Optional: return the key itself or a fallback format\r\n\t}\r\n}\r\n","import { APP_INITIALIZER, EnvironmentProviders, inject, makeEnvironmentProviders } from '@angular/core';\r\nimport {\r\n\tprovideTransloco,\r\n\ttranslocoConfig,\r\n\tTRANSLOCO_MISSING_HANDLER,\r\n} from '@jsverse/transloco';\r\n\r\nimport { DEFAULT_APP_CONFIG } from '@manticsoftware/angular/runtime/config';\r\nimport { TranslocoHttpLoader } from '../loaders/transloco-http.loader';\r\nimport { I18nRuntimeInitializerService } from '../services/i18n-runtime-initializer.service';\r\nimport { CustomMissingHandler } from './CustomMissingHandler';\r\n\r\nexport function provideI18nAdapter(): EnvironmentProviders {\r\n\treturn makeEnvironmentProviders([\r\n\t\tprovideTransloco({\r\n\t\t\tconfig: translocoConfig({\r\n\t\t\t\tavailableLangs: ['en', 'fr', 'ar'],\r\n\t\t\t\tdefaultLang: DEFAULT_APP_CONFIG.locale.language,\r\n\t\t\t\treRenderOnLangChange: true,\r\n\t\t\t\tprodMode: false,\r\n\t\t\t}),\r\n\t\t\tloader: TranslocoHttpLoader,\r\n\t\t}),\r\n\r\n\t\t// Ensures initial language/document direction are applied during bootstrap.\r\n\t\t{\r\n\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\tmulti: true,\r\n\t\t\tuseFactory: () => {\r\n\t\t\t\tconst initializer = inject(I18nRuntimeInitializerService);\r\n\t\t\t\treturn () => initializer.initialize();\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t{ provide: TRANSLOCO_MISSING_HANDLER, useClass: CustomMissingHandler },\r\n\t]);\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manticsoftware-angular-runtime-logger.mjs","sources":["../../../projects/rad-angular/runtime/logger/src/lib/contracts/log-level.type.ts","../../../projects/rad-angular/runtime/logger/src/lib/tokens/logger-options.token.ts","../../../projects/rad-angular/runtime/logger/src/lib/tokens/logger-transports.token.ts","../../../projects/rad-angular/runtime/logger/src/lib/services/logger-context.service.ts","../../../projects/rad-angular/runtime/logger/src/lib/services/logger.service.ts","../../../projects/rad-angular/runtime/logger/src/lib/transports/console-logger.transport.ts","../../../projects/rad-angular/runtime/logger/src/lib/transports/memory-logger.transport.ts","../../../projects/rad-angular/runtime/logger/src/lib/providers/provide-runtime-logger.ts","../../../projects/rad-angular/runtime/logger/src/manticsoftware-angular-runtime-logger.ts"],"sourcesContent":["export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error';\r\n\r\nexport const LOG_LEVEL_PRIORITY: Record<LogLevel, number> = {\r\n\ttrace: 10,\r\n\tdebug: 20,\r\n\tinfo: 30,\r\n\twarn: 40,\r\n\terror: 50,\r\n};","import { InjectionToken } from '@angular/core';\r\nimport { LoggerOptions } from '../contracts/logger-options.model';\r\n\r\nexport const DEFAULT_LOGGER_OPTIONS: LoggerOptions = {\r\n\tminLevel: 'debug',\r\n\tenableConsole: true,\r\n\tenableMemory: true,\r\n\tmaxMemoryEntries: 500,\r\n};\r\n\r\nexport const LOGGER_OPTIONS_TOKEN = new InjectionToken<LoggerOptions>(\r\n\t'LOGGER_OPTIONS_TOKEN',\r\n\t{\r\n\t\tprovidedIn: 'root',\r\n\t\tfactory: () => DEFAULT_LOGGER_OPTIONS,\r\n\t}\r\n);","import { InjectionToken } from '@angular/core';\r\nimport { LoggerTransport } from '../contracts/logger-transport.interface';\r\n\r\nexport const LOGGER_TRANSPORTS_TOKEN = new InjectionToken<LoggerTransport[]>(\r\n\t'LOGGER_TRANSPORTS_TOKEN',\r\n\t{\r\n\t\tprovidedIn: 'root',\r\n\t\tfactory: () => [],\r\n\t}\r\n);","import { Injectable, signal } from '@angular/core';\r\nimport { LoggerContext } from '../contracts/logger-context.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LoggerContextService {\r\n\tprivate readonly _context = signal<LoggerContext>({});\r\n\r\n\treadonly context = this._context.asReadonly();\r\n\r\n\tgetSnapshot(): LoggerContext {\r\n\t\treturn this._context();\r\n\t}\r\n\r\n\tset(context: LoggerContext): void {\r\n\t\tthis._context.set({ ...context });\r\n\t}\r\n\r\n\tpatch(context: Partial<LoggerContext>): void {\r\n\t\tthis._context.update(current => ({\r\n\t\t\t...current,\r\n\t\t\t...context,\r\n\t\t}));\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tthis._context.set({});\r\n\t}\r\n}","import { Inject, Injectable, Optional, inject } from '@angular/core';\r\nimport { LogEntry } from '../contracts/log-entry.model';\r\nimport { LogLevel, LOG_LEVEL_PRIORITY } from '../contracts/log-level.type';\r\nimport { LoggerContext } from '../contracts/logger-context.model';\r\nimport { LoggerTransport } from '../contracts/logger-transport.interface';\r\nimport { LOGGER_OPTIONS_TOKEN } from '../tokens/logger-options.token';\r\nimport { LOGGER_TRANSPORTS_TOKEN } from '../tokens/logger-transports.token';\r\nimport { LoggerContextService } from './logger-context.service';\r\n\r\nexport interface LogWriteOptions {\r\n\tsource?: string;\r\n\tdata?: unknown;\r\n\terror?: unknown;\r\n\tcontext?: Partial<LoggerContext>;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LoggerService {\r\n\tprivate readonly options = inject(LOGGER_OPTIONS_TOKEN);\r\n\tprivate readonly contextService = inject(LoggerContextService);\r\n\r\n\tconstructor(\r\n\t\t@Optional()\r\n\t\t@Inject(LOGGER_TRANSPORTS_TOKEN)\r\n\t\tprivate readonly transports: LoggerTransport[] | null\r\n\t) { }\r\n\r\n\ttrace(message: string, options?: LogWriteOptions): void {\r\n\t\tthis.write('trace', message, options);\r\n\t}\r\n\r\n\tdebug(message: string, options?: LogWriteOptions): void {\r\n\t\tthis.write('debug', message, options);\r\n\t}\r\n\r\n\tinfo(message: string, options?: LogWriteOptions): void {\r\n\t\tthis.write('info', message, options);\r\n\t}\r\n\r\n\twarn(message: string, options?: LogWriteOptions): void {\r\n\t\tthis.write('warn', message, options);\r\n\t}\r\n\r\n\terror(message: string, options?: LogWriteOptions): void {\r\n\t\tthis.write('error', message, options);\r\n\t}\r\n\r\n\tprivate write(level: LogLevel, message: string, options?: LogWriteOptions): void {\r\n\t\tif (!this.shouldLog(level)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst entry: LogEntry = {\r\n\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\tlevel,\r\n\t\t\tmessage,\r\n\t\t\tsource: options?.source,\r\n\t\t\tdata: options?.data,\r\n\t\t\terror: options?.error,\r\n\t\t\tcontext: this.mergeContext(options?.context),\r\n\t\t};\r\n\r\n\t\tfor (const transport of this.transports ?? []) {\r\n\t\t\ttry {\r\n\t\t\t\tconst result = transport.log(entry);\r\n\t\t\t\tif (result instanceof Promise) {\r\n\t\t\t\t\tvoid result.catch((transportError: unknown) => {\r\n\t\t\t\t\t\tconsole.error('Logger transport failed.', transportError);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} catch (transportError) {\r\n\t\t\t\tconsole.error('Logger transport failed.', transportError);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate shouldLog(level: LogLevel): boolean {\r\n\t\treturn LOG_LEVEL_PRIORITY[level] >= LOG_LEVEL_PRIORITY[this.options.minLevel];\r\n\t}\r\n\r\n\tprivate mergeContext(localContext?: Partial<LoggerContext>): LoggerContext {\r\n\t\treturn {\r\n\t\t\t...this.contextService.getSnapshot(),\r\n\t\t\t...(localContext ?? {}),\r\n\t\t};\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { LogEntry } from '../contracts/log-entry.model';\r\nimport { LoggerTransport } from '../contracts/logger-transport.interface';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ConsoleLoggerTransport implements LoggerTransport {\r\n\tlog(entry: LogEntry): void {\r\n\t\tconst prefix = this.buildPrefix(entry);\r\n\t\tconst payload = this.buildPayload(entry);\r\n\r\n\t\tswitch (entry.level) {\r\n\t\t\tcase 'trace':\r\n\t\t\tcase 'debug':\r\n\t\t\t\tconsole.debug(prefix, payload);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'info':\r\n\t\t\t\tconsole.info(prefix, payload);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'warn':\r\n\t\t\t\tconsole.warn(prefix, payload);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'error':\r\n\t\t\t\tconsole.error(prefix, payload);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate buildPrefix(entry: LogEntry): string {\r\n\t\tconst source = entry.source ? ` [${entry.source}]` : '';\r\n\t\treturn `${entry.timestamp} ${entry.level.toUpperCase()}${source} ${entry.message}`;\r\n\t}\r\n\r\n\tprivate buildPayload(entry: LogEntry): Record<string, unknown> {\r\n\t\treturn {\r\n\t\t\tcontext: entry.context,\r\n\t\t\tdata: entry.data,\r\n\t\t\terror: entry.error,\r\n\t\t};\r\n\t}\r\n}","import { Injectable, inject } from '@angular/core';\r\nimport { LogEntry } from '../contracts/log-entry.model';\r\nimport { LoggerTransport } from '../contracts/logger-transport.interface';\r\nimport { LOGGER_OPTIONS_TOKEN } from '../tokens/logger-options.token';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MemoryLoggerTransport implements LoggerTransport {\r\n\tprivate readonly options = inject(LOGGER_OPTIONS_TOKEN);\r\n\tprivate readonly entries: LogEntry[] = [];\r\n\r\n\tlog(entry: LogEntry): void {\r\n\t\tthis.entries.push(entry);\r\n\r\n\t\tconst maxEntries = this.options.maxMemoryEntries;\r\n\t\tif (this.entries.length > maxEntries) {\r\n\t\t\tthis.entries.splice(0, this.entries.length - maxEntries);\r\n\t\t}\r\n\t}\r\n\r\n\tgetEntries(): LogEntry[] {\r\n\t\treturn [...this.entries];\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tthis.entries.length = 0;\r\n\t}\r\n}","import {\r\n\tEnvironmentProviders,\r\n\tProvider,\r\n\tmakeEnvironmentProviders,\r\n} from '@angular/core';\r\nimport { LoggerOptions } from '../contracts/logger-options.model';\r\nimport { LoggerTransport } from '../contracts/logger-transport.interface';\r\nimport { ConsoleLoggerTransport } from '../transports/console-logger.transport';\r\nimport { MemoryLoggerTransport } from '../transports/memory-logger.transport';\r\nimport { DEFAULT_LOGGER_OPTIONS, LOGGER_OPTIONS_TOKEN } from '../tokens/logger-options.token';\r\nimport { LOGGER_TRANSPORTS_TOKEN } from '../tokens/logger-transports.token';\r\n\r\nexport function provideRuntimeLogger(\r\n\toptions?: Partial<LoggerOptions>\r\n): EnvironmentProviders {\r\n\tconst resolvedOptions: LoggerOptions = {\r\n\t\t...DEFAULT_LOGGER_OPTIONS,\r\n\t\t...(options ?? {}),\r\n\t};\r\n\r\n\tconst transportProviders: Provider[] = [];\r\n\r\n\tif (resolvedOptions.enableConsole) {\r\n\t\ttransportProviders.push(ConsoleLoggerTransport);\r\n\t\ttransportProviders.push({\r\n\t\t\tprovide: LOGGER_TRANSPORTS_TOKEN,\r\n\t\t\tmulti: true,\r\n\t\t\tuseExisting: ConsoleLoggerTransport,\r\n\t\t});\r\n\t}\r\n\r\n\tif (resolvedOptions.enableMemory) {\r\n\t\ttransportProviders.push(MemoryLoggerTransport);\r\n\t\ttransportProviders.push({\r\n\t\t\tprovide: LOGGER_TRANSPORTS_TOKEN,\r\n\t\t\tmulti: true,\r\n\t\t\tuseExisting: MemoryLoggerTransport,\r\n\t\t});\r\n\t}\r\n\r\n\treturn makeEnvironmentProviders([\r\n\t\t{\r\n\t\t\tprovide: LOGGER_OPTIONS_TOKEN,\r\n\t\t\tuseValue: resolvedOptions,\r\n\t\t},\r\n\t\t...transportProviders,\r\n\t]);\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAEO,MAAM,kBAAkB,GAA6B;AAC3D,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,KAAK,EAAE,EAAE;;;ACJH,MAAM,sBAAsB,GAAkB;AACpD,IAAA,QAAQ,EAAE,OAAO;AACjB,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,gBAAgB,EAAE,GAAG;;MAGT,oBAAoB,GAAG,IAAI,cAAc,CACrD,sBAAsB,EACtB;AACC,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,sBAAsB;AACrC,CAAA;;MCZW,uBAAuB,GAAG,IAAI,cAAc,CACxD,yBAAyB,EACzB;AACC,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,EAAE;AACjB,CAAA;;MCJW,oBAAoB,CAAA;AACf,IAAA,QAAQ,GAAG,MAAM,CAAgB,EAAE,+EAAC;AAE5C,IAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;IAE7C,WAAW,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;IACvB;AAEA,IAAA,GAAG,CAAC,OAAsB,EAAA;QACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IAClC;AAEA,IAAA,KAAK,CAAC,OAA+B,EAAA;QACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,KAAK;AAChC,YAAA,GAAG,OAAO;AACV,YAAA,GAAG,OAAO;AACV,SAAA,CAAC,CAAC;IACJ;IAEA,KAAK,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IACtB;uGAtBY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA;;2FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCcrB,aAAa,CAAA;AAOP,IAAA,UAAA;AAND,IAAA,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACtC,IAAA,cAAc,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAE9D,IAAA,WAAA,CAGkB,UAAoC,EAAA;QAApC,IAAA,CAAA,UAAU,GAAV,UAAU;IACxB;IAEJ,KAAK,CAAC,OAAe,EAAE,OAAyB,EAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;IACtC;IAEA,KAAK,CAAC,OAAe,EAAE,OAAyB,EAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;IACtC;IAEA,IAAI,CAAC,OAAe,EAAE,OAAyB,EAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;IACrC;IAEA,IAAI,CAAC,OAAe,EAAE,OAAyB,EAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;IACrC;IAEA,KAAK,CAAC,OAAe,EAAE,OAAyB,EAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;IACtC;AAEQ,IAAA,KAAK,CAAC,KAAe,EAAE,OAAe,EAAE,OAAyB,EAAA;QACxE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC3B;QACD;AAEA,QAAA,MAAM,KAAK,GAAa;AACvB,YAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK;YACL,OAAO;YACP,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,IAAI,EAAE,OAAO,EAAE,IAAI;YACnB,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC;SAC5C;QAED,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE;AAC9C,YAAA,IAAI;gBACH,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC,gBAAA,IAAI,MAAM,YAAY,OAAO,EAAE;AAC9B,oBAAA,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,cAAuB,KAAI;AAC7C,wBAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,cAAc,CAAC;AAC1D,oBAAA,CAAC,CAAC;gBACH;YACD;YAAE,OAAO,cAAc,EAAE;AACxB,gBAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,cAAc,CAAC;YAC1D;QACD;IACD;AAEQ,IAAA,SAAS,CAAC,KAAe,EAAA;AAChC,QAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC9E;AAEQ,IAAA,YAAY,CAAC,YAAqC,EAAA;QACzD,OAAO;AACN,YAAA,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AACpC,YAAA,IAAI,YAAY,IAAI,EAAE,CAAC;SACvB;IACF;AApEY,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,kBAMhB,uBAAuB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AANpB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA;;2FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAM/B;;0BACA,MAAM;2BAAC,uBAAuB;;;MClBpB,sBAAsB,CAAA;AAClC,IAAA,GAAG,CAAC,KAAe,EAAA;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAExC,QAAA,QAAQ,KAAK,CAAC,KAAK;AAClB,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,OAAO;AACX,gBAAA,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC;gBAC9B;AAED,YAAA,KAAK,MAAM;AACV,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;gBAC7B;AAED,YAAA,KAAK,MAAM;AACV,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;gBAC7B;AAED,YAAA,KAAK,OAAO;AACX,gBAAA,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC;gBAC9B;;IAEH;AAEQ,IAAA,WAAW,CAAC,KAAe,EAAA;AAClC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAA,EAAA,EAAK,KAAK,CAAC,MAAM,CAAA,CAAA,CAAG,GAAG,EAAE;AACvD,QAAA,OAAO,GAAG,KAAK,CAAC,SAAS,CAAA,CAAA,EAAI,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,MAAM,CAAA,CAAA,EAAI,KAAK,CAAC,OAAO,EAAE;IACnF;AAEQ,IAAA,YAAY,CAAC,KAAe,EAAA;QACnC,OAAO;YACN,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;SAClB;IACF;uGApCY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA;;2FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCErB,qBAAqB,CAAA;AAChB,IAAA,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC;IACtC,OAAO,GAAe,EAAE;AAEzC,IAAA,GAAG,CAAC,KAAe,EAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAExB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB;QAChD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,EAAE;AACrC,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;QACzD;IACD;IAEA,UAAU,GAAA;AACT,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;IACzB;IAEA,KAAK,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;IACxB;uGAnBY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAArB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cADR,MAAM,EAAA,CAAA;;2FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACO5B,SAAU,oBAAoB,CACnC,OAAgC,EAAA;AAEhC,IAAA,MAAM,eAAe,GAAkB;AACtC,QAAA,GAAG,sBAAsB;AACzB,QAAA,IAAI,OAAO,IAAI,EAAE,CAAC;KAClB;IAED,MAAM,kBAAkB,GAAe,EAAE;AAEzC,IAAA,IAAI,eAAe,CAAC,aAAa,EAAE;AAClC,QAAA,kBAAkB,CAAC,IAAI,CAAC,sBAAsB,CAAC;QAC/C,kBAAkB,CAAC,IAAI,CAAC;AACvB,YAAA,OAAO,EAAE,uBAAuB;AAChC,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,WAAW,EAAE,sBAAsB;AACnC,SAAA,CAAC;IACH;AAEA,IAAA,IAAI,eAAe,CAAC,YAAY,EAAE;AACjC,QAAA,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,CAAC;QAC9C,kBAAkB,CAAC,IAAI,CAAC;AACvB,YAAA,OAAO,EAAE,uBAAuB;AAChC,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,WAAW,EAAE,qBAAqB;AAClC,SAAA,CAAC;IACH;AAEA,IAAA,OAAO,wBAAwB,CAAC;AAC/B,QAAA;AACC,YAAA,OAAO,EAAE,oBAAoB;AAC7B,YAAA,QAAQ,EAAE,eAAe;AACzB,SAAA;AACD,QAAA,GAAG,kBAAkB;AACrB,KAAA,CAAC;AACH;;AC/CA;;AAEG;;;;"}
1
+ {"version":3,"file":"manticsoftware-angular-runtime-logger.mjs","sources":["../../../projects/rad-angular/runtime/logger/src/lib/contracts/log-level.type.ts","../../../projects/rad-angular/runtime/logger/src/lib/tokens/logger-options.token.ts","../../../projects/rad-angular/runtime/logger/src/lib/tokens/logger-transports.token.ts","../../../projects/rad-angular/runtime/logger/src/lib/services/logger-context.service.ts","../../../projects/rad-angular/runtime/logger/src/lib/services/logger.service.ts","../../../projects/rad-angular/runtime/logger/src/lib/transports/console-logger.transport.ts","../../../projects/rad-angular/runtime/logger/src/lib/transports/memory-logger.transport.ts","../../../projects/rad-angular/runtime/logger/src/lib/providers/provide-runtime-logger.ts","../../../projects/rad-angular/runtime/logger/manticsoftware-angular-runtime-logger.ts"],"sourcesContent":["export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error';\r\n\r\nexport const LOG_LEVEL_PRIORITY: Record<LogLevel, number> = {\r\n\ttrace: 10,\r\n\tdebug: 20,\r\n\tinfo: 30,\r\n\twarn: 40,\r\n\terror: 50,\r\n};","import { InjectionToken } from '@angular/core';\r\nimport { LoggerOptions } from '../contracts/logger-options.model';\r\n\r\nexport const DEFAULT_LOGGER_OPTIONS: LoggerOptions = {\r\n\tminLevel: 'debug',\r\n\tenableConsole: true,\r\n\tenableMemory: true,\r\n\tmaxMemoryEntries: 500,\r\n};\r\n\r\nexport const LOGGER_OPTIONS_TOKEN = new InjectionToken<LoggerOptions>(\r\n\t'LOGGER_OPTIONS_TOKEN',\r\n\t{\r\n\t\tprovidedIn: 'root',\r\n\t\tfactory: () => DEFAULT_LOGGER_OPTIONS,\r\n\t}\r\n);","import { InjectionToken } from '@angular/core';\r\nimport { LoggerTransport } from '../contracts/logger-transport.interface';\r\n\r\nexport const LOGGER_TRANSPORTS_TOKEN = new InjectionToken<LoggerTransport[]>(\r\n\t'LOGGER_TRANSPORTS_TOKEN',\r\n\t{\r\n\t\tprovidedIn: 'root',\r\n\t\tfactory: () => [],\r\n\t}\r\n);","import { Injectable, signal } from '@angular/core';\r\nimport { LoggerContext } from '../contracts/logger-context.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LoggerContextService {\r\n\tprivate readonly _context = signal<LoggerContext>({});\r\n\r\n\treadonly context = this._context.asReadonly();\r\n\r\n\tgetSnapshot(): LoggerContext {\r\n\t\treturn this._context();\r\n\t}\r\n\r\n\tset(context: LoggerContext): void {\r\n\t\tthis._context.set({ ...context });\r\n\t}\r\n\r\n\tpatch(context: Partial<LoggerContext>): void {\r\n\t\tthis._context.update(current => ({\r\n\t\t\t...current,\r\n\t\t\t...context,\r\n\t\t}));\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tthis._context.set({});\r\n\t}\r\n}","import { Inject, Injectable, Optional, inject } from '@angular/core';\r\nimport { LogEntry } from '../contracts/log-entry.model';\r\nimport { LogLevel, LOG_LEVEL_PRIORITY } from '../contracts/log-level.type';\r\nimport { LoggerContext } from '../contracts/logger-context.model';\r\nimport { LoggerTransport } from '../contracts/logger-transport.interface';\r\nimport { LOGGER_OPTIONS_TOKEN } from '../tokens/logger-options.token';\r\nimport { LOGGER_TRANSPORTS_TOKEN } from '../tokens/logger-transports.token';\r\nimport { LoggerContextService } from './logger-context.service';\r\n\r\nexport interface LogWriteOptions {\r\n\tsource?: string;\r\n\tdata?: unknown;\r\n\terror?: unknown;\r\n\tcontext?: Partial<LoggerContext>;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LoggerService {\r\n\tprivate readonly options = inject(LOGGER_OPTIONS_TOKEN);\r\n\tprivate readonly contextService = inject(LoggerContextService);\r\n\r\n\tconstructor(\r\n\t\t@Optional()\r\n\t\t@Inject(LOGGER_TRANSPORTS_TOKEN)\r\n\t\tprivate readonly transports: LoggerTransport[] | null\r\n\t) { }\r\n\r\n\ttrace(message: string, options?: LogWriteOptions): void {\r\n\t\tthis.write('trace', message, options);\r\n\t}\r\n\r\n\tdebug(message: string, options?: LogWriteOptions): void {\r\n\t\tthis.write('debug', message, options);\r\n\t}\r\n\r\n\tinfo(message: string, options?: LogWriteOptions): void {\r\n\t\tthis.write('info', message, options);\r\n\t}\r\n\r\n\twarn(message: string, options?: LogWriteOptions): void {\r\n\t\tthis.write('warn', message, options);\r\n\t}\r\n\r\n\terror(message: string, options?: LogWriteOptions): void {\r\n\t\tthis.write('error', message, options);\r\n\t}\r\n\r\n\tprivate write(level: LogLevel, message: string, options?: LogWriteOptions): void {\r\n\t\tif (!this.shouldLog(level)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst entry: LogEntry = {\r\n\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\tlevel,\r\n\t\t\tmessage,\r\n\t\t\tsource: options?.source,\r\n\t\t\tdata: options?.data,\r\n\t\t\terror: options?.error,\r\n\t\t\tcontext: this.mergeContext(options?.context),\r\n\t\t};\r\n\r\n\t\tfor (const transport of this.transports ?? []) {\r\n\t\t\ttry {\r\n\t\t\t\tconst result = transport.log(entry);\r\n\t\t\t\tif (result instanceof Promise) {\r\n\t\t\t\t\tvoid result.catch((transportError: unknown) => {\r\n\t\t\t\t\t\tconsole.error('Logger transport failed.', transportError);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} catch (transportError) {\r\n\t\t\t\tconsole.error('Logger transport failed.', transportError);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate shouldLog(level: LogLevel): boolean {\r\n\t\treturn LOG_LEVEL_PRIORITY[level] >= LOG_LEVEL_PRIORITY[this.options.minLevel];\r\n\t}\r\n\r\n\tprivate mergeContext(localContext?: Partial<LoggerContext>): LoggerContext {\r\n\t\treturn {\r\n\t\t\t...this.contextService.getSnapshot(),\r\n\t\t\t...(localContext ?? {}),\r\n\t\t};\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { LogEntry } from '../contracts/log-entry.model';\r\nimport { LoggerTransport } from '../contracts/logger-transport.interface';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ConsoleLoggerTransport implements LoggerTransport {\r\n\tlog(entry: LogEntry): void {\r\n\t\tconst prefix = this.buildPrefix(entry);\r\n\t\tconst payload = this.buildPayload(entry);\r\n\r\n\t\tswitch (entry.level) {\r\n\t\t\tcase 'trace':\r\n\t\t\tcase 'debug':\r\n\t\t\t\tconsole.debug(prefix, payload);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'info':\r\n\t\t\t\tconsole.info(prefix, payload);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'warn':\r\n\t\t\t\tconsole.warn(prefix, payload);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'error':\r\n\t\t\t\tconsole.error(prefix, payload);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate buildPrefix(entry: LogEntry): string {\r\n\t\tconst source = entry.source ? ` [${entry.source}]` : '';\r\n\t\treturn `${entry.timestamp} ${entry.level.toUpperCase()}${source} ${entry.message}`;\r\n\t}\r\n\r\n\tprivate buildPayload(entry: LogEntry): Record<string, unknown> {\r\n\t\treturn {\r\n\t\t\tcontext: entry.context,\r\n\t\t\tdata: entry.data,\r\n\t\t\terror: entry.error,\r\n\t\t};\r\n\t}\r\n}","import { Injectable, inject } from '@angular/core';\r\nimport { LogEntry } from '../contracts/log-entry.model';\r\nimport { LoggerTransport } from '../contracts/logger-transport.interface';\r\nimport { LOGGER_OPTIONS_TOKEN } from '../tokens/logger-options.token';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MemoryLoggerTransport implements LoggerTransport {\r\n\tprivate readonly options = inject(LOGGER_OPTIONS_TOKEN);\r\n\tprivate readonly entries: LogEntry[] = [];\r\n\r\n\tlog(entry: LogEntry): void {\r\n\t\tthis.entries.push(entry);\r\n\r\n\t\tconst maxEntries = this.options.maxMemoryEntries;\r\n\t\tif (this.entries.length > maxEntries) {\r\n\t\t\tthis.entries.splice(0, this.entries.length - maxEntries);\r\n\t\t}\r\n\t}\r\n\r\n\tgetEntries(): LogEntry[] {\r\n\t\treturn [...this.entries];\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tthis.entries.length = 0;\r\n\t}\r\n}","import {\r\n\tEnvironmentProviders,\r\n\tProvider,\r\n\tmakeEnvironmentProviders,\r\n} from '@angular/core';\r\nimport { LoggerOptions } from '../contracts/logger-options.model';\r\nimport { LoggerTransport } from '../contracts/logger-transport.interface';\r\nimport { ConsoleLoggerTransport } from '../transports/console-logger.transport';\r\nimport { MemoryLoggerTransport } from '../transports/memory-logger.transport';\r\nimport { DEFAULT_LOGGER_OPTIONS, LOGGER_OPTIONS_TOKEN } from '../tokens/logger-options.token';\r\nimport { LOGGER_TRANSPORTS_TOKEN } from '../tokens/logger-transports.token';\r\n\r\nexport function provideRuntimeLogger(\r\n\toptions?: Partial<LoggerOptions>\r\n): EnvironmentProviders {\r\n\tconst resolvedOptions: LoggerOptions = {\r\n\t\t...DEFAULT_LOGGER_OPTIONS,\r\n\t\t...(options ?? {}),\r\n\t};\r\n\r\n\tconst transportProviders: Provider[] = [];\r\n\r\n\tif (resolvedOptions.enableConsole) {\r\n\t\ttransportProviders.push(ConsoleLoggerTransport);\r\n\t\ttransportProviders.push({\r\n\t\t\tprovide: LOGGER_TRANSPORTS_TOKEN,\r\n\t\t\tmulti: true,\r\n\t\t\tuseExisting: ConsoleLoggerTransport,\r\n\t\t});\r\n\t}\r\n\r\n\tif (resolvedOptions.enableMemory) {\r\n\t\ttransportProviders.push(MemoryLoggerTransport);\r\n\t\ttransportProviders.push({\r\n\t\t\tprovide: LOGGER_TRANSPORTS_TOKEN,\r\n\t\t\tmulti: true,\r\n\t\t\tuseExisting: MemoryLoggerTransport,\r\n\t\t});\r\n\t}\r\n\r\n\treturn makeEnvironmentProviders([\r\n\t\t{\r\n\t\t\tprovide: LOGGER_OPTIONS_TOKEN,\r\n\t\t\tuseValue: resolvedOptions,\r\n\t\t},\r\n\t\t...transportProviders,\r\n\t]);\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manticsoftware-angular-runtime-realtime.mjs","sources":["../../../projects/rad-angular/runtime/realtime/src/lib/services/realtime-event-bus.service.ts","../../../projects/rad-angular/runtime/realtime/src/lib/transports/signalr-realtime.transport.ts","../../../projects/rad-angular/runtime/realtime/src/lib/services/realtime-connection.service.ts","../../../projects/rad-angular/runtime/realtime/src/lib/services/realtime-subscription.service.ts","../../../projects/rad-angular/runtime/realtime/src/lib/providers/provide-runtime-realtime.ts","../../../projects/rad-angular/runtime/realtime/src/manticsoftware-angular-runtime-realtime.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Observable, Subject, filter, map } from 'rxjs';\r\nimport { RealtimeEvent } from '../contracts/realtime-event.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RealtimeEventBusService {\r\n\tprivate readonly eventsSubject = new Subject<RealtimeEvent>();\r\n\r\n\treadonly events$ = this.eventsSubject.asObservable();\r\n\r\n\tpublish<TPayload = unknown>(event: RealtimeEvent<TPayload>): void {\r\n\t\tthis.eventsSubject.next(event);\r\n\t}\r\n\r\n\ton<TPayload = unknown>(eventType: string): Observable<RealtimeEvent<TPayload>> {\r\n\t\treturn this.events$.pipe(\r\n\t\t\tfilter(event => event.type === eventType),\r\n\t\t\tmap(event => event as RealtimeEvent<TPayload>)\r\n\t\t);\r\n\t}\r\n\r\n\tonPayload<TPayload = unknown>(eventType: string): Observable<TPayload | undefined> {\r\n\t\treturn this.on<TPayload>(eventType).pipe(map(event => event.payload));\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport {\r\n\tHubConnection,\r\n\tHubConnectionBuilder,\r\n\tHubConnectionState,\r\n\tHttpTransportType,\r\n\tLogLevel,\r\n} from '@microsoft/signalr';\r\n\r\nexport interface SignalrRealtimeTransportOptions {\r\n\thubUrl: string;\r\n\taccessTokenFactory?: () => string | Promise<string>;\r\n\tautoReconnect?: boolean;\r\n\treconnectDelaysMs?: number[];\r\n\tsignalrLogLevel?: LogLevel;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SignalrRealtimeTransport {\r\n\tprivate connection: HubConnection | null = null;\r\n\r\n\tget state(): HubConnectionState {\r\n\t\treturn this.connection?.state ?? HubConnectionState.Disconnected;\r\n\t}\r\n\r\n\tget isConnected(): boolean {\r\n\t\treturn this.state === HubConnectionState.Connected;\r\n\t}\r\n\r\n\tbuild(options: SignalrRealtimeTransportOptions): HubConnection {\r\n\t\tconst builder = new HubConnectionBuilder()\r\n\t\t\t.withUrl(options.hubUrl, {\r\n\t\t\t\taccessTokenFactory: options.accessTokenFactory,\r\n\t\t\t\ttransport:\r\n\t\t\t\t\tHttpTransportType.WebSockets |\r\n\t\t\t\t\tHttpTransportType.ServerSentEvents |\r\n\t\t\t\t\tHttpTransportType.LongPolling,\r\n\t\t\t})\r\n\t\t\t.configureLogging(options.signalrLogLevel ?? LogLevel.Warning);\r\n\r\n\t\tif (options.autoReconnect !== false) {\r\n\t\t\tbuilder.withAutomaticReconnect(\r\n\t\t\t\toptions.reconnectDelaysMs ?? [0, 2000, 5000, 10000]\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.connection = builder.build();\r\n\t\treturn this.connection;\r\n\t}\r\n\r\n\tgetConnection(): HubConnection {\r\n\t\tif (!this.connection) {\r\n\t\t\tthrow new Error('SignalR connection has not been built.');\r\n\t\t}\r\n\r\n\t\treturn this.connection;\r\n\t}\r\n\r\n\tasync start(): Promise<void> {\r\n\t\tconst connection = this.getConnection();\r\n\r\n\t\tif (\r\n\t\t\tconnection.state === HubConnectionState.Connected ||\r\n\t\t\tconnection.state === HubConnectionState.Connecting ||\r\n\t\t\tconnection.state === HubConnectionState.Reconnecting\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait connection.start();\r\n\t}\r\n\r\n\tasync stop(): Promise<void> {\r\n\t\tif (!this.connection) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.connection.state === HubConnectionState.Disconnected) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.connection.stop();\r\n\t}\r\n\r\n\ton<TPayload = unknown>(\r\n\t\teventName: string,\r\n\t\thandler: (payload: TPayload) => void\r\n\t): void {\r\n\t\tconst connection = this.getConnection();\r\n\r\n\t\tconnection.off(eventName);\r\n\t\tconnection.on(eventName, handler);\r\n\t}\r\n\r\n\toff(eventName: string): void {\r\n\t\tconst connection = this.getConnection();\r\n\t\tconnection.off(eventName);\r\n\t}\r\n\r\n\tasync invoke<TResponse = unknown>(\r\n\t\tmethodName: string,\r\n\t\t...args: unknown[]\r\n\t): Promise<TResponse> {\r\n\t\tconst connection = this.getConnection();\r\n\r\n\t\tif (connection.state !== HubConnectionState.Connected) {\r\n\t\t\tthrow new Error('SignalR connection is not connected.');\r\n\t\t}\r\n\r\n\t\treturn connection.invoke<TResponse>(methodName, ...args);\r\n\t}\r\n\r\n\tasync send(methodName: string, ...args: unknown[]): Promise<void> {\r\n\t\tconst connection = this.getConnection();\r\n\r\n\t\tif (connection.state !== HubConnectionState.Connected) {\r\n\t\t\tthrow new Error('SignalR connection is not connected.');\r\n\t\t}\r\n\r\n\t\tawait connection.send(methodName, ...args);\r\n\t}\r\n\r\n\tonReconnecting(handler: (error?: Error) => void): void {\r\n\t\tconst connection = this.getConnection();\r\n\t\tconnection.onreconnecting(handler);\r\n\t}\r\n\r\n\tonReconnected(handler: (connectionId?: string) => void): void {\r\n\t\tconst connection = this.getConnection();\r\n\t\tconnection.onreconnected(handler);\r\n\t}\r\n\r\n\tonClose(handler: (error?: Error) => void): void {\r\n\t\tconst connection = this.getConnection();\r\n\t\tconnection.onclose(handler);\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tthis.connection = null;\r\n\t}\r\n}","import { Injectable, computed, inject, signal } from '@angular/core';\r\nimport { HubConnectionState } from '@microsoft/signalr';\r\n\r\nimport { LoggerService } from '@manticsoftware/angular/runtime/logger';\r\n\r\nimport { RealtimeConnectOptions } from '../contracts/realtime-connect-options.model';\r\nimport { RealtimeConnectionState } from '../contracts/realtime-connection-state.type';\r\nimport { RealtimeEvent } from '../contracts/realtime-event.model';\r\nimport { RealtimeEventBusService } from './realtime-event-bus.service';\r\nimport { SignalrRealtimeTransport } from '../transports/signalr-realtime.transport';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RealtimeConnectionService {\r\n\tprivate readonly logger = inject(LoggerService);\r\n\tprivate readonly eventBus = inject(RealtimeEventBusService);\r\n\tprivate readonly transport = inject(SignalrRealtimeTransport);\r\n\r\n\tprivate readonly registeredServerEvents = new Set<string>();\r\n\tprivate connectOptions: RealtimeConnectOptions | null = null;\r\n\r\n\tprivate readonly _state = signal<RealtimeConnectionState>('disconnected');\r\n\treadonly state = this._state.asReadonly();\r\n\r\n\treadonly isConnected = computed(() => this._state() === 'connected');\r\n\r\n\tasync connect(options: RealtimeConnectOptions): Promise<void> {\r\n\t\tthis.connectOptions = options;\r\n\r\n\t\tif (\r\n\t\t\tthis.transport.state === HubConnectionState.Connected ||\r\n\t\t\tthis.transport.state === HubConnectionState.Connecting ||\r\n\t\t\tthis.transport.state === HubConnectionState.Reconnecting\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._state.set('connecting');\r\n\r\n\t\tthis.transport.build({\r\n\t\t\thubUrl: options.hubUrl,\r\n\t\t\taccessTokenFactory: options.accessTokenFactory,\r\n\t\t\tautoReconnect: options.autoReconnect,\r\n\t\t\treconnectDelaysMs: options.reconnectDelaysMs,\r\n\t\t});\r\n\r\n\t\tthis.registerLifecycleHandlers();\r\n\r\n\t\ttry {\r\n\t\t\tawait this.transport.start();\r\n\t\t\tthis._state.set('connected');\r\n\r\n\t\t\tthis.logger.info('Realtime connection established.', {\r\n\t\t\t\tsource: 'RealtimeConnection',\r\n\t\t\t\tdata: { hubUrl: options.hubUrl },\r\n\t\t\t});\r\n\r\n\t\t\tthis.reRegisterServerEvents();\r\n\t\t} catch (error) {\r\n\t\t\tthis._state.set('error');\r\n\r\n\t\t\tthis.logger.error('Realtime connection failed.', {\r\n\t\t\t\tsource: 'RealtimeConnection',\r\n\t\t\t\terror,\r\n\t\t\t\tdata: { hubUrl: options.hubUrl },\r\n\t\t\t});\r\n\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\r\n\tasync disconnect(): Promise<void> {\r\n\t\ttry {\r\n\t\t\tawait this.transport.stop();\r\n\t\t} finally {\r\n\t\t\tthis._state.set('disconnected');\r\n\t\t\tthis.transport.clear();\r\n\r\n\t\t\tthis.logger.info('Realtime connection stopped.', {\r\n\t\t\t\tsource: 'RealtimeConnection',\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tregisterServerEvent<TPayload = unknown>(eventName: string): void {\r\n\t\tthis.registeredServerEvents.add(eventName);\r\n\r\n\t\tif (this.transport.state === HubConnectionState.Disconnected) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.transport.on<TPayload>(eventName, (payload: TPayload) => {\r\n\t\t\tconst event: RealtimeEvent<TPayload> = {\r\n\t\t\t\ttype: eventName,\r\n\t\t\t\tpayload,\r\n\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t};\r\n\r\n\t\t\tif (this.connectOptions?.logIncomingEvents) {\r\n\t\t\t\tthis.logger.debug('Realtime event received.', {\r\n\t\t\t\t\tsource: 'RealtimeConnection',\r\n\t\t\t\t\tdata: { eventName, payload },\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.eventBus.publish(event);\r\n\t\t});\r\n\t}\r\n\r\n\tunregisterServerEvent(eventName: string): void {\r\n\t\tthis.registeredServerEvents.delete(eventName);\r\n\r\n\t\tif (this.transport.state !== HubConnectionState.Disconnected) {\r\n\t\t\tthis.transport.off(eventName);\r\n\t\t}\r\n\t}\r\n\r\n\tasync invoke<TResponse = unknown>(\r\n\t\tmethodName: string,\r\n\t\t...args: unknown[]\r\n\t): Promise<TResponse> {\r\n\t\tthis.logger.debug('Realtime invoke started.', {\r\n\t\t\tsource: 'RealtimeConnection',\r\n\t\t\tdata: { methodName, args },\r\n\t\t});\r\n\r\n\t\treturn this.transport.invoke<TResponse>(methodName, ...args);\r\n\t}\r\n\r\n\tasync send(methodName: string, ...args: unknown[]): Promise<void> {\r\n\t\tthis.logger.debug('Realtime send started.', {\r\n\t\t\tsource: 'RealtimeConnection',\r\n\t\t\tdata: { methodName, args },\r\n\t\t});\r\n\r\n\t\tawait this.transport.send(methodName, ...args);\r\n\t}\r\n\r\n\tprivate registerLifecycleHandlers(): void {\r\n\t\tthis.transport.onReconnecting(error => {\r\n\t\t\tthis._state.set('reconnecting');\r\n\r\n\t\t\tthis.logger.warn('Realtime reconnecting.', {\r\n\t\t\t\tsource: 'RealtimeConnection',\r\n\t\t\t\terror,\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.transport.onReconnected(connectionId => {\r\n\t\t\tthis._state.set('connected');\r\n\r\n\t\t\tthis.logger.info('Realtime reconnected.', {\r\n\t\t\t\tsource: 'RealtimeConnection',\r\n\t\t\t\tdata: { connectionId },\r\n\t\t\t});\r\n\r\n\t\t\tthis.reRegisterServerEvents();\r\n\t\t});\r\n\r\n\t\tthis.transport.onClose(error => {\r\n\t\t\tthis._state.set('disconnected');\r\n\r\n\t\t\tthis.logger.warn('Realtime connection closed.', {\r\n\t\t\t\tsource: 'RealtimeConnection',\r\n\t\t\t\terror,\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate reRegisterServerEvents(): void {\r\n\t\tfor (const eventName of this.registeredServerEvents) {\r\n\t\t\tthis.registerServerEvent(eventName);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { RealtimeEvent } from '../contracts/realtime-event.model';\r\nimport { RealtimeEventBusService } from './realtime-event-bus.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RealtimeSubscriptionService {\r\n\tprivate readonly eventBus = inject(RealtimeEventBusService);\r\n\r\n\ton<TPayload = unknown>(eventType: string): Observable<RealtimeEvent<TPayload>> {\r\n\t\treturn this.eventBus.on<TPayload>(eventType);\r\n\t}\r\n\r\n\tonPayload<TPayload = unknown>(eventType: string): Observable<TPayload | undefined> {\r\n\t\treturn this.eventBus.onPayload<TPayload>(eventType);\r\n\t}\r\n}","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\r\n\r\nexport function provideRuntimeRealtime(): EnvironmentProviders {\r\n\treturn makeEnvironmentProviders([]);\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manticsoftware-angular-runtime-realtime.mjs","sources":["../../../projects/rad-angular/runtime/realtime/src/lib/services/realtime-event-bus.service.ts","../../../projects/rad-angular/runtime/realtime/src/lib/transports/signalr-realtime.transport.ts","../../../projects/rad-angular/runtime/realtime/src/lib/services/realtime-connection.service.ts","../../../projects/rad-angular/runtime/realtime/src/lib/services/realtime-subscription.service.ts","../../../projects/rad-angular/runtime/realtime/src/lib/providers/provide-runtime-realtime.ts","../../../projects/rad-angular/runtime/realtime/manticsoftware-angular-runtime-realtime.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Observable, Subject, filter, map } from 'rxjs';\r\nimport { RealtimeEvent } from '../contracts/realtime-event.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RealtimeEventBusService {\r\n\tprivate readonly eventsSubject = new Subject<RealtimeEvent>();\r\n\r\n\treadonly events$ = this.eventsSubject.asObservable();\r\n\r\n\tpublish<TPayload = unknown>(event: RealtimeEvent<TPayload>): void {\r\n\t\tthis.eventsSubject.next(event);\r\n\t}\r\n\r\n\ton<TPayload = unknown>(eventType: string): Observable<RealtimeEvent<TPayload>> {\r\n\t\treturn this.events$.pipe(\r\n\t\t\tfilter(event => event.type === eventType),\r\n\t\t\tmap(event => event as RealtimeEvent<TPayload>)\r\n\t\t);\r\n\t}\r\n\r\n\tonPayload<TPayload = unknown>(eventType: string): Observable<TPayload | undefined> {\r\n\t\treturn this.on<TPayload>(eventType).pipe(map(event => event.payload));\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport {\r\n\tHubConnection,\r\n\tHubConnectionBuilder,\r\n\tHubConnectionState,\r\n\tHttpTransportType,\r\n\tLogLevel,\r\n} from '@microsoft/signalr';\r\n\r\nexport interface SignalrRealtimeTransportOptions {\r\n\thubUrl: string;\r\n\taccessTokenFactory?: () => string | Promise<string>;\r\n\tautoReconnect?: boolean;\r\n\treconnectDelaysMs?: number[];\r\n\tsignalrLogLevel?: LogLevel;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SignalrRealtimeTransport {\r\n\tprivate connection: HubConnection | null = null;\r\n\r\n\tget state(): HubConnectionState {\r\n\t\treturn this.connection?.state ?? HubConnectionState.Disconnected;\r\n\t}\r\n\r\n\tget isConnected(): boolean {\r\n\t\treturn this.state === HubConnectionState.Connected;\r\n\t}\r\n\r\n\tbuild(options: SignalrRealtimeTransportOptions): HubConnection {\r\n\t\tconst builder = new HubConnectionBuilder()\r\n\t\t\t.withUrl(options.hubUrl, {\r\n\t\t\t\taccessTokenFactory: options.accessTokenFactory,\r\n\t\t\t\ttransport:\r\n\t\t\t\t\tHttpTransportType.WebSockets |\r\n\t\t\t\t\tHttpTransportType.ServerSentEvents |\r\n\t\t\t\t\tHttpTransportType.LongPolling,\r\n\t\t\t})\r\n\t\t\t.configureLogging(options.signalrLogLevel ?? LogLevel.Warning);\r\n\r\n\t\tif (options.autoReconnect !== false) {\r\n\t\t\tbuilder.withAutomaticReconnect(\r\n\t\t\t\toptions.reconnectDelaysMs ?? [0, 2000, 5000, 10000]\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.connection = builder.build();\r\n\t\treturn this.connection;\r\n\t}\r\n\r\n\tgetConnection(): HubConnection {\r\n\t\tif (!this.connection) {\r\n\t\t\tthrow new Error('SignalR connection has not been built.');\r\n\t\t}\r\n\r\n\t\treturn this.connection;\r\n\t}\r\n\r\n\tasync start(): Promise<void> {\r\n\t\tconst connection = this.getConnection();\r\n\r\n\t\tif (\r\n\t\t\tconnection.state === HubConnectionState.Connected ||\r\n\t\t\tconnection.state === HubConnectionState.Connecting ||\r\n\t\t\tconnection.state === HubConnectionState.Reconnecting\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait connection.start();\r\n\t}\r\n\r\n\tasync stop(): Promise<void> {\r\n\t\tif (!this.connection) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.connection.state === HubConnectionState.Disconnected) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.connection.stop();\r\n\t}\r\n\r\n\ton<TPayload = unknown>(\r\n\t\teventName: string,\r\n\t\thandler: (payload: TPayload) => void\r\n\t): void {\r\n\t\tconst connection = this.getConnection();\r\n\r\n\t\tconnection.off(eventName);\r\n\t\tconnection.on(eventName, handler);\r\n\t}\r\n\r\n\toff(eventName: string): void {\r\n\t\tconst connection = this.getConnection();\r\n\t\tconnection.off(eventName);\r\n\t}\r\n\r\n\tasync invoke<TResponse = unknown>(\r\n\t\tmethodName: string,\r\n\t\t...args: unknown[]\r\n\t): Promise<TResponse> {\r\n\t\tconst connection = this.getConnection();\r\n\r\n\t\tif (connection.state !== HubConnectionState.Connected) {\r\n\t\t\tthrow new Error('SignalR connection is not connected.');\r\n\t\t}\r\n\r\n\t\treturn connection.invoke<TResponse>(methodName, ...args);\r\n\t}\r\n\r\n\tasync send(methodName: string, ...args: unknown[]): Promise<void> {\r\n\t\tconst connection = this.getConnection();\r\n\r\n\t\tif (connection.state !== HubConnectionState.Connected) {\r\n\t\t\tthrow new Error('SignalR connection is not connected.');\r\n\t\t}\r\n\r\n\t\tawait connection.send(methodName, ...args);\r\n\t}\r\n\r\n\tonReconnecting(handler: (error?: Error) => void): void {\r\n\t\tconst connection = this.getConnection();\r\n\t\tconnection.onreconnecting(handler);\r\n\t}\r\n\r\n\tonReconnected(handler: (connectionId?: string) => void): void {\r\n\t\tconst connection = this.getConnection();\r\n\t\tconnection.onreconnected(handler);\r\n\t}\r\n\r\n\tonClose(handler: (error?: Error) => void): void {\r\n\t\tconst connection = this.getConnection();\r\n\t\tconnection.onclose(handler);\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tthis.connection = null;\r\n\t}\r\n}","import { Injectable, computed, inject, signal } from '@angular/core';\r\nimport { HubConnectionState } from '@microsoft/signalr';\r\n\r\nimport { LoggerService } from '@manticsoftware/angular/runtime/logger';\r\n\r\nimport { RealtimeConnectOptions } from '../contracts/realtime-connect-options.model';\r\nimport { RealtimeConnectionState } from '../contracts/realtime-connection-state.type';\r\nimport { RealtimeEvent } from '../contracts/realtime-event.model';\r\nimport { RealtimeEventBusService } from './realtime-event-bus.service';\r\nimport { SignalrRealtimeTransport } from '../transports/signalr-realtime.transport';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RealtimeConnectionService {\r\n\tprivate readonly logger = inject(LoggerService);\r\n\tprivate readonly eventBus = inject(RealtimeEventBusService);\r\n\tprivate readonly transport = inject(SignalrRealtimeTransport);\r\n\r\n\tprivate readonly registeredServerEvents = new Set<string>();\r\n\tprivate connectOptions: RealtimeConnectOptions | null = null;\r\n\r\n\tprivate readonly _state = signal<RealtimeConnectionState>('disconnected');\r\n\treadonly state = this._state.asReadonly();\r\n\r\n\treadonly isConnected = computed(() => this._state() === 'connected');\r\n\r\n\tasync connect(options: RealtimeConnectOptions): Promise<void> {\r\n\t\tthis.connectOptions = options;\r\n\r\n\t\tif (\r\n\t\t\tthis.transport.state === HubConnectionState.Connected ||\r\n\t\t\tthis.transport.state === HubConnectionState.Connecting ||\r\n\t\t\tthis.transport.state === HubConnectionState.Reconnecting\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._state.set('connecting');\r\n\r\n\t\tthis.transport.build({\r\n\t\t\thubUrl: options.hubUrl,\r\n\t\t\taccessTokenFactory: options.accessTokenFactory,\r\n\t\t\tautoReconnect: options.autoReconnect,\r\n\t\t\treconnectDelaysMs: options.reconnectDelaysMs,\r\n\t\t});\r\n\r\n\t\tthis.registerLifecycleHandlers();\r\n\r\n\t\ttry {\r\n\t\t\tawait this.transport.start();\r\n\t\t\tthis._state.set('connected');\r\n\r\n\t\t\tthis.logger.info('Realtime connection established.', {\r\n\t\t\t\tsource: 'RealtimeConnection',\r\n\t\t\t\tdata: { hubUrl: options.hubUrl },\r\n\t\t\t});\r\n\r\n\t\t\tthis.reRegisterServerEvents();\r\n\t\t} catch (error) {\r\n\t\t\tthis._state.set('error');\r\n\r\n\t\t\tthis.logger.error('Realtime connection failed.', {\r\n\t\t\t\tsource: 'RealtimeConnection',\r\n\t\t\t\terror,\r\n\t\t\t\tdata: { hubUrl: options.hubUrl },\r\n\t\t\t});\r\n\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\r\n\tasync disconnect(): Promise<void> {\r\n\t\ttry {\r\n\t\t\tawait this.transport.stop();\r\n\t\t} finally {\r\n\t\t\tthis._state.set('disconnected');\r\n\t\t\tthis.transport.clear();\r\n\r\n\t\t\tthis.logger.info('Realtime connection stopped.', {\r\n\t\t\t\tsource: 'RealtimeConnection',\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tregisterServerEvent<TPayload = unknown>(eventName: string): void {\r\n\t\tthis.registeredServerEvents.add(eventName);\r\n\r\n\t\tif (this.transport.state === HubConnectionState.Disconnected) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.transport.on<TPayload>(eventName, (payload: TPayload) => {\r\n\t\t\tconst event: RealtimeEvent<TPayload> = {\r\n\t\t\t\ttype: eventName,\r\n\t\t\t\tpayload,\r\n\t\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\t};\r\n\r\n\t\t\tif (this.connectOptions?.logIncomingEvents) {\r\n\t\t\t\tthis.logger.debug('Realtime event received.', {\r\n\t\t\t\t\tsource: 'RealtimeConnection',\r\n\t\t\t\t\tdata: { eventName, payload },\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.eventBus.publish(event);\r\n\t\t});\r\n\t}\r\n\r\n\tunregisterServerEvent(eventName: string): void {\r\n\t\tthis.registeredServerEvents.delete(eventName);\r\n\r\n\t\tif (this.transport.state !== HubConnectionState.Disconnected) {\r\n\t\t\tthis.transport.off(eventName);\r\n\t\t}\r\n\t}\r\n\r\n\tasync invoke<TResponse = unknown>(\r\n\t\tmethodName: string,\r\n\t\t...args: unknown[]\r\n\t): Promise<TResponse> {\r\n\t\tthis.logger.debug('Realtime invoke started.', {\r\n\t\t\tsource: 'RealtimeConnection',\r\n\t\t\tdata: { methodName, args },\r\n\t\t});\r\n\r\n\t\treturn this.transport.invoke<TResponse>(methodName, ...args);\r\n\t}\r\n\r\n\tasync send(methodName: string, ...args: unknown[]): Promise<void> {\r\n\t\tthis.logger.debug('Realtime send started.', {\r\n\t\t\tsource: 'RealtimeConnection',\r\n\t\t\tdata: { methodName, args },\r\n\t\t});\r\n\r\n\t\tawait this.transport.send(methodName, ...args);\r\n\t}\r\n\r\n\tprivate registerLifecycleHandlers(): void {\r\n\t\tthis.transport.onReconnecting(error => {\r\n\t\t\tthis._state.set('reconnecting');\r\n\r\n\t\t\tthis.logger.warn('Realtime reconnecting.', {\r\n\t\t\t\tsource: 'RealtimeConnection',\r\n\t\t\t\terror,\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.transport.onReconnected(connectionId => {\r\n\t\t\tthis._state.set('connected');\r\n\r\n\t\t\tthis.logger.info('Realtime reconnected.', {\r\n\t\t\t\tsource: 'RealtimeConnection',\r\n\t\t\t\tdata: { connectionId },\r\n\t\t\t});\r\n\r\n\t\t\tthis.reRegisterServerEvents();\r\n\t\t});\r\n\r\n\t\tthis.transport.onClose(error => {\r\n\t\t\tthis._state.set('disconnected');\r\n\r\n\t\t\tthis.logger.warn('Realtime connection closed.', {\r\n\t\t\t\tsource: 'RealtimeConnection',\r\n\t\t\t\terror,\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate reRegisterServerEvents(): void {\r\n\t\tfor (const eventName of this.registeredServerEvents) {\r\n\t\t\tthis.registerServerEvent(eventName);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { RealtimeEvent } from '../contracts/realtime-event.model';\r\nimport { RealtimeEventBusService } from './realtime-event-bus.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RealtimeSubscriptionService {\r\n\tprivate readonly eventBus = inject(RealtimeEventBusService);\r\n\r\n\ton<TPayload = unknown>(eventType: string): Observable<RealtimeEvent<TPayload>> {\r\n\t\treturn this.eventBus.on<TPayload>(eventType);\r\n\t}\r\n\r\n\tonPayload<TPayload = unknown>(eventType: string): Observable<TPayload | undefined> {\r\n\t\treturn this.eventBus.onPayload<TPayload>(eventType);\r\n\t}\r\n}","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\r\n\r\nexport function provideRuntimeRealtime(): EnvironmentProviders {\r\n\treturn makeEnvironmentProviders([]);\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAKa,uBAAuB,CAAA;AAClB,IAAA,aAAa,GAAG,IAAI,OAAO,EAAiB;AAEpD,IAAA,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AAEpD,IAAA,OAAO,CAAqB,KAA8B,EAAA;AACzD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;AAEA,IAAA,EAAE,CAAqB,SAAiB,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACvB,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,EACzC,GAAG,CAAC,KAAK,IAAI,KAAgC,CAAC,CAC9C;IACF;AAEA,IAAA,SAAS,CAAqB,SAAiB,EAAA;QAC9C,OAAO,IAAI,CAAC,EAAE,CAAW,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACtE;uGAlBY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADV,MAAM,EAAA,CAAA;;2FACnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCcrB,wBAAwB,CAAA;IAC5B,UAAU,GAAyB,IAAI;AAE/C,IAAA,IAAI,KAAK,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,kBAAkB,CAAC,YAAY;IACjE;AAEA,IAAA,IAAI,WAAW,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,kBAAkB,CAAC,SAAS;IACnD;AAEA,IAAA,KAAK,CAAC,OAAwC,EAAA;AAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,oBAAoB;AACtC,aAAA,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;YACxB,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,SAAS,EACR,iBAAiB,CAAC,UAAU;AAC5B,gBAAA,iBAAiB,CAAC,gBAAgB;AAClC,gBAAA,iBAAiB,CAAC,WAAW;SAC9B;aACA,gBAAgB,CAAC,OAAO,CAAC,eAAe,IAAI,QAAQ,CAAC,OAAO,CAAC;AAE/D,QAAA,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK,EAAE;AACpC,YAAA,OAAO,CAAC,sBAAsB,CAC7B,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CACnD;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE;QACjC,OAAO,IAAI,CAAC,UAAU;IACvB;IAEA,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACrB,YAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;QAC1D;QAEA,OAAO,IAAI,CAAC,UAAU;IACvB;AAEA,IAAA,MAAM,KAAK,GAAA;AACV,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AAEvC,QAAA,IACC,UAAU,CAAC,KAAK,KAAK,kBAAkB,CAAC,SAAS;AACjD,YAAA,UAAU,CAAC,KAAK,KAAK,kBAAkB,CAAC,UAAU;AAClD,YAAA,UAAU,CAAC,KAAK,KAAK,kBAAkB,CAAC,YAAY,EACnD;YACD;QACD;AAEA,QAAA,MAAM,UAAU,CAAC,KAAK,EAAE;IACzB;AAEA,IAAA,MAAM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACrB;QACD;QAEA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,kBAAkB,CAAC,YAAY,EAAE;YAC9D;QACD;AAEA,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;IAC7B;IAEA,EAAE,CACD,SAAiB,EACjB,OAAoC,EAAA;AAEpC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AAEvC,QAAA,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AACzB,QAAA,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;IAClC;AAEA,IAAA,GAAG,CAAC,SAAiB,EAAA;AACpB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACvC,QAAA,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;IAC1B;AAEA,IAAA,MAAM,MAAM,CACX,UAAkB,EAClB,GAAG,IAAe,EAAA;AAElB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;QAEvC,IAAI,UAAU,CAAC,KAAK,KAAK,kBAAkB,CAAC,SAAS,EAAE;AACtD,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;QACxD;QAEA,OAAO,UAAU,CAAC,MAAM,CAAY,UAAU,EAAE,GAAG,IAAI,CAAC;IACzD;AAEA,IAAA,MAAM,IAAI,CAAC,UAAkB,EAAE,GAAG,IAAe,EAAA;AAChD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;QAEvC,IAAI,UAAU,CAAC,KAAK,KAAK,kBAAkB,CAAC,SAAS,EAAE;AACtD,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;QACxD;QAEA,MAAM,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC;IAC3C;AAEA,IAAA,cAAc,CAAC,OAAgC,EAAA;AAC9C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACvC,QAAA,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC;IACnC;AAEA,IAAA,aAAa,CAAC,OAAwC,EAAA;AACrD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACvC,QAAA,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC;IAClC;AAEA,IAAA,OAAO,CAAC,OAAgC,EAAA;AACvC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACvC,QAAA,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;IAC5B;IAEA,KAAK,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IACvB;uGAzHY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cADX,MAAM,EAAA,CAAA;;2FACnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCLrB,yBAAyB,CAAA;AACpB,IAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAC9B,IAAA,QAAQ,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC1C,IAAA,SAAS,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAE5C,IAAA,sBAAsB,GAAG,IAAI,GAAG,EAAU;IACnD,cAAc,GAAkC,IAAI;AAE3C,IAAA,MAAM,GAAG,MAAM,CAA0B,cAAc,6EAAC;AAChE,IAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAEhC,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,KAAK,WAAW,kFAAC;IAEpE,MAAM,OAAO,CAAC,OAA+B,EAAA;AAC5C,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO;QAE7B,IACC,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,kBAAkB,CAAC,SAAS;AACrD,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,kBAAkB,CAAC,UAAU;YACtD,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,kBAAkB,CAAC,YAAY,EACvD;YACD;QACD;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;AAE7B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;AAC5C,SAAA,CAAC;QAEF,IAAI,CAAC,yBAAyB,EAAE;AAEhC,QAAA,IAAI;AACH,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;AAE5B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE;AACpD,gBAAA,MAAM,EAAE,oBAAoB;AAC5B,gBAAA,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;AAChC,aAAA,CAAC;YAEF,IAAI,CAAC,sBAAsB,EAAE;QAC9B;QAAE,OAAO,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AAExB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;AAChD,gBAAA,MAAM,EAAE,oBAAoB;gBAC5B,KAAK;AACL,gBAAA,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;AAChC,aAAA,CAAC;AAEF,YAAA,MAAM,KAAK;QACZ;IACD;AAEA,IAAA,MAAM,UAAU,GAAA;AACf,QAAA,IAAI;AACH,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QAC5B;gBAAU;AACT,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;AAC/B,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AAEtB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;AAChD,gBAAA,MAAM,EAAE,oBAAoB;AAC5B,aAAA,CAAC;QACH;IACD;AAEA,IAAA,mBAAmB,CAAqB,SAAiB,EAAA;AACxD,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC;QAE1C,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,kBAAkB,CAAC,YAAY,EAAE;YAC7D;QACD;QAEA,IAAI,CAAC,SAAS,CAAC,EAAE,CAAW,SAAS,EAAE,CAAC,OAAiB,KAAI;AAC5D,YAAA,MAAM,KAAK,GAA4B;AACtC,gBAAA,IAAI,EAAE,SAAS;gBACf,OAAO;AACP,gBAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACnC;AAED,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,iBAAiB,EAAE;AAC3C,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE;AAC7C,oBAAA,MAAM,EAAE,oBAAoB;AAC5B,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE;AAC5B,iBAAA,CAAC;YACH;AAEA,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7B,QAAA,CAAC,CAAC;IACH;AAEA,IAAA,qBAAqB,CAAC,SAAiB,EAAA;AACtC,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC;QAE7C,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,kBAAkB,CAAC,YAAY,EAAE;AAC7D,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;QAC9B;IACD;AAEA,IAAA,MAAM,MAAM,CACX,UAAkB,EAClB,GAAG,IAAe,EAAA;AAElB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE;AAC7C,YAAA,MAAM,EAAE,oBAAoB;AAC5B,YAAA,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC1B,SAAA,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAY,UAAU,EAAE,GAAG,IAAI,CAAC;IAC7D;AAEA,IAAA,MAAM,IAAI,CAAC,UAAkB,EAAE,GAAG,IAAe,EAAA;AAChD,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;AAC3C,YAAA,MAAM,EAAE,oBAAoB;AAC5B,YAAA,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC1B,SAAA,CAAC;QAEF,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC;IAC/C;IAEQ,yBAAyB,GAAA;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,IAAG;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;AAE/B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAC1C,gBAAA,MAAM,EAAE,oBAAoB;gBAC5B,KAAK;AACL,aAAA,CAAC;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,IAAG;AAC3C,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;AAE5B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACzC,gBAAA,MAAM,EAAE,oBAAoB;gBAC5B,IAAI,EAAE,EAAE,YAAY,EAAE;AACtB,aAAA,CAAC;YAEF,IAAI,CAAC,sBAAsB,EAAE;AAC9B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAG;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;AAE/B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;AAC/C,gBAAA,MAAM,EAAE,oBAAoB;gBAC5B,KAAK;AACL,aAAA,CAAC;AACH,QAAA,CAAC,CAAC;IACH;IAEQ,sBAAsB,GAAA;AAC7B,QAAA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,sBAAsB,EAAE;AACpD,YAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;QACpC;IACD;uGAhKY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cADZ,MAAM,EAAA,CAAA;;2FACnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCLrB,2BAA2B,CAAA;AACtB,IAAA,QAAQ,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAE3D,IAAA,EAAE,CAAqB,SAAiB,EAAA;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAW,SAAS,CAAC;IAC7C;AAEA,IAAA,SAAS,CAAqB,SAAiB,EAAA;QAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAW,SAAS,CAAC;IACpD;uGATY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cADd,MAAM,EAAA,CAAA;;2FACnB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;SCHlB,sBAAsB,GAAA;AACrC,IAAA,OAAO,wBAAwB,CAAC,EAAE,CAAC;AACpC;;ACJA;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"manticsoftware-angular-runtime-storage.mjs","sources":["../../../projects/rad-angular/runtime/storage/src/lib/helpers/storage-key.helper.ts","../../../projects/rad-angular/runtime/storage/src/lib/helpers/storage-json.helper.ts","../../../projects/rad-angular/runtime/storage/src/lib/services/local-storage.service.ts","../../../projects/rad-angular/runtime/storage/src/lib/services/session-storage.service.ts","../../../projects/rad-angular/runtime/storage/src/lib/services/cache-store.service.ts","../../../projects/rad-angular/runtime/storage/src/manticsoftware-angular-runtime-storage.ts"],"sourcesContent":["export function buildStorageKey(...parts: Array<string | number | null | undefined>): string {\r\n\treturn parts\r\n\t\t.filter(part => part !== null && part !== undefined && String(part).trim() !== '')\r\n\t\t.map(part => String(part).trim())\r\n\t\t.join(':');\r\n}","export function safeJsonParse<T>(value: string | null): T | null {\r\n\tif (!value) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\ttry {\r\n\t\treturn JSON.parse(value) as T;\r\n\t} catch {\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nexport function safeJsonStringify<T>(value: T): string {\r\n\treturn JSON.stringify(value);\r\n}","import { Injectable } from '@angular/core';\r\nimport { StorageEngine } from '../contracts/storage-engine.interface';\r\nimport { safeJsonParse, safeJsonStringify } from '../helpers/storage-json.helper';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LocalStorageService implements StorageEngine {\r\n\r\n\tgetObject<T>(key: string): T {\r\n\t\tconst value = localStorage.getItem(key);\r\n\t\treturn (!value ? null : JSON.parse(value)) as T;\r\n\t}\r\n\r\n\tget<T>(key: string): T | null {\r\n\t\tconst raw = localStorage.getItem(key);\r\n\t\treturn safeJsonParse<T>(raw);\r\n\t}\r\n\r\n\tset<T>(key: string, value: T): void {\r\n\t\tlocalStorage.setItem(key, safeJsonStringify(value));\r\n\t}\r\n\r\n\tremove(key: string): void {\r\n\t\tlocalStorage.removeItem(key);\r\n\t}\r\n\r\n\thas(key: string): boolean {\r\n\t\treturn localStorage.getItem(key) !== null;\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tlocalStorage.clear();\r\n\t}\r\n\r\n\tgetString(key: string): string | null {\r\n\t\treturn localStorage.getItem(key);\r\n\t}\r\n\r\n\tsetString(key: string, value: string): void {\r\n\t\tlocalStorage.setItem(key, value);\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { StorageEngine } from '../contracts/storage-engine.interface';\r\nimport { safeJsonParse, safeJsonStringify } from '../helpers/storage-json.helper';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SessionStorageService implements StorageEngine {\r\n\tget<T>(key: string): T | null {\r\n\t\tconst raw = sessionStorage.getItem(key);\r\n\t\treturn safeJsonParse<T>(raw);\r\n\t}\r\n\r\n\tset<T>(key: string, value: T): void {\r\n\t\tsessionStorage.setItem(key, safeJsonStringify(value));\r\n\t}\r\n\r\n\tremove(key: string): void {\r\n\t\tsessionStorage.removeItem(key);\r\n\t}\r\n\r\n\thas(key: string): boolean {\r\n\t\treturn sessionStorage.getItem(key) !== null;\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tsessionStorage.clear();\r\n\t}\r\n\r\n\tgetString(key: string): string | null {\r\n\t\treturn sessionStorage.getItem(key);\r\n\t}\r\n\r\n\tsetString(key: string, value: string): void {\r\n\t\tsessionStorage.setItem(key, value);\r\n\t}\r\n}","import { Injectable, inject } from '@angular/core';\r\nimport { CacheEntry } from '../contracts/cache-entry.model';\r\nimport { LocalStorageService } from './local-storage.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CacheStoreService {\r\n\tprivate readonly storage = inject(LocalStorageService);\r\n\tprivate readonly prefix = 'cache';\r\n\r\n\tget<T>(key: string): T | null {\r\n\t\tconst entry = this.storage.get<CacheEntry<T>>(this.buildKey(key));\r\n\r\n\t\tif (!entry) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (this.isExpired(entry)) {\r\n\t\t\tthis.remove(key);\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn entry.value;\r\n\t}\r\n\r\n\tset<T>(key: string, value: T, expiresInMinutes?: number): void {\r\n\t\tconst now = new Date();\r\n\t\tconst entry: CacheEntry<T> = {\r\n\t\t\tvalue,\r\n\t\t\tstoredAtUtc: now.toISOString(),\r\n\t\t\texpiresAtUtc:\r\n\t\t\t\texpiresInMinutes && expiresInMinutes > 0\r\n\t\t\t\t\t? new Date(now.getTime() + expiresInMinutes * 60 * 1000).toISOString()\r\n\t\t\t\t\t: null,\r\n\t\t};\r\n\r\n\t\tthis.storage.set(this.buildKey(key), entry);\r\n\t}\r\n\r\n\tremove(key: string): void {\r\n\t\tthis.storage.remove(this.buildKey(key));\r\n\t}\r\n\r\n\thas(key: string): boolean {\r\n\t\treturn this.get(key) !== null;\r\n\t}\r\n\r\n\tclearAll(): void {\r\n\t\tconst keysToRemove: string[] = [];\r\n\r\n\t\tfor (let i = 0; i < localStorage.length; i++) {\r\n\t\t\tconst key = localStorage.key(i);\r\n\t\t\tif (key?.startsWith(`${this.prefix}:`)) {\r\n\t\t\t\tkeysToRemove.push(key);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (const key of keysToRemove) {\r\n\t\t\tlocalStorage.removeItem(key);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate buildKey(key: string): string {\r\n\t\treturn `${this.prefix}:${key}`;\r\n\t}\r\n\r\n\tprivate isExpired<T>(entry: CacheEntry<T>): boolean {\r\n\t\tif (!entry.expiresAtUtc) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn new Date(entry.expiresAtUtc).getTime() <= Date.now();\r\n\t}\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAAM,SAAU,eAAe,CAAC,GAAG,KAAgD,EAAA;AAClF,IAAA,OAAO;SACL,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;AAChF,SAAA,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;SAC/B,IAAI,CAAC,GAAG,CAAC;AACZ;;ACLM,SAAU,aAAa,CAAI,KAAoB,EAAA;IACpD,IAAI,CAAC,KAAK,EAAE;AACX,QAAA,OAAO,IAAI;IACZ;AAEA,IAAA,IAAI;AACH,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM;IAC9B;AAAE,IAAA,MAAM;AACP,QAAA,OAAO,IAAI;IACZ;AACD;AAEM,SAAU,iBAAiB,CAAI,KAAQ,EAAA;AAC5C,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC7B;;MCTa,mBAAmB,CAAA;AAE/B,IAAA,SAAS,CAAI,GAAW,EAAA;QACvB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AACvC,QAAA,QAAQ,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1C;AAEA,IAAA,GAAG,CAAI,GAAW,EAAA;QACjB,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AACrC,QAAA,OAAO,aAAa,CAAI,GAAG,CAAC;IAC7B;IAEA,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAA;QAC3B,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACpD;AAEA,IAAA,MAAM,CAAC,GAAW,EAAA;AACjB,QAAA,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;IAC7B;AAEA,IAAA,GAAG,CAAC,GAAW,EAAA;QACd,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI;IAC1C;IAEA,KAAK,GAAA;QACJ,YAAY,CAAC,KAAK,EAAE;IACrB;AAEA,IAAA,SAAS,CAAC,GAAW,EAAA;AACpB,QAAA,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;IACjC;IAEA,SAAS,CAAC,GAAW,EAAE,KAAa,EAAA;AACnC,QAAA,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;IACjC;uGAlCY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADN,MAAM,EAAA,CAAA;;2FACnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCCrB,qBAAqB,CAAA;AACjC,IAAA,GAAG,CAAI,GAAW,EAAA;QACjB,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC;AACvC,QAAA,OAAO,aAAa,CAAI,GAAG,CAAC;IAC7B;IAEA,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAA;QAC3B,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACtD;AAEA,IAAA,MAAM,CAAC,GAAW,EAAA;AACjB,QAAA,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC;IAC/B;AAEA,IAAA,GAAG,CAAC,GAAW,EAAA;QACd,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI;IAC5C;IAEA,KAAK,GAAA;QACJ,cAAc,CAAC,KAAK,EAAE;IACvB;AAEA,IAAA,SAAS,CAAC,GAAW,EAAA;AACpB,QAAA,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC;IACnC;IAEA,SAAS,CAAC,GAAW,EAAE,KAAa,EAAA;AACnC,QAAA,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;IACnC;uGA5BY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAArB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cADR,MAAM,EAAA,CAAA;;2FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCCrB,iBAAiB,CAAA;AACZ,IAAA,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC;IACrC,MAAM,GAAG,OAAO;AAEjC,IAAA,GAAG,CAAI,GAAW,EAAA;AACjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEjE,IAAI,CAAC,KAAK,EAAE;AACX,YAAA,OAAO,IAAI;QACZ;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAChB,YAAA,OAAO,IAAI;QACZ;QAEA,OAAO,KAAK,CAAC,KAAK;IACnB;AAEA,IAAA,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAE,gBAAyB,EAAA;AACtD,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,MAAM,KAAK,GAAkB;YAC5B,KAAK;AACL,YAAA,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE;AAC9B,YAAA,YAAY,EACX,gBAAgB,IAAI,gBAAgB,GAAG;AACtC,kBAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;AACpE,kBAAE,IAAI;SACR;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;IAC5C;AAEA,IAAA,MAAM,CAAC,GAAW,EAAA;AACjB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxC;AAEA,IAAA,GAAG,CAAC,GAAW,EAAA;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI;IAC9B;IAEA,QAAQ,GAAA;QACP,MAAM,YAAY,GAAa,EAAE;AAEjC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,IAAI,GAAG,EAAE,UAAU,CAAC,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,CAAA,CAAG,CAAC,EAAE;AACvC,gBAAA,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;YACvB;QACD;AAEA,QAAA,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;AAC/B,YAAA,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;QAC7B;IACD;AAEQ,IAAA,QAAQ,CAAC,GAAW,EAAA;AAC3B,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,GAAG,EAAE;IAC/B;AAEQ,IAAA,SAAS,CAAI,KAAoB,EAAA;AACxC,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AACxB,YAAA,OAAO,KAAK;QACb;AAEA,QAAA,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE;IAC5D;uGAlEY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA;;2FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACJlC;;AAEG;;;;"}
1
+ {"version":3,"file":"manticsoftware-angular-runtime-storage.mjs","sources":["../../../projects/rad-angular/runtime/storage/src/lib/helpers/storage-key.helper.ts","../../../projects/rad-angular/runtime/storage/src/lib/helpers/storage-json.helper.ts","../../../projects/rad-angular/runtime/storage/src/lib/services/local-storage.service.ts","../../../projects/rad-angular/runtime/storage/src/lib/services/session-storage.service.ts","../../../projects/rad-angular/runtime/storage/src/lib/services/cache-store.service.ts","../../../projects/rad-angular/runtime/storage/manticsoftware-angular-runtime-storage.ts"],"sourcesContent":["export function buildStorageKey(...parts: Array<string | number | null | undefined>): string {\r\n\treturn parts\r\n\t\t.filter(part => part !== null && part !== undefined && String(part).trim() !== '')\r\n\t\t.map(part => String(part).trim())\r\n\t\t.join(':');\r\n}","export function safeJsonParse<T>(value: string | null): T | null {\r\n\tif (!value) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\ttry {\r\n\t\treturn JSON.parse(value) as T;\r\n\t} catch {\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nexport function safeJsonStringify<T>(value: T): string {\r\n\treturn JSON.stringify(value);\r\n}","import { Injectable } from '@angular/core';\r\nimport { StorageEngine } from '../contracts/storage-engine.interface';\r\nimport { safeJsonParse, safeJsonStringify } from '../helpers/storage-json.helper';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LocalStorageService implements StorageEngine {\r\n\r\n\tgetObject<T>(key: string): T {\r\n\t\tconst value = localStorage.getItem(key);\r\n\t\treturn (!value ? null : JSON.parse(value)) as T;\r\n\t}\r\n\r\n\tget<T>(key: string): T | null {\r\n\t\tconst raw = localStorage.getItem(key);\r\n\t\treturn safeJsonParse<T>(raw);\r\n\t}\r\n\r\n\tset<T>(key: string, value: T): void {\r\n\t\tlocalStorage.setItem(key, safeJsonStringify(value));\r\n\t}\r\n\r\n\tremove(key: string): void {\r\n\t\tlocalStorage.removeItem(key);\r\n\t}\r\n\r\n\thas(key: string): boolean {\r\n\t\treturn localStorage.getItem(key) !== null;\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tlocalStorage.clear();\r\n\t}\r\n\r\n\tgetString(key: string): string | null {\r\n\t\treturn localStorage.getItem(key);\r\n\t}\r\n\r\n\tsetString(key: string, value: string): void {\r\n\t\tlocalStorage.setItem(key, value);\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { StorageEngine } from '../contracts/storage-engine.interface';\r\nimport { safeJsonParse, safeJsonStringify } from '../helpers/storage-json.helper';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SessionStorageService implements StorageEngine {\r\n\tget<T>(key: string): T | null {\r\n\t\tconst raw = sessionStorage.getItem(key);\r\n\t\treturn safeJsonParse<T>(raw);\r\n\t}\r\n\r\n\tset<T>(key: string, value: T): void {\r\n\t\tsessionStorage.setItem(key, safeJsonStringify(value));\r\n\t}\r\n\r\n\tremove(key: string): void {\r\n\t\tsessionStorage.removeItem(key);\r\n\t}\r\n\r\n\thas(key: string): boolean {\r\n\t\treturn sessionStorage.getItem(key) !== null;\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tsessionStorage.clear();\r\n\t}\r\n\r\n\tgetString(key: string): string | null {\r\n\t\treturn sessionStorage.getItem(key);\r\n\t}\r\n\r\n\tsetString(key: string, value: string): void {\r\n\t\tsessionStorage.setItem(key, value);\r\n\t}\r\n}","import { Injectable, inject } from '@angular/core';\r\nimport { CacheEntry } from '../contracts/cache-entry.model';\r\nimport { LocalStorageService } from './local-storage.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CacheStoreService {\r\n\tprivate readonly storage = inject(LocalStorageService);\r\n\tprivate readonly prefix = 'cache';\r\n\r\n\tget<T>(key: string): T | null {\r\n\t\tconst entry = this.storage.get<CacheEntry<T>>(this.buildKey(key));\r\n\r\n\t\tif (!entry) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (this.isExpired(entry)) {\r\n\t\t\tthis.remove(key);\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn entry.value;\r\n\t}\r\n\r\n\tset<T>(key: string, value: T, expiresInMinutes?: number): void {\r\n\t\tconst now = new Date();\r\n\t\tconst entry: CacheEntry<T> = {\r\n\t\t\tvalue,\r\n\t\t\tstoredAtUtc: now.toISOString(),\r\n\t\t\texpiresAtUtc:\r\n\t\t\t\texpiresInMinutes && expiresInMinutes > 0\r\n\t\t\t\t\t? new Date(now.getTime() + expiresInMinutes * 60 * 1000).toISOString()\r\n\t\t\t\t\t: null,\r\n\t\t};\r\n\r\n\t\tthis.storage.set(this.buildKey(key), entry);\r\n\t}\r\n\r\n\tremove(key: string): void {\r\n\t\tthis.storage.remove(this.buildKey(key));\r\n\t}\r\n\r\n\thas(key: string): boolean {\r\n\t\treturn this.get(key) !== null;\r\n\t}\r\n\r\n\tclearAll(): void {\r\n\t\tconst keysToRemove: string[] = [];\r\n\r\n\t\tfor (let i = 0; i < localStorage.length; i++) {\r\n\t\t\tconst key = localStorage.key(i);\r\n\t\t\tif (key?.startsWith(`${this.prefix}:`)) {\r\n\t\t\t\tkeysToRemove.push(key);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (const key of keysToRemove) {\r\n\t\t\tlocalStorage.removeItem(key);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate buildKey(key: string): string {\r\n\t\treturn `${this.prefix}:${key}`;\r\n\t}\r\n\r\n\tprivate isExpired<T>(entry: CacheEntry<T>): boolean {\r\n\t\tif (!entry.expiresAtUtc) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn new Date(entry.expiresAtUtc).getTime() <= Date.now();\r\n\t}\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manticsoftware-angular-runtime-telemetry.mjs","sources":["../../../projects/rad-angular/runtime/telemetry/src/lib/tokens/telemetry-options.token.ts","../../../projects/rad-angular/runtime/telemetry/src/lib/tokens/telemetry-transports.token.ts","../../../projects/rad-angular/runtime/telemetry/src/lib/services/telemetry-context.service.ts","../../../projects/rad-angular/runtime/telemetry/src/lib/services/telemetry.service.ts","../../../projects/rad-angular/runtime/telemetry/src/lib/services/telemetry-performance.service.ts","../../../projects/rad-angular/runtime/telemetry/src/lib/transports/console-telemetry.transport.ts","../../../projects/rad-angular/runtime/telemetry/src/lib/transports/memory-telemetry.transport.ts","../../../projects/rad-angular/runtime/telemetry/src/lib/providers/provide-runtime-telemetry.ts","../../../projects/rad-angular/runtime/telemetry/src/manticsoftware-angular-runtime-telemetry.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { TelemetryOptions } from '../contracts/telemetry-options.model';\r\n\r\nexport const DEFAULT_TELEMETRY_OPTIONS: TelemetryOptions = {\r\n\tenableConsole: true,\r\n\tenableMemory: true,\r\n\tmaxMemoryEntries: 500,\r\n};\r\n\r\nexport const TELEMETRY_OPTIONS_TOKEN = new InjectionToken<TelemetryOptions>(\r\n\t'TELEMETRY_OPTIONS_TOKEN',\r\n\t{\r\n\t\tprovidedIn: 'root',\r\n\t\tfactory: () => DEFAULT_TELEMETRY_OPTIONS,\r\n\t}\r\n);","import { InjectionToken } from '@angular/core';\r\nimport { TelemetryTransport } from '../contracts/telemetry-transport.interface';\r\n\r\nexport const TELEMETRY_TRANSPORTS_TOKEN = new InjectionToken<TelemetryTransport[]>(\r\n\t'TELEMETRY_TRANSPORTS_TOKEN',\r\n\t{\r\n\t\tprovidedIn: 'root',\r\n\t\tfactory: () => [],\r\n\t}\r\n);","import { Injectable, signal } from '@angular/core';\r\nimport { TelemetryContext } from '../contracts/telemetry-context.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TelemetryContextService {\r\n\tprivate readonly _context = signal<TelemetryContext>({});\r\n\r\n\treadonly context = this._context.asReadonly();\r\n\r\n\tgetSnapshot(): TelemetryContext {\r\n\t\treturn this._context();\r\n\t}\r\n\r\n\tset(context: TelemetryContext): void {\r\n\t\tthis._context.set({ ...context });\r\n\t}\r\n\r\n\tpatch(context: Partial<TelemetryContext>): void {\r\n\t\tthis._context.update(current => ({\r\n\t\t\t...current,\r\n\t\t\t...context,\r\n\t\t}));\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tthis._context.set({});\r\n\t}\r\n}","import { Inject, Injectable, Optional, inject } from '@angular/core';\r\nimport { TelemetryContext } from '../contracts/telemetry-context.model';\r\nimport { TelemetryEvent } from '../contracts/telemetry-event.model';\r\nimport { TelemetryMetric } from '../contracts/telemetry-metric.model';\r\nimport { TelemetryTransport } from '../contracts/telemetry-transport.interface';\r\nimport { TELEMETRY_TRANSPORTS_TOKEN } from '../tokens/telemetry-transports.token';\r\nimport { TelemetryContextService } from './telemetry-context.service';\r\n\r\nexport interface TelemetryWriteOptions {\r\n\tproperties?: Record<string, unknown>;\r\n\tcontext?: Partial<TelemetryContext>;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TelemetryService {\r\n\tprivate readonly contextService = inject(TelemetryContextService);\r\n\r\n\tconstructor(\r\n\t\t@Optional()\r\n\t\t@Inject(TELEMETRY_TRANSPORTS_TOKEN)\r\n\t\tprivate readonly transports: TelemetryTransport[] | null\r\n\t) { }\r\n\r\n\ttrackEvent(\r\n\t\tname: string,\r\n\t\toptions?: TelemetryWriteOptions\r\n\t): void {\r\n\t\tconst entry: TelemetryEvent = {\r\n\t\t\tname,\r\n\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\tproperties: options?.properties,\r\n\t\t\tcontext: this.mergeContext(options?.context),\r\n\t\t};\r\n\r\n\t\tfor (const transport of this.transports ?? []) {\r\n\t\t\ttry {\r\n\t\t\t\tconst result = transport.trackEvent(entry);\r\n\t\t\t\tif (result instanceof Promise) {\r\n\t\t\t\t\tvoid result.catch((error: unknown) => {\r\n\t\t\t\t\t\tconsole.error('Telemetry transport event failure.', error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.error('Telemetry transport event failure.', error);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttrackMetric(\r\n\t\tname: string,\r\n\t\tvalue: number,\r\n\t\toptions?: TelemetryWriteOptions\r\n\t): void {\r\n\t\tconst entry: TelemetryMetric = {\r\n\t\t\tname,\r\n\t\t\tvalue,\r\n\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\tproperties: options?.properties,\r\n\t\t\tcontext: this.mergeContext(options?.context),\r\n\t\t};\r\n\r\n\t\tfor (const transport of this.transports ?? []) {\r\n\t\t\ttry {\r\n\t\t\t\tconst result = transport.trackMetric(entry);\r\n\t\t\t\tif (result instanceof Promise) {\r\n\t\t\t\t\tvoid result.catch((error: unknown) => {\r\n\t\t\t\t\t\tconsole.error('Telemetry transport metric failure.', error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.error('Telemetry transport metric failure.', error);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate mergeContext(localContext?: Partial<TelemetryContext>): TelemetryContext {\r\n\t\treturn {\r\n\t\t\t...this.contextService.getSnapshot(),\r\n\t\t\t...(localContext ?? {}),\r\n\t\t};\r\n\t}\r\n}","import { Injectable, inject } from '@angular/core';\r\nimport { TelemetryService } from './telemetry.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TelemetryPerformanceService {\r\n\tprivate readonly telemetry = inject(TelemetryService);\r\n\tprivate readonly markers = new Map<string, number>();\r\n\r\n\tstart(name: string): void {\r\n\t\tthis.markers.set(name, performance.now());\r\n\t}\r\n\r\n\tstop(\r\n\t\tname: string,\r\n\t\tproperties?: Record<string, unknown>\r\n\t): number | null {\r\n\t\tconst startedAt = this.markers.get(name);\r\n\t\tif (startedAt === undefined) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst durationMs = performance.now() - startedAt;\r\n\t\tthis.markers.delete(name);\r\n\r\n\t\tthis.telemetry.trackMetric(`${name}.durationMs`, durationMs, {\r\n\t\t\tproperties,\r\n\t\t});\r\n\r\n\t\treturn durationMs;\r\n\t}\r\n\r\n\ttrackAsync<T>(\r\n\t\tname: string,\r\n\t\toperation: () => Promise<T>,\r\n\t\tproperties?: Record<string, unknown>\r\n\t): Promise<T> {\r\n\t\tthis.start(name);\r\n\r\n\t\treturn operation()\r\n\t\t\t.then(result => {\r\n\t\t\t\tthis.stop(name, {\r\n\t\t\t\t\t...properties,\r\n\t\t\t\t\tstatus: 'success',\r\n\t\t\t\t});\r\n\t\t\t\treturn result;\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tthis.stop(name, {\r\n\t\t\t\t\t...properties,\r\n\t\t\t\t\tstatus: 'error',\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.telemetry.trackEvent(`${name}.failed`, {\r\n\t\t\t\t\tproperties: {\r\n\t\t\t\t\t\t...properties,\r\n\t\t\t\t\t\tmessage: error instanceof Error ? error.message : 'Unknown error',\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthrow error;\r\n\t\t\t});\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { TelemetryEvent } from '../contracts/telemetry-event.model';\r\nimport { TelemetryMetric } from '../contracts/telemetry-metric.model';\r\nimport { TelemetryTransport } from '../contracts/telemetry-transport.interface';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ConsoleTelemetryTransport implements TelemetryTransport {\r\n\ttrackEvent(entry: TelemetryEvent): void {\r\n\t\tconsole.info('[Telemetry Event]', entry);\r\n\t}\r\n\r\n\ttrackMetric(entry: TelemetryMetric): void {\r\n\t\tconsole.info('[Telemetry Metric]', entry);\r\n\t}\r\n}","import { Injectable, inject } from '@angular/core';\r\nimport { TelemetryEvent } from '../contracts/telemetry-event.model';\r\nimport { TelemetryMetric } from '../contracts/telemetry-metric.model';\r\nimport { TelemetryTransport } from '../contracts/telemetry-transport.interface';\r\nimport { TELEMETRY_OPTIONS_TOKEN } from '../tokens/telemetry-options.token';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MemoryTelemetryTransport implements TelemetryTransport {\r\n\tprivate readonly options = inject(TELEMETRY_OPTIONS_TOKEN);\r\n\r\n\tprivate readonly events: TelemetryEvent[] = [];\r\n\tprivate readonly metrics: TelemetryMetric[] = [];\r\n\r\n\ttrackEvent(entry: TelemetryEvent): void {\r\n\t\tthis.events.push(entry);\r\n\t\tthis.trim(this.events);\r\n\t}\r\n\r\n\ttrackMetric(entry: TelemetryMetric): void {\r\n\t\tthis.metrics.push(entry);\r\n\t\tthis.trim(this.metrics);\r\n\t}\r\n\r\n\tgetEvents(): TelemetryEvent[] {\r\n\t\treturn [...this.events];\r\n\t}\r\n\r\n\tgetMetrics(): TelemetryMetric[] {\r\n\t\treturn [...this.metrics];\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tthis.events.length = 0;\r\n\t\tthis.metrics.length = 0;\r\n\t}\r\n\r\n\tprivate trim<T>(items: T[]): void {\r\n\t\tconst maxEntries = this.options.maxMemoryEntries;\r\n\t\tif (items.length > maxEntries) {\r\n\t\t\titems.splice(0, items.length - maxEntries);\r\n\t\t}\r\n\t}\r\n}","import {\r\n\tEnvironmentProviders,\r\n\tProvider,\r\n\tmakeEnvironmentProviders,\r\n} from '@angular/core';\r\nimport { TelemetryOptions } from '../contracts/telemetry-options.model';\r\nimport { ConsoleTelemetryTransport } from '../transports/console-telemetry.transport';\r\nimport { MemoryTelemetryTransport } from '../transports/memory-telemetry.transport';\r\nimport {\r\n\tDEFAULT_TELEMETRY_OPTIONS,\r\n\tTELEMETRY_OPTIONS_TOKEN,\r\n} from '../tokens/telemetry-options.token';\r\nimport { TELEMETRY_TRANSPORTS_TOKEN } from '../tokens/telemetry-transports.token';\r\n\r\nexport function provideRuntimeTelemetry(\r\n\toptions?: Partial<TelemetryOptions>\r\n): EnvironmentProviders {\r\n\tconst resolvedOptions: TelemetryOptions = {\r\n\t\t...DEFAULT_TELEMETRY_OPTIONS,\r\n\t\t...(options ?? {}),\r\n\t};\r\n\r\n\tconst transportProviders: Provider[] = [];\r\n\r\n\tif (resolvedOptions.enableConsole) {\r\n\t\ttransportProviders.push(ConsoleTelemetryTransport);\r\n\t\ttransportProviders.push({\r\n\t\t\tprovide: TELEMETRY_TRANSPORTS_TOKEN,\r\n\t\t\tmulti: true,\r\n\t\t\tuseExisting: ConsoleTelemetryTransport,\r\n\t\t});\r\n\t}\r\n\r\n\tif (resolvedOptions.enableMemory) {\r\n\t\ttransportProviders.push(MemoryTelemetryTransport);\r\n\t\ttransportProviders.push({\r\n\t\t\tprovide: TELEMETRY_TRANSPORTS_TOKEN,\r\n\t\t\tmulti: true,\r\n\t\t\tuseExisting: MemoryTelemetryTransport,\r\n\t\t});\r\n\t}\r\n\r\n\treturn makeEnvironmentProviders([\r\n\t\t{\r\n\t\t\tprovide: TELEMETRY_OPTIONS_TOKEN,\r\n\t\t\tuseValue: resolvedOptions,\r\n\t\t},\r\n\t\t...transportProviders,\r\n\t]);\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manticsoftware-angular-runtime-telemetry.mjs","sources":["../../../projects/rad-angular/runtime/telemetry/src/lib/tokens/telemetry-options.token.ts","../../../projects/rad-angular/runtime/telemetry/src/lib/tokens/telemetry-transports.token.ts","../../../projects/rad-angular/runtime/telemetry/src/lib/services/telemetry-context.service.ts","../../../projects/rad-angular/runtime/telemetry/src/lib/services/telemetry.service.ts","../../../projects/rad-angular/runtime/telemetry/src/lib/services/telemetry-performance.service.ts","../../../projects/rad-angular/runtime/telemetry/src/lib/transports/console-telemetry.transport.ts","../../../projects/rad-angular/runtime/telemetry/src/lib/transports/memory-telemetry.transport.ts","../../../projects/rad-angular/runtime/telemetry/src/lib/providers/provide-runtime-telemetry.ts","../../../projects/rad-angular/runtime/telemetry/manticsoftware-angular-runtime-telemetry.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { TelemetryOptions } from '../contracts/telemetry-options.model';\r\n\r\nexport const DEFAULT_TELEMETRY_OPTIONS: TelemetryOptions = {\r\n\tenableConsole: true,\r\n\tenableMemory: true,\r\n\tmaxMemoryEntries: 500,\r\n};\r\n\r\nexport const TELEMETRY_OPTIONS_TOKEN = new InjectionToken<TelemetryOptions>(\r\n\t'TELEMETRY_OPTIONS_TOKEN',\r\n\t{\r\n\t\tprovidedIn: 'root',\r\n\t\tfactory: () => DEFAULT_TELEMETRY_OPTIONS,\r\n\t}\r\n);","import { InjectionToken } from '@angular/core';\r\nimport { TelemetryTransport } from '../contracts/telemetry-transport.interface';\r\n\r\nexport const TELEMETRY_TRANSPORTS_TOKEN = new InjectionToken<TelemetryTransport[]>(\r\n\t'TELEMETRY_TRANSPORTS_TOKEN',\r\n\t{\r\n\t\tprovidedIn: 'root',\r\n\t\tfactory: () => [],\r\n\t}\r\n);","import { Injectable, signal } from '@angular/core';\r\nimport { TelemetryContext } from '../contracts/telemetry-context.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TelemetryContextService {\r\n\tprivate readonly _context = signal<TelemetryContext>({});\r\n\r\n\treadonly context = this._context.asReadonly();\r\n\r\n\tgetSnapshot(): TelemetryContext {\r\n\t\treturn this._context();\r\n\t}\r\n\r\n\tset(context: TelemetryContext): void {\r\n\t\tthis._context.set({ ...context });\r\n\t}\r\n\r\n\tpatch(context: Partial<TelemetryContext>): void {\r\n\t\tthis._context.update(current => ({\r\n\t\t\t...current,\r\n\t\t\t...context,\r\n\t\t}));\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tthis._context.set({});\r\n\t}\r\n}","import { Inject, Injectable, Optional, inject } from '@angular/core';\r\nimport { TelemetryContext } from '../contracts/telemetry-context.model';\r\nimport { TelemetryEvent } from '../contracts/telemetry-event.model';\r\nimport { TelemetryMetric } from '../contracts/telemetry-metric.model';\r\nimport { TelemetryTransport } from '../contracts/telemetry-transport.interface';\r\nimport { TELEMETRY_TRANSPORTS_TOKEN } from '../tokens/telemetry-transports.token';\r\nimport { TelemetryContextService } from './telemetry-context.service';\r\n\r\nexport interface TelemetryWriteOptions {\r\n\tproperties?: Record<string, unknown>;\r\n\tcontext?: Partial<TelemetryContext>;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TelemetryService {\r\n\tprivate readonly contextService = inject(TelemetryContextService);\r\n\r\n\tconstructor(\r\n\t\t@Optional()\r\n\t\t@Inject(TELEMETRY_TRANSPORTS_TOKEN)\r\n\t\tprivate readonly transports: TelemetryTransport[] | null\r\n\t) { }\r\n\r\n\ttrackEvent(\r\n\t\tname: string,\r\n\t\toptions?: TelemetryWriteOptions\r\n\t): void {\r\n\t\tconst entry: TelemetryEvent = {\r\n\t\t\tname,\r\n\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\tproperties: options?.properties,\r\n\t\t\tcontext: this.mergeContext(options?.context),\r\n\t\t};\r\n\r\n\t\tfor (const transport of this.transports ?? []) {\r\n\t\t\ttry {\r\n\t\t\t\tconst result = transport.trackEvent(entry);\r\n\t\t\t\tif (result instanceof Promise) {\r\n\t\t\t\t\tvoid result.catch((error: unknown) => {\r\n\t\t\t\t\t\tconsole.error('Telemetry transport event failure.', error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.error('Telemetry transport event failure.', error);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttrackMetric(\r\n\t\tname: string,\r\n\t\tvalue: number,\r\n\t\toptions?: TelemetryWriteOptions\r\n\t): void {\r\n\t\tconst entry: TelemetryMetric = {\r\n\t\t\tname,\r\n\t\t\tvalue,\r\n\t\t\ttimestamp: new Date().toISOString(),\r\n\t\t\tproperties: options?.properties,\r\n\t\t\tcontext: this.mergeContext(options?.context),\r\n\t\t};\r\n\r\n\t\tfor (const transport of this.transports ?? []) {\r\n\t\t\ttry {\r\n\t\t\t\tconst result = transport.trackMetric(entry);\r\n\t\t\t\tif (result instanceof Promise) {\r\n\t\t\t\t\tvoid result.catch((error: unknown) => {\r\n\t\t\t\t\t\tconsole.error('Telemetry transport metric failure.', error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.error('Telemetry transport metric failure.', error);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate mergeContext(localContext?: Partial<TelemetryContext>): TelemetryContext {\r\n\t\treturn {\r\n\t\t\t...this.contextService.getSnapshot(),\r\n\t\t\t...(localContext ?? {}),\r\n\t\t};\r\n\t}\r\n}","import { Injectable, inject } from '@angular/core';\r\nimport { TelemetryService } from './telemetry.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TelemetryPerformanceService {\r\n\tprivate readonly telemetry = inject(TelemetryService);\r\n\tprivate readonly markers = new Map<string, number>();\r\n\r\n\tstart(name: string): void {\r\n\t\tthis.markers.set(name, performance.now());\r\n\t}\r\n\r\n\tstop(\r\n\t\tname: string,\r\n\t\tproperties?: Record<string, unknown>\r\n\t): number | null {\r\n\t\tconst startedAt = this.markers.get(name);\r\n\t\tif (startedAt === undefined) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst durationMs = performance.now() - startedAt;\r\n\t\tthis.markers.delete(name);\r\n\r\n\t\tthis.telemetry.trackMetric(`${name}.durationMs`, durationMs, {\r\n\t\t\tproperties,\r\n\t\t});\r\n\r\n\t\treturn durationMs;\r\n\t}\r\n\r\n\ttrackAsync<T>(\r\n\t\tname: string,\r\n\t\toperation: () => Promise<T>,\r\n\t\tproperties?: Record<string, unknown>\r\n\t): Promise<T> {\r\n\t\tthis.start(name);\r\n\r\n\t\treturn operation()\r\n\t\t\t.then(result => {\r\n\t\t\t\tthis.stop(name, {\r\n\t\t\t\t\t...properties,\r\n\t\t\t\t\tstatus: 'success',\r\n\t\t\t\t});\r\n\t\t\t\treturn result;\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tthis.stop(name, {\r\n\t\t\t\t\t...properties,\r\n\t\t\t\t\tstatus: 'error',\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.telemetry.trackEvent(`${name}.failed`, {\r\n\t\t\t\t\tproperties: {\r\n\t\t\t\t\t\t...properties,\r\n\t\t\t\t\t\tmessage: error instanceof Error ? error.message : 'Unknown error',\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthrow error;\r\n\t\t\t});\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { TelemetryEvent } from '../contracts/telemetry-event.model';\r\nimport { TelemetryMetric } from '../contracts/telemetry-metric.model';\r\nimport { TelemetryTransport } from '../contracts/telemetry-transport.interface';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ConsoleTelemetryTransport implements TelemetryTransport {\r\n\ttrackEvent(entry: TelemetryEvent): void {\r\n\t\tconsole.info('[Telemetry Event]', entry);\r\n\t}\r\n\r\n\ttrackMetric(entry: TelemetryMetric): void {\r\n\t\tconsole.info('[Telemetry Metric]', entry);\r\n\t}\r\n}","import { Injectable, inject } from '@angular/core';\r\nimport { TelemetryEvent } from '../contracts/telemetry-event.model';\r\nimport { TelemetryMetric } from '../contracts/telemetry-metric.model';\r\nimport { TelemetryTransport } from '../contracts/telemetry-transport.interface';\r\nimport { TELEMETRY_OPTIONS_TOKEN } from '../tokens/telemetry-options.token';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MemoryTelemetryTransport implements TelemetryTransport {\r\n\tprivate readonly options = inject(TELEMETRY_OPTIONS_TOKEN);\r\n\r\n\tprivate readonly events: TelemetryEvent[] = [];\r\n\tprivate readonly metrics: TelemetryMetric[] = [];\r\n\r\n\ttrackEvent(entry: TelemetryEvent): void {\r\n\t\tthis.events.push(entry);\r\n\t\tthis.trim(this.events);\r\n\t}\r\n\r\n\ttrackMetric(entry: TelemetryMetric): void {\r\n\t\tthis.metrics.push(entry);\r\n\t\tthis.trim(this.metrics);\r\n\t}\r\n\r\n\tgetEvents(): TelemetryEvent[] {\r\n\t\treturn [...this.events];\r\n\t}\r\n\r\n\tgetMetrics(): TelemetryMetric[] {\r\n\t\treturn [...this.metrics];\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tthis.events.length = 0;\r\n\t\tthis.metrics.length = 0;\r\n\t}\r\n\r\n\tprivate trim<T>(items: T[]): void {\r\n\t\tconst maxEntries = this.options.maxMemoryEntries;\r\n\t\tif (items.length > maxEntries) {\r\n\t\t\titems.splice(0, items.length - maxEntries);\r\n\t\t}\r\n\t}\r\n}","import {\r\n\tEnvironmentProviders,\r\n\tProvider,\r\n\tmakeEnvironmentProviders,\r\n} from '@angular/core';\r\nimport { TelemetryOptions } from '../contracts/telemetry-options.model';\r\nimport { ConsoleTelemetryTransport } from '../transports/console-telemetry.transport';\r\nimport { MemoryTelemetryTransport } from '../transports/memory-telemetry.transport';\r\nimport {\r\n\tDEFAULT_TELEMETRY_OPTIONS,\r\n\tTELEMETRY_OPTIONS_TOKEN,\r\n} from '../tokens/telemetry-options.token';\r\nimport { TELEMETRY_TRANSPORTS_TOKEN } from '../tokens/telemetry-transports.token';\r\n\r\nexport function provideRuntimeTelemetry(\r\n\toptions?: Partial<TelemetryOptions>\r\n): EnvironmentProviders {\r\n\tconst resolvedOptions: TelemetryOptions = {\r\n\t\t...DEFAULT_TELEMETRY_OPTIONS,\r\n\t\t...(options ?? {}),\r\n\t};\r\n\r\n\tconst transportProviders: Provider[] = [];\r\n\r\n\tif (resolvedOptions.enableConsole) {\r\n\t\ttransportProviders.push(ConsoleTelemetryTransport);\r\n\t\ttransportProviders.push({\r\n\t\t\tprovide: TELEMETRY_TRANSPORTS_TOKEN,\r\n\t\t\tmulti: true,\r\n\t\t\tuseExisting: ConsoleTelemetryTransport,\r\n\t\t});\r\n\t}\r\n\r\n\tif (resolvedOptions.enableMemory) {\r\n\t\ttransportProviders.push(MemoryTelemetryTransport);\r\n\t\ttransportProviders.push({\r\n\t\t\tprovide: TELEMETRY_TRANSPORTS_TOKEN,\r\n\t\t\tmulti: true,\r\n\t\t\tuseExisting: MemoryTelemetryTransport,\r\n\t\t});\r\n\t}\r\n\r\n\treturn makeEnvironmentProviders([\r\n\t\t{\r\n\t\t\tprovide: TELEMETRY_OPTIONS_TOKEN,\r\n\t\t\tuseValue: resolvedOptions,\r\n\t\t},\r\n\t\t...transportProviders,\r\n\t]);\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manticsoftware/angular",
3
- "version": "21.1.2",
3
+ "version": "21.1.3",
4
4
  "description": "Reusable Angular library package for Mantic RAD.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.1.0",
@@ -1,7 +0,0 @@
1
- # compania-infrastructure-config
2
-
3
- This library was generated with [Nx](https://nx.dev).
4
-
5
- ## Running unit tests
6
-
7
- Run `nx test compania-infrastructure-config` to execute the unit tests.
@@ -1,7 +0,0 @@
1
- # compania-infrastructure-error-handling
2
-
3
- This library was generated with [Nx](https://nx.dev).
4
-
5
- ## Running unit tests
6
-
7
- Run `nx test compania-infrastructure-error-handling` to execute the unit tests.
@@ -1,7 +0,0 @@
1
- # compania-infrastructure-http
2
-
3
- This library was generated with [Nx](https://nx.dev).
4
-
5
- ## Running unit tests
6
-
7
- Run `nx test compania-infrastructure-http` to execute the unit tests.
@@ -1,7 +0,0 @@
1
- # compania-infrastructure-i18n-adapter
2
-
3
- This library was generated with [Nx](https://nx.dev).
4
-
5
- ## Running unit tests
6
-
7
- Run `nx test compania-infrastructure-i18n-adapter` to execute the unit tests.
@@ -1,7 +0,0 @@
1
- # compania-infrastructure-logger
2
-
3
- This library was generated with [Nx](https://nx.dev).
4
-
5
- ## Running unit tests
6
-
7
- Run `nx test compania-infrastructure-logger` to execute the unit tests.
@@ -1,7 +0,0 @@
1
- # compania-infrastructure-realtime
2
-
3
- This library was generated with [Nx](https://nx.dev).
4
-
5
- ## Running unit tests
6
-
7
- Run `nx test compania-infrastructure-realtime` to execute the unit tests.
@@ -1,7 +0,0 @@
1
- # compania-infrastructure-storage
2
-
3
- This library was generated with [Nx](https://nx.dev).
4
-
5
- ## Running unit tests
6
-
7
- Run `nx test compania-infrastructure-storage` to execute the unit tests.
@@ -1,7 +0,0 @@
1
- # compania-infrastructure-telemetry
2
-
3
- This library was generated with [Nx](https://nx.dev).
4
-
5
- ## Running unit tests
6
-
7
- Run `nx test compania-infrastructure-telemetry` to execute the unit tests.