@opensourcekd/ng-common-libs 1.2.1 → 1.2.2

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.
@@ -308,7 +308,7 @@ class TokenManager {
308
308
  */
309
309
  exports.TokenService = class TokenService extends TokenManager {
310
310
  constructor() {
311
- console.log("In TokenService of opensourcekd");
311
+ console.log("In TokenService of opensourcekd 1");
312
312
  super();
313
313
  }
314
314
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../node_modules/tslib/tslib.es6.js","../../src/core/event-bus.ts","../../src/angular/services/ng-event-emitter.service.ts","../../src/core/token-manager.ts","../../src/angular/services/token.service.ts","../../src/core/storage-manager.ts","../../src/angular/services/storage.service.ts","../../src/core/logger.ts","../../src/angular/services/logger.service.ts","../../src/angular/services/permission.service.ts","../../src/angular/guards/auth.guard.ts","../../src/angular/interceptors/auth.interceptor.ts","../../src/angular/interceptors/error-handling.interceptor.ts","../../src/angular/interceptors/caching.interceptor.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { Subject, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n/**\n * Event payload interface\n */\nexport interface EventPayload<T = any> {\n type: string;\n data: T;\n timestamp?: number;\n}\n\n/**\n * EventBus - A centralized event bus for application-wide communication\n * Framework-agnostic implementation using only RxJS\n * \n * @example\n * ```typescript\n * // Create an instance\n * const eventBus = new EventBus();\n * \n * // Emit an event\n * eventBus.emit('user:login', { userId: '123', username: 'john' });\n * \n * // Subscribe to an event\n * eventBus.on('user:login').subscribe(data => {\n * console.log('User logged in:', data);\n * });\n * ```\n */\nexport class EventBus {\n private eventSubject = new Subject<EventPayload>();\n\n /**\n * Emit an event with optional data\n * @param eventType - The type/name of the event\n * @param data - Optional data to send with the event\n */\n emit<T = any>(eventType: string, data?: T): void {\n this.eventSubject.next({\n type: eventType,\n data,\n timestamp: Date.now()\n });\n }\n\n /**\n * Subscribe to a specific event type\n * @param eventType - The type/name of the event to listen for\n * @returns Observable that emits the event data\n */\n on<T = any>(eventType: string): Observable<T> {\n return this.eventSubject.asObservable().pipe(\n filter(event => event.type === eventType),\n map(event => event.data as T)\n );\n }\n\n /**\n * Subscribe to multiple event types\n * @param eventTypes - Array of event types to listen for\n * @returns Observable that emits the full event payload\n */\n onMultiple(eventTypes: string[]): Observable<EventPayload> {\n return this.eventSubject.asObservable().pipe(\n filter(event => eventTypes.includes(event.type))\n );\n }\n\n /**\n * Subscribe to all events\n * @returns Observable that emits all event payloads\n */\n onAll(): Observable<EventPayload> {\n return this.eventSubject.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EventBus } from '../../core/event-bus';\n\n/**\n * NgEventEmitter - Angular service wrapper for EventBus\n * Provides Angular dependency injection support for the framework-agnostic EventBus\n * \n * @example\n * ```typescript\n * import { Component, inject } from '@angular/core';\n * import { NgEventEmitter } from 'common-libs';\n * \n * @Component({\n * selector: 'app-example',\n * template: '...'\n * })\n * export class ExampleComponent {\n * private eventEmitter = inject(NgEventEmitter);\n * \n * ngOnInit() {\n * this.eventEmitter.on('user:login').subscribe(data => {\n * console.log('User logged in:', data);\n * });\n * }\n * \n * login() {\n * this.eventEmitter.emit('user:login', { userId: '123' });\n * }\n * }\n * ```\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class NgEventEmitter extends EventBus {\n constructor() {\n super();\n }\n}\n","/**\n * Token configuration interface\n */\nexport interface TokenConfig {\n tokenKey?: string;\n refreshTokenKey?: string;\n useSessionStorage?: boolean;\n}\n\n/**\n * TokenManager - Manages authentication tokens\n * Framework-agnostic implementation using browser storage APIs\n * Handles storage, retrieval, and validation of JWT tokens\n * \n * @example\n * ```typescript\n * const tokenManager = new TokenManager();\n * \n * // Store a token\n * tokenManager.setToken('your-jwt-token');\n * \n * // Check if authenticated\n * if (tokenManager.isAuthenticated()) {\n * const userData = tokenManager.getUserFromToken();\n * }\n * ```\n */\nexport class TokenManager {\n private TOKEN_KEY = 'auth_token';\n private REFRESH_TOKEN_KEY = 'refresh_token';\n private useSessionStorage = false;\n\n /**\n * Configure token manager\n */\n configure(config: TokenConfig): void {\n if (config.tokenKey) {\n this.TOKEN_KEY = config.tokenKey;\n }\n if (config.refreshTokenKey) {\n this.REFRESH_TOKEN_KEY = config.refreshTokenKey;\n }\n if (config.useSessionStorage !== undefined) {\n this.useSessionStorage = config.useSessionStorage;\n }\n }\n\n /**\n * Get the storage mechanism based on configuration\n */\n private getStorage(): Storage {\n return this.useSessionStorage ? sessionStorage : localStorage;\n }\n\n /**\n * Set authentication token\n */\n setToken(token: string): void {\n this.getStorage().setItem(this.TOKEN_KEY, token);\n }\n\n /**\n * Get authentication token\n */\n getToken(): string | null {\n return this.getStorage().getItem(this.TOKEN_KEY);\n }\n\n /**\n * Remove authentication token\n */\n removeToken(): void {\n this.getStorage().removeItem(this.TOKEN_KEY);\n }\n\n /**\n * Set refresh token\n */\n setRefreshToken(token: string): void {\n this.getStorage().setItem(this.REFRESH_TOKEN_KEY, token);\n }\n\n /**\n * Get refresh token\n */\n getRefreshToken(): string | null {\n return this.getStorage().getItem(this.REFRESH_TOKEN_KEY);\n }\n\n /**\n * Remove refresh token\n */\n removeRefreshToken(): void {\n this.getStorage().removeItem(this.REFRESH_TOKEN_KEY);\n }\n\n /**\n * Clear all tokens\n */\n clearTokens(): void {\n this.removeToken();\n this.removeRefreshToken();\n }\n\n /**\n * Check if token exists\n */\n hasToken(): boolean {\n return !!this.getToken();\n }\n\n /**\n * Decode JWT token (without verification)\n * @param token - JWT token to decode\n * @returns Decoded token payload or null if invalid\n */\n decodeToken(token?: string): any {\n const tokenToDecode = token || this.getToken();\n if (!tokenToDecode) return null;\n\n try {\n const parts = tokenToDecode.split('.');\n if (parts.length !== 3) return null;\n\n const payload = parts[1];\n const decoded = JSON.parse(atob(payload.replace(/-/g, '+').replace(/_/g, '/')));\n return decoded;\n } catch (error) {\n console.error('Error decoding token:', error);\n return null;\n }\n }\n\n /**\n * Check if token is expired\n * @param token - Optional token to check (defaults to stored token)\n * @returns true if token is expired or invalid\n */\n isTokenExpired(token?: string): boolean {\n const decoded = this.decodeToken(token);\n if (!decoded || !decoded.exp) return true;\n\n const expirationDate = new Date(decoded.exp * 1000);\n return expirationDate <= new Date();\n }\n\n /**\n * Check if user is authenticated (has valid, non-expired token)\n */\n isAuthenticated(): boolean {\n return this.hasToken() && !this.isTokenExpired();\n }\n\n /**\n * Get token expiration date\n */\n getTokenExpirationDate(token?: string): Date | null {\n const decoded = this.decodeToken(token);\n if (!decoded || !decoded.exp) return null;\n return new Date(decoded.exp * 1000);\n }\n\n /**\n * Get user data from token\n */\n getUserFromToken(token?: string): any {\n return this.decodeToken(token);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TokenManager } from '../../core/token-manager';\n\nexport type { TokenConfig } from '../../core/token-manager';\n\n/**\n * TokenService - Angular service wrapper for TokenManager\n * Provides Angular dependency injection support for the framework-agnostic TokenManager\n * \n * @example\n * ```typescript\n * import { Component, inject } from '@angular/core';\n * import { TokenService } from 'common-libs';\n * \n * export class AuthService {\n * private tokenService = inject(TokenService);\n * \n * login(token: string) {\n * this.tokenService.setToken(token);\n * }\n * \n * isAuthenticated(): boolean {\n * return this.tokenService.isAuthenticated();\n * }\n * }\n * ```\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class TokenService extends TokenManager {\n constructor() {\n console.log(\"In TokenService of opensourcekd\")\n super();\n }\n}\n","/**\n * StorageManager - Type-safe wrapper for browser storage\n * Framework-agnostic implementation using browser storage APIs\n * Provides JSON serialization/deserialization and error handling\n * \n * @example\n * ```typescript\n * const storage = new StorageManager();\n * \n * // Store data\n * storage.setLocal('user-prefs', { theme: 'dark', lang: 'en' });\n * \n * // Retrieve data\n * const prefs = storage.getLocal('user-prefs');\n * \n * // With expiration\n * storage.setWithExpiration('temp-data', someData, 3600000); // 1 hour\n * ```\n */\nexport class StorageManager {\n /**\n * Set item in localStorage with JSON serialization\n */\n setLocal<T>(key: string, value: T): boolean {\n try {\n const serialized = JSON.stringify(value);\n localStorage.setItem(key, serialized);\n return true;\n } catch (error) {\n console.error('Error setting localStorage item:', error);\n return false;\n }\n }\n\n /**\n * Get item from localStorage with JSON deserialization\n */\n getLocal<T>(key: string, defaultValue?: T): T | null {\n try {\n const item = localStorage.getItem(key);\n if (item === null) {\n return defaultValue !== undefined ? defaultValue : null;\n }\n return JSON.parse(item) as T;\n } catch (error) {\n console.error('Error getting localStorage item:', error);\n return defaultValue !== undefined ? defaultValue : null;\n }\n }\n\n /**\n * Remove item from localStorage\n */\n removeLocal(key: string): void {\n try {\n localStorage.removeItem(key);\n } catch (error) {\n console.error('Error removing localStorage item:', error);\n }\n }\n\n /**\n * Clear all localStorage items\n */\n clearLocal(): void {\n try {\n localStorage.clear();\n } catch (error) {\n console.error('Error clearing localStorage:', error);\n }\n }\n\n /**\n * Check if key exists in localStorage\n */\n hasLocal(key: string): boolean {\n try {\n return localStorage.getItem(key) !== null;\n } catch (error) {\n console.error('Error checking localStorage key:', error);\n return false;\n }\n }\n\n /**\n * Get all localStorage keys\n */\n getLocalKeys(): string[] {\n try {\n return Object.keys(localStorage);\n } catch (error) {\n console.error('Error getting localStorage keys:', error);\n return [];\n }\n }\n\n /**\n * Set item in sessionStorage with JSON serialization\n */\n setSession<T>(key: string, value: T): boolean {\n try {\n const serialized = JSON.stringify(value);\n sessionStorage.setItem(key, serialized);\n return true;\n } catch (error) {\n console.error('Error setting sessionStorage item:', error);\n return false;\n }\n }\n\n /**\n * Get item from sessionStorage with JSON deserialization\n */\n getSession<T>(key: string, defaultValue?: T): T | null {\n try {\n const item = sessionStorage.getItem(key);\n if (item === null) {\n return defaultValue !== undefined ? defaultValue : null;\n }\n return JSON.parse(item) as T;\n } catch (error) {\n console.error('Error getting sessionStorage item:', error);\n return defaultValue !== undefined ? defaultValue : null;\n }\n }\n\n /**\n * Remove item from sessionStorage\n */\n removeSession(key: string): void {\n try {\n sessionStorage.removeItem(key);\n } catch (error) {\n console.error('Error removing sessionStorage item:', error);\n }\n }\n\n /**\n * Clear all sessionStorage items\n */\n clearSession(): void {\n try {\n sessionStorage.clear();\n } catch (error) {\n console.error('Error clearing sessionStorage:', error);\n }\n }\n\n /**\n * Check if key exists in sessionStorage\n */\n hasSession(key: string): boolean {\n try {\n return sessionStorage.getItem(key) !== null;\n } catch (error) {\n console.error('Error checking sessionStorage key:', error);\n return false;\n }\n }\n\n /**\n * Get all sessionStorage keys\n */\n getSessionKeys(): string[] {\n try {\n return Object.keys(sessionStorage);\n } catch (error) {\n console.error('Error getting sessionStorage keys:', error);\n return [];\n }\n }\n\n /**\n * Set item with expiration time\n * @param key - Storage key\n * @param value - Value to store\n * @param expirationMs - Expiration time in milliseconds\n * @param useSession - Use sessionStorage instead of localStorage\n */\n setWithExpiration<T>(\n key: string,\n value: T,\n expirationMs: number,\n useSession = false\n ): boolean {\n const item = {\n value,\n expiration: Date.now() + expirationMs\n };\n return useSession\n ? this.setSession(key, item)\n : this.setLocal(key, item);\n }\n\n /**\n * Get item with expiration check\n * Returns null if item is expired\n */\n getWithExpiration<T>(key: string, useSession = false): T | null {\n const item = useSession\n ? this.getSession<{ value: T; expiration: number }>(key)\n : this.getLocal<{ value: T; expiration: number }>(key);\n\n if (!item) return null;\n\n if (Date.now() > item.expiration) {\n // Item expired, remove it\n if (useSession) {\n this.removeSession(key);\n } else {\n this.removeLocal(key);\n }\n return null;\n }\n\n return item.value;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { StorageManager } from '../../core/storage-manager';\n\n/**\n * StorageService - Angular service wrapper for StorageManager\n * Provides Angular dependency injection support for the framework-agnostic StorageManager\n * \n * @example\n * ```typescript\n * import { Component, inject } from '@angular/core';\n * import { StorageService } from 'common-libs';\n * \n * export class UserPreferencesService {\n * private storage = inject(StorageService);\n * \n * savePreferences(prefs: any) {\n * this.storage.setLocal('user-prefs', prefs);\n * }\n * \n * getPreferences() {\n * return this.storage.getLocal('user-prefs');\n * }\n * }\n * ```\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class StorageService extends StorageManager {\n constructor() {\n super();\n }\n}\n","/**\n * Log level enum\n */\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n NONE = 4\n}\n\n/**\n * Logger configuration\n */\nexport interface LoggerConfig {\n level?: LogLevel;\n enableTimestamp?: boolean;\n enableStackTrace?: boolean;\n prefix?: string;\n}\n\n/**\n * Logger - Centralized logging utility\n * Framework-agnostic implementation using browser console APIs\n * Supports different log levels and can be configured globally\n * \n * @example\n * ```typescript\n * const logger = new Logger();\n * \n * // Configure\n * logger.configure({\n * level: LogLevel.DEBUG,\n * enableTimestamp: true,\n * prefix: 'MyApp'\n * });\n * \n * // Use\n * logger.info('User logged in', { userId: '123' });\n * logger.error('Failed to load data', error);\n * ```\n */\nexport class Logger {\n private config: LoggerConfig = {\n level: LogLevel.INFO,\n enableTimestamp: true,\n enableStackTrace: false,\n prefix: ''\n };\n\n /**\n * Configure the logger\n */\n configure(config: LoggerConfig): void {\n this.config = { ...this.config, ...config };\n }\n\n /**\n * Set log level\n */\n setLevel(level: LogLevel): void {\n this.config.level = level;\n }\n\n /**\n * Get current log level\n */\n getLevel(): LogLevel {\n return this.config.level!;\n }\n\n /**\n * Format log message with timestamp and prefix\n */\n private formatMessage(message: string, level: string): string {\n const parts: string[] = [];\n\n if (this.config.enableTimestamp) {\n parts.push(`[${new Date().toISOString()}]`);\n }\n\n if (this.config.prefix) {\n parts.push(`[${this.config.prefix}]`);\n }\n\n parts.push(`[${level}]`);\n parts.push(message);\n\n return parts.join(' ');\n }\n\n /**\n * Check if log level should be logged\n */\n private shouldLog(level: LogLevel): boolean {\n return level >= this.config.level!;\n }\n\n /**\n * Log debug message\n */\n debug(message: string, ...args: any[]): void {\n if (this.shouldLog(LogLevel.DEBUG)) {\n console.debug(this.formatMessage(message, 'DEBUG'), ...args);\n }\n }\n\n /**\n * Log info message\n */\n info(message: string, ...args: any[]): void {\n if (this.shouldLog(LogLevel.INFO)) {\n console.info(this.formatMessage(message, 'INFO'), ...args);\n }\n }\n\n /**\n * Log warning message\n */\n warn(message: string, ...args: any[]): void {\n if (this.shouldLog(LogLevel.WARN)) {\n console.warn(this.formatMessage(message, 'WARN'), ...args);\n }\n }\n\n /**\n * Log error message\n */\n error(message: string, error?: any, ...args: any[]): void {\n if (this.shouldLog(LogLevel.ERROR)) {\n console.error(this.formatMessage(message, 'ERROR'), ...args);\n \n if (error) {\n console.error(error);\n \n if (this.config.enableStackTrace && error?.stack) {\n console.error('Stack trace:', error.stack);\n }\n }\n }\n }\n\n /**\n * Log a group of messages\n */\n group(label: string, callback: () => void): void {\n if (this.shouldLog(LogLevel.INFO)) {\n console.group(this.formatMessage(label, 'GROUP'));\n callback();\n console.groupEnd();\n }\n }\n\n /**\n * Log a collapsed group of messages\n */\n groupCollapsed(label: string, callback: () => void): void {\n if (this.shouldLog(LogLevel.INFO)) {\n console.groupCollapsed(this.formatMessage(label, 'GROUP'));\n callback();\n console.groupEnd();\n }\n }\n\n /**\n * Log a table (useful for arrays of objects)\n */\n table(data: any, columns?: string[]): void {\n if (this.shouldLog(LogLevel.INFO)) {\n console.table(data, columns);\n }\n }\n\n /**\n * Log execution time of a function\n */\n async time<T>(label: string, fn: () => Promise<T> | T): Promise<T> {\n const start = performance.now();\n try {\n const result = await fn();\n const end = performance.now();\n const duration = (end - start).toFixed(2);\n this.info(`${label} completed in ${duration}ms`);\n return result;\n } catch (error) {\n const end = performance.now();\n const duration = (end - start).toFixed(2);\n this.error(`${label} failed after ${duration}ms`, error);\n throw error;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Logger } from '../../core/logger';\n\nexport { LogLevel } from '../../core/logger';\nexport type { LoggerConfig } from '../../core/logger';\n\n/**\n * LoggerService - Angular service wrapper for Logger\n * Provides Angular dependency injection support for the framework-agnostic Logger\n * \n * @example\n * ```typescript\n * import { Component, inject } from '@angular/core';\n * import { LoggerService, LogLevel } from 'common-libs';\n * \n * export class MyService {\n * private logger = inject(LoggerService);\n * \n * constructor() {\n * this.logger.configure({\n * level: LogLevel.DEBUG,\n * prefix: 'MyApp'\n * });\n * }\n * \n * doSomething() {\n * this.logger.info('Doing something');\n * }\n * }\n * ```\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class LoggerService extends Logger {\n constructor() {\n super();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { TokenService } from './token.service';\n\n/**\n * PermissionService - Manages user permissions and roles\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionService {\n private tokenService = inject(TokenService);\n\n /**\n * Check if user has a specific permission\n */\n hasPermission(permission: string): boolean {\n const user = this.tokenService.getUserFromToken();\n const permissions = user?.permissions || [];\n return permissions.includes(permission);\n }\n\n /**\n * Check if user has any of the specified permissions\n */\n hasAnyPermission(permissions: string[]): boolean {\n return permissions.some(permission => this.hasPermission(permission));\n }\n\n /**\n * Check if user has all of the specified permissions\n */\n hasAllPermissions(permissions: string[]): boolean {\n return permissions.every(permission => this.hasPermission(permission));\n }\n\n /**\n * Check if user has a specific role\n */\n hasRole(role: string): boolean {\n const user = this.tokenService.getUserFromToken();\n const roles = user?.roles || [];\n return roles.includes(role);\n }\n\n /**\n * Check if user has any of the specified roles\n */\n hasAnyRole(roles: string[]): boolean {\n return roles.some(role => this.hasRole(role));\n }\n\n /**\n * Check if user has all of the specified roles\n */\n hasAllRoles(roles: string[]): boolean {\n return roles.every(role => this.hasRole(role));\n }\n\n /**\n * Get all user permissions\n */\n getPermissions(): string[] {\n const user = this.tokenService.getUserFromToken();\n return user?.permissions || [];\n }\n\n /**\n * Get all user roles\n */\n getRoles(): string[] {\n const user = this.tokenService.getUserFromToken();\n return user?.roles || [];\n }\n\n /**\n * Get user ID from token\n */\n getUserId(): string | null {\n const user = this.tokenService.getUserFromToken();\n return user?.sub || user?.id || user?.userId || null;\n }\n\n /**\n * Get username from token\n */\n getUsername(): string | null {\n const user = this.tokenService.getUserFromToken();\n return user?.username || user?.name || user?.email || null;\n }\n\n /**\n * Get user email from token\n */\n getUserEmail(): string | null {\n const user = this.tokenService.getUserFromToken();\n return user?.email || null;\n }\n}\n","import { inject } from '@angular/core';\nimport { Router, CanActivateFn, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { TokenService } from '../services/token.service';\n\n/**\n * Auth guard configuration\n */\nexport interface AuthGuardConfig {\n redirectUrl?: string;\n checkExpiration?: boolean;\n}\n\n/**\n * Factory function to create an auth guard with configuration\n * \n * @example\n * ```typescript\n * // In routes\n * {\n * path: 'dashboard',\n * component: DashboardComponent,\n * canActivate: [createAuthGuard({ redirectUrl: '/login' })]\n * }\n * ```\n */\nexport function createAuthGuard(config: AuthGuardConfig = {}): CanActivateFn {\n return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const tokenService = inject(TokenService);\n const router = inject(Router);\n\n const redirectUrl = config.redirectUrl || '/login';\n const checkExpiration = config.checkExpiration !== false;\n\n const hasToken = tokenService.hasToken();\n const isExpired = checkExpiration ? tokenService.isTokenExpired() : false;\n\n if (hasToken && !isExpired) {\n return true;\n }\n\n // Store the attempted URL for redirecting after login\n const returnUrl = state.url;\n router.navigate([redirectUrl], { \n queryParams: { returnUrl },\n queryParamsHandling: 'merge' \n });\n\n return false;\n };\n}\n\n/**\n * Default auth guard - redirects to '/login' if not authenticated\n */\nexport const authGuard: CanActivateFn = createAuthGuard();\n\n/**\n * Permission-based guard factory\n * Checks if user has required permissions from token\n * \n * @example\n * ```typescript\n * {\n * path: 'admin',\n * component: AdminComponent,\n * canActivate: [createPermissionGuard(['admin', 'editor'])]\n * }\n * ```\n */\nexport function createPermissionGuard(\n requiredPermissions: string[],\n config: AuthGuardConfig = {}\n): CanActivateFn {\n return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const tokenService = inject(TokenService);\n const router = inject(Router);\n\n const redirectUrl = config.redirectUrl || '/unauthorized';\n\n // First check authentication\n if (!tokenService.isAuthenticated()) {\n router.navigate(['/login'], { \n queryParams: { returnUrl: state.url }\n });\n return false;\n }\n\n // Check permissions\n const user = tokenService.getUserFromToken();\n const userPermissions = user?.permissions || user?.roles || [];\n\n const hasPermission = requiredPermissions.some(permission =>\n userPermissions.includes(permission)\n );\n\n if (!hasPermission) {\n router.navigate([redirectUrl]);\n return false;\n }\n\n return true;\n };\n}\n\n/**\n * Role-based guard factory\n * Checks if user has required role from token\n * \n * @example\n * ```typescript\n * {\n * path: 'admin',\n * component: AdminComponent,\n * canActivate: [createRoleGuard(['admin'])]\n * }\n * ```\n */\nexport function createRoleGuard(\n requiredRoles: string[],\n config: AuthGuardConfig = {}\n): CanActivateFn {\n return createPermissionGuard(requiredRoles, config);\n}\n","import { HttpInterceptorFn, HttpRequest, HttpHandlerFn, HttpEvent } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TokenService } from '../services/token.service';\n\n/**\n * Auth interceptor configuration\n */\nexport interface AuthInterceptorConfig {\n headerName?: string;\n tokenPrefix?: string;\n excludedUrls?: string[];\n}\n\nconst defaultConfig: AuthInterceptorConfig = {\n headerName: 'Authorization',\n tokenPrefix: 'Bearer',\n excludedUrls: []\n};\n\nlet interceptorConfig = { ...defaultConfig };\n\n/**\n * Configure the auth interceptor\n */\nexport function configureAuthInterceptor(config: AuthInterceptorConfig): void {\n interceptorConfig = { ...defaultConfig, ...config };\n}\n\n/**\n * Auth Interceptor - Automatically adds authentication token to HTTP requests\n * \n * @example\n * ```typescript\n * // In app.config.ts\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideHttpClient(\n * withInterceptors([authInterceptor])\n * )\n * ]\n * };\n * ```\n */\nexport const authInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn\n): Observable<HttpEvent<unknown>> => {\n const tokenService = inject(TokenService);\n const config = interceptorConfig;\n\n // Check if URL should be excluded\n const isExcluded = config.excludedUrls?.some(url =>\n req.url.includes(url)\n );\n\n if (isExcluded) {\n return next(req);\n }\n\n // Get token and add to request if available\n const token = tokenService.getToken();\n\n if (token) {\n const authReq = req.clone({\n setHeaders: {\n [config.headerName!]: `${config.tokenPrefix} ${token}`\n }\n });\n return next(authReq);\n }\n\n return next(req);\n};\n","import { HttpInterceptorFn, HttpRequest, HttpHandlerFn, HttpEvent, HttpErrorResponse } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Observable, throwError, timer } from 'rxjs';\nimport { catchError, retry } from 'rxjs/operators';\nimport { LoggerService } from '../services/logger.service';\n\n/**\n * Error handling configuration\n */\nexport interface ErrorHandlingConfig {\n enableLogging?: boolean;\n retryAttempts?: number;\n retryDelay?: number;\n retryStatusCodes?: number[];\n excludedUrls?: string[];\n}\n\nconst defaultConfig: ErrorHandlingConfig = {\n enableLogging: true,\n retryAttempts: 0,\n retryDelay: 1000,\n retryStatusCodes: [408, 429, 500, 502, 503, 504],\n excludedUrls: []\n};\n\nlet errorConfig = { ...defaultConfig };\n\n/**\n * Configure the error handling interceptor\n */\nexport function configureErrorHandling(config: ErrorHandlingConfig): void {\n errorConfig = { ...defaultConfig, ...config };\n}\n\n/**\n * Error handling interceptor - Handles HTTP errors and retries\n * \n * @example\n * ```typescript\n * // In app.config.ts\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideHttpClient(\n * withInterceptors([errorHandlingInterceptor])\n * )\n * ]\n * };\n * \n * // Configure retry behavior\n * configureErrorHandling({\n * retryAttempts: 3,\n * retryDelay: 2000,\n * retryStatusCodes: [500, 502, 503]\n * });\n * ```\n */\nexport const errorHandlingInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn\n): Observable<HttpEvent<unknown>> => {\n const logger = inject(LoggerService);\n const config = errorConfig;\n\n // Check if URL should be excluded\n const isExcluded = config.excludedUrls?.some(url =>\n req.url.includes(url)\n );\n\n if (isExcluded) {\n return next(req);\n }\n\n return next(req).pipe(\n // Retry logic with exponential backoff\n retry({\n count: config.retryAttempts!,\n delay: (error: HttpErrorResponse, retryCount) => {\n // Only retry for specific status codes\n if (!config.retryStatusCodes?.includes(error.status)) {\n return throwError(() => error);\n }\n\n const delay = config.retryDelay! * Math.pow(2, retryCount - 1);\n \n if (config.enableLogging) {\n logger.warn(\n `Retrying request (attempt ${retryCount}) after ${delay}ms`,\n { url: req.url, status: error.status }\n );\n }\n\n return timer(delay);\n }\n }),\n // Error handling\n catchError((error: HttpErrorResponse) => {\n if (config.enableLogging) {\n logger.error('HTTP request failed', error, {\n url: req.url,\n status: error.status,\n message: error.message\n });\n }\n\n return throwError(() => error);\n })\n );\n};\n\n/**\n * HTTP Error class with additional context\n */\nexport class HttpError extends Error {\n constructor(\n public status: number,\n public statusText: string,\n public url: string,\n public originalError: HttpErrorResponse\n ) {\n super(`HTTP ${status} ${statusText}: ${url}`);\n this.name = 'HttpError';\n }\n}\n\n/**\n * Parse HTTP error and return user-friendly message\n */\nexport function parseHttpError(error: HttpErrorResponse): string {\n if (error.error instanceof ErrorEvent) {\n // Client-side error\n return `Network error: ${error.error.message}`;\n } else {\n // Server-side error\n const errorMessage = error.error?.message || error.message || 'Unknown error';\n return `Server error (${error.status}): ${errorMessage}`;\n }\n}\n\n/**\n * Check if error is a network error\n */\nexport function isNetworkError(error: HttpErrorResponse): boolean {\n return error.error instanceof ErrorEvent || error.status === 0;\n}\n\n/**\n * Check if error is a server error (5xx)\n */\nexport function isServerError(error: HttpErrorResponse): boolean {\n return error.status >= 500 && error.status < 600;\n}\n\n/**\n * Check if error is a client error (4xx)\n */\nexport function isClientError(error: HttpErrorResponse): boolean {\n return error.status >= 400 && error.status < 500;\n}\n","import { HttpInterceptorFn, HttpRequest, HttpHandlerFn, HttpEvent, HttpResponse } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { LoggerService } from '../services/logger.service';\n\n/**\n * Cache entry interface\n */\ninterface CacheEntry {\n response: HttpResponse<any>;\n timestamp: number;\n}\n\n/**\n * Cache configuration\n */\nexport interface CacheConfig {\n enabled?: boolean;\n maxAge?: number; // milliseconds\n excludedUrls?: string[];\n cacheableUrls?: string[];\n cacheMethods?: string[];\n}\n\nconst defaultCacheConfig: CacheConfig = {\n enabled: true,\n maxAge: 60000, // 1 minute\n excludedUrls: [],\n cacheableUrls: [],\n cacheMethods: ['GET']\n};\n\nlet cacheConfig = { ...defaultCacheConfig };\nconst cache = new Map<string, CacheEntry>();\nconst MAX_CACHE_SIZE = 100; // Maximum number of cached entries\n\n/**\n * Configure the caching interceptor\n */\nexport function configureCaching(config: CacheConfig): void {\n cacheConfig = { ...defaultCacheConfig, ...config };\n}\n\n/**\n * Clean up expired cache entries\n */\nfunction cleanupCache(): void {\n const now = Date.now();\n const keysToDelete: string[] = [];\n\n cache.forEach((entry, key) => {\n const age = now - entry.timestamp;\n if (age >= cacheConfig.maxAge!) {\n keysToDelete.push(key);\n }\n });\n\n keysToDelete.forEach(key => cache.delete(key));\n}\n\n/**\n * Evict oldest cache entry if cache is full\n */\nfunction evictOldestIfFull(): void {\n if (cache.size >= MAX_CACHE_SIZE) {\n let oldestKey: string | null = null;\n let oldestTimestamp = Infinity;\n\n cache.forEach((entry, key) => {\n if (entry.timestamp < oldestTimestamp) {\n oldestTimestamp = entry.timestamp;\n oldestKey = key;\n }\n });\n\n if (oldestKey) {\n cache.delete(oldestKey);\n }\n }\n}\n\n/**\n * Clear all cached entries\n */\nexport function clearCache(): void {\n cache.clear();\n}\n\n/**\n * Clear cache entry for specific URL\n */\nexport function clearCacheEntry(url: string): void {\n cache.delete(url);\n}\n\n/**\n * Caching interceptor - Caches HTTP GET requests\n * \n * @example\n * ```typescript\n * // In app.config.ts\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideHttpClient(\n * withInterceptors([cachingInterceptor])\n * )\n * ]\n * };\n * \n * // Configure caching\n * configureCaching({\n * enabled: true,\n * maxAge: 300000, // 5 minutes\n * cacheableUrls: ['/api/users', '/api/products']\n * });\n * ```\n */\nexport const cachingInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn\n): Observable<HttpEvent<unknown>> => {\n const logger = inject(LoggerService);\n const config = cacheConfig;\n\n // Only cache if enabled\n if (!config.enabled) {\n return next(req);\n }\n\n // Only cache specific methods (default: GET)\n if (!config.cacheMethods?.includes(req.method)) {\n return next(req);\n }\n\n // Check if URL should be excluded\n const isExcluded = config.excludedUrls?.some(url =>\n req.url.includes(url)\n );\n\n if (isExcluded) {\n return next(req);\n }\n\n // Check if URL is explicitly cacheable (if list is provided)\n if (config.cacheableUrls && config.cacheableUrls.length > 0) {\n const isCacheable = config.cacheableUrls.some(url =>\n req.url.includes(url)\n );\n\n if (!isCacheable) {\n return next(req);\n }\n }\n\n const cacheKey = req.urlWithParams;\n\n // Check cache\n const cached = cache.get(cacheKey);\n if (cached) {\n const age = Date.now() - cached.timestamp;\n if (age < config.maxAge!) {\n logger.debug(`Cache hit for ${cacheKey}`, { age });\n return new Observable(observer => {\n observer.next(cached.response.clone());\n observer.complete();\n });\n } else {\n // Cache expired\n cache.delete(cacheKey);\n }\n }\n\n // Clean up expired entries periodically\n if (Math.random() < 0.1) { // 10% chance on each request\n cleanupCache();\n }\n\n // Make request and cache response\n return next(req).pipe(\n tap(event => {\n if (event instanceof HttpResponse) {\n evictOldestIfFull();\n cache.set(cacheKey, {\n response: event.clone(),\n timestamp: Date.now()\n });\n logger.debug(`Cached response for ${cacheKey}`);\n }\n })\n );\n};\n"],"names":["Subject","filter","map","NgEventEmitter","Injectable","TokenService","StorageService","LogLevel","LoggerService","PermissionService","inject","router","Router","defaultConfig","retry","throwError","timer","catchError","Observable","tap","HttpResponse"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.cjs","sources":["../../node_modules/tslib/tslib.es6.js","../../src/core/event-bus.ts","../../src/angular/services/ng-event-emitter.service.ts","../../src/core/token-manager.ts","../../src/angular/services/token.service.ts","../../src/core/storage-manager.ts","../../src/angular/services/storage.service.ts","../../src/core/logger.ts","../../src/angular/services/logger.service.ts","../../src/angular/services/permission.service.ts","../../src/angular/guards/auth.guard.ts","../../src/angular/interceptors/auth.interceptor.ts","../../src/angular/interceptors/error-handling.interceptor.ts","../../src/angular/interceptors/caching.interceptor.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { Subject, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n/**\n * Event payload interface\n */\nexport interface EventPayload<T = any> {\n type: string;\n data: T;\n timestamp?: number;\n}\n\n/**\n * EventBus - A centralized event bus for application-wide communication\n * Framework-agnostic implementation using only RxJS\n * \n * @example\n * ```typescript\n * // Create an instance\n * const eventBus = new EventBus();\n * \n * // Emit an event\n * eventBus.emit('user:login', { userId: '123', username: 'john' });\n * \n * // Subscribe to an event\n * eventBus.on('user:login').subscribe(data => {\n * console.log('User logged in:', data);\n * });\n * ```\n */\nexport class EventBus {\n private eventSubject = new Subject<EventPayload>();\n\n /**\n * Emit an event with optional data\n * @param eventType - The type/name of the event\n * @param data - Optional data to send with the event\n */\n emit<T = any>(eventType: string, data?: T): void {\n this.eventSubject.next({\n type: eventType,\n data,\n timestamp: Date.now()\n });\n }\n\n /**\n * Subscribe to a specific event type\n * @param eventType - The type/name of the event to listen for\n * @returns Observable that emits the event data\n */\n on<T = any>(eventType: string): Observable<T> {\n return this.eventSubject.asObservable().pipe(\n filter(event => event.type === eventType),\n map(event => event.data as T)\n );\n }\n\n /**\n * Subscribe to multiple event types\n * @param eventTypes - Array of event types to listen for\n * @returns Observable that emits the full event payload\n */\n onMultiple(eventTypes: string[]): Observable<EventPayload> {\n return this.eventSubject.asObservable().pipe(\n filter(event => eventTypes.includes(event.type))\n );\n }\n\n /**\n * Subscribe to all events\n * @returns Observable that emits all event payloads\n */\n onAll(): Observable<EventPayload> {\n return this.eventSubject.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EventBus } from '../../core/event-bus';\n\n/**\n * NgEventEmitter - Angular service wrapper for EventBus\n * Provides Angular dependency injection support for the framework-agnostic EventBus\n * \n * @example\n * ```typescript\n * import { Component, inject } from '@angular/core';\n * import { NgEventEmitter } from 'common-libs';\n * \n * @Component({\n * selector: 'app-example',\n * template: '...'\n * })\n * export class ExampleComponent {\n * private eventEmitter = inject(NgEventEmitter);\n * \n * ngOnInit() {\n * this.eventEmitter.on('user:login').subscribe(data => {\n * console.log('User logged in:', data);\n * });\n * }\n * \n * login() {\n * this.eventEmitter.emit('user:login', { userId: '123' });\n * }\n * }\n * ```\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class NgEventEmitter extends EventBus {\n constructor() {\n super();\n }\n}\n","/**\n * Token configuration interface\n */\nexport interface TokenConfig {\n tokenKey?: string;\n refreshTokenKey?: string;\n useSessionStorage?: boolean;\n}\n\n/**\n * TokenManager - Manages authentication tokens\n * Framework-agnostic implementation using browser storage APIs\n * Handles storage, retrieval, and validation of JWT tokens\n * \n * @example\n * ```typescript\n * const tokenManager = new TokenManager();\n * \n * // Store a token\n * tokenManager.setToken('your-jwt-token');\n * \n * // Check if authenticated\n * if (tokenManager.isAuthenticated()) {\n * const userData = tokenManager.getUserFromToken();\n * }\n * ```\n */\nexport class TokenManager {\n private TOKEN_KEY = 'auth_token';\n private REFRESH_TOKEN_KEY = 'refresh_token';\n private useSessionStorage = false;\n\n /**\n * Configure token manager\n */\n configure(config: TokenConfig): void {\n if (config.tokenKey) {\n this.TOKEN_KEY = config.tokenKey;\n }\n if (config.refreshTokenKey) {\n this.REFRESH_TOKEN_KEY = config.refreshTokenKey;\n }\n if (config.useSessionStorage !== undefined) {\n this.useSessionStorage = config.useSessionStorage;\n }\n }\n\n /**\n * Get the storage mechanism based on configuration\n */\n private getStorage(): Storage {\n return this.useSessionStorage ? sessionStorage : localStorage;\n }\n\n /**\n * Set authentication token\n */\n setToken(token: string): void {\n this.getStorage().setItem(this.TOKEN_KEY, token);\n }\n\n /**\n * Get authentication token\n */\n getToken(): string | null {\n return this.getStorage().getItem(this.TOKEN_KEY);\n }\n\n /**\n * Remove authentication token\n */\n removeToken(): void {\n this.getStorage().removeItem(this.TOKEN_KEY);\n }\n\n /**\n * Set refresh token\n */\n setRefreshToken(token: string): void {\n this.getStorage().setItem(this.REFRESH_TOKEN_KEY, token);\n }\n\n /**\n * Get refresh token\n */\n getRefreshToken(): string | null {\n return this.getStorage().getItem(this.REFRESH_TOKEN_KEY);\n }\n\n /**\n * Remove refresh token\n */\n removeRefreshToken(): void {\n this.getStorage().removeItem(this.REFRESH_TOKEN_KEY);\n }\n\n /**\n * Clear all tokens\n */\n clearTokens(): void {\n this.removeToken();\n this.removeRefreshToken();\n }\n\n /**\n * Check if token exists\n */\n hasToken(): boolean {\n return !!this.getToken();\n }\n\n /**\n * Decode JWT token (without verification)\n * @param token - JWT token to decode\n * @returns Decoded token payload or null if invalid\n */\n decodeToken(token?: string): any {\n const tokenToDecode = token || this.getToken();\n if (!tokenToDecode) return null;\n\n try {\n const parts = tokenToDecode.split('.');\n if (parts.length !== 3) return null;\n\n const payload = parts[1];\n const decoded = JSON.parse(atob(payload.replace(/-/g, '+').replace(/_/g, '/')));\n return decoded;\n } catch (error) {\n console.error('Error decoding token:', error);\n return null;\n }\n }\n\n /**\n * Check if token is expired\n * @param token - Optional token to check (defaults to stored token)\n * @returns true if token is expired or invalid\n */\n isTokenExpired(token?: string): boolean {\n const decoded = this.decodeToken(token);\n if (!decoded || !decoded.exp) return true;\n\n const expirationDate = new Date(decoded.exp * 1000);\n return expirationDate <= new Date();\n }\n\n /**\n * Check if user is authenticated (has valid, non-expired token)\n */\n isAuthenticated(): boolean {\n return this.hasToken() && !this.isTokenExpired();\n }\n\n /**\n * Get token expiration date\n */\n getTokenExpirationDate(token?: string): Date | null {\n const decoded = this.decodeToken(token);\n if (!decoded || !decoded.exp) return null;\n return new Date(decoded.exp * 1000);\n }\n\n /**\n * Get user data from token\n */\n getUserFromToken(token?: string): any {\n return this.decodeToken(token);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TokenManager } from '../../core/token-manager';\n\nexport type { TokenConfig } from '../../core/token-manager';\n\n/**\n * TokenService - Angular service wrapper for TokenManager\n * Provides Angular dependency injection support for the framework-agnostic TokenManager\n * \n * @example\n * ```typescript\n * import { Component, inject } from '@angular/core';\n * import { TokenService } from 'common-libs';\n * \n * export class AuthService {\n * private tokenService = inject(TokenService);\n * \n * login(token: string) {\n * this.tokenService.setToken(token);\n * }\n * \n * isAuthenticated(): boolean {\n * return this.tokenService.isAuthenticated();\n * }\n * }\n * ```\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class TokenService extends TokenManager {\n constructor() {\n console.log(\"In TokenService of opensourcekd 1\")\n super();\n }\n}\n","/**\n * StorageManager - Type-safe wrapper for browser storage\n * Framework-agnostic implementation using browser storage APIs\n * Provides JSON serialization/deserialization and error handling\n * \n * @example\n * ```typescript\n * const storage = new StorageManager();\n * \n * // Store data\n * storage.setLocal('user-prefs', { theme: 'dark', lang: 'en' });\n * \n * // Retrieve data\n * const prefs = storage.getLocal('user-prefs');\n * \n * // With expiration\n * storage.setWithExpiration('temp-data', someData, 3600000); // 1 hour\n * ```\n */\nexport class StorageManager {\n /**\n * Set item in localStorage with JSON serialization\n */\n setLocal<T>(key: string, value: T): boolean {\n try {\n const serialized = JSON.stringify(value);\n localStorage.setItem(key, serialized);\n return true;\n } catch (error) {\n console.error('Error setting localStorage item:', error);\n return false;\n }\n }\n\n /**\n * Get item from localStorage with JSON deserialization\n */\n getLocal<T>(key: string, defaultValue?: T): T | null {\n try {\n const item = localStorage.getItem(key);\n if (item === null) {\n return defaultValue !== undefined ? defaultValue : null;\n }\n return JSON.parse(item) as T;\n } catch (error) {\n console.error('Error getting localStorage item:', error);\n return defaultValue !== undefined ? defaultValue : null;\n }\n }\n\n /**\n * Remove item from localStorage\n */\n removeLocal(key: string): void {\n try {\n localStorage.removeItem(key);\n } catch (error) {\n console.error('Error removing localStorage item:', error);\n }\n }\n\n /**\n * Clear all localStorage items\n */\n clearLocal(): void {\n try {\n localStorage.clear();\n } catch (error) {\n console.error('Error clearing localStorage:', error);\n }\n }\n\n /**\n * Check if key exists in localStorage\n */\n hasLocal(key: string): boolean {\n try {\n return localStorage.getItem(key) !== null;\n } catch (error) {\n console.error('Error checking localStorage key:', error);\n return false;\n }\n }\n\n /**\n * Get all localStorage keys\n */\n getLocalKeys(): string[] {\n try {\n return Object.keys(localStorage);\n } catch (error) {\n console.error('Error getting localStorage keys:', error);\n return [];\n }\n }\n\n /**\n * Set item in sessionStorage with JSON serialization\n */\n setSession<T>(key: string, value: T): boolean {\n try {\n const serialized = JSON.stringify(value);\n sessionStorage.setItem(key, serialized);\n return true;\n } catch (error) {\n console.error('Error setting sessionStorage item:', error);\n return false;\n }\n }\n\n /**\n * Get item from sessionStorage with JSON deserialization\n */\n getSession<T>(key: string, defaultValue?: T): T | null {\n try {\n const item = sessionStorage.getItem(key);\n if (item === null) {\n return defaultValue !== undefined ? defaultValue : null;\n }\n return JSON.parse(item) as T;\n } catch (error) {\n console.error('Error getting sessionStorage item:', error);\n return defaultValue !== undefined ? defaultValue : null;\n }\n }\n\n /**\n * Remove item from sessionStorage\n */\n removeSession(key: string): void {\n try {\n sessionStorage.removeItem(key);\n } catch (error) {\n console.error('Error removing sessionStorage item:', error);\n }\n }\n\n /**\n * Clear all sessionStorage items\n */\n clearSession(): void {\n try {\n sessionStorage.clear();\n } catch (error) {\n console.error('Error clearing sessionStorage:', error);\n }\n }\n\n /**\n * Check if key exists in sessionStorage\n */\n hasSession(key: string): boolean {\n try {\n return sessionStorage.getItem(key) !== null;\n } catch (error) {\n console.error('Error checking sessionStorage key:', error);\n return false;\n }\n }\n\n /**\n * Get all sessionStorage keys\n */\n getSessionKeys(): string[] {\n try {\n return Object.keys(sessionStorage);\n } catch (error) {\n console.error('Error getting sessionStorage keys:', error);\n return [];\n }\n }\n\n /**\n * Set item with expiration time\n * @param key - Storage key\n * @param value - Value to store\n * @param expirationMs - Expiration time in milliseconds\n * @param useSession - Use sessionStorage instead of localStorage\n */\n setWithExpiration<T>(\n key: string,\n value: T,\n expirationMs: number,\n useSession = false\n ): boolean {\n const item = {\n value,\n expiration: Date.now() + expirationMs\n };\n return useSession\n ? this.setSession(key, item)\n : this.setLocal(key, item);\n }\n\n /**\n * Get item with expiration check\n * Returns null if item is expired\n */\n getWithExpiration<T>(key: string, useSession = false): T | null {\n const item = useSession\n ? this.getSession<{ value: T; expiration: number }>(key)\n : this.getLocal<{ value: T; expiration: number }>(key);\n\n if (!item) return null;\n\n if (Date.now() > item.expiration) {\n // Item expired, remove it\n if (useSession) {\n this.removeSession(key);\n } else {\n this.removeLocal(key);\n }\n return null;\n }\n\n return item.value;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { StorageManager } from '../../core/storage-manager';\n\n/**\n * StorageService - Angular service wrapper for StorageManager\n * Provides Angular dependency injection support for the framework-agnostic StorageManager\n * \n * @example\n * ```typescript\n * import { Component, inject } from '@angular/core';\n * import { StorageService } from 'common-libs';\n * \n * export class UserPreferencesService {\n * private storage = inject(StorageService);\n * \n * savePreferences(prefs: any) {\n * this.storage.setLocal('user-prefs', prefs);\n * }\n * \n * getPreferences() {\n * return this.storage.getLocal('user-prefs');\n * }\n * }\n * ```\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class StorageService extends StorageManager {\n constructor() {\n super();\n }\n}\n","/**\n * Log level enum\n */\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n NONE = 4\n}\n\n/**\n * Logger configuration\n */\nexport interface LoggerConfig {\n level?: LogLevel;\n enableTimestamp?: boolean;\n enableStackTrace?: boolean;\n prefix?: string;\n}\n\n/**\n * Logger - Centralized logging utility\n * Framework-agnostic implementation using browser console APIs\n * Supports different log levels and can be configured globally\n * \n * @example\n * ```typescript\n * const logger = new Logger();\n * \n * // Configure\n * logger.configure({\n * level: LogLevel.DEBUG,\n * enableTimestamp: true,\n * prefix: 'MyApp'\n * });\n * \n * // Use\n * logger.info('User logged in', { userId: '123' });\n * logger.error('Failed to load data', error);\n * ```\n */\nexport class Logger {\n private config: LoggerConfig = {\n level: LogLevel.INFO,\n enableTimestamp: true,\n enableStackTrace: false,\n prefix: ''\n };\n\n /**\n * Configure the logger\n */\n configure(config: LoggerConfig): void {\n this.config = { ...this.config, ...config };\n }\n\n /**\n * Set log level\n */\n setLevel(level: LogLevel): void {\n this.config.level = level;\n }\n\n /**\n * Get current log level\n */\n getLevel(): LogLevel {\n return this.config.level!;\n }\n\n /**\n * Format log message with timestamp and prefix\n */\n private formatMessage(message: string, level: string): string {\n const parts: string[] = [];\n\n if (this.config.enableTimestamp) {\n parts.push(`[${new Date().toISOString()}]`);\n }\n\n if (this.config.prefix) {\n parts.push(`[${this.config.prefix}]`);\n }\n\n parts.push(`[${level}]`);\n parts.push(message);\n\n return parts.join(' ');\n }\n\n /**\n * Check if log level should be logged\n */\n private shouldLog(level: LogLevel): boolean {\n return level >= this.config.level!;\n }\n\n /**\n * Log debug message\n */\n debug(message: string, ...args: any[]): void {\n if (this.shouldLog(LogLevel.DEBUG)) {\n console.debug(this.formatMessage(message, 'DEBUG'), ...args);\n }\n }\n\n /**\n * Log info message\n */\n info(message: string, ...args: any[]): void {\n if (this.shouldLog(LogLevel.INFO)) {\n console.info(this.formatMessage(message, 'INFO'), ...args);\n }\n }\n\n /**\n * Log warning message\n */\n warn(message: string, ...args: any[]): void {\n if (this.shouldLog(LogLevel.WARN)) {\n console.warn(this.formatMessage(message, 'WARN'), ...args);\n }\n }\n\n /**\n * Log error message\n */\n error(message: string, error?: any, ...args: any[]): void {\n if (this.shouldLog(LogLevel.ERROR)) {\n console.error(this.formatMessage(message, 'ERROR'), ...args);\n \n if (error) {\n console.error(error);\n \n if (this.config.enableStackTrace && error?.stack) {\n console.error('Stack trace:', error.stack);\n }\n }\n }\n }\n\n /**\n * Log a group of messages\n */\n group(label: string, callback: () => void): void {\n if (this.shouldLog(LogLevel.INFO)) {\n console.group(this.formatMessage(label, 'GROUP'));\n callback();\n console.groupEnd();\n }\n }\n\n /**\n * Log a collapsed group of messages\n */\n groupCollapsed(label: string, callback: () => void): void {\n if (this.shouldLog(LogLevel.INFO)) {\n console.groupCollapsed(this.formatMessage(label, 'GROUP'));\n callback();\n console.groupEnd();\n }\n }\n\n /**\n * Log a table (useful for arrays of objects)\n */\n table(data: any, columns?: string[]): void {\n if (this.shouldLog(LogLevel.INFO)) {\n console.table(data, columns);\n }\n }\n\n /**\n * Log execution time of a function\n */\n async time<T>(label: string, fn: () => Promise<T> | T): Promise<T> {\n const start = performance.now();\n try {\n const result = await fn();\n const end = performance.now();\n const duration = (end - start).toFixed(2);\n this.info(`${label} completed in ${duration}ms`);\n return result;\n } catch (error) {\n const end = performance.now();\n const duration = (end - start).toFixed(2);\n this.error(`${label} failed after ${duration}ms`, error);\n throw error;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Logger } from '../../core/logger';\n\nexport { LogLevel } from '../../core/logger';\nexport type { LoggerConfig } from '../../core/logger';\n\n/**\n * LoggerService - Angular service wrapper for Logger\n * Provides Angular dependency injection support for the framework-agnostic Logger\n * \n * @example\n * ```typescript\n * import { Component, inject } from '@angular/core';\n * import { LoggerService, LogLevel } from 'common-libs';\n * \n * export class MyService {\n * private logger = inject(LoggerService);\n * \n * constructor() {\n * this.logger.configure({\n * level: LogLevel.DEBUG,\n * prefix: 'MyApp'\n * });\n * }\n * \n * doSomething() {\n * this.logger.info('Doing something');\n * }\n * }\n * ```\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class LoggerService extends Logger {\n constructor() {\n super();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { TokenService } from './token.service';\n\n/**\n * PermissionService - Manages user permissions and roles\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionService {\n private tokenService = inject(TokenService);\n\n /**\n * Check if user has a specific permission\n */\n hasPermission(permission: string): boolean {\n const user = this.tokenService.getUserFromToken();\n const permissions = user?.permissions || [];\n return permissions.includes(permission);\n }\n\n /**\n * Check if user has any of the specified permissions\n */\n hasAnyPermission(permissions: string[]): boolean {\n return permissions.some(permission => this.hasPermission(permission));\n }\n\n /**\n * Check if user has all of the specified permissions\n */\n hasAllPermissions(permissions: string[]): boolean {\n return permissions.every(permission => this.hasPermission(permission));\n }\n\n /**\n * Check if user has a specific role\n */\n hasRole(role: string): boolean {\n const user = this.tokenService.getUserFromToken();\n const roles = user?.roles || [];\n return roles.includes(role);\n }\n\n /**\n * Check if user has any of the specified roles\n */\n hasAnyRole(roles: string[]): boolean {\n return roles.some(role => this.hasRole(role));\n }\n\n /**\n * Check if user has all of the specified roles\n */\n hasAllRoles(roles: string[]): boolean {\n return roles.every(role => this.hasRole(role));\n }\n\n /**\n * Get all user permissions\n */\n getPermissions(): string[] {\n const user = this.tokenService.getUserFromToken();\n return user?.permissions || [];\n }\n\n /**\n * Get all user roles\n */\n getRoles(): string[] {\n const user = this.tokenService.getUserFromToken();\n return user?.roles || [];\n }\n\n /**\n * Get user ID from token\n */\n getUserId(): string | null {\n const user = this.tokenService.getUserFromToken();\n return user?.sub || user?.id || user?.userId || null;\n }\n\n /**\n * Get username from token\n */\n getUsername(): string | null {\n const user = this.tokenService.getUserFromToken();\n return user?.username || user?.name || user?.email || null;\n }\n\n /**\n * Get user email from token\n */\n getUserEmail(): string | null {\n const user = this.tokenService.getUserFromToken();\n return user?.email || null;\n }\n}\n","import { inject } from '@angular/core';\nimport { Router, CanActivateFn, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { TokenService } from '../services/token.service';\n\n/**\n * Auth guard configuration\n */\nexport interface AuthGuardConfig {\n redirectUrl?: string;\n checkExpiration?: boolean;\n}\n\n/**\n * Factory function to create an auth guard with configuration\n * \n * @example\n * ```typescript\n * // In routes\n * {\n * path: 'dashboard',\n * component: DashboardComponent,\n * canActivate: [createAuthGuard({ redirectUrl: '/login' })]\n * }\n * ```\n */\nexport function createAuthGuard(config: AuthGuardConfig = {}): CanActivateFn {\n return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const tokenService = inject(TokenService);\n const router = inject(Router);\n\n const redirectUrl = config.redirectUrl || '/login';\n const checkExpiration = config.checkExpiration !== false;\n\n const hasToken = tokenService.hasToken();\n const isExpired = checkExpiration ? tokenService.isTokenExpired() : false;\n\n if (hasToken && !isExpired) {\n return true;\n }\n\n // Store the attempted URL for redirecting after login\n const returnUrl = state.url;\n router.navigate([redirectUrl], { \n queryParams: { returnUrl },\n queryParamsHandling: 'merge' \n });\n\n return false;\n };\n}\n\n/**\n * Default auth guard - redirects to '/login' if not authenticated\n */\nexport const authGuard: CanActivateFn = createAuthGuard();\n\n/**\n * Permission-based guard factory\n * Checks if user has required permissions from token\n * \n * @example\n * ```typescript\n * {\n * path: 'admin',\n * component: AdminComponent,\n * canActivate: [createPermissionGuard(['admin', 'editor'])]\n * }\n * ```\n */\nexport function createPermissionGuard(\n requiredPermissions: string[],\n config: AuthGuardConfig = {}\n): CanActivateFn {\n return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const tokenService = inject(TokenService);\n const router = inject(Router);\n\n const redirectUrl = config.redirectUrl || '/unauthorized';\n\n // First check authentication\n if (!tokenService.isAuthenticated()) {\n router.navigate(['/login'], { \n queryParams: { returnUrl: state.url }\n });\n return false;\n }\n\n // Check permissions\n const user = tokenService.getUserFromToken();\n const userPermissions = user?.permissions || user?.roles || [];\n\n const hasPermission = requiredPermissions.some(permission =>\n userPermissions.includes(permission)\n );\n\n if (!hasPermission) {\n router.navigate([redirectUrl]);\n return false;\n }\n\n return true;\n };\n}\n\n/**\n * Role-based guard factory\n * Checks if user has required role from token\n * \n * @example\n * ```typescript\n * {\n * path: 'admin',\n * component: AdminComponent,\n * canActivate: [createRoleGuard(['admin'])]\n * }\n * ```\n */\nexport function createRoleGuard(\n requiredRoles: string[],\n config: AuthGuardConfig = {}\n): CanActivateFn {\n return createPermissionGuard(requiredRoles, config);\n}\n","import { HttpInterceptorFn, HttpRequest, HttpHandlerFn, HttpEvent } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TokenService } from '../services/token.service';\n\n/**\n * Auth interceptor configuration\n */\nexport interface AuthInterceptorConfig {\n headerName?: string;\n tokenPrefix?: string;\n excludedUrls?: string[];\n}\n\nconst defaultConfig: AuthInterceptorConfig = {\n headerName: 'Authorization',\n tokenPrefix: 'Bearer',\n excludedUrls: []\n};\n\nlet interceptorConfig = { ...defaultConfig };\n\n/**\n * Configure the auth interceptor\n */\nexport function configureAuthInterceptor(config: AuthInterceptorConfig): void {\n interceptorConfig = { ...defaultConfig, ...config };\n}\n\n/**\n * Auth Interceptor - Automatically adds authentication token to HTTP requests\n * \n * @example\n * ```typescript\n * // In app.config.ts\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideHttpClient(\n * withInterceptors([authInterceptor])\n * )\n * ]\n * };\n * ```\n */\nexport const authInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn\n): Observable<HttpEvent<unknown>> => {\n const tokenService = inject(TokenService);\n const config = interceptorConfig;\n\n // Check if URL should be excluded\n const isExcluded = config.excludedUrls?.some(url =>\n req.url.includes(url)\n );\n\n if (isExcluded) {\n return next(req);\n }\n\n // Get token and add to request if available\n const token = tokenService.getToken();\n\n if (token) {\n const authReq = req.clone({\n setHeaders: {\n [config.headerName!]: `${config.tokenPrefix} ${token}`\n }\n });\n return next(authReq);\n }\n\n return next(req);\n};\n","import { HttpInterceptorFn, HttpRequest, HttpHandlerFn, HttpEvent, HttpErrorResponse } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Observable, throwError, timer } from 'rxjs';\nimport { catchError, retry } from 'rxjs/operators';\nimport { LoggerService } from '../services/logger.service';\n\n/**\n * Error handling configuration\n */\nexport interface ErrorHandlingConfig {\n enableLogging?: boolean;\n retryAttempts?: number;\n retryDelay?: number;\n retryStatusCodes?: number[];\n excludedUrls?: string[];\n}\n\nconst defaultConfig: ErrorHandlingConfig = {\n enableLogging: true,\n retryAttempts: 0,\n retryDelay: 1000,\n retryStatusCodes: [408, 429, 500, 502, 503, 504],\n excludedUrls: []\n};\n\nlet errorConfig = { ...defaultConfig };\n\n/**\n * Configure the error handling interceptor\n */\nexport function configureErrorHandling(config: ErrorHandlingConfig): void {\n errorConfig = { ...defaultConfig, ...config };\n}\n\n/**\n * Error handling interceptor - Handles HTTP errors and retries\n * \n * @example\n * ```typescript\n * // In app.config.ts\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideHttpClient(\n * withInterceptors([errorHandlingInterceptor])\n * )\n * ]\n * };\n * \n * // Configure retry behavior\n * configureErrorHandling({\n * retryAttempts: 3,\n * retryDelay: 2000,\n * retryStatusCodes: [500, 502, 503]\n * });\n * ```\n */\nexport const errorHandlingInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn\n): Observable<HttpEvent<unknown>> => {\n const logger = inject(LoggerService);\n const config = errorConfig;\n\n // Check if URL should be excluded\n const isExcluded = config.excludedUrls?.some(url =>\n req.url.includes(url)\n );\n\n if (isExcluded) {\n return next(req);\n }\n\n return next(req).pipe(\n // Retry logic with exponential backoff\n retry({\n count: config.retryAttempts!,\n delay: (error: HttpErrorResponse, retryCount) => {\n // Only retry for specific status codes\n if (!config.retryStatusCodes?.includes(error.status)) {\n return throwError(() => error);\n }\n\n const delay = config.retryDelay! * Math.pow(2, retryCount - 1);\n \n if (config.enableLogging) {\n logger.warn(\n `Retrying request (attempt ${retryCount}) after ${delay}ms`,\n { url: req.url, status: error.status }\n );\n }\n\n return timer(delay);\n }\n }),\n // Error handling\n catchError((error: HttpErrorResponse) => {\n if (config.enableLogging) {\n logger.error('HTTP request failed', error, {\n url: req.url,\n status: error.status,\n message: error.message\n });\n }\n\n return throwError(() => error);\n })\n );\n};\n\n/**\n * HTTP Error class with additional context\n */\nexport class HttpError extends Error {\n constructor(\n public status: number,\n public statusText: string,\n public url: string,\n public originalError: HttpErrorResponse\n ) {\n super(`HTTP ${status} ${statusText}: ${url}`);\n this.name = 'HttpError';\n }\n}\n\n/**\n * Parse HTTP error and return user-friendly message\n */\nexport function parseHttpError(error: HttpErrorResponse): string {\n if (error.error instanceof ErrorEvent) {\n // Client-side error\n return `Network error: ${error.error.message}`;\n } else {\n // Server-side error\n const errorMessage = error.error?.message || error.message || 'Unknown error';\n return `Server error (${error.status}): ${errorMessage}`;\n }\n}\n\n/**\n * Check if error is a network error\n */\nexport function isNetworkError(error: HttpErrorResponse): boolean {\n return error.error instanceof ErrorEvent || error.status === 0;\n}\n\n/**\n * Check if error is a server error (5xx)\n */\nexport function isServerError(error: HttpErrorResponse): boolean {\n return error.status >= 500 && error.status < 600;\n}\n\n/**\n * Check if error is a client error (4xx)\n */\nexport function isClientError(error: HttpErrorResponse): boolean {\n return error.status >= 400 && error.status < 500;\n}\n","import { HttpInterceptorFn, HttpRequest, HttpHandlerFn, HttpEvent, HttpResponse } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { LoggerService } from '../services/logger.service';\n\n/**\n * Cache entry interface\n */\ninterface CacheEntry {\n response: HttpResponse<any>;\n timestamp: number;\n}\n\n/**\n * Cache configuration\n */\nexport interface CacheConfig {\n enabled?: boolean;\n maxAge?: number; // milliseconds\n excludedUrls?: string[];\n cacheableUrls?: string[];\n cacheMethods?: string[];\n}\n\nconst defaultCacheConfig: CacheConfig = {\n enabled: true,\n maxAge: 60000, // 1 minute\n excludedUrls: [],\n cacheableUrls: [],\n cacheMethods: ['GET']\n};\n\nlet cacheConfig = { ...defaultCacheConfig };\nconst cache = new Map<string, CacheEntry>();\nconst MAX_CACHE_SIZE = 100; // Maximum number of cached entries\n\n/**\n * Configure the caching interceptor\n */\nexport function configureCaching(config: CacheConfig): void {\n cacheConfig = { ...defaultCacheConfig, ...config };\n}\n\n/**\n * Clean up expired cache entries\n */\nfunction cleanupCache(): void {\n const now = Date.now();\n const keysToDelete: string[] = [];\n\n cache.forEach((entry, key) => {\n const age = now - entry.timestamp;\n if (age >= cacheConfig.maxAge!) {\n keysToDelete.push(key);\n }\n });\n\n keysToDelete.forEach(key => cache.delete(key));\n}\n\n/**\n * Evict oldest cache entry if cache is full\n */\nfunction evictOldestIfFull(): void {\n if (cache.size >= MAX_CACHE_SIZE) {\n let oldestKey: string | null = null;\n let oldestTimestamp = Infinity;\n\n cache.forEach((entry, key) => {\n if (entry.timestamp < oldestTimestamp) {\n oldestTimestamp = entry.timestamp;\n oldestKey = key;\n }\n });\n\n if (oldestKey) {\n cache.delete(oldestKey);\n }\n }\n}\n\n/**\n * Clear all cached entries\n */\nexport function clearCache(): void {\n cache.clear();\n}\n\n/**\n * Clear cache entry for specific URL\n */\nexport function clearCacheEntry(url: string): void {\n cache.delete(url);\n}\n\n/**\n * Caching interceptor - Caches HTTP GET requests\n * \n * @example\n * ```typescript\n * // In app.config.ts\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideHttpClient(\n * withInterceptors([cachingInterceptor])\n * )\n * ]\n * };\n * \n * // Configure caching\n * configureCaching({\n * enabled: true,\n * maxAge: 300000, // 5 minutes\n * cacheableUrls: ['/api/users', '/api/products']\n * });\n * ```\n */\nexport const cachingInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn\n): Observable<HttpEvent<unknown>> => {\n const logger = inject(LoggerService);\n const config = cacheConfig;\n\n // Only cache if enabled\n if (!config.enabled) {\n return next(req);\n }\n\n // Only cache specific methods (default: GET)\n if (!config.cacheMethods?.includes(req.method)) {\n return next(req);\n }\n\n // Check if URL should be excluded\n const isExcluded = config.excludedUrls?.some(url =>\n req.url.includes(url)\n );\n\n if (isExcluded) {\n return next(req);\n }\n\n // Check if URL is explicitly cacheable (if list is provided)\n if (config.cacheableUrls && config.cacheableUrls.length > 0) {\n const isCacheable = config.cacheableUrls.some(url =>\n req.url.includes(url)\n );\n\n if (!isCacheable) {\n return next(req);\n }\n }\n\n const cacheKey = req.urlWithParams;\n\n // Check cache\n const cached = cache.get(cacheKey);\n if (cached) {\n const age = Date.now() - cached.timestamp;\n if (age < config.maxAge!) {\n logger.debug(`Cache hit for ${cacheKey}`, { age });\n return new Observable(observer => {\n observer.next(cached.response.clone());\n observer.complete();\n });\n } else {\n // Cache expired\n cache.delete(cacheKey);\n }\n }\n\n // Clean up expired entries periodically\n if (Math.random() < 0.1) { // 10% chance on each request\n cleanupCache();\n }\n\n // Make request and cache response\n return next(req).pipe(\n tap(event => {\n if (event instanceof HttpResponse) {\n evictOldestIfFull();\n cache.set(cacheKey, {\n response: event.clone(),\n timestamp: Date.now()\n });\n logger.debug(`Cached response for ${cacheKey}`);\n }\n })\n );\n};\n"],"names":["Subject","filter","map","NgEventEmitter","Injectable","TokenService","StorageService","LogLevel","LoggerService","PermissionService","inject","router","Router","defaultConfig","retry","throwError","timer","catchError","Observable","tap","HttpResponse"],"mappings":"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","x_google_ignoreList":[0]}
@@ -306,7 +306,7 @@ class TokenManager {
306
306
  */
307
307
  let TokenService = class TokenService extends TokenManager {
308
308
  constructor() {
309
- console.log("In TokenService of opensourcekd");
309
+ console.log("In TokenService of opensourcekd 1");
310
310
  super();
311
311
  }
312
312
  };